[genius] First crack at adding vte



commit a14a837f670f5e905de075c86612f9bf419f6b71
Author: Jiri (George) Lebl <jiri lebl gmail com>
Date:   Sat Apr 7 16:26:48 2018 -0500

    First crack at adding vte

 Makefile.am                        |    2 +-
 configure.ac                       |    9 +-
 src/Makefile.am                    |    1 +
 vte/AUTHORS                        |    1 +
 vte/COPYING                        |  482 +
 vte/ChangeLog                      |43708 ++++++++++++++++++++++++++++++++++++
 vte/ChangeLog.pre-git              |12065 ++++++++++
 vte/HACKING                        |   18 +
 vte/MAINTAINERS                    |    7 +
 vte/Makefile.am                    |   51 +
 vte/NEWS                           | 1068 +
 vte/README                         |   13 +
 vte/acinclude.m4                   |   32 +
 vte/autogen.sh                     |   29 +
 vte/configure.in                   |  458 +
 vte/depcomp                        |  630 +
 vte/src/Makefile.am                |  333 +
 vte/src/Makefile.in                | 2335 ++
 vte/src/TODO                       |   32 +
 vte/src/buffer.h                   |   43 +
 vte/src/caps.c                     |  599 +
 vte/src/caps.h                     |   59 +
 vte/src/check-doc-syntax.sh        |   78 +
 vte/src/debug.c                    |   60 +
 vte/src/debug.h                    |   92 +
 vte/src/decset                     |   16 +
 vte/src/dumpkeys.c                 |  348 +
 vte/src/genkeysyms.py              |   27 +
 vte/src/interpret.c                |  170 +
 vte/src/iso2022.c                  | 1831 ++
 vte/src/iso2022.h                  |   58 +
 vte/src/iso2022.txt                |   33 +
 vte/src/keymap.c                   | 1455 ++
 vte/src/keymap.h                   |   65 +
 vte/src/keysyms.c                  | 1254 ++
 vte/src/marshal.c                  |  231 +
 vte/src/marshal.h                  |   44 +
 vte/src/marshal.list               |    4 +
 vte/src/matcher.c                  |  248 +
 vte/src/matcher.h                  |   76 +
 vte/src/mev.c                      |  311 +
 vte/src/mkunitables.sh             |   45 +
 vte/src/osc                        |   22 +
 vte/src/pty.c                      | 2052 ++
 vte/src/pty.h                      |   52 +
 vte/src/reaper.c                   |  226 +
 vte/src/reaper.h                   |   75 +
 vte/src/reflect.c                  |  340 +
 vte/src/ring.c                     |  631 +
 vte/src/ring.h                     |   91 +
 vte/src/slowcat.c                  |  118 +
 vte/src/ssfe.c                     | 1271 ++
 vte/src/table.c                    |  935 +
 vte/src/table.h                    |   54 +
 vte/src/trie.c                     | 1110 +
 vte/src/trie.h                     |   65 +
 vte/src/unitable.CNS11643          |17712 +++++++++++++++
 vte/src/unitable.CP437             |  129 +
 vte/src/unitable.GB12345           | 7549 +++++++
 vte/src/unitable.GB2312            | 7446 ++++++
 vte/src/unitable.JIS0201           |   66 +
 vte/src/unitable.JIS0208           | 6879 ++++++
 vte/src/unitable.JIS0212           | 6068 +++++
 vte/src/unitable.KSX1001           | 8227 +++++++
 vte/src/vte-gtk-compat.h           |   80 +
 vte/src/vte-private.h              |  449 +
 vte/src/vte.c                      |15421 +++++++++++++
 vte/src/vte.h                      |  533 +
 vte/src/vteaccess.c                | 2126 ++
 vte/src/vteaccess.h                |   86 +
 vte/src/vteapp.c                   | 1105 +
 vte/src/vtebg.c                    |  529 +
 vte/src/vtebg.h                    |   70 +
 vte/src/vteconv.c                  |  615 +
 vte/src/vteconv.h                  |   52 +
 vte/src/vtedeprecated.h            |  105 +
 vte/src/vtedraw.c                  | 1166 +
 vte/src/vtedraw.h                  |  116 +
 vte/src/vteint.h                   |   36 +
 vte/src/vtepty-private.h           |   43 +
 vte/src/vtepty.h                   |  121 +
 vte/src/vteregex.c                 |  119 +
 vte/src/vteregex.h                 |   38 +
 vte/src/vterowdata.c               |  164 +
 vte/src/vterowdata.h               |  174 +
 vte/src/vteseq-2.c                 |  268 +
 vte/src/vteseq-2.gperf             |  291 +
 vte/src/vteseq-list.h              |  121 +
 vte/src/vteseq-n.c                 |  393 +
 vte/src/vteseq-n.gperf             |  131 +
 vte/src/vteseq.c                   | 3364 +++
 vte/src/vtestream-base.h           |  106 +
 vte/src/vtestream-file.h           |  296 +
 vte/src/vtestream.c                |   33 +
 vte/src/vtestream.h                |   49 +
 vte/src/vtetc.c                    |  611 +
 vte/src/vtetc.h                    |   59 +
 vte/src/vtetree.c                  |   60 +
 vte/src/vtetree.h                  |   50 +
 vte/src/vtetypebuiltins.c          |  161 +
 vte/src/vtetypebuiltins.c.template |   40 +
 vte/src/vtetypebuiltins.h          |   39 +
 vte/src/vtetypebuiltins.h.template |   28 +
 vte/src/vteunistr.c                |  175 +
 vte/src/vteunistr.h                |   87 +
 vte/src/vteversion.h               |   82 +
 vte/src/vteversion.h.in            |   82 +
 vte/src/window                     |   28 +
 vte/src/xticker.c                  |  144 +
 vte/termcaps/Makefile.am           |   12 +
 vte/termcaps/Makefile.in           |  499 +
 vte/termcaps/xterm                 |   33 +
 vte/termcaps/xterm.baseline        |   35 +
 113 files changed, 159958 insertions(+), 6 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 3b68209..1c1dac0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
 ACLOCAL_AMFLAGS = -I m4 --install
 
-SUBDIRS = ve gtkextra src pixmaps examples lib po help
+SUBDIRS = ve vte gtkextra src pixmaps examples lib po help
 
 mimeinfodir = $(datadir)/mime-info
 mimeinfo_DATA = genius.keys genius.mime
diff --git a/configure.ac b/configure.ac
index 92847ef..859fe31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,6 @@ AC_PROG_INTLTOOL([0.21])
 
 dnl ================= Requirements ================================================
 
-VTE_REQUIRED=0.26.0
 GTK_REQUIRED=2.18.0
 GLIB_REQUIRED=2.12.0
 GTKSOURCEVIEW_REQUIRED=0.3.0
@@ -104,6 +103,9 @@ AC_CHECK_LIB(mpfr, mpfr_j0, [],
 #AC_SUBST(GCONF_CONFIG_SOURCE)
 #AC_SUBST(INSTALL_GCONF_CONFIG_SOURCE)
 
+AC_CONFIG_SUBDIRS(vte)
+
+
 AC_ARG_ENABLE(gtksourceview,
 [  --disable-gtksourceview Do not use GtkSourceView library even if detected],
 use_gtksourceview="$enableval",use_gtksourceview=yes)
@@ -122,7 +124,7 @@ PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
-GENIUS_MODULES="gtk+-2.0 >= $GTK_REQUIRED gio-2.0 >= $GIO_REQUIRED vte >= $VTE_REQUIRED"
+GENIUS_MODULES="gtk+-2.0 >= $GTK_REQUIRED gio-2.0 >= $GIO_REQUIRED"
 
 if test "x$use_gnome" = "xyes" ; then
   echo " 
@@ -153,7 +155,6 @@ Note:
 
   VICIOUS_MODULES="gtk+-2.0 >= $GTK_REQUIRED"
   VICIOUS_UI_LIBS="libviciousui.a"
-  GTKEXTRA_LIBS="libgtkextra-genius.a"
   
   GNOME_GENIUS="gnome-genius\$(EXEEXT)"
   GENIUS_READLINE_HELPER_FIFO="genius-readline-helper-fifo\$(EXEEXT)"
@@ -163,7 +164,6 @@ else
   use_gtksourceview=no
   VICIOUS_MODULES="glib-2.0 >= $GLIB_REQUIRED gmodule-2.0 >= $GLIB_REQUIRED"
   VICIOUS_UI_LIBS=
-  GTKEXTRA_LIBS=
   GENIUS_CFLAGS="$GENIUS_NOGUI_CFLAGS"
   GENIUS_LIBS="$GENIUS_NOGUI_LIBS"
   GNOME_GENIUS=
@@ -172,7 +172,6 @@ else
 fi
 
 AC_SUBST(VICIOUS_UI_LIBS)
-AC_SUBST(GTKEXTRA_LIBS)
 AC_SUBST(GENIUS_CFLAGS)
 AC_SUBST(GENIUS_LIBS)
 AC_SUBST(GSV_CFLAGS)
diff --git a/src/Makefile.am b/src/Makefile.am
index f58eb68..da44c55 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -95,6 +95,7 @@ gnome_genius_SOURCES =        \
 gnome_genius_LDADD = \
        $(top_builddir)/ve/libviciousui.a       \
        $(top_builddir)/gtkextra/libgtkextra-genius.a   \
+       $(top_builddir)/vte/libvte.a    \
        -lm                                     \
        @GMP_LIB@                               \
        -lmpfr                                  \
diff --git a/vte/AUTHORS b/vte/AUTHORS
new file mode 100644
index 0000000..37675bd
--- /dev/null
+++ b/vte/AUTHORS
@@ -0,0 +1 @@
+Nalin Dahyabhai <nalinNOSPAM redhat com>
diff --git a/vte/COPYING b/vte/COPYING
new file mode 100644
index 0000000..bf50f20
--- /dev/null
+++ b/vte/COPYING
@@ -0,0 +1,482 @@
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                   59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the 
+    Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+    Boston, MA  02111-1307  USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/vte/ChangeLog b/vte/ChangeLog
new file mode 100644
index 0000000..b507b0e
--- /dev/null
+++ b/vte/ChangeLog
@@ -0,0 +1,43708 @@
+commit f8e59be9a8d27d0c172638bb63ee871ef5f952d1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Jul 4 10:16:31 2011 -0400
+
+    Revert "gitignore: Add generated *.pot files in po/ subdirectory"
+    
+    This reverts commit 62736f9eccd7eed23bee6c73c862ea1075b47c99.
+
+ .gitignore |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 62736f9eccd7eed23bee6c73c862ea1075b47c99
+Author: Tommi Vainikainen <thv iki fi>
+Date:   Mon Jul 4 14:12:00 2011 +0300
+
+    gitignore: Add generated *.pot files in po/ subdirectory
+
+ .gitignore |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 5879114f81ec4eabfd42b3841f560283a0814cb3
+Author: Tommi Vainikainen <thv iki fi>
+Date:   Mon Jul 4 14:11:29 2011 +0300
+
+    Updated Finnish translation
+
+ po/fi.po |   88 +++++++++++++++++++++----------------------------------------
+ 1 files changed, 30 insertions(+), 58 deletions(-)
+
+commit 88d748a106e137baeef660c354bd54ed82efff86
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Jun 14 23:38:20 2011 +0200
+
+    Version 0.28.1
+
+ NEWS |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit ac71d26f067be3a21bff315c3cabf24c94360dd6
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Jun 10 17:31:58 2011 +0200
+
+    [CVE-2011-2198] Limit insert-blank-characters
+    
+    Bug #652124.
+
+ src/vteseq.c |   27 ++++++++++++++++++++++-----
+ 1 files changed, 22 insertions(+), 5 deletions(-)
+
+commit 07a03020cabab719d824c525d58cd735a70856e9
+Author: Carles Ferrando <carles ferrando gmail com>
+Date:   Sun May 29 19:12:39 2011 +0200
+
+    [l10n]Updated Catalan (Valencian) translation
+
+ po/ca valencia po |   18 +++++++++---------
+ 1 files changed, 9 insertions(+), 9 deletions(-)
+
+commit 98f05a28ae9a6429cc9b77b98a6c174d2c2233f3
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Apr 4 14:08:56 2011 +0200
+
+    Post release version bump
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 56def42f554720a8d91da1aee32c66cbeef406e2
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 3 23:06:23 2011 +0200
+
+    Version 0.28.0
+
+ NEWS         |    6 ++++++
+ configure.in |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 6450f121b8fb210a34eec8c6841153d20695934c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Mar 29 14:41:19 2011 -0400
+
+    Fix docs
+
+ src/pty.c |   13 +++++--------
+ 1 files changed, 5 insertions(+), 8 deletions(-)
+
+commit 1bca2ba0a347c962cdf245da49c6d7399d7c3dc0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Jan 22 15:41:38 2011 -0500
+
+    Add OSC 12 cursor color to the osc script
+
+ src/osc |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 6ae9903f33dc68b67b49dbb23691965be86662b5
+Author: Abduxukur Abdurixit <abdurixit gmail com>
+Date:   Sun Mar 27 21:55:21 2011 +0200
+
+    Added UG translation
+
+ po/ug.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c0ca7cdbcdf0ecb3bb1ebbcf729d60d662461c31
+Author: Runa Bhattacharjee <runab redhat com>
+Date:   Thu Mar 24 20:01:36 2011 +0530
+
+    Updated Bengali India Translation
+
+ po/bn_IN.po |  108 +++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 50 insertions(+), 58 deletions(-)
+
+commit 9dbb8153360e230dc06426311b002fd183d0dc2b
+Author: Amitakhya Phukan <amitakhya svn gnome org>
+Date:   Mon Mar 21 12:25:34 2011 +0530
+
+    Updated Assamese translations
+
+ po/as.po |   47 +++++++++++++++++++++++++----------------------
+ 1 files changed, 25 insertions(+), 22 deletions(-)
+
+commit e17b13133c7f16afd53bd805dbb094db377c47fe
+Author: Marcel Telka <marcel telka sk>
+Date:   Sun Mar 20 16:40:54 2011 +0100
+
+    Updated Slovak translation
+
+ po/sk.po |   95 +++++++++++++++++++++----------------------------------------
+ 1 files changed, 33 insertions(+), 62 deletions(-)
+
+commit 4b26aff1ed9f2cc8e31e798298f2bd73043a9fc3
+Author: Miroslav Nikolić <miroslavnikolic rocketmail com>
+Date:   Sat Mar 19 15:09:17 2011 +0100
+
+    Reviewed Serbian translation
+
+ po/sr.po       |   73 +++++++++++++++++++++++++------------------------------
+ po/sr latin po |   69 +++++++++++++++++++++++-----------------------------
+ 2 files changed, 64 insertions(+), 78 deletions(-)
+
+commit 7e34e293bb465da788a5ce9addfd9fe7dceae878
+Author: Manoj Kumar Giri <mgiri redhat com>
+Date:   Fri Mar 4 15:52:07 2011 +0530
+
+    Updated Oriya Translation
+
+ po/or.po |   92 ++++++++++++++++++++++++++++---------------------------------
+ 1 files changed, 42 insertions(+), 50 deletions(-)
+
+commit b9c3e3bc182e5f950ae7110751523ef1a710fa11
+Author: Rudolfs Mazurs <rudolfs mazurs gmail com>
+Date:   Mon Feb 28 23:54:46 2011 +0200
+
+    Updated Latvian translation.
+
+ po/lv.po |   42 ++++++++++++++++++++++--------------------
+ 1 files changed, 22 insertions(+), 20 deletions(-)
+
+commit 61ff01fc2ed66fa2b9611014486fb35e8260f958
+Author: Sweta Kothari <swkothar redhat com>
+Date:   Mon Feb 28 14:15:28 2011 +0530
+
+    Updated Gujarati Translations
+
+ po/gu.po |  102 +++++++++++++++++++++++---------------------------------------
+ 1 files changed, 38 insertions(+), 64 deletions(-)
+
+commit 227fc807a536041178696c5d8cdccfb416d3c67a
+Author: Maciej Piechotka <uzytkownik2 gmail com>
+Date:   Sun Feb 13 15:43:55 2011 +0000
+
+    Update gladeui for glade 4.0 (3.9.x)
+
+ configure.in |   10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 63f2327d9b03a67cab9dd910af504d1ecb8112f8
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Feb 23 09:51:35 2011 +0100
+
+    Updated Norwegian bokmål translation.
+
+ po/nb.po |   37 +++++++++++++++++++------------------
+ 1 files changed, 19 insertions(+), 18 deletions(-)
+
+commit aec26917e31291ecfb892761ddb7899ae4370ce0
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Feb 21 17:37:29 2011 +0100
+
+    Version 0.27.90
+
+ NEWS         |    5 +++++
+ configure.in |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 841b0ee578d09ada0f0c43d8dd22a49785da4e5b
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Feb 21 17:38:02 2011 +0100
+
+    Remove gsettings enum stuff
+
+ configure.in                   |    6 ------
+ src/Makefile.am                |    8 --------
+ src/org.gnome.vte.v0.enums.xml |   28 ----------------------------
+ 3 files changed, 0 insertions(+), 42 deletions(-)
+
+commit e7d3f3c118bbc39805736323f6e9fe572eb71ab8
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 16 20:42:18 2011 +0100
+
+    Add version marker to new API
+
+ src/vte.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 219ea41b4382ab43ddb6b826d62a5401aab20e6e
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 16 20:34:41 2011 +0100
+
+    Export vte_get_user_shell()
+    
+    Bug #642184. Also fixes bug #640179.
+
+ doc/reference/vte-sections.txt |    3 ++
+ src/Makefile.am                |    2 +-
+ src/vte.c                      |   58 ++++++++++++++++++----------------------
+ src/vte.h                      |    2 +
+ src/vteapp.c                   |    3 ++
+ 5 files changed, 35 insertions(+), 33 deletions(-)
+
+commit de22ca4f72bcf7f60afc4d948d04018b5cdbde7b
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Feb 14 23:20:46 2011 +0100
+
+    Require gtk 3.0.0
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4973121f747cb9519ed149d7c90b596f9bcabee3
+Author: Daniel Korostil <ted korostiled gmail com>
+Date:   Tue Feb 8 20:22:20 2011 +0200
+
+    Uploaded Ukranian
+
+ po/uk.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f01e298c01f7b2bb23d00e209550bebcef494485
+Author: Daniel Korostil <ted korostiled gmail com>
+Date:   Tue Feb 8 20:16:56 2011 +0200
+
+    Uploaded Ukranian
+
+ po/uk.po |  123 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 56 insertions(+), 67 deletions(-)
+
+commit 2681c8e440a955ec75c1eb9830a653f64a32380f
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Feb 6 00:28:55 2011 +0100
+
+    Add new struct
+
+ doc/reference/vte-sections.txt |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 3597b3adf026e87e6c7edc40115aa23c098abccd
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Feb 6 00:24:51 2011 +0100
+
+    Add index with symbols new in 0.28
+
+ doc/reference/vte-docs.xml |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 1c55bed8025942925f2e9760a9461020bc634e86
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Tue Jan 25 12:31:31 2011 +0100
+
+    Add RGBA variants to set colors.
+
+ doc/reference/vte-sections.txt |    7 ++
+ src/vte.c                      |  207 ++++++++++++++++++++++++++++++++++++++++
+ src/vte.h                      |   21 ++++
+ 3 files changed, 235 insertions(+), 0 deletions(-)
+
+commit 0ac349af9c34094763f27d66fa7a2c1901576afa
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Feb 3 14:03:06 2011 +0100
+
+    Lower intltool req again
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 15a5ebd5de88b2145bee53ea7230d2dca6cc9a20
+Author: Mahyar Moghimi <mahyar moqimi gmail com>
+Date:   Thu Feb 3 12:45:34 2011 +0330
+
+    Updating Persian Translation
+
+ po/fa.po |  115 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 52 insertions(+), 63 deletions(-)
+
+commit 1b6d84b8b795b5aa01d1ef5d95dbf9e58554128e
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 19:00:23 2011 +0100
+
+    There are no macros
+
+ Makefile.am  |    2 +-
+ configure.in |    1 -
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 31b4047a51ac48264b735a8be24fdddd3b086acc
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 18:45:41 2011 +0100
+
+    Add default style provider
+    
+    This fixes the default value for the 'inner-border' property not
+    to be NULL.
+    
+    Bug #640460.
+
+ configure.in      |    2 +-
+ src/vte-private.h |    5 +++++
+ src/vte.c         |   29 +++++++++++++++++++++++++++--
+ 3 files changed, 33 insertions(+), 3 deletions(-)
+
+commit 1c114685f684941e28f60b1440bc0e5effd9b770
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 18:08:15 2011 +0100
+
+    Don't shadow a global definition
+
+ src/ring.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit cc095a66991be940dffa59cfeb09d27b820ff636
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 18:06:24 2011 +0100
+
+    Remove unused variables
+
+ src/vte.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit ca772ef8e9113a8c4599a43b717ab0e67c0b7c14
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 18:05:17 2011 +0100
+
+    Remove obsolete signal IDs in class struct
+    
+    ... and add more padding. gtk3 only, so no ABI change.
+
+ src/vte.c |   62 ++++++++++++++++++++++++++++++++++--------------------------
+ src/vte.h |   16 ++++++++++++--
+ 2 files changed, 48 insertions(+), 30 deletions(-)
+
+commit a34652e11339722ecad0079dc9ad85de191deffb
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 17:48:57 2011 +0100
+
+    Lower am req again
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f46b5c288c9b1222cf614f22c1d1f53f1ee60c56
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Feb 2 17:49:06 2011 +0100
+
+    Revert "Use the recommended configure.ac instead configure.in"
+    
+    This reverts commit 765f1087eced3d19768a7ebd98500e5ff3df8a1a.
+    
+    Renaming breaks automatic reconfiguring from make during git bisect.
+
+ autogen.sh                   |    2 +-
+ configure.ac => configure.in |    4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 2cce4ae4d5599b131b5f53340f636630bf1cf6d9
+Author: Javier Jardón <javier jardon codethink co uk>
+Date:   Wed Feb 2 13:35:24 2011 +0000
+
+    build: Update autotools configuration
+    
+    Replace deprecated macros and use the new libtool syntax
+
+ Makefile.am  |    2 ++
+ autogen.sh   |    7 +------
+ configure.ac |   29 ++++++++++++++++-------------
+ 3 files changed, 19 insertions(+), 19 deletions(-)
+
+commit 765f1087eced3d19768a7ebd98500e5ff3df8a1a
+Author: Javier Jardón <javier jardon codethink co uk>
+Date:   Wed Feb 2 13:23:19 2011 +0000
+
+    Use the recommended configure.ac instead configure.in
+
+ autogen.sh                   |    2 +-
+ configure.in => configure.ac |    4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 45c73fc2a9aaf166056c7f29aec7bdf8cd8d165f
+Author: Javier Jardón <javier jardon codethink co uk>
+Date:   Wed Feb 2 13:21:32 2011 +0000
+
+    configura.in: Check for >= version of glib, not only >
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a9200f9dd2852a358cf6644f197e5bda87790001
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Wed Feb 2 02:21:10 2011 -0500
+
+    Post-release bump
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 80239d8e93b9db3dca976e4ed520c38d394dedb2
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Wed Feb 2 02:14:46 2011 -0500
+
+    Updates
+
+ NEWS |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 437b412c8010fa0fbee022235f3ddb9fd4d3fd3a
+Author: Fran Diéguez <fran dieguez mabishu com>
+Date:   Thu Jan 27 00:41:50 2011 +0100
+
+    QA of Galician translations
+
+ po/gl.po |   38 ++++++++++++++++++++------------------
+ 1 files changed, 20 insertions(+), 18 deletions(-)
+
+commit 86225e5f053bf8bfb3e851fda437455624514eec
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Sun Jan 16 11:07:14 2011 -0500
+
+    Don't use internal GTK+ api
+    
+    GtkTargetPair was always documented as private, and in
+    GTK+ 3 it is gone from the headers. Just use existing API.
+
+ src/vte.c |    8 +-------
+ 1 files changed, 1 insertions(+), 7 deletions(-)
+
+commit 4553d0294a6095ce9f5215a8af273a7decac8740
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Tue Jan 11 14:15:35 2011 -0500
+
+    Bump version
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit dda7b5036acc1ca95c71eb0d5f3d4fb1590a4508
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Tue Jan 11 13:40:51 2011 -0500
+
+    Updates
+
+ NEWS |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 63ad8cf6c00c92e959e7856b6529281892a63d59
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 5 20:20:39 2011 -0500
+
+    Bug 638782 - vte build is broken by using gtk_quit_add: uplift needed
+    
+    Harmlessly remove cleanup...
+
+ src/vtedraw.c |   41 -----------------------------------------
+ 1 files changed, 0 insertions(+), 41 deletions(-)
+
+commit b33feb45bff370ad860685923e3616a3583b281d
+Author: Cristian Klein <cristiklein+gnome gmail com>
+Date:   Wed Jan 5 19:36:38 2011 +0000
+
+    Prevent useless wakeups when the focus is lost.
+    
+    When running powertop in a gnome-terminal window, gnome-terminal is
+    shown to generate 1.6 wakeups/second. This is caused by the fact that
+    the cursor blink timer is not disable when the cursor is hidden.
+
+ src/vte-private.h |    1 +
+ src/vte.c         |   48 +++++++++++++++++++++++++++---------------------
+ 2 files changed, 28 insertions(+), 21 deletions(-)
+
+commit d64e28b3290aaf034ec37bbf4524ef78adbdfb2e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 5 02:03:49 2011 -0500
+
+    Bug 589557 - Ctrl+<key> sends erroneous value when primary keyboard layout is not English
+    
+    Fix it to match what xterm is doing.
+
+ src/vte.c |   44 ++++++++++++++++++++++++++------------------
+ 1 files changed, 26 insertions(+), 18 deletions(-)
+
+commit fc7eb565f48d3ddc311bb0296177860b58eb311e
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Thu Dec 30 21:15:01 2010 +0100
+
+    Fix annotations of fork_command_full.
+    
+    Some annotations were removed in the previous commit, it was wrong
+    and it must be readded.
+
+ src/vte.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit f7c5b8e77d4143031fe5e32437728f357ef94015
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Mon Dec 27 20:25:49 2010 +0100
+
+    Make fork_command_full introspectable.
+
+ src/vte.c |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 0017f00af763f7778cf19153d234a58304104ba4
+Author: Gheyret T.Kenji <gheyret gmail com>
+Date:   Thu Dec 23 19:42:18 2010 +0100
+
+    Added UG translation
+
+ po/ug.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7c5709cfce74ac1bed351a013600da1483ce8279
+Author: Vincent Untz <vuntz gnome org>
+Date:   Thu Dec 23 14:13:38 2010 +0100
+
+    release: post-release bump to 0.27.4
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 435b8ffe9166bba9dd9ac663db5a3ccfff8b4e26
+Author: Vincent Untz <vuntz gnome org>
+Date:   Thu Dec 23 14:13:31 2010 +0100
+
+    release: 0.27.3
+
+ NEWS |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 70c9222ba95931495dde123fcc427bcc8bcef08d
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Tue Dec 21 16:52:33 2010 +0100
+
+    Fix annotations. No need to annotate the strings.
+    
+    See as example gtk_text_buffer_insert.
+
+ src/vte.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit b916a4d3f369d4357697ebd0d00e2b01b5c50c5c
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Tue Dec 21 16:44:39 2010 +0100
+
+    Add --warn-all flag.
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 66dedcb732b31a141656c6f05ec2d3bbe7c4cf40
+Author: Ivar Smolin <okul linux ee>
+Date:   Mon Dec 20 13:58:06 2010 +0200
+
+    [l10n] Updated Estonian translation
+
+ po/et.po |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 728bc476c024987007c0856db44eff483a43902c
+Author: Ignacio Casal Quinteiro <icq gnome org>
+Date:   Sat Dec 4 13:47:42 2010 +0100
+
+    Bump gobject-introspection to 0.9.0
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f9fcec517d4125eabe93dcdc5002b615e275ff42
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Dec 2 21:06:48 2010 +0100
+
+    Fix build with gtk3 master
+
+ configure.in |    2 +-
+ src/vtebg.c  |    5 +++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 4fa7d35b7d454a06b3700b2b52021b61ef4ac426
+Author: Theppitak Karoonboonyanan <thep linux thai net>
+Date:   Tue Nov 23 16:32:49 2010 +0700
+
+    Updated Thai translation.
+
+ po/th.po |  104 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 47 insertions(+), 57 deletions(-)
+
+commit f05ddeca7ed710db16dfc183ab9bc48150baa695
+Author: Gheyret T.Kenji <gheyret gmail com>
+Date:   Sat Nov 20 13:05:34 2010 +0100
+
+    Added UG translation
+
+ po/ug.po |   20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 56472c1940a9df55edd134fc5d3c74ada67ad37b
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Nov 17 18:21:07 2010 +0100
+
+    Clarify error message
+    
+    Bug #628870.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 64f03be0c97d3941f259e20cc6d7a12d3a329770
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Nov 16 20:47:56 2010 +0100
+
+    Don't use the automatic rules for .enums.xml generation
+    
+    The generated file isn't very nice, so put a fixed-up copy
+    in git, dist and install it.
+
+ src/Makefile.am                |    7 ++++---
+ src/org.gnome.vte.v0.enums.xml |   28 ++++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 3 deletions(-)
+
+commit de948ce4b0d63a1e37cfc85c3b3da82397758873
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Nov 16 20:36:25 2010 +0100
+
+    Change .enums.xml namespace
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 187cdd3089b67613bbb3757f16897cbfeb315aa2
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Nov 16 20:21:26 2010 +0100
+
+    Create and install a gsettings .enums.xml file for vte's enum types
+
+ configure.in    |    8 +++++++-
+ src/Makefile.am |    9 +++++++++
+ 2 files changed, 16 insertions(+), 1 deletions(-)
+
+commit e21f7da2881bbb9ba863398728e194c7acfcfc50
+Author: Gheyret T.Kenji <gheyret gmail com>
+Date:   Sat Nov 13 23:01:05 2010 +0100
+
+    Added UG translation
+
+ po/ug.po |   31 ++++++++++++-------------------
+ 1 files changed, 12 insertions(+), 19 deletions(-)
+
+commit a09849b392ab1065c10225a390f669e061047932
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Nov 11 14:32:35 2010 +0100
+
+    Post release version bump
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9d9b0ab63422b0ece31a4fceddf17348ab9bed36
+Author: Javier Jardón <jjardon gnome org>
+Date:   Tue Nov 9 03:46:39 2010 +0100
+
+    Use gtk_paned_new() instead gtk_[h|v]paned_new()
+
+ src/reflect.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit d512516528a5951c81a8be7f8d47f10c52f7ac13
+Author: Brandon Ehle <azverkan yahoo com>
+Date:   Sun Oct 31 01:43:34 2010 -0700
+
+    Fix a compile error when using an older version of GTK+.
+
+ src/vte.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit a6c009841f7917bac1a2a16bbb0d921ba4b8bf0d
+Author: Carles Ferrando <carles ferrando gmail com>
+Date:   Fri Oct 29 21:49:51 2010 +0100
+
+    Updated Catalan (Valencian) translation
+
+ po/ca valencia po |   56 ++++++++++++++++++++++++----------------------------
+ 1 files changed, 26 insertions(+), 30 deletions(-)
+
+commit a3de47da0a42892d01fc4b6b90a5ec2728b26787
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Oct 26 13:44:37 2010 +0200
+
+    Add missing break
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit f75f5a42aa3bbba44e91ca4a58396139a3883eb3
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Oct 26 13:44:21 2010 +0200
+
+    Add missing break
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit ba49f082e6ba59a37d9ad2740ecb3ba4209a6c42
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Oct 26 13:41:05 2010 +0200
+
+    Implement [hv]scroll-policy properties
+
+ src/vte-private.h |    8 ++++++++
+ src/vte.c         |   42 ++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 46 insertions(+), 4 deletions(-)
+
+commit 85b7996647b171f82910538e2a9c90a6d359d1a2
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Oct 24 20:12:03 2010 +0200
+
+    Implement GtkScrollable interface on gtk3
+
+ src/vte.c           |   75 ++++++++++++++++++++++++++++++++++++++++++++------
+ src/vte.h           |    5 +++
+ src/vtedeprecated.h |    4 +++
+ 3 files changed, 75 insertions(+), 9 deletions(-)
+
+commit cc497d0eae579f7b67adc92a93225326e32beefe
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 18 16:07:35 2010 +0200
+
+    Post release version bump
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 51a75752f3df876c4a96b6f9030ebc79afbf6c6a
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 18 16:03:17 2010 +0200
+
+    Add cast to fix compiler warning
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5278c3f3f0cdc5bfa741a5b5579d5da2aeda0079
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 18 16:02:08 2010 +0200
+
+    Version 0.27.1
+
+ NEWS |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 80676b14ddc84ea28571501ec78fd9fc885446b8
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Oct 16 00:02:07 2010 +0200
+
+    Plug refcount leak
+    
+    The leaked VtePty leaked FDs, too. Bug #632257.
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 2944c2ac799a8c73f488d83ab5912936f6a0f766
+Author: Gintautas Miliauskas <gintautas miliauskas lt>
+Date:   Wed Oct 13 16:10:24 2010 +0300
+
+    Updated Lithuanian translation.
+
+ po/lt.po |  113 +++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 50 insertions(+), 63 deletions(-)
+
+commit 7d0eb2ff215709712d80577521a22979490126e5
+Author: Owen W. Taylor <otaylor fishsoup net>
+Date:   Mon Oct 11 13:22:31 2010 -0400
+
+    Report correct minimum/natural sizes for GTK+ 3
+    
+    In GTK+ 3, the hack of reporting the current size of the terminal
+    as its minimum size breaks down because GTK+ 3 will never allocate
+    a widget smaller than its minimum size. However, in GTK+ 3 it's
+    possible to report separate minimum and natural sizes, so we
+    should just report a minimum size of 1x1 character and a natural
+    size of the current size.
+    
+    This requires a change in vteapp.c to make the window start off
+    at the right size.
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=631903
+
+ src/vte.c    |   67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteapp.c |   10 ++++++++
+ 2 files changed, 77 insertions(+), 0 deletions(-)
+
+commit 552cfed9ad796ee8ea34b0182aa63a2a5e7abfb3
+Author: Changwoo Ryu <cwryu debian org>
+Date:   Sat Oct 9 08:33:01 2010 +0900
+
+    Updated Korean translation
+
+ po/ko.po |   66 ++++++++++++++++++-------------------------------------------
+ 1 files changed, 20 insertions(+), 46 deletions(-)
+
+commit e5fd6c3cda63cad2e3d7af8728a168b90eb009dc
+Author: Tomeu Vizoso <tomeu vizoso collabora co uk>
+Date:   Thu Oct 7 12:57:45 2010 +0200
+
+    Pass the correct TERM value inside envp when spawning
+    
+    So the codepaths that end up invoking execve still have the correct
+    TERM entry. Clarify the effect of vte_pty_set_term().
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=631589
+
+ src/pty.c |   19 ++++++++-----------
+ src/vte.c |   32 ++------------------------------
+ 2 files changed, 10 insertions(+), 41 deletions(-)
+
+commit 89336f820dabf3d0ae2f55d76d4af4c70c3004f6
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Oct 5 16:34:54 2010 +0200
+
+    Don't install the test programmes and scripts
+
+ src/Makefile.am |    7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 89cb5538c3d1a7b825faa78f23106ee957442dee
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Oct 5 00:40:52 2010 +0200
+
+    Vary termcap file into for gtk2/3 builds
+
+ src/Makefile.am      |    3 ++-
+ src/interpret.c      |    3 +--
+ src/vte.c            |    9 +++++----
+ termcaps/Makefile.am |    2 +-
+ 4 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 89c61bb589eb99a7f70f96f0550fdda4e3151706
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 4 14:16:04 2010 +0200
+
+    Post release version bump
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bc02908854e9b2c396427a24cb8fb36afe2cb818
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 4 14:11:12 2010 +0200
+
+    Bump gtk 3 req
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b38176cf75284d2cb5530b071415a1b6465aa0f5
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Oct 4 14:09:28 2010 +0200
+
+    Distcheck with gtk 3 now
+
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 21f66f796766f22df087d9011aad29a59030e765
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 1 16:03:24 2010 -0400
+
+    Whitespace
+
+ src/vteapp.c |  224 +++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 112 insertions(+), 112 deletions(-)
+
+commit 81e166f3f7ef206b58296e41afa9c93af26a85f7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 1 16:02:09 2010 -0400
+
+    Remove unnecessary conditional
+
+ src/vteapp.c |   33 ++++++++++++++++-----------------
+ 1 files changed, 16 insertions(+), 17 deletions(-)
+
+commit f97b8b8a41a5ace2995cc663dba624a82ce65670
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 1 16:01:20 2010 -0400
+
+    [vteapp] Prefer $SHELL to /bin/sh
+
+ src/vteapp.c |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 332bd39b2e85bba165dca2a37d4fa3d53e2ce6ff
+Author: Inaki Larranaga Murgoitio <dooteo zundan com>
+Date:   Fri Oct 1 00:21:13 2010 +0200
+
+    Updated Basque language
+
+ po/eu.po |   96 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 41 insertions(+), 55 deletions(-)
+
+commit 8e292f603ea78e00ee707aed3614a55cf908f292
+Author: Gheyret Kenji <gheyret hotmail com>
+Date:   Fri Oct 1 00:16:25 2010 +0200
+
+    Added UG translation
+
+ po/ug.po |  132 +++++++++++++++++++++++++++++--------------------------------
+ 1 files changed, 63 insertions(+), 69 deletions(-)
+
+commit 48a7718d143a03b28b4c708e054c1ea6f44c942a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 28 15:02:08 2010 -0400
+
+    Revert "Revert 9370647823ce29c1088c351381a07a5506b74c84"
+    
+    This reverts commit dab50851a395069492218115caf44361b742b20c.
+    
+    Again, set widget background color to the terminal background color.
+    This removes flicker when resizing the terminal/widget.
+
+ src/vte.c |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 5f64a707e562598be0432a56d5bdeea9962e7add
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Sep 28 19:50:29 2010 +0200
+
+    Use gtk_widget_set_visual
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8d71032c172285be94d34c01cb891f110dcbb925
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Sep 28 16:02:56 2010 +0200
+
+    Fix the gtk 2 build
+
+ src/vtebg.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit cde73f4896e82b13edb112bfd5f510ed2740d2df
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Sep 24 14:53:07 2010 +0200
+
+    Use gdk_error_trap_pop_ignored
+
+ src/vte-gtk-compat.h |    4 ++++
+ src/vtebg.c          |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit aeb607a958f96648d78496459ca6aebda9fd0324
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Sep 21 13:58:52 2010 +0200
+
+    Don't use gdk_drawable_get_size
+
+ src/vteaccess.c |   11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit b0a12909c0df9a8818923ef8af663a18d60a768c
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Sep 14 18:08:52 2010 +0200
+
+    Port to latest rendering-cleanup-next branch
+
+ src/vte.c |    4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 21a064ac8b5925108b0ab9bd6516664c8cd3e268
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 13 21:44:50 2010 +0200
+
+    Use cairo_copy_clip_rectangle_list() to recreate the clip region
+    
+    Thanks to Behdad for the hint, and for pointing out a bug in my
+    first attempt.
+
+ src/vte.c |   48 ++++++++++++++++++++++++++++++++++++++++++++----
+ 1 files changed, 44 insertions(+), 4 deletions(-)
+
+commit 6a7f6538aaaf81e5ef755c6660dcca8311835ca1
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 13 16:27:13 2010 +0200
+
+    Port to GtkWidget::draw
+    
+    ... to work with the rendering-cleanup-next branch of gtk.
+    
+    Need to think what will happen with the update_regions.
+
+ src/vte.c |   45 +++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 43 insertions(+), 2 deletions(-)
+
+commit e69b4c1bb4de66d432a1592a50daba1b105a6b64
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Sep 11 12:39:03 2010 +0200
+
+    Fix build with gtk 3 rendering cleanup branch
+
+ src/vte.c    |   22 ++++++++++++++++------
+ src/vteapp.c |   10 ++++++++++
+ src/vtebg.c  |    4 ++++
+ 3 files changed, 30 insertions(+), 6 deletions(-)
+
+commit 65dfcff5ab1a60d1761581e341c8c8a00fc89c5d
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Sep 26 16:24:03 2010 +0200
+
+    Post branch version bump
+
+ configure.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 4f1df545bf8ac5439d38bd2415b49edefb56eba5
+Author: Lucian Adrian Grijincu <lucian grijincu gmail com>
+Date:   Sat Sep 25 12:34:30 2010 +0300
+
+    Updated Romanian translation
+
+ po/ro.po |   72 +++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 37 insertions(+), 35 deletions(-)
+
+commit 252ced33f6930fb54704d9aef2011bf530b7adfe
+Author: Yuri Myasoedov <ymyasoedov src gnome org>
+Date:   Wed Sep 22 09:15:28 2010 +0400
+
+    Updated Russian translation
+
+ po/ru.po |  119 +++++++++++++++++++++++--------------------------------------
+ 1 files changed, 45 insertions(+), 74 deletions(-)
+
+commit dab50851a395069492218115caf44361b742b20c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 20 22:23:39 2010 -0400
+
+    Revert 9370647823ce29c1088c351381a07a5506b74c84
+    
+    Was not needed anymore.  For details see:
+    
+    Bug 621902 - artifacts shown at the button of maximized terminal after
+    minimizing another window over it
+
+ src/vte.c |    8 --------
+ 1 files changed, 0 insertions(+), 8 deletions(-)
+
+commit 43936cabba157cf9704680bcb5c71bb2324aadc2
+Author: Daniel S. Koda <danielskoda gmail com>
+Date:   Mon Sep 20 08:58:25 2010 -0300
+
+    Updated Brazilian Portuguese translation
+
+ po/pt_BR.po |  121 ++++++++++++++---------------------------------------------
+ 1 files changed, 28 insertions(+), 93 deletions(-)
+
+commit 25c56f2d644340d2216cd4df4ee2c377fc17db85
+Author: Wouter Bolsterlee <wbolster gnome org>
+Date:   Sun Sep 19 20:28:01 2010 +0200
+
+    Updated Dutch translation by Wouter Bolsterlee
+
+ po/nl.po |  111 +++++++++++++++++++++++++------------------------------------
+ 1 files changed, 46 insertions(+), 65 deletions(-)
+
+commit 2ddaf14177f238f5d5f00949e489ad792f3e3698
+Author: Kenneth Nielsen <k nielsen81 gmail com>
+Date:   Sun Sep 19 17:44:43 2010 +0200
+
+    Updated Danish translation
+
+ po/da.po |  111 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 47 insertions(+), 64 deletions(-)
+
+commit c5b318675ec1fc90464a4eaa356c5ad1ab68c69d
+Author: Francesco Marletta <francesco marletta tiscali it>
+Date:   Sat Sep 18 17:12:26 2010 +0200
+
+    [l10n] Updated Italian translation
+
+ po/it.po |   52 ++++++++++++++++++++--------------------------------
+ 1 files changed, 20 insertions(+), 32 deletions(-)
+
+commit e984749f939981d16ee7828ebef352e74ce461e1
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Sep 15 00:47:58 2010 +0200
+
+    Don't force VTE_SEAL_ENABLE on vte/gtk2
+    
+    Only enforce it on vte 2.90 (gtk3).
+
+ configure.in          |    3 +++
+ vte-uninstalled.pc.in |    2 +-
+ vte.pc.in             |    2 +-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 0574bcfbd5c5925458ecdea0e6bbac6d65e30efc
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 13 16:17:31 2010 +0200
+
+    Clarify TERM env var handling with VtePty
+
+ src/pty.c |    5 +++++
+ src/vte.c |   32 ++++++++++++++++++++++++++++++--
+ 2 files changed, 35 insertions(+), 2 deletions(-)
+
+commit a7b74340edad2f1e61dc7b78a7177c52715eb925
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Sep 11 12:29:34 2010 +0200
+
+    Use new gdk keysym names on gtk3
+
+ src/iso2022.c |  200 +++++++++++++++--------------
+ src/keymap.c  |  404 +++++++++++++++++++++++++++++----------------------------
+ src/vte.c     |  110 ++++++++--------
+ 3 files changed, 367 insertions(+), 347 deletions(-)
+
+commit 5f52c7ce5f8151aa1718dc0aab6c116ba595f402
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 6 13:08:00 2010 +0200
+
+    Use -Bsymbolic-functions when available
+    
+    Bug #628870.
+
+ configure.in    |   25 +++++++++++++++++++++++++
+ src/Makefile.am |   10 +++++++---
+ 2 files changed, 32 insertions(+), 3 deletions(-)
+
+commit f04856b1b5ec91431871c4c77a07e4256eb7cc20
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Sep 12 13:36:16 2010 +0200
+
+    Add --cursor-blink to vteapp
+
+ src/vteapp.c |   20 +++++++++++++-------
+ 1 files changed, 13 insertions(+), 7 deletions(-)
+
+commit 2a325bd050eb3e9d19767687aabb95c390b13b6e
+Author: Takayuki KUSANO <AE5T-KSN asahi-net or jp>
+Date:   Mon Sep 13 20:34:51 2010 +0900
+
+    Updated Japanese translation.
+
+ po/ja.po |  106 +++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 46 insertions(+), 60 deletions(-)
+
+commit f1676fbe3e91a6e887abf254723b57e841fad0bb
+Author: Piotr Drąg <piotrdrag gmail com>
+Date:   Tue Sep 7 19:02:47 2010 +0200
+
+    Updated Polish translation
+
+ po/pl.po |   34 +++++++++++++---------------------
+ 1 files changed, 13 insertions(+), 21 deletions(-)
+
+commit 606ae4edb1721ea7643b0e2439a6d8fc2b6469a2
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 6 13:05:25 2010 +0200
+
+    Remove unused variable
+
+ src/vte.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 2f58eba8406c699159ed8fc4a88554f88e1012fc
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Sep 6 12:49:56 2010 +0200
+
+    Use correct variables for cleaning the gir data
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit be36d54abdd1ef3b067430c33e155137f8a31eef
+Author: Michael Kotsarinis <mk73628 gmail com>
+Date:   Sat Sep 4 19:02:02 2010 +0300
+
+    Updated Greek translation
+
+ po/el.po |  111 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 50 insertions(+), 61 deletions(-)
+
+commit 8bf969a27069fbc0c71f0bb3fcb176456b5e32ba
+Author: drtv <vasudeven git gnome org>
+Date:   Fri Sep 3 21:35:19 2010 +0530
+
+    Updated Tamil translation
+
+ po/ta.po |   99 +++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 43 insertions(+), 56 deletions(-)
+
+commit 0689c745e07e48e1324c3a3878f42d3ea1c38f59
+Author: Philip Withnall <philip tecnocode co uk>
+Date:   Wed Sep 1 09:44:36 2010 +0100
+
+    Update British English translation
+
+ po/en_GB.po |  108 ++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 44 insertions(+), 64 deletions(-)
+
+commit d831dd8da5bdfa2e8c85932966605e8dd64e8fce
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Tue Aug 31 01:55:44 2010 +0200
+
+    Updated Hungarian translation
+
+ po/hu.po |   99 ++++++++++++++++++++++----------------------------------------
+ 1 files changed, 35 insertions(+), 64 deletions(-)
+
+commit 203d696ed3772da3b7eb52b12e1f53cc6fdbbebf
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Aug 29 13:56:48 2010 +0200
+
+    Don't dist the gir and typelib
+    
+    Fixes distchecking with --disable-introspection.
+
+ src/Makefile.am |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 76387964c9ae6630d5bd29be61e3359b7b0ed8c9
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Aug 29 13:51:42 2010 +0200
+
+    Version 0.25.91
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c9fd190d894354fa0d345c8f58524a83bab80524
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Aug 29 13:49:52 2010 +0200
+
+    Use gtk_widget_style_attach
+    
+    Fix faulty code introduced in commit ac1e78c78e6a39834d35c525be01d50c348d33ba
+    from bug #612484.
+    
+    Bug #627764.
+
+ src/vte.c |    8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 7f964f72bb6cb51c5f8a7265476eb6f581ef1d36
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Aug 20 21:22:41 2010 +0200
+
+    Distcheck with gtk 2 but without introspection
+
+ Makefile.am |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c737262bf968ee94c22144c3ed7ed4f6fd27e2dd
+Author: Bruno Brouard <annoa b gmail com>
+Date:   Thu Aug 26 14:43:16 2010 +0200
+
+    Updated French translation
+
+ po/fr.po |   83 +++++++++++++++++++++-----------------------------------------
+ 1 files changed, 28 insertions(+), 55 deletions(-)
+
+commit 724195be5ba53c45d650366a8e029939c20d43a4
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 24 16:53:17 2010 -0400
+
+    Really fix Bug 601926 - Don't hardcode meta to alt
+    
+    Correct fix applied this time.  Tested, Alt is not broken by this
+    change.
+
+ configure.in |    2 +-
+ src/keymap.h |    2 +-
+ src/vte.c    |    7 ++++++-
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 7f93f32a18d12e1dbf18a269f7aaec6e706e8cb0
+Author: Chao-Hsiung Liao <j_h_liau yahoo com tw>
+Date:   Mon Aug 23 20:00:04 2010 +0800
+
+    Updated Traditional Chinese translation(Hong Kong and Taiwan)
+
+ po/zh_HK.po |   57 +++++++++++++++++++++++++--------------------------------
+ po/zh_TW.po |   57 +++++++++++++++++++++++++--------------------------------
+ 2 files changed, 50 insertions(+), 64 deletions(-)
+
+commit 1d6459b92336ffcb5cb2f3187cac6bda5990cc95
+Author: Милош Поповић <gpopac gmail com>
+Date:   Mon Aug 23 01:40:41 2010 +0200
+
+    Updated Serbian translation
+
+ po/sr.po       |  105 ++++++++++++++++++++++++++------------------------------
+ po/sr latin po |  105 ++++++++++++++++++++++++++------------------------------
+ 2 files changed, 98 insertions(+), 112 deletions(-)
+
+commit b278c6c8fff7860b81dc2bb89e8b37cd144223b3
+Author: Alexander Shopov <ash contact bg>
+Date:   Sun Aug 22 23:11:21 2010 +0300
+
+    Updated Bulgarian translation
+
+ po/bg.po |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 578fef8c1711bfd5b5e105cb2d6fe6b560bba251
+Author: Alexander Shopov <ash contact bg>
+Date:   Sun Aug 22 22:39:01 2010 +0300
+
+    Updated Bulgarian translation
+
+ po/bg.po |   91 ++++++++++++++++++++-----------------------------------------
+ 1 files changed, 30 insertions(+), 61 deletions(-)
+
+commit 132d8ca1d6869af4a9e7965a597247dcc37ce234
+Author: David Planella <david planella gmail com>
+Date:   Sun Aug 22 10:19:21 2010 +0200
+
+    Updated Catalan translation
+
+ po/ca.po |  105 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 45 insertions(+), 60 deletions(-)
+
+commit 4f40ebe3050eda9d501f9f136059de781fff5bc0
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Sat Aug 21 17:46:05 2010 +0100
+
+    Updated Portuguese translation
+
+ po/pt.po |   98 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 42 insertions(+), 56 deletions(-)
+
+commit 8995cbbec42fa7a1033a2ec88a93a874a18ac2cc
+Author: Saleem Abdulrasool <compnerd compnerd org>
+Date:   Thu Aug 19 23:11:39 2010 -0700
+
+    fix make check
+
+ src/reflect.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c56c3c4673a310f5d71bc16045a331d362c0bbc5
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 19 12:52:50 2010 -0400
+
+    Revert "Bug 601926 - Don't hardcode meta to alt"
+    
+    This reverts commit b73782a28894e25ed146271f9d6c6775a6836199.
+
+ src/keymap.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1388c74ff3d025b0b87a9de2a94d6407c40980b0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 16:54:52 2010 -0400
+
+    Indent
+
+ src/vte-private.h |   14 +++++++-------
+ 1 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 8b8ad8ff56505ba93f5ab6cae29f766eaa2861ff
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Thu Aug 19 09:50:33 2010 -0400
+
+    Remove leftover, unused GdkPixmpap variable
+    
+    This removes the last GdkPixmap reference in vte.
+
+ src/vtebg.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 0cfaef604b1cbda52cbacf992bbba279059cc96a
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Aug 16 21:26:29 2010 +0200
+
+    Distcheck with --with-gtk=3.0
+
+ Makefile.am |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit b48f5ea815337f48a0dafefb68b5858af66ecd6a
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Aug 16 21:23:39 2010 +0200
+
+    One more GSEAL fix
+
+ src/reflect.c |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 077f698fcd06eae347ee91426a110c4d00ee1a99
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Aug 16 15:09:42 2010 +0200
+
+    Version 0.25.90
+
+ NEWS         |   15 +++++++++++++++
+ configure.in |    2 +-
+ 2 files changed, 16 insertions(+), 1 deletions(-)
+
+commit deaac0d77a1838dc3ecc33ba2993b45dd2a3ee1c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 16:15:18 2010 -0400
+
+    Fix signdness warnings
+
+ src/vte.c |   30 ++++++++++++++++--------------
+ 1 files changed, 16 insertions(+), 14 deletions(-)
+
+commit 9af0c65c082daab19d388f50c2b5d52f8f28a454
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 16:10:06 2010 -0400
+
+    Bug 626676 - Cleanup vte_terminal_determine_colors
+    
+    Or rather, rewrite it.
+    
+    At least I understand how it's supposed to work now.  Combinations of
+    set highlight color, set cursor color, reverse mode, selected text,
+    etc work much better now.
+
+ src/vte.c |  190 +++++++++++++++++++++++++++++++++----------------------------
+ 1 files changed, 103 insertions(+), 87 deletions(-)
+
+commit a0d9e0ff3a580a47f45dc01eb303c164a126c81b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 15:21:29 2010 -0400
+
+    Simplify determine_colors more
+    
+    Get rid of reverse argument.  Also "xor" instead of "or" selection mode
+    with reverse mode.  Selection works with reverse mode now.  Before, it
+    didn't render.
+
+ src/vte.c |   34 +++++++++++-----------------------
+ 1 files changed, 11 insertions(+), 23 deletions(-)
+
+commit 956a836ab4f7000a7cf409c05a194e194573c358
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 14:30:14 2010 -0400
+
+    Bug 621298 - Cursor invisible (plain black) in (xfce) Terminal & terminator
+    
+    Fix the case where cursor color is set.
+    
+    Towards making determine_colors make sense.  Still not done.  More
+    commits coming, but this one is enough to fix the main regression.
+
+ src/vte.c |   32 ++++++++++++++++++++++----------
+ 1 files changed, 22 insertions(+), 10 deletions(-)
+
+commit 3a7fbb285ebf9a50eb3498e21e001b773701f5a6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 14:24:33 2010 -0400
+
+    Revert "Don't hide cursor even if cell is invisible"
+    
+    This reverts commit 18ee5f522d8bc2f5dfe896f40eba8d5313cb310f.
+    
+    This didn't make sense.  It was making invisible cells visible when
+    under cursor.
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit edde846fa555e0d5e16d54328e47d81096f82893
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 13:46:10 2010 -0400
+
+    Minor
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b2f8852f936a8ef0537a0a83156a24544b1a1cf2
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 11 13:45:40 2010 -0400
+
+    Minor --help adjustment
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9abf75cb36376d00a6dc14d7482599a57cbff023
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Aug 11 18:16:20 2010 +0200
+
+    Vary gettext domain for vte/gtk3
+    
+    Using the same domain creates parallel-install troubles.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 48e2356a5a91c8c6d61573c30bcb8740fbec4b8e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 10 15:01:47 2010 -0400
+
+    Ensure vte-gtk-compat.h is included in the tarball
+
+ src/Makefile.am |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 01c7eee35d336e674df206220047c19bc38ed20e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 10 15:00:22 2010 -0400
+
+    Ensure decset, osc and window are included in the tarball
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 14aa0032f04aa1771116fe6f73dd46a75c4c11f2
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Aug 10 20:09:29 2010 +0200
+
+    Docs update
+
+ doc/reference/vte-sections.txt |    6 ++++
+ src/vte.c                      |   57 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+), 0 deletions(-)
+
+commit 4feccba86ead67f7e0da018b45f2301a89a3ea75
+Author: Nils-Christoph Fiedler <ncfiedler gnome org>
+Date:   Sun Aug 8 15:53:24 2010 +0200
+
+    Updated LowGerman translation
+
+ po/nds.po |   35 ++++++++++++++++++-----------------
+ 1 files changed, 18 insertions(+), 17 deletions(-)
+
+commit 18ed68d1ea94e002cef001398b8bb344d639f5d7
+Author: A S Alam <aalam users sf net>
+Date:   Wed Aug 4 15:10:48 2010 +0530
+
+    update Translation in master for Punjabi by A S Alam
+
+ po/pa.po |   46 ++++++++++++++++++++++++----------------------
+ 1 files changed, 24 insertions(+), 22 deletions(-)
+
+commit 23655733396cbe49b989901c7a4a0c66bca4a4dc
+Author: Dirgita <dirgitadevina gmail com>
+Date:   Wed Aug 4 11:03:00 2010 +0700
+
+    Updated Indonesian translation
+
+ po/id.po |  152 +++++++++++++++++---------------------------------------------
+ 1 files changed, 42 insertions(+), 110 deletions(-)
+
+commit 701dfad230c641edd7894f562fb46195a57bcf08
+Author: Daniel Nylander <po danielnylander se>
+Date:   Sun Jul 25 19:05:14 2010 +0200
+
+    Updated Swedish translation
+
+ po/sv.po |  114 ++++++++++++++++++++++++-------------------------------------
+ 1 files changed, 45 insertions(+), 69 deletions(-)
+
+commit bc8df68917912f333ebdab8135800e4d3632dcd4
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Jul 22 13:05:04 2010 -0400
+
+    Bug 618097 - Broken backtab (cbt)
+
+ src/vteseq.c |    9 ++-------
+ 1 files changed, 2 insertions(+), 7 deletions(-)
+
+commit 3e8c59f78a8e7557ffccd97d7cd5dea0f7b0aceb
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Jul 22 12:32:40 2010 -0400
+
+    Add compat impl for gtk_accessible_get_widget()
+
+ src/vte-gtk-compat.h |    4 ++++
+ src/vteaccess.c      |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 07307c1863cd68a85284235b69e6687f9eed36e9
+Author: Fran Diéguez <fran dieguez mabishu com>
+Date:   Wed Jul 21 16:28:11 2010 +0200
+
+    Updated Galician translations
+
+ po/gl.po |   58 ++++++++++++++++++----------------------------------------
+ 1 files changed, 18 insertions(+), 40 deletions(-)
+
+commit c01a676e1ed44e1aa3e318cea559be4b2f1d49c3
+Author: Mario Blättermann <mariobl gnome org>
+Date:   Fri Jul 16 21:38:54 2010 +0200
+
+    [i18n] Updated German translation
+
+ po/de.po |   99 ++++++++++++++++++++++++++++---------------------------------
+ 1 files changed, 45 insertions(+), 54 deletions(-)
+
+commit 8b971a7b2c59902914ecbbc3915c45dd21530a91
+Author: Kees Cook <kees ubuntu com>
+Date:   Mon Jul 12 21:31:32 2010 +0200
+
+    Fix terminal title reporting
+    
+    Fixed CVE-2003-0070 again.
+    See also http://marc.info/?l=bugtraq&m=104612710031920&w=2 .
+    (cherry picked from commit 6042c75b5a6daa0e499e61c8e07242d890d38ff1)
+
+ src/vteseq.c |   24 ++++++++++++++++--------
+ 1 files changed, 16 insertions(+), 8 deletions(-)
+
+commit a4445d5bd1106d8683b471a358f7933bacb58105
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Jul 12 21:27:38 2010 +0200
+
+    Tiny configure fix
+
+ configure.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d17e650aa062946ce599f80fe33989cc2c7bb52d
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Thu Jul 15 09:57:23 2010 -0400
+
+    Stop using the gdk_draw_* API
+    
+    Only one gdk_draw_rectangle() call let.
+
+ src/vte.c |   29 ++++++++++++++++-------------
+ 1 files changed, 16 insertions(+), 13 deletions(-)
+
+commit 6eadb8494797e44910b86b5e101823cf527c04e1
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Thu Jul 15 09:07:51 2010 -0400
+
+    Use accessors for setting adjustment
+    
+    We use g_object_freeze_notify() to emit the same amount of ::changed
+    signals.
+
+ src/vte.c |   34 ++++++++++++++++++++--------------
+ 1 files changed, 20 insertions(+), 14 deletions(-)
+
+commit 31303a1893ba6052a537f285c99db80499a8b797
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Thu Jul 15 08:38:42 2010 -0400
+
+    Use get accessors for adjustments
+
+ src/vte.c |   57 +++++++++++++++++++++++++++++++--------------------------
+ 1 files changed, 31 insertions(+), 26 deletions(-)
+
+commit 887f86c00e99e38f9374eea03b1535cd823851b3
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Thu Jul 15 08:24:16 2010 -0400
+
+    Add remaining accessors
+    
+    All that remains now is the adjustment accessors.
+
+ src/vte.c       |   19 ++++++++-------
+ src/vteaccess.c |   64 ++++++++++++++++++++++++++++--------------------------
+ src/vteapp.c    |   65 ++++++++++++++++++++++++++++++++----------------------
+ src/vtedraw.c   |   11 ++++++---
+ src/vteseq.c    |   16 +++++++------
+ 5 files changed, 97 insertions(+), 78 deletions(-)
+
+commit 0f4d6539fa0280cfa658a27ceaca63c2db0232e4
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Jul 14 22:52:53 2010 -0400
+
+    Seal VTE when VTE_SEAL_ENABLE is given, not GSEAL_ENABLE
+    
+    gtk+ 3.0 defines GSEAL_ENABLE, which seals up VTE for the vte code as well.
+    Instead, seal of VTE when VTE_SEAL_ENABLE is defined and set it in
+    the .pc file.
+
+ src/vte.h |    2 +-
+ vte.pc.in |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 235461a3c4ac1577a3c0891a2d0ca5316e12a568
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Jul 14 22:51:18 2010 -0400
+
+    Introduce compat macros for region differences
+
+ src/vte-gtk-compat.h |   27 +++++++++++++++++++++++++++
+ src/vte.c            |    6 +++---
+ src/vtedraw.h        |    1 +
+ 3 files changed, 31 insertions(+), 3 deletions(-)
+
+commit ac1e78c78e6a39834d35c525be01d50c348d33ba
+Author: Saleem Abdulrasool <compnerd compnerd org>
+Date:   Wed Jul 14 22:10:00 2010 -0400
+
+    Use accessors for gtk objects
+    
+    This change introduces vte-gtk-compat.h to allow compatibility with the
+    current GTK+ requirement (2.14+) while allowing us to use GSEAL when
+    available.  When the GTK+ requirements are moved up to 2.20+, it should
+    be possible to entirely remove the header.
+    
+    Setting of the GTK adjustment fields still occurs without the accessors
+    as setting the value and then using value_changed may introduce
+    different behaviour and/or double signal emissions.
+
+ src/vte-gtk-compat.h |   45 +++++++++
+ src/vte.c            |  253 +++++++++++++++++++++++++++++--------------------
+ 2 files changed, 195 insertions(+), 103 deletions(-)
+
+commit 396f44dd5ea0a4d9d0567ae9c6618bb3004c4c34
+Author: Kristjan Schmidt <kristjan schmidt googlemail com>
+Date:   Sun Jul 4 17:33:30 2010 +0200
+
+    Add Esperanto translation
+
+ po/LINGUAS |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 3671437e3d2fca4ac4918078700b2d60de43228c
+Author: Kristjan Schmidt <kristjan schmidt googlemail com>
+Date:   Sun Jul 4 17:33:30 2010 +0200
+
+    Add Esperanto translation
+
+ po/eo.po |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 105 insertions(+), 0 deletions(-)
+
+commit 137e16630cd737dd4690fb54e6431b0bfebcf509
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jun 30 15:27:30 2010 -0400
+
+    Simplify libtool versioning
+
+ configure.in    |   38 +++++++++++++++++++-------------------
+ src/Makefile.am |    2 +-
+ 2 files changed, 20 insertions(+), 20 deletions(-)
+
+commit 4423625ec82432f7bbc6b8a00b865271d3b123fd
+Author: Aron Xu <aronxu gnome org>
+Date:   Tue Jun 29 21:53:54 2010 +0800
+
+    Update Simplified Chinese translation.
+
+ po/zh_CN.po |  112 ++++++++++++++++++++++++----------------------------------
+ 1 files changed, 46 insertions(+), 66 deletions(-)
+
+commit 11a21955d145c743631a3eb6dc109e08359bfea5
+Author: Khaled Hosny <khaledhosny eglug org>
+Date:   Sat Jun 26 22:30:37 2010 +0300
+
+    Updated Arabic translation
+
+ po/ar.po |   46 ++++++++++++++++++++--------------------------
+ 1 files changed, 20 insertions(+), 26 deletions(-)
+
+commit 9caf8b2249dea81bc03108020b7c033a78cd3f57
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Jun 25 02:02:29 2010 -0300
+
+    Minor comment fix.
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 8b3dbe8e6771356023fe552b178659357f502473
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Jun 17 15:02:54 2010 -0400
+
+    Set widget app_paintable.
+
+ src/vte.c |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 332e694b5067c7e8e5d2f32ceccbd229243a3ff7
+Author: Christian Persch <chpe gnome org>
+Date:   Fri May 28 21:10:46 2010 +0200
+
+    Make vte dual buildable with gtk2 and gtk3
+    
+    Gtk3 build is untested.
+
+ Makefile.am               |    8 +++-
+ configure.in              |   82 ++++++++++++++++++++++++++++++++++++--------
+ doc/reference/Makefile.am |    4 +-
+ src/Makefile.am           |   64 ++++++++++++++++++-----------------
+ vte-uninstalled.pc.in     |    2 +-
+ vte.pc.in                 |    4 +-
+ 6 files changed, 111 insertions(+), 53 deletions(-)
+
+commit 405ed5bb3151940db0f21ff5b8e96bea94770f96
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Jun 11 22:51:49 2010 -0400
+
+    Clean up background clearing
+    
+    Fixes bug where lower border of the screen was not properly painted in
+    fullscreen mode.
+
+ src/vte.c     |   45 +++++++++------------------------------------
+ src/vtedraw.c |   18 +-----------------
+ src/vtedraw.h |    3 +--
+ 3 files changed, 11 insertions(+), 55 deletions(-)
+
+commit b73782a28894e25ed146271f9d6c6775a6836199
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Jun 4 14:36:45 2010 -0400
+
+    Bug 601926 - Don't hardcode meta to alt
+
+ src/keymap.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b86c068b061090e176b1ff6e82dcccfd0198ed2f
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Thu Jun 3 12:16:30 2010 -0400
+
+    Bug 620493 - strict aliasing warning
+
+ gnome-pty-helper/gnome-pty-helper.c |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit bff92abe96896ebf3c7e2a60243caf65659d3390
+Author: Yaron Shahrabani <sh yaron gmail com>
+Date:   Sat May 29 13:29:22 2010 +0300
+
+    Updated Hebrew translation.
+
+ po/he.po |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 94d7fb63386d1e8e2653a961af6cbeac06b05c2b
+Author: Yaron Shahrabani <sh yaron gmail com>
+Date:   Sat May 29 13:28:26 2010 +0300
+
+    Updated Hebrew translation.
+
+ po/he.po |  100 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 43 insertions(+), 57 deletions(-)
+
+commit b1cc8aa1a42e74c2130a6e39c5571779fb842f69
+Author: Ivar Smolin <okul linux ee>
+Date:   Thu May 27 08:35:49 2010 +0300
+
+    Estonian translation updated
+
+ po/et.po |   84 ++++++++++++-------------------------------------------------
+ 1 files changed, 17 insertions(+), 67 deletions(-)
+
+commit 9370647823ce29c1088c351381a07a5506b74c84
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed May 26 13:09:47 2010 -0400
+
+    Bug 618749 - set terminal widget background color to terminal background
+
+ src/vte.c |   15 ++++++++++++---
+ 1 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 430dd34fa9532fa492ea512f226e8483d1393716
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed May 26 13:09:25 2010 -0400
+
+    Fix requires_clear setting
+    
+    Part of Bug 618749 - [PATCH] set terminal widget background color to terminal
+
+ src/vtedraw.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2902ade6f3714e8d42cab0320a5e99345a142bd9
+Author: Petr Kovar <pknbe volny cz>
+Date:   Sun May 23 19:49:10 2010 +0200
+
+    Update Czech translation by Marek Cernocky
+
+ po/cs.po |   43 ++++++++++++++++++-------------------------
+ 1 files changed, 18 insertions(+), 25 deletions(-)
+
+commit 3bd8a57d124126f360a2352bfdc61e78a7c7982f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri May 14 18:27:32 2010 -0400
+
+    Revert "Disable introspection dist"
+    
+    This reverts commit a0cec4542963d52b1c1842ea9b450a51262b4c09.
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2d2aabde8ba4ef9dff306cbf15044c68e350ba9d
+Author: Thomas Thurman <tthurman gnome org>
+Date:   Thu May 13 18:06:11 2010 -0400
+
+    Updated Shavian translation
+
+ po/en shaw po |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 868d03f9921e49ef8966a9307a0f521f5c9311d7
+Author: Thomas Thurman <tthurman gnome org>
+Date:   Wed May 12 18:41:00 2010 -0400
+
+    Updated Shavian transliteration
+
+ po/en shaw po |   47 ++++++++++++++++++++---------------------------
+ 1 files changed, 20 insertions(+), 27 deletions(-)
+
+commit 5dc9b3ce32070f1a7040b8ed24d9d463ad6a67b0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue May 11 16:49:10 2010 -0400
+
+    Bug 614658 - text selection with mouse is buggy when using the shift key
+
+ src/vte.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit c84f01d9de7bc2c7a9bfbc6373afbdebbab3d2be
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed May 5 19:16:39 2010 -0400
+
+    Bug 617690 - Setting default fg color should not cancel underline
+
+ src/vteseq.c |    5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+commit 7af990ed413f19de0b20815b4ceeec13c201790f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 11:31:46 2010 -0400
+
+    Release 0.25.1
+
+ NEWS         |   17 +++++++++++++++++
+ configure.in |    2 +-
+ 2 files changed, 18 insertions(+), 1 deletions(-)
+
+commit a0cec4542963d52b1c1842ea9b450a51262b4c09
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 21:08:54 2010 -0400
+
+    Disable introspection dist
+    
+    Broken as usual...
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 860ed187545355fa9daef60907a3746837cc7b6a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 11:21:42 2010 -0400
+
+    [configure] Make libtool versioning automatic
+
+ configure.in |   21 +++++++++------------
+ 1 files changed, 9 insertions(+), 12 deletions(-)
+
+commit d8ccb73b23cd2a5c85a3bfbfbfe550391feb3ae0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 04:17:52 2010 -0400
+
+    [search] Fix not-found
+
+ src/vte.c |   30 +++++++++++++++++++++++++++++-
+ 1 files changed, 29 insertions(+), 1 deletions(-)
+
+commit e7101e79d6ba2d8a2f2d1029e76f7c8aecffbc09
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 03:58:34 2010 -0400
+
+    [search] Don't scroll if result is on screen already
+
+ src/vte.c |   22 ++++++++++++++++------
+ 1 files changed, 16 insertions(+), 6 deletions(-)
+
+commit 8be7456df21e13fa7182143eb1266790ce3fc31a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 03:49:09 2010 -0400
+
+    Fix presenting search result
+
+ src/vte.c |   47 ++++++++++++++++++++++-------------------------
+ 1 files changed, 22 insertions(+), 25 deletions(-)
+
+commit 871fc9e97a2c6f8340ca20eb75fbbd04fecfb694
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 03:23:17 2010 -0400
+
+    Add comment
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit fc35e7bed6ee7940167f9cde0eae913be7d15f4a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 03:21:59 2010 -0400
+
+    Fix selection invalidation.  Oops!
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d80ecde4c350e9922d374f9adb97238e5c041e5c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 3 03:20:52 2010 -0400
+
+    [search] Implement wrap-around
+
+ src/vte.c |   92 +++++++++++++++++++++++++++++++++++++++----------------------
+ 1 files changed, 59 insertions(+), 33 deletions(-)
+
+commit 95c30fc52edd2d5de68267fdf3847b9e639d218d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun May 2 03:35:21 2010 -0400
+
+    Add VteVisualPosition
+
+ src/vte-private.h |   16 ++++------
+ src/vte.c         |   80 ++++++++++++++++++++++++++--------------------------
+ src/vteseq.c      |    2 +-
+ 3 files changed, 48 insertions(+), 50 deletions(-)
+
+commit ae08c6d9c1a2f1d9f5fee8658ddbed2321b1b0e1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun May 2 03:23:29 2010 -0400
+
+    Refactor search
+
+ src/vte-private.h |    1 +
+ src/vte.c         |  186 +++++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 119 insertions(+), 68 deletions(-)
+
+commit 1710d5069482355cf1b3dff9a7605f35311823d4
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sun May 2 11:40:20 2010 +0200
+
+    Updated Norwegian bokmål translation
+
+ po/nb.po |   95 +++++++++++++++++++-------------------------------------------
+ 1 files changed, 29 insertions(+), 66 deletions(-)
+
+commit 81375a2f4aec7b55d8c3337a316fdeda166b701f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 29 16:38:36 2010 -0400
+
+    Bug 616497 - 256 color sequence lacks boundary checking
+
+ src/vteseq.c |   28 ++++++++++++++++------------
+ 1 files changed, 16 insertions(+), 12 deletions(-)
+
+commit 5e7bb0b7cbbd130eada9730b029270d822a69ef5
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Apr 27 16:28:12 2010 -0400
+
+    Fixup search a bit
+
+ src/vte-private.h |    2 +-
+ src/vte.c         |    9 +++++----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+commit ed1c3e4ba7aa3a6a3d4eea9dc30b6356f91c26b9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Apr 27 11:35:39 2010 -0400
+
+    Add _[gs]et_wrap_around() API
+
+ src/vte-private.h |    1 +
+ src/vte.c         |   29 ++++++++++++++++++++++-------
+ src/vte.h         |    7 ++++---
+ 3 files changed, 27 insertions(+), 10 deletions(-)
+
+commit c16d84a84006fd62ad4282b983868ae7b91cf9c6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Apr 27 06:22:26 2010 -0400
+
+    Start of find_prev
+
+ src/vte.c |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 files changed, 80 insertions(+), 15 deletions(-)
+
+commit 812fa94985488dda7d14992895c20ea632c04147
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Apr 27 04:01:03 2010 -0400
+
+    Add buffer search API
+    
+    Not performing any actual search right now.
+
+ src/vte-private.h |    3 ++
+ src/vte.c         |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vte.h         |    9 +++++++
+ 3 files changed, 73 insertions(+), 0 deletions(-)
+
+commit 3653a15060dace53d22834fd853ecf702859aea0
+Author: Francisco Diéguez <fran dieguez mabishu com>
+Date:   Sat Apr 17 21:35:15 2010 +0200
+
+    Updated Galician translations
+
+ po/gl.po |   37 ++++++++++++++++---------------------
+ 1 files changed, 16 insertions(+), 21 deletions(-)
+
+commit 25a382362d049d655620c122e3036f3482ebf963
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Apr 15 19:02:04 2010 +0200
+
+    VteBg is private API
+
+ doc/reference/vte-sections.txt |    1 -
+ src/vtebg.c                    |    2 +-
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 8c0e7c9aa277e8f51d7dbb010044fea072a26c0b
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Apr 15 18:55:02 2010 +0200
+
+    Use (transfer full)
+
+ src/pty.c |    6 +++---
+ src/vte.c |   18 +++++++++---------
+ 2 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 15ce739c19ff14f3d5e2267d2c1bb1d1b5c50a28
+Author: Jorge González <jorgegonz svn gnome org>
+Date:   Thu Apr 15 08:28:01 2010 +0200
+
+    Updated Spanish translation
+
+ po/es.po |  119 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 54 insertions(+), 65 deletions(-)
+
+commit 32af285e46f078a84fbff7d2455bba4960b3a4b8
+Author: Matej Urbančič <mateju svn gnome org>
+Date:   Wed Apr 14 17:58:38 2010 +0200
+
+    Updated Slovenian translation
+
+ po/sl.po |  129 ++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 55 insertions(+), 74 deletions(-)
+
+commit c4159492f8ea3f5fc4c1adeae5077ef12edb366b
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Apr 12 20:29:38 2010 +0200
+
+    Add some more gi annotations
+
+ src/vte.c |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 0142382369accceab938fd06e7001688187834c5
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Apr 12 20:09:08 2010 +0200
+
+    Tiny docs fix
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit deeab3837a7b3c463e525f75f0b96436448bc7c3
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Apr 12 19:59:44 2010 +0200
+
+    Add annotation-glossary.xml include
+
+ doc/reference/vte-docs.xml |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 122d6382534fd381ca2f964b0df9aa568da52c45
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Apr 12 19:59:03 2010 +0200
+
+    Add deprecation guards to vtedeprecated.h
+    
+    They're redunant since this file is only included in the
+    !VTE_DISABLE_DEPRECATED case, but this is necessary to make the docs
+    build happy.
+
+ src/vtedeprecated.h |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit fddc82dde27f0cbdbc38c617808be965b83558ac
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Apr 12 11:38:06 2010 -0400
+
+    Bug 615417 - Reversed and one error saturation level in 0.24.0
+
+ src/vtebg.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit f82251e5138a3515c3bd17e4af5769ee2c7c3d96
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Apr 12 11:23:42 2010 -0400
+
+    Bug 615467 - [PATCH] VTE does not handle CSI%dr properly
+
+ src/caps.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit bc3a50d2d6024e8b01bb64f9e0e908de123216a2
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 11 21:00:01 2010 +0200
+
+    Don't crash when root_surface is NULL
+
+ src/vtebg.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 17a7de4fb76205f92d6f9af7af9ba6e127eeb3b4
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 11 20:51:56 2010 +0200
+
+    Add some debug output to VteBg
+
+ src/debug.c |    3 ++-
+ src/debug.h |    3 ++-
+ src/vtebg.c |   21 ++++++++++++---------
+ 3 files changed, 16 insertions(+), 11 deletions(-)
+
+commit bf80e94ed89c3abdc238725694617444cc0f3949
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 17:48:54 2010 +0200
+
+    Tiny docs fixup
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 09ac9fd1733e0376fe2201e92a93accd7c716865
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 17:41:28 2010 +0200
+
+    Add gobject introspection annotations
+    
+    ... and update some docs.
+
+ src/pty.c |   24 +++---
+ src/vte.c |  315 ++++++++++++++++++++++++++----------------------------------
+ src/vte.h |    9 +-
+ 3 files changed, 154 insertions(+), 194 deletions(-)
+
+commit b1379dc19ac015a3dbb7a42f7b1250e6e096820f
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 16:34:11 2010 +0200
+
+    Remove unused variable
+
+ src/vtebg.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit e70fbd240fd230155a5321907bfe6f4fa032586c
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 16:27:19 2010 +0200
+
+    Add FIXME about potential optimisation
+
+ src/vtebg.c |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 3aaa051bc390c97dca80beff9fdcf14eaddf01a8
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 16:24:33 2010 +0200
+
+    Add some gtk-doc comments
+    
+    While trying to understand this code.
+
+ src/vtebg.c |   43 +++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 35 insertions(+), 8 deletions(-)
+
+commit 41db1d0d64227d65d1f25de68d8a62e3a7bd271d
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 16:06:02 2010 +0200
+
+    Use _vte_debug_print() here
+
+ src/vtebg.c |    5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 7561724dc78abf71a6cefaf17965f16a69fec44b
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 16:01:45 2010 +0200
+
+    Parse options enum from string
+
+ src/vteapp.c |   54 ++++++++++++++++++++++++++++++++++++++----------------
+ 1 files changed, 38 insertions(+), 16 deletions(-)
+
+commit 08283ddc9f5516e1f15306399c909c0adc49db77
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 15:49:31 2010 +0200
+
+    Use standard form of stock type macros
+
+ src/vte.h   |   29 +++++++++--------------------
+ src/vtebg.h |   15 +++++++--------
+ 2 files changed, 16 insertions(+), 28 deletions(-)
+
+commit 39b7a1f74dc7044d1fd6cd9df7abceffa7e99349
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 01:42:24 2010 +0200
+
+    We also depend on cairo-xlib on gdk-x11
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a9642829fbbd027bf39df6205efc1d7cb8383c02
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 10 01:41:52 2010 +0200
+
+    Use G_STATIC_ASSERT
+    
+    Now that we depend on glib 2.22, remove our private static assert macro
+    and just use G_STATIC_ASSERT.
+
+ src/debug.h      |    4 ----
+ src/vterowdata.h |   10 +++++-----
+ 2 files changed, 5 insertions(+), 9 deletions(-)
+
+commit 49759e9608b1d69cdc26a44e0259d57297be995a
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Apr 8 17:16:49 2010 +0200
+
+    Fix underline cursor height calculation
+    
+    Use the cell width, not the whole cursor width when calculating the
+    underline cursor height.
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d00507b9bc4c29248817915225c49c1e8b349fe0
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Dec 3 18:47:13 2009 +0100
+
+    Use the style's cursor-aspect-ratio when drawing the cursor
+    
+    For the ibeam cursor, use the aspect ratio; for the underline, its
+    inverse (that's the only thing that makes sense here).
+    
+    Bug #586950.
+
+ src/vte-private.h |    1 +
+ src/vte.c         |   29 +++++++++++++++++++++++------
+ 2 files changed, 24 insertions(+), 6 deletions(-)
+
+commit b72c2a7df25e5fdfefbd437505f9f71b7d675da8
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Apr 8 13:15:00 2010 +0200
+
+    Print the GDK target during configure
+    
+    For checking purposes.
+
+ configure.in |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 8df389be0035f185705a4553bd8564940cb23080
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 22:37:02 2010 +0200
+
+    Remove accidentally added include
+
+ src/vtetc.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 022bf76c6b01ea82310c67020461530082f86998
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 18:12:00 2010 +0200
+
+    Add debug output when g-p-h fails
+
+ src/pty.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit d8569b1a45bdba4f09d6162ad9287f47ac8ca25f
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 17:20:16 2010 +0200
+
+    Remove unused function declaration
+
+ src/vtetc.c |    1 +
+ src/vtetc.h |    3 ---
+ 2 files changed, 1 insertions(+), 3 deletions(-)
+
+commit feeda1671770daffa08a4235b94becdcbf9b825c
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 17:08:10 2010 +0200
+
+    Remove signal ID from VteBgClass
+    
+    It's unused.
+
+ src/vtebg.c |   16 ++++++++--------
+ src/vtebg.h |    1 -
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+commit acbaf637f2c78d34d735e1b0c0c2586b344d42ff
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 17:06:39 2010 +0200
+
+    Remove unnecessary i18n init from vtebg
+    
+    VteBg is an internal object that cannot be accessed from outside, and
+    that has no i18n. So there's really no need to make its class init
+    function bind vte's textdomain.
+
+ src/vtebg.c |    7 -------
+ 1 files changed, 0 insertions(+), 7 deletions(-)
+
+commit be41faea3651c2a90012648490ebf346eac82d04
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Apr 4 17:03:24 2010 +0200
+
+    Add x11 to pkg-config dep list on gdk-x11
+    
+    Bug #613525.
+
+ configure.in |   10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit f0809d9cc8b4bba36252a12098fb31dd81534242
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 3 23:50:51 2010 +0200
+
+    Remove #if 0'd code
+
+ src/vtebg.c |   22 ----------------------
+ 1 files changed, 0 insertions(+), 22 deletions(-)
+
+commit 9a36a04d3f6edbb81a304b0cad3b60d2e90d2324
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 3 23:49:15 2010 +0200
+
+    Fix crash when loading the bg pixbuf failed
+
+ src/vtebg.c |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 61e12fa671c2af5766ba28077a788423355bb5c1
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Apr 3 18:59:03 2010 +0200
+
+    Clean up vtebg
+    
+    Fixes build with !GDK_WINDOWING_X11. Bug #614469.
+
+ src/vtebg.c   |  191 +++++++++++++++++++++++++++++----------------------------
+ src/vtebg.h   |   19 +++---
+ src/vtedraw.c |    2 +-
+ src/vtedraw.h |    2 +-
+ 4 files changed, 107 insertions(+), 107 deletions(-)
+
+commit e2981d7ae9039256a22137a7f0b8fd886b794a94
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 18:09:41 2010 -0400
+
+    Bug 604240 - fix set-scrolling-region behaviour on reset
+
+ src/vteseq.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit bd2da3fd0fc436887a61a89b0dd367954fa36745
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 02:16:56 2010 -0400
+
+    Bug 604241 - improve xterm emulation of set-scrolling-region behaviour
+
+ src/caps.c         |    5 +++++
+ src/vteseq-n.gperf |    2 ++
+ src/vteseq.c       |   26 ++++++++++++++++++++++++++
+ 3 files changed, 33 insertions(+), 0 deletions(-)
+
+commit f74f7b2ac16cedd53884917ede02e293276f40f2
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 01:52:35 2010 -0400
+
+    Bug 613192 - check-doc-syntax.sh test fails
+
+ src/check-doc-syntax.sh |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0f095ac8755655525a48424773cf06b5b9ed21e9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 01:49:30 2010 -0400
+
+    Fix warnings
+
+ src/dumpkeys.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 18ee5f522d8bc2f5dfe896f40eba8d5313cb310f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 01:41:36 2010 -0400
+
+    Don't hide cursor even if cell is invisible
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 09345b1ab25b72984419e82cfe3dca07bc5229ce
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 01:39:41 2010 -0400
+
+    Bug 499944 - vte_sequence_handler_ta abuses cell.attr.invisible to hide tab char
+
+ src/vtedraw.c |    5 +++++
+ src/vteseq.c  |    1 -
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit f412a6f73a7b3a432bb88830b63ee25ea648619d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 1 01:34:18 2010 -0400
+
+    Followup on Bug 602596 - Cursor can become invisible
+    
+    Fix invisible attribute.
+
+ src/vte.c |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 3a37564dbce407a112b82b3e7b384a6669c498a3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Mar 31 19:03:03 2010 -0400
+
+    Remove #ident
+
+ python/vtemodule.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit b58bc5359085d2c9233ac6d6a265645bfa217e82
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Mar 31 14:05:10 2010 -0400
+
+    Bug 602596 - Cursor can become invisible
+    
+    Always compute the full fore/back color first, then reverse.
+    That's what xterm does also.
+
+ src/vte.c |   11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 492f6a7d6dbb30b2dee2d3b4ee0cd7f9a3bb7f60
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:42:41 2010 +0200
+
+    Also generate type builtins from vtedeprecated.h
+
+ src/Makefile.am |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d4d0df68fb76fc145d05c2d6c1a7354e1737cffa
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:34:31 2010 +0200
+
+    Remove obsolete FIXME comment
+
+ src/pty.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 80ea6ee57d8d80a2876edf626e797e738c8419ad
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:33:15 2010 +0200
+
+    Reindent code after removing extra block
+
+ src/pty.c |   46 +++++++++++++++++++++++-----------------------
+ 1 files changed, 23 insertions(+), 23 deletions(-)
+
+commit d75b77aaccf81e56077525d9aba45bd1a59da2d8
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:31:29 2010 +0200
+
+    Remove "utf-8" property on VtePty
+    
+    It doesn't make much sense.
+
+ src/pty.c |   36 +++---------------------------------
+ 1 files changed, 3 insertions(+), 33 deletions(-)
+
+commit 840e598b685e5d6bd7b7f73b3b972c99ca933bbd
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:29:16 2010 +0200
+
+    Make vte_pty_set_utf8 return a GError on failure
+
+ src/pty.c    |   56 +++++++++++++++++++++++++++++++++++++++-----------------
+ src/vte.c    |    9 +++++++--
+ src/vtepty.h |    5 +++--
+ 3 files changed, 49 insertions(+), 21 deletions(-)
+
+commit 63a407a1f8c4f77fc8cdf3b8d404dca154a5b686
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:12:07 2010 +0200
+
+    Remove FIXME
+
+ src/pty.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 13f08f861f96bf2c695ce2486729bf54df5e946d
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:11:34 2010 +0200
+
+    Reindent after removing unnecessary block
+
+ src/pty.c |  129 ++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 64 insertions(+), 65 deletions(-)
+
+commit 1665665bc4b66fe6e8b25466cf4768f026741212
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:10:15 2010 +0200
+
+    Don't leak a FD on error
+
+ src/pty.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 85d92cf07482ab861173d5516319284b8173c801
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 21:02:20 2010 +0200
+
+    Remove obsolete warning message
+    
+    We now report back a GError which is much better than spewing random
+    stuff to the console.
+
+ src/pty.c |   11 -----------
+ 1 files changed, 0 insertions(+), 11 deletions(-)
+
+commit b6741eec1a280a590b20682e65e41ad65b84c50f
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 20:58:43 2010 +0200
+
+    Preserve errno since the deprecated API might use it
+
+ src/pty.c |   12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 9ce477c70120a2a24c32bcacebc28b6e09a63957
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Mar 30 20:55:47 2010 +0200
+
+    Don't allow setting negative row/column size
+
+ src/pty.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 8b6da8a26641ec84a6b0475d12e2b05952bf0cec
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Mar 29 14:17:45 2010 +0200
+
+    Update lt versioning
+
+ configure.in |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 5a472756b10dc8b683fc0372d97fb69ea4ff2256
+Author: Jamil Ahmed <itsjamil gmail com>
+Date:   Sun Mar 28 00:31:22 2010 +0600
+
+    Updated Bengali translation
+
+ po/bn.po |  127 +++++++++++++++++++++++++++++--------------------------------
+ 1 files changed, 60 insertions(+), 67 deletions(-)
+
+commit 8c1473f646bffffbc18c2473f6f1e80b9287a4b8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Mar 26 16:52:17 2010 -0400
+
+    Bug 614048 - Never change active selection to a column block
+    
+    Only activate block selection if ctrl was pressed when selection was started.
+
+ src/vte.c |   42 +++---------------------------------------
+ 1 files changed, 3 insertions(+), 39 deletions(-)
+
+commit 26771370d12c58d5876aa7e0d8b7c6acd2698189
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Mar 25 14:16:55 2010 +0100
+
+    Use the set column/row size even when we don't have a PTY
+    
+    Bug #317158.
+
+ src/vte.c |   23 +++++------------------
+ 1 files changed, 5 insertions(+), 18 deletions(-)
+
+commit f116be136c0111d3ff1ea7a8c89233bd00fd5140
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Mar 25 13:59:32 2010 +0100
+
+    Add more conditionals
+    
+    Only use these signals if they're defined. Taken from the patch in
+    bug #369310.
+
+ src/pty.c |   20 ++++++++++++++++++++
+ 1 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 1e684a5156f770c6238ef02e15b5d8713f43638d
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 21:38:32 2010 +0100
+
+    Add GError param to vte_pty_new_foreign
+
+ src/pty.c    |   22 +++++++++-------------
+ src/vte.c    |    5 +++--
+ src/vtepty.h |    3 ++-
+ 3 files changed, 14 insertions(+), 16 deletions(-)
+
+commit 47ddb37d3e6900a456a6739ceb6f03ab96f7c1b0
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 21:29:11 2010 +0100
+
+    Preserve errno
+
+ src/pty.c |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit bd66b79ef8395e9ffe177e82aff20bf5de6f79e5
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 21:26:23 2010 +0100
+
+    Don't leak a FD when starting the PTY helper fails
+
+ src/pty.c |    8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 28b4c114ab963aa526a27853fd16e311f5bfc171
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 15:46:41 2010 +0100
+
+    Return error when compiled without g-p-h and no-fallback flag used
+
+ src/pty.c |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit da94ec83debfbf19e36fec9aea15f619803cee70
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 15:21:49 2010 +0100
+
+    Preserve errno for the _vte_pty_* compat API
+
+ src/pty.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit c7070697b5363714462c7450448475918ffac0a3
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 15:18:53 2010 +0100
+
+    More error handling
+
+ src/pty.c |   28 +++++++++++++++++++++++-----
+ 1 files changed, 23 insertions(+), 5 deletions(-)
+
+commit 1e2b9d17dcbfd530e925a9896d106ca4885e0911
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 14:57:33 2010 +0100
+
+    Better error reporting
+
+ src/pty.c |   24 ++++++++++++++----------
+ 1 files changed, 14 insertions(+), 10 deletions(-)
+
+commit d08ab3e5641e6f486e1918d32566bec104924698
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 14:15:08 2010 +0100
+
+    Prevent single inclusion of vtedeprecated.h
+
+ src/vte.h           |    2 ++
+ src/vtedeprecated.h |    4 ++++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 8d263ba855ca6cbf741fc9cdfc921963be63991c
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 14:10:47 2010 +0100
+
+    Move deprecated stuff out of vte.h
+    
+    ... and into vtedeprecated.h. This way it won't end up in the GIR.
+
+ src/Makefile.am     |    3 +-
+ src/vte.h           |   78 ++----------------------------------------
+ src/vtedeprecated.h |   93 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 99 insertions(+), 75 deletions(-)
+
+commit 4ad049abbad52836542551953c4072ae08d7ceea
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 24 14:05:04 2010 +0100
+
+    Improve error messages
+    
+    Get more specific error messages telling what exactly went wrong.
+
+ src/pty.c |   77 +++++++++++++++++++++++++++++++++++++++++-------------------
+ 1 files changed, 52 insertions(+), 25 deletions(-)
+
+commit 52ec2582e509940ec48215c03d120ec2ace46076
+Author: Badral Sanligiin <badral openmn org>
+Date:   Tue Mar 23 02:34:11 2010 +0100
+
+    Updated Mongolian translation
+
+ po/mn.po |  100 +++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 51 insertions(+), 49 deletions(-)
+
+commit 5cd582723d55a487d8117adbae28f7bf0fd76da3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Mar 21 22:26:59 2010 -0400
+
+    Bug 613528 - computed size is wrong with low width and height values in vte_terminal_size_allocate
+
+ src/vte.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 087f18c041175fe73b187ee4f1ad89a2aa53bbff
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Mar 18 20:27:30 2010 +0100
+
+    Move deprecated stuff to the end
+
+ src/vte.h |   46 ++++++++++++++++++----------------------------
+ 1 files changed, 18 insertions(+), 28 deletions(-)
+
+commit 8f67e5d4b0ad71d512d47082b46fe353efff1601
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Mar 18 13:24:50 2010 +0100
+
+    Add PTY flags option to vteapp
+    
+    So I can test the PTY implementation.
+
+ src/vteapp.c |   42 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 41 insertions(+), 1 deletions(-)
+
+commit 75594032397e16e7f6b34ca89fe506c16f011bda
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Mar 18 00:21:24 2010 +0100
+
+    Remove unnecessary include
+
+ src/vte.h    |    2 ++
+ src/vtepty.h |    2 --
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 6ed5d3120d575531a5e25594785310ddaf28d330
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 22:59:43 2010 +0100
+
+    Docs update
+
+ src/vte.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit cb7b31e70e34b7af4162fd28b947678c31609819
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 22:37:41 2010 +0100
+
+    Work harder to preserve errno
+
+ src/pty.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit fb2739a358ae8f4775150f54745e16be698775db
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 22:34:16 2010 +0100
+
+    Use errsv here instead of errno
+
+ src/pty.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7f0db06fc886d8a98ea171d775ee8293554ab704
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 21:54:46 2010 +0100
+
+    Use G_SPAWN_SEARCH_PATH in vteapp's --command
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e1b7915a6cb88da609f2c9a7c754ff75aa260d88
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 21:23:40 2010 +0100
+
+    Add introspection
+    
+    Based on a patch by Johan Dahlin from bug #604837.
+
+ Makefile.am     |    2 +-
+ configure.in    |   11 +++++++++++
+ src/Makefile.am |   33 +++++++++++++++++++++++++++++++++
+ 3 files changed, 45 insertions(+), 1 deletions(-)
+
+commit eb412ad588f9796bdeb63f3cfddf419cd99b28e3
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 21:23:27 2010 +0100
+
+    Remove removed pty test
+
+ src/Makefile.am |    5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+commit 74b824a278cc884be462855f148bcc8b349f2d46
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 19:19:22 2010 +0100
+
+    Use inner-border property
+    
+    Replace deprecated vte_terminal_get_padding() with "inner-border" style
+    property.
+
+ src/vteaccess.c |   18 +++++++++----
+ src/vteapp.c    |   72 +++++++++++++++++++++++++++++++++---------------------
+ 2 files changed, 56 insertions(+), 34 deletions(-)
+
+commit 8cc30010ef4e8d67bf3bba68a7c45e47992b35ac
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 19:03:19 2010 +0100
+
+    Rename VTE_SEAL to _VTE_SEAL
+    
+    So that gtk-doc doesn't think this macro should be documented.
+
+ src/vte.h |   90 ++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 45 insertions(+), 45 deletions(-)
+
+commit cc1431c5cc8f12252a3ebeb17da273d6edfe1c56
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 19:01:13 2010 +0100
+
+    Seal VteTerminal
+    
+    All of these public fields have accessors already.
+
+ src/vte.h |   30 +++++++++---------------------
+ 1 files changed, 9 insertions(+), 21 deletions(-)
+
+commit 15221b3505dc9a7ee9eec63e9d3d040a211aca60
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 18:50:22 2010 +0100
+
+    Deprecated VteTerminalClass::*_signal
+    
+    These signal IDs are useless. If someone is interested in the signal ID,
+    they can just use g_signal_lookup().
+
+ src/vte.h |   70 ++++++++++++++++++++++++++++--------------------------------
+ 1 files changed, 33 insertions(+), 37 deletions(-)
+
+commit 106081e2d1875d893e598a4d20bfab266b6a764e
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 18:40:49 2010 +0100
+
+    Add VTE_SEAL and VTE_DEPRECATED macros
+
+ src/vte.h |   15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 4c07ce73bef1f253075c382d0e55cc526df7222a
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Jan 30 14:15:37 2010 +0100
+
+    Add index for new API in 0.26
+
+ doc/reference/vte-docs.xml |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit e45144f8a70244da43723349b09d9edf5f9d8d1f
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Jan 30 14:14:19 2010 +0100
+
+    Update version in API docs for new/deprecated APIs
+
+ src/pty.c    |   40 ++++++++++++++++++++--------------------
+ src/vte.c    |   24 ++++++++++++------------
+ src/vtepty.h |    6 +++---
+ 3 files changed, 35 insertions(+), 35 deletions(-)
+
+commit dd08c50c6a6dd4349d3cbce271ddf4b741db8861
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Jan 14 18:08:33 2010 +0100
+
+    Add VtePty and adapt the VteTerminal APIs to it
+    
+    Add VtePty as a GObject holding the info about the PTY. Add new API to
+    VteTerminal to set a VtePty, and deprecate the old API that takes a FD
+    to the PTY. Also deprecate the whole of the undocumented _vte_pty_*()
+    APIs.
+    
+    Add vte_terminal_fork_command_full() variant that allow providing a
+    custom child setup function and that returns a GError on failure.
+    
+    Bug #585841, bug #320128, bug #514447, bug #588871.
+
+ Makefile.am                    |    2 +-
+ doc/reference/vte-docs.xml     |    3 +
+ doc/reference/vte-sections.txt |   50 ++-
+ doc/reference/vte.types        |    5 +-
+ gnome-pty-helper/configure.in  |    5 +-
+ src/Makefile.am                |   14 +-
+ src/pty.c                      | 1652 ++++++++++++++++++++++++++++++----------
+ src/pty.h                      |    6 +-
+ src/vte-private.h              |    3 +-
+ src/vte.c                      |  775 +++++++++++++------
+ src/vte.h                      |   40 +-
+ src/vteapp.c                   |   32 +-
+ src/vtepty-private.h           |   43 +
+ src/vtepty.h                   |  121 +++
+ 14 files changed, 2058 insertions(+), 693 deletions(-)
+
+commit 9103412cc7c3706f246a1e382af7361f6319c104
+Author: Christian Persch <chpe gnome org>
+Date:   Wed Mar 17 18:21:39 2010 +0100
+
+    Post branch version bump
+
+ configure.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 953625f24173318ba1a553866a9b8c7cb83aac01
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Mar 13 00:02:57 2010 -0500
+
+    [git.mk] Update from pango
+
+ git.mk |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit bcb4b775af73cf9da76a79083cd446122bd5c97f
+Author: Marek Černocký <marek manet cz>
+Date:   Sat Mar 6 19:14:08 2010 +0100
+
+    Update Czech translation
+
+ po/cs.po |  102 +++++++++++++++++++++++++++++---------------------------------
+ 1 files changed, 48 insertions(+), 54 deletions(-)
+
+commit 41c42c121b89eeb6c73b6deb9c71c4661f12a858
+Author: Piotr Drąg <piotrdrag gmail com>
+Date:   Thu Feb 25 13:47:36 2010 +0100
+
+    Updated Polish translation
+
+ po/pl.po |  152 +++++++++++++++++--------------------------------------------
+ 1 files changed, 43 insertions(+), 109 deletions(-)
+
+commit 17c16e6babd0be2a40cf2faa745295c9b47b6655
+Author: Fran Diéguez <frandieguez ubuntu com>
+Date:   Mon Feb 15 17:19:27 2010 +0100
+
+    Updated Galician Translation
+
+ po/gl.po |   60 +++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 31 insertions(+), 29 deletions(-)
+
+commit 11c0cd96e0614a96aebc0bc64e3c9a9fe357c4e3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 26 14:39:18 2010 -0500
+
+    Improve debug message
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5f4f67f579c9530af716573d6aaafc9cdb060e09
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Tue Jan 12 10:57:45 2010 -0500
+
+    vtebg: Cache backgrounds as cairo surfaces
+
+ src/vtebg.c   |  385 +++++++++++++++++----------------------------------------
+ src/vtebg.h   |   15 ++-
+ src/vtedraw.c |   33 ++----
+ 3 files changed, 134 insertions(+), 299 deletions(-)
+
+commit d8e791be89f38e168faf078268be8bdee4a6715d
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Jan 14 18:42:06 2010 +0100
+
+    Modernise the API docs
+    
+    Update to gtk-doc 0.13. Drop tmpl use, use <xi:include>, add object
+    hierarchy, index, deprecated symbols index, and indices for new symbols
+    in 0.20 and 0.24.
+
+ autogen.sh                         |    3 +-
+ configure.in                       |    9 +-
+ doc/reference/Makefile.am          |  163 ++++--
+ doc/reference/tmpl/internals.sgml  |   20 -
+ doc/reference/tmpl/pty.sgml        |   18 -
+ doc/reference/tmpl/reaper.sgml     |   25 -
+ doc/reference/tmpl/vte-unused.sgml |  516 ---------------
+ doc/reference/tmpl/vte.sgml        | 1287 ------------------------------------
+ doc/reference/tmpl/vteaccess.sgml  |   37 -
+ doc/reference/tmpl/vteversion.sgml |   59 --
+ doc/reference/version.xml.in       |    1 +
+ doc/reference/vte-docs.sgml        |   25 -
+ doc/reference/vte-docs.xml         |  127 ++++
+ doc/reference/vte-sections.txt     |   70 +-
+ doc/reference/vte.types            |   12 +-
+ src/reaper.c                       |   26 +
+ src/reaper.h                       |    8 +
+ src/vte.c                          |   32 +-
+ src/vte.h                          |   98 +++-
+ src/vteaccess.c                    |   10 +-
+ src/vteaccess.h                    |   52 +-
+ src/vteversion.h.in                |   47 ++
+ 22 files changed, 524 insertions(+), 2121 deletions(-)
+
+commit e8594f159ef206bbd357db6bf28f659eccfefc9a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 20:32:09 2010 -0500
+
+    Release 0.23.5
+
+ NEWS         |    4 ++++
+ configure.in |    6 +++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 08ee96f50c5053721c31a1eefa05bd6e92a368a7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 20:21:38 2010 -0500
+
+    Release 0.23.4
+
+ NEWS         |    5 +++++
+ configure.in |    6 +++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+commit d9f1a47a2f14dd0404a7fc9bab7b24a3916922e8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 19:48:59 2010 -0500
+
+    [doc] Update list of symbols
+
+ doc/reference/tmpl/vte.sgml    |   45 +++++++++++++-----
+ doc/reference/vte-sections.txt |  105 +++++++++-------------------------------
+ src/vte.c                      |    2 +-
+ 3 files changed, 57 insertions(+), 95 deletions(-)
+
+commit ce4f4bc7e0157ff3fc3ce03ce7efb7ba5d4f9bd0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 19:41:12 2010 -0500
+
+    [doc] Update list of header files
+
+ doc/reference/Makefile.am |   18 ++++++------------
+ 1 files changed, 6 insertions(+), 12 deletions(-)
+
+commit 13000e1938ef4c0968f03503e892b939acfec3e2
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 19:40:49 2010 -0500
+
+    Fix doc typo
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 38b6a46d413247d7acda50f7729048c635ffe23b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 19:33:34 2010 -0500
+
+    [ring] Only write_contents() the part of history that fits in the num rows
+
+ src/ring.c           |   12 ++++++++++--
+ src/vtestream-base.h |   12 +++++++++---
+ src/vtestream-file.h |   19 +++++++++++++++----
+ src/vtestream.h      |    4 +++-
+ 4 files changed, 37 insertions(+), 10 deletions(-)
+
+commit 9d18ff3de3ff4ca36570d6872a079b8cd09d889d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 19:33:21 2010 -0500
+
+    [app] Fix signal connection
+
+ src/vteapp.c |   30 +++++++++++++-----------------
+ 1 files changed, 13 insertions(+), 17 deletions(-)
+
+commit f7920a159918b81286d5345ed83a7b5ce2c5668f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 18:13:30 2010 -0500
+
+    Initial implementation of vte_terminal_write_contents()
+    
+    Currently is buggy in that it writes parts of history still in the ring but
+    before set number of history lines.  Fix coming.
+
+ configure.in         |    5 +--
+ src/Makefile.am      |    4 +-
+ src/ring.c           |   64 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/ring.h           |   12 ++++++++-
+ src/vte.c            |   38 +++++++++++++++++++++++++++++-
+ src/vte.h            |   19 +++++++++++++-
+ src/vteapp.c         |   55 +++++++++++++++++++++++++++++++-----------
+ src/vtestream-base.h |   10 +++++++-
+ src/vtestream-file.h |   31 +++++++++++++++++++++++-
+ src/vtestream.c      |    7 ++---
+ src/vtestream.h      |    4 ++-
+ 11 files changed, 217 insertions(+), 32 deletions(-)
+
+commit 2e612fbb78b5a30ca57c4721743dc4d1a3f2884a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 16:43:16 2010 -0500
+
+    [ring] Don't xor attrs with basic_attrs
+    
+    Before we did that to better handle failed reads.  Now we explicitly handle
+    read failure, so no need to do it anymore.
+
+ src/ring.c |   12 +++---------
+ 1 files changed, 3 insertions(+), 9 deletions(-)
+
+commit 3ea88f06dbe753cf1884000354f6555be92af1e8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 12:19:59 2010 -0500
+
+    Release 0.23.3
+
+ NEWS         |    8 ++++++++
+ configure.in |    4 ++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 598d7ef7300d94888068a89eaf02f80e4a0a27be
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Jan 13 12:09:14 2010 -0500
+
+    Disable deprecation stuff since they were broken
+    
+    Needs proper fixing later.
+
+ configure.in |   40 ++++++++++++++++++++--------------------
+ 1 files changed, 20 insertions(+), 20 deletions(-)
+
+commit 38b2a632d1a1e86fee82eb460201fb3d3b547ab3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 03:12:13 2010 -0500
+
+    [draw] Rename a bit
+
+ src/vtedraw.c |   27 +++++++++++++--------------
+ 1 files changed, 13 insertions(+), 14 deletions(-)
+
+commit 7d9f0294f6ea52bb2525863350fbbac12f9d1459
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 03:09:45 2010 -0500
+
+    [draw] Update comments
+
+ src/vtedraw.c |   13 ++++++-------
+ 1 files changed, 6 insertions(+), 7 deletions(-)
+
+commit c36b81bbee7addf15cf57ca8401ac9245affe678
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:47:25 2010 -0500
+
+    Fix debug info
+
+ src/vte.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 5311d24f0382fbfaac117a46b45f1163f370bfbd
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:44:16 2010 -0500
+
+    Fix deprecation enabling logic
+
+ configure.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 884527cf0a37728d53cff21d0ce4f07911f2049e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:39:33 2010 -0500
+
+    Bug 534526 - Flickering when resizing a vte widget
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c31361e5ef7a255e4ce96fa884bf71daafc86dbe
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:31:13 2010 -0500
+
+    Use PangoColor to unify mixed use of GdkColor and vte_palette_entry
+
+ src/vte-private.h |    6 +--
+ src/vte.c         |   97 +++++++++++++++++++----------------------------------
+ src/vtebg.c       |   12 +++---
+ src/vtebg.h       |    2 +-
+ src/vtedraw.c     |   14 ++++----
+ src/vtedraw.h     |   10 +++---
+ 6 files changed, 56 insertions(+), 85 deletions(-)
+
+commit 1608eb418aeb23c7fd27814ba7148ae2708c8017
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:08:51 2010 -0500
+
+    Add const to GdkColor
+
+ src/vtedraw.c |   10 +++++-----
+ src/vtedraw.h |    8 ++++----
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+commit 3c4380448abf647fe7ff93745c9def5f5e2ec326
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 02:07:47 2010 -0500
+
+    Draw rectangles in one shot
+
+ src/vte.c     |   22 ++++++++++++----------
+ src/vtedraw.c |    4 ++--
+ 2 files changed, 14 insertions(+), 12 deletions(-)
+
+commit 1ad50e4873fe5c9029e7ea2ad9dc554bce2edfb9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 01:54:54 2010 -0500
+
+    Cleanup cursor drawing
+
+ src/vte.c |   41 +++++++++++++++--------------------------
+ 1 files changed, 15 insertions(+), 26 deletions(-)
+
+commit 146b8bc6e2acd34fec8f98a3946f1b1e9e316a21
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 01:36:52 2010 -0500
+
+    [draw] Cleanup ->started counting
+
+ src/vtedraw.c |   18 ++++++++----------
+ 1 files changed, 8 insertions(+), 10 deletions(-)
+
+commit 8ab0bb6d55824b7a7728d7e5d4dd782785b21540
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jan 12 01:10:45 2010 -0500
+
+    Reorder code such that screen can never be NULL
+
+ src/vte.c |   45 +++++++++++++++++++++------------------------
+ 1 files changed, 21 insertions(+), 24 deletions(-)
+
+commit 3b5c1662f9215d66a56506a3858b14ed03d5061b
+Merge: 422519d 021e4a5
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Jan 6 10:54:16 2010 -0500
+
+    Merge branch 'backend-cleanup'
+
+commit 422519de06c76c89a6df5cea7c344a1d32c4b856
+Author: Xandru Armesto Fernandez <xandru softastur org>
+Date:   Mon Jan 4 09:38:52 2010 +0100
+
+    Added asturian language
+
+ po/LINGUAS |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 1483c1ca64cfdebf893ef16c225b3395595d4436
+Author: Xandru Armesto Fernandez <xandru softastur org>
+Date:   Mon Jan 4 09:38:32 2010 +0100
+
+    Updated asturian language
+
+ po/ast.po |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 95 insertions(+), 0 deletions(-)
+
+commit 4db015d59e80a992c86827e612e06c7df1c901f0
+Author: Josh Triplett <josh joshtriplett org>
+Date:   Mon Dec 28 03:22:48 2009 +0100
+
+    Bug 605299 - Please support xterm bracketed paste mode
+
+ src/vte-private.h |    1 +
+ src/vte.c         |    6 ++++++
+ src/vteseq.c      |    5 +++++
+ 3 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 021e4a5082c46ffdf6998beaacca948749079b15
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 12:18:32 2009 -0500
+
+    Pass rgba as doubles to _vte_draw_set_background_solid()
+
+ src/vte.c     |   27 ++++++++++-----------------
+ src/vtedraw.c |   14 ++++++++------
+ src/vtedraw.h |    6 ++++--
+ 3 files changed, 22 insertions(+), 25 deletions(-)
+
+commit 0edf9e87b374488c502c9c8157f07fcf64692593
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 11:28:36 2009 -0500
+
+    Drop _vte_draw_get_visual() and _vte_draw_get_colormap()
+
+ src/vte.c     |    5 ++---
+ src/vtedraw.c |   26 +-------------------------
+ src/vtedraw.h |    7 -------
+ 3 files changed, 3 insertions(+), 35 deletions(-)
+
+commit a7ce6af6a780f95d2725f3084808c0d09745e566
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 11:11:48 2009 -0500
+
+    Make struct struct _vte_draw private to vtedraw.c
+    
+    Merge in struct _vte_pangocairo_data.
+
+ src/vtedraw.c |  174 +++++++++++++++++++++++----------------------------------
+ src/vtedraw.h |   11 ----
+ 2 files changed, 71 insertions(+), 114 deletions(-)
+
+commit c7c5b1ee0c31736b2a02634da9822d1988e5fdfc
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 11:06:27 2009 -0500
+
+    Make _vte_draw_start() recursive
+
+ src/vte.c     |   10 ++--------
+ src/vtedraw.c |   14 ++++++++------
+ src/vtedraw.h |    2 +-
+ 3 files changed, 11 insertions(+), 15 deletions(-)
+
+commit 7676930c7e1bddd33455a6421fc335027ba50891
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 10:31:08 2009 -0500
+
+    Merge vtepangocairo.c into vtedraw.c
+
+ src/Makefile.am     |    1 -
+ src/vtedraw.c       | 1218 ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/vtepangocairo.c | 1232 ---------------------------------------------------
+ 3 files changed, 1210 insertions(+), 1241 deletions(-)
+
+commit 77ea73bf2ae87c35fe24b49af61d9e6b58e2c551
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 10:26:59 2009 -0500
+
+    Drop struct _vte_draw_impl
+
+ src/Makefile.am     |    3 --
+ src/vtedraw.c       |   14 +-------
+ src/vtedraw.h       |   44 --------------------------
+ src/vtepangocairo.c |   41 +++---------------------
+ src/vtepangocairo.h |   33 -------------------
+ src/vteskel.c       |   86 ---------------------------------------------------
+ src/vteskel.h       |   33 -------------------
+ 7 files changed, 8 insertions(+), 246 deletions(-)
+
+commit 58689c06e1d15d645c1181f0f8288fefa52f967e
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 10:20:50 2009 -0500
+
+    Merge pangocairo draw into remaining vte_draw functions
+
+ src/vtedraw.c       |  233 --------------------------------------------------
+ src/vtepangocairo.c |  236 +++++++++++++++++++++++++++++++++++---------------
+ 2 files changed, 165 insertions(+), 304 deletions(-)
+
+commit 02e5dd66a5bd4bbaa8a0c4bab46c1341af3d9f36
+Author: Kristian Høgsberg <krh bitplanet net>
+Date:   Wed Dec 23 09:50:10 2009 -0500
+
+    Make _vte_draw_new always create a pangocairo implementation
+
+ src/vtedraw.c       |  121 ---------------------------------------------------
+ src/vtepangocairo.c |   36 +++++++++++++---
+ 2 files changed, 30 insertions(+), 127 deletions(-)
+
+commit 718b6f1d1707a4397098cab0ec3bc4980cb7d1bf
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Dec 22 15:27:01 2009 +0100
+
+    Release 0.23.2
+
+ NEWS         |   16 ++++++++++++++++
+ configure.in |    6 +++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+commit 7f017f27ff254995c1ad4fbe4947b929c4c6046f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Dec 19 13:50:04 2009 +0100
+
+    Bug 604966 - Fix "select all" to include text occurring after the visible region
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 3c99618132e8f5924f7a865ce595593889000211
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Dec 15 00:30:37 2009 -0500
+
+    Fix overflow with unlimited scrollback lines
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 31ba6a0a615c9b5d61bb335f756c7c02e701ef5e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Dec 9 01:29:27 2009 -0500
+
+    Bug 604135 - [PATCH] fix behaviour of set-scrolling-region
+
+ src/vteseq.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit fa070a0ebdfab5e33e550e4561179498752a29c6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Dec 9 00:57:01 2009 -0500
+
+    Bug 603733 - Remove deprecated Glib symbol
+    
+    Require glib >= 2.22.0
+
+ configure.in |    2 +-
+ src/vtetc.c  |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 47406a81f737f6f01fd148ab004de4eac641d571
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Dec 3 13:26:25 2009 -0500
+
+    Bug 603713 - ibeam/underline cursor broken with large inner-border
+
+ src/vte.c |   46 +++++++++++++++++-----------------------------
+ 1 files changed, 17 insertions(+), 29 deletions(-)
+
+commit e72d7ed4da9d065afc494da304741ca5484b1f9b
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Dec 3 18:35:50 2009 +0100
+
+    vteapp: Fix --cursor-shape thinko
+
+ src/vteapp.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7d755a30393124319d3406efb98a5f612538501b
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Dec 3 18:32:35 2009 +0100
+
+    vteapp: Add --cursor-shape option
+    
+    Use --cursor-shape=block|ibeam|underline to test cursor shapes.
+
+ src/vteapp.c |   15 ++++++++++++++-
+ 1 files changed, 14 insertions(+), 1 deletions(-)
+
+commit f100847c373f8bfd881d0c9dae213c312334578c
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Dec 1 16:01:01 2009 +0100
+
+    Fix deprecation versions
+
+ src/vte.c |   58 +++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 29 insertions(+), 29 deletions(-)
+
+commit bbb00399fce8008fee378d31aa18a6b7c89d6c2b
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Dec 1 15:59:12 2009 +0100
+
+    Fix deprecation version of vte_terminal_get_padding
+    
+    It's 0.24, not 0.22.
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a34ea6198748e1621b8f148d81b424ca5312f818
+Author: Christian Persch <chpe gnome org>
+Date:   Tue Dec 1 00:21:43 2009 +0100
+
+    Deprecate vte_terminal_get_padding
+    
+    Part of bug #471920.
+
+ src/vte.c |   13 ++++++++++++-
+ src/vte.h |    2 ++
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 25a0fa44c92044b51296be94b9e1680d83270adc
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Nov 30 23:32:33 2009 +0100
+
+    Replace VTE_PAD_WIDTH with inner-border
+    
+    Part of bug #471920.
+
+ src/vte-private.h |    1 -
+ src/vte.c         |  123 ++++++++++++++++++++++++++++-------------------------
+ src/vteseq.c      |   39 +++++++++++------
+ 3 files changed, 91 insertions(+), 72 deletions(-)
+
+commit a327292cbb073e7fb1a1298f614f980447f474fe
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Nov 30 23:06:01 2009 +0100
+
+    Add VteTerminal::inner-border style property
+    
+    Part of bug #471920.
+
+ doc/reference/tmpl/vte.sgml |    5 ++++
+ src/vte-private.h           |    3 ++
+ src/vte.c                   |   51 ++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 58 insertions(+), 1 deletions(-)
+
+commit 320902d84b99c58ab7d6ae82b65bb1311288fe75
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Nov 30 22:46:53 2009 +0100
+
+    Remove early return from style-set on non-realized widget
+    
+    vte_terminal_set_font_full_internal copes just fine with this.
+
+ src/vte.c |    6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+commit 66d729e0b6d84d7cce204d5a3c9b8e6b98087f07
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Nov 30 22:39:55 2009 +0100
+
+    Chain up to style-set on parent class
+
+ src/vte.c |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit e42c9ce6035d1b38dce3ad815f1241c8d658acf2
+Author: Adi Roiban <adi roiban ro>
+Date:   Fri Nov 27 04:41:22 2009 +0200
+
+    Update Romanian translations
+
+ po/ro.po |   35 ++++++++++++++++-------------------
+ 1 files changed, 16 insertions(+), 19 deletions(-)
+
+commit e25247345d6c075a131a90cb2c65471811a89c64
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Nov 22 15:24:28 2009 -0500
+
+    [interpret] Make the interpret app interactive
+
+ src/interpret.c |  147 ++++++++++++++++++++++++++++---------------------------
+ 1 files changed, 75 insertions(+), 72 deletions(-)
+
+commit 91448540f68235c7e1975fa604842b7872bc0f7a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Nov 9 19:53:08 2009 -0500
+
+    Bug 601265 -  gnome-terminal assert failure: table.c:723:_vte_table_match
+    
+    Fix handling of %% in termcap strings.
+    Remove the assertion.
+
+ src/table.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 59d08fab676cccbed8df7f8e9d9a39bab6e5413d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Nov 9 19:04:46 2009 -0500
+
+    Fix warnings
+
+ src/iso2022.c |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 7556c58a6f21f846b97351ee2002e0b1d9236824
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Nov 9 18:55:16 2009 -0500
+
+    Handle destroying NULL termcap
+
+ src/vtetc.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit bdc0cca890297a44c86395e27ee51cdfef5f3961
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Nov 9 18:52:47 2009 -0500
+
+    Comment out unused code
+
+ src/caps.c |    2 ++
+ src/caps.h |    3 ---
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 2035eb905aed8905e44781f3f64786fc84cd51c7
+Author: Peteris Krisjanis <pecisk gmail com>
+Date:   Sun Nov 8 20:36:09 2009 +0200
+
+    Updated Latvian translation.
+
+ po/lv.po |  119 ++++++++++++++++++++++++++++++--------------------------------
+ 1 files changed, 58 insertions(+), 61 deletions(-)
+
+commit 9120f5ebfb9da0d74698f187ebb3046877b48c19
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Nov 8 12:04:16 2009 -0500
+
+    Revert "Bug 591648 - Don't clear the screen when switching to the alternate screen"
+    
+    This reverts commit c6d9bf421f12911298d921314ced64661f6b63bd.
+    That commit introduced issues with less.   Xterm doesn't have those
+    problems.  Need to figure out what's going on  before committing this
+    again.
+
+ src/vteseq.c |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit d45fdfa66452427ddf2a28fcaff148b0ead9d815
+Author: Thomas Thurman <tthurman gnome org>
+Date:   Sun Nov 1 15:46:08 2009 -0500
+
+    Shavian translation
+
+ po/LINGUAS    |    1 +
+ po/en shaw po |   90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 91 insertions(+), 0 deletions(-)
+
+commit be0f71823453ef07b6a8c4b6072bdd6b772c74b1
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Oct 29 18:59:52 2009 +0100
+
+    Use right modifier to printf gulong
+    
+    Fixes a compiler warning.
+
+ src/ring.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 16db4039b0ea75454c6d51c1a685f3c9d16ffb11
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 20:15:21 2009 -0400
+
+    Released 0.23.1
+
+ NEWS         |   25 +++++++++++++++++++++++++
+ configure.in |   10 +++++-----
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+commit a91d1adf8cbc3bf9755d1c211f490366ac47782c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 19:54:28 2009 -0400
+
+    Handle out-of-history remove's gracefully
+    
+    They happen at times of resizing the terminal, etc.
+    
+    Bug 597604 - gnome-terminal assert failure:
+    Vte:ERROR:/build/buildd/vte-0.22.0/./src/ring.c:530:_vte_ring_remove:
+    assertion failed: (_vte_ring_contains (ring, position))
+
+ src/ring.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit c621a6e8c4beffb2faf70404b843cf93def8cc1b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 19:54:08 2009 -0400
+
+    [ring] Remove one assertion
+    
+    Better dealing with corrupt history file, etc.
+
+ src/ring.c |   10 +++++++---
+ 1 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 572f86ce2faf7532c30751e5c5f9893468550eba
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 19:53:33 2009 -0400
+
+    Cosmetic
+
+ src/vte.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit af5726e0c546f9a4914dd80c03e11e1aadc034f2
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 19:19:16 2009 -0400
+
+    Finish selection rework
+    
+    Bug 598124 - The selection does not only change when the mousebutton is released
+    
+    Only update selection when mouse-button is released (or focus lost).
+    Also, update PRIMARY when _select_all() is called.
+
+ src/vte.c |   27 +++++++++------------------
+ 1 files changed, 9 insertions(+), 18 deletions(-)
+
+commit de1bd5a05102d26f211d4f636aea2662c6b4e7fc
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Oct 26 17:01:55 2009 -0400
+
+    Bug 598090 - LMB Mouse up event not registered when opining context popup menu
+
+ src/vte.c |  101 ++++++++++++++++++++++++++++---------------------------------
+ 1 files changed, 46 insertions(+), 55 deletions(-)
+
+commit 471d90f670416fc2947b73637c549387eddb9435
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 21:01:49 2009 -0400
+
+    Bug 587463 - "select all"+copy from gnome-terminal includes lines no longer in scrollback
+    
+    Previously it used to include lines that have fallen out of the history
+    buffer.  Also, included one extra line at the end.
+
+ src/vte.c |   17 +++++++----------
+ 1 files changed, 7 insertions(+), 10 deletions(-)
+
+commit 370b72ba4759850b1fc9721d2afc0eb7b5383a5e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 20:54:26 2009 -0400
+
+    Bug 585370 - Incomplete disabling of python
+    
+    Don't install python support files if python is disabled.
+
+ python/Makefile.am |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit eb11c5a2e5ec98c3ce1643ecc1b0274eff490a7e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 20:49:47 2009 -0400
+
+    Bug 597242 - libvte color and cursor glitches
+    
+    Don't clear line when inserting smart tab
+
+ src/vteseq.c |   75 ++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 37 insertions(+), 38 deletions(-)
+
+commit c6d9bf421f12911298d921314ced64661f6b63bd
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 20:18:50 2009 -0400
+
+    Bug 591648 - Don't clear the screen when switching to the alternate screen
+
+ src/vteseq.c |    6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+commit 94c78423fca44652e9c837e00cf932e0cadb50de
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 20:12:14 2009 -0400
+
+    Bug 595445 - Motion notify events are not propagated to parent widget
+    
+    Propagate motion-notify event to parent if not selecting.
+
+ src/vte.c |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 03250451173cdc63aeb10f2f43ec7fe203082be1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 20:07:06 2009 -0400
+
+    Revert "Copy PRIMARY only on button release"
+    
+    This reverts commit ab66ce5ca7bc9948ffb5303156c3a2764656c3b7.
+    We need to fix bug 598090 before this can go in.
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit ab66ce5ca7bc9948ffb5303156c3a2764656c3b7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 19:43:06 2009 -0400
+
+    Copy PRIMARY only on button release
+    
+    Bug 598124 - The selection does not only change when the mousebutton is released
+
+ src/vte.c |    4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit 7f2f2f6622e253d6ae623c310bc0be9079ba9cc6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 19:12:26 2009 -0400
+
+    Bug 569184 - vte generates unnecessary ioctl(I_FIND) kernel warnings
+
+ src/pty.c |   26 ++++++++++++++------------
+ 1 files changed, 14 insertions(+), 12 deletions(-)
+
+commit efaf2668d21f53ada2884157fde91c0b61025fc7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 19:01:38 2009 -0400
+
+    Fix even more warnings.  We're mostly warning-clean now
+
+ src/pty.c       |    3 +--
+ src/vteaccess.c |    4 ++--
+ src/vtedraw.c   |    2 +-
+ 3 files changed, 4 insertions(+), 5 deletions(-)
+
+commit ac0722271e2f5e192e7be4000ba2ca7a2388954e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 18:54:59 2009 -0400
+
+    Fix more warnings
+
+ src/vte.c |   16 ++++++++--------
+ 1 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 592ba42cbfa3e9e948226bcef832e7fd30f5fae7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 18:37:42 2009 -0400
+
+    Interpret and document negative number of scrollback lines as infinite
+
+ src/vte.c |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 723aec79c9aa7c05b86278d0f304d0640ba9ee5e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Oct 23 18:19:40 2009 -0400
+
+    [ring] Use gulong instead of guint for row/col indices
+    
+    Bug 599444 - Scrollback index type mess
+
+ src/buffer.h      |    2 +-
+ src/ring.c        |   68 ++++++++++++++++++++++++++--------------------------
+ src/ring.h        |   34 +++++++++++++-------------
+ src/vte-private.h |    4 +-
+ src/vte.c         |   10 ++++---
+ src/vterowdata.c  |   20 +++++++-------
+ src/vterowdata.h  |   12 ++++----
+ 7 files changed, 76 insertions(+), 74 deletions(-)
+
+commit 3e523aa2db487828a332703461e84d6a2cf4ef04
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Oct 22 14:07:51 2009 -0400
+
+    Bug 598814 - text.getText(0, -1) triggers assertion in vteaccess.c
+
+ src/vteaccess.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b933212a00bf4f7437d5741b1eb9132d66b263fd
+Author: Nils-Christoph Fiedler <linux medienkompanie de>
+Date:   Thu Oct 22 20:07:03 2009 +0200
+
+    Updated Low German translation
+
+ po/nds.po |   28 ++++++++++++++--------------
+ 1 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 54f397c65855d015ffc71e646c55fb4b49208038
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Oct 22 00:20:59 2009 +0200
+
+    Ignore .pot files too
+
+ git.mk |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 90799855f499c4ab7dd66896bdde73ccc9e63253
+Author: Christian Persch <chpe gnome org>
+Date:   Mon Aug 31 18:26:45 2009 +0200
+
+    Use AM_V_GEN here too
+
+ git.mk |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit fa3508f4957a8cfb6f6f22ef904d5c89f9d54f4a
+Author: Benjamin Berg <benjamin sipsolutions net>
+Date:   Mon Oct 5 17:41:49 2009 +0200
+
+    Fix memory leaks in python bindings (bug #596739).
+
+ python/vte.override |  131 ++++++++++++++++++++++-----------------------------
+ 1 files changed, 56 insertions(+), 75 deletions(-)
+
+commit 7b30cf831aa9ae3e90ca99f016f11d6f6833ad2f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Oct 3 19:50:21 2009 -0400
+
+    Bug 597165 - void return in vte.c
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3c22f5997c7e11f371c606520daff279d9b613e4
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 29 14:54:30 2009 -0400
+
+    Bug 587894 - the environment passing with python does no longer work
+
+ python/vte.override |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 1fc66f918330a053b85080756d8be165eb9f2708
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 28 15:42:12 2009 -0400
+
+    Release 0.22.2
+
+ NEWS         |   10 ++++++++++
+ configure.in |    4 ++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit ea46cc66b0340dbe42b8b19b2691c824083ad033
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 28 14:25:42 2009 -0400
+
+    [a11y] Fix assertion failure
+    
+    Reported here:
+    https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/435646
+
+ src/vteaccess.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 470030991fc3107e04934b1d3aa54d4428be7e2f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 28 13:57:26 2009 -0400
+
+    Bug 596444 - word-select includes \n when the word ends at the edge of the terminal
+
+ src/vte.c |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit b7083d3cdbe31305de2fa2974919b3d105f9b740
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Sep 27 17:06:22 2009 -0400
+
+    Bug 596460 - 0.22.1 kills vte based apps
+    
+    Oops
+
+ src/vteseq.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3e1738a4b962dc339cddd66a4504b198ae80fe38
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 25 17:18:16 2009 -0400
+
+    Release 0.22.1
+
+ NEWS         |   10 ++++++++++
+ configure.in |    4 ++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit c87f6a7dc778bb75aa6defeceda3505028c0430e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 25 17:03:31 2009 -0400
+
+    [ring] Clear ring on _init
+
+ src/ring.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 73aba0352cd8034f69178459fc58347cedc74ec7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 25 16:55:08 2009 -0400
+
+    Bug 596365 - libvte crashes when issueing 'reset' in a terminal
+
+ src/vtestream-file.h |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+commit cc6df5b1ebeba74c8c96d897bb5e8400ba429407
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 25 16:50:04 2009 -0400
+
+    [stream] Fix warnings
+
+ src/vtestream-base.h |    4 ++--
+ src/vtestream-file.h |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 6bafc718f231bac266c663724334999dfebac16e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 24 23:15:07 2009 -0400
+
+    Bug 588033 - background tabs may lose lines off the bottom of the scrollback
+
+ src/vte.c |   33 ++++++++++++++++++---------------
+ 1 files changed, 18 insertions(+), 15 deletions(-)
+
+commit 3df8026931941ea6a5d41c932803f56ded862a00
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 24 15:26:49 2009 -0400
+
+    Minor
+
+ src/vte-private.h |    1 +
+ src/vte.c         |    7 ++++++-
+ src/vteseq.c      |   14 +++++++-------
+ 3 files changed, 14 insertions(+), 8 deletions(-)
+
+commit 58d0affa8eea77353ef47c53923cd82c4203fe1a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 24 15:22:30 2009 -0400
+
+    Bug 596163 - Doesn't display expected background color in ncurses apps
+    
+    Revert semantic change introduced in 08caf3b174e68ba3d02f04c2595ad552cd50db30
+
+ src/ring.c        |   25 +++----------------------
+ src/vte-private.h |    3 +++
+ src/vte.c         |   30 +++++++++++++++++++++++++-----
+ src/vteseq.c      |   31 +++++++++++--------------------
+ 4 files changed, 42 insertions(+), 47 deletions(-)
+
+commit 8ad12cd15ad4dc5e7eb40398e4b835af31f34c0f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 24 14:25:47 2009 -0400
+
+    Bug 596011 -  Problem compiling vte 0.22.0 on Solaris
+
+ src/vterowdata.c |    2 +-
+ src/vterowdata.h |    1 -
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit ebd4dac2028edd77b38edfd5595dae01c529670d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 24 14:22:53 2009 -0400
+
+    Fix warning
+
+ src/vtestream-base.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ca89fbb9d6fb8470d5e9150d8b4f35424893d1ca
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 21 17:01:17 2009 -0400
+
+    Release 0.22.0
+
+ NEWS         |    4 ++++
+ configure.in |   10 +++++-----
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+commit df0350b20f91305e8c330226dd50ea1bee501271
+Author: Rajesh Ranjan <rranjan rranjan csb>
+Date:   Sat Sep 19 00:11:04 2009 +0530
+
+    maithili update, translated by Sangeeta Kumari
+
+ po/LINGUAS |    1 +
+ po/mai.po  |   93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 94 insertions(+), 0 deletions(-)
+
+commit 8658f78fce0ffad86c81ea2502047cdbc2d32669
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 18 02:18:07 2009 -0400
+
+    Release 0.21.7
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 35cb9184e071c8629c953d5bf82542d88438552c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 18 02:07:57 2009 -0400
+
+    Bug 595494 - Build Failure in vte 0.21.6
+    
+    Revert "Do some symbol hiding"
+    This reverts commit 296a3cbaf6b69555f7d6cdc639dc57c51f2e2bba.
+
+ configure.in        |   11 ------
+ src/caps.c          |    4 +-
+ src/caps.h          |    6 ++--
+ src/debug.c         |    2 +-
+ src/debug.h         |    4 +-
+ src/iso2022.h       |   29 ++++++++-------
+ src/keymap.h        |   46 ++++++++++++------------
+ src/matcher.h       |   18 +++++-----
+ src/ring.h          |   20 +++++-----
+ src/table.c         |    2 +-
+ src/table.h         |   20 +++++-----
+ src/trie.c          |    2 +-
+ src/trie.h          |   26 +++++++-------
+ src/vte-private.h   |   64 +++++++++++++++++-----------------
+ src/vtebg.h         |   14 ++++----
+ src/vteconv.h       |   28 +++++++-------
+ src/vtedraw.c       |    2 +-
+ src/vtedraw.h       |   96 +++++++++++++++++++++++++-------------------------
+ src/vteint.h        |   12 +++---
+ src/vtepangocairo.c |    2 +-
+ src/vtepangocairo.h |    2 +-
+ src/vteregex.h      |    8 ++--
+ src/vterowdata.h    |   18 +++++-----
+ src/vteskel.c       |    2 +-
+ src/vteskel.h       |    2 +-
+ src/vtestream.h     |   15 ++++----
+ src/vtetc.c         |    2 -
+ src/vtetc.h         |   24 ++++++------
+ src/vtetree.c       |    2 -
+ src/vtetree.h       |    8 ++--
+ src/vteunistr.h     |    8 ++--
+ 31 files changed, 243 insertions(+), 256 deletions(-)
+
+commit e6e66d4c5733b4c2e5efa686566bde3c76be4212
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 18 02:07:06 2009 -0400
+
+    [ring] Don't append fragment text
+
+ src/ring.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2c0c2454deeef051f603dd32ef70d926f49b0b2f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 18 02:04:26 2009 -0400
+
+    [ring] Fix fragment width
+
+ src/ring.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 63ba68fef08838159a5922534f77f89a304f6c03
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 18 02:02:20 2009 -0400
+
+    Simplify tab handling
+
+ src/vteseq.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 09221372842d3954c10f69cd3c98680663c4d6d3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 17 11:19:29 2009 -0400
+
+    Release 0.21.6
+
+ NEWS         |    6 ++++++
+ configure.in |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 296a3cbaf6b69555f7d6cdc639dc57c51f2e2bba
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 17 10:54:15 2009 -0400
+
+    Do some symbol hiding
+
+ configure.in        |   11 ++++++
+ src/caps.c          |    4 +-
+ src/caps.h          |    6 ++--
+ src/debug.c         |    2 +-
+ src/debug.h         |    4 +-
+ src/iso2022.h       |   29 +++++++--------
+ src/keymap.h        |   46 ++++++++++++------------
+ src/matcher.h       |   18 +++++-----
+ src/ring.h          |   20 +++++-----
+ src/table.c         |    2 +-
+ src/table.h         |   20 +++++-----
+ src/trie.c          |    2 +-
+ src/trie.h          |   26 +++++++-------
+ src/vte-private.h   |   64 +++++++++++++++++-----------------
+ src/vtebg.h         |   14 ++++----
+ src/vteconv.h       |   28 +++++++-------
+ src/vtedraw.c       |    2 +-
+ src/vtedraw.h       |   96 +++++++++++++++++++++++++-------------------------
+ src/vteint.h        |   12 +++---
+ src/vtepangocairo.c |    2 +-
+ src/vtepangocairo.h |    2 +-
+ src/vteregex.h      |    8 ++--
+ src/vterowdata.h    |   18 +++++-----
+ src/vteskel.c       |    2 +-
+ src/vteskel.h       |    2 +-
+ src/vtestream.h     |   15 ++++----
+ src/vtetc.c         |    2 +
+ src/vtetc.h         |   24 ++++++------
+ src/vtetree.c       |    2 +
+ src/vtetree.h       |    8 ++--
+ src/vteunistr.h     |    8 ++--
+ 31 files changed, 256 insertions(+), 243 deletions(-)
+
+commit e28d3818f3b22fbdf61d721183419a4a010c8a01
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 16 18:09:35 2009 -0400
+
+    Remove expensive assertion
+
+ src/vte.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit ed455c5413f04c4688fd072acfd121b97636e023
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 16 15:42:19 2009 -0400
+
+    [doc] Set LC_ALL instead of LANG for our check scripts
+
+ doc/reference/check-doc-coverage.sh |    4 +++-
+ doc/reference/check-doc-syntax.sh   |    3 ++-
+ git.mk                              |    2 +-
+ src/check-doc-syntax.sh             |    3 ++-
+ 4 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 2c75e3d01f970cae3d0856b04d532bfc90cdbf14
+Author: Niels-Christoph Fiedler <linux medienkompanie de>
+Date:   Wed Sep 16 18:36:45 2009 +0200
+
+    Updated Low German translation
+
+ po/nds.po |   41 ++++++++++++++++++++---------------------
+ 1 files changed, 20 insertions(+), 21 deletions(-)
+
+commit 6946347f771d48393b4a1eb30dc52e40489582f1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 21:26:22 2009 -0400
+
+    [ring] Fix assertion failure with resize
+
+ src/ring.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 109f77b663e4f87e4fb148ae26cd7a566de0cb61
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 21:22:53 2009 -0400
+
+    [ring] Simplify a bit
+
+ src/ring.c |   20 ++++++++++++++++----
+ 1 files changed, 16 insertions(+), 4 deletions(-)
+
+commit 5254710eb86008ab218f2ad0a61e631f3f6d6b39
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 21:17:51 2009 -0400
+
+    [ring/stream] Handle stream failure (out of space)
+
+ src/ring.c           |   19 ++++++++++++++-----
+ src/vtestream-base.h |    6 +++---
+ src/vtestream-file.h |   15 ++++++---------
+ src/vtestream.h      |    3 +--
+ 4 files changed, 24 insertions(+), 19 deletions(-)
+
+commit 40fef32bc16dc65a138fc7d46549e7ba14395159
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 20:10:05 2009 -0400
+
+    [ring] Store text as UTF-8 and RLE-encode the attrs
+
+ src/ring.c       |  190 ++++++++++++++++++++++++++++++++++++++++++------------
+ src/ring.h       |   10 +++-
+ src/vterowdata.h |    6 ++
+ 3 files changed, 164 insertions(+), 42 deletions(-)
+
+commit a1f8b0fb38291dd368b6a085aa2b6c5505024a2a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 15:47:39 2009 -0400
+
+    [stream] Fix bug in _head()
+
+ src/vtestream-file.h |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit f13c3b9f061d50b18475fdf05b54877031037b35
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 15 13:46:06 2009 -0400
+
+    [unistr] _vte_unistr_len()
+
+ src/vteunistr.c |    4 +---
+ src/vteunistr.h |    2 --
+ 2 files changed, 1 insertions(+), 5 deletions(-)
+
+commit 7cc48f44223ab69725f42399a58ebb0a26c9b2a5
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 16:09:40 2009 -0400
+
+    Add VteIntCell
+
+ src/vterowdata.h |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit d6330cf885ff25c6607e0624c03f00daf15bb68b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 16:07:17 2009 -0400
+
+    [stream] Add head()
+
+ src/vtestream-base.h |    7 +++++++
+ src/vtestream-file.h |   12 ++++++++++++
+ src/vtestream.h      |    1 +
+ 3 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 338d4a485f5b7609be1861aed6558693f90955c1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 15:30:04 2009 -0400
+
+    [ring] Fix resize too
+
+ src/ring.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit d1cec534d59399f057399b63dfb819b407174171
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 15:27:25 2009 -0400
+
+    [ring] Fix ring according to stream semantics
+
+ src/ring.c |  126 ++++++++++++++++++++++++++++++++++++++++-------------------
+ 1 files changed, 85 insertions(+), 41 deletions(-)
+
+commit ea7ee1b1cbfe58faab7903cf354b377190dfb144
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 15:24:57 2009 -0400
+
+    [stream] Fix new_page implementation
+
+ src/vtestream-file.h |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 1ea043ed2df31522c670b6bfba8cf1c9537ce61e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 15:12:43 2009 -0400
+
+    [stream] Handle eof situation
+
+ src/vtestream-file.h |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 68cce180dd903aacbbec11dca8f89be0cf278e92
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 15:04:51 2009 -0400
+
+    [stream] Add a reset() method
+
+ src/vtestream-base.h |    7 +++
+ src/vtestream-file.h |  104 ++++++++++++++++++++++++++++++--------------------
+ src/vtestream.h      |    1 +
+ 3 files changed, 71 insertions(+), 41 deletions(-)
+
+commit efe25381cca2767423f1c7061dcda1a0be87e59b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 13:31:27 2009 -0400
+
+    [stream] s/trunc/truncate/
+
+ src/vtestream-base.h |    6 +++---
+ src/vtestream-file.h |    4 ++--
+ src/vtestream.h      |    2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 2eefab893485bbea1d0e2fb62e6f6122314d1959
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 14 13:07:26 2009 -0400
+
+    [stream] Fix returned offset
+
+ src/vtestream-file.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a88338e07429a5ce1fc4cb081448333c699f7f23
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 12 19:40:02 2009 -0400
+
+    [ring] Port to VteStream
+    
+    Not optimized, simple file-based non-compact storage
+
+ src/ring.c           |  668 +++++++++++---------------------------------------
+ src/ring.h           |   48 ++---
+ src/vtestream-base.h |   31 +++-
+ src/vtestream-file.h |   17 +-
+ src/vtestream.h      |    8 +
+ 5 files changed, 201 insertions(+), 571 deletions(-)
+
+commit a63c3d687408a9e21535df84855e00564c4f0905
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 12 18:22:16 2009 -0400
+
+    [stream] Add file stream
+
+ src/Makefile.am                       |    2 +
+ src/{vtestream.c => vtestream-base.h} |   18 +--
+ src/vtestream-file.h                  |  215 +++++++++++++++++++++++++++++++++
+ src/vtestream.c                       |   31 +----
+ src/vtestream.h                       |    6 +-
+ 5 files changed, 234 insertions(+), 38 deletions(-)
+
+commit 9de9d2de44d4723935176c71f8f09a90f15e678a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 12 17:15:04 2009 -0400
+
+    [stream] Start vte stream design
+    
+    New buffer coming!
+
+ src/Makefile.am |    2 ++
+ src/vtestream.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vtestream.h |   32 ++++++++++++++++++++++++++++++++
+ 3 files changed, 89 insertions(+), 0 deletions(-)
+
+commit 9ad227f5f57d93e86b8d7ecf5b73bdf3bdf6ced7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 12 15:38:52 2009 -0400
+
+    [ring] Fix typo
+
+ src/ring.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a532b2950e748ca37b0b429a7255d95514e212c8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 10 15:59:50 2009 -0400
+
+    [ring] Move VteRowData into its own file
+
+ src/Makefile.am              |    2 +
+ src/ring.c                   |  141 +-----------------------------------
+ src/ring.h                   |  138 +-----------------------------------
+ src/vterowdata.c             |  164 ++++++++++++++++++++++++++++++++++++++++++
+ src/{ring.h => vterowdata.h} |   72 ++-----------------
+ src/vteunistr.c              |    3 +-
+ 6 files changed, 177 insertions(+), 343 deletions(-)
+
+commit 4e02748b395e2086a4a3f897868bc789875e770d
+Author: Carles Ferrando <carles ferrando gmail com>
+Date:   Mon Sep 14 13:39:11 2009 +0200
+
+    Added Catalan (Valencian) translation
+
+ po/LINGUAS        |    1 +
+ po/ca valencia po |  157 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 158 insertions(+), 0 deletions(-)
+
+commit 6f8d5b1da087a741c6cf6bbbf27d5a46d66720c8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Sep 10 12:37:07 2009 -0400
+
+    [ring] Limit line length to 0xFFFF
+    
+    Make rowdata structures a bit more compact
+
+ src/ring.c |   29 +++++++++++++++++++++--------
+ src/ring.h |    6 +++---
+ 2 files changed, 24 insertions(+), 11 deletions(-)
+
+commit d41ff743ec9bb287c3bd2d37f514f259503d03cc
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 22:13:36 2009 -0400
+
+    [ring] Add VteRingChunkWritable
+
+ src/ring.c |   96 ++++++++++++++++++++++++++++++------------------------------
+ src/ring.h |   18 ++++++-----
+ 2 files changed, 58 insertions(+), 56 deletions(-)
+
+commit c4c49bfa4e1e52d3653918d873ad64015e8e8bdf
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:59:56 2009 -0400
+
+    [ring] Remove more unused code
+
+ src/ring.c |   63 ++++++++++++++++++++----------------------------------------
+ 1 files changed, 21 insertions(+), 42 deletions(-)
+
+commit 20f57866d5b4d47ae1ee66cb9e0156d6d70e321e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:56:53 2009 -0400
+
+    [ring] More cleanup
+
+ src/ring.h |    6 ++----
+ 1 files changed, 2 insertions(+), 4 deletions(-)
+
+commit cea0b21adb11d59f2e1e4c649f6cbf5e1cfacfed
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:54:42 2009 -0400
+
+    [ring] Reshuffle a bit more
+
+ src/ring.c |   74 ++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 38 insertions(+), 36 deletions(-)
+
+commit b367d568d57ae93b3e84c0a80302734aa2d2f0ee
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:33:00 2009 -0400
+
+    [ring] Shuffle code around
+
+ src/ring.c |  231 ++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 116 insertions(+), 115 deletions(-)
+
+commit fc9a6daf6394642e17e8aa76cbe661f0f08e8a68
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:26:46 2009 -0400
+
+    [ring] Separate VteRowData and VteCompactRowData
+
+ src/ring.c |   91 +++++++++++++++++++++++++++++++----------------------------
+ src/ring.h |   24 ++--------------
+ 2 files changed, 51 insertions(+), 64 deletions(-)
+
+commit 17840c4a141747c241fd3439b98e683a8f84737b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:11:29 2009 -0400
+
+    [ring] Remove stale comment
+
+ src/ring.h |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit d77e97e9cff572ba0e325335dd4a5654676bc5fb
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:10:33 2009 -0400
+
+    [ring] Rename vtecellattr to VteCellAttr
+
+ src/ring.h |   10 +++++-----
+ src/vte.c  |    2 +-
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+commit a24f3bd3a7f9830245d4382df48f7063fd2340ea
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:09:26 2009 -0400
+
+    [ring] Move row attrs into a struct
+
+ src/ring.h   |   11 ++++++++++-
+ src/vte.c    |    8 ++++----
+ src/vteseq.c |    8 ++++----
+ 3 files changed, 18 insertions(+), 9 deletions(-)
+
+commit d0b03824d508d078accdcba7b1cc17a94d18f5ed
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 21:04:15 2009 -0400
+
+    [ring] Further cleanup of cell array
+
+ src/ring.c |   28 ++++++++++++----------------
+ 1 files changed, 12 insertions(+), 16 deletions(-)
+
+commit 3b5177f934c4bba89165e46521192766f13ed655
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 20:56:40 2009 -0400
+
+    [ring] Rename
+
+ src/ring.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 7d4895e5ad9d3153086596e3109e871fa027aea6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 20:53:46 2009 -0400
+
+    [ring] Remove spare chunk caching
+
+ src/ring.c |   77 ++++-------------------------------------------------------
+ 1 files changed, 6 insertions(+), 71 deletions(-)
+
+commit c7ce2e2fc72c086352fe44508ac97db390cdd591
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Sep 9 20:48:54 2009 -0400
+
+    [ring] Remove custom cell array allocator
+
+ src/ring.c |  142 ++++++++----------------------------------------------------
+ 1 files changed, 18 insertions(+), 124 deletions(-)
+
+commit a37a6377089b5f856043b3660a8380326f8c89a8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 11:34:36 2009 -0400
+
+    Release 0.21.5
+
+ NEWS         |    6 ++++++
+ configure.in |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit f42c894d767ecf9a5a43355d5b10c132945f66e8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 03:08:16 2009 -0400
+
+    Simplify access
+
+ src/vte.c |  174 +++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 89 insertions(+), 85 deletions(-)
+
+commit ecc159908714dfa325106de5a2b5fb01bd1dc09b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 03:04:02 2009 -0400
+
+    [ring] Reinstate attr.fragment
+    
+    Fixes the last bug in the new ring.  Yay!
+
+ src/ring.h        |    6 ++----
+ src/vte-private.h |    1 +
+ src/vte.c         |   41 ++++++++++++++++++++++-------------------
+ src/vteseq.c      |    6 +++---
+ 4 files changed, 28 insertions(+), 26 deletions(-)
+
+commit ccac54d0217e0c13d69012f5fa407d2e0fe5d53a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:56:51 2009 -0400
+
+    [ring] Whitespace
+
+ src/ring.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 413abad8f245b0db38cfe18fa23f322579c7a906
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:54:01 2009 -0400
+
+    [ring] Fix signed issues
+
+ src/ring.c |   24 ++++++++++++------------
+ src/ring.h |    2 +-
+ 2 files changed, 13 insertions(+), 13 deletions(-)
+
+commit 1db31d7d1168294f830b5b0ad0c57a56cf679dc1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:50:05 2009 -0400
+
+    [ring] Const correctness
+
+ src/ring.c |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 3300760dad390e6299bd21e25521c5e12f5534cd
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:43:34 2009 -0400
+
+    [ring] Rename a bit
+
+ src/ring.c |   44 ++++++++++++++++++++++----------------------
+ 1 files changed, 22 insertions(+), 22 deletions(-)
+
+commit e2d2ca6888fedcbdc5d61c58d10207dfeebb7000
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:24:52 2009 -0400
+
+    [ring] Free all spare chunks when all rings are destroyed
+
+ src/ring.c |   70 ++++++++++++++++++++++++++++++++++++++---------------------
+ 1 files changed, 45 insertions(+), 25 deletions(-)
+
+commit 1972a3614be3f7453a13a48d0ab7013a23d83f09
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:24:42 2009 -0400
+
+    [ring] Reduce free chunks from 10 to 4
+
+ src/ring.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9ba03097d00059dd5d833053b5cf7f06e22a8f1f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:10:07 2009 -0400
+
+    [ring] Fix chunk disposal
+
+ src/ring.c |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 0f97ca6162d6219040f0273626f88044eecabee5
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 02:05:38 2009 -0400
+
+    [ring] Fix bytes_left calculation
+
+ src/ring.c |   29 +++++++++++++++--------------
+ src/ring.h |    8 ++------
+ 2 files changed, 17 insertions(+), 20 deletions(-)
+
+commit 284b9bbb884d36e65af13e968304b74ddb5be1c7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 01:42:25 2009 -0400
+
+    [ring] Invalidate cache
+
+ src/ring.c |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit c00499dd53ef5ee43ec39fa5823ffcb0659b51e6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 01:25:40 2009 -0400
+
+    [ring] Optimize attribute bitfield placement
+
+ src/ring.c |    6 +++---
+ src/ring.h |    9 ++++++---
+ 2 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 3ea50a543462262407a54b7e0860c5121c96655e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 01:03:42 2009 -0400
+
+    [ring] Add debug output
+
+ src/ring.c |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit c35dc0dab0da6318428b6d049e20c0c90f80ca00
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 00:56:00 2009 -0400
+
+    [ring] Fix insert at start
+
+ src/ring.c |   83 +++++++++++++++++++++++++++++++++++++++++------------------
+ 1 files changed, 57 insertions(+), 26 deletions(-)
+
+commit ec5229042aee27c074b8d700dad5058f3b50872d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Sep 8 00:27:52 2009 -0400
+
+    [ring] Move view cache row to ring
+
+ src/ring.c |   72 +++++++++++++++++++++++++++++------------------------------
+ src/ring.h |   11 ++++-----
+ 2 files changed, 40 insertions(+), 43 deletions(-)
+
+commit 36ad6fac029ccb29465434d46135559d9f5d5584
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 22:59:35 2009 -0400
+
+    [ring] Implement uncompact
+
+ src/ring.c |  203 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ src/ring.h |    7 ++-
+ 2 files changed, 185 insertions(+), 25 deletions(-)
+
+commit eb0444e52d7995f50326109cd6d4cf254b2a4774
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 22:05:08 2009 -0400
+
+    Fix ring access const correctness
+
+ src/ring.c   |   14 +++++++++++-
+ src/ring.h   |   14 +++++++++--
+ src/vte.c    |   65 ++++++++++++++++++++++++++++++++++-----------------------
+ src/vteseq.c |   24 ++++++++++----------
+ 4 files changed, 75 insertions(+), 42 deletions(-)
+
+commit f214a7b86a3a3f37fbcef457bdbe81ac08c302f6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 21:37:31 2009 -0400
+
+    [ring] Minor
+
+ src/ring.h |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 29bceb6074fa708d37f6901073648b146f8c98e7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 21:30:26 2009 -0400
+
+    [ring] Cleanup warnings
+
+ src/ring.c |   26 ++++++++++++++------------
+ src/ring.h |    7 +++++--
+ 2 files changed, 19 insertions(+), 14 deletions(-)
+
+commit 99b5708db5a7bf04e8cf12195ed2b4309b199bf9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 21:25:08 2009 -0400
+
+    [ring] Ease default attr computations
+
+ src/ring.c   |    6 +++---
+ src/ring.h   |   40 ++++++++++++++++++++++++----------------
+ src/vte.c    |    6 +++---
+ src/vteseq.c |    2 +-
+ 4 files changed, 31 insertions(+), 23 deletions(-)
+
+commit 1cd88dc0ba39d9c76e165c917510280cf22513a7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 21:16:30 2009 -0400
+
+    [ring] Allow one more room in insert such that position doesn't fall off
+
+ src/ring.c |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 5b559865f8237b4aa77c513a3d5847bf0a0e01aa
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 21:00:13 2009 -0400
+
+    [ring] Enlarge initial writable size
+
+ src/ring.c        |    8 +++++---
+ src/ring.h        |    2 ++
+ src/vte-private.h |    1 -
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+commit c40b3e92c52057dc84be0c99b57fe7af07bffecd
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 20:09:04 2009 -0400
+
+    [ring] Store max_rows
+
+ src/ring.c |   74 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 files changed, 42 insertions(+), 32 deletions(-)
+
+commit f24dbdf32f0456b5a0e949aaf2068680ccf1feb7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 20:07:38 2009 -0400
+
+    [ring] Almost working
+
+ src/ring.c |   56 +++++++++++++++++++++++++++++++++-----------------------
+ 1 files changed, 33 insertions(+), 23 deletions(-)
+
+commit 05d1c8b063fb9c601bf20b23475dc395221c8f5b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 19:55:14 2009 -0400
+
+    Fix initial scrollback size
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 024c67a1a12e1e82b65cc53b8b0adc89a689e53f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 19:51:50 2009 -0400
+
+    Fix comment
+
+ src/ring.c        |    1 +
+ src/vte-private.h |    3 +--
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 3e1ea9728a313c296fbda053359152192f5305e7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 18:59:02 2009 -0400
+
+    [ring] Compacting goodness; disabled now; eats babies
+
+ src/ring.c |  282 ++++++++++++++++++++++++++++++++++++++++++++++++------------
+ src/ring.h |   20 ++++-
+ 2 files changed, 243 insertions(+), 59 deletions(-)
+
+commit 91697b796a9c0f1e8e20a6ae18139556f10cb5ca
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 17:01:12 2009 -0400
+
+    [ring] Closer to working
+
+ src/ring.c |  191 +++++++++++++++++++++++++++++++++++++-----------------------
+ 1 files changed, 118 insertions(+), 73 deletions(-)
+
+commit 68d17bacfd7b7127ff03497df555f7274f60b604
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 15:36:54 2009 -0400
+
+    [ring] Overhaul.  Not working right now.
+
+ src/ring.c        |  268 +++++++++++++++++++++++++++++++++++++++--------------
+ src/ring.h        |   56 +++++++++---
+ src/vte-private.h |    2 +-
+ src/vte.c         |   16 ++--
+ 4 files changed, 249 insertions(+), 93 deletions(-)
+
+commit de3f63efab64408c2eb3b0e02e358063769c9396
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 01:30:44 2009 -0400
+
+    [ring] Keep ring->next instead of ring->length
+
+ src/ring.c |   45 ++++++++++++++++++++-------------------------
+ src/ring.h |    8 ++++----
+ 2 files changed, 24 insertions(+), 29 deletions(-)
+
+commit 75809e632eb097c8a96c855781677cee560978eb
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Sep 7 01:15:55 2009 -0400
+
+    Fix palette handling
+
+ src/ring.h        |    1 +
+ src/vte-private.h |    2 +-
+ src/vte.c         |    5 +++--
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 294b146da1c74ae16d2fd97a986a187d7e2a280d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Sep 6 00:08:54 2009 -0400
+
+    [ring] Simplify insert/remove
+
+ src/ring.c |   24 ++++++++----------------
+ 1 files changed, 8 insertions(+), 16 deletions(-)
+
+commit 0a855cc5c15f986607e9d2b1c77801792db796fc
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:58:33 2009 -0400
+
+    [ring] Allocate main row array in powers of two
+    
+    This way we can use a bitwise-and to index, instead of int division
+
+ src/ring.c |   39 +++++++++++++++++++++++++--------------
+ src/ring.h |    4 ++--
+ 2 files changed, 27 insertions(+), 16 deletions(-)
+
+commit b86951330fa9cbb8341aec7ca2fc0be7be4596c1
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:35:37 2009 -0400
+
+    [ring] Assert struct sizes
+
+ src/ring.h |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit e36788647962b2632e8f241b830e2bb18f173889
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:32:58 2009 -0400
+
+    Add static assertions
+
+ src/debug.h |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 475606d988458605f2f79e649dabe335e3a0453a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:09:34 2009 -0400
+
+    [ring] Remove glong in favor of guint
+
+ src/ring.c |   64 ++++++++++++++++++++++++++++++------------------------------
+ src/ring.h |   24 +++++++++++-----------
+ 2 files changed, 44 insertions(+), 44 deletions(-)
+
+commit 086cbf79dd47cbecf2b9afe777f940acf1ae19ef
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:06:58 2009 -0400
+
+    [ring] Minor cleanup
+
+ src/ring.c |   25 ++++++++++++++++---------
+ src/ring.h |   16 ++++++++--------
+ src/vte.c  |    4 ++--
+ 3 files changed, 26 insertions(+), 19 deletions(-)
+
+commit 08972ae6e02c65b5ad0442674b6c6f4b938ed17f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 23:00:53 2009 -0400
+
+    [ring] Remove unused macro
+
+ src/ring.h |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 86211afa952dc878b84ce1b7f14b381fcd91991f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 22:55:51 2009 -0400
+
+    [ring] Tune pool allocation to allocate in powers of two in bytes
+
+ src/ring.c |   12 +++++++-----
+ 1 files changed, 7 insertions(+), 5 deletions(-)
+
+commit ddfef75afd62dc324ec033f57594cad70d0ed34e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 22:41:58 2009 -0400
+
+    [ring] Rename
+
+ src/ring.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 99f63f1da37c343064175572b5b53b5193bbcb3f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 22:24:26 2009 -0400
+
+    [ring] Set minimum row size for allocation to 80
+
+ src/ring.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 865e8e2d981873cfd1d98535c6666f25a8315b22
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 22:23:44 2009 -0400
+
+    [ring] Add debug messages to new code
+
+ src/ring.c |   24 +++++++++++++++++++-----
+ 1 files changed, 19 insertions(+), 5 deletions(-)
+
+commit e92865dce49fdcec5181add1a2be36fa57fad3af
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 22:06:56 2009 -0400
+
+    Minor cleanup
+
+ src/debug.h |    2 +-
+ src/ring.c  |    1 +
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 7b7bea551750d0ff5103fd1e2de969b0d093812c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 21:06:53 2009 -0400
+
+    [ring] Use large-size pools for rowdata allocation
+
+ src/ring.c |  155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 files changed, 141 insertions(+), 14 deletions(-)
+
+commit c6b2621d549b51dc9499673717d1125437576963
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 20:13:23 2009 -0400
+
+    Rename vtecells to VteCells as well
+
+ src/ring.c |   20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 2ce6acc60f48a0ce929a222a49957e90c0b8e077
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 20:12:14 2009 -0400
+
+    Rename vtecell to VteCell as it's not a value type
+
+ src/ring.c        |   19 ++++++++++---------
+ src/ring.h        |   20 ++++++++++----------
+ src/vte-private.h |    6 +++---
+ src/vte.c         |   50 +++++++++++++++++++++++++-------------------------
+ src/vteseq.c      |   16 ++++++++--------
+ 5 files changed, 56 insertions(+), 55 deletions(-)
+
+commit 064822346af55ce36e0a7e82b38bf235e9fb394f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Sep 5 00:06:38 2009 -0400
+
+    [ring] Remove GArray for rowcell allocation
+    
+    A very dumb allocator right now.  To be optimized.
+
+ src/ring.c |  124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/ring.h |   47 ++++++++++++----------
+ 2 files changed, 140 insertions(+), 31 deletions(-)
+
+commit fb9a0d3727c12c0dd5de384335050bb416d33815
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 4 21:20:30 2009 -0400
+
+    Remove chunk mutex
+    
+    We always get called in from the mainloop and hence are essentially
+    single-threaded.
+
+ src/vte.c |    7 -------
+ 1 files changed, 0 insertions(+), 7 deletions(-)
+
+commit 9f486dfe6b1c71073ee85fd092cb375842a98f42
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Sep 4 21:17:13 2009 -0400
+
+    Bug 594025 -  crash in Terminal: running cat /dev/urandom...
+    
+    Bug 593795 -  crash in Terminal: By mistake cat'ing a bin...
+    Remove assert.  G_DISABLE_ASSERT has been in use for years...
+    None of the asserts in place right now have been tested much :(
+
+ src/vte.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit f5f3e586ec83c8da5b473164669f501de6fa281a
+Author: Og B. Maciel <ogmaciel gnome org>
+Date:   Sun Aug 30 12:11:29 2009 -0400
+
+    Updated mailing list address.
+
+ po/pt_BR.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 00566ad0acd9f4a959f1d91935741f9ef07ca4fe
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 28 14:03:50 2009 -0400
+
+    Enable silent rules by default
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit cbb3071086f9bc173b9d8b9d3f79f87bae256c6a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 17:10:19 2009 -0400
+
+    Remove cell.attr.fragment and use cell.c == FRAGMENT instead
+
+ src/ring.h   |    6 +++---
+ src/vte.c    |   42 +++++++++++++++++++-----------------------
+ src/vteseq.c |    6 +++---
+ 3 files changed, 25 insertions(+), 29 deletions(-)
+
+commit 71a6cf23eeb0237858b7b769074ed9c5bb564c3d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 17:07:53 2009 -0400
+
+    [ring] Fix brokenness with macro implementation
+
+ src/ring.h |   13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 96793d9716c658b5d9ee4c87846c8e6e7b1c26c7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 16:37:27 2009 -0400
+
+    Minor cleanup
+
+ src/vte.c |   88 +++++++++++++++++++++++++++---------------------------------
+ 1 files changed, 40 insertions(+), 48 deletions(-)
+
+commit f73e04e92c092f4ce791df2008bb3078847f4805
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 00:23:35 2009 -0400
+
+    Remove ring from test programs
+
+ src/Makefile.am |    7 ++-----
+ 1 files changed, 2 insertions(+), 5 deletions(-)
+
+commit 5a2879bcc28c703b4e120f57d750d47b7b27a8f4
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 00:14:16 2009 -0400
+
+    [ring] Swap rows instead of moving
+    
+    Avoids lots of free/new's
+
+ src/ring.c |   17 ++++++-----------
+ 1 files changed, 6 insertions(+), 11 deletions(-)
+
+commit 05f07e28d7f2b886ee924dd37164a7dfb78d0bb3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 27 00:10:47 2009 -0400
+
+    [ring] Simplify more
+
+ src/ring.c |   21 +++++++++++++++------
+ 1 files changed, 15 insertions(+), 6 deletions(-)
+
+commit a2c132d6ffa528cbfde0ccd0ed35e08900182ffe
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 18:45:36 2009 -0400
+
+    Rename _vte_row_data_set_length() to _vte_row_data_shrink()
+
+ src/ring.h   |    4 ++--
+ src/vte.c    |   15 +++------------
+ src/vteseq.c |   23 ++++++++++-------------
+ 3 files changed, 15 insertions(+), 27 deletions(-)
+
+commit 8cb3e376efd04a92570fec8059f6c634e80603c7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 18:32:03 2009 -0400
+
+    Simplify a bit
+
+ src/vte.c    |    3 +--
+ src/vteseq.c |    6 ++----
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 4c8cbb00831c40ed62b29da7fe9ae2734dcb5925
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 18:19:12 2009 -0400
+
+    Add basic_cell with default cell attrs
+
+ src/ring.c        |    2 +-
+ src/ring.h        |  104 +++++++++++++++++++++++++++++++++-------------------
+ src/vte-private.h |   14 ++-----
+ src/vte.c         |   72 ++++++++++++++----------------------
+ src/vteseq.c      |   18 +++++-----
+ 5 files changed, 108 insertions(+), 102 deletions(-)
+
+commit d3f87acad23aa0b50f2d15756ccd12e173ddbcf7
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 01:06:27 2009 -0400
+
+    Abstract rowdata functions away from GArray
+
+ src/ring.c   |   17 +++---
+ src/ring.h   |   31 ++++++++++-
+ src/vte.c    |  171 +++++++++++++++++++++++++---------------------------------
+ src/vteseq.c |  146 ++++++++++++++-----------------------------------
+ 4 files changed, 153 insertions(+), 212 deletions(-)
+
+commit 545fb3c59298058a682879545ff52230054642a6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 00:24:09 2009 -0400
+
+    [ring] Simplify insert and remove even more
+
+ src/ring.c   |   41 ++++++++++++++++++++++++++++++-----------
+ src/vte.c    |   24 ++++--------------------
+ src/vteseq.c |   44 ++++++++++++++------------------------------
+ 3 files changed, 48 insertions(+), 61 deletions(-)
+
+commit 681db91a7772a77b903163f6985330a6f24ef977
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 00:12:21 2009 -0400
+
+    Simplify insert
+
+ src/vte.c    |   11 ++---------
+ src/vteseq.c |   11 ++---------
+ 2 files changed, 4 insertions(+), 18 deletions(-)
+
+commit e95ee843ef2954635ca3405f8de009fcb2095304
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 00:08:10 2009 -0400
+
+    Simplify remove
+
+ src/ring.c   |    4 ++--
+ src/vte.c    |    3 +--
+ src/vteseq.c |    3 +--
+ 3 files changed, 4 insertions(+), 6 deletions(-)
+
+commit 54e717f081f365ac0e9b2a9947e50893c7666807
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 26 00:00:17 2009 -0400
+
+    Simplify code
+
+ src/vte.c    |    9 +++++----
+ src/vteseq.c |   21 ++++++---------------
+ 2 files changed, 11 insertions(+), 19 deletions(-)
+
+commit ffcb06a6bc2bf1d66eadf2e708ec444cf612f0c0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 23:47:07 2009 -0400
+
+    [ring] Add safeguards to remove()
+
+ src/ring.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 41f2912b527d3aa69ac3e70e9146f8ee171c1a9b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 23:42:06 2009 -0400
+
+    [ring] Simplify insert
+
+ src/ring.c |   49 +++++++++++--------------------------------------
+ 1 files changed, 11 insertions(+), 38 deletions(-)
+
+commit 684e66aeb8597e9f54fda6361ef9e337fdb44eda
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 23:26:22 2009 -0400
+
+    [ring] Don't free items when inserting, reuse them
+
+ src/ring.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 717f5bc3422dd3b4a838adec7a65e183e2843702
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 23:23:12 2009 -0400
+
+    [ring] Update docs
+
+ src/ring.c |    5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 10220e808e6a9406fd96792f14ebcb0e8474ba13
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 23:20:48 2009 -0400
+
+    [ring] Add _vte_ring_move()
+
+ src/ring.c |   30 +++++++++++++-----------------
+ 1 files changed, 13 insertions(+), 17 deletions(-)
+
+commit dd06b763d657a5f4f95b30c259eb08e0a6a9118e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 19:30:29 2009 -0400
+
+    [ring] Cleanup debug messages
+
+ src/ring.c |   39 ++++++++-------------------------------
+ 1 files changed, 8 insertions(+), 31 deletions(-)
+
+commit 1c231e40714b9224da37c4aa0352e72a9a35f9e6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 19:08:37 2009 -0400
+
+    Release 0.21.4
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit ea6488d28be389b047bd0aa2ba69e2a736266a71
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 19:06:52 2009 -0400
+
+    Remove another stale assert()
+    
+    fatalerror!  Why did you disable asserts!
+
+ src/vtepangocairo.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit a74e9fb90ba1068a29bc83cc1a33c2d9e4cc68c3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:56:58 2009 -0400
+
+    [iso2022] Oops, use the right map decoding function
+
+ src/iso2022.c |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 8ad1d698f5053aa748339e602e7f823169def211
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:52:09 2009 -0400
+
+    Release 0.21.3
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit f0f873a6f0944dcae012d1c4b12fe7a582afd474
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:49:23 2009 -0400
+
+    [ring] Remove newly-added asserts
+    
+    Ok, the ring should be functionally working again now.
+
+ src/ring.c |   11 ++++-------
+ 1 files changed, 4 insertions(+), 7 deletions(-)
+
+commit c84078230b8a9078843cf027846e16d25555128f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:40:28 2009 -0400
+
+    [ring] Remove insert_preserve(), just call insert()
+    
+    I changed the semantics of insert_preserve() and broke vim.  Reading
+    the old code however, it seems equivalent functionally to insert().
+    Just use that.
+
+ src/ring.c |   44 --------------------------------------------
+ src/ring.h |    1 -
+ src/vte.c  |    4 ++--
+ 3 files changed, 2 insertions(+), 47 deletions(-)
+
+commit e8d90d684f158d3ad0b4013685fa65a84a49bcd9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:40:09 2009 -0400
+
+    Remove assert
+    
+    I just enabled g_assert, so some old disabled asserts are failing now.
+
+ src/keymap.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 43190598174cfc92e74f72e2c34587ca182c3eae
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:17:59 2009 -0400
+
+    Fix alternate screen default size, again
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ce4926abf990fa10d9172c058b2248fee69b75d5
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:11:54 2009 -0400
+
+    Fix initial size of scrollback in alternate screen
+
+ src/debug.h |    1 +
+ src/vte.c   |    2 +-
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+commit edea8adf1a042a5055dac56b97e78540eba6250d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:11:31 2009 -0400
+
+    Really fix the ring this time
+
+ src/ring.c |   25 +++++++++++++++----------
+ 1 files changed, 15 insertions(+), 10 deletions(-)
+
+commit 674f91ff949f532b7037c9aba658ad5ea3330a91
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 18:11:05 2009 -0400
+
+    Remove G_DISABLE_ASSERT
+
+ src/Makefile.am |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 689990df0e51ee96b434c1f98e193de537d3a395
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 13:39:57 2009 -0400
+
+    Release 0.21.2
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit c4aff049937050c58da80ec3c789d3b35abbffd0
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Aug 25 13:37:08 2009 -0400
+
+    Bug 592990 - gnome terminal crashes with glibc detected
+
+ src/ring.c |    5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 6db87763b28687f468ca881b20a543dd7487c3dd
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Aug 24 19:11:27 2009 -0400
+
+    Release 0.21.1
+
+ NEWS         |    8 ++++++++
+ configure.in |    6 +++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 7f9757c725f769ce582a928ecbadc2c352c1b635
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Aug 24 16:51:54 2009 -0400
+
+    Add _vte_ring_set_length
+
+ src/ring.h |    3 ++-
+ src/vte.c  |    4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 9a3de3c246360025f31ad9d6625f7792960c582e
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 21 21:37:07 2009 -0400
+
+    Make ring keep an array of VteRowData, not VteRowData*
+
+ src/ring.c |   55 +++++++++++++++++++++++++------------------------------
+ src/ring.h |    4 ++--
+ 2 files changed, 27 insertions(+), 32 deletions(-)
+
+commit 440737678453a83e812ee60545369ec0e54a4759
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 21 21:01:17 2009 -0400
+
+    Move _vte_new_row_data() business into the ring
+
+ src/ring.c        |  239 +++++++++++++++++++++++++++-------------------------
+ src/ring.h        |   61 +++++++++----
+ src/vte-private.h |   34 --------
+ src/vte.c         |   48 +++--------
+ src/vteseq.c      |   38 +++------
+ 5 files changed, 192 insertions(+), 228 deletions(-)
+
+commit 4e20a3b77e0adf2d2b3db655d9f7b5c3dd1a6c99
+Author: Claude Paroz <claude 2xlibre net>
+Date:   Mon Aug 24 23:18:53 2009 +0200
+
+    Rename nds*.po to nds.po
+
+ po/LINGUAS                |    2 +-
+ po/{nds_NFE.po => nds.po} |    0
+ 2 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 0b78dea524ee01e581327d09324193f2c1cce435
+Author: Nils-Christoph Fiedler <linux medienkompanie de>
+Date:   Sat Aug 22 21:27:28 2009 +0200
+
+    Added Low German translation
+
+ po/LINGUAS    |    1 +
+ po/nds_NFE.po |   94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 95 insertions(+), 0 deletions(-)
+
+commit 031a653d791248c51df12af1b59d169179330b55
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 21 14:09:44 2009 -0400
+
+    Add _vte_ring_resize()
+    
+    Avoids creating a new ring when changing scrollback lines.
+
+ src/ring.c |   43 +++++++++++++++++++++++++++++++++----------
+ src/ring.h |   16 ++++++++--------
+ src/vte.c  |   36 ++++--------------------------------
+ 3 files changed, 45 insertions(+), 50 deletions(-)
+
+commit 4e533b106a1c39b8565a9891fba83e384cc40669
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 21 12:17:38 2009 -0400
+
+    Revert 80dc9064
+    
+    Removing the optimization, so I can clean up the ring API and redesign
+    the implementation.  Sorry Chris!
+
+ src/ring.c |   17 -----------------
+ src/ring.h |    5 -----
+ src/vte.c  |   19 +++++++------------
+ 3 files changed, 7 insertions(+), 34 deletions(-)
+
+commit bf5977d230dd95fcb86d3cbb8ce492f39ff71ae3
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Aug 21 00:20:44 2009 -0400
+
+    Fix bug introduced in ba1f44d6119cc39602d8a660f4e5a9f56a6f19da
+
+ src/ring.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 08caf3b174e68ba3d02f04c2595ad552cd50db30
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:20:06 2009 -0400
+
+    Remove the fill argument from _vte_new_row_data()
+    
+    I cannot prove that this change is right, though it looks like it's
+    correct!
+
+ src/vte-private.h |    2 +-
+ src/vte.c         |   28 +++++-----------------------
+ src/vteseq.c      |   12 ++++++------
+ 3 files changed, 12 insertions(+), 30 deletions(-)
+
+commit 7a2a78d3ea4a0128251089acef89d56241a455ca
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:13:06 2009 -0400
+
+    Minor
+
+ src/vteseq.c |    5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+commit fb7fb842be37441b37bc4ae79937540fd4a0de3f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:10:07 2009 -0400
+
+    Minor
+
+ src/vteseq.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 1904625c65d111a99e5920e6bc8121cb272ecc7b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:08:18 2009 -0400
+
+    Rename _vte_new_row_data_sized to _vte_new_row_data
+
+ src/vte-private.h |    2 +-
+ src/vte.c         |   10 +++++-----
+ src/vteseq.c      |   12 ++++++------
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 5e2b6753201ae416bdf1c594ab5ca5ab8bbf2130
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:06:37 2009 -0400
+
+    Remove _vte_new_row_data
+
+ src/vte-private.h |    1 -
+ src/vte.c         |   11 -----------
+ src/vteseq.c      |    4 ++--
+ 3 files changed, 2 insertions(+), 14 deletions(-)
+
+commit ba1f44d6119cc39602d8a660f4e5a9f56a6f19da
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 23:03:50 2009 -0400
+
+    Specialize VteRing to know about VteRowData
+
+ src/ring.c        |  139 ++++++++--------------------------------------------
+ src/ring.h        |   24 ++++-----
+ src/vte-private.h |    6 --
+ src/vte.c         |   68 ++++----------------------
+ src/vteseq.c      |   28 ++++-------
+ 5 files changed, 53 insertions(+), 212 deletions(-)
+
+commit b2280c01c376d70d931fa039fbdf3ed2fd3fa3f6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 18:39:34 2009 -0400
+
+    Store small iso2022 maps in 16bit structs
+    
+    Saves over 100k of the shared library size
+
+ src/iso2022.c |  132 +++++++++++++++++++++++++++++++++------------------------
+ 1 files changed, 76 insertions(+), 56 deletions(-)
+
+commit 68ac36d9bb7e3ad17bda46de00de229cbe0ff5db
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 18:15:10 2009 -0400
+
+    Optimize iso2022 map struct on x86-64
+
+ src/iso2022.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f5ce4c445055b7f19db38fea0a79253d68ac6562
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 17:26:14 2009 -0400
+
+    Revert b307bc5c and implement it in a clean way
+
+ src/ring.c        |   68 ++++++++++++++--------------
+ src/ring.h        |    8 ++--
+ src/vte-private.h |    4 +-
+ src/vte.c         |  132 +++++++++++++++++++++++++---------------------------
+ src/vteseq.c      |   77 +++++++------------------------
+ 5 files changed, 120 insertions(+), 169 deletions(-)
+
+commit c34204b358df9d887096b4cd1b5ce7f299d1e3ff
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 17:12:13 2009 -0400
+
+    Fix warnings
+
+ src/buffer.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c59dc9252888cf3824f31e307758fd49cf7f9b17
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 15:25:28 2009 -0400
+
+    Update git.mk
+
+ git.mk |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit dc03f2f6035befdc2e8ca5a0537ca2e8c26c324f
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 15:15:01 2009 -0400
+
+    Update copyright header
+
+ src/buffer.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f168a8a2e6b266e980d15c2af023ce7ea1f15394
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 15:09:20 2009 -0400
+
+    Use GByteArray for VteBuffer
+    
+    The implementation was the same.  Keep the abstraction though, since
+    VteBuffer may want to implement O(1) _consume() in the future.
+
+ src/Makefile.am |    7 +--
+ src/buffer.c    |  156 -------------------------------------------------------
+ src/buffer.h    |   25 ++++-----
+ src/interpret.c |    2 +-
+ src/iso2022.c   |    2 +-
+ src/vte.c       |   16 +++---
+ src/vteconv.c   |    6 +-
+ src/vteseq.c    |    2 +-
+ 8 files changed, 25 insertions(+), 191 deletions(-)
+
+commit 83018a7d3aa975211996d69dd922b79165439622
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 15:01:40 2009 -0400
+
+    Rename "struct _vte_buffer" to VteBuffer
+
+ src/buffer.c      |   18 +++++++++---------
+ src/buffer.h      |   18 +++++++++---------
+ src/interpret.c   |    2 +-
+ src/iso2022.c     |    4 ++--
+ src/vte-private.h |    4 ++--
+ src/vteconv.c     |    2 +-
+ 6 files changed, 24 insertions(+), 24 deletions(-)
+
+commit ee6fd1c3d8c2ba19c63565a0c889bbdc10125596
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Aug 20 14:55:41 2009 -0400
+
+    Remove unused code
+
+ src/Makefile.am |    7 +-
+ src/buffer.c    |  247 -------------------------------------------------------
+ src/buffer.h    |   23 -----
+ 3 files changed, 2 insertions(+), 275 deletions(-)
+
+commit af4ced55057c3bdc1ec8e87ce8bbef6639663f37
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Aug 17 18:31:04 2009 -0400
+
+    Remove newline after AM_V_GEN
+
+ src/Makefile.am |    9 +++------
+ 1 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 11bf7a92d4e0cc75ceda1fcd4da892f58e63b4b8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sun Aug 16 01:53:18 2009 -0400
+
+    Reuse ->pending array instead of creating a new one
+
+ src/vte.c |    9 +--------
+ 1 files changed, 1 insertions(+), 8 deletions(-)
+
+commit 80ffef9ad70e70827138f18fdd847dc8a27ebc34
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Aug 16 22:19:25 2009 +0200
+
+    Support AM_SILENT_RULES
+    
+    And sprinkle some $(AM_V_GEN) around. Silent rules are disabled by default.
+
+ Makefile.am          |    2 +-
+ configure.in         |    4 ++++
+ doc/Makefile.am      |    4 ++--
+ python/Makefile.am   |    2 +-
+ src/Makefile.am      |   18 ++++++++++--------
+ termcaps/Makefile.am |    2 +-
+ 6 files changed, 19 insertions(+), 13 deletions(-)
+
+commit 41e1e01046e2bc0f9cfbc84c2f41430c9a9a9743
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 12 16:16:09 2009 -0400
+
+    Bug 590824 – gnome-terminal crashed with SIGSEGV after hiting ctrl+o
+
+ src/vte.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 1b2c6bf6136d8a6033499d73cdb659a6709982a3
+Author: Seán de Búrca <leftmostcat gmail com>
+Date:   Sun Aug 9 14:11:16 2009 -0600
+
+    Updated Irish translation
+
+ po/ga.po |  111 +++++++++++++++++++++++++++-----------------------------------
+ 1 files changed, 48 insertions(+), 63 deletions(-)
+
+commit 3eaca3e36fb806608c961ef594baf99cecf9fdfa
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Wed Aug 5 21:26:05 2009 -0400
+
+    Bug 572230 – text mode program rendering is strange in cjk locale.
+    
+    Under UTF-8 encoding, always use width=1 for ambiguous-width chars,
+    only allow override using VTE_CJK_WIDTH=1.  Preivously we were using
+    width=2 for CJKS locales.  That's against Unicode recommendations,
+    and breaks a bunch of programs.
+
+ src/iso2022.c |   36 +-----------------------------------
+ 1 files changed, 1 insertions(+), 35 deletions(-)
+
+commit 403a6b40a1b34627dcd88fc4c3d0c30ef6369768
+Author: Christian Persch <chpe gnome org>
+Date:   Sun Jul 26 12:56:05 2009 +0200
+
+    Post-branch version bump
+
+ configure.in |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit b8e1a5d9cc583c3a6d31b5594a4c7ce15ea73f5c
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Jul 10 15:56:19 2009 +0100
+
+    Bug 588200 – bashisms in shell scripts
+
+ src/osc    |    2 +-
+ src/window |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit deda7bccf35e153628ca348b5fdf054e608ec462
+Author: Rajesh Ranjan <rranjan rranjan csb>
+Date:   Tue Jul 7 14:23:37 2009 +0530
+
+    hindi update by rajesh Ranjan
+
+ po/hi.po |   93 ++++++++++++++++++++++++--------------------------------------
+ 1 files changed, 36 insertions(+), 57 deletions(-)
+
+commit 4fc17c3fb75cc211232c92ac8b0afa3a8f934cbc
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Tue Jun 9 18:33:36 2009 -0400
+
+    Release 0.20.5 to undo the unintended .soname bump
+
+ NEWS         |    4 ++++
+ configure.in |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit c2ad1acee778542ed5ee9b9b3d0ac2b58a5161d6
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Jun 4 17:39:39 2009 -0400
+
+    Update doc templates
+
+ doc/reference/tmpl/vte.sgml |   12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 94b2b189e429515407d182de3f6cb6b89297e50c
+Author: Krzesimir Nowak <krnowak svn gnome org>
+Date:   Tue Jun 2 13:03:47 2009 +0200
+
+    Bug 584563 – default commit signal handler first param fix.
+    
+    First parameter of default commit signal handler now takes const
+    gchar* instead of gchar*.
+
+ src/vte.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 26ab9f6a8685f6f26d419dcefbade13f561e1585
+Author: Krzesimir Nowak <krnowak svn gnome org>
+Date:   Tue Jun 2 16:56:09 2009 -0400
+
+    Bug 573976 – Typedef pointer to function
+    
+    Typedefed a pointer to function used in get_text methods and
+    replaced those pointers with VteSelectionFunc. Documentation for
+    VteSelectionFunc is also added.
+
+ doc/reference/vte-sections.txt |    1 +
+ src/vte.c                      |   48 ++++++++++++++++-----------------------
+ src/vte.h                      |   20 ++++++----------
+ 3 files changed, 29 insertions(+), 40 deletions(-)
+
+commit 185383d2ff114b16296e3fd203d89e69571c4221
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Jun 1 17:29:53 2009 -0400
+
+    Release 0.20.4
+
+ NEWS         |    8 ++++++++
+ configure.in |    6 +++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit c38b7315abc067a529f4420ead5bde2b6b25be82
+Author: Marc-Andre Lureau <marcandre lureau gmail com>
+Date:   Sat May 30 14:06:22 2009 -0400
+
+    Bug 584281 – build: avoid double installation of xterm
+
+ configure.in         |    1 +
+ termcaps/Makefile.am |    6 +++++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 33f265a9e3397126bd9f1b210c38bd54ea9a1ddb
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat May 30 14:04:42 2009 -0400
+
+    Bug 543379 – VTE sends NUL/^@ for backspace
+    
+    Add VTE_ERASE_TTY.  Also make AUTO send \H if terminal erase is undefined.
+
+ doc/reference/tmpl/vte.sgml |    1 +
+ src/vte.c                   |   41 +++++++++++++++++++++++++++++++++--------
+ src/vte.h                   |    3 ++-
+ 3 files changed, 36 insertions(+), 9 deletions(-)
+
+commit 416b37dac95c6aa73c9ead3d6841893bfb22c5b8
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 25 18:27:51 2009 -0400
+
+    0.20.3 released
+
+ NEWS         |    6 ++++++
+ configure.in |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 7e371f09de8fb3e3af16469603523c17c721483c
+Author: Krzesimir Nowak <krnowak svn gnome org>
+Date:   Mon May 18 12:34:21 2009 +0200
+
+    Inlined signal docs
+    
+    2009-05-18  Krzesimir Nowak  <krnowak svn gnome org>
+    
+            * doc/reference/tmpl/vte.sgml: Removed all signal
+            descriptions from <para> </para> markups and arguments.
+            * src/vte.c: Documented all signals and fixed
+            a description of 'set-scroll-adjustments'.
+
+ doc/reference/tmpl/vte.sgml |  155 +++++++++++--------------
+ src/vte.c                   |  265 ++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 322 insertions(+), 98 deletions(-)
+
+commit 218c6e41627021a2964e606ef72165a16ed329bf
+Author: Frédéric Péters <fpeters 0d be>
+Date:   Mon May 18 22:54:27 2009 +0200
+
+    Bug 583129 – [python] allow passing None as command or directory option
+
+ python/vte.override |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 56727a20b71cd5f960e468444ef544296ddc5edf
+Author: Frédéric Péters <fpeters 0d be>
+Date:   Mon May 18 17:36:46 2009 +0200
+
+    Bug 583078 – [python] allow passing of environment as a dictionary
+
+ python/vte.override |   92 ++++++++++++++++++++++++++++++++------------------
+ 1 files changed, 59 insertions(+), 33 deletions(-)
+
+commit 7e45bcee12c2a0db998d302f89d126f5df10481b
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 4 16:29:01 2009 -0400
+
+    Released 0.20.2
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit be8796b8a5bb258214b0f02ec55a373828acca71
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon May 4 14:16:08 2009 -0400
+
+    [git.mk] Update
+
+ git.mk |  172 +++++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 88 insertions(+), 84 deletions(-)
+
+commit db2a659c6b907564d522312238518937b4b74254
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Mon Apr 27 14:25:12 2009 -0400
+
+    [doap] Add mailto:
+
+ vte.doap |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit a492585a10d58548206b4b58cf62a645d987526d
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Apr 25 20:33:34 2009 -0400
+
+    Add chaining git.mk
+
+ gnome-pty-helper/git.mk |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 6b12feb7b9be5ed4af4dc0e348fc30718547afe9
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Apr 25 20:33:03 2009 -0400
+
+    [git.mk] Fix maintainer-clean
+
+ git.mk |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 30007c8374621d72c1c8eeb260e46f089a2fccc6
+Author: Olav Vitters <olav bkor dhs org>
+Date:   Thu Apr 23 19:40:30 2009 +0200
+
+    doap: Add desktop category
+
+ vte.doap |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 78f9b61137028bd3b0c4b24c6b2169511b1d1e28
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Thu Apr 23 11:27:18 2009 -0400
+
+    [iso2022] Work around buggy iconv (#567064)
+    
+    Seems like glibc's iconv is buggy, eating the ill sequence then
+    returning EILSEQ.  This was causing crashes.  Work around it.
+
+ src/iso2022.c |   12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 3abb0fc2a7011eeadc7e1f49a3f07d9cec4f5c8a
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Apr 18 16:20:23 2009 -0400
+
+    [git.mk] Support out-of-tree builds
+
+ git.mk |   35 +++++++++++++++++++++++++++++------
+ 1 files changed, 29 insertions(+), 6 deletions(-)
+
+commit 963fbd0776c96ecc5efd810c837e478986ff8f35
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Apr 18 15:04:41 2009 -0400
+
+    Remove copyright claim
+
+ git.mk |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ce46104d4378e5dc835c4c4681637dffe205e507
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Sat Apr 18 03:48:58 2009 -0400
+
+    [DOAP] Improve!
+
+ vte.doap |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 6a534c8643a24af997795a0a6027b791a19194de
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Apr 17 21:38:08 2009 -0400
+
+    Add git.mk
+
+ Makefile.am                  |    2 +
+ doc/Makefile.am              |    2 +
+ doc/openi18n/Makefile.am     |    2 +
+ doc/reference/Makefile.am    |    2 +
+ git.mk                       |  155 ++++++++++++++++++++++++++++++++++++++++++
+ glade/Makefile.am            |    4 +
+ gnome-pty-helper/Makefile.am |    8 ++
+ perf/Makefile.am             |    2 +
+ python/Makefile.am           |    2 +
+ src/Makefile.am              |    2 +
+ termcaps/Makefile.am         |    2 +
+ 11 files changed, 183 insertions(+), 0 deletions(-)
+
+commit b4b3c644fd51611ef4abdc24aa414b4b8d95f722
+Author: Behdad Esfahbod <behdad behdad org>
+Date:   Fri Apr 17 18:05:42 2009 -0400
+
+    Remove static .gitignore
+
+ .gitignore |   99 ------------------------------------------------------------
+ 1 files changed, 0 insertions(+), 99 deletions(-)
+
+commit 78dffc29ecfb7b24528d7546771b602e0c105057
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Apr 17 21:16:02 2009 +0200
+
+    Remove ChangeLog only on maintainerclean
+
+ Makefile.am |    4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+commit ce5c397864104792f84869b84481abb80d86ba1e
+Author: Michael J. Chudobiak <mjc avtechpulse com>
+Date:   Fri Apr 17 15:07:29 2009 -0400
+
+    Fixed the commented-out shortdesc field in the doap file
+    
+    Bug #579322.
+
+ vte.doap |   14 ++------------
+ 1 files changed, 2 insertions(+), 12 deletions(-)
+
+commit 1b8a6e627bb4c920541977a684767ccfd48ce324
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Apr 17 19:31:02 2009 +0200
+
+    Remove generated ChangeLog on make clean
+
+ Makefile.am |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit e68607b3875374ce69fe95b8c1f99e57ba695c64
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Apr 17 18:58:36 2009 +0200
+
+    Remove ChangeLog, and auto-generate changelog on make dist
+
+ .gitignore                     |    2 +
+ ChangeLog => ChangeLog.pre-git |    0
+ Makefile.am                    |   18 +-
+ gnome-pty-helper/ChangeLog     |    1 -
+ po/ChangeLog                   | 1353 ----------------------------------------
+ 5 files changed, 19 insertions(+), 1355 deletions(-)
+
+commit fd3ab8dd61ed18f460cecc153de24eb1377a1a34
+Author: Christian Persch <chpe gnome org>
+Date:   Fri Apr 17 18:56:16 2009 +0200
+
+    Add DOAP file.
+
+ vte.doap |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 48 insertions(+), 0 deletions(-)
+
+commit 03bc44250a76de0470cc1303879ac1266eec8b27
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Apr 12 13:54:29 2009 +0000
+
+    More NEWS
+    
+    svn path=/trunk/; revision=2397
+
+ NEWS |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 95f4face68455e5324b1227cdf6a9c766bf086fc
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Apr 12 13:53:19 2009 +0000
+
+    Version 0.20.1
+    
+    svn path=/trunk/; revision=2396
+
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 605b79f6dfe5e6cda05d1aaa092af235b9046d4f
+Author: Adam Jackson <ajackson src gnome org>
+Date:   Wed Apr 1 00:49:38 2009 +0000
+
+    Add gopher:// to the dingus-click regexes.
+    
+    svn path=/trunk/; revision=2395
+
+ ChangeLog    |    5 +++++
+ src/vteapp.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit af483015842d0139c31608f719cef5fe31cc5649
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Mar 26 17:58:05 2009 +0000
+
+    Minor fixes from Richard Russon.
+    
+    2009-03-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (always_selected):
+            * src/vtepangocairo.c (_vte_pangocairo_set_background_image):
+            * src/vteskel.c (_vte_skel_draw_text):
+            Minor fixes from Richard Russon.
+    
+    
+    svn path=/trunk/; revision=2394
+
+ ChangeLog           |    7 +++++++
+ src/vte.c           |    3 ++-
+ src/vtepangocairo.c |    1 -
+ src/vteskel.c       |    2 +-
+ 4 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 6babc11f91a15ea12f4728e98106590355bc6500
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Mar 26 06:18:23 2009 +0000
+
+    Bug 576797 – Double-click sometimes stops working
+    
+    2009-03-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 576797 – Double-click sometimes stops working
+    
+            * src/vte.c (vte_terminal_extend_selection): Invalidate selection
+            if forced.
+    
+    
+    svn path=/trunk/; revision=2393
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 442a1e7fbcd7c0a8adc5ff5f9b8b459f8de09a25
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Mar 26 05:46:39 2009 +0000
+
+    Bug 573674 – reset resets width to 80 chars
+    
+    2009-03-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 573674 – reset resets width to 80 chars
+    
+            * src/vteseq.c (vte_sequence_handler_decset_internal): Disable
+            resizing on decreset.
+    
+    
+    svn path=/trunk/; revision=2392
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |    2 ++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 277cd7e6bafd9099093046a2c19ec8146f9b171a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 23 23:39:56 2009 +0000
+
+    Bug 576504 – vte does not pass its testsuite.
+    
+    2009-03-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 576504 – vte does not pass its testsuite.
+    
+            * src/vte.c:
+            * src/vtedraw.h:
+            Fix "make check".
+    
+    
+    svn path=/trunk/; revision=2391
+
+ ChangeLog     |    8 ++++++++
+ src/vte.c     |    2 +-
+ src/vtedraw.h |    1 -
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 62f5344c5b95ae64fd0321b654573cea369aef19
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Mar 23 12:12:51 2009 +0000
+
+       Bug 574491 – gnome-pty-helper can prevent volumes from being unmounted
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (main): chdir to /.
+    
+    svn path=/trunk/; revision=2390
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |    6 ++++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 1d9e2356ebf937d0265104cc20ae4b6f3666b798
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Wed Mar 18 09:19:40 2009 +0000
+
+    Updated Arabic translation
+    
+    svn path=/trunk/; revision=2389
+
+ po/ChangeLog |    4 +++
+ po/ar.po     |   82 ++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 41 insertions(+), 45 deletions(-)
+
+commit 449972a31306e586a9348a92c42b01aebe8e3109
+Author: Ignacio Casal Quinteiro <icq src gnome org>
+Date:   Tue Mar 17 22:08:28 2009 +0000
+
+    Updated Galician translation by Suso Baleato.
+    
+    svn path=/trunk/; revision=2388
+
+ po/ChangeLog |    4 ++
+ po/gl.po     |  111 +++++++++++++++++++++++++++------------------------------
+ 2 files changed, 57 insertions(+), 58 deletions(-)
+
+commit ff02a22a959e001b49297d17e2d5865d81d84823
+Author: Amanpreet Singh Alam <aman src gnome org>
+Date:   Tue Mar 17 02:17:33 2009 +0000
+
+    updating for GNOME Punjabi Translation by A S Alam
+    
+    svn path=/trunk/; revision=2387
+
+ po/pa.po |   98 ++++++++++++++++++++++++++++----------------------------------
+ 1 files changed, 44 insertions(+), 54 deletions(-)
+
+commit c897c9a37bbe592776abd1179a11d65047ea684c
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Mar 15 14:15:16 2009 +0000
+
+    NEWS update
+    
+    svn path=/trunk/; revision=2386
+
+ NEWS |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit e42a7297bf8f14400141666961cfa7bcd0495779
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Mar 15 12:56:45 2009 +0000
+
+    Fix make.
+    
+    svn path=/trunk/; revision=2384
+
+ doc/reference/vte-docs.sgml    |    2 --
+ doc/reference/vte-sections.txt |    1 +
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+commit 8dd2fb3c08edf1b8f1c1143601f362be55382d63
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Mar 15 12:56:40 2009 +0000
+
+    Prepare version 0.20.0.
+    
+       * configure.in: Prepare version 0.20.0.
+    
+    svn path=/trunk/; revision=2383
+
+ ChangeLog    |    4 ++++
+ Makefile.am  |    2 +-
+ configure.in |   14 +++++++-------
+ 3 files changed, 12 insertions(+), 8 deletions(-)
+
+commit 07cf3c2ef9d697098be99780e654d25f9a02aba4
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Mar 15 12:56:33 2009 +0000
+
+       Bug 575398 – configure warns about term.h under OpenSolaris
+    
+       * configure.in: Fix curses detection on solaris. Patch by David Adam.
+    
+    svn path=/trunk/; revision=2382
+
+ ChangeLog    |    6 ++++++
+ configure.in |    7 +++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 75027b7cf6ff5f326293bffeb09413955abc6076
+Author: Amitakhya Phukan <amitakhya src gnome org>
+Date:   Fri Mar 13 11:26:42 2009 +0000
+
+    Updated assamese translations
+    
+    svn path=/trunk/; revision=2381
+
+ po/as.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 57cb728ae9fe20f6acb77b962b1212d4360aa102
+Author: Amitakhya Phukan <amitakhya src gnome org>
+Date:   Fri Mar 13 11:26:12 2009 +0000
+
+    Updated assamese translations
+    
+    svn path=/trunk/; revision=2380
+
+ po/ChangeLog |    5 +++
+ po/LINGUAS   |    1 +
+ po/as.po     |   91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 97 insertions(+), 0 deletions(-)
+
+commit 73ba06532e7a061176230ea25296b99fd97c14c1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 9 10:20:54 2009 +0000
+
+    Bug 574616 – "real" transparency not working from python bindings
+    
+    2009-03-09  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 574616 – "real" transparency not working from python bindings
+    
+            * src/vtepangocairo.c (_vte_pangocairo_destroy),
+            (_vte_pangocairo_set_background_image): Better handle failure of
+            creating pixmap.
+    
+            * src/vtebg.c (vte_bg_get_pixmap): Get rid of unused mask parameter.
+    
+    
+    svn path=/trunk/; revision=2379
+
+ ChangeLog           |   10 ++++++++++
+ src/vtebg.c         |    7 +------
+ src/vtepangocairo.c |   46 +++++++++++++++++++++-------------------------
+ 3 files changed, 32 insertions(+), 31 deletions(-)
+
+commit 43a9b809e5cf9ccf1a685a7a0ccc0761ff206690
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Mar 7 23:51:12 2009 +0000
+
+    Bug 574025 – Crash in _vte_terminal_insert_char
+    
+    2009-03-07  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 574025 – Crash in _vte_terminal_insert_char
+    
+            * src/vte.c (_vte_terminal_insert_char): Don't crash.
+    
+    
+    svn path=/trunk/; revision=2378
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 ++++++----
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+commit df30bd81becd7ce6c499ab889443eed7b7806863
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Mar 2 20:14:12 2009 +0000
+
+    Prepare 0.19.5
+    
+    svn path=/trunk/; revision=2377
+
+ ChangeLog    |    5 +++++
+ NEWS         |   18 ++++++++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+commit 03aeb31b699fc253ccd9cd883328306eee8f2f1d
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Mar 2 20:14:07 2009 +0000
+
+    Correct use of padding returned by vte_terminal_get_padding().
+    
+       * src/vteaccess.c: (vte_terminal_accessible_set_size),
+       (vte_terminal_accessible_ref_accessible_at_point):
+       * src/vteapp.c: (button_pressed): Correct use of padding returned
+            by vte_terminal_get_padding().
+    
+    svn path=/trunk/; revision=2376
+
+ ChangeLog       |    7 +++++++
+ src/vteaccess.c |   12 ++----------
+ src/vteapp.c    |    4 ++--
+ 3 files changed, 11 insertions(+), 12 deletions(-)
+
+commit fa84c74627c951e3366f7b76298bfdb5208e5c65
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Mar 2 20:14:01 2009 +0000
+
+    Use g_strerror() instead of strerror().
+    
+       * src/vte.c: (vte_terminal_refresh_size), (vte_terminal_set_size):
+       Use g_strerror() instead of strerror().
+    
+    svn path=/trunk/; revision=2375
+
+ ChangeLog |    5 +++++
+ src/vte.c |    8 +++++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit f6170007cd7081f0b77663fa2d0275fc2cd8ae38
+Author: Luca Ferretti <elle uca libero it>
+Date:   Wed Feb 18 20:22:43 2009 +0000
+
+    Updated Italian translation by Francesco Marletta.
+    
+    2009-02-18  Luca Ferretti  <elle uca libero it>
+    
+       * it.po: Updated Italian translation by Francesco Marletta.
+    
+    svn path=/trunk/; revision=2374
+
+ po/ChangeLog |    4 +++
+ po/it.po     |   70 +++++++++++++++++++++------------------------------------
+ 2 files changed, 30 insertions(+), 44 deletions(-)
+
+commit dbf4da933efe253036ab579fcd67bfd3e250a6bc
+Author: Jani Monoses <janimo src gnome org>
+Date:   Mon Feb 16 19:55:33 2009 +0000
+
+    Updated Romanian translations from Adi Roiban and Mișu Moldovan
+    
+    svn path=/trunk/; revision=2373
+
+ po/ChangeLog |    5 +++
+ po/ro.po     |   89 +++++++++++++++++++++++-----------------------------------
+ 2 files changed, 40 insertions(+), 54 deletions(-)
+
+commit 30029cc2f218f93b5009382c3324affc30f00aa7
+Author: Chao-Hsiung Liao <chliao src gnome org>
+Date:   Sat Feb 14 09:50:02 2009 +0000
+
+    0.19.4
+    
+    svn path=/trunk/; revision=2372
+
+ po/ChangeLog |    5 +++
+ po/zh_HK.po  |   85 ++++++++++++++++++++++++++--------------------------------
+ po/zh_TW.po  |   83 +++++++++++++++++++++++++-------------------------------
+ 3 files changed, 80 insertions(+), 93 deletions(-)
+
+commit 1f93f65512eb8bb1e99fa04ab015dccc2071df8a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Feb 12 05:33:15 2009 +0000
+
+    Bug 54926 – Should try bold version of font before pseudo-bolding
+    
+    2009-02-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 54926 – Should try bold version of font before pseudo-bolding
+    
+            Patch from Kees Cook <kees outflux net>
+    
+            * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+            (vte_terminal_unichar_is_local_graphic),
+            (vte_terminal_draw_graphic), (vte_terminal_draw_cells),
+            (vte_terminal_draw_rows), (vte_terminal_paint_cursor):
+            * src/vtedraw.c (_vte_draw_get_char_width), (_vte_draw_text),
+            (_vte_draw_char), (_vte_draw_has_char):
+            * src/vtedraw.h:
+            * src/vtepangocairo.c (_vte_pangocairo_set_text_font),
+            (_vte_pangocairo_get_char_width), (_vte_pangocairo_has_bold),
+            (_vte_pangocairo_draw_text), (_vte_pangocairo_draw_has_char):
+            * src/vteskel.c:
+            Try bold font before pseudo-bolding.
+    
+    
+    svn path=/trunk/; revision=2371
+
+ ChangeLog           |   19 +++++++++++++++++++
+ src/vte.c           |   46 ++++++++++++++++++----------------------------
+ src/vtedraw.c       |   45 +++++++++++++++++++++++++++++++--------------
+ src/vtedraw.h       |   20 ++++++++++++--------
+ src/vtepangocairo.c |   47 +++++++++++++++++++++++++++++++++++++++--------
+ src/vteskel.c       |    1 +
+ 6 files changed, 120 insertions(+), 58 deletions(-)
+
+commit dafe17256dd8c687cddb10305b6913dc870cc651
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Feb 8 14:20:25 2009 +0000
+
+    Ignore this
+    
+    svn path=/trunk/; revision=2370
+
+ .gitignore |   97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 97 insertions(+), 0 deletions(-)
+
+commit 94f13bb62629a567c2814477c7b23f01dbca2fca
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Feb 2 15:09:20 2009 +0000
+
+       Bug 570208 – vte fails to build outside source tree
+    
+       * python/Makefile.am: Build fix.
+    
+    svn path=/trunk/; revision=2369
+
+ ChangeLog          |    6 ++++++
+ python/Makefile.am |   12 ++++++------
+ 2 files changed, 12 insertions(+), 6 deletions(-)
+
+commit 3ada3abd77c76e3582af0859995c0909c27ce1ce
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Feb 1 22:26:06 2009 +0000
+
+    Remove marshalers that have stock ones in gobject, and use the stock ones
+    
+       * src/marshal.list:
+       * src/vte.c: (vte_terminal_class_init):
+       * src/vtebg.c: (vte_bg_class_init): Remove marshalers that have stock
+       ones in gobject, and use the stock ones instead.
+    
+    svn path=/trunk/; revision=2368
+
+ ChangeLog        |    7 +++++++
+ src/marshal.list |    7 ++-----
+ src/vte.c        |   52 ++++++++++++++++++++++++++--------------------------
+ src/vtebg.c      |    2 +-
+ 4 files changed, 36 insertions(+), 32 deletions(-)
+
+commit a06afbb1df1569b38b421193a4e035d624537bd4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Feb 1 06:18:43 2009 +0000
+
+    Require GTK+ >= 2.14, for "gtk-fontconfig-timestamp" settings property.
+    
+    2009-02-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in: Require GTK+ >= 2.14, for "gtk-fontconfig-timestamp"
+            settings property.
+    
+            * src/vte.c (vte_terminal_style_set),
+            (vte_terminal_set_font_full_internal), (vte_terminal_init),
+            (vte_terminal_class_init):  Use style_set class method instead of
+            hooking to style-set signal.  Also, proceed to recreating the font
+            even if neither description nor antialias setting changed.  This is
+            necessary to pick up fontconfig configuration changes as well as font
+            install/uninstallations or GNOME font preferences changes.
+    
+            * src/vtepangocairo.c (font_info_destroy),
+            (fontconfig_timestamp_quark),
+            (vte_pango_cairo_set_fontconfig_timestamp),
+            (vte_pango_cairo_get_fontconfig_timestamp), (context_hash),
+            (context_equal), (font_info_create_for_context),
+            (font_info_create_for_screen):
+            Use fontconfig_timestamp in the font object hash, such that we respond
+            to fontconfig configuration changes.
+    
+    
+    svn path=/trunk/; revision=2367
+
+ ChangeLog           |   22 ++++++++++++++++++++++
+ configure.in        |    2 +-
+ src/vte.c           |   24 ++++++++++--------------
+ src/vteapp.c        |    2 +-
+ src/vtepangocairo.c |   47 +++++++++++++++++++++++++++++++++++++++--------
+ 5 files changed, 73 insertions(+), 24 deletions(-)
+
+commit 1fa6a721bcd1491d5faa82b13af376abc9f2ee6f
+Author: Changwoo Ryu <cwryu src gnome org>
+Date:   Thu Jan 29 12:38:14 2009 +0000
+
+    Updated Korean translation
+    
+    svn path=/trunk/; revision=2366
+
+ po/ChangeLog |    4 ++
+ po/ko.po     |   90 +++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 46 insertions(+), 48 deletions(-)
+
+commit 58bc3a942f198a1a8788553ca72c19d7c1702b74
+Author: Saleem Abdulrasool <asaleem src gnome org>
+Date:   Wed Jan 28 03:47:11 2009 +0000
+
+    fix bug #548272
+    
+    svn path=/trunk/; revision=2365
+
+ ChangeLog    |    5 +++++
+ src/vteseq.c |   18 ++++++++++++------
+ 2 files changed, 17 insertions(+), 6 deletions(-)
+
+commit 916094b4dcab454f5820ca5350abc81f4d51ad4c
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jan 20 19:25:13 2009 +0000
+
+    Use GDK_BLANK_CURSOR for the invisible cursor on gtk+ >= 2.15.
+    
+       * src/vte.c: (vte_terminal_realize): Use GDK_BLANK_CURSOR for the
+       invisible cursor on gtk+ >= 2.15.
+    
+    svn path=/trunk/; revision=2364
+
+ ChangeLog |    5 +++++
+ src/vte.c |   12 ++++++++++--
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+commit bcafeb8b5f6ef9eac9a83c37a3f263a84b1932b8
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jan 20 18:44:30 2009 +0000
+
+    Use ttyname() as recommended in the glibc manual. Bug #565688.
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (init_term_with_defaults),
+       (open_ptys), (close_pty_pair): Use ttyname() as recommended in the
+       glibc manual. Bug #565688.
+    
+    svn path=/trunk/; revision=2363
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |   28 +++-------------------------
+ 2 files changed, 9 insertions(+), 25 deletions(-)
+
+commit 3b22bcc8605a66f43135902859473a01e7b76f27
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 6 20:18:36 2009 +0000
+
+    Convert some g_strdup_printf() uses to g_snprintf() when the buffer was
+    
+    2009-01-06  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_parse_color),
+            (vte_sequence_handler_change_color),
+            (vte_sequence_handler_request_terminal_parameters),
+            (vte_sequence_handler_send_primary_device_attributes),
+            (vte_sequence_handler_send_secondary_device_attributes),
+            (vte_sequence_handler_device_status_report),
+            (vte_sequence_handler_dec_device_status_report),
+            (vte_sequence_handler_window_manipulation),
+            (vte_sequence_handler_change_cursor_color):
+            Convert some g_strdup_printf() uses to g_snprintf() when
+            the buffer was fixed-size and freed immediately.
+            Also fix g_snprintf usage by not using its return value.
+            *If* the buffer is short, the returned len is not what we
+            are interested in.
+            Finally, pass -1 as len to vte_terminal_feed_child() in
+            most places.  This means a bit more work for the processor,
+            but cleaner code.
+    
+    
+    svn path=/trunk/; revision=2362
+
+ ChangeLog    |   20 ++++++++
+ src/vteseq.c |  155 ++++++++++++++++++++++++++--------------------------------
+ 2 files changed, 90 insertions(+), 85 deletions(-)
+
+commit 7e3cc8b3e89efe87e7acf3a13df3f66666fc7acb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 6 19:04:59 2009 +0000
+
+    Bug 566795 – VTE fails to build in trunk
+    
+    2009-01-06  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 566795 – VTE fails to build in trunk
+    
+            * src/vteseq.c (vte_sequence_handler_change_cursor_color):
+            Fix build.
+    
+    
+    svn path=/trunk/; revision=2361
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit ca81ba9319f71f97f12652d56910648e1a706818
+Author: Saleem Abdulrasool <asaleem src gnome org>
+Date:   Tue Jan 6 06:51:58 2009 +0000
+
+    add support for OSC 4 and OSC 12
+    
+    svn path=/trunk/; revision=2360
+
+ ChangeLog          |   10 +++
+ src/vteseq-n.gperf |    4 +-
+ src/vteseq.c       |  192 +++++++++++++++++++++++++++++++++++++++++++---------
+ 3 files changed, 173 insertions(+), 33 deletions(-)
+
+commit 67401849c6d713f9c4fd5ec8a4ffb92d61c13048
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 6 05:39:42 2009 +0000
+
+    Bug 566730 – vte_terminal_set_color_cursor() calls invalidate_all but it
+    
+    2009-01-06  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 566730 – vte_terminal_set_color_cursor() calls invalidate_all but
+            it doesn't have to
+    
+            * src/vte.c (vte_terminal_set_color_internal): If color is VTE_CUR_BG,
+            invalidate_cursor_once instead of invalidate_all.
+    
+    
+    svn path=/trunk/; revision=2359
+
+ ChangeLog |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 75e3a47bc882b9204df914db85bdbad913a6c3b6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 6 05:39:17 2009 +0000
+
+    If color is VTE_CUR_BG, invalidate_cursor_once instead of invalidate_all.
+    
+    2009-01-06  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_set_color_internal): If color is VTE_CUR_BG,
+            invalidate_cursor_once instead of invalidate_all.
+    
+    
+    svn path=/trunk/; revision=2358
+
+ ChangeLog |    5 +++++
+ src/vte.c |    9 ++++++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 47d142ce5717427fe7dd28c8b3f001829d9a7974
+Author: Halton Huo <halton huo sun com>
+Date:   Fri Dec 26 14:48:23 2008 +0000
+
+    Bug 565679 - alloca is discouraged
+    
+    2008-12-26  Halton Huo  <halton huo sun com>
+    
+       Bug 565679 - alloca is discouraged
+    
+       * gnome-pty-helper/gnome-pty-helper.c: use malloc replace alloca.
+    
+    
+    svn path=/trunk/; revision=2357
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |    5 ++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 49aa59927ede031871d36903ff29e3d97d3cfd1c
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Dec 26 12:37:42 2008 +0000
+
+    Fix the same typo also in the libinfo check.
+    
+       * configure.in: Fix the same typo also in the libinfo check.
+    
+    svn path=/trunk/; revision=2356
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 7f53406e47e7b818c2b80c2857c71b6c59dbd3a0
+Author: Halton Huo <halton huo sun com>
+Date:   Fri Dec 26 10:34:18 2008 +0000
+
+    Bug 565675 - typo in configure.in cause ncurses checking fail
+    
+    2008-12-26  Halton Huo  <halton huo sun com>
+    
+       Bug 565675 - typo in configure.in cause ncurses checking fail
+    
+       * configure.in: Fix typo for ncurses. s/ncuses/ncurses
+    
+    
+    svn path=/trunk/; revision=2355
+
+ ChangeLog    |    6 ++++++
+ configure.in |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit dc6e4b781ec06fcfd097c0d2878c5f300fd0ef5e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 26 04:13:33 2008 +0000
+
+    Fix warnings.
+    
+    2008-12-25  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/interpret.c (main):
+            * src/slowcat.c (catfile):
+            * src/table.c (_vte_table_addi), (_vte_table_add):
+            * src/trie.c (_vte_trie_matchx):
+            * src/vte.c (_vte_invalidate_cell), (_vte_terminal_insert_char):
+            * src/vteaccess.c (offset_from_xy),
+            (vte_terminal_accessible_finalize),
+            (vte_terminal_accessible_get_text),
+            (vte_terminal_accessible_get_text_somewhere):
+            * src/vteapp.c (main):
+            * src/vtebg.c (vte_bg_cache_item_free), (vte_bg_cache_add):
+            Fix warnings.
+    
+    
+    svn path=/trunk/; revision=2354
+
+ ChangeLog       |   15 +++++++++++++++
+ src/interpret.c |    9 +++++----
+ src/slowcat.c   |    3 ++-
+ src/table.c     |    9 +++++----
+ src/trie.c      |    2 +-
+ src/vte.c       |    6 +++---
+ src/vteaccess.c |   30 +++++++++++++++---------------
+ src/vteapp.c    |   12 ++++++++----
+ src/vtebg.c     |   12 ++++++------
+ 9 files changed, 60 insertions(+), 38 deletions(-)
+
+commit 0cdef5173bdcaa04d3e13edfbc1279ae6edaef4c
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 26 03:11:32 2008 +0000
+
+    Minor.
+    
+    svn path=/trunk/; revision=2353
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 38cafc2aaf4aae3e6e12c995b491f91207794078
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 26 03:10:39 2008 +0000
+
+    Bug 565663 – compile failure because use static function in another .h
+    
+    2008-12-25  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 565663 – compile failure because use static function in another .h
+            file
+    
+            * src/vte.c: Don't mark extern function inline.
+    
+    
+    svn path=/trunk/; revision=2352
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 811c7e117e172140b43476fc01400ad8898bdb74
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Dec 17 08:26:19 2008 +0000
+
+    Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+    
+    2008-12-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+    
+            * src/vteunistr.c:
+            Limit to 9 combining marks per unistr, and a total of 100,000 unistrs.
+            All to prevent OOM.
+    
+    
+    svn path=/trunk/; revision=2351
+
+ ChangeLog       |    8 ++++++++
+ src/vteunistr.c |   10 +++++++---
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+commit c1be75bcf1dac887972c877fc0c900ce32bb9544
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 15 20:50:32 2008 +0000
+
+    Released 0.19.4.
+    
+    2008-12-15  Behdad Esfahbod  <behdad gnome org>
+    
+            * NEWS:
+            * configure.in:
+            Released 0.19.4.
+    
+    
+    svn path=/trunk/; revision=2349
+
+ ChangeLog    |    6 ++++++
+ NEWS         |   15 +++++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 23 insertions(+), 2 deletions(-)
+
+commit baddcfe4934b8e87717c1dd9d02e75e53fc02b98
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 15 20:45:11 2008 +0000
+
+    Fix make check.
+    
+    svn path=/trunk/; revision=2348
+
+ doc/reference/vte-docs.sgml    |    2 ++
+ doc/reference/vte-sections.txt |   11 +++++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 6afcfe2bce6eeb82ab08efe99003ecc3cd2c1200
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 15 20:30:18 2008 +0000
+
+    Fix doc syntax
+    
+    svn path=/trunk/; revision=2347
+
+ src/vteunistr.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit ca92a5e890704d87d6f5d5b9753c57994dc8dfa6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 15 01:08:12 2008 +0000
+
+    Bug 564535 – check for gperf on build
+    
+    2008-12-14  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 564535 – check for gperf on build
+    
+            * autogen.sh: Check for gperf.
+    
+    
+    svn path=/trunk/; revision=2346
+
+ ChangeLog  |    6 ++++++
+ autogen.sh |    7 +++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit de98fae160f3dab8f4812ab1baeddf02fab55d90
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 12 11:29:40 2008 +0000
+
+    Typos
+    
+    svn path=/trunk/; revision=2345
+
+ src/vteunistr.c |   22 +++++++++++-----------
+ 1 files changed, 11 insertions(+), 11 deletions(-)
+
+commit d453dce12191a1ee19fa70d83bab013999006385
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 12 11:20:31 2008 +0000
+
+    Document vteunistr.
+    
+    2008-12-12  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/Makefile.am:
+            * src/vteunistr.c (unistr_comp_hash), (unistr_comp_equal),
+            (_vte_unistr_append_unichar), (_vte_unistr_get_base),
+            (_vte_unistr_append_to_string), (_vte_unistr_strlen):
+            * src/vteunistr.h:
+            Document vteunistr.
+    
+    
+    svn path=/trunk/; revision=2344
+
+ ChangeLog                 |    9 +++
+ doc/reference/Makefile.am |    1 +
+ src/vteunistr.c           |  120 +++++++++++++++++++++++++++++----------------
+ src/vteunistr.h           |   52 ++++++++++++++++++--
+ 4 files changed, 134 insertions(+), 48 deletions(-)
+
+commit beb61da0f7d5d1730f532cc2eb37df507a267a87
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 12 09:22:48 2008 +0000
+
+    .
+    
+    svn path=/trunk/; revision=2343
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9bbfcb27af874137d81728b5217de3f386a8f0da
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 12 09:22:06 2008 +0000
+
+    Minor.
+    
+    svn path=/trunk/; revision=2342
+
+ ChangeLog       |    4 ++++
+ src/vte.c       |    6 ++++--
+ src/vteunistr.c |    2 ++
+ src/vteunistr.h |    4 ++--
+ 4 files changed, 12 insertions(+), 4 deletions(-)
+
+commit a902f8eb1112e59109ff14520706bb75f3cf6790
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 12 09:04:00 2008 +0000
+
+    Avoid pointers in the const array.
+    
+    2008-12-12  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Avoid pointers in the
+            const array.
+    
+    
+    svn path=/trunk/; revision=2341
+
+ ChangeLog     |    5 +++++
+ src/iso2022.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 646a71162cabe13f96627ea6cbeb91864e9fc625
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 12 06:57:09 2008 +0000
+
+    Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+    
+    2008-12-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+    
+            * src/vteunistr.c:
+            * src/vteunistr.h:
+            An extended UTF-32 type that assigns numeric values to UTF-8 sequences
+            on demand.  Can be used to efficiently store a string, instead of one
+            character, at each cell.
+    
+            * src/vte-private.h:
+            * src/vte.c:
+            * src/vtedraw.c:
+            * src/vtedraw.h:
+            * src/vtepangocairo.c:
+            Port to vteunistr instead of gunichar for cell content.
+    
+            * src/vte.c:
+            Handle zerowidth insertions by sticking it on the previous cell.
+    
+            * src/iso2022.h:
+            * src/iso2022.c:
+            Cleanup ambiguous-width handling.  Handle zero-width chars.
+    
+    
+    svn path=/trunk/; revision=2340
+
+ ChangeLog           |   26 +++++++++-
+ src/Makefile.am     |    2 +
+ src/iso2022.c       |   90 +++++++++++++++++-----------------
+ src/iso2022.h       |    5 +-
+ src/vte-private.h   |    3 +-
+ src/vte.c           |  103 ++++++++++++++++++++++++++++++++------
+ src/vtedraw.c       |    6 +-
+ src/vtedraw.h       |   11 ++--
+ src/vtepangocairo.c |  127 +++++++++++++++++++++++++-----------------------
+ src/vteunistr.c     |  136 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteunistr.h     |   47 ++++++++++++++++++
+ 11 files changed, 421 insertions(+), 135 deletions(-)
+
+commit 2d0c1717a14e5c735877d45d79668d5519f0e838
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Dec 11 14:05:01 2008 +0000
+
+    Typo
+    
+    svn path=/trunk/; revision=2339
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 95c425106ca9a3293ca5c2e8ac630e13d4b9e85f
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Dec 11 13:50:33 2008 +0000
+
+       Bug 564057 – src/pty.c does not compile with
+       --disable-gnome-pty-helper
+    
+       * src/pty.c: Build with --disable-gnome-pty-helper. Patch by
+       yselkowitz at users.sourceforge.net .
+    
+    svn path=/trunk/; revision=2338
+
+ ChangeLog |    8 ++++++++
+ src/pty.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 8756ffe9b4f054b6a9622537a02cfd1d614fe176
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Dec 11 13:50:25 2008 +0000
+
+    Update set-scroll-adjustement docs.
+    
+       * src/vte.c: (vte_terminal_class_init): Update set-scroll-adjustement
+       docs.
+    
+    svn path=/trunk/; revision=2337
+
+ ChangeLog |    5 +++++
+ src/vte.c |   11 +++++------
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 207f0ebfce521535f55f0f7bdc16912fbbec3f85
+Author: Paolo Borelli <pborelli katamail com>
+Date:   Wed Dec 10 21:51:27 2008 +0000
+
+    Bug 562695 - ship pkg-config file for python bindings
+    
+    2008-12-10  Paolo Borelli  <pborelli katamail com>
+    
+       Bug 562695 - ship pkg-config file for python bindings
+    
+       * configure.in:
+            * python/Makefile.am:
+       * python/pyvte.pc.in:
+    
+    
+    svn path=/trunk/; revision=2336
+
+ ChangeLog          |    8 ++++++++
+ configure.in       |    1 +
+ python/Makefile.am |    8 +++++++-
+ python/pyvte.pc.in |   11 +++++++++++
+ 4 files changed, 27 insertions(+), 1 deletions(-)
+
+commit 63b25ac4c6669ffd33cfd0dac8913e3a029251d3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 8 20:17:00 2008 +0000
+
+    Bug 563752 – pangocairo backend recreates cairo_surface_t for background
+    
+    2008-12-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 563752 – pangocairo backend recreates cairo_surface_t for
+            background drawing
+    
+            * src/vte.c (vte_terminal_paint),
+            (vte_terminal_set_scroll_background),
+            (vte_terminal_background_update):
+            * src/vtedraw.c (_vte_draw_new), (_vte_draw_set_background_solid),
+            (_vte_draw_set_background_image),
+            (_vte_draw_set_background_scroll), (_vte_draw_draw_rectangle):
+            * src/vtedraw.h:
+            * src/vtepangocairo.c (_vte_pangocairo_destroy),
+            (_vte_pangocairo_set_background_solid),
+            (_vte_pangocairo_set_background_image),
+            (_vte_pangocairo_set_background_scroll), (_vte_pangocairo_clear),
+            (_vte_pangocairo_clip), (set_source_color_alpha):
+            * src/vteskel.c:
+            Cleanup vte_draw background API.  Use a cached cairo_pattern_t in
+            pangocairo backend.
+    
+            Also, queue background update on scroll_background change.
+    
+    
+    svn path=/trunk/; revision=2335
+
+ ChangeLog           |   23 +++++++++
+ src/vte.c           |   17 ++++---
+ src/vtedraw.c       |   55 ++++++++--------------
+ src/vtedraw.h       |   32 +++++--------
+ src/vtepangocairo.c |  127 +++++++++++++++++++++++++++++++++-----------------
+ src/vteskel.c       |    2 +
+ 6 files changed, 152 insertions(+), 104 deletions(-)
+
+commit d849a02007d2dffdf78c55afea4bf1ffcc526a31
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 8 04:06:05 2008 +0000
+
+    Bug 163213 – Cursor should remain visible when selected
+    
+    2008-12-07  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 163213 – Cursor should remain visible when selected
+    
+            * src/vte.c (vte_terminal_paint_cursor): Do a reverse hollow cursor
+            if selected but not focused.
+    
+    
+    svn path=/trunk/; revision=2334
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 3411e97b89c09f3f692d73d2994dc52ffee8164b
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Dec 5 18:58:17 2008 +0000
+
+    Don't modify source_pixbuf. If we're going to change the saturation, first
+    
+       * src/vtebg.c: (vte_bg_get_pixmap): Don't modify source_pixbuf. If
+       we're going to change the saturation, first make a copy. Fixes
+       switching background type between fauxtransparency and image in
+       gnome-terminal trunk.
+    
+    svn path=/trunk/; revision=2333
+
+ ChangeLog   |    7 +++++++
+ src/vtebg.c |   10 +++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 1862b94fbc5c02dde35c0450e939986e8a097710
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 18:35:29 2008 +0000
+
+    Fix scrolling offset. Ray Strode reported that background offset was being
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (_vte_pangocairo_clear): Fix scrolling offset.
+            Ray Strode reported that background offset was being done incorrectly.
+            A negation did it.
+    
+    
+    svn path=/trunk/; revision=2332
+
+ ChangeLog           |    6 ++++++
+ src/vtepangocairo.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 8ff1af9ae267b8893bcc58f7cfebc88e63d549e1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 18:20:41 2008 +0000
+
+    Hook up perf/.
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * Makefile.am:
+            * configure.in:
+            Hook up perf/.
+    
+            Also adjust svn:ignore props.
+    
+    
+    svn path=/trunk/; revision=2331
+
+ ChangeLog    |    8 ++++++++
+ Makefile.am  |    2 +-
+ configure.in |    1 +
+ 3 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 38744c4de50fc6b2f32957abfadd51dacc9c355b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 18:08:07 2008 +0000
+
+    Released 0.19.3.
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * NEWS:
+            * configure.in:
+            Released 0.19.3.
+    
+    
+    svn path=/trunk/; revision=2330
+
+ ChangeLog    |    6 ++++++
+ NEWS         |    9 ++++++++-
+ configure.in |    4 ++--
+ 3 files changed, 16 insertions(+), 3 deletions(-)
+
+commit 6dafe2bd89db102f8a7666908f040115e2767d43
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 18:02:21 2008 +0000
+
+    Always call g_array_new() with clear flag set. It incurs no overhead but
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_new_row_data), (_vte_new_row_data_sized),
+            (vte_terminal_match_contents_refresh),
+            (vte_terminal_process_incoming), (vte_terminal_init),
+            (vte_terminal_set_word_chars):
+            Always call g_array_new() with clear flag set.  It incurs no overhead
+            but avoids heisenbugs.
+    
+    
+    svn path=/trunk/; revision=2329
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   20 +++++---------------
+ 2 files changed, 14 insertions(+), 15 deletions(-)
+
+commit 79b2fd9eafdaa40e4de9952366403ab37b0739a0
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 17:58:05 2008 +0000
+
+    Use structure assignment instead of memcpy().
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_terminal_insert_char):
+            * src/vteseq.c (vte_sequence_handler_screen_alignment_test):
+            Use structure assignment instead of memcpy().
+    
+    
+    svn path=/trunk/; revision=2328
+
+ ChangeLog    |    6 ++++++
+ src/vte.c    |    2 +-
+ src/vteseq.c |    2 +-
+ 3 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 51a2447ac830a017a07db6c71e012758fc0b0528
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 17:56:48 2008 +0000
+
+    Remove unneeded checks. They were masking bugs.
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor): Remove
+            unneeded checks.  They were masking bugs.
+    
+    
+    svn path=/trunk/; revision=2327
+
+ ChangeLog |    5 +++++
+ src/vte.c |   12 ++----------
+ 2 files changed, 7 insertions(+), 10 deletions(-)
+
+commit fc0f0d26e7955e1aa7a155a4ae8a799ebfbb1d83
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 17:53:49 2008 +0000
+
+    Red Hat Bug 474618 - gnome-terminal sometime leaves empty begining of the
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            Red Hat Bug 474618 -  gnome-terminal sometime leaves empty begining
+            of the line
+    
+            * src/vte.c (_vte_terminal_insert_char): Really fix the bug this time.
+    
+    
+    svn path=/trunk/; revision=2326
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    5 +++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit ef2d5fed42be09def0d96603a840451c9f10aa0a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 15:04:24 2008 +0000
+
+    Build fixes.
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            Build fixes.
+    
+            * NEWS:
+            * configure.in:
+            Released 0.19.2.
+    
+    
+    svn path=/trunk/; revision=2324
+
+ ChangeLog |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 71df6b432b99b8882eef2f8088fbd9f01dada342
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 5 15:03:27 2008 +0000
+
+    More build fixes
+    
+    svn path=/trunk/; revision=2323
+
+ src/Makefile.am |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit af34fea9546f00378e4784764c7bf1afb60717ca
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 5 14:52:42 2008 +0000
+
+    Fix build.
+    
+    svn path=/trunk/; revision=2322
+
+ src/reaper.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit f33eb5d98c542a672ecf0fbb0875a1b03a28034c
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Dec 5 14:30:48 2008 +0000
+
+    Fix version numbers here.
+    
+    svn path=/trunk/; revision=2321
+
+ NEWS |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 6df0f80c2d15c9dbe2bb6ad5837155dd6f75a33b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 14:29:49 2008 +0000
+
+    Released 0.19.2.
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * NEWS:
+            * configure.in:
+            Released 0.19.2.
+    
+    
+    svn path=/trunk/; revision=2320
+
+ ChangeLog    |   10 ++++++++--
+ NEWS         |   21 +++++++++++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 31 insertions(+), 4 deletions(-)
+
+commit 258546a8f8c0a3c6a3d3ce377234448b45ca83b5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 5 14:23:28 2008 +0000
+
+    Bug 474618 - gnome-terminal sometime leaves empty begining of the line
+    
+    2008-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+             Bug 474618 -  gnome-terminal sometime leaves empty begining of the
+             line
+    
+            * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor): continue
+            instead of break'ing out of the loop.
+    
+    
+    svn path=/trunk/; revision=2319
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 97b34fddd90537c17a5ff66a5a92596b34f20c6c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Dec 4 21:25:03 2008 +0000
+
+    Bug 563274 – Misspelled word in src code
+    
+    2008-12-04  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 563274 – Misspelled word in src code
+    
+            * src/vte.c (vte_terminal_process_incoming): Fix typo.
+    
+    
+    svn path=/trunk/; revision=2318
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 7d03d88f40ee4b8e9a0d3f9a391bca231a31cc62
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Dec 3 00:56:02 2008 +0000
+
+    Bug 563024 – In alternate-screen, selection can copy out of screen
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 563024 – In alternate-screen, selection can copy out of screen
+            boundaries
+    
+            * src/vte.c (vte_terminal_extend_selection_expand),
+            (vte_terminal_extend_selection): Make sure current selection row is in
+    t
+    he
+            visible screen.
+    
+            I have a deja vu of fixing this bug like two years ago...
+    
+    
+    svn path=/trunk/; revision=2317
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   22 ++++++++++++++++++++--
+ 2 files changed, 31 insertions(+), 2 deletions(-)
+
+commit 0094f898d9ef249c0b48f95b965385fb14529c6b
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 22:10:19 2008 +0000
+
+       Bug 552096 – Detect tgetent if provided by libtinfo
+    
+       * configure.in: Rewrote tgetent checks to be more readable. Also check
+       for tgetent in libtinfo.
+       * src/keymap.c: (_vte_keymap_map), (_vte_keymap_key_is_modifier):
+       * src/ssfe.c: Adjust includes accordingly.
+    
+    svn path=/trunk/; revision=2316
+
+ ChangeLog    |    9 +++++++++
+ configure.in |   51 ++++++++++++++++++++++++++++++++++++---------------
+ src/keymap.c |   35 ++++++++++++-----------------------
+ src/ssfe.c   |   22 ++++++++++------------
+ 4 files changed, 67 insertions(+), 50 deletions(-)
+
+commit a1bac9039b195be3dfee1607adc5d8b6d9659a55
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 22:10:13 2008 +0000
+
+    Show the correct version in Since: and Deprecated: annotations.
+    
+       * src/vte.c: (vte_terminal_class_init): Show the correct version in
+       Since: and Deprecated: annotations.
+    
+    svn path=/trunk/; revision=2315
+
+ ChangeLog |    5 ++++
+ src/vte.c |   78 ++++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 44 insertions(+), 39 deletions(-)
+
+commit d1c56ce8993a6543d817f5561f873fa428efa7c3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 20:38:06 2008 +0000
+
+    Don't do fancy rounding for row selection, only for column.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_start_selection),
+            (vte_terminal_extend_selection): Don't do fancy rounding for row
+            selection, only for column.
+    
+    
+    svn path=/trunk/; revision=2314
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   47 ++++++++++++++---------------------------------
+ 2 files changed, 20 insertions(+), 33 deletions(-)
+
+commit c15f5ce6b62833aa848e29bec5d097eeb5a6bd80
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 20:29:09 2008 +0000
+
+    Call function instead of open coding.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_invalidate_selection),
+            (vte_terminal_start_selection): Call function instead of open coding.
+    
+    
+    svn path=/trunk/; revision=2313
+
+ ChangeLog |    5 +++++
+ src/vte.c |   33 ++++++++++++---------------------
+ 2 files changed, 17 insertions(+), 21 deletions(-)
+
+commit 36e0a0aa08f274497f03869a1d7eb84a5cef992d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 20:16:27 2008 +0000
+
+    Cache the full ASCII range if Latin uses the default language.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.h:
+            * src/vtepangocairo.c (font_info_cache_ascii):
+            Cache the full ASCII range if Latin uses the default language.
+    
+    
+    svn path=/trunk/; revision=2312
+
+ ChangeLog           |    6 ++++++
+ src/vtedraw.h       |   10 ++++++++--
+ src/vtepangocairo.c |   15 ++++++++++++---
+ 3 files changed, 26 insertions(+), 5 deletions(-)
+
+commit 4a3768afa819802f533c8ec73cc166010b368000
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 19:57:47 2008 +0000
+
+    Respect PangoLanguage set on a widget's PangoContext.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (context_hash), (context_equal),
+            (font_info_create_for_context), (font_info_create_for_screen),
+            (font_info_create_for_widget): Respect PangoLanguage set on a widget's
+            PangoContext.
+    
+    
+    svn path=/trunk/; revision=2311
+
+ ChangeLog           |    7 +++++++
+ src/vtepangocairo.c |   24 ++++++++++++++++--------
+ 2 files changed, 23 insertions(+), 8 deletions(-)
+
+commit 86c55a0b613311fbf4c7eab3cfa40649d7c131bb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 19:14:26 2008 +0000
+
+    Remove CJK fullwidth measurement hacks. Pango doesn't need these. We're
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_measure_font): Remove CJK fullwidth
+            measurement hacks.  Pango doesn't need these.  We're down to one
+            FcFontSort() instead of two during initialization.
+    
+    
+    svn path=/trunk/; revision=2310
+
+ ChangeLog           |    6 ++++++
+ src/vtepangocairo.c |   27 +++------------------------
+ 2 files changed, 9 insertions(+), 24 deletions(-)
+
+commit 8ad856610c11cfe877eb7baca8c13eeb1a65e5fd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 18:36:33 2008 +0000
+
+    Bug 559818 – redundant selection-changed signal on deselection
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 559818 – redundant selection-changed signal on deselection
+    
+            * src/vte.c (vte_terminal_start_selection),
+            (vte_terminal_extend_selection): Fix all redundant selection-changed
+            signals.  Including those on double-click.
+    
+    
+    svn path=/trunk/; revision=2309
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   14 ++++++++------
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+commit 28995f5240a7a14795de94578c50345cd08bb8b6
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Dec 2 18:22:39 2008 +0000
+
+    Add missing I_() decorator
+    
+    svn path=/trunk/; revision=2308
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d9c2e0eabe14ec07dfe4d06f1f474c5952f2c6a4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 17:59:11 2008 +0000
+
+    Rewrite text selection. In particular, fix block_mode.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c:
+            Rewrite text selection.  In particular, fix block_mode.
+    
+    
+    svn path=/trunk/; revision=2307
+
+ ChangeLog         |    6 +
+ src/vte-private.h |    3 +-
+ src/vte.c         |  559 ++++++++++++++++++++++++++++-------------------------
+ 3 files changed, 301 insertions(+), 267 deletions(-)
+
+commit 66ef6a3d640343d56167394e4447a80e729dcd8c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 15:43:43 2008 +0000
+
+    Update.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * HACKING: Update.
+    
+    
+    svn path=/trunk/; revision=2306
+
+ ChangeLog |    4 ++++
+ HACKING   |   14 ++++++++++++++
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit ea2f60c5587f34deeb6fdef293e44adef89e1522
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 15:40:12 2008 +0000
+
+    Mouse tracking cleanup.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_set_pointer_visible),
+            (vte_terminal_get_mouse_tracking_info),
+            (vte_terminal_send_mouse_button_internal),
+            (vte_terminal_maybe_send_mouse_button),
+            (vte_terminal_maybe_send_mouse_drag), (vte_terminal_motion_notify),
+            (vte_terminal_button_press), (vte_terminal_button_release),
+            (vte_terminal_scroll), (vte_terminal_reset):
+            * src/vteseq.c (vte_sequence_handler_decset_internal):
+            Mouse tracking cleanup.
+    
+    
+    svn path=/trunk/; revision=2305
+
+ ChangeLog         |   13 +++++
+ src/vte-private.h |   18 ++++--
+ src/vte.c         |  151 ++++++++++++++++++++++++-----------------------------
+ src/vteseq.c      |   20 ++++----
+ 4 files changed, 103 insertions(+), 99 deletions(-)
+
+commit 51c0a9c523b7a5651593236a7894370aeee2d3f9
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Dec 2 14:55:55 2008 +0000
+
+    Minor
+    
+    svn path=/trunk/; revision=2304
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit ec2d1eeb60cff564461ef4f0c0c1de2590e9abab
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 14:53:59 2008 +0000
+
+    Add -Wno-switch-enum warning flag as we are not -Wswitch-enum clean.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in: Add -Wno-switch-enum warning flag as we are not
+            -Wswitch-enum clean.
+    
+    
+    svn path=/trunk/; revision=2303
+
+ ChangeLog    |    5 +++++
+ configure.in |    5 +----
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 1501d6c5893cfd57ba1bba6f26c04eb7289529b5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 14:45:30 2008 +0000
+
+    Cut one third of the 400-line function out into a function of its own.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_extend_selection_on_type),
+            (vte_terminal_extend_selection):
+            Cut one third of the 400-line function out into a function of its own.
+    
+    
+    svn path=/trunk/; revision=2302
+
+ ChangeLog |    6 ++
+ src/vte.c |  275 ++++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 152 insertions(+), 129 deletions(-)
+
+commit 0ae3274d3b2827760a89e28f04ddcef93f2e3341
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 14:33:57 2008 +0000
+
+    Revert previous change.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_extend_selection): Revert previous change.
+    
+    
+    svn path=/trunk/; revision=2301
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ----
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit ed8607b74bb6d53b844ab740422b3aef89e2f915
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 13:54:42 2008 +0000
+
+    Add a shortcircuit check.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_extend_selection):  Add a shortcircuit
+            check.
+    
+    
+    svn path=/trunk/; revision=2300
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 ++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit df9641608756c1ca56deda15ae968400652728d5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 13:49:21 2008 +0000
+
+    Change mouse coordinates type from double to long.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_send_mouse_button_internal),
+            (vte_terminal_maybe_send_mouse_drag), (cursor_inside_match),
+            (vte_terminal_match_hilite_show),
+            (vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
+            (vte_terminal_extend_selection), (vte_terminal_autoscroll),
+            (vte_terminal_motion_notify), (vte_terminal_button_press),
+            (vte_terminal_button_release):
+            Change mouse coordinates type from double to long.
+    
+    
+    svn path=/trunk/; revision=2299
+
+ ChangeLog         |   12 ++++++
+ src/vte-private.h |    4 +-
+ src/vte.c         |  110 ++++++++++++++++++++++++++--------------------------
+ 3 files changed, 69 insertions(+), 57 deletions(-)
+
+commit 543ac083f713b3cf9c0eb85c8b12ea9155ba66ab
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 13:21:31 2008 +0000
+
+    Cleanup selection code a bit more.
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_start_selection),
+            (vte_terminal_extend_selection):
+            Cleanup selection code a bit more.
+    
+    
+    svn path=/trunk/; revision=2298
+
+ ChangeLog         |    7 +++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   42 ++++++++++++------------------------------
+ 3 files changed, 20 insertions(+), 31 deletions(-)
+
+commit 5b53f739162260fa7b0efa2f7fc3ffde84d6b3d8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 13:08:16 2008 +0000
+
+    Merge selection_origin and selection_restart_origin as only one was being
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_start_selection),
+            (vte_terminal_extend_selection):
+            Merge selection_origin and selection_restart_origin as only one was
+            being used at a time.
+    
+    
+    svn path=/trunk/; revision=2297
+
+ ChangeLog         |    8 ++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |    6 +-----
+ 3 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 47cffc6431a47e04001cc8576c892b6f666a8213
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 12:51:10 2008 +0000
+
+    Bug 471480 – select single character Bug 110371 – Cannot select
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 471480 – select single character
+            Bug 110371 – Cannot select newline at end of full line
+    
+            * src/vte-private.h:
+            * src/vte.c (find_start_column), (find_end_column),
+            (vte_terminal_start_selection), (math_div),
+            (vte_terminal_extend_selection):
+            Make selection work more I-beam-like.
+    
+    
+    svn path=/trunk/; revision=2296
+
+ ChangeLog         |   11 +++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   80 ++++++++++++++++++++++++++++++++++++++++------------
+ 3 files changed, 73 insertions(+), 20 deletions(-)
+
+commit c128acf052463ed454a951012b245d3c8a4fd985
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:29:30 2008 +0000
+
+       Bug 112172 – Get rid of VteReaper
+    
+       * src/reaper.h: Deprecate.
+    
+    svn path=/trunk/; revision=2295
+
+ ChangeLog    |    6 ++++++
+ src/reaper.h |    5 ++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 8bf187434817ce38611efb8b9d1648f9cba00665
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:26:25 2008 +0000
+
+    Enable maintainer mode by default. Define more deprecation defines, and
+    
+       * configure.in: Enable maintainer mode by default. Define more
+       deprecation defines, and define the *_DISABLE_SINGLE_INCLUDES defines.
+       Enable deprecations by default in maintainer mode.
+       * src/vteapp.c: Undef VTE_DISABLE_DEPRECATED here.
+    
+    svn path=/trunk/; revision=2294
+
+ ChangeLog    |    7 +++++++
+ configure.in |   51 +++++++++++++++++++++++++++++++++++++--------------
+ src/vteapp.c |    2 ++
+ 3 files changed, 46 insertions(+), 14 deletions(-)
+
+commit e89b9c9d5565c2c52e9e5c39cf152bfdce6f4c2f
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:26:18 2008 +0000
+
+    Move VTE_UTF8_BPC definition from configure to vte-private.h. Include
+    
+       * configure.in:
+       * src/vte-private.h: Move VTE_UTF8_BPC definition from configure to
+       vte-private.h.
+       * src/vteconv.c: Include vte-private.h here.
+    
+    svn path=/trunk/; revision=2293
+
+ ChangeLog         |    7 +++++++
+ configure.in      |    3 ---
+ src/vte-private.h |    3 +++
+ src/vteconv.c     |    1 +
+ 4 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 72a984985180449122f855a271b4a302c28bdf76
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:26:13 2008 +0000
+
+    Remove VTE_INVALID_SOURCE definition and just use 0 directly.
+    
+       * src/vte-private.h:
+       * src/vte.c: (mark_input_source_invalid),
+       (_vte_terminal_connect_pty_read), (mark_output_source_invalid),
+       (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_read),
+       (_vte_terminal_disconnect_pty_write),
+       (_vte_terminal_enable_input_source), (remove_cursor_timeout),
+       (vte_terminal_key_press), (vte_terminal_focus_in),
+       (vte_terminal_focus_out), (vte_terminal_init),
+       (vte_terminal_unrealize), (vte_terminal_expose),
+       (vte_terminal_background_update), (add_update_timeout),
+       (remove_from_active_list), (vte_terminal_add_process_timeout),
+       (process_timeout), (update_repeat_timeout), (update_timeout): Remove
+       VTE_INVALID_SOURCE definition and just use 0 directly.
+    
+    svn path=/trunk/; revision=2292
+
+ ChangeLog         |   17 ++++++++++
+ src/vte-private.h |    1 -
+ src/vte.c         |   86 ++++++++++++++++++++++++++--------------------------
+ 3 files changed, 60 insertions(+), 44 deletions(-)
+
+commit 0d8b243122843d15e7d0bdc47a8d8858a75a286a
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:26:06 2008 +0000
+
+       Bug 560667 – invalid definition of VTE_INVALID_SOURCE
+    
+       * src/vte-private.h: Fix VTE_INVALID_SOURCE define to use 0 instead of
+       -1.
+    
+    svn path=/trunk/; revision=2291
+
+ ChangeLog         |    7 +++++++
+ src/vte-private.h |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit d34606b64581e58b2c5d3878f4e54e4f73da2be3
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:25:58 2008 +0000
+
+    Remove two AC_DEFINEs from here. Define VTE_INVALID_SOURCE here for now.
+    
+       * configure.in: Remove two AC_DEFINEs from here.
+       * src/vte-private.h: Define VTE_INVALID_SOURCE here for now.
+    
+    svn path=/trunk/; revision=2290
+
+ ChangeLog         |    5 +++++
+ configure.in      |    2 --
+ src/vte-private.h |    1 +
+ 3 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 3c751231fbc7a147032e3e7c00edd88191e83613
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:25:52 2008 +0000
+
+       Bug 112172 – Get rid of VteReaper
+    
+       * src/reaper.c: (vte_reaper_child_watch_cb),
+       (vte_reaper_add_child), (vte_reaper_init),
+       (vte_reaper_constructor), (vte_reaper_finalize),
+       (vte_reaper_class_init), (vte_reaper_get), (child_exited), (main):
+       * src/reaper.h: Prepare for removal of Reaper in vte1.0 by removing
+       the unused pre-glib-2.4 code from Reaper.
+    
+    svn path=/trunk/; revision=2289
+
+ ChangeLog    |   11 +++++
+ src/reaper.c |  133 +---------------------------------------------------------
+ src/reaper.h |    4 +-
+ 3 files changed, 15 insertions(+), 133 deletions(-)
+
+commit 2309a9d0135abc1556e201dfb3c87e28525b53b4
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 12:25:42 2008 +0000
+
+    Catch the child-exited signal to the child's exit code.
+    
+       * src/vteapp.c: (main): Catch the child-exited signal to the child's
+       exit code.
+    
+    svn path=/trunk/; revision=2288
+
+ ChangeLog    |    5 +++++
+ src/vteapp.c |    8 ++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 44dcc1548032d9d32478408ea44b55392af518e5
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Dec 2 11:28:18 2008 +0000
+
+    Intern the signal names.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_class_init): Intern the signal names.
+    
+    svn path=/trunk/; revision=2287
+
+ ChangeLog         |    5 ++++
+ src/vte-private.h |    2 +
+ src/vte.c         |   62 ++++++++++++++++++++++++++--------------------------
+ 3 files changed, 38 insertions(+), 31 deletions(-)
+
+commit 576393b15d21724cfd442af22fc94c97d8f2963e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 10:57:50 2008 +0000
+
+    Do not discard motion notify events with coordinates out of our
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_motion_notify): Do not discard motion notify
+            events with coordinates out of our allocation, or when the cell under
+            the cursor didn't change.  These are useful for extending selection
+            and for sub-cell selection details, as well as app-requested all
+            motion tracking.
+    
+    
+    svn path=/trunk/; revision=2286
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   17 -----------------
+ 2 files changed, 8 insertions(+), 17 deletions(-)
+
+commit 11bd8553aba33e2e58cf83cd4ceb5ed12c39dfe0
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 10:50:54 2008 +0000
+
+    Bug 541441 – Dehighlight links on visibility notify?
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 541441 – Dehighlight links on visibility notify?
+    
+            * src/vte.c (vte_terminal_focus_in), (vte_terminal_enter):  Move match
+            highlight enabling into "enter" event instead of "focus in".
+    
+    
+    svn path=/trunk/; revision=2285
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   11 +++++++----
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+commit 9996b7fa094edb9312467400aa5a362e6563bf0a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 10:10:46 2008 +0000
+
+    Simplify mouse event tracking by using a single int instead of five
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_set_pointer_visible),
+            (vte_terminal_maybe_send_mouse_button),
+            (vte_terminal_maybe_send_mouse_drag), (vte_terminal_motion_notify),
+            (vte_terminal_button_press), (vte_terminal_button_release),
+            (vte_terminal_scroll), (vte_terminal_reset):
+            * src/vteseq.c (vte_sequence_handler_decset_internal):
+            Simplify mouse event tracking by using a single int instead of five
+            booleans.
+    
+    
+    svn path=/trunk/; revision=2284
+
+ ChangeLog         |   12 ++++++++
+ src/vte-private.h |   12 +++++---
+ src/vte.c         |   76 +++++++++++++---------------------------------------
+ src/vteseq.c      |   64 ++++++++++----------------------------------
+ 4 files changed, 53 insertions(+), 111 deletions(-)
+
+commit 618ac353dbb677659b54b008a7b8bff73ddd5545
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 08:56:53 2008 +0000
+
+    Rename struct selection_cell_coords members from x,y to col,row for
+    
+    2008-12-02  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_deselect_all),
+            (vte_terminal_process_incoming), (vte_cell_is_selected),
+            (vte_terminal_copy), (vte_terminal_start_selection),
+            (vte_terminal_extend_selection), (vte_terminal_select_all),
+            (vte_terminal_paint), (_vte_terminal_get_start_selection),
+            (_vte_terminal_get_end_selection), (_vte_terminal_select_text):
+            Rename struct selection_cell_coords members from x,y to col,row for
+            clarity.
+    
+    
+    svn path=/trunk/; revision=2283
+
+ ChangeLog         |   12 +++
+ src/vte-private.h |    2 +-
+ src/vte.c         |  277 +++++++++++++++++++++++++++--------------------------
+ 3 files changed, 153 insertions(+), 138 deletions(-)
+
+commit 39f87a7d78ea8b3cfda9c3a1c83f3e0306a8f590
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 00:36:12 2008 +0000
+
+    Released 0.19.1.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * NEWS:
+            * configure.in:
+            Released 0.19.1.
+    
+    
+    svn path=/trunk/; revision=2281
+
+ ChangeLog    |    6 +++++
+ NEWS         |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ configure.in |    6 ++--
+ 3 files changed, 65 insertions(+), 6 deletions(-)
+
+commit cf78263e0df29e916603b3128c5bf9e11dbeef21
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 2 00:11:48 2008 +0000
+
+    Copy check-doc-syntax.sh tests from cairo and fix doc bugs.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/Makefile.am:
+            * doc/reference/check-doc-syntax.sh:
+            * src/Makefile.am:
+            * src/check-doc-syntax.sh:
+            * src/vte.c (vte_terminal_catch_child_exited),
+            (vte_terminal_class_init):
+            * src/vte.h:
+            * src/vtepangocairo.c:
+            Copy check-doc-syntax.sh tests from cairo and fix doc bugs.
+    
+    
+    svn path=/trunk/; revision=2280
+
+ ChangeLog                         |   12 ++++++
+ doc/reference/Makefile.am         |    9 +++-
+ doc/reference/check-doc-syntax.sh |   11 +++++
+ src/Makefile.am                   |    5 ++-
+ src/check-doc-syntax.sh           |   77 +++++++++++++++++++++++++++++++++++++
+ src/vte.c                         |   14 +++---
+ src/vte.h                         |    2 +-
+ src/vtepangocairo.c               |    2 +-
+ 8 files changed, 120 insertions(+), 12 deletions(-)
+
+commit f496e59520b4bd307e9351c33d9750117e4d3612
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 1 23:57:53 2008 +0000
+
+    More
+    
+    svn path=/trunk/; revision=2279
+
+ doc/reference/vte-docs.sgml |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 5b86070b847a50d981bb2fdd06157d8af92dca31
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 23:56:23 2008 +0000
+
+    Remove reaper docs.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/tmpl/vte-unused.sgml:
+            * doc/reference/vte-sections.txt:
+            Remove reaper docs.
+    
+    
+    svn path=/trunk/; revision=2278
+
+ ChangeLog                          |    6 ++++++
+ doc/reference/tmpl/vte-unused.sgml |   30 ++++++++++++++++++++++++++++++
+ doc/reference/vte-sections.txt     |   16 ----------------
+ 3 files changed, 36 insertions(+), 16 deletions(-)
+
+commit 6f16a40e06bec191d4555df1d0da33c8b068da0b
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 1 23:53:59 2008 +0000
+
+    Update templates
+    
+    svn path=/trunk/; revision=2277
+
+ doc/reference/tmpl/vte-unused.sgml |    6 ++++++
+ doc/reference/tmpl/vte.sgml        |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit b708b7bc83a2b7555fe7bfa5877c81614807ac1b
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 1 23:53:28 2008 +0000
+
+    Fix typo
+    
+    svn path=/trunk/; revision=2276
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6c3095b83908f4b9b462e35d6f49d1c7077d51b7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 23:50:02 2008 +0000
+
+    Bug 562806 – crash in Terminal: Typing "cd " just after ...
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 562806 – crash in Terminal: Typing "cd " just after ...
+    
+            * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor):
+            Fix possible NULL dereference.
+    
+            * src/vteseq.c (vte_sequence_handler_ta):
+            Fix tab fragments to have \t as c.
+    
+    
+    svn path=/trunk/; revision=2275
+
+ ChangeLog    |   10 ++++++++++
+ src/vte.c    |    3 ++-
+ src/vteseq.c |    2 +-
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+commit f00b38dacf322c101ef412d029119e40db5f4a62
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Dec 1 17:33:06 2008 +0000
+
+    Prepare 0.19.0.
+    
+       * NEWS:
+       * configure.in: Prepare 0.19.0.
+    
+    svn path=/trunk/; revision=2274
+
+ ChangeLog    |    5 +++++
+ NEWS         |    6 ++++++
+ configure.in |    6 +++---
+ 3 files changed, 14 insertions(+), 3 deletions(-)
+
+commit cb0b51a1a28ae29471930ca6625c3cbe4e503dca
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Dec 1 14:56:47 2008 +0000
+
+       Bug 562511 – scrollbar doesn't sit at the bottom
+    
+       * src/vte.c: (vte_terminal_init),
+       (vte_terminal_set_scrollback_lines): Always update the scrollback
+       lines, even if the setting hasn't changed. Work-around to fix bug
+       #562511.
+    
+    svn path=/trunk/; revision=2273
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    4 ++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 2b909705993d390e5532f442345441ea769ead2a
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Dec 1 14:56:40 2008 +0000
+
+    Fix visible-bell property.
+    
+       * src/vte.c: (vte_terminal_class_init): Fix visible-bell property.
+    
+    svn path=/trunk/; revision=2272
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 9a4c4967743634ac09425c23e2a818c393ebb183
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Dec 1 14:56:33 2008 +0000
+
+    Rename font property to "font-desc" to be more in line with other
+    
+       * src/vte.c: (vte_terminal_set_font_full_internal),
+       (vte_terminal_class_init): Rename font property to "font-desc" to be
+       more in line with other properties of this type in gtk.
+    
+    svn path=/trunk/; revision=2271
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   14 +++++++-------
+ 2 files changed, 13 insertions(+), 7 deletions(-)
+
+commit 771333da042a7d0c1b9b49edd6ad342201c5ec0a
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Dec 1 14:56:26 2008 +0000
+
+    Add gobject notification debugging.
+    
+       * src/vteapp.c: (main): Add gobject notification debugging.
+    
+    svn path=/trunk/; revision=2270
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |   32 +++++++++++++++++++++++++++++++-
+ 2 files changed, 35 insertions(+), 1 deletions(-)
+
+commit 3129dc10ec91dee3486f01a6217815948e985ebc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:50:04 2008 +0000
+
+    Simplify standout handling code.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_terminal_termcap_string_same_as_for),
+            (vte_sequence_handler_se), (vte_sequence_handler_so):
+            Simplify standout handling code.
+    
+    
+    svn path=/trunk/; revision=2269
+
+ ChangeLog    |    6 +++
+ src/vteseq.c |  117 ++++++++++++++++++++++------------------------------------
+ 2 files changed, 50 insertions(+), 73 deletions(-)
+
+commit 491c7df4a12e10f59e0f91f7f4918af9e5a658f7
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Dec 1 09:30:29 2008 +0000
+
+    Minor.
+    
+    svn path=/trunk/; revision=2268
+
+ src/vteseq.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 1d1ec4d77b56edae5d2a780f856ec6b0848fca8e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:27:23 2008 +0000
+
+    Rip out VTE_SEQUENCE_HANDLER_PROTO.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_PROTO.
+    
+    
+    svn path=/trunk/; revision=2267
+
+ ChangeLog    |    4 +
+ src/vteseq.c |  397 ++++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 240 insertions(+), 161 deletions(-)
+
+commit 3d73ff342fc4a030f957088095980bb2d0d7da81
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:19:34 2008 +0000
+
+    Rip out vte_sequence_handler_invoke.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Rip out vte_sequence_handler_invoke.
+    
+    
+    svn path=/trunk/; revision=2266
+
+ ChangeLog    |    4 ++++
+ src/vteseq.c |   15 ++++++---------
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+commit 0146a031b80e216e16ab934b6c447c19271de867
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:16:35 2008 +0000
+
+    Rip out VTE_SEQUENCE_HANDLER_INVOKE.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_INVOKE.
+    
+    
+    svn path=/trunk/; revision=2265
+
+ ChangeLog    |    4 +++
+ src/vteseq.c |   65 +++++++++++++++++++++++++++------------------------------
+ 2 files changed, 35 insertions(+), 34 deletions(-)
+
+commit 731b0e50cbc347bd9a1555b40464c421b1f9a2ed
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:14:20 2008 +0000
+
+    Rip out VTE_SEQUENCE_HANDLER_REFERENCE.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_REFERENCE.
+    
+    
+    svn path=/trunk/; revision=2264
+
+ ChangeLog    |    4 ++++
+ src/vteseq.c |   52 +++++++++++++++++++---------------------------------
+ 2 files changed, 23 insertions(+), 33 deletions(-)
+
+commit 491f866c452ea013f9c3e99612261224019bbb95
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:11:00 2008 +0000
+
+    Rip out the gcc label vtable code.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (_vte_terminal_handle_sequence): Rip out the gcc label
+            vtable code.
+    
+    
+    svn path=/trunk/; revision=2263
+
+ ChangeLog    |    5 +++
+ src/vteseq.c |   95 ----------------------------------------------------------
+ 2 files changed, 5 insertions(+), 95 deletions(-)
+
+commit 91dc211fdec31229d2a3d56d64f6ef6bb83447dd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 09:05:56 2008 +0000
+
+    Some cleanup of the gcc label vtable code before I rip it out.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (display_control_sequence),
+            (_vte_terminal_handle_sequence):
+            Some cleanup of the gcc label vtable code before I rip it out.
+    
+    
+    svn path=/trunk/; revision=2262
+
+ ChangeLog    |    6 ++
+ src/vteseq.c |  211 ++++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 115 insertions(+), 102 deletions(-)
+
+commit 849ab9282616faffd51c55a275c4ca8f57d531d7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 08:10:01 2008 +0000
+
+    Move some code around.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_sequence_handler_set_title_internal),
+            (vte_sequence_handler_set_mode_internal),
+            (vte_sequence_handler_invoke_internal):
+            Move some code around.
+    
+    
+    svn path=/trunk/; revision=2261
+
+ ChangeLog    |    7 ++
+ src/vteseq.c |  231 ++++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 126 insertions(+), 112 deletions(-)
+
+commit da600cbfb8772a94c7af9dc2d1ed2c1bcb35823a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 08:07:06 2008 +0000
+
+    Remove excess initializer.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteskel.c: Remove excess initializer.
+    
+    
+    svn path=/trunk/; revision=2260
+
+ ChangeLog     |    4 ++++
+ src/vteskel.c |    1 -
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit a4ae36c60d4e2b2d9303e6edcaa42aca8b7d5858
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 08:05:34 2008 +0000
+
+    #include <config.h> instead of "../config.h".
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/buffer.c:
+            * src/caps.c:
+            * src/dumpkeys.c:
+            * src/interpret.c:
+            * src/iso2022.c:
+            * src/keymap.c:
+            * src/matcher.c:
+            * src/mev.c:
+            * src/pty.c:
+            * src/reaper.c:
+            * src/reflect.c:
+            * src/ring.c:
+            * src/slowcat.c:
+            * src/ssfe.c:
+            * src/table.c:
+            * src/trie.c:
+            * src/vteaccess.c:
+            * src/vtebg.c:
+            * src/vteconv.c:
+            * src/vtedraw.c:
+            * src/vteseq.c:
+            * src/vteskel.c:
+            * src/xticker.c:
+            #include <config.h> instead of "../config.h".
+    
+    
+    svn path=/trunk/; revision=2259
+
+ ChangeLog       |   27 +++++++++++++++++++++++++++
+ src/buffer.c    |    2 +-
+ src/caps.c      |    2 +-
+ src/dumpkeys.c  |    2 +-
+ src/interpret.c |    2 +-
+ src/iso2022.c   |    2 +-
+ src/keymap.c    |    2 +-
+ src/matcher.c   |    2 +-
+ src/mev.c       |    2 +-
+ src/pty.c       |    2 +-
+ src/reaper.c    |    2 +-
+ src/reflect.c   |    2 +-
+ src/ring.c      |    2 +-
+ src/slowcat.c   |    2 +-
+ src/ssfe.c      |    2 +-
+ src/table.c     |    2 +-
+ src/trie.c      |    2 +-
+ src/vteaccess.c |    2 +-
+ src/vtebg.c     |    2 +-
+ src/vteconv.c   |    2 +-
+ src/vtedraw.c   |    2 +-
+ src/vteseq.c    |    2 +-
+ src/vteskel.c   |    2 +-
+ src/xticker.c   |    2 +-
+ 24 files changed, 50 insertions(+), 23 deletions(-)
+
+commit e58d84cba5a3c103465446c1f087c94b556f48b2
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 08:03:30 2008 +0000
+
+    Some wild crack to build the vtable using gcc extension for labels as
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Some wild crack to build the vtable using gcc
+            extension for labels as values.  The advantage is that we get down to
+            an empty .data for vteseq.o but .text grows considerably.  And we have
+            to use nested functions, and #define static auto.  It's really ugly.
+            I'm going to remove it in the next commit or the one after.  Just
+            wanted to record it here for posterity.
+    
+    
+    svn path=/trunk/; revision=2258
+
+ ChangeLog    |    9 ++++
+ src/vteseq.c |  122 ++++++++++++++++++++++++++++++++++++++++++++--------------
+ 2 files changed, 102 insertions(+), 29 deletions(-)
+
+commit 9eb563968d1a86441d4f02834119750d395c8016
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 06:36:15 2008 +0000
+
+    Almost there. Towards a .data-free vtable.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_sequence_handler_invoke),
+            (vte_sequence_handler_offset), (vte_sequence_handler_multiple),
+            (vte_sequence_handler_decset_internal),
+            (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+            Almost there.  Towards a .data-free vtable.
+    
+    
+    svn path=/trunk/; revision=2257
+
+ ChangeLog    |   12 ++++
+ src/vteseq.c |  161 +++++++++++++++++++++++++++++++++++----------------------
+ 2 files changed, 111 insertions(+), 62 deletions(-)
+
+commit 98e7a1540b3256b4199235d7cd7431bc2dccecb4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 05:56:55 2008 +0000
+
+    Make sequence handlers return void instead of gboolean. The return value
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vteseq.c (vte_sequence_handler_offset),
+            (vte_sequence_handler_multiple),
+            (vte_sequence_handler_decset_internal),
+            (vte_sequence_handler_set_mode_internal),
+            (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+            Make sequence handlers return void instead of gboolean.  The return
+            value was unused.
+    
+    
+    svn path=/trunk/; revision=2256
+
+ ChangeLog         |   11 +++
+ src/vte-private.h |    8 +-
+ src/vteseq.c      |  261 ++++++++++++-----------------------------------------
+ 3 files changed, 75 insertions(+), 205 deletions(-)
+
+commit 51521d139806e01b96f8cc0626bd8aed73fe025a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 05:30:26 2008 +0000
+
+    Switch to calling other handlers using two macros. Get rid of match and
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_sequence_handler_offset),
+            (vte_sequence_handler_multiple),
+            (vte_sequence_handler_decset_internal),
+            (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+            Switch to calling other handlers using two macros.
+            Get rid of match and match_quark arguments to sequence handlers.
+            They were unused.
+    
+    
+    svn path=/trunk/; revision=2255
+
+ ChangeLog    |   10 +++++
+ src/vteseq.c |  126 ++++++++++++++++++++++++---------------------------------
+ 2 files changed, 63 insertions(+), 73 deletions(-)
+
+commit c030133c0529702d24d74ae23bf481c36fe21607
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 05:10:25 2008 +0000
+
+    Cleanup vte_sequence_handler_set_title_internal.
+    
+    2008-12-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_sequence_handler_set_title_internal):
+            Cleanup vte_sequence_handler_set_title_internal.
+    
+    
+    svn path=/trunk/; revision=2254
+
+ ChangeLog    |    5 +++++
+ src/vteseq.c |   56 ++++++++++++++++++++++----------------------------------
+ 2 files changed, 27 insertions(+), 34 deletions(-)
+
+commit 20cbe595e6910e2b09cfd16486651218325ff927
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 05:00:01 2008 +0000
+
+    Use a macro to define type of sequence handlers.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (VTE_SEQUENCE_HANDLER_PROTO): Use a macro to define
+            type of sequence handlers.
+    
+    
+    svn path=/trunk/; revision=2253
+
+ ChangeLog    |    5 +
+ src/vteseq.c |  728 +++++++++++-----------------------------------------------
+ 2 files changed, 139 insertions(+), 594 deletions(-)
+
+commit 4475bcbfb3348b2ed17d70a2152fbb6a2bc61aa1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 04:34:07 2008 +0000
+
+    Remove gperf-generated files from SVN, but still distribute them in the
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-2.c:
+            * src/vteseq-n.c:
+            Remove gperf-generated files from SVN, but still distribute them in
+            the tarball.
+    
+    
+    svn path=/trunk/; revision=2252
+
+ ChangeLog       |    8 ++
+ src/Makefile.am |   19 ++-
+ src/vteseq-2.c  |  268 ---------------------------------------
+ src/vteseq-n.c  |  375 -------------------------------------------------------
+ 4 files changed, 21 insertions(+), 649 deletions(-)
+
+commit 77b722aa359a20240f11054f45c4d9e05612b1bc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:52:05 2008 +0000
+
+    One more time.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * POTFILES.in: One more time.
+    
+    
+    svn path=/trunk/; revision=2251
+
+ po/ChangeLog   |    4 ++++
+ po/POTFILES.in |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 6adba974637bc29a16693953cf231c7776913825
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:46:11 2008 +0000
+
+    More code shufflling.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c:
+            * src/vteseq.c (_vte_terminal_scroll_text),
+            (vte_sequence_handler_scroll_down),
+            (vte_sequence_handler_scroll_up):
+            More code shufflling.
+    
+    
+    svn path=/trunk/; revision=2250
+
+ ChangeLog         |    9 ++++++++
+ src/vte-private.h |    2 -
+ src/vte.c         |   52 -------------------------------------------------
+ src/vteseq.c      |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 4 files changed, 63 insertions(+), 56 deletions(-)
+
+commit 4a251a8a4cb1958f0c33164fdb59202a6da4d373
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:45:01 2008 +0000
+
+    Update.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * POTFILES.in: Update.
+    
+    
+    svn path=/trunk/; revision=2249
+
+ po/ChangeLog   |    4 ++++
+ po/POTFILES.in |   11 +----------
+ 2 files changed, 5 insertions(+), 10 deletions(-)
+
+commit e41a8b1567919bc7faae9cbf757e83da49b94b99
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:38:13 2008 +0000
+
+    Remove vteseq-list.h from SVN, but still distribute it in the tarball.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-list.h:
+            Remove vteseq-list.h from SVN, but still distribute it in the tarball.
+    
+    
+    svn path=/trunk/; revision=2248
+
+ ChangeLog         |    6 +++
+ src/Makefile.am   |    4 +-
+ src/vteseq-list.h |  117 -----------------------------------------------------
+ 3 files changed, 9 insertions(+), 118 deletions(-)
+
+commit 4821ff6a79628cc8c77952882e5285a06ff4412c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:32:02 2008 +0000
+
+    Autogenerate vteseq-list.h.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-list.h:
+            Autogenerate vteseq-list.h.
+    
+    
+    svn path=/trunk/; revision=2247
+
+ ChangeLog         |    6 ++++++
+ src/Makefile.am   |    6 +++++-
+ src/vteseq-list.h |   23 ++++++++++++-----------
+ 3 files changed, 23 insertions(+), 12 deletions(-)
+
+commit b3d935a3132bca9784a2ff4cd1ff897b09eff705
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:22:03 2008 +0000
+
+    Sync vteseql-list.h with actual handlers used in gperf files.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-list.h:
+            * src/vteseq.c (_vte_terminal_home_cursor),
+            (_vte_terminal_clear_screen), (_vte_terminal_clear_current_line),
+            (_vte_terminal_clear_above_current),
+            (vte_sequence_handler_decset_internal), (vte_sequence_handler_cl),
+            (vte_sequence_handler_ho), (vte_sequence_handler_erase_in_display),
+            (vte_sequence_handler_erase_in_line):
+            Sync vteseql-list.h with actual handlers used in gperf files.
+    
+    
+    svn path=/trunk/; revision=2246
+
+ ChangeLog         |   11 ++
+ src/vteseq-list.h |    3 -
+ src/vteseq.c      |  279 +++++++++++++++++++++++++----------------------------
+ 3 files changed, 142 insertions(+), 151 deletions(-)
+
+commit 80c7e53cc585ebf2da979c809fd3cb5634c1a3ea
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 03:01:09 2008 +0000
+
+    Implement these calling vte_terminal_scroll() directly instead of
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-list.h:
+            * src/vteseq.c (vte_sequence_handler_scroll_down),
+            (vte_sequence_handler_scroll_up):
+            Implement these calling vte_terminal_scroll() directly instead of
+            multiple'ing.
+    
+    
+    svn path=/trunk/; revision=2245
+
+ ChangeLog         |    8 ++++++++
+ src/vteseq-list.h |    2 --
+ src/vteseq.c      |   48 ++++++++++++++++++++++++------------------------
+ 3 files changed, 32 insertions(+), 26 deletions(-)
+
+commit fbcaf9548ae6453387c9708a832844a47b7e1460
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 02:55:00 2008 +0000
+
+    Move vte_terminal_scroll to vte.c
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_scroll), (_vte_terminal_scroll_region):
+            * src/vteseq.c (vte_sequence_handler_scroll_down_one),
+            (vte_sequence_handler_scroll_up_one):
+            Move vte_terminal_scroll to vte.c
+    
+    
+    svn path=/trunk/; revision=2244
+
+ ChangeLog         |    8 ++++
+ src/vte-private.h |    2 +
+ src/vte.c         |   57 ++++++++++++++++++++++++++-
+ src/vteseq.c      |  112 +++++++++++++++++------------------------------------
+ 4 files changed, 101 insertions(+), 78 deletions(-)
+
+commit e37545fbe4c3a5bce280f4f7c34d38721a6bc2da
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 02:41:21 2008 +0000
+
+    Remove vte_sequence_handler_complain_key. The idea was to warn about
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+            * src/vteseq-2.gperf:
+            * src/vteseq-list.h:
+            * src/vteseq.c:
+            Remove vte_sequence_handler_complain_key.  The idea was to warn about
+            receiving control-sequence handling request for escape sequences that
+            actually belong to a key stroke.  Kinda like a debugging feature.
+            Remove it as the number of sequences being handle that way was
+            greater than the number of sequences handled in the real sense.
+            Saves 2k .data!
+    
+            The actual list is still in vteseq-2.gperf, but commented out.
+    
+    
+    svn path=/trunk/; revision=2243
+
+ ChangeLog          |   15 ++
+ src/vteseq-2.c     |  602 +++++++++++++---------------------------------------
+ src/vteseq-2.gperf |  294 +++++++++++++-------------
+ src/vteseq-list.h  |    1 -
+ src/vteseq.c       |   12 -
+ 5 files changed, 307 insertions(+), 617 deletions(-)
+
+commit 6a534d02447dd51e95d3591df7527cdf74ff440e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 02:29:33 2008 +0000
+
+    Remove stale comment.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (_vte_sequence_get_handler),
+            (display_control_sequence):
+            Remove stale comment.
+    
+    
+    svn path=/trunk/; revision=2242
+
+ ChangeLog    |    6 ++++++
+ src/vteseq.c |   11 ++++-------
+ 2 files changed, 10 insertions(+), 7 deletions(-)
+
+commit 755b1c1fd5d957eca61a8f71f71594a3b400b329
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 02:20:33 2008 +0000
+
+    Move _vte_terminal_handle_sequence() into vteseq.c
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_process_incoming):
+            * src/vteseq.c (display_control_sequence),
+            (_vte_terminal_handle_sequence):
+            * src/vteseq.h:
+            Move _vte_terminal_handle_sequence() into vteseq.c
+    
+    
+    svn path=/trunk/; revision=2241
+
+ ChangeLog         |   10 +++++++
+ src/Makefile.am   |    1 -
+ src/vte-private.h |    6 ++++
+ src/vte.c         |   75 +++-------------------------------------------------
+ src/vteseq.c      |   76 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/vteseq.h      |   35 ------------------------
+ 6 files changed, 94 insertions(+), 109 deletions(-)
+
+commit f269a1c7d84590f8eb96e6ca2bccc6d87c12d88f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 02:12:05 2008 +0000
+
+    Some code reshuffling to remove vte.c calls to vteseq.c functions.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_insert_line_internal), (vte_remove_line_internal),
+            (_vte_terminal_cursor_down), (_vte_terminal_insert_char),
+            (_vte_terminal_audible_beep), (_vte_terminal_visible_beep),
+            (_vte_terminal_beep), (vte_terminal_key_press):
+            * src/vteseq.c (vte_insert_line_internal),
+            (vte_remove_line_internal), (vte_unichar_strlen),
+            (vte_sequence_handler_bl), (vte_sequence_handler_sf),
+            (vte_sequence_handler_SF), (vte_sequence_handler_vb):
+            * src/vteseq.h:
+            Some code reshuffling to remove vte.c calls to vteseq.c functions.
+    
+    
+    svn path=/trunk/; revision=2240
+
+ ChangeLog         |   14 +++
+ src/vte-private.h |    4 +
+ src/vte.c         |  186 ++++++++++++++++++++++++++++++++++++++++--
+ src/vteseq.c      |  239 +++++++++++++----------------------------------------
+ src/vteseq.h      |    4 -
+ 5 files changed, 256 insertions(+), 191 deletions(-)
+
+commit 8db1bf0479bf7c96c2dc5db4e36f4bd2440688c7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 01:17:30 2008 +0000
+
+    Minor.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-2.gperf:
+            * src/vteseq.c:
+            Minor.
+    
+    
+    svn path=/trunk/; revision=2239
+
+ ChangeLog          |    6 ++++++
+ src/vteseq-2.gperf |    2 +-
+ src/vteseq.c       |    1 -
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+commit ce7f40755cdccce5f996d06d9f8c101703019e54
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 01:13:00 2008 +0000
+
+    Move helper function out of the way.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (vte_terminal_beep): Move helper function out of the
+            way.
+    
+    
+    svn path=/trunk/; revision=2238
+
+ ChangeLog    |    5 +++++
+ src/vteseq.c |   21 +++++++++++----------
+ 2 files changed, 16 insertions(+), 10 deletions(-)
+
+commit 4afa82b2b88abbee75762b05fb7ba5cc5729ac82
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 01:00:18 2008 +0000
+
+    Add a macro around sequence handler citations, for future table tricks.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-2.c (vteseq_2_lookup):
+            * src/vteseq-2.gperf:
+            * src/vteseq-n.c (vteseq_n_lookup):
+            * src/vteseq-n.gperf:
+            * src/vteseq.c:
+            Add a macro around sequence handler citations, for future table
+            tricks.
+    
+    
+    svn path=/trunk/; revision=2237
+
+ ChangeLog          |   10 +
+ src/vteseq-2.c     |  442 +++++++++++++++++++++---------------------
+ src/vteseq-2.gperf |  544 ++++++++++++++++++++++++++--------------------------
+ src/vteseq-n.c     |  118 ++++++------
+ src/vteseq-n.gperf |  216 +++++++++++-----------
+ src/vteseq.c       |    5 +
+ 6 files changed, 675 insertions(+), 660 deletions(-)
+
+commit 20fe411a83c4cd3b1ae3f397324e0e016c0640e6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 1 00:46:40 2008 +0000
+
+    Remove bogus entry that accidentally made it into the gperf list.
+    
+    2008-11-30  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-n.gperf:
+            * src/vteseq-n.c (vteseq_n_hash), (vteseq_n_lookup):
+            Remove bogus entry that accidentally made it into the gperf list.
+    
+    
+    svn path=/trunk/; revision=2236
+
+ ChangeLog          |    6 ++
+ src/vteseq-n.c     |  145 +++++++++++++++++++++++++--------------------------
+ src/vteseq-n.gperf |    1 -
+ 3 files changed, 77 insertions(+), 75 deletions(-)
+
+commit 01ffbb3a2ad5c4d1ceee5669d5854415b56bf1fe
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Nov 30 19:21:50 2008 +0000
+
+    Remove more crufty macros.
+    
+       * acinclude.m4: Remove more crufty macros.
+    
+    svn path=/trunk/; revision=2235
+
+ ChangeLog    |    4 ++++
+ acinclude.m4 |   31 -------------------------------
+ 2 files changed, 4 insertions(+), 31 deletions(-)
+
+commit 539509a2ed5406ba4d0f8766624d0f319d0ed474
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Nov 30 19:21:43 2008 +0000
+
+    Remove FT2 check macro.
+    
+       * acinclude.m4: Remove FT2 check macro.
+    
+    svn path=/trunk/; revision=2234
+
+ ChangeLog    |    4 ++
+ acinclude.m4 |  145 ----------------------------------------------------------
+ 2 files changed, 4 insertions(+), 145 deletions(-)
+
+commit 7b72a1025293c3314e83771bda33a5a0248724be
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 29 23:56:11 2008 +0000
+
+       Bug 540951 – The gnome-pty-helper is spawn when its not needed
+    
+       * src/pty.c: (_vte_pty_open): Don't use the pty helper when we don't
+       need to update any of utmp, wtmp, lastlog. Patch by Alex Cornejo.
+    
+    svn path=/trunk/; revision=2233
+
+ ChangeLog |    7 +++++++
+ src/pty.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit cc94f01446cd7ff176b1511c87e752cc62f13ef1
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 29 23:51:44 2008 +0000
+
+       Bug 465036 – gnome-pty-helper locks /var/run/utmp
+    
+       * gnome-pty-helper/gnome-utmp.c: (update_utmp): Close the utmp
+       database after updating it. Patch by Kevin W. Rudd.
+    
+    svn path=/trunk/; revision=2232
+
+ ChangeLog                     |    7 +++++++
+ gnome-pty-helper/gnome-utmp.c |    2 ++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 0783cdf5b52c0938cf14da2ac2c1603167500c5d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 21:57:54 2008 +0000
+
+    Bug 127870 – terminal garbled and needs 'reset' after cat'ing file
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 127870 – terminal garbled and needs 'reset' after cat'ing file
+    
+            * src/iso2022.c (_vte_iso2022_state_new): Initialize all four maps
+            (G0, G1, G2, G3) in USASCII mode, like xterm does.
+    
+    
+    svn path=/trunk/; revision=2231
+
+ ChangeLog     |    7 +++++++
+ src/iso2022.c |    6 +++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 32ff14161b0e901ec514caba90a03271869a558e
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 29 21:56:32 2008 +0000
+
+    Register the constants too!
+    
+       * python/vtemodule.c: (initvte): Register the constants too!
+    
+    svn path=/trunk/; revision=2230
+
+ ChangeLog          |    4 ++++
+ python/vtemodule.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 4a60f3edb689ccfb49f2bae5b9142a10f9dd1ed8
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 29 17:52:12 2008 +0000
+
+    Add a specific debug flag for widget size-request/size-allocation.
+    
+       * src/debug.c: (_vte_debug_init):
+       * src/debug.h:
+       * src/vte.c: (vte_terminal_size_request),
+       (vte_terminal_size_allocate): Add a specific debug flag for widget
+       size-request/size-allocation.
+    
+    svn path=/trunk/; revision=2229
+
+ ChangeLog   |    8 ++++++++
+ src/debug.c |    3 ++-
+ src/debug.h |    3 ++-
+ src/vte.c   |   10 ++++++----
+ 4 files changed, 18 insertions(+), 6 deletions(-)
+
+commit b86d5a75d7e8f9c3d4f58e81e2b16f8b33ef00ef
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 29 17:52:07 2008 +0000
+
+    Add options to use a GtkScrolledWindow as the terminal's container, and to
+    
+       * src/vteapp.c: (main): Add options to use a GtkScrolledWindow as the
+       terminal's container, and to set its vertical scrollbar policy, to
+       allow testing VteTerminal in a scrolled window.
+    
+    svn path=/trunk/; revision=2228
+
+ ChangeLog    |    6 ++++++
+ src/vteapp.c |   49 ++++++++++++++++++++++++++++++++++++++-----------
+ 2 files changed, 44 insertions(+), 11 deletions(-)
+
+commit 712c3c28992254af5062b70bca836be73a177821
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 10:02:38 2008 +0000
+
+    Bug 317236 – vte resynchrones too late on invalid UTF-8
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 317236 – vte resynchrones too late on invalid UTF-8
+    
+            * src/vteconv.c (_vte_conv_utf8_utf8): In our UTF-8 to UTF-8 converter
+            differentiate between an incomplete sequence and an ill sequence at
+            the end of the buffer.  Also cleanup some minor inaccuracies (return
+            value).
+    
+    
+    svn path=/trunk/; revision=2227
+
+ ChangeLog     |    9 +++++++++
+ src/vteconv.c |   39 +++++++++++++++++++++++++++++----------
+ 2 files changed, 38 insertions(+), 10 deletions(-)
+
+commit 8e8429cb020dc23b8a87986a2e777eeaf01a5e90
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 07:56:50 2008 +0000
+
+    Bug 107031 – device-control-string error
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 107031 – device-control-string error
+    
+            * src/table.c (_vte_table_addi):
+            * src/vte.c (vte_terminal_handle_sequence):
+            * src/vteseq.c (vte_sequence_handler_decset_internal):
+            Replace some g_warning's with vte debug output.
+    
+    
+    svn path=/trunk/; revision=2226
+
+ ChangeLog    |    9 +++++++++
+ src/table.c  |   10 +++++-----
+ src/vte.c    |   15 +++------------
+ src/vteseq.c |    9 +++++----
+ 4 files changed, 22 insertions(+), 21 deletions(-)
+
+commit a00ed363b50864ffaa86c9e7a110b7c30ba3e0d4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 07:26:12 2008 +0000
+
+    Bug 521420 – vte closes connection to child before all output is read
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 521420 – vte closes connection to child before all output is read
+            Patch from Thomas Leonard
+    
+            * src/reaper.c (vte_reaper_add_child): Install child watch at low
+            priority instead of high.
+    
+    
+    svn path=/trunk/; revision=2225
+
+ ChangeLog    |    8 ++++++++
+ src/reaper.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 13fb9b34c9436385baa485a41649145af38e62c8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 06:44:31 2008 +0000
+
+    Require glib >= 2.18.0 as earlier glib versions had a totally bogus
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in: Require glib >= 2.18.0 as earlier glib versions
+            had a totally bogus g_unichar_iswide_cjk().
+    
+            * perf/vim.sh: Don't use builting time command.
+    
+    
+    svn path=/trunk/; revision=2224
+
+ ChangeLog    |    7 +++++++
+ configure.in |    2 +-
+ perf/vim.sh  |    6 +++---
+ 3 files changed, 11 insertions(+), 4 deletions(-)
+
+commit c1acc9206329acd8ddf7bc6eb63e0f90ce9864d8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 06:10:18 2008 +0000
+
+    Remove C++-style comment markers.
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_emit_char_size_changed),
+            (_vte_terminal_emit_status_line_changed), (vte_terminal_init),
+            (vte_terminal_background_update):
+            Remove C++-style comment markers.
+    
+    
+    svn path=/trunk/; revision=2223
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    8 ++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 8894e5764a8e27e87be8a965851113bb02052e7a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 06:00:17 2008 +0000
+
+    Bug 514632 – Problem with cursor in emacs in gnome-terminal
+    
+    2008-11-29  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 514632 – Problem with cursor in emacs in gnome-terminal
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor),
+            (_vte_terminal_insert_char):
+            * src/vteseq.c (vte_sequence_handler_ch),
+            (vte_sequence_handler_cm), (vte_sequence_handler_le),
+            (vte_sequence_handler_cursor_character_absolute):
+            Break "smart tabs" into multiple empty cells when cursor moves
+            into them or inserting character there.
+    
+    
+    svn path=/trunk/; revision=2222
+
+ ChangeLog         |   13 ++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   70 +++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/vteseq.c      |    4 +++
+ 4 files changed, 81 insertions(+), 7 deletions(-)
+
+commit 37472ef4f34e658a29bb6d99c0b0115da85e017f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 00:41:18 2008 +0000
+
+    Port vtepangocairo profiling and lifecycle logging to vtedebug facilities
+    
+    2008-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/debug.c (_vte_debug_init):
+            * src/debug.h:
+            * src/vtepangocairo.c (font_info_cache_ascii),
+            (font_info_allocate), (font_info_free),
+            (font_info_find_for_context), (font_info_get_unichar_info):
+            Port vtepangocairo profiling and lifecycle logging to vtedebug
+            facilities under debug domain "pangocairo".
+    
+    
+    svn path=/trunk/; revision=2221
+
+ ChangeLog           |   10 ++++++++++
+ src/debug.c         |    3 ++-
+ src/debug.h         |    3 ++-
+ src/vtepangocairo.c |   50 ++++++++++++++++++++++++--------------------------
+ 4 files changed, 38 insertions(+), 28 deletions(-)
+
+commit f4689385a0d7da2ddb3537f41795ec493ed668f7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 00:22:53 2008 +0000
+
+    Rename debug env var from VTE_DEBUG_FLAGS to VTE_DEBUG.
+    
+    2008-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/debug.c (_vte_debug_init): Rename debug env var from
+            VTE_DEBUG_FLAGS to VTE_DEBUG.
+    
+    
+    svn path=/trunk/; revision=2220
+
+ ChangeLog   |    5 +++++
+ src/debug.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 990fda3c3d29381568f8463b4349554031975d57
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 29 00:21:56 2008 +0000
+
+    Make _vte_debug_on() inline.
+    
+    2008-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/debug.c (_vte_debug_init):
+            * src/debug.h:
+            Make _vte_debug_on() inline.
+    
+    
+    svn path=/trunk/; revision=2219
+
+ ChangeLog   |    6 ++++++
+ src/debug.c |    8 +-------
+ src/debug.h |   10 +++++++++-
+ 3 files changed, 16 insertions(+), 8 deletions(-)
+
+commit 1ec198d4341adf8745d698cfe3d57bd787052740
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Nov 28 22:43:34 2008 +0000
+
+    Remove backward compat define for gtk 2.0, since we already depend on a
+    
+       * src/vte.c: Remove backward compat define for gtk 2.0, since we
+       already depend on a much higher version.
+    
+    svn path=/trunk/; revision=2218
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 ----
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+commit d1c8da13e65ddc67f93974c896d5061597062d72
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Nov 28 22:32:21 2008 +0000
+
+    Revert behaviour change of _vte_debug_on() from last commit.
+    
+       * src/debug.c: (_vte_debug_on): Revert behaviour change of
+       _vte_debug_on() from last commit.
+    
+    svn path=/trunk/; revision=2217
+
+ ChangeLog   |    5 +++++
+ src/debug.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 3fb52fb85c6ab494ce2e54de9733cd98cd5bf21e
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Nov 28 22:24:09 2008 +0000
+
+    Use g_parse_debug_string to parse the debug flags.
+    
+       * src/debug.c: (_vte_debug_init), (_vte_debug_on):
+       * src/debug.h:
+       * src/interpret.c: (main):
+       * src/pty.c: (main):
+       * src/reaper.c: (main):
+       * src/trie.c: (main):
+       * src/vte.c: (vte_terminal_new), (vte_terminal_class_init): Use
+       g_parse_debug_string to parse the debug flags.
+    
+    svn path=/trunk/; revision=2216
+
+ ChangeLog       |   11 ++++++
+ src/debug.c     |  107 ++++++++++++++++--------------------------------------
+ src/debug.h     |    2 +-
+ src/interpret.c |    2 +-
+ src/pty.c       |    2 +-
+ src/reaper.c    |    2 +-
+ src/trie.c      |    2 +-
+ src/vte.c       |   11 +-----
+ 8 files changed, 50 insertions(+), 89 deletions(-)
+
+commit 74a67f5d8703275b52c9b91deae2dbe0e4c49087
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Nov 28 17:54:26 2008 +0000
+
+    Bug 459553 – gnome-terminal cannot shows circled digits with the correct
+    
+    2008-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 459553 – gnome-terminal cannot shows circled digits with the
+            correct width on ja_JP.PCK
+            Patch from Takao Fujiwara
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Recognize Shift_JIS
+            as East Asian locale for width considerations.
+    
+    
+    svn path=/trunk/; revision=2215
+
+ ChangeLog     |   13 +++++++++++--
+ src/iso2022.c |    1 +
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit f6905bcef2fb212fdaa935f19c50c9cd0ba45054
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Nov 28 00:07:16 2008 +0000
+
+    Remove the unused GNU regex code too.
+    
+       * src/vteregex.c: (compare_matches), (_vte_regex_compile),
+       (_vte_regex_free), (_vte_regex_exec): Remove the unused GNU regex
+       code too.
+    
+    svn path=/trunk/; revision=2214
+
+ ChangeLog      |    6 ++++
+ src/vteregex.c |   77 +------------------------------------------------------
+ 2 files changed, 8 insertions(+), 75 deletions(-)
+
+commit 08a58074ff6b0557c9294cec22041fbbf0acda61
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Nov 28 00:04:11 2008 +0000
+
+    Remove unused PCRE code. If you want PCRE regexes, use the new APIs that
+    
+       * src/vteregex.c: (_vte_regex_compile), (_vte_regex_free),
+       (_vte_regex_exec): Remove unused PCRE code. If you want PCRE regexes,
+       use the new APIs that take GRegex.
+    
+    svn path=/trunk/; revision=2213
+
+ ChangeLog      |    6 ++++
+ src/vteregex.c |   85 +------------------------------------------------------
+ 2 files changed, 8 insertions(+), 83 deletions(-)
+
+commit 4b98c5400e147699480a989b35f653dafcb9bbf3
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Nov 27 23:57:10 2008 +0000
+
+       Bug 562385 – gnome-pty-helper goes to 100% cpu usage
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (pass_fd), (pty_free),
+       (main): Make sure data structures are correctly aligned and of the
+       right size.
+    
+    svn path=/trunk/; revision=2212
+
+ ChangeLog                           |    8 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |   48 +++++++++++-----------------------
+ 2 files changed, 24 insertions(+), 32 deletions(-)
+
+commit 0d8a9152d5a4682b8ab92a758070e0524167c6cd
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Nov 27 23:56:39 2008 +0000
+
+    oops
+    
+    svn path=/trunk/; revision=2211
+
+ src/Makefile.am |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 5c6e9df0a6be45683a902f9b11144d9c6fcbe9c0
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 27 23:54:21 2008 +0000
+
+    More cleanup.
+    
+    2008-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in:
+            * src/Makefile.am:
+            More cleanup.
+    
+    
+    svn path=/trunk/; revision=2210
+
+ ChangeLog       |    6 ++++
+ configure.in    |    1 -
+ src/Makefile.am |   72 ++++++++++++++++++++++++++++++------------------------
+ 3 files changed, 46 insertions(+), 33 deletions(-)
+
+commit 9075be7d7a22fae78dd29abc3806b7046033bb23
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 27 23:41:26 2008 +0000
+
+    Run some of the utilities in "make check", and build the others.
+    
+    2008-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            Run some of the utilities in "make check", and build the others.
+    
+            * src/nativeecho.c:
+            * src/utf8echo.c:
+            Remove more useless trivial utilities.
+    
+    
+    svn path=/trunk/; revision=2209
+
+ ChangeLog        |    9 ++++
+ src/Makefile.am  |  115 ++++++++++-------------------------------------------
+ src/nativeecho.c |   49 -----------------------
+ src/utf8echo.c   |   70 ---------------------------------
+ 4 files changed, 31 insertions(+), 212 deletions(-)
+
+commit e24ae22dcecda8fbb68aea4f59cd336ea30d1b44
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 27 23:10:04 2008 +0000
+
+    Remove useless trivial utilities.
+    
+    2008-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/iso8859mode.c:
+            * src/utf8mode.c:
+            Remove useless trivial utilities.
+    
+    
+    svn path=/trunk/; revision=2208
+
+ ChangeLog         |    7 +++++++
+ src/Makefile.am   |    2 +-
+ src/iso8859mode.c |   28 ----------------------------
+ src/utf8mode.c    |   28 ----------------------------
+ 4 files changed, 8 insertions(+), 57 deletions(-)
+
+commit 22e6626929c27043239b0e8df6d6f283fee05bd7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 27 23:08:20 2008 +0000
+
+    Update EXTRA_DIST.
+    
+    2008-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am: Update EXTRA_DIST.
+    
+    
+    svn path=/trunk/; revision=2207
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    2 --
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit c6777d519b75e25dd0729347387c6ff98a085963
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 27 21:50:34 2008 +0000
+
+    Update :P.
+    
+    2008-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * HACKING: Update :P.
+    
+    
+    svn path=/trunk/; revision=2206
+
+ ChangeLog |    4 ++++
+ HACKING   |    8 ++++----
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 2905d91df4eacc292ab78cb86f688930cfc9ee7b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 26 20:57:48 2008 +0000
+
+    Safely handle input of length 1.
+    
+    2008-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c (_vte_sequence_get_handler): Safely handle input of
+            length 1.
+    
+    
+    svn path=/trunk/; revision=2205
+
+ ChangeLog    |    5 +++++
+ src/vteseq.c |    9 ++++++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 7d4ac8661ea748304f07ed2f0fac388d343000d4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 26 20:38:33 2008 +0000
+
+    Don't use switch in gperf-generated code. This increases .data by 1k but
+    
+    2008-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+            * src/vteseq-2.gperf:
+            * src/vteseq-n.c (vteseq_n_lookup):
+            * src/vteseq-n.gperf:
+            Don't use switch in gperf-generated code.  This increases .data by 1k
+            but decreases .text by 6k AND the lookup code is MUCH faster.  It used
+            to do tens of compares before.
+    
+    
+    svn path=/trunk/; revision=2204
+
+ ChangeLog          |   11 +
+ src/Makefile.am    |    2 +-
+ src/vteseq-2.c     | 1229 ++++++++++++----------------------------------------
+ src/vteseq-2.gperf |    1 -
+ src/vteseq-n.c     |  820 ++++++++---------------------------
+ src/vteseq-n.gperf |    1 -
+ 6 files changed, 476 insertions(+), 1588 deletions(-)
+
+commit 561d5d623dc9fee74e9d6c26dd81263dfd2acb7a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 26 20:03:30 2008 +0000
+
+    Revert previous commit, fix NULL dereference that it was trying to fix,
+    
+    2008-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+            * src/vteseq-n.c (vteseq_n_lookup):
+            * src/vteseq.c (_vte_sequence_get_handler):
+            Revert previous commit, fix NULL dereference that it was trying to
+            fix, and make lookup functions inline.
+    
+    
+    svn path=/trunk/; revision=2203
+
+ ChangeLog       |    9 +++++++++
+ src/Makefile.am |    5 -----
+ src/vteseq-2.c  |   19 +++++++++++--------
+ src/vteseq-n.c  |    6 +++---
+ src/vteseq.c    |   19 +++++++++++++++----
+ 5 files changed, 38 insertions(+), 20 deletions(-)
+
+commit 299b73bb3667402eb63e21659084ee427d56a95e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Nov 26 19:36:46 2008 +0000
+
+    Manually modify (and record those modifications in the Makefile) the
+    
+    2008-11-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/Makefile.am:
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-n.c (vteseq_n_lookup):
+       * src/vteseq.c (_vte_sequence_get_handler):
+       Manually modify (and record those modifications in the Makefile)
+       the autogenerated gperf source code so that we return the sequence
+       handler directly from the lookup function, or NULL on failure.
+       So is this pain worth it?
+    
+    
+    svn path=/trunk/; revision=2202
+
+ ChangeLog       |   11 +++++++++++
+ src/Makefile.am |    4 ++++
+ src/vteseq-2.c  |   17 +++++++----------
+ src/vteseq-n.c  |    4 ++--
+ src/vteseq.c    |   15 ++-------------
+ 5 files changed, 26 insertions(+), 25 deletions(-)
+
+commit 129aa802e5be2d1c3aea58c79fe247c67a2e186f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 26 19:27:07 2008 +0000
+
+    Free internal layout resources.
+    
+    2008-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_get_unichar_info):
+            Free internal layout resources.
+    
+    
+    svn path=/trunk/; revision=2201
+
+ ChangeLog           |    5 +++++
+ src/vtepangocairo.c |    3 +++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 06107289280f77027c696193bf8698d0d550c438
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Nov 26 19:12:56 2008 +0000
+
+    Update boilerplate
+    
+    svn path=/trunk/; revision=2200
+
+ doc/reference/tmpl/vte-unused.sgml |    6 ++++++
+ doc/reference/tmpl/vte.sgml        |    5 -----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+commit 50c7a0ea9f503f1861732adc03a1f6dc15ae2b00
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 26 19:12:30 2008 +0000
+
+    Bug 562332 – cleanup font infos on exit?
+    
+    2008-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 562332 – cleanup font infos on exit?
+    
+            * src/vtepangocairo.c
+            (cleanup_delayed_font_info_destroys_predicate),
+            (cleanup_delayed_font_info_destroys), (ensure_quit_handler),
+            (font_info_register), (font_info_reference),
+            (font_info_destroy_delayed), (font_info_destroy):
+            Use gtk_quit_add() to complete delayed font_info destroys.
+    
+    
+    svn path=/trunk/; revision=2199
+
+ ChangeLog           |   11 ++++
+ src/vtepangocairo.c |  135 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 143 insertions(+), 3 deletions(-)
+
+commit 3ae4dce903ef23687b3e8168decb546dbdaff69f
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Nov 26 19:00:33 2008 +0000
+
+       Bug 562338 – don't need to connect to bunch of xft settings
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_style_changed), (add_cursor_timeout),
+       (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_finalize), (vte_terminal_realize): Don't listen to
+       changes on the gtk-xft-* GtkSettings properties. Just calling
+       vte_terminal_set_font_full in the style-set handler works fine.
+    
+    svn path=/trunk/; revision=2198
+
+ ChangeLog         |   11 ++++++
+ src/vte-private.h |    1 -
+ src/vte.c         |  103 ++++++++---------------------------------------------
+ 3 files changed, 26 insertions(+), 89 deletions(-)
+
+commit 6874137db74ca9a2565be25a3273c9be98d5fb89
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Nov 26 15:26:40 2008 +0000
+
+       Bug 488960 – gnome-terminal on Solaris 10 does not clean up utmpx on
+       exit (intermittent)
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (main):
+       * gnome-pty-helper/gnome-pty.h:
+       * src/pty.c: (_vte_pty_close): Add new GNOME_PTY_SYNCH operation to
+       gnome-pty-helper. Patch from Behdad.
+    
+    svn path=/trunk/; revision=2197
+
+ ChangeLog                           |   10 ++++++++++
+ gnome-pty-helper/gnome-pty-helper.c |    7 +++++++
+ gnome-pty-helper/gnome-pty.h        |    3 ++-
+ src/pty.c                           |   11 ++++++++++-
+ 4 files changed, 29 insertions(+), 2 deletions(-)
+
+commit 07817dfbc1e4662bbdf20fd93daaca8f1b07eba3
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Nov 26 14:39:22 2008 +0000
+
+    Add vte_terminal_set_font_*full_internal so we don't use deprecated
+    
+       * src/vte.c: (vte_terminal_style_changed),
+       (vte_terminal_ensure_font), (vte_terminal_set_font_full),
+       (vte_terminal_set_font_from_string_full_internal),
+       (vte_terminal_set_font_from_string_full),
+       (vte_terminal_reset_rowdata), (vte_terminal_set_property): Add
+       vte_terminal_set_font_*full_internal so we don't use deprecated
+       symbols internally.
+    
+    svn path=/trunk/; revision=2196
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   61 ++++++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 48 insertions(+), 23 deletions(-)
+
+commit 8be1dbc19e6f461050ae3d03410f291faffdea7b
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Nov 26 13:43:26 2008 +0000
+
+    Remove gtk 2.12 version checks, since we already depend on 2.12.
+    
+       * src/vte.c: (vte_terminal_sync_settings),
+       (vte_terminal_screen_changed): Remove gtk 2.12 version checks, since
+       we already depend on 2.12.
+    
+    svn path=/trunk/; revision=2195
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ----
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 2fa93a79f2624c4ae0fe1b25f00c102744048e24
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Nov 26 13:43:20 2008 +0000
+
+       Bug 561366 – remove antialias setting for 1.0
+    
+       * src/vte.c: (vte_terminal_set_font_full),
+       (vte_terminal_get_property), (vte_terminal_class_init):
+       * src/vte.h: Deprecate the font antialias setting, and remove the
+       (existing only on trunk) font-antialias property already.
+    
+    svn path=/trunk/; revision=2194
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   24 ++++--------------------
+ src/vte.h |   26 +++++++++++++-------------
+ 3 files changed, 26 insertions(+), 33 deletions(-)
+
+commit 7730c13edd2c69cbd58125a088db74706d351f25
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 25 23:56:04 2008 +0000
+
+    Cleanup gperf stuff.
+    
+    2008-11-25  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am:
+            * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+            * src/vteseq-2.gperf:
+            * src/vteseq-n.c (vteseq_n_hash), (vteseq_n_lookup):
+            * src/vteseq-n.gperf:
+            * src/vteseq.c (_vte_sequence_get_handler):
+            Cleanup gperf stuff.
+    
+    
+    svn path=/trunk/; revision=2193
+
+ ChangeLog          |   10 +
+ src/Makefile.am    |    4 +-
+ src/vteseq-2.c     |  489 ++++++++++++++++++++++++++--------------------------
+ src/vteseq-2.gperf |   19 ++-
+ src/vteseq-n.c     |  395 +++++++++++++++++++++---------------------
+ src/vteseq-n.gperf |   21 ++-
+ src/vteseq.c       |   14 ++-
+ 7 files changed, 507 insertions(+), 445 deletions(-)
+
+commit 4fea39c855890b9c6fc4336a32e56002179c5a76
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 22:33:29 2008 +0000
+
+    Bug 562187 – Add make rules for calling gperf
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 562187 – Add make rules for calling gperf
+    
+            * src/Makefile.am: Add a "gperf" target to be run manually.
+    
+            * src/vteseq-2.gperf:
+            * src/vteseq-n.gperf:
+            Add comment about "make gperf".
+    
+            * src/vteseq-2.c:
+            * src/vteseq-n.c:
+            Regenerate using newer gperf.
+    
+    
+    svn path=/trunk/; revision=2192
+
+ ChangeLog          |   14 +
+ src/Makefile.am    |    9 +-
+ src/vteseq-2.c     | 2224 ++++++++++++++++++++++++++--------------------------
+ src/vteseq-2.gperf |    1 +
+ src/vteseq-n.c     |  154 ++--
+ src/vteseq-n.gperf |    1 +
+ 6 files changed, 1216 insertions(+), 1187 deletions(-)
+
+commit 7feb9738d0af67fb7886543962635767e70cdc6a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 22:22:05 2008 +0000
+
+    Bug 416518 – Do something about uniwidths
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 416518 – Do something about uniwidths
+    
+            * src/iso2022.c (_vte_iso2022_is_ambiguous):
+            Call into glib to determine ambiguous-width chars.
+    
+            * src/genwidths.py:
+            * src/uniwidths:
+            Remove.
+    
+    
+    svn path=/trunk/; revision=2191
+
+ ChangeLog        |   11 +
+ src/genwidths.py |   35 ---
+ src/iso2022.c    |   41 +---
+ src/uniwidths    |  820 ------------------------------------------------------
+ 4 files changed, 16 insertions(+), 891 deletions(-)
+
+commit 557b2633fccfdcbf2cb60645c45c638cfce149de
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 22:06:32 2008 +0000
+
+    Bug 500191 – Remove vteseq-table.h?
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 500191 – Remove vteseq-table.h?
+    
+            * src/Makefile.am:
+            * src/vteseq-gen.c:
+            * src/vteseq-table.h:
+            Remove the old table implementation.  We use gperf-generated tables
+            now.
+    
+    
+    svn path=/trunk/; revision=2190
+
+ ChangeLog          |   10 +
+ src/Makefile.am    |    5 -
+ src/vteseq-gen.c   |  507 ----------------------------------------------------
+ src/vteseq-table.h |  388 ----------------------------------------
+ 4 files changed, 10 insertions(+), 900 deletions(-)
+
+commit 1564e45be8a51f2e30e7d110651b35d8783cc057
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 18:56:44 2008 +0000
+
+    Bug 514457 – Use g_strv_length()
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 514457 – Use g_strv_length()
+    
+            * src/vte.c (_vte_terminal_fork_basic): Do it.
+    
+    
+    svn path=/trunk/; revision=2189
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 +---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 80a809c489d5937b878208b806379220966307a9
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 18:27:12 2008 +0000
+
+    No need to check widget font desc here as vte.c does that for us already.
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_create_for_widget): No need to check
+            widget font desc here as vte.c does that for us already.
+    
+    
+    svn path=/trunk/; revision=2188
+
+ ChangeLog           |    5 +++++
+ src/vtepangocairo.c |    5 -----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 0ff5e8e971726b03e9d08c622e41d9fe740db809
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 18:19:53 2008 +0000
+
+    Modify GTK_CHECK_VERSION handling to make my vim syntax highlighter happy.
+    
+    2008-11-24  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_destroy): Modify GTK_CHECK_VERSION
+            handling to make my vim syntax highlighter happy.
+    
+    
+    svn path=/trunk/; revision=2187
+
+ ChangeLog           |    5 +++++
+ src/vtepangocairo.c |    8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit add81f8b64b8704e786f5c880ee2f30f52e42367
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Nov 24 02:31:38 2008 +0000
+
+    Refactor duplicate code.
+    
+    2008-11-23  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_ensure_cursor): Refactor duplicate code.
+    
+    
+    svn path=/trunk/; revision=2186
+
+ ChangeLog |    4 ++++
+ src/vte.c |   26 +++-----------------------
+ 2 files changed, 7 insertions(+), 23 deletions(-)
+
+commit 0b3a9bf9e80de232f6538e9f9aa3a19d5e6efe31
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 18:27:02 2008 +0000
+
+    Move all the deprecated stuff into one place.
+    
+       * src/vte.h: Move all the deprecated stuff into one place.
+    
+    svn path=/trunk/; revision=2185
+
+ ChangeLog |    4 ++++
+ src/vte.h |   33 ++++++++++++++-------------------
+ 2 files changed, 18 insertions(+), 19 deletions(-)
+
+commit d063b0de2185e6a24573ee10d4dee7e35a72e4ef
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 14:29:26 2008 +0000
+
+       Bug 542561 – Doesn't build when disabling gnome-pty-helper
+    
+       * src/pty.c: Always include sys/socket.h. Patch by Loïc Minier.
+    
+    svn path=/trunk/; revision=2184
+
+ ChangeLog |    6 ++++++
+ src/pty.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 14692b2586767bceced7d9f02ecb7d5d515ef454
+Author: Christian Persch <chpe gnome org>
+Date:   Sat Nov 22 14:16:43 2008 +0000
+
+    Fix --blink; the flag is inverted.
+    
+    2008-11-22  Christian Persch  <chpe gnome org>
+    
+       * src/vteapp.c: (main): Fix --blink; the flag is inverted.
+    
+    svn path=/trunk/; revision=2183
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit cd09f90f9fb0ef54bedba2ad0340f2ab534199ac
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 14:04:41 2008 +0000
+
+    Use vte_terminal_set_cursor_blink_mode instead of the deprecated
+    
+       * src/vteapp.c: (main): Use vte_terminal_set_cursor_blink_mode instead
+       of the deprecated set_cursor_blinks here.
+    
+    svn path=/trunk/; revision=2182
+
+ ChangeLog    |    5 +++++
+ src/vteapp.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 02e5a9b6ddcd07ee3f937455441aa2d6a06468c4
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 14:01:03 2008 +0000
+
+       Bug 560766 – Deprecate and remove vte_terminal_get_using_xft()
+    
+       * src/vte.c: (vte_terminal_get_using_xft):
+       * src/vte.h:
+       * src/vtedraw.c: (_vte_draw_text):
+       * src/vtedraw.h:
+       * src/vtepangocairo.c: Deprecate vte_terminal_get_using_xft() as preparation for
+       bug #560766. Remove the internal vtedraw method already.
+    
+    svn path=/trunk/; revision=2181
+
+ ChangeLog           |   11 +++++++++++
+ src/vte.c           |    9 +++++----
+ src/vte.h           |    4 +++-
+ src/vtedraw.c       |   11 -----------
+ src/vtedraw.h       |    2 --
+ src/vtepangocairo.c |    1 -
+ 6 files changed, 19 insertions(+), 19 deletions(-)
+
+commit 31d4e249f52354e0be687035ed190742a5d0f735
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:54:36 2008 +0000
+
+       Bug 536894 – Confusing use of "free" as variable-name in ring
+       functions
+    
+       * src/ring.c: (_vte_ring_new), (_vte_ring_new_with_delta),
+       (_vte_ring_remove):
+       * src/ring.h: Don't shadow global declarations. Patch by dmacks at
+       netspace.org.
+    
+    svn path=/trunk/; revision=2180
+
+ ChangeLog  |   10 ++++++++++
+ src/ring.c |   14 +++++++-------
+ src/ring.h |    4 ++--
+ 3 files changed, 19 insertions(+), 9 deletions(-)
+
+commit cf56c6421f35f3908c4e9275f7c4bd83a3fad42b
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:46:03 2008 +0000
+
+    Fix missing-prototypes warnings.
+    
+       * python/vte.override: Fix missing-prototypes warnings.
+    
+    svn path=/trunk/; revision=2179
+
+ ChangeLog           |    4 ++++
+ python/vte.override |    3 +++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 6324cace0ec03fab3f727996287cd5449f7ea89a
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:58 2008 +0000
+
+    No need to include gi18n-lib.h here.
+    
+       * src/vtepangocairo.c: No need to include gi18n-lib.h here.
+    
+    svn path=/trunk/; revision=2178
+
+ ChangeLog           |    4 ++++
+ src/vtepangocairo.c |    1 -
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 7ff4e01ebf8a85f72620c70350dce2612452e440
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:52 2008 +0000
+
+    Clean up the pkgs declared for use in the .pc files.
+    
+       * configure.in:
+       * vte-uninstalled.pc.in:
+       * vte.pc.in: Clean up the pkgs declared for use in the .pc files.
+    
+    svn path=/trunk/; revision=2177
+
+ ChangeLog             |    6 ++++++
+ configure.in          |    9 ++++-----
+ vte-uninstalled.pc.in |    2 +-
+ vte.pc.in             |    2 +-
+ 4 files changed, 12 insertions(+), 7 deletions(-)
+
+commit e629e5a8e86e76334026a4c1d4f57d6f12ac40f4
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:48 2008 +0000
+
+    Depend on gtk 2.12. Bug #398862.
+    
+       * configure.in: Depend on gtk 2.12. Bug #398862.
+    
+    svn path=/trunk/; revision=2176
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit aa41a463e213a8f6725bcd25c8aec223a58f6b83
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:42 2008 +0000
+
+    Fix the build (broken since r1622).
+    
+       * src/table.c: (print_array): Fix the build (broken since r1622).
+    
+    svn path=/trunk/; revision=2175
+
+ ChangeLog   |    4 ++++
+ src/table.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 5dd988de95c7cdb0b8275c0189af620c08991a9d
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:36 2008 +0000
+
+    Don't include gtk.h here, it's unneeded.
+    
+       * src/reaper.c: Don't include gtk.h here, it's unneeded.
+    
+    svn path=/trunk/; revision=2174
+
+ ChangeLog    |    4 ++++
+ src/reaper.c |    1 -
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 98ebf0dfe62d16d23436723f145417f87a66b2ae
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:29 2008 +0000
+
+    Make iso2022 programme build again; it was broken since r1612.
+    
+       * src/iso2022.c: (main): Make iso2022 programme build again; it was
+       broken since r1612.
+    
+    svn path=/trunk/; revision=2173
+
+ ChangeLog     |    5 +++++
+ src/iso2022.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit a5b6886f2982522cc61a8a8f9e5359134ddad54a
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:23 2008 +0000
+
+    Separate CFLAGS and CPPFLAGS.
+    
+       * src/Makefile.am: Separate CFLAGS and CPPFLAGS.
+    
+    svn path=/trunk/; revision=2172
+
+ ChangeLog       |    4 +++
+ src/Makefile.am |   72 +++++++++++++++++++++++++++++++++++--------------------
+ 2 files changed, 50 insertions(+), 26 deletions(-)
+
+commit 1835794092892eb2767f36bd7fa5b73d5e984d7c
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:16 2008 +0000
+
+    Don't add LDFLAGS to *_LDADD, that's wrong and broken.
+    
+       * src/Makefile.am: Don't add LDFLAGS to *_LDADD, that's wrong and
+       broken.
+    
+    svn path=/trunk/; revision=2171
+
+ ChangeLog       |    5 +++++
+ src/Makefile.am |   43 +++++++++++++++++++++----------------------
+ 2 files changed, 26 insertions(+), 22 deletions(-)
+
+commit 5792cacf58b35e4664cf6aca5933e0090eec3f0c
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:09 2008 +0000
+
+    Remove more configure cruft: OTHERLIBS/CFLAGS and X_LIBS/CFLAGS.
+    Don't add LIBS to *_LDADD, since it's there by default already.
+    
+    svn path=/trunk/; revision=2170
+
+ ChangeLog             |    8 ++++++++
+ configure.in          |   29 -----------------------------
+ src/Makefile.am       |   47 ++++++++++++++++++++++++++---------------------
+ vte-uninstalled.pc.in |    4 ++--
+ vte.pc.in             |    4 ++--
+ 5 files changed, 38 insertions(+), 54 deletions(-)
+
+commit a48bb06cadb10ebfc44d38533bfd82dc6c2a4602
+Author: Christian Persch <chpe src gnome org>
+Date:   Sat Nov 22 13:45:01 2008 +0000
+
+    Use gdk_threads_add_timeout_seconds() here.
+    
+    svn path=/trunk/; revision=2169
+
+ ChangeLog           |    6 ++++++
+ src/vtepangocairo.c |   18 ++++++++++--------
+ 2 files changed, 16 insertions(+), 8 deletions(-)
+
+commit e1b8af75c1e8e85063a4fd7be3498637d372fa60
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 21 01:02:32 2008 +0000
+
+    Remove FT2_LIBS and FT2_CFLAGS
+    
+    2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       * vte.pc.in: Remove FT2_LIBS and FT2_CFLAGS
+    
+    
+    svn path=/trunk/; revision=2168
+
+ ChangeLog |    4 ++++
+ vte.pc.in |    3 +--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 8450c9d852d3240bdcca69f4c0ec387ededeefd8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 21 00:42:39 2008 +0000
+
+    Break out of interval search as early as possible. Exploit the strict
+    
+    2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/iso2022.c (_vte_iso2022_is_ambiguous): Break out of interval
+       search as early as possible. Exploit the strict ordering of the
+       ambiguous/unambiguous ranges to break out of the for loop as soon
+       as the character is less than a range start. (As the arrays only
+       contain 2/3 elements, it is not worth adding the overhead of calling
+       bsearch()).
+    
+    
+    svn path=/trunk/; revision=2167
+
+ ChangeLog     |    9 +++++++++
+ src/iso2022.c |   12 ++++++++----
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+
+commit 7bcb445f3a5f8edc5dc0b2fa55cf383a0c7e2dfe
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 21 00:30:28 2008 +0000
+
+    Copy the gunichars directly to the array from the incoming chunk.
+    
+    2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/iso2022.c (process_cdata): Copy the gunichars directly to the
+       array from the incoming chunk.
+    
+    
+    svn path=/trunk/; revision=2166
+
+ ChangeLog     |    5 +++++
+ src/iso2022.c |   14 +++++++++-----
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+commit ce822897e6cf4b721c4d2b76c408987f065751f1
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Nov 21 00:28:30 2008 +0000
+
+    Commit the right Makefile.am this time!
+    
+    
+    svn path=/trunk/; revision=2165
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8d33fa5325b487461ea27b301b4811bd3c51f4df
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 21 00:27:34 2008 +0000
+
+    Remove FT2_FLAGS
+    
+    2008-11-20  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/Makefile.am: Remove FT2_FLAGS
+    
+    
+    svn path=/trunk/; revision=2164
+
+ ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 25763fcf97ee86a93f6a381dafcca5b3ab93a2bc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 19:49:42 2008 +0000
+
+    Remove obsolete check.
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_destroy_delayed): Remove obsolete
+            check.
+    
+    
+    svn path=/trunk/; revision=2163
+
+ ChangeLog           |    5 +++++
+ src/vtepangocairo.c |    6 ++----
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 066c1231ac77e3adb1d69125d8f7b51ff7488719
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 19:48:22 2008 +0000
+
+    Bug 561713 – crash on font cache cleanup
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 561713 – crash on font cache cleanup
+    
+            * src/vtepangocairo.c (font_info_reference), (font_info_destroy):
+            Remove destroy timeout when resurrecting a font info.
+    
+    
+    svn path=/trunk/; revision=2162
+
+ ChangeLog           |    7 +++++++
+ src/vtepangocairo.c |   13 ++++++++++++-
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 5f755c1377aa53e8233451912062a59eb497e834
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 19:28:36 2008 +0000
+
+    Make profiling messages print the info pointer.
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_cache_ascii),
+            (font_info_allocate), (font_info_free),
+            (font_info_find_for_context):
+            Make profiling messages print the info pointer.
+    
+    
+    svn path=/trunk/; revision=2161
+
+ ChangeLog           |    7 +++++++
+ src/vtepangocairo.c |   17 +++++++++++------
+ 2 files changed, 18 insertions(+), 6 deletions(-)
+
+commit 9a52291c1fc99dcc8c3b993e905a03b0b525237a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 16:57:41 2008 +0000
+
+    Remove more cruft.
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in:  Remove more cruft.
+    
+    
+    svn path=/trunk/; revision=2160
+
+ ChangeLog    |    4 ++
+ configure.in |  129 ----------------------------------------------------------
+ 2 files changed, 4 insertions(+), 129 deletions(-)
+
+commit 98e0498289684d6cc912f5e0aa816a110a2faccf
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 16:48:04 2008 +0000
+
+    Bug 560819 – Remove obsolete backends
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560819 – Remove obsolete backends
+    
+            * configure.in:
+            * src/Makefile.am:
+            * src/vtebg.c (vte_bg_get_pixmap):
+            * src/vtebg.h:
+            * src/vtedraw.c:
+            * src/vtefc.c:
+            * src/vtefc.h:
+            * src/vteft2.c:
+            * src/vteft2.h:
+            * src/vtegl.c:
+            * src/vtegl.h:
+            * src/vteglyph.c:
+            * src/vteglyph.h:
+            * src/vterdb.c:
+            * src/vterdb.h:
+            * src/vtergb.c:
+            * src/vtergb.h:
+            * src/vtexft.c:
+            * src/vtexft.h:
+            Remove all backends except for pangocairo.  Saves so much code.
+    
+    
+    svn path=/trunk/; revision=2159
+
+ ChangeLog       |   25 ++
+ configure.in    |   40 ---
+ src/Makefile.am |   24 +--
+ src/vtebg.c     |  106 ------
+ src/vtebg.h     |    5 -
+ src/vtedraw.c   |   14 -
+ src/vtefc.c     |  496 -----------------------------
+ src/vtefc.h     |   48 ---
+ src/vteft2.c    |  338 --------------------
+ src/vteft2.h    |   33 --
+ src/vtegl.c     |  525 ------------------------------
+ src/vtegl.h     |   33 --
+ src/vteglyph.c  |  805 ----------------------------------------------
+ src/vteglyph.h  |   92 ------
+ src/vterdb.c    |  273 ----------------
+ src/vterdb.h    |   36 --
+ src/vtergb.c    |  283 ----------------
+ src/vtergb.h    |   53 ---
+ src/vtexft.c    |  953 -------------------------------------------------------
+ src/vtexft.h    |   37 ---
+ 20 files changed, 26 insertions(+), 4193 deletions(-)
+
+commit 1b660899a96132881818a267c791e179d60d02f9
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Nov 20 16:27:50 2008 +0000
+
+    Oops
+    
+    svn path=/trunk/; revision=2158
+
+ src/vtedraw.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit d88a45484df9095078b22a18089f258bb4810a77
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 16:12:37 2008 +0000
+
+    Bug 560819 – Remove obsolete backends
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560819 – Remove obsolete backends
+    
+            * src/Makefile.am:
+            * src/vtedraw.c:
+            * src/vtepango.c:
+            * src/vtepango.h:
+            Remove pango backend.
+    
+    
+    svn path=/trunk/; revision=2157
+
+ ChangeLog       |   10 ++
+ src/Makefile.am |    2 -
+ src/vtedraw.c   |    3 -
+ src/vtepango.c  |  379 -------------------------------------------------------
+ src/vtepango.h  |   33 -----
+ 5 files changed, 10 insertions(+), 417 deletions(-)
+
+commit 726bb7a9b17f7d0feb1c65cbd3963da5af64be1e
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Nov 20 16:11:12 2008 +0000
+
+    More
+    
+    svn path=/trunk/; revision=2156
+
+ configure.in |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit dccec4deb32809194bb1376e426a97931ce1c66f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 16:09:15 2008 +0000
+
+    Bug 560819 – Remove obsolete backends
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560819 – Remove obsolete backends
+    
+            * configure.in:
+            * src/Makefile.am:
+            * src/vtedraw.c:
+            * src/vtepangox.c:
+            * src/vtepangox.h:
+            Remove pangox backend.
+    
+    
+    svn path=/trunk/; revision=2155
+
+ ChangeLog       |   11 ++
+ configure.in    |   25 ---
+ src/Makefile.am |    5 -
+ src/vtedraw.c   |    4 -
+ src/vtepangox.c |  438 -------------------------------------------------------
+ src/vtepangox.h |   33 ----
+ 6 files changed, 11 insertions(+), 505 deletions(-)
+
+commit f1bc5f3a784a221a2e172803f1a8d5d2598d4ecd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 20 15:11:41 2008 +0000
+
+    Bug 560818 – pangocairo backend doesn't share font cache across widgets
+    
+    2008-11-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560818 – pangocairo backend doesn't share font cache across
+            widgets
+    
+            * src/vtepangocairo.c (font_info_cache_ascii),
+            (font_info_allocate), (font_info_free), (font_info_register),
+            (font_info_unregister), (font_info_reference),
+            (font_info_destroy_delayed), (font_info_destroy), (context_hash),
+            (context_equal), (font_info_find_for_context),
+            (font_info_create_for_context), (font_info_create_for_screen),
+            (font_info_get_unichar_info): Cache font info and use it for multiple
+            widgets.
+    
+    
+    svn path=/trunk/; revision=2154
+
+ ChangeLog           |   14 +++
+ src/vtedraw.h       |    2 +-
+ src/vtepangocairo.c |  238 +++++++++++++++++++++++++++++++++++++++++----------
+ 3 files changed, 206 insertions(+), 48 deletions(-)
+
+commit faf6763cd1fb9c4f8d1c06fde7683a1cd0c2a775
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 19 22:24:03 2008 +0000
+
+    Remove unused PangoCoverage.
+    
+    2008-11-19  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_create_for_screen),
+            (font_info_destroy): Remove unused PangoCoverage.
+    
+    
+    svn path=/trunk/; revision=2153
+
+ ChangeLog           |    5 +++++
+ src/vtepangocairo.c |    7 -------
+ 2 files changed, 5 insertions(+), 7 deletions(-)
+
+commit 8078f417862e95f151e14f43a0afccfa2743d4cf
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 19 21:39:25 2008 +0000
+
+    Cache ASCII characters when building font.
+    
+    2008-11-19  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_find_unichar_info),
+            (font_info_cache_ascii), (font_info_measure_font),
+            (font_info_get_unichar_info): Cache ASCII characters when building
+            font.
+    
+    
+    svn path=/trunk/; revision=2152
+
+ ChangeLog           |    7 +++
+ src/vtepangocairo.c |  133 ++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 117 insertions(+), 23 deletions(-)
+
+commit 8a8c65c27aa21d6936b0de656df47e5c549dbfa0
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Nov 18 14:10:30 2008 +0000
+
+    Remove glib from gnome-pty-helper. Bug #560977.
+    
+    svn path=/trunk/; revision=2151
+
+ ChangeLog                           |   11 +++++++++++
+ gnome-pty-helper/Makefile.am        |    3 ---
+ gnome-pty-helper/configure.in       |   12 +++++++-----
+ gnome-pty-helper/gnome-pty-helper.c |   11 +++++------
+ 4 files changed, 23 insertions(+), 14 deletions(-)
+
+commit f9a0a8606f64d4212385943c360749ab5f62b4cd
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Nov 18 13:47:42 2008 +0000
+
+    Fix missing prototype warning.
+    
+    svn path=/trunk/; revision=2150
+
+ ChangeLog     |    4 ++++
+ src/vteskel.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit c298a8512d080a17d86f98af7142f9fd4c2ae580
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 18 13:25:08 2008 +0000
+
+    Remove copy of font desc and antialias from font info object as they were
+    
+    2008-11-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtepangocairo.c (font_info_create_for_screen),
+            (font_info_destroy): Remove copy of font desc and antialias from font
+            info object as they were not used.
+    
+    
+    svn path=/trunk/; revision=2149
+
+ ChangeLog           |    6 ++++++
+ src/vtepangocairo.c |   12 ++----------
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+commit 6ae356484534ed676c34ea87e5e917ee0b33153e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 18 13:23:42 2008 +0000
+
+    Bug 561185 – pangocairo backend sets antialias incorrectly
+    
+    2008-11-18  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 561185 – pangocairo backend sets antialias incorrectly
+    
+            * src/vtepangocairo.c (font_info_create_for_screen): Handle
+            FORCE_ENABLE correctly.
+    
+    
+    svn path=/trunk/; revision=2148
+
+ ChangeLog           |    7 +++++++
+ src/vtepangocairo.c |   10 +++++++++-
+ 2 files changed, 16 insertions(+), 1 deletions(-)
+
+commit fc665e5884cf28ecba977bc5e4408b8188c0c866
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Nov 16 02:21:48 2008 +0000
+
+    Bug 560817 – pagocairo backend doesn't have correct opacity support
+    
+    2008-11-16  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560817 – pagocairo backend doesn't have correct opacity support
+    
+            * src/vtepangocairo.c (_vte_pangocairo_clear),
+            (_vte_pangocairo_draw_text), (_vte_pangocairo_draw_rectangle),
+            (_vte_pangocairo_fill_rectangle): Fix opacity support by using
+            SOURCE operator.
+    
+    
+    svn path=/trunk/; revision=2147
+
+ ChangeLog           |    9 +++++++++
+ src/vtepangocairo.c |   12 ++++++------
+ 2 files changed, 15 insertions(+), 6 deletions(-)
+
+commit 5c59d1c957ccedc0ee2bca4c6e07168b9a03a913
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Nov 16 02:20:05 2008 +0000
+
+    Bug 560991 – Unsetting background doesn't work
+    
+    2008-11-16  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 560991 – Unsetting background doesn't work
+    
+            * src/vte.c (vte_terminal_set_background_image): Correctly unset
+            background if image==NULL.
+    
+    
+    svn path=/trunk/; revision=2146
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 217987a8e58b754c99125455d3f96cf14189387f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Nov 14 15:58:33 2008 +0000
+
+    Bug 395599 – Add pangocairo backend
+    
+    2008-11-14  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 395599 – Add pangocairo backend
+    
+            * configure.in:
+            Require pango >= 1.22.0
+    
+            * src/Makefile.am:
+            * src/vtedraw.c:
+            * src/vtepangocairo.c:
+            * src/vtepangocairo.h:
+            Add a pangocairo drawing backend.  Use it by default.  This is as fast
+            as the xft backend.  Doesn't share font caches across widgets yet.
+            Also, the transparent background stuff doesn't match xft backend's
+            yet.
+    
+    
+    svn path=/trunk/; revision=2145
+
+ ChangeLog           |   16 ++
+ configure.in        |    2 +-
+ src/Makefile.am     |    2 +
+ src/vtedraw.c       |    2 +
+ src/vtepangocairo.c |  682 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vtepangocairo.h |   33 +++
+ 6 files changed, 736 insertions(+), 1 deletions(-)
+
+commit dcc643ff1247e0337b35b6270c6951de3918c8cd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Nov 14 11:37:59 2008 +0000
+
+    Remove unneeded draw methods.
+    
+    2008-11-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_ensure_font):
+            * src/vtedraw.c (_vte_draw_new), (_vte_draw_free),
+            (_vte_draw_set_background_opacity),
+            (_vte_draw_set_background_color), (_vte_draw_set_text_font),
+            (_vte_draw_get_text_metrics), (_vte_draw_get_char_width),
+            (_vte_draw_char), (_vte_draw_draw_rectangle),
+            (_vte_draw_set_scroll):
+            * src/vtedraw.h:
+            * src/vteft2.c (_vte_ft2_destroy), (_vte_ft2_start),
+            (_vte_ft2_end), (_vte_ft2_set_background_image), (_vte_ft2_clear),
+            (_vte_ft2_set_text_font), (_vte_ft2_get_text_metrics),
+            (_vte_ft2_get_char_width), (_vte_ft2_draw_text),
+            (_vte_ft2_draw_has_char), (_vte_ft2_draw_rectangle),
+            (_vte_ft2_fill_rectangle):
+            * src/vtegl.c (_vte_gl_destroy), (_vte_gl_get_visual),
+            (_vte_gl_start), (_vte_gl_end), (_vte_gl_set_background_image),
+            (_vte_gl_clear), (_vte_gl_set_text_font),
+            (_vte_gl_get_text_metrics), (_vte_gl_get_char_width),
+            (_vte_gl_draw_text), (_vte_gl_draw_has_char), (_vte_gl_rectangle):
+            * src/vtepango.c (_vte_pango_set_text_font),
+            (_vte_pango_get_text_metrics):
+            * src/vtepangox.c (_vte_pangox_create), (_vte_pangox_destroy),
+            (_vte_pangox_start), (_vte_pangox_end),
+            (_vte_pangox_set_background_image), (_vte_pangox_clip),
+            (_vte_pangox_clear), (_vte_pangox_set_text_font),
+            (_vte_pangox_get_text_metrics), (_vte_pangox_get_using_fontconfig),
+            (_vte_pangox_draw_text), (_vte_pangox_draw_has_char),
+            (_vte_pangox_draw_rectangle), (_vte_pangox_fill_rectangle):
+            * src/vtepangox.h:
+            * src/vteskel.c (_vte_skel_clear), (_vte_skel_get_text_metrics),
+            (_vte_skel_draw_text), (_vte_skel_fill_rectangle):
+            * src/vtexft.c (_vte_xft_set_text_font),
+            (_vte_xft_get_text_metrics), (_vte_xft_draw_text):
+            Remove unneeded draw methods.
+    
+    
+    svn path=/trunk/; revision=2144
+
+ ChangeLog       |   37 ++++++++++
+ src/vte.c       |    9 +--
+ src/vtedraw.c   |   90 ++++++++++---------------
+ src/vtedraw.h   |   21 +-----
+ src/vteft2.c    |   87 ++++++++----------------
+ src/vtegl.c     |   85 ++++++-----------------
+ src/vtepango.c  |   50 ++++++++------
+ src/vtepangox.c |  146 +++++++++++++++++++++-------------------
+ src/vtepangox.h |    2 +-
+ src/vteskel.c   |  201 ++++++++-----------------------------------------------
+ src/vtexft.c    |   62 ++++++++---------
+ 11 files changed, 293 insertions(+), 497 deletions(-)
+
+commit 5354340b88cf24aa41b4a1e116de9e801a1c34be
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Nov 14 10:06:20 2008 +0000
+
+    Minor fix.
+    
+    2008-11-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.c (_vte_draw_get_char_width): Minor fix.
+    
+            * src/vtepangox.c (_vte_pango_x_create), (_vte_pango_x_start),
+            (_vte_pango_x_clear): Cleanup here too.
+    
+    
+    svn path=/trunk/; revision=2143
+
+ ChangeLog       |    7 ++++
+ src/vtedraw.c   |    2 +-
+ src/vtepangox.c |  106 ++++++++----------------------------------------------
+ 3 files changed, 24 insertions(+), 91 deletions(-)
+
+commit a37ac82b6f5cc939520449f1274c59bd414fc0c4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 13 15:59:45 2008 +0000
+
+    Undo previous change instead of cleanly fix it for now.
+    
+    2008-11-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in:
+            * src/vte-private.h:
+            Undo previous change instead of cleanly fix it for now.
+    
+    
+    svn path=/trunk/; revision=2142
+
+ ChangeLog         |    6 ++++++
+ configure.in      |    2 ++
+ src/vte-private.h |    3 ---
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 3877c89caf964c13e018a46cb50d5906027fa401
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 13 15:53:45 2008 +0000
+
+    Why do we let people configure random things?
+    
+    2008-11-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in:
+            * src/vte-private.h:
+            Why do we let people configure random things?
+    
+    
+    svn path=/trunk/; revision=2141
+
+ ChangeLog         |    6 ++++++
+ configure.in      |    2 --
+ src/vte-private.h |    3 +++
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit f913fc6c66a30d72194fd5b9455e140283fe626b
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Nov 13 15:44:24 2008 +0000
+
+    .
+    
+    svn path=/trunk/; revision=2140
+
+ src/vtexft.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 97dc4f67f739dc9a6523454b5824a60d04352b88
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 13 15:13:26 2008 +0000
+
+    Simplify backends by relying more on defaults.
+    
+    2008-11-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_background_update):
+            * src/vtedraw.c (_vte_draw_update_requires_clear), (_vte_draw_new),
+            (_vte_draw_set_background_opacity),
+            (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+            (_vte_draw_char), (_vte_draw_set_scroll):
+            * src/vtedraw.h:
+            * src/vteft2.c (_vte_ft2_set_background_image), (_vte_ft2_clear),
+            (_vte_ft2_get_char_width):
+            * src/vtegl.c (_vte_gl_create), (_vte_gl_clear),
+            (_vte_gl_get_char_width), (_vte_gl_draw_text):
+            * src/vtepango.c (_vte_pango_create), (_vte_pango_start),
+            (_vte_pango_set_background_image), (_vte_pango_clear):
+            * src/vtexft.c (_vte_xft_create), (_vte_xft_set_background_image),
+            (_vte_xft_clear), (_vte_xft_get_char_width):
+            Simplify backends by relying more on defaults.
+    
+    
+    svn path=/trunk/; revision=2139
+
+ ChangeLog      |   18 ++++++++
+ src/vte.c      |    6 +-
+ src/vtedraw.c  |   67 +++++++++++++++++++-----------
+ src/vtedraw.h  |   26 +++++++++---
+ src/vteft2.c   |   83 ++++++-------------------------------
+ src/vtegl.c    |   95 ++++++++++--------------------------------
+ src/vtepango.c |  115 ++++++++--------------------------------------------
+ src/vtexft.c   |  124 ++++++++-----------------------------------------------
+ 8 files changed, 154 insertions(+), 380 deletions(-)
+
+commit 18f2f88d77c000ecb69d35c30a6103b93c977828
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 13 13:17:12 2008 +0000
+
+    Accept draw impl if impl->check is NULL.
+    
+    2008-11-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.c (_vte_draw_init_user), (_vte_draw_init_default):
+            Accept draw impl if impl->check is NULL.
+    
+    
+    svn path=/trunk/; revision=2138
+
+ ChangeLog     |    5 +++++
+ src/vtedraw.c |    6 ++++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit f60e79017c23bc77c88c7720756610856d05eb7d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Nov 13 12:29:36 2008 +0000
+
+    Use sensical defaults instead of g_return_if_fail'ing when backend
+    
+    2008-11-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.h:
+            * src/vtedraw.c (_vte_draw_new), (_vte_draw_get_visual),
+            (_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
+            (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+            (_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
+            (_vte_draw_set_text_font), (_vte_draw_get_text_width),
+            (_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
+            (_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
+            (_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
+            (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
+            (_vte_draw_set_scroll):
+            Use sensical defaults instead of g_return_if_fail'ing when backend
+            functions are not implemented.
+    
+    
+    svn path=/trunk/; revision=2137
+
+ ChangeLog     |   16 ++++++
+ src/vtedraw.c |  169 ++++++++++++++++++++++++++++++++++++---------------------
+ src/vtedraw.h |    1 +
+ 3 files changed, 124 insertions(+), 62 deletions(-)
+
+commit 746e946887ca9d763b6d69d70cc5e5055baeab47
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Nov 13 12:29:03 2008 +0000
+
+    Update templates
+    
+    svn path=/trunk/; revision=2136
+
+ doc/reference/tmpl/vte.sgml |  130 +++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 130 insertions(+), 0 deletions(-)
+
+commit 4fdc0fae8a3d740def335fc74f695b695e4c13fb
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Oct 31 12:59:29 2008 +0000
+
+    Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+    
+    2008-10-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+    
+       * src/vte.c (vte_terminal_deselect_all):
+       Preserve the copy of the selection until it is replace by a new
+       selection, so that we can perform asynchronous copies from the
+       clipboard.
+    
+    
+    svn path=/trunk/; revision=2135
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit ff594c80826beb7a11a695c88368157636a59d85
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Oct 23 09:43:21 2008 +0000
+
+    Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+    
+    2008-10-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+    
+       * src/vte.c (vte_terminal_deselect_all),
+       (vte_terminal_extend_selection):
+       After the user modifies the selection, copy it to PRIMARY and store
+       it on the terminal. This ensures that after a screen redraw, we
+       compare the contents of the selected region with the current
+       selection, instead of stale data.
+    
+    
+    svn path=/trunk/; revision=2134
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   11 ++++++++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+commit 5f84486a0a4e073a16a837128f0c19b0515a8c9c
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 09:15:37 2008 +0000
+
+    Default glade catalogue to disabled.
+    
+    svn path=/trunk/; revision=2133
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ca941172225b5333fab5f5caafce9ddacfd14f92
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 08:50:26 2008 +0000
+
+    I hate ChangeLogs
+    
+    svn path=/trunk/; revision=2132
+
+ ChangeLog |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit def3f9687ef0d36cb0e6b3fcf22c60df44b4d090
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 08:39:50 2008 +0000
+
+    Use glib-genmarshal --internal directly instead of checking the glib
+    version, since we now depend on a glib version that provides this.
+    
+    svn path=/trunk/; revision=2131
+
+ configure.in    |    3 ---
+ src/Makefile.am |    4 ++--
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+
+commit 31a1fe16b8e790b9375255adb025fc6f3e7c1eca
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 08:39:44 2008 +0000
+
+    Bug 556398 – maybe deprecate vte_terminal_get_char_ascent/descent
+    
+    svn path=/trunk/; revision=2130
+
+ src/vte.c |    4 ++++
+ src/vte.h |    6 ++++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit f2875cfc9b42c7f4e1dbb9f8cdf2a95d858aecd3
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 08:39:38 2008 +0000
+
+    Bug 339819 – LibVTE terminals in GLADE
+    Terminal icons copied from gnome-icon-theme (licence: GPL).
+    
+    svn path=/trunk/; revision=2129
+
+ Makefile.am                                        |    4 ++
+ configure.in                                       |   28 +++++++++++++
+ glade/Makefile.am                                  |   43 ++++++++++++++++++++
+ .../hicolor_actions_16x16_widget-vte-terminal.png  |  Bin 0 -> 644 bytes
+ .../hicolor_actions_22x22_widget-vte-terminal.png  |  Bin 0 -> 901 bytes
+ glade/vte.xml.in                                   |   40 ++++++++++++++++++
+ 6 files changed, 115 insertions(+), 0 deletions(-)
+
+commit 53f96acb7e7bbadaedacfd613c7c8cea3491eaf8
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Oct 23 08:39:28 2008 +0000
+
+    Bug 399364 – Implement properties
+    Add basic properties, and emit notifications when they change.
+    
+    svn path=/trunk/; revision=2128
+
+ src/vte.c | 1021 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 files changed, 958 insertions(+), 63 deletions(-)
+
+commit 51b97b75f505a8b15ccf034a4c981b137c09549e
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Oct 19 21:44:50 2008 +0000
+
+    Add note to docs that all file descriptors except std{in,out,err} are
+    being closed in the child before exec(). Bug #320128.
+    
+    svn path=/trunk/; revision=2127
+
+ src/vte.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 879712998890e09606b88722cfa3765ee3d87870
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Oct 19 13:51:38 2008 +0000
+
+    Remove debug spew.
+    
+    svn path=/trunk/; revision=2126
+
+ src/vte.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 1f270f991a2eab20c42190abf4b5bedb6705522e
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Oct 19 13:51:33 2008 +0000
+
+    I hate ChangeLog.
+    
+    svn path=/trunk/; revision=2125
+
+ ChangeLog |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 7d353726a84bd1ec000e57de7cf82d3fef56ee38
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Oct 19 13:51:28 2008 +0000
+
+    Bug 556328 – Document set-scroll-adjustment parameters
+    
+    svn path=/trunk/; revision=2124
+
+ src/vte.c |   14 +++++++++++++-
+ 1 files changed, 13 insertions(+), 1 deletions(-)
+
+commit ac3b51ecfd995752f5bc2327713b5c448813252b
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Sun Oct 19 11:45:36 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    * Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2123
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 77518ec1de91234080a78baf2af8cc223ce7a63b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Oct 15 16:48:26 2008 +0000
+
+    Update doc coverage test from cairo.
+    
+    2008-10-15  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/Makefile.am:
+            * doc/reference/check-doc-coverage.sh:
+            * doc/reference/check.docs:
+            Update doc coverage test from cairo.
+    
+    
+    svn path=/trunk/; revision=2122
+
+ ChangeLog                           |    7 +++++
+ doc/reference/Makefile.am           |    9 +++++-
+ doc/reference/check-doc-coverage.sh |   48 +++++++++++++++++++++++++++++++++++
+ doc/reference/check.docs            |   39 ----------------------------
+ 4 files changed, 62 insertions(+), 41 deletions(-)
+
+commit 921ab3aa61a4a7cfaa845523fbab77288822445d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Oct 15 01:54:37 2008 +0000
+
+    Invalidate cursor upon shape change.
+    
+    2008-10-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_set_cursor_shape):
+            Invalidate cursor upon shape change.
+    
+    
+    svn path=/trunk/; revision=2121
+
+ ChangeLog |    5 +++++
+ src/vte.c |    1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 0aea533027aafd26a4bf13e1245a719ab2bd9b04
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Oct 14 23:11:26 2008 +0000
+
+    Add new API to the python bindings.
+    
+    svn path=/trunk/; revision=2120
+
+ ChangeLog       |    4 ++++
+ python/vte.defs |   45 +++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 45 insertions(+), 4 deletions(-)
+
+commit 6a93d0c685658ea1fab4daef0f999dbc2009e1c3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Oct 14 20:47:50 2008 +0000
+
+    Remove VTE_CURSOR_OUTLINE in favor of VTE_LINE_WIDTH.
+    
+    2008-10-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_draw_line), (vte_terminal_paint_cursor):
+            Remove VTE_CURSOR_OUTLINE in favor of VTE_LINE_WIDTH.
+    
+    
+    svn path=/trunk/; revision=2119
+
+ ChangeLog         |    6 ++++++
+ src/vte-private.h |    1 -
+ src/vte.c         |   18 +++++++++---------
+ 3 files changed, 15 insertions(+), 10 deletions(-)
+
+commit f33c993073d6cdc6c1c8123521b4efdaa4822b4a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Oct 14 20:39:44 2008 +0000
+
+    Supposedly handle reverse video during cursor drawing.
+    
+    2008-10-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_paint_cursor):
+            Supposedly handle reverse video during cursor drawing.
+    
+    
+    svn path=/trunk/; revision=2118
+
+ ChangeLog |    5 +++++
+ src/vte.c |    7 ++++---
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 61ec5d3cad460529acdee4e98f1f7d71e202b782
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Oct 14 20:36:10 2008 +0000
+
+    Move IM preedit string drawing into its own function for code clarity.
+    
+    2008-10-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_paint_im_preedit_string),
+            (vte_terminal_paint):
+            Move IM preedit string drawing into its own function for code
+            clarity.
+    
+    
+    svn path=/trunk/; revision=2117
+
+ ChangeLog |    7 +++
+ src/vte.c |  157 ++++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 90 insertions(+), 74 deletions(-)
+
+commit 5cff4182d680681d815760ec7c3bcfbb4b785d77
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Oct 14 20:25:25 2008 +0000
+
+    Bug 549835 – Feature Request: Configurable cursor appearance
+    
+    2008-10-14  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 549835 – Feature Request: Configurable cursor appearance
+    
+            * src/vte.h:
+            New public api:
+    
+                    VteTerminalCursorShape
+                    vte_terminal_set_cursor_shape
+                    vte_terminal_get_cursor_shape
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_insert_char), (vte_terminal_init),
+            (vte_terminal_paint_cursor), (vte_terminal_paint),
+            (vte_terminal_set_cursor_shape), (vte_terminal_get_cursor_shape):
+            Implement new API.  Also clean up cursor drawing in general.
+    
+            * doc/reference/Makefile.am:
+            * doc/reference/tmpl/reaper.sgml:
+            * doc/reference/tmpl/vte-unused.sgml:
+            * doc/reference/tmpl/vte.sgml:
+            * doc/reference/vte-sections.txt:
+            Doc new symbols.  Also add some missing docs.
+    
+    
+    svn path=/trunk/; revision=2116
+
+ ChangeLog                          |   24 +++
+ doc/reference/Makefile.am          |    3 +
+ doc/reference/tmpl/reaper.sgml     |   32 ----
+ doc/reference/tmpl/vte-unused.sgml |   30 +++
+ doc/reference/tmpl/vte.sgml        |   59 ++++++-
+ doc/reference/vte-sections.txt     |   10 +
+ src/vte-private.h                  |    3 +
+ src/vte.c                          |  360 ++++++++++++++++++++----------------
+ src/vte.h                          |   18 ++-
+ 9 files changed, 346 insertions(+), 193 deletions(-)
+
+commit d1986f303449acd1ae0ad3d2fde37f3a65959e32
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 13 11:53:32 2008 +0000
+
+    Add gobject property getter/setter.
+    
+    svn path=/trunk/; revision=2115
+
+ ChangeLog |    4 ++++
+ src/vte.c |   35 ++++++++++++++++++++++++++++++++++-
+ 2 files changed, 38 insertions(+), 1 deletions(-)
+
+commit 75e65a0fe737094613bdfe50fd759f2cac6982aa
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 13 11:46:18 2008 +0000
+
+    Add ChangeLog entry.
+    
+    svn path=/trunk/; revision=2114
+
+ ChangeLog |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 9331adbf9c6f03e29b7b08500e1a99bf2c16937c
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 13 11:46:12 2008 +0000
+
+    Fix missing prorotypes compiler warning in marshal.c.
+    
+    svn path=/trunk/; revision=2113
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 04f263af0a66c1bc15b43914b42c904a96f37d03
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 13 11:44:59 2008 +0000
+
+    Add vte_terminal_get_pty().
+    
+    svn path=/trunk/; revision=2112
+
+ src/vte.c |   17 +++++++++++++++++
+ src/vte.h |    1 +
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 05cad2fc7cef3ae9e6dd063a6f8933cde76a6af6
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:12:15 2008 +0000
+
+    Bug 329108 – Please support setting X's URGENCY hint upon terminal beep
+    
+    svn path=/trunk/; revision=2111
+
+ doc/reference/tmpl/vte.sgml |    7 +++++++
+ src/vte.c                   |   11 +++++++++++
+ src/vte.h                   |    3 ++-
+ src/vteseq.c                |    2 ++
+ 4 files changed, 22 insertions(+), 1 deletions(-)
+
+commit 983bff721bc647fa7b3903d4828d056265cf66a8
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:12:10 2008 +0000
+
+    Fix compiler warning about g_free() on a const pointer.
+    
+    svn path=/trunk/; revision=2110
+
+ ChangeLog     |    4 ++++
+ src/vteconv.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 77347af8208aaa02078e0eb650ec0c980ed6016f
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:12:05 2008 +0000
+
+    Add new function to the python bindings.
+    
+    svn path=/trunk/; revision=2109
+
+ ChangeLog       |    6 ++++++
+ python/vte.defs |   10 ++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 91127a312b5c33c9d58facda49077c8b1a1d7a0a
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:12:00 2008 +0000
+
+    Deprecate useless macros. Bug #539130.
+    
+    svn path=/trunk/; revision=2108
+
+ ChangeLog |    6 ++++++
+ src/vte.h |    8 ++++----
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+commit da9f7b17746625525b1761379803d90fe83095c2
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:11:55 2008 +0000
+
+    Add vte_terminal_get_child_exit_status() so we can get the child's exit status from withint the 
child-exited signal handlers. Bug #509204.
+    
+    svn path=/trunk/; revision=2107
+
+ ChangeLog         |    8 ++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   26 ++++++++++++++++++++++++++
+ src/vte.h         |    2 ++
+ 4 files changed, 37 insertions(+), 0 deletions(-)
+
+commit d8a852897eb7ed60ef5aad7be264f31d484ec36f
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Oct 6 20:11:49 2008 +0000
+
+    Bump version to 0.17.5.
+    
+    svn path=/trunk/; revision=2106
+
+ ChangeLog    |    4 ++++
+ configure.in |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 6d1a9b4973ff32a7f15dc5eb7d06a41d5fb9d193
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Sep 22 22:41:46 2008 +0000
+
+    Version 0.17.4.
+    
+    svn path=/trunk/; revision=2104
+
+ NEWS         |    4 ++++
+ configure.in |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 9dfdffe7083d739664aaa9a9d39080e57055f4c8
+Author: Leonardo Ferreira Fontenelle <leonardof gnome org>
+Date:   Sun Sep 21 21:33:56 2008 +0000
+
+    Fixed terminology in Brazilian Portuguese translation by Vladimir Melo.
+    
+    2008-09-21  Leonardo Ferreira Fontenelle  <leonardof gnome org>
+    
+       * pt_BR.po: Fixed terminology in Brazilian Portuguese translation by
+       Vladimir Melo.
+    
+    svn path=/trunk/; revision=2103
+
+ po/ChangeLog |    5 +++++
+ po/pt_BR.po  |   43 +++++++++++++++++++++----------------------
+ 2 files changed, 26 insertions(+), 22 deletions(-)
+
+commit 792f6408202ebfe840d7b33df70452b7b7bdc790
+Author: Mugurel Tudor <mugurelu gnome ro>
+Date:   Sun Sep 21 21:23:37 2008 +0000
+
+    Updated Romanian translation by Mişu Moldovan <dumol gnome ro>
+    
+    2008-09-22  Mugurel Tudor  <mugurelu gnome ro>
+    
+       * ro.po: Updated Romanian translation by
+       Mişu Moldovan <dumol gnome ro>
+    
+    svn path=/trunk/; revision=2102
+
+ po/ChangeLog |    5 ++++
+ po/ro.po     |   68 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 43 insertions(+), 30 deletions(-)
+
+commit afc352ee3267250ce043e6f09de44268ed35c99a
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Thu Sep 18 02:06:51 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    * Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2101
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 5f4cd5aa22c2606a0bad57b39c50de7f83019b68
+Author: Luca Ferretti <elle uca libero it>
+Date:   Wed Sep 17 18:21:33 2008 +0000
+
+    Updated Italian translation by Francesco Marletta.
+    
+    2008-09-17  Luca Ferretti  <elle uca libero it>
+    
+       * it.po: Updated Italian translation by Francesco Marletta.
+    
+    svn path=/trunk/; revision=2100
+
+ po/ChangeLog |    4 ++++
+ po/it.po     |   54 +++++++++++++++++++++++++-----------------------------
+ 2 files changed, 29 insertions(+), 29 deletions(-)
+
+commit 96c65ee99cfb9a8e790492b2fc498171e666a6ed
+Author: Shankar Prasad <sprasad src gnome org>
+Date:   Mon Sep 15 10:48:27 2008 +0000
+
+    updated kannada translation and ChangeLog
+    
+    svn path=/trunk/; revision=2099
+
+ po/ChangeLog |    4 ++
+ po/kn.po     |   92 +++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 53 insertions(+), 43 deletions(-)
+
+commit 24b4ad647d04efb2ed0119727a3dd6bb5e8c05e3
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Mon Sep 15 09:48:03 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    * Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2098
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 25642a2991556c9260eed58f4443ebf725e7d81f
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Sun Sep 14 16:33:04 2008 +0000
+
+    Updated Portuguese translation.
+    
+    2008-09-14  Duarte Loreto <happyguy_pt hotmail com>
+    
+       * pt.po: Updated Portuguese translation.
+    
+    svn path=/trunk/; revision=2097
+
+ po/ChangeLog |    4 +++
+ po/pt.po     |   60 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 34 insertions(+), 30 deletions(-)
+
+commit 15c8c1080589506eeec722032d5a8b0292e020e8
+Author: Manoj Kumar Giri <mgiri src gnome org>
+Date:   Wed Sep 10 07:54:25 2008 +0000
+
+    Updated Oriya (or.po) Translation
+    
+    svn path=/trunk/; revision=2096
+
+ po/ChangeLog |    4 +++
+ po/or.po     |   78 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 46 insertions(+), 36 deletions(-)
+
+commit 722550ac37d46549e865149be2220157634965cb
+Author: Praveen Arimbrathodiyil <apravi src gnome org>
+Date:   Wed Sep 10 04:08:15 2008 +0000
+
+    small correction
+    
+    svn path=/trunk/; revision=2095
+
+ po/ml.po |   10 ++--------
+ 1 files changed, 2 insertions(+), 8 deletions(-)
+
+commit 6545d58a8e6e9c7e683f8726158f0c9665396b11
+Author: Robert Sedak <rsedak src gnome org>
+Date:   Tue Sep 9 17:18:14 2008 +0000
+
+    Update: Croatian Language
+    
+    svn path=/trunk/; revision=2094
+
+ po/ChangeLog |    3 ++
+ po/hr.po     |   74 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 43 insertions(+), 34 deletions(-)
+
+commit 34e10694b47a49961b67c96230fbf1823548f657
+Author: Christian Persch <chpe src gnome org>
+Date:   Mon Sep 8 20:09:06 2008 +0000
+
+    vte 0.17.3.
+    
+    svn path=/trunk/; revision=2092
+
+ ChangeLog                          |    7 +++++++
+ NEWS                               |   12 ++++++++++++
+ configure.in                       |    4 ++--
+ doc/reference/tmpl/reaper.sgml     |   32 ++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/vte-unused.sgml |   30 ------------------------------
+ 5 files changed, 53 insertions(+), 32 deletions(-)
+
+commit 2698dbcc5c8805380c5fc77ca1928ec582c84728
+Author: Christian Persch <chpe src gnome org>
+Date:   Sun Sep 7 17:53:11 2008 +0000
+
+    Update python bindings.
+    
+       * python/vte.defs: Update python bindings.
+    
+    svn path=/trunk/; revision=2091
+
+ ChangeLog       |    4 ++
+ python/vte.defs |  127 ++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 101 insertions(+), 30 deletions(-)
+
+commit 0f3575738b510049d54e133a6a5a74070772ffd0
+Author: Sébastien Granjoux <seb sfo free fr>
+Date:   Mon Sep 1 11:14:44 2008 +0000
+
+    Bug 538344 – Anjuta hangs when program is executed in terminal
+    
+    2008-08-20  Sébastien Granjoux  <seb sfo free fr>
+    
+       Bug 538344 – Anjuta hangs when program is executed in terminal
+    
+       * src/vte.c: Ensure the output channel exists when we need to write.
+    
+    
+    svn path=/trunk/; revision=2090
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 ++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 13bbce8161377ae4f9ff866fded76a795613dc9f
+Author: Goran Rakic <grakic src gnome org>
+Date:   Mon Aug 25 14:57:20 2008 +0000
+
+    Conversion from sr@Latn to sr@latin
+    
+    svn path=/trunk/; revision=2089
+
+ po/ChangeLog                   |    5 +++++
+ po/LINGUAS                     |    2 +-
+ po/{sr Latn po => sr latin po} |    0
+ 3 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 0e0aab333668dd11959b5ef0e8695dc1236c40bb
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Aug 20 13:10:12 2008 +0000
+
+    Plug a mem leak.
+    
+    svn path=/trunk/; revision=2088
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 +++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 555d0d2a8e4d6f992789d6bd00137ce6b9f853e3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Aug 15 20:11:58 2008 +0000
+
+    fcntl(2) specifies that the flags argument is a long. Make it so.
+    
+    2008-08-15  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_set_pty):
+       fcntl(2) specifies that the flags argument is a long. Make it so.
+    
+    
+    svn path=/trunk/; revision=2087
+
+ ChangeLog |    5 +++++
+ src/vte.c |   24 ++++++++++++------------
+ 2 files changed, 17 insertions(+), 12 deletions(-)
+
+commit e976391ce7dd68d4e66bf22194112772a099dbfd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 14 00:00:38 2008 +0000
+
+    Fix all "signed vs unsigned comparison" warnings.
+    
+    2008-08-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_match_check_internal_vte),
+            (vte_terminal_ensure_cursor), (vte_terminal_set_colors),
+            (_vte_terminal_insert_char), (vte_terminal_feed),
+            (vte_terminal_key_press), (vte_terminal_match_hilite_update),
+            (vte_terminal_extend_selection):
+            * src/vteseq.c (vte_terminal_find_charcell),
+            (vte_sequence_handler_set_title_internal),
+            (vte_sequence_handler_decset_internal), (vte_sequence_handler_cb),
+            (vte_sequence_handler_cd), (vte_sequence_handler_ce),
+            (vte_sequence_handler_ec), (vte_sequence_handler_ta),
+            (vte_sequence_handler_set_mode),
+            (vte_sequence_handler_window_manipulation):
+            Fix all "signed vs unsigned comparison" warnings.
+    
+    
+    svn path=/trunk/; revision=2086
+
+ ChangeLog         |   17 ++++++++++++++++
+ src/vte-private.h |    4 +-
+ src/vte.c         |   32 +++++++++++++++---------------
+ src/vteseq.c      |   55 +++++++++++++++++++++++++++--------------------------
+ 4 files changed, 63 insertions(+), 45 deletions(-)
+
+commit aabb10fb643c6625afbe7c369f8e67e3f8314861
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Aug 13 22:42:47 2008 +0000
+
+    Fix uninitialized cursor warning. Setting to NULL sounds right to me.
+    
+    2008-08-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (regex_match_clear_cursor),
+            (vte_terminal_set_cursor_from_regex_match):
+            Fix uninitialized cursor warning.  Setting to NULL sounds
+            right to me.  ChPe?
+    
+    
+    svn path=/trunk/; revision=2085
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    8 +++++++-
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 30213a63183d6f07589051469d80d406b698a8f3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Aug 13 22:37:22 2008 +0000
+
+    Remove useless "inline" decorators. Gcc has been rightfully complaining.
+    
+    2008-08-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Remove useless "inline" decorators.  Gcc has been
+            rightfully complaining.
+    
+    
+    svn path=/trunk/; revision=2084
+
+ ChangeLog |    5 +++++
+ src/vte.c |   12 ++++++------
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+commit 78e20d9e6ded635c1c60f84f4d8e0c9c5d553662
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Aug 13 22:21:12 2008 +0000
+
+    Bug 546940 – Crash when selecting text
+    
+    2008-08-13  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 546940 – Crash when selecting text
+    
+            * src/vte.c (vte_terminal_extend_selection): Fix crash with 64-bit
+            systems.  Note to self:
+    
+                    unsigned int len = 0;
+                    long i = len - 1;
+                    assert (i < 0);
+    
+            fails on 64-bit systems.
+    
+    
+    svn path=/trunk/; revision=2083
+
+ ChangeLog |   13 +++++++++++++
+ src/vte.c |   17 +++++++++--------
+ 2 files changed, 22 insertions(+), 8 deletions(-)
+
+commit cc7d8be81cc044c23c406e02ed8bd7ce1045cda7
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Wed Aug 6 08:33:19 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2082
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit a6b2d703da2bbcfdc52dcdbf4494a9dc737cb47e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Aug 5 10:30:38 2008 +0000
+
+    Released vte-0.17.1.
+    
+    2008-08-05  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.17.1.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.17.1.
+            Bumped libtool version to 12:0:3.
+    
+    
+    svn path=/trunk/; revision=2080
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |   27 +++++++++++++++++++++++++++
+ configure.in |   10 +++++-----
+ 3 files changed, 41 insertions(+), 5 deletions(-)
+
+commit 795f95181b797396950abe1e9f466313d9edd389
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Aug 5 06:33:47 2008 +0000
+
+    Bug 546366 – hard to select last tab char on a line
+    
+    2008-08-05  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 546366 – hard to select last tab char on a line
+    
+            * src/vte.c (vte_terminal_extend_selection):
+            * src/vteseq.c (vte_sequence_handler_ta):
+            Handle fragment cells.
+    
+    
+    svn path=/trunk/; revision=2079
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |   22 ++++++++--------------
+ src/vteseq.c |    2 +-
+ 3 files changed, 17 insertions(+), 15 deletions(-)
+
+commit b5c37ee01646dc533d978ca9708eb0d2a6ad1d28
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Aug 5 05:51:08 2008 +0000
+
+    Bug 545924 – tab characters not handled correctly after ncurses clear
+    
+    2008-08-05  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 545924 – tab characters not handled correctly after ncurses clear
+            Patch from Patryk Zawadzki
+    
+            * src/vteseq.c (vte_sequence_handler_ta): Ignore empty cells at end of
+            line.
+    
+    
+    svn path=/trunk/; revision=2078
+
+ ChangeLog    |    8 ++++++++
+ src/vteseq.c |   16 ++++++++++++++++
+ 2 files changed, 24 insertions(+), 0 deletions(-)
+
+commit 4eb7507c90c8803ebaa14dfbf9ed7c8186219b0e
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Tue Jul 29 01:37:38 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2077
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit a24eab7c0d927f35e37e72d1fe415433aeb32bab
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Jul 13 23:03:01 2008 +0000
+
+    Bug 542795 – VTE_CJK_WIDTH don't work
+    
+    2008-07-14  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 542795 – VTE_CJK_WIDTH don't work
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Fix VTE_CJK_WIDTH env
+            handling.
+    
+    
+    svn path=/trunk/; revision=2076
+
+ ChangeLog     |    7 +++++++
+ src/iso2022.c |    4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 233a6fb058dab427e78bb4bbfa2763bd552acc14
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Wed Jul 2 15:09:02 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2075
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 893f7473321bb1914c76b4e64f00a935083df15f
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Wed Jul 2 15:08:34 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2074
+
+ po/oc.po |   20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 19687441ca358e11e5f1334516862ba09cfe223c
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Jun 27 19:05:10 2008 +0000
+
+    Bug 399744 – Hide more font-aa implementation details
+    
+    svn path=/trunk/; revision=2073
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |   12 +++++++++++-
+ 2 files changed, 18 insertions(+), 1 deletions(-)
+
+commit df24a29142fd8d825d3eb5ec123f3e83ea1c8e1e
+Author: Christian Persch <chpe src gnome org>
+Date:   Fri Jun 27 16:51:18 2008 +0000
+
+    Bug 510903 – use gtk-cursor-blink setting
+    
+    svn path=/trunk/; revision=2072
+
+ ChangeLog                      |   11 ++
+ doc/reference/tmpl/vte.sgml    |   18 +++
+ doc/reference/vte-sections.txt |    2 +
+ src/vte-private.h              |   10 +-
+ src/vte.c                      |  234 +++++++++++++++++++++++++++-------------
+ src/vte.h                      |   13 ++-
+ 6 files changed, 208 insertions(+), 80 deletions(-)
+
+commit 51a751d3515008aefd6080e827a7fe59d251d1fd
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Jun 26 18:45:41 2008 +0000
+
+    Remove duplicate declarations.
+    
+    svn path=/trunk/; revision=2071
+
+ ChangeLog |    5 +++++
+ src/vte.h |    2 --
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 6f037ba50d22bb7d1d6c7acaf0fec7df824f489f
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Jun 26 18:37:59 2008 +0000
+
+    Fix the Use of intltool 0.40.0.
+    
+    svn path=/trunk/; revision=2070
+
+ ChangeLog   |    6 ++++++
+ Makefile.am |    5 ++---
+ autogen.sh  |    9 ++++++---
+ 3 files changed, 14 insertions(+), 6 deletions(-)
+
+commit af4cc7446b6d563baedbedc39d46d9911c5509c9
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Jun 26 18:32:56 2008 +0000
+
+    Disallow direct inclusion of vteversion.h.
+    
+    svn path=/trunk/; revision=2069
+
+ ChangeLog           |    5 +++++
+ src/vteversion.h.in |    4 ++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit c4b48e67fca6adb72ce5cba9c2ee3d0d4956a807
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Jun 26 18:32:49 2008 +0000
+
+    Use glib-mkenums to generate the enum types.
+    
+    svn path=/trunk/; revision=2068
+
+ ChangeLog                      |   10 ++++++++++
+ configure.in                   |    7 +++++++
+ doc/reference/Makefile.am      |    2 +-
+ src/Makefile.am                |   29 ++++++++++++++++++++++++-----
+ src/vte.c                      |   38 --------------------------------------
+ src/vte.h                      |    7 +++++--
+ src/vtetypebuiltins.c.template |   40 ++++++++++++++++++++++++++++++++++++++++
+ src/vtetypebuiltins.h.template |   28 ++++++++++++++++++++++++++++
+ 8 files changed, 115 insertions(+), 46 deletions(-)
+
+commit fd64778a2c3cb991f9cff661cf35fa3830282ed7
+Author: Christian Persch <chpe src gnome org>
+Date:   Thu Jun 26 17:56:54 2008 +0000
+
+    Replace more gtk type macros with the gobject ones. Bug #539130.
+    
+    svn path=/trunk/; revision=2067
+
+ ChangeLog       |    9 +++++++++
+ src/reaper.h    |    8 ++++----
+ src/vte.c       |    8 ++++----
+ src/vteaccess.h |   44 ++++++++++++++++----------------------------
+ src/vtebg.h     |    8 ++++----
+ 5 files changed, 37 insertions(+), 40 deletions(-)
+
+commit b2d516f19a134b87cc79b1745da522cb2e78c0b2
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Jun 25 16:51:19 2008 +0000
+
+    Bug 540182 – crash in geany with vte trunk
+    Make sure that match_attributes always exist even if there haven't been any matches added.
+    
+    svn path=/trunk/; revision=2066
+
+ ChangeLog |   11 +++++++++--
+ src/vte.c |   10 ++++------
+ 2 files changed, 13 insertions(+), 8 deletions(-)
+
+commit 6cc1167abedd3254a480cb64361a33cdc2af3e5d
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jun 24 18:12:41 2008 +0000
+
+    Force a redraw when changing the allow-bold property. Bug #535552.
+    
+    svn path=/trunk/; revision=2065
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    6 ++++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit a35f1d6978906b526d2e69b50e11bfb5b523388a
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jun 24 18:12:32 2008 +0000
+
+    Bug 535469 – support named cursors on matches
+    
+    svn path=/trunk/; revision=2064
+
+ ChangeLog                      |    8 ++
+ doc/reference/tmpl/vte.sgml    |   10 +++
+ doc/reference/vte-sections.txt |    1 +
+ src/vte-private.h              |   15 ++++-
+ src/vte.c                      |  148 ++++++++++++++++++++++++++++-----------
+ src/vte.h                      |    2 +
+ 6 files changed, 140 insertions(+), 44 deletions(-)
+
+commit 624a6898f8e1bfe0cd716a33efc34db6899cff75
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jun 24 18:12:23 2008 +0000
+
+    Bug 418918 – Switch to GRegex
+    
+    svn path=/trunk/; revision=2063
+
+ ChangeLog                      |    9 +
+ doc/reference/tmpl/vte.sgml    |   11 ++
+ doc/reference/vte-sections.txt |    1 +
+ src/vte-private.h              |   16 ++-
+ src/vte.c                      |  361 +++++++++++++++++++++++++++++++++++++---
+ src/vte.h                      |    5 +-
+ 6 files changed, 376 insertions(+), 27 deletions(-)
+
+commit 5dd65933082dd70af93c9350ebc88c177fee7901
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jun 24 18:12:12 2008 +0000
+
+    Implement the set_scroll_adjustments signal so one can add a VteTerminal to a GtkScrolledWindow. Bug 
#535467.
+    
+    svn path=/trunk/; revision=2062
+
+ ChangeLog                   |    7 ++++
+ doc/reference/tmpl/vte.sgml |    9 +++++
+ src/vte.c                   |   69 ++++++++++++++++++++++++++++---------------
+ src/vte.h                   |    5 ++-
+ 4 files changed, 65 insertions(+), 25 deletions(-)
+
+commit 460fcb3becf82346c62cedfde23bace926b5b112
+Author: Christian Persch <chpe src gnome org>
+Date:   Tue Jun 24 18:12:02 2008 +0000
+
+    Bug 535468 – need version check macros
+    
+    svn path=/trunk/; revision=2061
+
+ ChangeLog                          |   12 +++++++
+ configure.in                       |   26 ++++++++++++----
+ doc/reference/tmpl/vteversion.sgml |   59 ++++++++++++++++++++++++++++++++++++
+ doc/reference/vte-sections.txt     |   10 ++++++
+ doc/reference/vte.types            |    1 +
+ src/Makefile.am                    |    6 ++-
+ src/vte.h                          |    2 +
+ src/vteversion.h.in                |   31 +++++++++++++++++++
+ 8 files changed, 139 insertions(+), 8 deletions(-)
+
+commit 089b2a4ec92e6c2b0ade68c38b2d41c55335023d
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sat Jun 21 04:23:28 2008 +0000
+
+    Don't use GTK_CHECK* macros.
+    
+    2008-06-21  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.h: Don't use GTK_CHECK* macros.
+    
+    svn path=/trunk/; revision=2060
+
+ ChangeLog |    4 ++++
+ src/vte.h |   18 +++++++++---------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+commit 8023bb999cd894a16fabca46c6ace021a8b19933
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sun Jun 15 07:46:49 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2059
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit e1617b3e8fa52c51a1ff1b84b5c0966a1b797f6f
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sun Jun 15 07:46:02 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2058
+
+ po/oc.po |   24 ++++++++++++------------
+ 1 files changed, 12 insertions(+), 12 deletions(-)
+
+commit b325f47f4ff26ead5e8065d33814ca43f85167bc
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Wed Jun 11 21:42:42 2008 +0000
+
+    Updated Arabic Translation by Khaled Hosny.
+    
+    svn path=/trunk/; revision=2057
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   30 +++++++++++++-----------------
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+commit b0491748ed63846200e01b458d5aa2f30b8d3bb7
+Author: Christian Persch <chpe src gnome org>
+Date:   Wed Jun 4 18:57:24 2008 +0000
+
+       Bug 515972 – Bold black is black in vte's default palette
+    
+       * src/vte.c: (vte_terminal_set_colors): Correctly set the value of
+       'bold black' in the palette. Patch by Santtu Lakkala.
+    
+    svn path=/trunk/; revision=2056
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 725da8b7117cc8539bfc8c946ebe4220a979c50c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jun 4 18:38:27 2008 +0000
+
+    Released vte-0.16.14.
+    
+    2008-06-04  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.14.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.14.
+            Bumped libtool version to 11:18:2.
+    
+    
+    svn path=/trunk/; revision=2054
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |   12 ++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 23 insertions(+), 2 deletions(-)
+
+commit 6cc2912d303cd13184ab14112787ff9557e83edd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jun 4 18:30:20 2008 +0000
+
+    Bug 536632 – vte build failure in ring.c:210: error: expected expression
+    
+    2008-06-04  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 536632 – vte build failure in ring.c:210: error: expected
+            expression before 'do'
+    
+            * src/debug.h:
+            * src/ring.c:
+            * src/ring.h:
+            With latest glib (after bug #519026), g_error is expanding to
+            "do {...} while(0)" instead of "{...}".  This breaks build in
+            debugging mode.  Use g_critical instead.  Also add some
+            G_STMT_START/END to some macros.
+    
+    
+    svn path=/trunk/; revision=2053
+
+ ChangeLog   |   13 +++++++++++++
+ src/debug.h |    2 +-
+ src/ring.c  |    2 +-
+ src/ring.h  |   18 +++++++++---------
+ 4 files changed, 24 insertions(+), 11 deletions(-)
+
+commit 1102739ce33d9e0b29da553ec127396a4322ea55
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu May 29 11:50:13 2008 +0000
+
+    Replace previous commit with the better patch by Christian Persch.
+    
+    2008-05-29  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/pty.c (merge_environ): Replace previous commit with the
+        better patch by Christian Persch.
+    
+    
+    svn path=/trunk/; revision=2052
+
+ ChangeLog |    5 +++++
+ src/pty.c |    9 +++------
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 697d6005bcb227f94389b444dec25246dc636602
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu May 29 11:46:29 2008 +0000
+
+    Fix bug in patch to use g_listenv() as it only returns the variable name
+    
+    2008-05-29  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/pty.c (merge_environ): Fix bug in patch to use g_listenv()
+        as it only returns the variable name and we need to use g_getenv()
+        to retrieve its value.
+    
+    
+    svn path=/trunk/; revision=2051
+
+ ChangeLog |    6 ++++++
+ src/pty.c |    9 ++++-----
+ 2 files changed, 10 insertions(+), 5 deletions(-)
+
+commit bcddb79198f3a9591c0aa49fe36e82b281017447
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed May 28 00:38:15 2008 +0000
+
+    Oops. Fix thinko in last commit.
+    
+    2008-05-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Oops.  Fix thinko
+            in last commit.
+    
+    
+    svn path=/trunk/; revision=2050
+
+ ChangeLog     |    5 +++++
+ src/iso2022.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 6e0de06c28aeace78b017c6a23ae5f0afac0aa49
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue May 27 18:56:34 2008 +0000
+
+    Bug 535022 – ambiguous width in utf8 locale
+    
+    2008-05-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 535022 – ambiguous width in utf8 locale
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Recognize
+            env var settings VTE_CJK_WIDTH=narrow and VTE_CJK_WIDTH=wide.
+            Any other value means "auto" based on locale, as it was doing
+            previously.
+    
+    
+    svn path=/trunk/; revision=2049
+
+ ChangeLog     |    9 +++++++++
+ src/iso2022.c |   11 +++++++++--
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 3e2d0ba9ffe54588e492c88da1b8352fd1a75d45
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri May 23 20:32:37 2008 +0000
+
+    Update tmpls
+    
+    svn path=/trunk/; revision=2048
+
+ doc/reference/tmpl/reaper.sgml     |   32 --------------------------------
+ doc/reference/tmpl/vte-unused.sgml |   30 ++++++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 32 deletions(-)
+
+commit e66bae863d1f645c039c8ca390e5458d8622a230
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Thu May 22 23:00:52 2008 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=2047
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit c0d797cd0610dcf8954c7444101e0e30ad97c12e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed May 21 07:36:14 2008 +0000
+
+    Silence compiler warning about using environ as a local variable name.
+    
+    2008-05-21  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/pty.c (merge_environ): Silence compiler warning about using
+        environ as a local variable name.
+    
+    
+    svn path=/trunk/; revision=2046
+
+ ChangeLog |    5 +++++
+ src/pty.c |   13 +++++++------
+ 2 files changed, 12 insertions(+), 6 deletions(-)
+
+commit 6daf749a9a5aa37ff946d4142d9b4492fb25cc3e
+Author: Richard Hult <richard imendio com>
+Date:   Wed May 21 07:32:36 2008 +0000
+
+    Bug 534148 – Use g_listenv() instead of environ
+    
+    2008-05-21  Richard Hult  <richard imendio com>
+    
+        Bug 534148 – Use g_listenv() instead of environ
+    
+        * src/pty.c: (merge_environ): Use g_listenv() instead of
+        non-portable environ extern.
+    
+    
+    svn path=/trunk/; revision=2045
+
+ ChangeLog |    7 +++++++
+ src/pty.c |    6 ++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit b88d37fa384aec28dc272222adfcff73885fcd1e
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon May 19 13:07:31 2008 +0000
+
+    automake doesn't like to substitute more than one variable at a time.
+    
+    2008-05-19  Kjartan Maraas  <kmaraas gnome org>
+    
+       * configure.in: automake doesn't like to substitute more
+       than one variable at a time.
+       * src/vtedraw.c: (_vte_draw_get_using_fontconfig):
+       * src/vtetc.c: (_vte_termcap_find_boolean):
+       Fix two compiler warnings.
+    
+    svn path=/trunk/; revision=2044
+
+ ChangeLog     |    8 ++++++++
+ configure.in  |    3 ++-
+ src/vtedraw.c |    2 +-
+ src/vtetc.c   |    2 +-
+ 4 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 65b97373f0d1772f7191622d8136be9467e1cd69
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Mon May 19 01:17:13 2008 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=2043
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   32 ++++++++++++++++----------------
+ 2 files changed, 20 insertions(+), 16 deletions(-)
+
+commit 22b930d866de5b1dd9d025e0c63bde3612d11d2d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri May 9 21:56:55 2008 +0000
+
+    Add the text to draw to the debug output.
+    
+    2008-05-09  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vtedraw.c (_vte_draw_text):
+            Add the text to draw to the debug output.
+    
+    
+    svn path=/trunk/; revision=2042
+
+ ChangeLog     |    5 +++++
+ src/vtedraw.c |   17 +++++++++++++----
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+commit a51119aca141b00564b680472d9cbb56311ec40e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri May 9 19:50:37 2008 +0000
+
+    Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion `channel != NULL'
+    
+    2008-05-09  Chris Wilson  <chris chris-wilson co uk>
+    
+        Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion
+                               `channel != NULL' failed"
+    
+        * src/debug.c (_vte_debug_parse_string):
+        * src/debug.h:
+        * src/vte-private.h:
+        * src/vte.c (vte_terminal_emit_adjustment_changed),
+        (_vte_terminal_adjust_adjustments_full),
+        (vte_terminal_scroll_lines), (vte_terminal_maybe_scroll_to_bottom),
+        (_vte_terminal_insert_char), (vte_terminal_catch_child_exited),
+        (mark_input_source_invalid), (_vte_terminal_connect_pty_read),
+        (mark_output_source_invalid), (_vte_terminal_connect_pty_write),
+        (_vte_terminal_disconnect_pty_read),
+        (_vte_terminal_disconnect_pty_write), (_vte_terminal_fork_basic),
+        (vte_terminal_eof), (_vte_terminal_enable_input_source),
+        (vte_terminal_io_read), (vte_terminal_handle_scroll),
+        (vte_terminal_finalize), (vte_terminal_class_init),
+        (vte_terminal_set_pty), (process_timeout), (update_repeat_timeout),
+        (update_timeout):
+        It was possible for _vte_terminal_enable_input_source() to be called
+        after the input closed with G_IO_HUP. The minimal change would just
+        have been to add a guard to check the pty_master was still valid
+        before reattaching the source. Instead I removed the redundant
+        duplication of the input and output channels and added lots of
+        debugging.
+    
+    
+    svn path=/trunk/; revision=2041
+
+ ChangeLog         |   28 +++++++++
+ src/debug.c       |    3 +
+ src/debug.h       |    3 +-
+ src/vte-private.h |    5 +-
+ src/vte.c         |  168 +++++++++++++++++++++++++---------------------------
+ 5 files changed, 116 insertions(+), 91 deletions(-)
+
+commit ef4e36154eabf2d74bc1f48db8ef095cec02cbc5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu May 8 15:23:16 2008 +0000
+
+    Bug 516869 – vte displays nothing on GTK+/DirectFB
+    
+    2008-05-08  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 516869 – vte displays nothing on GTK+/DirectFB
+    
+        Original patch by Jérémy Bobbio.
+    
+        * src/vte.c (vte_terminal_class_init), (update_regions),
+        (update_repeat_timeout), (update_timeout):
+        gdk_window_process_all_updates() is ineffective on the gtk+-directfb
+        and gtk+-quartz backends, so in order to process updates immediately
+        one must call gdk_window_process_updates() on the desired GdkWindows
+        instead.
+    
+    
+    svn path=/trunk/; revision=2040
+
+ ChangeLog |   13 +++++++++++++
+ src/vte.c |    9 ++++++++-
+ 2 files changed, 21 insertions(+), 1 deletions(-)
+
+commit 00caa22356c2810242af3b6a3677526ac8a60f33
+Author: Yair Hershkovitz <yairhr src gnome org>
+Date:   Sun Apr 20 15:58:09 2008 +0000
+
+    updated hebrew translation
+    
+    svn path=/trunk/; revision=2039
+
+ po/ChangeLog |    4 ++++
+ po/he.po     |   40 +++++++++++++++++++++-------------------
+ 2 files changed, 25 insertions(+), 19 deletions(-)
+
+commit 68852ecef2ccb2fc02e4cc540c5ef775d056721a
+Author: Eskild Hustvedt <eskildh src gnome org>
+Date:   Mon Mar 31 13:45:23 2008 +0000
+
+    Updated Norwegian Nynorsk translation
+    
+    svn path=/trunk/; revision=2038
+
+ po/ChangeLog |    4 +++
+ po/nn.po     |   75 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 45 insertions(+), 34 deletions(-)
+
+commit 4c2e67286eee99b9a54805a7982a80228e0843f7
+Author: Baris Cicek <bcicek src gnome org>
+Date:   Mon Mar 31 11:31:54 2008 +0000
+
+    Updated Turkish Translation
+    
+    svn path=/trunk/; revision=2037
+
+ po/ChangeLog |    4 +++
+ po/tr.po     |   73 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 41 insertions(+), 36 deletions(-)
+
+commit c1755009386ff482a00fea751a04853dab3d28ce
+Author: Ani Peter <anipeter src gnome org>
+Date:   Tue Mar 11 04:41:13 2008 +0000
+
+    Updated Malayalam Translation
+    
+    svn path=/trunk/; revision=2036
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 80ade1073c7f544cc88eafe2b3e9a8c82c7a041c
+Author: Ani Peter <anipeter src gnome org>
+Date:   Tue Mar 11 04:41:01 2008 +0000
+
+    Updated Malayalam Translation
+    
+    svn path=/trunk/; revision=2035
+
+ po/ml.po |   99 +++++++++++++++++++++++++++++++++----------------------------
+ 1 files changed, 54 insertions(+), 45 deletions(-)
+
+commit 061d6d6a3cee533f6439a85fb6e5e137784c2efa
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 10 20:32:45 2008 +0000
+
+    Released vte-0.16.13.
+    
+    2008-03-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.13.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.13.
+            Bumped libtool version to 11:17:2.
+    
+    
+    svn path=/trunk/; revision=2033
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |    8 ++++++++
+ configure.in |    4 ++--
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+commit d1e9eb3d946938a6eeaa65032f23bd368a532ed0
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Mon Mar 10 01:36:49 2008 +0000
+
+    Translation updated
+    
+    2008-03-10  Gabor Kelemen  <kelemeng gnome hu>
+    
+       * hu.po: Translation updated
+    
+    
+    svn path=/trunk/; revision=2032
+
+ po/ChangeLog |    4 +++
+ po/hu.po     |   59 +++++++++++++++++++++++++++------------------------------
+ 2 files changed, 32 insertions(+), 31 deletions(-)
+
+commit c98754ce7d9d0918a694b1c4fb304220b0ae72ba
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sat Mar 8 09:34:15 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2031
+
+ po/oc.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bbc876ce14e5b2e57b6c317b6323fa83ef604d9f
+Author: Marcel Telka <marcel telka sk>
+Date:   Sat Mar 8 09:01:30 2008 +0000
+
+    Updated Slovak translation.
+    
+    2008-03-08  Marcel Telka  <marcel telka sk>
+    
+       * sk.po: Updated Slovak translation.
+    
+    svn path=/trunk/; revision=2030
+
+ po/ChangeLog |    4 +++
+ po/sk.po     |   74 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 42 insertions(+), 36 deletions(-)
+
+commit 09d03d12fa7d9bf0f781acd8c57ba03b4dbf851d
+Author: Rahul Bhalerao <rahulb src gnome org>
+Date:   Mon Mar 3 16:18:00 2008 +0000
+
+    Updated Marathi Translations.
+    
+    svn path=/trunk/; revision=2029
+
+ po/ChangeLog |    4 +++
+ po/mr.po     |   80 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 46 insertions(+), 38 deletions(-)
+
+commit 20261c75ac0d2b54e5bfdd1a0d1f062f9b0094d2
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Feb 20 18:39:08 2008 +0000
+
+    Bug 517709 – VTE's pty.c makes 4096 getrlimit calls when it only needs
+    
+    2008-02-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 517709 – VTE's pty.c makes 4096 getrlimit calls when it only needs
+            one
+    
+            * src/pty.c (_vte_pty_start_helper): Only close fds 0, 1, and 2.
+            gnome-pty-helper closes all fds anyway.
+    
+    
+    svn path=/trunk/; revision=2028
+
+ ChangeLog |    8 ++++++++
+ src/pty.c |    9 ++++-----
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 29ec8603290a2dd158e85573ac1766a1efd069ab
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Tue Feb 19 21:33:40 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2027
+
+ po/oc.po |   24 ++++++++++++------------
+ 1 files changed, 12 insertions(+), 12 deletions(-)
+
+commit a1cd441aa146c432397ec627b6053a01d5cb1df6
+Author: Petr Kovář <pmkovar src gnome org>
+Date:   Sat Feb 16 15:25:41 2008 +0000
+
+    cs.po: Updated Czech translation by Pavel Sefranek.
+    
+    svn path=/trunk/; revision=2026
+
+ po/ChangeLog |    4 +++
+ po/cs.po     |   78 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 48 insertions(+), 34 deletions(-)
+
+commit cf13ae591f4fa007903e09671967dc7d334dfdde
+Author: Pawan Chitrakar <pachimho src gnome org>
+Date:   Thu Feb 14 09:40:36 2008 +0000
+
+    Updated Nepali Translation
+    
+    svn path=/trunk/; revision=2025
+
+ po/ChangeLog |    4 ++
+ po/ne.po     |  102 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 58 insertions(+), 48 deletions(-)
+
+commit 7b516616cb67b18e7512a20b1ea20c488c3ea2e5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 8 19:50:41 2008 +0000
+
+    Remove unneeded #include <fontconfig/fontconfig.h>
+    
+    2008-02-08  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c:
+            * src/vteapp.c:
+            * src/vtergb.c:
+            Remove unneeded #include <fontconfig/fontconfig.h>
+    
+    
+    svn path=/trunk/; revision=2024
+
+ ChangeLog    |    7 +++++++
+ src/vte.c    |    1 -
+ src/vteapp.c |    3 ---
+ src/vtergb.c |    1 -
+ 4 files changed, 7 insertions(+), 5 deletions(-)
+
+commit ffe449e246f87db68cc647c8928940a1141dccf2
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Mon Feb 4 12:20:50 2008 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2023
+
+ po/oc.po |   11 +++++------
+ 1 files changed, 5 insertions(+), 6 deletions(-)
+
+commit 81e5e34d6efdfd9425682e7b5caa3bcec4b2a007
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Thu Jan 31 08:23:11 2008 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=2022
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 458d15993513afc79e750c89788e236635e63b71
+Author: Inaki Larranaga Murgoitio <dooteo euskalgnu org>
+Date:   Mon Jan 14 16:12:08 2008 +0000
+
+    Updated Basque translation.
+    
+    2008-01-14  Inaki Larranaga Murgoitio  <dooteo euskalgnu org>
+    
+       * eu.po: Updated Basque translation.
+    
+    
+    svn path=/trunk/; revision=2021
+
+ po/ChangeLog |   13 ++++++++---
+ po/eu.po     |   63 ++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 38 insertions(+), 38 deletions(-)
+
+commit c1d18de1ebc5f6b061e9578df418db3a5a04e981
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jan 9 20:48:55 2008 +0000
+
+    Bug 449131 – Wrong gettext domain
+    
+    2008-01-09  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 449131 – Wrong gettext domain
+    
+            * src/pty.c:
+            * src/reaper.c (vte_reaper_class_init):
+            * src/trie.c:
+            * src/vtebg.c (vte_bg_class_init):
+            * src/vteglyph.c:
+            Oops.  Fix all remaining ones too.
+    
+    
+    svn path=/trunk/; revision=2020
+
+ ChangeLog      |   11 +++++++++++
+ src/pty.c      |    7 +------
+ src/reaper.c   |    5 ++++-
+ src/trie.c     |    7 +------
+ src/vtebg.c    |    5 ++++-
+ src/vteglyph.c |    8 +-------
+ 6 files changed, 22 insertions(+), 21 deletions(-)
+
+commit c971ab2e546475a681f5df9f7e3e13e5dc089c06
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jan 7 21:51:00 2008 +0000
+
+    Released vte-0.16.12.
+    
+    2008-01-07  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.12.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.12.
+            Bumped libtool version to 11:16:2.
+    .
+    
+    svn path=/trunk/; revision=2018
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |    7 +++++++
+ configure.in |    4 ++--
+ 3 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 5d00298851669b5112f3e9f620f64d6c139035fc
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Mon Dec 31 19:40:25 2007 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=2017
+
+ po/ChangeLog |    5 ++++-
+ po/oc.po     |   45 +++++++++++++++++++++------------------------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+commit 3ed60bccd66dfbda6c2aa0ce3a5310b414d61e23
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Dec 21 08:57:28 2007 +0000
+
+    Forget to save the ChangeLog entry before committing.
+    
+    
+    svn path=/trunk/; revision=2016
+
+ ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit db18d22ff40b71fd78236f3e549dd17c6040088d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Dec 21 08:56:12 2007 +0000
+
+    Bug 503164 – Drawing problems for VTE with gtk+-quartz
+    
+    2007-12-21  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 503164 – Drawing problems for VTE with gtk+-quartz
+    
+        * src/vte.c (vte_terminal_realize):
+        Continuing the saga, remove the fiddling with visibility state
+        during realize.
+    
+    
+    svn path=/trunk/; revision=2015
+
+ ChangeLog |    4 ++++
+ src/vte.c |    3 ---
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit f8980c6af417443b935ec27833ca18ab2028028d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 18 07:27:11 2007 +0000
+
+    Bug 449131 – Wrong gettext domain
+    
+    2007-12-18  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 449131 – Wrong gettext domain
+    
+            * src/vte.c (vte_terminal_class_init): Use GETTEXT_DOMAIN in
+            bind_textdomain_codeset().
+    
+    
+    svn path=/trunk/; revision=2014
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 547529e9780b1341bd084f2491edd257f9b47293
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 17 18:45:58 2007 +0000
+
+    Released vte-0.16.11.
+    
+    2007-12-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.11.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.11.
+            Bumped libtool version to 11:15:2.
+    .
+    
+    svn path=/trunk/; revision=2012
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |    9 +++++++++
+ configure.in |    4 ++--
+ 3 files changed, 20 insertions(+), 2 deletions(-)
+
+commit bb591edae319a9c5228919307a3c21304f9b78cc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Dec 17 13:27:39 2007 +0000
+
+    Bug 503164 – Drawing problems for VTE with gtk+-quartz
+    
+    2007-12-17  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 503164 – Drawing problems for VTE with gtk+-quartz
+    
+        * src/vte.c (vte_terminal_init):
+        GdkQuartz does not generate GdkVisibilityNotify events and
+        so the terminal was never marked as unobscured, causing all
+        redraws to be discarded. Resolve this by initially setting the
+        terminal to be unobscured.
+    
+    
+    svn path=/trunk/; revision=2011
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |    5 +++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit cf1dea5ec122dee4de1e85e352ac0d874679e88f
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sat Dec 15 22:17:46 2007 +0000
+
+    Fix typo in date.
+    
+    svn path=/trunk/; revision=2010
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit daca30a501ebac24e1d5fd98c31760e554f7c343
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 10 23:47:51 2007 +0000
+
+    Bug 319687 – Pasting of text containing characters not in the terminal's
+    
+    2007-12-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 319687 – Pasting of text containing characters not in the
+            terminal's encoding silently fails
+    
+            * src/vteconv.c (_vte_conv_open): Try to open converter with
+            transliteration.  Supported by GNU iconv and GLibc.
+    
+    
+    svn path=/trunk/; revision=2009
+
+ ChangeLog     |    8 ++++++++
+ src/vteconv.c |    7 ++++++-
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 63f5b1e707d1fb450248c8cb335493aa5bb5b047
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Dec 3 23:26:34 2007 +0000
+
+    Released vte-0.16.10.
+    
+    2007-09-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.10.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.10.
+            Bumped libtool version to 11:14:2.
+    .
+    
+    svn path=/trunk/; revision=2007
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |   33 +++++++++++++++++++++++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 44 insertions(+), 2 deletions(-)
+
+commit da8e37ff44c183bfc2b35846ad2ed25f85561edd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Dec 3 11:00:08 2007 +0000
+
+    Bug 497246 – Kill vte_iso2022_fragment_input
+    
+    2007-12-03  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 497246 – Kill vte_iso2022_fragment_input
+    
+        * src/iso2022.c (process_block), (_vte_iso2022_process):
+        Avoid the temporary allocation of the GArray holding the fragments
+        by processing each fragment as it is decyphered. This array is
+        allocated and grown for every single input chunk and is currently the
+        most frequent allocation made by vte.
+    
+    
+    svn path=/trunk/; revision=2006
+
+ ChangeLog     |   10 ++
+ src/iso2022.c |  264 ++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 138 insertions(+), 136 deletions(-)
+
+commit 947de5ebc2c050b337d15d03b90c319957ed4725
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Dec 3 10:41:49 2007 +0000
+
+    Make is_cursor_key static.
+    
+    2007-12-03  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/keymap.c: Make is_cursor_key static.
+    
+    
+    svn path=/trunk/; revision=2005
+
+ ChangeLog    |    4 ++++
+ src/keymap.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 8e2b518dc283781d8eca76c7bc5293d8049e083c
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Nov 28 15:42:41 2007 +0000
+
+    Fix distcheck.
+    
+    svn path=/trunk/; revision=2004
+
+ doc/reference/Makefile.am |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit c619908ba34f1cd82014dda34cc174001726aebd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 28 14:00:21 2007 +0000
+
+    Bug 412435 – Invalid variable name in Makefile.am
+    
+    2007-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 412435 – Invalid variable name in Makefile.am
+    
+            * Makefile.am:
+            * configure.in:
+            * vte.spec.in:
+            Remove spec file and old convenience cvs make targets.
+    
+    
+    svn path=/trunk/; revision=2003
+
+ ChangeLog    |    9 +
+ Makefile.am  |   34 +----
+ configure.in |    1 -
+ vte.spec.in  |  596 ----------------------------------------------------------
+ 4 files changed, 10 insertions(+), 630 deletions(-)
+
+commit 1bb7abd1e685c3c797923445c5f0c5c25def19da
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 28 13:55:38 2007 +0000
+
+    Bug 416561 – Rendering issue in VtePango
+    
+    2007-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 416561 – Rendering issue in VtePango
+    
+            * src/vtepango.c (_vte_pango_draw_rectangle):
+            * src/vtepangox.c (_vte_pango_x_draw_rectangle):
+            gdk_draw_rectangle has slightly different semantics when
+            filling vs outlining.  Fix for that.
+    
+    
+    svn path=/trunk/; revision=2002
+
+ ChangeLog       |    9 +++++++++
+ src/vtepango.c  |    2 +-
+ src/vtepangox.c |    2 +-
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 7342439d31c138c8ea4db58694792f0d76bdb205
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 28 13:43:58 2007 +0000
+
+    Bug 416558 – Rendering errors in VteFT2
+    
+    2007-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 416558 – Rendering errors in VteFT2
+    
+            * src/vteft2.c (_vte_ft2_create): Disable Gtk+ double-buffering.
+    
+    
+    svn path=/trunk/; revision=2001
+
+ ChangeLog    |    6 ++++++
+ src/vteft2.c |    1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 3f805f36b4a7b04d27f10006b50e40315deed344
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Nov 28 08:43:22 2007 +0000
+
+    Add bugzilla address.
+    
+    svn path=/trunk/; revision=2000
+
+ README |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 02f28ec3d4e12776c4b4edd2984be29d74d815c5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 28 08:41:59 2007 +0000
+
+    Bug 403217 – Outdated README
+    
+    2007-11-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 403217 – Outdated README
+    
+            * README: Rewrite.
+    
+    
+    svn path=/trunk/; revision=1999
+
+ ChangeLog |    6 +++++
+ README    |   72 +++++-------------------------------------------------------
+ 2 files changed, 12 insertions(+), 66 deletions(-)
+
+commit 364adbace135c4a97095876fba167f39e3cbedf5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 12:36:18 2007 +0000
+
+    Bug 118967 – single line scrolling with "Ctrl+Shift+ArrowUp/ArrowDown"
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 118967 – single line scrolling with "Ctrl+Shift+ArrowUp/ArrowDown"
+            Patch from Mauricio and Mariano Suárez-Alvarez
+    
+            * src/vte.c (vte_terminal_scroll_lines),
+            (vte_terminal_scroll_pages), (vte_terminal_key_press):
+            Implement single-line scroll.
+    
+    
+    svn path=/trunk/; revision=1998
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   35 +++++++++++++++++++++++++++++++----
+ 2 files changed, 40 insertions(+), 4 deletions(-)
+
+commit c35a4a89b5bd9461b0b71532724a1d6e090f1ac9
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 11:05:26 2007 +0000
+
+    Bug 353610 – Don't convert tab characters upon copying
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 353610 – Don't convert tab characters upon copying
+    
+            * src/vte-private.h:
+            * src/vteseq.c (vte_sequence_handler_ta):
+            Smart tab handling to try to preserve tab character upong copying.
+            Also makes such smart tabs all-or-none selectable.
+    
+    
+    svn path=/trunk/; revision=1996
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |   10 ++++++----
+ src/vteseq.c      |   53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 3 files changed, 63 insertions(+), 9 deletions(-)
+
+commit 01d3cf123dff70dbe60dfe025efb0810be0f15c3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 10:27:07 2007 +0000
+
+    Bug 499892 – strikethrough line is too high
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 499892 – strikethrough line is too high
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_apply_metrics), (vte_terminal_init),
+            (vte_terminal_draw_cells): Adjust underline/strikethrough thickness
+            and position based on pangofc's heuristics.
+    
+    
+    svn path=/trunk/; revision=1995
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    4 ++++
+ src/vte.c         |   23 ++++++++++++++++-------
+ 3 files changed, 29 insertions(+), 7 deletions(-)
+
+commit d189aeaed54480f515429717a4f3b9e16102fafd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 09:55:37 2007 +0000
+
+    Make VTE_BACKEND=list list available backends to stderr.
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.c (_vte_draw_init_user): Make VTE_BACKEND=list list
+            available backends to stderr.
+    
+    
+    svn path=/trunk/; revision=1994
+
+ src/vteft2.c    |    2 +-
+ src/vtegl.c     |    2 +-
+ src/vtepango.c  |    2 +-
+ src/vtepangox.c |    2 +-
+ src/vtexft.c    |    2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+commit e6ad1fa941d1e09a9dc996c8576c192c8f95b83a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 08:39:58 2007 +0000
+
+    Make VTE_BACKEND=list list available backends to stderr.
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtedraw.c (_vte_draw_init_user): Make VTE_BACKEND=list list
+            available backends to stderr.
+    
+    
+    svn path=/trunk/; revision=1993
+
+ ChangeLog     |    5 +++++
+ src/vtedraw.c |   22 ++++++++++++++++++++--
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+
+commit 189ebe50ba75c213468348fa18cadf5e7a46390d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 06:57:53 2007 +0000
+
+    Bug 499891 – vte with opacity set, shows invisible chars
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 499891 – vte with opacity set, shows invisible chars
+    
+            * src/vte.c (vte_terminal_draw_rows): Don't draw invisible chars.
+    
+    
+    svn path=/trunk/; revision=1992
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 ++++------
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+commit fe8455ee4ee60614bd5d36c35f6aabafe6e0ddfa
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Nov 27 06:40:24 2007 +0000
+
+    Change opacity
+    
+    svn path=/trunk/; revision=1991
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 198bf1641dbf77f68a266aabe45b4b0642675d16
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 06:14:12 2007 +0000
+
+    Bug 499896 – Alternate charset isn't an attribute, though we treat it as
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 499896 – Alternate charset isn't an attribute, though we treat it
+            as one.
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_set_default_attributes),
+            (_vte_terminal_insert_char), (vte_terminal_reset):
+            * src/vteseq.c (vte_sequence_handler_ae),
+            (vte_sequence_handler_as):
+            Move cell.attr.alternate to screen->alternate_charset.
+    
+    
+    svn path=/trunk/; revision=1990
+
+ ChangeLog         |   12 ++++++++++++
+ src/vte-private.h |    4 ++--
+ src/vte.c         |    9 ++++-----
+ src/vteseq.c      |    4 ++--
+ 4 files changed, 20 insertions(+), 9 deletions(-)
+
+commit 760e6b2844dd4b04b7d4aa5692c8b547faf0c380
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 06:04:11 2007 +0000
+
+    Bug 499893 – cell.attr.protect is unused
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 499893 – cell.attr.protect is unused
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_set_default_attributes):
+            * src/vteseq.c (vte_sequence_handler_mp):
+            Comment out cell.attr.protect which is unused.
+    
+    
+    svn path=/trunk/; revision=1989
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    4 +++-
+ src/vte.c         |    2 ++
+ src/vteseq.c      |    2 ++
+ 4 files changed, 16 insertions(+), 1 deletions(-)
+
+commit e2bcb0e1d84724c62f58e40e5f6f4c203591db9a
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Nov 27 05:51:51 2007 +0000
+
+    Minor comment fix.
+    
+    svn path=/trunk/; revision=1988
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 05dc462877584ca032eecfe1e7d9dfcd8458f2ce
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 05:50:07 2007 +0000
+
+    Minor optimization, if one can call it that.
+    
+    2007-11-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once):
+            Minor optimization, if one can call it that.
+    
+    
+    svn path=/trunk/; revision=1987
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 5bd016e7d3cb0d1e1f13ac5628318aaf3f6b5968
+Author: Sunil Mohan Adapa <sunil atc tcs com>
+Date:   Tue Nov 27 05:02:46 2007 +0000
+
+    Added Telugu translation done by Matapathi Pramod <pramod swecha net>.
+    
+    2007-11-27  Sunil Mohan Adapa  <sunil atc tcs com>
+    
+            * LINGUAS, te.po: Added Telugu translation done by
+            Matapathi Pramod <pramod swecha net>.
+    
+    
+    svn path=/trunk/; revision=1986
+
+ po/ChangeLog |    5 +++
+ po/LINGUAS   |    1 +
+ po/te.po     |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 120 insertions(+), 0 deletions(-)
+
+commit 6ee45faa0377448d1dd735f2ac61106d3cd3f777
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 04:16:14 2007 +0000
+
+    Fix doc syntax.
+    
+    2007-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Fix doc syntax.
+    
+    
+    svn path=/trunk/; revision=1985
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit ade83987cb3c84df7e84bf1f9718d8c4fee6c110
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 04:13:20 2007 +0000
+
+    Revert previous change. For reason, see bug. Bug 491832 –
+    
+    2007-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Revert previous change.  For reason, see bug.
+            Bug 491832 – vte_terminal_get_text_range_maybe_wrapped always includes
+            trailing spaces
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+            Don't trim space characters, just the empty space after lines,
+            like we used to.
+    
+    
+    svn path=/trunk/; revision=1984
+
+ ChangeLog |   12 +++++++++++-
+ src/vte.c |    2 +-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 6b903ba743eac7bfccf7a358a8bfe78647595354
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Nov 27 04:06:19 2007 +0000
+
+    Bug 491832 – vte_terminal_get_text_range_maybe_wrapped always includes
+    
+    2007-11-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 491832 – vte_terminal_get_text_range_maybe_wrapped always includes
+            trailing spaces
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+            Trip trailing space characters if asked to.
+    
+    
+    svn path=/trunk/; revision=1983
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit e2391dad4d18eb67a13d9fdc73b87044d7595b4c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 24 01:47:07 2007 +0000
+
+    Add script to check doc coverage is 100% on "make check".
+    
+    2007-11-23  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/Makefile.am:
+            * doc/reference/check.docs:
+            Add script to check doc coverage is 100% on "make check".
+    
+    
+    svn path=/trunk/; revision=1982
+
+ ChangeLog                 |    6 ++++++
+ doc/reference/Makefile.am |    4 ++++
+ doc/reference/check.docs  |   39 +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 49 insertions(+), 0 deletions(-)
+
+commit 63e502516a8f892bd7d987387f38361b423f6dcf
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Nov 24 01:33:08 2007 +0000
+
+    Bug 499287 – Fix doc coverage regression
+    
+    2007-11-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 499287 – Fix doc coverage regression
+    
+            * doc/reference/tmpl/vte.sgml:
+            * doc/reference/vte-sections.txt:
+            Document undocumented symbols.
+    
+    
+    svn path=/trunk/; revision=1981
+
+ ChangeLog                      |    8 ++++++++
+ doc/reference/tmpl/vte.sgml    |   20 ++++++++++++++++++--
+ doc/reference/vte-sections.txt |    2 ++
+ 3 files changed, 28 insertions(+), 2 deletions(-)
+
+commit c65c01aff4862dabc4a0f46a75f045a7da870d8b
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Tue Nov 20 19:51:58 2007 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=1980
+
+ po/oc.po |   12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+commit a691d03e4459b43e3f47033b4aedc888036277f8
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sun Nov 18 22:09:21 2007 +0000
+
+    s/CVS/SVN/
+    
+    svn path=/trunk/; revision=1979
+
+ autogen.sh |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 49a0cdf11d75459c34131d409d4b8cf3f3090f81
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 16 14:22:22 2007 +0000
+
+    Tweak to read across chunk boundaries whilst still maintaining fairness
+    
+    2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_io_read), (vte_terminal_init),
+        (process_timeout), (update_repeat_timeout), (update_timeout):
+            Tweak to read across chunk boundaries whilst still maintaining
+            fairness between multiple terminals and refresh rate targets.
+    
+    
+    svn path=/trunk/; revision=1978
+
+ ChangeLog |    7 ++++
+ src/vte.c |   97 +++++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 63 insertions(+), 41 deletions(-)
+
+commit 3f6b10064b0fa9c363f2cfa5c254f0d9faf7fe9f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 16 11:22:02 2007 +0000
+
+    Use stack allocation to hold small numbers of temporary gpointers.
+    
+    2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/ring.c (_vte_ring_insert_preserve):
+            Use stack allocation to hold small numbers of temporary
+            gpointers.
+    
+    
+    svn path=/trunk/; revision=1977
+
+ ChangeLog  |    6 ++++++
+ src/ring.c |    8 ++++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit e6c218707c792a2aa591e0c7625eebce0fc21e85
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 16 11:21:05 2007 +0000
+
+    Export _vte_row_data_free.
+    
+    2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte-private.h:
+        * src/vte.c (_vte_free_row_data), (vte_terminal_reset_rowdata),
+        (vte_terminal_finalize), (vte_terminal_reset):
+            Export _vte_row_data_free.
+    
+        * src/vteseq.c (vte_remove_line_internal):
+            Cache the removed VteRowData - fixes the continual reallocation
+            of row data during the vim scrolling benchmark.
+    
+    
+    svn path=/trunk/; revision=1976
+
+ ChangeLog         |   11 +++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   21 +++++++++------------
+ src/vteseq.c      |    9 +++++++--
+ 4 files changed, 28 insertions(+), 14 deletions(-)
+
+commit bf8149c2709401aefa9720b870aaf3e46f35e259
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 16 10:40:45 2007 +0000
+
+    Delay pruning the chunks freelist until we finished processing all the
+    
+    2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (release_chunk), (prune_chunks),
+        (remove_from_active_list), (process_timeout),
+        (update_repeat_timeout):
+            Delay pruning the chunks freelist until we finished processing
+            all the incoming data. We were discarding the freelist far too
+            early and reduced the efficacy of the cache.
+    
+    
+    svn path=/trunk/; revision=1975
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   41 +++++++++++++++++++++++++++--------------
+ 2 files changed, 36 insertions(+), 14 deletions(-)
+
+commit c9cdd332e0c005cf6bb78e0153dbfdc29cd8db2d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Nov 16 09:12:00 2007 +0000
+
+    Remove redundant queries and cache the XRequest on the root window (saves
+    
+    2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vterdb.h:
+        * src/vterdb.c (_vte_rdb_get), (_vte_rdb_search), (_vte_rdb_quark),
+        (_vte_rdb_get_rgba), (_vte_rdb_get_hintstyle), (_vte_rdb_release):
+            Remove redundant queries and cache the XRequest on the root
+            window (saves a few round-trips during terminal construction).
+            Add a new function to free the cache.
+    
+        * src/vtefc.c (_vte_fc_defaults_from_rdb):
+            Release the cache after retrieving settings.
+    
+    
+    svn path=/trunk/; revision=1974
+
+ ChangeLog    |   12 ++++++++
+ src/vtefc.c  |    2 +
+ src/vterdb.c |   84 +++++++++++++++++++++++++++++++++-------------------------
+ src/vterdb.h |    1 +
+ 4 files changed, 63 insertions(+), 36 deletions(-)
+
+commit 4c37f2645675ea5004b955ca8260d8623994aeaa
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Nov 15 20:58:17 2007 +0000
+
+    Similar for the leave notify, disable the match updating after hiding the
+    
+    2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_focus_out):
+            Similar for the leave notify, disable the match updating after
+            hiding the cursor after the loss of focus.
+            However, do we really want to disable the hilighting whilst the
+            pointer may still be within the terminal?
+    
+    
+    svn path=/trunk/; revision=1973
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    6 ++++++
+ 2 files changed, 14 insertions(+), 0 deletions(-)
+
+commit de9fb9f760b247d088f9d2b60fbd255b8050cbea
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Nov 15 20:51:30 2007 +0000
+
+    Don't automatically reshow the hilight on receiving an enter event, but
+    
+    2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_enter):
+            Don't automatically reshow the hilight on receiving an enter
+            event, but wait for the motion notify to update the cursor
+            co-ordinates, otherwise we may hilight something quite distant
+            from the cursor.
+    
+    
+    svn path=/trunk/; revision=1972
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    6 ------
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 4bab092bf89cd372c06f1b9a7a1c73b34f3b28eb
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Nov 15 20:43:55 2007 +0000
+
+    Mark the cursor as invisible on leaving the terminal as this stops the
+    
+    2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_leave):
+            Mark the cursor as invisible on leaving the terminal as this
+            stops the hilight matcher running whilst the cursor is absent.
+    
+    
+    svn path=/trunk/; revision=1971
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 +++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit c5c286ac2e1c9cacb41a3e217c3f41d9f30bae47
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Tue Nov 13 21:37:31 2007 +0000
+
+    Fix build
+    
+    svn path=/trunk/; revision=1970
+
+ po/sl.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4558dd0d3ecc3f984029008c69bb768a14909f24
+Author: Matej Urbančič <mateju src gnome org>
+Date:   Tue Nov 13 13:46:27 2007 +0000
+
+    Updated Slovenian translation
+    
+    svn path=/trunk/; revision=1969
+
+ po/ChangeLog | 2328 +++++++++++++++++++++++++++++-----------------------------
+ po/sl.po     |   26 +-
+ 2 files changed, 1177 insertions(+), 1177 deletions(-)
+
+commit 3577d01782ccaeea287593883c4d1f332bcbd1a2
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 7 04:22:09 2007 +0000
+
+    Allow NULL font argument. Can be used to set antialias without setting
+    
+    2007-11-06  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_set_font_from_string_full): Allow NULL
+            font argument.  Can be used to set antialias without setting font.
+    
+            * src/vteapp.c (main): Fix antialias handling which was borked when
+            moving to GOption.
+    
+    
+    svn path=/trunk/; revision=1968
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |    6 +++---
+ src/vteapp.c |   14 ++++++--------
+ 3 files changed, 17 insertions(+), 11 deletions(-)
+
+commit abc1e6a1259a56cb123150896d289980b7c237ab
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Nov 7 03:16:51 2007 +0000
+
+    Bug 142640 – FcConfigSubstitute in place of _vte_fc_defaults_from_gtk to
+    
+    2007-11-06  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 142640 – FcConfigSubstitute in place of _vte_fc_defaults_from_gtk
+            to get antialias and hinting value
+    
+            * src/vtefc.c (_vte_fc_defaults_from_gtk),
+            (_vte_fc_defaults_from_rdb): Replace _vte_fc_defaults_from_gtk() with
+            gtk_default_substitute() from Gtk+-2.6.  It's essentially the same
+            thing, but not overriding elements of the pattern already present.
+            Also remove a couple redundant calls.
+    
+    
+    svn path=/trunk/; revision=1967
+
+ ChangeLog   |   11 ++++
+ src/vtefc.c |  165 +++++++++++++++++++++++------------------------------------
+ 2 files changed, 75 insertions(+), 101 deletions(-)
+
+commit cdf92cafafd64b67143c0ee1c742825f9a2b9600
+Author: Kjartan Maraas,,23491770 <kmaraas gnome org>
+Date:   Fri Nov 2 12:25:30 2007 +0000
+
+    Updated Norwegian bokmål translation.
+    
+    2007-11-02  Kjartan Maraas,,23491770  <kmaraas gnome org>
+    
+       * nb.po: Updated Norwegian bokmål translation.
+    
+    svn path=/trunk/; revision=1966
+
+ po/ChangeLog |    4 ++++
+ po/nb.po     |    6 +++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 6793973b27167e15084ed689a57baca0fa8d5d4c
+Author: Mohammad DAMT <mdamt mnots eu>
+Date:   Sun Oct 28 17:46:31 2007 +0000
+
+    Update Indonesian translation by Huda Toriq <hudatoriq at gmail.com>.
+    
+    2007-10-28  Mohammad DAMT  <mdamt mnots eu>
+    
+            * id.po: Update Indonesian translation by Huda Toriq <hudatoriq at
+            gmail.com>.
+    
+    
+    svn path=/trunk/; revision=1964
+
+ po/ChangeLog |    5 ++++
+ po/id.po     |   76 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 47 insertions(+), 34 deletions(-)
+
+commit 1f782bd44feb64bb2e78349abb0636e51418ef3e
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Tue Oct 23 20:57:04 2007 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=1963
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit ecd055167f91b90a646d1dc51210340f762b801e
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Sun Oct 21 19:21:19 2007 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=1962
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit ff86da4cae59536722f72787920822bd1dc6e731
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Sun Oct 21 16:45:52 2007 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=1961
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 820434e27850b2c84cbbdee1ae43bf92d356cfb9
+Author: Matej Urbančič <mateju src gnome org>
+Date:   Mon Oct 15 18:07:50 2007 +0000
+
+    Updated Slovenian translation
+    
+    svn path=/trunk/; revision=1960
+
+ po/ChangeLog | 2314 +++++++++++++++++++++++++++++-----------------------------
+ po/sl.po     |  134 ++--
+ 2 files changed, 1219 insertions(+), 1229 deletions(-)
+
+commit 311d90af4c563b66c0ac17917ef2b5ffebd94187
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Oct 11 10:42:24 2007 +0000
+
+    Bug 439384 – gnome-terminal on feisty crashes when giving wrong locale
+    
+    2007-10-11  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 439384 – gnome-terminal on feisty crashes when giving wrong locale environment
+    
+        * src/vte.c (vte_terminal_set_encoding):
+            Fallback to using UTF-8 as the locale encoding. This prevents
+            subsequent crashes but may display gibberish in the output.
+    
+    
+    svn path=/trunk/; revision=1959
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    3 ++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 33fe1ba1a36f43399853256c85870320eeb0d55a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Oct 5 09:44:25 2007 +0000
+
+    Bug 483642 – vte_terminal_feed crash when 8190 characters passed
+    
+    2007-10-05  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 483642 – vte_terminal_feed crash when 8190 characters passed
+    
+        * src/vte.c (vte_terminal_feed):
+            Break the feed data into chunks.
+    
+    
+    svn path=/trunk/; revision=1958
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   16 ++++++++++++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+commit da32ed9669a1aeab51cde232ec048e8275195683
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Sep 30 22:52:57 2007 +0000
+
+    Skip retrieving the VteBg if the source is VTE_BG_SOURCE_NONE as we
+    
+    2007-09-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vtexft.c (_vte_xft_set_background_image):
+       Skip retrieving the VteBg if the source is VTE_BG_SOURCE_NONE
+       as we neither need it to listen for changes to the background
+       nor require it to load the pixmap (which is a no-op).
+    
+    
+    svn path=/trunk/; revision=1957
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |   25 +++++++++++++++----------
+ 2 files changed, 22 insertions(+), 10 deletions(-)
+
+commit 0b3b2c14399420cd73073ab17b7bffb5d9279ecd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Sep 30 22:48:46 2007 +0000
+
+    Ensure the GdkPixmap is destroyed along with the VteXft context.
+    
+    2007-09-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vtexft.c (_vte_xft_destroy):
+       Ensure the GdkPixmap is destroyed along with the VteXft
+       context.
+    
+    
+    svn path=/trunk/; revision=1956
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |    3 +++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit bb4a9d348eaf147635b19674742ab945fd249bf5
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Sep 26 20:23:43 2007 +0000
+
+    Improve the last ChangeLog entry.
+    
+    
+    svn path=/trunk/; revision=1955
+
+ ChangeLog |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 9fd1f501d36afe68050ab939b7639aa55cece90d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Sep 26 20:17:16 2007 +0000
+
+    I really must remember to run vttest more often. (And to work within
+    
+    2007-09-26  Chris Wilson  <chris chris-wilson co uk>
+    
+        I really must remember to run vttest more often. (And to work within
+        git-svn.)
+    
+        * src/vte.c (vte_terminal_draw_rows):
+            Correct underlining for vttest.
+    
+    
+    svn path=/trunk/; revision=1954
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   17 +++++++----------
+ 2 files changed, 15 insertions(+), 10 deletions(-)
+
+commit 431ecb6710ffae56c73620001cac74a0a4ddbef9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Sep 26 20:09:21 2007 +0000
+
+    Bug 480735 – Underlining whitespace not reliable
+    
+    2007-09-26  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 480735 – Underlining whitespace not reliable
+    
+        Original one-liner by Steven Skovran.
+    
+        * src/vte.c (vte_terminal_draw_rows):
+            Do not try to over zealously skip whitespace. The goal is
+            to maintain the current run whilst avoiding adding spaces to
+            the glyph sequence - so check the cell fully for attribute
+            breaks and simply do not add it to the glyphs if it contains a
+            space.
+    
+    
+    svn path=/trunk/; revision=1953
+
+ ChangeLog |   13 +++++++++++++
+ src/vte.c |   19 +++++++++++--------
+ 2 files changed, 24 insertions(+), 8 deletions(-)
+
+commit eafd1b6d63613180f879861c75f97c45d1598c02
+Author: Khandakar Mujahidul Islam <mislam src gnome org>
+Date:   Tue Sep 18 08:27:10 2007 +0000
+
+    Updated Bengali Translation
+    
+    svn path=/trunk/; revision=1952
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 8da1e4bee0bf85633e5929249bdccf4a819c2701
+Author: Khandakar Mujahidul Islam <mislam src gnome org>
+Date:   Tue Sep 18 08:26:56 2007 +0000
+
+    Updated Bengali Translation
+    
+    svn path=/trunk/; revision=1951
+
+ po/bn.po |   74 ++++++++++++++++++++++++++++++++++++--------------------------
+ 1 files changed, 43 insertions(+), 31 deletions(-)
+
+commit 173081d1e99c81455013af0a1a7f132e00ecfbcd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Sep 17 22:10:29 2007 +0000
+
+    Released vte-0.16.9.
+    
+    2007-09-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.9.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.9.
+            Bumped libtool version to 11:13:2.
+    
+    
+    svn path=/trunk/; revision=1949
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |   14 ++++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+commit 5c579ef4cd988de10eef69b1c7dce057a0ebf220
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Thu Sep 13 22:47:05 2007 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=1948
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   45 +++++++++++++++++++--------------------------
+ 2 files changed, 23 insertions(+), 26 deletions(-)
+
+commit 15d7538f1a7131e79341fce3357cc3e499342e3a
+Author: Alexander Shopov <ash contact bg>
+Date:   Tue Sep 11 08:57:58 2007 +0000
+
+    Updated Bulgarian translation by Alexander Shopov <ash contact bg>
+    
+    2007-09-11  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Alexander Shopov <ash contact bg>
+    
+    svn path=/trunk/; revision=1947
+
+ po/ChangeLog |    5 +++++
+ po/bg.po     |   10 +++++-----
+ 2 files changed, 10 insertions(+), 5 deletions(-)
+
+commit 5c3c49db0866a753c49cdef4aa55e5ea5a4801d4
+Author: Alexander Shopov <ash contact bg>
+Date:   Tue Sep 11 08:55:00 2007 +0000
+
+    Updated Bulgarian translation by Alexander Shopov <ash contact bg>
+    
+    2007-09-11  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Alexander Shopov <ash contact bg>
+    
+    svn path=/trunk/; revision=1946
+
+ po/ChangeLog |    5 +++++
+ po/bg.po     |   47 +++++++++++++++++++++--------------------------
+ 2 files changed, 26 insertions(+), 26 deletions(-)
+
+commit b38efa6b0d7a87109064a5c4d87b046764ec8e2f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Sep 5 20:35:44 2007 +0000
+
+    Wait for keypress when done, so one can do "vte -c ./vim.sh" and not lose
+    
+    2007-09-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * perf/vim.sh: Wait for keypress when done, so one can do
+            "vte -c ./vim.sh" and not lose the final numbers.
+    
+            * src/vtepango.c (_vte_pango_destroy), (_vte_pango_start),
+            (_vte_pango_end), (_vte_pango_set_background_color),
+            (_vte_pango_set_background_image), (_vte_pango_clear),
+            (_vte_pango_set_text_font), (_vte_pango_get_using_fontconfig),
+            (_vte_pango_draw_text), (_vte_pango_draw_has_char),
+            (_vte_pango_draw_rectangle), (_vte_pango_fill_rectangle),
+            (_vte_pango_set_scroll):  General cleanup.  Also implement
+            _vte_pango_draw_has_char() using
+            pango_layout_get_unknown_glyphs_count() when available.
+    
+    
+    svn path=/trunk/; revision=1945
+
+ ChangeLog      |   15 +++++++++++++++
+ perf/vim.sh    |    8 ++++++--
+ src/vtepango.c |   52 +++++++++++++++++++++++-----------------------------
+ 3 files changed, 44 insertions(+), 31 deletions(-)
+
+commit 7049c321cfa866c223edb36c52e916dd4320ecf1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Sep 2 05:15:30 2007 +0000
+
+    Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+    2007-09-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+            * src/vteseq.c (vte_sequence_handler_ce): Reset soft_wrapped.
+    
+    
+    svn path=/trunk/; revision=1944
+
+ ChangeLog    |    6 ++++++
+ src/vteseq.c |    1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit b9c65eb840521d6a49c62904dd5b5ae67b319cb2
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sun Sep 2 05:14:41 2007 +0000
+
+    Add a G_UNLIKELY()
+    
+    svn path=/trunk/; revision=1943
+
+ src/debug.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 63e545b8620955123a86856ebe61153a3911d6ca
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sat Sep 1 20:12:23 2007 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=1942
+
+ po/oc.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 80c1736fc58a57fd77600b31af23ff19bf7aeb6d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Sep 1 08:44:29 2007 +0000
+
+    cf Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+    2007-09-01  Chris Wilson  <chris chris-wilson co uk>
+    
+        cf Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+        * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+            Revert the last character is in last column check as that
+            behaviour is required to handle terminal resizing where the
+            screen contents are not reconstructed (e.g. bash).
+    
+    
+    svn path=/trunk/; revision=1941
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    3 +--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 0fe5d9cc193b0dde1e08a64dda8df54e762f121b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Aug 30 16:18:03 2007 +0000
+
+    Bug 471901 – troubles with pad
+    
+    2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 471901 – troubles with pad
+    
+        * src/vte-private.h:
+        * src/vte.c (_vte_invalidate_cells), (vte_terminal_draw_rows),
+        (vte_terminal_paint): Don't abuse VTE_PAD_WIDTH.
+    
+    
+    svn path=/trunk/; revision=1940
+
+ ChangeLog         |    8 +++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   80 ++++++++++++++++++++--------------------------------
+ 3 files changed, 40 insertions(+), 49 deletions(-)
+
+commit 48ddee1d953a7386862fe6e71998d19d8584ce6b
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Thu Aug 30 15:14:12 2007 +0000
+
+    Add fixme comment about row->soft_wrap.
+    
+    svn path=/trunk/; revision=1939
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c03de1d0472b1a19a5363becc9db61e7757cfa99
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Aug 30 15:06:27 2007 +0000
+
+    Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+    2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+    
+        * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+            Check that the last character is in the last column before
+            adding a newline for autowrapped lines.
+    
+    
+    svn path=/trunk/; revision=1938
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |   10 +++++++---
+ src/vteseq.c |   14 ++++++++------
+ 3 files changed, 23 insertions(+), 9 deletions(-)
+
+commit 5480e1f64f05905cadc4dce0a6b3cbac5b85eac2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Aug 30 11:41:14 2007 +0000
+
+    Add myself to the list, as Behdad had suggested some time ago.
+    
+    2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        * MAINTAINERS: Add myself to the list, as Behdad had suggested some
+        time ago.
+    
+    
+    svn path=/trunk/; revision=1937
+
+ ChangeLog   |    5 +++++
+ MAINTAINERS |    4 ++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 46b7464576141d69bd0dce16409141cfb26a8225
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Aug 30 11:06:59 2007 +0000
+
+    Bug 153265 – Handle Sun Cut, Copy, Paste keys Patch by Brian Cameron.
+    
+    2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 153265 – Handle Sun Cut, Copy, Paste keys
+        Patch by Brian Cameron.
+    
+        * doc/reference/tmpl/vte.sgml:
+        * src/vte.c (vte_terminal_class_init),
+        (vte_terminal_real_copy_clipboard), (vte_terminal_copy_clipboard),
+        (vte_terminal_real_paste_clipboard),
+        (vte_terminal_paste_clipboard):
+        * src/vte.h:
+            Add key bindings for the special function keys.
+    
+    
+    svn path=/trunk/; revision=1936
+
+ ChangeLog                   |   13 ++++++++
+ doc/reference/tmpl/vte.sgml |   14 +++++++++
+ src/vte.c                   |   69 +++++++++++++++++++++++++++++++++++++-----
+ src/vte.h                   |    4 +-
+ 4 files changed, 89 insertions(+), 11 deletions(-)
+
+commit 8fb0f61c29c521f85acc5f340d8a8f3b005926ed
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Aug 30 10:11:23 2007 +0000
+
+    Bad manipulation of patches whilst attempting to apply the fix for Bug
+    
+    2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_draw_rows): Bad manipulation of patches
+        whilst attempting to apply the fix for Bug 434230 - net result was
+        that the correct code was being circumvented.
+    
+    
+    svn path=/trunk/; revision=1935
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    1 -
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit c142f3a68c8cd5951319cba28bfe0ff33d7aa90e
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Aug 29 19:28:03 2007 +0000
+
+    Quick grammar correction.
+    
+    svn path=/trunk/; revision=1934
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 400ae5a66202afea963149700d52ee2e9bd79b9a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Aug 29 19:25:51 2007 +0000
+
+    Bug 471484 – vteapp resize weirdness
+    
+    2007-08-29  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 471484 – vteapp resize weirdness
+    
+        * src/vteapp.c (main): Distinguish between setting the geometry and
+        disabling the use geometry hints. A regression when converting to
+        GOption based arguments.
+    
+    
+    svn path=/trunk/; revision=1933
+
+ ChangeLog    |    8 ++++++++
+ src/vteapp.c |   10 ++++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit 85969d3324e6e946458e2ad6c68c23a9741bb15e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Aug 27 18:24:03 2007 +0000
+
+    Bug 470690 – Typo at src/vtexft.c "appropiate" should be "appropriate"
+    
+    2007-08-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 470690 – Typo at src/vtexft.c "appropiate" should be "appropriate"
+    
+            * src/vtexft.c (_vte_xft_open_font_for_char): Fix typo.
+    
+    
+    svn path=/trunk/; revision=1932
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 8dd24b4f8d9bab8185ba469e0d9f87dce132d231
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Tue Aug 21 11:17:39 2007 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=1931
+
+ po/oc.po |   38 ++++++++++++++++----------------------
+ 1 files changed, 16 insertions(+), 22 deletions(-)
+
+commit a6ee90a4682ce40a464482ed0a791509ad9ab780
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Fri Aug 17 18:27:18 2007 +0000
+
+    Updated Occitan translation
+    
+    svn path=/trunk/; revision=1930
+
+ po/oc.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ed565fcc7b3cccf8ddfaefc0ac38000bc212c25f
+Author: Adam Weinberger <adamw gnome org>
+Date:   Wed Aug 15 22:01:07 2007 +0000
+
+    Updated Canadian English translation.
+    
+    2007-08-15  Adam Weinberger  <adamw gnome org>
+    
+       * en_CA.po: Updated Canadian English translation.
+    
+    
+    
+    svn path=/trunk/; revision=1929
+
+ po/ChangeLog |    4 +++
+ po/en_CA.po  |   65 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 37 insertions(+), 32 deletions(-)
+
+commit 26e576e1f0e44c6e3451691935173458d70a7787
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Aug 7 22:46:32 2007 +0000
+
+    Add Userid field, remove Guilherme.
+    
+    2007-08-07  Behdad Esfahbod  <behdad gnome org>
+    
+            * MAINTAINERS: Add Userid field, remove Guilherme.
+    
+    
+    svn path=/trunk/; revision=1928
+
+ ChangeLog   |    4 ++++
+ MAINTAINERS |    3 +--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 14204428512fe70d1a484ec78f7bdc63dad7499a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Aug 3 08:46:30 2007 +0000
+
+    Bug 434230 – Spaces are not underlined Original patch by Santtu Lakkala.
+    
+    2007-08-03  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 434230 – Spaces are not underlined
+        Original patch by Santtu Lakkala.
+    
+        * src/vte.c (vte_terminal_draw_rows): Only skip cells if we do not
+        need to draw on top.
+    
+    
+    svn path=/trunk/; revision=1927
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    3 +++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 4e2857d6748335961ede2940b5f9f3397725686d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Aug 3 08:41:26 2007 +0000
+
+    Bug 450069 – vte crash on removing a terminal tab
+    
+    2007-08-03  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 450069 – vte crash on removing a terminal tab
+    
+        * src/vte.c (vte_terminal_emit_eof), (vte_terminal_queue_eof),
+        (vte_terminal_eof): Move the EOF emission to an idle handler so that
+        the source is inactive whilst the VteTerminal is finalized.
+    
+    
+    svn path=/trunk/; revision=1926
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   20 +++++++++++++++++---
+ 2 files changed, 25 insertions(+), 3 deletions(-)
+
+commit 7422b1d3bea8817ae1064041ede590eb256efff8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 30 17:38:33 2007 +0000
+
+    Released vte-0.16.8.
+    
+    2007-07-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.8.
+    
+            Quick followup release with no code changes, to fix missing
+            documentation index in the tarball.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.8.
+            Bumped libtool version to 11:12:2.
+    
+    
+    svn path=/trunk/; revision=1924
+
+ ChangeLog    |   12 ++++++++++++
+ NEWS         |    5 +++++
+ configure.in |    4 ++--
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+commit 14297d259904f59ac742e1038469145c934bc662
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Jul 27 21:39:31 2007 +0000
+
+    Released vte-0.16.7.
+    
+    2007-07-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.7.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.7.
+            Bumped libtool version to 11:11:2.
+    
+    
+    svn path=/trunk/; revision=1922
+
+ ChangeLog    |    9 +++++++++
+ NEWS         |   13 +++++++++++++
+ configure.in |    4 ++--
+ 3 files changed, 24 insertions(+), 2 deletions(-)
+
+commit a2daa008340e58d724b44f43b5b7a2b3e899a32e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Jul 27 04:44:11 2007 +0000
+
+    Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+    
+    2007-07-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+            Patch by James Bowes
+    
+            * src/keymap.c (_vte_keymap_map), (is_cursor_key),
+            (_vte_keymap_key_add_key_modifiers):
+            * src/keymap.h:
+            * src/vte.c (vte_terminal_key_press):
+            Only switch to CSI for some cursor keys when in cursor app mode.
+    
+    
+    svn path=/trunk/; revision=1921
+
+ ChangeLog    |   11 +++++++++++
+ src/keymap.c |   36 ++++++++++++++++++++++++++++++++++++
+ src/keymap.h |    1 +
+ src/vte.c    |    1 +
+ 4 files changed, 49 insertions(+), 0 deletions(-)
+
+commit 0d0e051a9f076942fcd45086398d9f995bce6be0
+Author: Ilkka Tuohela <ituohela src gnome org>
+Date:   Mon Jul 16 16:11:13 2007 +0000
+
+    Updated Finnish translation
+    
+    svn path=/trunk/; revision=1920
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit bafea8de7cb9db6ec9c4c4acedae4f0ab070639b
+Author: Felix I <ifelix src gnome org>
+Date:   Mon Jun 25 09:00:23 2007 +0000
+
+    updated ta translation
+    
+    svn path=/trunk/; revision=1919
+
+ po/ChangeLog |    4 +++
+ po/ta.po     |   74 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 43 insertions(+), 35 deletions(-)
+
+commit 78c628d69571384a672ed1fc86e8fb5b853e8343
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jun 25 08:35:55 2007 +0000
+
+    Bug 448259 – Mapping for Ctrl-_ Patch by Andrey Melnikov.
+    
+    2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 448259 – Mapping for Ctrl-_
+        Patch by Andrey Melnikov.
+    
+        * src/keymap.c: Add mapping for Ctrl-Minus.
+    
+    
+    svn path=/trunk/; revision=1918
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |    5 +++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit ac76377d88f46a34f9529eb45e4e610cd354e904
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jun 25 08:23:39 2007 +0000
+
+    Bug 449809 – use python-config to get python includes Patch by Sebastien
+    
+    2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 449809 – use python-config to get python includes
+        Patch by Sebastien Bacher.
+    
+        * acinclude.m4: prefer python-config where available.
+    
+    
+    svn path=/trunk/; revision=1917
+
+ ChangeLog    |    7 +++++++
+ acinclude.m4 |   10 +++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 8491cf042c3945f039ea113a6e6fef683b782b8f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jun 25 07:58:41 2007 +0000
+
+    Bug 450745 – VTE's response to CSI 2 1 t incorrectly formatted Patch by
+    
+    2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 450745 – VTE's response to CSI 2 1 t incorrectly formatted
+        Patch by Dale Sedivec.
+    
+        * src/vteseq.c (vte_sequence_handler_window_manipulation): Restore
+        the missing 'L'.
+    
+    
+    svn path=/trunk/; revision=1916
+
+ ChangeLog    |    8 ++++++++
+ src/vteseq.c |    4 ++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 267aa19e68b3b1439c686b57a4a3b6c7944ae4d0
+Author: Felix I <ifelix src gnome org>
+Date:   Fri Jun 22 11:09:45 2007 +0000
+
+    updated si translation
+    
+    svn path=/trunk/; revision=1915
+
+ po/ChangeLog |    5 ++
+ po/LINGUAS   |    1 +
+ po/si.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 122 insertions(+), 0 deletions(-)
+
+commit 3306be169818e7dff9cac573d90426020576101a
+Author: Christian Persch <chpe gnome org>
+Date:   Thu Jun 21 20:29:56 2007 +0000
+
+    Move libtool versioning to configure so you just have to update one file
+    
+    2007-06-21  Christian Persch  <chpe gnome org>
+    
+       * configure.in:
+       * src/Makefile.am: Move libtool versioning to configure so you just
+       have to update one file for releasing. See bug #396265 comment 17.
+    
+    svn path=/trunk/; revision=1914
+
+ ChangeLog       |    6 ++++++
+ configure.in    |   17 +++++++++++++++++
+ src/Makefile.am |   12 +-----------
+ 3 files changed, 24 insertions(+), 11 deletions(-)
+
+commit 4184ee2cf58a388add2c4b2b0647e6cd9a1818c5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jun 18 22:13:39 2007 +0000
+
+    Released vte-0.16.6.
+    
+    2007-06-18  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.6.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.6.
+    
+            * src/Makefile.am: Bumped libtool version to 11:10:2.
+    
+    
+    svn path=/trunk/; revision=1912
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    8 ++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 39e69e2f047f1769cc4389ce9d1b77dfce46dfb6
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Jun 18 22:01:13 2007 +0000
+
+    Use AM_LDFLAGS instead of LDFLAGS
+    
+    svn path=/trunk/; revision=1911
+
+ python/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 41cce0e5c01db1db44349bdf217444629ffaa374
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jun 12 20:31:52 2007 +0000
+
+    Call gtk_widget_queue_resize() after updating row/column count.
+    
+    2007-06-12  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_set_size): Call gtk_widget_queue_resize()
+        after updating row/column count.
+    
+    
+    svn path=/trunk/; revision=1910
+
+ ChangeLog |    5 +++++
+ src/vte.c |   15 +++++++++++++--
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+commit ef87435fc27e1ceecf1405a91d41e6dbdeb0f5d4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jun 11 21:37:30 2007 +0000
+
+    Bug 372743 – vte_terminal_set_colors doesn't work as advertised
+    
+    2007-06-11  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 372743 – vte_terminal_set_colors doesn't work as advertised
+    
+            * src/vte.c (vte_terminal_set_colors): Allow 24-color palettes.
+    
+    
+    svn path=/trunk/; revision=1909
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 51acb6422b8dbc396ff1dc37be59b54486da047d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Jun 9 18:10:07 2007 +0000
+
+    Bug 445620 – Some characters shows different in different locales. Patch
+    
+    2007-06-09  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 445620 – Some characters shows different in different locales.
+            Patch from Zealot
+    
+            * src/iso2022.c (_vte_iso2022_state_set_codeset): Update ambiguous
+            width.
+    
+    
+    svn path=/trunk/; revision=1908
+
+ ChangeLog     |    8 ++++++++
+ src/iso2022.c |    1 +
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit e1e353ee5ef529bacaaee72e749c24b353af179a
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jun 4 18:19:39 2007 +0000
+
+    Retrospectively add the bug number.
+    
+    
+    svn path=/trunk/; revision=1907
+
+ ChangeLog |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 079bec7407bd1896a70ff88692d1a6b11976e0cb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jun 4 18:17:31 2007 +0000
+
+    Released vte-0.16.5.
+    
+    2007-06-04  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.5.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.5.
+    
+            * src/Makefile.am: Bumped libtool version to 11:9:2.
+    
+    
+    svn path=/trunk/; revision=1905
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    5 +++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 17 insertions(+), 2 deletions(-)
+
+commit 52bc6496141ff4a3075cb42d3a2e20afc05977b2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed May 30 15:33:21 2007 +0000
+
+    fcrozat pointed out 'some strange "underline" line where cursor is located
+    
+    2007-05-30  Chris Wilson  <chris chris-wilson co uk>
+    
+        fcrozat pointed out 'some strange "underline" line where cursor is
+        located and blinking'.
+    
+        * src/vte.c (vte_terminal_draw_rows):
+            Continuation of the previous commit: catch a couple more locations
+            where we need to skip past the end of the line. The problem in
+            this case was we tried to use some uninitialised variables whilst
+            trying to draw the cell attributes.
+    
+    
+    svn path=/trunk/; revision=1904
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |    6 +++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit f7ede118f9b7cd6561f24d1526717e5da746ef6a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon May 28 22:22:19 2007 +0000
+
+    Released vte-0.16.4.
+    
+    2007-05-28  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.4.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.4.
+    
+            * src/Makefile.am: Bumped libtool version to 11:8:2.
+    
+    
+    svn path=/trunk/; revision=1902
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   13 +++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 25 insertions(+), 2 deletions(-)
+
+commit bffdf19ea1c4ef71d07091ee269a6ee18cf1c8e6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon May 28 06:31:47 2007 +0000
+
+    uws noted on IRC that 'vte trunk does strange thingies with colors'
+    
+    2007-05-28  Chris Wilson  <chris chris-wilson co uk>
+    
+        uws noted on IRC that 'vte trunk does strange thingies with colors'
+    
+        * src/vte.c (vte_terminal_draw_rows):
+            When reaching the end-of-row be careful not to reset the
+            current text attributes (color, underlining, etc).
+    
+    
+    svn path=/trunk/; revision=1901
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   53 ++++++++++++++++++++++-------------------------------
+ 2 files changed, 30 insertions(+), 31 deletions(-)
+
+commit 1d31aab30cc04473dfe9484d2d307de565882bc4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri May 25 14:39:02 2007 +0000
+
+    Only add the borders to the clear area.
+    
+    2007-05-25  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vte.c (vte_terminal_expand_region),
+        (vte_terminal_paint_area):
+            Only add the borders to the clear area.
+    
+    
+    svn path=/trunk/; revision=1900
+
+ ChangeLog |    8 +++++++-
+ src/vte.c |   49 ++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 37 insertions(+), 20 deletions(-)
+
+commit fc8392634e8f77653dfc75a41662104c9dc5b22b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed May 23 16:08:09 2007 +0000
+
+    Bug 429278 – Cursor drawn strangely in joe
+    
+    2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 429278 – Cursor drawn strangely in joe
+    
+        * src/vte.c (vte_terminal_expand_region),
+        (vte_terminal_paint_area):
+       Ensure the expanded regions are cell aligned.
+    
+    
+    svn path=/trunk/; revision=1899
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   13 +++++--------
+ 2 files changed, 13 insertions(+), 8 deletions(-)
+
+commit 9e8b375a1b84a2c18a2b622902e571f59fecfce6
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Wed May 23 15:21:06 2007 +0000
+
+    Occitan first translation
+    
+    svn path=/trunk/; revision=1898
+
+ po/oc.po |   41 ++++++++++++++++++-----------------------
+ 1 files changed, 18 insertions(+), 23 deletions(-)
+
+commit e669eed1e87bddf7533e36980ed31246c3434f45
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed May 23 12:40:31 2007 +0000
+
+    Fixup ChangeLog entry.
+    
+    
+    svn path=/trunk/; revision=1897
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1f23ee3ac42d03e0101d1df78b0ee2676f8a8f95
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed May 23 12:36:13 2007 +0000
+
+    cf Bug 439247 – scrolling vim in full screen is painfully slow and takes
+    
+    2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+    
+        cf Bug 439247 – scrolling vim in full screen is painfully slow and takes up 100% of the cpu
+    
+        * src/vte.c (_vte_invalidate_cell), (vte_terminal_draw_rows):
+            Fix up the unwanted break of Glyph runs at the end-of-lines.
+    
+    
+    svn path=/trunk/; revision=1896
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   41 +++++++++++++++++++++++++----------------
+ 2 files changed, 32 insertions(+), 16 deletions(-)
+
+commit 984f92ee6df966b080c82331a6f6d67a54e16b43
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed May 23 12:30:31 2007 +0000
+
+    Bug 440475 – Display glitch with transparent backgroud
+    
+    2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 440475 – Display glitch with transparent backgroud
+    
+        * src/vte.c (vte_terminal_paint_area):
+            Apply the band-aid fix to clear the area that's about to be
+            repainted. The full solution will to be ensure that the regions
+            after expansion are cell-aligned.
+    
+    
+    svn path=/trunk/; revision=1895
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   11 ++++++-----
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+commit 160ea09621654baa7ad33ab92f370ec0bcce227b
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Tue May 22 08:40:16 2007 +0000
+
+    Improve ChangeLog entry.
+    
+    
+    svn path=/trunk/; revision=1894
+
+ ChangeLog |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 8268e5723e9787bf6ff4ec85940b316bfabed159
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue May 22 08:37:38 2007 +0000
+
+    Bug 375112 – ctrl-key combinations yielding just key Original patch by
+    
+    2007-05-22  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 375112 – ctrl-key combinations yielding just key
+        Original patch by <samo altern org> and refactored by Loïc Minier.
+    
+        * src/vte.c (vte_translate_national_ctrlkeys),
+        (vte_terminal_key_press), (vte_terminal_scroll):
+            When cooking a string to pass through to the client obtain a
+            "raw" keyval.
+    
+    
+    svn path=/trunk/; revision=1893
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   36 +++++++++++++++++++++++++++++++++++-
+ 2 files changed, 45 insertions(+), 1 deletions(-)
+
+commit d042d4067453af8f84b31dc87d1d121fdc2aae12
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue May 22 08:08:35 2007 +0000
+
+    Bug 440377 – gnome-terminal cannot refresh terminal when accessibility
+    
+    2007-05-22  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 440377 – gnome-terminal cannot refresh terminal when accessibility enabled
+        Original patch by Li Yuan.
+    
+        * src/vteaccess.c (vte_terminal_accessible_focus_in),
+        (vte_terminal_accessible_focus_out),
+        (vte_terminal_accessible_visibility_notify):
+            Return FALSE rather than void...
+    
+    
+    svn path=/trunk/; revision=1892
+
+ ChangeLog       |   10 ++++++++++
+ src/vteaccess.c |   12 +++++++++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+commit d57f09aba74aec47f3d538acb9e829201bdfe173
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu May 17 20:14:46 2007 +0000
+
+    Measure full screen scrolling performance.
+    
+    2007-05-17  Chris Wilson  <chris chris-wilson co uk>
+    
+        * perf/scroll.vim:
+        * perf/vim.sh:
+            Measure full screen scrolling performance.
+    
+    
+    svn path=/trunk/; revision=1891
+
+ ChangeLog       |    6 ++++++
+ perf/scroll.vim |   27 +++++++++++++++++++++++++++
+ perf/vim.sh     |    1 +
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+
+commit 428ba2d3611d5162208b6d9087d1ec8621b5ca82
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue May 15 15:13:03 2007 +0000
+
+    kmaraas reported an issue on IRC where the scrollback was not being
+    
+    2007-05-15  Chris Wilson  <chris chris-wilson co uk>
+    
+        kmaraas reported an issue on IRC where the scrollback was not being
+        updated correctly in the first tab when the terminal was resized via
+        a second tab.
+    
+        * src/vte.c (vte_terminal_size_allocate): Check whether we need to
+        recompute the visible lines due to a change in layout geometry.
+    
+    
+    svn path=/trunk/; revision=1890
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    6 ++++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 7370864b91e76d7433da21e8e923c0ac4e7565bf
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sun May 13 11:58:09 2007 +0000
+
+    + Occitan
+    
+    svn path=/trunk/; revision=1889
+
+ po/LINGUAS |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 5751979a614fca00ad176de40b26685e52ab1cb1
+Author: Yannig MARCHEGAY <ymarcheg src gnome org>
+Date:   Sun May 13 11:57:46 2007 +0000
+
+    Occitan first translation
+    
+    svn path=/trunk/; revision=1888
+
+ po/oc.po |  126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 126 insertions(+), 0 deletions(-)
+
+commit 94b939236b9648ff3925260286d888c444d20df8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Apr 27 09:33:01 2007 +0000
+
+    Bug 433776 – gnome-terminal crashes when open preedit area Take 2.
+    
+    2007-04-27  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 433776 – gnome-terminal crashes when open preedit area
+        Take 2.
+    
+        * src/vte.c (vte_terminal_paint): The preedit_cursor is returned by
+        the input modules in characters not in bytes as assumed by the
+        validation.
+    
+    
+    svn path=/trunk/; revision=1887
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    9 +++------
+ 2 files changed, 12 insertions(+), 6 deletions(-)
+
+commit fdc4e3c5a569e843b08d6e712cea38fe7774a309
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Apr 27 09:05:56 2007 +0000
+
+    Bug 433776 – gnome-terminal crashes when open preedit area
+    
+    2007-04-27  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 433776 – gnome-terminal crashes when open preedit area
+    
+        * src/vte.c (vte_terminal_paint): Use the validated cursor index.
+    
+    
+    svn path=/trunk/; revision=1886
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   19 +++++++------------
+ 2 files changed, 13 insertions(+), 12 deletions(-)
+
+commit 615e67e1f9c3fc4dba72d6da1c0260ac4cccecb3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Apr 27 07:22:01 2007 +0000
+
+    Released vte-0.16.3.
+    
+    2007-04-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.3.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.3.
+    
+            * src/Makefile.am: Bumped libtool version to 11:7:2.
+    
+    
+    svn path=/trunk/; revision=1884
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   12 ++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 8c0715fb132b875b4630dab2b84bba3f316dbc36
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Tue Apr 24 12:55:20 2007 +0000
+
+    Reference the bug that was actually fixed.
+    
+    
+    svn path=/trunk/; revision=1883
+
+ ChangeLog |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit d808d549710699ca94442ca95b193b84251ac689
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Apr 24 09:47:06 2007 +0000
+
+    Bug 429189 – Vte-WARNING's
+    
+    2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 429189 – Vte-WARNING's
+    
+        * src/vtexft.c (_vte_xft_open_font_for_char):
+       Convert the warning into a DEBUG.
+    
+    
+    svn path=/trunk/; revision=1882
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |    4 +++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit ec9b16efa993b0f12040c781e4446b5ba3862ec3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Apr 24 08:36:41 2007 +0000
+
+    As noted on Bug 414716, the convention is to use --enable-debug to enable
+    
+    2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+    
+        As noted on Bug 414716, the convention is to use --enable-debug
+        to enable extra debugging code.
+    
+        * configure.in:
+       s/debugging/debug/
+    
+    
+    svn path=/trunk/; revision=1881
+
+ ChangeLog    |    8 ++++++++
+ configure.in |    4 ++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit b6eae8e5309834fa0f4ab5cbc3ae2275178cda29
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Apr 24 08:33:41 2007 +0000
+
+    Bug 414716 – Refresh issue after changing workspaces
+    
+    2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 414716 – Refresh issue after changing workspaces
+    
+        * src/vte.c (vte_terminal_hierarchy_changed):
+       Do not respond to toplevel mapping events.
+    
+    
+    svn path=/trunk/; revision=1880
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   39 ---------------------------------------
+ 2 files changed, 7 insertions(+), 39 deletions(-)
+
+commit a569abe2fa825a56d8cdd0e4031e4a82d4403457
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Apr 23 22:34:37 2007 +0000
+
+    Released vte-0.16.2.
+    
+    2007-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.2.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.2.
+    
+            * src/Makefile.am: Bumped libtool version to 11:6:2.
+    
+    
+    svn path=/trunk/; revision=1878
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    8 ++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 4f1f875b87de00b595d05fe164b1a59cfb769a3c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Apr 23 11:34:07 2007 +0000
+
+    Bug 431799 – Regex highlighting is broken
+    
+    2007-04-23  Chris Wilson <chris chris-wilson co uk>
+    
+        Bug 431799 – Regex highlighting is broken
+    
+        * src/vte.c (vte_terminal_emit_contents_changed),
+        (vte_terminal_match_hilite_update), (process_timeout),
+        (update_repeat_timeout), (update_timeout):
+       Always emit any pending updates before redrawing. This
+       ensures for example that the match contents are updated
+       after a simple scroll event.
+    
+    
+    svn path=/trunk/; revision=1877
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   24 +++++++++++++++++++-----
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+commit b293b2cfd64c5bad6751c34137367ed7aaf5b854
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Apr 23 11:18:58 2007 +0000
+
+    XftDrawSetClip(NULL) disables the clip mask XftDrawSetClipRectangles(NULL)
+    is a completely opaque clip mask, the exact opposite.
+    
+    
+    svn path=/trunk/; revision=1876
+
+ src/vtexft.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f9e23220a7a164b2f580c90c99e63baf2f3d4c44
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Apr 20 19:45:00 2007 +0000
+
+    Optimise away the use of a clip mask for the common case of redrawing the
+    
+    2007-04-20  Chris Wilson  <chris chris-wilson co uk>
+    
+        * src/vtexft.c (_vte_xft_start), (_vte_xft_clip):
+       Optimise away the use of a clip mask for the common case
+       of redrawing the whole terminal.
+    
+    
+    svn path=/trunk/; revision=1875
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |   36 +++++++++++++++++++++++++-----------
+ 2 files changed, 31 insertions(+), 11 deletions(-)
+
+commit b63ed2abda9e121c409aa5942aceec7b2f3b86c6
+Author: Funda Wang <fwang src gnome org>
+Date:   Thu Apr 19 00:37:18 2007 +0000
+
+    Updated Simplified Chinese translation from Yang Zhang.
+    
+    svn path=/trunk/; revision=1874
+
+ po/ChangeLog |    4 +++
+ po/zh_CN.po  |   73 +++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 48 insertions(+), 29 deletions(-)
+
+commit c78f2f74ce582e237f5f08278b009dfcc142a849
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Apr 17 06:40:12 2007 +0000
+
+    Consider ambiguous-width chars if VTE_CJK_WIDTH env var is set and we are
+    
+    2007-04-17  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/iso2022.c (_vte_iso2022_ambiguous_width): Consider
+            ambiguous-width chars if VTE_CJK_WIDTH env var is set and we are
+            under a CJK locale.
+    
+    
+    svn path=/trunk/; revision=1873
+
+ ChangeLog     |    6 ++++++
+ src/iso2022.c |    7 +++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit e5acf7b41bea4c6b3c86c01e2b86696ae92b33cb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Apr 9 17:50:38 2007 +0000
+
+    Released vte-0.16.1.
+    
+    2007-03-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.1.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.1.
+    
+            * src/Makefile.am: Bumped libtool version to 11:5:2.
+    
+    
+    svn path=/trunk/; revision=1871
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   32 ++++++++++++++++++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 44 insertions(+), 2 deletions(-)
+
+commit 19894afc3a1b5cefe4d8c3c8395b352ead50c502
+Author: Ignacio Casal Quinteiro <icq src gnome org>
+Date:   Sun Apr 8 22:04:52 2007 +0000
+
+    Updated Galician Translation
+    
+    svn path=/trunk/; revision=1870
+
+ po/ChangeLog |    4 +++
+ po/gl.po     |   71 +++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 42 insertions(+), 33 deletions(-)
+
+commit 2acbec9d0d810d944f8123823a9746f8baad68cd
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Apr 6 10:27:26 2007 +0000
+
+    Minor ChangeLog wording change.
+    
+    svn path=/trunk/; revision=1868
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1deeae58857fdf10da2438686ffa88ef8ad3c8d3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Apr 6 10:26:11 2007 +0000
+
+    Bug 426870 – vte often passes NUL to functions requiring valid unichar
+    
+    2007-04-06  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 426870 – vte often passes NUL to functions requiring valid unichar
+    
+        * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+        (vte_terminal_paint):
+       Consistently guard for cell->c == '\0' before calling
+       _vte_draw_get_char_width.
+    
+    
+    svn path=/trunk/; revision=1867
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   16 ++++++++++------
+ 2 files changed, 19 insertions(+), 6 deletions(-)
+
+commit 04df4233a12d4801c22df3ff6ffde5b2f347f688
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Apr 6 09:58:09 2007 +0000
+
+    Bug 419644 – Links do not get highlighted anymore Also see Bug 404757
+    
+    2007-04-06  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 419644 – Links do not get highlighted anymore
+        Also see Bug 404757 – URL matching doesn't work with PCRE
+    
+        * configure.in:
+       Kill --with-pcre as it changes the semantics of the API
+       and only causes confusion.
+    
+    
+    svn path=/trunk/; revision=1866
+
+ ChangeLog    |    9 +++++++++
+ configure.in |   17 -----------------
+ 2 files changed, 9 insertions(+), 17 deletions(-)
+
+commit 962d231f324013e659bb6bf5ebc08f08f2ca8309
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Apr 5 10:40:45 2007 +0000
+
+    Bug 426541 – crash on IRM escape code
+    
+    2007-04-05  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 426541 – crash on IRM escape code
+    
+        * src/vte.c (vte_terminal_ensure_cursor),
+        (_vte_terminal_insert_char):
+       Mishandled insertion - we always extended the row for
+       inserts even though the row would automagically extend
+       for the inserted cells. This lead to referencing
+       uninitialised cells at the end of the row during painting.
+        * src/vte.c (vte_terminal_draw_rows):
+       Retrieve the cell before inspecting it.
+    
+    
+    svn path=/trunk/; revision=1865
+
+ ChangeLog |   17 +++++++++++++++--
+ src/vte.c |   24 ++++++++++++------------
+ 2 files changed, 27 insertions(+), 14 deletions(-)
+
+commit ca778f57c983bf7994563c9b0df1d28f3af024e2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Apr 4 10:53:19 2007 +0000
+
+    Bug 424184 – Make scroll wheel send Page Up/Down when it makes sense
+    
+    2007-04-04  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 424184 – Make scroll wheel send Page Up/Down when it makes sense
+    
+        Original patch by Shaun McCance and refined by Baris Cicek.
+    
+        * src/vte.c (vte_terminal_scroll):
+            Send cursor keypress instead of trying to scroll the
+            alternate screen in vain.
+    
+    
+    svn path=/trunk/; revision=1864
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   44 +++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 49 insertions(+), 5 deletions(-)
+
+commit a6bb6a44d09688ac14d10694c283c1d11a146b04
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Apr 3 07:55:06 2007 +0000
+
+    Bug 425767 – vte_terminal_set_color_highlight should test for NULL
+    
+    2007-04-03  Chris Wilson  <chris chris-wilson co uk>
+    
+        Bug 425767 – vte_terminal_set_color_highlight should test for
+        NULL before _vte_debug_print
+    
+        * src/vte.c (vte_terminal_set_color_cursor),
+        (vte_terminal_set_color_highlight):
+       Differentiate between set/unset paths.
+    
+    
+    svn path=/trunk/; revision=1863
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   24 ++++++++++++++----------
+ 2 files changed, 23 insertions(+), 10 deletions(-)
+
+commit b0f2686e65352151ff8aab15b37005235bffc6e7
+Author: Inaki Larranaga Murgoitio <dooteo euskalgnu org>
+Date:   Sat Mar 31 17:30:22 2007 +0000
+
+    Updated Basque translation.
+    
+    2007-03-31  Inaki Larranaga Murgoitio  <dooteo euskalgnu org>
+    
+       * eu.po: Updated Basque translation.
+    
+    
+    svn path=/trunk/; revision=1862
+
+ po/ChangeLog |    4 +++
+ po/eu.po     |   73 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 44 insertions(+), 33 deletions(-)
+
+commit 92e36b3d49413ac052f1c988757211600c90ed84
+Author: Claudio Saavedra <csaavedra alumnos utalca cl>
+Date:   Fri Mar 30 17:32:42 2007 +0000
+
+    Updated Spanish translation by Rodrigo M. Fombellida.
+    
+    2007-03-30  Claudio Saavedra  <csaavedra alumnos utalca cl>
+    
+            * es.po: Updated Spanish translation by Rodrigo M. Fombellida.
+    
+    
+    
+    svn path=/trunk/; revision=1861
+
+ po/ChangeLog |    4 ++
+ po/es.po     |  113 ++++++++++++++++++++++-----------------------------------
+ 2 files changed, 48 insertions(+), 69 deletions(-)
+
+commit 6ed39db9b7e7c210666a42203fa6c1db0988590e
+Author: Ignacio Casal Quinteiro <icq src gnome org>
+Date:   Sun Mar 25 21:13:23 2007 +0000
+
+    Updated Galician translation.
+    
+    svn path=/trunk/; revision=1860
+
+ po/ChangeLog |    4 +++
+ po/gl.po     |   78 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 44 insertions(+), 38 deletions(-)
+
+commit aeaf1b3b79a9184a665d5e0a948b03717eb4c4a8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Mar 25 14:06:43 2007 +0000
+
+    Bug 422385 – vte appears at the top of the root window even when packed
+    
+    2007-03-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 422385 – vte appears at the top of the root window even when
+       packed at the bottom of it
+    
+       Patch by Dodji Seketeli.
+    
+       * src/vte.c (vte_terminal_size_allocate), (vte_terminal_realize):
+               Honour the allocated position when realizing the widget.
+    
+    
+    svn path=/trunk/; revision=1858
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |    6 +++---
+ 2 files changed, 13 insertions(+), 3 deletions(-)
+
+commit 21217e30ed9040b53ff531fca4411170e6a54c46
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Mar 22 12:10:09 2007 +0000
+
+    Insert spaces into the Xft glyph stream to avoid the overhead of
+    
+    2007-03-22  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtexft.c (_vte_xft_draw_text):
+               Insert spaces into the Xft glyph stream to avoid the
+               overhead of restarting a glyph sequence for every word.
+    
+    
+    svn path=/trunk/; revision=1857
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |   36 ++++++++++++++++++++++++++++++++----
+ 2 files changed, 38 insertions(+), 4 deletions(-)
+
+commit 48fae69f26cef757e4b24198b5ec2bfc74fdd520
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Mar 21 12:38:02 2007 +0000
+
+    Bug 420935 – glyph can be cropped with not fitting in a cell
+    
+    2007-03-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 420935 – glyph can be cropped with not fitting in a cell
+    
+       * src/vte.c (vte_terminal_paint):
+               Don't redraw the invisible cursor
+               - avoids nasty artifacts like clipping extra wide glyphs.
+    
+    
+    svn path=/trunk/; revision=1856
+
+ ChangeLog |    8 +++++++
+ src/vte.c |   70 ++++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 43 insertions(+), 35 deletions(-)
+
+commit 73d0161e60567644e2e0ed50f52a0537e628affb
+Author: Pema Geyleg <pgeyleg src gnome org>
+Date:   Wed Mar 21 04:42:07 2007 +0000
+
+    Updated Dzongkha Translation
+    
+    svn path=/trunk/; revision=1855
+
+ po/ChangeLog |    4 +++
+ po/dz.po     |   75 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 46 insertions(+), 33 deletions(-)
+
+commit 1c1128e26a33ac9ce9b30fdead6d9817ad1e17e4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 19 14:08:33 2007 +0000
+
+    Leave 'contents-change' to the scroll handler.
+    
+    2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_scroll_pages):
+               Leave 'contents-change' to the scroll handler.
+    
+    
+    svn path=/trunk/; revision=1854
+
+ ChangeLog |    5 +++++
+ src/vte.c |    2 --
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 4a7d25e1adfcb66a0687f00efe41b2f9a156c609
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 19 10:51:09 2007 +0000
+
+    Accidentally inverted an is-empty? check during the elimination of the
+    
+    2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows):
+               Accidentally inverted an is-empty? check during the
+               elimination of the empty bitfield.
+    
+    
+    svn path=/trunk/; revision=1853
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    5 ++---
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit badce29ef7e7e30bc0b05e375594bd62eadb0cbb
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 19 10:14:32 2007 +0000
+
+    Bug 420067 – Does not handle expose events whilst processing unseen
+    
+    2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 420067 – Does not handle expose events whilst processing
+       unseen incoming data
+    
+       * src/vte.c (vte_terminal_expose):
+               Handle the expose immediately if we are only processing
+               incoming data (ie no redraws pending).
+    
+    
+    svn path=/trunk/; revision=1852
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    4 +++-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 2cc778da5dd507a139aeb7a0324c96bf186398d4
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Fri Mar 16 18:01:36 2007 +0000
+
+    Updated Albanian translation.
+    
+    svn path=/trunk/; revision=1851
+
+ po/ChangeLog |    4 +++
+ po/sq.po     |   85 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 49 insertions(+), 40 deletions(-)
+
+commit fac7f53391ed453b9efb34a924004309535162a1
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 11:55:36 2007 +0000
+
+    Remove a chunk of code that was tried as a mutt band-aid long ago and was
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c (vte_sequence_handler_cursor_character_absolute):
+               Remove a chunk of code that was tried as a mutt band-aid
+               long ago and was completely wrong.
+    
+    
+    svn path=/trunk/; revision=1850
+
+ ChangeLog    |    6 ++++++
+ src/vteseq.c |    9 ---------
+ 2 files changed, 6 insertions(+), 9 deletions(-)
+
+commit b73b7e1536e4cf93688c7fabd98d1a2610550911
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 11:48:32 2007 +0000
+
+    Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+       The bulk of the work to remove redundant reads and conditionals
+       from the code. In particular, gcc was emitting bit-by-bit copies
+       for transferring the bitfield since we modified a member immediately
+       afterwards - overcome this by using an explicit memcpy of the
+       bitfields.
+    
+       * src/vte-private.h:
+       * src/vte.c (vte_g_array_fill), (vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming),
+       (vte_terminal_send):
+       * src/vteseq.c (vte_sequence_handler_ic):
+    
+    
+    svn path=/trunk/; revision=1849
+
+ ChangeLog         |   16 ++++++
+ src/vte-private.h |    4 +-
+ src/vte.c         |  133 ++++++++++++++++++++---------------------------------
+ src/vteseq.c      |    2 +-
+ 4 files changed, 68 insertions(+), 87 deletions(-)
+
+commit cda925578fd1314950623a909e76dec9fc0b432a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 11:40:55 2007 +0000
+
+    cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+       * src/vte-private.h: Use a simple boolean rather than counter for
+       text changed style flags.
+       * src/vte.c: And update users.
+       * src/vteseq.c:
+    
+    
+    svn path=/trunk/; revision=1848
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    4 ++--
+ src/vte.c         |   24 +++++++++---------------
+ src/vteseq.c      |   44 ++++++++++++++++++++++----------------------
+ 4 files changed, 42 insertions(+), 39 deletions(-)
+
+commit 951f597495bf01b693ae1cd9abb09c78e6212244
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 11:37:07 2007 +0000
+
+    cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+    
+       * src/vte-private.h: Embed bitfield into struct
+       * src/vte.c:  And update users.
+       * src/vteseq.c:
+    
+    
+    svn path=/trunk/; revision=1847
+
+ ChangeLog         |    8 ++
+ src/vte-private.h |   44 ++++++-----
+ src/vte.c         |  226 ++++++++++++++++++++++++++---------------------------
+ src/vteseq.c      |  114 +++++++++++++--------------
+ 4 files changed, 199 insertions(+), 193 deletions(-)
+
+commit 62aed61f89c15016f45416067dc6af5dae2dec89
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Mar 16 11:14:53 2007 +0000
+
+    A couple more compilation fixes.
+    
+    svn path=/trunk/; revision=1846
+
+ src/vte.c    |    8 ++++----
+ src/vtegl.c  |    3 +--
+ src/vtexft.c |    4 +---
+ 3 files changed, 6 insertions(+), 9 deletions(-)
+
+commit 0ae6cc3971278263ff15bdd7ecf361a61bf1632b
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Mar 16 10:53:37 2007 +0000
+
+    Missed a couple of chunks needed to compile!
+    
+    
+    svn path=/trunk/; revision=1845
+
+ src/vte-private.h |    2 +-
+ src/vte.c         |   13 ++++++-------
+ 2 files changed, 7 insertions(+), 8 deletions(-)
+
+commit 2233a6468f3b40e365a864042251c5b8662a6771
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:51:58 2007 +0000
+
+    Need to trigger update timeout rather than process timeout otherwise the
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Need to trigger update timeout rather than process timeout
+       otherwise the background is not updated.
+    
+       * src/vte.c (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed):
+    
+    
+    svn path=/trunk/; revision=1844
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   22 +++++++++++++---------
+ 2 files changed, 21 insertions(+), 9 deletions(-)
+
+commit 16ff2c576eba699bf7a1f80e4806bdd1c54173be
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:47:31 2007 +0000
+
+    Avoid some allocations.
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtexft.c (_vte_xft_create), (_vte_xft_destroy),
+       (_vte_xft_start), (_vte_xft_end), (_vte_xft_clip),
+       (_vte_xft_clear): Avoid some allocations.
+    
+    
+    svn path=/trunk/; revision=1843
+
+ ChangeLog    |    6 ++++
+ src/vtexft.c |   93 +++++++++++++++++++++++++---------------------------------
+ 2 files changed, 46 insertions(+), 53 deletions(-)
+
+commit a4cb981c34efb1086b7c1551e25df42605947297
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:44:47 2007 +0000
+
+    Bug 418073 – Opacity ignored for vtexft
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 418073 – Opacity ignored for vtexft
+    
+       * src/vte.c:
+       * src/vtedraw.c (_vte_draw_requires_clear):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_image):
+       * src/vtegl.c (_vte_gl_create), (_vte_gl_set_background_image):
+       * src/vtepango.c (_vte_pango_set_background_image):
+       * src/vtepangox.c (_vte_pango_x_set_background_image):
+       * src/vtexft.c (_vte_xft_set_background_color),
+       (_vte_xft_set_background_image):
+               Flood fill the backing pixmap if we need to change it's
+               opacity as well.
+    
+    
+    svn path=/trunk/; revision=1842
+
+ ChangeLog       |   18 ++++++++++++++++++
+ src/vte.c       |    2 +-
+ src/vtedraw.c   |    4 ++--
+ src/vtedraw.h   |    4 ++--
+ src/vteft2.c    |    2 +-
+ src/vtegl.c     |    2 +-
+ src/vtepango.c  |    4 ++--
+ src/vtepangox.c |    4 ++--
+ src/vtexft.c    |    7 +++++--
+ 9 files changed, 34 insertions(+), 13 deletions(-)
+
+commit 0323293dbad98bcabc8ef79ee04a98f41c6307ac
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:37:32 2007 +0000
+
+    Bug 418910 – Asymmetric scrolling with mouse wheel
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 418910 – Asymmetric scrolling with mouse wheel
+    
+       * configure.in:
+       * src/vte.c: Round-up the delta before applying to ensure consistency
+       between up and down.
+    
+    
+    svn path=/trunk/; revision=1841
+
+ ChangeLog    |    6 ++++++
+ configure.in |    1 +
+ src/vte.c    |   15 ++++++++-------
+ 3 files changed, 15 insertions(+), 7 deletions(-)
+
+commit efdb21202b7fda649fc4e25d5039e0181152da10
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:26:12 2007 +0000
+
+    Refactor some common code.
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming): Refactor some common code.
+    
+    
+    svn path=/trunk/; revision=1840
+
+ ChangeLog |    5 +++
+ src/vte.c |  106 +++++++++++++++++++++++++++----------------------------------
+ 2 files changed, 52 insertions(+), 59 deletions(-)
+
+commit 6121477a73bfb822b244f2e7dace419e97c8dabc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:19:42 2007 +0000
+
+    Bug 416634 – Rendering glitch as autowrapped chars are outside
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 416634 – Rendering glitch as autowrapped chars are outside invalidated bbox
+    
+       * src/vte.c (_vte_terminal_insert_char),
+       (vte_terminal_process_incoming): Correctly update bbox after
+       autowrapping.
+    
+    
+    svn path=/trunk/; revision=1839
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   35 +++++++++++++++++++++++++++++++++--
+ 2 files changed, 41 insertions(+), 2 deletions(-)
+
+commit a4166ac0a77f3ffd544d130216aa4e4d09586ff8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:15:53 2007 +0000
+
+    Bug 416635 – Rendering glitch: double draw of line below exposed region
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 416635 – Rendering glitch: double draw of line below exposed region
+    
+       * src/vte.c (vte_terminal_expand_region),
+       (vte_terminal_paint_area): Kill a couple of off-by-ones.
+    
+    
+    svn path=/trunk/; revision=1838
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   10 ++++------
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+commit c92e744f31e97c825a9b62b628993d7d61e8ba90
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:11:04 2007 +0000
+
+    Bug 418588 – Invalid read when drawing preedit cursor
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 418588 – Invalid read when drawing preedit cursor
+    
+       * src/vte.c (vte_terminal_paint):
+               No need to read what is drawn and furthermore isn't allocated.
+    
+    
+    svn path=/trunk/; revision=1837
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   12 ------------
+ 2 files changed, 7 insertions(+), 12 deletions(-)
+
+commit 8fcef563eb841bca377e1e54eb87ddc181e77935
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:09:05 2007 +0000
+
+    Bug 417652 – Scrolling bug exposed by nvi
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 417652 – Scrolling bug exposed by nvi
+    
+       * src/vte.c (vte_terminal_insert_rows), (_vte_terminal_ensure_row),
+       (vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta):
+               Ensure the rows before updating the insert delta and refactor
+               the common code.
+    
+    
+    svn path=/trunk/; revision=1836
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   55 ++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 37 insertions(+), 27 deletions(-)
+
+commit c153f7658423037d86cedbe4e29b5c0426dfa23d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 16 10:04:03 2007 +0000
+
+    Bug 417301 – Terminal widgets don't respond to DPI changes
+    
+    2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 417301 – Terminal widgets don't respond to DPI changes
+    
+       * src/vte.c (vte_terminal_fc_settings_changed): Force a font reload
+       after XFT settings have changed.
+    
+    
+    svn path=/trunk/; revision=1835
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   11 ++++++++++-
+ 2 files changed, 17 insertions(+), 1 deletions(-)
+
+commit 6e2f5d59cf01cb7afd7954b03dec2c16d76b358a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 12 23:31:27 2007 +0000
+
+    Released vte-0.16.0.
+    
+    2007-03-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.16.0.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.16.0.
+    
+            * src/Makefile.am: Bumped libtool version to 11:4:2.
+    
+    
+    svn path=/trunk/; revision=1833
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    8 ++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 61d35acde10c49eff72bc36f0e137aed906f9613
+Author: Luca Ferretti <elle uca libero it>
+Date:   Mon Mar 12 07:47:36 2007 +0000
+
+    Updated Italian translation by Francesco Marletta.
+    
+    2007-03-12  Luca Ferretti  <elle uca libero it>
+    
+       * it.po: Updated Italian translation by Francesco Marletta.
+    
+    
+    svn path=/trunk/; revision=1832
+
+ po/ChangeLog |    4 ++
+ po/it.po     |   97 +++++++++++++++++++++-------------------------------------
+ 2 files changed, 39 insertions(+), 62 deletions(-)
+
+commit d82a2f2df75285a83708a4a35268fd3a319be134
+Author: Danilo Šegan <danilo src gnome org>
+Date:   Sat Mar 10 18:57:27 2007 +0000
+
+    Updated Serbian translation.
+    
+    svn path=/trunk/; revision=1831
+
+ po/ChangeLog  |    4 ++
+ po/sr.po      |   78 ++++++++++++++++++++++++++++----------------------
+ po/sr Latn po |   89 +++++++++++++++++++++++++++++++-------------------------
+ 3 files changed, 97 insertions(+), 74 deletions(-)
+
+commit 2b448ff232e9c8abb7dc27ae804f8ca2dd255f9a
+Author: Leonid Kanter <lkanter src gnome org>
+Date:   Sat Mar 10 17:19:55 2007 +0000
+
+    Updated Russian translation
+    
+    svn path=/trunk/; revision=1830
+
+ po/ChangeLog |    4 ++
+ po/ru.po     |  128 ++++++++++++++++++++++------------------------------------
+ 2 files changed, 52 insertions(+), 80 deletions(-)
+
+commit 1bc367e67dea70d9e4f576285a397bbb4e13191c
+Author: Ihar Hrachyshka <iharh src gnome org>
+Date:   Sat Mar 10 00:39:21 2007 +0000
+
+    Fixed Belarusian Latin translation.
+    
+    svn path=/trunk/; revision=1829
+
+ po/ChangeLog   |    6 +++++-
+ po/be latin po |   16 ++++++++--------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+commit 045b15b2e6bc6d467efa3aaf0c4c205861358cc3
+Author: Ihar Hrachyshka <iharh src gnome org>
+Date:   Fri Mar 9 13:49:14 2007 +0000
+
+    Fixed wrong credentials.
+    
+    svn path=/trunk/; revision=1828
+
+ po/ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3745030f963586ec141806c0b6266ad180d5211c
+Author: Ihar Hrachyshka <iharh src gnome org>
+Date:   Fri Mar 9 13:46:08 2007 +0000
+
+    be latin po: Added Belarusian Latin translation by Ales Navicki.
+    
+    svn path=/trunk/; revision=1827
+
+ po/ChangeLog   |    4 ++
+ po/LINGUAS     |    1 +
+ po/be latin po |  122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 127 insertions(+), 0 deletions(-)
+
+commit 0c72bb1ce18fe16769f3606580e331138ded6abb
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Fri Mar 9 13:31:00 2007 +0000
+
+    Translation updated.
+    
+    2007-03-09  Gabor Kelemen  <kelemeng gnome hu>
+    
+       * hu.po: Translation updated.
+    
+    svn path=/trunk/; revision=1826
+
+ po/ChangeLog |    4 ++++
+ po/hu.po     |   38 +++++++++++++++++++++-----------------
+ 2 files changed, 25 insertions(+), 17 deletions(-)
+
+commit ebf2da0ef20065471f49d6c54afd2f135f8d0f8e
+Author: Gintautas Miliauskas <gintas akl lt>
+Date:   Wed Mar 7 20:16:01 2007 +0000
+
+    Updated Lithuanian translation.
+    
+    2007-03-07  Gintautas Miliauskas  <gintas akl lt>
+    
+       * lt.po: Updated Lithuanian translation.
+    
+    
+    
+    svn path=/trunk/; revision=1825
+
+ po/ChangeLog |    4 ++++
+ po/lt.po     |   48 +++++++++++++++++++++++++-----------------------
+ 2 files changed, 29 insertions(+), 23 deletions(-)
+
+commit 8651c1b2ee2f3550f0be9805152697da07171a8c
+Author: Takeshi AIHANA <takeshi aihana gmail com>
+Date:   Wed Mar 7 14:53:12 2007 +0000
+
+    Updated Japanese translation.
+    
+    2007-03-07  Takeshi AIHANA <takeshi aihana gmail com>
+    
+            * ja.po: Updated Japanese translation.
+    
+    svn path=/trunk/; revision=1824
+
+ po/ChangeLog |    4 ++++
+ po/ja.po     |   47 ++++++++++++++++++++++++++---------------------
+ 2 files changed, 30 insertions(+), 21 deletions(-)
+
+commit 0b1e25475ec1c69adee7b5b9c2cb01b91cc3710b
+Author: Jovan Naumovski <jovanna src gnome org>
+Date:   Tue Mar 6 18:29:32 2007 +0000
+
+    2007-03-06 Jovan Naumovski <jovanna svn gnome org> *mk.po: Updated Macedonian translation.
+    
+    svn path=/trunk/; revision=1823
+
+ po/ChangeLog |    4 +++
+ po/mk.po     |   83 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 49 insertions(+), 38 deletions(-)
+
+commit cf7bb8e3391ea014738b1633044bfd436eee97b9
+Author: David Lodge <dlodge src gnome org>
+Date:   Tue Mar 6 12:47:37 2007 +0000
+
+    Updated en_GB translation
+    
+    svn path=/trunk/; revision=1822
+
+ po/ChangeLog |    4 ++++
+ po/en_GB.po  |   48 ++++++++++++++++++++++++++----------------------
+ 2 files changed, 30 insertions(+), 22 deletions(-)
+
+commit 12e084dd9ed1e72bde4bc4db603454257af203b3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Mar 6 00:29:39 2007 +0000
+
+    More work to match mutt's behaviour under xterm.
+    
+    2007-03-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c (vte_sequence_handler_cm), (vte_sequence_handler_sf):
+               More work to match mutt's behaviour under xterm.
+    
+    
+    svn path=/trunk/; revision=1821
+
+ ChangeLog     |    5 +++++
+ src/vtedraw.c |    2 +-
+ src/vteseq.c  |   29 +++++++++--------------------
+ 3 files changed, 15 insertions(+), 21 deletions(-)
+
+commit 32641950c83f0ac3a52f5dd7e5251a4c649c6d8d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 23:20:30 2007 +0000
+
+    Use the process estimate to load balance between multiple active
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_io_read):
+               Use the process estimate to load balance between multiple
+               active terminals.
+    
+    
+    svn path=/trunk/; revision=1820
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 014ea56bf1a6def3aad75e30bf4099756a1e2a43
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 22:21:58 2007 +0000
+
+    Tweak the fill of painted cells to match mutt's behaviour under xterm.
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c (vte_sequence_handler_cm),
+       (vte_sequence_handler_dc), (vte_sequence_handler_sf),
+       (vte_sequence_handler_cursor_character_absolute):
+               Tweak the fill of painted cells to match mutt's behaviour
+               under xterm.
+    
+    
+    svn path=/trunk/; revision=1819
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |    4 ++--
+ src/vteseq.c |   39 ++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 48 insertions(+), 3 deletions(-)
+
+commit ea79a823aca2baf353945e2176d5e4500de8db6d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 21:17:42 2007 +0000
+
+    Bug 414716 – gnome-terminal-2.17.92: terminal window dies...
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 414716 – gnome-terminal-2.17.92: terminal window dies...
+    
+       * src/vte.c (vte_terminal_map_toplevel),
+       (vte_terminal_hierarchy_changed):
+               Force the visibility state to unobscured after the toplevel is
+               remapped.
+    
+    
+    svn path=/trunk/; revision=1818
+
+ ChangeLog    |    9 +++++++++
+ src/vte.c    |   23 +++++++++++++++++++++++
+ src/vteseq.c |    3 ++-
+ 3 files changed, 34 insertions(+), 1 deletions(-)
+
+commit 9ddd2072aeea4000981f70e2a7302ca12471aa1b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 21:03:41 2007 +0000
+
+    Note to self: Never try to optimize away the redraw.
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_size_allocate):
+               Note to self: Never try to optimize away the redraw.
+    
+    
+    svn path=/trunk/; revision=1817
+
+ ChangeLog |    5 +++++
+ src/vte.c |    7 -------
+ 2 files changed, 5 insertions(+), 7 deletions(-)
+
+commit be8ace2edd7f872065c3f26ea3149ae18ba45f72
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 20:09:25 2007 +0000
+
+    Touch up whitespace in debug output.
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (_vte_terminal_insert_char):
+       * src/vtedraw.c (_vte_draw_text), (_vte_draw_char),
+       (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle):
+               Touch up whitespace in debug output.
+    
+    
+    svn path=/trunk/; revision=1816
+
+ ChangeLog     |    7 +++++++
+ src/vte.c     |    2 +-
+ src/vtedraw.c |    8 ++++----
+ 3 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 7098429bc2137224371b4a8b75eb006e115cecd2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 19:50:03 2007 +0000
+
+    Make sure the invalidated_all flag is cleared in the expose event if we
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (_vte_invalidate_cells), (vte_terminal_set_visibility),
+       (vte_terminal_paint_area), (vte_terminal_expose):
+               Make sure the invalidated_all flag is cleared in the expose
+               event if we handle it immediately.
+    
+    
+    svn path=/trunk/; revision=1815
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   14 ++++++++++----
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+
+commit 9facb328b7be42ac7bf4c4fd2a90f5d3db1a4219
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 19:05:59 2007 +0000
+
+    Fixup invalidation to end-of-line.
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c (vte_sequence_handler_ce),
+       (vte_sequence_handler_clear_current_line):
+               Fixup invalidation to end-of-line.
+    
+    
+    svn path=/trunk/; revision=1814
+
+ ChangeLog    |    6 ++++++
+ src/vteseq.c |   13 +++++--------
+ 2 files changed, 11 insertions(+), 8 deletions(-)
+
+commit b07d7fed6725088d52368b39e88083e136899f39
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 16:58:04 2007 +0000
+
+    cf Bug 414586 – Terminal screen blinks when menu is opened for the first
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+    
+       * src/vte.c (vte_terminal_draw_rows), (vte_terminal_expand_region):
+               Include the window padding when painting the cell backgrounds.
+    
+    
+    svn path=/trunk/; revision=1813
+
+ ChangeLog |    7 +++++
+ src/vte.c |   74 +++++++++++++++++++++++++++++++++++++++++++++++--------------
+ 2 files changed, 64 insertions(+), 17 deletions(-)
+
+commit 8faa8c912c5b5164c2e9b1b26f7858729c4019a7
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Mar 5 15:48:02 2007 +0000
+
+    trivial compiler warning from last commit
+    
+    svn path=/trunk/; revision=1812
+
+ src/vtedraw.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit ffdc14a771993d18473f406bf73d37e1b0f8806a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 15:35:01 2007 +0000
+
+    Bug 414586 – Terminal screen blinks when menu is opened for the first
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 414586 – Terminal screen blinks when menu is opened for the first time
+    
+       Avoid resetting the window background colour when the style is reset.
+       Avoid clearing the window if we are using a simple color and double
+       bufferring (i.e when we know we are using a pre-cleared pixmap).
+    
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_unrealize), (vte_terminal_realize),
+       (vte_terminal_paint_area), (vte_terminal_expose),
+       (vte_terminal_class_init), (vte_terminal_background_update):
+       * src/vtedraw.c (_vte_draw_has_background_image):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_image):
+       * src/vtegl.c (_vte_gl_set_background_image):
+       * src/vtepango.c (_vte_pango_set_background_image):
+       * src/vtepangox.c (_vte_pango_x_set_background_image):
+    
+    
+    svn path=/trunk/; revision=1811
+
+ ChangeLog         |   21 ++++++++++++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   54 ++++++++++++++++++++++++++++++++++++++--------------
+ src/vtedraw.c     |    7 ++++++
+ src/vtedraw.h     |    2 +
+ src/vteft2.c      |    1 +
+ src/vtegl.c       |    1 +
+ src/vtepango.c    |    3 ++
+ src/vtepangox.c   |    3 ++
+ src/vtexft.c      |    3 ++
+ 10 files changed, 81 insertions(+), 15 deletions(-)
+
+commit 91be4067a9112a2e19a3084d3b1393dc8067392d
+Author: Ilkka Tuohela <ituohela src gnome org>
+Date:   Mon Mar 5 15:05:46 2007 +0000
+
+    Updated Finnish translation
+    
+    svn path=/trunk/; revision=1810
+
+ po/ChangeLog |    4 ++++
+ po/fi.po     |   36 ++++++++++++++++++++----------------
+ 2 files changed, 24 insertions(+), 16 deletions(-)
+
+commit e4eb60788f093e8ca1fbeb52c4bed4e6573d49b7
+Author: Ankitkumar Rameshchandra Patel <ankitp src gnome org>
+Date:   Mon Mar 5 14:43:38 2007 +0000
+
+    Updated Translation
+    
+    svn path=/trunk/; revision=1809
+
+ po/ChangeLog |    4 +++
+ po/gu.po     |   78 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 48 insertions(+), 34 deletions(-)
+
+commit 32a9ad735618dac47ebdaa8b52e4b6e0d9aa4640
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 14:23:08 2007 +0000
+
+    Bug 414586 – Terminal screen blinks when menu is opened for the first
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 414586 – Terminal screen blinks when menu is opened for the first time
+    
+       * src/vte.c (_vte_invalidate_cells), (_vte_invalidate_all),
+       (vte_terminal_expose), (add_update_timeout):
+               Juggle the handling of external exposes/invalidates to avoid
+               delays in refreshing the display when we are idle.
+    
+    
+    svn path=/trunk/; revision=1808
+
+ ChangeLog |    9 ++++++++
+ src/vte.c |   62 ++++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 40 insertions(+), 31 deletions(-)
+
+commit 2ec854aa5f576cc0e03ab893768ef3dea4019b06
+Author: Simos Xenitellis <simos src gnome org>
+Date:   Mon Mar 5 13:55:31 2007 +0000
+
+    Updated Greek translation
+    
+    svn path=/trunk/; revision=1807
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit a0ff645837ff137d96c152da65e03148bd54d640
+Author: Simos Xenitellis <simos src gnome org>
+Date:   Mon Mar 5 13:54:18 2007 +0000
+
+    Updated Greek translation
+    
+    svn path=/trunk/; revision=1806
+
+ po/el.po |   67 +++++++++++++++++++++++++++++++++++--------------------------
+ 1 files changed, 38 insertions(+), 29 deletions(-)
+
+commit 28d00b425e844acea7dec71e011c922f1a4a7ef9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Mar 5 12:26:57 2007 +0000
+
+    cf Bug 414586 – Terminal screen blinks when menu is opened for the first
+    
+    2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+    
+       * src/vte.c (_vte_invalidate_cells), (vte_terminal_init),
+       (vte_terminal_expand_region), (vte_terminal_paint_area):
+               After enlarging the expand region make sure the dirty area
+               includes the border for edge cells.
+    
+    
+    svn path=/trunk/; revision=1805
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   58 ++++++++++++++++++++++++++++++++++++----------------------
+ 2 files changed, 45 insertions(+), 22 deletions(-)
+
+commit 9b97915f00ce32c243c343920de3c332cb3e28f0
+Author: Josep Puigdemont i Casamajó <joseppc src gnome org>
+Date:   Mon Mar 5 01:58:52 2007 +0000
+
+    Updated Catalan translation.
+    
+    svn path=/trunk/; revision=1804
+
+ po/ChangeLog |    4 ++++
+ po/ca.po     |   40 +++++++++++++++++++++++-----------------
+ 2 files changed, 27 insertions(+), 17 deletions(-)
+
+commit b1605f6235c542bfb83ecceea90bcf653b378963
+Author: Peter Bach <pbach src gnome org>
+Date:   Sun Mar 4 20:19:55 2007 +0000
+
+    Updated Danish translation
+    
+    svn path=/trunk/; revision=1803
+
+ po/ChangeLog |    4 ++++
+ po/da.po     |   38 +++++++++++++++++++++-----------------
+ 2 files changed, 25 insertions(+), 17 deletions(-)
+
+commit 6f039ef2b0cadf7dd07c4d664b2fa45c6205a607
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Mar 4 16:37:27 2007 +0000
+
+    cf Bug 414586 – Terminal screen blinks when menu is opened for the first
+    
+    2007-03-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+    
+       Distinguish between internal update requests and external. If we
+       need to update due to a user action (such as adjusting the background
+       or color palette) do not impose a futher delay.
+    
+       Tidy the color palette modification code to not trigger invalidates if
+       we do not actually modify the palette.
+    
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_set_color_internal),
+       (vte_terminal_set_color_bold), (vte_terminal_set_color_dim),
+       (vte_terminal_set_color_foreground),
+       (vte_terminal_set_color_background),
+       (vte_terminal_set_color_cursor),
+       (vte_terminal_set_color_highlight), (vte_terminal_set_colors),
+       (root_pixmap_changed_cb), (vte_terminal_set_background_saturation),
+       (vte_terminal_set_background_tint_color), (add_update_timeout):
+       * src/vteseq.c (vte_sequence_handler_ce),
+       (vte_sequence_handler_clear_current_line),
+       (vte_sequence_handler_clear_above_current):
+    
+    
+    svn path=/trunk/; revision=1802
+
+ ChangeLog         |   24 +++++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |  115 +++++++++++++++++++++++++++++++++++++++-------------
+ src/vteseq.c      |   21 ++++++----
+ 4 files changed, 123 insertions(+), 39 deletions(-)
+
+commit 318c714437d9f81f79690f9766d61a741b855242
+Author: Chao-Hsiung Liao <j_h_liau yahoo com tw>
+Date:   Sun Mar 4 00:07:11 2007 +0000
+
+    Updated Traditional Chinese translation(Hong Kong). Updated Traditional
+    
+    
+    2007-03-04  Chao-Hsiung Liao  <j_h_liau yahoo com tw>
+    
+            * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+            * zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+    
+    
+    svn path=/trunk/; revision=1801
+
+ po/ChangeLog |    5 +++
+ po/zh_HK.po  |   88 ++++++++++++++++++++++++++++++++-------------------------
+ po/zh_TW.po  |   82 ++++++++++++++++++++++++++++++-----------------------
+ 3 files changed, 100 insertions(+), 75 deletions(-)
+
+commit 94f8041cbed2ac4369cd4a9d829fef6d867f1435
+Author: Wouter Bolsterlee <wbolster svn gnome org>
+Date:   Sat Mar 3 12:35:48 2007 +0000
+
+    Dutch translation updated by Wouter Bolsterlee.
+    
+    2007-03-03  Wouter Bolsterlee  <wbolster svn gnome org>
+    
+       * nl.po: Dutch translation updated by Wouter Bolsterlee.
+    
+    svn path=/trunk/; revision=1800
+
+ po/ChangeLog |   52 ++++++++++++++++++++++-------------------
+ po/nl.po     |   72 ++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 71 insertions(+), 53 deletions(-)
+
+commit 45d6f8a7685521bbd8ba45388211b2388192d64c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 2 12:54:05 2007 +0000
+
+    Bug 413068 – new line added to tab when opened
+    
+    2007-03-02  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413068 – new line added to tab when opened
+    
+       * src/vte.c (vte_terminal_size_allocate):
+               Replace the ill-conceived attempt (delta could not be
+               negative, so insert_delta or scroll_delta would not become
+               negative either) by only considering changes wrt to the number
+               of visible lines.
+    
+    
+    svn path=/trunk/; revision=1799
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   20 +++++++-------------
+ 2 files changed, 17 insertions(+), 13 deletions(-)
+
+commit 1531fce6bf48a24ea4294af130422eee3401cb81
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Mar 2 12:34:21 2007 +0000
+
+    Bug 413068 – new line added to tab when opened
+    
+    2007-03-02  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413068 – new line added to tab when opened
+    
+       * src/vte.c (_vte_terminal_insert_char):
+               Improve debug output.
+       * src/vte.c (vte_terminal_size_allocate):
+               Be careful that we don't force insert_delta or scroll_delta
+               to become negative.
+    
+    
+    svn path=/trunk/; revision=1798
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   28 ++++++++++++++++++++--------
+ 2 files changed, 30 insertions(+), 8 deletions(-)
+
+commit 11c5763c6b9e584a06a2fdc7945837b5d8aa638d
+Author: Ihar Hrachyshka <iharh src gnome org>
+Date:   Thu Mar 1 19:13:38 2007 +0000
+
+    be.po: Updated Belarusian translation.
+    
+    svn path=/trunk/; revision=1797
+
+ po/ChangeLog |    4 ++++
+ po/be.po     |   48 ++++++++++++++++++++++++++----------------------
+ 2 files changed, 30 insertions(+), 22 deletions(-)
+
+commit d5ced7389f7235ada9794b97ea8678b58899b7db
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Mar 1 16:21:39 2007 +0000
+
+    Released vte-0.15.6.
+    
+    2007-03-01  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.6.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.6.
+    
+            * src/Makefile.am: Bumped libtool version to 11:3:2.
+    
+    
+    svn path=/trunk/; revision=1795
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   12 ++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 24 insertions(+), 2 deletions(-)
+
+commit d365c60b2dde84a5f251b3a8af2be26dd240a533
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Thu Mar 1 13:54:16 2007 +0000
+
+    Added Changelog Entry for Bengali India translation updation
+    
+    svn path=/trunk/; revision=1794
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit fe2de849b248afa68e226bad076790d3a4319e4d
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Thu Mar 1 13:53:41 2007 +0000
+
+    Updated Bengali India Translation
+    
+    svn path=/trunk/; revision=1793
+
+ po/bn_IN.po |   63 +++++++++++++++++++++++++++++++++-------------------------
+ 1 files changed, 36 insertions(+), 27 deletions(-)
+
+commit dcb7fd974bea5fe49d4f5b0344ebdaffc6d7bae1
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Mar 1 12:58:47 2007 +0000
+
+    Tweak the clear widths to include the pixel widening due to psuedo-bold.
+    
+    2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c (vte_terminal_draw_cells), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+               Tweak the clear widths to include the pixel widening due to
+               psuedo-bold.
+    
+    
+    svn path=/trunk/; revision=1792
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    7 +++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 5dbdc4d84c313ce1aa69723e6ecc584bcc172454
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Thu Mar 1 10:54:38 2007 +0000
+
+    trivial readability improvement
+    
+    svn path=/trunk/; revision=1791
+
+ src/vte.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 839c35d254d4e905fff331ae2b0733a76f05fff4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Mar 1 10:50:45 2007 +0000
+
+    Be more careful when filling in gaps.
+    
+    2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_ensure_row),
+       (vte_terminal_ensure_cursor), (_vte_terminal_insert_char):
+       * src/vteseq.c (vte_sequence_handler_ta):
+               Be more careful when filling in gaps.
+    
+    
+    svn path=/trunk/; revision=1790
+
+ ChangeLog         |    8 +++
+ src/vte-private.h |    1 -
+ src/vte.c         |  124 +++++++++++++++++++++++++----------------------------
+ src/vteseq.c      |   11 +++--
+ 4 files changed, 73 insertions(+), 71 deletions(-)
+
+commit cea448a26705776ad4de156480e6c7e8d4a9de22
+Author: Maxim Dziumanenko <dziumanenko gmail com>
+Date:   Thu Mar 1 10:12:57 2007 +0000
+
+    Update Ukrainian translation.
+    
+    2007-03-01 Maxim Dziumanenko <dziumanenko gmail com>
+    
+       * Update Ukrainian translation.
+    
+    
+    svn path=/trunk/; revision=1789
+
+ po/ChangeLog |    4 +++
+ po/uk.po     |   68 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 41 insertions(+), 31 deletions(-)
+
+commit fb8c66adab006dc51567dc043ad4d3a9471872a3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Mar 1 09:50:38 2007 +0000
+
+    Fix X11 headers / libraries detection on bi-arch systems. Patch by
+    
+    2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       Fix X11 headers / libraries detection on bi-arch systems.
+       Patch by Frederic Crozat.
+    
+       * configure.in:
+               Check for x_includes before ac_x_includes, and similary for
+               ac_x_libraries.
+    
+    
+    svn path=/trunk/; revision=1788
+
+ ChangeLog    |    9 +++++++++
+ configure.in |    6 +++++-
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit e76f76be61f5c533e54c0820361765437ef75b8e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Mar 1 00:29:52 2007 +0000
+
+    Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+    2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+       * src/vtexft.c:
+               Further reduce the cap to 80 after more testing on the
+               broken fglrx driver.
+    
+    
+    svn path=/trunk/; revision=1787
+
+ ChangeLog    |    8 ++++++++
+ src/vtexft.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 8baeec89102035fcea162cfe3ca6fc0a04cfa778
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 23:51:50 2007 +0000
+
+    Bug 413068 – new line added to tab when opened
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413068 – new line added to tab when opened
+    
+       * src/vte.c (vte_terminal_ensure_font), (vte_terminal_realize):
+               Beware when no font is set before the first request...
+               Make sure that at least the default font is set.
+    
+    
+    svn path=/trunk/; revision=1786
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   36 +++++++++++++++++++-----------------
+ 2 files changed, 27 insertions(+), 17 deletions(-)
+
+commit 0bd7c180ce944078dac26641bc1279b0a38f08ed
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 23:09:25 2007 +0000
+
+    Bug 413262 – Incorrectly coloured tabs
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413262 – Incorrectly coloured tabs
+    
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_ensure_cursor),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
+       (_vte_terminal_feed_chunks), (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c (vte_sequence_handler_ta),
+       (vte_sequence_handler_request_terminal_parameters),
+       (vte_sequence_handler_return_terminal_status),
+       (vte_sequence_handler_send_primary_device_attributes):
+               Fill the tab in the current color, else it will be filled at
+    
+    
+    svn path=/trunk/; revision=1785
+
+ ChangeLog         |   15 +++++++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   25 ++++++++++++-------------
+ src/vteseq.c      |   20 ++++++++++++++------
+ 4 files changed, 42 insertions(+), 19 deletions(-)
+
+commit fb6ea2f5aadde4b6f839c7f755572550c01e5c5a
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Feb 28 21:11:41 2007 +0000
+
+    tidy the ChangeLog
+    
+    svn path=/trunk/; revision=1784
+
+ ChangeLog |   22 +++++++++++-----------
+ 1 files changed, 11 insertions(+), 11 deletions(-)
+
+commit fc51bff17bffd8d4bbf41589d2ca11fba21dbeef
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 21:00:24 2007 +0000
+
+    Bug 413102 – Incorrect highlighting in vim
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413102 – Incorrect highlighting in vim
+    
+       * src/vte-private.h
+       * src/vte.c  (_vte_terminal_ensure_row),
+       (_vte_terminal_insert_char):
+       * src/vteseq.c  (vte_sequence_handler_cb),
+       (vte_sequence_handler_ce), (vte_sequence_handler_cr),
+       (vte_sequence_handler_ec), (vte_sequence_handler_sf):
+               Paint the row background when scrolling, this more closely
+               matches xterm's behaviour.
+    
+    
+    svn path=/trunk/; revision=1783
+
+ ChangeLog         |   13 +++++++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
+ src/vteseq.c      |   28 ++++++++++++----------------
+ 4 files changed, 73 insertions(+), 19 deletions(-)
+
+commit 8de7d6cd7c0829e932deb78d0627a3ce417053b0
+Author: Artur Flinta <aflinta svn gnome org>
+Date:   Wed Feb 28 20:40:37 2007 +0000
+
+    Updated Polish translation by GNOME PL Team.
+    
+    2007-02-28  Artur Flinta  <aflinta svn gnome org>
+    
+       * pl.po: Updated Polish translation by GNOME PL Team.
+    
+    
+    svn path=/trunk/; revision=1782
+
+ po/ChangeLog |    4 ++++
+ po/pl.po     |   35 ++++++++++++++++++++---------------
+ 2 files changed, 24 insertions(+), 15 deletions(-)
+
+commit 6e08e0cb2c2f55abb3a3e5913c7714d74677fd51
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 18:28:39 2007 +0000
+
+    Bug 413158 – Cursor trails
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413158 – Cursor trails
+    
+       * src/vte.c  (_vte_invalidate_cell):
+               _vte_invalidate_cell() can be called to invalidate any visible
+               cell so issue the invalidate even for blank cells.
+    
+    
+    svn path=/trunk/; revision=1781
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   35 +++++++++++++++--------------------
+ 2 files changed, 23 insertions(+), 20 deletions(-)
+
+commit a3f967250fac3613f6ef18a85e87a07bd07f3121
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 17:35:44 2007 +0000
+
+    Correct the OBO in the number of columns ensured.
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c  (_vte_terminal_insert_char):
+               Correct the OBO in the number of columns ensured.
+    
+    
+    svn path=/trunk/; revision=1780
+
+ ChangeLog |    5 +++++
+ src/vte.c |    3 ++-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 01f898dad853ad62e86026569391990727160faf
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Wed Feb 28 16:56:17 2007 +0000
+
+    Updated Arabic Translation by Djihed Afifi.
+    
+    svn path=/trunk/; revision=1779
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   45 +++++++++++++++++++++++++++------------------
+ 2 files changed, 31 insertions(+), 18 deletions(-)
+
+commit a8d2ecb1ce63d9504382343053c45a620ae9ccef
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 15:38:29 2007 +0000
+
+    Bug 413078 – Crash during opening a new tab whilst scrolling
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 413078 – Crash during opening a new tab whilst scrolling
+    
+       During input processing it was possible to both remove the timeout and
+       then add a new one. The currently running timeout would believe that
+       it was to continue since the terminal was still active, and so *two*
+       timeouts would be scheduled. Occasionally the second timeout would be
+       called after the first had finished all the work, resulting in the
+       second timeout trying to access a NULL active_terminal list.
+    
+       * src/vte.c  (add_update_timeout), (remove_from_active_list),
+       (vte_terminal_add_process_timeout), (need_processing),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               Watch for recursive g_source_remove() from within timeouts.
+    
+    
+    svn path=/trunk/; revision=1778
+
+ ChangeLog |   16 ++++++++++++++++
+ src/vte.c |   44 ++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 52 insertions(+), 8 deletions(-)
+
+commit 884d186a7cbe1a5488ade41a4c7e76753a5be2a2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 13:03:38 2007 +0000
+
+    Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+       Submitting long glyph runs was causing a dramatic (10x) slow down
+       in the fglrx xserver.
+    
+       * src/vtedraw.h
+       * src/vtexft.c  (_vte_xft_draw_text):
+               Cap the max glyph run length to 300.
+    
+    
+    svn path=/trunk/; revision=1777
+
+ ChangeLog     |   11 +++++++++++
+ src/vtedraw.h |    2 +-
+ src/vtexft.c  |   12 ++++++++++--
+ 3 files changed, 22 insertions(+), 3 deletions(-)
+
+commit 7e29eee18ece4f89be83258cc55601292a431979
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 28 10:18:32 2007 +0000
+
+    Bug 412717 – Crash when opening a new tab with window maximized
+    
+    2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 412717 – Crash when opening a new tab with window maximized
+    
+       * src/vte.c  (vte_terminal_size_allocate):
+               We didn't carefully check the values we were clamping the
+               cursor to and ended up setting it to -1...  Don't do that!
+    
+    
+    svn path=/trunk/; revision=1776
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    3 ++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 08d31f14023b9e7b7ca6ff66ce41dfe39199c952
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 27 19:06:02 2007 +0000
+
+    Consistently guard against the snapshot being NULL.
+    
+    2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteaccess.c  (vte_terminal_accessible_text_scrolled):
+               Consistently guard against the snapshot being NULL.
+    
+    
+    svn path=/trunk/; revision=1775
+
+ ChangeLog       |    5 ++++
+ src/vteaccess.c |   70 +++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 45 insertions(+), 30 deletions(-)
+
+commit 68ceaca8f594e7379df45940114a4f65d13a21ce
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 27 18:30:29 2007 +0000
+
+    Released vte-0.15.5.
+    
+    2007-02-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.5.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.5.
+    
+            * src/Makefile.am: Bumped libtool version to 11:2:2.
+    
+    
+    svn path=/trunk/; revision=1773
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   10 ++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 22 insertions(+), 2 deletions(-)
+
+commit cd85f3fe8680c7ac98366ef015b6ea89e0c00324
+Author: Gintautas Miliauskas <gintas akl lt>
+Date:   Tue Feb 27 14:51:04 2007 +0000
+
+    Updated Lithuanian translation.
+    
+    2007-02-27  Gintautas Miliauskas  <gintas akl lt>
+    
+       * lt.po: Updated Lithuanian translation.
+    
+    
+    svn path=/trunk/; revision=1772
+
+ po/ChangeLog |    4 +++
+ po/lt.po     |   63 +++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 40 insertions(+), 27 deletions(-)
+
+commit f4b6dcc5ebc85b0f8db6d3a3833420507cce34f7
+Author: Priit Laes <plaes svn gnome org>
+Date:   Tue Feb 27 13:41:01 2007 +0000
+
+    Updated Estonian translation by Ivar Smolin <okul linux ee>.
+    
+    2007-02-27  Priit Laes  <plaes svn gnome org>
+    
+       * et.po: Updated Estonian translation by Ivar Smolin <okul linux ee>.
+    
+    svn path=/trunk/; revision=1771
+
+ po/ChangeLog |    4 ++++
+ po/et.po     |   41 +++++++++++++++++++++++------------------
+ 2 files changed, 27 insertions(+), 18 deletions(-)
+
+commit 88bdbffc45efcff6d612fb40e4a382c16a16c822
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Tue Feb 27 12:16:37 2007 +0000
+
+    minor whitespace
+    
+    svn path=/trunk/; revision=1770
+
+ src/vte.c |   16 +++++++++-------
+ 1 files changed, 9 insertions(+), 7 deletions(-)
+
+commit 9eccc6f8fae64b5bd28d8de26272b47f6d85a786
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 27 11:49:56 2007 +0000
+
+    Bug 412562 – Crash in vte_terminal_match_hilite_update
+    
+    2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 412562 – Crash in vte_terminal_match_hilite_update
+    
+       * src/vte.c  (vte_terminal_match_check_internal),
+       (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
+       (vte_terminal_paste_cb), (vte_terminal_match_hilite_update),
+       (vte_terminal_copy_cb):
+               Fixup a few 64bit-isms, notably format strings and an
+               undesired unsigned integer promotion causing this crash.
+    
+    
+    svn path=/trunk/; revision=1769
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   59 ++++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 47 insertions(+), 23 deletions(-)
+
+commit 3886ecd4854f2c55c861e0a2e1e6da95c2fb6bf7
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Tue Feb 27 10:42:57 2007 +0000
+
+    whitespace between ChangeLog entries
+    
+    svn path=/trunk/; revision=1768
+
+ ChangeLog |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 226bb59731c29dd2e08c20f54d64db9e97d3549b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 27 10:42:27 2007 +0000
+
+    Bug 410986 – Fails to build with -z defs
+    
+    2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410986 – Fails to build with -z defs
+    
+       If you link the vtemodule.so to libpython, then programs importing
+       vte will have the symbols twice in memory: one set from python and
+       the other from libpython.
+    
+       * configure.in:
+       * python/Makefile.am:
+               Remove PYTHON_LIBS from linking vtemodule.so.
+               Convert unresolved symbol errors into warnings so that
+               building with -Wl,-z,defs continues to work. This is a
+               *hack* as it hides real errors if you are updating
+               vte.{def,override}.
+    
+    
+    svn path=/trunk/; revision=1767
+
+ ChangeLog          |   17 +++++++++++++++++
+ configure.in       |   23 +++++++++++++++++++++++
+ python/Makefile.am |    6 +++++-
+ 3 files changed, 45 insertions(+), 1 deletions(-)
+
+commit 854cc5c5038cdabf73e8898a5c0b25364b01a03a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 27 00:55:44 2007 +0000
+
+    Avoid some computations whilst drawing text.
+    
+    2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtexft.c  (_vte_xft_open_font_for_char),
+       (_vte_xft_font_for_char), (_vte_xft_compute_char_width),
+       (_vte_xft_char_width), (_vte_xft_start), (_vte_xft_get_char_width),
+       (_vte_xft_draw_text):
+               Avoid some computations whilst drawing text.
+    
+    
+    svn path=/trunk/; revision=1766
+
+ ChangeLog    |    8 +++
+ src/vtexft.c |  148 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 90 insertions(+), 66 deletions(-)
+
+commit 106d4ffedb96b12ebd7fee050796c858773d0669
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Feb 26 21:54:32 2007 +0000
+
+    Released vte-0.15.4.
+    
+    2007-02-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.4.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.4.
+    
+            * src/Makefile.am: Bumped libtool version to 11:1:2.
+    
+    
+    svn path=/trunk/; revision=1764
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   28 ++++++++++++++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 40 insertions(+), 2 deletions(-)
+
+commit 7da79f11f4a591986bba428bbb00bb427c7a41ad
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 21:34:01 2007 +0000
+
+    Bug 410986 – Fails to build with -z defs
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410986 – Fails to build with -z defs
+    
+       The forgotten half - the python module also fails to link.
+    
+       * acinclude.m4:
+       * python/Makefile.am:
+               Add PYTHON_LIBS pointing to the customary location and
+               remember to include them when compiling vtemodule.so.
+    
+    
+    svn path=/trunk/; revision=1763
+
+ ChangeLog          |   11 +++++++++++
+ acinclude.m4       |    2 ++
+ python/Makefile.am |    2 +-
+ 3 files changed, 14 insertions(+), 1 deletions(-)
+
+commit 47c6e35de305edaf30cc0544641da9bea87c0779
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Feb 26 20:13:37 2007 +0000
+
+    kill the debugging g_print
+    
+    svn path=/trunk/; revision=1762
+
+ src/vte.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit bafc83787b47085e4a569c5d50de63a17ca04e05
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Feb 26 19:48:55 2007 +0000
+
+    fixup a missing colon in the ChangeLog entry
+    
+    svn path=/trunk/; revision=1761
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9d6668fe9b2e11fe74253fda36d292aa9a6694d2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 19:45:23 2007 +0000
+
+    Bug 412361 – Yet another mouse selection regression... Part 2.
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 412361 – Yet another mouse selection regression...
+       Part 2.
+    
+       * src/vte.c: (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_scroll_pages), (vte_terminal_autoscroll),
+       (vte_terminal_size_allocate), (vte_terminal_scroll):
+               We implicitly used a bit of sanity checking when setting the
+               adjustment value. Ensure the value really is within the
+               adjustment range before updating scroll_delta.
+    
+    
+    svn path=/trunk/; revision=1760
+
+ ChangeLog |   13 +++++++++++++
+ src/vte.c |   24 ++++++++++++++----------
+ 2 files changed, 27 insertions(+), 10 deletions(-)
+
+commit e793408175ebf9b511eaa24140e4e0117506262a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 19:24:09 2007 +0000
+
+    Bug 412361 – Yet another mouse selection regression... Part 1.
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 412361 – Yet another mouse selection regression...
+       Part 1.
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+               Restore drawing of the selection below the text.
+    
+    
+    svn path=/trunk/; revision=1759
+
+ ChangeLog |    8 +++
+ src/vte.c |  144 ++++++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 94 insertions(+), 58 deletions(-)
+
+commit b0a2454d9bebb581a7278c9ae3cf5196a66aa89e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 18:05:53 2007 +0000
+
+    Update max number of processable bytes each time we call
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_class_init), (time_process_incoming),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               Update max number of processable bytes each time we call
+               vte_terminal_process_incoming().
+    
+    
+    svn path=/trunk/; revision=1758
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   44 ++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 41 insertions(+), 10 deletions(-)
+
+commit 8986971552ec8217dc79c441f5158886603fc78f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 17:38:24 2007 +0000
+
+    Refactor the common code.
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (_vte_terminal_adjust_adjustments_full),
+               Refactor the common code.
+    
+    
+    svn path=/trunk/; revision=1757
+
+ ChangeLog |    6 +++++
+ src/vte.c |   63 +++++++-----------------------------------------------------
+ 2 files changed, 14 insertions(+), 55 deletions(-)
+
+commit 80adf34e589f0b98c685207b1d02bc57cd09fdde
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 17:27:40 2007 +0000
+
+    Push a couple of NULL checks to the callers so to be able to move them
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Push a couple of NULL checks to the callers so to be able to move them
+       outside of the inner-most loops.
+    
+       * src/vte.c: (_vte_row_data_find_charcell), (_vte_invalidate_cell),
+       (_vte_terminal_adjust_adjustments),
+       (vte_terminal_get_text_range_maybe_wrapped), (find_start_column),
+       (find_end_column), (vte_terminal_draw_rows):
+    
+    
+    svn path=/trunk/; revision=1756
+
+ ChangeLog |   10 +++
+ src/vte.c |  258 ++++++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 154 insertions(+), 114 deletions(-)
+
+commit 9913d51385075992e753b358276611051b56fd1c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 15:47:35 2007 +0000
+
+    Some applications, such as cat, dump as much data to the terminal as
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Some applications, such as cat, dump as much data to the terminal as
+       possible. In these scenarios it is likely that we will read data from
+       the child much faster than we can process it and the refresh will
+       stutter.
+    
+       The ideal solution would be to speed up the data processing so that
+       this overrun was impossible. However, the approach taken here is to
+       estimate how much data we can actually process in our time slice and
+       to stop reading once we have sufficient data.
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_all),
+       (vte_terminal_emit_contents_changed),
+       (vte_terminal_match_contents_clear),
+       (vte_terminal_match_contents_refresh),
+       (vte_terminal_emit_adjustment_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (vte_terminal_io_read),
+       (vte_terminal_handle_scroll), (vte_terminal_init),
+       (vte_terminal_size_allocate), (need_processing), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+    
+    
+    svn path=/trunk/; revision=1755
+
+ ChangeLog         |   26 ++++++++
+ src/vte-private.h |    4 +-
+ src/vte.c         |  184 +++++++++++++++++++++++++++--------------------------
+ src/vteseq.c      |    1 -
+ 4 files changed, 124 insertions(+), 91 deletions(-)
+
+commit 4a97568d88997a1b1046de05277d58f7a239c267
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 10:25:09 2007 +0000
+
+    Bug 411000 – Orca repeats old text in gnome-terminal
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 411000 – Orca repeats old text in gnome-terminal
+    
+       The deferred handling of the window scrolling had the unfortunate
+       side-effect of postponing the accessibility 'text-scrolled' signal
+       until after the 'text-inserted' signal. This caused vteaccess to
+       determine that the whole window had been modified and cause orca to
+       reread the entire screen.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_contents_changed),
+       (_vte_terminal_queue_contents_changed),
+       (vte_terminal_emit_cursor_moved),
+       (vte_terminal_queue_cursor_moved), (vte_terminal_scroll_pages),
+       (vte_terminal_eof), (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_process_incoming), (vte_terminal_handle_scroll),
+       (vte_terminal_size_allocate), (vte_terminal_unrealize),
+       (vte_terminal_emit_pending_signals):
+       * src/vteaccess.c: (emit_text_caret_moved),
+       (emit_text_changed_insert), (emit_text_changed_delete):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Restore the order of the ally signals. However, Bug 372777
+               remains unresolved.
+    
+    
+    svn path=/trunk/; revision=1754
+
+ ChangeLog         |   25 +++++++++++++++++++
+ src/vte-private.h |    5 +++-
+ src/vte.c         |   67 ++++++++++++++++++++++++++++++++++++++---------------
+ src/vteaccess.c   |    6 ++--
+ src/vteseq.c      |    2 +-
+ 5 files changed, 81 insertions(+), 24 deletions(-)
+
+commit 550b55875ea57b63d1164a1120decb55f55333a6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 09:29:27 2007 +0000
+
+    Eeek, correctly compute the buffer length when we no longer aim to fill
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_io_read):
+               Eeek, correctly compute the buffer length when we no longer
+               aim to fill it.
+    
+    
+    svn path=/trunk/; revision=1753
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 95a70342cef9cdf261c2c1a6688615a7c5af561f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 09:27:41 2007 +0000
+
+    Use a separate debug flag for the ally interface.
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use a separate debug flag for the ally interface.
+    
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vteaccess.c:
+       (vte_terminal_accessible_update_private_data_if_needed),
+       (vte_terminal_accessible_invalidate_cursor),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere),
+       (vte_terminal_accessible_text_init),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_action_init),
+       (vte_terminal_accessible_factory_new):
+    
+    
+    svn path=/trunk/; revision=1752
+
+ ChangeLog       |   17 +++++++++++++++++
+ src/debug.c     |    3 +++
+ src/debug.h     |    3 ++-
+ src/vteaccess.c |   34 +++++++++++++++++-----------------
+ 4 files changed, 39 insertions(+), 18 deletions(-)
+
+commit 5e6ab181a9942335f2633ef375cd91b25120de1c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 26 08:59:01 2007 +0000
+
+    And finally clamp the maximum number of bytes transferred in a single
+    
+    2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+               And finally clamp the maximum number of bytes transferred in
+               a single chunk.
+    
+    
+    svn path=/trunk/; revision=1751
+
+ ChangeLog         |    7 +++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |    1 +
+ 3 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 0ad8279def2a2e6fb3f0b9bf35c39ce82652c64b
+Author: Alexander Shopov <ash contact bg>
+Date:   Sun Feb 25 21:50:08 2007 +0000
+
+    Updated Bulgarian translation by Alexander Shopov <ash contact bg>
+    
+    2007-02-25  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Alexander Shopov <ash contact bg>
+    
+    svn path=/trunk/; revision=1750
+
+ po/ChangeLog |    5 +++++
+ po/bg.po     |   30 ++++++++++++++++++------------
+ 2 files changed, 23 insertions(+), 12 deletions(-)
+
+commit 6f3a9d33bf79932c6de677dd55cc31d797a6579a
+Author: Stéphane Raimbault <stephane raimbault gmail com>
+Date:   Sun Feb 25 20:47:55 2007 +0000
+
+    Updated French translation by Cyprien Le Pannérer.
+    
+    2007-02-25  Stéphane Raimbault  <stephane raimbault gmail com>
+    
+       * fr.po: Updated French translation by Cyprien Le Pannérer.
+    
+    svn path=/trunk/; revision=1749
+
+ po/ChangeLog |    4 ++++
+ po/fr.po     |   43 +++++++++++++++++++++++++------------------
+ 2 files changed, 29 insertions(+), 18 deletions(-)
+
+commit 5cb72496620962980489e80e556aa90a905b589d
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Sun Feb 25 17:15:03 2007 +0000
+
+    Updated Portuguese translation.
+    
+    2007-02-25  Duarte Loreto <happyguy_pt hotmail com>
+    
+       * pt.po: Updated Portuguese translation.
+    
+    svn path=/trunk/; revision=1748
+
+ po/ChangeLog |    4 ++++
+ po/pt.po     |   41 +++++++++++++++++++++++------------------
+ 2 files changed, 27 insertions(+), 18 deletions(-)
+
+commit 17b63654ece9e244f8877e98d89a60861f35d642
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Sun Feb 25 09:07:22 2007 +0000
+
+    Translation updated.
+    
+    2007-02-25  Gabor Kelemen  <kelemeng gnome hu>
+    
+       * hu.po: Translation updated.
+    
+    svn path=/trunk/; revision=1747
+
+ po/ChangeLog |    4 +++
+ po/hu.po     |   71 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 40 insertions(+), 35 deletions(-)
+
+commit 1583ce2933361d116c82901726ce962381a54c30
+Author: Changwoo Ryu <cwryu debian org>
+Date:   Sat Feb 24 21:52:29 2007 +0000
+
+    Updated Korean translation.
+    
+    2007-02-25  Changwoo Ryu  <cwryu debian org>
+    
+       * ko.po: Updated Korean translation.
+    
+    svn path=/trunk/; revision=1746
+
+ po/ChangeLog |    4 ++
+ po/ko.po     |  119 ++++++++++++++++++++++++---------------------------------
+ 2 files changed, 54 insertions(+), 69 deletions(-)
+
+commit 6096fbe69262516c4b1cfd8abdb40f6be7bf3fc9
+Author: Nguyen Thai Ngoc Duy <pclouds src gnome org>
+Date:   Sat Feb 24 11:38:58 2007 +0000
+
+    Updated vi.po
+    
+    svn path=/trunk/; revision=1745
+
+ po/ChangeLog |    4 +++
+ po/vi.po     |   68 +++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 43 insertions(+), 29 deletions(-)
+
+commit 387064eef67af0e4c84666b7eb892db1626a3b5a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Feb 24 11:29:59 2007 +0000
+
+    Hint that the compiler should inline vte_terminal_determine_colors().
+    
+    2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c:
+               Hint that the compiler should inline
+               vte_terminal_determine_colors().
+    
+    
+    svn path=/trunk/; revision=1744
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 00f2d286a7795004a8591742eab788f1ad424cec
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Feb 24 11:09:49 2007 +0000
+
+    cf Bug 410534 – Slow content scrolling, takes 100% of CPU. cf Bug 410463
+    
+    2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
+       cf Bug 410463 – Poor interactive performance with multiple terminals
+    
+       * src/vte.c: (vte_terminal_io_read):
+               Do not loop whilst reading in a backlog of child data - should
+               help prevent monopolisation of vte by a single child and make
+               vte more responsive to user input on slower computers.
+    
+    
+    svn path=/trunk/; revision=1743
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   43 +++++++++++++++----------------------------
+ 2 files changed, 25 insertions(+), 28 deletions(-)
+
+commit 414043d45fc2b51430557c4ac575651468ff9500
+Author: Leonardo Ferreira Fontenelle <leonardof svn gnome org>
+Date:   Sat Feb 24 03:28:10 2007 +0000
+
+    Updated Brazilian Portuguese translation by Lucas Mazzardo Veloso
+    
+    2007-02-24  Leonardo Ferreira Fontenelle  <leonardof svn gnome org>
+    
+       * pt_BR.po: Updated Brazilian Portuguese translation by Lucas Mazzardo
+       Veloso <lmveloso gmail com>.
+    
+    svn path=/trunk/; revision=1742
+
+ po/ChangeLog |    5 +++++
+ po/pt_BR.po  |   41 ++++++++++++++++++++++++-----------------
+ 2 files changed, 29 insertions(+), 17 deletions(-)
+
+commit 704c26231fd3d03f396a3b6c2997605d251384ae
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sat Feb 24 00:43:43 2007 +0000
+
+    missed the scroll_delta on the external conversion
+    
+    svn path=/trunk/; revision=1741
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit fabc7a725dbca8be89edcc490c65f8060ab31d69
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sat Feb 24 00:40:13 2007 +0000
+
+    whoops, that was meant to test show_match before rendering the hilite
+    
+    svn path=/trunk/; revision=1740
+
+ src/vte.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 3d2d95f14d68ca6f9fd00512bd240165d7a5ffd3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Feb 24 00:31:29 2007 +0000
+
+    Bug 159078 – slow highlight
+    
+    2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 159078 – slow highlight
+    
+       Do not update the match hilite during a selection-drag.
+       Record unsuccesful regex matches, so we can quickly determine whether
+       the cursor is still inside the blank region.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_match_check_internal),
+       (rowcol_inside_match), (vte_terminal_match_check),
+       (_vte_terminal_set_pointer_visible),
+       (vte_terminal_match_hilite_clear),
+       (vte_terminal_match_hilite_show), (vte_terminal_match_hilite_hide),
+       (vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
+       (vte_terminal_motion_notify), (vte_terminal_button_press),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_enter), (vte_terminal_leave), (vte_terminal_init),
+       (vte_terminal_unrealize), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+    
+    
+    svn path=/trunk/; revision=1739
+
+ ChangeLog         |   21 ++++++
+ src/vte-private.h |    4 +-
+ src/vte.c         |  208 +++++++++++++++++++++++++++++++++++++++++------------
+ src/vtexft.c      |    7 +-
+ 4 files changed, 189 insertions(+), 51 deletions(-)
+
+commit 5e833e3796c867152ab1345e16d06e4c35d5d3fa
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 21:14:55 2007 +0000
+
+    A couple of compiler warnings and avoid unnecessary arithmetic.
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       A couple of compiler warnings and avoid unnecessary arithmetic.
+    
+       * src/vte.c: (_vte_terminal_set_default_attributes),
+       (find_start_column), (find_end_column),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_for_char),
+       (_vte_xft_char_width), (_vte_xft_unlock_fonts), (_vte_xft_start),
+       (_vte_xft_clip), (_vte_xft_set_text_font), (_vte_xft_draw_text):
+    
+    
+    svn path=/trunk/; revision=1738
+
+ ChangeLog    |   12 ++++++++++++
+ src/vte.c    |   52 +++++++++++++++++++++++++---------------------------
+ src/vtexft.c |   46 +++++++++++++++++++---------------------------
+ 3 files changed, 56 insertions(+), 54 deletions(-)
+
+commit 2914a06ebea030f7cc87e01ab4cb3c4f397ed976
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Fri Feb 23 21:01:56 2007 +0000
+
+    Updated Norwegian bokmål translation.
+    
+    2007-02-23  Kjartan Maraas  <kmaraas gnome org>
+    
+       * nb.po: Updated Norwegian bokmål translation.
+    
+    svn path=/trunk/; revision=1737
+
+ po/ChangeLog |    4 +++
+ po/nb.po     |   64 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 39 insertions(+), 29 deletions(-)
+
+commit f163b4389d4e9a01b1aa41c356c40d9b624dbce9
+Author: Andre Klapper <a9016009 gmx de>
+Date:   Fri Feb 23 20:06:54 2007 +0000
+
+    Updated German translation.
+    
+    2007-02-23  Andre Klapper  <a9016009 gmx de>
+    
+       * de.po: Updated German translation.
+    
+    
+    svn path=/trunk/; revision=1736
+
+ po/ChangeLog |    4 ++++
+ po/de.po     |   36 +++++++++++++++++++++---------------
+ 2 files changed, 25 insertions(+), 15 deletions(-)
+
+commit 26deb3f942b4916864f8ba81397c5c0456d93e6a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 19:00:29 2007 +0000
+
+    Bug 411276 – SVN trunk compilation error Part 2.
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 411276 – SVN trunk compilation error
+       Part 2.
+    
+       * configure.in:
+               Check that the header file defines FcStrFree before checking
+               for the availability of the function. Complete hack, but
+               appears to work.
+    
+    
+    svn path=/trunk/; revision=1735
+
+ ChangeLog    |   10 ++++++++++
+ configure.in |   10 +++++++++-
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 39eb40adc143e140be920ba39777780bb06daf1f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 18:15:29 2007 +0000
+
+    Bug 411276 – SVN trunk compilation error
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 411276 – SVN trunk compilation error
+    
+       * configure.in:
+               Ubuntu Edgy appears to have a broken fontconfig-dev package
+               where the function is exported from the library but is missing
+               the corresponding prototypes.
+               So we reorder the determination of the compilation flags
+               before checking for available functions in the hope that the
+               tests will then match the results at compile time.
+    
+    
+    svn path=/trunk/; revision=1734
+
+ ChangeLog    |   12 ++++
+ configure.in |  192 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 110 insertions(+), 94 deletions(-)
+
+commit 728c62c88fd6475ba02f07a36672a26431d1eda0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 16:10:30 2007 +0000
+
+    Prevent a deadlock on recursively grabbing the gdk_mutex.
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_io_read):
+               Prevent a deadlock on recursively grabbing the gdk_mutex.
+    
+    
+    svn path=/trunk/; revision=1733
+
+ ChangeLog |    5 +++++
+ src/vte.c |   11 ++++++++---
+ 2 files changed, 13 insertions(+), 3 deletions(-)
+
+commit 0e510fe7354ac3987f0c0b10521768063eb40560
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Feb 23 16:02:29 2007 +0000
+
+    only set in the input active flag if we actually read in data
+    
+    svn path=/trunk/; revision=1732
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 7d683f4c600ab76f90899dde4e5e49307931e182
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Feb 23 15:51:25 2007 +0000
+
+    missing cancellations from previous patch
+    
+    svn path=/trunk/; revision=1731
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 3bad172349963d030ffcacca90585fb9b3b93bcd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 15:49:23 2007 +0000
+
+    Heuristic to avoid a read when it's likely to just return EAGAIN.
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Heuristic to avoid a read when it's likely to just return EAGAIN.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+    
+    
+    svn path=/trunk/; revision=1730
+
+ ChangeLog         |    8 ++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   23 +++++++++++++++++------
+ 3 files changed, 26 insertions(+), 6 deletions(-)
+
+commit 713bb7322e8e012deccabe331b21a5b9a60864ba
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 13:21:02 2007 +0000
+
+    Add a new debug flag to monitor draw operations. Don't issue individual
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Add a new debug flag to monitor draw operations.
+       Don't issue individual glyphs for is_local_graphic() in the middle of
+       a run.
+    
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte.c: (vte_terminal_unichar_is_local_graphic),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+       * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
+       (_vte_draw_new), (_vte_draw_free), (_vte_draw_get_visual),
+       (_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
+       (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+       (_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
+       (_vte_draw_set_text_font), (_vte_draw_get_text_width),
+       (_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
+       (_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
+       (_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
+       (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
+       (_vte_draw_set_scroll):
+       * src/vtedraw.h:
+       * src/vteft2.c: (_vte_ft2_draw_has_char):
+       * src/vtegl.c: (_vte_gl_draw_has_char):
+       * src/vtepango.c: (_vte_pango_draw_has_char):
+       * src/vtepangox.c: (_vte_pango_x_draw_has_char):
+       * src/vteskel.c: (_vte_skel_draw_has_char):
+       * src/vtexft.c: (_vte_xft_draw_has_char):
+    
+    
+    svn path=/trunk/; revision=1729
+
+ ChangeLog       |   29 +++++++
+ src/debug.c     |    3 +
+ src/debug.h     |    3 +-
+ src/vte.c       |   46 ++++++----
+ src/vtedraw.c   |  252 ++++++++++++++++++++++++++++++++-----------------------
+ src/vtedraw.h   |    2 +
+ src/vteft2.c    |   16 ++++
+ src/vtegl.c     |   16 ++++
+ src/vtepango.c  |    7 ++
+ src/vtepangox.c |    8 ++
+ src/vteskel.c   |    7 ++
+ src/vtexft.c    |   16 ++++
+ 12 files changed, 281 insertions(+), 124 deletions(-)
+
+commit 2b0e46223ad2952192f3aa7d2e18b0f636f843f4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 12:24:55 2007 +0000
+
+    Don't break a glyph run for a graphic, issue the draw and continue.
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't break a glyph run for a graphic, issue the draw
+               and continue.
+    
+    
+    svn path=/trunk/; revision=1728
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   20 ++++++++++++++++----
+ 2 files changed, 22 insertions(+), 4 deletions(-)
+
+commit 7e2654510c7fe848162021a698ddba2b90cf7d59
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 11:23:55 2007 +0000
+
+    Cache the font metrics on the vte_xft_font, avoids having to remeasure
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Cache the font metrics on the vte_xft_font, avoids having to remeasure
+       when opening a new terminal.
+    
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_set_text_font):
+    
+    
+    svn path=/trunk/; revision=1727
+
+ ChangeLog    |    7 ++
+ src/vtexft.c |  173 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 102 insertions(+), 78 deletions(-)
+
+commit 4074098e6fc909d6ae0dfe027303ac9887a10809
+Author: Daniel Nylander <dnylande src gnome org>
+Date:   Fri Feb 23 11:07:48 2007 +0000
+
+    sv.po: Swedish translation updated
+    
+    svn path=/trunk/; revision=1726
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   48 ++++++++++++++++++++++++++----------------------
+ 2 files changed, 30 insertions(+), 22 deletions(-)
+
+commit f8a9f3061c250df61eca14dae46f82417dc42974
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Feb 23 10:38:25 2007 +0000
+
+    Gtk+ style whitespace.
+    
+    
+    svn path=/trunk/; revision=1725
+
+ src/vtexft.c |  277 +++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 138 insertions(+), 139 deletions(-)
+
+commit 94d80e84a70f7a995d87cc0655a2a0bdb68a192e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 23 10:31:41 2007 +0000
+
+    Share XftFonts between terminal backends and preserve faces from the
+    
+    2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+    
+       Share XftFonts between terminal backends and preserve faces from the
+       previous draw - helps prevents font cache thrashing inside libXft.
+    
+       * src/vtexft.c: (_vte_xft_font_hash), (_vte_xft_font_equal),
+       (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_unlock_fonts),
+       (_vte_xft_destroy), (_vte_xft_start), (_vte_xft_end),
+       (ptr_array_zeroed_new), (_vte_xft_set_text_font),
+       (_vte_xft_get_char_width), (_vte_xft_draw_text),
+       (_vte_xft_draw_char):
+    
+    
+    svn path=/trunk/; revision=1724
+
+ ChangeLog    |   13 ++++
+ src/vte.c    |    4 +-
+ src/vtexft.c |  218 +++++++++++++++++++++++++++++++++++++++++----------------
+ 3 files changed, 172 insertions(+), 63 deletions(-)
+
+commit 64f20a84331a2041cabc124e5872a75fd91cd31b
+Author: Theppitak Karoonboonyanan <tkaroonb src gnome org>
+Date:   Fri Feb 23 06:15:19 2007 +0000
+
+    Updated Thai translation.
+    
+       * th.po: Updated Thai translation.
+    
+    
+    svn path=/trunk/; revision=1723
+
+ po/ChangeLog |    4 ++++
+ po/th.po     |   44 ++++++++++++++++++++++++--------------------
+ 2 files changed, 28 insertions(+), 20 deletions(-)
+
+commit 501e4ac85ce7448a56e7f2fa0c6215d0e5dfef26
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 22 21:52:28 2007 +0000
+
+    Bug 410986 – Fails to build with -z defs Patch by Loïc Minier.
+    
+    2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410986 – Fails to build with -z defs
+       Patch by Loïc Minier.
+    
+       * src/Makefile.am:
+               Add FreeType to the libs.
+    
+    
+    svn path=/trunk/; revision=1722
+
+ ChangeLog       |    8 ++++++++
+ src/Makefile.am |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 8857022e7d29a2bb02f589ed0077705927f8c7b3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 22 17:49:44 2007 +0000
+
+    Return in the face of error as we appear to hit this in the wild.
+    
+    2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_send):
+               Return in the face of error as we appear to hit this in the
+               wild.
+    
+    
+    svn path=/trunk/; revision=1721
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 ++++++----
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+commit 307a95c978f9ad6c8b29deecd27c54ce36609950
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Thu Feb 22 17:29:19 2007 +0000
+
+    ChangeLog typos
+    
+    svn path=/trunk/; revision=1720
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7106d026c5db11543764082606c5447ccde25b9e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 22 17:28:41 2007 +0000
+
+    Bug 410819 – slider not correctly positioned after calling less
+    
+    2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410819 – slider not correctly positioned after calling less
+    
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_maybe_scroll_to_top), (vte_terminal_size_allocate),
+       (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Fixup a lost of issues with changing the number of scroll back
+               lines, such as missing value_changed signals for the
+               scrollbar and a couple of missing CLAMPs.
+    
+    
+    svn path=/trunk/; revision=1719
+
+ ChangeLog    |   13 ++++++++++
+ src/vte.c    |   74 +++++++++++++++++++++++++++++++++++----------------------
+ src/vteseq.c |    3 ++
+ 3 files changed, 61 insertions(+), 29 deletions(-)
+
+commit fd3ffb8989d073db4079921fa6cac91d505d30e8
+Author: Alexander Shopov <ash contact bg>
+Date:   Thu Feb 22 06:18:08 2007 +0000
+
+    Updated Bulgarian translation by Alexander Shopov <ash contact bg>
+    
+    2007-02-22  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Alexander Shopov <ash contact bg>
+    
+    svn path=/trunk/; revision=1718
+
+ po/ChangeLog |    5 +++
+ po/bg.po     |   81 ++++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 47 insertions(+), 39 deletions(-)
+
+commit 66fc0365dadffa77c032ab6185eb672af30eba31
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 22 01:08:32 2007 +0000
+
+    After adjusting the current profile, the last line gets chomped.
+    
+    2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+    
+       After adjusting the current profile, the last line gets chomped.
+    
+       * src/vte.c: (vte_terminal_set_scrollback_lines):
+    
+    
+    svn path=/trunk/; revision=1717
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 +++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 7b160c1c82642f889cdfc72b4ba20cbc6f9af475
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 21 23:30:39 2007 +0000
+
+    cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+    2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
+    
+       * src/vte.c: (vte_terminal_scroll),
+       (vte_terminal_set_scrollback_lines):
+               Operate on scroll delta directly as adjustment->value updates
+               are not instantaneous and we may have several scroll events
+               before the next update.
+    
+    
+    svn path=/trunk/; revision=1716
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   22 ++++++++++------------
+ 2 files changed, 20 insertions(+), 12 deletions(-)
+
+commit 807b83906e19ecb22e17107e1bbc8a8e5567ce9c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 21 23:06:30 2007 +0000
+
+    Bug 410463 – Poor interactive performance with multiple terminals
+    
+    2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 410463 – Poor interactive performance with multiple terminals
+    
+       * src/vte.c: (vte_terminal_io_read), (process_timeout),
+       (update_repeat_timeout):
+               When multiple terminals are active, poll the IO sources
+               from within the process/display timeout (akin to
+               interrupt mitigation).
+               Return to normal interrupts when we only have a single active
+               terminal - so we don't sacrifice high performance.
+    
+    
+    svn path=/trunk/; revision=1715
+
+ ChangeLog |   12 ++++++++++++
+ src/vte.c |   20 +++++++++++++++++++-
+ 2 files changed, 31 insertions(+), 1 deletions(-)
+
+commit f56d6009a642389ccc6c544dada62d5e6f878770
+Author: Peter Bach <pbach src gnome org>
+Date:   Wed Feb 21 21:10:15 2007 +0000
+
+    Updated Danish translation
+    
+    svn path=/trunk/; revision=1714
+
+ po/ChangeLog |    4 +++
+ po/da.po     |   78 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 47 insertions(+), 35 deletions(-)
+
+commit 80dc9064f403a4db1afd8e93480d5d421726cd45
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 21 18:42:30 2007 +0000
+
+    A small bit of callgrinding, avoid the modulus inside
+    
+    2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       A small bit of callgrinding, avoid the modulus inside
+       vte_terminal_ensure_cursor() by caching the last row_data.
+    
+       * src/iso2022.c: (process_cdata):
+       * src/ring.c: (_vte_ring_new), (_vte_ring_insert),
+       (_vte_ring_insert_preserve), (_vte_ring_remove):
+       * src/ring.h:
+       * src/table.c: (_vte_table_match):
+       * src/vte.c: (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming):
+    
+    
+    svn path=/trunk/; revision=1713
+
+ ChangeLog     |   13 +++++++
+ src/iso2022.c |   11 +++---
+ src/ring.c    |   29 +++++++++++++---
+ src/ring.h    |   10 ++++-
+ src/table.c   |   12 +++---
+ src/vte.c     |  103 ++++++++++++++++++++++++++++++---------------------------
+ 6 files changed, 110 insertions(+), 68 deletions(-)
+
+commit beba8f7b96e83ee43d42cb56b04fa7e59091d029
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Feb 21 17:22:30 2007 +0000
+
+    Trivial little script that counts to a large number.
+    
+    svn path=/trunk/; revision=1712
+
+ perf/inc.sh |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+commit d4b27d3d7d14836972d03f778e16c0e001c51c2d
+Author: Hendrik Richter <hendrikr gnome org>
+Date:   Wed Feb 21 11:33:13 2007 +0000
+
+    Updated German translation.
+    
+    2007-02-21  Hendrik Richter  <hendrikr gnome org>
+    
+       * de.po: Updated German translation.
+    
+    svn path=/trunk/; revision=1711
+
+ po/ChangeLog |    4 +++
+ po/de.po     |   65 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 40 insertions(+), 29 deletions(-)
+
+commit d7d7d2910dad2c095c24b3984a7ebfe3d29c34df
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 21 10:40:37 2007 +0000
+
+    Callgrind strikes again... Inserting a char is a rare operation
+    
+    2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       Callgrind strikes again...
+       Inserting a char is a rare operation (especially in the scrolling
+       benchmark!) so only read the old cell during an insert. This wins
+       about 5% during a hexdump.
+    
+       * src/iso2022.c: (_vte_iso2022_find_nextctl),
+       (_vte_iso2022_fragment_input), (process_cdata):
+       * src/vte.c: (_vte_terminal_insert_char):
+       * src/vteseq.c: (vte_sequence_handler_sf):
+    
+    
+    svn path=/trunk/; revision=1710
+
+ ChangeLog     |   12 ++++++++++
+ src/iso2022.c |   41 +++++++++++++++++------------------
+ src/vte.c     |   66 +++++++++++++++++++--------------------------------------
+ src/vteseq.c  |    2 -
+ 4 files changed, 54 insertions(+), 67 deletions(-)
+
+commit 6406d0b4606be0f84ee78f2b17e2820ca2b29c0e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 21 01:25:30 2007 +0000
+
+    RedHat Bug 113195: First line displayed incorrectly if prompt changes
+    
+    2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+    
+       RedHat Bug 113195: First line displayed incorrectly if prompt changes background color
+    
+       e.g. PS1='\e[46m[\u@\h:\w]\e[m \e[45m'
+       The issue is when we insert a char on a new row and the background is
+       not the default, we fill the entire row with the *current* colour.
+       This behaviour is incorrect, and the fix is to fill to the end of the
+       line on a carriage return.
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming),
+       (vte_terminal_send):
+       * src/vteseq.c: (vte_sequence_handler_ce),
+       (vte_sequence_handler_cr), (vte_sequence_handler_cs),
+       (vte_sequence_handler_cS),
+       (vte_sequence_handler_cursor_lower_left),
+       (vte_sequence_handler_dc), (vte_sequence_handler_ic),
+       (vte_sequence_handler_sf):
+    
+    
+    svn path=/trunk/; revision=1709
+
+ ChangeLog         |   21 +++++++++++
+ src/vte-private.h |    1 -
+ src/vte.c         |  100 ++++++++++++++++------------------------------------
+ src/vteseq.c      |   44 ++++++++++++-----------
+ 4 files changed, 75 insertions(+), 91 deletions(-)
+
+commit 1781474c681a30b60429754dc5595fe1c1f8da22
+Author: Artur Flinta <aflinta cvs gnome org>
+Date:   Tue Feb 20 23:24:51 2007 +0000
+
+    Updated Polish translation by GNOME PL Team.
+    
+    2007-02-21  Artur Flinta  <aflinta cvs gnome org>
+    
+       * pl.po: Updated Polish translation by GNOME PL Team.
+    
+    
+    svn path=/trunk/; revision=1708
+
+ po/ChangeLog |    4 ++++
+ po/pl.po     |   54 ++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 32 insertions(+), 26 deletions(-)
+
+commit 46333c9867ccabd661c8c01b0e806e7adbbe7bd8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 20 23:03:35 2007 +0000
+
+    RedHat Bug 123845: gnome-terminal not parsing cursor position escape
+    
+    2007-02-20  Chris Wilson  <chris chris-wilson co uk>
+    
+        RedHat Bug 123845: gnome-terminal not parsing cursor position escape sequence properly
+    
+       * src/caps.c:
+       * src/vteseq.c: (vte_sequence_handler_cm):
+               Add 'ESC [ Pn H' to cursor-position and provide default
+               values.
+    
+    
+    svn path=/trunk/; revision=1707
+
+ ChangeLog    |    9 +++++++++
+ src/caps.c   |    1 +
+ src/vteseq.c |   21 ++++++++++++---------
+ 3 files changed, 22 insertions(+), 9 deletions(-)
+
+commit 83f80298b69e6a66b82c361025d7785fc4f9a7a9
+Author: Leonardo Ferreira Fontenelle <leonardof svn gnome org>
+Date:   Tue Feb 20 00:55:57 2007 +0000
+
+    Updated Brazilian Portuguese translation.
+    
+    2007-02-19  Leonardo Ferreira Fontenelle  <leonardof svn gnome org>
+    
+       * pt_BR.po: Updated Brazilian Portuguese translation.
+    
+    svn path=/trunk/; revision=1706
+
+ po/ChangeLog |    4 +++
+ po/pt_BR.po  |   80 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 47 insertions(+), 37 deletions(-)
+
+commit 1a1634d2c6792059cf2de9917c77b5fa9efddec0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 20 00:01:28 2007 +0000
+
+    Bug 409055 – Terminal stays blank
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 409055 – Terminal stays blank
+    
+       Due to GTK+ coallescing of XExposeEvents it was possible for our
+       GdkExposeEvent to arrive before the GdkVisibilityEvent associated with
+       the mapping of our toplevel and so we discarded the event as we
+       believed we were still unviewable.
+    
+       * src/vte.c: (_vte_invalidate_cells), (vte_terminal_expose),
+       (reset_update_regions):
+               Assume that all GdkExposeEvents have been checked for
+               suitability before delivery. We know this true for locally
+               generated expose events which are extensively checked during
+               invalidation, and we presume that X will not generate expose
+               events on unmapped or otherwise unviewable windows.
+    
+    
+    svn path=/trunk/; revision=1705
+
+ ChangeLog |   17 +++++++++++++++++
+ src/vte.c |   41 ++++++++++++++++++++---------------------
+ 2 files changed, 37 insertions(+), 21 deletions(-)
+
+commit a1f56b97b89dc1c1cbd177ed6b521d80701f6045
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 21:26:59 2007 +0000
+
+    Dead code elimination.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full):
+               Dead code elimination.
+    
+    
+    svn path=/trunk/; revision=1704
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   18 ------------------
+ 2 files changed, 6 insertions(+), 18 deletions(-)
+
+commit 503597c87626d7dae2cc647b3e6dc5619bf150dd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 20:55:17 2007 +0000
+
+    A simple script to dump a fixed amount of random data to the terminal.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * perf/random.sh:
+               A simple script to dump a fixed amount of random data to the
+               terminal.
+    
+    
+    svn path=/trunk/; revision=1703
+
+ ChangeLog      |    6 ++++++
+ perf/random.sh |    3 +++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 4790d005efd075f8208d870a2cfe83d5bca7276e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 20:22:29 2007 +0000
+
+    A few more trivial incremental improvements.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       A few more trivial incremental improvements.
+    
+       * src/Makefile.am:
+       * src/iso2022.c: (_vte_iso2022_map_get):
+               Switch to a VteTree.
+       * src/vte.c: (_vte_terminal_update_insert_delta),
+       (_vte_terminal_insert_char):
+               No need to ensure the cursor when scrolling, only before
+               insertions.
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_end):
+               Lock the face over the entire expose.
+    
+    
+    svn path=/trunk/; revision=1702
+
+ ChangeLog       |   15 ++++++++++++
+ src/Makefile.am |    6 ++++-
+ src/iso2022.c   |   67 ++++++++++++++++++++++++++++--------------------------
+ src/vte.c       |   20 +++++-----------
+ src/vtexft.c    |   41 +++++++++++++++++++++++++++++++--
+ 5 files changed, 99 insertions(+), 50 deletions(-)
+
+commit 106e6365a71068637ae7b6e0d533f4819ca4bdcc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 17:34:08 2007 +0000
+
+    Improve handling of parallel 'cat /dev/urandom' - notably a crasher in the
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Improve handling of parallel 'cat /dev/urandom' - notably a crasher
+       in the table matcher, repeated g_getenv processing and wasted time
+       in g_tree_lookup.
+    
+       * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
+       (_vte_iso2022_map_init), (_vte_iso2022_map_get),
+       (process_8_bit_sequence), (process_cdata),
+       (_vte_iso2022_process_single), (_vte_iso2022_process):
+       * src/table.c: (_vte_table_match):
+       * src/vte-private.h:
+    
+    
+    svn path=/trunk/; revision=1701
+
+ ChangeLog         |   13 ++++++++
+ src/iso2022.c     |   88 +++++++++++++++++++++++++---------------------------
+ src/table.c       |    8 ++--
+ src/vte-private.h |    4 +-
+ 4 files changed, 61 insertions(+), 52 deletions(-)
+
+commit 92eb97daf593c1d447f1bdb6ac43734b662d10b3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 16:43:06 2007 +0000
+
+    In conjunction with the previous fix, since the terminal can be removed
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (update_timeout):
+               In conjunction with the previous fix, since the terminal
+               can be removed from the active list by
+               vte_terminal_process_incoming() we need to be careful whilst
+               iterating along the active list.
+    
+    
+    svn path=/trunk/; revision=1700
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    6 ++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 2741c86680b5dc6f7c44cbd1a1c9fd50112e8bfd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 16:32:01 2007 +0000
+
+    <fcrozat> ickle: hi.. our kernel hacker just found a nice reproducible
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       <fcrozat> ickle: hi.. our kernel hacker just found a nice reproducible
+               crash in vte :)
+       <ickle> oh, joy
+       <fcrozat> very easy to reproduce
+               cat /dev/urandom
+               wait 2 or 3S
+               then press Ctrl-Shift-T to open a new tab
+               => crash
+    
+       * src/vte.c: (process_timeout), (update_repeat_timeout):
+               vte_terminal_process_incoming() can trigger a terminal reset
+               which will remove the terminal from the active list, and then
+               we attempt to remove it again after handling the incoming
+               data. The fix is simple - don't delete the link if the the
+               terminal is no longer active.
+    
+    
+    svn path=/trunk/; revision=1699
+
+ ChangeLog |   18 ++++++++++++++++++
+ src/vte.c |   18 ++++++++++++------
+ 2 files changed, 30 insertions(+), 6 deletions(-)
+
+commit cf0fb7920f04f8e42a55fa795d7f9b1844212821
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 15:11:31 2007 +0000
+
+    As noticed on bug 409055, we do not receive a visibility-notify event when
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       As noticed on bug 409055, we do not receive a visibility-notify
+       event when we switch workspaces (or even when the window is iconified).
+       The workaround for this is to watch for our toplevel being unmapped
+       and set the fully-obscured flag.
+    
+       * src/vte.c: (vte_terminal_configure_toplevel),
+       (vte_terminal_unmap_toplevel), (vte_terminal_hierarchy_changed),
+       (vte_terminal_set_visibility), (vte_terminal_visibility_notify):
+    
+    
+    svn path=/trunk/; revision=1698
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   56 ++++++++++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 51 insertions(+), 16 deletions(-)
+
+commit b4992b6d191eb4fb8806a0aa527244e4a31d58a0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 12:05:38 2007 +0000
+
+    Add the visibility state to the debug output.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (visibility_state_str),
+       (vte_terminal_visibility_notify), (vte_terminal_init),
+       (vte_terminal_realize):
+               Add the visibility state to the debug output.
+    
+    
+    svn path=/trunk/; revision=1697
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   32 +++++++++++++++++++++++---------
+ 2 files changed, 30 insertions(+), 9 deletions(-)
+
+commit 4172d95cb93212898d76513c2a7851cf56441eeb
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 10:24:57 2007 +0000
+
+    Add the configuration details to config.log as well.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * configure.in:
+               Add the configuration details to config.log as well.
+    
+    
+    svn path=/trunk/; revision=1696
+
+ ChangeLog    |    5 +++++
+ configure.in |    9 +++++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit bd1b365df62aaa0c13f30c9540a2e895d364f045
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 09:48:32 2007 +0000
+
+    Bug 409241 – gnome-terminal crashed with SIGSEGV in
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 409241 – gnome-terminal crashed with SIGSEGV in vte_terminal_draw_graphic()
+    
+       * src/vte.c: (vte_terminal_paint):
+               Lookup fore/back colours before attempting to draw the graphic
+               character behind the unfocused cursor.
+    
+    
+    svn path=/trunk/; revision=1695
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   10 +++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+commit 9b942a0267e95ff19ab137559cd069b41b730b5a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 19 09:25:22 2007 +0000
+
+    Add VTE_DEBUG_EVENT info.
+    
+    2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_visibility_notify):
+               Add VTE_DEBUG_EVENT info.
+    
+    
+    svn path=/trunk/; revision=1694
+
+ ChangeLog |    5 +++++
+ src/vte.c |    6 ++++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit c46666b8242919c39c0752100cd8742fc0982d3a
+Author: Priit Laes <plaes svn gnome org>
+Date:   Sun Feb 18 10:02:30 2007 +0000
+
+    Updated Estonian translation by Ivar Smolin <okul linux ee>.
+    
+    2007-02-18  Priit Laes  <plaes svn gnome org>
+    
+       * et.po: Updated Estonian translation by Ivar Smolin <okul linux ee>.
+    
+    svn path=/trunk/; revision=1693
+
+ po/ChangeLog |    4 +++
+ po/et.po     |   67 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 39 insertions(+), 32 deletions(-)
+
+commit a398804b7feec0fb03a03451c2a7804b9356c3b6
+Author: Takeshi AIHANA <takeshi aihana gmail com>
+Date:   Fri Feb 16 23:43:03 2007 +0000
+
+    Updated Japanese translation.
+    
+    2007-02-17  Takeshi AIHANA <takeshi aihana gmail com>
+    
+            * ja.po: Updated Japanese translation.
+    
+    svn path=/trunk/; revision=1692
+
+ po/ChangeLog |    4 +++
+ po/ja.po     |   68 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 39 insertions(+), 33 deletions(-)
+
+commit cccb71086babba14b64fd9c779d96748a0234da6
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Feb 16 14:11:42 2007 +0000
+
+    Argh! The actual ChangeLog entry for the previous commit.
+    
+    svn path=/trunk/; revision=1691
+
+ ChangeLog |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 73021c8e3cb4cbcf2768bcd5c29a8665458d6b8b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 16 14:08:58 2007 +0000
+
+    Bug 407945 – "GNOME" Terminal" regression after "vte" update when using
+    
+    2007-02-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 407945 – "GNOME" Terminal" regression after "vte" update when using "csh"
+    
+       When passing multiple versions of the same environment
+       variable to execve (i.e g_spawn) the result is undefined.
+       So we solve the ambiguity by using the application passed env to
+       override values from the current environment.
+    
+       * src/pty.c: (collect_variables), (merge_environ),
+       (_vte_pty_run_on_pty):
+    
+    
+    svn path=/trunk/; revision=1690
+
+ ChangeLog |    7 +++++++
+ src/pty.c |   57 +++++++++++++++++++++++++++++++++++++++++++++------------
+ 2 files changed, 52 insertions(+), 12 deletions(-)
+
+commit b55651f6faa018937802b38ba3f1429b5c3a2005
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 16 10:57:31 2007 +0000
+
+    Bug 408536 – trouble compiling vte 0.15.3
+    
+    2007-02-16  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 408536 – trouble compiling vte 0.15.3
+    
+       * configure.in:
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+               Check for availability of FcStrFree() - only used for
+               debugging purposes so we can live without it.
+    
+    
+    svn path=/trunk/; revision=1689
+
+ ChangeLog    |    9 +++++++++
+ configure.in |    9 +++++++++
+ src/vtefc.c  |    4 ++++
+ 3 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 6098cf74cdf324c0fdb826ff1fd4df98b88b60de
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 15 11:56:49 2007 +0000
+
+    Guard against a missing default number of rows or columns inside the
+    
+    2007-02-15  Chris Wilson  <chris chris-wilson co uk>
+    
+       Guard against a missing default number of rows or columns
+       inside the termcap.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):
+    
+    
+    svn path=/trunk/; revision=1688
+
+ ChangeLog         |    8 ++++++++
+ src/vte-private.h |    2 ++
+ src/vte.c         |   13 ++++++++++---
+ 3 files changed, 20 insertions(+), 3 deletions(-)
+
+commit 2d1fef27219bef094bdd04cb585c848c1215fd36
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 15 08:19:27 2007 +0000
+
+    Bug 408040 – vte automagic hyperlinks Patch by Gilles Dartiguelongue.
+    
+    2007-02-15  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 408040 – vte automagic hyperlinks
+       Patch by Gilles Dartiguelongue.
+    
+       * src/vteapp.c:
+               Correct the typo in the nntp protocol matcher.
+    
+    
+    svn path=/trunk/; revision=1687
+
+ ChangeLog    |    8 ++++++++
+ src/vteapp.c |    4 ++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 8b036e7c225d43345d82008bfc5ba6725d71128d
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Thu Feb 15 01:24:09 2007 +0000
+
+    Updated Portuguese translation.
+    
+    2007-02-15  Duarte Loreto <happyguy_pt hotmail com>
+    
+       * pt.po: Updated Portuguese translation.
+    
+    svn path=/trunk/; revision=1686
+
+ po/ChangeLog |    4 +++
+ po/pt.po     |   67 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 40 insertions(+), 31 deletions(-)
+
+commit b80a9798602233a081464fdd390eb3534e3b3bbb
+Author: Amanpreet Singh Alam <aman src gnome org>
+Date:   Thu Feb 15 00:34:31 2007 +0000
+
+    updating for Punjabi
+    
+    svn path=/trunk/; revision=1685
+
+ po/pa.po |   98 ++++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 51 insertions(+), 47 deletions(-)
+
+commit 48a52da16aa0441747bb8bf7724b9c6f7f682b49
+Author: Daniel Nylander <dnylande src gnome org>
+Date:   Wed Feb 14 22:40:30 2007 +0000
+
+    sv.po: Swedish translation updated
+    
+    svn path=/trunk/; revision=1684
+
+ po/ChangeLog |    4 ++
+ po/sv.po     |   95 +++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 48 insertions(+), 51 deletions(-)
+
+commit 31e2986dca529750c385054e64baf46321f2ac30
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Feb 14 16:38:08 2007 +0000
+
+    Add Damien's name to the ChangeLog as he was one who did all the hard work.
+    
+    
+    svn path=/trunk/; revision=1683
+
+ ChangeLog |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 086654fb2e81ad7dada38cc43776233510c9eba0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 14 16:36:15 2007 +0000
+
+    Bug 407839 – Use of environ breaks build on Solaris
+    
+    2007-02-14  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 407839 – Use of environ breaks build on Solaris
+    
+       * src/pty.c:
+               extern char **environ - glibc was 'conveniently' declaring
+               it for us...
+    
+    
+    svn path=/trunk/; revision=1682
+
+ ChangeLog |    8 ++++++++
+ src/pty.c |    6 ++++--
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit eec5e1ba2ba41c43726b828c5dabdc6453e2bfc8
+Author: Yair Hershkovitz <yairhr src gnome org>
+Date:   Wed Feb 14 14:08:10 2007 +0000
+
+    updated hebrew translation
+    
+    svn path=/trunk/; revision=1681
+
+ po/ChangeLog |    4 +++
+ po/he.po     |   61 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 37 insertions(+), 28 deletions(-)
+
+commit 78a5644a40c0cfed1f74a2844646141561a2c710
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 13 10:14:58 2007 +0000
+
+    uws reported that scrolling inside screen with a status line was broken.
+    
+    2007-02-13  Chris Wilson  <chris chris-wilson co uk>
+    
+       uws reported that scrolling inside screen with a status line was
+       broken. Indeed any scrolling inside an alternative screen was broken,
+       e.g. plain vim would not always update the topmost line. The issue was
+       the interaction with the deferred value-changed signal emission and
+       failing to correctly maintain the current scroll_delta. The fix is
+       that we always now apply changes to the scroll_delta and swap
+       scroll_delta with adjustment->value before the deferred signal
+       emission to correctly trigger the handle_scroll().
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cells),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (vte_terminal_process_incoming), (vte_terminal_extend_selection),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_sf):
+    
+    
+    svn path=/trunk/; revision=1680
+
+ ChangeLog         |   22 +++++++++++++++++
+ src/vte-private.h |    1 -
+ src/vte.c         |   67 ++++++++++++++++++++++++++++++-----------------------
+ src/vteseq.c      |   10 --------
+ 4 files changed, 60 insertions(+), 40 deletions(-)
+
+commit 51ec6a83743a6f93445f8bd10fcaed4c80e62f6c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 13 08:51:37 2007 +0000
+
+    Bug 407358 – regression in mouse selection
+    
+    2007-02-13  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 407358 – regression in mouse selection
+    
+       * src/vte.c: (vte_terminal_motion_notify):
+               When outside the terminal we used an uninitialised variable to
+               determine the mouse tracking mode.
+    
+    
+    svn path=/trunk/; revision=1679
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   15 ++++++++-------
+ 2 files changed, 16 insertions(+), 7 deletions(-)
+
+commit 05c6997a2d188fdfba05f074ae473913db8ec50c
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 13 05:02:16 2007 +0000
+
+    Released vte-0.15.3.
+    
+    2007-02-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.3.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.3.
+    
+            * src/Makefile.am: Bumped libtool version to 11:0:2.
+    
+    
+    svn path=/trunk/; revision=1677
+
+ ChangeLog       |   10 ++++++++
+ NEWS            |   65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    6 ++--
+ 4 files changed, 79 insertions(+), 4 deletions(-)
+
+commit d00f6be542887348cae7c1c92b538f39655fccd4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 12 17:50:22 2007 +0000
+
+    Restore autoscroll behaviour.
+    
+    2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_extend_selection),
+       (vte_terminal_motion_notify):
+               Restore autoscroll behaviour.
+    
+    
+    svn path=/trunk/; revision=1676
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   34 ++++++++++++++++++++--------------
+ 2 files changed, 26 insertions(+), 14 deletions(-)
+
+commit ff3baedb1feaeac07c4d41963caabb3404448fce
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 12 17:35:48 2007 +0000
+
+    Invalidate the selected region when starting in select-word or select-line
+    
+    2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_start_selection):
+               Invalidate the selected region when starting in
+               select-word or select-line mode.
+    
+    
+    svn path=/trunk/; revision=1675
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 ++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit afd7d6ce9ef7c3f67fc01df7fe262820cf751a84
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 12 17:19:33 2007 +0000
+
+    Restore double-click to select word behaviour, broken by r1671 as the
+    
+    2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+    
+       Restore double-click to select word behaviour, broken by r1671 as
+       the second click occurs in the same place as the first (obviously!).
+    
+       * src/vte.c: (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press):
+    
+    
+    svn path=/trunk/; revision=1674
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   17 +++++++++--------
+ 2 files changed, 18 insertions(+), 8 deletions(-)
+
+commit cc25041ed39cb173986c2d6b7ec9b546226c45a5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 12 16:37:41 2007 +0000
+
+    Bug 407091 – vte_terminal_fork_command() env argument changed semantic
+    
+    2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 407091 – vte_terminal_fork_command() env argument changed semantic in 0.15.2
+       Original patch by Michael Vogt.
+    
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Copy the current environment into the child's.
+    
+    
+    svn path=/trunk/; revision=1673
+
+ ChangeLog |    8 ++++++++
+ src/pty.c |   44 ++++++++++++++++++++++++++++++--------------
+ 2 files changed, 38 insertions(+), 14 deletions(-)
+
+commit 9225efa38d0f685bf8ab4ad6f730b55a824bee43
+Author: Ilkka Tuohela <ituohela src gnome org>
+Date:   Mon Feb 12 16:26:06 2007 +0000
+
+    Updated Finnish translation
+    
+    svn path=/trunk/; revision=1672
+
+ po/ChangeLog |    4 +++
+ po/fi.po     |   61 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 37 insertions(+), 28 deletions(-)
+
+commit 9b1ebc2cc663b935bf8994bf5d21952441a4f34b
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sun Feb 11 18:52:57 2007 +0000
+
+    Improve ChangeLog grammar for last entry
+    
+    svn path=/trunk/; revision=1671
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ed71458192cb72a76ae2f0658f2f3f64f34d5db2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 11 18:51:41 2007 +0000
+
+    Bug 323393 – Hyper-sensitive selection
+    
+    2007-02-11  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 323393 – Hyper-sensitive selection
+    
+       * src/vte.c: (vte_terminal_extend_selection):
+               Don't start (or update) the selection until you have
+               move off the current cell (character).
+    
+    
+    svn path=/trunk/; revision=1670
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   12 +++++++++++-
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 27bdcfcf116ba09540100e1c9e4e37058cbee0ef
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sun Feb 11 18:31:20 2007 +0000
+
+    Eliminate dead code from last commit.
+    
+    
+    svn path=/trunk/; revision=1669
+
+ src/vte.c |   12 +++---------
+ 1 files changed, 3 insertions(+), 9 deletions(-)
+
+commit 211b8c3fd9395992baf00f18b9ff0e6141039e0f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 11 18:20:01 2007 +0000
+
+    Bug 406763 – Selecting double-wide characters
+    
+    2007-02-11  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 406763 – Selecting double-wide characters
+    
+       * src/vte.c: (start_column), (end_column),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows):
+               Extend selection to include fragment cells i.e. double-wide
+               characters.
+    
+    
+    svn path=/trunk/; revision=1668
+
+ ChangeLog |   10 ++++++++
+ src/vte.c |   71 +++++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 65 insertions(+), 16 deletions(-)
+
+commit 1977853482af88000cd868f97d75f21b73fa5e77
+Author: Ihar Hrachyshka <iharh src gnome org>
+Date:   Sun Feb 11 15:55:55 2007 +0000
+
+    be.po: Updated Belarusian translation.
+    
+    svn path=/trunk/; revision=1667
+
+ po/ChangeLog |    4 +++
+ po/be.po     |   77 ++++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 44 insertions(+), 37 deletions(-)
+
+commit 82aae53f5f6df2b3711f2562416f2bf94610998e
+Author: Theppitak Karoonboonyanan <tkaroonb src gnome org>
+Date:   Sun Feb 11 09:26:56 2007 +0000
+
+    Added Thai translation.
+    
+       * th.po: Added Thai translation.
+    
+    
+    svn path=/trunk/; revision=1666
+
+ po/ChangeLog |    4 +++
+ po/th.po     |   66 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 39 insertions(+), 31 deletions(-)
+
+commit db8c3398dded800a9570f7b3004b5c4161089344
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Feb 10 21:12:54 2007 +0000
+
+    Have a separate adjust_adjustments for when we know that the page size and
+    
+    2007-02-10  Chris Wilson  <chris chris-wilson co uk>
+    
+       Have a separate adjust_adjustments for when we know that the page
+       size and step lengths may have changed.
+    
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset):
+    
+    
+    svn path=/trunk/; revision=1665
+
+ ChangeLog |    9 +++++++
+ src/vte.c |   78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 2 files changed, 83 insertions(+), 4 deletions(-)
+
+commit e1e03bfea1cdec959d7fe151c45a68bef74d0d19
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Feb 10 01:18:14 2007 +0000
+
+    Prevent the display of garbage after resizing and switching between
+    
+    2007-02-10  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (vte_terminal_size_allocate), (vte_terminal_set_scrollback_lines):
+               Prevent the display of garbage after resizing and switching
+               between alternate screens.
+               However, instead of displaying garbage after the cursor, we
+               lose some data above the current scroll delta, should we have
+               a full history.  Bizarre.
+    
+    
+    svn path=/trunk/; revision=1664
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   28 ++++++++++++++++++++--------
+ 2 files changed, 30 insertions(+), 8 deletions(-)
+
+commit 0298c00f6fc3ecc8704ed5a73180b2dcfa43804c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 9 22:26:03 2007 +0000
+
+    Do not allow to scroll past the last line after reducing scrollback lines.
+    
+    2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_terminal_adjust_adjustments):
+               Do not allow to scroll past the last line after reducing
+               scrollback lines.
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Ensure a fallback height is set.
+    
+    
+    svn path=/trunk/; revision=1663
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |    8 ++++----
+ src/vtexft.c |    3 +++
+ 3 files changed, 15 insertions(+), 4 deletions(-)
+
+commit 315d4022bdf7d966bdd4d3494ad0653cf232655b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 9 20:42:36 2007 +0000
+
+    Reuse VteRowData whilst in the row.
+    
+    2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_get_text_range_maybe_wrapped):
+               Reuse VteRowData whilst in the row.
+    
+    
+    svn path=/trunk/; revision=1662
+
+ ChangeLog |    5 +++++
+ src/vte.c |    7 ++++---
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 324b43bd592e0b7598eb3b895247a0234cf42e57
+Author: Stéphane Raimbault <stephane raimbault gmail com>
+Date:   Fri Feb 9 19:22:06 2007 +0000
+
+    Updated French translation by Jonathan Ernst and Stéphane Raimbault.
+    
+    2007-02-09  Stéphane Raimbault  <stephane raimbault gmail com>
+    
+       * fr.po: Updated French translation by Jonathan Ernst and Stéphane
+       Raimbault.
+    
+    svn path=/trunk/; revision=1661
+
+ po/ChangeLog |    5 ++++
+ po/fr.po     |   70 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 42 insertions(+), 33 deletions(-)
+
+commit 406b4112f009278210bfed3d5b02ffe87e53f506
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Feb 9 19:03:13 2007 +0000
+
+    Remove the incomplete ChangeLog entry
+    
+    svn path=/trunk/; revision=1660
+
+ ChangeLog |   10 ----------
+ 1 files changed, 0 insertions(+), 10 deletions(-)
+
+commit fc9491db2c696d3fdf04c6305722a578991f2dab
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 9 19:02:51 2007 +0000
+
+    Rework to reduce number of times mutex is taken and shorten the hold.
+    
+    2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+    
+       Rework to reduce number of times mutex is taken and shorten the hold.
+    
+       * src/vte.c: (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (vte_terminal_io_read), (vte_terminal_paint),
+       (vte_terminal_add_process_timeout), (vte_terminal_is_processing),
+       (vte_terminal_start_processing):
+    
+    
+    svn path=/trunk/; revision=1659
+
+ ChangeLog |   20 ++++++++++++++++++++
+ src/vte.c |   42 ++++++++++++++++++++----------------------
+ 2 files changed, 40 insertions(+), 22 deletions(-)
+
+commit 1b2331370cddeb42e37ac7d9cfbbe6968969139d
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Fri Feb 9 17:37:21 2007 +0000
+
+    Updated Arabic Translation.
+    
+    svn path=/trunk/; revision=1658
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   47 ++++++++++++++++++++++++-----------------------
+ 2 files changed, 28 insertions(+), 23 deletions(-)
+
+commit ed0571e099a5288ee4ca769b5f16165910346711
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 9 15:42:27 2007 +0000
+
+    A number of small bug fixes... - do not override the user setting of
+    
+    2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+    
+       A number of small bug fixes...
+       - do not override the user setting of scrollback lines with the
+       terminal size.
+       - only set the current screen rather than both and so reset the
+       scrollback lines when we switch between normal and alternate.
+       - do not invalidate inside set_scrollback lines as setting does not
+       actually modify the on-screen contents.
+       - push the scroll-adjustment to the post-processing emission.
+       - queue timeouts on value change (should be a no-op)
+       - reorder emission so that scrolling occurs before invalidating the
+       window (ie so that the scroll happens this cycle, not next).
+    
+       Still unsolved: the clamping of the cursor when switching between
+       alternate screens.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_maybe_scroll_to_top),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta),
+       (vte_terminal_process_incoming), (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_handle_scroll),
+       (vte_terminal_size_allocate), (vte_terminal_scroll),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
+       (add_process_timeout), (vte_terminal_add_process_timeout),
+       (vte_terminal_start_processing), (update_repeat_timeout),
+       (update_timeout):
+       * src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_al),
+       (vte_sequence_handler_dl), (vte_sequence_handler_sf),
+       (vte_sequence_handler_sr), (vte_sequence_handler_clear_screen),
+       (vte_sequence_handler_cursor_character_absolute),
+       (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines),
+       (vte_sequence_handler_screen_alignment_test):
+    
+    
+    svn path=/trunk/; revision=1657
+
+ ChangeLog         |   43 ++++++++++
+ src/vte-private.h |    3 +-
+ src/vte.c         |  243 +++++++++++++++++++++++++----------------------------
+ src/vteseq.c      |   34 ++++----
+ 4 files changed, 174 insertions(+), 149 deletions(-)
+
+commit 677f408192eb94bc12acd3fb259fc0d832f36aa4
+Author: David Lodge <dlodge src gnome org>
+Date:   Fri Feb 9 12:26:52 2007 +0000
+
+    Updated (British) English translation
+    
+    svn path=/trunk/; revision=1656
+
+ po/ChangeLog |    4 +++
+ po/en_GB.po  |   69 +++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 44 insertions(+), 29 deletions(-)
+
+commit 9edec5976463f7730393e2cfcfd714dc22dad1c7
+Author: Josep Puigdemont i Casamajó <joseppc src gnome org>
+Date:   Fri Feb 9 01:24:26 2007 +0000
+
+    Updated Catalan translation.
+    
+    svn path=/trunk/; revision=1655
+
+ po/ChangeLog |    4 +++
+ po/ca.po     |   71 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 43 insertions(+), 32 deletions(-)
+
+commit a1fdc00df38d789aeb646098039b60e07dc70135
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 8 23:41:55 2007 +0000
+
+    whitespace
+    
+    2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteapp.c: (main): whitespace
+    
+    
+    svn path=/trunk/; revision=1654
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |   31 +++++++++++++++----------------
+ 2 files changed, 19 insertions(+), 16 deletions(-)
+
+commit 66669bb79539819035041c526be2ba10e70dc2c9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 8 23:38:36 2007 +0000
+
+    Bug 363597 – Scrollback in profile dialog doesn't work
+    
+    2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 363597 – Scrollback in profile dialog doesn't work
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_init),
+               Only use SCROLLBACK_MIN during initialisation, so rename it
+               to SCROLLBACK_INIT.
+       (vte_terminal_set_scrollback_lines):
+               Remove MAX(lines, SCROLLBACK_MIN) and update code comments
+               to reduce confusion.
+    
+    
+    svn path=/trunk/; revision=1653
+
+ ChangeLog         |   12 ++++++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |    9 ++++-----
+ 3 files changed, 17 insertions(+), 6 deletions(-)
+
+commit f7965513089c1c3e0d736c1fc1f558a387822a9f
+Author: Mariano Suárez-Alvarez <mariano gnome org>
+Date:   Thu Feb 8 21:48:06 2007 +0000
+
+    do something useful with --geometry.
+    
+    2007-02-08  Mariano Suárez-Alvarez  <mariano gnome org>
+    
+       * src/vteapp.c(main): do something useful with --geometry.
+    
+    
+    
+    svn path=/trunk/; revision=1652
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |   18 ++++++++++++++----
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+commit 2248057a2a30e0af2403b7ada2374317e2c16ea4
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Thu Feb 8 20:10:28 2007 +0000
+
+    Updated Arabic Translation.
+    
+    svn path=/trunk/; revision=1651
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   46 ++++++++++++++++++++++------------------------
+ 2 files changed, 26 insertions(+), 24 deletions(-)
+
+commit b3ada446dc6e9554689375ac7b1f67c3c47b889b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 8 17:34:40 2007 +0000
+
+    Use gtk_widget_get_(screen|display) which will itself return a default if
+    
+    2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use gtk_widget_get_(screen|display) which will itself return a default
+       if not currently attached.
+    
+       * src/vtedraw.c: (_vte_draw_get_colormap):
+       * src/vtefc.c: (_vte_fc_defaults_from_gtk):
+       * src/vtegl.c: (_vte_gl_check), (_vte_gl_create),
+       (_vte_gl_destroy), (_vte_gl_start), (_vte_gl_end), (_vte_gl_clear),
+       (_vte_gl_draw_text), (_vte_gl_rectangle):
+       * src/vterdb.c: (_vte_rdb_get):
+       * src/vteseq.c: (vte_sequence_handler_window_manipulation):
+    
+    
+    svn path=/trunk/; revision=1650
+
+ ChangeLog     |   13 ++++++++++
+ configure.in  |    2 +-
+ src/vtedraw.c |    6 +----
+ src/vtefc.c   |   15 +++--------
+ src/vtegl.c   |   74 ++++++++++++++++++--------------------------------------
+ src/vterdb.c  |    6 +---
+ src/vteseq.c  |    6 +----
+ 7 files changed, 46 insertions(+), 76 deletions(-)
+
+commit 15d58f1309f45e3eb02a7e46cd74440170b13b78
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 8 14:06:53 2007 +0000
+
+    Some more callgrinding - kill a little bit of overhead.
+    
+    2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+    
+       Some more callgrinding - kill a little bit of overhead.
+    
+       * src/iso2022.c: (_vte_iso2022_sequence_length),
+       (_vte_iso2022_fragment_input), (process_control):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/vteconv.c: (_vte_conv):
+    
+    
+    svn path=/trunk/; revision=1649
+
+ ChangeLog     |    9 +++++
+ src/iso2022.c |  102 ++++++++++++++++++++++++++++++++++++++++++++------------
+ src/matcher.c |    8 ++--
+ src/vteconv.c |   11 +++---
+ 4 files changed, 98 insertions(+), 32 deletions(-)
+
+commit 385746c4b6bc1afb008e719aa7846106255e0e81
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 16:57:57 2007 +0000
+
+    Actually return whether or not we found the char in _vte_xft_font_for_char
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       Actually return whether or not we found the char in
+       _vte_xft_font_for_char - saves having to double check afterwards!
+    
+       * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_set_text_font),
+       (_vte_xft_draw_text):
+    
+    
+    svn path=/trunk/; revision=1648
+
+ ChangeLog    |    8 +++++
+ src/vtexft.c |   97 +++++++++++++++++++---------------------------------------
+ 2 files changed, 40 insertions(+), 65 deletions(-)
+
+commit 7111e266695e7b8ef2daa6e0c6508cfe58154aed
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 16:03:30 2007 +0000
+
+    As spotted perusing roxterm, we fail to redraw after changing the text
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       As spotted perusing roxterm, we fail to redraw after changing the text
+       colour.
+    
+       * src/vte.c: (vte_terminal_set_color_internal):
+               Remember to invalidate all!
+    
+    
+    svn path=/trunk/; revision=1647
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    3 +++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 4d59212a11ca8157d3a49f2b0e85230c2bb73a3b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 10:15:51 2007 +0000
+
+    Scan for newlines before and after the current row to find the entire line
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_match_check_internal):
+               Scan for newlines before and after the current row
+               to find the entire line in case of soft-wrapping.
+    
+    
+    svn path=/trunk/; revision=1646
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   12 ++++++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit 523d88614c859385c3430130ae49c5bba11683fe
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 09:49:20 2007 +0000
+
+    Bug 345344 – Pattern matching is inefficient Bug 324246 – Performance
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 345344 – Pattern matching is inefficient
+       Bug 324246 – Performance degredation with large numbers of highlighted addresses/URLs
+    
+       * src/vte.c: (vte_terminal_match_check_internal):
+               Trim the searched string down to the row containing the
+               pointer. During a mutt session this drops the time consumed by
+               regexec from ~30% to ~2%.
+               Note: multi-line regexes are now unsupported!
+    
+    
+    svn path=/trunk/; revision=1645
+
+ ChangeLog |   11 +++++
+ src/vte.c |  125 +++++++++++++++++++++++++++++++++++++++---------------------
+ 2 files changed, 92 insertions(+), 44 deletions(-)
+
+commit ecc00ed00303b06fb764a8beb092ea56fb7968e6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 00:45:02 2007 +0000
+
+    Avoid the strlen when possible.
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c: (_vte_sequence_get_handler):
+               Avoid the strlen when possible.
+    
+    
+    svn path=/trunk/; revision=1644
+
+ ChangeLog    |    5 +++++
+ src/vteseq.c |    6 +++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 941e00dee9b6ab5168ae0b6226794758734528a4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Feb 7 00:07:40 2007 +0000
+
+    Some cleanups and a bug...
+    
+    2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+    
+       Some cleanups and a bug...
+    
+       vte_terminal_match_hilite() compared the current cell to the last
+       mouse position without a floor().
+    
+       * src/vte.c: (vte_terminal_process_incoming),
+       (vte_terminal_match_hilite), (vte_terminal_select_all),
+       (vte_terminal_select_none), (vte_terminal_motion_notify),
+       (vte_terminal_button_press):
+    
+    
+    svn path=/trunk/; revision=1643
+
+ ChangeLog |   12 +++++++++++
+ src/vte.c |   67 +++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 47 insertions(+), 32 deletions(-)
+
+commit c7ee539681e4bc62474acf51ea97136b7ffcfaec
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 22:29:39 2007 +0000
+
+    Bug 86119 – "select all" feature Original patch by Simone Gotti.
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 86119 – "select all" feature
+       Original patch by Simone Gotti.
+    
+       * src/vte.c: (vte_terminal_select_all), (vte_terminal_select_none):
+       * src/vte.h:
+               Add 2 new API entry points to select the entire contents
+               and clear the current selection.
+    
+    
+    svn path=/trunk/; revision=1642
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vte.h |    4 ++++
+ 3 files changed, 75 insertions(+), 0 deletions(-)
+
+commit 40d798732f1f59d4dc6f4e635ae0466ddb96d7f0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 22:02:22 2007 +0000
+
+    Bug 342059 – ASCII escape sequences don't work as expected Correction by
+    
+    2007-02-06  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 342059 – ASCII escape sequences don't work as expected
+       Correction by Mariano Suárez-Alvarez.
+    
+       * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
+               OBO on the parameter.
+    
+    
+    svn path=/trunk/; revision=1641
+
+ ChangeLog    |    8 ++++++++
+ src/vteseq.c |    4 ++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit e8788fb343b122f77dcb087c3644633d59649fbe
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 21:47:58 2007 +0000
+
+    Bug 342059 – ASCII escape sequences don't work as expected Patch by
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 342059 – ASCII escape sequences don't work as expected
+       Patch by Mariano Suárez-Alvarez.
+    
+       * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
+               Provide a default value.
+    
+    
+    svn path=/trunk/; revision=1640
+
+ ChangeLog    |    8 ++++++++
+ src/vteseq.c |   21 +++++++++++++++++++--
+ 2 files changed, 27 insertions(+), 2 deletions(-)
+
+commit 8d0525d71c15affc86448ba204bcddd94f1dbf56
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 19:02:38 2007 +0000
+
+    And finally as noted on bug 324246#c8 hide the hilite when the mouse
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       And finally as noted on bug 324246#c8 hide the hilite when the mouse
+       leaves the terminal (show again when it enters and let motion-notify
+       correct it later).
+    
+       * src/vte.c: (vte_terminal_enter), (vte_terminal_leave),
+       (vte_terminal_realize), (vte_terminal_class_init):
+    
+    
+    svn path=/trunk/; revision=1639
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   39 +++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 46 insertions(+), 2 deletions(-)
+
+commit 1cb4420af95031508802786ea876a86ab1bc61e7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 18:43:19 2007 +0000
+
+    As noted on bug 324246#c8, hide the hilite when the focus disappears. On
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       As noted on bug 324246#c8, hide the hilite when the focus disappears.
+       On focus restore the match for the last mouse coordinates and let
+       motion-notify take care of the rest.
+    
+       * src/vte.c: (vte_terminal_match_hilite_update),
+       (vte_terminal_match_hilite), (vte_terminal_focus_in):
+    
+    
+    svn path=/trunk/; revision=1638
+
+ ChangeLog |    6 ++++--
+ src/vte.c |   53 +++++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 39 insertions(+), 20 deletions(-)
+
+commit 35d8895c49716e77b91c74bab75089ba6a6e3540
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 18:35:02 2007 +0000
+
+    As noted on bug 324246#c8, hide the hilite when the focus disappears.
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       As noted on bug 324246#c8, hide the hilite when the focus disappears.
+       Depend upon motion-notify events to show the hilite.
+    
+       * src/vte.c: (vte_terminal_focus_out):
+    
+    
+    svn path=/trunk/; revision=1637
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    1 +
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit e972b042a3901d1f0f9e1059a391330c799a58df
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 16:49:41 2007 +0000
+
+    Convert the exposed rectangles to cells and remerge them.
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       Convert the exposed rectangles to cells and remerge them.
+    
+       * src/vte.c: (vte_terminal_expand_region),
+       (vte_terminal_paint_area), (vte_terminal_paint):
+    
+    
+    svn path=/trunk/; revision=1636
+
+ ChangeLog |    7 +++++
+ src/vte.c |   75 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 73 insertions(+), 9 deletions(-)
+
+commit bcb9cce88b1ac694c42f72a875fc8de4707fe5bf
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 14:05:26 2007 +0000
+
+    As noted on Bug 401052#c13, vte fails to completely clear the cell's
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       As noted on Bug 401052#c13, vte fails to completely clear the cell's
+       previous contents.
+    
+       * src/vte.c: (_vte_invalidate_cells):
+               Grow the invalidate region by a single pixel to accomodate
+               antialiased pseudo-bold characters.
+    
+    
+    svn path=/trunk/; revision=1635
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    8 ++++----
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+commit 2e35e0e588ceb00b3b4196ca63c6f5d37611d17f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 14:03:33 2007 +0000
+
+    Move status_line_changed to post-processing emission.
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       Move status_line_changed to post-processing emission.
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_insert_char), (vte_terminal_reset),
+       (vte_terminal_emit_pending_signals):
+       * src/vteseq.c: (vte_sequence_handler_ts):
+    
+    
+    svn path=/trunk/; revision=1634
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   11 +++++++++--
+ src/vteseq.c      |    2 +-
+ 4 files changed, 20 insertions(+), 4 deletions(-)
+
+commit 1ed564c990e5d793ce102f9ee9dbb5d67045c070
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 11:31:48 2007 +0000
+
+    Clamp down on needless invalidates during selection.
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       Clamp down on needless invalidates during selection.
+    
+       As commented on in Bug 401052#c10
+    
+       * src/vte.c: (_vte_invalidate_region), (vte_terminal_deselect_all),
+       (vte_terminal_match_hilite_clear), (vte_terminal_start_selection),
+       (vte_terminal_extend_selection):
+    
+    
+    svn path=/trunk/; revision=1633
+
+ ChangeLog |   10 +++++
+ src/vte.c |  130 +++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 77 insertions(+), 63 deletions(-)
+
+commit 93592983597e5bec9df8e61637f65c9cbffddeb8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 10:27:52 2007 +0000
+
+    Don't needlessly break the text run on a space if we are not drawing cell
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't needlessly break the text run on a space if we are
+               not drawing cell attributes.
+    
+    
+    svn path=/trunk/; revision=1632
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   12 +++++++++++-
+ 2 files changed, 17 insertions(+), 1 deletions(-)
+
+commit 2b125a856e2afee11252bdb75ed420f08fc721d1
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Feb 6 08:49:56 2007 +0000
+
+    One more G_UNLIKELY Avoid expensive hiliting if the pointer is not in the
+    
+    2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht):
+               One more G_UNLIKELY
+       * src/vte.c: (vte_terminal_match_hilite),
+       (vte_terminal_motion_notify):
+               Avoid expensive hiliting if the pointer is not in the window.
+       * src/vteregex.c: (_vte_regex_exec):
+               Prefer g_new(x,n) over g_malloc(sizeof(x)*n)
+    
+    
+    svn path=/trunk/; revision=1631
+
+ ChangeLog      |   10 ++++++++++
+ src/iso2022.c  |    2 +-
+ src/vte.c      |   20 +++++++++++++++++++-
+ src/vteregex.c |    2 +-
+ 4 files changed, 31 insertions(+), 3 deletions(-)
+
+commit 7fb0dfdb947d98ff2aa2e01266f3517df2c24b9a
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Feb 5 23:22:56 2007 +0000
+
+    Simple to script to scroll UTF-8 text.
+    
+    svn path=/trunk/; revision=1630
+
+ perf/utf8.sh |   11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit e8a2e72779bf6701e10d73354818d1734d2f6d12
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 21:55:38 2007 +0000
+
+    Bug 404757 – URL matching doesn't work with PCRE
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 404757 – URL matching doesn't work with PCRE
+    
+       * configure.in:
+               mention the inconsistency in the help string and default to no.
+    
+    
+    svn path=/trunk/; revision=1629
+
+ ChangeLog    |    7 +++++++
+ configure.in |    4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 102053e8c98dfa69450c5d8b3e85a5570a5eab0c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 17:09:27 2007 +0000
+
+    Don't draw cell attributes across spaces.
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't draw cell attributes across spaces.
+    
+    
+    svn path=/trunk/; revision=1628
+
+ ChangeLog |    5 +++++
+ src/vte.c |   10 ++++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 5ef6ed835427ef0eefa3b2f3694bbed53d208991
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 16:05:20 2007 +0000
+
+    A couple more G_LIKELYs.
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_terminal_insert_char):
+               A couple more G_LIKELYs.
+    
+    
+    svn path=/trunk/; revision=1627
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit be36839768c3a3ec2d6734dce47b96fdda248bbc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 13:55:55 2007 +0000
+
+    Bug 403028 – decset mode 12 = blinking cursor
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 403028 – decset mode 12 = blinking cursor
+    
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Following convention, disallow the application's control
+               over the blinking cursor in favour of the user's setting.
+    
+    
+    svn path=/trunk/; revision=1626
+
+ ChangeLog    |    8 ++++++++
+ src/vteseq.c |    2 ++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 25007669b49652093e6d14699e5d5a4b15a77ce8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 13:38:56 2007 +0000
+
+    Some more small callgrind tweaks - well into the law of diminishing
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Some more small callgrind tweaks - well into the law of diminishing
+       returns.
+    
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht),
+       (_vte_iso2022_is_ambiguous), (process_8_bit_sequence),
+       (process_cdata), (_vte_iso2022_unichar_width):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/vte.c: (vte_terminal_process_incoming):
+    
+    
+    svn path=/trunk/; revision=1625
+
+ ChangeLog     |   11 +++++++++++
+ src/iso2022.c |   37 +++++++++++++++++++++----------------
+ src/matcher.c |    3 +--
+ src/vte.c     |    3 +--
+ 4 files changed, 34 insertions(+), 20 deletions(-)
+
+commit 589e6df7291dae65b02fe9223f40c916e2c4ade7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 12:33:49 2007 +0000
+
+    Beware the trivial change. Handle reuse of GValueArray correctly.
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       Beware the trivial change. Handle reuse of GValueArray correctly.
+    
+       * src/matcher.c: (_vte_matcher_match):
+       * src/table.c: (_vte_table_match):
+       * src/trie.c: (_vte_trie_match):
+       * src/vte.c: (vte_terminal_process_incoming):
+    
+    
+    svn path=/trunk/; revision=1624
+
+ ChangeLog     |    9 +++++++++
+ src/matcher.c |    2 +-
+ src/table.c   |    4 ++--
+ src/trie.c    |   17 +++++++++--------
+ src/vte.c     |   14 ++++++++------
+ 5 files changed, 29 insertions(+), 17 deletions(-)
+
+commit 94ce0b006861d54d8e683e2cec93d79be28908c5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 12:15:36 2007 +0000
+
+    And kill the leak as vte_table_match erroneously cleared its output
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/table.c: (_vte_table_match):
+               And kill the leak as vte_table_match erroneously cleared
+               its output arguments.
+    
+    
+    svn path=/trunk/; revision=1623
+
+ ChangeLog   |    6 ++++++
+ src/table.c |    6 +++---
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 8109c64664cf26422e9efb3256f665d5b5214c58
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 10:47:28 2007 +0000
+
+    The continual reallocation of GValueArray is the last trivially avoidable
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       The continual reallocation of GValueArray is the last trivially
+       avoidable g_realloc.
+    
+       * src/interpret.c: (main):
+       * src/matcher.c: (_vte_matcher_create), (_vte_matcher_destroy),
+       (_vte_matcher_match), (_vte_matcher_free_params_array):
+       * src/matcher.h:
+       * src/table.c: (_vte_table_extract_string):
+       * src/trie.c: (_vte_trie_matchx), (_vte_trie_match), (main):
+       * src/vte.c: (vte_terminal_process_incoming):
+    
+    
+    svn path=/trunk/; revision=1622
+
+ ChangeLog       |   13 +++++++++++++
+ src/interpret.c |    2 +-
+ src/matcher.c   |   32 ++++++++++++++++++++++----------
+ src/matcher.h   |    2 +-
+ src/table.c     |   13 ++++++-------
+ src/trie.c      |   48 +++++++++++++++++++++++++-----------------------
+ src/vte.c       |    3 ++-
+ 7 files changed, 70 insertions(+), 43 deletions(-)
+
+commit 95d056d80bf4da8e18e3ed059b6eed1c957aa2fa
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 09:54:57 2007 +0000
+
+    Missed an important compiler warning.
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/ring.c: (_vte_ring_insert):
+               Missed an important compiler warning.
+    
+    
+    svn path=/trunk/; revision=1621
+
+ ChangeLog  |    5 +++++
+ src/ring.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit b307bc5c424787b557df9c69c1f92a7c45c558a8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Feb 5 09:46:43 2007 +0000
+
+    cf Bug 342338 – suffers from memory fragmentation
+    
+    2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 342338 – suffers from memory fragmentation
+    
+       Reuse the last VteRowData instead of immediately freeing it. Avoids
+       recreating and *regrowing* a new GArray on the heap.
+    
+       In the simple scrolling benchmarks this can boost performance by as
+       much as 10%!
+    
+       * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
+       (_vte_ring_remove), (_vte_ring_append):
+       * src/ring.h:
+       * src/vte-private.h:
+       * src/vte.c: (_vte_reset_row_data), (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_reset_rowdata):
+       * src/vteseq.c: (vte_insert_line_internal),
+       (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_cd), (vte_sequence_handler_sf),
+       (vte_sequence_handler_clear_screen),
+       (vte_sequence_handler_screen_alignment_test):
+    
+    
+    svn path=/trunk/; revision=1620
+
+ ChangeLog         |   22 +++++++++++++++
+ src/ring.c        |   71 ++++++++++++++++++++++++-----------------------
+ src/ring.h        |    8 +++---
+ src/vte-private.h |    2 +
+ src/vte.c         |   44 +++++++++++++++++++++++------
+ src/vteseq.c      |   79 ++++++++++++++++++++++++++++++++++++++++-------------
+ 6 files changed, 159 insertions(+), 67 deletions(-)
+
+commit 285ebd25406bd8188e6da16f3290aa4682629b92
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 22:22:58 2007 +0000
+
+    A few more compiler warnings.
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       A few more compiler warnings.
+    
+       * src/buffer.c: (_vte_buffer_peek_gstring):
+       * src/iso2022.c: (process_control):
+       * src/vteft2.c: (_vte_ft2_set_text_font):
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+       * src/vtetc.c: (_vte_termcap_parse_file):
+    
+    
+    svn path=/trunk/; revision=1619
+
+ ChangeLog     |   10 ++++++++++
+ src/buffer.c  |    2 +-
+ src/iso2022.c |    8 +-------
+ src/vteft2.c  |    2 +-
+ src/vteseq.c  |    6 +++---
+ src/vtetc.c   |    2 +-
+ 6 files changed, 17 insertions(+), 13 deletions(-)
+
+commit ee4147edf2bff9a844a5b1e2f1c17fc5f988afa0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 21:53:01 2007 +0000
+
+    Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue
+    
+       * src/vtedraw.h:
+       * src/vteglyph.c: (_vte_glyph_cache_set_font_description):
+       * src/vtepango.c: (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_set_text_font):
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Detect a change in font between wide-chars and recheck for a
+               fixed-width estimate.
+    
+    
+    svn path=/trunk/; revision=1618
+
+ ChangeLog       |   12 ++++++++++++
+ src/vtedraw.h   |    7 ++++++-
+ src/vteglyph.c  |   24 ++++++++++++++++++++----
+ src/vtepango.c  |    5 +++--
+ src/vtepangox.c |    5 +++--
+ src/vtexft.c    |   23 +++++++++++++++++++----
+ 6 files changed, 63 insertions(+), 13 deletions(-)
+
+commit 71b1922740896554509a64e77c4f3598a2031b71
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sun Feb 4 21:44:35 2007 +0000
+
+    Revert the accidentally applied patch for bug 324246. patch said is was
+    trying to reverse a revered patch - it lied.
+    
+    svn path=/trunk/; revision=1617
+
+ src/vte.c |   14 +-------------
+ 1 files changed, 1 insertions(+), 13 deletions(-)
+
+commit 65eeaaa02a838e4309133628055fd93fe2b60210
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 21:40:44 2007 +0000
+
+    Micro-opts.
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Micro-opts.
+    
+       * src/table.c: (_vte_table_match):
+               No need set to NULL.
+       * src/vte.c: (_vte_terminal_ensure_cursor):
+               If we have added some rows, the last is the current.
+    
+    
+    svn path=/trunk/; revision=1616
+
+ ChangeLog   |    9 +++++++++
+ src/table.c |    2 +-
+ src/vte.c   |   10 +++++-----
+ 3 files changed, 15 insertions(+), 6 deletions(-)
+
+commit 936abce0f37e25033f92660d5496e726828d656d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 20:19:08 2007 +0000
+
+    Move window/icon title changed to the post-processing emission - helps
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Move window/icon title changed to the post-processing emission - helps
+       with the artificial benchmark of replaying a recorded jhbuild script.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_finalize),
+       (vte_terminal_emit_icon_title_changed),
+       (vte_terminal_emit_window_title_changed),
+       (vte_terminal_emit_pending_signals):
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+    
+    
+    svn path=/trunk/; revision=1615
+
+ ChangeLog         |   12 ++++++++++++
+ src/vte-private.h |    4 ++++
+ src/vte.c         |   48 +++++++++++++++++++++++++++++++++++++++++++++---
+ src/vteseq.c      |   36 ++++++------------------------------
+ 4 files changed, 67 insertions(+), 33 deletions(-)
+
+commit 69c2c22f9be0c9e28f3ca4512ada0cb299783634
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 18:58:09 2007 +0000
+
+    Broke clear-to-end-of-line by lowering the number of cells appended,
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Broke clear-to-end-of-line by lowering the number of cells appended,
+       instead of the number of cells invalidated.
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+       * src/vteseq.c: (vte_sequence_handler_ce):
+    
+    
+    svn path=/trunk/; revision=1614
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |   13 ++++++-------
+ src/vteseq.c |    2 +-
+ 3 files changed, 15 insertions(+), 8 deletions(-)
+
+commit 0d4331ffbeea7a92d68525b55205f1ae1a6b1fe4
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Sun Feb 4 17:40:03 2007 +0000
+
+    Spelling corrections.
+    
+    
+    svn path=/trunk/; revision=1613
+
+ ChangeLog |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 2ddb77285675c657d704e4bfb1431167088b4fff
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 16:18:44 2007 +0000
+
+    cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on unaccelerated
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on unaccelerated X server
+    
+       Another chunk of performance improvements - the majority focussing on
+       reducing the amount of work down per interrupt (input data from
+       child).
+    
+       To handle reads without addition copies VTE_INPUT_CHUNK_SIZE chunks
+       are allocated on demand and filled from read with no further copy -
+       previously the read was into a local buffer and then immediately
+       copied into a _vte_buffer.
+       _vte_iso2022_process() is then adjusted to use a ptr+length, rather
+       than a _vte_buffer and is called for every input chunk (taking special
+       care over the boundary cases).
+    
+       * src/interpret.c: (main):
+       * src/iso2022.c: (_vte_iso2022_fragment_input),
+       (process_8_bit_sequence), (process_cdata), (_vte_iso2022_process):
+       * src/iso2022.h:
+       * src/vte-private.h:
+       * src/vte.c: (get_chunk), (release_chunk), (prune_chunks),
+       (_vte_incoming_chunks_release), (_vte_incoming_chunks_length),
+       (_vte_incoming_chunks_count), (_vte_incoming_chunks_reverse),
+       (vte_terminal_match_check_internal), (_vte_terminal_ensure_cursor),
+       (vte_terminal_set_colors), (_vte_terminal_insert_char),
+       (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
+       (vte_terminal_io_read), (vte_terminal_feed), (vte_terminal_send),
+       (vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
+       (remove_from_active_list), (need_processing), (update_regions),
+       (update_repeat_timeout):
+       * src/vte.h:
+       * src/vteseq.c: (vte_sequence_handler_cb),
+       (vte_sequence_handler_ce), (vte_sequence_handler_ec):
+    
+    
+    
+    svn path=/trunk/; revision=1612
+
+ ChangeLog         |   36 ++++
+ src/interpret.c   |    3 +-
+ src/iso2022.c     |   61 +++----
+ src/iso2022.h     |    5 +-
+ src/vte-private.h |    9 +-
+ src/vte.c         |  470 ++++++++++++++++++++++++++++++++++++++---------------
+ src/vte.h         |    1 -
+ src/vteseq.c      |   17 +--
+ 8 files changed, 422 insertions(+), 180 deletions(-)
+
+commit d5defbeda929f31723f2a571e0f387d11d7c15e0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 16:06:50 2007 +0000
+
+    Store whether the codeset is ambiguous in a state variable, rather than
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Store whether the codeset is ambiguous in a state variable,
+       rather than every processing loop.
+    
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_state_new), (_vte_iso2022_find_nextctl):
+    
+    
+    svn path=/trunk/; revision=1611
+
+ ChangeLog     |    8 ++++++++
+ src/iso2022.c |   18 ++++++++----------
+ 2 files changed, 16 insertions(+), 10 deletions(-)
+
+commit 5e903c991928a6f3d111f9604e85618d78bfe930
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 16:03:39 2007 +0000
+
+    Remove zero-initialisers after g_slice_new0(). Print out the width range.
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtexft.c: (_vte_xft_create), (_vte_xft_destroy):
+               Remove zero-initialisers after g_slice_new0().
+       * src/vtexft.c :(_vte_xft_set_text_font):
+               Print out the width range.
+    
+    
+    svn path=/trunk/; revision=1610
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |   23 +++++++++++------------
+ 2 files changed, 18 insertions(+), 12 deletions(-)
+
+commit 8099a6296069fafcbf8d5879704b401ea9ae374b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 16:01:15 2007 +0000
+
+    Missing space between -Wflags.
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       * configure.in:
+               Missing space between -Wflags.
+    
+    
+    svn path=/trunk/; revision=1609
+
+ ChangeLog    |    5 +++++
+ configure.in |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 2bb339aaaae27e50956cf0bb71bb3c87a72707a5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Feb 4 16:00:20 2007 +0000
+
+    Eliminate the temporary g_sliced parameter list, in favour of on-stack
+    
+    2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+    
+       Eliminate the temporary g_sliced parameter list,
+       in favour of on-stack list.
+    
+       * src/table.c: (_vte_table_arginfo_head_init),
+       (_vte_table_arginfo_alloc), (_vte_table_arginfo_head_revert),
+       (_vte_table_arginfo_head_reverse),
+       (_vte_table_arginfo_head_finalize), (_vte_table_addi),
+       (_vte_table_matchi), (_vte_table_extract_string),
+       (_vte_table_match):
+    
+    
+    svn path=/trunk/; revision=1608
+
+ ChangeLog   |   12 ++++
+ src/table.c |  205 +++++++++++++++++++++++++++++++++++++----------------------
+ 2 files changed, 140 insertions(+), 77 deletions(-)
+
+commit ed896a8f250dbfbe065e711e2557919a4e403d1d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 2 12:37:13 2007 +0000
+
+    Dump the chosen fonts to VTE_DEBUG_MISC. Print out the font metrics ala
+    
+    2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+               Dump the chosen fonts to VTE_DEBUG_MISC.
+       * src/vteft2.c: (_vte_ft2_set_text_font):
+               Print out the font metrics ala vtexft.c
+    
+    
+    svn path=/trunk/; revision=1607
+
+ ChangeLog    |    7 +++++++
+ src/vtefc.c  |   11 +++++++++++
+ src/vteft2.c |    5 +++++
+ 3 files changed, 23 insertions(+), 0 deletions(-)
+
+commit 38870b35c051b21d6ce9aa3ed9c34cc9d9051271
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 2 12:27:03 2007 +0000
+
+    Bug 322241 – Please switch to pkg-config to check for freetype
+    
+    2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 322241 – Please switch to pkg-config to check for freetype
+    
+       * configure.in:
+               Prefer to use the freetype2.pc if available.
+    
+    
+    svn path=/trunk/; revision=1606
+
+ ChangeLog    |    7 +++++++
+ configure.in |   10 +++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 05b0b2d1f64a6c9208930e43f2b81ec5106c50e7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Feb 2 12:12:08 2007 +0000
+
+    Bug 322240 – Usage of pkg-config privates header
+    
+    2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 322240 – Usage of pkg-config privates header
+    
+       * vte.pc.in:
+               Move @FT2_LIBS@ to Libs.private.
+    
+    
+    svn path=/trunk/; revision=1605
+
+ ChangeLog |    7 +++++++
+ vte.pc.in |    3 ++-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 1d2b8bf16d531efd4d649daf4a09b3f68514fac4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 1 23:26:45 2007 +0000
+
+    cf Bug 403275 – crash in Terminal: I was typing reset on th...
+    
+    2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       cf Bug 403275 – crash in Terminal: I was typing reset on th...
+    
+       Not the crash, just a freeze found whilst trying to reproduce the
+       bug on trunk.
+    
+       * src/vte.c: (remove_from_active_list):
+               Don't remove the terminal from the active list if it still
+               has pending redraws.
+    
+       * src/vte.c: (process_timeout), (update_timeout):
+               Reorder the loop to remove the terminal from the active list
+               if it no longer needs processing.
+    
+    
+    svn path=/trunk/; revision=1604
+
+ ChangeLog |   15 +++++++++++++++
+ src/vte.c |   12 +++++++-----
+ 2 files changed, 22 insertions(+), 5 deletions(-)
+
+commit 40584615bfa12c0c3dba969f11dea6fb63617fb5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 1 22:46:02 2007 +0000
+
+    Extract the bits the test needs out of debian.vim.
+    
+    2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       * perf/scroll.vim:
+               Extract the bits the test needs out of debian.vim.
+    
+    
+    svn path=/trunk/; revision=1603
+
+ ChangeLog       |    5 +++++
+ perf/scroll.vim |   11 ++++++++++-
+ 2 files changed, 15 insertions(+), 1 deletions(-)
+
+commit c83dd80e28ef70bbfb8423e976086a79c038533b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 1 16:20:23 2007 +0000
+
+    As spotted on bug 399617c8, we convert an array of unichars to a string
+    
+    2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       As spotted on bug 399617c8, we convert an array of unichars to a
+       string and then iterate over the string interpreting bytes as
+       unichars.
+    
+       * src/table.c: (_vte_table_extract_numbers):
+               Dispense with the temporary string and process the unichar
+               array directly.
+    
+    
+    svn path=/trunk/; revision=1602
+
+ ChangeLog   |   10 ++++++++++
+ src/table.c |   21 ++++++---------------
+ 2 files changed, 16 insertions(+), 15 deletions(-)
+
+commit 5e11ab51348ff7bb01e0afac8058c044bc6750bb
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 1 10:31:04 2007 +0000
+
+    Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386
+    
+    2007-02-01  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386
+    
+       * src/vtexft.c: (_vte_xft_clip):
+               Precompute clip offsets.
+    
+    
+    svn path=/trunk/; revision=1601
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |    9 ++++++---
+ 2 files changed, 13 insertions(+), 3 deletions(-)
+
+commit 31b9530f77e559b507960e9090ae8ff37deeb0cc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Feb 1 00:32:13 2007 +0000
+
+    Bug 382245 – __PyGtk_API multiply defined in python module
+    
+    2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 382245 – __PyGtk_API multiply defined in python module
+    
+       * configure.in:
+               Add -fno-common to MAYBE_WARN in order to catch future
+               errors of this type.
+       * python/vte.override:
+               Define PYGTK_NO_IMPORT.
+    
+    
+    svn path=/trunk/; revision=1600
+
+ ChangeLog           |   10 ++++++++++
+ configure.in        |    3 ++-
+ python/vte.override |    1 +
+ 3 files changed, 13 insertions(+), 1 deletions(-)
+
+commit 086175a78cd41fd877e8182e2be25071b73c490d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 23:15:11 2007 +0000
+
+    Bug 155687 – Scroll region \E[NN;MMr should set cursor to home
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 155687 – Scroll region \E[NN;MMr should set cursor to home
+    
+       Patch originally by Michele Baldessari.
+    
+       * src/vteseq.c: (vte_sequence_handler_cs):
+               Move the cursor to (0,0) rather than clamping the cursor to
+               be inside the scroll region.
+    
+    
+    svn path=/trunk/; revision=1599
+
+ ChangeLog    |   10 ++++++++++
+ src/vteseq.c |    6 ++----
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+commit f66bd6eba689911aa939a017601777b9a738cbf6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 22:22:53 2007 +0000
+
+    In a few places the contents of a GValue were being used without checking
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       In a few places the contents of a GValue were being used without
+       checking that they were of the expected type.
+    
+       cf Bug 117945 which mentions stack corruption inside
+       vte_sequence_handler_delete_lines() - one of the corrected instances.
+    
+       * src/vteseq.c: (vte_sequence_handler_al),
+       (vte_sequence_handler_cs), (vte_sequence_handler_cS),
+       (vte_sequence_handler_dl),
+       (vte_sequence_handler_character_attributes),
+       (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines),
+       (vte_sequence_handler_device_status_report),
+       (vte_sequence_handler_dec_device_status_report):
+               Check that the GValue holds a long before dereference.
+    
+    
+    svn path=/trunk/; revision=1598
+
+ ChangeLog    |   18 +++++
+ src/vteseq.c |  216 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 135 insertions(+), 99 deletions(-)
+
+commit 469132e1784df0ff7d0751b532806d5ebbf5acb9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 21:07:46 2007 +0000
+
+    Back to the old-style io loop as _vte_buffer_append() is too slow - on a
+    
+    2007-01-31  Chris Wilson <chris chris-wilson co uk>
+    
+       Back to the old-style io loop as _vte_buffer_append() is too slow - on
+       a slow system the read can fill before the data is copied (even more
+       apparent under valgrind).
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+    
+    
+    svn path=/trunk/; revision=1597
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   17 +++++++++++------
+ 3 files changed, 21 insertions(+), 7 deletions(-)
+
+commit edcf192995f5ca7daabfea981e23ff30a1500271
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 19:50:59 2007 +0000
+
+    Use the display stashed inside the font and not the default display!
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use the display stashed inside the font and not the default display!
+    
+       * src/vtexft.c: (_vte_xft_char_exists), (_vte_xft_text_extents),
+       (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_draw_text):
+    
+    
+    svn path=/trunk/; revision=1596
+
+ ChangeLog    |    8 ++++++++
+ src/vtexft.c |   36 ++++++++++--------------------------
+ 2 files changed, 18 insertions(+), 26 deletions(-)
+
+commit e382c37eb053b6bdea1f293d9aa93fac4e36f519
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 19:02:10 2007 +0000
+
+    A mixed bag of cleanups.
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       A mixed bag of cleanups.
+    
+       * configure.in:
+       * src/pty.c: (_vte_pty_set_utf8):
+               Test for existence of tc[sg]etattr.
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_set_color_internal), (vte_terminal_handle_sequence),
+       (_vte_terminal_enable_input_source), (vte_terminal_io_read),
+       (vte_terminal_init), (vte_terminal_unrealize),
+       (vte_terminal_finalize), (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_emit_pending_signals), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+               Move idle signal emission to display handlers.
+       * src/vtedraw.h:
+               Add '&' to the single width characters.
+       * src/vteseq.c: (_vte_sequence_get_handler):
+       * src/vteseq.h:
+               Drop the extraneous GQuark parameter.
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Avoid use of strlen for a compile-time fixed length string.
+    
+    
+    svn path=/trunk/; revision=1595
+
+ ChangeLog         |   26 ++++++++++
+ configure.in      |    2 +-
+ src/pty.c         |   14 +++---
+ src/vte-private.h |    4 +-
+ src/vte.c         |  137 +++++++++++++++++++++++++++-------------------------
+ src/vtedraw.h     |    2 +-
+ src/vteseq.c      |    3 +-
+ src/vteseq.h      |    3 +-
+ src/vtexft.c      |    2 +-
+ 9 files changed, 111 insertions(+), 82 deletions(-)
+
+commit 7134bd1fe35596343ef2b919e7ef14a5e1bc6a6c
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Jan 31 15:37:04 2007 +0000
+
+    Dropped a most important '!' during last merge.
+    
+    
+    svn path=/trunk/; revision=1594
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c9280a87e0f27b3caf3948196a7cf5f78b06d7f0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 15:01:36 2007 +0000
+
+    Bug 147784 – cursor unvisible under mouse highlight
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 147784 – cursor unvisible under mouse highlight
+    
+       Original patch by Chris Health
+    
+       * src/vte.c: (vte_terminal_paint):
+               Reverse cursor color if it is in the selected region and draw
+               it as an outline.
+    
+    
+    svn path=/trunk/; revision=1593
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   53 ++++++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 44 insertions(+), 19 deletions(-)
+
+commit dfd5c7d73b0bca978bc47d5b697ba3ea6ccf668b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 13:50:56 2007 +0000
+
+    Bug 368894 – crash in Terminal: I started gnome-terminal...
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 368894 – crash in Terminal: I started gnome-terminal...
+    
+       * src/vtebg.c: (vte_bg_cache_search), (vte_bg_get_pixmap),
+       (vte_bg_get_pixbuf):
+               When retrieving a cached pixmap check that the visual
+               matches the current request.
+    
+    
+    svn path=/trunk/; revision=1592
+
+ ChangeLog   |    9 +++++++++
+ src/vtebg.c |   12 ++++++++----
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+
+commit ccf4b8470fba1441eceb54f4ec5e8410863bf9c9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 13:32:05 2007 +0000
+
+    Use gdk_error_trap_{push,pop} around raw Xft calls - about a path outside
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use gdk_error_trap_{push,pop} around raw Xft calls - about a
+       path outside of vte_draw_{begin,end}.
+    
+       * src/vtexft.c: (_vte_xft_set_text_font):
+    
+    
+    svn path=/trunk/; revision=1591
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |    4 ++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 9105d7d5bbcc70bfab88840f262b5efe40e75cb0
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 13:27:17 2007 +0000
+
+    Use gdk_error_trap_{push,pop} around raw X11 and Xft calls. cf Bug 368894.
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use gdk_error_trap_{push,pop} around raw X11 and Xft calls.
+       cf Bug 368894.
+    
+       * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_start),
+       (_vte_xft_end):
+    
+    
+    svn path=/trunk/; revision=1590
+
+ ChangeLog    |    8 ++++++++
+ src/vtexft.c |   22 ++++++++++------------
+ 2 files changed, 18 insertions(+), 12 deletions(-)
+
+commit 6d4d2801a11d56fcf92896b0bab3f2de8c9fd377
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 12:33:56 2007 +0000
+
+    Use gperf to calculate a more optimal vte_sequence_get_handler(). This
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Use gperf to calculate a more optimal vte_sequence_get_handler().
+       This reduces vte_sequence_get_handler() from ~13% of the runtime
+       during 'seq 1 1e6' to ~.5% (cumulative).
+    
+       * src/Makefile.am:
+       * src/vteseq-2.c: (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.c: (vteseq_n_hash), (vteseq_n_lookup):
+       * src/vteseq-n.gperf:
+       * src/vteseq.c: (_vte_sequence_get_handler):
+    
+    
+    svn path=/trunk/; revision=1589
+
+ ChangeLog          |   13 +
+ src/Makefile.am    |   11 +
+ src/vteseq-2.c     | 1246 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteseq-2.gperf |  274 ++++++++++++
+ src/vteseq-n.c     |  815 ++++++++++++++++++++++++++++++++++
+ src/vteseq-n.gperf |  111 +++++
+ src/vteseq.c       |   61 +---
+ 7 files changed, 2476 insertions(+), 55 deletions(-)
+
+commit e427710779ab6d2dbd28f392a300b30311620705
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Jan 31 11:05:24 2007 +0000
+
+    And the ChangeLog entry for the last commit. Grrr.
+    
+    svn path=/trunk/; revision=1588
+
+ ChangeLog |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 87693a8b96dd1516e25d791208c5e8d764f4ee46
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 31 10:59:42 2007 +0000
+
+    Rudimentary vim scrolling benchmark.
+    
+    2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+    
+       Rudimentary vim scrolling benchmark.
+    
+       * perf/Makefile.am:
+       * perf/UTF-8-demo.txt:
+       * perf/scroll.vim:
+       * perf/vim.sh:
+    
+    
+    svn path=/trunk/; revision=1587
+
+ perf/Makefile.am    |    3 +
+ perf/UTF-8-demo.txt |  212 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ perf/scroll.vim     |   32 ++++++++
+ perf/vim.sh         |    7 ++
+ 4 files changed, 254 insertions(+), 0 deletions(-)
+
+commit d860aa616596055c0c64a47c9255f294e700429e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jan 30 19:43:06 2007 +0000
+
+    Bug 402329 – Rendering problem with underlines and cursor
+    
+    2007-01-30  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 402329 – Rendering problem with underlines and cursor
+    
+       * src/vte.c: (vte_terminal_paint):
+               Check hilite state when redrawing character under cursor.
+    
+    
+    svn path=/trunk/; revision=1586
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   22 ++++++++++++++++++++--
+ 2 files changed, 27 insertions(+), 2 deletions(-)
+
+commit 60cd6a884d3dddafac9342fdfdb12ebe58dc7cc5
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Tue Jan 30 17:52:12 2007 +0000
+
+    fix trivial compile error in last commit
+    
+    svn path=/trunk/; revision=1585
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b48efa17a8fc1671f64a3fe96f8178b4ffd3a98b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jan 30 17:45:04 2007 +0000
+
+    Clean up the read IO loop.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+               Clean up the read IO loop.
+    
+    
+    svn path=/trunk/; revision=1584
+
+ ChangeLog         |    6 ++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   39 ++++++++++++++++++---------------------
+ 3 files changed, 25 insertions(+), 22 deletions(-)
+
+commit a180e29a504fa25240d3208a5470cfa875678f25
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 17:46:12 2007 +0000
+
+    NULL return from pcre_study() does not necessarily mean an error occurred.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       NULL return from pcre_study() does not necessarily mean an error
+       occurred.
+    
+       * src/vteregex.c: (_vte_regex_compile), (_vte_regex_exec):
+    
+    
+    svn path=/trunk/; revision=1580
+
+ ChangeLog      |    7 +++++++
+ src/vteregex.c |    6 +++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 63ef7cf260fe280afd0b5d5ca99aea38bf8931bf
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 17:34:32 2007 +0000
+
+    Kill a couple more compiler warnings.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_terminal_set_pointer_visible),
+       (_vte_terminal_fudge_pango_colors):
+               Kill a couple more compiler warnings.
+    
+    
+    svn path=/trunk/; revision=1579
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 ++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 9814f9e5cb46a98f1ee7abf18d8d2074e686796b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 17:14:57 2007 +0000
+
+    Bug 336105 – gnome-terminal crashes when termcap not found
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 336105 – gnome-terminal crashes when termcap not found
+    
+       * src/matcher.c: (_vte_matcher_init):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_default_tabstops),
+       (vte_terminal_key_press), (vte_terminal_set_emulation),
+       (_vte_terminal_inline_error_message), (vte_terminal_set_termcap),
+       (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_draw_cells):
+               Detect and issue an inline warning when we fail
+               to load a termcap.
+    
+    
+    svn path=/trunk/; revision=1578
+
+ ChangeLog         |   14 ++++++
+ src/matcher.c     |   53 +++++++++++----------
+ src/vte-private.h |    2 +
+ src/vte.c         |  129 +++++++++++++++++++++++++++++++++--------------------
+ 4 files changed, 124 insertions(+), 74 deletions(-)
+
+commit 4deb919b44bdf2af9b0fb7c333b56e44ad64406c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 16:47:17 2007 +0000
+
+    Tighten the invalidated cells.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Tighten the invalidated cells.
+    
+       * src/vte.c: (_vte_terminal_select_text):
+       * src/vteseq.c: (vte_sequence_handler_cb):
+    
+    
+    svn path=/trunk/; revision=1577
+
+ ChangeLog    |    7 ++++
+ src/vte.c    |   91 ++++++++++++++++++++++++++++-----------------------------
+ src/vteseq.c |    2 +-
+ 3 files changed, 53 insertions(+), 47 deletions(-)
+
+commit 136c800352d416d7c4257b211653a4412173b4e3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 16:20:47 2007 +0000
+
+    More compiler warnings.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       More compiler warnings.
+    
+       * src/vtepangox.c: (_vte_pango_x_set_text_font),
+       (_vte_pango_x_draw_text):
+       * src/vteregex.c: (_vte_regex_exec):
+    
+    
+    svn path=/trunk/; revision=1576
+
+ ChangeLog       |    8 ++++++++
+ src/vtepangox.c |    5 ++---
+ src/vteregex.c  |   26 +++++++++++++-------------
+ 3 files changed, 23 insertions(+), 16 deletions(-)
+
+commit 4458f91bcb21c9bec6584b2d9ff2efff6d8b6f8d
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 29 16:12:24 2007 +0000
+
+    Whitespace touch-up.
+    
+    svn path=/trunk/; revision=1575
+
+ configure.in |   18 ++++++++++--------
+ 1 files changed, 10 insertions(+), 8 deletions(-)
+
+commit 20763c0f09f499c33da5ac368beed75afb34e152
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 16:09:02 2007 +0000
+
+    Detect availability of PCRE.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Detect availability of PCRE.
+    
+       * configure.in:
+       * src/Makefile.am:
+    
+    
+    svn path=/trunk/; revision=1574
+
+ ChangeLog       |    7 +++++++
+ configure.in    |   16 ++++++++++++++++
+ src/Makefile.am |    4 ++--
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+commit e1ecd0b2aa1391728dae48539b70c04c68b66371
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 15:21:20 2007 +0000
+
+    Improve handling of multi-row clears.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Improve handling of multi-row clears.
+    
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+    
+    
+    svn path=/trunk/; revision=1573
+
+ ChangeLog |    7 ++++
+ src/vte.c |  112 +++++++++++++++++++++++--------------------------------------
+ 2 files changed, 49 insertions(+), 70 deletions(-)
+
+commit 7707048400d6e77e63c31fc17eadeec51f0028c9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 14:53:34 2007 +0000
+
+    Add debugging flags for printing out cells contents and attributes as they
+    
+    2007-01-29  Chris Wilson <chris chris-wilson co uk>
+    
+       Add debugging flags for printing out cells contents and attributes as
+       they are rendered.
+    
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+               * src/vte.c: (vte_terminal_draw_cells):
+    
+    
+    svn path=/trunk/; revision=1572
+
+ ChangeLog    |    9 +++++++++
+ src/debug.c  |    3 +++
+ src/debug.h  |    3 ++-
+ src/vte.c    |   11 +++++++++++
+ src/vteft2.c |    2 +-
+ src/vtexft.c |    2 +-
+ 6 files changed, 27 insertions(+), 3 deletions(-)
+
+commit 55ffe367655986fac869408447c7f6527e085e6d
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 29 14:41:24 2007 +0000
+
+    another small missing compare from last commit
+    
+    svn path=/trunk/; revision=1571
+
+ src/vte.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 301ab762f28f108d652cbb4fafbcd4a4991e74b3
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 29 14:40:09 2007 +0000
+
+    small missing compare from last commit
+    
+    svn path=/trunk/; revision=1570
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7a2047f1d42891731b7badbeecff41c70b7a5404
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 14:36:51 2007 +0000
+
+    Don't issue glyph items for blank cells.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't issue glyph items for blank cells.
+    
+    
+    svn path=/trunk/; revision=1569
+
+ ChangeLog |    5 +++++
+ src/vte.c |   54 +++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 36 insertions(+), 23 deletions(-)
+
+commit 39039a31520471520cac6e5ce642827cc33e74c6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 13:30:50 2007 +0000
+
+    Add -Wshadow to MAYBE_WARN
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * configure.in:
+               Add -Wshadow to MAYBE_WARN
+       * src/ring.c: (_vte_ring_remove):
+       * src/table.c: (_vte_table_matchi):
+       * src/vtedraw.c: (_vte_draw_clip):
+       * src/vteskel.c:
+               Clean up some compiler warnings.
+    
+    
+    svn path=/trunk/; revision=1568
+
+ ChangeLog     |   10 ++++++++++
+ configure.in  |    2 +-
+ src/ring.c    |    2 +-
+ src/table.c   |    9 +++++----
+ src/vtedraw.c |    2 +-
+ src/vteskel.c |    2 +-
+ 6 files changed, 19 insertions(+), 8 deletions(-)
+
+commit 541b505fd9b945f4f2838fc0ff82e3ea23783d7b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 13:21:30 2007 +0000
+
+    Add the NULL clip func to the skeleton function table.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteskel.c:
+               Add the NULL clip func to the skeleton function table.
+    
+    
+    svn path=/trunk/; revision=1567
+
+ ChangeLog     |    5 +++++
+ src/vteskel.c |    1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 08b8edba642cd09a8ab32ca3dec289df537374f3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 13:06:20 2007 +0000
+
+    Update match hilite before showing the pointer as the choice of cursor
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Update match hilite before showing the pointer as the choice of
+       cursor depends on whether the pointer is above a matched region.
+    
+       * src/vte.c: (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release):
+    
+    
+    svn path=/trunk/; revision=1566
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   32 +++++++++++++++++---------------
+ 2 files changed, 25 insertions(+), 15 deletions(-)
+
+commit 345f7d53277d1e29f768bc8e163c148000e3f83c
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 29 12:45:17 2007 +0000
+
+    missed the ChangeLog entry
+    
+    svn path=/trunk/; revision=1565
+
+ ChangeLog |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit ac1b3dd29d8110aa1fa645bef4f847abfa825263
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 12:38:55 2007 +0000
+
+    Only update the matched region if we move the pointer outside of the
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       Only update the matched region if we move the pointer outside of the
+       currently matched region.
+       And only invalidate the cells underneath the matched region.
+    
+       * src/vte.c: (_vte_invalidate_region),
+       (vte_terminal_match_hilite_clear), (cursor_inside_match),
+       (vte_terminal_match_hilite), (vte_terminal_draw_rows):
+    
+    
+    svn path=/trunk/; revision=1564
+
+ ChangeLog |    8 +++++
+ src/vte.c |   96 ++++++++++++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 75 insertions(+), 29 deletions(-)
+
+commit 3642bbe5eee21d433e0c76b0432dd53a1c3e8e94
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 11:45:00 2007 +0000
+
+    Fix a memleak.
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/table.c: (_vte_table_free):
+               Fix a memleak.
+    
+    
+    svn path=/trunk/; revision=1563
+
+ ChangeLog   |    5 +++++
+ src/table.c |    3 +++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit fb7c1e15c6ccab35857820ca95e1a6c99c2fa06e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 11:00:47 2007 +0000
+
+    ==26147== 2,895 (352 direct, 2,543 indirect) bytes in 22 blocks are
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       ==26147== 2,895 (352 direct, 2,543 indirect) bytes in 22 blocks are definitely lost in loss record 
107 of 170
+       ==26147==    at 0x4021380: malloc (vg_replace_malloc.c:149)
+       ==26147==    by 0x4E85965: g_malloc (gmem.c:131)
+       ==26147==    by 0x4E95537: g_slice_alloc (gslice.c:777)
+       ==26147==    by 0x4E7C255: g_list_prepend (glist.c:95)
+       ==26147==    by 0x428B887: vte_terminal_feed (vte.c:10991)
+       ==26147==    by 0x429DD20: vte_terminal_io_read (vte.c:3214)
+       ==26147==    by 0x4EA7A8C: g_io_unix_dispatch (giounix.c:162)
+       ==26147==    by 0x4E7E481: g_main_context_dispatch (gmain.c:2045)
+       ==26147==    by 0x4E8145E: g_main_context_iterate (gmain.c:2677)
+       ==26147==    by 0x4E81808: g_main_loop_run (gmain.c:2881)
+       ==26147==    by 0x45BA503: gtk_main (gtkmain.c:1148)
+       ==26147==    by 0x805F7A3: main (terminal.c:1773)
+    
+       * src/vte.c: (remove_from_active_list), (process_timeout),
+       (update_repeat_timeout):
+               g_list_delete_link() is the one that actually frees the link.
+               s/g_list_remove_link/g_list_delete_link/.
+    
+    
+    svn path=/trunk/; revision=1562
+
+ ChangeLog |   21 +++++++++++++++++++++
+ src/vte.c |    6 +++---
+ 2 files changed, 24 insertions(+), 3 deletions(-)
+
+commit ba77eff2c8b3d5ad653a1c715a9c300fc7d56957
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 10:59:01 2007 +0000
+
+    ==26147== Conditional jump or move depends on uninitialised value(s)
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       ==26147== Conditional jump or move depends on uninitialised value(s)
+       ==26147==    at 0x42AB9F7: _vte_rdb_search (vterdb.c:95)
+       ==26147==    by 0x42ABB40: _vte_rdb_quark (vterdb.c:201)
+       ==26147==    by 0x42ABB9F: _vte_rdb_get_hintstyle (vterdb.c:241)
+       ==26147==    by 0x42A7952: _vte_fc_patterns_from_pango_font_desc (vtefc.c:302)
+       ==26147==    by 0x42B4E9B: _vte_xft_set_text_font (vtexft.c:103)
+       ==26147==    by 0x42A6BE5: _vte_draw_set_text_font (vtedraw.c:258)
+       ==26147==    by 0x428C62B: vte_terminal_ensure_font (vte.c:5963)
+       ==26147==    by 0x4290295: vte_terminal_size_request (vte.c:6613)
+       ==26147==    by 0x4E25228: g_cclosure_marshal_VOID__BOXED (gmarshal.c:566)
+       ==26147==    by 0x4E17038: g_type_class_meta_marshal (gclosure.c:567)
+       ==26147==    by 0x4E188FC: g_closure_invoke (gclosure.c:490)
+       ==26147==    by 0x4E29779: signal_emit_unlocked_R (gsignal.c:2370)
+       ==26147==
+    
+       * src/vterdb.c: (_vte_rdb_get):
+               Check the result of the get_property_string before using the
+               returned values.
+    
+    
+    svn path=/trunk/; revision=1561
+
+ ChangeLog    |   21 +++++++++++++++++++++
+ src/vterdb.c |   12 ++++++------
+ 2 files changed, 27 insertions(+), 6 deletions(-)
+
+commit 9a0a78fa5ea84e91c5d440d701eec8780e5daa78
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 29 09:42:55 2007 +0000
+
+    back out the "innoculous, little" change
+    
+    svn path=/trunk/; revision=1560
+
+ src/vte.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 17a656976fbbf5be1843c54b079e46ef77be21aa
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 29 09:29:52 2007 +0000
+
+    Merge draw_cells() with the background clear, as generating items for many
+    
+    2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows):
+               Merge draw_cells() with the background clear, as generating
+               items for many rows and then splitting again in draw cells is
+               simply inefficient.
+    
+    
+    svn path=/trunk/; revision=1559
+
+ ChangeLog |   11 ++++++-
+ src/vte.c |   89 +++++++++++++++----------------------------------------------
+ 2 files changed, 31 insertions(+), 69 deletions(-)
+
+commit 464919dcb403e72ecb064b3c19e2f278264d4c5b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sun Jan 28 22:55:18 2007 +0000
+
+    Bug 401215 – Multi-pass renderering
+    
+    2007-01-28  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 401215 – Multi-pass renderering
+    
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_clear_cells),
+       (vte_terminal_draw_cells_with_attributes),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+               Break the draw_rows() loop into two passes - first clear the
+               background and second render the text.
+               Add another function based on draw_cells() that just clears the
+               background and make clearing the background optional in
+               draw_cells() - updating callers accordingly.
+               Adventurous souls are required to clean up draw_rows().
+    
+    
+    svn path=/trunk/; revision=1558
+
+ ChangeLog |   14 +++++
+ src/vte.c |  184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 183 insertions(+), 15 deletions(-)
+
+commit 77bc976748412206136316800c5092d3a5e72b2e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 27 21:25:19 2007 +0000
+
+    Fix compilation *with* debugging enable. Grrr.
+    
+    2007-01-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       Fix compilation *with* debugging enable.
+       Grrr.
+    
+       * src/keymap.c: (_vte_keysym_print):
+    
+    
+    svn path=/trunk/; revision=1557
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |   18 +++++++++---------
+ 2 files changed, 16 insertions(+), 9 deletions(-)
+
+commit b2f17a431aa9ca64f9143e97610e2ff83f9247c7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 27 18:33:55 2007 +0000
+
+    Fix compilation without debugging enable.
+    
+    2007-01-27  Chris Wilson  <chris chris-wilson co uk>
+    
+       Fix compilation without debugging enable.
+    
+       * src/keymap.c: (_vte_keysym_print), (_vte_keymap_map):
+       * src/vte.c: (display_control_sequence):
+       * src/vteapp.c: (main):
+    
+    
+    svn path=/trunk/; revision=1556
+
+ ChangeLog    |    8 ++++
+ src/keymap.c |  121 ++++++++++++++++++++++++++++++++++-----------------------
+ src/vte.c    |    4 +-
+ src/vteapp.c |    2 -
+ 4 files changed, 82 insertions(+), 53 deletions(-)
+
+commit f17c947d6b3ce470f65d32b28349532804f8f4c5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 23:03:56 2007 +0000
+
+    Provide a safe fallback for non-C99 compilers (well actually anything that
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/debug.h:
+               Provide a safe fallback for non-C99 compilers (well actually
+               anything that isn't a recent gcc at the moment).
+    
+    
+    svn path=/trunk/; revision=1555
+
+ ChangeLog   |    6 ++++++
+ src/debug.h |   14 ++++++++++++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 1814e0b3bac34f5347b38df011adeb901a249dd9
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Jan 26 22:49:39 2007 +0000
+
+    Update ChangeLog to include original author.
+    
+    
+    svn path=/trunk/; revision=1554
+
+ ChangeLog |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit d6c99f12da7c00a9c52ef752df37ce6bb5c8e467
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 22:42:52 2007 +0000
+
+    Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input style
+    
+       * src/vte.c: (_vte_terminal_fudge_pango_colors):
+               Check the attributes for each cell rather than assuming the
+               pango attributes (and cell attributes) are the same for the
+               whole string.
+    
+    
+    svn path=/trunk/; revision=1553
+
+ ChangeLog |    9 ++++++++
+ src/vte.c |   63 +++++++++++++++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 54 insertions(+), 18 deletions(-)
+
+commit 24f2395dade2d8334e34f6e7f2252cd4d102d8b3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 21:40:45 2007 +0000
+
+    Iterating over all queued exposures and drawing on top of the flash does
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vteseq.c: (vte_sequence_handler_vb):
+               Iterating over all queued exposures and drawing on top of the
+               flash does not sense. Simply flush the draw.
+    
+    
+    svn path=/trunk/; revision=1552
+
+ ChangeLog    |    6 ++++++
+ src/vteseq.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 124a489f0781fb0b7eb96cf814aa3b5f68db318c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 21:24:24 2007 +0000
+
+    s/_VTE_DEBUG_ON/_VTE_DEBUG_IF/ and don't include the code block inside the
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       s/_VTE_DEBUG_ON/_VTE_DEBUG_IF/ and don't include
+       the code block inside the macro.
+    
+       * src/debug.h:
+       * src/iso2022.c: (process_control), (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/matcher.c: (_vte_matcher_init):
+       * src/pty.c: (_vte_pty_run_on_pty):
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_extract_numbers), (_vte_table_match):
+       * src/trie.c: (_vte_trie_addx):
+       * src/vte.c: (vte_terminal_match_check_internal),
+       (vte_terminal_match_check), (vte_terminal_handle_sequence),
+       (vte_terminal_catch_child_exited), (vte_terminal_process_incoming),
+       (vte_terminal_io_write), (vte_terminal_send),
+       (vte_terminal_key_press), (vte_terminal_copy_cb),
+       (vte_terminal_set_font_full), (vte_terminal_realize),
+       (vte_terminal_paint), (vte_terminal_scroll):
+       * src/vteapp.c: (main):
+       * src/vtebg.c: (vte_bg_root_pixmap):
+    
+    
+    svn path=/trunk/; revision=1551
+
+ ChangeLog     |   23 ++++++++
+ src/debug.h   |    8 +--
+ src/iso2022.c |    8 ++--
+ src/keymap.c  |    8 ++--
+ src/matcher.c |    4 +-
+ src/pty.c     |    4 +-
+ src/table.c   |  167 ++++++++++++++++++++++++++++++++-------------------------
+ src/trie.c    |    4 +-
+ src/vte.c     |   96 +++++++++++++++++----------------
+ src/vteapp.c  |    4 +-
+ src/vtebg.c   |    8 ++--
+ 11 files changed, 189 insertions(+), 145 deletions(-)
+
+commit f3d61703c42e8f98f9011fbaa40f3d149a0cc1d4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 21:08:55 2007 +0000
+
+    Bug 400834 – Use a global display/process timeout
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 400834 – Use a global display/process timeout
+    
+       Currently each terminal uses it own display timeout. Given that
+       typical usage is several active terminals, there is an immediate
+       advantage (context switches, fairness, smoothness) to using a single
+       common timeout.
+    
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+               Add VTE_DEBUG_TIMEOUT
+       * src/vte-private.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_init),
+       (vte_terminal_class_init), (add_update_timeout),
+       (remove_from_active_list), (remove_update_timeout),
+       (add_process_timeout), (vte_terminal_stop_processing),
+       (vte_terminal_is_processing), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+               Modify to use a global timeout rather than individual
+               private timeouts.
+    
+    
+    svn path=/trunk/; revision=1550
+
+ ChangeLog         |   23 +++++
+ src/debug.c       |    3 +
+ src/debug.h       |    3 +-
+ src/vte-private.h |    5 +-
+ src/vte.c         |  250 ++++++++++++++++++++++++++++++++++++++---------------
+ 5 files changed, 211 insertions(+), 73 deletions(-)
+
+commit c88af9417d2414bc843058585592c71632e57a2e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 21:04:19 2007 +0000
+
+    Unable to set background scrolling mode from cmdline due to variable name
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Unable to set background scrolling mode from cmdline due to variable
+       name confusion.
+    
+       * src/vteapp.c: (main):
+               --scroll should set scroll=TRUE rather than cursor=TRUE!
+    
+    
+    svn path=/trunk/; revision=1549
+
+ ChangeLog    |    8 ++++++++
+ src/vteapp.c |    2 +-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit ff948c92ee3406bd63c9e44072faa76b1daff216
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 20:57:15 2007 +0000
+
+    Bug 401082 – double-draw issue
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 401082 – double-draw issue
+    
+       The main cause of this bug was not expanding the cleared area to cover
+       all the cells affected by the draw and forgetting to offset the clear
+       by VTE_PAD_WIDTH.
+    
+       To counter the performance hit due to the expanded repaint area, each
+       backend is presented with the opportunity to apply a clip to the
+       exposed region before painting.
+    
+       This also fixes bug 333157,
+    
+       * src/vte.c: (_vte_invalidate_cells), (vte_terminal_paint_area),
+       (vte_terminal_paint):
+       * src/vtedraw.c: (_vte_draw_clip):
+       * src/vtedraw.h:
+       * src/vteft2.c: (_vte_ft2_end), (_vte_ft2_clip):
+       * src/vtegl.c:
+       * src/vtepango.c: (_vte_pango_clip):
+       * src/vtepangox.c: (_vte_pango_x_clip):
+       * src/vtexft.c: (_vte_xft_clip), (_vte_xft_draw_text):
+    
+    
+    svn path=/trunk/; revision=1548
+
+ ChangeLog       |   24 +++++++++++++++++++++++
+ src/vte.c       |   57 +++++++++++++++++++++++++++++++-----------------------
+ src/vtedraw.c   |   11 ++++++++++
+ src/vtedraw.h   |    2 +
+ src/vteft2.c    |   10 +++++++++
+ src/vtegl.c     |    1 +
+ src/vtepango.c  |    8 +++++++
+ src/vtepangox.c |    8 +++++++
+ src/vtexft.c    |   28 ++++++++++++++++++++++++++-
+ 9 files changed, 124 insertions(+), 25 deletions(-)
+
+commit a4607597bfee73da5bdb18e0c658e85ae2b6b350
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 18:33:45 2007 +0000
+
+    Tighten the _vte_invalidate_cells() to only those that we potentially
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_match_hilite):
+       * src/vteseq.c: (vte_sequence_handler_ce),
+       (vte_sequence_handler_dc), (vte_sequence_handler_ec):
+               Tighten the _vte_invalidate_cells() to only those that
+               we potentially modify.
+    
+    
+    svn path=/trunk/; revision=1547
+
+ ChangeLog    |    8 ++++++++
+ src/vte.c    |   23 +++++++++++++++++------
+ src/vteseq.c |   10 +++++++---
+ 3 files changed, 32 insertions(+), 9 deletions(-)
+
+commit 189d1f5b28f5a25021ae252b74e1747beff1e3e0
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Jan 26 17:52:10 2007 +0000
+
+    Remove the surplus new line.
+    
+    svn path=/trunk/; revision=1546
+
+ ChangeLog |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit feaaa1dd7640940ca4ebbc76b8dc4c1d281cba72
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 17:35:41 2007 +0000
+
+    Remove the additional pixel inter-character spacing. Compactness over
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Remove the additional pixel inter-character spacing.
+               Compactness over clarity ;)
+    
+    
+    svn path=/trunk/; revision=1545
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 764f40ae65b2a07403a602f946f23fb0e1214877
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 17:13:20 2007 +0000
+
+    Apply a one pixel fudge to the Xft character position and width. This
+    
+    2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+    
+       Apply a one pixel fudge to the Xft character position and width.
+       This greatly improves text appearance and hides the misrendering of
+       pseudo-bold characters.
+       cf bugs 317691, 333157.
+    
+       * src/vte.c: (vte_terminal_paint):
+               Increase the cursor size to fit around the cell.
+       * src/vtexft.c: (_vte_xft_set_text_font), (_vte_xft_draw_text):
+               Fudge the Xft font positioning.
+    
+    
+    svn path=/trunk/; revision=1544
+
+ ChangeLog    |   12 ++++++++++++
+ src/vte.c    |   15 ++++++++-------
+ src/vtexft.c |    6 ++++--
+ 3 files changed, 24 insertions(+), 9 deletions(-)
+
+commit 03cd2e083db58be53a8c9a4c3236e56865ece236
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 16:18:07 2007 +0000
+
+    Bug 318307 – Cursor colour changes to foreground when unfocused
+    
+    2007-01-26  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 318307 – Cursor colour changes to foreground when unfocused
+    
+       Whilst setting the colour, tweak the position of the rectangle, and
+       extended the invalidate region to account for the OBO nature of bold
+       font.
+    
+       * src/vte.c: (_vte_invalidate_cells):
+               Include the padding to accomodate cell effects.
+       * src/vte.c: (vte_terminal_paint):
+               Use the cursor color for the rectangle when unfocused.
+    
+    
+    svn path=/trunk/; revision=1543
+
+ ChangeLog |   13 ++++++++++
+ src/vte.c |   74 ++++++++++++++++++++++++-------------------------------------
+ 2 files changed, 42 insertions(+), 45 deletions(-)
+
+commit e2c6f62d11bf42f18128272b95202477795338e0
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Jan 26 16:04:38 2007 +0000
+
+    Correctly handle visibility events: set invalidated_all to FALSE, and
+    
+    2007-01-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_visibility_notify): Correctly handle
+            visibility events: set invalidated_all to FALSE, and invalidate_all
+            if fully unobscured.
+    
+    
+    svn path=/trunk/; revision=1542
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   16 ++++++++++------
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+commit 841db8a764cb8da8f6ce1e9d53286a61ca742669
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Jan 26 15:58:58 2007 +0000
+
+    Make sure we redraw after becoming unobscured. There still is a bug that
+    
+    2007-01-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_visibility_notify): Make sure we redraw
+            after becoming unobscured.  There still is a bug that I've not found,
+            but after obscuring the widget and coming back, a first redraw
+            happens, but no update after that.
+    
+    
+    svn path=/trunk/; revision=1541
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    6 +++++-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 52efe629728970467f7b3fc21af03533775e42e3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 15:01:09 2007 +0000
+
+    Occasionally we generate an exposed area which is computed as 0x0 cells.
+    
+    2007-01-26  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_draw_area):
+               Occasionally we generate an exposed area which is computed
+               as 0x0 cells. Discard early, before we spend an infinity
+               drawing nothing.
+    
+    
+    svn path=/trunk/; revision=1540
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    6 ++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit d2dc82343a348aa22402c03b2a1677b6b73f7d5f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 14:30:30 2007 +0000
+
+    Janitorial work - near elimination of #ifdef VTE_DEBUG from within
+    
+    2007-01-26  Chris Wilson <chris chris-wilson co uk>
+    
+       Janitorial work - near elimination of #ifdef VTE_DEBUG from within
+       functions, trimming over a thousand lines of code.
+    
+       We introduce a _vte_debug_print macro to cover the more common
+       occurrence of printing a message at a certain debug level.
+       And a _VTE_DEBUG_ON for a conditional code block.
+    
+       src/debug.h     |   11
+       src/iso2022.c   |  201 ++-------
+       src/keymap.c    |   41 -
+       src/matcher.c   |   24 -
+       src/pty.c       |  134 +-----
+       src/reaper.c    |   21
+       src/ring.c      |   78 +--
+       src/table.c     |   11
+       src/trie.c      |   19
+       src/vte.c       | 1187 ++++++++++---------------------------------------
+       src/vteaccess.c |  198 +++------
+       src/vteapp.c    |   21
+       src/vtebg.c     |   43 --
+       src/vteconv.c   |   60 +-
+       src/vteconv.h   |   12
+       src/vtedraw.c   |    6
+       src/vtefc.c     |    4
+       src/vteft2.c    |    5
+       src/vteglyph.c  |   27 -
+       src/vtepango.c  |   11
+       src/vtepangox.c |    7
+       src/vteregex.c  |    2
+       src/vteseq.c    |  385 +++++-------------
+       src/vtexft.c    |   26 -
+       24 files changed, 789 insertions(+), 1745 deletions(-)
+    
+    
+    svn path=/trunk/; revision=1539
+
+ ChangeLog       |  168 ++++++++
+ src/debug.h     |   11 +
+ src/iso2022.c   |  201 +++-------
+ src/keymap.c    |   41 +--
+ src/matcher.c   |   24 +-
+ src/pty.c       |  134 ++-----
+ src/reaper.c    |   21 +-
+ src/ring.c      |   78 ++---
+ src/table.c     |   11 +-
+ src/trie.c      |   19 +-
+ src/vte.c       | 1187 ++++++++++++++++---------------------------------------
+ src/vteaccess.c |  198 ++++------
+ src/vteapp.c    |   21 +-
+ src/vtebg.c     |   43 +--
+ src/vteconv.c   |   60 ++--
+ src/vteconv.h   |   12 +-
+ src/vtedraw.c   |    6 +-
+ src/vtefc.c     |    4 +-
+ src/vteft2.c    |    5 +-
+ src/vteglyph.c  |   27 +-
+ src/vtepango.c  |   11 +-
+ src/vtepangox.c |    7 +-
+ src/vteregex.c  |    2 +-
+ src/vteseq.c    |  385 ++++++------------
+ src/vtexft.c    |   26 +-
+ 25 files changed, 957 insertions(+), 1745 deletions(-)
+
+commit b01b8d2fe3e37a6d6f333c27a8890dfb49295a69
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Jan 26 09:51:35 2007 +0000
+
+    ChangeLog: s/with/without/
+    
+    svn path=/trunk/; revision=1538
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 604573e2f487ec6bbe423b5c73bb2b6dde08375c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 09:50:23 2007 +0000
+
+    Bug 317449 – The cursor disappears when clicking on windows above
+    
+    2007-01-26  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 317449 – The cursor disappears when clicking on windows above gnome-terminal
+    
+       Enter a command that causes partial obscuration of the terminal,
+       though it must cover the cursor. Close the new window, observe the
+       pointer disappears.
+    
+       The issue is that we hide the pointer whilst typing and show it after
+       receiving a mouse movement. However in this case we steal the pointer
+       away from the terminal with any mouse events and the cursor remains
+       invisible.
+    
+       * src/vte.c: (vte_terminal_focus_in):
+               Ensure the mouse pointer is visible on focus-in.
+    
+    
+    svn path=/trunk/; revision=1537
+
+ ChangeLog |   16 ++++++++++++++++
+ src/vte.c |    1 +
+ 2 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 279999ff11683b4d00733df4ddbccc4c5d2ae5f9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 26 01:45:13 2007 +0000
+
+    Spend half an hour a day killing warnings...
+    
+    2007-01-26  Chris Wilson <chris chris-wilson co uk>
+    
+       Spend half an hour a day killing warnings...
+    
+       * configure.in:
+               Remove -Wswitch-enum from MAYBE_WARN. I am that lazy.
+       * src/buffer.c:
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_ambiguous_width), (_vte_iso2022_map_get),
+       (_vte_iso2022_find_nextctl), (_vte_iso2022_sequence_length),
+       (_vte_iso2022_fragment_input), (process_8_bit_sequence),
+       (process_cdata), (_vte_iso2022_process_single), (process_control),
+       (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/table.c:
+       * src/trie.c: (char_class_none_extract),
+       (char_class_digit_extract), (char_class_multi_extract),
+       (char_class_any_extract), (unichar_snlen), (unichar_sncmp),
+       (char_class_string_extract), (_vte_trie_addx), (_vte_trie_add),
+       (_vte_trie_matchx), (_vte_trie_match), (_vte_trie_printx),
+       (_vte_trie_print), (convert_mbstowcs), (main):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_find_charcell),
+       (_vte_row_data_find_charcell), (vte_terminal_emit_commit),
+       (vte_terminal_match_clear_all), (vte_terminal_match_remove),
+       (vte_terminal_match_add), (vte_terminal_match_set_cursor),
+       (vte_terminal_match_check_internal), (vte_terminal_set_colors),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_is_word_char), (vte_terminal_finalize),
+       (vte_terminal_realize), (_vte_terminal_map_pango_color),
+       (_vte_terminal_apply_pango_attr),
+       (_vte_terminal_translate_pango_cells),
+       (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Fixup compiler warnings, mostly of the type mixing signed and
+               unsigned compares and pointers.
+    
+    
+    svn path=/trunk/; revision=1536
+
+ ChangeLog         |   37 ++++++++++++++++++++++++++++
+ configure.in      |    6 +++-
+ src/buffer.c      |    4 +++
+ src/iso2022.c     |   69 ++++++++++++++++++++++++++---------------------------
+ src/keymap.c      |    2 +-
+ src/table.c       |    2 +-
+ src/trie.c        |   67 +++++++++++++++++++++++++--------------------------
+ src/vte-private.h |    6 ++--
+ src/vte.c         |   47 ++++++++++++++++++-----------------
+ src/vteseq.c      |    2 +-
+ 10 files changed, 142 insertions(+), 100 deletions(-)
+
+commit ae4d016994e2c7301c75baed821d8ec5f2a1ffc4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 23:56:42 2007 +0000
+
+    Use the GDestroyNotify to mark the source as invalid. Protect ensure fonts
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (mark_input_source_invalid),
+       (_vte_terminal_connect_pty_read), (mark_output_source_invalid),
+       (_vte_terminal_connect_pty_write):
+               Use the GDestroyNotify to mark the source as invalid.
+       * src/vte.c: (vte_terminal_ensure_font):
+               Protect ensure fonts against the VteDraw being destroyed.
+       * src/vte.c: (vte_terminal_realize):
+               Reorder code to setup the style before the fonts.
+       * src/vte.c: (vte_terminal_class_init):
+               The ->show() handler was redundant.
+    
+    
+    svn path=/trunk/; revision=1535
+
+ ChangeLog |   13 +++++++++++++
+ src/vte.c |   59 +++++++++++++++++++++--------------------------------------
+ 2 files changed, 34 insertions(+), 38 deletions(-)
+
+commit 9cb1f1bfb3b7378d0c22ee0e924c1c3186f2b17b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 25 21:44:35 2007 +0000
+
+    Replace most of checks for terminal->pvt->visibility_state ==
+    
+    2007-01-25  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_terminal_set_default_attributes),
+            (_vte_invalidate_cells), (_vte_invalidate_all),
+            (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+            (vte_terminal_visibility_notify), (vte_terminal_handle_scroll):
+            Replace most of checks for terminal->pvt->visibility_state ==
+            GDK_VISIBILITY_FULLY_OBSCURED by terminal->pvt->invalidated_all, and
+            adapt.
+    
+    
+    svn path=/trunk/; revision=1534
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   34 +++++++++++-----------------------
+ 2 files changed, 21 insertions(+), 23 deletions(-)
+
+commit ff52397ee2888dd6f3ccab0187a6cc38c9fd47f9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 21:26:21 2007 +0000
+
+    Bug 400759 – update problem with vte trunk
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400759 – update problem with vte trunk
+    
+       Otherwise known as the I can't count bug.
+    
+       The number of rows and columns to paint were not properly taking
+       account of the discrete nature of the cells ie although the floor(x)
+       moved the start to the left by one, the extra cell was not being added
+       to the width.
+    
+       Also since the howmany() macro is pulled from <sys/param.h>, it can
+       not be guarranteed to exist on all platforms. So in that case, provide
+       a local copy.
+    
+       * src/vte.c: (vte_terminal_draw_area):
+               Calculate the width as the distance between the explicity
+               calculated start and end cells.
+    
+    
+    svn path=/trunk/; revision=1533
+
+ ChangeLog |   19 +++++++++++++++++++
+ src/vte.c |   20 ++++++++++++--------
+ 2 files changed, 31 insertions(+), 8 deletions(-)
+
+commit d075b7525832da68e607a04ec0c9ebe2a7968476
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 17:42:44 2007 +0000
+
+    Bug 400671 – crash in Terminal: detaching of tabs
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400671 – crash in Terminal: detaching of tabs
+    
+       The fontdirty flag needed to be set on unrealize to ensure the fonts
+       get set on the VteDraw should the terminal be realized again (e.g
+       drag'n'dropping).
+    
+       * src/vte.c: (vte_terminal_unrealize):
+               Set the fontdirty flag to TRUE.
+       * src/vtexft.c: (_vte_xft_set_text_font),
+       (_vte_xft_get_char_width), (_vte_xft_draw_text),
+       (_vte_xft_draw_char):
+               Add safe guards to avoid dereferencing a NULL font as it
+               is possible for _vte_xft_font_open() to fail.
+    
+    
+    svn path=/trunk/; revision=1532
+
+ ChangeLog    |   16 ++++++++++++++++
+ src/vte.c    |    2 +-
+ src/vtexft.c |   22 +++++++++++++++++-----
+ 3 files changed, 34 insertions(+), 6 deletions(-)
+
+commit 657bd399d53d6082520201200e90b033dc4aa33c
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Thu Jan 25 16:53:10 2007 +0000
+
+    Modify the language in the last entry to try and avoid confusion between UTF-8 lookups and a simple 
ASCII lookup.
+    
+    
+    svn path=/trunk/; revision=1531
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 58c407e2c9b988fe92915b56b8c28549f55dd155
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 16:49:45 2007 +0000
+
+    Bug 399137 – UTF-8 problem in VteAccess
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 399137 – UTF-8 problem in VteAccess
+    
+       Improve the UTF-8 string handling within vteaccess.c
+       A long and fraught history to this apparently simple change.
+       Many thanks to Joanmarie Diggs and Rich Burridge for testing the
+       patches and ensuring they caused no regressions in the ally interface.
+    
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete):
+               Use g_utf8_pointer_to_offset() rather than open coding.
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Convert the caret into a byte offset before performing the
+               string lookup.
+               Iterate backwards over the string using a g_utf8_prev_char,
+               and g_utf8_get_char.
+    
+    
+    svn path=/trunk/; revision=1530
+
+ ChangeLog       |   18 ++++++++++++++
+ src/vteaccess.c |   70 +++++++++++++++++++++++-------------------------------
+ 2 files changed, 48 insertions(+), 40 deletions(-)
+
+commit 0acb0e006749729904133ed113788c46773545ec
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 16:30:45 2007 +0000
+
+    Bug 400493 – Mouse selection seriously broken
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400493 – Mouse selection seriously broken
+    
+       The rendering of non-text attributes, e.g highlight, backgrounds,
+       underlines, was broken by the change to multi-row run of glyphs. This
+       was most apparent when selecting regions with a mouse.
+    
+       * src/vte.c: (_vte_invalidate_cursor_once),
+       (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows), (vte_terminal_draw_area),
+       (vte_terminal_paint):
+               Some janitorial work (a memleak, whitespace, improving debug
+               messages, comments).
+       * src/vte.c: (vte_terminal_draw_cells):
+               Loop over cells and draw attributes for groups of cells on
+               each row.
+    
+    
+    svn path=/trunk/; revision=1529
+
+ ChangeLog |   18 ++++
+ src/vte.c |  269 +++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 157 insertions(+), 130 deletions(-)
+
+commit 2c0c41904eff8b91b7221738f29106a5a5b6fb75
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 09:36:07 2007 +0000
+
+    Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED
+    
+       * src/vte.c: (vte_terminal_visibility_notify):
+               Only force an _vte_invalidate_all if we can trivially detect
+               that we have switch from fully obscured to fully unobscured.
+               Otherwise, we will just handle the GDK expose in the normal
+               manner.
+       * src/vte.c: (vte_terminal_expose):
+               Check the event area to see if we can use _vte_invalidate_all,
+               has a slight benefit of discarding further exposed area
+               processing.
+    
+    
+    svn path=/trunk/; revision=1528
+
+ ChangeLog |   15 +++++++++++++++
+ src/vte.c |   23 +++++++++++++++++------
+ 2 files changed, 32 insertions(+), 6 deletions(-)
+
+commit 62982b274e08900461b78632feebdbadb576c2c3
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Thu Jan 25 09:31:27 2007 +0000
+
+    Rewrite last pair of ChangeLog entries to better explain what was found and what was fixed.
+    
+    
+    svn path=/trunk/; revision=1527
+
+ ChangeLog |   19 +++++++++++++++----
+ 1 files changed, 15 insertions(+), 4 deletions(-)
+
+commit 8cfa0558104d50b00f6e9a49f2833b0d4329f2f4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 25 00:40:11 2007 +0000
+
+    Notice how effective GDK's expose event coalescing is...
+    
+    2007-01-25  Chris Wilson <chris chris-wilson co uk>
+    
+       Notice how effective GDK's expose event coalescing is...
+    
+               * src/vte.c: (vte_terminal_draw_area), (vte_terminal_paint),
+                       (vte_terminal_expose):
+                                               Paint the exposed rects not the clipbox!
+    
+    
+    svn path=/trunk/; revision=1526
+
+ ChangeLog |   15 ++++++++
+ src/vte.c |  113 ++++++++++++++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 93 insertions(+), 35 deletions(-)
+
+commit 91690b2a952db2580e0227558400718efefa1d59
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Jan 24 23:13:31 2007 +0000
+
+    Improve morale, spell moral correctly.
+    
+    svn path=/trunk/; revision=1525
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c8467b55192a519ad2bc21f55395415de37646ab
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 23:10:36 2007 +0000
+
+    cf Bug 400072 – Handling of ; in control sequences
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       cf Bug 400072 – Handling of ; in control sequences
+    
+       Morale of the story: wait until the morning.
+       Revert r1512, the mistaken attempt at parsing '\e[;30m'.
+    
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_match):
+    
+    
+    svn path=/trunk/; revision=1524
+
+ ChangeLog   |   10 ++++++++++
+ src/table.c |   42 +++++++++++++++++-------------------------
+ 2 files changed, 27 insertions(+), 25 deletions(-)
+
+commit ebfcfa21bfdfee57a3215f18de4a623ec1176ce3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 23:03:14 2007 +0000
+
+    cf Bug 399617 – Avoid memory allocations during an expose event.
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       cf Bug 399617 – Avoid memory allocations during an expose event.
+    
+       Currently we cannot generate long glyph runs due to the text
+       painting being broken up into single rows and setting a low
+       max run cap. The benefit of longer runs is the backends can
+       do more caching within a run and potentially generate fewer
+       render calls and/or less network traffic.
+    
+       In the simple test case, this increased the performance of a
+       remote hexdump by 10%.
+    
+       * src/vte.c: (vte_terminal_draw_rows), (vte_terminal_paint):
+               Scan entired exposed area for glyph runs.
+       * src/vtedraw.h:
+               Increase VTE_DRAW_MAX_LENGTH
+       * src/vtexft.c: (_vte_xft_draw_text):
+               Create GlyphSpecs rather than CharFontSpecs, saves a
+               conversion and potential malloc inside libXft, and our
+               own malloc.
+    
+    
+    svn path=/trunk/; revision=1523
+
+ ChangeLog     |   22 ++++
+ src/vte.c     |  327 ++++++++++++++++++++++++++++++---------------------------
+ src/vtedraw.h |    4 +-
+ src/vtexft.c  |  154 ++++++++++++++-------------
+ 4 files changed, 280 insertions(+), 227 deletions(-)
+
+commit 1b887a2a0e7f59e95baa3531d6bb3b5a5a281dba
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 22:41:15 2007 +0000
+
+    Bug 147495 – screen flicker when opening new terminal windows
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 147495 – screen flicker when opening new terminal windows
+    
+       Last in a series of work to reduce extraneous redraws. I no longer
+       see the flicker when opening a white terminal.
+    
+       * src/vte.c: (_vte_terminal_scroll_region):
+               Detect when we can just invalidate all.
+       * src/vte.c: (_vte_terminal_fork_basic):
+               Don't force an unnecessary redraw.
+    
+    
+    svn path=/trunk/; revision=1522
+
+ ChangeLog |   12 ++++++++++++
+ src/vte.c |    5 ++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit daa0e11f90bad38e2519a6ff52222912f993ba2b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 22:31:54 2007 +0000
+
+    Add a missing '\n' to the debug printerr. Initialize the row count to
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_set_emulation):
+               Add a missing '\n' to the debug printerr.
+       * src/vte.c: (vte_terminal_init):
+               Initialize the row count to VTE_MIN_SCROLLBACK (was to 0
+               first and then later within the same function to
+               VTE_MIN_SCROLLBACK).
+    
+    
+    svn path=/trunk/; revision=1521
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   16 +++++++---------
+ 2 files changed, 16 insertions(+), 9 deletions(-)
+
+commit 6141a3fa97864e1dc8fb826d50f331cbe541a7a5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 22:17:47 2007 +0000
+
+    Bug 334755 – Incomplete information from vte_terminal_get_font
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 334755 – Incomplete information from vte_terminal_get_font
+    
+       In many situations the font_desc stored in the terminal is incomplete.
+       _vte_fc_transcribe_from_pango_font_description() automagically fills
+       in default values for the backends but this is hidden from the
+       application. By filling in default values up front from the widget
+       font description control is returned to the application and theme
+       designers.
+    
+       Patch by Pedro de Medeiros.
+       Also cf bug 335269.
+    
+       * src/vte.c: (vte_terminal_set_font_full):
+               Pull default font description from widget.
+       * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
+               Remove default values.
+    
+    
+    svn path=/trunk/; revision=1520
+
+ ChangeLog   |   19 +++++++++++++++++++
+ src/vte.c   |   14 +++++++-------
+ src/vtefc.c |   41 ++++++++++++-----------------------------
+ 3 files changed, 38 insertions(+), 36 deletions(-)
+
+commit 7ab6e418f588659d11ff739a2b2805fabe5be4fc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 20:37:19 2007 +0000
+
+    Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+       actually revealed a faux-pas in the conversion of the public
+       interfaces to GPid - that it broke the ABI.
+    
+       However, the intention is to remove the exposed pid_t, cf bug 400333.
+    
+       * python/vte.defs:
+       * python/vte.override:
+       * src/pty.c: (_vte_pty_open):
+       * src/pty.h:
+       * src/vte.c: (_vte_terminal_fork_basic), (vte_terminal_forkpty):
+       * src/vte.h:
+               Revert the exposed GPids back to pid_t.
+    
+    
+    svn path=/trunk/; revision=1519
+
+ ChangeLog           |   16 ++++++++++++++++
+ python/vte.defs     |    4 ++--
+ python/vte.override |    4 ++--
+ src/pty.c           |   15 ++++++++++-----
+ src/pty.h           |    3 +--
+ src/vte.c           |   14 +++++---------
+ src/vte.h           |    6 ++++--
+ 7 files changed, 40 insertions(+), 22 deletions(-)
+
+commit 7d898d6f6055c2c8a18b407eb50e7652b3a52b9f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 16:30:02 2007 +0000
+
+    ==25123== Invalid read of size 1 ==25123== at 0x4055992:
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       ==25123== Invalid read of size 1
+       ==25123==    at 0x4055992: vte_terminal_accessible_text_modified (vteaccess.c:497)
+       ==25123==    by 0x46A1248: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
+       ==25123==    by 0x4693EAA: g_closure_invoke (gclosure.c:490)
+       ==25123==    by 0x46A4972: signal_emit_unlocked_R (gsignal.c:2440)
+       ==25123==    by 0x46A5E96: g_signal_emit_valist (gsignal.c:2199)
+       ==25123==    by 0x46A85ED: g_signal_emit_by_name (gsignal.c:2267)
+       ==25123==    by 0x403E9E2: _vte_terminal_emit_text_inserted (vte.c:863)
+       ==25123==    by 0x40517EF: vte_terminal_process_incoming (vte.c:3032)
+       ==25123==    by 0x40522B5: update_repeat_timeout (vte.c:11332)
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Check that the caret is inside the old string before
+               accessing.
+    
+    
+    svn path=/trunk/; revision=1518
+
+ ChangeLog       |   17 +++++++++++++++++
+ src/vteaccess.c |   12 +++++++-----
+ 2 files changed, 24 insertions(+), 5 deletions(-)
+
+commit 8d735a2d00e3b50860dd23fbe0e63e4ea0772b74
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 16:23:42 2007 +0000
+
+    Revert changes in conjunction with bug 399137 back to r1487, which
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       Revert changes in conjunction with bug 399137 back to r1487,
+       which contains Rich Burridge's fix for bug 397724.
+    
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete),
+       (vte_terminal_accessible_text_modified):
+    
+    
+    svn path=/trunk/; revision=1517
+
+ ChangeLog       |    9 +++++++
+ src/vteaccess.c |   73 ++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 47 insertions(+), 35 deletions(-)
+
+commit a8d1c20f2b3b5d92d2fb50f3e35a28b11c8660ed
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 15:58:00 2007 +0000
+
+    Valgrind pointed out a couple of places where we tried to access before
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Valgrind pointed out a couple of places where we tried to
+               access before the start of the string.
+    
+    
+    svn path=/trunk/; revision=1516
+
+ ChangeLog       |    6 ++++++
+ src/vteaccess.c |   36 ++++++++++++++++++++----------------
+ 2 files changed, 26 insertions(+), 16 deletions(-)
+
+commit 1fcb3ef370accd3b59eeae5538cf05244dd215f1
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Wed Jan 24 15:56:22 2007 +0000
+
+    Revert the last accidental overcommit.
+    
+    svn path=/trunk/; revision=1515
+
+ ChangeLog       |    6 -
+ src/table.c     |  141 ++++++++++------------
+ src/vte.c       |  345 ++++++++++++++++++++++++++-----------------------------
+ src/vteaccess.c |   36 +++---
+ src/vteapp.c    |    4 -
+ src/vtedraw.h   |    4 +-
+ src/vtefc.c     |   41 +++++--
+ src/vtexft.c    |  154 ++++++++++++-------------
+ 8 files changed, 345 insertions(+), 386 deletions(-)
+
+commit 81ce92cb007827246122117c7dcb4a38ba78bd87
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 15:51:40 2007 +0000
+
+    Valgrind pointed out a couple of places where we tried to access before
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Valgrind pointed out a couple of places where we tried to
+               access before the start of the string.
+    
+    
+    svn path=/trunk/; revision=1514
+
+ ChangeLog       |    6 +
+ src/table.c     |  141 ++++++++++++----------
+ src/vte.c       |  345 +++++++++++++++++++++++++++++--------------------------
+ src/vteaccess.c |   36 +++---
+ src/vteapp.c    |    4 +
+ src/vtedraw.h   |    4 +-
+ src/vtefc.c     |   41 ++-----
+ src/vtexft.c    |  154 +++++++++++++------------
+ 8 files changed, 386 insertions(+), 345 deletions(-)
+
+commit 65e7b4c5838004367a0cbcc8149a43b5cea8077c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 14:31:19 2007 +0000
+
+    Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+    
+       Patch by Damien Carbery.
+    
+       * src/pty.h:
+               Update prototype to match new definition.
+    
+    
+    svn path=/trunk/; revision=1513
+
+ ChangeLog |    9 +++++++++
+ src/pty.h |    2 +-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 684b2ff5cb4b6c3eede196d237d099f066e595e5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 24 02:54:03 2007 +0000
+
+    <mariano> hm, vte is not matching «ESC [ ; 7 m» :/
+    
+    2007-01-24  Chris Wilson <chris chris-wilson co uk>
+    
+       <mariano> hm, vte is not matching «ESC [ ; 7 m» :/
+    
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_match):
+               s/GList/GSList/
+               g_slist_append -> g_slist_reverse(g_slist_prepend)
+               And finally add the subtable to handle the leading ';'
+               in the variable length parameters.
+    
+    
+    svn path=/trunk/; revision=1512
+
+ ChangeLog   |   11 +++++++++++
+ src/table.c |   42 +++++++++++++++++++++++++-----------------
+ 2 files changed, 36 insertions(+), 17 deletions(-)
+
+commit ad5b91ba4d9bab3690e6dc8646623d6c31234809
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jan 23 13:01:00 2007 +0000
+
+    A couple of minor buggets.
+    
+    2007-01-23  Chris Wilson <chris chris-wilson co uk>
+    
+       A couple of minor buggets.
+    
+       * src/iso2022.c: (_vte_iso2022_state_set_codeset):
+               Use g_intern_string() instead of from_quark(to_quark(str))
+       * src/vtepango.c: (_vte_pango_create), (_vte_pango_destroy),
+       (_vte_pango_start), (_vte_pango_end), (_vte_pango_set_text_font):
+               Use the widget pango context (we're guarranteed to have a
+               screen by this point) and don't unref it!
+               Inspired by Pedro de Medeiros in Bug 335269.
+    
+    
+    svn path=/trunk/; revision=1511
+
+ ChangeLog      |   12 ++++++++++++
+ src/iso2022.c  |    2 +-
+ src/vtepango.c |   28 +++-------------------------
+ 3 files changed, 16 insertions(+), 26 deletions(-)
+
+commit 64c9b97f3dbed04003bb1a6a5727a878c171f7b8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jan 23 10:09:44 2007 +0000
+
+    Regression on Bug 123591: mkdir /tmp/aa; cd /tmp/aa; bash; cd ..; rmdir aa
+    
+    2007-01-23  Chris Wilson <chris chris-wilson co uk>
+    
+       Regression on Bug 123591:
+               mkdir /tmp/aa; cd /tmp/aa; bash; cd ..; rmdir aa
+               Open a new tab in g-t -> Failure.
+    
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Check the error return from g_spawn and try again with the
+               pwd if it reports that the child could not change directory.
+    
+    
+    svn path=/trunk/; revision=1510
+
+ ChangeLog |   10 ++++++++++
+ src/pty.c |   18 ++++++++++++++++++
+ 2 files changed, 28 insertions(+), 0 deletions(-)
+
+commit 49021e4b66f9d0bf3b8ab8e40a8087e9f2fa986e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Tue Jan 23 09:47:56 2007 +0000
+
+    Add all g_spawn parameters to VTE_DEBUG_MISC output.
+    
+    2007-01-23  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Add all g_spawn parameters to VTE_DEBUG_MISC output.
+    
+    
+    svn path=/trunk/; revision=1509
+
+ ChangeLog |    5 +++++
+ src/pty.c |   43 ++++++++++++++++++++++++++++++-------------
+ 2 files changed, 35 insertions(+), 13 deletions(-)
+
+commit d19cf7456ab2d6ba37caa4720271d85bddb8172b
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Jan 23 01:34:13 2007 +0000
+
+    Fix version number in NEWS
+    
+    svn path=/trunk/; revision=1507
+
+ NEWS |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5819378701e0fb85ff2f5482216e10db91a655ca
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 23 00:54:01 2007 +0000
+
+    Released vte-0.15.2.
+    
+    2007-01-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.2.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.2.
+    
+            * src/Makefile.am: Bumped libtool version to 10:9:1.
+    
+    
+    svn path=/trunk/; revision=1505
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 67 insertions(+), 2 deletions(-)
+
+commit d3cae283a93c3a7df7f611ad6a8f50991943173d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 22:15:22 2007 +0000
+
+    Bug 399137 - continuation.
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 399137 - continuation.
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Classic bug:
+                       clen = cp - old
+               rather than the more correct
+                       clen = cp - current
+    
+    
+    svn path=/trunk/; revision=1504
+
+ ChangeLog       |   10 ++++++++++
+ src/vteaccess.c |    2 +-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 7cc6b5148f46647a9ebf1cc35ace5c410f13e3d7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 21:52:57 2007 +0000
+
+    Don't try to perform gdk operations on unrealized windows.
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vteapp.c: (char_size_changed), (char_size_realized), (main):
+               Don't try to perform gdk operations on unrealized windows.
+    
+    
+    svn path=/trunk/; revision=1503
+
+ ChangeLog    |    5 +++++
+ src/vteapp.c |   46 ++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 47 insertions(+), 4 deletions(-)
+
+commit a22146e09ce78155eb90b5d9724e178be4b982cd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 21:51:58 2007 +0000
+
+    Print out the argument vector for VTE_DEBUG_MISC.
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Print out the argument vector for VTE_DEBUG_MISC.
+    
+    
+    svn path=/trunk/; revision=1502
+
+ ChangeLog |    5 +++++
+ src/pty.c |   11 +++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit d9ce70ee3d33d7f03b5bc54c24d5f9268dc2b1d4
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 21:31:07 2007 +0000
+
+    Protect against g_strv_length(NULL)
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Protect against g_strv_length(NULL)
+    
+    
+    svn path=/trunk/; revision=1501
+
+ ChangeLog |    5 +++++
+ src/pty.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 83c14ae94c5fde5f6ff8f0b3774a551e31def4d1
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 22 20:50:37 2007 +0000
+
+    Improve the changelog entry for the previous commit.
+    
+    svn path=/trunk/; revision=1500
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 3aa224d696f2918faf9dfbc554d1314f786c341a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 20:48:14 2007 +0000
+
+    Bug 399137 - continuation.
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 399137 - continuation.
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               After walking back along the UTF-8 string, remember to update
+               string lengths that are use to detect insertions and
+               deletions!
+    
+    
+    svn path=/trunk/; revision=1499
+
+ ChangeLog       |    9 +++++++++
+ src/vteaccess.c |    3 +++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit 8e2e9280df9f1b1e54b9556100a2a85f2af9966a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 19:51:16 2007 +0000
+
+    If the caret is at the end of the buffer, then it set past the end of the
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       If the caret is at the end of the buffer, then it set past the
+       end of the offset array - do not use this as a lookup!
+    
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               If the caret points to past the last character, set the
+               offset to the string's NUL terminator.
+    
+    
+    svn path=/trunk/; revision=1498
+
+ ChangeLog       |    9 +++++++++
+ src/vteaccess.c |    9 +++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit ff8cd236b46db35290954b80071b860218927a4e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 19:20:47 2007 +0000
+
+    Earlier configure.in update introduced a trailing ']', pair it with its
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       * configure.in:
+               Earlier configure.in update introduced a trailing ']', pair
+               it with its '['
+    
+    
+    svn path=/trunk/; revision=1497
+
+ ChangeLog    |    7 +++++++
+ configure.in |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit d32482cfb6cc31f456904b5c5a43d55a7364d45e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 18:27:45 2007 +0000
+
+    Bug 132316 – terminal widget's context menu posting isn't exposed as an
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 132316 – terminal widget's context menu posting isn't exposed as an AtkAction
+    
+       Original patch by <padraig obriain sun com>
+    
+       * src/vteaccess.c: (vte_terminal_accessible_free_private_data),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_do_action),
+       (vte_terminal_accessible_get_n_actions),
+       (vte_terminal_accessible_action_get_description),
+       (vte_terminal_accessible_action_get_name),
+       (vte_terminal_accessible_action_get_keybinding),
+       (vte_terminal_accessible_action_set_description),
+       (vte_terminal_accessible_action_init),
+       (vte_terminal_accessible_get_type):
+               Remove grab_focus and defer to the parent's implementation.
+               Add an AtkAction iface.
+    
+    
+    svn path=/trunk/; revision=1496
+
+ ChangeLog       |   19 +++++++
+ src/vteaccess.c |  163 +++++++++++++++++++++++++++++++++++++++++++++++++------
+ 2 files changed, 164 insertions(+), 18 deletions(-)
+
+commit fc07977497ad5d13dc45ebe094715d057e3efbb2
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 18:04:17 2007 +0000
+
+    Bug 156161 – AccessibleText_getTextAtOffset returns wrong values in
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 156161 – AccessibleText_getTextAtOffset returns wrong values in gnome-terminal
+    
+       The code for ATK_TEXT_BOUNDARY_WORD_START and
+       ATK_TEXT_BOUNDARY_WORD_END is the same.
+    
+       Patch by <padraig obriain sun com>
+    
+       * src/vteaccess.c: (vte_terminal_accessible_get_text_somewhere):
+               Actually provide an implementation for
+               ATK_TEXT_BOUNDARY_WORD_END.
+    
+    
+    svn path=/trunk/; revision=1495
+
+ ChangeLog       |   13 ++++++++
+ src/vteaccess.c |   92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 104 insertions(+), 1 deletions(-)
+
+commit 9847a75a4a8bbc54a39be23a0b9f58be56af4f15
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 17:51:45 2007 +0000
+
+    Bug 399137 – UTF-8 problem in VteAccess
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 399137 – UTF-8 problem in VteAccess
+    
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete):
+               use g_utf8_pointer_to_offset() instead of open coding
+       (vte_terminal_accessible_update_private_data_if_needed):
+               add the number of UTF-8 characters to the debug output.
+       (vte_terminal_accessible_text_modified):
+               iterate backwards over the UTF-8 string using
+               g_utf8_prev_char() and convert the caret into a byte offset
+               before it as such.
+    
+    
+    svn path=/trunk/; revision=1494
+
+ ChangeLog       |   14 ++++++++++++
+ src/vteaccess.c |   63 +++++++++++++++++++++---------------------------------
+ 2 files changed, 39 insertions(+), 38 deletions(-)
+
+commit 758e6a5cb998c527cafce10292f7f3b0aed57de5
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 17:25:28 2007 +0000
+
+    Bug 123591 – vte_terminal_fork_command succeeds even when it does not
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 123591 – vte_terminal_fork_command succeeds even when it does not
+    
+       * python/vte.defs:
+       * python/vte.override:
+       * src/reaper.c: (vte_reaper_child_watch_cb):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_catch_child_exited),
+       (_vte_terminal_fork_basic), (vte_terminal_forkpty):
+       * src/vte.h:
+       * src/vteapp.c:
+               s/pid_t/GPid/ portable variant, no API/ABI implications
+       * src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
+       (_vte_pty_fork_on_pty_name), (_vte_pty_fork_on_pty_fd),
+       (_vte_pty_open_unix98), (_vte_pty_pipe_open), (n_read), (n_write),
+       (_vte_pty_start_helper), (_vte_pty_open_with_helper),
+       (_vte_pty_open), (main):
+               Replace custom fork() and pipe based syncrohonisation scheme
+               with g_spawn_async_with_pipes() as it actually handles all
+               failure modes correctly, and gives us overtures of portability.
+    
+    
+    svn path=/trunk/; revision=1493
+
+ ChangeLog           |   23 ++
+ python/vte.defs     |    4 +-
+ python/vte.override |    4 +-
+ src/pty.c           |  707 +++++++++++++++++++++------------------------------
+ src/reaper.c        |    1 +
+ src/vte-private.h   |    2 +-
+ src/vte.c           |   30 ++-
+ src/vte.h           |   10 +-
+ src/vteapp.c        |    1 +
+ 9 files changed, 343 insertions(+), 439 deletions(-)
+
+commit 59bbbea8be0cbfdd075419b8e248eb64f957341b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 14:23:39 2007 +0000
+
+    Hack'n'slash my way through doing a bit of weeding.
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Hack'n'slash my way through doing a bit of weeding.
+    
+       Fixed:
+       - Bug 345514 – -no-undefined doesn't work with latest libtool
+       - Bug 162003 – vte configure.in X checking can fail
+                    – though this may cause other regressions!
+       - Bug 314669 – Please specialize AC_PATH_XTRA
+    
+       * configure.in:
+               Export LIBTOOL_EXPORT_OPTIONS for -no-undefined on windos.
+               Add to rather than override X_CFLAGS, X_LIBS
+               AC_PATH_XTRA - Find X11 using XFlush() rather than XtMalloc().
+               Print configuration details.
+       * src/Makefile.am:
+               Conditional compilation of backends.
+    
+    
+    svn path=/trunk/; revision=1492
+
+ ChangeLog       |   18 ++++
+ configure.in    |  272 ++++++++++++++++++++++++++++++++++++------------------
+ src/Makefile.am |   15 ++-
+ 3 files changed, 210 insertions(+), 95 deletions(-)
+
+commit 72c097e9efee36892b5a99461338b7064bb7df61
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 10:57:17 2007 +0000
+
+    Bug 389538 – crash in Terminal: nothing
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 389538 – crash in Terminal: nothing
+    
+       * src/vteaccess.c: (vte_terminal_accessible_get_text):
+               Guard against negative length strings.
+    
+    
+    svn path=/trunk/; revision=1491
+
+ ChangeLog       |    7 +++++++
+ src/vteaccess.c |   10 +++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 1cc474c585fc8dd04f72e7f8913d339cc2782850
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Mon Jan 22 01:32:25 2007 +0000
+
+    Fixup changelog to include patch author.
+    
+    svn path=/trunk/; revision=1490
+
+ ChangeLog |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 629175567fcce27bda9f77db177d0b187a346d98
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Mon Jan 22 01:31:01 2007 +0000
+
+    Bug 161479 – Scroll wheel generates Release events
+    
+    2007-01-22  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 161479 – Scroll wheel generates Release events
+    
+       vte sends release events on scroll but xterm doesn't which breaks
+       mc among others.
+    
+       * src/vte.c: (vte_terminal_scroll):
+               Remove the offending release event.
+    
+    
+    svn path=/trunk/; revision=1489
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   10 ----------
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 9c70a15321c4f01cc87728c76958780eb58a2050
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 20 21:54:28 2007 +0000
+
+    <kmaraas> ickle: sparse complains about dubious 1 bit bitfields if you use
+    
+    2007-01-20  Chris Wilson <chris chris-wilson co uk>
+    
+       <kmaraas> ickle: sparse complains about dubious 1 bit bitfields
+               if you use gboolean instead of guint
+       <kmaraas> so s/gboolean/guint at line 166 and 174
+       <mariano> unless that changes the API, of course...
+       <kmaraas> it doesn't
+       <mariano> gboolean a:1 is not very correct anyways
+       <kmaraas> ickle: we've done the same change in other modules
+       <ickle> if I do it quick, behdad might not even notice ;)
+    
+       * src/vte.h:
+               Convert signed single bit field to unsigned. The code
+               was setting it to 1 anyhow (and not -1 as the type indicated).
+    
+    
+    svn path=/trunk/; revision=1488
+
+ ChangeLog |   15 +++++++++++++++
+ src/vte.h |    4 ++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+commit 633016c80df82f651e3add9f947fcaacb4fc427e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 20 10:10:10 2007 +0000
+
+    Bug 398602 – Build Failure
+    
+    2007-01-20  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398602 – Build Failure
+    
+       * src/vte.c: (vte_terminal_expose):
+               Fixup typo. [Grrr. Must get git-svn back into sync]
+    
+    
+    svn path=/trunk/; revision=1487
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 79d26ffe5a243c69742c88217eb25e6653ce88e5
+Author: Rich Burridge <richb src gnome org>
+Date:   Sat Jan 20 01:52:29 2007 +0000
+
+    Fixed bug #397724 - Orca incorrect echo's certain input in gnome-terminal
+    
+            * src/vteaccess.c:
+            Fixed bug #397724 - Orca incorrect echo's certain input in
+            gnome-terminal when key echo is set to off (on Ubuntu Feisty).
+    
+    svn path=/trunk/; revision=1486
+
+ ChangeLog       |    6 ++++++
+ src/vteaccess.c |    7 +++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit e4655c4d8dd5e2d07c8a9999fe386a84129bcc0e
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 20 01:49:16 2007 +0000
+
+    Also if the entire terminal is invalidated, do not add more GTK+ exposes
+    
+    2007-01-20  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_expose):
+               Also if the entire terminal is invalidated,
+               do not add more GTK+ exposes to it.
+    
+    
+    svn path=/trunk/; revision=1485
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    8 +++++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit bc286a1432fccbe8cb553e290e4dad329010ae37
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 20 01:44:46 2007 +0000
+
+    Track when we have invalidated the entire terminal and skip adding new
+    
+    2007-01-20  Chris Wilson <chris chris-wilson co uk>
+    
+       Track when we have invalidated the entire terminal and skip adding
+       new regions when possible.
+    
+       * src/vte-private.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_size_allocate),
+       (reset_update_regions):
+    
+    
+    svn path=/trunk/; revision=1484
+
+ ChangeLog         |   10 ++++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   40 ++++++++++++++++++++++++++++++++--------
+ 3 files changed, 43 insertions(+), 9 deletions(-)
+
+commit bcaa0d3c3ad7a9d04aafa25c079bd3eb8fd4bea3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Sat Jan 20 01:25:42 2007 +0000
+
+    Bug 398244 – Gnome-terminal opens a huge sized window
+    
+    2007-01-20  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398244 – Gnome-terminal opens a huge sized window
+    
+       * src/vte.c: (vte_terminal_ensure_font),
+       (vte_terminal_set_font_full), (vte_terminal_size_request),
+       (vte_terminal_realize), (vte_terminal_get_char_width),
+       (vte_terminal_get_char_height), (vte_terminal_get_char_descent),
+       (vte_terminal_get_char_ascent):
+               Ensure the font metrics are calculated before use.
+    
+    
+    svn path=/trunk/; revision=1483
+
+ ChangeLog |   11 +++++++++
+ src/vte.c |   75 +++++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 54 insertions(+), 32 deletions(-)
+
+commit b8bb41c7919cf09e3a5cce954c85ca4883344b95
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 21:48:30 2007 +0000
+
+    Do not invalidate the old cursor position if it was not visible.
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_process_incoming):
+               Do not invalidate the old cursor position if it was not
+               visible.
+    
+    
+    svn path=/trunk/; revision=1482
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    3 ++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 08ede26752979d9e20f2c4ec0efa1a94eb781b41
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 21:22:23 2007 +0000
+
+    Make sure ->process_timeout is set to VTE_INVALID_SOURCE on all paths that
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (process_timeout):
+               Make sure ->process_timeout is set to VTE_INVALID_SOURCE on
+               all paths that remove the timeout.
+    
+    
+    svn path=/trunk/; revision=1481
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 +++++-----
+ 2 files changed, 11 insertions(+), 5 deletions(-)
+
+commit 251b0bde344e603d1bbef541250715090f607592
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 19:38:50 2007 +0000
+
+    Add <> to mark boundaries of process_timeout().
+    
+    2007-01-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Add <> to mark boundaries of process_timeout().
+    
+       * src/vte.c: (vte_terminal_class_init), (process_timeout):
+    
+    
+    svn path=/trunk/; revision=1480
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   18 ++++++++++++++++--
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit 34669c058fb355eacb3dcd959912153effaa1b47
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Jan 19 17:48:39 2007 +0000
+
+    Remove a bit of redundant text in the printout from the last commit.
+    
+    svn path=/trunk/; revision=1479
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d7a3c8149db52bde44491cd4667bfd2368daea71
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 17:47:35 2007 +0000
+
+    Add {},[] to mark boundaries of update_timeout() and notice that the
+    
+    2007-01-19  Chris Wilson  <chris chris-wilson co uk>
+    
+       Add {},[] to mark boundaries of update_timeout() and notice that
+       the display limited update_timeout was not dying.
+    
+       * src/vte.c: (vte_terminal_class_init), (update_repeat_timeout),
+       (update_timeout):
+    
+    
+    svn path=/trunk/; revision=1478
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   31 +++++++++++++++++++++++++++++--
+ 2 files changed, 37 insertions(+), 2 deletions(-)
+
+commit 40e65756c3571b24a4896fe6bfcfbeee666dd07a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 17:31:36 2007 +0000
+
+    Small cleanup: - protect remove_process_timeout against an invalid source.
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_realize), (remove_process_timeout):
+               Small cleanup:
+                - protect remove_process_timeout against an invalid source.
+                - move static prototypes into common block.
+                - gdk_window_show() is done in map not realize.
+    
+    
+    svn path=/trunk/; revision=1477
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   14 ++++++++------
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+commit 876b419f1106886501845b882aa5e5024e5c8191
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 16:56:58 2007 +0000
+
+    Introduce a bit of slack in the bbox check to allow for a small of amount
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_process_incoming):
+               Introduce a bit of slack in the bbox check to allow
+               for a small of amount of cursor motion e.g. due to line
+               scrolling. This turns the long sequence of
+               '(?!?!??? ... ????!)'
+               during a hexdump into the better behaved
+               '.(?!?!?!??!)-+=.(?!?!??!)-+=........'. Although it is
+               puzzling why we now how have a block of IO and then two quick
+               display upates...
+    
+    
+    svn path=/trunk/; revision=1476
+
+ ChangeLog         |   13 +++++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |    8 ++++----
+ 3 files changed, 18 insertions(+), 4 deletions(-)
+
+commit 198e67bf3dbc376b60a710271a1be0db3e11e408
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 16:31:59 2007 +0000
+
+    Repeat _vte_terminal_process_incoming until we have drained the incoming
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (process_timeout), (update_repeat_timeout),
+       (update_timeout):
+               Repeat _vte_terminal_process_incoming until we have drained
+               the incoming buffers or we can handle no more. Fixes a
+               problem where the display wouldn't update if we hadn't
+               processed enough data (e.g. on startup, displaying the first
+               prompt). This bug corresponds with the sequence
+               '*-+=..()?!(?!?!?!)-+=' below, which now reads
+               '*-+=..()(?!?!?!)-+='
+    
+    
+    svn path=/trunk/; revision=1475
+
+ ChangeLog |   12 ++++++++++++
+ src/vte.c |   30 +++++++++++++++++++-----------
+ 2 files changed, 31 insertions(+), 11 deletions(-)
+
+commit 99a36a042102e320143dade3ba1574310ee66d08
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 15:26:57 2007 +0000
+
+    "%ld" for cursor indices.
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_invalidate_cursor_once):
+               "%ld" for cursor indices.
+    
+    
+    svn path=/trunk/; revision=1474
+
+ ChangeLog |    5 +++++
+ src/vte.c |    6 ++----
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit 78f7a5f85b7297c320ab92a425e9c7df99d2c212
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 15:24:30 2007 +0000
+
+    Cursor indices are long.
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_invalidate_cells),
+       (_vte_invalidate_cursor_once):
+               Cursor indices are long.
+    
+    
+    svn path=/trunk/; revision=1473
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 +++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit a2886cc03276143105f780689b587dedd493dde6
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 15:20:19 2007 +0000
+
+    Cursor indices are long. Prepend the GTK+ generated expose if we already
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cell):
+               Cursor indices are long.
+       * src/vte.c: (_vte_terminal_expose):
+               Prepend the GTK+ generated expose if we already have an
+               display update pending.
+    
+    
+    svn path=/trunk/; revision=1472
+
+ ChangeLog         |    9 +++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |   19 ++++++++++++++-----
+ 3 files changed, 24 insertions(+), 6 deletions(-)
+
+commit 12d98d8c8bf1b53bb2b68a758e7b68043be35a10
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 15:02:25 2007 +0000
+
+    Add a new debug flag to visualize the work flow. VTE_DEBUG_FLAGS=work
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       Add a new debug flag to visualize the work flow.
+       VTE_DEBUG_FLAGS=work generates output like:
+       Debugging work flow (top input to bottom output):
+         .  _vte_terminal_process_incoming
+         (  start _vte_terminal_process_incoming
+         ?  _vte_invalidate_cells (call)
+         !  _vte_invalidate_cells (dirty)
+         *  _vte_invalidate_all
+         )  end _vte_terminal_process_incoming
+         -  gdk_window_process_all_updates
+         +  vte_terminal_expose
+         =  vte_terminal_paint
+       
*?!**+=*-+=..()?!(?!?!?!)-+=?!-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.().(?!?!?!)-+=.().(?!?!?!)-+=.().().(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!)-+=.............................................................................................................................................................................................................................................................................(?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
 
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????!??!)-+=.......................................................................
+    
+       Which tells me I have two bugs to track:
+               1. the initial '..()' is a missing invalidate.
+               2. '(?!?!????????????????????!??!)' is not very efficient.
+    
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_process_incoming),
+       (vte_terminal_io_read), (vte_terminal_paint),
+       (vte_terminal_expose), (vte_terminal_class_init):
+               Add VTE_DEBUG_WORK
+    
+    
+    svn path=/trunk/; revision=1471
+
+ ChangeLog   |   28 ++++++++++++++++++++++
+ src/debug.c |    3 ++
+ src/debug.h |    5 ++-
+ src/vte.c   |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ 4 files changed, 98 insertions(+), 11 deletions(-)
+
+commit d061fc52911fd4a5e77982f993923198a27b65e8
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 12:24:02 2007 +0000
+
+    Bug 398150 – cursor leaves trail behind in vim
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398150 – cursor leaves trail behind in vim
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cell),
+       (vte_terminal_process_incoming):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Invalidate the old cursor position if we detect the cursor
+               moved during the sequence or if the cursor changed state.
+    
+    
+    svn path=/trunk/; revision=1470
+
+ ChangeLog         |   11 ++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   54 +++++++++++++++++++++++++++++++++++++++++++++++++---
+ src/vteseq.c      |    5 ----
+ 4 files changed, 62 insertions(+), 9 deletions(-)
+
+commit d78519b31ec6a5c8c38820ac2ba4864cc9e0acca
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 10:10:10 2007 +0000
+
+    Missing $(X_CFLAGS)
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/Makefile.am:
+               Missing $(X_CFLAGS)
+    
+    
+    svn path=/trunk/; revision=1469
+
+ ChangeLog       |    5 +++++
+ src/Makefile.am |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 48c3b16e6c0470edf5ceae155a32d8ce36244968
+Author: Chris Wilson <cpwilson src gnome org>
+Date:   Fri Jan 19 10:07:58 2007 +0000
+
+    missed from last commit
+    
+    svn path=/trunk/; revision=1468
+
+ ChangeLog |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 87449145eb0da8989be00a497aac68d19a7bb6db
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Fri Jan 19 09:30:54 2007 +0000
+
+    Bug 398243 – Crash
+    
+    2007-01-19  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398243 – Crash
+    
+       * src/vtebg.c: (vte_bg_cache_prune_int):
+               Use the return from g_list_delete_link to maintain the list
+               head.
+    
+    
+    svn path=/trunk/; revision=1467
+
+ src/vtebg.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit dfbaae24245375fa7fca8d3b38d7ff387bbeba01
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 22:39:36 2007 +0000
+
+    Check that the start of the invalid region is on screen.
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (_vte_invalidate_cells):
+               Check that the start of the invalid region is on screen.
+    
+    
+    svn path=/trunk/; revision=1466
+
+ ChangeLog |    5 +++++
+ src/vte.c |    6 ++++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 725f61ecda29fcd44acf45ec0e3c8f1bbb39252f
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 22:03:00 2007 +0000
+
+    Bug 398116 – lags behind when widget not visible
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398116 – lags behind when widget not visible
+    
+       * src/vte.c: (vte_terminal_handle_scroll):
+               During the spring clean, I converted a few GTK_WIDGET_REALIZED()
+               checks to GTK_WIDGET_DRAWABLE()+visibility check.
+               Unfortunately, it broke keeping the scroll delta in sync with
+               the insert delta. Sync the pair, then perform the check before
+               making updates on the visible area.
+    
+    
+    svn path=/trunk/; revision=1465
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   13 +++++++------
+ 2 files changed, 18 insertions(+), 6 deletions(-)
+
+commit a3eef86e9564a3add70b45390b24ad5f24f8bad3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 19:09:42 2007 +0000
+
+    Bug 398083 – background not painted correctly when starting up
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       Bug 398083 – background not painted correctly when starting up
+    
+       * src/vte.c: (_vte_invalidate_all):
+               Compute drawable area in window co-ordinates and not widget
+               co-ordinates.
+    
+    
+    svn path=/trunk/; revision=1464
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    7 ++++++-
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit e332a0d91deb6ecb05d16f16b243a366dc7d9974
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 18:54:02 2007 +0000
+
+    Small bit of logic inversion that would have tried to paint on unmapped
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_expose):
+               Small bit of logic inversion that would have tried to paint
+               on unmapped and invisible widgets.
+    
+    
+    svn path=/trunk/; revision=1463
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 879db418d7347ebe3c11e9bdb42ce19306d61044
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 16:45:25 2007 +0000
+
+    And the corresponding overrides. [The downsides of losing track of which
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+       And the corresponding overrides. [The downsides of losing track of
+       which machine you are working on.]
+    
+       * python/vte.override:
+               Add (get_text_include_trailing_spaces)
+    
+    
+    svn path=/trunk/; revision=1462
+
+ ChangeLog           |    7 ++++
+ python/vte.override |   89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 96 insertions(+), 0 deletions(-)
+
+commit 581c8626bc17fb1b4e47774b59d927f1154f2c92
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 16:43:16 2007 +0000
+
+    Add missing export of vte_terminal_get_text_include_trailing_spaces,
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       Add missing export of vte_terminal_get_text_include_trailing_spaces,
+       needed for building a simple testcase for Bug 397724.
+       vte.defs needs a bit of love...
+    
+       * python/vte.defs:
+               Add (get_text_include_trailing_spaces)
+    
+    
+    svn path=/trunk/; revision=1461
+
+ ChangeLog       |    9 +++++++++
+ python/vte.defs |    9 +++++++++
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit d04bb3e3fa59f8b1b6fc690513e282110caf077b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 15:44:09 2007 +0000
+
+    Fix a couple of compiler warnings.
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vterdb.c: (_vte_rdb_search), (_vte_rdb_boolean):
+               Fix a couple of compiler warnings.
+    
+    
+    svn path=/trunk/; revision=1460
+
+ ChangeLog    |    5 +++++
+ src/vterdb.c |    8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 7519b3e4fca7d284a229693efb74f46cd456c9d3
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 15:33:03 2007 +0000
+
+    Delete some dead code.
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       * src/vte.c: (vte_terminal_process_incoming):
+               Delete some dead code.
+    
+    
+    svn path=/trunk/; revision=1459
+
+ ChangeLog |    5 +++++
+ src/vte.c |    5 -----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 8ec33f53f0079f4855db2165f1ecca64880d8b0d
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 15:30:55 2007 +0000
+
+    Restore --enable-debugging.
+    
+    2007-01-18  Chris Wilson <chris chris-wilson co uk>
+    
+       * configure.in:
+               Restore --enable-debugging.
+    
+    
+    svn path=/trunk/; revision=1458
+
+ ChangeLog    |    5 +++++
+ configure.in |    5 +++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 233a2332176975f1c578a07ab45b6bec792088fc
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 11:13:10 2007 +0000
+
+    Copy Behdad's MAYBE_WARN comprehensive set of warnings from Cairo, and
+    
+    2007-01-18  Chris Wilson  <chris chris-wilson co uk>
+    
+       Copy Behdad's MAYBE_WARN comprehensive set of warnings from Cairo,
+       and fixup the immediate compilation failures.
+    
+       * configure.in:
+               Iterate over a list of warnings and check that they are valid
+               for the compiler.
+    
+       * src/debug.c: (_vte_debug_on):
+               Kill fflush() [redundant with g_printerr].
+    
+    
+    svn path=/trunk/; revision=1457
+
+ ChangeLog    |   12 ++++++++
+ configure.in |   90 +++++++++++++++++++++++++++++++++++++++++++--------------
+ src/debug.c  |    3 --
+ 3 files changed, 80 insertions(+), 25 deletions(-)
+
+commit 8dbf931060cd7cf3d5684e913bb8d3f2faeb86c6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 18 10:09:27 2007 +0000
+
+    Don't call AC_CANONICAL_HOST. Libtool calls it already.
+    
+    2007-01-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in: Don't call AC_CANONICAL_HOST.  Libtool calls it
+            already.
+    
+            * src/Makefile.am: Don't build extra, test, programs by default.
+            Speeds build up.
+    
+    
+    svn path=/trunk/; revision=1456
+
+ ChangeLog       |    8 ++++++++
+ configure.in    |    1 -
+ src/Makefile.am |    2 +-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 0eabcc042fd65cd52bcf3c56bd154dd40c1e15ec
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 18 10:04:53 2007 +0000
+
+    Fix loop-optimization warnings.
+    
+    2007-01-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/ring.c (_vte_ring_insert_preserve):
+            * src/vte.c (vte_terminal_paint):
+            Fix loop-optimization warnings.
+    
+    
+    svn path=/trunk/; revision=1455
+
+ ChangeLog  |    6 ++++++
+ src/ring.c |    4 ++--
+ src/vte.c  |    2 +-
+ 3 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 6d9d4a07aa8e202d67b93b2a7e10ec84f7963c09
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 18 09:46:13 2007 +0000
+
+    Fix more warnings.
+    
+    2007-01-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/ssfe.c (cleanupexit), (barf):
+            * src/vtebg.c (vte_bg_cache_prune_int):
+            * src/vtetc.c (main):
+            Fix more warnings.
+    
+    
+    svn path=/trunk/; revision=1454
+
+ ChangeLog   |    7 +++++++
+ src/ssfe.c  |    4 ++--
+ src/vtebg.c |    2 +-
+ src/vtetc.c |    6 +++---
+ 4 files changed, 13 insertions(+), 6 deletions(-)
+
+commit dd0498666a3f4c6f763bdf9bbe6d9ff84b894966
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 18 09:38:41 2007 +0000
+
+    Fix int vs long int mismatches in printf args.
+    
+    2007-01-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/table.c (main):
+            * src/trie.c (_vte_trie_addx), (main):
+            * src/utf8echo.c (main):
+            Fix int vs long int mismatches in printf args.
+    
+    
+    svn path=/trunk/; revision=1453
+
+ ChangeLog      |    7 +++++++
+ src/table.c    |    2 +-
+ src/trie.c     |   36 ++++++++++++++++++------------------
+ src/utf8echo.c |    2 +-
+ 4 files changed, 27 insertions(+), 20 deletions(-)
+
+commit baef8d76f5dc0a70b3c7e4ba1be585d1961141a8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jan 18 09:30:06 2007 +0000
+
+    Remove unused variables.
+    
+    2007-01-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/iso2022.c (_vte_iso2022_find_nextctl):
+            * src/reaper.c (vte_reaper_finalize):
+            * src/vte.c (_vte_terminal_insert_char), (vte_terminal_key_press),
+            (vte_terminal_init), (vte_terminal_size_allocate):
+            * src/vteapp.c (main):
+            * src/vtedraw.c (_vte_draw_init_default):
+            * src/vteglyph.c (_vte_glyph_cache_free):
+            * src/vtergb.c (_vte_rgb_copy):
+            * src/vtexft.c (_vte_xft_font_for_char):
+            Remove unused variables.
+    
+    
+    svn path=/trunk/; revision=1452
+
+ ChangeLog      |   13 +++++++++++++
+ src/iso2022.c  |    1 -
+ src/reaper.c   |    1 -
+ src/vte.c      |    8 +-------
+ src/vteapp.c   |    2 ++
+ src/vtedraw.c  |    1 -
+ src/vteglyph.c |    1 -
+ src/vtergb.c   |    1 -
+ src/vtexft.c   |    1 -
+ 9 files changed, 16 insertions(+), 13 deletions(-)
+
+commit 06baf6d464bbfb165c1d5b8cc93aae6dbb7d6503
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Thu Jan 18 02:46:11 2007 +0000
+
+    Bug 161342 revisited. Reset the box to +-inf and not the current cursor,
+    
+    2007-01-18  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 161342 revisited. Reset the box to +-inf and not the current
+       cursor, otherwise you just reproduce the slow behaviour (an overly
+       large invalidation area).
+    
+       * src/vte.c: (vte_terminal_process_incoming):
+               Reset bbox to +-inf.
+    
+    
+    svn path=/trunk/; revision=1451
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   16 ++++++++--------
+ 2 files changed, 17 insertions(+), 8 deletions(-)
+
+commit 9c88d1c90efce33386fcca58736903e58d481ebd
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 22:00:53 2007 +0000
+
+    Second breakage: VTE_INVALID_SOURCE !=0 and calling
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       Second breakage: VTE_INVALID_SOURCE !=0 and calling
+       vte_terminal_set_scrollback_lines with lines == ->scrollback_lines
+       is not a nop.
+    
+       * src/vte.c: (vte_terminal_background_update),
+       (vte_terminal_queue_background_update):
+               VTE_INVALID_SOURCE != 0
+       (vte_terminal_set_scrollback_lines):
+               reset the rowdata everytime.
+    
+    
+    svn path=/trunk/; revision=1450
+
+ ChangeLog |   12 ++++++++++++
+ src/vte.c |    7 ++-----
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+commit 867645ccd8d6ccad5982825ef85451abb639d483
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 21:57:43 2007 +0000
+
+    Bug 397414 - port vteapp to GOption
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 397414 - port vteapp to GOption
+    
+       * src/vteapp.c: (main):
+               Translation of getopt switch to GOptionEntry[].
+               Missing help for --geometry.
+    
+    
+    svn path=/trunk/; revision=1449
+
+ ChangeLog    |    8 ++
+ src/vteapp.c |  399 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 210 insertions(+), 197 deletions(-)
+
+commit 5f4d07a9778eedbbbc267fb57869cefc15874812
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 21:11:24 2007 +0000
+
+    First breakage spotted: the realized flag is set too late in the realize
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       First breakage spotted: the realized flag is set too late in
+       the realize handler. Note to self: not everybody uses a black
+       background.
+    
+       * src/vte.c: (vte_terminal_realize):
+               Restore GTK_WIDGET_SET_FLAGS(REALIZED)
+    
+    
+    svn path=/trunk/; revision=1448
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   11 +++++------
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+commit aca77a8bd471d1fc7d343c0006148da8b543c14c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:28:58 2007 +0000
+
+    Bug 395373 - Allow the user to specify backend priorities.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       Bug 395373 - Allow the user to specify backend priorities.
+    
+       * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
+       (_vte_draw_new):
+               Scan $ENV{VTE_BACKEND} for the user's preferred backend
+               and failover to the first working backend.
+               Discard checking VTE_USE_*
+    
+       * src/vtedraw.h:
+       * src/vteft2.c:
+       * src/vteft2.h:
+       * src/vtegl.c:
+       * src/vtegl.h:
+       * src/vtepango.c:
+       * src/vtepango.h:
+       * src/vtepangox.c:
+       * src/vtepangox.h:
+       * src/vteskel.c: (_vte_skel_check), (_vte_skel_create),
+       (_vte_skel_destroy), (_vte_skel_start):
+       * src/vteskel.h:
+       * src/vtexft.c:
+       * src/vtexft.h:
+               Remove the environment variable field, drop the "Vte" prefix
+               from the backend names and make the exported structure const.
+    
+    
+    svn path=/trunk/; revision=1447
+
+ ChangeLog       |   27 +++++++++++++++++
+ src/vtedraw.c   |   88 ++++++++++++++++++++++++++++++++++++++++---------------
+ src/vtedraw.h   |    4 +-
+ src/vteft2.c    |    4 +-
+ src/vteft2.h    |    2 +-
+ src/vtegl.c     |    4 +-
+ src/vtegl.h     |    2 +-
+ src/vtepango.c  |    4 +-
+ src/vtepango.h  |    2 +-
+ src/vtepangox.c |    4 +-
+ src/vtepangox.h |    2 +-
+ src/vteskel.c   |   29 +++---------------
+ src/vteskel.h   |    2 +-
+ src/vtexft.c    |    4 +-
+ src/vtexft.h    |    2 +-
+ 15 files changed, 114 insertions(+), 66 deletions(-)
+
+commit 2007589313e4a9bbad44b91d79dfd2b109166eca
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:10:49 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous):
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_set_default_attributes),
+       (vte_terminal_set_default_tabstops), (vte_terminal_set_encoding),
+       (vte_terminal_set_opacity), (vte_terminal_set_default_colors),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_feed_child_using_modes),
+       (vte_terminal_hierarchy_changed),
+       (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_set_font),
+       (vte_terminal_set_font_from_string), (vte_terminal_set_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scroll_adjustment),
+       (vte_terminal_set_emulation), (vte_terminal_set_termcap),
+       (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_unrealize), (vte_terminal_finalize),
+       (vte_terminal_realize), (vte_terminal_determine_colors),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_transparent),
+       (vte_terminal_set_cursor_blinks),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
+       (vte_terminal_set_pty):
+       * src/vteseq.c: (vte_sequence_handler_st),
+       (vte_sequence_handler_vb),
+       (vte_sequence_handler_device_status_report),
+       (vte_sequence_handler_dec_device_status_report),
+       (vte_sequence_handler_window_manipulation):
+               Janitorial work to improve code readability and small
+               micro-optimisations, such as use the length returned by
+               g_snprintf rather then calling strlen on the result or just
+               using a constant string.
+    
+    
+    svn path=/trunk/; revision=1446
+
+ ChangeLog         |   36 +++++++++
+ src/iso2022.c     |    2 +-
+ src/vte-private.h |    3 +-
+ src/vte.c         |  226 +++++++++++++++++++++++++++--------------------------
+ src/vteseq.c      |  102 +++++++++++-------------
+ 5 files changed, 202 insertions(+), 167 deletions(-)
+
+commit 8d819414955071192d09f416aa9040ce3bd230f1
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:07:37 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/ring.h:
+               Make the debug checks conditional on VTE_DEBUG.
+    
+    
+    svn path=/trunk/; revision=1445
+
+ ChangeLog  |    7 +++++++
+ src/ring.h |    5 +++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+commit c900468b1c4f178d04424f182836bf058ad61b08
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:06:56 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/matcher.c: (_vte_matcher_add), (_vte_matcher_create),
+       (_vte_matcher_destroy), (_vte_matcher_new), (_vte_matcher_match),
+       (_vte_matcher_print):
+       * src/matcher.h:
+       * src/table.c: (_vte_table_new):
+       * src/table.h:
+       * src/trie.c: (_vte_trie_new):
+       * src/trie.h:
+               _vte_match_match() is called extremely frequently, and the
+               switch shows up on the profiles. Replace the switch with a
+               function pointer obtained by introducing function tables for
+               the matcher implementations.
+    
+    
+    svn path=/trunk/; revision=1444
+
+ ChangeLog     |   17 ++++++++++++
+ src/matcher.c |   78 +++++++++++++++-----------------------------------------
+ src/matcher.h |   23 +++++++++++++++++
+ src/table.c   |   14 +++++++++-
+ src/table.h   |    2 +
+ src/trie.c    |   14 +++++++++-
+ src/trie.h    |    2 +
+ 7 files changed, 91 insertions(+), 59 deletions(-)
+
+commit f5801a4790d57af56dff270c11ebe5438f283ca7
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:04:46 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_font_full), (vte_terminal_realize):
+               Don't load a font until the terminal is realized.
+               Saves decoding 2 or 3 fonts before g-t is mapped.
+    
+    
+    svn path=/trunk/; revision=1443
+
+ ChangeLog         |    9 +++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |   62 ++++++++++++++++++++++++++++++++++------------------
+ 3 files changed, 50 insertions(+), 22 deletions(-)
+
+commit 736cd9069881445f07940f20800ac1a7be3a4bef
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:03:33 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vteseq.c: (vte_g_array_fill):
+               Micro-optimise the loop.
+    
+    
+    svn path=/trunk/; revision=1442
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |    5 +++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 3258a9a629ff722be1da2c32cfa996bc2596ee82
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:02:44 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vteft2.c: (_vte_ft2_create), (_vte_ft2_start),
+       (_vte_ft2_end), (update_bbox), (_vte_ft2_set_text_font),
+       (_vte_ft2_draw_text):
+       * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_resize),
+       (_vte_rgb_draw_color_rgb), (_vte_rgb_copy):
+       * src/vtergb.h:
+               Reuse converted glyphs within a run.
+    
+    
+    svn path=/trunk/; revision=1441
+
+ ChangeLog    |   12 ++++++++++
+ src/vteft2.c |   61 ++++++++++++++++++++++++++-------------------------
+ src/vtergb.c |   68 ++++++++++++++++++++++++++++++++++++++++++---------------
+ src/vtergb.h |    2 +
+ 4 files changed, 95 insertions(+), 48 deletions(-)
+
+commit d09749def08e9b2485fd6bca6962c6be2e2d203a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:01:44 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vteconv.c: (_vte_conv_utf8_strlen), (_vte_conv):
+               Micro-optimise the loops.
+    
+    
+    svn path=/trunk/; revision=1440
+
+ ChangeLog     |    7 +++++++
+ src/vteconv.c |   33 +++++++++++++--------------------
+ 2 files changed, 20 insertions(+), 20 deletions(-)
+
+commit c06f39b7c406ff785b9cdd84d5554a916e9a6660
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 18:00:51 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vteglyph.c: (_vte_glyph_free), (_vte_cached_glyph_free),
+       (_vte_glyph_cache_new), (_vte_glyph_cache_free),
+       (_vte_glyph_cache_set_font_description),
+       (_vte_glyph_cache_has_char), (_vte_glyph_remap_char),
+       (_vte_glyph_get_uncached), (_vte_glyph_get), (_vte_glyph_draw):
+       * src/vteglyph.h:
+               Avoid the double glyph lookup in _vte_glyph_get and
+               replace the tree with a hash.
+    
+    
+    svn path=/trunk/; revision=1439
+
+ ChangeLog      |   13 ++++++++
+ src/vteglyph.c |   93 +++++++++++++++++++++++---------------------------------
+ src/vteglyph.h |    2 +-
+ 3 files changed, 52 insertions(+), 56 deletions(-)
+
+commit 24a1c9033fa36e79e8d1a5caee4d1bf22774b50c
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:58:56 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/iso2022.c: (_vte_iso2022_state_new),
+       (_vte_iso2022_state_free), (_vte_iso2022_state_set_codeset):
+       * src/trie.c: (_vte_trie_add), (convert_mbstowcs):
+       * src/utf8echo.c: (main):
+       * src/vte.c: (vte_terminal_set_encoding), (vte_terminal_send),
+       (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_set_word_chars):
+       * src/vteconv.c: (_vte_conv_open), (_vte_conv_close), (_vte_conv):
+       * src/vteconv.h:
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+               s/(VteConv)-1/VTE_INVALID_CONV/
+    
+    
+    svn path=/trunk/; revision=1438
+
+ ChangeLog      |   16 ++++++++++++++++
+ src/iso2022.c  |   10 +++++-----
+ src/trie.c     |    4 ++--
+ src/utf8echo.c |    2 +-
+ src/vte.c      |   14 +++++++-------
+ src/vteconv.c  |    6 +++---
+ src/vteconv.h  |    1 +
+ src/vteseq.c   |    2 +-
+ 8 files changed, 36 insertions(+), 19 deletions(-)
+
+commit 0de19093d8b5d24c4ded623e938d7a1ffb21214b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:58:01 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vte.c: (_vte_new_row_data), (_vte_new_row_data_sized),
+       (_vte_terminal_find_row_data), (_vte_row_data_find_charcell),
+       (vte_line_is_wrappable), (vte_terminal_extend_selection),
+       (vte_terminal_draw_row):
+               Refactor vte_find_row_data to simplify and improve
+               some logic.
+    
+    
+    svn path=/trunk/; revision=1437
+
+ ChangeLog |   11 ++++
+ src/vte.c |  194 ++++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 112 insertions(+), 93 deletions(-)
+
+commit cbb43c93086847789a92faa03d6837f2ef24df63
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:56:49 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vte.c: (vte_g_array_fill), (vte_terminal_emit_commit),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
+       (_vte_terminal_fork_basic), (vte_terminal_process_incoming),
+       (vte_terminal_key_press), (vte_terminal_visibility_notify),
+       (vte_terminal_apply_metrics), (vte_terminal_paint),
+       (vte_terminal_expose):
+               Callgrind driven rewrite of critical loops.
+    
+    
+    svn path=/trunk/; revision=1436
+
+ ChangeLog |   12 ++++
+ src/vte.c |  198 ++++++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 116 insertions(+), 94 deletions(-)
+
+commit b599a37352fc35337fad518b6866e95c7e248445
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:55:03 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_write), (vte_terminal_io_read),
+       (vte_terminal_feed), (vte_terminal_feed_child_binary),
+       (vte_terminal_init), (vte_terminal_unrealize),
+       (add_process_timeout), (add_update_timeout),
+       (remove_process_timeout), (vte_terminal_stop_processing),
+       (vte_terminal_is_processing), (vte_terminal_start_processing),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               The rate-limiting step is the display update - we do not need
+               to process input faster than we are displaying it. So use the
+               update display timeout to process new input (and dirty some
+               more pixels).
+    
+    
+    svn path=/trunk/; revision=1435
+
+ ChangeLog         |   19 ++++
+ src/vte-private.h |    5 +-
+ src/vte.c         |  238 +++++++++++++++++++++--------------------------------
+ 3 files changed, 113 insertions(+), 149 deletions(-)
+
+commit 9e9d2c65c1687d10d3d83ab13ecbe203ba36ae18
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:49:23 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/interpret.c: (main):
+       * src/iso2022.c: (_vte_iso2022_fragment_input),
+       (_vte_iso2022_process), (main):
+       * src/vte.c: (vte_terminal_match_contents_refresh),
+       (vte_terminal_process_incoming), (vte_terminal_init),
+       (vte_terminal_set_word_chars):
+       * src/vteaccess.c:
+       (vte_terminal_accessible_update_private_data_if_needed):
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+       * src/vtefc.h:
+       * src/vteglyph.c: (_vte_glyph_cache_new), (_vte_glyph_cache_free),
+       (_vte_glyph_cache_set_font_description):
+       * src/vteglyph.h:
+       * src/vteregex.c: (_vte_regex_sort_matches):
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char):
+               s/g_array_new(TRUE, TRUE/g_array_new(FALSE, FALSE/
+               All uses of GArray respect their lengths and do not
+               zero-termination or untouched members to be cleared.
+    
+    
+    svn path=/trunk/; revision=1434
+
+ ChangeLog       |   24 ++++++++++++++++++++++++
+ src/interpret.c |    2 +-
+ src/iso2022.c   |   15 +++++++++------
+ src/vte.c       |   10 +++++-----
+ src/vteaccess.c |    9 +++------
+ src/vtefc.c     |    6 +++---
+ src/vtefc.h     |    2 +-
+ src/vteglyph.c  |   20 +++++++++-----------
+ src/vteglyph.h  |    2 +-
+ src/vteregex.c  |    2 +-
+ src/vtexft.c    |   49 ++++++++++++++++++++++---------------------------
+ 11 files changed, 79 insertions(+), 62 deletions(-)
+
+commit 7c070ed56f33e131f618b5929fe9dbb0e6a27d76
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:46:52 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/iso2022.c: (_vte_iso2022_state_free):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/ring.c: (_vte_ring_free):
+       * src/table.c: (_vte_table_free):
+       * src/trie.c: (_vte_trie_match):
+       * src/vte.c: (_vte_terminal_match_contents_clear),
+       (_vte_terminal_fork_basic),
+       (vte_terminal_get_text_range_maybe_wrapped), (vte_terminal_copy),
+       (vte_terminal_finalize), (vte_terminal_draw_cells_with_attributes):
+       * src/vteaccess.c: (vte_terminal_accessible_free_private_data):
+       * src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_cache_item_free):
+       * src/vteconv.c: (_vte_conv_close):
+       * src/vtedraw.c: (_vte_draw_free):
+       * src/vteft2.c: (_vte_ft2_destroy):
+       * src/vtegl.c: (_vte_gl_destroy):
+       * src/vteglyph.c: (_vte_glyph_cache_free):
+       * src/vtepango.c: (_vte_pango_destroy):
+       * src/vtepangox.c: (_vte_pango_x_destroy):
+       * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_free):
+       * src/vteseq.c: (vte_sequence_handler_se),
+       (vte_sequence_handler_so):
+       * src/vteskel.c: (_vte_skel_destroy):
+       * src/vtexft.c: (_vte_xft_font_close), (_vte_xft_destroy):
+               Do not zero memory in destructors, as glib will zero all
+               freed memory if G_DEBUG=gc-friendly.
+    
+    
+    svn path=/trunk/; revision=1433
+
+ ChangeLog       |   30 +++++++++++++++++++++++
+ src/iso2022.c   |   15 -----------
+ src/matcher.c   |    6 +----
+ src/ring.c      |    5 ----
+ src/table.c     |    3 --
+ src/trie.c      |    6 +----
+ src/vte.c       |   70 +++++-------------------------------------------------
+ src/vteaccess.c |    4 ---
+ src/vtebg.c     |   12 +--------
+ src/vteconv.c   |    9 -------
+ src/vtedraw.c   |    4 ---
+ src/vteft2.c    |    4 ---
+ src/vtegl.c     |   12 ---------
+ src/vteglyph.c  |   15 +----------
+ src/vtepango.c  |   10 --------
+ src/vtepangox.c |   10 --------
+ src/vtergb.c    |   11 +-------
+ src/vteseq.c    |   40 ++++++++-----------------------
+ src/vteskel.c   |    6 ----
+ src/vtexft.c    |   20 ---------------
+ 20 files changed, 55 insertions(+), 237 deletions(-)
+
+commit 097a0979e15cb02c93da0f166b29451f6104175a
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:45:20 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/reaper.c: (vte_reaper_add_child), (vte_reaper_init),
+       (vte_reaper_constructor), (vte_reaper_finalize),
+       (vte_reaper_class_init), (vte_reaper_get), (main):
+       * src/vte.c: (G_DEFINE_TYPE_WITH_CODE), (_vte_terminal_fork_basic),
+       (vte_terminal_key_press), (vte_terminal_init), (vte_terminal_show),
+       (vte_terminal_finalize), (vte_terminal_get_accessible),
+       (vte_terminal_class_init):
+       * src/vteaccess.c: (vte_terminal_initialize),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_class_init),
+       (vte_terminal_accessible_get_type),
+       (vte_terminal_accessible_factory_init),
+       (vte_terminal_accessible_factory_new):
+       * src/vtebg.c: (vte_bg_native_new), (vte_bg_finalize),
+       (vte_bg_class_init), (vte_bg_init), (vte_bg_get_for_screen),
+       (vte_bg_cache_item_free), (vte_bg_cache_prune_int),
+       (_vte_bg_resize_pixbuf), (vte_bg_set_root_pixmap),
+       (vte_bg_cache_add), (vte_bg_cache_search), (vte_bg_get_pixmap),
+       (vte_bg_get_pixbuf):
+               Use GObject boiler-plate code (G_DEFINE_TYPE),
+               as opposed to open coding.
+    
+    
+    svn path=/trunk/; revision=1432
+
+ ChangeLog       |   26 +++++++
+ src/reaper.c    |   91 ++++++++---------------
+ src/vte.c       |   96 ++++++++----------------
+ src/vteaccess.c |  149 +++++++++++++++----------------------
+ src/vtebg.c     |  221 ++++++++++++++++++++++++++-----------------------------
+ 5 files changed, 252 insertions(+), 331 deletions(-)
+
+commit ee14604f30ecfaaaf7aa4f99962cdef1470bcc24
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:43:17 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/vte-private.h:
+       * src/vte.c: (vte_free_row_data), (vte_g_array_fill),
+       (vte_terminal_find_charcell), (vte_terminal_preedit_width),
+       (vte_terminal_preedit_length), (_vte_invalidate_cursor_once),
+       (vte_invalidate_cursor_periodic), (vte_terminal_deselect_all),
+       (vte_terminal_set_default_tabstops),
+       (vte_terminal_match_contents_refresh), (vte_terminal_cursor_new),
+       (vte_terminal_match_check_internal),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_scroll_pages), (vte_terminal_maybe_scroll_to_top),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (_vte_terminal_set_pointer_visible), (vte_terminal_new),
+       (vte_terminal_set_color_internal), (vte_terminal_set_color_bold),
+       (vte_terminal_set_color_dim), (vte_terminal_set_color_foreground),
+       (vte_terminal_set_color_background),
+       (vte_terminal_set_color_cursor),
+       (vte_terminal_set_color_highlight), (vte_terminal_handle_sequence),
+       (vte_terminal_catch_child_exited),
+       (_vte_terminal_connect_pty_read),
+       (_vte_terminal_connect_pty_write), (_vte_terminal_fork_basic),
+       (vte_terminal_eof), (vte_terminal_im_reset),
+       (vte_terminal_process_incoming), (vte_terminal_io_read),
+       (vte_terminal_io_write), (vte_terminal_send),
+       (vte_terminal_im_commit), (vte_terminal_im_preedit_start),
+       (vte_terminal_im_preedit_end), (vte_terminal_im_preedit_changed),
+       (vte_terminal_configure_toplevel),
+       (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
+       (add_cursor_timeout), (vte_terminal_key_press), (vte_same_class),
+       (vte_line_is_wrappable), (vte_terminal_paste_cb),
+       (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_clear_cb),
+       (vte_terminal_copy_cb),
+       (vte_terminal_get_text_range_maybe_wrapped),
+       (vte_terminal_clipboard_get), (vte_terminal_copy),
+       (vte_terminal_paste), (vte_terminal_autoscroll),
+       (vte_terminal_start_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_visibility_notify), (vte_terminal_apply_metrics),
+       (vte_terminal_set_font_full), (vte_terminal_refresh_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scroll_adjustment),
+       (vte_terminal_connect_xft_settings),
+       (vte_terminal_disconnect_xft_settings),
+       (_vte_terminal_codeset_changed_cb), (vte_terminal_init),
+       (vte_terminal_size_request), (vte_terminal_size_allocate),
+       (vte_terminal_show), (root_pixmap_changed_cb),
+       (vte_terminal_unrealize), (vte_terminal_finalize),
+       (vte_terminal_realize), (vte_terminal_determine_colors),
+       (vte_terminal_paint), (vte_terminal_expose), (vte_terminal_scroll),
+       (vte_terminal_get_accessible), (vte_terminal_im_append_menuitems),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_image),
+       (vte_terminal_set_background_image_file),
+       (vte_terminal_set_cursor_blinks), (vte_terminal_reset),
+       (vte_terminal_set_pty):
+       * src/vteaccess.c: (vte_terminal_initialize),
+       (vte_terminal_accessible_finalize):
+       * src/vtedraw.c: (_vte_draw_new), (_vte_draw_free),
+       (_vte_draw_start), (_vte_draw_end):
+       * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description),
+       (_vte_fc_defaults_from_gtk), (_vte_fc_connect_settings_changes),
+       (_vte_fc_disconnect_settings_changes):
+       * src/vteft2.c: (_vte_ft2_destroy),
+       (_vte_ft2_set_background_image), (_vte_ft2_clear):
+       * src/vtegl.c: (_vte_gl_destroy), (_vte_gl_set_background_image),
+       (_vte_gl_clear):
+       * src/vtepango.c: (_vte_pango_destroy), (_vte_pango_start),
+       (_vte_pango_end), (_vte_pango_set_background_image),
+       (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_destroy), (_vte_pango_x_start),
+       (_vte_pango_x_end), (_vte_pango_x_set_background_image),
+       (_vte_pango_x_set_text_font):
+       * src/vterdb.c: (_vte_rdb_get):
+       * src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_set_title_internal), (vte_terminal_beep),
+       (vte_sequence_handler_do), (vte_sequence_handler_sf),
+       (vte_sequence_handler_sr), (vte_sequence_handler_vb),
+       (vte_sequence_handler_window_manipulation):
+       * src/vteskel.c: (_vte_skel_destroy):
+       * src/vtetree.c: (_vte_tree_new), (_vte_tree_destroy):
+       * src/vtexft.c: (_vte_xft_set_background_image), (_vte_xft_clear):
+               Remove superfluous checks and run-time checked type casts.
+    
+    
+    svn path=/trunk/; revision=1431
+
+ ChangeLog         |   89 +++++++++
+ src/vte-private.h |    2 +-
+ src/vte.c         |  550 +++++++++++++++++------------------------------------
+ src/vteaccess.c   |   68 ++++----
+ src/vtedraw.c     |   10 +-
+ src/vtefc.c       |   18 +-
+ src/vteft2.c      |   10 +-
+ src/vtegl.c       |   10 +-
+ src/vtepango.c    |   50 +++---
+ src/vtepangox.c   |   56 +++---
+ src/vterdb.c      |    4 +-
+ src/vteseq.c      |   26 +--
+ src/vteskel.c     |    4 +-
+ src/vtetree.c     |    4 +-
+ src/vtexft.c      |    8 +-
+ 15 files changed, 394 insertions(+), 515 deletions(-)
+
+commit 2c0c0eafd9681470b399c9e813e19ca27acf3b2b
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:41:36 2007 +0000
+
+    As part of Bug 397439.
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+       As part of Bug 397439.
+    
+       * src/debug.c:
+       * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
+       (_vte_iso2022_state_new), (_vte_iso2022_state_set_codeset),
+       (process_8_bit_sequence), (process_cdata), (process_control),
+       (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/matcher.c: (_vte_matcher_init), (_vte_matcher_create),
+       (_vte_matcher_destroy):
+       * src/pty.c: (_vte_pty_run_on_pty), (_vte_pty_fork_on_pty_name),
+       (_vte_pty_fork_on_pty_fd), (_vte_pty_set_size),
+       (_vte_pty_get_size), (_vte_pty_ptsname), (_vte_pty_open_unix98),
+       (_vte_pty_open_with_helper), (_vte_pty_open), (main):
+       * src/reaper.c: (vte_reaper_emit_signal),
+       (vte_reaper_child_watch_cb), (vte_reaper_init),
+       (vte_reaper_finalize):
+       * src/reflect.c: (text_changed_insert), (text_changed_delete):
+       * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
+       (_vte_ring_remove), (scrolled_off), (main):
+       * src/slowcat.c: (main):
+       * src/table.c: (_vte_table_printi), (_vte_table_print):
+       * src/trie.c: (char_class_string_extract):
+       * src/vte.c: (_vte_invalidate_cursor_once),
+       (vte_terminal_emit_selection_changed), (vte_terminal_emit_commit),
+       (vte_terminal_emit_emulation_changed),
+       (vte_terminal_emit_encoding_changed),
+       (vte_terminal_emit_child_exited),
+       (_vte_terminal_emit_contents_changed),
+       (vte_terminal_emit_cursor_moved), (vte_terminal_emit_eof),
+       (vte_terminal_emit_char_size_changed),
+       (_vte_terminal_emit_status_line_changed),
+       (vte_terminal_emit_increase_font_size),
+       (vte_terminal_emit_decrease_font_size),
+       (_vte_terminal_emit_text_inserted),
+       (_vte_terminal_emit_text_deleted),
+       (vte_terminal_emit_text_modified),
+       (vte_terminal_emit_text_scrolled), (vte_terminal_deselect_all),
+       (vte_terminal_match_check_internal), (vte_terminal_match_check),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_maybe_scroll_to_bottom), (vte_terminal_set_encoding),
+       (_vte_terminal_set_pointer_visible), (vte_terminal_new),
+       (vte_terminal_generate_bold), (_vte_terminal_insert_char),
+       (display_control_sequence), (vte_terminal_fork_command),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_process_incoming), (vte_terminal_io_write),
+       (vte_terminal_send), (vte_terminal_im_commit),
+       (vte_terminal_im_preedit_start), (vte_terminal_im_preedit_end),
+       (vte_terminal_im_preedit_changed),
+       (vte_terminal_configure_toplevel),
+       (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
+       (vte_terminal_key_press), (vte_terminal_paste_cb),
+       (vte_terminal_match_hilite_clear), (vte_terminal_match_hilite),
+       (vte_terminal_clear_cb), (vte_terminal_copy_cb),
+       (vte_terminal_copy), (vte_terminal_paste),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_set_font_full), (vte_terminal_set_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_emulation),
+       (vte_terminal_set_termcap), (vte_terminal_reset_rowdata),
+       (vte_terminal_fc_settings_changed), (vte_terminal_init),
+       (vte_terminal_size_request), (vte_terminal_size_allocate),
+       (vte_terminal_show), (vte_terminal_unrealize),
+       (vte_terminal_finalize), (vte_terminal_realize),
+       (vte_terminal_draw_cells), (_vte_terminal_map_pango_color),
+       (vte_terminal_paint), (vte_terminal_scroll),
+       (vte_terminal_class_init), (vte_terminal_get_type),
+       (vte_terminal_copy_clipboard), (vte_terminal_paste_clipboard),
+       (vte_terminal_copy_primary), (vte_terminal_paste_primary),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_saturation),
+       (vte_terminal_set_background_tint_color),
+       (vte_terminal_set_background_transparent),
+       (vte_terminal_set_background_image),
+       (vte_terminal_set_background_image_file),
+       (vte_terminal_set_word_chars):
+       * src/vteaccess.c: (emit_text_caret_moved),
+       (emit_text_changed_insert), (emit_text_changed_delete),
+       (vte_terminal_accessible_update_private_data_if_needed),
+       (vte_terminal_accessible_invalidate_cursor),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere),
+       (vte_terminal_accessible_text_init),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_factory_new):
+       * src/vteapp.c: (main):
+       * src/vtebg.c: (vte_bg_root_pixmap), (_vte_bg_resize_pixbuf):
+       * src/vtedraw.c: (_vte_draw_new):
+       * src/vtepango.c: (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_set_text_font):
+       * src/vteseq.c: (vte_terminal_emit_deiconify_window),
+       (vte_terminal_emit_iconify_window),
+       (vte_terminal_emit_icon_title_changed),
+       (vte_terminal_emit_window_title_changed),
+       (vte_terminal_emit_raise_window), (vte_terminal_emit_lower_window),
+       (vte_terminal_emit_maximize_window),
+       (vte_terminal_emit_refresh_window),
+       (vte_terminal_emit_restore_window),
+       (vte_terminal_emit_move_window), (vte_terminal_emit_resize_window),
+       (vte_sequence_handler_set_title_internal),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_bt),
+       (vte_sequence_handler_application_keypad),
+       (vte_sequence_handler_normal_keypad),
+       (vte_sequence_handler_window_manipulation):
+       * src/vtetc.c: (main):
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               s/fprintf(stderr,/g_printerr(/
+    
+    
+    
+    svn path=/trunk/; revision=1430
+
+ ChangeLog       |  116 +++++++++++++++++++++
+ src/debug.c     |    1 -
+ src/iso2022.c   |   74 +++++++-------
+ src/keymap.c    |   60 ++++++------
+ src/matcher.c   |   11 +-
+ src/pty.c       |   52 +++++-----
+ src/reaper.c    |    8 +-
+ src/reflect.c   |    6 +-
+ src/ring.c      |   52 +++++-----
+ src/slowcat.c   |    2 +-
+ src/table.c     |    4 +-
+ src/trie.c      |    2 +-
+ src/vte.c       |  303 +++++++++++++++++++++++++++----------------------------
+ src/vteaccess.c |   34 +++---
+ src/vteapp.c    |    4 +-
+ src/vtebg.c     |    4 +-
+ src/vtedraw.c   |    2 +-
+ src/vtepango.c  |    2 +-
+ src/vtepangox.c |    2 +-
+ src/vteseq.c    |   96 +++++++++---------
+ src/vtetc.c     |    4 +-
+ src/vtexft.c    |    2 +-
+ 22 files changed, 476 insertions(+), 365 deletions(-)
+
+commit 38a457f890a73873c3b6314a96c77678f56fafb9
+Author: Chris Wilson <chris chris-wilson co uk>
+Date:   Wed Jan 17 17:32:38 2007 +0000
+
+    Only invalidate groups of inserted chars and not the whole bbox. This
+    
+    2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+    
+            Only invalidate groups of inserted chars and not the whole bbox.
+            This speeds up applications like vim which maintain a status line
+            at the bottom of the screen. Fixes bug 161342.
+    
+            * src/vte-private.h:
+            * src/vte.c: (update_regions), (_vte_invalidate_cells),
+            (_vte_invalidate_all), (_vte_terminal_scroll_region),
+            (vte_terminal_process_incoming), (reset_update_regions),
+            (remove_update_timeout), (update_repeat_timeout), (update_timeout):
+    
+    
+    svn path=/trunk/; revision=1429
+
+ ChangeLog         |   12 +++
+ src/vte-private.h |    2 +-
+ src/vte.c         |  203 +++++++++++++++++++++++++++++++++--------------------
+ 3 files changed, 139 insertions(+), 78 deletions(-)
+
+commit 650bf5cc513a23eedd5be92576b5d634a8c27c28
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jan 15 23:37:45 2007 +0000
+
+    Bug 387171 – vte fails to install on FreeBSD due to missing header Patch
+    
+    2007-01-15  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 387171 – vte fails to install on FreeBSD due to missing header
+            Patch from Roy Marples
+    
+            * src/vteseq.c: #include <limits.h>
+    
+    
+    svn path=/trunk/; revision=1428
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |    1 +
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 499b55eebb9647308c575813d863c0e10e45a68f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jan 15 18:20:34 2007 +0000
+
+    Bug 396831 – Unable to compile without X Patch from Chris Wilson
+    
+    2007-01-15  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 396831 – Unable to compile without X
+            Patch from Chris Wilson
+    
+            * src/vtebg.c (_vte_bg_display_sync), (vte_bg_root_pixmap): Add stubs.
+    
+    
+    svn path=/trunk/; revision=1427
+
+ ChangeLog   |    7 +++++++
+ src/vtebg.c |   10 ++++++++++
+ 2 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 04bfc12f0a66c9e6d57b488468c6f77532876848
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Wed Jan 10 01:18:47 2007 +0000
+
+    Bug 394890 – Segfault when running vte or gnome-terminal
+    
+    2007-01-09  Ryan Lortie  <desrt desrt ca>
+    
+            Bug 394890 – Segfault when running vte or gnome-terminal
+    
+            * src/vtetc.c (_vte_termcap_find_string): change 'int' to 'gssize' to
+            match previous fixup.  Hopefully that does it. :)
+    
+    
+    svn path=/trunk/; revision=1426
+
+ ChangeLog   |    7 +++++++
+ src/vtetc.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 91024830d19ceb0a0338cc944477d01fca3d9fc3
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Jan 9 03:32:25 2007 +0000
+
+    Remove .cvsignore files (moved to svn:ignore prop)
+    
+    svn path=/trunk/; revision=1424
+
+ .cvsignore                  |   34 ----------------------------------
+ doc/.cvsignore              |    2 --
+ doc/openi18n/.cvsignore     |    3 ---
+ doc/reference/.cvsignore    |   21 ---------------------
+ gnome-pty-helper/.cvsignore |   19 -------------------
+ po/.cvsignore               |   12 ------------
+ python/.cvsignore           |    3 ---
+ src/.cvsignore              |   29 -----------------------------
+ termcaps/.cvsignore         |    2 --
+ 9 files changed, 0 insertions(+), 125 deletions(-)
+
+commit b944a903a3bff70ea9e155a5bcce2f80dffd0f43
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jan 9 00:03:58 2007 +0000
+
+    Released vte-0.15.1.
+    
+    2007-01-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.1.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.1.
+    
+            * src/Makefile.am: Bumped libtool version to 10:8:1.
+    
+    
+    svn path=/trunk/; revision=1422
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    9 +++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 00062d4e4d42a1d230893b8da3affe6901551a9c
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Fri Dec 29 09:53:16 2006 +0000
+
+    Small fix to the previous patch.
+    
+    2006-12-29  Ryan Lortie  <desrt desrt ca>
+    
+            Small fix to the previous patch.
+    
+            * src/vtetc.c (_vte_termcap_find_string_length): 'int' is not the same
+            as 'gssize' on 64bit platforms, causing compile errors.
+
+ ChangeLog   |    7 +++++++
+ src/vtetc.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 2c7dcf1812cc58d044edd7f065c0b1cfed00247f
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Wed Dec 27 22:51:38 2006 +0000
+
+    Updated Arabic Translation.
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 673b596469398389c61e98ea83e52c4c30319731
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Wed Dec 27 21:17:05 2006 +0000
+
+    Bug 354061 – Excessive use of strlen by _vte_termcap_create
+    
+    2006-12-27  Ryan Lortie  <desrt desrt ca>
+    
+            Bug 354061 – Excessive use of strlen by _vte_termcap_create
+    
+            * src/vtetc.c: near-complete rewrite to use a GMappedFile rather than
+            reading a line at a time with excessive strlen/realloc use.
+    
+            * str/matcher.c: this shouldn't be calling the strip code as the
+            strings it has are already unescaped.
+
+ ChangeLog     |   10 +
+ src/matcher.c |   16 +-
+ src/vtetc.c   | 1239 +++++++++++++++++++++++++--------------------------------
+ 3 files changed, 551 insertions(+), 714 deletions(-)
+
+commit 9f1df4993cc4c92c5a989e4337e08429b730c7fc
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Wed Dec 27 21:10:34 2006 +0000
+
+    Bug 387475 – Gtk-Warning spew in gnome-terminal
+    
+    2006-12-27  Ryan Lortie  <desrt desrt ca>
+    
+            Bug 387475 – Gtk-Warning spew in gnome-terminal
+    
+            Problem introduced by fix to bug 356552.
+    
+            * src/vte.c (vte_invalidate_cursor_periodic): Add a temporary backward
+            compatibility hack to prevent GObject from spewing warnings about
+            missing GtkSettings properties in old GTK versions.
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   27 ++++++++++++++++++++++++---
+ 2 files changed, 34 insertions(+), 3 deletions(-)
+
+commit 4bb0946b36d7906425fbebb2472bdf4ba3964caa
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Sun Dec 24 21:53:12 2006 +0000
+
+    Updated Arabic Translation.
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   18 +++++++++---------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+commit b702bfd308e1dbce88987a6529a62207125969d8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Dec 20 18:34:29 2006 +0000
+
+    Bug 387482 – Variable modified in signal handler should be volatile
+    
+    2006-12-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 387482 – Variable modified in signal handler should be volatile
+            Patch from Bastien Nocera
+    
+            * gnome-pty-helper/gnome-pty-helper.c: Make variable "done" volatile.
+
+ ChangeLog                           |    7 +++++++
+ gnome-pty-helper/gnome-pty-helper.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 528dc1831cfe1b4d6916e3520da9ee4d81d135f9
+Author: Raivis Dejus <orvils gmail com>
+Date:   Tue Dec 19 14:36:31 2006 +0000
+
+    Updated Latvian Translation.
+    
+    2006-12-19  Raivis Dejus <orvils gmail com>
+    
+            * lv.po: Updated Latvian Translation.
+
+ po/ChangeLog |    4 +++
+ po/lv.po     |   59 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 37 insertions(+), 26 deletions(-)
+
+commit 798313aeae10d5165472f993bc6dfde4ab9adeac
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Dec 8 21:48:40 2006 +0000
+
+    Red Hat Bug 218626: "last -ad" print junk in last column
+    
+    2006-12-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Red Hat Bug 218626: "last -ad" print junk in last column
+    
+            * gnome-pty-helper/gnome-utmp.c (write_logout_record),
+            (write_login_record): Don't gettimeofday directly into ut.ut_tv.
+            That overruns on x86_64.
+
+ ChangeLog                     |    8 ++++++++
+ gnome-pty-helper/gnome-utmp.c |   10 ++++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit 7a400dc0a3e7e8ac88fc359597a98ce43e1c18ea
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Dec 5 23:01:17 2006 +0000
+
+    Released vte-0.15.0.
+    
+    2006-12-05  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.15.0.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.15.0.
+    
+            * src/Makefile.am: Bumped libtool version to 10:7:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    7 +++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 19 insertions(+), 2 deletions(-)
+
+commit f807d1d8e4d78e51889c2b69e697d5f0c6db81c0
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Tue Dec 5 22:28:39 2006 +0000
+
+    Bug 356552 – cursor timeout runs all the time
+    
+    2006-12-05  Ryan Lortie  <desrt desrt ca>
+    
+            Bug 356552 – cursor timeout runs all the time
+    
+            * src/vte-private.h: Rework how cursor blinking works.
+            * src/vte.c: Rework how cursor blinking works.  Only register the
+            cursor blink callback when cursor blink is enabled and the window
+            is focused.
+
+ ChangeLog         |    9 +++
+ src/vte-private.h |    3 +-
+ src/vte.c         |  201 ++++++++++++++++++++++++++---------------------------
+ 3 files changed, 111 insertions(+), 102 deletions(-)
+
+commit 12954eec3737d881e04c12ec503ee58581148e78
+Author: Wouter Bolsterlee <wbolster cvs gnome org>
+Date:   Sun Nov 19 18:48:54 2006 +0000
+
+    Translation updated by GNOME PL Team.
+    
+    2006-11-19  Wouter Bolsterlee  <wbolster cvs gnome org>
+    
+       * pl.po: Translation updated by GNOME PL Team.
+
+ po/ChangeLog |    4 ++++
+ po/pl.po     |   47 +++++++++++++++++++++++++----------------------
+ 2 files changed, 29 insertions(+), 22 deletions(-)
+
+commit 6a3b2e9b9d7697980723d3462af1fc4bc1e75846
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Sat Nov 18 20:30:11 2006 +0000
+
+    Updated Arabic Translation.  QA'ed by Khaled Hosny
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   22 +++++++++++-----------
+ 2 files changed, 15 insertions(+), 11 deletions(-)
+
+commit e229967d4abcdabf1c2a4edd0763d9d6fd061b27
+Author: Mariano Suárez-Alvarez <mariano gnome org>
+Date:   Fri Nov 17 00:51:03 2006 +0000
+
+    Bug 307396 – Mouse scroll mode not controllable
+    
+    2006-11-16 Mariano Suárez-Alvarez <mariano gnome org>
+    
+       Bug 307396 – Mouse scroll mode not controllable
+    
+       * src/vte.c(vte_terminal_scroll): make the scrollwheel scroll by tenths of
+       a screen (or 1 line, whichever is bigger) instead of half screens.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 43b1051c010848db001ccc668d39f7b5169f33ea
+Author: Mariano Suárez-Alvarez <mariano gnome org>
+Date:   Thu Nov 16 19:46:01 2006 +0000
+
+    Bug 356602 – const cast warning fixes for libvte Patch by Ryan Lortie
+    
+    2006-11-16 Mariano Suárez-Alvarez <mariano gnome org>
+    
+       Bug 356602 – const cast warning fixes for libvte
+       Patch by Ryan Lortie (desrt)
+    
+       * src/matcher.h: Use const char * where appropriate.
+       * src/matcher.c: Use const char * where appropriate.  Cast g_strdup
+       to (GCacheDupFunc) to avoid a warning.
+       * src/vtetc.h: Use const char * where appropriate.
+       * src/vtetc.c: Use const char * where appropriate.  Cast g_strdup
+       to (GCacheDupFunc) to avoid a warning.
+       * src/vte.c: Use const char * where appropriate.
+
+ ChangeLog     |   17 +++++++++++++++--
+ src/matcher.c |    9 +++++----
+ src/matcher.h |    2 +-
+ src/vte.c     |   15 ++++++++-------
+ src/vtetc.c   |    7 ++++---
+ src/vtetc.h   |    2 +-
+ 6 files changed, 34 insertions(+), 18 deletions(-)
+
+commit 133c9933b89f3f964d9b844a408a7044f76fb51a
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Mon Nov 6 12:58:04 2006 +0000
+
+    Added/Updated Arabic Translation.
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   29 ++++++++++++++++-------------
+ 2 files changed, 20 insertions(+), 13 deletions(-)
+
+commit 7658723e808f3ddd6f76885cb2e1fa40efae9e79
+Author: Rich Burridge <richb src gnome org>
+Date:   Wed Nov 1 20:53:58 2006 +0000
+
+    Fixed bug #150858 - In gnome-terminal, the deleted character is reported
+    
+            * src/vteaccess.c:
+              Fixed bug #150858 - In gnome-terminal, the deleted character
+              is reported as "space".
+
+ ChangeLog       |    6 ++++++
+ src/vteaccess.c |   23 +++++++++++++++++++++++
+ 2 files changed, 29 insertions(+), 0 deletions(-)
+
+commit 9b523e876a5b4f02973f2fea2f8d011f2075488a
+Author: Djihed Afifi <djihed src gnome org>
+Date:   Mon Oct 30 10:13:46 2006 +0000
+
+    Added/Updated Arabic Translation.
+
+ po/ChangeLog |    4 ++++
+ po/ar.po     |   55 +++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 33 insertions(+), 26 deletions(-)
+
+commit ff2c6d2b7b91453bbc9b9bd016e0a083518b032e
+Author: Christophe Merlet <redfox src gnome org>
+Date:   Sun Oct 22 09:17:38 2006 +0000
+
+    Updated French translation.
+
+ po/ChangeLog |    4 ++++
+ po/fr.po     |   33 +++++++++++++++++++--------------
+ 2 files changed, 23 insertions(+), 14 deletions(-)
+
+commit c9bd03658fd7ec4b7d9dc60948472fdffe7b5070
+Author: Mariano Suárez-Alvarez <mariano src gnome org>
+Date:   Tue Oct 17 04:34:40 2006 +0000
+
+    Fix a changelog entry ;-)
+
+ ChangeLog |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 86b1ccbceaf8b66ab54d6f0dcbb05673f2e868ec
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Oct 13 14:33:04 2006 +0000
+
+    Include vteseq.c
+    
+    2006-10-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * po/POTFILES.in: Include vteseq.c
+
+ ChangeLog      |    4 ++++
+ po/POTFILES.in |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit a2c8d9d9fa460cfd0a68d035d578ca134412b305
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Fri Oct 13 14:31:57 2006 +0000
+
+    Remove Nalin.
+
+ MAINTAINERS |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 027618696701afcb9306161a452a6824900d10fe
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Oct 12 22:55:23 2006 +0000
+
+    NOSPAM Nalin's address.
+
+ AUTHORS |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1f7f3005f24120c260fc2a383841deba32d2e78b
+Author: Mariano Suárez-Alvarez <msuarezalvarez arnet com ar>
+Date:   Wed Oct 11 04:42:57 2006 +0000
+
+    Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+    
+    2006-10-11  Mariano Suárez-Alvarez  <msuarezalvarez arnet com ar>
+    
+       Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+    
+       * src/keymap.c (_vte_keymap_key_add_key_modifiers): Match the (newer)
+       xterm behavior when reporting modifiers to things running in a terminal.
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit eebc586eb9f97214634b412b1eea9bd0295dd28a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Oct 2 21:02:33 2006 +0000
+
+    Released vte-0.14.1.
+    
+    2006-10-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.14.1.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.14.1.
+    
+            * src/Makefile.am: Bumped libtool version to 10:6:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   12 ++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 659e0bc92aa43838e532dadf8dbad79b25e16779
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Oct 2 20:44:44 2006 +0000
+
+    Bug 358344 – autoscroll only works one way in fullscreen [PATCH] Patch
+    
+    2006-10-02  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 358344 – autoscroll only works one way in fullscreen [PATCH]
+            Patch by Egmont Koblinger
+    
+            * src/vte.c (vte_terminal_autoscroll),
+            (vte_terminal_motion_notify): Fix forward autoscrolling in fullscreen
+            mode.
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    6 +++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+commit bd3d2802159b051aea079b7f98e3a72cedaefd45
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Sep 20 14:43:07 2006 +0000
+
+    Bug 353756 – font setting cleanup
+    
+    2006-09-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 353756 – font setting cleanup
+    
+            * src/vte.c (vte_terminal_set_font_full): Use 'monospace' family if no
+            font is set on a terminal widget
+    
+            * src/vte.c (vte_terminal_set_font_from_string_full): Don't
+            g_return_if_fail(strlen(name) > 0).  An empty string is a perfectly
+            valid pango font description string.
+    
+            * src/vte.c (vte_terminal_show): Make sure we have a font loaded.
+    
+            * src/vteapp.c (main): Don't fallback on "Monospace 12".  Let the
+            widget decide what font to use if no font is set.
+
+ ChangeLog    |   16 ++++++++++++++++
+ src/vte.c    |   12 +++++++++---
+ src/vteapp.c |    7 +++----
+ 3 files changed, 28 insertions(+), 7 deletions(-)
+
+commit 6e26f51398dbcaee25c248a069050f6798a15ed1
+Author: Ryan Lortie <desrt desrt ca>
+Date:   Mon Sep 18 20:20:42 2006 +0000
+
+    Bug 356616 – libvte broken with new autotools
+    
+    2006-09-18  Ryan Lortie  <desrt desrt ca>
+    
+            Bug 356616 – libvte broken with new autotools
+    
+            * configure.in:
+            * src/Makefile.am: Fix broken variable substitution for newer
+            versions of automake.
+
+ ChangeLog       |    8 ++++++++
+ configure.in    |   24 ------------------------
+ src/Makefile.am |    6 +++++-
+ 3 files changed, 13 insertions(+), 25 deletions(-)
+
+commit f3e6bfce782dc30116cd095c76b2825010c131cb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Sep 13 21:58:26 2006 +0000
+
+    Bug 354024 – Suppress multiple warnings for missing control sequence
+    
+    2006-09-13  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 354024 – Suppress multiple warnings for missing control sequence
+            handlers
+            Patch from Chris Wilson
+    
+            * src/vte.c (vte_terminal_handle_sequence): Suppress multiple warnings
+            for missing control sequence handlers in non-debugging builds.
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   12 +++++++++++-
+ 2 files changed, 20 insertions(+), 1 deletions(-)
+
+commit 60a649f43c63cf55cd8829a4a755bbe43e4a9418
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Sep 13 21:52:35 2006 +0000
+
+    Bug 354620 – vte-0.14.0: undefined C code Patch from Ales Nosek
+    
+    2006-09-13  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 354620 – vte-0.14.0: undefined C code
+            Patch from Ales Nosek
+    
+            * src/ssfe.c (inschar), (dokbdchar): Replace "*(tmp+1)=(*tmp--);"
+            with something well-defined.
+
+ ChangeLog  |    8 ++++++++
+ src/ssfe.c |    9 ++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 20dc6211ef45c751cb0674cdb998807f64a5fa71
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Sep 8 17:02:55 2006 +0000
+
+    Define G_LOG_DOMAIN=Vte.
+    
+    2006-09-08  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am: Define G_LOG_DOMAIN=Vte.
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit eb80a6a1c8c4295c3083e225cd6953d567544b1e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Sep 4 22:08:35 2006 +0000
+
+    Released vte-0.14.0.
+    
+    2006-09-04  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.14.0.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.14.0.
+    
+            * src/Makefile.am: Bumped libtool version to 10:5:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    4 ++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 16 insertions(+), 2 deletions(-)
+
+commit a83cf6602673312d368e246ad534316756c869cc
+Author: Mugurel Tudor <mugurelu gnome ro>
+Date:   Mon Sep 4 07:49:10 2006 +0000
+
+    Updated Romanian translation by Mişu Moldovan <dumol gnome ro>
+    
+    2006-09-04  Mugurel Tudor  <mugurelu gnome ro>
+    
+       * ro.po: Updated Romanian translation by
+       Mişu Moldovan <dumol gnome ro>
+
+ po/ChangeLog |    5 ++++
+ po/ro.po     |   61 ++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 35 insertions(+), 31 deletions(-)
+
+commit 5331a9411507c591244b9d14d68c1fc171669a2b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 31 20:03:12 2006 +0000
+
+    Minor doc syntax update.
+    
+    2006-08-31  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/pty.c:
+            * src/ring.c:
+            * src/trie.c:
+            * src/vte.c:
+            * src/vtebg.c:
+            * src/vteseq.c (vte_sequence_handler_ta):
+            * src/vtetc.c:
+            Minor doc syntax update.
+
+ ChangeLog    |   11 ++++++
+ src/pty.c    |    8 ++--
+ src/ring.c   |    6 ++--
+ src/trie.c   |    4 +-
+ src/vte.c    |   98 +++++++++++++++++++++++++++++-----------------------------
+ src/vtebg.c  |    2 +-
+ src/vteseq.c |    5 ++-
+ src/vtetc.c  |    2 +-
+ 8 files changed, 75 insertions(+), 61 deletions(-)
+
+commit 9a2974a6d3af4e54c0e0c00cca9630babdbac9aa
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Aug 28 20:04:12 2006 +0000
+
+    Remove leftover debugging statement.
+
+ src/vte.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit de3d2fe6df531a409715455c225b47ad45d05f19
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Aug 27 01:01:01 2006 +0000
+
+    Followup on the fix for bug 350236. It was causing empty lines not to be
+    
+    2006-08-26  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Followup on
+            the fix for bug 350236.  It was causing empty lines not to be copied.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    5 +++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 8368d9f771e5e0e9151cd5007f2836e3d5bd0aba
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Thu Aug 24 21:40:30 2006 +0000
+
+    Update NEWS
+
+ NEWS |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit d17b882caade98cdf66df6cfc63fa48241f0df1f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 24 21:40:00 2006 +0000
+
+    Stuff this before the release.
+    2006-08-24  Behdad Esfahbod  <behdad gnome org>
+            Bug 352365 – font caching problem for not-found glyphs
+            * src/vtexft.c (_vte_xft_font_for_char): Add caching on a missing
+            path.  This only affects the second time a character is looked up.
+            * src/vtexft.c (_vte_xft_font_close), (_vte_xft_font_for_char),
+            (_vte_xft_char_width): Remove g_assert()'s that are not needed, as
+            we will definitely crash pretty soon if the assertion is not true
+            anyway.
+
+ ChangeLog    |   12 ++++++++++++
+ src/vtexft.c |   22 ++++------------------
+ 2 files changed, 16 insertions(+), 18 deletions(-)
+
+commit a9fa041c8d644096cfcf18d153eddea9292bcf76
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 24 20:40:53 2006 +0000
+
+    Released vte-0.13.7.
+    
+    2006-08-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.7.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.7.
+    
+            * src/Makefile.am: Bumped libtool version to 10:4:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    6 ++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 614b185ae23d9dfef634019474fdcd7d3c60d003
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 24 20:33:10 2006 +0000
+
+    Bug 350236 – Cannot copy text containing invalid character sequences
+    
+    2006-08-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 350236 – Cannot copy text containing invalid character sequences
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Fix another
+            bug in my rewritten selection code, that was assuming that
+            last_nonempty character is one byte long.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   12 ++++++------
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+commit e9ff27c2c601f7f298220f22c8f2712efc417969
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 24 19:59:09 2006 +0000
+
+    Bug 352439 – URL highlighting seriously broken
+    
+    2006-08-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 352439 – URL highlighting seriously broken
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Followup to
+            changes made for bug 350623.  Put back the g_array_set_size(), in the
+            correct place this time.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   17 +++++++++++------
+ 2 files changed, 19 insertions(+), 6 deletions(-)
+
+commit 5d86d31d2dfc5bd23c5a084e0df22353f17ace93
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Aug 23 04:01:13 2006 +0000
+
+    Bug 351494 – Gnome-terminal doesn't kills bash on tab close Patch from
+    
+    2006-08-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 351494 – Gnome-terminal doesn't kills bash on tab close
+            Patch from Aivars Kalvans
+    
+            * src/vte.c (vte_terminal_unrealize): Undo the change from bug 348814.
+            Dispose draw in unrealize again, but also set has_fonts to FALSE.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    7 +++++++
+ 2 files changed, 15 insertions(+), 0 deletions(-)
+
+commit ac95f5c08ca4d7f55622035a8ef8c4aa82c9c671
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Aug 21 03:36:10 2006 +0000
+
+    Released vte-0.13.6.
+    
+    2006-08-20  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.6.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.6.
+    
+            * src/Makefile.am: Bumped libtool version to 10:3:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    6 ++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 8e9557c901b30a27df6fc882c0e3304f86f0eeee
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Aug 17 21:33:07 2006 +0000
+
+    Bug 351696 – crash on Terminal
+    
+    2006-08-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 351696 – crash on Terminal
+    
+            * src/vteseq.c (vte_sequence_handler_set_title_internal): Check
+            ->window is not NULL before setting icon/window title.
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |    6 ++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 3d775ed18d2f591eb34a68df6e08d509035e98ed
+Author: Willie Walker <william walker sun com>
+Date:   Wed Aug 16 21:40:42 2006 +0000
+
+    Bug 350623 – Accessible text getTextAtOffset is broken
+    
+    2006-08-16  Willie Walker <william walker sun com>
+    
+            Bug 350623 – Accessible text getTextAtOffset is broken
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Do not
+            resize array before calling vte_g_array_fill since it
+            nullifies any effect vte_g_array_fill will have.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    1 -
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit e22dd9e33cc8469102111a62e494f44476fc6709
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Aug 16 21:38:31 2006 +0000
+
+    Make sure attr.column is initialized.
+    
+    2006-08-16  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Make sure
+            attr.column is initialized.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 3ef54209f6936bd1a5a7ee75c286fa9b22cfff5f
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Wed Aug 16 02:36:10 2006 +0000
+
+    Translation updated.
+    
+    2006-08-16  Gabor Kelemen  <kelemeng gnome hu>
+    
+       * hu.po: Translation updated.
+
+ po/ChangeLog |    4 ++++
+ po/hu.po     |   41 +++++++++++++++++++++--------------------
+ 2 files changed, 25 insertions(+), 20 deletions(-)
+
+commit 5bbb05368a76d8598ec38748cba3a6c1d70f47ab
+Author: Inaki Larranaga <dooteo euskalgnu org>
+Date:   Mon Aug 7 16:14:49 2006 +0000
+
+    Updated Basque translation.
+    
+    2006-08-07  Inaki Larranaga  <dooteo euskalgnu org>
+    
+       * eu.po: Updated Basque translation.
+
+ po/ChangeLog |    4 ++++
+ po/eu.po     |   47 +++++++++++++++++++++++------------------------
+ 2 files changed, 27 insertions(+), 24 deletions(-)
+
+commit f2579a0d139c57e1a17dcb2d95b0b155c6e27d88
+Author: Ani Peter <anipeter src gnome org>
+Date:   Sat Aug 5 11:14:30 2006 +0000
+
+    Updated Malayalam tranlstaion
+
+ po/ChangeLog |    4 ++
+ po/ml.po     |   93 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 53 insertions(+), 44 deletions(-)
+
+commit 570343ff860f09840a88d7bc60c99a1bae88328c
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Wed Aug 2 12:35:17 2006 +0000
+
+    Added Entry for Bengali India Translation Updation
+
+ po/ChangeLog |    4 +++
+ po/bn_IN.po  |   70 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 39 insertions(+), 35 deletions(-)
+
+commit 272827ca55d743ad173da5edd86e0ac41c31dc10
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 31 19:48:16 2006 +0000
+
+    Released vte-0.13.5.
+    
+    2006-07-31  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.5.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.5.
+    
+            * src/Makefile.am: Bumped libtool version to 10:2:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    6 ++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 18 insertions(+), 2 deletions(-)
+
+commit 84b4d31a6a4729e5e80577d77a07bea705c10dc7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Jul 30 23:32:49 2006 +0000
+
+    Bug 158200 – terminal backspace behavior not set to UTF-8 mode Based on
+    
+    2006-07-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 158200 – terminal backspace behavior not set to UTF-8 mode
+            Based on patch from Egmont Koblinger
+    
+            * src/vte.c (_vte_terminal_setup_utf8),
+            (vte_terminal_set_encoding), (_vte_terminal_fork_basic),
+            (vte_terminal_set_pty): Make sure UTF-8 state is correctly set
+            when pty changes.
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   12 ++++++++++--
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 5a42042fd8b6a1ebf395b9b4a748118572e825bc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jul 27 19:46:13 2006 +0000
+
+    Bug 348814 – crash on Terminal Patch from Aivars Kalvans
+    
+    2006-07-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 348814 – crash on Terminal
+            Patch from Aivars Kalvans
+    
+            * src/vte.c (vte_terminal_unrealize): Do not dispose draw in
+            unrealize.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    6 ------
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 3e84bce2afc53eebc4c680e6fd3546bc516a2f4a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 24 22:20:26 2006 +0000
+
+    Released vte-0.13.4.
+    
+    2006-07-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.4.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.4.
+    
+            * src/Makefile.am: Bumped libtool version to 10:1:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    9 +++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 21 insertions(+), 2 deletions(-)
+
+commit ac2ab12e4886ae01cc040b1f419be7a813cf5af5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 24 21:59:23 2006 +0000
+
+    Bug 336947 – [patch] Redundant vte_terminal_set_font_full() calls Patch
+    
+    2006-07-24  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 336947 – [patch] Redundant vte_terminal_set_font_full() calls
+            Patch from Aivars Kalvans
+    
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_set_font_full), (vte_terminal_init),
+            (vte_terminal_realize):
+            AVoid redundant set_font_full and invalidate_all calls.
+
+ ChangeLog         |   10 ++++++++++
+ src/vte-private.h |    2 ++
+ src/vte.c         |   31 +++++++++++++++++--------------
+ 3 files changed, 29 insertions(+), 14 deletions(-)
+
+commit 65ca8c65442401dcf5bcba6548ae80527b4bc254
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Mon Jul 24 21:23:38 2006 +0000
+
+    Fix typo in comments.
+
+ src/vte.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f8fd3e39e77ade11f6c2b121b42f9626a0ae1afd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jul 19 20:30:24 2006 +0000
+
+    Bug 134800 – gnome-termnal hung up when input by ATOK Patch from
+    
+    2006-07-19  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 134800 – gnome-termnal hung up when input by ATOK
+            Patch from Yukihiro Nakai  <nakai gnome gr jp>
+    
+            * src/vte.c (vte_terminal_unrealize): Delay _vte_draw_free().
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   12 ++++++------
+ 2 files changed, 13 insertions(+), 6 deletions(-)
+
+commit c0098ff647aeee1db841b6da7e5393b6d956a212
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jul 19 17:21:07 2006 +0000
+
+    Oops. Fix selection that I broke recently.
+    
+    2006-07-19  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_extend_selection):  Oops.  Fix selection
+            that I broke recently.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 7229f8b39048f56e41c807459b0cad80d2e8ee13
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jul 11 15:52:08 2006 +0000
+
+    Bug 339983 – gnome-pty-helper should log username Patch from Brian
+    
+    2006-07-11  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 339983 – gnome-pty-helper should log username
+            Patch from Brian Cameron
+    
+            * gnome-pty-helper/gnome-pty-helper.c (pty_remove), (shutdown_pty),
+            (pty_add), (open_ptys):
+            * gnome-pty-helper/gnome-pty.h:
+            * gnome-pty-helper/gnome-utmp.c (write_logout_record):
+            Log username if system supports it.
+
+ ChangeLog                           |   11 +++++++++++
+ gnome-pty-helper/gnome-pty-helper.c |    9 ++++++---
+ gnome-pty-helper/gnome-pty.h        |    2 +-
+ gnome-pty-helper/gnome-utmp.c       |    8 +++++++-
+ 4 files changed, 25 insertions(+), 5 deletions(-)
+
+commit 659837c1c875d99689e8d8fbe1b1898b3c4bd725
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jul 11 01:00:25 2006 +0000
+
+    Released vte-0.13.3.
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.3.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.3.
+    
+            * src/Makefile.am: Bumped libtool version to 10:0:1.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   16 ++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    6 +++---
+ 4 files changed, 30 insertions(+), 4 deletions(-)
+
+commit 327ecef62f383483245b10ca9d12831f5cb91b76
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jul 11 00:59:21 2006 +0000
+
+    Bug 141985 – vte does not respond to 'CSI 2 1 t' or 'CSI 2 0 t' with the
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 141985 – vte does not respond to 'CSI 2 1 t' or 'CSI 2 0 t' with
+            the correct window/icon title
+            Patch from Mariano Suárez-Alvarez
+    
+            * src/vte.c (vte_terminal_realize), src/vteseq.c
+            * (vte_sequence_handler_set_title_internal): Set window/icon titles.
+
+ ChangeLog    |    9 +++++++++
+ src/vte.c    |    4 ++++
+ src/vteseq.c |    2 ++
+ 3 files changed, 15 insertions(+), 0 deletions(-)
+
+commit c72bdb798ef3afbf18627f0929a418f88d5e41d3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Jul 11 00:48:30 2006 +0000
+
+    Bug 121904 – copy-paste of empty line Bug 25290 – Small UI tweak to
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 121904 – copy-paste of empty line
+            Bug 25290 – Small UI tweak to select-by-word (only select only letter
+            at a time for non-word characters)
+            Bug 339986 – Patch to select localized strings exactly
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_set_default_attributes),
+            (_vte_terminal_insert_char), (vte_terminal_is_word_char),
+            (vte_same_class), (vte_terminal_get_text_range_maybe_wrapped),
+            (vte_terminal_extend_selection):
+            * src/vteseq.c (vte_sequence_handler_screen_alignment_test):
+            Fix a bunch of selection-related issues.  We now recognize explicitly
+            put space at the end of lines, and copy/paste it.  The other change is
+            that non-wordchar characters are not grouped together.  Also fixes the
+            fallback on Unicode properties that I added two commits ago.
+
+ ChangeLog         |   18 +++++
+ src/vte-private.h |   10 ++-
+ src/vte.c         |  199 ++++++++++++++++++++++-------------------------------
+ src/vteseq.c      |    1 +
+ 4 files changed, 108 insertions(+), 120 deletions(-)
+
+commit b36b7c6c76f70e64f6213e326d343e2c285bb1e9
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 10 19:16:00 2006 +0000
+
+    Bug 311855 – Race in vte leads to blocking of input. Patch from Kalle
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 311855 – Race in vte leads to blocking of input.
+            Patch from Kalle Raiskila
+    
+            * src/vte-private.h:
+            * src/vte.c (_vte_terminal_connect_pty_write),
+            (_vte_terminal_disconnect_pty_write), (vte_terminal_init):
+            Use a mutex for pty_output_source.
+
+ ChangeLog         |   10 ++++++++++
+ src/vte-private.h |    1 +
+ src/vte.c         |    5 +++++
+ 3 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 313c5613d97a06a830c424bf568b11fd29685f05
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 10 18:40:56 2006 +0000
+
+    Bug 339986 – Patch to select localized strings exactly Patch from Takao
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 339986 – Patch to select localized strings exactly
+            Patch from Takao Fujiwara
+    
+            * src/vte.c (vte_terminal_is_word_char): Fall back on Unicode
+            properties for non-ASCII characters or when no array is set.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   38 +++++++++++++++++++++++---------------
+ 2 files changed, 31 insertions(+), 15 deletions(-)
+
+commit 330d3d6bef131b49308cef9b2dc02a78e1a0c9af
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 10 18:28:32 2006 +0000
+
+    Bug 342396 – Ctrl-space sends " ", not NUL.
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 342396 – Ctrl-space sends " ", not NUL.
+    
+            * src/keymap.c (_vte_keymap_map): Fix keymap lookup bug that I
+            introduced during the char*->char[] work on 2006-04-18.
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |    6 +++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit f3f8eafd9190378f0639ef507024d966d9638dcc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jul 10 16:57:41 2006 +0000
+
+    Bug 345377 – real transparency Patch from Kristian Høgsberg <krh
+    
+    2006-07-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 345377 – real transparency
+            Patch from Kristian Høgsberg <krh redhat.com>
+    
+            * doc/reference/tmpl/vte.sgml:
+            * doc/reference/vte-sections.txt:
+            * python/vte.defs:
+            * src/vte-private.h:
+            * src/vte.c (vte_terminal_set_opacity), (vte_terminal_init),
+            (vte_terminal_background_update):
+            * src/vte.h:
+            * src/vteapp.c (main):
+            * src/vtedraw.c (_vte_draw_set_background_color):
+            * src/vtedraw.h:
+            * src/vteft2.c (_vte_ft2_set_background_color):
+            * src/vtegl.c (_vte_gl_set_background_color):
+            * src/vtepango.c (_vte_pango_set_background_color):
+            * src/vtepangox.c (_vte_pango_x_set_background_color):
+            * src/vteskel.c (_vte_skel_set_background_color):
+            * src/vtexft.c (_vte_xft_create), (_vte_xft_set_background_color),
+            (_vte_xft_clear):
+            Add vte_terminal_set_opacity().
+
+ ChangeLog                      |   24 ++++++++++++++++++++++++
+ doc/reference/tmpl/vte.sgml    |    9 +++++++++
+ doc/reference/vte-sections.txt |    1 +
+ python/unrealize.py            |    2 +-
+ python/vte-demo.py             |    2 +-
+ python/vte.defs                |    9 +++++++++
+ src/vte-private.h              |    1 +
+ src/vte.c                      |   19 ++++++++++++++++++-
+ src/vte.h                      |    1 +
+ src/vteapp.c                   |    9 +++++++++
+ src/vtedraw.c                  |    6 ++++--
+ src/vtedraw.h                  |    6 ++++--
+ src/vteft2.c                   |    2 +-
+ src/vtegl.c                    |    2 +-
+ src/vtepango.c                 |    2 +-
+ src/vtepangox.c                |    2 +-
+ src/vteskel.c                  |    4 +++-
+ src/vtexft.c                   |   14 +++++++++-----
+ 18 files changed, 98 insertions(+), 17 deletions(-)
+
+commit 1eded1ef1441436e1de4972c23aee4e12f70017e
+Author: Swapnil Hajare <swapnilh src gnome org>
+Date:   Fri Jul 7 19:26:12 2006 +0000
+
+    mr.po: Added Marathi translation.
+    LINGUAS: Added entry for Marathi (mr) in language list.
+
+ po/ChangeLog |    5 +++
+ po/LINGUAS   |    1 +
+ po/mr.po     |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 119 insertions(+), 0 deletions(-)
+
+commit af7fb4765c676dc5ec5e3605197858b660b22bc7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jul 5 06:38:47 2006 +0000
+
+    Allow _vte_debug_.* into exported symbols.
+    
+    2006-07-05  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am: Allow _vte_debug_.* into exported symbols.
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 2fb5b6721154db82d9107f1c4874f6759e060390
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Mon Jul 3 14:21:06 2006 +0000
+
+    Added entry for addition of  bengali India (bn_IN) translation and to LINGUAS
+
+ po/ChangeLog |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 9bce93fc6d7534bbc27d9c10d550d5fd8b9fe4b6
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Mon Jul 3 14:20:53 2006 +0000
+
+    Added bengali India (bn_IN)
+
+ po/LINGUAS |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 70d2f5022fcac923d315e6afcd5dca40a176b3fd
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Mon Jul 3 14:20:14 2006 +0000
+
+    Added Bengali India Translation
+
+ po/bn_IN.po |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 116 insertions(+), 0 deletions(-)
+
+commit 9f75f3590a07ce434593509ce33cf555fcf0a7a3
+Author: Benoît Dejean <benoit placenet org>
+Date:   Sat Jul 1 10:16:47 2006 +0000
+
+    Updated French translation.
+    
+    2006-07-01  Benoît Dejean  <benoit placenet org>
+    
+       * fr.po: Updated French translation.
+
+ po/ChangeLog |    4 ++
+ po/fr.po     |  104 ++++++++++++++++++----------------------------------------
+ 2 files changed, 36 insertions(+), 72 deletions(-)
+
+commit 459fb97cdd78272d4b69e2ec47aaae0df88287ed
+Author: Thomas Vander Stichele <thomasvs src gnome org>
+Date:   Thu Jun 29 20:55:28 2006 +0000
+
+    moap ignore
+
+ gnome-pty-helper/.cvsignore |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit f0942403fa42ac6ba22a7e8e2fc1ed2fce7f848a
+Author: Rajesh Ranjan <rranjan src gnome org>
+Date:   Mon Jun 26 05:43:52 2006 +0000
+
+    Updated Translation
+
+ po/ChangeLog |    4 ++++
+ po/hi.po     |   39 ++++++++++++++++++++-------------------
+ 2 files changed, 24 insertions(+), 19 deletions(-)
+
+commit bee91f747c6025295b5d2ee99e4368da1384132e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jun 21 08:35:41 2006 +0000
+
+    Bug 345514 – -no-undefined doesn't work with latest libtool
+    
+    2006-06-21  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 345514 – -no-undefined doesn't work with latest libtool
+    
+            * src/Makefile.am: Remove -no-undefined.
+
+ ChangeLog       |    6 ++++++
+ src/Makefile.am |    3 +--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 015d6e8dbbb8fb4729fbb168e6a15a4b3b9268a9
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jun 12 19:23:37 2006 +0000
+
+    Released vte-0.13.2.
+    
+    2006-06-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.2.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.2.
+    
+            * src/Makefile.am: Bumped libtool version to 9:2:0.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   17 +++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 29 insertions(+), 2 deletions(-)
+
+commit c5a0b19ca37617d87c765ab2b6cb47f4cc786e8f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Jun 12 17:42:07 2006 +0000
+
+    Bug 344666 – Problems with *_CFLAGS and *_LDFLAGS in makefiles Patch
+    
+    2006-06-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 344666 – Problems with *_CFLAGS and *_LDFLAGS in makefiles
+            Patch from Stepan Kasal <kasal ucw cz>.
+    
+            * src/Makefile.am (AM_CFLAGS, AM_LDFLAGS, *_CFLAGS, *_LDADD):
+            Replace @FOO@ references by $(FOO), remove redundant (or buggy)
+            occurences of `@CFLAGS@'.
+            * gnome-pty-helper/Makefile.am (AM_CFLAGS, AM_LDFLAGS): Likewise.
+            * python/Makefile.am (vtemodule_la_CFLAGS): Likewise.
+            * src/Makefile.am (AM_CFLAGS): Add $(FT2_CFLAGS).
+
+ ChangeLog                    |   12 ++++++
+ gnome-pty-helper/Makefile.am |    4 +-
+ python/Makefile.am           |    4 +-
+ src/Makefile.am              |   82 +++++++++++++++++++++---------------------
+ termcaps/Makefile.am         |    8 ++--
+ 5 files changed, 61 insertions(+), 49 deletions(-)
+
+commit 2b0c90c9430070d3420204253d316d4361a6e775
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Jun 8 22:22:03 2006 +0000
+
+    Fix typo which may have been causing things like crashes. Reported by
+    
+    2006-06-08  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (remove_display_timeout): Fix typo which may have been
+            causing things like crashes.  Reported by muntyan.  Also reordered
+            some code around update_timeout for better matching the current
+            timeouts in style.
+
+ ChangeLog         |    7 +++
+ src/vte-private.h |    2 +-
+ src/vte.c         |  128 ++++++++++++++++++++++++++++-------------------------
+ 3 files changed, 76 insertions(+), 61 deletions(-)
+
+commit 14eda4d86401762c88040af70c4259a09b6c4614
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Jun 7 16:46:39 2006 +0000
+
+    Bug 339529 – gnome-terminal (vte) crashes when detatched window is
+    
+    2006-06-07  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 339529 – gnome-terminal (vte) crashes when detatched window is
+            closed
+    
+            * src/vte.c (vte_invalidate_region): Bail out if terminal->window is
+            NULL.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    5 ++++-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 24536e9b33000952996361aa6f27bdec540fd274
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun May 28 02:39:10 2006 +0000
+
+    Bug 342549 – uninitialized var (coverity) Patch from Paolo Borelli.
+    
+    2006-05-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 342549 – uninitialized var (coverity)
+            Patch from Paolo Borelli.
+    
+            * src/vte.c (vte_cell_is_selected): Remove uninitialized var ret.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    7 ++-----
+ 2 files changed, 10 insertions(+), 5 deletions(-)
+
+commit 7656d1fa9d7ccb931a35e955fcd90f5fb3144830
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun May 28 02:36:16 2006 +0000
+
+    Bug 342082 – vte_invalidate_region() may check whether terminal is
+    
+    2006-05-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 342082 – vte_invalidate_region() may check whether terminal is
+            realiazed or not
+    
+            * src/vte.c (vte_invalidate_region): Return if not realized.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    3 +++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit ab42a7f4c04ba4a19b4b11948589834877fe410f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon May 22 04:41:16 2006 +0000
+
+    Bug 340363 – vte Cygwin build fixes Patch from Cygwin Ports maintainer
+    
+    2006-05-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 340363 – vte Cygwin build fixes
+            Patch from Cygwin Ports maintainer
+    
+            * configure.in, src/keymap.c, src/pty.c, src/ssfe.c, src/trie.c,
+            src/utf8echo.c, src/vte.c, src/vteseq.c, src/vtetc.c: Check and
+            include syslimits.h and ncurses/curses.h
+
+ ChangeLog      |    9 +++++++++
+ configure.in   |   15 +++++++++------
+ src/keymap.c   |    6 ++++++
+ src/pty.c      |    3 +++
+ src/ssfe.c     |    6 ++++++
+ src/trie.c     |    3 +++
+ src/utf8echo.c |    3 +++
+ src/vte.c      |    3 +++
+ src/vteseq.c   |    4 ++++
+ src/vtetc.c    |    3 +++
+ 10 files changed, 49 insertions(+), 6 deletions(-)
+
+commit 438e60054d0bd4cdb3593ffee473e13c3ee01463
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon May 22 04:36:06 2006 +0000
+
+    Bug 341793 – vte.h doesn't need to include X11/Xlib.h Patch from Kouhei
+    
+    2006-05-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 341793 – vte.h doesn't need to include X11/Xlib.h
+            Patch from Kouhei Sutou
+    
+            * src/vte.h: Don't #include <X11/Xlib.h>
+
+ ChangeLog |    7 +++++++
+ src/vte.h |    1 -
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 8214dc7494e5d01e805837d9b2f5fa0cc96e944e
+Author: Wouter Bolsterlee <uws+gnome xs4all nl>
+Date:   Wed May 17 11:55:59 2006 +0000
+
+    Require intltool 0.35.0 to have translations in the dist tarballs.
+    
+    2006-05-17  Wouter Bolsterlee  <uws+gnome xs4all nl>
+    
+       * configure.in: Require intltool 0.35.0 to have
+       translations in the dist tarballs.
+
+ ChangeLog    |    5 +++++
+ configure.in |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 3e45d5d8733c0e96694bcd65e59e5a26bec80328
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed May 17 09:21:35 2006 +0000
+
+    Released vte-0.13.1.
+    
+    2006-05-17  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.1.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.1.
+    
+            * src/Makefile.am: Bumped libtool version to 9:1:0.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |    9 +++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    2 +-
+ 4 files changed, 21 insertions(+), 2 deletions(-)
+
+commit 9081c956e1b1b88069d09ccbcdb2b3adbd7028b1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun May 14 23:37:23 2006 +0000
+
+    Add vim and emacs footers for UTF-8.
+    
+    2006-05-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * NEWS, ChangeLog: Add vim and emacs footers for UTF-8.
+
+ ChangeLog |   58 +++++++++++++++++++++++++++++++---------------------------
+ NEWS      |   53 +++++++++++++++++++++++++++++------------------------
+ 2 files changed, 60 insertions(+), 51 deletions(-)
+
+commit bcf90856af0ffe1d353754fea4e0716ca73fc30b
+Author: Stepan Kasal <skasal src gnome org>
+Date:   Fri May 12 20:46:22 2006 +0000
+
+    Changed the UTF-8 dashes to plain ascii "-".
+    
+    * NEWS, ChangeLog: Changed the UTF-8 dashes to plain ascii "-".
+
+ ChangeLog |   54 +++++++++++++++++++++++++++++-------------------------
+ NEWS      |   48 ++++++++++++++++++++++++------------------------
+ 2 files changed, 53 insertions(+), 49 deletions(-)
+
+commit 7e774bdbd374ca2d991d7e7899a66d2cff056b50
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Apr 28 01:53:27 2006 +0000
+
+    Bug 339980 – nativeecho needs glib in LDADD to build on Solaris Patch
+    
+    2006-04-27  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 339980 – nativeecho needs glib in LDADD to build on Solaris
+            Patch from Brian Cameron.
+    
+            * src/Makefile.am: Fix it.
+
+ ChangeLog       |    7 +++++++
+ src/Makefile.am |    4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit aa4374e245af06314555a8e5fc8e148bba5979b5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Apr 27 01:08:52 2006 +0000
+
+    Bug 331803 – style needs to be attached/detached to the window on
+    
+    2006-04-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 331803 – style needs to be attached/detached to the window on
+            realize/unrealize
+            Patch from Benjamin Berg  <benjamin sipsolutions net>.
+    
+            * src/vte.c: (vte_terminal_unrealize), (vte_terminal_realize):
+            attach and detach the style of the terminal widget.
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |    5 +++++
+ 2 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 6fbe46ba07be8d871131381914624ec79f47b4ef
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Apr 25 11:12:10 2006 +0000
+
+    Pass -no-undefined linker flag.
+    
+    2006-04-25  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/Makefile.am: Pass -no-undefined linker flag.
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    3 ++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit eda77708ba72edf1641678e055a7cd923fff6e36
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Apr 23 21:21:02 2006 +0000
+
+    Released vte-0.13.0.
+    
+    2006-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.13.0.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.13.0.
+    
+            * src/Makefile.am: Bumped libtool version to 9:0:0.
+
+ ChangeLog       |   10 ++++++++++
+ NEWS            |   31 +++++++++++++++++++++++++++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    4 ++--
+ 4 files changed, 44 insertions(+), 3 deletions(-)
+
+commit ce4935574b8b5aa252663488cc1c237658ea8f3c
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sun Apr 23 09:02:19 2006 +0000
+
+    Minor.
+
+ src/vte.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+commit 1375bfe7189dc1a316ebee510175baf48fcee0cd
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Apr 23 08:39:08 2006 +0000
+
+    Bug 339448 – selection doesn't respect hard newlines
+    
+    2006-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 339448 – selection doesn't respect hard newlines
+    
+            * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Add newline
+            to the end of each line that is not soft-wrapped.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   22 +++++++++-------------
+ 2 files changed, 16 insertions(+), 13 deletions(-)
+
+commit 9a70a1fea66d11a81415bdc082679a6d586ff7cc
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Apr 23 07:36:54 2006 +0000
+
+    Bug 148720 # Word selection erroneously captures text from next line Patch
+    
+    2006-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 148720 # Word selection erroneously captures text from next line
+            Patch from Chris Heath.
+    
+            * src/vteseq.c (vte_sequence_handler_cd), (vte_sequence_handler_ce),
+            (vte_sequence_handler_clear_current_line),
+            (vte_sequence_handler_clear_above_current): Reset soft_wrapped flag.
+
+ ChangeLog    |    9 +++++++++
+ src/vteseq.c |    4 ++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 7598aa25c12af4e90f564ad27b78a24472297790
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Apr 23 07:27:28 2006 +0000
+
+    Bug 126376 # Uncoinditional definition of _XOPEN_SOURCE breaks build on
+    
+    2006-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 126376 # Uncoinditional definition of _XOPEN_SOURCE breaks build
+            on NetBSD
+            Patch from Dan Winship.
+    
+            * configure.in:
+            * gnome-pty-helper/configure.in: Define XOPEN_SOURCE on solaris only.
+
+ ChangeLog                     |    9 +++++++++
+ configure.in                  |   12 +++++++++---
+ gnome-pty-helper/configure.in |   12 +++++++++---
+ 3 files changed, 27 insertions(+), 6 deletions(-)
+
+commit c7aa70a7eb639973d4b119f2ae6b057d12717474
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Apr 23 07:20:48 2006 +0000
+
+    Bug 97719 # Selection: double/triple click doesn't cross line boundaries
+    
+    2006-04-23  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 97719 # Selection: double/triple click doesn't cross line boundaries
+            Patch from Chris Heath.
+    
+            * src/vte.c (vte_same_class): Fix problem with selecting whitespace
+            from adjacent lines, on word selection.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   58 ++++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 42 insertions(+), 24 deletions(-)
+
+commit a8bc53b8d18bba85b09b3b8fbf59f8e223bbfb3b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Apr 22 21:31:05 2006 +0000
+
+    Bug 160782 # Vte isn't multi-screen safe Patch from Benedikt Meurer.
+    
+    2006-04-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 160782 # Vte isn't multi-screen safe
+            Patch from Benedikt Meurer.
+    
+            * src/vte.c (vte_terminal_unrealize), (vte_terminal_realize):
+            * src/vtebg.c (vte_bg_native_new), (_vte_bg_display_sync),
+            (vte_bg_root_pixmap), (vte_bg_get_for_screen), (vte_bg_init),
+            (vte_bg_get_pixmap), (vte_bg_get_pixbuf):
+            * src/vtebg.h:
+            * src/vteft2.c (_vte_ft2_set_background_image):
+            * src/vtegl.c (_vte_gl_set_background_image):
+            * src/vtepango.c (_vte_pango_set_background_image):
+            * src/vtepangox.c (_vte_pango_x_set_background_image):
+            * src/vtexft.c (_vte_xft_set_background_image): Handle per-screen
+            backgrounds.
+
+ ChangeLog       |   17 ++++++++++++++
+ src/vte.c       |    8 +++++-
+ src/vtebg.c     |   64 ++++++++++++++++++++++++++----------------------------
+ src/vtebg.h     |    3 +-
+ src/vteft2.c    |    6 ++++-
+ src/vtegl.c     |    6 ++++-
+ src/vtepango.c  |    6 ++++-
+ src/vtepangox.c |    6 ++++-
+ src/vtexft.c    |    5 +++-
+ 9 files changed, 80 insertions(+), 41 deletions(-)
+
+commit d59d4f25fb27dc9b3e342764944d1fac18629d4a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Apr 22 20:40:51 2006 +0000
+
+    Remove obsolete #ifde GTK_CHECK_VERSION(2,2,0) checks.
+    
+    2006-04-22  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_cursor_new), (vte_terminal_clipboard_get):
+            * src/vteapp.c (take_xconsole_ownership):
+            * src/vtebg.c (vte_bg_native_new), (_vte_bg_display_sync),
+            (vte_bg_root_pixmap):
+            * src/vtedraw.c (_vte_draw_get_colormap):
+            * src/vtefc.c (_vte_fc_transcribe_from_pango_font_description),
+            (_vte_fc_defaults_from_gtk):
+            * src/vtepango.c (_vte_pango_start), (_vte_pango_set_text_font):
+            * src/vtepangox.c (_vte_pango_x_set_text_font):
+            * src/vterdb.c (_vte_rdb_get):
+            * src/vteseq.c (vte_terminal_beep),
+            (vte_sequence_handler_window_manipulation):
+            * src/vtexft.c (_vte_xft_char_exists), (_vte_xft_text_extents),
+            (_vte_xft_font_open):
+            * src/vtegl.c: Remove obsolete #ifde GTK_CHECK_VERSION(2,2,0) checks.
+
+ ChangeLog       |   18 ++++++++++++++++++
+ src/vte.c       |   12 ------------
+ src/vteapp.c    |    4 ----
+ src/vtebg.c     |   12 ------------
+ src/vtedraw.c   |    8 --------
+ src/vtefc.c     |   12 ------------
+ src/vtegl.c     |    2 --
+ src/vtepango.c  |   12 ------------
+ src/vtepangox.c |    4 ----
+ src/vterdb.c    |   10 +---------
+ src/vteseq.c    |   11 -----------
+ src/vtexft.c    |   12 ------------
+ 12 files changed, 19 insertions(+), 98 deletions(-)
+
+commit 9c905141e37d69f86f5a46292c62e2f56fb3d501
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Apr 22 20:21:31 2006 +0000
+
+    Bug 330441 – Remove libzvt support Patch from Guilherme de S. Pastore
+    
+    2006-04-22  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 330441 – Remove libzvt support
+            Patch from Guilherme de S. Pastore  <gpastore gnome org>
+    
+            * configure.in, src/Makefile.am, src/reflect.c: remove remnants
+            from the old, broken, and unmaintained libzvt.
+
+ ChangeLog       |    8 ++++
+ configure.in    |   11 -----
+ src/Makefile.am |   11 +-----
+ src/reflect.c   |  114 -------------------------------------------------------
+ 4 files changed, 9 insertions(+), 135 deletions(-)
+
+commit ef5a0801e925eacc3e47f77e2e38b4b1beb7a8b7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Apr 21 06:31:05 2006 +0000
+
+    Bug 328850 – Crash when pasting selection
+    
+    2006-04-21  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 328850 – Crash when pasting selection
+    
+            * src/vte.c: Protect against passing NULL selection to strcmp.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 1565149ec0da07a1088e6a956d29e7244bbe22e9
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Apr 20 11:01:51 2006 +0000
+
+    Misc fixes and updates.
+    
+    2006-04-20  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/tmpl/internals.sgml:
+            * doc/reference/tmpl/reaper.sgml:
+            * doc/reference/tmpl/vte-unused.sgml:
+            * doc/reference/tmpl/vte.sgml:
+            * doc/reference/tmpl/vteaccess.sgml:
+            * doc/reference/vte-sections.txt: Misc fixes and updates.
+    
+            * python/vte.defs:
+            * python/vte.override: Updates.
+    
+            Bug 160134 – mouse events occurring past column 95 are not passed
+            through to terminal application
+            Based on patch from Sean Estabrooks.
+    
+            * src/vte.h:
+            * src/vte.c (vte_terminal_feed_child_binary): New public function.
+    
+            * src/vte.c (vte_terminal_send_mouse_button_internal),
+            (vte_terminal_maybe_send_mouse_drag): Use feed_child_binary.
+
+ ChangeLog                          |   22 +++++++++++++++
+ doc/reference/tmpl/internals.sgml  |    6 +++-
+ doc/reference/tmpl/reaper.sgml     |    5 ++-
+ doc/reference/tmpl/vte-unused.sgml |    4 ---
+ doc/reference/tmpl/vte.sgml        |   33 ++++++++++------------
+ doc/reference/tmpl/vteaccess.sgml  |    7 ++++-
+ doc/reference/vte-sections.txt     |    1 +
+ python/vte.defs                    |   27 ++++++++++++------
+ python/vte.override                |   50 +++++++++++++++++++++++++++++++++
+ src/vte.c                          |   53 +++++++++++++++++++++++++++++-------
+ src/vte.h                          |    4 +-
+ 11 files changed, 165 insertions(+), 47 deletions(-)
+
+commit 431eba9f61c04aef891f224fa1fa7d1bd9e56200
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Apr 20 01:01:31 2006 +0000
+
+    Bug 135230 – Feature request to attach VTE to existing pty Based on
+    
+    2006-04-19  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 135230 – Feature request to attach VTE to existing pty
+            Based on patch from eric brouhaha com, John Swensen, and
+            Chris Moller  <cmoller redhat com>
+    
+            * src/vte.c:
+            * src/vte.h:
+            * python/vte.defs:
+            * doc/reference/vte-sections.txt: Added vte_terminal_set_pty().
+
+ ChangeLog                      |   11 +++++++++++
+ doc/reference/tmpl/vte.sgml    |   11 +++++++++++
+ doc/reference/vte-sections.txt |    1 +
+ python/vte.defs                |   10 ++++++++++
+ src/vte.c                      |   39 +++++++++++++++++++++++++++++++++++++++
+ src/vte.h                      |    4 ++++
+ 6 files changed, 76 insertions(+), 0 deletions(-)
+
+commit f5a7397bfa56a3659f77ddce7aafb352b50e9252
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Apr 19 00:04:13 2006 +0000
+
+    AC_PROG_INTLTOOL -> IT_PROG_INTLTOOL
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit e4eb0288d0ef482704f9141d23bc5e0f65b185b8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Apr 18 23:24:48 2006 +0000
+
+    Bug 337442 – [patch] Reduce .plt section
+    
+    2006-04-18  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 337442 – [patch] Reduce .plt section
+    
+            * src/Makefile.am: Pass export-symbols-regex to libtool.
+
+ ChangeLog       |    6 ++++++
+ src/Makefile.am |    4 +++-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit dca0f59d08dd3e9eaff6bdac551e2a05560e0661
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Apr 18 23:08:03 2006 +0000
+
+    Doc improvements.
+
+ doc/reference/tmpl/vte.sgml    |   12 ++++++++++++
+ doc/reference/vte-sections.txt |    2 ++
+ 2 files changed, 14 insertions(+), 0 deletions(-)
+
+commit 4876b6439712ca851e77318dc3e6ba6965a61e3e
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Tue Apr 18 22:50:30 2006 +0000
+
+    Remove the #ident strings.
+
+ src/buffer.c      |    1 -
+ src/buffer.h      |    1 -
+ src/caps.c        |    1 -
+ src/caps.h        |    1 -
+ src/debug.c       |    1 -
+ src/debug.h       |    1 -
+ src/dumpkeys.c    |    1 -
+ src/interpret.c   |    1 -
+ src/iso2022.c     |    1 -
+ src/iso2022.h     |    1 -
+ src/iso8859mode.c |    1 -
+ src/matcher.c     |    1 -
+ src/matcher.h     |    1 -
+ src/mev.c         |    1 -
+ src/nativeecho.c  |    1 -
+ src/pty.c         |    1 -
+ src/pty.h         |    1 -
+ src/reaper.c      |    1 -
+ src/reaper.h      |    1 -
+ src/reflect.c     |    1 -
+ src/ring.c        |    1 -
+ src/ring.h        |    1 -
+ src/slowcat.c     |    1 -
+ src/table.c       |    1 -
+ src/table.h       |    1 -
+ src/trie.c        |    1 -
+ src/trie.h        |    1 -
+ src/utf8echo.c    |    1 -
+ src/utf8mode.c    |    1 -
+ src/vte.h         |    1 -
+ src/vteaccess.c   |    1 -
+ src/vteaccess.h   |    1 -
+ src/vteapp.c      |    1 -
+ src/vtebg.c       |    1 -
+ src/vtebg.h       |    1 -
+ src/vteconv.c     |    1 -
+ src/vteconv.h     |    1 -
+ src/vtedraw.c     |    1 -
+ src/vtedraw.h     |    1 -
+ src/vtefc.c       |    1 -
+ src/vtefc.h       |    1 -
+ src/vteft2.c      |    1 -
+ src/vteft2.h      |    1 -
+ src/vtegl.c       |    1 -
+ src/vtegl.h       |    1 -
+ src/vteglyph.c    |    1 -
+ src/vteglyph.h    |    1 -
+ src/vteint.h      |    1 -
+ src/vtepango.c    |    1 -
+ src/vtepango.h    |    1 -
+ src/vtepangox.c   |    1 -
+ src/vtepangox.h   |    1 -
+ src/vterdb.c      |    1 -
+ src/vterdb.h      |    1 -
+ src/vteregex.c    |    1 -
+ src/vteregex.h    |    1 -
+ src/vtergb.c      |    1 -
+ src/vtergb.h      |    1 -
+ src/vteseq.c      |    1 -
+ src/vteskel.c     |    1 -
+ src/vteskel.h     |    1 -
+ src/vtetc.c       |    1 -
+ src/vtetc.h       |    1 -
+ src/vtetree.h     |    1 -
+ src/vtexft.c      |    1 -
+ src/vtexft.h      |    1 -
+ 66 files changed, 0 insertions(+), 66 deletions(-)
+
+commit f8a9447f37e686b23fd7e185dfe5fdbc866d0e7f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Apr 18 22:41:03 2006 +0000
+
+    Make some data structures const by changing char * to char [].
+    
+    2006-04-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/caps.c (_vte_capability_init), src/caps.h:
+            * src/keymap.c (_vte_keymap_map), src/keymap.h: Make some data
+            structures const by changing char * to char [].
+    
+            * src/vte.c (vte_update_delay_timeout), (vte_update_timeout),
+            (vte_terminal_extend_selection), (_vte_terminal_fudge_pango_colors):
+            Fix warnings and adapt to above changes.
+
+ ChangeLog         |   10 +
+ src/caps.c        |   14 +-
+ src/caps.h        |    5 +-
+ src/keymap.c      | 1040 ++++++++++++++++++++++++++---------------------------
+ src/keymap.h      |    4 +-
+ src/matcher.c     |    2 +-
+ src/vte-private.h |   10 +-
+ src/vte.c         |   14 +-
+ 8 files changed, 550 insertions(+), 549 deletions(-)
+
+commit 749b51696d1a41c59268d43467219549479c550e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Apr 18 21:08:01 2006 +0000
+
+    Use intltool 0.34.90 format.
+    
+    2006-04-18  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in, po/LINGUAS: Use intltool 0.34.90 format.
+
+ ChangeLog    |    4 +++
+ configure.in |    5 +---
+ po/LINGUAS   |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 81 insertions(+), 5 deletions(-)
+
+commit e759046ad0b13b8da503b552c29787f9ef3eda28
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Apr 18 08:34:34 2006 +0000
+
+    Remove obsolete entry for no_NO And the translation.
+    
+    2006-04-18  Kjartan Maraas  <kmaraas gnome org>
+    
+       * LINGUAS: Remove obsolete entry for no_NO
+       * no.po: And the translation.
+
+ po/ChangeLog |    5 +++
+ po/LINGUAS   |    2 +-
+ po/no.po     |  111 ----------------------------------------------------------
+ 3 files changed, 6 insertions(+), 112 deletions(-)
+
+commit 9f75cf1de6ba6a73e37b211d403f965fd4d45194
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Apr 12 11:24:46 2006 +0000
+
+    Bug 142247 – use of uninitialized value
+    
+    2006-04-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 142247 – use of uninitialized value
+    
+            * src/pty.c: Initialize the arbitrary byte that we send on the pipe
+            to zero.
+
+ ChangeLog |    7 +++++++
+ src/pty.c |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 122e9fd5c3d5c11062bc5c118736e9ef2c0f9d55
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Apr 12 10:23:58 2006 +0000
+
+    Minor.
+
+ ChangeLog |    2 ++
+ src/vte.c |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit f4d0e7f3fb9b30d6069d1b266bdb0a3d419e1ac5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Apr 12 07:27:37 2006 +0000
+
+    Try to use the font first for all graphic characters. This results in
+    
+    2006-04-12  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Try to use the font first for all graphic characters.
+            This results in better looking graphics with modern fonts.
+
+ ChangeLog         |    5 +++
+ src/vte-private.h |    2 -
+ src/vte.c         |   83 ++++-------------------------------------------------
+ 3 files changed, 11 insertions(+), 79 deletions(-)
+
+commit 7fa096eab829056fa6fb7ccce0f57b389de51fa0
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Apr 12 07:22:34 2006 +0000
+
+    Bug 144456 – UK pound currency symbol rendered incorrectly
+    
+    2006-04-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 144456 – UK pound currency symbol rendered incorrectly
+    
+            * src/vte.c: Offset characters drawn in draw_graphic for padding.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 72cf2178d72461baf59a54a42a45f88cbc4d3346
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Apr 12 06:40:05 2006 +0000
+
+    Bug 307403 – xticker doublefree
+    
+    2006-04-12  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 307403 – xticker doublefree
+    
+            * src/xticker.c: Avoid double free.
+
+ ChangeLog     |    6 ++++++
+ src/xticker.c |    7 ++++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 80ab2f7f151b00bd2f807e8a0c8a6c01a1184bf8
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Apr 10 06:52:51 2006 +0000
+
+    Bug 337877 – Patch to use po/LINGUAS Patch from Michiel Sikkes.
+    
+    2006-04-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 337877 – Patch to use po/LINGUAS
+            Patch from Michiel Sikkes.
+    
+            * configure.in, po/LINGUAS: Move list of translations to po/LINGUAS.
+
+ ChangeLog    |    7 +++++++
+ configure.in |    3 ++-
+ po/LINGUAS   |    3 +++
+ 3 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 7bf79df561c6d373e6778cbc88af002c3ab95054
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Apr 6 21:42:14 2006 +0000
+
+    Bug 337552 – Insufficient version requirement for gtk+
+    
+    2006-04-06  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 337552 – Insufficient version requirement for gtk+
+    
+            * configure.in: Depend on Gtk+ 2.6.
+
+ ChangeLog    |    6 ++++++
+ configure.in |   11 +++--------
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 739a0b91fac0fddd05295da0a8eb2ff54b2a2f11
+Author: Priit Laes <amd store20 com>
+Date:   Wed Apr 5 15:00:25 2006 +0000
+
+    Translation updated by Ivar Smolin.
+    
+    2006-04-05  Priit Laes  <amd store20 com>
+    
+       * et.po: Translation updated by Ivar Smolin.
+
+ po/ChangeLog |    4 +++
+ po/et.po     |   68 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 41 insertions(+), 31 deletions(-)
+
+commit 32eb3a96eb13dbb54e09f846eb754c52d39b84e3
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sat Apr 1 02:09:14 2006 +0000
+
+    .
+
+ .cvsignore    |    7 ++++++-
+ po/.cvsignore |    1 +
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 30ea398ba25b8c3ee9e15b25afc2c03225ba9761
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Mar 31 04:15:49 2006 +0000
+
+    Bug 168251 – add support for 256 colors terminals Patch from
+    
+    2006-03-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 168251 – add support for 256 colors terminals
+            Patch from dann godzilla ics uci edu.
+    
+            * src/vte-private.h, src/vte.c, src/vteseq.c: Implement support
+            for 256 colors.
+
+ ChangeLog         |    8 +++
+ src/vte-private.h |   26 +++++-----
+ src/vte.c         |  148 ++++++++++++++++++++++++----------------------------
+ src/vteseq.c      |   39 +++++++++++++--
+ 4 files changed, 124 insertions(+), 97 deletions(-)
+
+commit bf8f8c15c4f2c0f7ad615c85e2698a92b536fe1a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Mar 31 03:57:57 2006 +0000
+
+    Bug 120276 – Wishlist: Support Rectangular Selection Patch from Pedro de
+    
+    2006-03-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 120276 – Wishlist: Support Rectangular Selection
+            Patch from Pedro de Medeiros.
+    
+            * src/vte.c, src/vte-private.h: Implement block (rectangular)
+            selection using ctrl+mouse.
+
+ ChangeLog         |    8 ++++
+ src/vte-private.h |    2 +
+ src/vte.c         |  103 ++++++++++++++++++++++++++++++++++++++++++++---------
+ 3 files changed, 96 insertions(+), 17 deletions(-)
+
+commit 24bb4db74a8e09f6c1a80422f25fab65433197bb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Mar 31 03:51:07 2006 +0000
+
+    Bug 336117 – [patch] Use g_slice API Patch from Aivars Kalvans.
+    
+    2006-03-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 336117 – [patch] Use g_slice API
+            Patch from Aivars Kalvans.
+    
+            * src/*.c: Use g_slice instead of g_malloc for structs.
+            Also, replace g_string_new("") with g_string_new(NULL).
+
+ ChangeLog       |    8 +++++
+ configure.in    |    2 +-
+ src/buffer.c    |    4 +-
+ src/iso2022.c   |    8 ++--
+ src/matcher.c   |    4 +-
+ src/reflect.c   |    2 +-
+ src/ring.c      |    4 +-
+ src/table.c     |   18 +++++-----
+ src/trie.c      |    4 +-
+ src/vte.c       |   12 ++++----
+ src/vteaccess.c |    4 +-
+ src/vteconv.c   |    4 +-
+ src/vtedraw.c   |    4 +-
+ src/vteft2.c    |    4 +-
+ src/vtegl.c     |    4 +-
+ src/vteglyph.c  |    4 +-
+ src/vtepango.c  |    6 ++--
+ src/vtepangox.c |    6 ++--
+ src/vteregex.c  |   20 ++++++------
+ src/vteskel.c   |    4 +-
+ src/vtetc.c     |   90 ++++++++++++++++++++++++-------------------------------
+ src/vtexft.c    |   11 ++----
+ 22 files changed, 110 insertions(+), 117 deletions(-)
+
+commit 3a497bbf82003a216046c4f66f0fe467745ee788
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Mar 31 00:32:13 2006 +0000
+
+    Branchpoint for vte-0-12.
+    
+    2006-03-30  Behdad Esfahbod  <behdad gnome org>
+    
+            Branchpoint for vte-0-12.
+
+ ChangeLog |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit b5219e70cf617cf7903a57cf9c03fe44349b349d
+Author: Guntupalli Karunakar <karunakar src gnome org>
+Date:   Thu Mar 30 15:01:12 2006 +0000
+
+    Added Dzongkha translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/dz.po     |  122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 131 insertions(+), 1 deletions(-)
+
+commit 35237f2f3c9a8ba3e52dd0dc9b577cad6dceb569
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 27 01:55:17 2006 +0000
+
+    Bug 336128 # vim scrolling issues - emulation errors
+    
+    2006-03-26  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 336128 # vim scrolling issues - emulation errors
+    
+            * src/vteseq.c (vte_sequence_handler_sf): Update start and end
+            when updating insert_delta.
+
+ ChangeLog    |    7 +++++++
+ src/vteseq.c |   11 ++++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+commit 67131d5fc1344bb3f1dfef5796dd9f8a13b831c7
+Author: Vladimer Sichinava <vsichi src gnome org>
+Date:   Sat Mar 18 02:10:01 2006 +0000
+
+    Update Georgian translation
+
+ po/ka.po |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit e1bd736274af19101cb07f72a56306e6d0ef5393
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Mar 15 11:02:59 2006 +0000
+
+    Bug 334385 – Use intltool
+    
+    2006-03-15  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 334385 – Use intltool
+    
+            * Makefile.am, configure.in: Add intltool support.
+    
+            * src/iso2022.c, src/reaper.c, src/vteaccess.c, src/vteapp.c,
+            src/vtebg.c, src/vtexft.c, src/vte.c: Include glib/gi18n-lib.h
+            instead of #ifdefing gettext stuff.
+    
+            * src/vte.c (vte_terminal_class_init): Use GETTEXT_PACKAGE instead
+            of PACKAGE in bindgettextdomain.
+
+ ChangeLog       |   13 +++++++++++++
+ Makefile.am     |    5 ++++-
+ configure.in    |    9 ++++++---
+ src/iso2022.c   |    9 +--------
+ src/reaper.c    |   10 +---------
+ src/vte.c       |    3 ++-
+ src/vteaccess.c |    7 +------
+ src/vteapp.c    |    8 +-------
+ src/vtebg.c     |    8 +-------
+ src/vtexft.c    |    8 +-------
+ 10 files changed, 31 insertions(+), 49 deletions(-)
+
+commit c746aa5bf1ff72eee324811989216e8351a88ee3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Mar 14 11:05:24 2006 +0000
+
+    More tweaks to the previous changes. Reported by dholbach again.
+    
+    2006-03-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_size_allocate): More tweaks to the
+            previous changes.  Reported by dholbach again.
+
+ ChangeLog |    7 ++++++-
+ src/vte.c |   50 +++++++++++++++++++++-----------------------------
+ 2 files changed, 27 insertions(+), 30 deletions(-)
+
+commit 6988cdf18b96e0f42eb9c95f8e501305a2cc2f0d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 13 11:47:22 2006 +0000
+
+    Put the stuff changed in previous commit in their original order. Problem
+    
+    2006-03-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_size_allocate): Put the stuff changed in
+            previous commit in their original order.  Problem reported by
+            dholback.
+
+ ChangeLog |   10 ++++++++--
+ src/vte.c |   26 ++++++++++++++++----------
+ 2 files changed, 24 insertions(+), 12 deletions(-)
+
+commit 361ec0090f5132bac972477db6a07ed40c82cb8f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 13 05:46:01 2006 +0000
+
+    Bug 104841 – scrolling doesn't work inside "screen" windows
+    
+    2006-03-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 104841 – scrolling doesn't work inside "screen" windows
+    
+            * src/vte.c (vte_terminal_size_allocate): Fix restricted scrolling
+            region readjustment.  Moreover, do not do unnecessary updates when
+            number of rows & columns has not changed.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   60 +++++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 37 insertions(+), 31 deletions(-)
+
+commit eb4c9403f8dc29e54c458f8f35624a5b41674cc6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 13 05:43:32 2006 +0000
+
+    Bug 333768 – vteapp debug stuff should be conditional Patch from Egmont
+    
+    2006-03-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Bug 333768 – vteapp debug stuff should be conditional
+            Patch from Egmont Koblinger.
+    
+            * src/vteapp.c: Make pwd and setting env vars conditional on debug.
+
+ ChangeLog    |    7 +++++++
+ src/vteapp.c |    8 +++++++-
+ 2 files changed, 14 insertions(+), 1 deletions(-)
+
+commit ce1b7692e1f22c24e13f308f01ee31ea0ba7eb2d
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Mar 13 05:33:26 2006 +0000
+
+    Released vte-0.12.0.
+    
+    2006-03-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.12.0.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.12.0.
+
+ ChangeLog     |    8 ++++++++
+ NEWS          |    2 ++
+ configure.in  |    2 +-
+ po/am.po      |   27 +++++++++++----------------
+ po/ang.po     |   27 +++++++++++----------------
+ po/ar.po      |   30 ++++++++++++++----------------
+ po/az.po      |   30 ++++++++++++++----------------
+ po/be.po      |   30 ++++++++++++++----------------
+ po/bg.po      |   30 ++++++++++++++----------------
+ po/bn.po      |   30 ++++++++++++++----------------
+ po/bs.po      |   30 ++++++++++++++----------------
+ po/ca.po      |   30 ++++++++++++++----------------
+ po/cs.po      |   30 ++++++++++++++----------------
+ po/cy.po      |   30 ++++++++++++++----------------
+ po/da.po      |   30 ++++++++++++++----------------
+ po/de.po      |   30 ++++++++++++++----------------
+ po/el.po      |   30 ++++++++++++++----------------
+ po/en_CA.po   |   30 ++++++++++++++----------------
+ po/en_GB.po   |   30 ++++++++++++++----------------
+ po/es.po      |   30 ++++++++++++++----------------
+ po/et.po      |   30 ++++++++++++++----------------
+ po/eu.po      |   30 ++++++++++++++----------------
+ po/fa.po      |    2 +-
+ po/fi.po      |   30 ++++++++++++++----------------
+ po/fr.po      |   30 ++++++++++++++----------------
+ po/ga.po      |   27 +++++++++++----------------
+ po/gl.po      |   30 ++++++++++++++----------------
+ po/gu.po      |   30 ++++++++++++++----------------
+ po/he.po      |   30 ++++++++++++++----------------
+ po/hi.po      |   30 ++++++++++++++----------------
+ po/hr.po      |   30 ++++++++++++++----------------
+ po/hu.po      |   30 ++++++++++++++----------------
+ po/id.po      |   30 ++++++++++++++----------------
+ po/is.po      |   30 ++++++++++++++----------------
+ po/it.po      |   30 ++++++++++++++----------------
+ po/ja.po      |   30 ++++++++++++++----------------
+ po/ka.po      |   30 ++++++++++++++----------------
+ po/kn.po      |   45 ++++++++++++++++++++++-----------------------
+ po/ko.po      |   30 ++++++++++++++----------------
+ po/ku.po      |   45 +++++++++++++++++++--------------------------
+ po/ky.po      |   30 ++++++++++++++----------------
+ po/li.po      |   30 ++++++++++++++----------------
+ po/lt.po      |   30 ++++++++++++++----------------
+ po/lv.po      |   44 ++++++++++++++++++++++----------------------
+ po/mi.po      |   27 +++++++++++----------------
+ po/mk.po      |   30 ++++++++++++++----------------
+ po/ml.po      |   27 +++++++++++----------------
+ po/mn.po      |   30 ++++++++++++++----------------
+ po/ms.po      |   30 ++++++++++++++----------------
+ po/nb.po      |   30 ++++++++++++++----------------
+ po/ne.po      |   30 ++++++++++++++----------------
+ po/nl.po      |   30 ++++++++++++++----------------
+ po/nn.po      |   30 ++++++++++++++----------------
+ po/no.po      |   30 ++++++++++++++----------------
+ po/or.po      |   30 ++++++++++++++----------------
+ po/pa.po      |   30 ++++++++++++++----------------
+ po/pl.po      |   30 ++++++++++++++----------------
+ po/pt.po      |   30 ++++++++++++++----------------
+ po/pt_BR.po   |   30 ++++++++++++++----------------
+ po/ro.po      |   30 ++++++++++++++----------------
+ po/ru.po      |   30 ++++++++++++++----------------
+ po/rw.po      |   31 +++++++++++++++----------------
+ po/sk.po      |   30 ++++++++++++++----------------
+ po/sl.po      |   30 ++++++++++++++----------------
+ po/sq.po      |   30 ++++++++++++++----------------
+ po/sr.po      |   30 ++++++++++++++----------------
+ po/sr Latn po |   30 ++++++++++++++----------------
+ po/sv.po      |   30 ++++++++++++++----------------
+ po/ta.po      |   30 ++++++++++++++----------------
+ po/th.po      |   30 ++++++++++++++----------------
+ po/tr.po      |   30 ++++++++++++++----------------
+ po/ug.po      |   30 ++++++++++++++----------------
+ po/uk.po      |   30 ++++++++++++++----------------
+ po/vi.po      |   30 ++++++++++++++----------------
+ po/wa.po      |   30 ++++++++++++++----------------
+ po/xh.po      |   30 ++++++++++++++----------------
+ po/zh_CN.po   |   30 ++++++++++++++----------------
+ po/zh_HK.po   |   39 +++++++++++++++++++--------------------
+ po/zh_TW.po   |   39 +++++++++++++++++++--------------------
+ 79 files changed, 1079 insertions(+), 1233 deletions(-)
+
+commit 5c3e4026fac29c5c8024c6c13a9542a9207c99ee
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Thu Mar 9 01:33:37 2006 +0000
+
+    update header info
+
+ po/kn.po |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 1605865137784af059d22f07e07b4df5941a8a90
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Thu Mar 9 01:24:50 2006 +0000
+
+    Really fixed kn.po this time
+
+ ChangeLog    |    5 +++++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++++
+ po/kn.po     |    7 +++----
+ 4 files changed, 13 insertions(+), 5 deletions(-)
+
+commit 80f7abbff13e05a4c7e0b337361e722138d18071
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Wed Mar 8 22:21:24 2006 +0000
+
+    Removed kn from ALL_LINGUAS, as it was breaking the build.
+    
+            * configure.in: Removed kn from ALL_LINGUAS, as it was breaking
+            the build.
+
+ ChangeLog    |    3 +++
+ configure.in |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 8be612163d22a80845e92f3a91bfdc90eaa02bae
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Mar 8 22:13:46 2006 +0000
+
+    Released vte-0.11.21.
+    
+    2006-03-08  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.11.21.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.11.21.
+
+ ChangeLog    |    8 ++++++++
+ NEWS         |    6 ++++++
+ configure.in |    2 +-
+ 3 files changed, 15 insertions(+), 1 deletions(-)
+
+commit 121c11338dee9f748cc5a7dfc4f47bab114b7b78
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Mar 8 20:31:13 2006 +0000
+
+    Fix vte_update_timeout repeat to 25ms. (bug #333776, Egmont Koblinger)
+    
+    2006-03-08  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c, src/vte-private.h: Fix vte_update_timeout repeat to
+            25ms. (bug #333776, Egmont Koblinger)
+
+ ChangeLog         |    5 +++++
+ src/vte-private.h |    1 +
+ src/vte.c         |    2 +-
+ 3 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 1ac0068119ebff08ebc7eb66eae8f5264529531d
+Author: Abel Cheung <maddog linuxhall org>
+Date:   Tue Mar 7 21:14:39 2006 +0000
+
+    Added "kn" "zh_HK" to ALL_LINGUAS.
+    
+    2006-03-07  Abel Cheung  <maddog linuxhall org>
+    
+       * configure.in: Added "kn" "zh_HK" to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    5 +----
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+commit d30d72a4614e885eee0b32c0d597bf4c91313a1b
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Tue Mar 7 21:12:02 2006 +0000
+
+    Updated Chinese (Taiwan) translation. New Chinese (Hong Kong) translation.
+    
+       * zh_TW.po: Updated Chinese (Taiwan) translation.
+       * zh_HK.po: New Chinese (Hong Kong) translation.
+
+ po/ChangeLog |    5 +++
+ po/zh_HK.po  |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ po/zh_TW.po  |   99 ++++++++++++++++++---------------------------------
+ 3 files changed, 152 insertions(+), 64 deletions(-)
+
+commit 95c7891534f03b458af7881fe8b3d315fc43deae
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Wed Mar 1 01:44:40 2006 +0000
+
+    Step up COALESCE_TIMEOUT and DISPLAY_TIMEOUT from 2ms to 10ms. This is
+    
+    2006-02-28  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte-private.h: Step up COALESCE_TIMEOUT and DISPLAY_TIMEOUT
+            from 2ms to 10ms.  This is more compatible with the updated timeout
+            that we are doing at around 25ms.
+
+ ChangeLog         |    6 ++++++
+ src/vte-private.h |   11 ++++++-----
+ src/vte.c         |    2 +-
+ 3 files changed, 13 insertions(+), 6 deletions(-)
+
+commit 985b6d715b4c303db6ec005816cce7c4ef8c7a93
+Author: Guilherme de S. Pastore <gpastore src gnome org>
+Date:   Tue Feb 28 09:39:16 2006 +0000
+
+    19:17     behdad: km_sleep, fatalerror-: you guys, please add yourself to vte/MAINTAINERS
+
+ MAINTAINERS |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit f1612d012fe1fa41ef9aeb589840dbf48b948070
+Author: Clytie Siddall <clyties src gnome org>
+Date:   Tue Feb 28 05:22:12 2006 +0000
+
+    lv.po: Updated Latvian translation.
+
+ po/ChangeLog |    4 ++
+ po/lv.po     |  104 ++++++++++++++++++++--------------------------------------
+ 2 files changed, 40 insertions(+), 68 deletions(-)
+
+commit cdc91c6c767848bf4eeee8762e4d937b3283ccd4
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 28 03:28:59 2006 +0000
+
+    Added.
+    
+    2006-02-27  Behdad Esfahbod  <behdad gnome org>
+    
+            * MAINTAINERS: Added.
+
+ ChangeLog   |    4 ++++
+ HACKING     |    9 +++------
+ MAINTAINERS |    4 ++++
+ Makefile.am |    2 +-
+ 4 files changed, 12 insertions(+), 7 deletions(-)
+
+commit c72e9fd4e383a946374c3f9d8f561d46c357a377
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sun Feb 26 00:13:39 2006 +0000
+
+    Released vte-0.11.20.
+    
+    2006-02-25  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.11.20.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.11.20.
+
+ ChangeLog    |    8 ++++++++
+ NEWS         |    3 +++
+ configure.in |    2 +-
+ po/fa.po     |    4 ++--
+ 4 files changed, 14 insertions(+), 3 deletions(-)
+
+commit a8dc95d35d179748f5b32e876241044647c86185
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 25 23:20:42 2006 +0000
+
+    Rever the patch to optimize memory usage by releasing fonts that aren't
+    
+    2006-02-25  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vtexft.c: (_vte_xft_font_for_char): Rever the patch to
+            optimize memory usage by releasing fonts that aren't needed early.
+            Because that was inserting destroyed fonts into cache. Closes bug
+            #332580 and reverts bug #309322.
+
+ ChangeLog    |    7 +++++++
+ src/vtexft.c |   22 ++++++----------------
+ 2 files changed, 13 insertions(+), 16 deletions(-)
+
+commit 075456ee218b973c7b4aa102ef1d40cee46b7972
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 25 09:17:01 2006 +0000
+
+    Released vte-0.11.19.
+    
+    2006-02-25  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.11.19.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.11.19.
+
+ ChangeLog    |    8 ++++++++
+ NEWS         |    8 ++++++++
+ configure.in |    2 +-
+ po/fa.po     |   18 +++++++++---------
+ 4 files changed, 26 insertions(+), 10 deletions(-)
+
+commit 2ada5623c5c2aacd2648c773f590d2664c96c00a
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 17 12:38:42 2006 +0000
+
+    Make shift+insert paste PRIMARY and ctrl+shift+insert paste CLIPBOARD
+    
+    2006-02-17  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Make shift+insert paste PRIMARY and ctrl+shift+insert
+            paste CLIPBOARD (switched them. bug #123844)
+
+ ChangeLog |    5 +++++
+ src/vte.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 37aff2e7951558fbc06d580be1886302cc3c7de1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 17 12:31:08 2006 +0000
+
+    Better update-timeout handling. Always delay updates a bit. Schedule
+    
+    2006-02-17  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Better update-timeout handling.  Always delay updates
+            a bit.  Schedule updates as G_PRIORITY_DEFAULT_IDLE.  And, set delay
+            as the number of lines, in milliseconds.
+
+ ChangeLog |    6 +++++
+ src/vte.c |   71 ++++++++++++++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 55 insertions(+), 22 deletions(-)
+
+commit d5274a05e5fe49fb34901adb1c0988437d6a9348
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 14 22:18:49 2006 +0000
+
+    Return 0. (bug #331178)
+    
+    2006-02-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq-gen.c (main): Return 0.  (bug #331178)
+
+ ChangeLog           |    4 ++++
+ python/cat.py       |    2 +-
+ python/unrealize.py |    2 +-
+ src/vteseq-gen.c    |    2 ++
+ 4 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 226ba9f308b60790a762b6a2ed312b737a828433
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 14 09:00:32 2006 +0000
+
+    Use getpwnam to correctly log multiple users with the same UID. (bug
+    
+    2006-02-14  Behdad Esfahbod  <behdad gnome org>
+    
+            * gnome-pty-helper/gnome-pty-helper.c (main): Use getpwnam to
+            correctly log multiple users with the same UID. (bug #319564,
+            patch from Laszlo (Laca) Peter.
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |   16 +++++++++++++++-
+ 2 files changed, 21 insertions(+), 1 deletions(-)
+
+commit 46cdab5bf7357f8e502cbe4f8ce7bd03f543cb9e
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Tue Feb 14 05:50:28 2006 +0000
+
+    Only discontinue timer if nothing was updated in the last cycle.
+    
+    2006-02-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (update_timeout): Only discontinue timer if nothing
+            was updated in the last cycle.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    8 ++++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 7bcb1977db20099d686099802efd1fbf393c92ee
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Feb 13 22:24:17 2006 +0000
+
+    Fix race condition when shutdown_helper may be called again from the
+    
+    2006-02-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * gnome-pty-helper/gnome-pty-helper.c: Fix race condition when
+            shutdown_helper may be called again from the signal handler when
+            it's already running. (bug #331056)
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/ChangeLog          |    1 +
+ gnome-pty-helper/gnome-pty-helper.c |   18 +++++++++++-------
+ 3 files changed, 18 insertions(+), 7 deletions(-)
+
+commit cf6368c0aa47983547772669e4d9f7f462b7a0ba
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Feb 13 21:31:18 2006 +0000
+
+    Do not prepend X_LIBS and X_CFLAGS to LIBS and CFLAGS. (bug #331021,
+    
+    2006-02-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * configure.in: Do not prepend X_LIBS and X_CFLAGS to LIBS and
+            CFLAGS. (bug #331021, Sylvain BERTRAND)
+
+ ChangeLog    |    5 +++++
+ configure.in |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 4faae4ba893d5ed822ce7066e11e8bb163b29b0b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Mon Feb 13 20:50:14 2006 +0000
+
+    Handle Ctrl+Shift+Insert to paste PRIMARY.
+    
+    2006-02-13  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (vte_terminal_key_press): Handle Ctrl+Shift+Insert to
+            paste PRIMARY.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   12 +++++++++---
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit b93f42ff246c70ed6743240a5a3892121262edbb
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 11 20:04:30 2006 +0000
+
+    Released vte-0.11.18.
+    
+    2006-02-11  Behdad Esfahbod  <behdad gnome org>
+    
+            Released vte-0.11.18.
+    
+            * NEWS: Updated.
+    
+            * configure.in: Bumped version to 0.11.18.
+
+ ChangeLog    |    8 ++++++++
+ NEWS         |   14 ++++++++++++++
+ configure.in |    2 +-
+ po/fa.po     |    2 +-
+ 4 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 89b9d8fab395d84160c26d9f0e5cee0270177c81
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 11 18:29:06 2006 +0000
+
+    Change INVALID_CODEPOINT from 0xFFFF to 0xFFFD. (bug #317235, Egmont
+    
+    2006-02-11  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/iso2022.c: Change INVALID_CODEPOINT from 0xFFFF to 0xFFFD.
+            (bug #317235, Egmont Koblinger)
+
+ ChangeLog     |    5 +++++
+ src/iso2022.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 4e9d18e1b95676972e16f70b81c332cc41564d9f
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 11 18:24:52 2006 +0000
+
+    Guard more against off values.
+    
+    2006-02-11  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_invalidate_cells): Guard more against off values.
+
+ ChangeLog |    4 ++++
+ po/fa.po  |    2 +-
+ src/vte.c |   14 +++++++-------
+ 3 files changed, 12 insertions(+), 8 deletions(-)
+
+commit a4b4fa1ccbcf269e87256f52c075889b3bc54e7b
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sat Feb 11 05:07:23 2006 +0000
+
+    vte-overrides.txt should be in CVS in fact.
+
+ doc/reference/Makefile.am       |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a567da4ddf37ba503a5bfde9fea8d20c5fede18a
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sat Feb 11 05:04:34 2006 +0000
+
+    Added more MAINTAINERCLEANFILES.
+
+ Makefile.am               |    1 +
+ doc/reference/Makefile.am |    2 ++
+ 2 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 3eb98191b6c546b21657246870dcf4b334e0f131
+Author: Behdad Esfahbod <behdad src gnome org>
+Date:   Sat Feb 11 04:56:09 2006 +0000
+
+    Added MAINTAINERCLEANFILES.
+
+ Makefile.am                  |   20 ++++++++++++++++++++
+ gnome-pty-helper/Makefile.am |    9 +++++++++
+ 2 files changed, 29 insertions(+), 0 deletions(-)
+
+commit e95ea25427129cc711c2b7337a9f0b502a24ede7
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Sat Feb 11 04:45:33 2006 +0000
+
+    Update the build infrastructure. make distcheck works now!
+    
+    2006-02-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Update the build infrastructure.  make distcheck works now!
+    
+            * autogen.sh: Use a generic autogen.sh that uses gnome-common.
+    
+            * configure.in: Simplify gtk-doc stuff.  Update to newer syntax.
+    
+            * Makefile.am, src/Makefile.am, doc/reference/Makefile.am: Updated.
+
+ .cvsignore                  |    5 +
+ ChangeLog                   |   10 ++
+ Makefile.am                 |    2 +
+ autogen.sh                  |  121 +++--------------------
+ configure.in                |   70 ++-----------
+ doc/reference/Makefile.am   |  231 ++++++++++---------------------------------
+ gnome-pty-helper/.cvsignore |    2 +
+ po/fa.po                    |   25 ++---
+ python/vte-demo.py          |    2 +-
+ src/Makefile.am             |    1 +
+ vte.spec => vte.spec.in     |    2 +-
+ 11 files changed, 108 insertions(+), 363 deletions(-)
+
+commit 2f710f0f5ff8efe8f2dc2d4601da5c4eaa6716a6
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 10 09:30:23 2006 +0000
+
+    Throttle invalidating to at most 40 times per second, using a timeout.
+    
+    2006-02-10  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c (_vte_invalidate_cells): Throttle invalidating to at most
+            40 times per second, using a timeout.
+
+ ChangeLog         |    5 +++++
+ src/vte-private.h |    3 +++
+ src/vte.c         |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 3 files changed, 58 insertions(+), 2 deletions(-)
+
+commit bd9905c897449014f31753318593588bff7bfff1
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 10 09:25:56 2006 +0000
+
+    Removed the huge sequence handler table. Changed to use the compact tables
+    
+    2006-02-10  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteseq.c: Removed the huge sequence handler table.  Changed to
+            use the compact tables in vteseq-table.h.
+    
+            * src/vteseq-gen.c: Generator containing the table removed from above,
+            that generates compact tables.
+    
+            * src/vteseq-table.h: Table generated by above.  Can be regenerated
+            using make.
+    
+            * src/Makefile.am: Adjusted.
+    
+            * src/vteapp.c: Set default font to Monospace instead of Sans.
+
+ ChangeLog          |   15 ++
+ src/.cvsignore     |    1 +
+ src/Makefile.am    |    5 +
+ src/vteapp.c       |    2 +-
+ src/vteseq-gen.c   |  505 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteseq-table.h |  388 ++++++++++++++++++++++++++++++++++++++++
+ src/vteseq.c       |  492 ++++++---------------------------------------------
+ 7 files changed, 970 insertions(+), 438 deletions(-)
+
+commit 26b84670316fb249aa4671a11f979bb468f2913b
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 10 08:02:48 2006 +0000
+
+    Allocate terminal->pvt using GObject private data.
+    
+    2006-02-10  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Allocate terminal->pvt using GObject private data.
+
+ ChangeLog |    4 ++
+ src/vte.c |  114 +++++-------------------------------------------------------
+ 2 files changed, 14 insertions(+), 104 deletions(-)
+
+commit f3d79059c30b8a89fc1409ea63ee23c19823e8e3
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 10 07:58:28 2006 +0000
+
+    Moved all sequence handler codes into a separate file.
+    
+    2006-02-10  Behdad Esfahbod  <behdad gnome org>
+    
+            Moved all sequence handler codes into a separate file.
+    
+            * src/vte.c: Stuff moved to other files.
+    
+            * src/vte-private.h: Includes all struct definitions from vte.c.
+    
+            * src/vteseq.c, src/vteseq.h, src/vteseq-list.h: The sequence
+            handlers are all here now.
+
+ ChangeLog         |   11 +
+ src/Makefile.am   |    4 +
+ src/vte-private.h |  385 ++++
+ src/vte.c         | 5192 +++--------------------------------------------------
+ src/vteseq-list.h |  122 ++
+ src/vteseq.c      | 4462 +++++++++++++++++++++++++++++++++++++++++++++
+ src/vteseq.h      |   40 +
+ 7 files changed, 5259 insertions(+), 4957 deletions(-)
+
+commit e11441c2d9390f3e9645c162b8b1ae9a10a78a63
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Feb 9 22:31:03 2006 +0000
+
+    Make a couple debug messages conditional on DEBUG_MISC.
+    
+    2006-02-09  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vteapp.c: Make a couple debug messages conditional on
+            DEBUG_MISC.
+
+ ChangeLog    |    5 +++++
+ src/vteapp.c |   12 ++++++++++--
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+commit 1a07b922fe717e0b8144d5249e38153538e6aeea
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 3 14:34:10 2006 +0000
+
+    Warning cleanup. A couple were actually bugs.
+    
+    2006-02-03  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/vte.c: Warning cleanup.  A couple were actually bugs.
+    
+            * src/vteapp.c: No need to run $SHELL by default.  Handled
+            by vte.c now.  A bug was causing nothing to be run...
+
+ ChangeLog    |    7 +++++++
+ src/vte.c    |   28 +++++++++++++++++-----------
+ src/vteapp.c |    2 +-
+ 3 files changed, 25 insertions(+), 12 deletions(-)
+
+commit 5d005b24d8f1496641c0f81f0995e1f9ae643b85
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Fri Feb 3 13:27:27 2006 +0000
+
+    Add the debug flag TRIE for printing out the trie (previous was using
+    
+    2006-02-03  Behdad Esfahbod  <behdad gnome org>
+    
+            * src/debug.c, src/debug.h, src/matcher.c: Add the debug
+            flag TRIE for printing out the trie (previous was using
+            MISC.)
+    
+            * src/vte.c (vte_invalidate_cells): Update row_count and
+            column_count when clamping their respective _start values.
+    
+            * src/vte.c (vte_terminal_extend_selection,
+            * _vte_terminal_select_text):
+            Pass row_count to vte_invalidate_cells(), instead of row_stop.
+    
+            * src/vteapp.c: Run $SHELL by default.
+
+ ChangeLog                         |   14 ++++++++++++++
+ doc/reference/tmpl/internals.sgml |    2 --
+ src/debug.c                       |    3 +++
+ src/debug.h                       |    3 ++-
+ src/matcher.c                     |    2 +-
+ src/vte.c                         |   27 ++++++++++++++++-----------
+ src/vteapp.c                      |    2 +-
+ src/vtedraw.c                     |   14 +++++++-------
+ 8 files changed, 44 insertions(+), 23 deletions(-)
+
+commit 1785a75abdb32c5e889526d41e54bd7b336e23b5
+Author: Behdad Esfahbod <behdad gnome org>
+Date:   Thu Feb 2 03:43:16 2006 +0000
+
+    Added to CVS.
+    
+    2006-02-01  Behdad Esfahbod  <behdad gnome org>
+    
+            * doc/reference/tmpl/internals.sgml: Added to CVS.
+    
+            * vte/src/vte.c: Fix selection vs. primary that have been
+            borked forever. Closes bug #123844.
+
+ ChangeLog                          |    7 ++++
+ doc/reference/.cvsignore           |    1 +
+ doc/reference/tmpl/internals.sgml  |   18 ++++++++++++
+ doc/reference/tmpl/reaper.sgml     |    3 --
+ doc/reference/tmpl/vte-unused.sgml |    4 ++
+ doc/reference/tmpl/vte.sgml        |    3 --
+ doc/reference/tmpl/vteaccess.sgml  |    3 --
+ src/keymap.c                       |    2 +-
+ src/vte.c                          |   54 ++++++++++++++++++++++++-----------
+ 9 files changed, 68 insertions(+), 27 deletions(-)
+
+commit 14310a352215434f45d24584bc34156ee922d639
+Author: Guilherme de S. Pastore <gpastore src gnome org>
+Date:   Mon Jan 30 12:23:49 2006 +0000
+
+    applied patch from Tomas Mraz to fix a double free. Closes bug #161337.
+    
+    * src/trie.c: applied patch from Tomas Mraz to fix a double
+      free. Closes bug #161337.
+
+ ChangeLog  |    5 +++++
+ src/trie.c |   10 +++++++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 154c33179ee3d9de0bdf3416dabea3cdead0ebdc
+Author: Erdal Ronahi <eronahi src gnome org>
+Date:   Mon Jan 30 01:08:08 2006 +0000
+
+    Added initial Kurdish translations.
+
+ ChangeLog    |    4 ++
+ configure.in |    5 ++-
+ po/ChangeLog |    4 ++
+ po/ku.po     |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 130 insertions(+), 1 deletions(-)
+
+commit 72fcd8154eaf51afaec22fc9e336e078a9c45c26
+Author: Guilherme de S. Pastore <gpastore src gnome org>
+Date:   Sat Jan 28 20:23:52 2006 +0000
+
+    add -DG_DISABLE_ASSERT to CFLAGS. updated. bumped version to 0.11.17. only
+    
+    * src/Makefile.am: add -DG_DISABLE_ASSERT to CFLAGS.
+    * NEWS: updated.
+    * vte.spec: bumped version to 0.11.17.
+    * src/vte.c: only try to guess the user's shell when actually
+      forking, so we avoid unnecessary work if the application
+      already has to do that itself.
+
+ ChangeLog       |   14 +++++++++++++
+ NEWS            |   13 ++++++++++-
+ src/Makefile.am |    2 +-
+ src/vte.c       |   58 ++++++++++++++++++++++++++++++------------------------
+ vte.spec        |    2 +-
+ 5 files changed, 59 insertions(+), 30 deletions(-)
+
+commit 93d57b0c02afb1510bad099c3cf4da4f10f03ab9
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sun Jan 15 22:34:33 2006 +0000
+
+    Fix the build after the previous commit. And update the NEWS file a bit
+
+ NEWS      |    2 ++
+ src/vte.c |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 923b824fd9f75accb05585b740b628f40aea7ebc
+Author: Guilherme de S. Pastore <gpastore src gnome org>
+Date:   Sun Jan 15 21:09:41 2006 +0000
+
+    applied patch from kmaraas to replace g_return* with g_assert in static functions
+
+ ChangeLog       |    5 ++
+ src/ring.c      |    2 +-
+ src/vte.c       |  198 +++++++++++++++++++++++++++---------------------------
+ src/vteaccess.c |  104 ++++++++++++++---------------
+ src/vteapp.c    |   18 +++---
+ src/vtetc.c     |   12 ++--
+ src/vtexft.c    |   30 ++++----
+ 7 files changed, 186 insertions(+), 183 deletions(-)
+
+commit ac0e2cad69de1134949764b5793c9737e1a92cd3
+Author: Guilherme de S. Pastore <gpastore src gnome org>
+Date:   Sat Jan 14 13:31:35 2006 +0000
+
+    install more than *.html, based on the patch from Ed Catmur. Closes bug
+    
+    * doc/reference/Makefile.am: install more than *.html, based on the
+      patch from Ed Catmur. Closes bug #321909.
+
+ ChangeLog                 |    5 +++++
+ doc/reference/Makefile.am |    6 ++----
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit a18578af735cb07eafaa98cb3e6d66be4fa1c9bc
+Author: Olav Vitters <olav bkor dhs org>
+Date:   Sat Jan 14 13:10:33 2006 +0000
+
+    Support save and restore cursor position using \033[s and \033[u. Reported
+    
+    2006-01-14  Olav Vitters  <olav bkor dhs org>
+    
+    * src/caps.c: Support save and restore cursor position using \033[s
+    and \033[u. Reported by Dag Wieers. Fixes bug 170032.
+
+ ChangeLog  |    5 +++++
+ src/caps.c |    2 ++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit e0bc53fbe3b3ffa56099e8f807764184ea2df69f
+Author: Olav Vitters <olav bkor dhs org>
+Date:   Sat Dec 31 11:27:56 2005 +0000
+
+    Backup patch from Steve Langasek. It needs pkg-config changes.
+    
+    2005-12-31  Olav Vitters  <olav bkor dhs org>
+    
+    * vte.pc.in: Backup patch from Steve Langasek. It needs pkg-config
+    changes.
+
+ ChangeLog |    5 +++++
+ vte.pc.in |    5 ++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit c83369c96f5d1f83fd3c346a6a6e7b7edcf67448
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Tue Dec 13 14:21:54 2005 +0000
+
+    Flush after release
+
+ po/am.po      |   22 +++++++++++-----------
+ po/ang.po     |   22 +++++++++++-----------
+ po/ar.po      |   22 +++++++++++-----------
+ po/az.po      |   22 +++++++++++-----------
+ po/be.po      |   22 +++++++++++-----------
+ po/bg.po      |   22 +++++++++++-----------
+ po/bn.po      |   41 ++++++++++++++++++++---------------------
+ po/bs.po      |   22 +++++++++++-----------
+ po/ca.po      |   41 ++++++++++++++++++++---------------------
+ po/cs.po      |   22 +++++++++++-----------
+ po/cy.po      |   22 +++++++++++-----------
+ po/da.po      |   22 +++++++++++-----------
+ po/de.po      |   22 +++++++++++-----------
+ po/el.po      |   22 +++++++++++-----------
+ po/en_CA.po   |   22 +++++++++++-----------
+ po/en_GB.po   |   22 +++++++++++-----------
+ po/es.po      |   22 +++++++++++-----------
+ po/et.po      |   22 +++++++++++-----------
+ po/eu.po      |   22 +++++++++++-----------
+ po/fa.po      |   22 +++++++++++-----------
+ po/fi.po      |   22 +++++++++++-----------
+ po/fr.po      |   22 +++++++++++-----------
+ po/ga.po      |   22 +++++++++++-----------
+ po/gl.po      |   22 +++++++++++-----------
+ po/gu.po      |   22 +++++++++++-----------
+ po/he.po      |   22 +++++++++++-----------
+ po/hi.po      |   22 +++++++++++-----------
+ po/hr.po      |   22 +++++++++++-----------
+ po/hu.po      |   45 ++++++++++++++++++++++-----------------------
+ po/id.po      |   22 +++++++++++-----------
+ po/is.po      |   22 +++++++++++-----------
+ po/it.po      |   22 +++++++++++-----------
+ po/ja.po      |   22 +++++++++++-----------
+ po/ka.po      |   22 +++++++++++-----------
+ po/ko.po      |   22 +++++++++++-----------
+ po/ky.po      |   42 ++++++++++++++++++++----------------------
+ po/li.po      |   22 +++++++++++-----------
+ po/lt.po      |   22 +++++++++++-----------
+ po/lv.po      |   22 +++++++++++-----------
+ po/mi.po      |   22 +++++++++++-----------
+ po/mk.po      |   22 +++++++++++-----------
+ po/ml.po      |   22 +++++++++++-----------
+ po/mn.po      |   22 +++++++++++-----------
+ po/ms.po      |   22 +++++++++++-----------
+ po/nb.po      |   22 +++++++++++-----------
+ po/ne.po      |   22 +++++++++++-----------
+ po/nl.po      |   22 +++++++++++-----------
+ po/nn.po      |   22 +++++++++++-----------
+ po/no.po      |   22 +++++++++++-----------
+ po/or.po      |   22 +++++++++++-----------
+ po/pa.po      |   22 +++++++++++-----------
+ po/pl.po      |   22 +++++++++++-----------
+ po/pt.po      |   22 +++++++++++-----------
+ po/pt_BR.po   |   22 +++++++++++-----------
+ po/ro.po      |   22 +++++++++++-----------
+ po/ru.po      |   22 +++++++++++-----------
+ po/rw.po      |   22 +++++++++++-----------
+ po/sk.po      |   22 +++++++++++-----------
+ po/sl.po      |   22 +++++++++++-----------
+ po/sq.po      |   22 +++++++++++-----------
+ po/sr.po      |   22 +++++++++++-----------
+ po/sr Latn po |   22 +++++++++++-----------
+ po/sv.po      |   22 +++++++++++-----------
+ po/ta.po      |   22 +++++++++++-----------
+ po/th.po      |   22 +++++++++++-----------
+ po/tr.po      |   22 +++++++++++-----------
+ po/ug.po      |   22 +++++++++++-----------
+ po/uk.po      |   22 +++++++++++-----------
+ po/vi.po      |   22 +++++++++++-----------
+ po/wa.po      |   22 +++++++++++-----------
+ po/xh.po      |   22 +++++++++++-----------
+ po/zh_CN.po   |   22 +++++++++++-----------
+ po/zh_TW.po   |   22 +++++++++++-----------
+ 73 files changed, 841 insertions(+), 846 deletions(-)
+
+commit 34db0ffe7696fd255fa5a4fa03ed090fdf7a3be5
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Mon Dec 12 18:49:50 2005 +0000
+
+    Update for 0.11.16
+
+ NEWS |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 008dbeb4e5520c12a2f99956ebbfbc6bbf44c3b5
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Dec 12 18:46:15 2005 +0000
+
+    Cleanups for the pkg-config file. Patch from Steve Langasek. Closes bug
+    
+    2005-12-12  Kjartan Maraas  <kmaraas gnome org>
+    
+       * vte.pc.in: Cleanups for the pkg-config file.
+       Patch from Steve Langasek. Closes bug #322240.
+
+ ChangeLog |    5 +++++
+ vte.pc.in |    5 +++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit a57992dd24aa27bafd9df03c70d175cb74b43c0c
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Dec 12 18:42:21 2005 +0000
+
+    python-vte seems to have a small bug in the override file that prevents
+    
+    2005-12-12  Kjartan Maraas  <kmaraas gnome org>
+    
+       * python/vte.override: python-vte seems to have a small bug in
+       the override file that prevents the forkpty() method to be generated.
+       The attached patch fixes this problem. Patch from Michael Vogt.
+       Closes bug #169201.
+
+ ChangeLog           |    7 +++++++
+ python/vte.override |    2 ++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit a44035e91dffdbeb3613d56234c74bb6d8483368
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Nov 30 00:32:25 2005 +0000
+
+    Remove some unused code. (vte_terminal_process_incoming): Don't emit
+    
+    2005-11-30  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_preedit_length): Remove some
+       unused code.
+       (vte_terminal_process_incoming): Don't emit signals for every
+       character that's output. Patch from Padraig O'Briain. Huge
+       performance gain when a11y is activated.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    6 ------
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit b27d00bb421f9c24c6294d156d671656ffe47078
+Author: Timur Jamakeev <timurj cvs gnome org>
+Date:   Wed Nov 16 12:56:59 2005 +0000
+
+    Added 'ky' to ALL_LINGUAS
+    
+    2005-11-16  Timur Jamakeev  <timurj cvs gnome org>
+    
+       * configure.in: Added 'ky' to ALL_LINGUAS
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit ba4ea5666d9efbd48025e378e3c50b8fcc632bc9
+Author: Timur Jamakeev <timurj src gnome org>
+Date:   Wed Nov 16 12:51:38 2005 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 4f284b826aa84e3856e2c078f7922123163dd2de
+Author: Timur Jamakeev <timurj cvs gnome org>
+Date:   Wed Nov 16 12:49:12 2005 +0000
+
+    Kirghiz translation added.
+    
+    2005-11-16  Timur Jamakeev  <timurj cvs gnome org>
+    
+       * ky.po: Kirghiz translation added.
+
+ po/ky.po |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 117 insertions(+), 0 deletions(-)
+
+commit c3c4b97bc788db03578a98f3613de8c6a4ecc71a
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Nov 8 20:18:51 2005 +0000
+
+    Update.
+    
+    2005-11-08  Kjartan Maraas  <kmaraas gnome org>
+    
+       * NEWS: Update.
+       * Makefile.am:
+       * autogen.sh:
+       * configure.in:
+       * python/Makefile.am:
+       I'm attaching a patch that modernizes the python binding
+       build stuff. Notably, it excludes python/vte.c from the dist.
+       Right now as it stands, the file is disted, which means people's
+       builds will not work unless they build against pygtk 2.8,
+       which makes this bug somewhat important. Patch from Manish Sing
+       Closes bug #320931.
+
+ ChangeLog          |   14 ++++++++++++++
+ Makefile.am        |    2 +-
+ NEWS               |    5 +++++
+ autogen.sh         |    1 -
+ configure.in       |   12 ++++++++++--
+ python/Makefile.am |   19 +++++++++++++++----
+ 6 files changed, 45 insertions(+), 8 deletions(-)
+
+commit ec5ac1c6d58b791eb8c8069fb329baf37c1ed8a0
+Author: Bill Haneman <billh src gnome org>
+Date:   Tue Nov 1 17:20:41 2005 +0000
+
+    Fix for crasher bug #153405.  Patch from Padraig O'Briain.
+
+ ChangeLog       |    8 ++++++++
+ src/vteaccess.c |    9 +++++++++
+ 2 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 69940ef016e1825e26ab48cbbaf635c94adc31c0
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sun Oct 30 12:47:48 2005 +0000
+
+    Remove this ancient file
+
+ MESSAGE-OF-DOOM |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit b55d0887747595e4317c75cc89899d695092f858
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sun Oct 2 09:59:42 2005 +0000
+
+    Fix gdk warnings. Patch from Michele Baldessari. Closes bug #309025.
+    
+    2005-10-02  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vtebg.c: (_vte_property_get_pixmaps):
+       * src/vterdb.c: (_vte_property_get_string):
+       Fix gdk warnings. Patch from Michele Baldessari.
+       Closes bug #309025.
+
+ ChangeLog    |    7 +++++++
+ src/vtebg.c  |    2 +-
+ src/vterdb.c |    2 +-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 1a5f3494d79672ffaae08ee01fbe30f2f525ec4f
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Sat Oct 1 09:56:59 2005 +0000
+
+    Added entry for Bengali (bn) Translation updation:10/01
+
+ po/ChangeLog |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 2c06d463e073b932cff34aca0abe31c8f78a88fd
+Author: Runa Bhattacharjee <runab src gnome org>
+Date:   Sat Oct 1 09:56:43 2005 +0000
+
+    Updated Bengali (bn) Translaion:10/01
+
+ po/bn.po |  109 +++++++++++++++++++++++--------------------------------------
+ 1 files changed, 41 insertions(+), 68 deletions(-)
+
+commit 7768de1457224fcb168f0cf9f1622a633dd0e5cb
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Fri Sep 16 20:14:29 2005 +0000
+
+    Optimize memory usage by releasing fonts that aren't needed early. Patch
+    
+    2005-09-16  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vtexft.c: (_vte_xft_font_for_char): Optimize memory
+       usage by releasing fonts that aren't needed early. Patch
+       from Mike Hearn. Closes bug #309322.
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |   22 ++++++++++++++++------
+ 2 files changed, 22 insertions(+), 6 deletions(-)
+
+commit 659f4c735aaea14d2ee44614677759c884800cd1
+Author: Josep Puigdemont i Casamajó <joseppc src gnome org>
+Date:   Sat Sep 3 23:19:43 2005 +0000
+
+    Fixed some typos and strings.
+
+ po/ca.po |   45 +++++++++++++++++++++++----------------------
+ 1 files changed, 23 insertions(+), 22 deletions(-)
+
+commit f32e845ad41b4accde05a0922cdf132757bb0259
+Author: Gabor Kelemen <kelemeng gnome hu>
+Date:   Tue Aug 23 21:24:19 2005 +0000
+
+    Hungarian translation updated.
+    
+    2005-08-23  Gabor Kelemen  <kelemeng gnome hu>
+    
+       * hu.po: Hungarian translation updated.
+
+ po/ChangeLog |    4 +++
+ po/hu.po     |   62 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 37 insertions(+), 29 deletions(-)
+
+commit ba7f65167f760776fa13d2da93e1ac02ee87de4d
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Tue Aug 23 09:49:57 2005 +0000
+
+    Post release bump
+
+ vte.spec |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c9e038e096dab5750bcce8578169cc572e9f9140
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sat Aug 13 11:56:37 2005 +0000
+
+    Updates
+
+ NEWS |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit d1252cd3f30c75d659345e0c6d862b24cccbbc57
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sat Aug 13 11:55:18 2005 +0000
+
+    Make VTE work on NetBSD, OpenBSD (sparc and macppc). Reported by Adrian
+    
+    2005-08-13  Kjartan Maraas  <kmaraas gnome org>
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (init_msg_pass):
+       Make VTE work on NetBSD, OpenBSD (sparc and macppc).
+       Reported by Adrian Bunk, patches by Dan Winship and
+       Rich Edelman. Closes bug #126554.
+
+ ChangeLog                           |    7 +++++++
+ gnome-pty-helper/gnome-pty-helper.c |    5 +++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 35517238968cffeb113930724ff041cf5c215cd9
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Fri Aug 12 19:51:50 2005 +0000
+
+    Don't crash if there's no termcap file. Michele Baldessari Closes bug
+    
+    2005-08-12  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vtetc.c: (_vte_termcap_destroy): Don't crash
+       if there's no termcap file. Michele Baldessari
+       Closes bug #312260.
+
+ ChangeLog   |    6 ++++++
+ src/vtetc.c |    3 +++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 680352b0c408751ed1a1f65023abc67bc02cfd85
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Fri Aug 12 14:23:45 2005 +0000
+
+    Update
+
+ NEWS |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 5958b32ac31daa2c44a9d714dd31e09f5d9931b1
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Fri Aug 12 14:21:46 2005 +0000
+
+    Correct test for recvmsg(). Patch from Robert Basch. Closes bug #304815
+    
+    2005-08-12  Kjartan Maraas  <kmaraas gnome org>
+    
+       * configure.in: Correct test for recvmsg(). Patch from
+       Robert Basch. Closes bug #304815 and possibly bug #122055.
+
+ ChangeLog    |    5 +++++
+ configure.in |    6 +++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 1764fa0e5285ea68832390a496b1a8d08a3a9cbb
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Aug 10 13:29:12 2005 +0000
+
+    Patch from: Padraig O'Briain <padraig obriain sun com> Closes bug #113590.
+    
+    2004-08-10  Kjartan Maraas  <kmaraas gnome org>
+    
+       Patch from: Padraig O'Briain  <padraig obriain sun com>
+       Closes bug #113590.
+    
+       * src/vte.c, src/vteint.h:
+       Add new functions to support accessible text selection:
+       _vte_terminal_get_selection, _vte_terminal_get_start_selection,
+       _vte_terminal_get_end_selection, _vte_terminal_select_text,
+       _vte_terminal_remove_selection
+       * src/vteaccess.c:
+       (xy_from_offset): Fix for offset being entire text.
+       (vte_terminal_accessibility_selection_changed): VteTerminal's
+       selection-changed signal handler which emits text-selection-changed
+       signal.
+       (vte_terminal_accessible_initialize): Connect to VteTerminal's
+       selection-changed signal.
+       (vte_terminal_accessible_get_n_selections) Add implementation.
+       (vte_terminal_accessible_get_selection) Add implementation.
+       (vte_terminal_accessible_add_selection) Add implementation.
+       (vte_terminal_accessible_remove_selection) Add implementation.
+       (vte_terminal_accessible_set_selection) Add implementation.
+
+ ChangeLog       |   23 +++++++++
+ src/vte.c       |   72 +++++++++++++++++++++++++++++
+ src/vteaccess.c |  134 +++++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/vteint.h    |    5 ++
+ 4 files changed, 221 insertions(+), 13 deletions(-)
+
+commit 04cf2d759988367fd2264cd46ced44ac2a5ce73a
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Thu Aug 4 23:36:09 2005 +0000
+
+    Clean up utmp/wtmp under vncserver if things fall apart under the
+    
+    2005-08-05  Kjartan Maraas  <kmaraas gnome org>
+    
+       * gnome-pty-helper/gnome-pty-helper.c: (exit_handler), (main):
+       Clean up utmp/wtmp under vncserver if things fall apart under
+       the terminal. (Dave Lehman). Closes bug #312373
+
+ ChangeLog                           |    6 ++++++
+ gnome-pty-helper/gnome-pty-helper.c |   11 +++++++++++
+ 2 files changed, 17 insertions(+), 0 deletions(-)
+
+commit 9996a03619e7b7693de1e82a99fc7a87ec4c41a5
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Wed Aug 3 07:57:47 2005 +0000
+
+    Post release bump
+
+ vte.spec |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 95ba54bc3db83c2eab09062b782956a8be410cd2
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Wed Aug 3 07:57:17 2005 +0000
+
+    Flush these after release
+
+ po/am.po      |   21 +++++++++++----------
+ po/ang.po     |   21 +++++++++++----------
+ po/ar.po      |   21 +++++++++++----------
+ po/az.po      |   21 +++++++++++----------
+ po/be.po      |   21 +++++++++++----------
+ po/bg.po      |   41 ++++++++++++++++++++---------------------
+ po/bn.po      |   21 +++++++++++----------
+ po/bs.po      |   21 +++++++++++----------
+ po/ca.po      |   21 +++++++++++----------
+ po/cs.po      |   21 +++++++++++----------
+ po/cy.po      |   21 +++++++++++----------
+ po/da.po      |   21 +++++++++++----------
+ po/de.po      |   21 +++++++++++----------
+ po/el.po      |   21 +++++++++++----------
+ po/en_CA.po   |   21 +++++++++++----------
+ po/en_GB.po   |   21 +++++++++++----------
+ po/es.po      |   21 +++++++++++----------
+ po/et.po      |   21 +++++++++++----------
+ po/eu.po      |   21 +++++++++++----------
+ po/fa.po      |   21 +++++++++++----------
+ po/fi.po      |   21 +++++++++++----------
+ po/fr.po      |   21 +++++++++++----------
+ po/ga.po      |   21 +++++++++++----------
+ po/gl.po      |   42 +++++++++++++++++++++---------------------
+ po/gu.po      |   21 +++++++++++----------
+ po/he.po      |   21 +++++++++++----------
+ po/hi.po      |   21 +++++++++++----------
+ po/hr.po      |   21 +++++++++++----------
+ po/hu.po      |   21 +++++++++++----------
+ po/id.po      |   23 ++++++++++++-----------
+ po/is.po      |   21 +++++++++++----------
+ po/it.po      |   21 +++++++++++----------
+ po/ja.po      |   21 +++++++++++----------
+ po/ka.po      |   21 +++++++++++----------
+ po/ko.po      |   21 +++++++++++----------
+ po/li.po      |   21 +++++++++++----------
+ po/lt.po      |   21 +++++++++++----------
+ po/lv.po      |   21 +++++++++++----------
+ po/mi.po      |   21 +++++++++++----------
+ po/mk.po      |   21 +++++++++++----------
+ po/ml.po      |   21 +++++++++++----------
+ po/mn.po      |   21 +++++++++++----------
+ po/ms.po      |   21 +++++++++++----------
+ po/nb.po      |   21 +++++++++++----------
+ po/ne.po      |   21 +++++++++++----------
+ po/nl.po      |   21 +++++++++++----------
+ po/nn.po      |   21 +++++++++++----------
+ po/no.po      |   21 +++++++++++----------
+ po/or.po      |   21 +++++++++++----------
+ po/pa.po      |   21 +++++++++++----------
+ po/pl.po      |   21 +++++++++++----------
+ po/pt.po      |   21 +++++++++++----------
+ po/pt_BR.po   |   21 +++++++++++----------
+ po/ro.po      |   21 +++++++++++----------
+ po/ru.po      |   21 +++++++++++----------
+ po/rw.po      |   21 +++++++++++----------
+ po/sk.po      |   21 +++++++++++----------
+ po/sl.po      |   21 +++++++++++----------
+ po/sq.po      |   21 +++++++++++----------
+ po/sr.po      |   21 +++++++++++----------
+ po/sr Latn po |   21 +++++++++++----------
+ po/sv.po      |   21 +++++++++++----------
+ po/ta.po      |   21 +++++++++++----------
+ po/th.po      |   45 ++++++++++++++++++++++-----------------------
+ po/tr.po      |   21 +++++++++++----------
+ po/ug.po      |   52 +++++++++++++++++++++++++++-------------------------
+ po/uk.po      |   21 +++++++++++----------
+ po/vi.po      |   21 +++++++++++----------
+ po/wa.po      |   21 +++++++++++----------
+ po/xh.po      |   42 +++++++++++++++++++++---------------------
+ po/zh_CN.po   |   21 +++++++++++----------
+ po/zh_TW.po   |   42 +++++++++++++++++++++---------------------
+ 72 files changed, 859 insertions(+), 793 deletions(-)
+
+commit 3550cad3d43b505e695cf4a9b05692b4dd12488b
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Wed Aug 3 07:52:01 2005 +0000
+
+    Update
+
+ NEWS |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 6b284ae20498040a78359c3acf477190ef3800f4
+Author: Alexander Shopov <ash contact bg>
+Date:   Thu Jul 28 07:45:55 2005 +0000
+
+    Updated Bulgarian translation by Yavor Doganov <yavor doganov org>
+    
+    2005-07-28  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Yavor Doganov <yavor doganov org>
+
+ po/ChangeLog |    9 ++++-
+ po/bg.po     |  109 +++++++++++++++++++++------------------------------------
+ 2 files changed, 47 insertions(+), 71 deletions(-)
+
+commit b6b599cf9451cac41a26ef11e97b997f073e6c8f
+Author: Olav Vitters <ovitters src gnome org>
+Date:   Tue Jul 26 15:16:25 2005 +0000
+
+    Correct patch provider; change Loïc Minier to Ethan Glasser-Camp.
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5e92d3203b712ab672ced617a2d8edf492184904
+Author: Michele Baldessari <michele pupazzo org>
+Date:   Tue Jul 26 14:43:04 2005 +0000
+
+    pyg_boxed_get should be on item not py_palette. Reported with fix by Loïc
+    
+    2005-07-26  Michele Baldessari  <michele pupazzo org>
+    
+       * python/vte.override (_wrap_vte_terminal_set_colors):
+       pyg_boxed_get should be on item not py_palette.
+       Reported with fix by Loïc Minier <lool+gnome via ecp fr>
+       Closes bug #311570
+
+ ChangeLog           |    7 +++++++
+ python/vte.override |    2 +-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 3be10ecbae7a54bb97788ce3e53bd14aa25b374b
+Author: Michele Baldessari <michele pupazzo org>
+Date:   Mon Jul 25 08:49:42 2005 +0000
+
+    Initialize PangoContext * data->ctx with NULL. Closes bug #126262
+    
+    2005-07-25  Michele Baldessari  <michele pupazzo org>
+    
+       * src/vtepango.c (_vte_pango_create): Initialize
+       PangoContext * data->ctx with NULL. Closes bug #126262
+
+ ChangeLog      |    5 +++++
+ NEWS           |    3 +++
+ src/vtepango.c |    1 +
+ 3 files changed, 9 insertions(+), 0 deletions(-)
+
+commit e33085bbd21e2da027c68def3a47710bc39d37fd
+Author: Danilo Šegan <danilo src gnome org>
+Date:   Thu Jul 21 21:31:18 2005 +0000
+
+    Fix bug #149925: add comment for translators.
+    
+    
+    Fix bug #149925: add comment for translators.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    1 +
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 096becaac3f36491c36563a5f7167a567954f9cc
+Author: Matthias Clasen <mclasen redhat com>
+Date:   Thu Jul 7 19:00:21 2005 +0000
+
+    Unset the user data on the gdk window.
+    
+    2005-07-07  Matthias Clasen  <mclasen redhat com>
+    
+       * src/vte.c (vte_terminal_unrealize): Unset the user data
+       on the gdk window.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    2 ++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit e01f40abe5f8e499640d29a8e781d484522f80be
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Thu Jun 23 01:22:17 2005 +0000
+
+    fix language team reference
+
+ po/ChangeLog |    4 ++++
+ po/zh_TW.po  |   47 ++++++++++++++++++++++++-----------------------
+ 2 files changed, 28 insertions(+), 23 deletions(-)
+
+commit 8446f71979f37b18d4db920f74bf0334cea94792
+Author: Theppitak Karoonboonyanan <thep linux thai net>
+Date:   Wed Jun 15 04:02:00 2005 +0000
+
+    Added 'th' (Thai) to ALL_LINGUAS. Added Thai translation.
+    
+    2005-06-15  Theppitak Karoonboonyanan  <thep linux thai net>
+    
+       * configure.in: Added 'th' (Thai) to ALL_LINGUAS.
+       * po/th.po: Added Thai translation.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/th.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 126 insertions(+), 1 deletions(-)
+
+commit 1168ca49dd0d7c1e2f8d1c77434f9c798d6f9286
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sat Jun 11 21:05:07 2005 +0000
+
+    Update some.
+    
+    2005-06-11  Kjartan Maraas  <kmaraas gnome org>
+    
+       * NEWS: Update some.
+       * doc/reference/tmpl/reaper.sgml:
+       * doc/reference/tmpl/vte-unused.sgml:
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/tmpl/vteaccess.sgml: Docs updates.
+       * src/vte.c: (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_get_accessible), (vte_terminal_class_init):
+       Apply patch from Padraig O'Briain <padraig obriain sun com>
+       to fix a crash. Closes bug #119913.
+
+ ChangeLog                          |   12 +++++++
+ NEWS                               |    3 ++
+ doc/reference/tmpl/reaper.sgml     |    3 ++
+ doc/reference/tmpl/vte-unused.sgml |    8 ++--
+ doc/reference/tmpl/vte.sgml        |    3 ++
+ doc/reference/tmpl/vteaccess.sgml  |    3 ++
+ src/vte.c                          |   60 ++++++++++++++++++-----------------
+ 7 files changed, 59 insertions(+), 33 deletions(-)
+
+commit 141d956b5a678fbb0a43938e8909c7c66646a840
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Thu Jun 9 21:36:31 2005 +0000
+
+    Fix a crash when reparenting. Closes bug #169326. Patch from Michele
+    
+    2005-06-09  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_style_changed):
+       Fix a crash when reparenting. Closes bug #169326.
+       Patch from Michele Baldessari.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   10 ++++++++++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+commit 29a57471b73aa43e163144ebc3592094bc27bc31
+Author: Ignacio Casal Quinteiro <icq src gnome org>
+Date:   Sun Jun 5 18:28:50 2005 +0000
+
+    *** empty log message ***
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/gl.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 1 deletions(-)
+
+commit 2985a128bd3708439faa1e240460db31661d7839
+Author: Kostas Papadimas <pkst src gnome org>
+Date:   Wed May 11 11:38:28 2005 +0000
+
+    Updated Greek Translation.
+
+ po/ChangeLog |    4 ++++
+ po/el.po     |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 46a597ff979045ecb6e7e9a2a39c8d6f5fff6513
+Author: Manish Singh <yosh src gnome org>
+Date:   Sun May 8 23:55:58 2005 +0000
+
+    Fix spelling of my name
+
+ NEWS |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a1e846b27f37255bbdce5efd2e73166e4073032a
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Fri Apr 29 20:17:41 2005 +0000
+
+    Final bits of the memory reduction patch from Aivars Kalvans. bug #160993
+    
+    2005-04-29  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/table.c: (_vte_table_literal_new), (_vte_table_free),
+       (_vte_table_addi), (_vte_table_matchi), (_vte_table_match),
+       (_vte_table_printi): Final bits of the memory reduction patch
+       from Aivars Kalvans. bug #160993 comment #9
+       * src/vte.c: (vte_terminal_scroll_region): Patch from Egmont
+       Koblinger to fix some scrolling issues. bug #164153
+       * vte.spec: Bump version.
+
+ ChangeLog   |   10 ++++++
+ src/table.c |  102 +++++++++++++++++++++++++++++++++++++++++------------------
+ src/vte.c   |   45 +++++---------------------
+ vte.spec    |    2 +-
+ 4 files changed, 91 insertions(+), 68 deletions(-)
+
+commit bda4553263bbdfa77da4a65d9cb77fa8801d8000
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Fri Apr 29 20:07:32 2005 +0000
+
+    Forgot this
+
+ NEWS |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+commit d254d664d3408ad688f3a8c62224bd188bdd5fdb
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Tue Apr 19 14:49:26 2005 +0000
+
+    updated Walloon file
+
+ po/ChangeLog |   24 ++++++++++++++----------
+ po/wa.po     |   43 ++++++++++++++++++++++---------------------
+ 2 files changed, 36 insertions(+), 31 deletions(-)
+
+commit a6ae830ccca18e36717b2bc9e5c969befdd16bf4
+Author: Abduxukur Abdurixit <aabdurix src gnome org>
+Date:   Fri Apr 8 08:22:48 2005 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    4 ++++
+ po/ug.po     |   32 ++++++++++++++++----------------
+ 2 files changed, 20 insertions(+), 16 deletions(-)
+
+commit 9b67c3bdfeeffbba5470751091e305da60ea97ee
+Author: Abduxukur Abdurixit <aabdurix src gnome org>
+Date:   Thu Apr 7 13:17:35 2005 +0000
+
+    *** empty log message ***
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ug.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 1 deletions(-)
+
+commit 1e3d355fbb1940791f873fdb30202f2ac2d8674b
+Author: Adi Attar <aattar cvs gnome org>
+Date:   Fri Apr 1 09:51:47 2005 +0000
+
+    Added Xhosa translation. Added "xh" to ALL_LINGUAS.
+    
+    2005-04-01  Adi Attar  <aattar cvs gnome org>
+    
+       * xh.po: Added Xhosa translation.
+       * configure.in: Added "xh" to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/xh.po     |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 124 insertions(+), 1 deletions(-)
+
+commit 44fa68f109629ebde4a6711edc174bf4f1a98999
+Author: Steven Michael Murphy <smurphy src gnome org>
+Date:   Fri Apr 1 02:00:44 2005 +0000
+
+    Added new Language, Kinyarwanda (rw), to this package
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/rw.po     |  124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 133 insertions(+), 1 deletions(-)
+
+commit 139d9029a5182ff25a3989d27af5705fe18ab8fd
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Mar 29 17:38:13 2005 +0000
+
+    Use head -n 1 instead of head -1 to avoid warning about the latter being
+    
+    2005-03-29  Kjartan Maraas  <kmaraas gnome org>
+    
+       * autogen.sh: Use head -n 1 instead of head -1 to avoid
+       warning about the latter being deprecated in newer versions.
+       Reported by Ali Akcaagac. Closes bug #156022.
+       * vte.spec: Bump version
+
+ ChangeLog  |    7 +++++++
+ autogen.sh |    2 +-
+ vte.spec   |    2 +-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 2d04086b48b7a9f7d53c543803cb23fc622a9f57
+Author: Manish Singh <yosh gimp org>
+Date:   Thu Mar 17 06:43:44 2005 +0000
+
+    Remove stray underscores so python module works again. Fixes bug #150760.
+    
+    2005-03-16  Manish Singh  <yosh gimp org>
+    
+            * python/vtemodule.c: Remove stray underscores so python module
+            works again. Fixes bug #150760.
+
+ ChangeLog          |    5 +++++
+ python/vtemodule.c |    4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 2d54e9baa0c26c15b6333d8898a1174dd91faf12
+Author: Adam Weinberger <adamw src gnome org>
+Date:   Thu Mar 17 05:28:12 2005 +0000
+
+    Updated Canadian English translation.
+    
+    
+       * en_CA.po: Updated Canadian English translation.
+
+ po/ChangeLog |    4 ++++
+ po/en_CA.po  |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit afe74e992b6be8f08d33cedeb93494d0fe852354
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Mar 14 14:43:47 2005 +0000
+
+    Add patch for excessive memory consumption when opening new tabs. This
+    
+    2005-03-14  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/Makefile.am:
+       * src/interpret.c: (main):
+       * src/matcher.c: (_vte_matcher_add), (_vte_matcher_init),
+       (_vte_matcher_create), (_vte_matcher_destroy), (_vte_matcher_new),
+       (_vte_matcher_free):
+       * src/matcher.h:
+       * src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):
+       * src/vtetc.c: (_vte_termcap_create), (_vte_termcap_destroy),
+       (_vte_termcap_new), (_vte_termcap_free):
+       * src/vtetc.h: Add patch for excessive memory consumption when
+       opening new tabs. This patch makes struct _vte_matcher and
+       struct _vte_termcap shared between terminals and should reduce
+       memory consumption with multiple tabs a lot. Patch from Aivars
+       Kalvans <kalvans at inbox lv>. From bug #160993.
+
+ ChangeLog       |   17 +++++
+ src/Makefile.am |   22 +++++-
+ src/interpret.c |   25 +-------
+ src/matcher.c   |  187 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ src/matcher.h   |   11 +--
+ src/vte.c       |   72 +---------------------
+ src/vtetc.c     |   69 +++++++++++++++++----
+ src/vtetc.h     |    2 +-
+ 8 files changed, 262 insertions(+), 143 deletions(-)
+
+commit 1613c7756b040bf1ce49f04d71ecc7c1eb8967b3
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Mar 14 14:33:35 2005 +0000
+
+    Back out one of the fedora patches since it apparently causes
+    
+    2005-03-14  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_scroll_region),
+       (vte_sequence_handler_al), (vte_sequence_handler_dl),
+       (vte_sequence_handler_sr), (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines), (vte_terminal_handle_scroll):
+       Back out one of the fedora patches since it apparently causes
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   34 +++++++++++++---------------------
+ 2 files changed, 23 insertions(+), 21 deletions(-)
+
+commit afa929ff6f72bbc0a27ea7daa262a61637ac4bc4
+Author: Ahmad Riza H Nst <ari 160c afraid org>
+Date:   Tue Mar 8 12:15:45 2005 +0000
+
+    Updated Indonesian Translation
+    
+    2005-03-08  Ahmad Riza H Nst  <ari 160c afraid org>
+    
+            * id.po: Updated Indonesian Translation
+
+ po/ChangeLog |    4 ++++
+ po/id.po     |   34 +++++++++++++++++-----------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+commit 804be42932991f70998348e07bdbc47d93796287
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Thu Mar 3 06:40:44 2005 +0000
+
+    Fix the crash in minicom when resizing the window. Closes bug #163814.
+    
+    2005-03-02  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_process_incoming): Fix the
+       crash in minicom when resizing the window. Closes
+       bug #163814. Also adjust the coalesce and display timeouts.
+       This makes g-t and xterm behave just about the same visually
+       but g-t is still a bit faster when using the same font and
+       utf8.
+
+ doc/reference/tmpl/reaper.sgml     |    3 --
+ doc/reference/tmpl/vte-unused.sgml |    4 ++
+ doc/reference/tmpl/vte.sgml        |    3 --
+ doc/reference/tmpl/vteaccess.sgml  |    3 --
+ po/am.po                           |   12 ++++----
+ po/ang.po                          |   12 ++++----
+ po/ar.po                           |   12 ++++----
+ po/az.po                           |   12 ++++----
+ po/be.po                           |   12 ++++----
+ po/bg.po                           |   12 ++++----
+ po/bn.po                           |   12 ++++----
+ po/bs.po                           |   12 ++++----
+ po/ca.po                           |   12 ++++----
+ po/cs.po                           |   12 ++++----
+ po/cy.po                           |   12 ++++----
+ po/da.po                           |   12 ++++----
+ po/de.po                           |   12 ++++----
+ po/el.po                           |   12 ++++----
+ po/en_CA.po                        |   12 ++++----
+ po/en_GB.po                        |   12 ++++----
+ po/es.po                           |   12 ++++----
+ po/et.po                           |   12 ++++----
+ po/eu.po                           |   12 ++++----
+ po/fa.po                           |   12 ++++----
+ po/fi.po                           |   12 ++++----
+ po/fr.po                           |   12 ++++----
+ po/ga.po                           |   12 ++++----
+ po/gu.po                           |   12 ++++----
+ po/he.po                           |   12 ++++----
+ po/hi.po                           |   12 ++++----
+ po/hr.po                           |   12 ++++----
+ po/hu.po                           |   12 ++++----
+ po/id.po                           |   12 ++++----
+ po/is.po                           |   12 ++++----
+ po/it.po                           |   12 ++++----
+ po/ja.po                           |   12 ++++----
+ po/ka.po                           |   12 ++++----
+ po/ko.po                           |   12 ++++----
+ po/li.po                           |   12 ++++----
+ po/lt.po                           |   12 ++++----
+ po/lv.po                           |   12 ++++----
+ po/mi.po                           |   12 ++++----
+ po/mk.po                           |   12 ++++----
+ po/ml.po                           |   12 ++++----
+ po/mn.po                           |   12 ++++----
+ po/ms.po                           |   12 ++++----
+ po/nb.po                           |   12 ++++----
+ po/ne.po                           |   12 ++++----
+ po/nl.po                           |   12 ++++----
+ po/nn.po                           |   12 ++++----
+ po/no.po                           |   12 ++++----
+ po/or.po                           |   12 ++++----
+ po/pa.po                           |   12 ++++----
+ po/pl.po                           |   12 ++++----
+ po/pt.po                           |   12 ++++----
+ po/pt_BR.po                        |   12 ++++----
+ po/ro.po                           |   12 ++++----
+ po/ru.po                           |   12 ++++----
+ po/sk.po                           |   12 ++++----
+ po/sl.po                           |   12 ++++----
+ po/sq.po                           |   12 ++++----
+ po/sr.po                           |   12 ++++----
+ po/sr Latn po                      |   12 ++++----
+ po/sv.po                           |   12 ++++----
+ po/ta.po                           |   12 ++++----
+ po/tr.po                           |   12 ++++----
+ po/uk.po                           |   12 ++++----
+ po/vi.po                           |   12 ++++----
+ po/wa.po                           |   12 ++++----
+ po/zh_CN.po                        |   12 ++++----
+ po/zh_TW.po                        |   12 ++++----
+ src/vte.c                          |   59 ++++++++++++++----------------------
+ 72 files changed, 429 insertions(+), 447 deletions(-)
+
+commit 6b25dce295e409828f34821f53fa4f3052e5da00
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Wed Mar 2 23:12:27 2005 +0000
+
+    Update
+
+ NEWS |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 6e02617db3907c47cf5128a011b2ae31fe10b9cb
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Wed Mar 2 22:52:18 2005 +0000
+
+    Revert previous pending release team approval
+
+ src/vte.c |   15 +++++++++++++--
+ 1 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 69dd207f235306920a0fa98ba712d9b9775d55e2
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Mar 2 22:48:57 2005 +0000
+
+    Fix the crash in minicom when resizing the window. Closes bug #163814.
+    
+    2005-03-02  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_process_incoming): Fix the
+       crash in minicom when resizing the window. Closes
+       bug #163814. Also adjust the coalesce and display timeouts.
+       This makes g-t and xterm behave just about the same visually
+       but g-t is still a bit faster when using the same font and
+       utf8.
+
+ ChangeLog     |    9 +++++++++
+ NEWS          |   18 ++++++++++++++++++
+ po/am.po      |   30 +++++++++++++++---------------
+ po/ang.po     |   28 ++++++++++++++--------------
+ po/ar.po      |   30 +++++++++++++++---------------
+ po/az.po      |   30 +++++++++++++++---------------
+ po/be.po      |   30 +++++++++++++++---------------
+ po/bg.po      |   40 ++++++++++++++++++++--------------------
+ po/bn.po      |   30 +++++++++++++++---------------
+ po/bs.po      |   29 ++++++++++++++---------------
+ po/ca.po      |   30 +++++++++++++++---------------
+ po/cs.po      |   30 +++++++++++++++---------------
+ po/cy.po      |   30 +++++++++++++++---------------
+ po/da.po      |   30 +++++++++++++++---------------
+ po/de.po      |   30 +++++++++++++++---------------
+ po/el.po      |   30 +++++++++++++++---------------
+ po/en_CA.po   |   28 ++++++++++++++--------------
+ po/en_GB.po   |   30 +++++++++++++++---------------
+ po/es.po      |   34 +++++++++++++++++-----------------
+ po/et.po      |   29 ++++++++++++++---------------
+ po/eu.po      |   29 ++++++++++++++---------------
+ po/fa.po      |   30 +++++++++++++++---------------
+ po/fi.po      |   30 +++++++++++++++---------------
+ po/fr.po      |   30 +++++++++++++++---------------
+ po/ga.po      |   30 +++++++++++++++---------------
+ po/gu.po      |   30 +++++++++++++++---------------
+ po/he.po      |   30 +++++++++++++++---------------
+ po/hi.po      |   29 ++++++++++++++---------------
+ po/hr.po      |   30 +++++++++++++++---------------
+ po/hu.po      |   28 ++++++++++++++--------------
+ po/id.po      |   30 +++++++++++++++---------------
+ po/is.po      |   30 +++++++++++++++---------------
+ po/it.po      |   30 +++++++++++++++---------------
+ po/ja.po      |   30 +++++++++++++++---------------
+ po/ka.po      |   46 ++++++++++++++++++++++++----------------------
+ po/ko.po      |   30 +++++++++++++++---------------
+ po/li.po      |   30 +++++++++++++++---------------
+ po/lt.po      |   30 +++++++++++++++---------------
+ po/lv.po      |   30 +++++++++++++++---------------
+ po/mi.po      |   53 ++++++++++++++++++++++-------------------------------
+ po/mk.po      |   30 +++++++++++++++---------------
+ po/ml.po      |   30 +++++++++++++++---------------
+ po/mn.po      |   30 +++++++++++++++---------------
+ po/ms.po      |   30 +++++++++++++++---------------
+ po/nb.po      |   30 +++++++++++++++---------------
+ po/ne.po      |   30 +++++++++++++++---------------
+ po/nl.po      |   30 +++++++++++++++---------------
+ po/nn.po      |   30 +++++++++++++++---------------
+ po/no.po      |   30 +++++++++++++++---------------
+ po/or.po      |   28 ++++++++++++++--------------
+ po/pa.po      |   31 +++++++++++++++----------------
+ po/pl.po      |   30 +++++++++++++++---------------
+ po/pt.po      |   30 +++++++++++++++---------------
+ po/pt_BR.po   |   30 +++++++++++++++---------------
+ po/ro.po      |   30 +++++++++++++++---------------
+ po/ru.po      |   30 +++++++++++++++---------------
+ po/sk.po      |   30 +++++++++++++++---------------
+ po/sl.po      |   30 +++++++++++++++---------------
+ po/sq.po      |   28 ++++++++++++++--------------
+ po/sr.po      |   30 +++++++++++++++---------------
+ po/sr Latn po |   30 +++++++++++++++---------------
+ po/sv.po      |   30 +++++++++++++++---------------
+ po/ta.po      |   35 +++++++++++++++++++----------------
+ po/tr.po      |   30 +++++++++++++++---------------
+ po/uk.po      |   30 +++++++++++++++---------------
+ po/vi.po      |   30 +++++++++++++++---------------
+ po/wa.po      |   30 +++++++++++++++---------------
+ po/zh_CN.po   |   30 +++++++++++++++---------------
+ po/zh_TW.po   |   30 +++++++++++++++---------------
+ src/vte.c     |   15 ++-------------
+ 70 files changed, 1052 insertions(+), 1045 deletions(-)
+
+commit 936365d5565c1174a7c8d4a24235db44a70f4407
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Mar 2 08:48:59 2005 +0000
+
+    Add vtetree.[ch] Don't use a GArray but use calloc'ed memory to speed up
+    
+    2005-03-02  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/Makefile.am: Add vtetree.[ch]
+       * src/vte.c: (vte_terminal_draw_row): Don't use a GArray
+       but use calloc'ed memory to speed up things further.
+       From bug #137864. Patch from Benjamin Otte.
+       * src/vtetree.c: (_vte_tree_new), (_vte_tree_destroy),
+       (_vte_tree_insert), (_vte_tree_lookup): New file
+       * src/vtetree.h: New file
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_char_width): Use the new
+       functions to speed up things. From bug #137864. Patch from
+       Benjamin Otte. There are still two patches in there that don't
+       apply cleanly any more. Will look at those later.
+       * vte.spec: Bump version.
+
+ ChangeLog       |   16 ++++++++++++++
+ src/Makefile.am |    2 +
+ src/vte.c       |   23 ++++++++------------
+ src/vtetree.c   |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vtetree.h   |   51 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/vtexft.c    |   23 +++++++++++----------
+ vte.spec        |    2 +-
+ 7 files changed, 151 insertions(+), 26 deletions(-)
+
+commit cea8ff59881258d16942aa6402c0ab10e110e4c8
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 21:38:59 2005 +0000
+
+    Patch from Mariano to make vte claim to be the right type terminal. Closes
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_sequence_handler_send_primary_device_attributes):
+       Patch from Mariano to make vte claim to be the right type terminal.
+       Closes bug #130671.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 106a3de0551d19d467f99fdfeaf8b6fc3d4fbb43
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 21:32:01 2005 +0000
+
+    Apply fix from Fedora package for performance problems. Closes bug
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_find_nextctl):
+       * src/uniwidths:
+       * src/vte.c: (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (vte_terminal_feed),
+       (vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
+       (add_display_timeout), (add_coalesce_timeout),
+       (remove_display_timeout), (remove_coalesce_timeout),
+       (vte_terminal_stop_processing), (vte_terminal_start_processing),
+       (vte_terminal_is_processing), (display_timeout),
+       (coalesce_timeout):
+       * src/vtexft.c: (_vte_xft_drawcharfontspec), (_vte_xft_draw_text):
+       Apply fix from Fedora package for performance problems. Closes
+       bug #143914. Patch was written by Søren Sandmann.
+
+ ChangeLog     |   17 +++++
+ src/iso2022.c |   64 +++++++++--------
+ src/uniwidths |    7 ++
+ src/vte.c     |  208 ++++++++++++++++++++++++++++++++++++---------------------
+ src/vtexft.c  |    5 +-
+ 5 files changed, 193 insertions(+), 108 deletions(-)
+
+commit b2a0ee1a33ec460994058fd43bd45a43d1641d83
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 21:12:19 2005 +0000
+
+    Fix for problem with redrawing when scrolling back then forward Closes bug
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_scroll_region): Fix for
+       problem with redrawing when scrolling back then forward
+       Closes bug #122150. Patch from Benjamin Otte.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 2736ad1804d9f363e0b4752a267a8087f7b096ad
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 20:46:10 2005 +0000
+
+    Fix a crash when trying to use input methods. From Fedora. Closes bug
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_unrealize): Fix a crash
+       when trying to use input methods. From Fedora.
+       Closes bug #168213.
+
+ ChangeLog |    8 +++++++-
+ src/vte.c |    3 +++
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit e6192592b53997f3105f6ad0e1a654bad0cb5ec1
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 20:43:59 2005 +0000
+
+    Another patch from fedora. Make sure the screen is fully redrawn before
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_scroll_region),
+       (vte_sequence_handler_al), (vte_sequence_handler_dl),
+       (vte_sequence_handler_sr), (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines), (vte_terminal_handle_scroll):
+       Another patch from fedora. Make sure the screen is fully redrawn
+       before scrolling. Apparently this patch has some issues, but those
+       were found to be small enough to apply in Fedora, so I guess
+       the same holds true here.
+
+ ChangeLog |   11 +++++++++++
+ src/vte.c |   34 +++++++++++++++++++++-------------
+ 2 files changed, 32 insertions(+), 13 deletions(-)
+
+commit 74cf9b23a55b774b3f523ecff19bff620de0e0fb
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 20:12:05 2005 +0000
+
+    Apply another patch from Fedora. This should fix some screen corruption
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/iso2022.c: (_vte_iso2022_process): Apply another
+       patch from Fedora. This should fix some screen corruption
+       with multibyte charsets. Closes bug #168211 and possibly
+       others.
+
+ ChangeLog     |    7 +++++++
+ src/iso2022.c |   44 ++++++++++++++++++++++----------------------
+ 2 files changed, 29 insertions(+), 22 deletions(-)
+
+commit 0fea362d1c10cce35571595fe4df87c5d491406f
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Mon Feb 28 20:09:08 2005 +0000
+
+    Apply patch from Fedora to fix some scrolling issues. Closes bug #168210
+    
+    2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_adjust_adjustments),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (vte_terminal_update_insert_delta), (vte_terminal_handle_scroll),
+       (vte_terminal_set_scroll_adjustment), (vte_terminal_size_allocate):
+       Apply patch from Fedora to fix some scrolling issues. Closes
+       bug #168210 and possibly others.
+
+ ChangeLog |    9 +++++
+ src/vte.c |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 111 insertions(+), 9 deletions(-)
+
+commit 164300788a340ba8040c8c3afbda5adab3c2553f
+Author: Amanpreet Singh Alam <aman src gnome org>
+Date:   Wed Feb 23 05:16:59 2005 +0000
+
+    update by amanpreetalam yahoo com
+
+ po/pa.po |   45 +++++++++++++++++++++++----------------------
+ 1 files changed, 23 insertions(+), 22 deletions(-)
+
+commit f65f2fd679b6ef1bef19a60a8c60da34c08de7cd
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Feb 15 11:48:43 2005 +0000
+
+    Fix black backgrounds in new terminals. Fix from Jon Nettleton <nettleton
+    
+    2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vte.c: (vte_terminal_visibility_notify): Fix black
+       backgrounds in new terminals. Fix from Jon Nettleton
+       <nettleton at gmail com>. Closes bug #125364. Has been
+       in Fedora Core for months already.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |    6 +++++-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 885b8c7eca0ac35a8aeb31ad74f27d3deb99ee1e
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Feb 15 11:29:24 2005 +0000
+
+    Fix keypad behaviour to be like xterm. Closes bug #128099. Fix is from
+    
+    2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/keymap.c: (_vte_keymap_map): Fix keypad behaviour
+       to be like xterm. Closes bug #128099. Fix is from
+       <jylefort at brutele be> and has been used in Fedora the last
+       three months at least.
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |   14 ++++++++++++--
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit 1bd149cf1e4fef742e6206b5db793585a639ee8f
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Feb 15 10:56:16 2005 +0000
+
+    Don't include <config.h> here. It breaks building on AIX and can cause
+    
+    2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/vteregex.h: Don't include <config.h> here. It breaks
+       building on AIX and can cause problems for l10n. Closes
+       bug #161352.
+
+ ChangeLog      |    6 ++++++
+ src/vteregex.h |    1 -
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 78463f2909c3deafd8ff9c66eeab0c539c2547d0
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Feb 15 08:49:23 2005 +0000
+
+    Fix build on NetBSD and Darwin. Patch from Adrian Bunk <bunk at stusta
+    
+    2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+    
+       * src/dumpkeys.c: Fix build on NetBSD and Darwin.
+       Patch from Adrian Bunk <bunk at stusta de>. Closes
+       bug #126377.
+
+ ChangeLog                         |    6 ++++++
+ doc/reference/tmpl/reaper.sgml    |    5 +++++
+ doc/reference/tmpl/vte.sgml       |    3 +++
+ doc/reference/tmpl/vteaccess.sgml |    3 +++
+ src/dumpkeys.c                    |    4 +++-
+ 5 files changed, 20 insertions(+), 1 deletions(-)
+
+commit 079ff4919bdae0215929e2c7ac82e502836a3235
+Author: Priit Laes <plaes cvs gnome org>
+Date:   Wed Feb 2 16:32:57 2005 +0000
+
+    Translation updated by Ivar Smolin.
+    
+    2005-02-02  Priit Laes  <plaes cvs gnome org>
+    
+       * et.po: Translation updated by Ivar Smolin.
+
+ po/ChangeLog |    4 ++++
+ po/et.po     |   29 +++++++++++++++--------------
+ 2 files changed, 19 insertions(+), 14 deletions(-)
+
+commit 9ec41d61f8167414fc72a3641097d081b3ace455
+Author: Priit Laes <plaes cvs gnome org>
+Date:   Thu Jan 20 14:40:23 2005 +0000
+
+    Translation updated by Allan Sims.
+    
+    2005-01-20  Priit Laes  <plaes cvs gnome org>
+    
+       * et.po: Translation updated by Allan Sims.
+
+ po/ChangeLog |    4 ++++
+ po/et.po     |   24 ++++++++++++------------
+ 2 files changed, 16 insertions(+), 12 deletions(-)
+
+commit 123cc653845a9e984b8da26b34fc329f4ed0e252
+Author: Rajesh Ranjan <rranjan src gnome org>
+Date:   Tue Dec 14 07:00:38 2004 +0000
+
+    vte revision
+
+ po/hi.po |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+commit 6321a4f2a86ea20bb47dec53e4bb833afac573e9
+Author: Rajesh Ranjan <rranjan src gnome org>
+Date:   Wed Dec 8 04:33:26 2004 +0000
+
+    rev
+
+ po/hi.po |   11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+commit 686f9e662bb78846f07115e80712c671966ec3c2
+Author: Rajesh Ranjan <rranjan src gnome org>
+Date:   Tue Dec 7 07:06:14 2004 +0000
+
+    hi
+
+ ChangeLog    |    2 ++
+ configure.in |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit e3c1a43676987c11342e8f26d596cbb1967f0bfe
+Author: Rajesh Ranjan <rranjan src gnome org>
+Date:   Tue Dec 7 06:58:36 2004 +0000
+
+    add hindi file
+
+ po/hi.po |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 114 insertions(+), 0 deletions(-)
+
+commit 223f81868d98f7a024c9ad1acf16cd8186265b53
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Nov 17 00:32:01 2004 +0000
+
+    silence a couple of warnings by expecting a GIOCondition instead of a
+    
+    * src/vte.c(vte_terminal_io_read,vte_terminal_io_write): silence a couple of
+       warnings by expecting a GIOCondition instead of a GtkInputCondition
+       as a parameter.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 7f3d3b207272c86af768420da60981bccc018f6c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Nov 17 00:25:53 2004 +0000
+
+    accept more, newer versions of autoconf/automake. Treat autoconf >= 3 as
+    
+    * autogen.sh: accept more, newer versions of autoconf/automake.  Treat autoconf
+       >= 3 as acceptable instead of just > 3.
+
+ ChangeLog  |    4 ++++
+ autogen.sh |   12 +++++-------
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+commit 2949c51354ba4d1b59051d9a7eaa44133d06db03
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Nov 17 00:23:44 2004 +0000
+
+    add. add. add. add. add. expand "%m" locally so that we can distinguish
+    
+    * src/vte.c(vte_terminal_sequence_handler_scroll_up_or_down): add.
+    * src/vte.c(vte_terminal_sequence_handler_scroll_up_once): add.
+    * src/vte.c(vte_terminal_sequence_handler_scroll_down_once): add.
+    * src/vte.c(vte_terminal_sequence_handler_scroll_up): add.
+    * src/vte.c(vte_terminal_sequence_handler_scroll_down): add.
+    * src/table.c(_vte_table_addi): expand "%m" locally so that we can distinguish
+       between control sequences which differ only in the number of numeric
+       arguments they expect.  This means we have a new upper limit on the
+       length of a numeric argument list we'll recognize.
+    * src/caps.c(_vte_xterm_capability_strings): remove alternates for strings
+       which include '%m' as a specifier -- that's handled at the matching
+       layer now.
+    * src/vte.c(vte_terminal_paste_cb): drop the supplied data if it isn't valid
+       UTF-8 (Red Hat #119099).
+    * src/keymap.c(_vte_keymap_map): try xterm variants if we're xterm, not the
+       other way around.
+
+ ChangeLog    |   18 +++++++
+ src/caps.c   |   10 ----
+ src/keymap.c |    2 +-
+ src/table.c  |  160 ++++++++++++++++++++++++++++++++++++---------------------
+ src/vte.c    |  107 +++++++++++++++++++++++++++++++++++++-
+ 5 files changed, 224 insertions(+), 73 deletions(-)
+
+commit 2f99b80d9cc23851980ff209291c48898b526ff6
+Author: Mətin Əmirov <metin karegen com>
+Date:   Mon Oct 11 17:30:17 2004 +0000
+
+    Added ka to ALL_LINGUAS.
+    
+    2004-10-11  Mətin Əmirov  <metin karegen com>
+    
+       * configure.in: Added ka to ALL_LINGUAS.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c4f0942e2705e20567971f518fb42c0af7fd8646
+Author: Mətin Əmirov <metin karegen com>
+Date:   Mon Oct 11 17:30:13 2004 +0000
+
+    Translation added by Aiet Kolkhi.
+    
+    2004-10-11  Mətin Əmirov  <metin karegen com>
+    
+       * ka.po: Translation added by Aiet Kolkhi.
+
+ po/ChangeLog |    4 ++
+ po/ka.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 121 insertions(+), 0 deletions(-)
+
+commit 7e0c6e370a8e02fdd61e1918456042cb95960b13
+Author: David Lodge <dave cirt net>
+Date:   Wed Oct 6 18:59:46 2004 +0000
+
+    Added Old English translation. Added ang to ALL_LINGUAS
+    
+    2004-10-06  David Lodge <dave cirt net>
+    
+            * ang.po: Added Old English translation.
+       * configure.in: Added ang to ALL_LINGUAS
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ang.po    |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 122 insertions(+), 1 deletions(-)
+
+commit d93f9f7a56897caccb90c7c669fb4b9c8afcf782
+Author: Adam Weinberger <adamw src gnome org>
+Date:   Wed Sep 8 07:28:46 2004 +0000
+
+    Updated Canadian English translation.
+    
+    
+       * en_CA.po: Updated Canadian English translation.
+
+ po/ChangeLog |    4 ++++
+ po/en_CA.po  |   37 +++++++++++++++++++------------------
+ 2 files changed, 23 insertions(+), 18 deletions(-)
+
+commit 90726a592bbc8178332a031022c4b8d050dabf67
+Author: Francisco Javier F. Serrador <serrador cvs gnome org>
+Date:   Sat Aug 28 15:58:20 2004 +0000
+
+    Updated Spanish translation
+    
+    2004-08-28  Francisco Javier F. Serrador  <serrador cvs gnome org>
+    
+       * es.po: Updated Spanish translation
+
+ po/ChangeLog |    4 ++++
+ po/es.po     |   25 ++++++++++++++-----------
+ 2 files changed, 18 insertions(+), 11 deletions(-)
+
+commit 347d80694a2544a943d7f13d251f175503b606b5
+Author: Laszlo Dvornik <dvornik gnome hu>
+Date:   Sat Aug 28 12:33:54 2004 +0000
+
+    Updated Hungarian translation.
+    
+    2004-08-28  Laszlo Dvornik  <dvornik gnome hu>
+    
+       * hu.po: Updated Hungarian translation.
+
+ po/ChangeLog |    4 ++++
+ po/hu.po     |   57 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 33 insertions(+), 28 deletions(-)
+
+commit 3aba5fb2e57bb38f75f27c116e9c222afec779ad
+Author: Laurent Dhima <laurenti alblinux net>
+Date:   Fri Aug 20 17:03:04 2004 +0000
+
+    Updated Albanian translation.
+    
+    2004-08-20  Laurent Dhima  <laurenti alblinux net>
+    
+       * sq.po: Updated Albanian translation.
+
+ po/ChangeLog |    4 ++++
+ po/sq.po     |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 5de1e489113069677af76af350da72c37402a12b
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Aug 18 17:28:53 2004 +0000
+
+    Added «nb» to ALL_LINGUAS.
+    
+    2004-08-18  Kjartan Maraas  <kmaraas gnome org>
+    
+       * configure.in: Added «nb» to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit c509534e41326ea1437f18dc7281db7a2c06b27f
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Aug 18 17:28:05 2004 +0000
+
+    Added this.
+    
+    2004-08-18  Kjartan Maraas  <kmaraas gnome org>
+    
+    
+       * nb.po: Added this.
+
+ po/ChangeLog |    5 +++
+ po/nb.po     |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 117 insertions(+), 0 deletions(-)
+
+commit d5a816662d8bea1e57abd39b9a67a5e7258bee57
+Author: Laurent Dhima <laurenti alblinux net>
+Date:   Wed Aug 18 11:08:27 2004 +0000
+
+    Updated Albanian translation.
+    
+    2004-08-18  Laurent Dhima  <laurenti alblinux net>
+    
+       * sq.po: Updated Albanian translation.
+
+ po/ChangeLog |    4 ++++
+ po/sq.po     |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 4dee776a00edde218ba6e9ba5ba7c62a1f8fc9a1
+Author: Christian Rose <menthos menthos com>
+Date:   Mon Aug 16 21:52:27 2004 +0000
+
+    Added "bs" to ALL_LINGUAS. Added Bosnian translation by Kemal Sanjta
+    
+    2004-08-16  Christian Rose  <menthos menthos com>
+    
+       * configure.in: Added "bs" to ALL_LINGUAS.
+       * po/bs.po: Added Bosnian translation by
+       Kemal Sanjta <gomez lugzdk ba>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/bs.po     |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 1 deletions(-)
+
+commit 38011c436c18822c5dc2b4b16efa74617906817c
+Author: Tommi Vainikainen <tvainika src gnome org>
+Date:   Fri Aug 13 19:46:17 2004 +0000
+
+    Unified po headers for Finnish Team
+
+ po/ChangeLog |    4 ++++
+ po/fi.po     |    3 +--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit c71cee561f061949b2ff1fde11d1883ba1c053b2
+Author: Gora Mohanty <gmohanty src gnome org>
+Date:   Thu Aug 12 20:30:53 2004 +0000
+
+    configure.in: Added "or" to ALL_LINGUAS.
+    po/or.po: Updated Oriya translation.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/or.po     |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 1 deletions(-)
+
+commit 85a8e4b2375c728ef517c0379a5c622be96a13cb
+Author: Amanpreet Singh Alam <aman src gnome org>
+Date:   Mon Aug 9 09:56:47 2004 +0000
+
+    check
+
+ po/pa.po |   33 ++++++++++++++++++---------------
+ 1 files changed, 18 insertions(+), 15 deletions(-)
+
+commit fcb527f0819543daf941772aa66798c310cb4fbf
+Author: Dinesh Nadarajah <ndinesh src gnome org>
+Date:   Sat Jul 17 14:29:56 2004 +0000
+
+    2004-07-17 Dinesh Nadarajah
+    
+    
+    
+    2004-07-17 Dinesh Nadarajah
+    
+       ta.po: Added Tamil Translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ta.po     |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 120 insertions(+), 1 deletions(-)
+
+commit 775f24c9131219f3da774af984414cd7d55e3461
+Author: Iñaki Larrañaga <dooteo euskalgnu org>
+Date:   Mon Jun 28 21:49:58 2004 +0000
+
+    Updated Basque translation.
+    
+    2004-06-28  Iñaki Larrañaga  <dooteo euskalgnu org>
+    
+            * eu.po: Updated Basque translation.
+
+ po/ChangeLog |    4 +++
+ po/eu.po     |   72 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 41 insertions(+), 35 deletions(-)
+
+commit 2524421c2f6e3b121a8c7598b4dd47b00a96cf03
+Author: Laurent Dhima <laurenti alblinux net>
+Date:   Mon Jun 28 15:17:40 2004 +0000
+
+    Translation updated.
+    
+    2004-06-28  Laurent Dhima  <laurenti alblinux net>
+    
+       * sq.po: Translation updated.
+
+ po/ChangeLog |    4 ++++
+ po/sq.po     |   22 +++++++++++-----------
+ 2 files changed, 15 insertions(+), 11 deletions(-)
+
+commit a59add9ec3169afdc76903d67e4c5b391debe0ff
+Author: John C Barstow <jbowtie amathaine com>
+Date:   Sat Jun 26 07:41:10 2004 +0000
+
+    Added mi to ALL_LINGUAS.
+    
+    2004-06-26  John C Barstow  <jbowtie amathaine com>
+    
+       * configure.in: Added mi to ALL_LINGUAS.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit eace4a5340a460a3a92b38920735414d6cf92317
+Author: John C Barstow <jbowtie amathaine com>
+Date:   Sat Jun 26 07:41:08 2004 +0000
+
+    Translation added.
+    
+    2004-06-26  John C Barstow  <jbowtie amathaine com>
+    
+       * mi.po: Translation added.
+
+ po/ChangeLog |    4 ++
+ po/mi.po     |  126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 130 insertions(+), 0 deletions(-)
+
+commit d3d586b1669bbb7b4ccf3f777a4fd33c785c2c07
+Author: Thomas Vander Stichele <thomasvs src gnome org>
+Date:   Sun May 30 09:51:39 2004 +0000
+
+    add ignore files
+
+ .cvsignore                                |    1 +
+ doc/.cvsignore                            |    2 ++
+ doc/openi18n/.cvsignore                   |    3 +++
+ doc/reference/.cvsignore                  |   20 ++++++++++++++++++++
+ .cvsignore => gnome-pty-helper/.cvsignore |   17 +++--------------
+ python/.cvsignore                         |    3 +++
+ termcaps/.cvsignore                       |    2 ++
+ 7 files changed, 34 insertions(+), 14 deletions(-)
+
+commit c90b8d3668b4f3d56b026852a96c9ef5deffbf9d
+Author: Thomas Vander Stichele <thomasvs src gnome org>
+Date:   Sun May 30 09:50:59 2004 +0000
+
+    add ignore files
+
+ .cvsignore |   11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit f93b85640ced394999f314c1ed2317ba755013b3
+Author: Alexander Shopov <ash contact bg>
+Date:   Tue May 25 11:39:11 2004 +0000
+
+    Updated Bulgarian translation by Vladimir "Kaladan" Petkov
+    
+    2004-05-25  Alexander Shopov  <ash contact bg>
+    
+       * bg.po: Updated Bulgarian translation by
+       Vladimir "Kaladan" Petkov <vpetkov i-space org>
+
+ po/ChangeLog |    5 +++++
+ po/bg.po     |   53 ++++++++++++++++++++++++++---------------------------
+ 2 files changed, 31 insertions(+), 27 deletions(-)
+
+commit b7e32d1da79ca11bd9a8106ca3114ce631251a33
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun May 2 06:43:01 2004 +0000
+
+    pass the global reaper in as data when adding the child source, not the
+    
+    * src/reaper.c(vte_reaper_add_child): pass the global reaper in as data when
+       adding the child source, not the terminal which called us.  Stop
+       accepting a data argument, because we'd discard it anyway.  Return the
+       ID of the source which is added, if that happens.
+    * configure.in: define VTE_INVALID_SOURCE for internal use.
+
+ ChangeLog    |    7 +++++++
+ configure.in |    1 +
+ src/reaper.c |   27 +++++++++++++++++++++++----
+ src/reaper.h |    2 +-
+ src/vte.c    |    3 +--
+ 5 files changed, 33 insertions(+), 7 deletions(-)
+
+commit 8a96cb750fab81b8f4516e80bc2e6d8cb38bd039
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat May 1 15:43:05 2004 +0000
+
+    add pointers to info on bidirectional text and shaping.
+    
+    * README: add pointers to info on bidirectional text and shaping.
+
+ ChangeLog |    3 +++
+ README    |    8 ++++++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 37e1d5101094ba96d5e38fadd0364236325a16bc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat May 1 07:12:51 2004 +0000
+
+    add a parameter to control whether or not trailing whitespace is trimmed
+    
+    * src/vte.c(vte_terminal_get_text_maybe_wrapped): add a parameter to control
+       whether or not trailing whitespace is trimmed (padraig.obriain,
+       #141148).
+    * src/vte.c,src/vte.h(vte_terminal_get_text_include_trailing_spaces): add as a
+       wrapper for the new vte_terminal_get_text_maybe_wrapped()
+       (padraig.obriain, #141148).
+    * src/vteaccess.c(vte_terminal_accessible_update_private_d): use
+       vte_terminal_get_text_include_trailing_spaces to ensure that we get
+       trailing spaces (padraig.obriain, #141148).
+    * src/vte.c(vte_terminal_insert_char): clean up some autowrap stuff.
+
+ ChangeLog                              |   12 +++++
+ gnome-pty-helper/gnome-login-support.c |   38 +++++++-------
+ gnome-pty-helper/gnome-pty-helper.c    |   68 +++++++++++++-------------
+ gnome-pty-helper/gnome-utmp.c          |   30 ++++++------
+ src/pty.c                              |    2 +-
+ src/vte.c                              |   81 ++++++++++++++++++++++++--------
+ src/vte.h                              |    7 +++
+ src/vteaccess.c                        |   34 +++++++-------
+ 8 files changed, 166 insertions(+), 106 deletions(-)
+
+commit c4a25900091c436d3d629d3bf53d653117d0322b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 18:48:18 2004 +0000
+
+    declare the defaultemulation variable as one kind of variable, not that
+    
+    * vte.pc.in, vte-uninstalled.pc.in: declare the defaultemulation variable as
+       one kind of variable, not that other kind (#141515).
+
+ ChangeLog             |    4 ++++
+ vte-uninstalled.pc.in |    3 ++-
+ vte.pc.in             |    3 ++-
+ 3 files changed, 8 insertions(+), 2 deletions(-)
+
+commit b2025190de68a6d92be926c2324ab9ea98eb9242
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 06:06:44 2004 +0000
+
+    complete selection if we were selecting, not just if Shift is held down
+    
+    * src/vte.c(vte_terminal_button_release): complete selection if we were
+       selecting, not just if Shift is held down (allows Press Shift, Press
+       Button, Release Shift, Release Button in addition to already-recognized
+       Press Shift, Press Button, Release Button, Release Shift) (#121905).
+    * vte.spec: buildrequire gtk-doc, manually copy png images at install-time.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |    3 +--
+ vte.spec  |    6 +++++-
+ 3 files changed, 14 insertions(+), 3 deletions(-)
+
+commit ff40403f43fb72f296dfd3a4237ed69fd61fcdef
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 02:59:39 2004 +0000
+
+    documentation updates. note that we just proxy for glib 2.4 child_watch
+    
+    * src/vte.c, NEWS, doc/reference/vte-sections.txt,
+       doc/reference/tmpl/vte-unused.sgml: documentation updates.
+    * doc/reference/tmpl/reaper.sgml: note that we just proxy for glib 2.4
+       child_watch functionality, if present.
+    * NEWS: update summary.
+
+ ChangeLog                          |    6 ++++
+ NEWS                               |   14 +++++++++
+ doc/reference/tmpl/reaper.sgml     |    4 ++-
+ doc/reference/tmpl/vte-unused.sgml |   15 ++++++++++
+ doc/reference/vte-sections.txt     |   55 ++++++++++++++++++++++++++++++++++++
+ po/am.po                           |   26 ++++++++--------
+ po/ar.po                           |   26 ++++++++--------
+ po/az.po                           |   26 ++++++++--------
+ po/be.po                           |   26 ++++++++--------
+ po/bg.po                           |   26 ++++++++--------
+ po/bn.po                           |   26 ++++++++--------
+ po/ca.po                           |   26 ++++++++--------
+ po/cs.po                           |   26 ++++++++--------
+ po/cy.po                           |   26 ++++++++--------
+ po/da.po                           |   26 ++++++++--------
+ po/de.po                           |   26 ++++++++--------
+ po/el.po                           |   26 ++++++++--------
+ po/en_CA.po                        |   26 ++++++++--------
+ po/en_GB.po                        |   26 ++++++++--------
+ po/es.po                           |   26 ++++++++--------
+ po/et.po                           |   26 ++++++++--------
+ po/eu.po                           |   26 ++++++++--------
+ po/fa.po                           |   26 ++++++++--------
+ po/fi.po                           |   26 ++++++++--------
+ po/fr.po                           |   26 ++++++++--------
+ po/ga.po                           |   26 ++++++++--------
+ po/gu.po                           |   26 ++++++++--------
+ po/he.po                           |   26 ++++++++--------
+ po/hr.po                           |   26 ++++++++--------
+ po/hu.po                           |   26 ++++++++--------
+ po/id.po                           |   26 ++++++++--------
+ po/is.po                           |   26 ++++++++--------
+ po/it.po                           |   26 ++++++++--------
+ po/ja.po                           |   26 ++++++++--------
+ po/ko.po                           |   26 ++++++++--------
+ po/li.po                           |   26 ++++++++--------
+ po/lt.po                           |   26 ++++++++--------
+ po/lv.po                           |   26 ++++++++--------
+ po/mk.po                           |   26 ++++++++--------
+ po/ml.po                           |   26 ++++++++--------
+ po/mn.po                           |   26 ++++++++--------
+ po/ms.po                           |   26 ++++++++--------
+ po/ne.po                           |   26 ++++++++--------
+ po/nl.po                           |   26 ++++++++--------
+ po/nn.po                           |   26 ++++++++--------
+ po/no.po                           |   26 ++++++++--------
+ po/pa.po                           |   26 ++++++++--------
+ po/pl.po                           |   26 ++++++++--------
+ po/pt.po                           |   26 ++++++++--------
+ po/pt_BR.po                        |   26 ++++++++--------
+ po/ro.po                           |   26 ++++++++--------
+ po/ru.po                           |   26 ++++++++--------
+ po/sk.po                           |   26 ++++++++--------
+ po/sl.po                           |   26 ++++++++--------
+ po/sq.po                           |   26 ++++++++--------
+ po/sr.po                           |   26 ++++++++--------
+ po/sr Latn po                      |   26 ++++++++--------
+ po/sv.po                           |   26 ++++++++--------
+ po/tr.po                           |   26 ++++++++--------
+ po/uk.po                           |   26 ++++++++--------
+ po/vi.po                           |   26 ++++++++--------
+ po/wa.po                           |   26 ++++++++--------
+ po/zh_CN.po                        |   26 ++++++++--------
+ po/zh_TW.po                        |   26 ++++++++--------
+ src/vte.c                          |    6 ++--
+ 65 files changed, 863 insertions(+), 771 deletions(-)
+
+commit 8646f68a8f2b35005082482173b15e5e95b9dc01
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 02:41:55 2004 +0000
+
+    include get_default_emulation binding.
+    
+    * python/vte.defs: include get_default_emulation binding.
+
+ ChangeLog       |    3 +++
+ python/vte.defs |   12 +++++++++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 60a64be27fa33cc249fa87deed6963905031c5e8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 02:22:06 2004 +0000
+
+    update version to 0.11.11
+    
+    * vte.spec: update version to 0.11.11
+
+ ChangeLog |    3 +++
+ vte.spec  |    7 +++++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 3da9acb379a440d41d1a4fc897f409e930f7ab56
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 02:16:25 2004 +0000
+
+    don't unref our accessible peer; it may be accessed while we're
+    
+    * src/vte.c(vte_terminal_unrealize): don't unref our accessible peer; it may be
+       accessed while we're unrealized, causing it to be destroyed and
+       re-created needlessly (#128049).
+    * src/vte.c(vte_terminal_finalize): unref our accessible peer.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   32 ++++++++++++++++----------------
+ 2 files changed, 22 insertions(+), 16 deletions(-)
+
+commit e0f3c599ddc35517b16a12820c0af9a381fb2a23
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 02:02:56 2004 +0000
+
+    don't clear the child's PID early, so that we'll SIGHUP it properly (the
+    
+    * src/vte.c(vte_terminal_finalize): don't clear the child's PID early, so that
+       we'll SIGHUP it properly (the kernel should do that anyway, but...)
+       (#128291).
+
+ ChangeLog |    5 +++++
+ src/vte.c |    1 -
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 03404a368f9f23dade35ed81b54e27255e04b29e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 01:39:17 2004 +0000
+
+    only deselect the current selection if just-inserted text affected the
+    
+    * src/vte.c(vte_terminal_insert_char): only deselect the current selection if
+       just-inserted text affected the selected region of the screen (#135259).
+
+ ChangeLog |    5 +++++
+ src/vte.c |   27 +++++++++++++++++++++++----
+ 2 files changed, 28 insertions(+), 4 deletions(-)
+
+commit cf8e7d95067df980ac8ebc8e5716905f231eebc7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 01:16:53 2004 +0000
+
+    assorted updates. check for <sys/termios.h> include <sys/termios.h> if
+    
+    * README: assorted updates.
+    * configure.in: check for <sys/termios.h>
+    * src/pty.c: include <sys/termios.h> if found (#141392).
+    * src/dumpkeys.c, src/mev.c, src/pty.c, src/ssfe.c, src/vte.c: do the same.
+    * doc/reference/vte-sections.txt: add several functions which are new but
+       which weren't in the generated docs before.
+    * doc/reference/vte-unused.txt: sort.
+
+ ChangeLog                      |   10 ++++++
+ README                         |   23 ++++++++++-----
+ configure.in                   |    3 +-
+ doc/reference/tmpl/reaper.sgml |    9 ++++++
+ doc/reference/tmpl/vte.sgml    |   61 ++++++++++++++++++++++++++++++++++++++++
+ doc/reference/vte-sections.txt |    7 ++++
+ src/Makefile.am                |    4 +-
+ src/dumpkeys.c                 |    5 +++
+ src/mev.c                      |    5 +++
+ src/pty.c                      |    6 ++++
+ src/ssfe.c                     |    7 ++++-
+ src/vte.c                      |   17 ++++++----
+ src/vte.h                      |    4 +-
+ 13 files changed, 140 insertions(+), 21 deletions(-)
+
+commit c2453e484d3f53b5b5c7abbeca1b6d56d204e370
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 00:31:39 2004 +0000
+
+    remove stray debug printfs.
+    
+    * src/vte.c(vte_terminal_scroll_region): remove stray debug printfs.
+
+ ChangeLog |    3 +++
+ src/vte.c |    1 -
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 934340170f404f7c4993f447cdca80543c5e018d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 30 00:25:52 2004 +0000
+
+    add a --with-default-emulation argument (part of #115750). Use
+    
+    * configure.in: add a --with-default-emulation argument (part of #115750).  Use
+       AS_HELP_STRING wherever we need help strings.
+    * vte.pc.in, vte-uninstalled.pc.in: add DefaultEmulation variable
+    * vte.spec: specify "xterm" as the default-emulation, even though it's the
+       default default
+    * termcaps/Makefile.am: build and install the default emulation's
+       termcap, assuming it's some kind of xterm variant.
+    * src/keymap.c(_vte_keymap_map): check for xterm-xfree86 definitions
+       if the terminal type includes xterm, not if it exactly matches xterm
+    * src/reaper.c(vte_reaper_add_child): add.  The glib 2.4 SIGCHLD watcher
+       requires us to register particular PIDs for monitoring, so now we
+       require applications to do so.
+    * src/reaper.c(vte_reaper_child_watch_cb): add.
+    * src/reaper.c(vte_reaper_init): Don't hook the SIGCHLD handler if we're
+       running under glib 2.4, expect to use the g_child_watch mechanism.
+    * src/vte.c: remove hard-coded definition of VTE_DEFAULT_EMULATION, to be
+       picked up from config.h instead.
+    * src/vte.c(vte_sequence_handler_cs): remove stray debug printfs.
+    * src/vte.c(vte_terminal_insert_char): only do what we were doing for xn if LP
+       was also set (#141445).
+    * src/vte.c(vte_terminal_get_default_emulation): add.
+    * src/vte.c(_vte_terminal_fork_basic): call vte_reaper_add_child for new
+       children.
+
+ ChangeLog             |   26 ++++++++++++++++++++++++++
+ configure.in          |   26 +++++++++++++++++---------
+ src/keymap.c          |    2 +-
+ src/reaper.c          |   40 ++++++++++++++++++++++++++++++++++++++++
+ src/reaper.h          |    1 +
+ src/vte.c             |   31 ++++++++++++++++++++++++-------
+ src/vte.h             |    1 +
+ termcaps/Makefile.am  |    5 ++++-
+ vte-uninstalled.pc.in |    1 +
+ vte.pc.in             |    1 +
+ vte.spec              |    2 +-
+ 11 files changed, 117 insertions(+), 19 deletions(-)
+
+commit bcee3ff9c9301daf6383447828b8ac940fd6f95a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 27 20:48:17 2004 +0000
+
+    more clearly document what the argv and envv arguments are expected to
+    
+    * src/vte.c(vte_terminal_fork_command): more clearly document what the argv
+       and envv arguments are expected to contain (#127979).
+    * src/vte.c(vte_terminal_insert_char): attempt to more closely match the
+       behavior of am and xn on terminals -- if am is set {if xn is set,
+       autowrap should only happen before a character is output, and then only
+       if it's a graphic character, otherwise we autowrap after a character is
+       output}
+
+ ChangeLog     |    9 +++++++
+ src/slowcat.c |   63 ++++++++++++++++++++++++++++++++----------------
+ src/vte.c     |   75 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ 3 files changed, 117 insertions(+), 30 deletions(-)
+
+commit 68774f88fd845781f942443f99ec30e92a1765ac
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 22 03:44:54 2004 +0000
+
+    also trim back lines which are nothing but whitespace (#140765).
+    
+    * src/vte.c(vte_terminal_get_text_range_maybe_wrapped): also trim back lines
+       which are nothing but whitespace (#140765).
+    * src/vte.c(vte_terminal_configure_toplevel): invalidate the whole window if
+       we're "transparent", because we don't get expose events unless some
+       portion of our area came out from behind something else, but we still
+       need to repaint it (#122243).
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   18 +++++++++++++++++-
+ 2 files changed, 25 insertions(+), 1 deletions(-)
+
+commit bc403a3836f9eb2caadb40062c0f36d5b4f5d50f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 06:35:43 2004 +0000
+
+    document the child-exited signal. document the emulation-changed and
+    
+    * doc/reference/tmpl/reaper.sgml: document the child-exited signal.
+    * doc/reference/tmpl/vte.sgml: document the emulation-changed and
+       encoding-changed signals.
+    One hundred percent*.  ONE HUNDRED PERCENT* I TELL YOU!
+    
+    * Except for the unused bits.
+
+ ChangeLog                          |    5 +
+ doc/reference/tmpl/reaper.sgml     |    4 +-
+ doc/reference/tmpl/vte-unused.sgml |  157 ++++++++++++++++++++++++++
+ doc/reference/tmpl/vte.sgml        |    7 +-
+ po/am.po                           |   39 ++++---
+ po/ar.po                           |   29 +++---
+ po/az.po                           |   26 ++--
+ po/be.po                           |   37 +++---
+ po/bg.po                           |   39 ++++---
+ po/bn.po                           |   39 ++++---
+ po/ca.po                           |   39 ++++---
+ po/cs.po                           |   26 ++--
+ po/cy.po                           |   45 ++++----
+ po/da.po                           |   39 ++++---
+ po/de.po                           |   37 +++---
+ po/el.po                           |   34 +++---
+ po/en_CA.po                        |   28 +++---
+ po/en_GB.po                        |   26 ++--
+ po/es.po                           |   36 +++---
+ po/et.po                           |   38 +++---
+ po/eu.po                           |   28 +++---
+ po/fa.po                           |   26 ++--
+ po/fi.po                           |   36 +++---
+ po/fr.po                           |   36 +++---
+ po/ga.po                           |   26 ++--
+ po/gu.po                           |   26 ++--
+ po/he.po                           |   37 +++---
+ po/hr.po                           |   35 +++---
+ po/hu.po                           |   27 +++--
+ po/id.po                           |   39 ++++---
+ po/is.po                           |   39 ++++---
+ po/it.po                           |   37 +++---
+ po/ja.po                           |   36 +++---
+ po/ko.po                           |   32 +++---
+ po/li.po                           |   37 +++---
+ po/lt.po                           |   29 +++---
+ po/lv.po                           |   39 ++++---
+ po/mk.po                           |   37 +++---
+ po/ml.po                           |   39 ++++---
+ po/mn.po                           |   33 +++---
+ po/ms.po                           |   66 ++++-------
+ po/ne.po                           |  216 ++++++++++++++++++------------------
+ po/nl.po                           |   36 +++---
+ po/nn.po                           |   27 ++---
+ po/no.po                           |   33 +++---
+ po/pa.po                           |   26 ++--
+ po/pl.po                           |   37 +++---
+ po/pt.po                           |   28 +++---
+ po/pt_BR.po                        |   32 +++---
+ po/ro.po                           |   26 ++--
+ po/ru.po                           |   29 +++---
+ po/sk.po                           |   33 +++---
+ po/sl.po                           |   34 +++---
+ po/sq.po                           |   36 +++---
+ po/sr.po                           |   38 +++---
+ po/sr Latn po                      |   38 +++---
+ po/sv.po                           |   39 ++++---
+ po/tr.po                           |   27 ++---
+ po/uk.po                           |   32 +++---
+ po/vi.po                           |   33 +++---
+ po/wa.po                           |   42 ++++----
+ po/zh_CN.po                        |   36 +++---
+ po/zh_TW.po                        |   34 +++---
+ src/Makefile.am                    |    4 +-
+ src/vtebg.c                        |   10 +-
+ 65 files changed, 1277 insertions(+), 1119 deletions(-)
+
+commit d7e1045596a8cb452d2649dee7b9638f5f50194b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:54:34 2004 +0000
+
+    add rule for generating vte-uninstall.pc (Gman, #136129) add (Gman,
+    
+    * Makefile.am: add rule for generating vte-uninstall.pc (Gman, #136129)
+    * vte-uninstalled.pc.in: add (Gman, #136129)
+
+ ChangeLog             |    4 ++++
+ Makefile.am           |    2 +-
+ configure.in          |    1 +
+ vte-uninstalled.pc.in |   11 +++++++++++
+ 4 files changed, 17 insertions(+), 1 deletions(-)
+
+commit 684d3ec3b22a52c97c5e14cdd44de8aebfb6297b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:40:56 2004 +0000
+
+    don't steal keys from the input method. toggle the IUTF8 flag, if it was
+    
+    * src/vte.c(vte_terminal_key_press): don't steal keys from the input method.
+    * src/pty.c(_vte_pty_set_utf8): toggle the IUTF8 flag, if it was defined at
+       compile-time (maybe for #129317).
+
+ ChangeLog |    4 ++++
+ src/pty.c |    3 ---
+ src/vte.c |   57 +++++++++++++++++++++++++++++++++++++++++++--------------
+ 3 files changed, 47 insertions(+), 17 deletions(-)
+
+commit d0c8c47dfb5d908ee22a735bc6ea80b943933630
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:37:50 2004 +0000
+
+    toggle the IUTF8 flag, if it was defined at compile-time (maybe for
+    
+    * src/pty.c(_vte_pty_set_utf8): toggle the IUTF8 flag, if it was defined at
+       compile-time (maybe for #129317).
+    * src/vte.c(vte_terminal_set_encoding): call _vte_pty_set_utf8.
+    * src/vte.h (vte_terminal_anti_alias_get_type): declare.
+    * src/vtebg.c(vte_bg_get_pixmap): Optimisation to fix the ridiculous
+       amount of time required to render solid colour or extremely small
+       image tiled backgrounds.  This fixes bug #123903.  (desrt)
+    * src/vtebg.c(vte_bg_root_pixmap): move resize code into a separate
+       function.
+    * src/vtebg.c(vte_bg_get_pixmap): Resize all image sources, in case
+       we're using a very small image file for the background.
+    * python/Makefile.am: move python module to site-packages/gtk-2.0,
+       which is added to the search path only by pygtk 2 (#92252).
+
+ ChangeLog          |   17 ++++++++++++
+ python/Makefile.am |    4 +-
+ src/pty.c          |   39 +++++++++++++++++++++++++--
+ src/pty.h          |    3 ++
+ src/vte.c          |    2 +
+ src/vte.h          |    1 +
+ src/vtebg.c        |   74 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 135 insertions(+), 5 deletions(-)
+
+commit a335c65bbbde6ced343b24c470e4219174decdb5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:28:17 2004 +0000
+
+    define a modulename override so that the Terminal class is registered in
+    
+    * python/vte.override: define a modulename override so that the Terminal class
+       is registered in the proper namespace so that python's help() builtin
+       sees the Terminal class (#130267).
+
+ ChangeLog           |    5 +++++
+ python/vte.defs     |    7 ++++++-
+ python/vte.override |    2 ++
+ 3 files changed, 13 insertions(+), 1 deletions(-)
+
+commit 8eca214bcb9bcbbfd2d56cc289f3da69d2ef7387
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:22:54 2004 +0000
+
+    add, for the sake of bindings.
+    
+    * src/vte.c(vte_terminal_anti_alias_get_type): add, for the sake of bindings.
+
+ ChangeLog          |    4 ++++
+ python/vte.defs    |   33 +++++++++++++++++++++++++++++++++
+ python/vtemodule.c |    1 +
+ src/vte.c          |   17 +++++++++++++++++
+ src/vte.h          |    5 ++++-
+ 5 files changed, 59 insertions(+), 1 deletions(-)
+
+commit e393cfc59f5f1e5c85ab5470448547d99c379212
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:18:45 2004 +0000
+
+    call GtkWidget's key_press_event callback for keys, in case GtkWidget has
+    
+    * src/vte.c(vte_terminal_key_press): call GtkWidget's key_press_event callback
+       for keys, in case GtkWidget has pre-programmed behavior for that key
+       (#133878).
+    * configure.in, gnome-pty-helper/configure.in: quote names of defined functions
+       (#133222).
+    * configure.in: make compilation of gnome-pty-helper actually conditional
+       (#133077).
+    * src/vte.c(vte_terminal_process_incoming): Doh #132610, actually call
+       vte_terminal_emit_contents_changed() when the contents change.
+
+ ChangeLog                     |   11 +++++++++++
+ Makefile.am                   |    5 ++++-
+ acinclude.m4                  |    4 ++--
+ configure.in                  |    1 +
+ gnome-pty-helper/acinclude.m4 |    2 +-
+ python/vtemodule.c            |    4 ++--
+ src/Makefile.am               |    1 +
+ src/vte.c                     |   12 ++++++++++++
+ 8 files changed, 34 insertions(+), 6 deletions(-)
+
+commit 4493df7203a80c12175cfb5a4a723669ee165816
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:16:56 2004 +0000
+
+    Add (#134429). take a VteTerminalAntiAlias argument. take a
+    
+    * src/vte.h, src/vte.c (vte_terminal_set_font_full): Add (#134429).
+    * src/vteglyph.c(_vte_glyph_cache_set_font_description): take a
+       VteTerminalAntiAlias argument.
+    * src/vteft2.c, src/vtegl.c, src/pango.c, src/pango.x, src/vtexft.c
+       (*_set_text_font): take a VteTerminalAntiAlias argument.
+
+ ChangeLog       |    7 +++++
+ src/vte.c       |   76 ++++++++++++++++++++++++++++++++++++++++++++++--------
+ src/vte.h       |   13 +++++++++
+ src/vteapp.c    |   21 +++++++++++++--
+ src/vtedraw.c   |    5 ++-
+ src/vtedraw.h   |    8 ++++-
+ src/vtefc.c     |   46 +++++++++++++++++++++++++++++----
+ src/vtefc.h     |    2 +
+ src/vteft2.c    |    5 ++-
+ src/vtegl.c     |    4 ++-
+ src/vteglyph.c  |    5 +++-
+ src/vteglyph.h  |    1 +
+ src/vtepango.c  |    3 +-
+ src/vtepangox.c |    3 +-
+ src/vterdb.c    |    2 +
+ src/vteskel.c   |    3 +-
+ src/vtexft.c    |   12 +++++---
+ 17 files changed, 179 insertions(+), 37 deletions(-)
+
+commit d3f6530caea122b7be6823565fa036e6badbfe50
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:12:59 2004 +0000
+
+    Added default signal handlers to VteTerminalClass (#137961). [NOTE: ABI
+    
+    * src/vte.h src/vte.c: Added default signal handlers to VteTerminalClass
+       (#137961).  [NOTE: ABI change.]
+    * src/vte.c(vte_terminal_configure_toplevel): don't re-invalidate everything,
+       apparently unnecessary (#122243).  Might need to back this out if I
+       ever remember what specific combination of software and versions
+       prompted its addition in the first place.
+    * src/vte.c(vte_terminal_class_init): tell gettext that messages retrieved
+       from this domain should be returned in UTF-8 (#139542).
+
+ ChangeLog    |   14 ++++++++-
+ configure.in |    1 +
+ src/vte.c    |   93 ++++++++++++++++++++++++++++++++++++++-------------------
+ src/vte.h    |   41 +++++++++++++++++++++++++
+ 4 files changed, 117 insertions(+), 32 deletions(-)
+
+commit bb25286687af0061c88ac58f66706a381c5c09a9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 20 05:08:43 2004 +0000
+
+    don't disable use of deprecated APIs unless asked to do so. add Meta case
+    
+    * configure.in: don't disable use of deprecated APIs unless asked to do so.
+    * src/keymap.c(_vte_keymap_GDK_space): add Meta case (gafton).
+    * src/vtefc.c(_vte_fc_width_from_pango_stretch): add.
+    * src/vtefc.c(_vte_fc_transcribe_from_pango_font_description): handle
+      PangoStretch characteristics using _vte_fc_width_from_pango_stretch.
+    * src/vteregex.c: add random comments.
+    * src/vte.c(VteTerminal): track the "xn" terminal attribute.
+
+ ChangeLog                      |   16 ++-
+ Makefile.am                    |    3 +
+ configure.in                   |    3 +
+ doc/reference/tmpl/reaper.sgml |   14 +-
+ doc/reference/tmpl/vte.sgml    |  420 ++++++++++++++++++++--------------------
+ src/keymap.c                   |    3 +
+ src/reflect.c                  |   18 ++
+ src/vte.c                      |    5 +
+ src/vtefc.c                    |   49 +++++-
+ src/vteregex.c                 |   13 ++
+ 10 files changed, 321 insertions(+), 223 deletions(-)
+
+commit 76d50af169334060e5f839698c39345c5efba3fa
+Author: Guntupalli Karunakar <karunakar src gnome org>
+Date:   Sat Apr 10 09:38:27 2004 +0000
+
+    added gujarati translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/gu.po     |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 122 insertions(+), 1 deletions(-)
+
+commit 01061a7d846b83ae406e8bdbe93b88e44a451615
+Author: Gareth Owen <gowen src gnome org>
+Date:   Sat Mar 20 16:59:57 2004 +0000
+
+    Added British translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/en_GB.po  |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 122 insertions(+), 1 deletions(-)
+
+commit c6715f04849493c74030b2962b6cc3d11f8a909e
+Author: Mugurel Tudor <mugurelu go ro>
+Date:   Thu Mar 18 21:31:23 2004 +0000
+
+    Updated Romanian translation by Misu Moldovan <dumol go ro>
+    
+    2004-03-18  Mugurel Tudor  <mugurelu go ro>
+    
+       * ro.po: Updated Romanian translation
+       by Misu Moldovan <dumol go ro>
+
+ po/ChangeLog |    5 +++++
+ po/ro.po     |   58 +++++++++++++++++++++++++---------------------------------
+ 2 files changed, 30 insertions(+), 33 deletions(-)
+
+commit 00fc9d68adc68204c5b4a8ffafcfec409500171f
+Author: Nikos Charonitakis <frolix68 src gnome org>
+Date:   Sun Mar 14 23:42:56 2004 +0000
+
+    Updated Greek translation
+
+ po/ChangeLog |    4 +++
+ po/el.po     |   82 ++++++++++++++++++---------------------------------------
+ 2 files changed, 30 insertions(+), 56 deletions(-)
+
+commit bdc3d3de104a426e01b7e74e03388629d3c4099c
+Author: Alexander Winston <alexander winston comcast net>
+Date:   Wed Mar 10 22:12:38 2004 +0000
+
+    Added en_CA to ALL_LINGUAS.
+    
+    2004-03-10  Alexander Winston  <alexander winston comcast net>
+    
+       * configure.in: Added en_CA to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit f59d9d6b1ea0ced7d1d434e0a24dabcbabc12f4f
+Author: Yuri Syrota <rasta src gnome org>
+Date:   Wed Mar 10 15:44:20 2004 +0000
+
+    Updated Ukrainian translation
+
+ po/ChangeLog |    4 ++++
+ po/uk.po     |   39 ++++++++++++++++++++-------------------
+ 2 files changed, 24 insertions(+), 19 deletions(-)
+
+commit f7294335cb044224853e1cc5a8caa1f7afeaf26f
+Author: Alexander Winston <alexander winston comcast net>
+Date:   Wed Mar 10 04:01:12 2004 +0000
+
+    Added Canadian English translation at "19 translated messages" status.
+    
+    2004-03-09  Alexander Winston  <alexander winston comcast net>
+    
+       * en_CA.po: Added Canadian English translation at "19 translated
+       messages" status.
+
+ po/ChangeLog |    5 +++
+ po/en_CA.po  |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 118 insertions(+), 0 deletions(-)
+
+commit 5413cc6645c64153fdfbe2f2e3342276fac7a741
+Author: Mətin Əmirov <metin karegen com>
+Date:   Sat Mar 6 20:42:09 2004 +0000
+
+    Translation updated.
+    
+    2004-03-06  Mətin Əmirov  <metin karegen com>
+    
+       * az.po: Translation updated.
+
+ po/ChangeLog |    4 ++++
+ po/az.po     |   10 +++++-----
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+commit ff4fbe8701473e0a1f041875c6de4bab32b085a4
+Author: Guntupalli Karunakar <karunakar src gnome org>
+Date:   Thu Mar 4 09:41:53 2004 +0000
+
+    Added Punjabi translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/pa.po     |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 1 deletions(-)
+
+commit f97dca76f2d3709aa19994dab379042a3e210c79
+Author: Görkem Çetin <gorkem src gnome org>
+Date:   Mon Mar 1 05:04:40 2004 +0000
+
+    CVS_SILENT
+
+ po/tr.po |   73 +++++++++++++++++++++----------------------------------------
+ 1 files changed, 25 insertions(+), 48 deletions(-)
+
+commit 9d5550277d2fdf8fd0b7cdb9d06df70713da8206
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Feb 23 09:42:38 2004 +0000
+
+    Revised Albanian translation
+    
+    * sq.po: Revised Albanian translation
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit f82631a02f02a3b556bd2d6d9bd8ee6579c92f2f
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Feb 23 09:40:40 2004 +0000
+
+    Korrigjime
+
+ po/sq.po |   28 +++++++++++++---------------
+ 1 files changed, 13 insertions(+), 15 deletions(-)
+
+commit e294a40d174c07ba5a5d0e6eaef634786a7f9079
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Mon Feb 23 00:46:19 2004 +0000
+
+    Fix kn.po header
+
+ po/ChangeLog |    6 +++++-
+ po/kn.po     |    2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 85140f1282385dc155b978f4c49f498d05b75d74
+Author: Denis Lackovic <delacko src gnome org>
+Date:   Sat Feb 7 21:41:35 2004 +0000
+
+    *** empty log message ***
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++++
+ po/hr.po     |    8 ++++----
+ 4 files changed, 13 insertions(+), 5 deletions(-)
+
+commit 779ee126f4f768f1cc6435fc476b87f48430cdd9
+Author: Martin Kretzschmar <mkretzschmar src gnome org>
+Date:   Mon Feb 2 20:41:33 2004 +0000
+
+    use gtk-doc in xml-mode.
+    
+    * docs/reference/Makefile.am: use gtk-doc in xml-mode.
+    
+    * docs/reference/vte-docs.sgml: sgml->xml, update to DocBook XML
+    4.1.2 DTD (fixes Bug #132945)
+
+ ChangeLog                   |    7 +++++++
+ doc/reference/Makefile.am   |    8 ++++----
+ doc/reference/vte-docs.sgml |   25 ++++++++++++++-----------
+ 3 files changed, 25 insertions(+), 15 deletions(-)
+
+commit e0fe18764a7ee603ff99dbf5fea0255dc8af652e
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Feb 2 15:04:46 2004 +0000
+
+    Updated Albanian translation
+    
+    * sq.po: Updated Albanian translation
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 0c31cf5c2a5877ab4cf696c4c4a2edfa400e073c
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Feb 2 15:03:30 2004 +0000
+
+    Updated
+
+ po/sq.po |   53 +++++++++++------------------------------------------
+ 1 files changed, 11 insertions(+), 42 deletions(-)
+
+commit fa623bb77d42e806a0e74f5b732263df9337cc29
+Author: Alastair McKinstry <alastairmck src gnome org>
+Date:   Mon Feb 2 10:10:27 2004 +0000
+
+    Added Irish translation
+
+ ChangeLog    |    5 +++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ga.po     |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 1 deletions(-)
+
+commit 0771398195dddf5aba89477cb30ef5f76bdfeb7b
+Author: Mətin Əmirov <metin karegen com>
+Date:   Sat Jan 31 19:16:14 2004 +0000
+
+    Translation updated.
+    
+    2004-01-31  Mətin Əmirov  <metin karegen com>
+    
+       * az.po: Translation updated.
+
+ po/ChangeLog |    4 ++++
+ po/az.po     |   32 ++++++++++++++++----------------
+ 2 files changed, 20 insertions(+), 16 deletions(-)
+
+commit 3655aad027b04b16acee664ef5c629f4b07bad91
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Wed Jan 28 11:41:41 2004 +0000
+
+    Fixed Czech translation
+
+ po/ChangeLog |    4 ++++
+ po/cs.po     |   46 ++++++++++++++++++++++++----------------------
+ 2 files changed, 28 insertions(+), 22 deletions(-)
+
+commit 052419a211095720e46f4697c3efaec745ef1b82
+Author: Åsmund Skjæveland <aasmunds fys uio no>
+Date:   Tue Jan 27 09:24:33 2004 +0000
+
+    Added 'nn' to ALL_LINGUAS Added Norwegian Nynorsk translation.
+    
+    2004-01-27  Åsmund Skjæveland  <aasmunds fys uio no>
+    
+       * configure.in: Added 'nn' to ALL_LINGUAS
+       * po/nn.po: Added Norwegian Nynorsk translation.
+
+ ChangeLog    |    9 ++++-
+ configure.in |    2 +-
+ po/ChangeLog |    8 +++-
+ po/nn.po     |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 129 insertions(+), 5 deletions(-)
+
+commit 067189059bfea170068cfa0c291fdfe89e6cd595
+Author: Roozbeh Pournader <roozbeh sharif edu>
+Date:   Sat Jan 3 16:39:30 2004 +0000
+
+    Updated Persian translation.
+    
+    2004-01-03  Roozbeh Pournader  <roozbeh sharif edu>
+    
+       * fa.po: Updated Persian translation.
+
+ po/ChangeLog |    4 ++++
+ po/fa.po     |   50 +++++++++++++++++++++++++-------------------------
+ 2 files changed, 29 insertions(+), 25 deletions(-)
+
+commit 1b5b3fa53d3699dc00b2a942c083b3f6c8d4c04c
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Fri Jan 2 22:57:18 2004 +0000
+
+    Revised Portuguese translation.
+    
+    2004-01-02  Duarte Loreto <happyguy_pt hotmail com>
+    
+       * pt.po: Revised Portuguese translation.
+
+ po/ChangeLog |    4 ++
+ po/pt.po     |   89 +++++++++++++++++++---------------------------------------
+ 2 files changed, 33 insertions(+), 60 deletions(-)
+
+commit c75c923b42e7bcb0df95ffd9ffa6dd43c3015426
+Author: Görkem Çetin <gorkem src gnome org>
+Date:   Sun Dec 28 21:05:40 2003 +0000
+
+    CVS_SILENT
+
+ po/tr.po |   39 ++++++++++++++++++++-------------------
+ 1 files changed, 20 insertions(+), 19 deletions(-)
+
+commit cb4431ef509871590b0f9fca9ea3ce60ef708b16
+Author: Arafat Medini <lumina silverpen de>
+Date:   Sat Dec 20 15:53:27 2003 +0000
+
+    Added Arabic translation
+    
+    
+    2003-12-20  Arafat Medini <lumina silverpen de>
+    
+            * ar.po: Added Arabic translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ar.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 1 deletions(-)
+
+commit 580046c70f07b977ebf5aea26360434cc9feae73
+Author: T�ivo Leedj�rv <toivo linux ee>
+Date:   Wed Dec 10 21:40:07 2003 +0000
+
+    Added et to ALL_LINGUAS.
+    
+    2003-12-10  T�ivo Leedj�rv  <toivo linux ee>
+    
+            * configure.in: Added et to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit e6671b0e4f3f037bf207be019f52d4cde032f259
+Author: T�ivo Leedj�rv <toivo linux ee>
+Date:   Wed Dec 10 21:39:25 2003 +0000
+
+    Added Estonian translation by Allan Sims <allsi eau ee>.
+    
+    2003-12-10  T�ivo Leedj�rv  <toivo linux ee>
+    
+            * et.po: Added Estonian translation
+            by Allan Sims <allsi eau ee>.
+
+ po/ChangeLog |    5 +++
+ po/et.po     |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 118 insertions(+), 0 deletions(-)
+
+commit 2660fc0592cbde61a52558f5d2f883f90a0eff7e
+Author: Iñaki Larrañaga <dooteo euskalgnu org>
+Date:   Sat Dec 6 12:22:42 2003 +0000
+
+    Added "eu" (Basque) to ALL_LINGUAS.
+    
+    
+    2003-12-06  Iñaki Larrañaga  <dooteo euskalgnu org>
+    
+       * configure.in: Added "eu" (Basque) to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 08aac74397faf9d0f7f1a6082b99baf0970c4585
+Author: Iñaki Larrañaga <dooteo euskalgnu org>
+Date:   Sat Dec 6 12:19:29 2003 +0000
+
+    Added Basque (eu) translation by Alberto Fernandez <afernn euskalnet net>.
+    
+    
+    2003-12-06  Iñaki Larrañaga  <dooteo euskalgnu org>
+    
+       * eu.po: Added Basque (eu) translation by
+       Alberto Fernandez <afernn euskalnet net>.
+
+ po/ChangeLog |    5 ++
+ po/eu.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 121 insertions(+), 0 deletions(-)
+
+commit 975b0852249604153eb2922a2ffdb61250f8f327
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Tue Nov 18 04:57:27 2003 +0000
+
+    ru.po: Updated Russian translation from Russian team <gnome-cyr gnome org>.
+
+ po/ChangeLog |    5 ++
+ po/ru.po     |  159 +++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 95 insertions(+), 69 deletions(-)
+
+commit 4368ab204d5870fd30cb5b8af9c47f68243a0280
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Fri Nov 14 05:56:44 2003 +0000
+
+    ru.po: Updated Russian translation from Russian team <gnome-cyr gnome org>.
+
+ po/ChangeLog |    5 ++
+ po/ru.po     |  151 +++++++++++++++++++++++++---------------------------------
+ 2 files changed, 70 insertions(+), 86 deletions(-)
+
+commit f6577c41d7f2a0e44efff8e88cca3c558c5c18bb
+Author: Denis Lackovic <delacko src gnome org>
+Date:   Mon Nov 10 16:04:34 2003 +0000
+
+    croatian translations updated
+
+ po/hr.po |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 93dbe845c3d5075255a7f1959f2df1fd389f40d7
+Author: Denis Lackovic <delacko src gnome org>
+Date:   Fri Nov 7 18:21:52 2003 +0000
+
+    croatian translations added
+
+ po/hr.po |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 112 insertions(+), 0 deletions(-)
+
+commit a9fc418979a75179b20e622232e684e616a5df05
+Author: Yogeesh MB <yogeeshmb src gnome org>
+Date:   Fri Oct 17 07:15:35 2003 +0000
+
+    Added Kannada translations
+
+ po/ChangeLog |    4 ++
+ po/kn.po     |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 118 insertions(+), 0 deletions(-)
+
+commit 2d825d132ed09cc298bc09f553ef6915fe12734d
+Author: Christian Rose <menthos menthos com>
+Date:   Tue Oct 14 10:46:15 2003 +0000
+
+    Added "ne" to ALL_LINGUAS. Added Nepali translation by Pawan Chitrakar
+    
+    2003-10-14  Christian Rose  <menthos menthos com>
+    
+       * configure.in: Added "ne" to ALL_LINGUAS.
+       * po/ne.po: Added Nepali translation by
+       Pawan Chitrakar <pawan nplinux org>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/ne.po     |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 118 insertions(+), 1 deletions(-)
+
+commit ae74f4da61fc65a80842df7539ae6120a3d03d29
+Author: Žygimantas Beručka <uid0 tuxfamily org>
+Date:   Tue Oct 7 13:02:06 2003 +0000
+
+    Added "lt" to ALL_LINGUAS. Added Lithuanian translation by Tomas Kuliavas.
+    
+    2003-10-07  Žygimantas Beručka  <uid0 tuxfamily org>
+    
+    * configure.in: Added "lt" to ALL_LINGUAS.
+    * po/lt.po: Added Lithuanian translation by Tomas Kuliavas.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/lt.po     |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 125 insertions(+), 1 deletions(-)
+
+commit 8c91a8260dacec3774c778bf784abc13fea8112e
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Fri Sep 26 21:57:17 2003 +0000
+
+    Updated Albanian translation
+    
+    * sq.po: Updated Albanian translation
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 6ebe67e37c3bc9d475b36334fb767cdc499acbd0
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Fri Sep 26 21:55:22 2003 +0000
+
+    Updated
+
+ po/sq.po |   83 ++++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 44 insertions(+), 39 deletions(-)
+
+commit 64bf8531461a2da80a9cf0be02bb7659b6236e90
+Author: Andras Timar <timar gnome hu>
+Date:   Fri Sep 26 08:46:50 2003 +0000
+
+    Added Hungarian translation.
+    
+    2003-09-25  Andras Timar  <timar gnome hu>
+    
+       * hu.po: Added Hungarian translation.
+
+ po/ChangeLog |    4 ++
+ po/hu.po     |   88 ++++++++++++++++++----------------------------------------
+ 2 files changed, 31 insertions(+), 61 deletions(-)
+
+commit 776726695a1ebb5c32ad529278fa9540e2a5887d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 15 18:57:33 2003 +0000
+
+    add options for exercising the cursor and highlight colors. flush output
+    
+    * src/vteapp.c: add options for exercising the cursor and highlight colors.
+    * src/debug.c: flush output streams when we check if debugging is enabled,
+       because we'll probably output a string next.
+    * src/iso2022.c: don't print a zero-length string.  Yay compiler warnings.
+    * src/interpret.c: use g_print() instead of fprintf() to print.
+    * src/keymap.c,src/ssfe.c: include <stdarg.h>, hopefully fixing bug #121880
+       (or not).
+
+ ChangeLog       |   11 +++++++++++
+ doc/readme.txt  |    2 ++
+ src/debug.c     |    6 +++++-
+ src/interpret.c |   28 ++++++++++++++--------------
+ src/iso2022.c   |    3 ---
+ src/keymap.c    |    1 +
+ src/ssfe.c      |    2 ++
+ src/vteapp.c    |   27 +++++++++++++++++++++++----
+ 8 files changed, 58 insertions(+), 22 deletions(-)
+
+commit 47c5f6d0a8ffa93263ac62c707de265ef7e2cbea
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 15 18:52:24 2003 +0000
+
+    add specs for set_color_cursor and set_color_highlight.
+    
+    * python/vte.defs: add specs for set_color_cursor and set_color_highlight.
+
+ ChangeLog       |    4 ++++
+ python/vte.defs |   18 ++++++++++++++++++
+ 2 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 2227ee86b3257a05c3cc331f1e756abc84fcb721
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 15 18:51:29 2003 +0000
+
+    add vte_terminal_set_color_cursor. add vte_terminal_set_color_highlight
+    
+    * src/vte.h,src/vte.c: add vte_terminal_set_color_cursor.
+    * src/vte.h,src/vte.c: add vte_terminal_set_color_highlight (#69776).
+    * src/vte.c(vte_terminal_determine_colors): add parameters for specifying if
+       the cell being rendered is the cursor or is highlighted, probably for
+       being selected.  If either flag is set, and we've been given a color to
+       use for the purpose by a caller, use the supplied color, else use
+       inverse colors.
+
+ ChangeLog |    9 ++++
+ src/vte.c |  125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ src/vte.h |    4 ++
+ 3 files changed, 124 insertions(+), 14 deletions(-)
+
+commit ac5d608cdbe0da02d42d65cfeec538681cdedca7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 15 14:10:48 2003 +0000
+
+    don't reset the conversion state when we hit an end-of-line. I wasn't
+    
+    * src/iso2022.c(process_control): don't reset the conversion state when we hit
+       an end-of-line.  I wasn't reading RFC1468 closely enough, as it states
+       that each line begins in the same encoding as the end of the previous
+       line, and read "application should reset before end-of-line" as
+       "terminal resets at end-of-line" (bug #122156).
+
+ ChangeLog     |    7 +++++++
+ src/iso2022.c |   33 +++++++++++++++++++++++++++------
+ 2 files changed, 34 insertions(+), 6 deletions(-)
+
+commit 7fab81108d2af2a6f204464211148820253d1969
+Author: Nguyen Thai Ngoc Duy <pclouds src gnome org>
+Date:   Sat Sep 13 14:42:37 2003 +0000
+
+    update vte.vi
+
+ po/vi.po |   37 +++++++++++++++++++------------------
+ 1 files changed, 19 insertions(+), 18 deletions(-)
+
+commit 3f890cec536d2b2ca8c383531ee16f9ae29ca3e7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 11 20:48:38 2003 +0000
+
+    silence a compiler warning.
+    
+    * src/vteapp.c: silence a compiler warning.
+
+ ChangeLog    |    3 +++
+ src/vteapp.c |   10 ++++++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit c52b22bd193f2372081690339171bf34903f9b0a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 11 20:45:04 2003 +0000
+
+    ask for LC_* in addition to LANG if weird spacing errors crop up. add
+    
+    * README: ask for LC_* in addition to LANG if weird spacing errors crop up.
+    * src/vteconv.c,src/vteconv.h: add wrappers for _vte_conv which weed out some
+       compiler warnings.
+    * src/iso2022.c: use _vte_conv_cu instead of _vte_conv.
+    * src/trie.c: use _vte_conv_cu instead of _vte_conv.
+    * src/vte.c: give _vte_terminal_fudge_pango_colors a return type again.
+    * src/vtebg.c: ifdef out vte_bg_source_name, which is unused.
+    * src/vtebg.c,src/vterdb.c: wrap calls to gdk_property_get to weed out some
+       compiler warnings.
+
+ ChangeLog     |   12 ++++++++++++
+ README        |    2 +-
+ src/iso2022.c |    6 +++---
+ src/trie.c    |    2 +-
+ src/vte.c     |    1 +
+ src/vtebg.c   |   27 +++++++++++++++++----------
+ src/vteconv.c |   30 ++++++++++++++++++++++++++++++
+ src/vteconv.h |    9 +++++++++
+ src/vterdb.c  |   18 +++++++++++++++---
+ 9 files changed, 89 insertions(+), 18 deletions(-)
+
+commit 47cdbfa5cc03903bb2a3ce43a258c577a0103192
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 11 19:22:29 2003 +0000
+
+    properly resolve colors and cell properties to drawing colors. add a
+    
+    * src/vte.c(vte_terminal_draw_cells_with_attributes): properly resolve colors
+       and cell properties to drawing colors.
+    * src/vte.c(_vte_terminal_fudge_pango_colors): add a function for mapping GTK+
+       white-on-black preedit text to default reverse-colored text for the
+       terminal.
+    * src/vte.c(_vte_terminal_translate_pango_cells): don't bother doing anything
+       with the attribute for a range if the list is NULL.  Fudge
+       white-on-black text to default colors in reverse so that it works when
+       the terminal is in a black-on-white color scheme.
+
+ ChangeLog |   11 ++++++++
+ src/vte.c |   86 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 84 insertions(+), 13 deletions(-)
+
+commit f92917c8b4c52fb371335f2c66e25819ac231b69
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 11 18:22:06 2003 +0000
+
+    map weight attributes to the terminal's bold attribute.
+    
+    * src/vte.c(_vte_terminal_apply_pango_attr): map weight attributes to the
+       terminal's bold attribute.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    9 +++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+commit c9a838b195eac58b11db84d77cdcd321daf8ebf8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 11 16:45:51 2003 +0000
+
+    add. don't discard the attributes list for the preedit string -- save
+    
+    * src/vte.c(_vte_terminal_map_pango_color): add.
+    * src/vte.c(vte_terminal_im_preedit_changed): don't discard the attributes
+       list for the preedit string -- save them.
+    * src/vte.c(vte_terminal_draw_cells_with_attributes): add.
+    * src/vte.c(vte_terminal_paint): use draw_cells_with_attributes to use the
+       preedit attributes list when drawing the preedit string.  This changes
+       the way the preedit string is presented to the user, but it now looks
+       [more] like GTK+ suggests it should look, so it should be a good change.
+
+ ChangeLog |   11 +++
+ src/vte.c |  216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 213 insertions(+), 14 deletions(-)
+
+commit 1b843342150f65a772a09c821411516d06516e3d
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Wed Sep 10 20:10:44 2003 +0000
+
+    enabled header
+
+ po/ru.po |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit a68abf5b87551d60e1c50bd045fbca482320e226
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Wed Sep 10 20:10:06 2003 +0000
+
+    updated Vietnamese file
+
+ po/ChangeLog |    4 ++++
+ po/vi.po     |   54 +++++++++++++++++++++++++++---------------------------
+ 2 files changed, 31 insertions(+), 27 deletions(-)
+
+commit b827b2d0278208d17bfb2659a228345ee561bd26
+Author: Mugurel Tudor <mugurelu src gnome org>
+Date:   Tue Sep 2 20:59:25 2003 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    5 +++
+ po/ro.po     |   88 +++++++++++++++++++++------------------------------------
+ 2 files changed, 38 insertions(+), 55 deletions(-)
+
+commit 84be499c9d9b55dd11449d4935fece47b3b39024
+Author: Pablo Gonzalo del Campo <pablodc bigfoot com>
+Date:   Thu Aug 28 14:30:02 2003 +0000
+
+    Revision of Spanish translation by Francisco Javier F. Serrador
+    
+    2003-08-28  Pablo Gonzalo del Campo  <pablodc bigfoot com>
+    
+            * es.po: Revision of Spanish translation by
+                     Francisco Javier F. Serrador <serrador arrakis es>.
+
+ po/ChangeLog |    5 +++++
+ po/es.po     |   45 +++++++++++++++++++++++----------------------
+ 2 files changed, 28 insertions(+), 22 deletions(-)
+
+commit 1a6e7cfac60c34e07d36ce8fe7ee9872b908ad91
+Author: Sanlig Badral <badaa src gnome org>
+Date:   Sun Aug 24 00:09:48 2003 +0000
+
+    Updated mn translation.
+
+ po/ChangeLog |    4 +++
+ po/mn.po     |   69 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 40 insertions(+), 33 deletions(-)
+
+commit ec892f3bdcabf5255b1915458a535a4a9be8525c
+Author: Changwoo Ryu <cwryu src gnome org>
+Date:   Sat Aug 23 18:41:17 2003 +0000
+
+    Updated Korean translation.
+    
+       * ko.po: Updated Korean translation.
+
+ po/ChangeLog |    4 ++++
+ po/ko.po     |   56 ++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 32 insertions(+), 28 deletions(-)
+
+commit 4030755b729edf86e657efc9c2104a7d81526ada
+Author: Andraz Tori <minmax src gnome org>
+Date:   Sat Aug 23 17:32:37 2003 +0000
+
+    Updated Slovenian translation
+
+ po/sl.po |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 42f01163d77ee0b58bf149b7d67a73a78bdde02d
+Author: Andraz Tori <minmax src gnome org>
+Date:   Sat Aug 23 17:16:08 2003 +0000
+
+    Updated Slovenian translation
+
+ po/sl.po |   68 +++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 34 insertions(+), 34 deletions(-)
+
+commit 674dc22dddcc40a54ce0d3a97b6e2f95e092fb07
+Author: Stano Visnovsky <stano src gnome org>
+Date:   Fri Aug 22 06:21:46 2003 +0000
+
+    Also update the translation :-((
+
+ po/sk.po |   99 ++++++++++++++++++++++---------------------------------------
+ 1 files changed, 36 insertions(+), 63 deletions(-)
+
+commit a3d3b89b1817b8827ed86ac9bd78d8adbd2a7bf7
+Author: Stanislav Visnovsky <visnovsky nenya ms mff cuni cz>
+Date:   Fri Aug 22 06:21:10 2003 +0000
+
+    Update Slovak translation.
+    
+    2003-08-22  Stanislav Visnovsky  <visnovsky nenya ms mff cuni cz>
+    
+            * sk.po: Update Slovak translation.
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 71577720aff198343cc94797f7c636cea623bf3e
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Wed Aug 20 13:34:15 2003 +0000
+
+    Update Norwegian translation.
+    
+    2003-08-20  Kjartan Maraas  <kmaraas gnome org>
+    
+       * no.po: Update Norwegian translation.
+
+ po/ChangeLog |    4 +++
+ po/no.po     |   83 +++++++++++++++++++---------------------------------------
+ 2 files changed, 31 insertions(+), 56 deletions(-)
+
+commit 7d2f8c81aeacf58edb470253001b046808f79de9
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Mon Aug 18 16:49:54 2003 +0000
+
+    Updated traditional Chinese translation.
+    
+       * zh_TW.po: Updated traditional Chinese translation.
+
+ po/ChangeLog |    4 ++++
+ po/zh_TW.po  |   49 +++++++++++++++++++++++++------------------------
+ 2 files changed, 29 insertions(+), 24 deletions(-)
+
+commit 1c940776305e11747ebe5052652b6296b6e3e076
+Author: Metin Amiroff <metin karegen com>
+Date:   Mon Aug 18 10:57:12 2003 +0000
+
+    Updated Azerbaijani translation.
+    
+    2003-08-18  Metin Amiroff <metin karegen com>
+    
+       * az.po: Updated Azerbaijani translation.
+
+ po/ChangeLog |    4 ++++
+ po/az.po     |   46 +++++++++++++++++++++-------------------------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+commit 2b77e416c12119396be80d01d1f25932bf57ac4e
+Author: Evandro Fernandes Giovanini <evandrofg ig com br>
+Date:   Sun Aug 17 03:47:44 2003 +0000
+
+    Updated Brazilian Portuguese translation.
+    
+    2003-08-17  Evandro Fernandes Giovanini  <evandrofg ig com br>
+    
+            * pt_BR.po: Updated Brazilian Portuguese translation.
+
+ po/ChangeLog |    4 +++
+ po/pt_BR.po  |   70 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 39 insertions(+), 35 deletions(-)
+
+commit 3df7fa7f219d8dcad5a89f573ece5ea59a832182
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 05:50:15 2003 +0000
+
+    add sequences for linux-console-cursor-attributes, which we'll ignore (bug
+    
+    * src/caps.c: add sequences for linux-console-cursor-attributes, which we'll
+       ignore (bug #108232).
+
+ ChangeLog  |    4 ++++
+ src/caps.c |    2 ++
+ src/vte.c  |    1 +
+ 3 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 54a1c9d3e0b13f9d110280e25b33536331661fe5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 05:05:21 2003 +0000
+
+    if we don't find the python headers (even if we found python), disable
+    
+    * configure.in: if we don't find the python headers (even if we found python),
+       disable compilation of python bindings (bug #116756).  Make the checks
+       for python support sequential for easier maintenance.
+    * python/vte.defs: add def for vte_terminal_match_set_cursor_type.  Make the
+       color argument to vte_terminal_set_background_tint_color const.
+    * python/vte.override(_wrap_vte_terminal_forkpty): add.
+    * python/vte.override(_wrap_vte_terminal_fork_command): don't leak envv.
+
+ ChangeLog           |    9 +++++++
+ configure.in        |   59 ++++++++++++++++++++++++++++++--------------------
+ python/vte.defs     |   25 ++++++++++++++++++++-
+ python/vte.override |   55 +++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 25 deletions(-)
+
+commit 23eec8755cab0e9c9c64c9fd4b89889b9f6e0be1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 04:20:18 2003 +0000
+
+    doc update to note that directory and envv can be NULL for both.
+    
+    * src/vte.c(vte_terminal_fork_command,vte_terminal_forkpty): doc update to note
+       that directory and envv can be NULL for both.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    7 ++++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 53e026ce9cf40ca2ce3c265e20c58be58e97bef7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 04:16:58 2003 +0000
+
+    if -S is passed, use forkpty to start a child that just counts until
+    
+    * src/vteapp.c(main): if -S is passed, use forkpty to start a child that just
+       counts until killed with Ctrl-C.
+
+ ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit bfabf9b46cd6739d974a0ce727278951f1fedbc7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 04:15:26 2003 +0000
+
+    exit on any error, to avoid leaving random unreaped children running.
+    
+    * src/pty.c(_vte_pty_run_on_pty): exit on any error, to avoid leaving random
+       unreaped children running.  Accept NULL command indicating that no
+       exec() should occur, but still error out if command isn't NULL and
+       exec() fails.
+    * src/pty.c(_vte_pty_fork_on_pty_name,_vte_pty_fork_on_pty_fd): store 0 as the
+       new child's PID if we're the child.
+    * src/pty.c(main): don't run "tty" by default, test the forkpty() case instead.
+    * src/vte.c(vte_terminal_fork_command): rename to _vte_terminal_fork_basic.
+       Remove code to replace NULL command with the user's shell.
+    * src/vte.c(vte_terminal_fork_command): new (sort of)! wrap
+       _vte_terminal_fork_basic, replacing a NULL command with the user's
+       shell.
+    * src/vte.c(vte_terminal_forkpty),src/vte.h: new! wrap _vte_terminal_fork_basic,
+       passing NULL for the command and argv arguments (bug #116450).
+    * src/Makefile.am: update shared library version.
+    * doc/reference/vte-sections.txt: add vte_terminal_forkpty.
+
+ ChangeLog                      |   21 ++++
+ doc/reference/tmpl/vte.sgml    |   14 +++
+ doc/reference/vte-sections.txt |    1 +
+ src/Makefile.am                |   10 +-
+ src/pty.c                      |  222 ++++++++++++++++++++++++----------------
+ src/vte.c                      |  151 +++++++++++++++++++--------
+ src/vte.h                      |    7 ++
+ src/vteapp.c                   |   72 ++++++++++---
+ 8 files changed, 345 insertions(+), 153 deletions(-)
+
+commit 99444442a83f4422ccad6d626d8983cf9667823c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 04:06:39 2003 +0000
+
+    if <ft2build.h> isn't found, then we can't use any freetype-specific bits,
+    
+    * configure.in: if <ft2build.h> isn't found, then we can't use any
+       freetype-specific bits, and that's not useful.  Error out, and say
+       that we need freetype 2.0.2 or newer, which introduced this header
+       into the procedure (bug #116341).
+
+ ChangeLog    |    6 ++++++
+ configure.in |    5 ++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit ed3e478cd5d03e9c4abd514e6f8d5228f1cebe62
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 02:07:04 2003 +0000
+
+    don't create an accessible peer at init() time in debug mode. add a field
+    
+    * src/vte.c: don't create an accessible peer at init() time in debug mode.
+    * gnome-pty-helper/gnome-pty-helper.c(struct pty_info): add a field to keep
+       track of whether or not we created a lastlog record (bug #116091).
+    * gnome-pty-helper/gnome-pty-helper.c(shutdown_pty): also try to write a logout
+       record if pi->lastlog is true, because in doing so we free pi->data,
+       closing a leak (bug #116091).
+
+ ChangeLog                           |    9 +++++++++
+ gnome-pty-helper/gnome-pty-helper.c |    9 +++++----
+ src/vte.c                           |    4 ++--
+ 3 files changed, 16 insertions(+), 6 deletions(-)
+
+commit b9cb58a14dd7a0ead9635174db49c53e73233390
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 01:34:55 2003 +0000
+
+    don't add the padding in when calculating the new window size.
+    
+    * src/vteapp.c(resize_window): don't add the padding in when calculating the
+       new window size.
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |    8 ++++++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 6ab10dbe84b5b6ad57ed0fdfdde701a087b1ce9d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 01:28:36 2003 +0000
+
+    note that dimensions passed in with the resize-window signal include
+    
+    * doc/reference/tmpl/vte.sgml: note that dimensions passed in with the
+       resize-window signal include padding (more of bug #119141).
+
+ ChangeLog                   |    4 ++++
+ doc/reference/tmpl/vte.sgml |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 21d67c812337f527de39265ce6f50b3eb92415a5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 13 01:22:26 2003 +0000
+
+    remove redundant type checks. return a boolean indicating whether or not
+    
+    * src/vte.c(vte_sequence_handler_character_attributes,
+       vte_sequence_handler_decset_internal): remove redundant type checks.
+    * src/vte.c(all signal handlers): return a boolean indicating whether or not
+       to exit the processing loop instance early to allow the application to
+       deal with some input (usually along the lines of a signal requesting
+       that the terminal be resized) (bug #118938).
+
+ ChangeLog |   10 +-
+ src/vte.c |  756 ++++++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 460 insertions(+), 306 deletions(-)
+
+commit 6b1e929885a8ce5d07207a4e5dacb76fe14646ec
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 12 22:10:04 2003 +0000
+
+    reorder arguments to match the order for the C versions (#118882). fix
+    
+    * python/vte.override(get_text,get_text_range): reorder arguments to match
+       the order for the C versions (#118882).
+    * python/vte.override(get_text,get_text_range,call_callback): fix refcounting
+       and callback argument marshalling (bug #118882).
+    * python/vte-demo.py: exercies get_text() on "window-raise" signals.
+
+ ChangeLog           |    7 ++
+ python/vte-demo.py  |   12 ++++
+ python/vte.override |  177 ++++++++++++++++++++++++++------------------------
+ 3 files changed, 111 insertions(+), 85 deletions(-)
+
+commit 56a84e5e113ac16c28c79d762d01e2bf0c15da42
+Author: Padraig O'Briain <padraig obriain sun com>
+Date:   Tue Aug 12 13:17:33 2003 +0000
+
+    New function containing initialization code previously in
+    
+    2003-08-12  Padraig O'Briain  <padraig obriain sun com>
+    
+       * src/vteaccess.c:
+       (vte_terminal_initialize): New function containing initialization code
+       previously in vte_terminal_accessible_new. Also set role in
+       this function.
+       (vte_terminal_accessible_class_init): Specify function pointer for
+       vte_terminal_initialize.
+       (vte_terminal_accessible_get_type): Do not set instance data size or
+       GInstanceInitFunc. Remove vte_terminal_accessible_init.
+    
+       This fixes bug #119694.
+
+ ChangeLog       |   13 +++++++
+ src/vteaccess.c |  100 ++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 65 insertions(+), 48 deletions(-)
+
+commit d574a21aae2d1201772394d8900083f1517dec1f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 19:35:03 2003 +0000
+
+    add binding for get_padding() (bug #118834).
+    
+    * python/vte.override: add binding for get_padding() (bug #118834).
+
+ ChangeLog           |    3 +++
+ python/vte.override |   15 +++++++++++++++
+ 2 files changed, 18 insertions(+), 0 deletions(-)
+
+commit f66cbcac552c13cc87c0275c833dd7b0514a22b4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 19:31:06 2003 +0000
+
+    add binding for get_cursor_position() (bug #118800).
+    
+    * python/vte.override: add binding for get_cursor_position() (bug #118800).
+
+ ChangeLog           |    4 ++++
+ python/vte.override |   16 ++++++++++++++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 12d3080b535d3cac358f10f6eeed222b547a28e1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 19:27:42 2003 +0000
+
+    give length parameters for feed() and feed_child() default values of -1
+    
+    * python/vte.defs: give length parameters for feed() and feed_child() default
+       values of -1 (bug #118711).
+    * python/vte.override: use the length parameter if it's supplied to the feed()
+       and feed_child() methods.
+
+ ChangeLog           |    6 ++++++
+ python/vte.defs     |    4 ++--
+ python/vte.override |   20 ++++++++++++++++++++
+ 3 files changed, 28 insertions(+), 2 deletions(-)
+
+commit 4fda439d4cae15a883225f48e42f8d94e6583b85
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 19:19:22 2003 +0000
+
+    add overrides for feed() and feed_child() methods which use the length of
+    
+    * python/vte.override: add overrides for feed() and feed_child() methods which
+       use the length of the string as given in C, to hopefully allow passing
+       NUL bytes around as part of strings (bug #118711).  Make the length
+       parameter optional, and ignored, to try to avoid breaking existing
+       Python code in an obvious way.
+
+ ChangeLog           |    7 +++++++
+ python/vte.override |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 0 deletions(-)
+
+commit 6673b67fda3b1974cdab4a369dc7d866b34104c4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 18:55:29 2003 +0000
+
+    drop an unnecessary cast-and-check, which we don't need because we have no
+    
+    * src/vte.c(vte_terminal_start_selection,vte_terminal_extend_selection): drop
+       an unnecessary cast-and-check, which we don't need because we have no
+       use for the GtkWidget pointer to the terminal.  Fix initial shift-click
+       (bug #118106).
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   58 +++++++++++++++++++++++++++++++++++++---------------------
+ 2 files changed, 43 insertions(+), 21 deletions(-)
+
+commit ec49da165a83192a802a88ec111a72283cc688a1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 16:17:35 2003 +0000
+
+    error out if we don't find ncurses, curses, or libtermcap development
+    
+    * configure.in: error out if we don't find ncurses, curses, or libtermcap
+       development headers (bug #117754).
+
+ ChangeLog    |    4 ++++
+ configure.in |    5 ++++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 583c3fa685a4210621973f9718ac2c715abf3807
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 11 16:06:49 2003 +0000
+
+    export WANT_AUTOCONF_2_5 for the sake of Mandrake autoconf wrapper (bug
+    
+    * autogen.sh: export WANT_AUTOCONF_2_5 for the sake of Mandrake autoconf
+       wrapper (bug #119066).
+
+ ChangeLog  |    4 ++++
+ autogen.sh |    3 +++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 3cb9fd6106fc89f14c0c192c4fdf89c2a55d55ee
+Author: Wang Jian <lark src gnome org>
+Date:   Sat Aug 9 10:39:05 2003 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    5 +++
+ po/zh_CN.po  |   82 ++++++++++++++++++++-------------------------------------
+ 2 files changed, 34 insertions(+), 53 deletions(-)
+
+commit 574fb4d3c4b0c8caed6c2e00f038be5e1eeb58b7
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Thu Aug 7 04:30:41 2003 +0000
+
+    be.po: Updated Belarusian translation from Belarusian team <i18n mova org>.
+
+ po/ChangeLog |    5 +++++
+ po/be.po     |   54 ++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 35 insertions(+), 24 deletions(-)
+
+commit 88392e65f196fdd6305838e6d0a689dce3f18f85
+Author: Yuri Syrota <rasta src gnome org>
+Date:   Wed Aug 6 09:52:21 2003 +0000
+
+    Updated Ukrainian translations
+
+ po/uk.po |   81 ++++++++++++++++++-------------------------------------------
+ 1 files changed, 24 insertions(+), 57 deletions(-)
+
+commit aefd7108001b6bcbb37376a1b3a6037b4c8b5083
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 5 05:05:37 2003 +0000
+
+    include the widget's padding widths in resize requests (bug #119141).
+    
+    * vte.c(vte_sequence_handler_decset_internal,
+       vte_sequence_handler_window_manipulation): include the widget's padding
+       widths in resize requests (bug #119141).
+
+ ChangeLog |    5 +++++
+ src/vte.c |   24 ++++++++++++++++--------
+ 2 files changed, 21 insertions(+), 8 deletions(-)
+
+commit ac280b16e78961a71cfeb56dc2d25ea0b2b49166
+Author: Sajith VK <sajith_vk src gnome org>
+Date:   Sat Aug 2 13:08:05 2003 +0000
+
+    The mass commit, to synchronise SMC and Gnome CVS
+
+ po/ml.po |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 83476088a2573f1e23e12fb21b9c9234c970ba64
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jul 30 21:43:42 2003 +0000
+
+    check for autoconf-2.51, autoconf-2.50, autoconf-2.5 when looking for
+    
+    * autogen.sh: check for autoconf-2.51, autoconf-2.50, autoconf-2.5 when looking
+       for autoconf 2.5x (bug #118627).
+
+ ChangeLog  |    6 +++++-
+ autogen.sh |    2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 32ba49340ecfb1d6dda4e4d0147e9fdee9cc9114
+Author: Sajith VK <sajith_vk src gnome org>
+Date:   Sun Jul 27 12:57:11 2003 +0000
+
+    ok
+
+ po/ml.po |   79 ++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 39 insertions(+), 40 deletions(-)
+
+commit 787a8eb6ac714be94becc54a34ae654579987a2d
+Author: Hasbullah Bin Pit <sebol ikhlas com>
+Date:   Wed Jul 23 13:11:48 2003 +0000
+
+    Updated Malay translation.
+    
+    2003-07-22  Hasbullah Bin Pit <sebol ikhlas com>
+    
+            * ms.po: Updated Malay translation.
+
+ po/ChangeLog |    4 +++
+ po/ms.po     |   71 ++++++++++++++++++++++++++++++++++++----------------------
+ 2 files changed, 48 insertions(+), 27 deletions(-)
+
+commit e82a392d075a35581fddf24dbc2f0a32714bdd39
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 21 15:09:11 2003 +0000
+
+    define _XOPEN_SOURCE_EXTENDED, _XOPEN_SOURCE, and __EXTENSIONS__ for
+    
+    * gnome-pty-helper/configure.in: define _XOPEN_SOURCE_EXTENDED, _XOPEN_SOURCE,
+       and __EXTENSIONS__ for Solaris, as we do in the top-level configure
+       (bug #117636).
+
+ ChangeLog                     |    5 +++++
+ gnome-pty-helper/configure.in |   15 +++++++++++++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 5123fa850ba5db256540a6d03880854a85028ed2
+Author: Vincent van Adrighem <V vanAdrighem dirck mine nu>
+Date:   Sun Jul 20 13:38:10 2003 +0000
+
+    Dutch translation updated by Tino Meinen.
+    
+    2003-07-20  Vincent van Adrighem  <V vanAdrighem dirck mine nu>
+    
+       * nl.po: Dutch translation updated by Tino Meinen.
+
+ po/ChangeLog |    4 +++
+ po/nl.po     |   64 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 36 insertions(+), 32 deletions(-)
+
+commit f3342f25b3f400513d220bc039c34ccae7d77a8f
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Sun Jul 20 01:40:56 2003 +0000
+
+    Mark wrong entry as fuzzy (msgfmt check failed).
+    
+       * li.po: Mark wrong entry as fuzzy (msgfmt check failed).
+
+ po/ChangeLog |    4 ++++
+ po/li.po     |   12 ++++++------
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+commit 5019e03463768e0c35c7fd569f12b12f4f0d71c1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jul 16 23:03:52 2003 +0000
+
+    check for grantpt in libc and then in libpt. Check for openpty in libc
+    
+    * gnome-pty-helper/configure.in: check for grantpt in libc and then in libpt.
+       Check for openpty in libc before checking libutil.  Check for sendmsg
+       in libc before checking libsocket (with libnsl) (#117636).
+
+ ChangeLog                     |    5 +++++
+ gnome-pty-helper/configure.in |   13 +++----------
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+commit 4b278c39b0b1e46bc6fa2b36f185736036b674a4
+Author: Kostas Papadimas <pkst src gnome org>
+Date:   Tue Jul 15 15:08:11 2003 +0000
+
+    Updated the Greek translation
+
+ po/ChangeLog |    4 +++
+ po/el.po     |   65 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 38 insertions(+), 31 deletions(-)
+
+commit 5ff9ecb6f89cd8a546c3fa3aa00d649d15002555
+Author: Metin Amiroff <metin karegen com>
+Date:   Sun Jul 13 08:51:41 2003 +0000
+
+    Updated Azerbaijani translation.
+    
+    2003-07-13  Metin Amiroff  <metin karegen com>
+    
+       * az.po: Updated Azerbaijani translation.
+
+ po/ChangeLog |    4 ++
+ po/az.po     |  102 +++++++++++++++++++++++-----------------------------------
+ 2 files changed, 44 insertions(+), 62 deletions(-)
+
+commit b68715f2751b5d3e9ad54a97ad6664835393e85f
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Fri Jul 11 08:31:33 2003 +0000
+
+    Added Walloon file
+
+ ChangeLog    |    3 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/wa.po     |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 122 insertions(+), 1 deletions(-)
+
+commit 557b9a060ddf6e3c689605949e59a079ee8fb3e3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 10 20:38:11 2003 +0000
+
+    - hmm, need to add these
+
+ src/vteregex.c |  261 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteregex.h |   40 +++++++++
+ 2 files changed, 301 insertions(+), 0 deletions(-)
+
+commit 0cf9f86796f99e7f9ca6b56ecaea38e99e0204d6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 10 20:32:07 2003 +0000
+
+    add. use interfaces from vteregex for doing dingus matching.
+    
+    * src/vteregex.h, src/vteregex.c: add.
+    * src/vte.c: use interfaces from vteregex for doing dingus matching.
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    2 ++
+ src/vte.c       |   44 +++++++++++++++++++++++---------------------
+ 3 files changed, 29 insertions(+), 21 deletions(-)
+
+commit 6c22c8aaf484f65e32523c539746d7880b67479f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jul 4 03:53:42 2003 +0000
+
+    return an empty string in response to the ENQ control sequence instead of
+    
+    * src/vte.c(vte_sequence_handler_return_terminal_status): return an empty
+       string in response to the ENQ control sequence instead of "xterm".
+       Report and patch from Mariano Suárez-Alvarez (bug #116495).
+
+ ChangeLog |    5 +++++
+ src/vte.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 8a641fdff72f4abee7a66601aefe88d8a65ad537
+Author: Pablo Gonzalo del Campo <pablodc bigfoot com>
+Date:   Wed Jul 2 14:35:41 2003 +0000
+
+    Updated Spanish translation by Francisco Javier F. Serrador
+    
+    2003-07-02  Pablo Gonzalo del Campo  <pablodc bigfoot com>
+    
+            * es.po: Updated Spanish translation by
+                     Francisco Javier F. Serrador <serrador arrakis es>.
+
+ po/ChangeLog |    5 +++++
+ po/es.po     |   55 +++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 34 insertions(+), 26 deletions(-)
+
+commit ddad9e00e4d0442d761390480aafd9c85713121f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 27 16:27:19 2003 +0000
+
+    treat the "big5hkscs" encoding as an East Asian encoding, which uses
+    
+    * src/iso2022.c: treat the "big5hkscs" encoding as an East Asian encoding,
+       which uses ambiguous widths (#116078).  Report and patch from Roger So.
+    * src/dumpkeys.c, src/iso2022.c, src/iso8859mode.c, src/nativeecho.c,
+       src/utf8echo.c, src/utf8mode.c, src/vte.c: don't use the literal escape
+       character, express it as an octal sequence.
+
+ ChangeLog         |    8 ++++++++
+ src/dumpkeys.c    |    2 +-
+ src/iso2022.c     |    1 +
+ src/iso8859mode.c |    2 +-
+ src/nativeecho.c  |    2 +-
+ src/utf8echo.c    |    2 +-
+ src/utf8mode.c    |    2 +-
+ src/vte.c         |   10 ++++++----
+ 8 files changed, 20 insertions(+), 9 deletions(-)
+
+commit 668ee92b8dc84d26941756039b16586eb8529f2d
+Author: Artur Flinta <aflinta cvs gnome org>
+Date:   Fri Jun 27 08:20:24 2003 +0000
+
+    Updated Polish translation.
+    
+    2003-06-27  Artur Flinta  <aflinta cvs gnome org>
+    
+       * pl.po: Updated Polish translation.
+
+ po/ChangeLog |    4 ++++
+ po/pl.po     |   56 ++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 32 insertions(+), 28 deletions(-)
+
+commit ad1489055c1bad831a9ea642d607a10669926e90
+Author: Danilo Šegan <dsegan gmx net>
+Date:   Sat Jun 21 23:45:03 2003 +0000
+
+    Updated Serbian translation by Serbian team (Prevod.org).
+    
+    2003-06-22  Danilo Šegan  <dsegan gmx net>
+    
+       * sr.po, sr Latn po: Updated Serbian translation by Serbian team
+       (Prevod.org).
+
+ po/ChangeLog  |    5 ++++
+ po/sr.po      |   65 +++++++++++++++++++++++++++++----------------------------
+ po/sr Latn po |   65 +++++++++++++++++++++++++++++----------------------------
+ 3 files changed, 71 insertions(+), 64 deletions(-)
+
+commit c8bf89769f866b784f58bd0d297a68ba463dbdc9
+Author: updated ja.po. T.Aihana <aihana gnome gr jp>
+Date:   Fri Jun 20 14:17:12 2003 +0000
+
+    2003-06-20 updated ja.po. T.Aihana <aihana gnome gr jp>
+
+ po/ChangeLog |   12 ++++++---
+ po/ja.po     |   79 +++++++++++++++++----------------------------------------
+ 2 files changed, 32 insertions(+), 59 deletions(-)
+
+commit f19a106b6b69f2827905c4e1ce295a7c90099f57
+Author: Alessio Frusciante <algol src gnome org>
+Date:   Thu Jun 19 22:22:36 2003 +0000
+
+    Updated Italian translation by Francesco Marletta.
+
+ po/ChangeLog |    5 +++
+ po/it.po     |   79 ++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 43 insertions(+), 41 deletions(-)
+
+commit 6cc98c04d7adc96aea8a1e0446574e128a6a4d14
+Author: Ivan Stojmirov <stojmir src gnome org>
+Date:   Thu Jun 19 10:39:29 2003 +0000
+
+    added Macedonian translation
+
+ po/mk.po |   90 +++++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 48 insertions(+), 42 deletions(-)
+
+commit 1b7ef9343be230382da4363ab079a36a0b81a808
+Author: Pauli Virtanen <pauli virtanen hut fi>
+Date:   Tue Jun 17 18:35:52 2003 +0000
+
+    Updated Finnish translation.
+    
+    2003-06-17  Pauli Virtanen  <pauli virtanen hut fi>
+    
+       * fi.po: Updated Finnish translation.
+
+ po/ChangeLog |    4 ++
+ po/fi.po     |   89 ++++++++++++++++++---------------------------------------
+ 2 files changed, 32 insertions(+), 61 deletions(-)
+
+commit 7e35a7b643e25eefd9f7501f89667f9e709d5e62
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 23:20:22 2003 +0000
+
+    add vertical-tab and form-feed to the list of control sequences. add. add.
+    
+    * src/caps.c: add vertical-tab and form-feed to the list of control sequences.
+    * src/vte.c(vte_controL_sequence_handler_form_feed): add.
+    * src/vte.c(vte_controL_sequence_handler_vertical_tab): add.
+
+ ChangeLog         |    6 ++++++
+ doc/vttest.tar.gz |  Bin 98911 -> 100593 bytes
+ src/caps.c        |   22 ++++++++++++----------
+ src/vte.c         |   26 ++++++++++++++++++++++++++
+ 4 files changed, 44 insertions(+), 10 deletions(-)
+
+commit c118a0aaa3f7688095498b1ea4e86bf5955e9863
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 22:01:26 2003 +0000
+
+    - actually include changelog items in the .spec file
+
+ vte.spec |    9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 954bb555c57b45ec8d72aed7a6a3d991b5f69045
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:55:07 2003 +0000
+
+    - aargh
+
+ NEWS |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 887090100bb4e50db662ab45ae5ff400846ddf6a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:44:56 2003 +0000
+
+    - 0.11.10
+
+ vte.spec |   12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+commit 192fd5f2d6009e88aec4140405e1bb98b1ba93e8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:44:32 2003 +0000
+
+    - generate the makefile in doc/openi18n
+
+ configure.in |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit a42f429d540f625ab0495e222ece404c0e98b234
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:41:23 2003 +0000
+
+    - fixup builds for openi18n subdirectory
+
+ doc/Makefile.am          |    2 +-
+ doc/openi18n/Makefile    |    2 --
+ doc/openi18n/Makefile.am |    5 +++++
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 790ab531e6d912a7460a44a8ac8cf78a3311b2ee
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:23:02 2003 +0000
+
+    fix a compiler warning.
+    
+    * src/vteaccess.c(xy_from_offset): fix a compiler warning.
+
+ ChangeLog       |    3 +++
+ src/vteaccess.c |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 20073178e993a6d37d736d6e0f55cad0f6e31989
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:16:33 2003 +0000
+
+    - add new header
+
+ src/vteint.h |   32 ++++++++++++++++++++++++++++++++
+ 1 files changed, 32 insertions(+), 0 deletions(-)
+
+commit 8adb2183f4faaa5a1c1b319b67433facb9a877cb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:15:10 2003 +0000
+
+    add. Move private VteTerminal stuff which needs to be shared with other
+    
+    * src/vteint.h: add.  Move private VteTerminal stuff which needs to be shared
+       with other modules in the library here.
+    * src/vtedraw.c, src/vtedraw.h: add get_char_width(), for use in drawing the
+       cursor.
+    * src/vte.c(vte_invalidate_cursor_once): if the character under the cursor
+       doesn't fit into its cell, expose the column to the right of it so
+       that we can paint into the adjacent cell.
+    * src/vte.c(vte_terminal_paint): when clearing the area behind the cursor or
+       drawing the hollow rectangle to indicate its position when we don't
+       have focus, use the visible width of the character instead of just
+       assuming it will fit.  This complies better with assertion 2.
+
+ ChangeLog       |   13 +++++++++++++
+ src/Makefile.am |    3 ++-
+ src/vte.c       |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++----
+ src/vte.h       |    3 ---
+ src/vteaccess.c |    1 +
+ src/vtedraw.c   |    8 ++++++++
+ src/vtedraw.h   |    2 ++
+ src/vteft2.c    |   17 +++++++++++++++++
+ src/vtegl.c     |   17 +++++++++++++++++
+ src/vtepango.c  |    7 +++++++
+ src/vtepangox.c |    7 +++++++
+ src/vteskel.c   |    7 +++++++
+ src/vtexft.c    |   15 +++++++++++++++
+ 13 files changed, 147 insertions(+), 8 deletions(-)
+
+commit e4291049ee75670265a55cc77d131ac279f8072e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 16 21:10:03 2003 +0000
+
+    - add sample text from the openi18n web site
+
+ doc/openi18n/Makefile  |    2 +
+ doc/openi18n/UTF-8.txt |   18 +++++++++++++++
+ doc/openi18n/cursor.c  |   57 ++++++++++++++++++++++++++++++++++++++++++++++++
+ doc/openi18n/wrap.txt  |    1 +
+ doc/readme.txt         |   12 ++++++---
+ 5 files changed, 86 insertions(+), 4 deletions(-)
+
+commit b887842b0b284cf111b9bff435e2b50e2d05a3dd
+Author: Gil Osher <dolfin src gnome org>
+Date:   Thu Jun 12 13:25:08 2003 +0000
+
+    Updated Hebrew translation.
+    
+    
+    * he.po: Updated Hebrew translation.
+
+ po/ChangeLog |   12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 7a3386c9c59b6fe036521cc987f8c464cca2eab7
+Author: Gil Osher <dolfin src gnome org>
+Date:   Thu Jun 12 13:22:22 2003 +0000
+
+    Updated Hebrew translation.
+
+ po/he.po |   61 +++++++++++++++++++++++++++++++------------------------------
+ 1 files changed, 31 insertions(+), 30 deletions(-)
+
+commit 6008da4095332ff855f972912009636276412640
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Wed Jun 11 08:02:11 2003 +0000
+
+    Updated Albanian translation.
+    
+    * sq.po: Updated Albanian translation.
+
+ po/ChangeLog |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 8de2362a167c6431ad122749b64f040e98608288
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Wed Jun 11 07:59:11 2003 +0000
+
+    Updated
+
+ po/sq.po |   68 +++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 34 insertions(+), 34 deletions(-)
+
+commit e8bd05f2d6b2c19c111960107d107156f7090e39
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 10 15:19:50 2003 +0000
+
+    set the encoding for the iso2022 converter (spotted by havill).
+    
+    * src/vte.c(vte_terminal_set_encoding): set the encoding for the iso2022
+       converter (spotted by havill).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 8b259a1eab12de54a1dcdeb4a7d34ddff46a8c6e
+Author: Christophe Merlet <redfox src gnome org>
+Date:   Sun Jun 8 19:36:56 2003 +0000
+
+    Updated French translation.
+
+ po/ChangeLog |    4 ++++
+ po/fr.po     |   45 +++++++++++++++++++++++----------------------
+ 2 files changed, 27 insertions(+), 22 deletions(-)
+
+commit 8725f0fc59da7f30524f25a397a65d5369f97f95
+Author: Sam�el J�n Gunnarsson <sammi techattack nu>
+Date:   Sat Jun 7 07:10:14 2003 +0000
+
+    Updated the Icelandic translation
+    
+    2003-06-07  Sam�el J�n Gunnarsson  <sammi techattack nu>
+    
+       * is.po: Updated the Icelandic translation
+
+ po/ChangeLog |    4 ++
+ po/is.po     |   92 +++++++++++++++++++--------------------------------------
+ 2 files changed, 35 insertions(+), 61 deletions(-)
+
+commit ef759de112cda9c2a69f68ad71bd3c022d695cfd
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 4 19:04:36 2003 +0000
+
+    - include gdkx.h on X11 systems so that XSync will be declared
+
+ src/vterdb.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit c26595fddd2951dc97d6d53967c109b370bff1e1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 4 18:47:34 2003 +0000
+
+    sync the display before trapping errors to ensure that any errors we'll
+    
+    * src/vtebg.c, src/vterdb.c: sync the display before trapping errors to ensure
+       that any errors we'll get will be handled before we remove the error
+       handlers.
+
+ ChangeLog    |    5 +++++
+ src/vtebg.c  |   17 +++++++++++++++--
+ src/vterdb.c |    7 +++++++
+ 3 files changed, 27 insertions(+), 2 deletions(-)
+
+commit 25b4aa16ff2c7002bf24d97467593caada200e38
+Author: Jonathan Blandford <jrb src gnome org>
+Date:   Tue Jun 3 21:42:03 2003 +0000
+
+    shut up cvs
+
+ src/.cvsignore |   19 +++++++++++++++++++
+ 1 files changed, 19 insertions(+), 0 deletions(-)
+
+commit dc80e3e224e6658dd8ea64c7beee3f5749d0016c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 3 21:34:27 2003 +0000
+
+    trap X errors while retrieving the contents of the root pixmap. add.
+    
+    * src/vtebg.c(_vte_bg_get_pixmap, _vte_bg_get_pixbuf): trap X errors while
+       retrieving the contents of the root pixmap.
+    * doc/ambiguous.txt: add.
+    * README: update.
+    * vte.spec: rebuild.
+
+ ChangeLog         |    7 ++++++
+ README            |   15 +++---------
+ doc/ambiguous.txt |   50 ++++++++++++++++++++++++++++++++++++++++++
+ src/vte.c         |    2 +-
+ src/vtebg.c       |   62 +++++++++++++++++++++++++++++++++++++++-------------
+ vte.spec          |    5 +++-
+ 6 files changed, 112 insertions(+), 29 deletions(-)
+
+commit cd6c601bebd395622ae714b6067c39e4163e0c4a
+Author: Jonathan Blandford <jrb redhat com>
+Date:   Tue Jun 3 19:54:15 2003 +0000
+
+    add a missing break in the switch statement.
+    
+    Tue Jun  3 15:50:38 2003  Jonathan Blandford  <jrb redhat com>
+    
+       * src/pty.c (n_read): add a missing break in the switch statement.
+
+ ChangeLog |    4 ++++
+ src/pty.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit c55667883000cc13a845619bbac8b7fcd28d72eb
+Author: Mathieu van Woerkom <mathieu brabants org>
+Date:   Tue Jun 3 12:12:00 2003 +0000
+
+    Added Limbugish translation
+    
+    2003-06-03  Mathieu van Woerkom <mathieu brabants org>
+    
+       * li.po: Added Limbugish translation
+    
+    2003-06-03  Kenneth Rohde Christiansen  <kenneth gnu org>
+       * configure.in: Added Limburgish (li) to ALL_LINGUAS.
+
+ ChangeLog    |    3 +
+ configure.in |    2 +-
+ po/ChangeLog |    3 +
+ po/li.po     |  153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 160 insertions(+), 1 deletions(-)
+
+commit b2278a00188a3070ce8398be484929c4d2e7a078
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 3 03:11:03 2003 +0000
+
+    - 0.11.9
+
+ ChangeLog       |    3 +++
+ NEWS            |    6 ++++++
+ src/Makefile.am |   14 +++++++++++---
+ src/iso2022.c   |    4 ++--
+ vte.spec        |    6 +++++-
+ 5 files changed, 27 insertions(+), 6 deletions(-)
+
+commit 86a7aaff2d490d2a5a7b6e339863ac5483ed9388
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Jun 1 22:29:20 2003 +0000
+
+    compile fix.
+    
+    * src/vtegl.c(_vte_gl_set_text_font): compile fix.
+
+ ChangeLog   |    3 +++
+ src/vtegl.c |    3 ++-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 23e200496979c4a8a1437de6d221929c7f4872a0
+Author: Dafydd Harries <daf src gnome org>
+Date:   Sun Jun 1 11:38:28 2003 +0000
+
+    Finished Welsh translation.
+
+ po/ChangeLog |    5 +++++
+ po/cy.po     |   42 ++++++++++++++++++++++++------------------
+ 2 files changed, 29 insertions(+), 18 deletions(-)
+
+commit cbaffad578df7d55168af0a4673a14a143ae1140
+Author: Christian Neumair <cneumair src gnome org>
+Date:   Sat May 31 09:32:09 2003 +0000
+
+    Updated German translation.
+
+ po/ChangeLog |    4 ++
+ po/de.po     |   97 +++++++++++++++++----------------------------------------
+ 2 files changed, 33 insertions(+), 68 deletions(-)
+
+commit 3dc885c4224d5cd21559a29c218256de50e55429
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 30 19:38:04 2003 +0000
+
+    fix logic for skipping over particular settings so that setting 1048
+    
+    * src/vte.c(vte_sequence_handler_decset_internal): fix logic for skipping over
+       particular settings so that setting 1048 actually works.
+    * src/vte.c(vte_terminal_process_incoming): in debug mode, print out characters
+       with codepoints higher than 255 in hex rather than decimal.
+    * src/iso2022.c(_vte_iso2022_ambiguous_width): rename to
+       _vte_iso2022_ambiguous_width_guess because that's all we can do without
+       more context.
+    * src/iso2022.c(_vte_iso2022_ambiguous_width): add for using the current
+       encoding to determine what the width of an ambiguously-wide character
+       should be.  This seems to work better.
+
+ ChangeLog     |   12 ++++++++++
+ src/iso2022.c |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++------
+ src/vte.c     |    6 +++-
+ 3 files changed, 72 insertions(+), 9 deletions(-)
+
+commit 7fe2fc15f18e971a45587955cd43edb9cf3c1f9a
+Author: Padraig O'Briain <padraig obriain sun com>
+Date:   Fri May 30 08:55:28 2003 +0000
+
+    Add implementation for get_character_extents, get_offset_at_point and
+    
+    2003-05-30  Padraig O'Briain  <padraig obriain sun com>
+       * src/vteaccess.c: Add implementation for get_character_extents,
+       get_offset_at_point and get_run_attributes. This fixes bug #110770.
+       Add casts to fix complier warnings on Solaris.
+    
+       * src/vtexft.c (_vte_xft_text_extents): Do not call return as function
+       returns void. Fixes compiler error on Solaris.
+
+ ChangeLog       |    8 +++
+ src/vteaccess.c |  186 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/vtexft.c    |    4 +-
+ 3 files changed, 181 insertions(+), 17 deletions(-)
+
+commit 1e67e734218e3159fcb02c53acec86d0157a5101
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 30 00:35:36 2003 +0000
+
+    require -i for icon-title-changed messages, which got really annoying
+    
+    * src/vteapp.c: require -i for icon-title-changed messages, which got really
+       annoying really fast.
+    * src/trie.c(main): use g_quark_from_static_string for static strings.
+
+ ChangeLog    |    5 +++++
+ src/trie.c   |   22 +++++++++++-----------
+ src/vteapp.c |   13 ++++++++++---
+ 3 files changed, 26 insertions(+), 14 deletions(-)
+
+commit 815eb0a3c0a2e62a008b338272ecc1b65c39b44c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 29 22:04:25 2003 +0000
+
+    fix newline stuffing (used in linefeed mode). rename to
+    
+    * src/vte.c(vte_terminal_send): fix newline stuffing (used in linefeed mode).
+    * src/vte.c(vte_unicode_strlen): rename to vte_unichar_strlen.
+    * src/vte.c(vte_terminal_set_title_internal): don't leak the new title in the
+       unlikely cases.
+    * src/vte.c(vte_terminal_process_incoming): be more careful with control
+       characters to avoid cases where we could be tricked into a loop.
+    * src/vteapp.c: emit a message when the icon title is changed.
+
+ ChangeLog    |   10 ++++
+ src/vte.c    |  146 +++++++++++++++++++++++++++++++++++-----------------------
+ src/vteapp.c |   22 ++++++++-
+ 3 files changed, 118 insertions(+), 60 deletions(-)
+
+commit 8de1e351b857e2ad8131bce4780cf24a75c694bc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 29 04:50:48 2003 +0000
+
+    handle control characters in the middle of control sequences. fix origin
+    
+    * src/vte.c(vte_terminal_process_incoming): handle control characters in the
+       middle of control sequences.
+    * src/vte.c(vte_sequence_handler_cm): fix origin mode.
+    * src/vte.c(vte_sequence_handler_cv): fix origin mode.
+    * src/vte.c(vte_sequence_handler_cs): snap the cursor to the scrolling region
+       which is set.
+    * src/table.c(_vte_table_extract_number): extract a number digit by digit as
+       we do in the trie parser.
+    * src/vte.h: declare 'struct vte_char_attributes' again to restore API back
+       compat with 0.10.x.
+    * src/iso2022.c(_vte_iso2022_sequence_length): don't recognize PM messages --
+       Xterm doesn't do anything with them and we don't want to appear to hang
+       when we're really just waiting for the end of the message.
+
+ ChangeLog     |   16 ++++++++++++++++
+ src/iso2022.c |    8 ++++++--
+ src/table.c   |   10 ++++++++--
+ src/vte.c     |   54 ++++++++++++++++++++++++++++++++++++++++++++----------
+ src/vte.h     |    7 +++++++
+ 5 files changed, 81 insertions(+), 14 deletions(-)
+
+commit fe6545d62d857fed89f471d938213c9a88d64546
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 28 23:45:09 2003 +0000
+
+    only apply DPI if we were able to get a value. use the display and screen
+    
+    * src/vtefc.c(_vte_fc_defaults_from_rdb): only apply DPI if we were able to get
+       a value.
+    * src/vterdb.c, src/vterdb.h: use the display and screen of a passed-in widget
+       if asked to do so, else use screen 0 of the default display.
+
+ ChangeLog    |    6 +++
+ src/vtefc.c  |   18 +++++----
+ src/vterdb.c |  113 ++++++++++++++++++++++++++++++++++++++-------------------
+ src/vterdb.h |   12 +++---
+ 4 files changed, 97 insertions(+), 52 deletions(-)
+
+commit d583937817cd42dccca7572fe5f1cf16ce1f7978
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 28 21:53:59 2003 +0000
+
+    check for GTK+ 2.2, and if found, force use of multihead-safe APIs to try
+    
+    * configure.in: check for GTK+ 2.2, and if found, force use of multihead-safe
+       APIs to try to flush out some bugs.
+    * src/vte.c, src/vteapp.c, src/vtedraw.c, src/vtefc.c, src/vteglyph.c: clean
+       up some sloppy multihead changes.
+    * src/vte.c, src/vte.h (vte_terminal_match_set_cursor_type): add.
+    * src/vtedraw.c, src/vtedraw.h: add a draw_char() method which is allowed to
+       fail.
+    * src/vte.c(vte_terminal_draw_graphic): separate the width of a column and the
+       number of columns to be drawn.  Use _vte_draw_char() to avoid
+       crude approximations of characters when we have a font for them.
+
+ ChangeLog       |   12 +++
+ configure.in    |   10 ++-
+ src/vte.c       |  230 +++++++++++++++++++++++++++++++++++++++++++++++++------
+ src/vte.h       |    2 +
+ src/vteapp.c    |   16 ++--
+ src/vtedraw.c   |   24 ++++++-
+ src/vtedraw.h   |    6 ++
+ src/vtefc.c     |   37 ++++++---
+ src/vtefc.h     |    3 +-
+ src/vteft2.c    |   22 +++++-
+ src/vtegl.c     |   19 +++++
+ src/vteglyph.c  |    5 +-
+ src/vteglyph.h  |    4 +-
+ src/vtepango.c  |   12 +++-
+ src/vtepangox.c |   10 +++
+ src/vteskel.c   |   11 +++
+ src/vtexft.c    |   66 +++++++++++++---
+ 17 files changed, 427 insertions(+), 62 deletions(-)
+
+commit 7db421ff8483c411566b81fadccacf420c17115b
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Mon May 26 20:54:00 2003 +0000
+
+    Updated Portuguese translation.
+    
+    2003-05-26  Duarte Loreto <happyguy_pt hotmail com>
+    
+            * pt.po: Updated Portuguese translation.
+
+ po/ChangeLog |    4 ++++
+ po/pt.po     |   38 +++++++++++++++++++-------------------
+ 2 files changed, 23 insertions(+), 19 deletions(-)
+
+commit f4bfc34e8411acd285ac70243183ec35dd9f47d3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 22 19:24:51 2003 +0000
+
+    - 0.11.8
+
+ NEWS     |    1 +
+ vte.spec |    6 +++++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit c5bc6f08c3c37303c5d071104c30241e9322fa94
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 22 19:14:49 2003 +0000
+
+    force an entire window repaint if we're supposed to scroll the background
+    
+    * src/vte.c(vte_terminal_scroll_region): force an entire window repaint if
+       we're supposed to scroll the background but we're not scrolling the
+       entire window.  This means we need to repaint the scrolled region, and
+       to keep things looking right, we need to repaint everything.
+    * src/vteapp.c(main): enable visible bell if we're disabling the audible bell,
+       and vice-versa.
+    * src/vte.c: flesh out some doc comments.
+    * doc/reference/tmpl/vte.sgml: flesh out some notes on signals.
+
+ ChangeLog                   |   10 ++++++++++
+ doc/reference/tmpl/vte.sgml |    4 +++-
+ src/vte.c                   |   39 ++++++++++++++++++++++-----------------
+ src/vteapp.c                |    1 +
+ 4 files changed, 36 insertions(+), 18 deletions(-)
+
+commit ffcc4a77caa05fb6affd77871701f1692ef6a96b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 21 23:32:32 2003 +0000
+
+    pass zero bytes which trigger EILSEQ through and keep going. replace use
+    
+    * src/vteconv.c(_vte_conv): pass zero bytes which trigger EILSEQ through and
+       keep going.
+    * src/vteconv.c: replace use of g_utf8_strlen with an internal function which
+       doesn't stop counting at NUL characters.
+
+ ChangeLog     |    6 +++
+ src/vteconv.c |  136 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 132 insertions(+), 10 deletions(-)
+
+commit 4ad1f62b6a3c899403a13df8ddbd534102813211
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 21 22:03:15 2003 +0000
+
+    - disable glX by default
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9a386e75d805a18ef6817deb933c4df46880d674
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 21 21:47:02 2003 +0000
+
+    use _vte_matcher_free_params_array. add a parameter for indicating if this
+    
+    * src/interpret.c: use _vte_matcher_free_params_array.
+    * src/vte.c(vte_invalidate_cursor_once): add a parameter for indicating if this
+       is a "cursor blink" (periodic) refresh, and if it is set and the cursor
+       isn't supposed to blink, suppress the invalidate.
+
+ ChangeLog       |    6 ++++++
+ src/interpret.c |    2 +-
+ src/vte.c       |   20 +++++++++++++-------
+ 3 files changed, 20 insertions(+), 8 deletions(-)
+
+commit dc2184423cc237fb277587553b0eb07a716089f7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 21 21:42:17 2003 +0000
+
+    free the temporary array. add. use _vte_matcher_free_params_array instead
+    
+    * src/iso2022.c(_vte_iso2022_process): free the temporary array.
+    * src/matcher.c(_vte_matcher_free_params_array): add.
+    * src/vte.c: use _vte_matcher_free_params_array instead of the local copy,
+       which is removed.
+    * src/interpret.c, src/table.c, src/trie.c: use _vte_matcher_free_params_array
+       to free parameter arrays instead of g_value_array_free, which doesn't
+       take care of the pointer values.
+    * src/vte.c(vte_sequence_handler_set_title_internal): only attempt to close
+       the conversion descriptor if it was opened successfully.
+    * src/vteapp.c: add the -k option to spin after gtk_main() returns.
+    * src/vtefc.c: make copies of patterns with FcPatternDuplicate so that we know
+       where all of the returned patterns came from.
+    * src/vtexft.c(_vte_xft_font_for_char): set the item in the pattern array to
+       NULL if we successfully opened a font using the pattern.
+
+ ChangeLog     |   16 ++++++++++++++++
+ src/iso2022.c |    1 +
+ src/matcher.c |   25 +++++++++++++++++++++++++
+ src/matcher.h |    3 +++
+ src/table.c   |    2 +-
+ src/trie.c    |   44 ++++++++++++++++++++++----------------------
+ src/vte.c     |   28 ++--------------------------
+ src/vteapp.c  |   14 ++++++++++++--
+ src/vtefc.c   |   10 +++++++---
+ src/vtexft.c  |   14 ++++++++------
+ 10 files changed, 97 insertions(+), 60 deletions(-)
+
+commit 2b20f0ebd1d1b6007cad7b3a13de1b5f78526cd2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 21:48:25 2003 +0000
+
+    clarify comments near one of the warning messages. unref the Pango
+    
+    * src/iso2022.c: clarify comments near one of the warning messages.
+    * src/vtefc.c(_vte_fc_transcribe_from_pango_font_description): unref the Pango
+       context, which was created for us.
+    * src/vtepango.c: keep track of the Pango context, and unref it when it is no
+       longer needed.
+
+ ChangeLog      |    7 +++++++
+ src/iso2022.c  |    2 +-
+ src/vtefc.c    |    2 ++
+ src/vtepango.c |   23 +++++++++++++++++++----
+ 4 files changed, 29 insertions(+), 5 deletions(-)
+
+commit d83bc30b30d77bc4713ecc75ae99fd2d437ebb70
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 16:30:27 2003 +0000
+
+    try juggling the CFLAGS and LIBS order to let the xft CFLAGS/LIBS take
+    
+    * src/Makefile.am: try juggling the CFLAGS and LIBS order to let the xft
+       CFLAGS/LIBS take precedence over everything else (#113335).
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit aeb12826b791f1e30a6da959f84287a873e15b84
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 16:14:50 2003 +0000
+
+    compile fix for Solaris, patch from #113344.
+    
+    * src/ssfe.c: compile fix for Solaris, patch from #113344.
+
+ ChangeLog  |    3 +++
+ src/ssfe.c |   31 ++++++++++++++++---------------
+ 2 files changed, 19 insertions(+), 15 deletions(-)
+
+commit 8174c284e5c4aa1833ffc716b50606af50c1c492
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Tue May 20 13:32:12 2003 +0000
+
+    Update Czech translation
+
+ po/ChangeLog |    4 ++++
+ po/cs.po     |   34 +++++++++++++++++-----------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+commit acaea8d931cb8dfefcc5e7a1b7c8e32142132d7a
+Author: Christian Rose <menthos menthos com>
+Date:   Tue May 20 09:58:33 2003 +0000
+
+    Updated Swedish translation.
+    
+    2003-05-20  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   37 ++++++++++++++++++++-----------------
+ 2 files changed, 24 insertions(+), 17 deletions(-)
+
+commit 424d7da826793a72b3f765139d6876a1dcf4bdf0
+Author: Jordi Mallach <jordim src gnome org>
+Date:   Tue May 20 08:51:56 2003 +0000
+
+    Updated Catalan translation.
+
+ po/ChangeLog |    4 ++++
+ po/ca.po     |   34 +++++++++++++++++-----------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+commit 246c1cedb2261a4281359ae3b82be6e1325e28ac
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 06:27:42 2003 +0000
+
+    = 0.11.7
+
+ NEWS     |    9 +++++++--
+ vte.spec |    8 +++++++-
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit bff045858c67b91873513c3a708fc7e952e40379
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 06:14:27 2003 +0000
+
+    remove no-longer-used tree structure. free strings returned by
+    
+    * src/vte.c: remove no-longer-used tree structure.
+    * src/vtefc.c: free strings returned by g_object_get().
+
+ ChangeLog   |    4 ++++
+ src/vte.c   |    6 +-----
+ src/vtefc.c |    2 ++
+ 3 files changed, 7 insertions(+), 5 deletions(-)
+
+commit 73a26e0a481405069de1bf9fa640ee950f90514a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 05:23:54 2003 +0000
+
+    create the terminal's draw structure. free the terminal's draw structure.
+    
+    * src/vte.c(vte_terminal_realize): create the terminal's draw structure.
+    * src/vte.c(vte_terminal_unrealize): free the terminal's draw structure.
+    * src/vteapp.c(main): enforce a clean shutdown by requiring that the terminal
+       and top-level window are both finalized before gtk_main() returns.
+
+ ChangeLog    |    7 +++++++
+ src/vte.c    |   22 ++++++++++++++++++----
+ src/vteapp.c |    5 +++++
+ 3 files changed, 30 insertions(+), 4 deletions(-)
+
+commit cb5bbefeca2bda9ad6b171ced9c67f428def381a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 20 04:27:56 2003 +0000
+
+    properly send a SIGHUP to the child process if it hasn't already exited
+    
+    * src/vte.c(vte_terminal_finalize): properly send a SIGHUP to the child process
+       if it hasn't already exited (#112505).
+    * src/vteapp.c: don't exit on EOF, only on child-exited.
+    * src/vte.c(vte_sequence_handler_sf): increment the scrolling offset to avoid
+       flickering when the application has defined a scrolling region with top
+       row == 1.
+
+ ChangeLog    |    8 ++++++++
+ configure.in |    2 +-
+ src/vte.c    |   14 +++++++++++---
+ src/vteapp.c |    9 ++++++++-
+ 4 files changed, 28 insertions(+), 5 deletions(-)
+
+commit f123debe5a3f90be8ea6f252065f0bf37f914b04
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Tue May 20 04:06:05 2003 +0000
+
+    be.po: Updated Belarusian translation from Belarusian team <i18n mova org>.
+
+ po/ChangeLog |    5 +++++
+ po/be.po     |   54 +++++++++++++++++++++++++-----------------------------
+ 2 files changed, 30 insertions(+), 29 deletions(-)
+
+commit 03b492bb77735482d33094bd0e038ec8e3173506
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 19 22:48:58 2003 +0000
+
+    remove comma from end of enum declaration (#111925). don't use
+    
+    * src/iso2022.c, src/keymap.c, src/mev.c, src/vtebg.h, src/vteglyph.h: remove
+       comma from end of enum declaration (#111925).
+    * src/vtetc.c: don't use parameter-as-array-size compiler extension (#111925).
+    * src/ssfe.c: don't assume that the compiler interprets \e correctly, use %c
+       with value of 27 instead (#111925).
+    * doc/reference/Makefile.am: obey CPPFLAGS and LDFLAGS (#111925).
+    * gnome-pty-helper/gnome-utmp.c: only include <utmp.h> if HAVE_UTMP_H was
+       defined (#111925).
+    * src/keymap.c, src/ssfe.c: unconditionally include <term.h> if we defined
+       HAVE_CURSES or HAVE_NCURSES, as having the header is a precondition
+       for defining either (#111925).
+    * src/iso2022.c: make each array have at least one element (#111925).
+    * src/pty.c, src/gnome-login-support.c: try to open /dev/ptc if opening
+       /dev/ptmx fails due to ENOENT (#111925).
+
+ ChangeLog                              |   17 +++++++++++++++++
+ doc/reference/Makefile.am              |    4 ++--
+ gnome-pty-helper/gnome-login-support.c |    5 +++++
+ gnome-pty-helper/gnome-utmp.c          |    6 ++++--
+ src/iso2022.c                          |    3 ++-
+ src/keymap.c                           |    8 ++------
+ src/mev.c                              |    2 +-
+ src/pty.c                              |    3 +++
+ src/ssfe.c                             |    7 ++-----
+ src/vtebg.h                            |    2 +-
+ src/vteglyph.h                         |    2 +-
+ src/vtetc.c                            |    6 +++---
+ 12 files changed, 43 insertions(+), 22 deletions(-)
+
+commit 7253cf3dbbb732d67699c3f69484e859f34fd102
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 19 20:55:11 2003 +0000
+
+    - formatting fixups
+
+ src/iso2022.c   |   10 +++---
+ src/mev.c       |    8 +++---
+ src/table.c     |   54 ++++++++++++++++++++--------------------
+ src/trie.c      |   72 ++++++++++++++++++++++++++--------------------------
+ src/vte.c       |   74 +++++++++++++++++++++++++++---------------------------
+ src/vte.h       |    2 +-
+ src/vteaccess.c |   14 +++++-----
+ src/vtebg.c     |    2 +-
+ src/vtebg.h     |    4 +-
+ src/vteft2.c    |    2 +-
+ src/vteglyph.c  |    2 +-
+ src/vteglyph.h  |    4 +-
+ src/vtepango.c  |   12 ++++----
+ src/vtepangox.c |   10 +++---
+ src/vtetc.c     |   16 ++++++------
+ src/vtexft.c    |    4 +-
+ 16 files changed, 145 insertions(+), 145 deletions(-)
+
+commit 5cda56310f77badf4031fec0eb18c5ef307c49bd
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 19 20:41:16 2003 +0000
+
+    don't exit on eof, just child-exited. don't disconnect from SIGCHLD on
+    
+    * src/vteapp.c: don't exit on eof, just child-exited.
+    * src/vte.c(vte_terminal_eof): don't disconnect from SIGCHLD on eof, the child
+       might still be running.
+
+ ChangeLog    |    7 ++++++-
+ src/vte.c    |   10 ----------
+ src/vteapp.c |    1 -
+ 3 files changed, 6 insertions(+), 12 deletions(-)
+
+commit b5f349035d78e948c6a06cd2731b066ea7142152
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 19 20:18:45 2003 +0000
+
+    - rename termcap.c/termcap.h to avoid conflicts with system <termcap.h>
+
+ ChangeLog                  |    5 +++++
+ src/Makefile.am            |   27 +++++++++++++--------------
+ src/interpret.c            |    2 +-
+ src/keymap.c               |    2 +-
+ src/keymap.h               |    2 +-
+ src/vte.c                  |    2 +-
+ src/{termcap.c => vtetc.c} |    2 +-
+ src/{termcap.h => vtetc.h} |    0
+ 8 files changed, 23 insertions(+), 19 deletions(-)
+
+commit 4cf3893d9b59b32a879302c6433894ddb906e40a
+Author: Ole Laursen <olau hardworking dk>
+Date:   Mon May 19 19:54:17 2003 +0000
+
+    Updated Danish translation.
+    
+    2003-05-19  Ole Laursen  <olau hardworking dk>
+    
+       * da.po: Updated Danish translation.
+
+ po/ChangeLog |   10 +++++++---
+ po/da.po     |   48 +++++++++++-------------------------------------
+ 2 files changed, 18 insertions(+), 40 deletions(-)
+
+commit a686e0d829ac351c47c4750e9b459e79276969f3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 19 19:49:13 2003 +0000
+
+    fix KP_PageDown in application keypad mode (#113187). add a finalize
+    
+    * src/keymap.c: fix KP_PageDown in application keypad mode (#113187).
+    * src/reaper.c: add a finalize method which properly cleans things up so that
+       the singleton can at least theoretically be destroyed (part of a fix
+       for #112172).
+    * src/vte.c: obtain a ref to a reaper object whenever we are waiting for a
+       child to exit.
+    * po/POTFILES.in: add more source files for scanning.
+    * src/iso2022.c: rework pieces to handle incomplete sequences at the end of
+       input.  Check for 8-bit SS2 and SS3 in case of EILSEQ.  Build a fake
+       ISO-8859-1 map for conversions using invalid maps.
+    * src/iso2022.c(_vte_iso2022_state_free): free the state's buffer.
+    * src/vteconv.c: internalize UTF-8 to UTF-8 conversions, fix handling of
+       incomplete sequences at the end of the available data.
+    * src/vte.c: implement send/receive and automatic linefeed modes.
+    * src/vte.c(vte_sequence_handler_sr): invalidate the row which contains the
+       cursor to ensure that it doesn't leave a trail.
+    * src/vte.c(vte_sequence_handler_return_terminal_id): add.
+    * src/vte.c(vte_terminal_feed_child_using_modes): add.
+
+ ChangeLog      |   20 ++
+ po/POTFILES.in |    5 +
+ po/am.po       |   94 ++++----
+ po/az.po       |  128 ++++++-----
+ po/be.po       |  126 ++++++-----
+ po/bg.po       |  132 +++++++-----
+ po/bn.po       |  131 ++++++-----
+ po/ca.po       |   47 +++--
+ po/cs.po       |   33 ++--
+ po/cy.po       |   32 ++--
+ po/da.po       |  132 ++++++-----
+ po/de.po       |  132 ++++++-----
+ po/el.po       |  136 +++++++-----
+ po/es.po       |   39 ++--
+ po/fa.po       |  101 ++++-----
+ po/fi.po       |  135 +++++++-----
+ po/fr.po       |   31 ++-
+ po/he.po       |  125 ++++++-----
+ po/hu.po       |  131 +++++++----
+ po/id.po       |  138 +++++++-----
+ po/is.po       |  132 ++++++-----
+ po/it.po       |  139 +++++++-----
+ po/ja.po       |   33 ++--
+ po/ko.po       |  124 ++++++-----
+ po/lv.po       |  131 ++++++-----
+ po/mk.po       |   95 ++++----
+ po/ml.po       |   99 ++++----
+ po/mn.po       |  126 ++++++-----
+ po/ms.po       |   33 ++--
+ po/nl.po       |  142 +++++++-----
+ po/no.po       |  125 ++++++-----
+ po/pl.po       |  135 +++++++-----
+ po/pt.po       |   31 ++-
+ po/pt_BR.po    |  129 ++++++-----
+ po/ro.po       |  127 ++++++----
+ po/ru.po       |  153 ++++++++-----
+ po/sk.po       |  130 ++++++-----
+ po/sl.po       |  132 ++++++-----
+ po/sq.po       |  131 +++++++-----
+ po/sr.po       |   69 ++++--
+ po/sr Latn po  |   69 ++++--
+ po/sv.po       |   33 ++--
+ po/tr.po       |  125 ++++++-----
+ po/uk.po       |  132 +++++++-----
+ po/vi.po       |  125 ++++++-----
+ po/zh_CN.po    |  124 ++++++-----
+ po/zh_TW.po    |   31 ++-
+ src/iso2022.c  |  697 ++++++++++++++++++++++++++++++++++----------------------
+ src/keymap.c   |    2 +-
+ src/reaper.c   |   64 +++++-
+ src/vte.c      |  205 ++++++++++++++---
+ src/vteconv.c  |  313 +++++++++++++++++++++-----
+ 52 files changed, 3646 insertions(+), 2338 deletions(-)
+
+commit eeae338b64553fc81099e307f90846198a9e2583
+Author: Telsa Gwynne <telsa src gnome org>
+Date:   Mon May 19 14:36:36 2003 +0000
+
+    Welsh translation from Dafydd Harries
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/cy.po     |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 118 insertions(+), 1 deletions(-)
+
+commit 5eef8c91e9af06533b979c7593c19e838cec04f2
+Author: Christophe Merlet <redfox src gnome org>
+Date:   Sun May 18 19:54:24 2003 +0000
+
+    Updated French translation.
+
+ po/ChangeLog |    4 ++
+ po/fr.po     |  147 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 85 insertions(+), 66 deletions(-)
+
+commit 3e5e8975600b5ad410010cb23cb3b171d95a279f
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Tue May 13 21:04:25 2003 +0000
+
+    Updated Portuguese translation.
+    
+    2003-05-13  Duarte Loreto <happyguy_pt hotmail com>
+    
+            * pt.po: Updated Portuguese translation.
+
+ po/ChangeLog |    4 ++
+ po/pt.po     |  134 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 79 insertions(+), 59 deletions(-)
+
+commit 7ff11a97e78e3d26456e0ca7b39dac71686b30b3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 13 20:08:50 2003 +0000
+
+    don't recognize 8-bit SS2 and SS3 by default, it breaks UTF-8 and other
+    
+    * src/iso2022.c(_vte_iso2022_find_nextctl): don't recognize 8-bit SS2 and SS3
+       by default, it breaks UTF-8 and other encodings (#112879).
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |    3 +++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit e1e0f0a3cf0f3872fa9d78d14989ca311b9cded5
+Author: Pablo Gonzalo del Campo <pablodc bigfoot com>
+Date:   Tue May 13 19:52:37 2003 +0000
+
+    Updated Spanish translation.
+    
+    2003-05-13  Pablo Gonzalo del Campo  <pablodc bigfoot com>
+    
+            * es.po: Updated Spanish translation.
+
+ po/ChangeLog |    4 ++
+ po/es.po     |  149 ++++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 86 insertions(+), 67 deletions(-)
+
+commit 7a87d5abf06668b0feb160775020745bffe45854
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Tue May 13 11:01:20 2003 +0000
+
+    Updated traditional Chinese translation.
+    
+       * zh_TW.po: Updated traditional Chinese translation.
+
+ po/ChangeLog |    4 ++++
+ po/zh_TW.po  |   31 +++++++++++++++++--------------
+ 2 files changed, 21 insertions(+), 14 deletions(-)
+
+commit 82739aee740adf7249915d172ae9d1805a0b61bc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 13 04:27:40 2003 +0000
+
+    add _vte_draw_needs_repaint() to indicate if the drawing back-end can only
+    
+    * src/vtedraw.c, src/vtedraw.h: add _vte_draw_needs_repaint() to indicate if
+       the drawing back-end can only handle entire-window paints.
+    * src/vteconv.c: return a value from _vte_conv_close(), even though it isn't
+       used.
+    * src/vte.c(vte_terminal_paint): don't look at drawing starting at negative
+       row or coumn offsets.
+    * src/vtegl.c: prefer glX double-buffering to GDK's, and use double-buffered
+       possibly-direct windows instead of indirect pixmaps.
+
+ ChangeLog       |   10 ++
+ src/vte.c       |   14 ++-
+ src/vteapp.c    |    4 +-
+ src/vteconv.c   |    1 +
+ src/vtedraw.c   |    8 ++
+ src/vtedraw.h   |    2 +
+ src/vteft2.c    |    1 +
+ src/vtegl.c     |  358 +++++++++++++++++++++++++++++--------------------------
+ src/vtepango.c  |    1 +
+ src/vtepangox.c |    1 +
+ src/vteskel.c   |   17 ++--
+ src/vtexft.c    |    1 +
+ 12 files changed, 238 insertions(+), 180 deletions(-)
+
+commit cb455f32f8d5dcb45f0127bdd5fd2b427751da96
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 13 01:22:09 2003 +0000
+
+    account for the foreign root pixmap not having a colormap by default,
+    
+    * src/vtebg.c(_vte_bg_get_pixmap, _vte_bg_get_pixbuf): account for the foreign
+       root pixmap not having a colormap by default, using the root window's
+       colormap if it doesn't already have one set.
+
+ ChangeLog   |    5 +++++
+ src/vtebg.c |   14 ++++++++++----
+ 2 files changed, 15 insertions(+), 4 deletions(-)
+
+commit de0363debd2588e178bdd8543a45a46cdbf53cb7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 12 20:57:41 2003 +0000
+
+    if we can't convert from the locale encoding to UTF-8, use UTF-8 as the
+    
+    * src/iso2022.c(_vte_iso2022_state_new): if we can't convert from the locale
+       encoding to UTF-8, use UTF-8 as the locale encoding (#112614).
+    * src/vtegl.c(_vte_gl_start): enable point smoothing.
+
+ ChangeLog       |    5 +++++
+ src/iso2022.c   |   20 +++++++++++++++++---
+ src/iso2022.txt |    2 +-
+ src/vte.c       |    6 +++---
+ src/vtegl.c     |    1 +
+ 5 files changed, 27 insertions(+), 7 deletions(-)
+
+commit 06f5955cf07ee5c56dc8ddafa428ef286717fba4
+Author: Hasbullah Bin Pit <sebol ikhlas com>
+Date:   Sun May 11 00:57:40 2003 +0000
+
+    Updated Malay translation.
+    
+    2003-05-10  Hasbullah Bin Pit <sebol ikhlas com>
+    
+            * ms.po: Updated Malay translation.
+
+ po/ChangeLog |    4 ++
+ po/ms.po     |  103 +++++++++++++++++++++++++---------------------------------
+ 2 files changed, 48 insertions(+), 59 deletions(-)
+
+commit d80144726e3681e8a6ee81144dae9db2913307b4
+Author: KAMAGASAKO Masatoshi <emerald gnome gr jp>
+Date:   Sat May 10 06:28:28 2003 +0000
+
+    Updated Japanese translation.
+    
+    2003-05-10  KAMAGASAKO Masatoshi  <emerald gnome gr jp>
+    
+       * ja.po: Updated Japanese translation.
+
+ po/ChangeLog |    4 ++++
+ po/ja.po     |   41 +++++++++++++++++++++++++++++++++--------
+ 2 files changed, 37 insertions(+), 8 deletions(-)
+
+commit bc0c76e750c95a91f0854fb97f7b14b71bccf79d
+Author: Jordi Mallach <jordim src gnome org>
+Date:   Fri May 9 17:41:06 2003 +0000
+
+    Updated Catalan translation.
+
+ po/ChangeLog |    4 ++
+ po/ca.po     |  151 +++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 85 insertions(+), 70 deletions(-)
+
+commit 8e0ecf2cb7f56a69bf55e041e4daa3c04597d2ad
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Fri May 9 12:15:22 2003 +0000
+
+    Update Czech translation
+
+ po/ChangeLog |    4 ++++
+ po/cs.po     |   39 ++++++++++++++++++++++++++++++++-------
+ 2 files changed, 36 insertions(+), 7 deletions(-)
+
+commit 12244fa27b3bab0cdc90547988f4e3cb248d7943
+Author: Christian Rose <menthos menthos com>
+Date:   Fri May 9 10:11:18 2003 +0000
+
+    Updated Swedish translation.
+    
+    2003-05-09  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   50 ++++++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 46 insertions(+), 8 deletions(-)
+
+commit dacc45e67336c971c061280f7d1d309fc42431f6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 9 03:16:49 2003 +0000
+
+    let the caller control whether or not we return the default colormap.
+    
+    * src/vtedraw.c, src/vtedraw.h (_vte_draw_get_colormap): let the caller control
+       whether or not we return the default colormap.
+    * src/vtegl.c: enable blending.  Don't specify any buffer depths.  Set the
+       current drawable before we do any drawing.  Call gluOrtho2D with the
+       right args to set up the right projection.
+    * src/vteskel.c: quiet compiler warning by removing a "const".
+    * src/vtedraw.c: juggle the preferred render order again.
+
+ ChangeLog       |    9 +++++++++
+ src/vte.c       |   10 ++++------
+ src/vtedraw.c   |   17 ++++++++++-------
+ src/vtedraw.h   |    3 ++-
+ src/vtegl.c     |   46 +++++++++++++++++++++++++++++++++-------------
+ src/vtepango.c  |    2 +-
+ src/vtepangox.c |    2 +-
+ src/vteskel.c   |    2 +-
+ src/vtexft.c    |    2 +-
+ 9 files changed, 62 insertions(+), 31 deletions(-)
+
+commit c858e8dcfca989306d1153fd9ec4001d9bc27e9b
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Thu May 8 19:19:06 2003 +0000
+
+    Fix my previous commit
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 999bfc1f3aec810e679b614246287ced55e9a91a
+Author: Abel Cheung <maddog linux org hk>
+Date:   Thu May 8 14:36:58 2003 +0000
+
+    Add 4 files into POTFILES.in(please let me know if they shouldn't be
+    
+    2003-05-08  Abel Cheung  <maddog linux org hk>
+    
+       * POTFILES.in: Add 4 files into POTFILES.in(please let me know
+         if they shouldn't be added)
+       * zh_TW.po: Updated traditional Chinese translation.
+
+ po/ChangeLog   |    6 ++++++
+ po/POTFILES.in |    4 ++++
+ po/zh_TW.po    |   41 +++++++++++++++++++++++++++++++++--------
+ 3 files changed, 43 insertions(+), 8 deletions(-)
+
+commit 9805926700dcdf9cc01cc68386874cf2ea237493
+Author: KAMAGASAKO Masatoshi <emerald gnome gr jp>
+Date:   Thu May 8 14:22:03 2003 +0000
+
+    Updated Japanese translation.
+    
+    2003-05-08  KAMAGASAKO Masatoshi  <emerald gnome gr jp>
+    
+       * ja.po: Updated Japanese translation.
+
+ po/ChangeLog |    4 ++
+ po/ja.po     |  108 ++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 53 insertions(+), 59 deletions(-)
+
+commit f25541750f7cc9bd90d51bf5e13e95a26375f795
+Author: Christian Rose <menthos menthos com>
+Date:   Thu May 8 14:01:42 2003 +0000
+
+    Updated Swedish translation.
+    
+    2003-05-08  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   42 ++++++++++++++++++++++--------------------
+ 2 files changed, 26 insertions(+), 20 deletions(-)
+
+commit 7f28c3ad21d6b0169788c466418f18a9d9245cf4
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Thu May 8 12:47:23 2003 +0000
+
+    Update Czech translation
+
+ po/ChangeLog |    4 ++++
+ po/cs.po     |   36 ++++++++++++++++--------------------
+ 2 files changed, 20 insertions(+), 20 deletions(-)
+
+commit a4288218a4d537f40f5fe968da1e477bd4fc5e60
+Author: Abel Cheung <maddog linux org hk>
+Date:   Thu May 8 04:38:42 2003 +0000
+
+    Added "mk" to ALL_LINGUAS.
+    
+    2003-05-08  Abel Cheung  <maddog linux org hk>
+    
+       * configure.in: Added "mk" to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/zh_TW.po  |   93 +++++++++++++++++++++++++--------------------------------
+ 3 files changed, 46 insertions(+), 53 deletions(-)
+
+commit b32f9cf9684e3326d566062c319baadca510fbd3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 7 21:46:54 2003 +0000
+
+    let OSC command sequences be subject to code conversion again (#112485).
+    
+    * src/iso2022.c: let OSC command sequences be subject to code conversion
+       again (#112485).
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 541e45cedb8eb204f80ed184bfa95697c5a8638b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 7 21:28:28 2003 +0000
+
+    - add new files
+
+ src/vteconv.c |  252 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteconv.h |   43 ++++++++++
+ 2 files changed, 295 insertions(+), 0 deletions(-)
+
+commit 5ae32c35957c696d83de0576c95ca96a8c5c106a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 7 21:25:29 2003 +0000
+
+    add VteConv as a thin wrapper around GIConv. use VteConv. remove. remove.
+    
+    * src/vteconv.c, src/vteconv.h: add VteConv as a thin wrapper around GIConv.
+    * src/iso2022.c: use VteConv.
+    * src/matcher.c(_vte_matcher_find_valid_encoding): remove.
+    * src/matcher.c(_vte_matcher_wide_encoding): remove.
+    * src/trie.c: use VteConv.
+    * src/utf8echo.c: use VteConv.
+    * src/vte.c: use VteConv (#112446).
+
+ ChangeLog       |   10 +++++
+ src/Makefile.am |   46 +++++++++++++++++++-----
+ src/iso2022.c   |   33 +++++++++--------
+ src/matcher.c   |  107 -------------------------------------------------------
+ src/matcher.h   |    3 --
+ src/trie.c      |   23 ++++++------
+ src/utf8echo.c  |   11 +++---
+ src/vte.c       |   57 +++++++++++++----------------
+ 8 files changed, 108 insertions(+), 182 deletions(-)
+
+commit 83e4f0ef14ab6c61836286f0f9a8c856cd11b159
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 6 20:44:24 2003 +0000
+
+    add "Since: 0.11" to documentation for functions which aren't available in
+    
+    * src/vte.c: add "Since: 0.11" to documentation for functions which aren't
+       available in the 0.10 series.
+    * src/iso2022.c: default G2 to JIS0201, G3 to JIS0212 for Japanese, because
+       they appear to not be used by anyone else.
+    * vte.spec: merge with .spec file from RHL.
+
+ ChangeLog     |    7 ++++++
+ src/iso2022.c |    4 +-
+ src/vte.c     |    8 ++++--
+ vte.spec      |   64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 4 files changed, 75 insertions(+), 8 deletions(-)
+
+commit 243bc92e9c36c96a9c0bef4bcd73672a1fd21925
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 6 14:12:00 2003 +0000
+
+    - 0.11.6
+
+ NEWS     |    6 +++---
+ vte.spec |    6 +++++-
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 5f84c90caf42ccb36c1b41c6b7de3482f8c510f9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 6 08:14:49 2003 +0000
+
+    get text rendering semi-working.
+    
+    * src/vtegl.c: get text rendering semi-working.
+
+ ChangeLog   |    3 +++
+ src/vtegl.c |   53 ++++++++++++++++++++++++++++++++++-------------------
+ 2 files changed, 37 insertions(+), 19 deletions(-)
+
+commit b296e636244d11ec2019a5fafea5ad0ebb31248a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 6 07:38:39 2003 +0000
+
+    when setting up backgrounds, don't deref an existing background before
+    
+    * src/vteft2.c, src/vtegl.c, src/vtepango.c, src/vtepangox.c, src/vtexft.c:
+       when setting up backgrounds, don't deref an existing background before
+       fetching a new one, in case they're the same.
+    * src/vteglyph.c(_vte_glyph_draw): fix computation of the input offset.
+    * src/vtegl.c: implement drawing of backgrounds.
+
+ ChangeLog       |    7 ++
+ NEWS            |    3 +
+ src/vtedraw.c   |   14 ++--
+ src/vteft2.c    |    6 +-
+ src/vtegl.c     |  293 +++++++++++++++++++++++++++++++++++++------------------
+ src/vteglyph.c  |    9 +-
+ src/vtepango.c  |   10 +-
+ src/vtepangox.c |   10 +-
+ src/vtexft.c    |    8 +-
+ 9 files changed, 239 insertions(+), 121 deletions(-)
+
+commit 10bfd9a591695a9b00130a316668a28b5dff286b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 6 05:17:56 2003 +0000
+
+    include the whole JIS0201 map instead of just the lower half. set the
+    
+    * src/iso2022.c(_vte_iso2022_map_J): include the whole JIS0201 map instead of
+       just the lower half.
+    * src/iso2022.c(_vte_iso2022_map_get): set the and_mask to clear the high bits
+       of pairs before looking them up in the maps.
+    * src/iso2022.c(_vte_iso2022_fragment_input): recognize the 8-bit versions of
+       SS2 and SS3.
+    * src/iso2022.c(_vte_iso2022_process_control): recognize the 8-bit versions of
+       SS2 and SS3.
+
+ ChangeLog     |   10 ++++++++++
+ src/iso2022.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 61 insertions(+), 4 deletions(-)
+
+commit fc4bae3b967641e1ad32f14d1221b2e88ec15113
+Author: Danilo Šegan <dsegan gmx net>
+Date:   Tue May 6 02:34:22 2003 +0000
+
+    Added "sr" and "sr@Latn" to ALL_LINGUAS.
+    
+    2003-05-05  Danilo Šegan  <dsegan gmx net>
+    
+       * configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS.
+    
+       * po/sr.po, po/sr Latn po: Added Serbian translation by
+       http://Prevod.org/.
+
+ ChangeLog     |    4 ++
+ configure.in  |    2 +-
+ po/ChangeLog  |    5 ++
+ po/sr.po      |  121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ po/sr Latn po |  122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 253 insertions(+), 1 deletions(-)
+
+commit 4dc83c64fce801f283a4243f7b87cd7c307d2472
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 5 23:27:13 2003 +0000
+
+    - missed these, too
+
+ src/vteft2.h    |    1 -
+ src/vtepango.h  |    1 -
+ src/vtepangox.h |    1 -
+ src/vteskel.h   |    1 -
+ src/vtexft.c    |    3 ++-
+ src/vtexft.h    |    1 -
+ 6 files changed, 2 insertions(+), 6 deletions(-)
+
+commit 2ed144d6124b34dbabcf7647fd31c4fa5a51550c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 5 23:26:01 2003 +0000
+
+    - update for API change in vtefc
+
+ src/vteft2.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 29a746c9a69155ee8a94281e90b18adaf2100c11
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 5 23:23:46 2003 +0000
+
+    include <glib.h> for gboolean type definition. include "config.h" and
+    
+    * src/debug.h: include <glib.h> for gboolean type definition.
+    * src/matcher.c: include "config.h" and "debug.h".
+    * src/matcher.h: use G_BEGIN_DECLS/G_END_DECLS
+    * src/table.h: use G_BEGIN_DECLS/G_END_DECLS
+    * src/termcap.h: include <glib.h>, again for gboolean.
+    * src/vtebg.h,src/vterdb.h,src/vtergb.h: adjust macro used to prevent multiple
+       inclusions to match the rest of the tree.
+    * src/vtefc.c(_vte_fc_patterns_from_pango_font_desc): provide a callback which
+       can be used to override all defaults.
+    * src/vtegl.h,src/vtexft.h: don't include "config.h"
+    * src/vteglyph.c, src/vteglyph.h: add _vte_glyph_get_uncached().
+
+ ChangeLog      |   13 +++++++++
+ src/debug.h    |    2 +
+ src/matcher.c  |    2 +
+ src/matcher.h  |    4 +++
+ src/table.h    |    4 +++
+ src/termcap.h  |    2 +
+ src/vtebg.h    |    4 +-
+ src/vtefc.c    |   10 ++++++-
+ src/vtefc.h    |    6 +++-
+ src/vtegl.h    |    1 -
+ src/vteglyph.c |   77 ++++++++++++++++++++++++++++++++++++++++---------------
+ src/vteglyph.h |    8 +++++-
+ src/vterdb.h   |    4 +-
+ src/vtergb.h   |    4 +-
+ 14 files changed, 110 insertions(+), 31 deletions(-)
+
+commit 6186156a2f3bd52d4d4c9bd5e8a5310200fab58e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 5 02:51:51 2003 +0000
+
+    if ERESTART is defined, treat it like EINTR and EAGAIN. if ERESTART is
+    
+    * gnome-pty-helper/gnome-login-support.c(n_read,n_write): if ERESTART
+            is defined, treat it like EINTR and EAGAIN.
+    * src/pty.c(n_read,n_write): if ERESTART is defined, treat it like
+            EINTR and EAGAIN.
+
+ ChangeLog                              |    6 ++++++
+ gnome-pty-helper/gnome-login-support.c |    6 ++++++
+ src/pty.c                              |    6 ++++++
+ 3 files changed, 18 insertions(+), 0 deletions(-)
+
+commit 86131d5d146ce28b9dd281b00ca1195d9272302e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 2 18:13:24 2003 +0000
+
+    define _XOPEN_SOURCE_EXTENDED, _XOPEN_SOURCE, and __EXTENSIONS__ to get
+    
+    * configure.in: define _XOPEN_SOURCE_EXTENDED, _XOPEN_SOURCE, and
+       __EXTENSIONS__ to get definitions for msg_control and msg_controllen
+       on Solaris (#112036).
+    * src/vtedraw.c(_vte_draw_set_scroll): don't try to return a value from this
+       void function (#112036).  Patch from Hidetoshi Tajima.
+    * src/xticker.c: don't include getopt.h, which isn't even needed for regular
+       getopt() (#112036).  Patch from Hidetoshi Tajima.
+
+ ChangeLog     |    9 +++++++++
+ configure.in  |    7 +++++--
+ src/vtedraw.c |    2 +-
+ src/xticker.c |    1 -
+ 4 files changed, 15 insertions(+), 4 deletions(-)
+
+commit 0e8b44747bc25d74da45bf5c1086d9021ddacfb5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 1 20:50:54 2003 +0000
+
+    remove some debugging g_print() calls. skip over NUL bytes (#112022). map
+    
+    * src/vtebg.c(vte_bg_set_root_pixmap,vte_bg_root_pixmap): remove some debugging
+       g_print() calls.
+    * src/iso2022.c(process_cdata): skip over NUL bytes (#112022).
+    * src/vte.c(vte_terminal_background_update): map the bgcolor values to a pixel
+       value before setting the window background color.
+    * src/nativeecho.c(main): echo NUL bytes if asked to do so.
+
+ ChangeLog        |    8 ++++++++
+ src/iso2022.c    |    3 +++
+ src/nativeecho.c |    4 ++--
+ src/vte.c        |   10 ++++++++++
+ src/vtebg.c      |    2 --
+ 5 files changed, 23 insertions(+), 4 deletions(-)
+
+commit 69b532595d44d55d1816382b0788f7ceb6818e5b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 1 20:31:42 2003 +0000
+
+    - actually add those files (thanks snickell)
+
+ src/vtebg.c |  679 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vtebg.h |   75 +++++++
+ 2 files changed, 754 insertions(+), 0 deletions(-)
+
+commit 0e8b0b54ec3e1749fc7ca7511850472d2c349ff1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 1 19:56:13 2003 +0000
+
+    add a singleton object for managing copies of background images, either
+    
+    * src/vtebg.c, src/vtebg.h: add a singleton object for managing copies of
+       background images, either the desktop background, an in-memory pixbuf,
+       or an on-disk file, with tinting.  Using a single store for this stuff
+       lets multiple widgets share images and should reduce both CPU and
+       memory consumption in applications which create more than one
+       VteTerminal instance with similar settings.
+    * src/vtedraw.c, src/vtedraw.h: adapt the set_background_pixbuf() interface to
+       the vtebg method and rename to set_background_image().
+    * src/vteft2.c, src/vtegl.c, src/vtepango.c, src/vtepangox.c, src/vteskel.c,
+       src/vtexft.c: update to work with newer vtebg/vtedraw interfaces.
+    * src/vte.c(vte_terminal_filter_property_changes): remove in favor of vtebg
+       method.  Manage background state for vtebg.
+
+ ChangeLog       |   15 ++
+ src/Makefile.am |    2 +
+ src/iso2022.c   |   10 +-
+ src/vte.c       |  430 ++++++++++++------------------------------------------
+ src/vteapp.c    |   10 +-
+ src/vtedraw.c   |   24 +++-
+ src/vtedraw.h   |   15 ++-
+ src/vteft2.c    |   16 ++-
+ src/vtegl.c     |   30 +++--
+ src/vtepango.c  |   35 ++---
+ src/vtepangox.c |   35 ++---
+ src/vteskel.c   |   10 +-
+ src/vtexft.c    |   35 ++---
+ 13 files changed, 236 insertions(+), 431 deletions(-)
+
+commit 28a568698ade607798c95d2ec1790ebbe14d4757
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Thu May 1 13:49:09 2003 +0000
+
+    Update Czech translation
+
+ po/ChangeLog |    4 +++
+ po/cs.po     |   68 +++++++++++++++------------------------------------------
+ 2 files changed, 22 insertions(+), 50 deletions(-)
+
+commit 252a3631c63a5724d71b0bd21ff7b7961e66b6b0
+Author: Christian Rose <menthos menthos com>
+Date:   Thu May 1 10:36:15 2003 +0000
+
+    Updated Swedish translation.
+    
+    2003-05-01  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++
+ po/sv.po     |  105 +++++++++++++++++++++++++++-------------------------------
+ 2 files changed, 53 insertions(+), 56 deletions(-)
+
+commit 974211c1a58896b827c75d23570cef4aa0e8ec56
+Author: Kang Jeong-Hee <kz src gnome org>
+Date:   Thu May 1 07:08:12 2003 +0000
+
+    typo s/index.sgml/index.html/
+
+ ChangeLog                 |    4 ++++
+ doc/reference/Makefile.am |    6 +++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit c9962b2560c49547667904dadaa0759444b23ae6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 30 19:49:59 2003 +0000
+
+    add missing binary
+
+ vte.spec |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 1f2fd18e58649059e4d738ce723a50cf756d6a87
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 30 19:30:02 2003 +0000
+
+    - 0.11.5
+
+ NEWS     |    2 ++
+ vte.spec |    6 +++++-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit c80144000e5720ad8c8b923b2ce1b3ffa6f9651d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 30 18:35:39 2003 +0000
+
+    remove the unused DEFAULT_ISO_8859_1 case. don't call
+    
+    * src/vte.c(vte_sequence_handler_local_charset): remove the unused
+       DEFAULT_ISO_8859_1 case.
+    * src/vte.c(vte_terminal_class_init): don't call _vte_matcher_narrow_encoding(),
+       because we don't need it any more.  Change the error message emitted
+       when _vte_matcher_wide_encoding() fails (#111925), and mark it for
+       translation.
+    * src/trie.c(main): don't call _vte_matcher_narrow_encoding() just to print
+       its result.
+    * src/vte.c(vte_terminal_set_encoding): include the right codeset name in the
+       error message.
+    * src/vteglyph.c(_vte_glyph_get): mark error message for translation.
+    * src/matcher.c, src/matcher.h: remove _vte_matcher_narrow_encoding().  Make
+       tables of strings "const".
+
+ ChangeLog      |   15 +++++++++++++++
+ src/matcher.c  |   36 ++++++++++++------------------------
+ src/matcher.h  |    3 ---
+ src/trie.c     |    1 -
+ src/vte.c      |   11 ++---------
+ src/vteglyph.c |   10 +++++++++-
+ 6 files changed, 38 insertions(+), 38 deletions(-)
+
+commit 154b6ffdb09889a41f1caba82d7293d6ccdab1da
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 17:56:19 2003 +0000
+
+    set the IM context's client window to NULL before unreferencing it to
+    
+    * src/vte.c(vte_terminal_unrealize): set the IM context's client window to NULL
+       before unreferencing it to avoid crashes when preedit is active.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    7 ++-----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+commit c6967c55ed737c2ed1c519d848174f68ca170e2a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 16:52:04 2003 +0000
+
+    add keymaps for GDK_slash and GDK_question (#108299).
+    
+    * src/keymap.c: add keymaps for GDK_slash and GDK_question (#108299).
+
+ ChangeLog    |    3 +++
+ src/keymap.c |   18 ++++++++++++++++++
+ 2 files changed, 21 insertions(+), 0 deletions(-)
+
+commit 16a72b71bb75ac64fca98ca3daf7eeaa2c4a7e48
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 15:43:42 2003 +0000
+
+    use INT_MAX instead of LONG_MAX when passing in the maximum length,
+    
+    * src/vterdb.c(_vte_rdb_get): use INT_MAX instead of LONG_MAX when passing in
+       the maximum length, because it's returned in an int.
+
+ ChangeLog    |    4 ++++
+ src/vterdb.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 6534a2f48639ccf6c22b78aa852be48c2f79278a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 15:36:55 2003 +0000
+
+    fix the UTF-8 sample text which corresponds to the ISO-2022-KR sample text
+    
+    * src/iso2022.txt: fix the UTF-8 sample text which corresponds to the
+       ISO-2022-KR sample text so that it actually matches the text.
+
+ ChangeLog       |    4 ++++
+ src/iso2022.txt |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 16e0c53e29143b5116695a6950804dca6275d112
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 14:53:38 2003 +0000
+
+    add map for CP437. add. add CP437. add unitable.CP437 to the file list.
+    
+    * src/iso2022.c(_vte_iso2022_map_U): add map for CP437.
+    * src/unitable.CP437: add.
+    * src/mkunitables.sh: add CP437.
+    * src/Makefile.am: add unitable.CP437 to the file list.
+
+ ChangeLog          |   10 ++++
+ src/Makefile.am    |    1 +
+ src/cp437.py       |    9 ++++
+ src/iso2022.c      |   47 ++++++++++++++----
+ src/mkunitables.sh |   14 +++--
+ src/unitable.CP437 |  129 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ vte.spec           |    2 +-
+ 7 files changed, 194 insertions(+), 18 deletions(-)
+
+commit 391a3afbbbb5d40c624708e6697626199af8f358
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 03:12:32 2003 +0000
+
+    rework to simplify the logic of how many cells to invalidate when we have
+    
+    * src/vte.c(vte_invalidate_cursor_once): rework to simplify the logic of how
+       many cells to invalidate when we have a preedit string.
+    * src/vte.c(vte_terminal_paint): draw the preedit string correctly for cases
+       more complicated than the default IM (seems to fix #111767).
+    * src/vterdb.c(_vte_rdb_get): use g_strncpy() and the property length to avoid
+       going past the end of the possibly-not-nul-terminated string.
+    * src/Makefile.am: build a standalone vterdb binary.
+
+ ChangeLog       |    9 +++++++++
+ src/Makefile.am |    6 +++++-
+ src/vte.c       |   54 +++++++++++++++++++++++++++++++++++++-----------------
+ src/vterdb.c    |    9 ++++++---
+ 4 files changed, 57 insertions(+), 21 deletions(-)
+
+commit 627ac390f1a7f28751aa641bf2e96ba7781aef24
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 29 01:42:27 2003 +0000
+
+    add another flag to skip over sanity-checking the buffer when adding
+    
+    * src/vte.c(vte_terminal_insert_char): add another flag to skip over
+       sanity-checking the buffer when adding characters.
+    * src/vte.c(vte_terminal_process_incoming): sanity-check the buffer only when
+       necessary to save time.
+    * src/vte.c(vte_terminal_scroll_region): invalidate the region which is exposed
+       when we scroll so that the entire cell gets redrawn, avoiding clipping
+       problems (#111683).
+    * src/vte.c(vte_terminal_paint): fix math for determining where to stop drawing.
+    * src/vte.c(vte_terminal_fill_rectangle): rename to ..._int to reduce confusion
+       over which internal drawing commands are offset and which are not.
+    * src/vte.c(vte_terminal_insert_char): if performing a single substitution,
+       check the encoded width of the output char, not the input char, which
+       doesn't have one.
+
+ ChangeLog |   17 +++++++++++++
+ src/vte.c |   79 +++++++++++++++++++++++++++++++++++++++++++++---------------
+ 2 files changed, 76 insertions(+), 20 deletions(-)
+
+commit ca7af3ccfda6c0b2e2360b35b61417b41bcf8050
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 28 18:58:55 2003 +0000
+
+    add routines for pulling Xft antialiasing and hinting options from the
+    
+    * src/vterdb.c, src/vterdb.h: add routines for pulling Xft antialiasing and
+       hinting options from the resource database.
+    * src/vtefc.c(_vte_fc_patterns_from_pango_font_desc): apply settings from the
+       resource database after applying settings from GTK+.
+    * src/vtefc.c(_vte_fc_defaults_from_rdb): added, for adding default settings
+       based on the resource database.
+
+ ChangeLog       |    8 ++
+ src/Makefile.am |    2 +
+ src/vtefc.c     |  120 +++++++++++++++++++++++++-------
+ src/vterdb.c    |  208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vterdb.h    |   36 ++++++++++
+ 5 files changed, 347 insertions(+), 27 deletions(-)
+
+commit fab57ffc0e0965d8c648a6e112b9885f6b24eac6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 28 00:47:23 2003 +0000
+
+    complain when the installed version of GTK+ doesn't support reporting Xft
+    
+    * src/vtefc.c(_vte_fc_defaults_from_gtk): complain when the installed version
+       of GTK+ doesn't support reporting Xft antialiasing and hinting settings.
+
+ ChangeLog   |    5 +++++
+ src/vtefc.c |   16 ++++++++++++++++
+ 2 files changed, 21 insertions(+), 0 deletions(-)
+
+commit e6efd20998b591d5ef15b2f128b65164b79191a2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 25 19:40:48 2003 +0000
+
+    freeze the window when scrolling down in a restricted scrolling area
+    
+    * src/vte.c(vte_sequence_handler_sf): freeze the window when scrolling down in
+       a restricted scrolling area again.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit f90b5a787b177a9daac44b4feb086d6e6cc6f93b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 21:59:44 2003 +0000
+
+    - src/vteaccess.c: tweak that debug warning again
+
+ src/vteaccess.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit eb6079bca4dabb469678f3b40f594ea5342f154e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 21:21:22 2003 +0000
+
+    save the new codeset. compare the new codeset to the name of the UTF-8
+    
+    * src/iso2022.c(_vte_iso2022_state_set_codeset): save the new codeset.
+    * src/iso2022.c(process_cdata): compare the new codeset to the name of the
+       UTF-8 codeset instead of the local codeset to see if we need to notify
+       callers of a change.
+
+ ChangeLog                         |    6 ++++++
+ doc/reference/tmpl/vteaccess.sgml |    1 +
+ src/iso2022.c                     |    6 ++++--
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 8aacd3df5a33deb3f39aeee8f7f54bba2cd94890
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 19:28:53 2003 +0000
+
+    - 0.11.4
+
+ NEWS     |    3 +++
+ vte.spec |    7 ++++++-
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 9981b4d6dc6dee72cb87016d6a9c569fbb713b99
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 18:45:00 2003 +0000
+
+    don't use the window freeze count to check if it's safe to scroll using
+    
+    * src/vte.c(vte_sequence_handler_sf): don't use the window freeze count to
+       check if it's safe to scroll using gdk_window_scroll(), require other
+       parts of this widget to declare it unsafe for those cases.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   27 +++++++++++----------------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+commit ed1e60faf9bbcb50302a3348d01455c7b4c42826
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 18:17:17 2003 +0000
+
+    take an explicit XftFont instead of figuring out which one to use
+    
+    * src/vtexft.c(_vte_xft_char_width): take an explicit XftFont instead of
+       figuring out which one to use ourselves.
+    * src/vtexft.c(_vte_xft_draw_text): pass the XftFont which we're already using
+       to _vte_xft_char_width to save a call to _vte_xft_font_for_char.
+
+ ChangeLog    |    6 ++++++
+ src/vtexft.c |    8 ++++----
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+commit fe43594cdd3e980af12be3f1a7b86b1ad8eea84a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 17:55:44 2003 +0000
+
+    accept libtool 1.5 in addition to 1.4 (#15968).
+    
+    * autogen.sh: accept libtool 1.5 in addition to 1.4 (#15968).
+
+ ChangeLog  |    3 +++
+ autogen.sh |    4 ++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit ab6bab86c9f3c819af8a6c09a7b07529769982d1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 03:23:53 2003 +0000
+
+    add some detail to debug warning when gail isn't loaded.
+    
+    * src/vteaccess.c: add some detail to debug warning when gail isn't loaded.
+
+ src/vteaccess.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit c165224d950f6d78d8d4b870e05d931144f64f77
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 03:03:51 2003 +0000
+
+    add. call _vte_terminal_accessible_ref to ensure that accessible signals
+    
+    * src/vte.c,src/vte.h: (_vte_terminal_accessible_ref): add.
+    * src/vteaccess.c(vte_terminal_accessible_new): call
+       _vte_terminal_accessible_ref to ensure that accessible signals are
+       going to be emitted.
+
+ ChangeLog       |    6 ++++++
+ src/vte.c       |   11 +++++++++--
+ src/vte.h       |    3 +++
+ src/vteaccess.c |    1 +
+ src/vteaccess.h |    1 -
+ 5 files changed, 19 insertions(+), 3 deletions(-)
+
+commit 6f90d7c16e2263ac837a7a552c6cb0b7c5a1a83d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 02:50:55 2003 +0000
+
+    formatting fixup. formatting fixups. Try using U+FFFF as the "invalid"
+    
+    * src/dumpkeys.c: formatting fixup.
+    * src/iso2022.c: formatting fixups.  Try using U+FFFF as the "invalid" marker
+       character instead of '?', because it's actually invalid.
+    * src/pty.c: formatting fixup.
+    * src/reflect.c: formatting fixup.
+    * src/ring.c: formatting fixup.
+    * src/ssfe.c: formatting fixups.
+    * src/trie.c: formatting fixup.
+    * src/vte.c: formatting fixups.
+    * src/vte.c(vte_terminal_get_accessible): don't add a weak pointer to the
+       AtkObject if it isn't a valid AtkObject.  Only emit text-changed signals
+       if we managed to create a valid accessible peer.
+    * src/vteaccess.c: formatting fixups.
+    * src/vteaccess.c(vte_terminal_accessible_init): unset the EXPANDABLE Atk state.
+       Set the RESIZABLE state.
+    * src/vteaccess.c(vte_terminal_accessible_class_init): Remove spurious(?) call
+       to bind_textdomain.
+    * src/vteaccess.c(vte_terminal_accessible_get_type): check if the accessible
+       peer of our peer's ancestor is derived from GtkAccessible, and if it
+       isn't derive from GtkAccessible instead of that.
+    * src/vteaccess.c(vte_terminal_accessible_get_type): register our factory type.
+    * src/vteaccess.c, src/vteaccess.c: add VteTerminalAccessibleFactory.
+    * src/vtedraw.c: formatting fixup.
+
+ ChangeLog       |   26 ++++
+ src/dumpkeys.c  |    2 +-
+ src/iso2022.c   |    4 +-
+ src/pty.c       |    2 +-
+ src/reflect.c   |    2 +-
+ src/ring.c      |    2 +-
+ src/ssfe.c      |   12 +-
+ src/trie.c      |    2 +-
+ src/vte.c       |   23 ++--
+ src/vteaccess.c |  345 +++++++++++++++++++++++++++++++++----------------------
+ src/vteaccess.h |   41 +++++++
+ src/vtedraw.c   |    2 +-
+ 12 files changed, 303 insertions(+), 160 deletions(-)
+
+commit d99012f3a7f002824c71730a619944f6478afad7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 24 00:52:15 2003 +0000
+
+    always refetch the root pixmap if we don't currently have a background
+    
+    * src/vte.c(vte_terminal_background_update): always refetch the root pixmap if
+       we don't currently have a background image (#111386).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    3 ++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 7c7ca5b8bcd15cca704f39a43bd1bbbad8ac194b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 23 20:13:08 2003 +0000
+
+    - fix incorrect signal name when connecting
+
+ src/vteaccess.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a9a6b1c8657a7c90647bfafc74e962df5b8b83ba
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 23 19:55:55 2003 +0000
+
+    implement an AtkComponent interface (part of #110770). set the focus state
+    
+    * src/vteaccess.c: implement an AtkComponent interface (part of #110770).
+    * src/vteaccess.c(vte_terminal_accessible_focus_in): set the focus state on the
+       accessible peer (part of #110770).
+    * src/vteaccess.c(vte_terminal_accessible_focus_out): unset the focus state on
+       the accessible peer (part of #110770).
+    * src/vteaccess.c(vte_terminal_accessible_init): connect to the widget's
+       visibility-notify signals.
+    * src/vteaccess.c(vte_terminal_accessible_finalize): disconnect from the
+       widget's visibility-notify signals.
+
+ ChangeLog       |   12 +++
+ src/vteaccess.c |  279 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 289 insertions(+), 2 deletions(-)
+
+commit 119a00f1c81c7ec60a3f962e9c500b2dce3bd178
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 23 15:35:53 2003 +0000
+
+    don't bother generating a new pixmap or panning the pixbuf -- we can use
+    
+    * src/vte.c(vte_terminal_background_update): don't bother generating a new
+       pixmap or panning the pixbuf -- we can use the desaturated pixbuf
+       directly now (#111386).
+    * src/vte.c(vte_terminal_paint): use the drawing offsets because we don't
+       regenerate new background pixmaps when the window is moved.
+    * src/vte.c(vte_terminal_draw_cells): add jittered bold text back in, fell out
+       in the drawing overhaul (#111430).
+
+ ChangeLog |    9 ++
+ src/vte.c |  244 +++++++++++++++++++++----------------------------------------
+ 2 files changed, 91 insertions(+), 162 deletions(-)
+
+commit 41630383d7e3d902d4134089848e40bff200fc02
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 22:16:19 2003 +0000
+
+    account for valid CSI sequences which were missed earlier.
+    
+    * src/iso2022.c(_vte_iso2022_fragment_input): account for valid CSI sequences
+       which were missed earlier.
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |   14 +++++++++++---
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+commit 66ff84b4b341fb4d66bfe9ba089368c53b0bbb9f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 21:38:40 2003 +0000
+
+    dispose of the PTY completely (#107534). dispose of the PTY completely
+    
+    * src/vte.c(vte_terminal_eof): dispose of the PTY completely (#107534).
+    * src/vte.c(vte_terminal_child_exited): dispose of the PTY completely (#107534).
+
+ ChangeLog |    4 ++++
+ src/vte.c |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 42 insertions(+), 0 deletions(-)
+
+commit b8cd0940d25990dbe06c7d5c7540c7fdde5027cf
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 20:43:34 2003 +0000
+
+    add missing check for recvmsg. formatting and spelling fixes. reorganize.
+    
+    * configure.in: add missing check for recvmsg.
+    * gnome-pty-helper/gnome-login-support.c: formatting and spelling fixes.
+    * gnome-pty-helper/gnome-login-support.c(n_read): reorganize.
+    * gnome-pty-helper/gnome-login-support.c(n_write): add.
+    * gnome-pty-helper/gnome-login-support.h: add prototype for n_write.
+    * gnome-pty-helper/gnome-pty-helper.c: only define the I_SENDFD version of
+       pass_fd() if I_SENDFD is defined, to clarify compile errors when it
+       isn't defined.
+    * src/pty.c(main): exercise session logging.
+    * src/pty.c(_vte_pty_open_with_helper): add more debug messages.
+
+ ChangeLog                              |   12 +++++
+ configure.in                           |    2 +-
+ gnome-pty-helper/gnome-login-support.c |   75 +++++++++++++++++++++-----------
+ gnome-pty-helper/gnome-login-support.h |    1 +
+ gnome-pty-helper/gnome-pty-helper.c    |   59 +++++++++++++------------
+ gnome-pty-helper/gnome-utmp.c          |   15 +++---
+ src/pty.c                              |   28 ++++++++++--
+ 7 files changed, 126 insertions(+), 66 deletions(-)
+
+commit 91249799a1adb5fe177b61752986786769cb72fa
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 18:51:06 2003 +0000
+
+    force visible widths to 2 columns for CJK maps which use 2 bytes per
+    
+    * src/iso2022.c(_vte_iso2022_map_get): force visible widths to 2 columns for CJK
+       maps which use 2 bytes per character.
+    * src/iso2022.c(_vte_iso2022_fragment_input): recognize CSI/OSC/PM sequences as
+       control sequences and not raw text, allowing us to treat them
+       specially later.
+    * src/iso2022.c(process_control): pass CSI/OSC/PM sequences through unmodified
+       (without going through maps).
+
+ ChangeLog     |    9 ++++
+ src/iso2022.c |  119 +++++++++++++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 108 insertions(+), 20 deletions(-)
+
+commit b0e4d9016d8f5c138eb0102481a340a3082627d8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 04:48:15 2003 +0000
+
+    don't bother doing anything if we're fully obscured (related to #102703).
+    
+    * src/vte.c(vte_invalidate_cursor_once): don't bother doing anything if we're
+       fully obscured (related to #102703).
+
+ ChangeLog |    6 +++++-
+ src/vte.c |    5 +++++
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit ba4f0b1d5c5ca4c1613cd9c582ee3ae35a696b73
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 04:29:56 2003 +0000
+
+    stop messing with fontconfig's list of font directories.
+    
+    * src/vteapp.c(main): stop messing with fontconfig's list of font directories.
+
+ ChangeLog    |    4 ++++
+ src/vteapp.c |   14 --------------
+ 2 files changed, 4 insertions(+), 14 deletions(-)
+
+commit 42bca0ff2a787ba93f33cb4c5bc7462dd93ee463
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 04:27:46 2003 +0000
+
+    rework link order so that xft2 is linked before anything else. You're
+    
+    * configure.in: rework link order so that xft2 is linked before anything else.
+       You're still screwed if you link with both xft1 and xft2 libs, but maybe
+       this'll help, even though it shouldn't (#107285).
+
+ ChangeLog    |    5 +++++
+ configure.in |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 55adb3860dc5c82f853ca09509dad7365c92a440
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 04:09:29 2003 +0000
+
+    - add bug ID
+
+ ChangeLog |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+commit 2eb1be31c0f55444a04926642e182c4a7f5a05e0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 22 04:08:12 2003 +0000
+
+    fix a couple of #errors. if the area we're invading is on the edge,
+    
+    * src/vteglyph.c: fix a couple of #errors.
+    * src/vte.c(vte_invalidate_cells): if the area we're invading is on the edge,
+       invalidate the edge as well.
+    * src/pty.c: implement and use wrappers for read and write which handle EINTR
+       and EAGAIN.
+    * src/vte.c(vte_terminal_scroll_region): don't use gdk_window_scroll if the
+       window is frozen for updates.
+    * src/vte.c(vte_terminal_sequence_handler_sf): when scrolling down with a
+       defined scrolling region, freeze the window to avoid flicker.
+
+ ChangeLog      |   11 ++++++
+ src/pty.c      |   94 +++++++++++++++++++++++++++++++++++++++++++++-----------
+ src/vte.c      |   47 +++++++++++++++++++++++-----
+ src/vteglyph.c |    4 +-
+ 4 files changed, 128 insertions(+), 28 deletions(-)
+
+commit 27571eb6126ef16527021fe6ae3845db72c43eb1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 22:12:25 2003 +0000
+
+    don't bail out if read() returns -1 and errno is either EINTR or EAGAIN,
+    
+    * gnome-pty-helper/gnome-login-support.c(n_read): don't bail out if read()
+       returns -1 and errno is either EINTR or EAGAIN, candidate fix for
+       #107534.
+
+ ChangeLog                              |    5 +++++
+ gnome-pty-helper/gnome-login-support.c |    9 ++++++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit c12cd952b13bbccc6b28367a877d5a3b520eff76
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 21:57:04 2003 +0000
+
+    add a couple of assertions here just to be sure (#108066).
+    
+    * src/vte.c(vte_terminal_io_read): add a couple of assertions here just to
+       be sure (#108066).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 09204fe9202ac6fd1049a011728bd4b1430a9213
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 21:48:03 2003 +0000
+
+    don't depend on PATH_MAX being available and correct (#109805). don't
+    
+    * src/pty.c(_vte_pty_ptsname): don't depend on PATH_MAX being available and
+       correct (#109805).
+    * src/vte.c(vte_terminal_set_termcap): don't depend on PATH_MAX being available
+       and correct (#109805).
+    * src/vte.c(vte_terminal_io_read): fix signed/unsigned comparison (#108066).
+
+ ChangeLog                              |    8 ++++++
+ gnome-pty-helper/gnome-login-support.c |   40 ++++++++++++++++++++-----------
+ src/pty.c                              |   31 +++++++++++++++++-------
+ src/vte.c                              |   41 +++++++++++++++++++++-----------
+ 4 files changed, 83 insertions(+), 37 deletions(-)
+
+commit ac8d4312a324bc5b6a591186fc96ba57f5555a2b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 20:34:10 2003 +0000
+
+    add MESSAGE-OF-DOOM to EXTRA_DIST make Alt+Return generate ESC newline
+    
+    * Makefile.am: add MESSAGE-OF-DOOM to EXTRA_DIST
+    * src/keymap.c: make Alt+Return generate ESC newline (#108863).
+
+ ChangeLog    |    4 ++++
+ Makefile.am  |    2 +-
+ src/keymap.c |    2 ++
+ 3 files changed, 7 insertions(+), 1 deletions(-)
+
+commit dc73e632cf03e3e764223628dce4b435edd44a95
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 20:09:45 2003 +0000
+
+    really drop this file
+
+ src/unitable.KSC5601 |17047 --------------------------------------------------
+ 1 files changed, 0 insertions(+), 17047 deletions(-)
+
+commit ce2e40099e9113f32fc473866158c7cf9048b2b6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 20:05:30 2003 +0000
+
+    drop unitable.KSC5601 fixup comment re: KS X 1001 (#107119). add two
+    
+    * src/Makefile.am: drop unitable.KSC5601
+    * src/iso2022.c: fixup comment re: KS X 1001 (#107119).
+    * src/mkunitables.sh: add two characters from KS X 1001:1998 (#107119).
+
+ ChangeLog            |   13 +++++++++----
+ src/Makefile.am      |    1 -
+ src/iso2022.c        |    3 ++-
+ src/mkunitables.sh   |    8 ++++++--
+ src/unitable.KSX1001 |    2 ++
+ 5 files changed, 19 insertions(+), 8 deletions(-)
+
+commit e3263d8cfcff27edf58bebead7e9899fc25d4262
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 19:35:16 2003 +0000
+
+    don't try to process incoming data if there isn't any (#110946). mark a
+    
+    * src/vte.c(vte_terminal_eof): don't try to process incoming data if there
+       isn't any (#110946).
+    * src/vtexft.c: mark a warning message for translation.
+    * src/vtegl.c: make the warning when glX isn't available debug-only.
+
+ ChangeLog    |    6 ++++++
+ src/vte.c    |    4 +++-
+ src/vtegl.c  |    2 ++
+ src/vtexft.c |   10 +++++++++-
+ 4 files changed, 20 insertions(+), 2 deletions(-)
+
+commit d8fe8eaf81fa1a4d8e13d996eb856d0b444e46d4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 19:01:58 2003 +0000
+
+    use #if HAVE_DECL_XXX instead of #ifdef HAVE_DECL_XXX, noted by Bob Doan.
+    
+    * src/vteglyph.c: use #if HAVE_DECL_XXX instead of #ifdef HAVE_DECL_XXX, noted
+       by Bob Doan.
+
+ ChangeLog      |    4 ++++
+ src/vteglyph.c |   14 +++++++-------
+ 2 files changed, 11 insertions(+), 7 deletions(-)
+
+commit e5a1bd96f1df0de2e22b10ab208094b381f7aa93
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 02:50:46 2003 +0000
+
+    - ident tagging - header reorg
+    
+    - ident tagging
+    - header reorg
+
+ src/vte.c       |    2 ++
+ src/vteaccess.c |    2 ++
+ src/vteapp.c    |    2 ++
+ src/vtedraw.c   |    1 +
+ src/vtefc.c     |    3 +++
+ src/vteft2.c    |    2 ++
+ src/vtegl.c     |    3 +++
+ src/vteglyph.c  |    1 +
+ src/vtepango.c  |    3 +++
+ src/vtepangox.c |    7 ++++---
+ src/vtergb.c    |    1 +
+ src/vteskel.c   |    3 +++
+ src/vtexft.c    |    2 ++
+ 13 files changed, 29 insertions(+), 3 deletions(-)
+
+commit c5310364b35cfac035f88f6780965d5afce73709
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 21 02:45:11 2003 +0000
+
+    work around for garbled glyphs when drawing runs of text using multiple
+    
+    * src/vtexft.c: work around for garbled glyphs when drawing runs of text using
+       multiple fonts while mixing bitmap and antialiased fonts
+
+ ChangeLog    |    4 ++++
+ src/vtexft.c |   33 ++++++++++++++++++++++++++++++++-
+ 2 files changed, 36 insertions(+), 1 deletions(-)
+
+commit 9003aca9c2dda02997255aff5d25a79947dc8011
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 18 00:31:22 2003 +0000
+
+    - 0.11.3
+
+ NEWS     |    2 ++
+ vte.spec |    5 ++++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 439b759cbfe698e7e0237bb0d97786e841a6ad36
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 18 00:16:52 2003 +0000
+
+    - add
+
+ src/unitable.KSX1001 | 8225 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 8225 insertions(+), 0 deletions(-)
+
+commit 10dd7a33e526cb9883e34dda5de83ed4b542bc7d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 18 00:16:19 2003 +0000
+
+    add missing prototype for vte_terminal_process_incoming().
+    
+    * src/vte.c: add missing prototype for vte_terminal_process_incoming().
+
+ ChangeLog |    3 +++
+ src/vte.c |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 7abd52c1048aa299154b8e03635f915c8177575b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 18 00:14:55 2003 +0000
+
+    quiet a compiler warning. use KSX-1001 instead of KSC-5601 for Korean, add
+    
+    * src/vteglyph.c(_vte_glyph_get): quiet a compiler warning.
+    * src/iso2022.c: use KSX-1001 instead of KSC-5601 for Korean, add maps for
+       CNS 11643 planes 3,4,5,6,7 (can't test them, but hey).  Rework so
+       that we get the data before it's passed to g_iconv(), and stuff
+       gunichars into an array for the caller.
+    * src/interpret.c: adapt to changes in the iso2022 interfaces.
+    * src/vte.c: adapt to changes in the iso2022 interfaces.
+    * src/mkunitables.sh: add snippets for KSX 1001.
+    * src/iso2022.txt: add iso-2022-cn example text.
+
+ ChangeLog          |   11 +
+ src/Makefile.am    |    5 +-
+ src/interpret.c    |  189 +++----
+ src/iso2022.c      | 1773 +++++++++++++++++++++++++++++++---------------------
+ src/iso2022.h      |   25 +-
+ src/iso2022.txt    |    2 +
+ src/mkunitables.sh |    4 +-
+ src/vte.c          |  545 ++++++-----------
+ src/vteglyph.c     |    1 +
+ 9 files changed, 1363 insertions(+), 1192 deletions(-)
+
+commit cfe30db72f22a3c70a981e46bcd2a800210e92c4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 17 16:02:17 2003 +0000
+
+    0.11.2
+
+ NEWS     |    2 ++
+ vte.spec |    5 ++++-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 70a4202f0a0b2f9f3308ab7d3606d725d095d123
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 17 15:44:14 2003 +0000
+
+    invalidate a larger rectangle to fix behavior wrt openi18n assertion 2.
+    
+    * src/vte.c(vte_terminal_process_incoming): invalidate a larger rectangle to
+       fix behavior wrt openi18n assertion 2.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   16 ++++++++++------
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+commit d08be0223b4f3e714a7e218a2831caa6042ca0ec
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 16 22:14:42 2003 +0000
+
+    fix logic error drawing the cursor which caused ALTGR characters to always
+    
+    * src/vte.c(vte_terminal_paint): fix logic error drawing the cursor which
+       caused ALTGR characters to always be used.  Draw the preedit string
+       in the right location.
+    * src/vte.c(vte_invalidate_cursor_once): expose the visible width of the
+       preedit string, not its length.
+
+ ChangeLog |    7 +++
+ src/vte.c |  138 +++++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 115 insertions(+), 30 deletions(-)
+
+commit 7f3e85726efa33d937e4dee94e97db507831f448
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 16:40:15 2003 +0000
+
+    fix broken debug message.
+    
+    * src/vteaccess.c: fix broken debug message.
+
+ ChangeLog       |    3 +++
+ src/vteaccess.c |    7 +++++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 8f7ba9c45c5700bda437b021cd20a1555a0c4f9b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 15:46:21 2003 +0000
+
+    - correct bad cast
+
+ src/vtepangox.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 83d04891f50af2ac7a2c572abc4759bac3068434
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 15:43:52 2003 +0000
+
+    make row_data a structure containing an array instead of a simple array.
+    
+    * src/vte.c: make row_data a structure containing an array instead of a simple
+       array.  Add a field to row data structures which tracks whether or not
+       we soft-wrapped from this line to the next one.  Make use of the field
+       when copying text and selecting by "line".
+    * src/reflect.c: put the label in a scrolled window to avoid mad loops when we
+       resize it to accomodate more text, which shrinks the terminal, which
+       removes text from the label, which resizes it to be smaller, which
+       gives the terminal more space, which adds text to the viewable area,
+       which requires a bigger label, and so on.
+    * src/vte.c: move vte_terminal_get_text_range logic into
+       vte_terminal_get_text_range_maybe_wrapped for internal use,
+       vte_terminal_get_text likewise.
+
+ ChangeLog                           |   14 ++
+ gnome-pty-helper/gnome-pty-helper.c |    2 +-
+ src/reflect.c                       |   10 +-
+ src/vte.c                           |  390 ++++++++++++++++++++++-------------
+ 4 files changed, 267 insertions(+), 149 deletions(-)
+
+commit 05b79cf4de66af1658906580c04c41de43f815b6
+Author: Ivan Stojmirov <stojmir src gnome org>
+Date:   Tue Apr 15 12:13:00 2003 +0000
+
+    added Macedonian translation
+
+ po/mk.po |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 120 insertions(+), 0 deletions(-)
+
+commit 62b9ee3bb402ee64ebd1b440fa6073f7172ef784
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 02:41:41 2003 +0000
+
+    don't snap the beginning of selection to the next line in select-by-line
+    
+    * src/vte.c: don't snap the beginning of selection to the next line in
+       select-by-line mode.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    5 +++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit bca5067bac3a54cefc1332fb98366a66d58c3256
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 01:45:50 2003 +0000
+
+    - 0.11.1
+
+ NEWS     |    6 ++++--
+ vte.spec |    5 ++++-
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 8c772bdb1f16839e9dcea3730d4335fbc747f192
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 15 00:05:35 2003 +0000
+
+    fix macro invocations so that when LCD and GRAY2/GRAY4 pixel modes are
+    
+    * configure.in, src/vteglyph.c: fix macro invocations so that when LCD and
+       GRAY2/GRAY4 pixel modes are supported by freetype, we don't get
+       confused by them.
+    * src/vtepango.c, src/vtepangox.c: fix background scrolling.
+
+ ChangeLog       |    6 ++++++
+ configure.in    |   12 ++++++------
+ src/vteglyph.c  |    7 ++++++-
+ src/vtepango.c  |   21 +++++++--------------
+ src/vtepangox.c |   23 ++++++++---------------
+ 5 files changed, 33 insertions(+), 36 deletions(-)
+
+commit e3f4cc36d7e6bc29db5fefca8d6370a3f388d18f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 14 23:31:59 2003 +0000
+
+    require automake 1.6, 1.5 chokes on AM_LDFLAGS, which 1.7 wants instead of
+    
+    * autogen.sh: require automake 1.6, 1.5 chokes on AM_LDFLAGS, which 1.7 wants
+       instead of LDFLAGS(!).  Require autoconf 2.52 or newer, because older
+       versions bail on configure.in.
+    * configure.in: Check if ft_render_mode_mono, FT_RENDER_MODE_NORMAL,
+       FT_PIXEL_MODE_MONO, ft_pixel_mode_mono, FT_PIXEL_MODE_GRAY2,
+       FT_PIXEL_MODE_GRAY4, FT_PIXEL_MODE_GRAY, ft_pixel_mode_grays,
+       FT_PIXEL_MODE_LCD are declared.
+    * src/vte.c, src/vteapp.c, src/vtefc.c, src/vtepango.c: handle being built with
+       GTK+ 2.0 or 2.2.
+    * src/vtegl.c: disable for GTK+ < 2.2.0.
+    * src/vtepangox.c: use a PangoX context instead of a Pango context when
+       determining font metrics.
+    * src/vteglyph.c: handle the twisty maze of load and render options and pixel
+       modes which various versions of freetype support.
+
+ ChangeLog       |   16 ++++++++++++++
+ autogen.sh      |   36 ++++++++++++++++++++++++---------
+ configure.in    |   59 ++++++++++++++++++++++++++++++++++++++++++++++++------
+ src/reaper.c    |    1 +
+ src/vte.c       |   15 ++++++++++---
+ src/vteapp.c    |    7 +-----
+ src/vtedraw.c   |    2 +
+ src/vtefc.c     |   10 +++++++++
+ src/vtegl.c     |    3 ++
+ src/vteglyph.c  |   28 +++++++++++++++++++++----
+ src/vtepango.c  |   18 +++++++++++++++-
+ src/vtepangox.c |   15 +++++++++++--
+ 12 files changed, 174 insertions(+), 36 deletions(-)
+
+commit 0e259e346a7b5487ac7ebfdae90bbb8013f719f1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 14 19:41:12 2003 +0000
+
+    disable pangox, xft, glx drawing if run invoked with the --without-x flag.
+    
+    * configure.in: disable pangox, xft, glx drawing if run invoked with the
+       --without-x flag.
+    * vte.pc.in: include CFLAGS found by AC_PATH_XTRA when built with X.
+    * src/iso2022.c(_vte_iso2022_substitute_single): clean up and ensure that
+       ambiguous widths are respected.
+    * src/iso2022.c, src/iso2022.h: add _vte_iso2022_unichar_width().
+    * src/vte.c: remove old xft2/xft1/pango/pangox/core drawing code, making draw
+       the only supported method.  Remove most dependencies on gdkx and Xlib,
+       except for root pixmap ID watching.
+    * src/vtedraw.c: only use pangox, xft if X_DISPLAY_MISSING is not defined.
+    * src/vtedraw.c, src/vtedraw.h: add get_using_fontconfig() method.
+    * src/vte.c(vte_terminal_get_using_xft): use _vte_draw_get_using_fontconfig(),
+       which is what apps really want to know when they call this function.
+    * src/vtegl.c: wrap in #ifndef X_DISPLAY_MISSING.
+    * src/vtepangox.c: wrap in #ifndef X_DISPLAY_MISSING.
+    * src/vtexft.c: wrap in #ifndef X_DISPLAY_MISSING.
+    * src/vteglyph.c(_vte_glyph_cache_set_description): use horizontal advance
+       instead of bitmap width when calculating display widths.
+       Rename to _vte_glyph_cache_set_font_description.
+
+ ChangeLog       |   23 +
+ configure.in    |   90 +-
+ src/iso2022.c   |   24 +-
+ src/iso2022.h   |    1 +
+ src/vte.c       | 3341 +++++++++----------------------------------------------
+ src/vtedraw.c   |   14 +
+ src/vtedraw.h   |   24 +-
+ src/vtefc.c     |  113 +-
+ src/vteft2.c    |   14 +-
+ src/vtegl.c     |    9 +
+ src/vteglyph.c  |   49 +-
+ src/vteglyph.h  |    6 +-
+ src/vtepango.c  |   32 +-
+ src/vtepangox.c |   32 +-
+ src/vteskel.c   |    7 +
+ src/vtexft.c    |    9 +
+ vte.pc.in       |    2 +-
+ 17 files changed, 854 insertions(+), 2936 deletions(-)
+
+commit dca7f0cdfcc4eba1e2238cd26fb3eb6a3ae58016
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 9 20:11:52 2003 +0000
+
+    add back some variables which are used after all.
+    
+    * src/vte.c: add back some variables which are used after all.
+
+ ChangeLog |    3 +++
+ src/vte.c |    6 ++++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 26307a1dfd36f7b9af30ebd28805cd59e48e3694
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Apr 9 20:01:50 2003 +0000
+
+    add specific checks for PangoX and glX. add drawing method using freetype
+    
+    * configure.in: add specific checks for PangoX and glX.
+    * src/vteft2.c, src/vteft2.h: add drawing method using freetype and GdkRGB.
+    * src/vteglyph.c, src/vteglyph.h: add.
+    * src/vtepangox.c, src/vtepangox.h: add drawing method using PangoX.
+    * src/vtergb.c, src/vtergb.h: add.
+    * src/vtegl.c, src/vtegl.h: add placeholder drawing method using freetype and
+       glX.
+    * src/Makefile.am: add newly-added source files to libvte.la target.
+    * src/vtedraw.c, src/vtedraw.h: add get_visual and get_colormap methods so that
+       drawing methods can override the default visual and colormap.  Rename
+       get_text_base() to get_text_ascent(), which is more correct.  Remove
+       scroll(), which would just wrap gdk_window_scroll().
+    * src/vte.c: fix logic for choosing alternate render methods when VTE_USE_XFT
+       is "0".
+    * src/vteapp.c: add -- option to stop parsing options with getopt.
+    * src/vtefc.c: fix incorrect DPI read due to type mismatch (#109513).
+
+ ChangeLog                       |   19 +
+ configure.in                    |   68 +++-
+ src/Makefile.am                 |   44 ++-
+ src/vte.c                       |   23 +-
+ src/vteapp.c                    |   10 +-
+ src/vtedraw.c                   |   44 ++-
+ src/vtedraw.h                   |   12 +-
+ src/vtefc.c                     |   13 +-
+ src/vteft2.c                    |  338 ++++++++++++++++++
+ src/vteft2.h                    |   35 ++
+ src/vtegl.c                     |  414 ++++++++++++++++++++++
+ src/vtegl.h                     |   35 ++
+ src/vteglyph.c                  |  728 +++++++++++++++++++++++++++++++++++++++
+ src/vteglyph.h                  |   86 +++++
+ src/vtepango.c                  |   42 +--
+ src/{vtepango.c => vtepangox.c} |  227 ++++++++-----
+ src/vtepangox.h                 |   35 ++
+ src/vtergb.c                    |  260 ++++++++++++++
+ src/vtergb.h                    |   52 +++
+ src/vteskel.c                   |   35 +-
+ src/vtexft.c                    |   39 ++-
+ vte.pc.in                       |    2 +-
+ vte.spec                        |    6 +-
+ 23 files changed, 2350 insertions(+), 217 deletions(-)
+
+commit f947682ae7c91de10542d69217496828122bd976
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Mar 31 08:36:26 2003 +0000
+
+    Added "sq" to ALL_LINGUAS
+    
+    * configure.in: Added "sq" to ALL_LINGUAS
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 492227858e294d598abfc1abd59b1a4f0459c7fd
+Author: Laurent Dhima <laurenti src gnome org>
+Date:   Mon Mar 31 08:33:05 2003 +0000
+
+    Added Albanian translation
+    
+    * sq.po: Added Albanian translation
+
+ po/ChangeLog |    5 ++
+ po/sq.po     |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 125 insertions(+), 0 deletions(-)
+
+commit 1692ef6e575bceabc62527ae367360f892176ffc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 27 20:45:22 2003 +0000
+
+    - sprinkle various CFLAGS throughout
+
+ src/Makefile.am |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 094ec6f9e8c2ff9176411ca5a5876b8130153782
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 27 00:48:54 2003 +0000
+
+    - more automake-1.7 changes, should properly accept 1.7, 1.6 or 1.5 now
+
+ autogen.sh                   |   22 +++++++++-------------
+ gnome-pty-helper/Makefile.am |    4 ++--
+ 2 files changed, 11 insertions(+), 15 deletions(-)
+
+commit 30195a9b175f3d1fe8f78ab3af321eb170ce8cb8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 27 00:39:53 2003 +0000
+
+    specify AM_CFLAGS and AM_LDFLAGS instead of CFLAGS and LDFLAGS so that
+    
+    * src/Makefile.am: specify AM_CFLAGS and AM_LDFLAGS instead of CFLAGS and
+       LDFLAGS so that automake 1.7 doesn't kick us to the curb
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 71154e5b4c8ac4e2725a6d92e79bc248c8061dbb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 26 19:30:43 2003 +0000
+
+    commit useful news
+
+ NEWS |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 2d71c2855ee2886654dede15fbca46734be4198a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 17 19:23:10 2003 +0000
+
+    - copy AC_CHECK_FT2 to VTE_CHECK_FT2 and use it instead -- some systems with
+      freetype development stuff still don't include the right autoconf macros
+      (#108481)
+
+ acinclude.m4 |  144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.in |    5 +-
+ 2 files changed, 147 insertions(+), 2 deletions(-)
+
+commit 8623bfb400d8f56b916f1fb5367cfaae0981445f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 17 17:53:04 2003 +0000
+
+    - warn when freetype devel stuff isn't present, becuase we need it to
+      supply the AC_CHECK_FT2 macro
+
+ autogen.sh |   11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 160c94bbca71b9fd92113faae0bebc4cad60d7ed
+Author: Metin Amiroff <metin karegen com>
+Date:   Fri Mar 14 18:56:44 2003 +0000
+
+    Updated Azerbaijani translation.
+    
+    2003-03-14  Metin Amiroff  <metin karegen com>
+    
+       * az.po: Updated Azerbaijani translation.
+
+ po/ChangeLog |    4 +++
+ po/az.po     |   66 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 37 insertions(+), 33 deletions(-)
+
+commit 937ca9b1422e28330e8ae4f386dac963556ea33f
+Author: Christian Rose <menthos menthos com>
+Date:   Thu Mar 13 13:14:42 2003 +0000
+
+    Added "ml" to ALL_LINGUAS. Added Malayalam translation by FSF-India
+    
+    2003-03-13  Christian Rose  <menthos menthos com>
+    
+       * configure.in: Added "ml" to ALL_LINGUAS.
+       * po/ml.po: Added Malayalam translation by
+       FSF-India <locale gnu org in>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/ml.po     |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 130 insertions(+), 1 deletions(-)
+
+commit d4c4742e3a3b5218b15574a1367a704d34dc8fb1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 7 17:51:41 2003 +0000
+
+    - actually add these files
+
+ src/vteskel.c |  210 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteskel.h |   35 ++++++++++
+ 2 files changed, 245 insertions(+), 0 deletions(-)
+
+commit 84ae030f2516fddcc597778a46e7754e23f8c7d2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 7 17:51:21 2003 +0000
+
+    adjust coordinates for the border when clearing rectangles. add. use the
+    
+    * src/vte.c(vte_terminal_paint): adjust coordinates for the border when
+       clearing rectangles.
+    * src/vteskel.c, src/vteskel.h: add.
+    * src/vtedraw.c: use the skeleton drawing code.
+
+ ChangeLog       |    5 +++
+ src/Makefile.am |    2 +
+ src/vte.c       |   77 +++++++++++++++++++++++++++++++++++++++++++++----------
+ src/vtedraw.c   |    2 +
+ 4 files changed, 72 insertions(+), 14 deletions(-)
+
+commit 037cb1da6a82cb9bef6a73b8e67a49b8ed4e531e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 7 16:54:13 2003 +0000
+
+    watch for Visibility events. don't synthesize an expose event if we're
+    
+    * src/vte.c(vte_terminal_visibility_notify): watch for Visibility events.
+    * src/vte.c(vte_invalidate_cells,vte_invalidate_all): don't synthesize an
+       expose event if we're fully obscured, that's just silly.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   26 ++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 0 deletions(-)
+
+commit e99c7b9d6bf07cfbbcb786769a7f41e17da80fb0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 7 00:28:21 2003 +0000
+
+    take a const GdkColor* instead of a non-const color.
+    
+    * src/vte.c, src/vte.h(vte_terminal_set_background_tint_color): take a const
+       GdkColor* instead of a non-const color.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    3 ++-
+ src/vte.h |    2 +-
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 7ff66739d0e5a603a7c6ba37ef075934135fd7c5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 6 17:25:44 2003 +0000
+
+    regenerate. update for vte_char_attributes rename.
+    
+    * python/vte.defs: regenerate.
+    * python/vte.override: update for vte_char_attributes rename.
+
+ ChangeLog           |    4 ++++
+ python/vte.defs     |   46 ++++++++++++++++++++++++++++++++++++++++++++++
+ python/vte.override |   12 ++++++------
+ 3 files changed, 56 insertions(+), 6 deletions(-)
+
+commit 727213593e805e1eff6fd7e7036885ffd4795542
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 6 17:20:33 2003 +0000
+
+    rename struct vte_char_attributes to VteCharAttributes, fixup some docs.
+    
+    * src/vte.c, src/vte.h, src/vteaccess.c: rename struct vte_char_attributes to
+       VteCharAttributes, fixup some docs.
+    * doc/reference: finish up docs.
+
+ ChangeLog                          |    5 +
+ doc/reference/tmpl/reaper.sgml     |    2 +-
+ doc/reference/tmpl/vte-unused.sgml |  195 ++++++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/vte.sgml        |   62 ++++++++----
+ doc/reference/tmpl/vteaccess.sgml  |    2 +-
+ doc/reference/vte-sections.txt     |   48 ++++++++-
+ src/vte.c                          |   59 ++++++------
+ src/vte.h                          |    5 +-
+ src/vteaccess.c                    |   16 ++--
+ 9 files changed, 328 insertions(+), 66 deletions(-)
+
+commit 4de594de6072f866ec78600166309a1232656bbc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 5 22:55:08 2003 +0000
+
+    add FT2_LIBS and FT2_CFLAGS to our libs and cflags. Add xft >= 2.0 and
+    
+    * vte.pc.in: add FT2_LIBS and FT2_CFLAGS to our libs and cflags.  Add xft >= 2.0
+       and fontconfig as hard requirements.
+
+ ChangeLog |    4 ++++
+ vte.pc.in |    6 +++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 6b9ac417b5cfa881b0f24cdf7e86950f8b16377a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 5 22:36:42 2003 +0000
+
+    don't spit out which rendering method we're using except in debug mode.
+    
+    * src/vtedraw.c: don't spit out which rendering method we're using except in
+       debug mode.
+
+ ChangeLog     |    4 ++++
+ src/vtedraw.c |    1 -
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 6f5d8d1e0747db823e73c4fb7642f7d5b41f740f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 5 22:34:34 2003 +0000
+
+    don't print "Bogus font." when we think the font metrics are screwy.
+    
+    * src/vtepango.c, src/vtexft.c: don't print "Bogus font." when we think the
+       font metrics are screwy.
+
+ ChangeLog      |    4 ++++
+ src/vtepango.c |    1 -
+ src/vtexft.c   |    1 -
+ 3 files changed, 4 insertions(+), 2 deletions(-)
+
+commit c6c7bb21c498d9abe70d7f28bd867045bb0a68dc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 5 22:31:08 2003 +0000
+
+    require Xft2 and fontconfig, drop Xft1. Require freetype2. add xticker,
+    
+    * configure.in: require Xft2 and fontconfig, drop Xft1.  Require freetype2.
+    * src/Makefile.am, src/xticker.c: add xticker, useless but interesting.
+    * src/vte.c, src/vte.h: add vte_terminal_set_scroll_background() to enable
+       background scrolling (where supported by the drawing code).
+    * src/vteapp.c: set the tinting color to the default background color to see
+       what that's like.  Add -s option to toggle scrolling backgrounds.
+    * src/vtefc.c, src/vtefc.h: add.  For converting PangoFontDescriptions to
+       sorted lists of FcPatterns suitable for passing to XftFontOpenPattern()
+       or even FT_New_Face().
+    * src/vtedraw.c, src/vtedraw.h: add.  New drawing layer.
+    * src/vtepango.c, src/vtepango.h: add.  Drawing layer using Pango.
+    * src/vtexft.c, src/vtexft.h: add.  Drawing layer using Xft2.
+    * src/vte.c: add render type VteRenderDraw for transitional period in
+       preparation for nuking other drawing code.  Merge HAVE_XFT bits into
+       HAVE_XFT2 areas.  Nuke Xft1-specific stuff.  Move drawing of lines
+       and rectangles to dedicated functions.  Always call vte_unichar_width()
+       instead of g_unichar_iswide().
+
+ ChangeLog       |   20 +
+ configure.in    |  112 +++--
+ src/Makefile.am |   17 +-
+ src/vte.c       | 1780 ++++++++++++++++++++++++++++++++++++-------------------
+ src/vte.h       |    1 +
+ src/vteapp.c    |    9 +-
+ src/vtedraw.c   |  227 +++++++
+ src/vtedraw.h   |  110 ++++
+ src/vtefc.c     |  346 +++++++++++
+ src/vtefc.h     |   42 ++
+ src/vtepango.c  |  424 +++++++++++++
+ src/vtepango.h  |   35 ++
+ src/vtexft.c    |  728 +++++++++++++++++++++++
+ src/vtexft.h    |   39 ++
+ src/xticker.c   |  144 +++++
+ 15 files changed, 3388 insertions(+), 646 deletions(-)
+
+commit 658c3b9bca57da43964410b0f1c149b37e38901d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 4 19:56:17 2003 +0000
+
+    fix swap of one variable for another which prevented stripping of control
+    
+    * src/vte.c(vte_sequence_handler_set_title_internal): fix swap of one variable
+       for another which prevented stripping of control chars, spotted by
+       Nam SungHyun.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 8369c0f5728784c8856e4e5a27fc80772152b8aa
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 4 18:01:25 2003 +0000
+
+    wrap properly when a scrolling region is set (#107559).
+    
+    * src/vte.c(vte_terminal_insert_char): wrap properly when a scrolling region
+       is set (#107559).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 4f53480a826210d6c03fd04b74b7116d5370f83a
+Author: added po/ja.po. T.Aihana <aihana gnome gr jp>
+Date:   Thu Feb 27 15:42:21 2003 +0000
+
+    2003-02-28 added po/ja.po. T.Aihana <aihana gnome gr jp>
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit ef337abba581f3ea5f3338277017f1514813a159
+Author: added Japanese translation. T.Aihana <aihana gnome gr jp>
+Date:   Thu Feb 27 15:40:39 2003 +0000
+
+    2003-02-28 added Japanese translation. T.Aihana <aihana gnome gr jp>
+
+ po/ChangeLog |    4 ++
+ po/ja.po     |  126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 130 insertions(+), 0 deletions(-)
+
+commit 49940ab3b43573e83bc4eca8f58013ab392c4f37
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 27 00:31:47 2003 +0000
+
+    force characters substituted through the ACS map to have width of 1.
+    
+    * src/iso2022.c(_vte_iso2022_substitute,_vte_iso2022_substitute_single): force
+       characters substituted through the ACS map to have width of 1.
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |   32 +++++++++++++++++++++++++++++---
+ 2 files changed, 33 insertions(+), 3 deletions(-)
+
+commit 9e889be8604ad6b57282fd884a02073167cc0c3c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 27 00:14:08 2003 +0000
+
+    use an array of codepoints instead of a UTF-8 string so that we can check
+    
+    * src/vte.c(vte_terminal_font_open_xft,vte_terminal_font_open_pango): use an
+       array of codepoints instead of a UTF-8 string so that we can check for
+       lack of font coverage in Xft fonts.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   56 +++++++++++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 44 insertions(+), 17 deletions(-)
+
+commit 0ca7f0516f839b503a1c2f12862e1ce38124345a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Feb 26 23:50:04 2003 +0000
+
+    formatting fixups.
+    
+    * src/vte.c: formatting fixups.
+
+ ChangeLog |    3 ++
+ src/vte.c |   67 +++++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 37 insertions(+), 33 deletions(-)
+
+commit 26922b2b3e2dc22c25de00d9dae12b9307d3ed1c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Feb 26 23:47:51 2003 +0000
+
+    patch from Jungshik Shin for detecting and handling fonts where ASCII
+    
+    * src/vte.c(vte_terminal_font_open_xft,vte_terminal_font_open_pango): patch
+       from Jungshik Shin for detecting and handling fonts where ASCII
+       characters are double-width (#106618)
+
+ ChangeLog |    5 +++++
+ src/vte.c |   46 ++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 47 insertions(+), 4 deletions(-)
+
+commit fe69847b32c5dec739197dc4a0347f5042cc6198
+Author: Taneem Ahmed <taneem eyetap org>
+Date:   Wed Feb 26 08:37:13 2003 +0000
+
+    Added "bn" to ALL_LINGUAS. Added Bangla/Bengali translation by Jamil Ahmed
+    
+    2003-02-26  Taneem Ahmed  <taneem eyetap org>
+    
+       * configure.in:  Added "bn" to ALL_LINGUAS.
+       * bn.po: Added Bangla/Bengali translation
+       by Jamil Ahmed <jamil bengalinux org>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/bn.po     |  122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 132 insertions(+), 1 deletions(-)
+
+commit 60123909ac05f35f34c0e029b1c7ce6082f2f8a9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Feb 26 00:33:14 2003 +0000
+
+    take a shot at implementing xconsole-like functionality when started with
+    
+    * src/vteapp.c(main): take a shot at implementing xconsole-like functionality
+       when started with the -C flag: we open /dev/console and TIOCCONS it,
+       and just feed data to the widget until we lose ownership of the
+       MIT_CONSOLE_$(hostname) clipboard.
+
+ ChangeLog    |    6 ++
+ src/vteapp.c |  148 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 143 insertions(+), 11 deletions(-)
+
+commit 18addacae85e32fbc25eb5547ab9d06e0453bb77
+Author: Sam�el J�n Gunnarsson <sammi techattack nu>
+Date:   Tue Feb 25 19:14:43 2003 +0000
+
+    Added Icelandic translation.
+    
+    2003-02-25  Sam�el J�n Gunnarsson <sammi techattack nu>
+    
+       * is.po: Added Icelandic translation.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/is.po     |  123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 132 insertions(+), 1 deletions(-)
+
+commit 8476c00dff0d90b82b867737111c90a81ebff4c6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 25 00:18:03 2003 +0000
+
+    don't report the user-settable title and icon strings to applications,
+    
+    * src/vte.c(vte_sequence_handler_window_manipulation): don't report the
+       user-settable title and icon strings to applications, based on H D
+       Moore's "Terminal Emulator Security Issues" (CAN-2003-0070).
+    * src/vte.c(vte_sequence_handler_set_title_internal): strip out control
+       characters just to be on the safe side.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   13 +++++++++----
+ 2 files changed, 16 insertions(+), 4 deletions(-)
+
+commit 512186bb91ca5ee9f0e6407db51568a9c86a76f1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 24 22:45:07 2003 +0000
+
+    home the cursor when we switch to the alternate screen (#105075).
+    
+    * src/vte.c(vte_sequence_handler_decset_internal): home the cursor when we
+       switch to the alternate screen (#105075).
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    1 +
+ src/vte.c       |    6 +++++-
+ 3 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 849f6800f838b3f418c9ce0add4da61ee4a89f7e
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Sun Feb 23 02:52:09 2003 +0000
+
+    Added "pt" to ALL_LINGUAS.
+    
+    2003-02-23  Duarte Loreto <happyguy_pt hotmail com>
+    
+            * configure.in: Added "pt" to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 7eb560f64185ac54da6d8604f6a9018ea120ac4c
+Author: Duarte Loreto <happyguy_pt hotmail com>
+Date:   Sun Feb 23 02:51:05 2003 +0000
+
+    Added Portuguese translation.
+    
+    2003-02-23  Duarte Loreto <happyguy_pt hotmail com>
+    
+            * pt.po: Added Portuguese translation.
+
+ po/ChangeLog |    4 ++
+ po/pt.po     |  123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 127 insertions(+), 0 deletions(-)
+
+commit 3fbecfdbecd9c9ac60cc26e3274ac22d8d47eb35
+Author: Metin Amiroff <metin karegen com>
+Date:   Fri Feb 21 11:54:44 2003 +0000
+
+    Added az to ALL_LINGUAS.
+    
+    2003-02-21  Metin Amiroff  <metin karegen com>
+    
+       * configure.in:  Added az to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 7ecc0ea9725c8ee42e329b1c64b26b94d9479555
+Author: Metin Amiroff <metin karegen com>
+Date:   Fri Feb 21 11:52:54 2003 +0000
+
+    Added Azerbaijani translation.
+    
+    2003-02-21  Metin Amiroff  <metin karegen com>
+    
+       * az.po: Added Azerbaijani translation.
+
+ po/ChangeLog |    4 ++
+ po/az.po     |  123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 127 insertions(+), 0 deletions(-)
+
+commit 23e1237027d24d52f279ade778a800e56da2c90d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 21 03:12:09 2003 +0000
+
+    in debug mode, skip coverage assertions for specific keys (GDK_2 - GDK_8).
+    
+    * src/keymap.c(_vte_keymap_map): in debug mode, skip coverage assertions for
+       specific keys (GDK_2 - GDK_8).
+    * src/keymap.c: remove unshifted entries for GDK_2 - GDK_8 (#106667)
+
+ ChangeLog    |    5 +++++
+ src/keymap.c |   25 ++++++++++++++++---------
+ 2 files changed, 21 insertions(+), 9 deletions(-)
+
+commit 1d11073ddb176328f34a9a5e48a706e40dfeeac8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 21 01:20:44 2003 +0000
+
+    stop gratuitously resetting the IM context. correctly determine when we
+    
+    * src/vte.c(vte_terminal_im_commit,vte_terminal_paste_cb): stop gratuitously
+       resetting the IM context.
+    * src/vte.c(vte_terminal_process_incoming): correctly determine when we have an
+       IM context -- it should be iff we're realized.
+    * src/vte.c(vte_terminal_key_press/release): only filter keypresses through the
+       IM context if we're realized, otherwise it doesn't exist.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   10 +++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+commit c2be38cd00eedfeaea58a0b1f480d26415c01617
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 19:27:17 2003 +0000
+
+    reverse that last change -- don't always assume proportional text.
+    
+    * src/vte.c(vte_terminal_paint): reverse that last change -- don't always
+       assume proportional text.
+    * src/vte.c(vte_sequence_handler_ta): eliminate dead code.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   17 -----------------
+ 2 files changed, 5 insertions(+), 17 deletions(-)
+
+commit c2b438a6e89039d6518d62b6a22ac4d841a4d13a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 08:12:12 2003 +0000
+
+    move the initial drawing x left whenever we back up to a previous cell to
+    
+    * src/vte.c(vte_terminal_draw_row): move the initial drawing x left whenever
+       we back up to a previous cell to avoid drawing fragments.
+    * src/vte.c(vte_terminal_paint): always assume non-monospaced text, because the
+       "missing glyph" glyph consistently looks screwy otherwise.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    5 +++++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit ca1368da42e8e2b3b9127665932589d5473a2945
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 07:40:17 2003 +0000
+
+    don't reset the input method here -- it may be in the middle of something
+    
+    * src/vte.c(vte_terminal_feed_child): don't reset the input method here -- it
+       may be in the middle of something (Red Hat #81542).
+    * src/vte.c(vte_terminal_im_commit): reset the input method when we get text
+       committed (Red Hat #81542).
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    2 +-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit f94d3321a8cf6d3b2f66f5d95d4321db5b733b4f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 03:42:43 2003 +0000
+
+    if we're not currently realized, don't try to tell our IM context that our
+    
+    * src/vte.c(vte_terminal_focus_in,vte_terminal_focus_out): if we're not
+       currently realized, don't try to tell our IM context that our focus
+       state changed, because we don't have one.  While we're at it, it's
+       silly to try to force the cursor to be drawn when we're not realized,
+       either.
+    * src/vte.c(vte_terminal_background_update): disconnect self, just in case we
+       were called directly while still queued, which would otherwise leak the
+       source, leading to potential problems later (Red Hat #84368).
+
+ ChangeLog |   10 ++++++++++
+ src/vte.c |   44 ++++++++++++++++++++++++++++----------------
+ 2 files changed, 38 insertions(+), 16 deletions(-)
+
+commit 1e9c96f4cd86876c7ce43d5fdfa0021a1b2407f3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 02:44:40 2003 +0000
+
+    use gdk_window_scroll if the first row to be scrolled is the first visible
+    
+    * src/vte.c(vte_terminal_scroll_window): use gdk_window_scroll if the first row
+       to be scrolled is the first visible row, not if it's the first row we
+       ever saw (Red Hat #83472).
+
+ ChangeLog |    8 +++++++-
+ src/vte.c |    2 +-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit ab30d1a209885f446d0eef718cfddd645a6f8cf1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 02:04:50 2003 +0000
+
+    - add bug ID from Red Hat bugzilla, for tracking
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit aec5c7bb10976306ae93ab7c779021a3333059d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 20 02:03:59 2003 +0000
+
+    grab input focus on button 1 press (#106573).
+    
+    * src/vte.c(vte_terminal_button_press): grab input focus on button 1 press
+       (#106573).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    5 +++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit fa3e8778902c5aa0b713806649ef2dbf47fc03db
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Wed Feb 19 05:29:16 2003 +0000
+
+    be.po: Updated Belarusian translation from Belarusian team <i18n mova org>.
+
+ po/ChangeLog |    5 +++
+ po/be.po     |  103 ++++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 58 insertions(+), 50 deletions(-)
+
+commit 76fc436de6e05670fb5b8e515ddb88ae8d093ee4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 20:54:21 2003 +0000
+
+    add missing chunk of fix for backtab.
+    
+    * src/vte.c(vte_terminal_sequence_handler_bt): add missing chunk of fix for
+       backtab.
+
+ ChangeLog |   12 ++++++++----
+ src/vte.c |    2 +-
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+commit e66f980c1658bdc351bb15b99d193391e6ad7319
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 20:19:03 2003 +0000
+
+    turn on update debugging if VTE_DEBUG_FLAGS includes "updates"
+    
+    * src/vte.c: turn on update debugging if VTE_DEBUG_FLAGS includes "updates"
+
+ ChangeLog |    4 ++++
+ src/vte.c |    5 +++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 823156b3627d3909961b4227601552255fbdc266
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 20:00:56 2003 +0000
+
+    add map entries for unmodified digit keypresses.
+    
+    * src/keymap.c: add map entries for unmodified digit keypresses.
+
+ ChangeLog    |    3 +++
+ src/keymap.c |    7 +++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit b68f5e0c3b9b1dcebf6999d51f663bfcee2c153a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 19:54:03 2003 +0000
+
+    use the default cursor by default, so that we don't look weird to people
+    
+    * src/vte.c(vte_terminal_match_add): use the default cursor by default, so that
+       we don't look weird to people who aren't used to the cursor changing
+       this way.
+    * configure.in: forcibly define VTE_DEBUG to "1" when we define it.
+
+ ChangeLog    |    6 ++++++
+ configure.in |    2 +-
+ src/vte.c    |    2 +-
+ 3 files changed, 8 insertions(+), 2 deletions(-)
+
+commit 21445a9551e1095985eb462d520f70cf0805325c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 19:39:24 2003 +0000
+
+    emit focus-event signals from the accessible peer when the widget receives
+    
+    * src/vteaccess.c: emit focus-event signals from the accessible peer when the
+       widget receives focus-in and focus-out events, noted by Marc Mulcahy.
+
+ ChangeLog       |    5 +++++
+ src/vteaccess.c |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 43 insertions(+), 0 deletions(-)
+
+commit 52adc5f44e7f5052b2d09f7ccde3641d3681ba3c
+Author: Roozbeh Pournader <roozbeh sharif edu>
+Date:   Tue Feb 18 14:13:16 2003 +0000
+
+    Added "fa" to ALL_LINGUAS. Added Persian translation.
+    
+    2003-02-18  Roozbeh Pournader  <roozbeh sharif edu>
+    
+       * configure.in: Added "fa" to ALL_LINGUAS.
+       * po/fa.po: Added Persian translation.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/fa.po     |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 127 insertions(+), 1 deletions(-)
+
+commit 8e04e2c5fb3c4aa1de1b409849a665a777448b85
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 05:42:59 2003 +0000
+
+    add vte_terminal_match_set_cursor() (#105986).
+    
+    * src/vte.c, src/vte.h: add vte_terminal_match_set_cursor() (#105986).
+
+ ChangeLog    |    3 ++
+ src/vte.c    |   76 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ src/vte.h    |    3 ++
+ src/vteapp.c |   11 +++++++-
+ 4 files changed, 85 insertions(+), 8 deletions(-)
+
+commit a66a003c78bd9f62156bd05f12ed8dfc636ab9f5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 05:02:07 2003 +0000
+
+    add @LDFLAGS@ to all of the LDADD clauses, hopefully fixing #105415.
+    
+    * src/Makefile.am: add @LDFLAGS@ to all of the LDADD clauses, hopefully fixing
+       #105415.
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |   38 +++++++++++++++++++-------------------
+ 2 files changed, 23 insertions(+), 19 deletions(-)
+
+commit ac5cd9d1304365f387eee101ae800ac4ab8b5076
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 03:49:08 2003 +0000
+
+    recognize and discard invalid arguments (#57453).
+    
+    * src/vte.c(vte_terminal_sequence_handler_cs): recognize and discard invalid
+       arguments (#57453).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    9 ++++++++-
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 84f96c1bde40309c8cb99e4a52d657e433cf26a4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 18 03:47:25 2003 +0000
+
+    add map entries for Ctrl+digit keys (#106193).
+    
+    * src/keymap.c: add map entries for Ctrl+digit keys (#106193).
+
+ ChangeLog    |    3 +++
+ src/keymap.c |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+), 0 deletions(-)
+
+commit e1e2a6d50606d0387a6d5de88472db5d808588bc
+Author: Alessio Frusciante <algol src gnome org>
+Date:   Mon Feb 17 18:48:03 2003 +0000
+
+    Added Italian translation by Francesco Marletta.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/it.po     |  125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 135 insertions(+), 1 deletions(-)
+
+commit 8b32ee71caaf29151f8435bddc41ffac9120c118
+Author: Christian Rose <menthos menthos com>
+Date:   Sun Feb 16 20:04:45 2003 +0000
+
+    Some fixes for problems catched in translation review.
+    
+    2003-02-16  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Some fixes for problems catched in translation review.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   48 ++++++++++++++++++++++++------------------------
+ 2 files changed, 28 insertions(+), 24 deletions(-)
+
+commit f8eee3ec7d03156a978257091842f8d98a55cbca
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Sun Feb 16 09:36:02 2003 +0000
+
+    configure.in: Added Belarusian to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit c81f504ecc19d0e8b27fcc4cbe11aca4a402de9c
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Sun Feb 16 09:34:32 2003 +0000
+
+    be.po: Added Belarusian translation from Belarusian team <i18n infonet by>.
+
+ po/ChangeLog |    5 ++
+ po/be.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 122 insertions(+), 0 deletions(-)
+
+commit f475bd7c28d5e60b1f06b3e49b4a716cfe29cc5b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 22:32:10 2003 +0000
+
+    fix to move back to the leftmost column if there are no previous tabstops,
+    
+    * src/vte.c(vte_terminal_sequence_handler_bt): fix to move back to the leftmost
+       column if there are no previous tabstops, exercised by make menuconfig.
+    * src/vte.c(vte_terminal_background_update): handle pixbufs with n_channels!=3.
+
+ ChangeLog |    9 +++++++++
+ src/vte.c |   20 ++++++++++++--------
+ 2 files changed, 21 insertions(+), 8 deletions(-)
+
+commit 7064407de5e5fbb7e6c088f4b3e7194a71d17373
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 21:58:18 2003 +0000
+
+    handle width masks now that we're encoding widths for all characters.
+    
+    * src/interpret.c: handle width masks now that we're encoding widths for all
+       characters.
+
+ ChangeLog       |    4 ++++
+ src/interpret.c |    3 +++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit c2d6924c3abdeb850e4577d374251e6ca8b35ab7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 21:36:13 2003 +0000
+
+    - would help if i actually made the changes i changelogged
+
+ src/vte.c |   12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+commit 2cff982aaf3dd6daafe4a9bb5576bdf2da34b3cb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 21:35:09 2003 +0000
+
+    more comments to keep myself from getting confused later.
+    
+    * src/vte.c: more comments to keep myself from getting confused later.
+
+ ChangeLog |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 893ea4cf83cb8ec6108282ecd248a0bd28d1adc9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 04:46:08 2003 +0000
+
+    change the coalescing timeout to 2ms.
+    
+    * src/vte.c: change the coalescing timeout to 2ms.
+
+ ChangeLog |    3 +++
+ src/vte.c |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit b1aa5c0f6c40edb37b33d46f14c5a5f485998195
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Feb 14 03:50:48 2003 +0000
+
+    attempt to coalesce data received within about 10ms to reduce load on the
+    
+    * src/vte.c(vte_terminal_io_read): attempt to coalesce data received
+       within about 10ms to reduce load on the X server on systems where the
+       scheduler wakes us up as soon as we have a few bytes available.  Based
+       on a suggested fix by msw.
+    * src/vte.c(vte_terminal_io_read): never free buf, it's not a heap
+       variable any more.  Spotted by msw.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   57 +++++++++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 47 insertions(+), 18 deletions(-)
+
+commit 7373a8e881f8095290e83c429d25447794b8e910
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 13 07:16:04 2003 +0000
+
+    close fd leak. close potential fd leak.
+    
+    * src/vte.c(vte_terminal_finalize): close fd leak.
+    * src/vte.c(vte_terminal_fork_command): close potential fd leak.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 67af1979229dac9b5964a85eb268447d0a1c6773
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 13 07:00:21 2003 +0000
+
+    handle cases where the widget has no data and returns NULL when we ask for
+    
+    * src/reflect.c(main): handle cases where the widget has no data and returns
+       NULL when we ask for it.
+
+ ChangeLog     |    4 ++++
+ src/reflect.c |   17 ++++++++++++-----
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+commit 4996c0113b4398cd5b0e93e3327c1bac9a161b4a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 13 06:57:16 2003 +0000
+
+    do a complete read of the widget before we start off in main to ensure we
+    
+    * src/reflect.c(main): do a complete read of the widget before we start off in
+       main to ensure we have accurate data.
+    * src/vteaccess.c(vte_terminal_accessible_update_private_data_if_needed): only
+       attempt to free the previous snapshot if it existed.
+
+ ChangeLog       |    6 ++++++
+ src/reflect.c   |   11 +++++++++++
+ src/vteaccess.c |    4 +++-
+ 3 files changed, 20 insertions(+), 1 deletions(-)
+
+commit 89b529fe5b38082668fd39cd165bb091910a6187
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 13 06:50:02 2003 +0000
+
+    connect to signals before any get emitted. use a GString to store snapshot
+    
+    * src/reflect.c(main): connect to signals before any get emitted.
+    * src/vteaccess.c: use a GString to store snapshot text so that we always have
+       proper length information.
+
+ ChangeLog       |    5 ++
+ src/reflect.c   |   15 +++--
+ src/vteaccess.c |  211 +++++++++++++++++++++++++++++++++----------------------
+ 3 files changed, 141 insertions(+), 90 deletions(-)
+
+commit 879e4921f21b3cea65f24042e657f600c4f2d430
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 13 05:01:28 2003 +0000
+
+    spit out a warning if we receive an out-of-range text_changed::delete
+    
+    * src/reflect.c(text_changed_delete): spit out a warning if we receive an
+       out-of-range text_changed::delete signal.
+
+ ChangeLog     |    4 ++++
+ src/reflect.c |    7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit ac69abef64b2412c1c322d1a09bd2cd8b56e457a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Feb 11 20:21:43 2003 +0000
+
+    add data for tracking ambiguous-width Unicode characters. add
+    
+    * src/genwidths, src/uniwidths: add data for tracking ambiguous-width Unicode
+       characters.
+    * src/iso2022.c, src/iso2022.h: add _vte_iso2022_is_ambiguous() for checking if
+       a character is ambiguous, and _vte_iso2022_ambiguous_width() for
+       guessing how wide it should be based on the current locale.  Rename
+       _vte_iso2022_get/set_width to ...encoded_width to clarify the intent,
+       ditto for the related macros.
+    * src/table.c,src/trie.c: use renamed macros for reading encoded widths.
+    * src/iso2022.c(_vte_iso2022_substitute_single,_vte_iso2022_substitute): handle
+       ambiguous widths properly, and always encode a width.
+    * src/Makefile.am: use the default LDFLAGS, I think.
+    * src/vte.c,src/vte.h: add vte_terminal_set_background_tint_color().
+    * src/vte.c(vte_terminal_unrealize): unhook from background update sources,
+       because we may not have a display after that.
+    * src/vte.c(vte_terminal_size_allocate): only queue a background update if
+       we're in transparent mode and either we've been moved or we have no
+       background yet.  If our size changed, force a repaint.
+    * src/vte.c(vte_sequence_handler_window_manipulation): snip off the padding
+       along the edges when responding to requests for the window size and
+       location -- apps have no way to query it.
+    * src/vte.c(vte_terminal_get_text_range): skip over fragments properly.
+    * src/vte.c(vte_terminal_draw_row): skip over fragments properly.
+    * src/vte.c(vte_unichar_width): rework in terms of the width checking in the
+       iso2022 module for consistency.
+
+ ChangeLog        |   26 ++
+ src/Makefile.am  |    4 +-
+ src/genwidths.py |   35 +++
+ src/iso2022.c    |  147 +++++++---
+ src/iso2022.h    |    9 +-
+ src/table.c      |    2 +-
+ src/trie.c       |    2 +-
+ src/uniwidths    |  813 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vte.c        |  138 ++++++++--
+ src/vte.h        |    2 +
+ src/vteapp.c     |    4 +-
+ 11 files changed, 1103 insertions(+), 79 deletions(-)
+
+commit c186027e089e5be9ed12549b17a687b5d1940e59
+Author: Fatih Demir <kabalak src gnome org>
+Date:   Mon Feb 10 23:34:42 2003 +0000
+
+    Take over
+
+ po/ChangeLog |    4 ++++
+ po/tr.po     |   33 +++++++++++++++++----------------
+ 2 files changed, 21 insertions(+), 16 deletions(-)
+
+commit b45da7449756cccb42925ff2c4dbe7e749cc736f
+Author: Christian Rose <menthos menthos com>
+Date:   Thu Feb 6 10:58:25 2003 +0000
+
+    Added "id" to ALL_LINGUAS. Added Indonesian translation by Mohammad Damt
+    
+    2003-02-06  Christian Rose  <menthos menthos com>
+    
+       * configure.in: Added "id" to ALL_LINGUAS.
+       * po/id.po: Added Indonesian translation by
+       Mohammad Damt <mdamt bisnisweb com>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/id.po     |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 128 insertions(+), 1 deletions(-)
+
+commit f993ce6f67f53208bb56f4968581bbe39cf29016
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 3 21:17:13 2003 +0000
+
+    suppress background updates if we haven't moved and the background image
+    
+    * src/vte.c(vte_terminal_size_allocate): suppress background updates if we
+       haven't moved and the background image already exists (#104868).
+
+ ChangeLog |    4 ++++
+ src/vte.c |   11 +++++++++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit d19a6c9b559eefe1aa6ba07a4d09c560a4c07b3b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 31 23:06:35 2003 +0000
+
+    - include iso2022.txt in dist tarballs
+
+ src/Makefile.am |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 1faa076d553ebaa21c014659a844e444c99ee0f7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 31 21:39:52 2003 +0000
+
+    - refer to the bug ID in the changelog for reference
+
+ ChangeLog |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 1cd5c0ae59bc7ba40b35e7ee9f7e0f00c231a7c7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 31 21:33:45 2003 +0000
+
+    always update the cursor position, in case text was added or removed
+    
+    * src/vteaccess.c(vte_terminal_accessible_update_private_data_if_needed): always
+       update the cursor position, in case text was added or removed without
+       the cursor itself moving.
+    * src/vteaccess.c(vte_terminal_accessible_get_text_somewhere): don't emit a
+       warning when the caller attempts to read the Nth character when we have
+       only 0 to N-1, just return an empty string.
+    * src/vteaccess.c(vte_terminal_accessible_new): make the terminal peer a weak
+       pointer.
+    * src/vteaccess.c(vte_terminal_accessible_finalize): if the terminal peer is
+       not NULL, disconnect it as a weak pointer and don't bother
+       disconnecting from its signals.  Add a debug message.
+    * src/vteaccess.c(vte_terminal_accessible_text_finalize):  Add a debug message.
+    * src/vte.c(vte_terminal_get_accessible): keep a weak pointer to the accessible
+       peer instead of a static pointer.
+    * src/vte.c(vte_terminal_finalize): if the accessible peer still exists, remove
+       its weak pointer before attempting to unref it.
+    * src/vte.c: rename accessible_exists member to accessible_emit, which more
+       accurately reflects its purpose.
+
+ ChangeLog       |   21 +++++++++
+ src/vte.c       |   42 +++++++++++------
+ src/vteaccess.c |  134 +++++++++++++++++++++++++++++++++----------------------
+ 3 files changed, 129 insertions(+), 68 deletions(-)
+
+commit cbf9f0bc1e91e608411054a8e966d888cbcb85b7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 31 05:40:51 2003 +0000
+
+    rename to vte_unichar_is_graphic, to match conventions used elsewhere.
+    
+    * src/vte.c(vte_unichar_isgraphic): rename to vte_unichar_is_graphic, to match
+       conventions used elsewhere.
+    * src/vte.c(vte_unichar_is_graphic): count 0xa3, 0x3c0, 0x2592, 0x25ae, 0x25c6
+       as graphic characters.
+    * src/iso2022.txt: add sample text using character set 0.
+
+ ChangeLog       |    7 ++++++
+ src/iso2022.txt |    2 +
+ src/vte.c       |   64 +++++++++++++++++++++++++++++++-----------------------
+ 3 files changed, 46 insertions(+), 27 deletions(-)
+
+commit 055bf01d7b607dba481c6f455bdcb44866de310d
+Author: Fatih Demir <kabalak src gnome org>
+Date:   Thu Jan 30 22:38:19 2003 +0000
+
+    Added tr.po
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/tr.po     |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 128 insertions(+), 1 deletions(-)
+
+commit 7d9071b4c7679f4cdf55dca224063d0a38d01647
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 30 20:17:36 2003 +0000
+
+    added, for scaring people away. bump to 0.11.x for development. reset
+    
+    * MESSAGE-OF-DOOM: added, for scaring people away.
+    * vte.spec: bump to 0.11.x for development.
+    * src/mev.c(main): reset modes before quitting.
+    * src/vte.c(vte_terminal_button_press): don't always extend selection when not
+       in event mode.
+
+ ChangeLog       |    7 +++++++
+ MESSAGE-OF-DOOM |    2 ++
+ src/mev.c       |    1 +
+ src/vte.c       |   25 +++++++++++++++----------
+ vte.spec        |    5 ++++-
+ 5 files changed, 29 insertions(+), 11 deletions(-)
+
+commit 9f27709de010cf2201b446d3844f0ef96e673e45
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 28 22:57:42 2003 +0000
+
+    make debugging support an explicit option to configure. don't
+    
+    * configure.in: make debugging support an explicit option to configure.  don't
+       automatically enable debugging in maintainer mode.
+
+ ChangeLog    |    4 ++++
+ configure.in |    7 +++++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 7f016144749814330cc1341686ca61a6d5d73198
+Author: Kostas Papadimas <pkst src gnome org>
+Date:   Tue Jan 28 12:27:41 2003 +0000
+
+    Added the Greek translation
+
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/el.po     |  128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 133 insertions(+), 1 deletions(-)
+
+commit 3039b05b8ff4856c58eeeecc6554b064f26c5d12
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 28 04:25:53 2003 +0000
+
+    0.10.15
+
+ vte.spec |    8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+commit edb193f416aea41a8f063d498ce8c7acc428b4c9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 27 20:23:20 2003 +0000
+
+    create the "invisible" cursor using a bitmap instead of a pixmap, changing
+    
+    * src/vte.c(vte_terminal_realize): create the "invisible" cursor using a bitmap
+       instead of a pixmap, changing it from a 1x1 black square to nothing.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   17 ++++++++---------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+commit 7bbce6d00d4d0ef9f23951891b71f10364c51a2f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 27 19:39:28 2003 +0000
+
+    make the various mouse event modes mutually-exclusive, because apps expect
+    
+    * src/vte.c(vte_terminal_decset_internal): make the various mouse event modes
+       mutually-exclusive, because apps expect them to be (#104395).
+    * src/vte.c: add a prototype for vte_terminal_background_update before it is
+       used to silence a compiler warning.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   35 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+), 0 deletions(-)
+
+commit 1c61da0b49035be2e28e3beb4a10641c1b365fe1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 27 07:12:17 2003 +0000
+
+    force a background update immediately when we realize instead of queuing
+    
+    * src/vte.c(vte_terminal_realize): force a background update immediately when
+       we realize instead of queuing it up (#104381).
+
+ ChangeLog         |    4 ++++
+ doc/vttest.tar.gz |  Bin 96645 -> 98911 bytes
+ src/vte.c         |    7 ++++---
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 99e8871a2dccab82b3ddac1dfbcd04b4e847e798
+Author: Daniel Yacob <yacob src gnome org>
+Date:   Sun Jan 26 17:19:36 2003 +0000
+
+    Adding am to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 666e9ecf796c093725bcf2fef03636ba1c800d47
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 24 21:34:25 2003 +0000
+
+    fix declaration order (#104290).
+    
+    * src/vte.c(vte_terminal_background_update): fix declaration order (#104290).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ++--
+ vte.spec  |    3 +++
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 37e0796872438e0a18f40888ba02ccb8478dc20c
+Author: Nam SungHyun <namsh src gnome org>
+Date:   Fri Jan 24 01:50:19 2003 +0000
+
+    Added Korean translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ko.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 126 insertions(+), 1 deletions(-)
+
+commit d13920ab879e141735705de293645efd47075827
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 23 20:28:49 2003 +0000
+
+    recognize and ignore attempts to set text properties 21 and 2L, whatever
+    
+    * src/caps.c, src/vte.c: recognize and ignore attempts to set text properties
+       21 and 2L, whatever those are (possible workaround #104154).
+
+ ChangeLog  |    4 ++++
+ src/caps.c |    7 +++++++
+ src/vte.c  |    2 ++
+ 3 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 70fdc1ad481cbb03459f3d39c363914b4d1b2150
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 23 19:17:41 2003 +0000
+
+    accept "1" and "2" as aliases for "B" (#104257).
+    
+    * src/iso2022.c: accept "1" and "2" as aliases for "B" (#104257).
+
+ ChangeLog     |    3 +++
+ src/iso2022.c |    6 +++---
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 47c0ace41d57c34c329fa7554d914119fc516e2a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 23 16:39:21 2003 +0000
+
+    check for curses if we don't have ncurses (the order is ncurses, curses,
+    
+    * configure.in: check for curses if we don't have ncurses (the order is ncurses,
+       curses, libtermcap), as Solaris has neither ncurses nor libtermcap.
+       Reported by Brian Cameron.
+    * src/keymap.c, src/ssfe.c: accept either curses or ncurses as equivalent.
+
+ ChangeLog    |    7 +++++++
+ configure.in |    5 ++++-
+ src/keymap.c |   16 +++++++++++++---
+ src/ssfe.c   |    9 +++++++++
+ 4 files changed, 33 insertions(+), 4 deletions(-)
+
+commit c9311b5af92cbd2a02fc55751c1361a9809adf55
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 23 02:29:11 2003 +0000
+
+    add mev. don't home the cursor automatically. fix sense of shift
+    
+    * src/Makefile.am, src/mev.c: add mev.
+    * src/vte.c(vte_sequence_handler_clear_screen): don't home the cursor
+       automatically.
+    * src/vte.c(vte_terminal_button_pressed): fix sense of shift overriding event
+       mode.  Ignore double- and triple-click in event mode.
+    * src/vte.c(vte_terminal_scroll): in event mode, send button release events to
+       the terminal if it's expecting them.
+    * src/vte.c(vte_terminal_send_mouse_button_internal): clamp coordinates to
+       existing cells.
+    * src/vte.c(vte_terminal_maybe_send_mouse_drag): compare integral cell locations
+        not floating point, when choosing whether or not to drop events in cell
+       tracking mode.  Don't lose the modifiers.
+    * src/vte.c(vte_terminal_motion_notify): don't autoscroll in events mode.
+
+ ChangeLog |   16 +++++
+ src/mev.c |    2 +-
+ src/vte.c |  211 ++++++++++++++++++++++++++++++++++++-------------------------
+ vte.spec  |    5 +-
+ 4 files changed, 147 insertions(+), 87 deletions(-)
+
+commit eceb38869510751724daf815fa0e072a4e032380
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 23 02:16:35 2003 +0000
+
+    - add mev for testing mouse event handling
+
+ src/Makefile.am |    5 +-
+ src/mev.c       |  306 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 310 insertions(+), 1 deletions(-)
+
+commit f39e281529827f68fd0e9bba41785d66a21efc1c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jan 22 21:35:22 2003 +0000
+
+    accept OSC{number};{string}ST as set-text-parameters, per XTerm docs (part
+    
+    * src/caps.c: accept OSC{number};{string}ST as set-text-parameters, per XTerm
+       docs (part of #104154).
+    * src/keymap.c: revert change to prepend "1;" to keys with modifiers (#104139).
+
+ ChangeLog    |    6 ++++++
+ src/caps.c   |   20 ++++++++++++++++++++
+ src/keymap.c |   13 +++++++++++++
+ 3 files changed, 39 insertions(+), 0 deletions(-)
+
+commit 63941dffa610f8dac423c059eab909615d5cc7b9
+Author: Christian Rose <menthos menthos com>
+Date:   Wed Jan 22 02:52:35 2003 +0000
+
+    Added "mn" to ALL_LINGUAS. Added Mongolian translation by Sanlig Badral
+    
+    2003-01-22  Christian Rose  <menthos menthos com>
+    
+       * configure.in: Added "mn" to ALL_LINGUAS.
+       * po/mn.po: Added Mongolian translation by
+       Sanlig Badral <badral chinggis com>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/mn.po     |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 130 insertions(+), 1 deletions(-)
+
+commit af66ba4781d72e69993c97b9406251747277a7c2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jan 22 00:01:37 2003 +0000
+
+    streamline background images and transparency handling, should use less
+    
+    * src/vte.c: streamline background images and transparency handling, should use
+       less memory now.
+
+ ChangeLog |    4 +
+ src/vte.c |  423 +++++++++++++++++++++++++++++++------------------------------
+ vte.spec  |    5 +-
+ 3 files changed, 222 insertions(+), 210 deletions(-)
+
+commit 150031c0479bfeede84df08ac9f5f77bb6c333af
+Author: Yuri Syrota <rasta src gnome org>
+Date:   Tue Jan 21 13:24:48 2003 +0000
+
+    Updated Ukrainian translation
+
+ po/ChangeLog |    4 +++
+ po/uk.po     |   71 +++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 40 insertions(+), 35 deletions(-)
+
+commit 58740a58c331d5232175f197ca5edd1761a9f0c0
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Jan 21 10:26:55 2003 +0000
+
+    Updated translation.
+    
+    2003-01-21  Kjartan Maraas  <kmaraas gnome org>
+    
+       * no.po: Updated translation.
+
+ po/ChangeLog |    4 ++++
+ po/no.po     |   52 ++++++++++++++++++++++++++--------------------------
+ 2 files changed, 30 insertions(+), 26 deletions(-)
+
+commit 770515f1fb9d075b8b4ed778f32c4aa99cb41cc7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 21 02:58:27 2003 +0000
+
+    add some debugging messages if REFLECT_VERBOSE is set in the environment.
+    
+    * src/reflect.c: add some debugging messages if REFLECT_VERBOSE is set in the
+       environment.
+
+ ChangeLog     |    4 ++++
+ src/reflect.c |   15 +++++++++++++++
+ 2 files changed, 19 insertions(+), 0 deletions(-)
+
+commit 83c4f654fefd5132acb8e28af3bb4730bb23d4da
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 21 01:03:21 2003 +0000
+
+    add reflect-text-view, for testing with GtkTextView for sanity's sake.
+    
+    * src/Makefile.am, src/reflect.c: add reflect-text-view, for testing with
+       GtkTextView for sanity's sake.
+
+ ChangeLog       |    4 +
+ src/Makefile.am |    8 +-
+ src/reflect.c   |  279 ++++++++++++++++++++++++++++++++++++-------------------
+ 3 files changed, 193 insertions(+), 98 deletions(-)
+
+commit b21d6bae6bb46d27a3805d91b642b96435bd109c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 20 23:54:23 2003 +0000
+
+    account for get_text() including zero bytes
+
+ ChangeLog     |    3 +++
+ src/reflect.c |    8 ++++++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 8f80b565ffd0fe2f49126e8155137e48970b3ab5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 20 22:24:33 2003 +0000
+
+    try to build reflect with both vte and libzvt, building a useless binary
+    
+    * configure.in, src/Makefile.am, src/reflect.c: try to build reflect with both
+       vte and libzvt, building a useless binary if libzvt isn't available.
+
+ ChangeLog       |    5 ++
+ configure.in    |    9 ++++
+ src/Makefile.am |   17 ++++++--
+ src/reflect.c   |  117 ++++++++++++++++++++++++++++++++++++++++++++++++-------
+ 4 files changed, 129 insertions(+), 19 deletions(-)
+
+commit d6c649e3051395bdc7dbdd7b45d675168bd2a9a0
+Author: Christian Neumair <cneumair src gnome org>
+Date:   Mon Jan 20 21:45:47 2003 +0000
+
+    Updated German translation.
+
+ po/ChangeLog |    4 ++++
+ po/de.po     |   18 +++++++++---------
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+commit 555e25cbdf12f82599e3ea084dd4dd1f7f6d9744
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 20 19:32:31 2003 +0000
+
+    - 0.10.12
+
+ vte.spec |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 34a05c36e09189e5490165dd87098e2b1eacd05d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 20 18:00:57 2003 +0000
+
+    colors 90-97 and 100-107 are bold colors, noted and patched by Matthijs
+    
+    * src/vte.c: colors 90-97 and 100-107 are bold colors, noted and patched by
+       Matthijs Melchior (#103874).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit d41f9d2e300ba017568c8f4cb04178c7fe3a7318
+Author: Christian Neumair <cneumair src gnome org>
+Date:   Mon Jan 20 15:00:57 2003 +0000
+
+    Updated German translation.
+
+ po/ChangeLog |    4 +++
+ po/de.po     |   66 +++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 37 insertions(+), 33 deletions(-)
+
+commit ad595ccefeeb972235212bdb813c8c99dd4929e5
+Author: Andraz Tori <minmax src gnome org>
+Date:   Mon Jan 20 14:17:40 2003 +0000
+
+    Updated Slovenian translation
+
+ po/sl.po |  127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 127 insertions(+), 0 deletions(-)
+
+commit 8889fda6835ef47a40a7c1eb1e6423d91afe4084
+Author: Andraz Tori <minmax src gnome org>
+Date:   Mon Jan 20 14:17:14 2003 +0000
+
+    Added sl language
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit aa6b3ee0537d8689fe27e4335d7ca62c6377dcc8
+Author: He Qiangqiang <carton linux net cn>
+Date:   Sun Jan 19 10:14:52 2003 +0000
+
+    Added "zh_CN" (Simplified Chinese) to ALL_LINGUAS.
+    
+    2003-01-19  He Qiangqiang  <carton linux net cn>
+    
+       * configure.in: Added "zh_CN" (Simplified Chinese) to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 075a993ca1ac0275db4112d6bab62003dd7f2df7
+Author: He Qiangqiang <carton linux net cn>
+Date:   Sun Jan 19 10:13:31 2003 +0000
+
+    Added Simplified Chinese translation.
+    
+    2003-01-19  He Qiangqiang  <carton linux net cn>
+    
+            * zh_CN.po: Added Simplified Chinese translation.
+
+ po/ChangeLog |    4 ++
+ po/zh_CN.po  |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 122 insertions(+), 0 deletions(-)
+
+commit 5d63957b1ec97e8779f943db4aab4f77f959bd1a
+Author: Marius Andreiana <marius galuna.ro>
+Date:   Sun Jan 19 09:08:03 2003 +0000
+
+    added ( thanks to Mişu Moldovan )
+    
+    2003-01-19  Marius Andreiana <marius galuna.ro>
+    
+       * ro.po: added ( thanks to Mişu Moldovan )
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/ro.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 126 insertions(+), 1 deletions(-)
+
+commit e315ed3d477d04f026d3dbf84c777cf552c822af
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jan 18 18:17:25 2003 +0000
+
+    if the caret is past the end of the text, count unichars properly. Compute
+    
+    * src/vteaccess.c(update_private_data_if_needed): if the caret is past the end
+       of the text, count unichars properly.  Compute the caret location
+       correctly.
+    * src/reflect.c: handle text-caret-moved signals and display the caret.
+
+ ChangeLog       |    6 +++++
+ src/reflect.c   |   62 ++++++++++++++++++++++++++++++++++++++++++++----------
+ src/vteaccess.c |    6 ++--
+ 3 files changed, 59 insertions(+), 15 deletions(-)
+
+commit 7bffb2af8a9349e020926b8123cc49195600705e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jan 18 17:54:29 2003 +0000
+
+    update copyright dates. add. add reflect (noinst). always return a string,
+    
+    * src/iso2022.c: update copyright dates.
+    * src/reflect.c: add.
+    * src/Makefile.am: add reflect (noinst).
+    * src/vteaccess.c(vte_terminal_accessible_get_text): always return a string,
+       even if it's zero-length.  Properly detect and handle requests that go
+       right up to the last byte.
+
+ ChangeLog       |    8 +++
+ src/Makefile.am |    8 ++-
+ src/iso2022.c   |    2 +-
+ src/reflect.c   |  168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteaccess.c |   14 ++--
+ 5 files changed, 189 insertions(+), 11 deletions(-)
+
+commit bbd18ebc5ace0f8991d24ea86e3f285dc3c3e30c
+Author: Andras Timar <timar gnome hu>
+Date:   Sat Jan 18 13:57:21 2003 +0000
+
+    Added "hu" to ALL_LINGUAS.
+    
+    2003-01-18 Andras Timar  <timar gnome hu>
+    
+       * configure.in: Added "hu" to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit dee84bdbec6809a85c51cd5e10324cb2fa3770a4
+Author: Andras Timar <timar gnome hu>
+Date:   Sat Jan 18 13:56:10 2003 +0000
+
+    Added Hungarian translation.
+    
+    2003-01-18  Andras Timar  <timar gnome hu>
+    
+       * hu.po: Added Hungarian translation.
+
+ po/ChangeLog |    4 ++
+ po/hu.po     |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 122 insertions(+), 0 deletions(-)
+
+commit db227e0f456bc4fc6ade0a59b9da0d0b547f3db5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 17 23:46:42 2003 +0000
+
+    emit a "text-modified" signal, because what you see changes when you
+    
+    * src/vte.c(vte_terminal_set_size): emit a "text-modified" signal, because what
+       you see changes when you resize the terminal.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 ++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 3c35fddb8baaa2b45935fe9de31ef090bf62e9eb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 17 21:05:01 2003 +0000
+
+    don't draw cursors below or above the screen, correctly compute the clear
+    
+    * src/vte.c(vte_terminal_paint): don't draw cursors below or above the screen,
+       correctly compute the clear area when drawing the cursor, if we're
+       ignoring padding in general because we're monospaced, also ignore it
+       when drawing the character under the cursor.
+    * src/vte.c(vte_terminal_io_read): eliminate dead code.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   42 +++++++++++++++++++-----------------------
+ vte.spec  |    5 ++++-
+ 3 files changed, 30 insertions(+), 24 deletions(-)
+
+commit b63075c2f4a5adf2df94edf6bf698372112ee94e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 17 20:24:58 2003 +0000
+
+    if we don't find an entry for the requested key, and the terminal type is
+    
+    * src/keymap.c(_vte_keymap_map): if we don't find an entry for the requested
+       key, and the terminal type is "xterm", retry using "xterm-xfree86",
+       possible fix for #103713.
+    * src/vte.c(vte_terminal_draw_row): fix handling of items with width != 1 when
+       computing runs.
+
+ ChangeLog    |    7 +++++++
+ src/keymap.c |   52 +++++++++++++++++++++++++++++-----------------------
+ src/vte.c    |   18 +++++++++---------
+ 3 files changed, 45 insertions(+), 32 deletions(-)
+
+commit 379f1192131d2ec2d8a730270d8917c2776a1c0c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 17 17:17:56 2003 +0000
+
+    fix boneheaded "config.h" instead of "../config.h" include, pointed out by
+    
+    * src/iso2022.c: fix boneheaded "config.h" instead of "../config.h" include,
+       pointed out by Dan Mills and Brian Cameron.
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 6c8b4466a4e0f0da6df299912561ec44c6d753d2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 16 20:54:06 2003 +0000
+
+    fix test for whether or not we need to check for termcap override default
+    
+    * configure.in: fix test for whether or not we need to check for termcap
+    * src/Makefile.am: override default includes to not prepend "." to the include
+       path, so that we can include the system <termcap.h> properly
+    * src/keymap.c: define the ncurses scratch buffer for use when we're using
+       termcap
+
+ ChangeLog       |    7 +++++++
+ configure.in    |    2 +-
+ src/Makefile.am |    1 +
+ src/keymap.c    |    2 +-
+ 4 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 83bfe383d12564645a0fbfae7109547adf3e0c6b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 16 20:38:29 2003 +0000
+
+    actually disable attempts to build python bindings if pygtk-2.0 isn't
+    
+    * configure.in: actually disable attempts to build python bindings if pygtk-2.0
+       isn't found at configure-time (#103676)
+
+ ChangeLog    |    4 ++++
+ configure.in |    5 +++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 01b3cea2a01f9fb7545a125da4cbbd46f58ea143
+Author: Gustavo Noronha Silva <gns src gnome org>
+Date:   Wed Jan 15 21:50:27 2003 +0000
+
+    translation update
+
+ po/ChangeLog |    5 +++++
+ po/pt_BR.po  |   54 +++++++++++++++++++++++++++---------------------------
+ 2 files changed, 32 insertions(+), 27 deletions(-)
+
+commit 5fd4b4c42d9db88113c25f248cee8cf54cdf8916
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 14 20:39:11 2003 +0000
+
+    if a key sequence which needs modifiers doesn't have a numeric part, add
+    
+    * src/keymap.c(_vte_keymap_key_add_key_modifiers): if a key sequence which
+       needs modifiers doesn't have a numeric part, add "1" as the numeric
+       part before adding the modifiers.  Spotted by msw.
+
+ ChangeLog    |    5 +++++
+ src/keymap.c |   10 ++++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 9277fb39dcac5740dfce4b819989e661910917f7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 14 06:33:14 2003 +0000
+
+    add _vte_ring_insert_preserve(), which scrolls lost items off the top
+    
+    * src/ring.c, src/ring.h: add _vte_ring_insert_preserve(), which scrolls lost
+       items off the top instead of the bottom, as _vte_ring_insert() does.
+    * src/slowcat.c (catfile): check that we didn't read an EOF before attempting
+       to write it.  Skip the more complicated checks and just check that the
+       file pointer isn't stdin before closing it.
+    * src/ssfe.c: cleanups.
+    * src/vte.c(vte_sequence_handler_sf): add lines to the scrollback area when
+       scrolling is restricted but the top line of the area is the topmost
+       visible line (Red Hat #75900).
+
+ ChangeLog       |   12 ++
+ src/Makefile.am |    6 +-
+ src/ring.c      |   70 ++++++++-
+ src/ring.h      |    1 +
+ src/slowcat.c   |    7 +-
+ src/ssfe.c      |  440 +++++++++++++++++++++++-------------------------------
+ src/vte.c       |   41 ++++-
+ vte.spec        |    6 +-
+ 8 files changed, 313 insertions(+), 270 deletions(-)
+
+commit 2690bc906a221d3cc295a92405e25720cb5e5da9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 14 04:52:56 2003 +0000
+
+    initial checkin
+
+ src/ssfe.c | 1316 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 1316 insertions(+), 0 deletions(-)
+
+commit a75a825c95122f5617b1fd5f571be9c922af7130
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 14 03:04:30 2003 +0000
+
+    don't switch terminal modes before or after echoing bytes -- doing so
+    
+    * src/nativeecho.c, src/utf8echo.c: don't switch terminal modes before or after
+       echoing bytes -- doing so confuses me now.
+    * src/vte.c: make use of '?' to mark invalid data a compile-time define.
+    * src/vteaccess.c(vte_terminal_accessible_text_scrolled): properly handle
+       scrolling events with delta less than the window size (more of #95901).
+    * src/vteaccess.c(vte_terminal_accessible_finalize): disconnect from
+       text-inserted, text-deleted, text-modified, text-scrolled, cursor-moved,
+       window-title-changed on finalize.
+    * src/vte.c(vte_terminal_key_press,vte_terminal_key_release,
+       vte_terminal_button_press,vte_terminal_button_release,
+       vte_terminal_motion_notify,vte_terminal_focus_in,vte_terminal_focus_out,
+       vte_terminal_scroll): track event modifiers in an object-local modifier
+       variable.
+    * src/vte.c(vte_terminal_key_press): always steal key events from the input
+       method if the meta key is down (#96006).  Don't munge the cursor or
+       keypad modes before passing them to the keymapping routines.  Stop
+       overriding the cursor mode on NumLock (doesn't appear to work as
+       documented in other terminals, needed to modify the keymap mode anyway
+       (#96364)).
+    * configure.in: define HAVE_XFT whenever HAVE_XFT2 is defined -- they're more
+       or less compatible (#103130).
+
+ ChangeLog        |   24 +++++++
+ configure.in     |    7 ++-
+ src/keymap.c     |    8 +--
+ src/keymap.h     |    6 +-
+ src/nativeecho.c |    4 -
+ src/utf8echo.c   |   13 +----
+ src/vte.c        |  189 ++++++++++++++++++++++++++++-------------------------
+ src/vteaccess.c  |  193 ++++++++++++++++++++++++++++++++++++++----------------
+ vte.spec         |    7 ++-
+ 9 files changed, 280 insertions(+), 171 deletions(-)
+
+commit 7c28dd92e7d9568ba90f76d0112612c466b25335
+Author: Gil Osher <dolfin src gnome org>
+Date:   Sat Jan 11 16:27:45 2003 +0000
+
+    Updated Hebrew translation.
+    
+    
+    * he.po: Updated Hebrew translation.
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 7dba9a9754677636fd47dda2522b7e95f7650aa8
+Author: Gil Osher <dolfin src gnome org>
+Date:   Sat Jan 11 16:27:17 2003 +0000
+
+    *** empty log message ***
+
+ po/he.po |   67 ++++++++++++++++++++++++++++++++++---------------------------
+ 1 files changed, 37 insertions(+), 30 deletions(-)
+
+commit 05bed110e54213c094b7eb1ef4da09661bfaa232
+Author: Kwok-Koon Cheung <baddog src gnome org>
+Date:   Fri Jan 10 15:44:53 2003 +0000
+
+    new traditional Chinese translation
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/zh_TW.po  |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 126 insertions(+), 1 deletions(-)
+
+commit f1d99bd8d9239c49e18e78eeef9fca09f2b9137a
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Fri Jan 10 09:28:30 2003 +0000
+
+    ru.po: Updated Russian translation from Russian team <gnome-cyr gnome org>.
+
+ po/ChangeLog |    5 ++++
+ po/ru.po     |   62 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 38 insertions(+), 29 deletions(-)
+
+commit 0a5be0c584e80068b0869f2caa929f6c0861a4d8
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Fri Jan 10 06:02:39 2003 +0000
+
+    configure.in: Added Russian to ALL_LINGUAS
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 804faa007422c51ddf14f2315fc2e7b044b72f65
+Author: Dmitry Mastrukov <dmitrym src gnome org>
+Date:   Fri Jan 10 06:01:13 2003 +0000
+
+    ru.po: Added Russian translation from Russian team <gnome-cyr gnome org>
+
+ po/ChangeLog |    5 ++
+ po/ru.po     |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 124 insertions(+), 0 deletions(-)
+
+commit 479bed1e2c10cd89824648de3b5ed6a3843eede7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 9 20:31:26 2003 +0000
+
+    disable the python bindings if we can't find python, from Brian Cameron.
+    
+    * configure.in: disable the python bindings if we can't find python, from
+       Brian Cameron.
+
+ ChangeLog    |    4 ++++
+ configure.in |    5 ++++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit b7989a1e86f33119d62f10a2abc8b2ae74af5dbd
+Author: Vincent van Adrighem <V vanAdrighem dirck mine nu>
+Date:   Thu Jan 9 14:07:03 2003 +0000
+
+    Dutch translation updated by Kees van den Broek.
+    
+    2003-01-09 Vincent van Adrighem <V vanAdrighem dirck mine nu>
+       * nl.po: Dutch translation updated by Kees van den Broek.
+
+ po/nl.po |   58 ++++++++++++++++++++++++++++++----------------------------
+ 1 files changed, 30 insertions(+), 28 deletions(-)
+
+commit 98d26faf90b03fc378b1368f681258685ecc7122
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 9 06:57:30 2003 +0000
+
+    - add missing bug number
+
+ ChangeLog |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 9820448f044cce4cb85b877d250dc6181772c830
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jan 9 06:56:01 2003 +0000
+
+    Only suppress meta-sends-escape on Backspace if backspace is mapped to the
+    
+    * src/vte.c(vte_terminal_key_press): Only suppress meta-sends-escape on
+       Backspace if backspace is mapped to the delete sequence.
+    * src/vte.c: don't just skip reading data if selection is in progress -- we
+       wedge if we do that (#101739).  Instead, temporarily stop reading from
+       the child pty.
+    * src/vte.c(vte_terminal_open_font_xft): if we get NULL when matching fonts,
+       use the desired pattern's name when displaying an error, preventing a
+       NULL dereference (#96769).
+    * configure.in: make building of python modules depend on configure having been
+       run with --enable-python. make --enable-python the default.  Fix an
+       indentation error in the version check which chokes Python 2.2.2.
+    * src/vte.h, src/vte.c: add new signals to VteTerminalClass (NOTE: may break
+       ABI, so might as well add some padding)
+    * src/vteaccess.c: be more precise about locations in text_changed signals
+       (part of #95901)
+    * src/vte.c: get more selective about when we consider it necessary to emit
+       text-insert and text-delete events.
+
+ ChangeLog                   |   21 +++
+ configure.in                |   52 ++++--
+ doc/reference/tmpl/vte.sgml |   40 ++++-
+ src/marshal.list            |    1 +
+ src/vte.c                   |  406 +++++++++++++++++++++++++++++++++----------
+ src/vte.h                   |   20 ++-
+ src/vteaccess.c             |  277 ++++++++++++++++++++++++++---
+ 7 files changed, 671 insertions(+), 146 deletions(-)
+
+commit 41a9d6abe0b47ca8461e41afa1ad957e92368b3d
+Author: Daniel Yacob <yacob src gnome org>
+Date:   Tue Jan 7 16:16:27 2003 +0000
+
+    Updated Amharic translation.
+
+ po/ChangeLog |    4 ++
+ po/am.po     |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 123 insertions(+), 0 deletions(-)
+
+commit a1385fbda90ec79fb9281e3575124fc3c742b124
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jan 7 06:34:27 2003 +0000
+
+    Use a lookup table instead of a mess of floating point math when
+    
+    * src/vte.c(vte_terminal_setup_background): Use a lookup table instead of a
+       mess of floating point math when desaturating images.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   13 ++++++++-----
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 58834f228eeed3159eb32fb783a5f0df2064e6d5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 6 22:22:20 2003 +0000
+
+    Add the periodic blinking refresh with the normal timeout instead of 0 to
+    
+    * src/vte.c(vte_terminal_init): Add the periodic blinking refresh with the
+       normal timeout instead of 0 to avoid wedging when we get created
+       without focus.  Fix suggested by Dennis Haney (#102701).
+
+ ChangeLog |    5 +++++
+ src/vte.c |   14 +++++++++++---
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+commit 708387339d57555c2bcba4815d5463d009a82ea4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jan 6 18:03:27 2003 +0000
+
+    Use a simple XftPatternGetString/GetDouble pair instead of XftNameUnparse,
+    
+    * src/vte.c: Use a simple XftPatternGetString/GetDouble pair instead of
+       XftNameUnparse, which isn't in older versions of Xft (#101142).
+    * src/vte.c: Add a flag to VteTerminalPrivate which we can use to keep track
+       of modifications, particularly if they remove text, and toggle it in
+       several sequence handlers.
+    * src/vte.c(vte_terminal_process_incoming): Also emit the "contents changed"
+       signal when the modified flag is TRUE, not enough to fix #95901, but
+       at least making some forward progress.
+
+ ChangeLog    |   10 +++++
+ configure.in |    9 +++--
+ src/vte.c    |  105 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ vte.spec     |    9 ++++-
+ 4 files changed, 104 insertions(+), 29 deletions(-)
+
+commit a34f417e92a025a3f2837a386f1ad04baa31e878
+Author: Pauli Virtanen <pauli virtanen hut fi>
+Date:   Sun Jan 5 16:13:05 2003 +0000
+
+    Added "fi" (Finnish).
+    
+    2003-01-05  Pauli Virtanen <pauli virtanen hut fi>
+    
+       * configure.in (ALL_LINGUAS): Added "fi" (Finnish).
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 154e9f234a3494ff37c67dffcaa888a99bfa54c4
+Author: Pauli Virtanen <pauli virtanen hut fi>
+Date:   Sun Jan 5 16:11:01 2003 +0000
+
+    Added Finnish translation.
+    
+    2003-01-05  Pauli Virtanen <pauli virtanen hut fi>
+    
+       * fi.po: Added Finnish translation.
+
+ po/ChangeLog |    4 ++
+ po/fi.po     |  127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 131 insertions(+), 0 deletions(-)
+
+commit 3de85ba7e7948f7ece876608c5f5e804c5430f58
+Author: Stanislav Visnovsky <visnovsky nenya ms mff cuni cz>
+Date:   Sat Jan 4 14:47:42 2003 +0000
+
+    Added sk (Slovak). Added Slovak translation.
+    
+    2003-01-04  Stanislav Visnovsky  <visnovsky nenya ms mff cuni cz>
+    
+            * configure.in: (ALL_LINGUAS) Added sk (Slovak).
+            * po/sk.po: Added Slovak translation.
+
+ ChangeLog    |    5 ++
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/sk.po     |  126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 136 insertions(+), 1 deletions(-)
+
+commit 06000507e286d2ee446807bb9000513459107dff
+Author: Benjamin Greiner <bgreiner src gnome org>
+Date:   Sat Jan 4 14:23:36 2003 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    4 ++++
+ po/de.po     |   49 ++++++++++++++++++++++++++-----------------------
+ 2 files changed, 30 insertions(+), 23 deletions(-)
+
+commit 6bf1e20d62c5a71f83a79859cd11f56739d7602f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 3 01:05:05 2003 +0000
+
+    - fix compile failure on systems where ncurses isn't detected
+
+ src/keymap.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d7a0c47ad37ee451625c94250528e6aca82f8522
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jan 3 00:55:53 2003 +0000
+
+    look for libncurses or libtermcap include other libraries (ncurses,
+    
+    * configure.in: look for libncurses or libtermcap
+    * vte.pc.in: include other libraries (ncurses, termcap, socket, whatever) in
+       the list of libraries.
+    * src/keymap.c(_vte_keymap_map): for Home and End, consult libncurses or
+       libtermcap if we have no hard-wired mapping and there's none in the
+       termcap file.  Should fix #100472, even in cases where Home and End
+       vary wildly from what I've got on my box.
+    * src/keymap.c: rename cursor/fkey_normal to cursor/fkey_default, which makes a
+       little more sense.
+
+ ChangeLog    |   11 +++
+ configure.in |    8 ++
+ src/keymap.c |  239 ++++++++++++++++++++++++++++++++++++---------------------
+ vte.pc.in    |    2 +-
+ 4 files changed, 171 insertions(+), 89 deletions(-)
+
+commit 3b4a3853390a7a511640c969fde72e072a72a808
+Author: Chyla Zbigniew <chyla src gnome org>
+Date:   Thu Jan 2 12:52:02 2003 +0000
+
+    Updated Polish translation by GNOME PL Team <translators gnome pl>
+
+ po/pl.po |   36 ++++++++++++++++++++++--------------
+ 1 files changed, 22 insertions(+), 14 deletions(-)
+
+commit 6d59ba9114dfd6bf955e8759e9af5b99017114e3
+Author: Chyla Zbigniew <chyla src gnome org>
+Date:   Thu Jan 2 01:18:51 2003 +0000
+
+    Added Polish translation by GNOME PL Team <translators gnome pl>
+
+ po/ChangeLog |    5 ++
+ po/pl.po     |  124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 129 insertions(+), 0 deletions(-)
+
+commit 517047a162133a750153cff0ab6ee08cb3efc22a
+Author: Zbigniew Chyla <cyba gnome pl>
+Date:   Thu Jan 2 01:17:53 2003 +0000
+
+    Added pl (Polish).
+    
+    
+    2003-01-02  Zbigniew Chyla  <cyba gnome pl>
+    
+       * configure.in: (ALL_LINGUAS) Added pl (Polish).
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 72dbc564def2a70760f89ff559a3dad0106951e0
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Fri Dec 27 15:29:40 2002 +0000
+
+    updated Vietnamese file
+
+ po/ChangeLog |    4 ++++
+ po/vi.po     |   54 +++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 33 insertions(+), 25 deletions(-)
+
+commit dc65d7207e3b38d457ff8ca1e7d26ee4a442c99b
+Author: Peteris Krisjanis <peterisk src gnome org>
+Date:   Wed Dec 25 13:52:10 2002 +0000
+
+    Artis Trops  <hornet navigator lv> * lv.po: Updated Latvian translation.
+
+ po/ChangeLog |    4 +++
+ po/lv.po     |   65 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 38 insertions(+), 31 deletions(-)
+
+commit 50e4222072ab5123d7f642889a814da9a647790e
+Author: Peteris Krisjanis <peterisk src gnome org>
+Date:   Sun Dec 22 18:59:49 2002 +0000
+
+    2002-12-22  Artis Trops <hornet navigator lv> * lv.po: Added Latvian translation.
+
+ po/ChangeLog |    4 ++
+ po/lv.po     |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 124 insertions(+), 0 deletions(-)
+
+commit df42d07d7e6d7274bb54dbd270033e6b8fdcad15
+Author: Peteris Krisjanis <peterisk src gnome org>
+Date:   Sun Dec 22 18:58:34 2002 +0000
+
+    2002-12-22  Artis Trops <hornet navigator lv> * configure.in: Added Latvian (lv) to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 27eccc58d997fbc070d2b2784a7d40eae301d509
+Author: Jordi Mallach <jordim src gnome org>
+Date:   Sat Dec 21 15:27:24 2002 +0000
+
+    Updated Catalan translation.
+
+ po/ChangeLog |    4 ++
+ po/ca.po     |  120 ++++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 74 insertions(+), 50 deletions(-)
+
+commit 78c22fb051aca21f168f95a3827df6e23b8dad71
+Author: Yanko Kaneti <yaneti declera com>
+Date:   Thu Dec 19 12:37:14 2002 +0000
+
+    Added Bulgarian (bg).
+    
+    2002-12-19  Yanko Kaneti <yaneti declera com>
+    
+       * configure.in: (ALL_LINGUAS) Added Bulgarian (bg).
+    
+    po/
+    
+       * bg.po (added): Added Bulgarian translation by
+       Alexander Shopov <al_shopov yahoo com>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/bg.po     |  127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 137 insertions(+), 1 deletions(-)
+
+commit 142ffbccd627993cb5c4a607db7c092d84179c59
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Dec 18 20:02:42 2002 +0000
+
+    issue a warning if Xft2 and Xft aren't found. if we're not
+    
+    * configure.in: issue a warning if Xft2 and Xft aren't found.
+    * src/vte.c (vte_terminal_paint): if we're not double-buffered, clear the
+       drawing area before we draw text.
+    * src/vteapp.c: add -2 to toggle double-buffering for testing.
+
+ ChangeLog       |    6 ++++++
+ configure.in    |    4 +++-
+ src/table.c     |    7 -------
+ src/vte.c       |    6 ++++++
+ src/vteaccess.c |    2 --
+ src/vteapp.c    |    9 +++++++--
+ 6 files changed, 22 insertions(+), 12 deletions(-)
+
+commit 1fed413308e2a349f6d30c7862c61be527f5f63d
+Author: German Poo Caaman~o <gpoo ubiobio cl>
+Date:   Wed Dec 18 00:33:14 2002 +0000
+
+    Updated Spanish translation
+    
+    2002-12-17  German Poo Caaman~o <gpoo ubiobio cl>
+    
+       * es.po: Updated Spanish translation
+
+ po/ChangeLog |    4 ++
+ po/es.po     |  100 ++++++++++++++++++++++++++++++++-------------------------
+ 2 files changed, 60 insertions(+), 44 deletions(-)
+
+commit 77fbea95fe7cb71ef2c3d243a83f3a6a50785d25
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Dec 16 19:51:20 2002 +0000
+
+    wire Shift+Home/Shift+End to scroll-to-top and scroll-to-bottom.
+    
+    * src/vte.c (vte_terminal_key_press): wire Shift+Home/Shift+End to
+       scroll-to-top and scroll-to-bottom.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   29 +++++++++++++++++++++++++++++
+ 2 files changed, 33 insertions(+), 0 deletions(-)
+
+commit 2df06c897e3e395ddfff915aba1fd758377a2362
+Author: Miloslav Trmac <mitr src gnome org>
+Date:   Mon Dec 16 19:37:03 2002 +0000
+
+    Update Czech translation
+
+ po/ChangeLog |    4 ++++
+ po/cs.po     |   44 ++++++++++++++++++++++----------------------
+ 2 files changed, 26 insertions(+), 22 deletions(-)
+
+commit e2f100b4474f7209a48821ce49da55dde33e3fa0
+Author: Hasbullah Bin Pit <sebol ikhlas com>
+Date:   Mon Dec 16 08:20:37 2002 +0000
+
+    Updated Malay Translation.
+    
+    2002-12-16  Hasbullah Bin Pit <sebol ikhlas com>
+    
+            * ms.po: Updated Malay Translation.
+
+ po/ChangeLog |    4 ++++
+ po/ms.po     |   39 +++++++++++++++++++++------------------
+ 2 files changed, 25 insertions(+), 18 deletions(-)
+
+commit 5336ad683728d60a65536993420ec1af605102bc
+Author: Christophe Merlet <redfox src gnome org>
+Date:   Sun Dec 15 16:18:02 2002 +0000
+
+    Updated French translation.
+
+ po/ChangeLog |    4 ++++
+ po/fr.po     |   52 ++++++++++++++++++++++++++++------------------------
+ 2 files changed, 32 insertions(+), 24 deletions(-)
+
+commit 72709ee7c4076339ecbe5cd27827060d303a3589
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Dec 14 00:40:53 2002 +0000
+
+    add a short test program. use hard values instead of GDK defines in the 0
+    
+    * src/buffer.c: add a short test program.
+    * src/iso2022.c: use hard values instead of GDK defines in the 0 map.  Add
+       _vte_iso2022_substitute_single() for performing a single mapping
+       operation.
+    * src/vte.c: use _vte_iso2022_substitute_single() instead of a local mapping
+       table when mapping line-drawing charset data, simplifies maintenance
+       of the mapping.
+
+ ChangeLog       |   11 ++++-
+ README          |    4 ++
+ src/Makefile.am |    6 ++-
+ src/buffer.c    |  103 ++++++++++++++++++++++++++++++++++++++++
+ src/buffer.h    |    2 +
+ src/iso2022.c   |   43 +++++++++++++++--
+ src/iso2022.h   |    1 +
+ src/vte.c       |  139 ++-----------------------------------------------------
+ vte.spec        |    5 ++-
+ 9 files changed, 173 insertions(+), 141 deletions(-)
+
+commit ac59012c87307e7f0d51e4d89a14619fde47bfc2
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Fri Dec 13 10:37:33 2002 +0000
+
+    Added Catalan file
+
+ ChangeLog    |    4 ++
+ configure.in |    3 +-
+ po/ChangeLog |    4 ++
+ po/ca.po     |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 1 deletions(-)
+
+commit 28fe2ba6946deb75828ccab219ea4f671ae86385
+Author: Christian Rose <menthos menthos com>
+Date:   Fri Dec 13 03:22:16 2002 +0000
+
+    Updated Swedish translation.
+    
+    2002-12-13  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   16 +++++++++++-----
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+commit b7773ffb08ae7a40aacc7bc8d53a0405558fbe60
+Author: Ole Laursen <olau hardworking dk>
+Date:   Thu Dec 12 20:19:01 2002 +0000
+
+    Updated Danish translation.
+    
+    2002-12-12  Ole Laursen  <olau hardworking dk>
+    
+       * da.po: Updated Danish translation.
+
+ po/ChangeLog |    4 ++++
+ po/da.po     |   13 ++++++++-----
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 926bbe1d96a595fb90264123aa79cfed1e7011eb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Dec 11 20:13:25 2002 +0000
+
+    define VTE_USE_GNOME_PTY_HELPER if use of the helper is enabled at
+    
+    * configure.in: define VTE_USE_GNOME_PTY_HELPER if use of the helper is enabled
+       at compile-time (enabled by default).
+    * src/iso2022.c(_vte_iso2022_substitute): force characters received in the
+       line-drawing map to have width = 1 (more #99603), so that we can
+       distinguish them from line-drawing characters received in eucXX, which
+       have width = 2.
+    * src/vte.c(vte_terminal_insert_char): when mapping from line-drawing to
+       gunichars, force a width of 1.
+    * src/vte.c(vte_terminal_process_incoming): extend the bounding box for updates
+       one cell further to the right, in case the cursor is in a cell which
+       contains a wide character.
+    * src/pty.c(_vte_pty_start_helper): spit out a warning if the helper isn't
+       installed.
+    * src/pty.c: don't compile in any gnome-pty-helper-specific code if
+       VTE_USE_GNOME_PTY_HELPER isn't defined.
+
+ ChangeLog     |   17 +++++++++++++++
+ configure.in  |    1 +
+ po/cs.po      |   45 ++++++++++++++++++++++-----------------
+ po/da.po      |   45 ++++++++++++++++++++++-----------------
+ po/de.po      |   45 ++++++++++++++++++++++-----------------
+ po/fr.po      |   45 ++++++++++++++++++++++-----------------
+ po/ms.po      |   45 ++++++++++++++++++++++-----------------
+ po/nl.po      |   45 ++++++++++++++++++++++-----------------
+ po/no.po      |   45 ++++++++++++++++++++++-----------------
+ po/pt_BR.po   |   45 ++++++++++++++++++++++-----------------
+ po/sv.po      |   45 ++++++++++++++++++++++-----------------
+ po/uk.po      |   65 +++++++++++++++++++++++++++++++-------------------------
+ po/vi.po      |   45 ++++++++++++++++++++++-----------------
+ src/iso2022.c |    7 ++++++
+ src/pty.c     |   14 ++++++++++++
+ src/vte.c     |   51 +++++++++++++++++++++++++++++++++++++++-----
+ vte.spec      |   11 ++++++++-
+ 17 files changed, 379 insertions(+), 237 deletions(-)
+
+commit 18d3d0fbdb83a33107b92d77963a9e99e652e9df
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 10 22:36:29 2002 +0000
+
+    centralize buffer length sanity checks, add some utility functions for
+    
+    * src/buffer.c, src/buffer.h: centralize buffer length sanity checks, add some
+       utility functions for stuffing things into buffers and pulling them
+       back out.
+    * src/debug.c, src/debug.h: add a lifecycle debug class, for tracking
+       down initialization order weirdness.
+    * src/pty.c: try to check that we can run the pty helper before trying to run
+       it, to avoid SIGPIPE failures when it's not installed.
+    * src/vte.c: never grab focus -- let the shell app deal with it.  Return TRUE
+       from mouse motion and press/release events to keep them from being
+       passed up.
+
+ ChangeLog     |   12 +++++
+ src/buffer.c  |  146 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ src/buffer.h  |   25 +++++++++-
+ src/debug.c   |    3 +
+ src/debug.h   |    7 ++-
+ src/iso2022.h |    2 +-
+ src/pty.c     |    4 ++
+ src/reaper.h  |    1 +
+ src/vte.c     |  109 +++++++++++++++++++++++++++++++++---------
+ 9 files changed, 270 insertions(+), 39 deletions(-)
+
+commit dd56e470ff18ce4e5c1d924c13b334a147465304
+Author: Vincent van Adrighem <V vanAdrighem dirck mine nu>
+Date:   Tue Dec 10 12:28:45 2002 +0000
+
+    Dutch translation updated by Reinout van Schouwen.
+    
+    2002-12-10  Vincent van Adrighem  <V vanAdrighem dirck mine nu>
+    
+       * nl.po: Dutch translation updated by Reinout van Schouwen.
+
+ po/ChangeLog |    4 ++
+ po/nl.po     |   87 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 50 insertions(+), 41 deletions(-)
+
+commit 7827e792f2b52ebb1412fd28c345c50649bbe513
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 10 00:08:54 2002 +0000
+
+    - add
+
+ src/matcher.c |  246 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/matcher.h |   56 +++++++++++++
+ 2 files changed, 302 insertions(+), 0 deletions(-)
+
+commit 8145dde6caaef633abc8478fc0b519d2fab14304
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 10 00:08:32 2002 +0000
+
+    add "uk" to the list of languages. remove the alternate attribute bit --
+    
+    * configure.in: add "uk" to the list of languages.
+    * src/vte.h: remove the alternate attribute bit -- it's no longer meaningful.
+    * python/vte.override: remove the alternate attribute, add the strikethrough
+       attribute.
+    * src/vte.c (vte_terminal_insert_char): perform drawing character set to
+       Unicode mapping at insertion time if the alternate attribute is set,
+       otherwise discarding the attribute.  If the character being inserted is
+       a graphic character, force its width to 1 or 2 depending on the current
+       codeset (#99603).
+    * src/vte.c (xlfd_from_pango_font_description): take advantage of XftXlfdParse
+       if we were built with Xft, as it appears to handle family aliases.
+    * src/vte.c (vte_terminal_draw_graphic): decide what to draw using Unicode code
+       points (instead of reverse mappings to drawing set), and implement the
+       double-thick versions of many of the existing glyphs.  Return a boolean
+       indicating whether or not we drew something.
+    * src/vte.c (vte_terminal_draw_row): if vte_terminal_draw_graphic() returns
+       FALSE, try to draw the graphic character using the current font.
+    * src/vte.c (vte_terminal_paint): if vte_terminal_draw_graphic() returns FALSE,
+       try to draw the graphic character using the current font.
+    * src/caps.c: add the undocumented default 0 to the OSC set text parameters
+       sequence (#100468).
+    * README: updates.
+    * src/iso2022.c, src/iso2022.h: add a width mask for overriding widths for
+       ambiguous Unicode characters, and _vte_iso2022_get_width() for reading
+       the width, using unused bits in Unicode in a manner similar to
+       http://www.cl.cam.ac.uk/~mgk25/ucs/iso2022-wc.html
+    * src/table.c,src/trie.c: strip out iso2022 widths when extracting parameters
+       of control sequences.
+    * src/vte.c: heed iso2022 widths when inserting characters into the screen
+       buffer, but clear then before storing them so that copy and paste will
+       continue to work.
+    * src/matcher.c, src/matcher.h: add matcher, a wrapper for table and trie, and
+       move _vte_table_narrow_encoding and _vte_table_wide_encoding to this
+       module.
+
+ ChangeLog           |   40 ++
+ README              |    3 +-
+ configure.in        |    2 +-
+ python/vte.override |    8 +-
+ src/Makefile.am     |   24 +-
+ src/caps.c          |    1 +
+ src/interpret.c     |   22 +-
+ src/iso2022.c       |   48 ++-
+ src/iso2022.h       |    9 +-
+ src/table.c         |  123 +-----
+ src/table.h         |    8 +-
+ src/trie.c          |   37 +-
+ src/trie.h          |    6 -
+ src/utf8echo.c      |    4 +-
+ src/vte.c           | 1363 ++++++++++++++++++++++++++++++++-------------------
+ src/vte.h           |    2 +-
+ vte.spec            |   30 +-
+ 17 files changed, 1051 insertions(+), 679 deletions(-)
+
+commit eed823a3a052c0479ef13b3dc234c9a1854aeed6
+Author: Yuri Syrota <rasta src gnome org>
+Date:   Mon Dec 9 10:18:55 2002 +0000
+
+    Added Ukrainian translations
+
+ po/ChangeLog |    4 ++
+ po/uk.po     |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 119 insertions(+), 0 deletions(-)
+
+commit db15594168bcffb4376d478aaf108afae46de4c5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 07:14:10 2002 +0000
+
+    - don't include the same file twice
+
+ vte.spec |   11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 9ba3fc164764cfa0b8e0601dddc1cbd0ddd913d3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 07:04:29 2002 +0000
+
+    - 0.10.5
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit e039ff2e0cc66c5ba48775a854ed94bad13c9e18
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 06:50:09 2002 +0000
+
+    if TIOCSCTTY is defined, use it, even if it's redundant.
+    
+    * src/pty.c: if TIOCSCTTY is defined, use it, even if it's redundant.
+
+ ChangeLog  |    3 +++
+ src/caps.c |    3 +++
+ src/pty.c  |   10 +++++++++-
+ src/vte.c  |    2 ++
+ 4 files changed, 17 insertions(+), 1 deletions(-)
+
+commit ff4b08b7875103dd976da00f2fba6fcf1addf7de
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 03:49:59 2002 +0000
+
+    update-po change the default from resetting to the terminal's default
+    
+    * po: update-po
+    * src/utf8echo.c: change the default from resetting to the terminal's default
+       encoding before exiting to leaving it alone.  Don't mess with the
+       terminal's encoding if stdout isn't connected to a terminal.
+    * src/nativeecho.c: add, for printing random bytes.
+
+ ChangeLog                        |    7 +++++
+ configure.in                     |    2 +-
+ po/cs.po                         |   48 ++++++++++++++++++-------------------
+ po/da.po                         |   48 ++++++++++++++++++-------------------
+ po/de.po                         |   48 ++++++++++++++++++-------------------
+ po/fr.po                         |   48 ++++++++++++++++++-------------------
+ po/ms.po                         |   48 ++++++++++++++++++-------------------
+ po/nl.po                         |   48 ++++++++++++++++++-------------------
+ po/no.po                         |   48 ++++++++++++++++++-------------------
+ po/pt_BR.po                      |   48 ++++++++++++++++++-------------------
+ po/sv.po                         |   48 ++++++++++++++++++-------------------
+ po/vi.po                         |   48 ++++++++++++++++++-------------------
+ src/Makefile.am                  |    7 ++++-
+ src/{utf8echo.c => nativeecho.c} |   39 ++++++++-----------------------
+ src/utf8echo.c                   |   13 +++++++---
+ src/vte.c                        |    2 +-
+ 16 files changed, 264 insertions(+), 286 deletions(-)
+
+commit 672bca9bfb1cf9aee9a077a93711022a3a8bfe9c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 02:31:11 2002 +0000
+
+    don't zero-fill rows, space-fill them. Don't just fail if the word_chars
+    
+    * src/vte.c: don't zero-fill rows, space-fill them.
+    * src/vte.c(vte_terminal_is_word_char): Don't just fail if the word_chars array
+       doesn't exist.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   32 +++++++++++++++++---------------
+ 2 files changed, 22 insertions(+), 15 deletions(-)
+
+commit 7bf2aecf9a8f3388a7b61f310fb361ccff4bb7d4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Dec 3 02:00:45 2002 +0000
+
+    add AC_CHECK_CC_OPT from ac-archive. check for cfmakeraw, sys/select.h,
+    
+    * acinclude.m4: add AC_CHECK_CC_OPT from ac-archive.
+    * configure.in: check for cfmakeraw, sys/select.h, compiler support for -std=
+       (#99698)
+    * doc/boxes.txt: change reference to online Docbook reference to the charts at
+       the Unicode web site.
+    * src/dumpkeys.c: make a best-effort at making a terminal raw on systems where
+       cfmakeraw() isn't available, from patch by Brian Cameron.  Wait for up
+       to 1/50 of a second for more bytes we'll consider to be part of a
+       sequence.
+    * src/pty.c(getpt): ensure that the new terminal is opened in non-blocking mode.
+    * src/trie.c: use g_unichar_digit_value() instead of subtracting '0'.
+    * src/vte.c: don't declare the xft_textitem member on non-Xft2 systems, because
+       it uses an Xft2-specific type (#99685).
+    * src/vteapp.c: add $pkgdatadir/fonts to the font path for use when testing.
+
+ ChangeLog      |   17 ++++++++
+ acinclude.m4   |   36 +++++++++++++++++-
+ configure.in   |   11 +++--
+ doc/boxes.txt  |    2 +-
+ src/dumpkeys.c |  114 ++++++++++++++++++++++++++++++++-----------------------
+ src/pty.c      |   47 +++++++++++++++--------
+ src/trie.c     |    3 +-
+ src/vte.c      |   60 +++++++++++++++++++-----------
+ src/vteapp.c   |   17 ++++++++
+ 9 files changed, 212 insertions(+), 95 deletions(-)
+
+commit 1b675f52db6d4595ee8f8faef718994896823106
+Author: Gil Osher <dolfin src gnome org>
+Date:   Wed Nov 27 21:20:52 2002 +0000
+
+    *** empty log message ***
+
+ po/ChangeLog |    4 ++
+ po/he.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 121 insertions(+), 0 deletions(-)
+
+commit 11f812ab830734e54ed9cfc33d957b1002189ce1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 26 03:57:10 2002 +0000
+
+    2002-11-25 nalin fix mapping of Unicode code chars 0x252c and 0x2534 which
+    
+    2002-11-25  nalin
+       * src/vte.c: fix mapping of Unicode code chars 0x252c and 0x2534 which
+       incorrectly mixed them up (#99474).
+       * src/iso2022.c: fix mapping of 'v' and 'w' from special graphics to
+       Unicode, which masked the above bug.
+
+ ChangeLog       |    6 ++++
+ doc/Makefile.am |    2 +
+ doc/boxes.txt   |   74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ po/cs.po        |   40 +++++++++++++++---------------
+ po/da.po        |   40 +++++++++++++++---------------
+ po/de.po        |   40 +++++++++++++++---------------
+ po/fr.po        |   40 +++++++++++++++---------------
+ po/ms.po        |   40 +++++++++++++++---------------
+ po/nl.po        |   40 +++++++++++++++---------------
+ po/no.po        |   40 +++++++++++++++---------------
+ po/pt_BR.po     |   40 +++++++++++++++---------------
+ po/sv.po        |   40 +++++++++++++++---------------
+ po/vi.po        |   40 +++++++++++++++---------------
+ src/iso2022.c   |    4 +-
+ src/vte.c       |   39 ++++++++++++++++++----------
+ vte.spec        |    2 +-
+ 16 files changed, 310 insertions(+), 217 deletions(-)
+
+commit d3d658f80cc52bb9855e94e506c6028b87261c46
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 26 00:52:58 2002 +0000
+
+    fix cd() to clear using the current colors.
+    
+    * src/vte.c: fix cd() to clear using the current colors.
+
+ ChangeLog |    3 +++
+ src/vte.c |   16 ++++++++++++++++
+ 2 files changed, 19 insertions(+), 0 deletions(-)
+
+commit 34833fb1b8cf7a7b74421f15e102d5ef4f1f3fe4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 26 00:40:04 2002 +0000
+
+    add ta back in -- it's not a key sequence.
+    
+    * termcaps/xterm: add ta back in -- it's not a key sequence.
+
+ ChangeLog      |    3 +++
+ termcaps/xterm |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 8ef12bdb39802275588bad413570175111ef6ef2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 26 00:21:05 2002 +0000
+
+    fix cd() to clear to the right of the cursor on the current line instead
+    
+    * src/vte.c: fix cd() to clear to the right of the cursor on the current line
+       instead of the entire line (#98844).
+
+ ChangeLog |    6 +++++-
+ src/vte.c |   20 ++++++++++++++++----
+ 2 files changed, 21 insertions(+), 5 deletions(-)
+
+commit 06b94cbffdefcf91020a10ae0d625cf37f908c71
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 21:54:15 2002 +0000
+
+    need this, too, for future use
+
+ src/genkeysyms.py |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit 8980298986ca91ea60ba2b7fb4f97c4853e10fb4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 21:53:46 2002 +0000
+
+    add new file, thanks thunder
+
+ src/keysyms.c | 1254 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 1254 insertions(+), 0 deletions(-)
+
+commit 0607f02e4fd9489d926cb0390f06376b89904779
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 21:44:10 2002 +0000
+
+    add keyboard debug messages when we change keyboard modes. remove kh
+    
+    * src/vte.c: add keyboard debug messages when we change keyboard modes.
+    * termcaps/xterm: remove kh definition.
+
+ ChangeLog      |    4 +++
+ src/vte.c      |   68 ++++++++++++++++++++++++++++++++++++++++++-------------
+ termcaps/xterm |    2 +-
+ 3 files changed, 57 insertions(+), 17 deletions(-)
+
+commit 969bdcbc7bac0493199ae8266120e8dd3bafef6d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 21:24:23 2002 +0000
+
+    make keypad arrow keys follow cursor mode (#98604).
+    
+    * src/keymap.c: make keypad arrow keys follow cursor mode (#98604).
+
+ ChangeLog    |    6 +++++-
+ src/keymap.c |   41 ++++++++++++++++++++---------------------
+ src/vte.c    |    4 ++--
+ 3 files changed, 27 insertions(+), 24 deletions(-)
+
+commit 9d1f4447aa9cc6a6ce087765b6c52a331092d93d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 21:08:28 2002 +0000
+
+    sort out when we add modifiers to keys. Fix Alt+Tab. remove ta definition.
+    
+    * src/keymap.c: sort out when we add modifiers to keys.  Fix Alt+Tab.
+    * termcaps/xterm: remove ta definition.
+
+ ChangeLog      |    4 ++
+ src/keymap.c   |  103 ++++++++++++++++++++++++++++++++------------------------
+ src/keymap.h   |   16 ++++----
+ src/vte.c      |   24 ++++---------
+ termcaps/xterm |    2 +-
+ 5 files changed, 80 insertions(+), 69 deletions(-)
+
+commit a3aa3d3e6535d49e82af372f6db1b4aee1d1c4d1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 25 20:39:20 2002 +0000
+
+    add keyboard debugging class. refresh on Ctrl-L, reset on 'r'. add more
+    
+    * src/debug.c, src/debug.h: add keyboard debugging class.
+    * src/dumpkeys.c: refresh on Ctrl-L, reset on 'r'.
+    * src/keymap.c, src/keymap.h: add more setting combinations, and a simplistic
+       check for more complete coverage.
+    * src/vte.c: add debug messages for keyboard handling.  Improve detection of
+       invalid coordinates as a signal that no text is selected or hilited.
+    * termcaps/xterm.baseline: add a baseline copy of xterm from my termcap, so
+       that I can diff it more easily.
+    * termcaps/xterm: remove key definitions -- xterm's way more complicated than
+       the capability strings suggest.
+
+ ChangeLog                          |   13 +
+ configure.in                       |    6 +-
+ src/Makefile.am                    |    3 +
+ src/debug.c                        |    3 +
+ src/debug.h                        |    3 +-
+ src/dumpkeys.c                     |   46 +++--
+ src/keymap.c                       |  453 +++++++++++++++++++++++++++++-------
+ src/keymap.h                       |   19 +-
+ src/vte.c                          |  166 ++++++++++----
+ termcaps/Makefile.am               |    2 +-
+ termcaps/xterm                     |   22 +-
+ termcaps/{xterm => xterm.baseline} |   20 +-
+ 12 files changed, 580 insertions(+), 176 deletions(-)
+
+commit 91a1515e9c6de2e767aa39f8f5e868e9af623fb8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Nov 23 00:20:57 2002 +0000
+
+    incorporate more correct check for the right version of gtk-doc (#99314).
+    
+    * configure.in: incorporate more correct check for the right version of
+       gtk-doc (#99314).
+
+ ChangeLog    |    4 ++++
+ configure.in |   22 +++++++++++++++-------
+ 2 files changed, 19 insertions(+), 7 deletions(-)
+
+commit b07db8367684af8339e1d19f4a4a4588ee146158
+Author: Hasbullah BIn Pit <sebol ikhlas com>
+Date:   Sun Nov 17 05:14:31 2002 +0000
+
+    Added "ms" to ALL_LINGUAS. wawa... kumerinduiMu...
+    
+    2002-11-15  Hasbullah BIn Pit <sebol ikhlas com>
+    
+            * configure.in: Added "ms" to ALL_LINGUAS.
+    wawa... kumerinduiMu...
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 2529c7639c6d96678ac0f9588c280e4bb7a21ed1
+Author: Hasbullah Bin Pit <sebol ikhlas com>
+Date:   Sun Nov 17 05:12:58 2002 +0000
+
+    Added Malay Translation. wawa....
+    
+    2002-11-16  Hasbullah Bin Pit <sebol ikhlas com>
+    
+            * ms.po: Added Malay Translation.
+    wawa....
+
+ po/ChangeLog |    4 ++
+ po/ms.po     |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 122 insertions(+), 0 deletions(-)
+
+commit f232c362aa287a14103b251011690dfcf9caeb3a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 11 21:52:08 2002 +0000
+
+    0.10.4
+
+ src/vte.c |    4 ++--
+ vte.spec  |    5 ++++-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 7d9fdb7edf0c77af95342f0b1796c05f62e529a9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 11 21:34:22 2002 +0000
+
+    ensure that when we select by line, we include all of the last line, even
+    
+    * src/vte.c: ensure that when we select by line, we include all of the last
+       line, even if it's past the edge of the screen.  Snap selection to the
+       beginning or end of a line when selecting lines which don't exist.
+       Only strip off whitespace if there's nothing but whitespace to the right
+       of the selection.  Chuck the non-wrapping selection code.
+
+ ChangeLog |    7 ++
+ README    |    1 -
+ src/vte.c |  208 ++++++++++++++++---------------------------------------------
+ 3 files changed, 62 insertions(+), 154 deletions(-)
+
+commit 81d34a7832606401e7ab35b7dda01f3de57c3471
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 11 06:05:28 2002 +0000
+
+    properly set the "selecting" flag again when we start selection (#97923).
+    
+    * src/vte.c: properly set the "selecting" flag again when we start selection
+       (#97923).
+
+ ChangeLog |    4 ++++
+ src/vte.c |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 0e364d3504c1e5536fdaad0ac668aed3cd4e82f9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 11 05:48:43 2002 +0000
+
+    rework selection so that word- and line-based selection can wrap like
+    
+    * src/vte.c: rework selection so that word- and line-based selection can wrap
+       like XTerm does (#97057,#97719).
+
+ ChangeLog |   11 ++-
+ src/vte.c |  229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 230 insertions(+), 10 deletions(-)
+
+commit 48a2e29878b6930e02b2f374b356c3e7f3a0b1f6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Nov 7 22:52:56 2002 +0000
+
+    doc fixes. use the older alternate-screen decset value. fixup screwups on
+    
+    * src/vte.h: doc fixes.
+    * src/dumpkeys.c: use the older alternate-screen decset value.
+    * src/vte.c: fixup screwups on extending selection.
+
+ ChangeLog                      |    5 +++++
+ Makefile.am                    |    3 ++-
+ doc/reference/tmpl/vte.sgml    |   11 +++++++++++
+ doc/reference/vte-sections.txt |    1 +
+ po/cs.po                       |   40 ++++++++++++++++++++--------------------
+ po/da.po                       |   40 ++++++++++++++++++++--------------------
+ po/de.po                       |   40 ++++++++++++++++++++--------------------
+ po/fr.po                       |   40 ++++++++++++++++++++--------------------
+ po/nl.po                       |   40 ++++++++++++++++++++--------------------
+ po/no.po                       |   40 ++++++++++++++++++++--------------------
+ po/pt_BR.po                    |   40 ++++++++++++++++++++--------------------
+ po/sv.po                       |   40 ++++++++++++++++++++--------------------
+ po/vi.po                       |   40 ++++++++++++++++++++--------------------
+ src/dumpkeys.c                 |    2 +-
+ src/vte.c                      |   14 ++++++--------
+ src/vte.h                      |    2 +-
+ vte.spec                       |    5 ++++-
+ 17 files changed, 211 insertions(+), 192 deletions(-)
+
+commit 562b54d18e0522e18808ef5b98bfc80f7564e62d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 5 22:57:30 2002 +0000
+
+    0.10.2
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 2a94d48cd9fb205df426db06803e715934213422
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Nov 5 22:54:20 2002 +0000
+
+    handle end-of-line selection correctly. Stop highlighting selection on
+    
+    * src/vte.c: handle end-of-line selection correctly.  Stop highlighting
+       selection on click, but don't lose it until new text is selected.
+    * python/vte.override: fix binding for set_colors() to properly take a
+       list of colors for the palette (#97682).
+    * src/vte.c, src/vte.h: add increase-font-size and decrease-font-size to allow
+       mimicking XTerm's and Mozilla's behavior on Shift/Control
+       KP_Add/KP_Subtract
+    * src/vteapp.c: handle increase-font-size and decrease-font-size.
+
+ ChangeLog                   |    9 ++
+ doc/reference/tmpl/vte.sgml |   14 ++
+ python/vte.override         |   46 +++++++
+ src/Makefile.am             |    6 +-
+ src/dumpkeys.c              |  308 ++++++++++++++++++++++++++++++++++++++++++
+ src/vte.c                   |  310 +++++++++++++++++++++---------------------
+ src/vte.h                   |    4 +-
+ src/vteapp.c                |   58 ++++++++
+ 8 files changed, 597 insertions(+), 158 deletions(-)
+
+commit 002f5e5e6ad00199c52869810616350a6c165542
+Author: Robert Brady <rbrady src gnome org>
+Date:   Tue Nov 5 16:33:00 2002 +0000
+
+    Commit uncomitted file
+    
+    Doh. Sorry.
+
+ src/vte.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit a175a436c1f7298cce7459337dbf25daedbbadc9
+Author: Abi Brady <morwen evilmagic org>
+Date:   Tue Nov 5 16:06:11 2002 +0000
+
+    Add and implement the strikethrough attribute. Change underline to be
+    
+    2002-11-05  Abi Brady  <morwen evilmagic org>
+       * src/vte.c: Add and implement the strikethrough attribute.
+       Change underline to be drawn using the ascent, rather than
+       arbritarily putting it two lines above the bottom of the
+       charcell - looks much better with large fonts.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   42 +++++++++++++++++++++++++++++++++---------
+ 2 files changed, 39 insertions(+), 9 deletions(-)
+
+commit 16dce79ee4f39e35562e33458b4f814a719892c9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Nov 4 15:49:22 2002 +0000
+
+    be more verbose. add more items to the TODO list so that I don't forget
+    
+    * NEWS: be more verbose.
+    * README: add more items to the TODO list so that I don't forget them.
+    * src/vte.c: ifdef out some of the selection code.
+
+ ChangeLog   |    5 +++++
+ NEWS        |   29 +++++++++++++++++++++--------
+ README      |   16 +++++++++++-----
+ po/cs.po    |   40 ++++++++++++++++++++--------------------
+ po/da.po    |   40 ++++++++++++++++++++--------------------
+ po/de.po    |   40 ++++++++++++++++++++--------------------
+ po/fr.po    |   40 ++++++++++++++++++++--------------------
+ po/nl.po    |   40 ++++++++++++++++++++--------------------
+ po/no.po    |   40 ++++++++++++++++++++--------------------
+ po/pt_BR.po |   40 ++++++++++++++++++++--------------------
+ po/sv.po    |   40 ++++++++++++++++++++--------------------
+ po/vi.po    |   40 ++++++++++++++++++++--------------------
+ src/vte.c   |    8 ++++++++
+ 13 files changed, 225 insertions(+), 193 deletions(-)
+
+commit 1a42a72312a635157d5921fdef1b757816e9d9e1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Oct 30 20:36:58 2002 +0000
+
+    add ident tags. don't scroll-to-bottom if we're selecting (#96913).
+    
+    * src/buffer.c, src/iso2022.c, src/vteaccess.c: add ident tags.
+    * src/vte.c: don't scroll-to-bottom if we're selecting (#96913).
+
+ ChangeLog       |    4 ++
+ src/buffer.c    |    1 +
+ src/iso2022.c   |    1 +
+ src/vte.c       |   83 ++++++++++++++++++++++++++++++++----------------------
+ src/vteaccess.c |    1 +
+ 5 files changed, 56 insertions(+), 34 deletions(-)
+
+commit 12b3f27976debad67cd40abeb825784a910c8286
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Oct 30 20:03:22 2002 +0000
+
+    implement iconify, deiconify, raise, lower, maximize, restore, refresh,
+    
+    * src/vteapp.c: implement iconify, deiconify, raise, lower, maximize, restore,
+       refresh, resize, and move signals.
+    * src/vte.c: add vte_terminal_match_remove().
+    * src/vte.c (vte_sequence_handler_cb): clear the current column in addition to
+       columns to the left, spotted by Sam Varshavchik.
+    * src/vte.c:  Use g_array_set_size() to clear arrays instead of removing each
+       element.  Properly initialize new columns with just the default colors
+       and not other attributes (#96978).
+    * src/vte.c (vte_sequence_handler_ta): revert to non-overwriting tabs, otherwise
+       we got occasional drawing artifacts.
+
+ ChangeLog                      |   12 ++
+ HACKING                        |    2 +-
+ NEWS                           |    1 +
+ doc/reference/tmpl/vte.sgml    |    9 ++
+ doc/reference/vte-sections.txt |    1 +
+ src/iso2022.c                  |    6 +-
+ src/iso2022.txt                |    2 +-
+ src/vte.c                      |  273 ++++++++++++++++++++++++++++------------
+ src/vte.h                      |    2 +
+ src/vteapp.c                   |  167 ++++++++++++++++++++++++-
+ vte.spec                       |    5 +-
+ 11 files changed, 391 insertions(+), 89 deletions(-)
+
+commit 810df74cc6b9df3f5605ada6199a9d29954b7fe7
+Author: Abi Brady <morwen evilmagic org>
+Date:   Wed Oct 30 19:33:11 2002 +0000
+
+    Support dim (halfbright) colours. All the infrastructure for this was here
+    
+    2002-10-30  Abi Brady  <morwen evilmagic org>
+    
+            * src/vte.c, src/vte.h : Support dim (halfbright) colours. All the
+            infrastructure for this was here already (apart from making sure bold
+            and half are mutually exclusive).  Add API set_color_dim, and let
+            set_colors take a palette of size 24.
+
+ ChangeLog |    7 +++++
+ src/vte.c |   75 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ src/vte.h |    2 +
+ 3 files changed, 73 insertions(+), 11 deletions(-)
+
+commit 9c335fdd4498e6c10df2f53e369eb8e5fe953513
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Tue Oct 29 21:24:43 2002 +0000
+
+    Update
+
+ po/no.po |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 824414b696954452df80ba0ee38dde997f215a6f
+Author: Abi Brady <morwen evilmagic org>
+Date:   Tue Oct 29 14:11:19 2002 +0000
+
+    Map to UCS, not keysyms. (which differ > 0xff).
+    
+    2002-10-29  Abi Brady  <morwen evilmagic org>
+    
+       * src/iso2022.c (_vte_iso2022_map_[J4]): Map to UCS, not keysyms.
+       (which differ > 0xff).
+
+ ChangeLog     |    4 ++++
+ src/iso2022.c |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 471a08467712055d77f845deb972b927cfdda5c8
+Author: Abi Brady <morwen evilmagic org>
+Date:   Mon Oct 28 19:09:08 2002 +0000
+
+    Add line-drawing representation for full block. Draw U+23BA-23BD. Fix
+    
+    2002-10-28  Abi Brady  <morwen evilmagic org>
+    
+       * src/vte.c: Add line-drawing representation for full block. Draw
+       U+23BA-23BD. Fix drawing of U+23BD (scan line 9) and U+2592
+       (checkerboard) to use bottom line of the charcell, not the top line of
+       the one below.
+    
+       * src/iso2022.c: Complete DEC Special Graphics to Unicode map.
+
+ ChangeLog     |    7 ++++++
+ src/iso2022.c |   19 +++++++++++++++-
+ src/vte.c     |   62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 3 files changed, 83 insertions(+), 5 deletions(-)
+
+commit 241ae1fcc0d989f72cdc4eba073ad3a8e5211df4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 25 22:09:29 2002 +0000
+
+    - po file updates
+
+ po/cs.po    |   42 +++++++++++++++++++++---------------------
+ po/da.po    |   42 +++++++++++++++++++++---------------------
+ po/de.po    |   42 +++++++++++++++++++++---------------------
+ po/fr.po    |   42 +++++++++++++++++++++---------------------
+ po/nl.po    |   42 +++++++++++++++++++++---------------------
+ po/no.po    |   42 +++++++++++++++++++++---------------------
+ po/pt_BR.po |   42 +++++++++++++++++++++---------------------
+ po/sv.po    |   42 +++++++++++++++++++++---------------------
+ po/vi.po    |   42 +++++++++++++++++++++---------------------
+ 9 files changed, 189 insertions(+), 189 deletions(-)
+
+commit 25f084882412a537c4a3cc6993027f9707d8cc81
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 25 22:07:11 2002 +0000
+
+    snip off final newlines when we're matching, they're usually not wanted.
+    
+    * src/vte.c (vte_terminal_match_check_internal): snip off final newlines when
+       we're matching, they're usually not wanted.
+    * src/pty.c, src/pty.h: replace the simpler pty_open() function with a logging
+       version, adding the ability to specify a startup directory (Red Hat
+       #76529).
+    * src/vte.c, src/vte.h: replace the simpler fork_command() function with a
+       logging version, adding the ability to specify a startup directory (Red
+       Hat #76529).
+    * src/vteapp.c: modify call to handle new fork_command().
+    * python/vte.defs: update as above.
+    * python/vte.override: modify call to handle new fork_command(), adding an
+       optional "directory" argument.
+    * src/vte.c: refactor the selection code, cleaning up when selection is
+       cleared/started/extended (#95783).  Grab focus whenever we get button
+       press or release or motion events.
+    * src/vte.c: rework how wide characters are stored to allow storing tabs
+       (#95958).
+    * python/vte.override: wrap vte_terminal_get_text() and
+       vte_terminal_get_text_range().  Based on patch from ha shao (#96230).
+    * src/vte.c, src/vte.h: add a user pointer argument to get_text callbacks
+       (#96230).
+    * src/Makefile.am: bump shared library version because we changed a public
+       function's signature.  Take the opportunity to replace padding fields
+       which had previously been used up.
+
+ ChangeLog                          |   36 +-
+ Makefile.am                        |    5 +-
+ doc/reference/tmpl/pty.sgml        |   36 -
+ doc/reference/tmpl/vte-unused.sgml |   73 ++
+ doc/reference/tmpl/vte.sgml        |   15 +-
+ doc/reference/vte-docs.sgml        |    2 -
+ doc/reference/vte-sections.txt     |    8 -
+ python/cat.py                      |   13 +-
+ python/vte.defs                    |   12 +-
+ python/vte.override                |  248 +++++-
+ src/Makefile.am                    |    2 +-
+ src/debug.c                        |    3 +
+ src/debug.h                        |    3 +-
+ src/pty.c                          |   94 +-
+ src/pty.h                          |   22 +-
+ src/vte.c                          | 1970 ++++++++++++++++++++----------------
+ src/vte.h                          |   25 +-
+ src/vteaccess.c                    |    4 +-
+ src/vteapp.c                       |   12 +-
+ vte.spec                           |    5 +-
+ 20 files changed, 1564 insertions(+), 1024 deletions(-)
+
+commit e600d5ea308a700166c9a59e9e88e80ac7f91263
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Oct 21 19:01:26 2002 +0000
+
+    - translation updates
+
+ po/cs.po    |   40 ++++++++++++++++++++--------------------
+ po/da.po    |   40 ++++++++++++++++++++--------------------
+ po/de.po    |   40 ++++++++++++++++++++--------------------
+ po/fr.po    |   40 ++++++++++++++++++++--------------------
+ po/nl.po    |   40 ++++++++++++++++++++--------------------
+ po/no.po    |   40 ++++++++++++++++++++--------------------
+ po/pt_BR.po |   40 ++++++++++++++++++++--------------------
+ po/sv.po    |   40 ++++++++++++++++++++--------------------
+ po/vi.po    |   40 ++++++++++++++++++++--------------------
+ 9 files changed, 180 insertions(+), 180 deletions(-)
+
+commit 0ec595fde9bd1e3d9bbbd7125353f0b35729ad1a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Oct 21 18:56:57 2002 +0000
+
+    - fix path for python module
+
+ vte.spec |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 4199e9affd62e43a2b452c733428852b28d25ef9
+Author: jacob berkman <jacob ximian com>
+Date:   Mon Oct 21 17:26:29 2002 +0000
+
+    include decset, osc, and window
+    
+    2002-10-21  jacob berkman  <jacob ximian com>
+    
+       * src/Makefile.am (EXTRA_DIST): include decset, osc, and window
+
+ ChangeLog       |    4 ++++
+ src/Makefile.am |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit fa5c2e2027f0507032ed8e090e11140cd2d8b277
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 18 21:58:34 2002 +0000
+
+    use character constants instead of hex constants. add more illustrations.
+    
+    * src/iso2022.c: use character constants instead of hex constants.
+    * src/iso2022.txt: add more illustrations.
+    * src/decset: scriptlet to save some typing.
+    * src/vte.c: zero-terminate window and icon title strings again.
+    * src/decset, src/osc, src/window: add.
+
+ ChangeLog       |    7 ++
+ src/Makefile.am |    1 +
+ src/decset      |   16 +++++
+ src/iso2022.c   |  192 +++++++++++++++++++++++++++---------------------------
+ src/iso2022.txt |   22 +++++--
+ src/osc         |   21 ++++++
+ src/vte.c       |    8 ++-
+ src/window      |   28 ++++++++
+ 8 files changed, 192 insertions(+), 103 deletions(-)
+
+commit 7459d35c062c3c91d98988cb95d55151c9752423
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 18 20:53:53 2002 +0000
+
+    add a mapping for the escape key. Oops.
+    
+    * src/keymap.c: add a mapping for the escape key.  Oops.
+
+ ChangeLog    |    3 +++
+ src/keymap.c |    6 ++++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit 41f60f34704e288a36e681dfe6b15e386c90dd20
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 18 20:06:49 2002 +0000
+
+    implement decset 42 (enable/disable NRC processing), but enable it by
+    
+    * src/vte.c: implement decset 42 (enable/disable NRC processing), but enable it
+       by default.  Implement decset 44 (margin bell).
+    * src/vte.c: do not trust the event->string.  Use gdk_keyval_to_unicode and the
+       built-in keymapping to cope with the weirdness.  Extend the range of
+       characters we controlify from 0x40-0x60 to 0x40-0x7f so that lower-case
+       ascii chars controlify (not a word, I know).
+    * src/keymap.c: add map entries for GDK_Return and GDK_KP_Enter for
+       GDK_CONTROL_MASK = cr, normal = lf.
+
+ ChangeLog    |   10 ++++
+ src/keymap.c |    9 +++
+ src/vte.c    |  161 ++++++++++++++++++++++++++++++++++++++++------------------
+ 3 files changed, 131 insertions(+), 49 deletions(-)
+
+commit e310e8d82626e1b367134f51b84026df07da07d9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 18 15:38:27 2002 +0000
+
+    make sure that strings passed to a commit signal are zero-terminated
+    
+    * src/vte.c: make sure that strings passed to a commit signal are
+       zero-terminated (#96131).
+    * python/Makefile.am: install the module in site-packages instead of a
+       subdirectory, which doesn't work on my system.
+
+ ChangeLog          |    6 ++++++
+ python/Makefile.am |    2 +-
+ src/vte.c          |   15 +++++++++++++--
+ 3 files changed, 20 insertions(+), 3 deletions(-)
+
+commit f2fef8ea942c5a99663691241d637ef2e2a8dcbf
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 18 00:25:21 2002 +0000
+
+    remove vte_terminal_update_scroll_delta, which only did things
+    
+    * src/vte.c: remove vte_terminal_update_scroll_delta, which only did things
+       vte_terminal_adjust_adjustments already did and was only called
+       immediately after.  Fill newly-added lines with the current attributes
+       if the current background isn't the default color (Red Hat #73853).
+       Implement ignored DECSET settings, so that we don't mistakenly complain
+       about settings not being implemented yet when we actually just want to
+       ignore them.  Force the first cursor redraw after focus-in to always be
+       in the foreground color (Red Hat #75908).
+    * vte.spec: 0.9.2
+
+ ChangeLog |   17 ++++++-
+ src/vte.c |  156 +++++++++++++++++++++++++++++-------------------------------
+ vte.spec  |   10 ++++-
+ 3 files changed, 100 insertions(+), 83 deletions(-)
+
+commit 9a346fd61eb247ee863478459f46d2a885f4cb68
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 17 18:13:26 2002 +0000
+
+    force invalidation mode if we're in insert mode to get the entire line
+    
+    * src/vte.c (vte_terminal_insert_char): force invalidation mode if we're in
+       insert mode to get the entire line redrawn.  Spotted by msw.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit f18f8e2e7d649675d61c97d5b6b5170f397b1e24
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 17 16:26:03 2002 +0000
+
+    clean up tests for wint_t. Patch from Brian Cameron.
+    
+    * configure.in: clean up tests for wint_t.  Patch from Brian Cameron.
+
+ ChangeLog    |    3 +++
+ configure.in |   12 +-----------
+ 2 files changed, 4 insertions(+), 11 deletions(-)
+
+commit b2fcad271ca132aa74f3a489169d33f7a66795ff
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 17 16:17:40 2002 +0000
+
+    close a possible race on systems where pty initialization requires more
+    
+    * src/pty.c: close a possible race on systems where pty initialization requires
+       more than just opening the pty (for example, Solaris).  Spotted by Brian
+       Cameron.
+    * src/utf8echo.c: don't reset to iso-8859-1 unless -r is used.
+
+ ChangeLog      |    8 ++-
+ po/cs.po       |   42 +++++-----
+ po/da.po       |   42 +++++-----
+ po/de.po       |   42 +++++-----
+ po/fr.po       |   42 +++++-----
+ po/nl.po       |   42 +++++-----
+ po/no.po       |   40 +++++-----
+ po/pt_BR.po    |   42 +++++-----
+ po/sv.po       |   42 +++++-----
+ po/vi.po       |   42 +++++-----
+ src/pty.c      |  256 ++++++++++++++++++++++++++++++++++++++++++--------------
+ src/utf8echo.c |   11 ++-
+ 12 files changed, 397 insertions(+), 254 deletions(-)
+
+commit 89e1b4ff2306e8fedfdafa4929665f2460510465
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Oct 16 23:35:07 2002 +0000
+
+    remove a bogus assertion for a case which we were already handling a
+    
+    * src/vte.c: remove a bogus assertion for a case which we were already handling
+       a little further down.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 --
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit e82912ae31e1e6b52f9e2f4f744d33c4fb475496
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Oct 16 20:11:52 2002 +0000
+
+    doc/utmpwtmp.txt: some docs on what utmp/wtmp/lastlog logging actually do
+
+ doc/utmpwtmp.txt |   31 +++++++++++++++++++++++++++++++
+ 1 files changed, 31 insertions(+), 0 deletions(-)
+
+commit b68e40146ce0a5226d458b8d6fe97c58e01e3b14
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Oct 16 19:37:03 2002 +0000
+
+    adjust our adjustments whenever a line might scroll off the top of the
+    
+    * src/vte.c: adjust our adjustments whenever a line might scroll off the top of
+       the buffer.  Fix computation of the new insertion delta to ensure that
+       it never goes below the scroll delta, which should fix the resizing
+       crashes, and add some debug assertions to verify this.
+    * configure.in, python/Makefile.am: build the python bindings as a library,
+       not a binary with wacky ldflags.
+    * src/vte.c: don't try to close the pty at finalize time if we didn't open
+       it.  Patch from ha shao.
+    * src/keymap.c, src/keymap.h: move the addition of modifiers into a separate
+       function.  Add the function key strings from terminfo for fkey_sun and
+       fkey_hp cases.  Make control+F1 = F13 only in vt220 mode.
+    * src/vte.c: apply modifiers to function keys in normal and legacy modes.
+
+ ChangeLog          |   17 ++++
+ configure.in       |    5 +-
+ python/Makefile.am |   15 ++--
+ src/keymap.c       |  239 ++++++++++++++++++++++++++++++++++++++--------------
+ src/keymap.h       |   13 +++-
+ src/vte.c          |  112 ++++++++++++++++++++-----
+ src/vteapp.c       |    4 +-
+ 7 files changed, 310 insertions(+), 95 deletions(-)
+
+commit c74ab135c563a6cf3244cd03d98e3730f8220697
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Tue Oct 15 20:27:58 2002 +0000
+
+    Updated translation.
+    
+    2002-10-15  Kjartan Maraas  <kmaraas gnome org>
+    
+       * no.po: Updated translation.
+
+ po/ChangeLog |    4 ++++
+ po/no.po     |   40 ++++++++++++++++++++--------------------
+ 2 files changed, 24 insertions(+), 20 deletions(-)
+
+commit 3af8a4a5bd3fbfdb82f7cc7bf3ae0b623f719f12
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Oct 15 02:22:37 2002 +0000
+
+    add super-bogus bold text mode (Red Hat #74779).
+    
+    * src/vte.c: add super-bogus bold text mode (Red Hat #74779).
+
+ ChangeLog                      |    7 ++-
+ doc/reference/tmpl/vte.sgml    |   33 ++++++++++++++
+ doc/reference/vte-sections.txt |    3 +
+ python/vte.defs                |   15 ++++++
+ src/Makefile.am                |    2 +-
+ src/vte.c                      |   96 +++++++++++++++++++++++++++++++++++++---
+ src/vte.h                      |    2 +
+ src/vteapp.c                   |    2 +-
+ 8 files changed, 150 insertions(+), 10 deletions(-)
+
+commit e590d5dce3e48a5313e8e02d50439c675fdfb46a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Oct 15 01:49:25 2002 +0000
+
+    recognize CSI-r (with no arguments) as resetting the scrolling region in
+    
+    * src/vte.c: recognize CSI-r (with no arguments) as resetting the scrolling
+       region in XTerm emulation (Red Hat #75902)
+
+ ChangeLog  |    8 ++++++--
+ src/caps.c |    3 +++
+ src/vte.c  |    2 +-
+ 3 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 2905a995d011850f854aa8b3b2fe261be944705b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Oct 14 21:40:22 2002 +0000
+
+    add mappings for GDK_Page_Up and GDK_Page_Down, missed in the conversion.
+    
+    * src/keymap.c: add mappings for GDK_Page_Up and GDK_Page_Down, missed in the
+       conversion.
+    * src/vte.c: steal GDK_KP_{Add,Subtract,Multiply,Divide} from the input methods
+       (Red Hat #75207).
+
+ ChangeLog    |    6 ++++++
+ po/cs.po     |   42 +++++++++++++++++++++---------------------
+ po/da.po     |   42 +++++++++++++++++++++---------------------
+ po/de.po     |   42 +++++++++++++++++++++---------------------
+ po/fr.po     |   42 +++++++++++++++++++++---------------------
+ po/nl.po     |   42 +++++++++++++++++++++---------------------
+ po/no.po     |   42 +++++++++++++++++++++---------------------
+ po/pt_BR.po  |   42 +++++++++++++++++++++---------------------
+ po/sv.po     |   42 +++++++++++++++++++++---------------------
+ po/vi.po     |   42 +++++++++++++++++++++---------------------
+ src/keymap.c |   13 +++++++++++++
+ src/vte.c    |   10 +++++-----
+ 12 files changed, 213 insertions(+), 194 deletions(-)
+
+commit b648a00d75f17d490ed2e96bdd2ed449ce49a34e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Oct 14 21:22:40 2002 +0000
+
+    note that commit came about because of mail from ha shao. add a couple of
+    
+    * ChangeLog: note that commit came about because of mail from ha shao.
+    * python/cat.py: add a couple of comments.
+
+ ChangeLog     |   14 +++++++-------
+ python/cat.py |    2 ++
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+commit cda7db5a18f9ea59673acf0ee5a7a34c3f59c662
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Oct 14 21:07:58 2002 +0000
+
+    more $pkglibdir -> $libexecdir fixing. add rules for generating ps and
+    
+    * configure.in: more $pkglibdir -> $libexecdir fixing.
+    * doc/Makefile.am: add rules for generating ps and text versions of the ctlseqs
+       docs.
+    * doc/reference/tmpl/vte.sgml: add snippet for "commit".
+    * python/python/vte.defs: update to add a binding for
+       vte_terminal_fork_logged_command().
+    * src/buffer.h: add a warning comment that these are private interfaces.  Wrap
+       declarations in G_BEGIN_DECLS/G_END_DECLS.
+    * src/caps.h: add macros for the SS2/SS3 sequences.
+    * src/marshal.list: add a marshaller for the "commit" signal.
+    * src/keymap.c, src/keymap.h: move the getting-more-convoluted keypress-handling
+       code to a shell that parses tables of static info.
+    * src/pty.c: reset signal handlers before exec() (Red Hat #75341)
+    * src/vte.c: use the keymap for most non-printable keys.  Add a "commit" signal
+       to allow an app to just use the terminal for displaying data and
+       grabbing input.  Obey the application's desired meta-sends-escape
+       setting.  Recognize HP function key mode.  Recognize and handle legacy
+       XTerm function key mode.  Force a redraw if the child application tries
+       to switch to 80/132 columns, even though we don't usually let them try.
+       Don't try to send keystrokes to the child pty when there is no child
+       pty.  Don't convert final whitespace to newlines when copying text
+       (Red Hat #74611).  Properly distinguish cursor key mode and keypad key
+       mode, obey application mode for cursor keys,
+    * python/cat.py: test program for running without a command.
+    * termcaps/xterm: change the definitions for ku/kd/kl/kr to match XTerm in
+       normal cursor mode instead of application cursor mode.
+
+ ChangeLog                   |   31 ++
+ configure.in                |    4 +-
+ doc/Makefile.am             |    6 +
+ doc/reference/tmpl/vte.sgml |   11 +
+ python/cat.py               |   48 +++
+ python/vte.defs             |   14 +
+ src/Makefile.am             |    2 +
+ src/buffer.h                |   10 +-
+ src/caps.h                  |    2 +
+ src/keymap.c                |  798 +++++++++++++++++++++++++++++++++++++++++++
+ src/keymap.h                |   52 +++
+ src/marshal.list            |    1 +
+ src/pty.c                   |   84 +++++
+ src/vte.c                   |  602 +++++++++++++--------------------
+ src/vte.h                   |    2 +-
+ src/vteapp.c                |    4 +-
+ termcaps/xterm              |    6 +-
+ 17 files changed, 1305 insertions(+), 372 deletions(-)
+
+commit fb8d32cd8e004edf334cd893e530de54e91f93b3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Oct 11 18:50:01 2002 +0000
+
+    change the typedef of wint_t here to match vte.c (now a gunichar instead
+    
+    * src/trie.c: change the typedef of wint_t here to match vte.c (now a gunichar
+       instead of a long).  Spotted by Brian Cameron.
+
+ ChangeLog  |    6 +++++-
+ src/trie.c |    2 +-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit ce817d3ae082a82c2ebad13f8be2fc145f556afa
+Author: Brian Cameron <bcameron src gnome org>
+Date:   Fri Oct 11 17:21:07 2002 +0000
+
+    Changed to that wchar.h is included when checking for wint_t on Solaris.
+    
+        * configure.in: Changed to that wchar.h is included when checking for
+        wint_t on Solaris.     This was needed because on Solaris wint_t is defined
+        to be a long, and in vte.c its definition was recently changed to be a
+        gunichar.  This caused the compile to break on Solaris.
+
+ ChangeLog    |    6 ++++++
+ configure.in |   29 ++++++++++++++++++++++++++++-
+ 2 files changed, 34 insertions(+), 1 deletions(-)
+
+commit b0a4e8ffb13e71e393d973539267f3cbf711b2d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 10 18:45:46 2002 +0000
+
+    fix the bits I missed when fixing #95085.
+    
+    * configure.in, src/pty.c, gnome-pty-helper/Makefile.am: fix the bits I missed
+       when fixing #95085.
+
+ ChangeLog                    |    4 ++++
+ configure.in                 |    5 ++++-
+ gnome-pty-helper/Makefile.am |    4 ++--
+ src/pty.c                    |    2 +-
+ 4 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 46821963e12a980b5d3864fbee542bcd66c45480
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 10 17:57:14 2002 +0000
+
+    Add.
+
+ src/buffer.c |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/buffer.h |   43 +++++++++++++++
+ 2 files changed, 213 insertions(+), 0 deletions(-)
+
+commit 272bef21f4676bd586bbd9484890d6d2aa47fce7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Oct 10 16:57:30 2002 +0000
+
+    allow specifying the scrollback buffer size. if we don't have <wchar.h>,
+    
+    * src/vteapp.c, python/vte-demo.py: allow specifying the scrollback buffer size.
+    * src/vte.c: if we don't have <wchar.h>, typedef wchar_t as a gunichar, not a
+       long.
+    * src/buffer.c, src/buffer.h: add.
+    * src/interpret.c, src/vte.c: use _vte_buffer structures instead of char arrays
+       with separate lengths.  Use a scratch buffer for holding the results of
+       conversions.
+    * src/vte.c: separate the pango and pangox drawing paths so that they're easier
+       to tweak and compare to each other.
+    * src/vte.c: ditch the smooth scrolling change, which won't work right anyway
+       (expose events don't get processed until after we finish processing a
+       chunk of data unless we explicitly request it, so using a bbox is both
+       simpler and faster).  Use a mask when creating the cursor we use for
+       hiding the cursor.
+    * vte.spec, gnome-pty-helper/Makefile.am: install gnome-pty-helper into the
+       libexecdir, not pkglibdir (#95085).
+    * src/vte.c: obey smooth/jump scrolling options, default is jump scroll.
+    * src/vte.c (vte_font_match): Fix over-aggressive Xft => Fc conversion - need
+       to call XftDefaultSubstitute to pick up Xft X resources, not
+       FcDefaultSubstitute.  From otaylor.
+
+ ChangeLog                    |   29 ++
+ gnome-pty-helper/Makefile.am |    3 +-
+ gnome-pty-helper/README      |    5 +-
+ po/cs.po                     |   38 ++--
+ po/da.po                     |   42 ++--
+ po/de.po                     |   42 ++--
+ po/fr.po                     |   42 ++--
+ po/nl.po                     |   42 ++--
+ po/no.po                     |   40 ++--
+ po/pt_BR.po                  |   42 ++--
+ po/sv.po                     |   42 ++--
+ po/vi.po                     |   42 ++--
+ python/vte-demo.py           |   11 +-
+ src/Makefile.am              |    4 +
+ src/vte.c                    |  615 +++++++++++++++++++++---------------------
+ src/vteapp.c                 |   12 +-
+ vte.spec                     |    2 +-
+ 17 files changed, 553 insertions(+), 500 deletions(-)
+
+commit 9705656987dfb648692f14556143fa999a28e5bb
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sat Oct 5 20:55:35 2002 +0000
+
+    Update slightly
+
+ po/no.po |   42 +++++++++++++++++++++---------------------
+ 1 files changed, 21 insertions(+), 21 deletions(-)
+
+commit 70f468de3dff031b5e755560a4ae6b08babb111b
+Author: Stanislav Brabec <sbrabec suse cz>
+Date:   Tue Oct 1 09:40:24 2002 +0000
+
+    Added Czech translation from Miloslav Trmac <mitr volny cz>.
+    
+    2002-10-01  Stanislav Brabec  <sbrabec suse cz>
+    
+       * cs.po: Added Czech translation from Miloslav Trmac
+       <mitr volny cz>.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 +++
+ po/cs.po     |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 124 insertions(+), 1 deletions(-)
+
+commit 5a499ccb617f2b67c2e236c613f68c0af7dbf780
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 24 20:24:17 2002 +0000
+
+    if the list of word characters is NULL or zero-length, try to guess using
+    
+    * src/vte.c(vte_terminal_set_word_chars,vte_terminal_is_word_char): if the list
+       of word characters is NULL or zero-length, try to guess using
+       g_unichar_isgraph and not g_unichar_ispunct, which seems to produce
+       reasonable results (#77134).
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   14 +++++++++++++-
+ 2 files changed, 19 insertions(+), 1 deletions(-)
+
+commit 4ed2ed43616e28c9e623bfa3c4bdabb06c212545
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 24 19:31:04 2002 +0000
+
+    Fix HAVE_UT_UT_TV for cases where the static initializer might not work
+    
+    * gnome-pty-helper/acinclude.m4: Fix HAVE_UT_UT_TV for cases where the static
+       initializer might not work right (#93774, patch from Kalpesh Shah).
+
+ ChangeLog                     |    5 +++++
+ gnome-pty-helper/acinclude.m4 |    3 ++-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit 5c90999a83b372436ab94d7b0d5f4cd1cc942360
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 24 19:24:28 2002 +0000
+
+    Doc fixups (mention gnome-terminal instead of profterm, note the proper
+    
+    * README, gnome-pty-helper/README:  Doc fixups (mention gnome-terminal instead
+       of profterm, note the proper permissions for gnome-pty-helper, #84505).
+
+ ChangeLog               |    5 +++++
+ README                  |    2 +-
+ gnome-pty-helper/README |    6 ++++++
+ 3 files changed, 12 insertions(+), 1 deletions(-)
+
+commit 0da7298172a95ccdcafa8c84d4b53a28b03c2aae
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Sep 20 16:58:57 2002 +0000
+
+    Fix a ring-buffer manipulation bug (Red Hat #74290) which might cause a
+    
+    * src/ring.c: Fix a ring-buffer manipulation bug (Red Hat #74290) which might
+       cause a new item to be inserted in the wrong location.
+
+ ChangeLog       |    4 +++
+ src/iso2022.txt |    5 +++
+ src/ring.c      |   79 ++++++++++++++++++++++++++++++++++--------------------
+ 3 files changed, 59 insertions(+), 29 deletions(-)
+
+commit 104c07cab56604228172e7ea47e102312ff7b43e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 19 20:14:06 2002 +0000
+
+    Munge input data the way the terminal does so that conversion failures
+    
+    * src/interpret.c: Munge input data the way the terminal does so that conversion
+       failures don't wedge us.
+
+ ChangeLog       |    4 ++++
+ src/interpret.c |    6 ++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 3aff8ec2220dc2e52bc925ddce87ac6c2e8badf3
+Author: Brian Cameron <bcameron src gnome org>
+Date:   Thu Sep 19 14:20:30 2002 +0000
+
+    backing out change made by accident.
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 045db8182451129a6456f94721ef79537ba9e411
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Thu Sep 19 14:18:55 2002 +0000
+
+    Backed out scrolldelay patches from 09-17 and 09-18 at Nalin's request.
+    
+    2002-09-19 Brian Cameron <Brian Cameron sun com>
+        * src/vte.c: Backed out scrolldelay patches from 09-17 and 09-18 at
+        Nalin's request.  Left in the patch which allows programs which
+        update the screen non-linearly like lynx to work properly.
+
+ ChangeLog    |    7 ++++-
+ src/vte.c    |   77 +--------------------------------------------------------
+ src/vteapp.c |    2 +-
+ 3 files changed, 9 insertions(+), 77 deletions(-)
+
+commit 64462ef05e3b0aa85c5f338f297d594b7b453d46
+Author: Brian Cameron <bcameron src gnome org>
+Date:   Thu Sep 19 14:00:52 2002 +0000
+
+    backing out patch i accidently put in
+
+ src/ring.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 2ee4138d1daf8202bf7842b8ff7a5706a3b61cd4
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Thu Sep 19 13:57:14 2002 +0000
+
+    Backed out scrolldelay patches from 09-17 and 09-18 at Nalin's request.
+    
+    2002-09-19 Brian Cameron <Brian Cameron sun com>
+        * src/vte.c: Backed out scrolldelay patches from 09-17 and 09-18 at
+        Nalin's request.  Left in the patch which allows programs which
+        update the screen non-linearly like lynx to work properly.
+
+ src/ring.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 3d11978237aecf846e6afa8b1287e22b7bc1baa2
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Wed Sep 18 14:20:34 2002 +0000
+
+    Corrected a problem with yesterday's patch. I am now properly calling
+    
+    2002-09-18 Brian Cameron <Brian Cameron sun com>
+        * src/vte.c: Corrected a problem with yesterday's patch.  I am now
+        properly calling g_source_remove on the scroll_delay timeout
+        function.  This prevents VTE from core dumping if you start up
+        more than one VTE gnome-terminal and exit from one of them.     Also
+        made the vte_scroll_timeout function a little cleaner by using
+        the VTE_IS_TERMINAL macro.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   13 ++++++++++---
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+commit 90ec87c9a6f2bdcb8c2c532f9c4f3e1eae97e1ea
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Tue Sep 17 14:40:06 2002 +0000
+
+    Fixed bug with my 09/11 speedup fix which caused programs that update the
+    
+    2002-09-17 Brian Cameron <Brian Cameron sun com>
+        * src/vte.c: Fixed bug with my 09/11 speedup fix which caused programs
+        that update the screen non-linearly like lynx to not update properly.
+        Also included a speed improvement which delays the scroll-down for
+        70ms.  Too fast to be noticeable to the user, but it speeds up VTE
+        greatly.
+
+ ChangeLog |    7 +++
+ src/vte.c |  122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 120 insertions(+), 9 deletions(-)
+
+commit d5962db9564344363ee538b922b1de2d0c55da84
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Sep 13 18:37:51 2002 +0000
+
+    Fix typo which broke builds on systems where MSG_NOSIGNAL is defined. Bad
+    
+    * src/pty.c: Fix typo which broke builds on systems where MSG_NOSIGNAL is
+       defined.  Bad boc!  Bad!
+
+ ChangeLog |    4 ++++
+ src/pty.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit a92f7efb47523e51b5db7a59095014a678af851d
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Fri Sep 13 17:35:49 2002 +0000
+
+    Added -lsocket to LIBS if socket is in libsocket, so VTE will compile on
+    
+    2002-09-12 Brian Cameron <Brian Cameron sun com>
+        * configure.in : Added -lsocket to LIBS if socket is in libsocket,
+        so VTE will compile on Solaris.
+
+ ChangeLog    |    4 ++++
+ configure.in |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 42492c722b812061542665d24230be6a2ce70cd2
+Author: jacob berkman <jacob ximian com>
+Date:   Thu Sep 12 18:34:09 2002 +0000
+
+    only use MSG_NOSIGNAL if it's defined
+    
+    2002-09-12  jacob berkman  <jacob ximian com>
+    
+       * src/pty.c: only use MSG_NOSIGNAL if it's defined
+    
+       * gnome-pty-helper/gnome-pty-helper.c (struct pty_info): remove
+       master_fd and slave_fd fields
+       (shutdown_pty): don't close master/slave fd's here...
+       (pty_add): don't take master/slave fd args
+       (open_ptys): ...close master/slave fd's right after passing them
+    
+       this fixes a hang after closing a window on os x, not sure why...
+    
+       * gnome-pty-helper/Makefile.am (install-exec-hook): remove
+       trailing / after $DESTDIR
+
+ ChangeLog                           |   13 +++++++++++++
+ gnome-pty-helper/Makefile.am        |    4 ++--
+ gnome-pty-helper/gnome-pty-helper.c |   22 +++++++---------------
+ src/pty.c                           |   11 +++++++++--
+ 4 files changed, 31 insertions(+), 19 deletions(-)
+
+commit 358885726ad71c0232c253d07c4c784cbd8b4eed
+Author: jacob berkman <jacob ximian com>
+Date:   Thu Sep 12 17:32:21 2002 +0000
+
+    AC_CHECK_FUNC() doesn't do AC_DEFINE(HAVE_FOO), so do that for socket()
+    
+    2002-09-12  jacob berkman  <jacob ximian com>
+    
+       * configure.in: AC_CHECK_FUNC() doesn't do AC_DEFINE(HAVE_FOO), so
+       do that for socket() and socketpair() if they are found
+
+ ChangeLog    |    5 +++++
+ configure.in |   11 +++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+commit 265464c734922fbe22d580ed1cb4c5567e55692e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 12 14:43:08 2002 +0000
+
+    Remove the invalidate_cells parameter, because the function is a big no-op
+    
+    * src/vte.c(vte_invalidate_cursor_once): Remove the invalidate_cells parameter,
+       because the function is a big no-op if FALSE, in which case we should
+       just not call it instead. (vte_terminal_process_incoming): refresh the
+       right number of rows after processing a block of data.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   45 ++++++++++++++++++++++++---------------------
+ 2 files changed, 30 insertions(+), 21 deletions(-)
+
+commit ebb9bd590800e991ca81facead05edf617018c2e
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Thu Sep 12 11:46:03 2002 +0000
+
+    src/vte.c Fixed minor error with my previous patch. This just makes a
+    
+    
+    2002-09-12 Brian Cameron <Brian Cameron sun com>
+        * src/vte.c Fixed minor error with my previous patch.  This just makes
+        a warning go away.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+commit db8c13b616aeeaa96d660e9d57e7f93c348cf05e
+Author: Pablo Gonzalo del Campo <pablodc bigfoot com>
+Date:   Thu Sep 12 01:15:31 2002 +0000
+
+    added spanish translation file.
+    
+    2002-09-11  Pablo Gonzalo del Campo <pablodc bigfoot com>
+    
+       * es.po: added spanish translation file.
+
+ po/ChangeLog |    4 ++
+ po/es.po     |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 121 insertions(+), 0 deletions(-)
+
+commit 5d1ac721e2096e926afb66b0f693cfdd6d0a8a37
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 22:05:26 2002 +0000
+
+    Reorder definitions to avoid implicit declaration warnings. Check for
+    
+    * src/pty.c: Reorder definitions to avoid implicit declaration warnings.
+    * configure.in: Check for socketpair().  Check for socket() in libc before
+       poking around in libsocket.
+    * gnome-pty-helper/configure.in: Check for openpty() in libutil as well, and do
+       so before we check for other functions.
+
+ ChangeLog                     |    7 ++
+ configure.in                  |    4 +-
+ gnome-pty-helper/configure.in |    5 +
+ src/pty.c                     |  172 ++++++++++++++++++++--------------------
+ 4 files changed, 100 insertions(+), 88 deletions(-)
+
+commit 0455940575c4f71862b3c5c9154f43e15e0b5d02
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 21:03:03 2002 +0000
+
+    Test for sendmsg() with AC_CHECK_FUNCS instead of AC_TRY_COMPILE. Removed.
+    
+    * configure.in, gnome-pty-helper/configure.in: Test for sendmsg() with
+       AC_CHECK_FUNCS instead of AC_TRY_COMPILE.
+    * acconfig.h: Removed.
+    * src/pty.c: Formatting.
+
+ ChangeLog                     |    6 ++++++
+ acconfig.h                    |    2 --
+ configure.in                  |   16 +---------------
+ gnome-pty-helper/configure.in |   14 --------------
+ src/pty.c                     |   10 +++++-----
+ 5 files changed, 12 insertions(+), 36 deletions(-)
+
+commit a1c644edb6b49b1eb3d7135e9a69181e2ad18ce7
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Wed Sep 11 20:36:00 2002 +0000
+
+    Added check for socket library and SendMsg check. Added this file with a
+    
+    2002-09-11 Brian Cameron <Brian Cameron sun com>
+        * configure.in: Added check for socket library and SendMsg
+        check.
+        * acconfig.h: Added this file with a HAVE_SENDMSG definition.
+        * gnome-pty-helper/configure.in: Added checks needed for the
+        source code, including the SendMsg check.
+        * src/pty.c: Corrected _vte_pty_pipe_open so it works on
+        Solaris.
+        *src/vte.c: Made some speed improvements so vte_invalidate_cells
+        is not called for every character in the while loop in
+        vte_process_incoming, but only once when the while loop is done.
+
+ ChangeLog                     |   12 +++++++
+ acconfig.h                    |    2 +
+ autogen.sh                    |   12 +++---
+ configure.in                  |   16 +++++++++
+ gnome-pty-helper/configure.in |   24 +++++++++++++-
+ src/pty.c                     |   70 ++++++++++++++++++++++++++++-------------
+ src/vte.c                     |   63 +++++++++++++++++--------------------
+ 7 files changed, 136 insertions(+), 63 deletions(-)
+
+commit fb18be14fc9bd16b06a2d2963476d28678971fad
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 20:00:51 2002 +0000
+
+    Update from libzvt CVS. Fix some automake breakage.
+    
+    * gnome-pty-helper: Update from libzvt CVS.
+    * python/Makefile.am: Fix some automake breakage.
+
+ ChangeLog                           |    4 +++
+ gnome-pty-helper/Makefile.am        |    3 ++
+ gnome-pty-helper/README             |    8 +++---
+ gnome-pty-helper/configure.in       |    1 +
+ gnome-pty-helper/gnome-pty-helper.c |   44 +++++++++++-----------------------
+ gnome-pty-helper/gnome-utmp.c       |   41 +++++++++++++++++++------------
+ python/Makefile.am                  |    2 +-
+ vte.spec                            |    5 +++-
+ 8 files changed, 56 insertions(+), 52 deletions(-)
+
+commit fcd1b81f7c66e0712d089ce3c19377f29217c647
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 19:12:18 2002 +0000
+
+    Fix my broken merge of Jacob's patch to make inability to build python
+    
+    * python/Makefile.am: Fix my broken merge of Jacob's patch to make inability to
+       build python modules non-fatal.
+
+ ChangeLog          |    4 ++++
+ Makefile.am        |    2 +-
+ python/Makefile.am |    3 ++-
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+commit 8668fb77303cf91fa2f2b87a49db2dc412079934
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 06:34:27 2002 +0000
+
+    build fixes
+
+ Makefile.am                 |    2 +-
+ autogen.sh                  |    7 ++++
+ gnome-pty-helper/autogen.sh |   71 -------------------------------------------
+ 3 files changed, 8 insertions(+), 72 deletions(-)
+
+commit 2149ce6c7878cb4161f882c15d29e6dc68e182a0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 11 06:10:47 2002 +0000
+
+    Skip lookups for padding information if we're pretty sure we're using a
+    
+    * src/vte.c: Skip lookups for padding information if we're pretty sure we're
+       using a monospaced font.
+    * src/vte.c: Fix from Brian Cameron for uninitialized GError in
+       vte_wc_from_unichar().
+    * src/interpret.c, src/iso2022.c, src/pty.c, src/ring.h, src/table.c,
+       src/table.h, src/trie.c, src/vte.c, src/vteaccess.c: Signed/unsigned
+       int/size_t/gsize and pointer typecast warning fixes from Brian Cameron.
+    * src/vte.c: Avoid invalidating the cursor in the cursor blink timeout unless
+       we have focus.
+    * src/pty.c, src/pty.h: Add vte_pty_close() and vte_pty_open_with_logging(),
+       breaking the ABI but not the existing API.
+    * src/vte.c, src/vte.h: Add vte_terminal_fork_logged_command(), breaking the
+       ABI but not the existing API.
+    * gnome-pty-helper/*: Swallow the pty helper bits of gnome-libs, but install
+       into $pkglibdir instead of $sbindir so that existing packages don't
+       suddenly start breaking.
+    * src/termcap.c(_vte_termcap_find_string_length): Fix signature to match the
+       declaration in termcap.h.  From patch by Jacob Berkman.
+    * configure.in: Add $X_PRE_LIBS to the front of $X_LIBS, -lX11 and $X_EXTRA_LIBS
+       to the end of $X_LIBS.  Remove some cruftiness and set CPPFLAGS when
+       checking for Xft.  Check for the existence of wchar.h, because it might
+       not exist.  Use an automake conditional to make compilation of the
+       Python bindings non-critical.  From patch by Jacob Berkman.
+    * src/pty.c: Silence compiler warning when exec() fails.  From patch by Jacob
+       Berkman.
+    * src/interpret.c, src/vte.c: Stop including langinfo.h since we don't call
+       nl_langinfo() any more.  Adapted from patch by Jacob Berkman.
+    * src/caps.c: Fill in a couple of missing initializers.
+    * src/vte.c, src/vte.h: Add accessor functions for use in language bindings,
+       breaking the ABI but not the API.
+    * python/vte.defs: Add defs for the new accessor functions.
+    * python/vte-demo.py: Add a scrollbar to the sample window, handle more of the
+       options the C version handles.  Stop expecting additional arguments with
+       a signal that doesn't include any.
+    * python/Makefile.am: We only have one target, so don't bother with
+       target-specific primaries if we can avoid it (#92252).
+    * vte.pc.in: Note build dependencies on ATK, Pango, and PangoX.
+
+ ChangeLog                              |   47 ++-
+ HACKING                                |    5 +-
+ Makefile.am                            |    2 +-
+ NEWS                                   |    8 +
+ README                                 |    2 +-
+ configure.in                           |   88 +++--
+ doc/reference/Makefile.am              |   13 +-
+ doc/reference/tmpl/vte-unused.sgml     |  576 ------------------------
+ doc/reference/tmpl/vte.sgml            |   81 ++++
+ doc/reference/vte-sections.txt         |   10 +
+ gnome-pty-helper/AUTHORS               |    4 +
+ gnome-pty-helper/COPYING               |  481 ++++++++++++++++++++
+ gnome-pty-helper/Makefile.am           |   13 +
+ NEWS => gnome-pty-helper/NEWS          |    0
+ gnome-pty-helper/README                |    4 +
+ gnome-pty-helper/acinclude.m4          |  243 ++++++++++
+ gnome-pty-helper/autogen.sh            |   71 +++
+ gnome-pty-helper/configure.in          |   17 +
+ gnome-pty-helper/gnome-login-support.c |  329 ++++++++++++++
+ gnome-pty-helper/gnome-login-support.h |   38 ++
+ gnome-pty-helper/gnome-pty-helper.c    |  760 ++++++++++++++++++++++++++++++++
+ gnome-pty-helper/gnome-pty.h           |   21 +
+ gnome-pty-helper/gnome-utmp.c          |  348 +++++++++++++++
+ po/da.po                               |   42 +-
+ po/de.po                               |   42 +-
+ po/fr.po                               |   42 +-
+ po/nl.po                               |   42 +-
+ po/no.po                               |   42 +-
+ po/pt_BR.po                            |   42 +-
+ po/sv.po                               |   42 +-
+ po/vi.po                               |   42 +-
+ python/Makefile.am                     |   15 +-
+ python/vte-demo.py                     |   48 ++-
+ python/vte.defs                        |   73 +++-
+ src/Makefile.am                        |   46 +-
+ src/caps.c                             |    6 +-
+ src/interpret.c                        |    9 +-
+ src/iso2022.c                          |   12 +-
+ src/pty.c                              |  509 +++++++++++++++++++---
+ src/pty.h                              |    9 +
+ src/reaper.c                           |    3 +
+ src/ring.h                             |    2 +-
+ src/table.c                            |   40 +-
+ src/table.h                            |    2 +-
+ src/termcap.c                          |   16 +-
+ src/trie.c                             |    8 +-
+ src/vte.c                              |  408 +++++++++++++-----
+ src/vte.h                              |   19 +
+ src/vteaccess.c                        |    4 +-
+ src/vteapp.c                           |    9 +
+ vte.pc.in                              |    2 +-
+ vte.spec                               |   15 +-
+ 52 files changed, 3706 insertions(+), 1046 deletions(-)
+
+commit 8b212c6c4399fb2cf07cd6bb95eac17a6b790297
+Author: Jacob Berkman <jacob ximian com>
+Date:   Wed Sep 11 01:10:32 2002 +0000
+
+    remove es until the file really gets added. also it wasn't added
+    
+    2002-09-10  Jacob Berkman  <jacob ximian com>
+    
+       * configure.in (ALL_LINGUAS: remove es until the file really gets
+       added.  also it wasn't added alphabetically
+
+ ChangeLog    |    5 +++++
+ configure.in |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+commit 60eaadcd1b176228a08fec0764796f72582aaeda
+Author: Pablo Gonzalo del Campo <pablodc bigfoot com>
+Date:   Wed Sep 11 00:48:05 2002 +0000
+
+    Added "es" to ALL_LINGUAS
+    
+    2002-09-10 Pablo Gonzalo del Campo <pablodc bigfoot com>
+    
+            * configure.in: Added "es" to ALL_LINGUAS
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit fade1f34b072b8444b75dd4ca7418f50a28e25ac
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 20:44:58 2002 +0000
+
+    fix for building when builddir != srcdir
+    
+    * doc/reference/Makefile.am, doc/reference/vte.types: fix for building when
+       builddir != srcdir
+
+ doc/reference/Makefile.am |    2 +-
+ doc/reference/vte.types   |    6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 172f0bc4ce4c5bd5e0784c6422103cf4dba2bb43
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 20:34:46 2002 +0000
+
+    - 0.8.19
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit a1aa6e995771aedd61bbbcc304d12fc5999a0ff0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 19:37:53 2002 +0000
+
+    2002-09-05 nalin prefix library-internal interfaces with underscores so
+    
+    2002-09-05 nalin
+       * src/caps.c, src/caps.h, src/debug.c, src/debug.h, src/interpret.c,
+       src/iso2022.c, src/iso2022.h, src/pty.c, src/reaper.c, src/ring.c,
+       src/ring.h, src/table.c, src/table.h, src/termcap.c, src/termcap.h,
+       src/trie.c, src/trie.h, src/utf8echo.c, src/vte.c, src/vteaccess.c,
+       src/vteapp.c: prefix library-internal interfaces with underscores so
+       that gtk-doc doesn't guess they're public.
+       * src/vte.c: return FALSE from focus-in/focus-out/expose handlers.
+
+ ChangeLog                          |    9 +
+ doc/reference/tmpl/caps.sgml       |   66 ----
+ doc/reference/tmpl/debug.sgml      |   50 ---
+ doc/reference/tmpl/iso2022.sgml    |   38 --
+ doc/reference/tmpl/marshal.sgml    |   16 -
+ doc/reference/tmpl/ring.sgml       |  155 --------
+ doc/reference/tmpl/table.sgml      |   77 ----
+ doc/reference/tmpl/termcap.sgml    |   79 ----
+ doc/reference/tmpl/trie.sgml       |   76 ----
+ doc/reference/tmpl/vte-unused.sgml |  340 ++++++++++++++++
+ doc/reference/vte-sections.txt     |   47 ---
+ src/caps.c                         |   30 +-
+ src/caps.h                         |   22 +-
+ src/debug.c                        |   32 +-
+ src/debug.h                        |    4 +-
+ src/interpret.c                    |   68 ++--
+ src/iso2022.c                      |  216 ++++++------
+ src/iso2022.h                      |   13 +-
+ src/pty.c                          |   26 +-
+ src/reaper.c                       |    2 +-
+ src/ring.c                         |   66 ++--
+ src/ring.h                         |   30 +-
+ src/table.c                        |  324 ++++++++--------
+ src/table.h                        |   26 +-
+ src/termcap.c                      |  146 ++++----
+ src/termcap.h                      |   26 +-
+ src/trie.c                         |  247 ++++++------
+ src/trie.h                         |   30 +-
+ src/utf8echo.c                     |    2 +-
+ src/vte.c                          |  748 ++++++++++++++++++------------------
+ src/vteaccess.c                    |   16 +-
+ src/vteapp.c                       |    2 +-
+ vte.spec                           |    2 +-
+ 33 files changed, 1389 insertions(+), 1642 deletions(-)
+
+commit e9c9661c32bef562f18ba5b0118d3a95d1bd9390
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 05:59:15 2002 +0000
+
+    add giant warnings about how these headers define library-internal
+    
+    * src/caps.h, src/debug.h, src/iso2022.h, src/marshal.h, src/ring.h,
+       src/table.h, src/termcap.h, src/trie.h: add giant warnings about how
+       these headers define library-internal interfaces.
+    * vte.spec: 0.8.18
+
+ ChangeLog                    |    6 ++++
+ doc/reference/tmpl/ring.sgml |   32 ++++++++++++++++-------
+ po/da.po                     |   57 ++++++++++++++++++++---------------------
+ po/de.po                     |   57 ++++++++++++++++++++---------------------
+ po/fr.po                     |   57 ++++++++++++++++++++---------------------
+ po/nl.po                     |   57 ++++++++++++++++++++---------------------
+ po/no.po                     |   48 ++++++++++++++++++-----------------
+ po/pt_BR.po                  |   49 ++++++++++++++++++-----------------
+ po/sv.po                     |   57 ++++++++++++++++++++---------------------
+ po/vi.po                     |   45 ++++++++++++++++-----------------
+ src/caps.h                   |    2 +
+ src/debug.h                  |    2 +
+ src/iso2022.h                |    2 +
+ src/ring.h                   |    2 +
+ src/table.h                  |    2 +
+ src/termcap.h                |    2 +
+ src/trie.h                   |    2 +
+ vte.spec                     |    7 ++++-
+ 18 files changed, 260 insertions(+), 226 deletions(-)
+
+commit a2ba14a218070385765aff572ff9b052e5f78e88
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 05:48:25 2002 +0000
+
+    - remove items from pkgincludedir that are subject to change
+
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit c2828bb1eb0986275d27496af2ed52caf199cb51
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 05:48:06 2002 +0000
+
+    - remove items from ToC that are subject to change
+
+ doc/reference/vte-docs.sgml |    5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+commit 5d694faf7d2c3fb490ffc135f3ffc4ab3130b19c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Sep 5 05:42:13 2002 +0000
+
+    2002-09-05 nalin first pass at writing documentation fix
+    
+    2002-09-05 nalin
+       * docs/reference: first pass at writing documentation
+       * src/termcap.c: fix how'd-that-ever-work in vte_termcap_strip(), patch
+       from Brian Cameron.  Take \\e as an alias for \\E, which is already
+       an alias for Escape.
+       * src/vte.c(vte_terminal_get_cursor): Return an absolute cursor position
+       instead of a relative position.
+
+ ChangeLog                          |    8 +
+ Makefile.am                        |    2 +-
+ configure.in                       |   53 +++
+ doc/Makefile.am                    |    1 +
+ doc/reference/Makefile.am          |  187 ++++++++++
+ doc/reference/tmpl/caps.sgml       |   66 ++++
+ doc/reference/tmpl/debug.sgml      |   50 +++
+ doc/reference/tmpl/iso2022.sgml    |   38 ++
+ doc/reference/tmpl/marshal.sgml    |   16 +
+ doc/reference/tmpl/pty.sgml        |   54 +++
+ doc/reference/tmpl/reaper.sgml     |   43 +++
+ doc/reference/tmpl/ring.sgml       |  143 ++++++++
+ doc/reference/tmpl/table.sgml      |   77 ++++
+ doc/reference/tmpl/termcap.sgml    |   79 +++++
+ doc/reference/tmpl/trie.sgml       |   76 ++++
+ doc/reference/tmpl/vte-unused.sgml |  236 +++++++++++++
+ doc/reference/tmpl/vte.sgml        |  683 ++++++++++++++++++++++++++++++++++++
+ doc/reference/tmpl/vteaccess.sgml  |   31 ++
+ doc/reference/vte-docs.sgml        |   31 ++
+ doc/reference/vte-sections.txt     |  153 ++++++++
+ doc/reference/vte.types            |   10 +
+ src/caps.c                         |   10 +
+ src/caps.h                         |   12 +-
+ src/debug.h                        |    2 +-
+ src/iso2022.h                      |    1 -
+ src/pty.c                          |   36 ++
+ src/reaper.c                       |    5 +
+ src/ring.c                         |   58 +++-
+ src/ring.h                         |   12 +-
+ src/table.c                        |    2 +-
+ src/termcap.c                      |   74 ++++-
+ src/trie.c                         |    2 +-
+ src/vte.c                          |  674 +++++++++++++++++++++++++++++++----
+ src/vte.h                          |   34 +-
+ src/vteaccess.c                    |   12 +-
+ src/vteaccess.h                    |   10 +-
+ 36 files changed, 2866 insertions(+), 115 deletions(-)
+
+commit 590ba538b7fa77509035453bc8a0e4d6f276bfc1
+Author: jacob berkman <jacob ximian com>
+Date:   Wed Sep 4 18:36:46 2002 +0000
+
+    only compile the FC_HINT_STYLE part if FC_HINT_STYLE is defined
+    
+    2002-09-04  jacob berkman  <jacob ximian com>
+    
+       * src/vte.c (vte_default_substitute): only compile the FC_HINT_STYLE
+       part if FC_HINT_STYLE is defined
+
+ ChangeLog |    5 +++++
+ src/vte.c |    2 ++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 08be108d9922a60f01986fa57c593f90c63ebffb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Sep 4 16:43:11 2002 +0000
+
+    Add missing fontconfig.h include, spotted by Jacob Berkman.
+    
+    * src/vte.c: Add missing fontconfig.h include, spotted by Jacob Berkman.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    3 +++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 2a76bdc27031deba65d205199f4aad7d3babc1a3
+Author: Brian Cameron <Brian Cameron sun com>
+Date:   Wed Sep 4 08:33:08 2002 +0000
+
+    Added stropts.h check for Solaris. Do not send data to the slave if the
+    
+    
+    2002-09-04 Brian Cameron <Brian Cameron sun com>
+        * configure.in: Added stropts.h check for Solaris.
+        * src/vte.c: Do not send data to the slave if the length is zero.
+        Some shells on Solaris do not handle this well.
+        * src/pty.c: Added ptem/ldterm/ttcompat ioctls so VTE will work
+        on Solaris.
+
+ ChangeLog    |    7 +++++++
+ configure.in |    1 +
+ src/pty.c    |   21 +++++++++++++++++++++
+ src/vte.c    |    2 +-
+ 4 files changed, 30 insertions(+), 1 deletions(-)
+
+commit f0953feec5ff4b6cb5e0a93f4049cac1cb78098d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 3 22:35:37 2002 +0000
+
+    Avoid double color deallocations with Xft.
+    
+    * src/vte.c: Avoid double color deallocations with Xft.
+
+ ChangeLog |    3 +++
+ src/vte.c |   34 ++++++++++++++++++++++------------
+ vte.spec  |    5 ++++-
+ 3 files changed, 29 insertions(+), 13 deletions(-)
+
+commit 27721b50e75f6d75fabf685270ad519a91bbabf7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 3 22:05:13 2002 +0000
+
+    Handle color allocation failures with Xft better. Clean up typedef
+    
+    * src/vte.c: Handle color allocation failures with Xft better.
+    * src/vte.h: Clean up typedef declarations.
+
+ ChangeLog |    8 +++++++-
+ src/vte.c |   12 +++++++-----
+ src/vte.h |   15 ++++++++++-----
+ vte.spec  |    5 ++++-
+ 4 files changed, 28 insertions(+), 12 deletions(-)
+
+commit c217b1f52f2daeaace161ed69daaeec799f2ca0b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Sep 3 19:10:31 2002 +0000
+
+    Modify the child-exited signal to pass signed ints and an unmodified exit
+    
+    * src/marshal.list, src/reaper.c, src/reaper.h, src/vte.c: Modify the
+       child-exited signal to pass signed ints and an unmodified exit status,
+       allowing the callback to check for normal/abnormal exit status.
+
+ ChangeLog        |    5 +++++
+ src/marshal.list |    1 +
+ src/reaper.c     |   19 ++++++-------------
+ src/vte.c        |    2 +-
+ 4 files changed, 13 insertions(+), 14 deletions(-)
+
+commit da6d49171075c60a7c81f94317651e9230eb58c3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 2 23:25:28 2002 +0000
+
+    - cleanups - don't invalidate subwindows
+    
+    - cleanups
+    - don't invalidate subwindows
+
+ src/vte.c |   31 +++++++++++++++++++------------
+ vte.spec  |    5 ++++-
+ 2 files changed, 23 insertions(+), 13 deletions(-)
+
+commit 15258667b28664dd603e2a7fa2a8861eb14645e8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Sep 2 20:19:47 2002 +0000
+
+    Don't send zero-length strings to the child -- it may not be able to cope
+    
+    * src/vte.c: Don't send zero-length strings to the child -- it may not be able
+       to cope properly.  Spotted by Brian Cameron.
+    * src/vte.c: Handle cursor exposes correctly for multicolumn characters, no
+       matter which cell the cursor is in.  Fix autoscrolling boundary checks
+       for when allocation.y != 0.
+
+ ChangeLog       |    9 ++++
+ src/Makefile.am |    2 +-
+ src/vte.c       |  145 +++++++++++++++++++++++++++++++++++++------------------
+ 3 files changed, 107 insertions(+), 49 deletions(-)
+
+commit d1948e0c98eca4162204c20dba98af2032510d22
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 22:35:58 2002 +0000
+
+    Wrap correctly to avoid screwing up multicolumn characters.
+    
+    * src/vte.c(vte_terminal_insert_char): Wrap correctly to avoid screwing up
+       multicolumn characters.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    5 +++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit fc877576767cde785d918dbf1e9025c76de3958d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 21:57:43 2002 +0000
+
+    Get smarter about when it's necessary to start messing with our
+    
+    * src/vte.c: Get smarter about when it's necessary to start messing with our
+       adjustments (Red Hat #73091).  Change the way we clear the screen so
+       that all of the contents of the current screen become scrollback data.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   41 +++++++++++++++++++++--------------------
+ vte.spec  |    5 ++++-
+ 3 files changed, 31 insertions(+), 21 deletions(-)
+
+commit 90fefc0f6506e60d0484c541b202ab73c0d6eec0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 21:04:16 2002 +0000
+
+    Register VteTerminalEraseBinding with GObject as an enum. Update. Ignore
+    
+    * src/vte.c: Register VteTerminalEraseBinding with GObject as an enum.
+    * python/vte.defs: Update.
+    * python/vte.overrides: Ignore vte_terminal_get_text_range().
+
+ ChangeLog           |    6 ++++
+ python/vte.defs     |   77 +++++++++++++++++++++++++++++++++++++++++++++++---
+ python/vte.override |    1 +
+ src/vte.c           |   32 +++++++++++++++++++--
+ src/vte.h           |   15 ++++++---
+ 5 files changed, 118 insertions(+), 13 deletions(-)
+
+commit 4d858f5dd22e8c6054026775712c4af3ff374716
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 18:48:38 2002 +0000
+
+    Restore the focus-in/focus-out handlers -- the defaults don't quite DTRT
+    
+    * src/vte.c: Restore the focus-in/focus-out handlers -- the defaults don't
+       quite DTRT for us because they miss our im_context (#72946).  When
+       setting the cursor location for the input method, make the Y coordinate
+       relative to the window, not the scrollback buffer.  When resizing the
+       scrollback buffer, clamp the cursor to the set of possible locations,
+       not the visible locations.
+
+ ChangeLog |    8 ++++++++
+ src/vte.c |   16 +++++++++-------
+ vte.spec  |    6 +++++-
+ 3 files changed, 22 insertions(+), 8 deletions(-)
+
+commit d84edf906e33f9b7c3a9eeb626541deb98d95f68
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 15:49:45 2002 +0000
+
+    Initialize the pty master fd to -1 to avoid spurious window resizes on fd
+    
+    * src/vte.c: Initialize the pty master fd to -1 to avoid spurious window resizes
+       on fd 0.
+    * src/debug.c, src/debug.h: Add a "pty" debug message class.
+
+ ChangeLog   |    5 ++++
+ src/debug.c |    3 ++
+ src/debug.h |    1 +
+ src/pty.c   |   68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ src/vte.c   |    4 +++
+ 5 files changed, 76 insertions(+), 5 deletions(-)
+
+commit 9be0193cd59881d9ab81fd22be710026d24c12d9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 30 14:49:37 2002 +0000
+
+    Fix a how'd-that-ever-work bug (not returning anything from
+    
+    * src/iso2022.c: Fix a how'd-that-ever-work bug (not returning anything from
+       vte_iso2022_new()), spotted by Brian Cameron.
+    * configure.in: Use -Wall when building with gcc in maintainer mode.
+    * src/interpret.c, src/ring.h, src/table.c, src/trie.c, src/vte.c,
+       src/vteaccess.c: Warning cleanups.
+
+ ChangeLog       |    7 +++++++
+ configure.in    |    1 +
+ src/interpret.c |    2 +-
+ src/iso2022.c   |    1 +
+ src/ring.h      |    5 ++---
+ src/table.c     |    5 +++--
+ src/trie.c      |    4 ++--
+ src/vte.c       |   18 +++++++++---------
+ src/vteaccess.c |    8 ++++----
+ vte.spec        |    5 ++++-
+ 10 files changed, 34 insertions(+), 22 deletions(-)
+
+commit 3993c17be8839f7adda132270e8d9238d9f49b95
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 29 20:19:51 2002 +0000
+
+    Clean up bookkeeping for mouse autoscrolling and adjustment change
+    
+    * src/vte.c: Clean up bookkeeping for mouse autoscrolling and adjustment change
+       notifications.  Reset the scrolling and insertion deltas when clearing
+       the history.
+    * src/interpret.c: Don't dump data on incomplete conversion errors, which we're
+       going to retry anyway.
+    * src/iso2022.txt: Add iso-2022-kr examples (no workee -- uses GR).
+    * src/vte.c, src/vte.h: Add vte_terminal_copy_primary and
+       vte_terminal_paste_primary(), because I really want to let profterm
+       decide default values for key bindings.
+
+ ChangeLog       |   17 ++++++++++++-
+ src/interpret.c |   23 ++++++++++-------
+ src/iso2022.txt |    9 ++++---
+ src/vte.c       |   73 +++++++++++++++++++++++++++++++++++++++----------------
+ src/vte.h       |    2 +
+ vte.spec        |    6 ++++-
+ 6 files changed, 94 insertions(+), 36 deletions(-)
+
+commit b4069ef78a1cce43ad60dde14f7c298c85de2fb9
+Author: Gustavo Noronha Silva <gns src gnome org>
+Date:   Wed Aug 28 21:18:09 2002 +0000
+
+    new translation, by "Alexandre Folle de Menezes" <afmenez terra com br>
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/pt_BR.po  |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 126 insertions(+), 1 deletions(-)
+
+commit 00b80b8a6ed76d1242eef490707a6f4f16aebdff
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 28 04:16:48 2002 +0000
+
+    Stop autoscrolling on button release.
+    
+    * src/vte.c: Stop autoscrolling on button release.
+
+ ChangeLog |    2 ++
+ src/vte.c |    5 +++++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit ac4cf6cdecbd7953b05c3daf2ab7f6614e5a83fe
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 28 04:03:31 2002 +0000
+
+    When autoscrolling, clamp the new boundaries to what the user can see.
+    
+    * src/vte.c: When autoscrolling, clamp the new boundaries to what the user can
+       see.
+
+ ChangeLog |    3 +++
+ src/vte.c |    3 +++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 882aa116b2b8536693c5dfb38df17be7d9eb65df
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 28 03:46:46 2002 +0000
+
+    Implement autoscroll (Red Hat #70481).
+    
+    * src/vte.c: Implement autoscroll (Red Hat #70481).
+
+ ChangeLog |    2 +
+ src/vte.c |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ vte.spec  |    4 ++-
+ 3 files changed, 113 insertions(+), 4 deletions(-)
+
+commit 461fa282a5a5d757ce840c68efb368e5fc7c1f2e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 28 02:54:37 2002 +0000
+
+    Only perform cr-lf substitutions when pasting text, not when inputting
+    
+    * src/vte.c: Only perform cr-lf substitutions when pasting text, not when
+       inputting from a live user (Red Hat #72639).  Bind GDK_ISO_Left_Tab to
+       kB.  Formatting changes.
+    * termcaps/xterm: Bind kB to back-tab (Red Hat #70340).
+
+ ChangeLog      |    8 +-
+ src/vte.c      | 3057 ++++++++++++++++++++++++++++----------------------------
+ termcaps/xterm |    4 +-
+ vte.spec       |    5 +-
+ 4 files changed, 1542 insertions(+), 1532 deletions(-)
+
+commit cd2aefd669762f35a2a0e1b19cc5cc6358d89237
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 27 21:10:25 2002 +0000
+
+    Don't tamper with the scrolling offsets -- they're updated when we handle
+    
+    * src/vte.c: Don't tamper with the scrolling offsets -- they're updated when we
+       handle adjustment_changed notifications.  Scroll instead of just moving
+       the cursor down when soft-wrapping to the next line.  Avoid emitting
+       adjustment_changed when only the value has changed, likewise for the
+       value and the other fields of the adjustment.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   49 +++++++++++++++++++++++--------------------------
+ vte.spec  |    5 ++++-
+ 3 files changed, 34 insertions(+), 27 deletions(-)
+
+commit f867bb1dc01cc507daf43081fa844f04871bce9b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 27 07:11:58 2002 +0000
+
+    Keep cursor position and scrolling offsets from going wonky when you
+    
+    * src/vte.c: Keep cursor position and scrolling offsets from going wonky when
+       you resize, especially on the alternate screen.  Suppress duplicate
+       adjustment_changed notifications.
+    * src/vteapp.c: Set the MIN_SIZE geometry hints so that we can resize to
+       unreasonably-small dimensions.
+    * src/ring.c, src/ring.h: Add vte_ring_new_with_delta().
+
+ ChangeLog    |    8 +++
+ src/ring.c   |   14 ++++-
+ src/ring.h   |   10 +++-
+ src/vte.c    |  187 ++++++++++++++++++++++++++++++++++++++++++++--------------
+ src/vteapp.c |    6 ++-
+ vte.spec     |    8 ++-
+ 6 files changed, 182 insertions(+), 51 deletions(-)
+
+commit 7145a6fbf847d0b4d6329dfd4f2698167fd206d5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 26 19:49:21 2002 +0000
+
+    Add padding spaces after full lines as well -- spotted by both notting and
+    
+    * src/vte.c: Add padding spaces after full lines as well -- spotted by both
+       notting and pjones.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+commit ce3af3d0451b7ed576c6fabaa9e553b284441b02
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 26 16:41:15 2002 +0000
+
+    Don't deadlock when substitution fails, spotted by msw.
+    
+    * src/vte.c: Don't deadlock when substitution fails, spotted by msw.
+
+ ChangeLog |    3 +++
+ src/vte.c |   18 ++++++++++++------
+ vte.spec  |    5 ++++-
+ 3 files changed, 19 insertions(+), 7 deletions(-)
+
+commit 364df6aba1a1e982d9c9e7d8c6bc3bd93af668e4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 26 14:11:53 2002 +0000
+
+    If GDK_USE_XFT is set, check the value of GDK_USE_XFT, not VTE_USE_XFT.
+    
+    * src/vte.c: If GDK_USE_XFT is set, check the value of GDK_USE_XFT, not
+       VTE_USE_XFT.  Spotted by hp.
+
+ ChangeLog |    4 ++++
+ src/vte.c |    2 +-
+ vte.spec  |    5 ++++-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 8aacadebd47cc66a019a8ed2fee59041a6e9c0d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Aug 25 23:27:56 2002 +0000
+
+    Heed the reverse-video setting when painting character cells again. Make
+    
+    * src/vte.c: Heed the reverse-video setting when painting character cells again.
+       Make selection and matching coordinates global, fixing the selecting-
+       while-scrolling case.  Prevent overdraws into the padding area on the
+       right.
+
+ ChangeLog |    8 ++-
+ src/vte.c |  210 ++++++++++++++++++++++++++++++++++++++-----------------------
+ src/vte.h |    9 +++-
+ vte.spec  |    5 +-
+ 4 files changed, 151 insertions(+), 81 deletions(-)
+
+commit c3f69ddbfef582dd5b59573871c402d7b4ce6940
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Aug 25 19:48:05 2002 +0000
+
+    2002-08-25 nalin Make nd() move right but not wrap -- according to Strang
+    
+    2002-08-25 nalin
+       * src/vte.c:  Make nd() move right but not wrap -- according to Strang
+       it's undefined, but xterm doesn't wrap it.  Separate do/DO from sf/SF
+       and up/UP from sr/SR, because the scrolling behavior is supposed to be
+       different.  Add support for decset/decreset 7 (wraparound mode) and
+       1051 (Sun keyboard).  Add support for DECALN.  Remove some type checks
+       from run-time which the compiler can catch with certainty.
+
+ ChangeLog  |   10 ++-
+ src/caps.c |    2 +
+ src/vte.c  |  394 +++++++++++++++++++++++++++++++++---------------------------
+ vte.spec   |    6 +-
+ 4 files changed, 233 insertions(+), 179 deletions(-)
+
+commit 3fe0da425a461c8110d95144c8382a495fe1344a
+Author: Kjartan Maraas <kmaraas gnome org>
+Date:   Sat Aug 24 23:18:40 2002 +0000
+
+    Added Norwegian (no) to ALL_LINGUAS.
+    
+    2002-08-25  Kjartan Maraas  <kmaraas gnome org>
+    
+       * configure.in: Added Norwegian (no) to ALL_LINGUAS.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 731f5273482b5d58a0cefe4bc3b439ac66c4a4fa
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sat Aug 24 23:17:39 2002 +0000
+
+    Forgot the ChangeLog
+
+ po/ChangeLog |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 1aa5d2400a32ed572f580dfdb5e53216e78d06f1
+Author: Kjartan Maraas <kmaraas src gnome org>
+Date:   Sat Aug 24 23:17:13 2002 +0000
+
+    New translation
+
+ po/no.po |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 114 insertions(+), 0 deletions(-)
+
+commit 1e7689b7d9f7e4156d4e9e4c866f640d92be0108
+Author: Pablo Saratxaga <pablo src gnome org>
+Date:   Sat Aug 24 16:14:55 2002 +0000
+
+    Added Vietnamese file
+
+ ChangeLog    |    2 +
+ configure.in |    2 +-
+ po/ChangeLog |    4 ++
+ po/vi.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 123 insertions(+), 1 deletions(-)
+
+commit 92f262a96d7793833150d7159801572e966d874a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 23:33:56 2002 +0000
+
+    Whoa, back that out.
+
+ configure.in |    6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+commit 3c6d81bf06becda3f9ab005c7310b2343588115e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 23:27:31 2002 +0000
+
+    Bind ENQ to "return-terminal-status". Fix an off-by-one which incorrectly
+    
+    * src/caps.c: Bind ENQ to "return-terminal-status".
+    * src/iso2022.c: Fix an off-by-one which incorrectly triggered an assertion.
+    * src/vte.c: Implement send-primary/secondary-device-attributes.  Bind
+       shift+insert to "paste PRIMARY".  Guard against NULL window/icon title
+       when telling the child app what they are.
+
+ ChangeLog     |    7 ++++
+ configure.in  |    6 +++
+ src/caps.c    |    3 ++
+ src/iso2022.c |    4 +-
+ src/vte.c     |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++------
+ vte.spec      |    2 +-
+ 6 files changed, 111 insertions(+), 15 deletions(-)
+
+commit e0815136a8d8ec40b3d64cca372199f50d3d2bad
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 20:50:13 2002 +0000
+
+    Set geometry hints using the initial font setup.
+    
+    * src/vteapp.c: Set geometry hints using the initial font setup.
+
+ ChangeLog    |    2 ++
+ src/vteapp.c |    1 +
+ 2 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 8d4157d627e109caf00009f7a7468c3d8fe97729
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 20:19:59 2002 +0000
+
+    0.8.3
+
+ vte.spec |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit d7144c30e3481e893677d2653b48c2168c6a0bc7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 20:19:47 2002 +0000
+
+    Make use of the visible bell a separate option from use of the audible
+    
+    * src/vte.c, src/vte.h: Make use of the visible bell a separate option from
+       use of the audible bell, allowing both/neither to be used.  Open fonts
+       right away again -- profterm reads the metrics right after calling
+       set_font(), so we have to open fonts ASAP.  Rework the Xft/Pango/Xlib
+       decision code to be more consistent.  Watch for style changes and reset
+       our font to the new style's font when we're already using the old
+       style's font.
+
+ ChangeLog       |    8 ++
+ src/Makefile.am |    2 +-
+ src/vte.c       |  322 +++++++++++++++++++++++++++++--------------------------
+ src/vte.h       |    3 +
+ 4 files changed, 184 insertions(+), 151 deletions(-)
+
+commit 72c9f7ef1fa08f27e9ab7fcbaef90b938d7ff4ca
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 02:31:31 2002 +0000
+
+    The unrealize/realize test, from msw.
+
+ python/unrealize.py |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 51 insertions(+), 0 deletions(-)
+
+commit 80cbf7e0367fe293c0b62a6412d5e068022e09af
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 22 02:02:40 2002 +0000
+
+    Take a vte_table as an additional argument, and don't mess with text
+    
+    * src/iso2022.c(vte_iso2022_substitute): Take a vte_table as an additional
+       argument, and don't mess with text that's part of a control sequence,
+       fixing weird behaviors when we got control sequences in the middle of
+       shift-out text.
+    * src/table.c(vte_table_match): Speed up for the no-arguments-requested
+       case, which just became much more common.
+
+ ChangeLog       |    6 +
+ src/Makefile.am |    4 +-
+ src/interpret.c |    5 +-
+ src/iso2022.c   |  549 +++++++++++++++++++++++++++++--------------------------
+ src/iso2022.h   |    3 +-
+ src/table.c     |   14 +--
+ src/vte.c       |    3 +-
+ vte.spec        |    5 +-
+ 8 files changed, 311 insertions(+), 278 deletions(-)
+
+commit 55bccdf14d96799d421659b1910213d3c1a2733b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 21 21:53:27 2002 +0000
+
+    Cap the maximum number of characters we draw in a single call to
+    
+    * src/vte.c(vte_terminal_draw_rows): Cap the maximum number of characters we
+       draw in a single call to vte_terminal_draw_cells at a reasonable number.
+
+ ChangeLog   |    4 ++++
+ src/table.c |   11 ++++++++++-
+ src/vte.c   |   51 ++++++++++++++++++++++++++++++++++++++-------------
+ 3 files changed, 52 insertions(+), 14 deletions(-)
+
+commit 58245b99625244af4af22fd865193c7cf4419979
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 21 14:29:53 2002 +0000
+
+    Don't overwrite the original pattern pointers before freeing the old
+    
+    * src/table.c: Don't overwrite the original pattern pointers before freeing
+       the old value.
+    * src/vte.c: Use the same pango context whenever possible, to save on PangoX
+       startup time.
+
+ ChangeLog   |    7 ++++-
+ src/table.c |    3 ++
+ src/vte.c   |   90 ++++++++++++++++++++++++++++++++++++++---------------------
+ 3 files changed, 67 insertions(+), 33 deletions(-)
+
+commit d9b83cc2d545ea08a28361066cf55c5bb49433d9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 22:32:48 2002 +0000
+
+    Unref the output channel one more time when we're done sending data to the
+    
+    * src/vte.c: Unref the output channel one more time when we're done sending data
+       to the child.  Free the background data GDK property when we're finished
+       with it.  Don't retrieve the pango context when drawing unless Xft has
+       already been disabled.  Don't try to use the pango layout to draw unless
+       it's valid.  Don't try to use the XftDraw item to draw unless it's
+       valid.
+
+ ChangeLog |    7 +++++++
+ src/vte.c |   48 +++++++++++++++++++++++++++---------------------
+ 2 files changed, 34 insertions(+), 21 deletions(-)
+
+commit b8b0d88316ee6643554ad057a28fa396370f0c92
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 21:50:59 2002 +0000
+
+    Dispose of the updated substitution context properly when processing
+    
+    * src/vte.c: Dispose of the updated substitution context properly when
+       processing blocks of input text.  Spotted by Arjan van de Ven.
+
+ ChangeLog |    3 +++
+ src/vte.c |    2 ++
+ vte.spec  |    7 ++++++-
+ 3 files changed, 11 insertions(+), 1 deletions(-)
+
+commit 6fbc7fb151870b632b0d1221dbdea510b379fbc2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 21:25:53 2002 +0000
+
+    - run automake with -c
+
+ autogen.sh |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b35ab602d24d1ea54b0adafc5009de95d7db1523
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 20:55:20 2002 +0000
+
+    Debug when rows get freed. Maybe-release pango contexts after unreffing
+    
+    * src/ring.c: Debug when rows get freed.
+    * src/vte.c: Maybe-release pango contexts after unreffing layouts which refer
+       to them.  Decide on how we want to draw fonts before deciding which
+       fonts to draw, to avoid spurious font loading.  Remove output tags when
+       the output tag's callback is about to return FALSE.
+
+ ChangeLog  |    6 ++++++
+ src/ring.c |   23 ++++++++++++++++++++---
+ src/vte.c  |   41 ++++++++++++++++++++++++++++++++---------
+ 3 files changed, 58 insertions(+), 12 deletions(-)
+
+commit a5eda7347f6d4e4b6fab41682f88d8590644fb26
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 16:00:11 2002 +0000
+
+    Don't leak the hintstyle and rgba settings. Patch from Arjan van de Ven.
+    
+    * src/vte.c: Don't leak the hintstyle and rgba settings.  Patch from Arjan van
+       de Ven.  Free PangoX contexts when we're done with them because we get
+       a new one every time, spotted by Arjan van de Ven.
+
+ ChangeLog |    4 +++
+ src/vte.c |   83 ++++++++++++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 62 insertions(+), 25 deletions(-)
+
+commit 6f7f5de82c2e11d8fbe1e496cd3cd5b2d04a0d2e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 20 04:47:32 2002 +0000
+
+    Load fonts just-in-time to avoid spurious reloads. Don't override the
+    
+    * src/vte.c: Load fonts just-in-time to avoid spurious reloads.  Don't override
+       the focus_in and focus_out event handlers -- the defaults DTRT.
+    * src/debug.c, src/debug.h: Add a RING debug class.
+    * src/iso2022.c: Handle override maps which don't affect the font palette
+       correctly, resetting at newlines and escape marks.  Process bogon data
+       correctly.
+    * src/iso2022.txt: Add some sample text.
+    * src/vte.c: Fixup some fontconfig/Xft mixups.  Set the hint style instead of
+       hinting when reading the GTK hint style setting (spotted by katzj and
+       otaylor).
+
+ ChangeLog       |   12 +-
+ po/da.po        |   42 ++--
+ po/de.po        |   62 +++---
+ po/fr.po        |   47 ++--
+ po/nl.po        |   64 +++---
+ po/sv.po        |   42 ++--
+ src/debug.c     |    3 +
+ src/debug.h     |    1 +
+ src/interpret.c |    9 +
+ src/iso2022.c   |   73 +++++-
+ src/iso2022.txt |    6 +
+ src/ring.c      |   10 +-
+ src/vte.c       |  733 +++++++++++++++++++++++++++++++------------------------
+ vte.spec        |    7 +-
+ 14 files changed, 647 insertions(+), 464 deletions(-)
+
+commit 56a7bbf39468f9263a52fdda5e330a61bbdf5810
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 19 23:30:35 2002 +0000
+
+    Add sample iso-2002 escaped text.
+
+ src/iso2022.txt |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 45ccd9df232a04ddb126a897179966c03a5381f7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 19 23:01:28 2002 +0000
+
+    Fixup some fontconfig/Xft mixups. Set the hint style instead of hinting
+    
+    * src/vte.c: Fixup some fontconfig/Xft mixups.  Set the hint style instead of
+       hinting when reading the GTK hint style setting.
+
+ ChangeLog |    3 +++
+ src/vte.c |   31 ++++++++++++-------------------
+ 2 files changed, 15 insertions(+), 19 deletions(-)
+
+commit 2e6daaef02f271e7f84deb7fd269c2642f16834a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 19 22:33:21 2002 +0000
+
+    Use gssize instead of ssize_t. Perform substitutions while processing. Use
+    
+    * src/vte.h, src/vte.c: Use gssize instead of ssize_t.  Perform substitutions
+       while processing.  Use PangoX contexts when we're using the PangoX
+       fontmap and when doing PangoX rendering.
+
+ ChangeLog |    5 ++
+ src/vte.c |  201 +++++++++++++++++++++++--------------------------------------
+ src/vte.h |    9 ++-
+ 3 files changed, 86 insertions(+), 129 deletions(-)
+
+commit 5b5257d4e61579590a0523d37f965dc55d6ec8c1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 19 22:27:33 2002 +0000
+
+    Add. Use unitables. Remove sequences for designating character sets.
+    
+    * src/mkunitables.sh,src/unitable.*: Add.
+    * src/iso2022.c, src/iso2022.h: Use unitables.
+    * src/caps.c: Remove sequences for designating character sets.  Switch to using
+       a second passed-in buffer for storing results in case the caller doesn't
+       want substitutions done in-place.
+    * src/interpret.c: Perform substitution.
+    * src/table.c, src/table.h: Use gssize instead of ssize_t.
+    * src/termcap.c, src/termcap.h: Use gssize instead of ssize_t.
+    * src/utf8echo.c: Use strtol, allowing users to specify code points in hex
+       format.
+
+ ChangeLog             |   11 +
+ src/Makefile.am       |   26 +-
+ src/caps.c            |   19 +-
+ src/debug.c           |    3 +
+ src/debug.h           |    1 +
+ src/interpret.c       |   62 +-
+ src/iso2022.c         |  370 +-
+ src/iso2022.h         |    3 +-
+ src/mkunitables.sh    |   39 +
+ src/table.c           |   20 +-
+ src/table.h           |    4 +-
+ src/termcap.c         |   32 +-
+ src/termcap.h         |    4 +-
+ src/unitable.CNS11643 |17712 +++++++++++++++++++++++++++++++++++++++++++++++++
+ src/unitable.GB12345  | 7549 +++++++++++++++++++++
+ src/unitable.GB2312   | 7446 +++++++++++++++++++++
+ src/unitable.JIS0201  |   66 +
+ src/unitable.JIS0208  | 6879 +++++++++++++++++++
+ src/unitable.JIS0212  | 6068 +++++++++++++++++
+ src/unitable.KSC5601  |17047 +++++++++++++++++++++++++++++++++++++++++++++++
+ src/utf8echo.c        |    4 +-
+ 21 files changed, 63206 insertions(+), 159 deletions(-)
+
+commit 8deab9f56af18d549ac438fe839e9da058e96bd6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 19 16:41:50 2002 +0000
+
+    Rename vte.py to vte-demo.py, so that having . in your PYTHONPATH doesn't
+    do odd things if you run the script from the build directory (when it's also
+    the source directory).
+
+ python/{vte.py => vte-demo.py} |    0
+ 1 files changed, 0 insertions(+), 0 deletions(-)
+
+commit ee05b8f8a7bbb426af0101c37489c7246243570e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 15 07:16:50 2002 +0000
+
+    Add.
+
+ src/iso2022.c |  679 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/iso2022.h |   38 ++++
+ 2 files changed, 717 insertions(+), 0 deletions(-)
+
+commit 46238f7fd50c4fc272f1ca5a8b5ae0aa3f7799b0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 14 19:39:36 2002 +0000
+
+    repaint the entire window to ensure that any overdraw area we're not
+    
+    * src/vte.c(vte_terminal_configure_toplevel): repaint the entire window to
+       ensure that any overdraw area we're not paying attention to at least
+       gets cleared to the background.
+    * src/vte.c(vte_terminal_locale_encoding): don't try to second-guess the local
+       encoding, just use the current charset as returned by g_get_charset().
+
+ ChangeLog    |    7 +++++++
+ src/vte.c    |   14 ++++++++------
+ src/vteapp.c |   24 ++++++++++++++++--------
+ 3 files changed, 31 insertions(+), 14 deletions(-)
+
+commit d50f85c7bacde3d3e8091b74c56ba2281cd1e522
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 14 06:10:19 2002 +0000
+
+    drop pending incoming data on reset. give reprocessing of pending input
+    
+    * src/vte.c(vte_terminal_reset): drop pending incoming data on reset.
+    * src/vte.c: give reprocessing of pending input data a higher priority than
+       reading it from the child to prevent backlogs on corrupt or invalid
+       multibyte data from building up and whacking us exponentially.
+    * src/vte.c(vte_sequence_handler_delete_lines): initialize lines added to the
+       current default colors.  Spotted by jrb.
+    * src/vte.c(vte_terminal_set_font): don't try to pick up GTK Xft settings
+       unless we're using FontConfig.  Patch from otaylor.
+
+ ChangeLog |   18 +++++++++---
+ src/vte.c |   89 ++++++++++++++++++++++++++++++++++++++++++------------------
+ vte.spec  |    7 ++++-
+ 3 files changed, 82 insertions(+), 32 deletions(-)
+
+commit fa7e15acc03629c166d9bbde7c26a13e7f274274
+Author: Ole Laursen <olau hardworking dk>
+Date:   Tue Aug 13 20:12:42 2002 +0000
+
+    Updated Danish translation.
+    
+    2002-08-13  Ole Laursen  <olau hardworking dk>
+    
+       * da.po: Updated Danish translation.
+
+ po/ChangeLog |    6 ++++-
+ po/da.po     |   63 ++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 38 insertions(+), 31 deletions(-)
+
+commit 1bf3640ee49d932e61c3cabf07a8939114eb4894
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 13 01:49:50 2002 +0000
+
+    reorder set/reset processing for decset so that 1049 properly represents
+    
+    * src/vte.c: reorder set/reset processing for decset so that 1049 properly
+       represents the combination of 1047 and 1048 (#90027).
+
+ ChangeLog |    3 +++
+ src/vte.c |   19 ++++++-------------
+ 2 files changed, 9 insertions(+), 13 deletions(-)
+
+commit 8dcb63c6368e86bebcb473b05ea9f34bf7e82718
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 19:49:03 2002 +0000
+
+    - don't include datadir files more than once
+
+ vte.spec |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 8be06f70f84252834036e36359f13d7929f537bc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 19:44:36 2002 +0000
+
+    properly escape a command sequence with an embedded '%'.
+    
+    * src/caps.c: properly escape a command sequence with an embedded '%'.
+
+ ChangeLog  |    2 ++
+ src/caps.c |    4 ++--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit deba2150f9794e8e3a46c468056d23ef377665d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 19:10:41 2002 +0000
+
+    add de and nl translations to ALL_LINGUAS
+    
+    * configure.in: add de and nl translations to ALL_LINGUAS
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5e783f93a81306b846a08da191d0eff880b04a0c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 19:01:03 2002 +0000
+
+    0.7.3
+
+ vte.spec |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+commit a07607f8965d4d146d1397233d6eb64eca544dd4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 16:13:18 2002 +0000
+
+    change Xft-related defaults match whichever version of GTK we were built
+    
+    * src/vte.c: change Xft-related defaults match whichever version of GTK
+       we were built with (hopefully).
+
+ ChangeLog |    3 +++
+ src/vte.c |    6 ++++++
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+commit ff497e30907c63e0b1073d569e690478353eb876
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Aug 12 14:40:20 2002 +0000
+
+    don't bother with cursor blinking or freezing/thawing updates when the
+    
+    * src/vte.c: don't bother with cursor blinking or freezing/thawing
+       updates when the widget isn't realized.  Patch from Gustavo Giráldez.
+
+ ChangeLog |    3 +++
+ src/vte.c |   47 ++++++++++++++++++++++++++++-------------------
+ 2 files changed, 31 insertions(+), 19 deletions(-)
+
+commit ad25c2e2013a56a29db023da0906e1728c7d01db
+Author: Vincent van Adrighem <adrighem src gnome org>
+Date:   Fri Aug 9 08:15:08 2002 +0000
+
+    2002-08-09  Vincent van Adrighem <V vanAdrighem dirck mine nu)
+    
+       * nl.po: Dutch translation updated by Taco Witte.
+
+ po/ChangeLog |    4 ++
+ po/nl.po     |  122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 126 insertions(+), 0 deletions(-)
+
+commit e4a0ce1ded5bb31a59fa6b5718d84b8be7432365
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 18:42:26 2002 +0000
+
+    take extra steps to make sure that the cursor doesn't go back into
+    
+    * src/vte.c: take extra steps to make sure that the cursor doesn't go back into
+       negative scrollback space.
+
+ ChangeLog |    3 +++
+ src/vte.c |   32 ++++++++++++++++++++------------
+ 2 files changed, 23 insertions(+), 12 deletions(-)
+
+commit d094196b7dc5fdc59328b546fd02f8be19cfe2a9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 05:38:35 2002 +0000
+
+    rewrite.
+    
+    * src/vte.c(vte_terminal_invalidate_all): rewrite.
+
+ ChangeLog |    2 ++
+ src/vte.c |   11 ++++++++---
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit 71d5d3b968eb61c1b26765fe64bc7abac5915ced
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 05:04:12 2002 +0000
+
+    fill in the background color when drawing the cursor, even if it's going
+    
+    * src/vte.c(vte_terminal_paint,vte_terminal_draw_cells): fill in the background
+       color when drawing the cursor, even if it's going to end up as the
+       default background color, spotted by Peter Jones.  Draw the cursor
+       correctly if it's over a graphic character.
+
+ ChangeLog       |    5 ++
+ src/Makefile.am |    2 +-
+ src/vte.c       |  156 +++++++++++++++++++++++++++++--------------------------
+ vte.spec        |    8 +++-
+ 4 files changed, 96 insertions(+), 75 deletions(-)
+
+commit 0429b16180b0a2b79ce627cf146f8ce5c47d0a07
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 04:25:58 2002 +0000
+
+    once again, avoid drawing NULs. add a small pad to each edge (#89048).
+    
+    * src/vte.c(vte_terminal_draw_cells): once again, avoid drawing NULs.
+    * src/vte.c: add a small pad to each edge (#89048).
+    * src/vteapp.c: handle widget padding.
+
+ ChangeLog    |    4 +
+ src/vte.c    |  235 ++++++++++++++++++++++++++++++++++++---------------------
+ src/vte.h    |    3 +
+ src/vteapp.c |    6 +-
+ 4 files changed, 160 insertions(+), 88 deletions(-)
+
+commit 50bedfd42a309eb61165d190ef954df994eeeb6b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 02:32:46 2002 +0000
+
+    Whoops, remove that debug g_print().
+    
+    * src/vte.c: Whoops, remove that debug g_print().
+
+ src/vte.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit 2b6cff9bfeb5ab13cc519abc45a15d9ad58948c0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 8 02:26:11 2002 +0000
+
+    look for $pkgdatadir/termcap/$TERM first, as the widget does, before
+    
+    * src/interpret.c: look for $pkgdatadir/termcap/$TERM first, as the widget does,
+       before consulting /etc/termcap.
+    * src/ring.c(vte_ring_free): check for a non-NULL removal function before
+       calling it.
+    * src/vte.c(vte_terminal_key_press): add an option for doing VT220-style or
+       Sun/PC-style modified function keys.  Default to VT220 for now, though.
+    * src/vte.c(vte_terminal_reset): scroll to the bottom when resetting.
+
+ ChangeLog       |    9 ++
+ src/interpret.c |    6 +-
+ src/ring.c      |    6 +-
+ src/vte.c       |  231 +++++++++++++++++++++++++-----------------------------
+ 4 files changed, 125 insertions(+), 127 deletions(-)
+
+commit 28daed11380ea2fd7bfea19daefd4a7486bf480f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 7 23:42:04 2002 +0000
+
+    don't trust XftDrawString32() to advance linearly for monospaced fonts
+    
+    * src/vte.c(vte_terminal_draw_cells): don't trust XftDrawString32() to advance
+       linearly for monospaced fonts (#90164).
+
+ ChangeLog |    5 +++++
+ src/vte.c |   50 +++++++++++++++++++++-----------------------------
+ 2 files changed, 26 insertions(+), 29 deletions(-)
+
+commit 4babeea772593a77fd3da3195fd49aab6c4a2717
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 7 23:15:26 2002 +0000
+
+    reset the default setting as well (#89506).
+    
+    * src/vte.c(vte_terminal_reset): reset the default setting as well (#89506).
+
+ ChangeLog  |    3 +
+ autogen.sh |    1 +
+ src/vte.c  |  138 +++++++++++++++++++++++++++++------------------------------
+ 3 files changed, 72 insertions(+), 70 deletions(-)
+
+commit e52fea3e78a2edcf702d7655c8b5dfaaa463ae62
+Author: Christian Rose <menthos menthos com>
+Date:   Wed Aug 7 18:44:27 2002 +0000
+
+    Updated Swedish translation.
+    
+    2002-08-07  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   50 ++++++++++++++++++++++++--------------------------
+ 2 files changed, 28 insertions(+), 26 deletions(-)
+
+commit 274232721384b737aef142dfe9ff944c1eed3a21
+Author: Christian Neumair <cneumair src gnome org>
+Date:   Wed Aug 7 17:56:07 2002 +0000
+
+    Updated German translation.
+
+ po/ChangeLog |    4 ++
+ po/de.po     |  124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 128 insertions(+), 0 deletions(-)
+
+commit 47c61f40fe4a943a0d6ed9f907046969179a2d28
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Aug 7 16:49:37 2002 +0000
+
+    perform Xft remapping for Xft1, switch back to PangoX.
+    
+    * src/vte.c(vte_terminal_draw_cells): perform Xft remapping for Xft1, switch
+       back to PangoX.
+
+ ChangeLog |    3 +++
+ src/vte.c |   33 ++++++++++++++++++++++++++++++---
+ 2 files changed, 33 insertions(+), 3 deletions(-)
+
+commit 0501b07d2d288846a0e2d3c77304187cda3680e0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Aug 6 23:24:35 2002 +0000
+
+    use g_get_charset() instead of nl_langinfo() to determine the default
+    
+    * src/vte.c(vte_terminal_set_encoding, vte_sequence_handler_local_charset): use
+       g_get_charset() instead of nl_langinfo() to determine the default
+       codeset, and to check if it's UTF-8.  Patch from Hidetoshi Tajima.
+    * src/vte.c(vte_terminal_set_encoding): don't leak conversion descriptors when
+       changing the encoding fails.  Patch from Hidetoshi Tajima.
+    * src/vte.c(vte_terminal_send): don't read past the converted string when
+       performing paste substitutions.
+    * src/vte.c: rework the straight-Pango rendering routines to call normal Pango
+       instead of PangoX.
+    * src/vte.c(vte_terminal_ensure_cursor): speed up the "add many cells" case a
+       bit.
+    * src/vte.c(vte_cell_is_between): sort the two endpoints correctly and provide
+       a boolean to control whether or not the endpoint is "in".
+    * src/vte.c(vte_cell_draw_rows): check if a cell is selected using the right
+       indicator.
+    * src/vte.c(vte_terminal_get_text): when adding a newline to the end of a
+       returned line, don't show it as being in the rightmost column.
+    * src/vte.c(xlfd_from_pango_font_description): turn the DPI, pixel size, and
+       dded info into wildcards.
+    * src/vte.c(vte_terminal_draw_cells): go back to drawing individual cells when
+       using Xlib.
+    * src/vte.c: Compute right-side padding as well as left.
+    * src/vte.c(vte_terminal_init): disable use of PangoX by default.
+    * src/vteapp.c: add -D to add the same patterns profterm does to test dingus
+       hiliting.
+
+ ChangeLog    |   30 +++
+ src/vte.c    |  560 +++++++++++++++++++++++++++++++++++++++-------------------
+ src/vteapp.c |   15 ++-
+ vte.spec     |    7 +-
+ 4 files changed, 430 insertions(+), 182 deletions(-)
+
+commit 88d01cc079642750cb2d915e1c8b38b122641c2d
+Author: Havoc Pennington <hp redhat com>
+Date:   Sat Aug 3 18:00:32 2002 +0000
+
+    add a gdk_flush() before the error trap pop, just for paranoia, may help
+    
+    2002-08-03  Havoc Pennington  <hp redhat com>
+    
+       * src/vte.c (vte_terminal_setup_background): add a gdk_flush()
+       before the error trap pop, just for paranoia, may help with
+       #89049
+
+ ChangeLog |    6 ++++++
+ src/vte.c |    1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+commit a062c6306732e1cfc034c0c49f416b09b93d63d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Aug 2 15:17:03 2002 +0000
+
+    Substitute carriage returns for newlines when pasting text to the child,
+    
+    * src/vte.c(vte_terminal_send): Substitute carriage returns for newlines when
+       pasting text to the child, fixing weird paste behavior in pico and
+       friends.
+
+ ChangeLog |    5 +++++
+ src/vte.c |   14 ++++++++++----
+ 2 files changed, 15 insertions(+), 4 deletions(-)
+
+commit 3c26a0db3b52f5b9075eb9fb9c2a8c953164e0fd
+Author: Christian Rose <menthos menthos com>
+Date:   Fri Aug 2 13:53:12 2002 +0000
+
+    Updated Swedish translation.
+    
+    2002-08-02  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   58 +++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 35 insertions(+), 27 deletions(-)
+
+commit 8997158626f6e835d63be7c9cb901031f31f9b7b
+Author: Christophe Merlet <redfox src gnome org>
+Date:   Fri Aug 2 10:31:18 2002 +0000
+
+    Added French translation.
+
+ ChangeLog    |    4 ++
+ configure.in |    2 +-
+ po/ChangeLog |    5 ++
+ po/fr.po     |  128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 138 insertions(+), 1 deletions(-)
+
+commit fa5cb989de684be220fe2363f6be7ab45675d3ae
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 1 22:05:01 2002 +0000
+
+    Expose vte_pty_set_size() and get_size() to localize terminal ioctl usage.
+    
+    * src/pty.c, src/pty.h: Expose vte_pty_set_size() and get_size() to localize
+       terminal ioctl usage.
+    * src/ring.c(vte_ring_validate): Don't repeatedly compute the same value when
+       we know it won't change.
+    * src/vte.c(vte_wc_from_unichar): Implement for the non-STDC_ISO_10646 case,
+       heavily based on patch from Hidetoshi Tajima.
+    * src/vte.c(vte_terminal_ensure_cursor): Don't initialize the local data unless
+       we have to.
+    * src/vte.c(vte_terminal_process_incoming): Don't insert NUL characters into
+       the display, matching behavior of xterm.
+    * src/vte.c: Clean up use of various G_PRIORITY values throughout to allow for
+       simpler tuning.  Rewrite rendering code to use per-paint PangoLayouts
+       when they're needed, use Xft2's DrawCharSpec function when available,
+       and to cut down on X requests.  Don't paint on expose events if the
+       window isn't realized, drawable, and at least partially visible.  Don't
+       deselect previous selection when the user clicks unless there's also a
+       drag first.
+
+ ChangeLog  |   18 +
+ src/pty.c  |   25 +-
+ src/pty.h  |    5 +
+ src/ring.c |    5 +-
+ src/vte.c  | 2565 ++++++++++++++++++++++++++++++++----------------------------
+ vte.spec   |    5 +-
+ 6 files changed, 1403 insertions(+), 1220 deletions(-)
+
+commit 8515801d31a4279150f085ab2f22a7b177fa474e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Aug 1 00:03:17 2002 +0000
+
+    Include <termios.h> if available, per patch from Hidetoshi Tajima. Include
+    
+    * src/pty.c: Include <termios.h> if available, per patch from Hidetoshi Tajima.
+    * src/trie.c: Include missing <wchar.h>, spotted by Hidetoshi Tajima.
+
+ ChangeLog    |    3 +++
+ configure.in |    1 +
+ src/pty.c    |    3 +++
+ src/trie.c   |    1 +
+ 4 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 94d562a1102ac1ecf9a6b23f16eeac725e1c3f63
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jul 31 16:22:57 2002 +0000
+
+    Initialize new lines created in insert_lines() to the current default
+    
+    * src/vte.c: Initialize new lines created in insert_lines() to the current
+       default attributes like al() does.
+
+ ChangeLog |    3 +++
+ src/vte.c |    7 +++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit a6643f3a78377bb48391fea80ed287b6a75bc318
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 30 23:02:49 2002 +0000
+
+    Fix autoconf quoting error.
+    
+    * configure.in: Fix autoconf quoting error.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1c098e1d6c0f0d3452e0a4c184fb0f6c5a10e2e0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 30 23:00:34 2002 +0000
+
+    Check for wint_t and attempt to allow compiles even when wint_t isn't
+    
+    * configure.in: Check for wint_t and attempt to allow compiles even when wint_t
+       isn't defined (this type is used only debug code, so it shouldn't break
+       anything).
+    * src/caps.c: Remove "te" and "ti", which are logical, in the same way "so" is,
+       from the known capabilities lists.  Add a "is a key" field to the
+       termcap list so that we don't match against keystrokes in case they're
+       also control sequences.
+    * src/interpret.c: Use tables instead of tries.  Don't add key sequences to the
+       table.
+    * src/pty.c: Fix incorrect invocation in sample.
+    * src/reaper.c: Include stdlib.h to quiet compiler warning.
+    * src/trie.c, src/trie.h: Remove the unused precomputing routines.
+    * src/utf8echo.c: Switch to link with tables instead of tries.
+    * src/vte.c: Switch to using tables instead of tries.  Don't add key sequences
+       to the table.  Map cursor-backward to LE instead of le, which handles
+       parameters right.  Tune updates so that they occur less often when we're
+       processing large amounts of data from the child.  Add a
+       'status-line-changed' signal.  Implement fs() and fix ts().  Add
+       ::get_status_line() to get the contents of the status line.  Obey it()
+       when setting default tabstops.  Implement cursor_next_line(),
+       cursor_lower_left(), cursor_preceding_line(),
+       cursor_horizontal_and_vertical_position(), erase_characters(), and
+       insert_blank_characters().  Implement nw().
+
+ ChangeLog       |   25 +++
+ README          |   10 +-
+ configure.in    |    1 +
+ po/da.po        |   44 ++--
+ po/sv.po        |   44 ++--
+ src/Makefile.am |   26 ++-
+ src/caps.c      |  608 +++++++++++++++++++++++++++---------------------------
+ src/caps.h      |    1 +
+ src/interpret.c |   27 ++-
+ src/pty.c       |    2 +-
+ src/reaper.c    |    1 +
+ src/table.c     |   77 ++++----
+ src/termcap.c   |    2 +
+ src/trie.c      |  209 +------------------
+ src/trie.h      |    3 -
+ src/utf8echo.c  |    6 +-
+ src/vte.c       |  446 ++++++++++++++++++++++++-----------------
+ src/vte.h       |    5 +-
+ src/vteapp.c    |   11 +
+ vte.spec        |    6 +-
+ 20 files changed, 750 insertions(+), 804 deletions(-)
+
+commit 9ed6314b69c822030886b9fd004dd1f88a1fec2c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 30 21:57:24 2002 +0000
+
+    Comment out "ti" and "te" which are always going to be logical.
+    
+    * src/caps.c: Comment out "ti" and "te" which are always going to be logical.
+
+ src/caps.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit a88625362c7f887bfd0026d96fef316050663c91
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 30 20:34:08 2002 +0000
+
+    Add files.
+
+ src/table.c |  880 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/table.h |   51 ++++
+ 2 files changed, 931 insertions(+), 0 deletions(-)
+
+commit c9d46969abaca4451316d0f6b7b9661d454ebe79
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jul 26 18:23:02 2002 +0000
+
+    Initialize new lines added for al(). Spotted by jrb.
+    
+    * src/vte.c: Initialize new lines added for al().  Spotted by jrb.
+
+ ChangeLog |    3 +++
+ src/vte.c |    7 +++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 4c9c1d1db8bcc68a4afc4f90473a8c2bd86a3fcb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 25 21:57:16 2002 +0000
+
+    0.5.4
+
+ po/da.po |   14 ++++++++++----
+ po/sv.po |   38 +++++++++++++++++++-------------------
+ vte.spec |    5 ++++-
+ 3 files changed, 33 insertions(+), 24 deletions(-)
+
+commit ac8c5b077106d89d4923e1ccabccafe695ede2da
+Author: Ole Laursen <olau hardworking dk>
+Date:   Thu Jul 25 21:36:40 2002 +0000
+
+    Added Danish translation.
+    
+    2002-07-25  Ole Laursen  <olau hardworking dk>
+    
+       * da.po: Added Danish translation.
+
+ po/ChangeLog |    4 ++
+ po/da.po     |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 120 insertions(+), 0 deletions(-)
+
+commit 9f2e73d1c66faac5ba4cbbc3cc944c15333572a5
+Author: Ole Laursen <olau hardworking dk>
+Date:   Thu Jul 25 21:34:48 2002 +0000
+
+    Added Danish translation.
+    
+    2002-07-25  Ole Laursen  <olau hardworking dk>
+    
+       * configure.in: Added Danish translation.
+
+ ChangeLog    |    4 ++++
+ configure.in |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+commit dc51766bfb6b87a516e01f0bd6e62c5156ee376a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 25 20:00:29 2002 +0000
+
+    Note that bold isn't broken any more. Note that k; was added. Set the
+    
+    * README: Note that bold isn't broken any more.
+    * termcaps/xterm: Note that k; was added.
+    * src/pty.c: Set the proper number of columns in the initial window size.
+    * src/ring.h: Change macro argument names to hopefully not step on application
+       code.
+    * src/vte.c: Set the terminal size to the default size as specified in termcap
+       at init-time.
+
+ ChangeLog      |    8 ++++++++
+ README         |    2 --
+ src/pty.c      |    2 +-
+ src/ring.h     |   27 ++++++++++++++-------------
+ src/vte.c      |    3 +++
+ termcaps/xterm |    2 +-
+ 6 files changed, 27 insertions(+), 17 deletions(-)
+
+commit 9ef0f51ac6364aed4176f3d5f3843ab76c3e113f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jul 24 15:27:00 2002 +0000
+
+    Add private vte_pty_set_size() function. vte_pty_open() takes size
+    
+    * src/pty.c: Add private vte_pty_set_size() function.
+    * src/pty.c, src/pty.h: vte_pty_open() takes size arguments now.
+    * src/vte.c: Open the PTY with the proper initial size.
+
+ ChangeLog       |    4 ++++
+ po/sv.po        |   40 ++++++++++++++++++++--------------------
+ src/Makefile.am |    2 +-
+ src/pty.c       |   31 ++++++++++++++++++++++++++-----
+ src/pty.h       |    3 ++-
+ src/vte.c       |    8 +++++---
+ src/vteapp.c    |    4 ++--
+ vte.spec        |    5 ++++-
+ 8 files changed, 64 insertions(+), 33 deletions(-)
+
+commit b8d3e0c105c1b8031e4d1606f2d9cac34b97ec3d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 23 18:30:52 2002 +0000
+
+    0.5.2
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 8989077a33ada41fc2ee1fa65933abd2846993e0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 23 17:57:09 2002 +0000
+
+    Expose the ring implementation and convert several simple functions into
+    
+    * src/ring.c, ring.h: Expose the ring implementation and convert several simple
+       functions into macros.
+    * src/vteapp.c: Pass all long options on to gtk_init().
+
+ ChangeLog    |    4 ++++
+ src/ring.c   |   50 --------------------------------------------------
+ src/ring.h   |   27 +++++++++++++++++++++------
+ src/vte.c    |   45 ++++++++++++++++++++++++++-------------------
+ src/vteapp.c |   21 +++++++++++++++++++++
+ 5 files changed, 72 insertions(+), 75 deletions(-)
+
+commit e05ee559ce99030e3543eafe17bb86c81827adfb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 23 13:24:46 2002 +0000
+
+    Fix realize/unrealize to be properly reversible. Use the font from the
+    
+    * src/vte.c: Fix realize/unrealize to be properly reversible.  Use the font
+       from the default style unless we're explicitly given one.
+    * src/vteapp.c: Don't set base size or minimum size geometry hints when sizing
+       the terminal widget.
+
+ ChangeLog    |    5 +
+ src/vte.c    |  912 ++++++++++++++++++++++++++++++++++------------------------
+ src/vte.h    |    2 +
+ src/vteapp.c |   25 +--
+ 4 files changed, 550 insertions(+), 394 deletions(-)
+
+commit e77a62018d612944fe85711ca0bdb9f19d4d3c60
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 22 13:27:09 2002 +0000
+
+    Fix an incorrect logic check.
+    
+    * src/pty.c(vte_pty_ptsname): Fix an incorrect logic check.
+
+ ChangeLog |    2 ++
+ src/pty.c |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 78db653b1de723f72c79de964dd259a0e4023910
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jul 19 15:58:21 2002 +0000
+
+    If we're changing the background color, apply it to the widget's window as
+    
+    * src/vte.c(vte_terminal_set_color_internal): If we're changing the background
+       color, apply it to the widget's window as well, spotted by msw.
+
+ ChangeLog |    3 +++
+ src/vte.c |   19 ++++++++++++-------
+ 2 files changed, 15 insertions(+), 7 deletions(-)
+
+commit 527d415541a35302cd74d458564915a4eb0b1542
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jul 19 05:48:29 2002 +0000
+
+    Undo the scrolling changes -- there too many combinations of circumstances
+    
+    * src/vte.c: Undo the scrolling changes -- there too many combinations of
+       circumstances that cause them to not work right.
+
+ ChangeLog       |    3 +
+ src/interpret.c |   13 ++++++
+ src/vte.c       |  124 ++++++++++++++++++++++++++-----------------------------
+ src/vteapp.c    |   10 ++++-
+ 4 files changed, 82 insertions(+), 68 deletions(-)
+
+commit 4107683a49d46a88752c889b24148387554a50b8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jul 19 03:00:29 2002 +0000
+
+    Fudge the repaint line count by one when scrolling regions to ensure that
+    
+    * src/vte.c: Fudge the repaint line count by one when scrolling regions to
+       ensure that the old cursor gets repainted.  Calculate the area which
+       needs to be repainted when reverse-scrolling correctly.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   13 ++++++++++---
+ vte.spec  |   11 ++++++++++-
+ 3 files changed, 24 insertions(+), 4 deletions(-)
+
+commit c7b0c2bbdb11ea8364829a6a7e0e1c4b0749c4cc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 18 23:47:35 2002 +0000
+
+    Implement enough of set-mode and reset-mode to allow toggling of insert
+    
+    * src/vte.c: Implement enough of set-mode and reset-mode to allow toggling
+       of insert mode using this sequence.  Move all scrolling into
+       vte_terminal_scroll_region and use gdk_draw_drawable to avoid
+       repainting from scratch whenever possible.
+
+ ChangeLog |    5 +
+ src/vte.c |  333 +++++++++++++++++++++++++++++++++++++++----------------------
+ vte.spec  |    6 +
+ 3 files changed, 224 insertions(+), 120 deletions(-)
+
+commit dfad7e70fef9221c09360fab72998d16f3d23670
+Author: Christian Rose <menthos menthos com>
+Date:   Thu Jul 18 17:02:42 2002 +0000
+
+    Updated Swedish translation.
+    
+    2002-07-18  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   36 ++++++++++++++++++------------------
+ 2 files changed, 22 insertions(+), 18 deletions(-)
+
+commit cf55403688da83b34f8eb5a7f5b326fd0a7e28ee
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jul 18 03:43:18 2002 +0000
+
+    Actually set ALL_LINGUAS so translations get installed. Document the
+    
+    * configure.in: Actually set ALL_LINGUAS so translations get installed.
+    * README: Document the weirdness that is cursor movement around wide characters.
+    * src/vte.defs: Bind set_color_bold().
+    * src/debug.c: Suppress warnings when $VTE_DEBUG_FLAGS isn't set.
+    * src/pty.c, src/reaper.c, src/termcap.c, src/trie.c: Provide for debug messages
+       in the test program.
+    * src/interpret.c, src/trie.c: Use libc stdio instead of g_print for printing
+       what might be part of a multibyte sequence because g_print checks for
+       validity.
+    * src/interpret.c, src/trie.c, src/utf8echo.c, src/vte.c: Use gunichar instead
+       of wchar_t in places where a gunichar is expected.  Provide a means for
+       converting from wchar_t to gunichar for the sake of X11 calls which want
+       a wchar_t.
+    * src/trie.c: Provide vte_trie_wide_encoding() for finding a giconv target
+       which is hopefully compatible with gunichar.  Likewise provide
+       vte_trie_narrow_encoding() to find one compatible with iso-8859-1.
+    * src/vte.c: Fall back to ISO-8859-1 if we can't set things up for the current
+       locale encoding at startup time.  Fall back to the current encoding if
+       we can't perform a given dynamic switch.
+
+ ChangeLog       |   21 ++++
+ README          |   21 +++-
+ configure.in    |    1 +
+ po/sv.po        |   48 ++++----
+ python/vte.defs |    9 ++
+ src/Makefile.am |    7 +-
+ src/debug.c     |    2 +-
+ src/interpret.c |   36 +++---
+ src/pty.c       |    1 +
+ src/reaper.c    |    2 +
+ src/termcap.c   |    4 +-
+ src/trie.c      |  349 +++++++++++++++++++++++++++++++++++++++----------------
+ src/trie.h      |   12 ++-
+ src/utf8echo.c  |    5 +-
+ src/vte.c       |  210 ++++++++++++++++++++++-----------
+ src/vte.h       |    1 -
+ vte.spec        |    7 +-
+ 17 files changed, 509 insertions(+), 227 deletions(-)
+
+commit 623ee6d073c540bd02b2b4f4a9abb2ddf7b7637f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jul 17 03:34:54 2002 +0000
+
+    Set GETTEXT_PACKAGE correctly, noted by menthos.
+    
+    * configure.in: Set GETTEXT_PACKAGE correctly, noted by menthos.
+
+ ChangeLog    |    3 +++
+ configure.in |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 89cd4a38836d9b53d40a2bc7f9e7d118b5244c04
+Author: Christian Rose <menthos menthos com>
+Date:   Tue Jul 16 23:37:18 2002 +0000
+
+    Updated Swedish translation.
+    
+    2002-07-17  Christian Rose  <menthos menthos com>
+    
+       * sv.po: Updated Swedish translation.
+
+ po/ChangeLog |    4 ++++
+ po/sv.po     |   54 ++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 32 insertions(+), 26 deletions(-)
+
+commit 38d95c7257845a9eb875692a1f2caaf5e628630b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 16 19:31:16 2002 +0000
+
+    Guess at an appropriate bold version of the foreground color instead of
+    
+    * src/vte.c (vte_terminal_set_colors): Guess at an appropriate bold version of
+       the foreground color instead of hard-coding in a default.
+    * src/vte.c, src/vte.h (vte_terminal_set_color_bold): Add.
+
+ ChangeLog       |    5 ++++
+ src/Makefile.am |    2 +-
+ src/vte.c       |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ src/vte.h       |    4 ++-
+ src/vteapp.c    |    4 +++
+ vte.spec        |    1 +
+ 6 files changed, 74 insertions(+), 5 deletions(-)
+
+commit a84fc373e7868673715a4ef9ebec2165300cda16
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 16 15:33:15 2002 +0000
+
+    Correctly check for g_iconv_open() failure. Try to give a meaningful error
+    
+    * src/trie.c: Correctly check for g_iconv_open() failure.
+    * src/vte.c (vte_terminal_set_encoding): Try to give a meaningful error when
+       g_iconv_open() fails, even though we're screwed.
+
+ ChangeLog      |    7 +++++-
+ src/trie.c     |   35 ++++++++++++++---------------
+ src/utf8echo.c |    2 +-
+ src/vte.c      |   65 ++++++++++++++++++++++++++++++++++++++++---------------
+ vte.spec       |    8 ++++++-
+ 5 files changed, 78 insertions(+), 39 deletions(-)
+
+commit 4542e59d27fd956648894e5b4165a1a0112f8ecc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 15 18:16:32 2002 +0000
+
+    wrap the new Xft/fontconfig-specific code in HAVE_XFT Revert some changes
+    
+    * src/vte.c: wrap the new Xft/fontconfig-specific code in HAVE_XFT
+    * src/vte.c: Revert some changes in how new cells were initialized, removing
+       various cosmetic problems.
+    * src/vte.c (vte_terminal_process_incoming): Discard the proper number of
+       characters when we don't recognize a sequence, previously we left one
+       byte that should have been removed.
+
+ ChangeLog       |    9 ++++++-
+ src/Makefile.am |    2 +-
+ src/vte.c       |   65 ++++++++++++++++++++++++++++++++----------------------
+ vte.spec        |    7 +++++-
+ 4 files changed, 53 insertions(+), 30 deletions(-)
+
+commit e4cfa8d65673f808fcef56150a05e04f1cfd2fdf
+Author: Havoc Pennington <hp pobox com>
+Date:   Sun Jul 14 19:52:17 2002 +0000
+
+    decrement spaces as we go through the loop, it was nice and infinite.
+    
+    2002-07-14  Havoc Pennington  <hp pobox com>
+    
+       * src/vte.c (vte_terminal_get_cursor_position): decrement spaces
+       as we go through the loop, it was nice and infinite.
+
+ ChangeLog |    5 +++++
+ src/vte.c |    1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+commit 8320edb7631fd570b69503def7ab2ce58b19df6c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 04:40:58 2002 +0000
+
+    Add the proper number of attribute structs to the attribute array to fix
+    
+    * src/vte.c (vte_terminal_get_text): Add the proper number of attribute structs
+       to the attribute array to fix crashes which occurred when the buffer
+       contains non-ASCII text (#67930).
+
+ ChangeLog |    4 ++++
+ src/vte.c |   18 +++++-------------
+ 2 files changed, 9 insertions(+), 13 deletions(-)
+
+commit f16781d565d6da399141797e0377e65abef04f51
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 04:14:57 2002 +0000
+
+    Handle cases where FC_HINTING is enabled but FC_HINT_STYLE isn't. Not that
+    
+    * src/vte.c: Handle cases where FC_HINTING is enabled but FC_HINT_STYLE isn't.  Not that that makes any 
sense, but there you go.
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 23ec5d4ce4b38d19e9271463563fc94b587e5f93
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 03:59:23 2002 +0000
+
+    Small optimization in the al() and dl() handlers. al() doesn't move the
+    
+    * src/vte.c: Small optimization in the al() and dl() handlers.  al() doesn't
+       move the cursor, per GNU termcap docs.  Check for a pixbuf in the bgfx
+       check instead of pixmap, which was the wrong type.
+
+ ChangeLog     |    4 ++++
+ src/slowcat.c |    3 ++-
+ src/vte.c     |   20 ++++++++++----------
+ 3 files changed, 16 insertions(+), 11 deletions(-)
+
+commit a7b29e6c2d897a8ccf8feb4523a63c6690221228
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 02:59:05 2002 +0000
+
+    Add.
+
+ src/slowcat.c |   93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 93 insertions(+), 0 deletions(-)
+
+commit 82c830263ff1212de3a22501eb65a036a352af83
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 02:44:09 2002 +0000
+
+    Bail if GTK doesn't know about Xft-specific settings.
+    
+    * src/vte.c (vte_default_substitute): Bail if GTK doesn't know about
+    Xft-specific settings.
+
+ src/vte.c |   15 +++++++++++----
+ 1 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 842e9ac6cfbfcb3462b9a720e6c4a5a9e5d6eda9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 02:07:58 2002 +0000
+
+    Add patch to heed Xft/fontconfig settings as kept by GTK. Based on patch
+    
+    * src/vte.c: Add patch to heed Xft/fontconfig settings as kept by GTK.  Based
+       on patch from otaylor.
+
+ ChangeLog |    3 +
+ src/vte.c |  199 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 188 insertions(+), 14 deletions(-)
+
+commit 65970d91a841eb7c895d1efaa36a734ffd811658
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Jul 13 00:21:25 2002 +0000
+
+    Added. Add -a/-b flags to control audible bell and blinking cursors. Only
+    
+    * src/slowcat.c: Added.
+    * src/vteapp.c: Add -a/-b flags to control audible bell and blinking cursors.
+       Only send "pwd" as an initial command if there wasn't a command
+       specified on the command line.  Add a simple help message.
+    * src/vte.c: Bind F13-F35 per termcap.  Treat GDK_KP_Delete as GDK_Delete.  Map
+       Ctrl+F1-F12 to F13-F24.  Fix dc() to ensure that the rows stays full and
+       that newly-added cells get the default attributes.  Fix cl() to clear
+       all rows on the screen with the default attributes (bce).  Default to
+       using Xft if available for consistency with GTK.
+    * src/vte.c: Treat super, hyper, meta, and alt as modifiers when deciding to
+       scroll-on-keypress.  Noted by jrb.
+    * src/vte.c: Always map \r and \n to cr and so, even when they're defined by
+       the termcap.
+    * src/vte.c, src/vte.h: Rework how default colors are set up, and add
+       vte_terminal_set_color_foreground and vte_terminal_set_color_background.
+    * src/vte.h: Remove includes for local headers which apps are not likely to
+       never use, cleaning up the namespace a little.
+    * python/vte.defs: Bind vte_terminal_set_color_{fore,back}ground.
+    * src/debug.h, src/ring.h: Use G_BEGIN_DECLS/G_END_DECLS.
+    * src/reaper.h: Use G_BEGIN_DECLS/G_END_DECLS in the right place.
+    * src/vteapp.c: Add -B/-T flags to set background images and transparency.
+
+ ChangeLog       |   24 ++
+ python/vte.defs |   18 ++
+ src/Makefile.am |    8 +-
+ src/caps.h      |    4 +-
+ src/debug.h     |    4 +
+ src/reaper.h    |    5 +-
+ src/ring.h      |    4 +
+ src/vte.c       |  706 +++++++++++++++++++++++++++++++++++++------------------
+ src/vte.h       |    7 +-
+ src/vteapp.c    |   45 +++-
+ vte.spec        |   11 +-
+ 11 files changed, 585 insertions(+), 251 deletions(-)
+
+commit 2f766cdf80215a137c0ef0389b187e708dcbb822
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jul 2 20:09:26 2002 +0000
+
+    Make shift+button1 extend selection.
+    
+    * src/vte.c: Make shift+button1 extend selection.
+
+ ChangeLog |    2 +
+ README    |    3 +
+ src/vte.c |  238 +++++++++++++++++++++++++++++++++++++++++++------------------
+ vte.spec  |    9 ++-
+ 4 files changed, 179 insertions(+), 73 deletions(-)
+
+commit 361aa5b13aea9c0e8b742ce8bacc038c6765aec6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 1 23:19:53 2002 +0000
+
+    Fix memory leak when we get conversion errors.
+    
+    * src/vte.c: Fix memory leak when we get conversion errors.
+
+ src/vte.c |    6 ++++++
+ vte.spec  |    3 ++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+commit a27006e993e3fb530809bf37bb1eeebc1ba891f8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 1 22:53:27 2002 +0000
+
+    Rework recovery from illegal sequence errors in the input stream to be
+    
+    * src/vte.c: Rework recovery from illegal sequence errors in the input stream
+       to be much more aggressive.
+
+ ChangeLog |    2 ++
+ src/vte.c |   49 +++++++++++++------------------------------------
+ 2 files changed, 15 insertions(+), 36 deletions(-)
+
+commit e96906ab055262d9289a0f136bb240756bd42d37
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 1 22:35:47 2002 +0000
+
+    Get rid of more debug spew.
+    
+    * src/vte.c: Get rid of more debug spew.
+
+ src/vte.c |    8 --------
+ 1 files changed, 0 insertions(+), 8 deletions(-)
+
+commit d957ab5de61c616dc6d45be9f2a697261e7243ae
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 1 22:26:51 2002 +0000
+
+    Remove some unnecessary debug spew.
+    
+    * src/vte.c: Remove some unnecessary debug spew.
+
+ src/vte.c |    7 -------
+ 1 files changed, 0 insertions(+), 7 deletions(-)
+
+commit 82e863454f131b26949e57aeafee770a4c6e604e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jul 1 22:06:00 2002 +0000
+
+    Draw unicode line-drawing code points natively as we do for the GR1
+    
+    * src/vte.c (vte_terminal_draw_char): Draw unicode line-drawing code points
+       natively as we do for the GR1 support, in case the current font doesn't
+       include glyphs for them.
+    * src/vte.c: Test for g_iconv_open() failure properly (compare result to
+       ((GIConv)-1), not NULL).
+
+ ChangeLog |    6 ++
+ src/vte.c |  178 ++++++++++++++++++++++++++++++++++++++++++++++++-------------
+ vte.spec  |    5 ++-
+ 3 files changed, 151 insertions(+), 38 deletions(-)
+
+commit 3282b6de97263d10e11a7b2d38bdbeabb6fd1446
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 26 01:58:22 2002 +0000
+
+    Bind F10 to "k;", not "k0". Add "k;" defined as F10.
+    
+    * src/vte.c: Bind F10 to "k;", not "k0".
+    * termcaps/xterm: Add "k;" defined as F10.
+
+ ChangeLog      |    3 +++
+ src/vte.c      |    2 +-
+ termcaps/xterm |    2 +-
+ vte.spec       |    1 +
+ 4 files changed, 6 insertions(+), 2 deletions(-)
+
+commit 97e3e62df4f7891244beb85295d419ef689e9e2c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 26 01:42:02 2002 +0000
+
+    Check for redundant resizes. Keep the alternate screen buffer size the
+    
+    * src/vte.c (vte_terminal_reset_rowdata): Check for redundant resizes.
+    * src/vte.c (vte_terminal_set_scrollback_lines): Keep the alternate screen
+       buffer size the same as the window height, because xterm's alternate
+       screen doesn't backscroll.
+    * src/vte.c (vte_terminal_get_text): Don't append spaces to multicolumn
+       characters when reading the screen's contents.
+    * src/vte.c: Don't overexpose neighboring cells any more.  Cleanups.
+
+ ChangeLog       |   10 +++
+ src/Makefile.am |    2 +-
+ src/debug.c     |    3 +
+ src/debug.h     |   13 ++--
+ src/ring.c      |    6 ++
+ src/ring.h      |    1 +
+ src/vte.c       |  208 ++++++++++++++++++++++--------------------------------
+ vte.spec        |   10 ++-
+ 8 files changed, 121 insertions(+), 132 deletions(-)
+
+commit 2e30f1a92aa303cb744452a3d75ca43b30722215
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 25 19:39:28 2002 +0000
+
+    Treat option 1049 as a combination of 1047 and 1048. When finalizing while
+    
+    * src/vte.c (vte_sequence_handler_decset_internal): Treat option 1049 as a
+       combination of 1047 and 1048.
+    * src/vte.c (vte_terminal_finalize): When finalizing while holding the
+       selection, try to throw the selection onto the clipboard without an
+       owner so that it doesn't just disappear.
+
+ ChangeLog |    6 ++++++
+ src/vte.c |   22 +++++++++++++++++++++-
+ vte.spec  |    6 +++++-
+ 3 files changed, 32 insertions(+), 2 deletions(-)
+
+commit 7bea68154a9b6e847437573414c88db36fc1dde5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 19 15:24:49 2002 +0000
+
+    Fix a logic bug that got rid of the title always, not just when conversion
+    
+    * src/vte.c (vte_sequence_handler_set_title_int): Fix a logic bug that got rid
+       of the title always, not just when conversion failed.
+
+ ChangeLog       |    3 +++
+ src/interpret.c |    4 ++++
+ src/trie.c      |    6 +++---
+ src/vte.c       |    4 ++--
+ 4 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 4c681083ba867cb430c5faa8f97c92117121c6de
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 19 06:42:43 2002 +0000
+
+    Clear the alternate screen when switching to it.
+    
+    * src/vte.c: Clear the alternate screen when switching to it.
+
+ ChangeLog |    2 ++
+ src/vte.c |    8 ++++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+commit 63d4477daaaecdd71b26ffd4e7199c1c680e553d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 19 05:55:39 2002 +0000
+
+    Fix package description.
+    
+    * vte.spec: Fix package description.
+
+ vte.spec |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+commit 087cd10148e680924b9ddbd704a6648f489fc335
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 19 05:07:26 2002 +0000
+
+    Fix refs/derefs with IOChannels and sources. Clean up I/O GIConv
+    
+    * src/vte.c: Fix refs/derefs with IOChannels and sources.  Clean up I/O GIConv
+       descriptors at finalize-time.
+
+ ChangeLog |    3 ++
+ src/vte.c |   78 +++++++++++++++++++++++++++++++++++++++++++------------------
+ vte.spec  |    5 +++-
+ 3 files changed, 62 insertions(+), 24 deletions(-)
+
+commit 9ba8b45bb91df01b8e1bc20c50e7290f3069014e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 18 16:44:24 2002 +0000
+
+    0.4.2
+
+ vte.spec |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 9a9dd6e6e3bedb5150163047f80c61ea3db3f897
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 18 16:24:17 2002 +0000
+
+    Make cursor_visible a widget-wide (not per-screen) setting.
+    
+    * src/vte.c: Make cursor_visible a widget-wide (not per-screen) setting.
+
+ ChangeLog |    2 ++
+ src/vte.c |   20 +++++++++-----------
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+commit 47074ac2f4da626fe6175afe211671de0199776c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 18 16:17:49 2002 +0000
+
+    Correct automake version check to require 1.5, heads-up from Glynn Foster.
+    
+    * autogen.sh: Correct automake version check to require 1.5, heads-up from
+       Glynn Foster.
+
+ ChangeLog  |    5 ++++-
+ autogen.sh |    8 ++++----
+ 2 files changed, 8 insertions(+), 5 deletions(-)
+
+commit 5aba0af966e7eea386f95f944cad25b76d07e11b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 18 04:20:38 2002 +0000
+
+    Sort out greedy vs. non-greedy pattern matching. Make 1047 an alias for 47
+    
+    * src/trie.c (vte_trie_match, vte_trie_match_x): Sort out greedy vs. non-greedy
+       pattern matching.
+    * src/vte.c (vte_sequence_handler_decset_internal): Make 1047 an alias for 47
+       (use alternate buffer), and handle cursor save/restore properly.
+
+ ChangeLog  |    5 ++++
+ README     |    1 -
+ src/trie.c |   72 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ src/vte.c  |   50 ++++++++++++++++++++++++++++++++++-------
+ vte.spec   |    5 +++-
+ 5 files changed, 113 insertions(+), 20 deletions(-)
+
+commit 2fa3b394c54ac2cf3d72d54b74553c2fae16bc48
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 20:52:04 2002 +0000
+
+    move the python module to the non-devel package
+    
+    * vte.spec: move the python module to the non-devel package
+
+ vte.spec |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit e2a8889005ad4c2deb37babb78a54d9e263a0c99
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 19:50:33 2002 +0000
+
+    Fix arg list mismatch.
+    
+    * python/vte.override: Fix arg list mismatch.
+
+ python/vte.override |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit d8dfa0f809acb46e46e5f203e398a42f50df0856
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 19:34:07 2002 +0000
+
+    Oops, shell typo.
+    
+    * vte.spec: Oops, shell typo.
+
+ vte.spec |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 72df40d75cf96445a573fd20973b1fd81f83b2fd
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 19:26:41 2002 +0000
+
+    Add a parameter for passing in environment variables to add. Preprocess
+    
+    * src/vte.c, src/vte.h (vte_terminal_fork_command): Add a parameter for passing
+       in environment variables to add.
+     * src/termcap.c: Preprocess out unused comment() and generate() funcs.
+     * src/Makefile.am: Bump library version number.
+     * vte.spec: 0.4.0
+
+ ChangeLog           |    6 ++++
+ python/vte.defs     |    3 +-
+ python/vte.override |   84 ++++++++++++++++++++++++++++++++-------------------
+ src/Makefile.am     |    1 +
+ src/pty.c           |   16 +++++-----
+ src/pty.h           |    4 +-
+ src/termcap.c       |    2 +
+ src/vte.c           |   33 ++++++++++----------
+ src/vte.h           |    3 +-
+ src/vteapp.c        |    3 +-
+ vte.spec            |    8 ++--
+ 11 files changed, 98 insertions(+), 65 deletions(-)
+
+commit 7c97366c65ce0378b601addbbe8bb9cb246f5300
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 18:54:13 2002 +0000
+
+    subst PYGTK_DATADIR
+    
+    * configure.in: subst PYGTK_DATADIR
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bc8d25d01e146da93a2bba748c7eae818b9c64e4
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 18:51:10 2002 +0000
+
+    Build python bindings with -fPIC.
+    
+    * python/Makefile.am: Build python bindings with -fPIC.
+
+ python/Makefile.am |    2 +-
+ vte.spec           |    8 +++++++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+commit ac7de676d72e7c1fe73a094ed5c65855a2567bb9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 16:47:43 2002 +0000
+
+    Handle cases where pygtk isn't installed in the prefix we're configuring
+    
+    * configure.in, python/Makefile.am: Handle cases where pygtk isn't installed
+       in the prefix we're configuring for.
+    * src/Makefile.am: Link libvte to its library dependencies.
+
+ ChangeLog          |    4 ++++
+ configure.in       |    2 ++
+ python/Makefile.am |    2 +-
+ src/Makefile.am    |    2 ++
+ 4 files changed, 9 insertions(+), 1 deletions(-)
+
+commit 82b2469479942e963fdae942d14dbff20ea08cf1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 14 16:26:53 2002 +0000
+
+    0.3.30
+
+ vte.spec |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+commit 87fe587164fd553aa6ca0e85be21f32c3e46a1ad
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jun 13 20:36:42 2002 +0000
+
+    Stop watching for hierarchy-changed signals -- the accessible container
+    
+    * src/vteaccess.c: Stop watching for hierarchy-changed signals -- the accessible
+       container which is our parent handles it already (from msw).
+
+ ChangeLog       |    3 +++
+ src/vteaccess.c |   53 -----------------------------------------------------
+ 2 files changed, 3 insertions(+), 53 deletions(-)
+
+commit 0cf2559612f43caa23a16f71c1ab557247fa509d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Jun 13 19:25:37 2002 +0000
+
+    Re-read cursor position immediately on "cursor-moved" events, and emit the
+    
+    * src/vteaccess.c: Re-read cursor position immediately on "cursor-moved" events,
+       and emit the "text-caret-moved" signal then as well.  Don't override the
+       signal handlers for signals we emit, bad things can happen (from msw).
+
+ ChangeLog       |    5 +
+ src/vteaccess.c |  244 +++++++++++++++++++++++++++++++++----------------------
+ 2 files changed, 152 insertions(+), 97 deletions(-)
+
+commit c20d8f4f75848fed0da6404b847bdb050e71543d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 23:30:44 2002 +0000
+
+    Also tell the parent the child died when the child dies due to an uncaught
+    
+    * src/reaper.c: Also tell the parent the child died when the child dies due
+       to an uncaught signal.
+
+ ChangeLog    |    2 ++
+ src/reaper.c |    7 +++++++
+ src/vte.h    |    5 +++++
+ 3 files changed, 14 insertions(+), 0 deletions(-)
+
+commit eaacb5d11a027c920575381de5abbfd4b245b0ee
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 23:00:33 2002 +0000
+
+    Re-read the termcap when we change emulation, because the location of the
+    
+    * src/vte.c: Re-read the termcap when we change emulation, because the location
+       of the file may have changed.
+    * python/vte.override (_wrap_vte_terminal_fork_command): Handle default value
+       for the command parameter.
+
+ ChangeLog           |    5 +++++
+ python/vte.override |    4 ++--
+ python/vte.py       |   43 +++++++++++++++++++++++++++++++++++++++++++
+ src/vte.c           |   13 ++++++++++---
+ 4 files changed, 60 insertions(+), 5 deletions(-)
+
+commit 4ae8a2578e950a75c4f3760d96d7bbd67d83a30c
+Author: Matt Wilson <msw src gnome org>
+Date:   Wed Jun 12 22:08:41 2002 +0000
+
+    2002-06-12 msw implement
+    
+    2002-06-12 msw
+       * python/vte.override (_wrap_vte_terminal_fork_command): implement
+
+ ChangeLog           |    2 ++
+ python/vte.override |   43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 0 deletions(-)
+
+commit 973481e77693aeb7c093425b53a7389781c61908
+Author: Matt Wilson <msw src gnome org>
+Date:   Wed Jun 12 21:44:04 2002 +0000
+
+    2002-06-12 msw added AM_CHECK_PYTHON_HEADERS from pygtk rewrote python
+    
+    2002-06-12 msw
+       * acinclude.m4: added AM_CHECK_PYTHON_HEADERS from pygtk
+       * configure.in: rewrote python checks to be more robust
+       * python/Makefile.am (CFLAGS): include @PYTHON_INCLUDES@
+
+ ChangeLog          |    4 ++++
+ acinclude.m4       |   24 ++++++++++++++++++++++++
+ configure.in       |   20 ++++++++++++++++----
+ python/Makefile.am |    4 ++--
+ 4 files changed, 46 insertions(+), 6 deletions(-)
+
+commit 5aa864cd26b40b845e6aa699421bffd360a33690
+Author: Matt Wilson <msw src gnome org>
+Date:   Wed Jun 12 21:10:47 2002 +0000
+
+    2002-06-12 msw turn the logic around to be the right way
+    
+    2002-06-12 msw
+       * src/vte.c (vte_terminal_get_accessible): turn the logic around
+       to be the right way
+
+ ChangeLog |    3 +++
+ src/vte.c |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 4fc0ad8297b2ba8d05dcf295e912f7815d0f8b0a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 21:08:42 2002 +0000
+
+    Move python stuffs to a different subdirectory.
+    
+    * Makefile.am, src/Makefile.am: Move python stuffs to a different subdirectory.
+
+ Makefile.am         |    2 +-
+ configure.in        |   11 ++-
+ python/Makefile.am  |   16 +++
+ python/vte.defs     |  369 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ python/vte.override |   12 ++
+ python/vtemodule.c  |   49 +++++++
+ src/Makefile.am     |   15 +--
+ src/vte.defs        |   42 ------
+ src/vte.override    |    6 -
+ 9 files changed, 458 insertions(+), 64 deletions(-)
+
+commit 502568a81e082c70a0931099a4753b17a7653b3a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 20:24:40 2002 +0000
+
+    Implement vte_terminal_get_encoding and vte_terminal_get_emulation, and
+    
+    * src/vte.c, src/vte.h: Implement vte_terminal_get_encoding and
+       vte_terminal_get_emulation, and emit signals when these change.
+    * src/vteaccess.c: Emit a "text_caret_moved" signal when the cursor moves.
+
+ ChangeLog       |    6 ++-
+ src/vte.c       |  118 +++++++++++++++++++++++++++++++++++++++++--------------
+ src/vte.h       |    4 ++
+ src/vteaccess.c |   12 +++++-
+ 4 files changed, 107 insertions(+), 33 deletions(-)
+
+commit b3c3ca51c7b786a9b4fae50c65aa8096132a7b63
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 19:03:26 2002 +0000
+
+    Fix declaration errors that broke stuff.
+    
+    * src/vte.defs, src/vte.override: Fix declaration errors that broke stuff.
+
+ src/vte.defs     |    4 ++++
+ src/vte.override |    1 +
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+commit 754299b09c5a90cb5874636584a1bc92ff3ff530
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 18:55:18 2002 +0000
+
+    Add rules for building python modules.
+    
+    * configure.in, src/Makefile.am: Add rules for building python modules.
+
+ ChangeLog        |    2 ++
+ configure.in     |   14 ++++++++++++++
+ src/Makefile.am  |   13 ++++++++++++-
+ src/vte.override |    5 +++++
+ 4 files changed, 33 insertions(+), 1 deletions(-)
+
+commit 28d9d6be94b45a365dd84a8f7792669b5329b70a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 18:16:04 2002 +0000
+
+    Fix hilite clearing when scrolling delta != 0. Actually add the signals
+    
+    * src/vte.c: Fix hilite clearing when scrolling delta != 0.
+    * src/debug.c, src/debug.h: Actually add the signals debugging flag.
+
+ README          |    3 ---
+ src/debug.c     |    3 +++
+ src/debug.h     |    1 +
+ src/vte.c       |    2 +-
+ src/vteaccess.c |    5 +++--
+ 5 files changed, 8 insertions(+), 6 deletions(-)
+
+commit f0e9d6bd04827da7afd83445930a3f4fa071c830
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 12 16:23:05 2002 +0000
+
+    Cache the result of vte_terminal_get_accessible() and unref it at
+    
+    * src/vte.c: Cache the result of vte_terminal_get_accessible() and unref it at
+       finalize-time.  Add debug messages to log signals emitted by the widget.
+
+ ChangeLog |    4 ++
+ src/vte.c |  106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 109 insertions(+), 1 deletions(-)
+
+commit c57529767dc89bfec1ceab7a38e91191865f94cf
+Author: Matt Wilson <msw src gnome org>
+Date:   Wed Jun 12 16:02:30 2002 +0000
+
+    2002-06-12 msw accept end_offset of -1, which means "until the end". never
+    
+    2002-06-12 msw
+       * src/vteaccess.c (vte_terminal_accessible_get_text): accept
+       end_offset of -1, which means "until the end".
+       * src/vteaccess.c (vte_terminal_accessible_new): never set the
+       description to a NULL pointer
+
+ ChangeLog       |    5 +++++
+ src/vteaccess.c |    8 ++++----
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+commit 450bdefcadd2d5379abb4e27dbb1f68ba9ec2f1f
+Author: Christian Rose <menthos menthos com>
+Date:   Tue Jun 11 09:08:24 2002 +0000
+
+    Removed. This is a generated file and should not be stored in cvs. Added.
+    
+    2002-06-11  Christian Rose  <menthos menthos com>
+    
+       * vte.pot: Removed. This is a generated file and should not be
+       stored in cvs.
+       * .cvsignore: Added.
+       * sv.po: Added Swedish translation.
+
+ po/.cvsignore         |   11 ++++++++
+ po/ChangeLog          |    7 +++++
+ po/{vte.pot => sv.po} |   64 +++++++++++++++++++++++++++---------------------
+ 3 files changed, 54 insertions(+), 28 deletions(-)
+
+commit 6690915804fd0b597beb63e7b28fa6120299c7d9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 23:06:29 2002 +0000
+
+    Add a changelog for translations.
+    
+    * po/ChangeLog: Add a changelog for translations.
+
+ po/vte.pot   |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 47595c278977b294fcb55665c142096c67e2e05e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 22:56:13 2002 +0000
+
+    Finish merging otaylor's Xft2 patch (oops). Compute padding correctly.
+    
+    * src/vte.c: Finish merging otaylor's Xft2 patch (oops).  Compute padding
+       correctly.
+
+ ChangeLog |    8 +++++---
+ src/vte.c |    9 +++++----
+ vte.spec  |    5 ++++-
+ 3 files changed, 14 insertions(+), 8 deletions(-)
+
+commit 2173db2433b6405a0b76479f1846094173b231d6
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 19:35:31 2002 +0000
+
+    Include gettext support. Mark warnings for possible translation. Add.
+    
+    * Makefile.am, configure.in: Include gettext support.
+    * src/pty.c, src/reaper.c, src/trie.c, src/vte.c: Mark warnings for possible
+       translation.
+    * po/POTFILES.in, po/vte.pot: Add.
+
+ ChangeLog       |    3 +
+ Makefile.am     |    2 +-
+ autogen.sh      |    1 +
+ configure.in    |    8 +++-
+ po/POTFILES.in  |    4 ++
+ po/vte.pot      |  117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/caps.h      |    4 +-
+ src/debug.h     |    4 +-
+ src/pty.c       |   11 ++++-
+ src/pty.h       |    4 +-
+ src/reaper.c    |   16 +++++++-
+ src/ring.h      |    4 +-
+ src/termcap.h   |    4 +-
+ src/trie.c      |    9 ++++-
+ src/trie.h      |    4 +-
+ src/vte.c       |   66 +++++++++++++++++++------------
+ src/vte.h       |    4 +-
+ src/vteaccess.c |    8 ++++
+ src/vteaccess.h |    4 +-
+ 19 files changed, 230 insertions(+), 47 deletions(-)
+
+commit cb97abc8c28ea66334532da0f713c803d2675bbb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 18:42:05 2002 +0000
+
+    0.3.28
+
+ Makefile.am |    2 +-
+ vte.spec    |    3 +++
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit e3d439e51d5a63b113ec0719ea9a1bfdcfab802b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 18:38:49 2002 +0000
+
+    Center characters in their cells, caching their extents. Finish merging
+    
+    * src/vte.c: Center characters in their cells, caching their extents.  Finish
+       merging otaylor's Xft2 patch (oops).
+    * src/vte.c, src/vte.h: Expose vte_terminal_set_encoding().
+
+ ChangeLog |    2 ++
+ src/vte.c |   10 +++++++---
+ src/vte.h |    3 +++
+ vte.spec  |    3 ++-
+ 4 files changed, 14 insertions(+), 4 deletions(-)
+
+commit 0fa0b817b350b7cc1ab59eccbeacc1346209402c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 10 14:31:35 2002 +0000
+
+    0.3.27
+
+ vte.spec |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit e2ca5bd706a6f88520be29d9fe4bba0886e93541
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Jun 9 05:54:39 2002 +0000
+
+    Make reaper an EXTRA prog, not a NOINST prog.
+    
+    * src/Makefile.am: Make reaper an EXTRA prog, not a NOINST prog.
+
+ src/Makefile.am |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 6fe781c76ed8f8bc69d292a705d5011a837babfb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Jun 9 04:42:57 2002 +0000
+
+    Adjust font padding to account for characters with wcwidth() != 1.
+    
+    * src/vte.c: Adjust font padding to account for characters with wcwidth() != 1.
+
+ src/vte.c |   63 +++++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 33 insertions(+), 30 deletions(-)
+
+commit beb4529109c5737ed32b319bcf45abfaec3019ec
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 7 21:55:03 2002 +0000
+
+    Center characters in their cells, caching their extents.
+    
+    * src/vte.c: Center characters in their cells, caching their extents.
+
+ ChangeLog |    2 +
+ src/vte.c |   68 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 58 insertions(+), 12 deletions(-)
+
+commit 869a5edc9ea17d09544cd89a8c096f44e4741a55
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Jun 7 16:58:50 2002 +0000
+
+    Check for pangoxft with Xft1 or Xft2, hopefully getting things right for
+    
+    * configure.in: Check for pangoxft with Xft1 or Xft2, hopefully getting
+       things right for either case.  Patches by andersca and otaylor.
+    * src/reaper.c, src/reaper.h: Add a singleton object to watch for
+       SIGCHLD when child processes quit.
+    * src/vte.c, src/vte.h: Add get_cursor_position(). Remove get_snapshot()
+       and free_shapshot(). Emit a "child-exited" signal when a child started
+       with fork_command() exits.  Fix a logic bug that caused us to scroll
+       to the bottom even if the user just pressed and released a modifier
+       key.  Fix saving of the font in set_font() in most cases, where we
+       weren't saving the new font before.  Scroll-to-bottom on input method
+       commits, which are also the result of keystrokes, when
+       scroll-on-keystroke is enabled.
+    * src/vte.c: Use FcNameUnparse() instead of XftNameUnparse in Xft2.  Patch from
+       otaylor.
+    * src/vte.defs: Add.  Not very useful yet.
+    * src/vteaccess.c: Rework to use get_text() and get_cursor_position()
+       instead of get_snapshot(), so that selection and accessibility both
+       agree on what's visible (or "visible").
+
+ ChangeLog       |   21 ++
+ README          |    7 +-
+ configure.in    |   22 ++-
+ src/Makefile.am |   28 ++-
+ src/reaper.c    |  232 +++++++++++++++++++++
+ src/reaper.h    |   64 ++++++
+ src/termcap.c   |    5 +
+ src/vte.c       |  601 +++++++++++++++++++++++++------------------------------
+ src/vte.defs    |   38 ++++
+ src/vte.h       |   23 +--
+ src/vteaccess.c |  453 +++++++++++++++++++++++-------------------
+ src/vteapp.c    |   16 ++-
+ vte.spec        |    8 +-
+ 13 files changed, 945 insertions(+), 573 deletions(-)
+
+commit b392abcb72e5f7a2a67d65b2dcb3beb6626c8c9c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 5 18:50:36 2002 +0000
+
+    1.3.25
+    
+    * vte.spec: 1.3.25
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit fdcf82b18420916520003cd39f4ab00f74e47557
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Jun 5 18:41:22 2002 +0000
+
+    Don't attempt to handle the ac capability. Try to compute a more sensible
+    
+    * src/vte.c: Don't attempt to handle the ac capability.  Try to compute a more
+       sensible character width when using Xft.
+
+ src/vte.c |   15 ++++++++++++---
+ 1 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 16906be59cf18a2acaa15f1ad3638eeb8904f65d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Jun 4 23:15:51 2002 +0000
+
+    Remove the ac and ma capabilities, which aren't strings.
+
+ src/caps.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+commit e965a0406d36cfc1d3a3fdfc5f84cd2e56202f59
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 3 19:42:00 2002 +0000
+
+    include <unistd.h> instead of <getopt.h>, patch from HideToshi Tajima.
+    
+    * src/vteapp.c: include <unistd.h> instead of <getopt.h>, patch from
+       HideToshi Tajima.
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7c00ac1ce443babebb1102d1793967bce9a7b5de
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Jun 3 16:08:24 2002 +0000
+
+    Tweak handling of invalid multibyte characters, preventing some hangs.
+    
+    * src/vte.c: Tweak handling of invalid multibyte characters, preventing
+       some hangs.
+
+ src/vte.c |    6 ++----
+ vte.spec  |    5 ++++-
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+commit a66cbc23aaf3ef58dd156fd04286a6d965d70e9a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 31 23:41:02 2002 +0000
+
+    Finish switching iconv to g_iconv. I think this was a part of Hidetoshi
+    
+    * src/trie.c, src,vte.c: Finish switching iconv to g_iconv.  I think this was
+       a part of Hidetoshi Tajima's patch that I lost.  Free regexes when
+       we're done with them.
+    * src/vte.c: Implement font setting using PangoX to convert Pango font
+       descriptions to core font xlfds for use when drawing with Xlib.
+
+ ChangeLog  |   10 ++++-
+ src/trie.c |   17 +++----
+ src/vte.c  |  145 +++++++++++++++++++++++++++++++++++-------------------------
+ vte.spec   |    6 ++-
+ 4 files changed, 106 insertions(+), 72 deletions(-)
+
+commit c3285ec2305e3c524bb06fa1a31267c20aafa16b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 29 00:27:24 2002 +0000
+
+    Always free the segment when freeing arrays and strings.
+    
+    * src/vte.c, src/vteaccess.c: Always free the segment when freeing arrays and
+    strings.
+
+ ChangeLog       |    2 ++
+ src/vte.c       |   11 ++++++-----
+ src/vteaccess.c |    8 ++++----
+ vte.spec        |    5 ++++-
+ 4 files changed, 16 insertions(+), 10 deletions(-)
+
+commit c8cd575e5ccd8a246562cc1d14d94aaf3fdeb4f0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 28 23:11:38 2002 +0000
+
+    Fix make distcheck.
+    
+    * Makefile.am, autogen.sh, configure.in: Fix make distcheck.
+
+ autogen.sh   |    2 +-
+ configure.in |    3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit df2bf4b5e43d5e5dd6b46ea7a7cc8589338c95c2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 28 22:52:34 2002 +0000
+
+    Fix cb() and ce() when the cursor is on a line without data (needed to
+    
+    * src/vte.c: Fix cb() and ce() when the cursor is on a line without data
+    (needed to create it) and when cells being cleared don't exist (needed to
+    create them).
+
+ ChangeLog |    4 ++-
+ src/vte.c |  115 ++++++++++++++++++++++++++++++++++++------------------------
+ vte.spec  |    5 ++-
+ 3 files changed, 76 insertions(+), 48 deletions(-)
+
+commit 194a0bf169eac4290a1a05f18fb3f1229720138d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 28 18:13:03 2002 +0000
+
+    Fix matching when scrolling delta isn't zero, really this time. Fix async
+    
+    * src/vte.c: Fix matching when scrolling delta isn't zero, really this time.
+    Fix async background updating (report from Richard Neal Plana).
+
+ ChangeLog |    3 +-
+ src/vte.c |   77 ++++++++++++++++++++++++++++++++++++------------------------
+ 2 files changed, 48 insertions(+), 32 deletions(-)
+
+commit 4d4f1bdf75ab2d85cb41760e3ebaae4532227860
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 28 15:30:49 2002 +0000
+
+    Fix matching when scrolling delta isn't zero.
+    
+    * src/vte.c: Fix matching when scrolling delta isn't zero.
+
+ ChangeLog |    3 +++
+ src/vte.c |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletions(-)
+
+commit f688e2b43a0f994da117a486692772944d5e0d88
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 24 18:46:28 2002 +0000
+
+    Call libtoolize. (#82836) Fix stupid segfault in set_scrollback_lines.
+    
+    * autogen.sh: Call libtoolize. (#82836)
+    * src/vte.c: Fix stupid segfault in set_scrollback_lines.  (Patch from notting.)
+       Make another attempt to convert Pango font descriptions to xlfds.
+    * src/vte.c, src/vte.h: Expose set_emulation().
+    * src/vteapp.c: Add -c, -f, -t command-line flags for easier testing.
+
+ ChangeLog    |    7 ++
+ README       |    1 +
+ src/vte.c    |  177 ++++++++++++++++++++++++++++++++++-----------------------
+ src/vte.h    |    3 +
+ src/vteapp.c |   27 ++++++++-
+ vte.spec     |    5 +-
+ 6 files changed, 145 insertions(+), 75 deletions(-)
+
+commit 817d66802765605c413beb01185629bbd085f17c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 24 14:41:10 2002 +0000
+
+    Invoke libtoolize.
+
+ autogen.sh |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit faae3bfc6462009405b5e97a8e21e7803386cc9f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 22 04:19:22 2002 +0000
+
+    Fix hiliting of matched strings to better match the returned matched
+    
+    * src/vte.c: Fix hiliting of matched strings to better match the returned
+       matched string in match_check().
+
+ ChangeLog |    4 +++
+ README    |    2 -
+ src/vte.c |   71 +++++++++++++++++++++++++++++++++++++++---------------------
+ 3 files changed, 50 insertions(+), 27 deletions(-)
+
+commit 17b539566a092f110f6aecc8e68c135247dbc581
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 21 21:50:23 2002 +0000
+
+    Filter key release events through input methods. (Patch from otaylor.)
+    
+    * src/vte.c: Filter key release events through input methods.  (Patch from
+       otaylor.)  When building with gcc, use -std=c99.
+
+ ChangeLog    |    3 +++
+ configure.in |    1 +
+ src/vte.c    |   11 +++++++++++
+ 3 files changed, 15 insertions(+), 0 deletions(-)
+
+commit 1858046b2a9e3bf4ac6951171c55c85d09197a1d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 21 16:54:40 2002 +0000
+
+    0.3.19
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 13a2a609868858fb30ee68ba9baddcb31ad91480
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 21 15:36:52 2002 +0000
+
+    Patch from Hidetoshi Tajima to fix building on Solaris systems, remove use
+    
+    * autogen.sh, src/termcap.c, src/utf8echo.c, src/vte.c: Patch from Hidetoshi
+       Tajima to fix building on Solaris systems, remove use of syntax that
+       might be specific to gcc, and fix an overrun in vte_termcap_generate().
+       (#82433)
+
+ ChangeLog       |    9 +++++
+ README          |    8 ++++
+ autogen.sh      |   99 ++++++++++++++++++++++++++++++++++++++++++++++++-------
+ configure.in    |    2 +-
+ src/Makefile.am |    1 +
+ src/termcap.c   |    6 ++--
+ src/utf8echo.c  |   12 +++---
+ src/vte.c       |   45 +++++++++++++++----------
+ 8 files changed, 142 insertions(+), 40 deletions(-)
+
+commit 0b343b1d7b1aae735b86ef5eb0760c91d5b867ed
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Mon May 20 14:06:30 2002 +0000
+
+    2002-05-18 andersca Don't queue a background update if the background
+    
+    2002-05-18 andersca
+       * src/vte.c: Don't queue a background update if the background isn't
+       transparent.
+
+ ChangeLog |    3 +++
+ src/vte.c |    5 ++++-
+ 2 files changed, 7 insertions(+), 1 deletions(-)
+
+commit a19cc1f83fb4ad89b68bcf46b6a738a9176148fe
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 17 02:25:25 2002 +0000
+
+    Try multiple versions of autoconf, too.
+    
+       * autogen.sh: Try multiple versions of autoconf, too.
+
+ autogen.sh |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit e4758d1b38f2a348a8c9928a2cd730a087e9e652
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 17 02:17:41 2002 +0000
+
+    Try multiple versions of automake, just in case. Fix displaying of
+    
+    * autogen.sh: Try multiple versions of automake, just in case.
+    * src/vte.c: Fix displaying of underlined text.  Finish implementing matching.
+    * src/vteapp.c: Set "abcdefg" as a match string.
+
+ ChangeLog    |    3 +-
+ autogen.sh   |    4 +-
+ src/vte.c    |  263 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ src/vteapp.c |    3 +
+ vte.spec     |    5 +-
+ 5 files changed, 259 insertions(+), 19 deletions(-)
+
+commit 775bdd468bd6d7d2dbf26e7e10c34667a1100e54
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 16 23:04:32 2002 +0000
+
+    rework a couple of rules to make automake happy again.
+    
+    * src/Makefile.am: rework a couple of rules to make automake happy again.
+
+ src/Makefile.am |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 909c505d3a03de567c77da604d353b71f72df6a1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 16 23:01:29 2002 +0000
+
+    Snip trailing whitespace off of copied lines, insert an end-of-line only
+    
+       * src/vte.c: Snip trailing whitespace off of copied lines, insert an
+       end-of-line only when the copied line doesn't go to the right edge,
+       don't overrun right edge, even in insert mode.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   40 ++++++++++++++++++++++++++++------------
+ vte.spec  |    5 ++++-
+ 3 files changed, 36 insertions(+), 13 deletions(-)
+
+commit b72c6a398dab93bee5151859e7912ae575caa093
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 15 23:30:01 2002 +0000
+
+    Send kI on insert key. Don't send drag events when the child has only
+    
+       * src/vte.c: Send kI on insert key.  Don't send drag events when the
+       child has only asked for click events.  Fix crashbugs in selection.
+       When getting scroll events, send mouse 4/5 events to the child instead
+       of performing a history scroll if the child wants mouse events.  Start
+       adding match support, merging how selection views the buffer with how
+       matching views the buffer, though matching doesn't work yet.
+
+ ChangeLog |    7 +
+ src/vte.c |  513 +++++++++++++++++++++++++++++++++++++++++++++----------------
+ src/vte.h |   75 ++++++++--
+ vte.spec  |   10 +-
+ 4 files changed, 457 insertions(+), 148 deletions(-)
+
+commit 9820fa1c0b0e3dfaed6a460f9c88610aad4e1b3e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 14 22:02:40 2002 +0000
+
+    Don't send motion-tracking events to the child unless we're dragging. Fix
+    
+       * src/vte.c: Don't send motion-tracking events to the child unless
+       we're dragging.  Fix ce so that it works even right after startup.
+       Make sure that repainting the entire window actually exposes the
+       visible parts of the window.  Fix tab clearing to also allow removal of
+       the current tabstop.  Implement save-mode and restore-mode.  Start on
+       reverse-video mode.  Don't scroll on modifier keypress events.  Rework
+       part of clipboard copy.
+       * termcaps/xterm: Add missing F11/F12/End keysyms to bundled xterm
+       termcap.
+
+ ChangeLog      |   10 +-
+ src/caps.c     |    4 +-
+ src/trie.c     |   96 +++++++++-
+ src/trie.h     |    3 +
+ src/vte.c      |  647 ++++++++++++++++++++++++++++++++++++--------------------
+ termcaps/xterm |    7 +-
+ vte.spec       |    5 +-
+ 7 files changed, 533 insertions(+), 239 deletions(-)
+
+commit b961d28996f665464d679c54373d1256169ac331
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 14 14:38:35 2002 +0000
+
+    Don't try to draw nul characters.
+    
+    * src/vte.c: Don't try to draw nul characters.
+
+ ChangeLog |    2 ++
+ src/vte.c |    2 +-
+ vte.spec  |    7 +++++--
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit eb142a6689c140d8f598453bceae4f0ac390272a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue May 14 00:42:35 2002 +0000
+
+    Add "ALL" as a debug flag, aliased to everything. Print debug info after
+    
+    * src/debug.c: Add "ALL" as a debug flag, aliased to everything.
+    * src/pty.c: Print debug info after redirecting stdio.
+    * src/trie.c: When debugging, count only decision nodes.
+    * src/vte.c: Fix se, for real this time.  Add a mostly-ignored protected
+       attribute.  Handle am, bw, ul flags properly.  Make cd clear the current
+       line, too.  Make ce fill the current default attributes through the end
+       of the line.  Handle cS.  Fix cv to work when we have a scrollback
+       buffer.  Handle ll, mp.  Line wrap on nd.  Reset tab stops on hard reset
+       only.  Handle soft-reset and full-reset.  Handle uc.  Initialize
+       scrollback line count properly.  Tweak drawing of alternate 'a' to get
+       rid of artifacts.  Reset insert mode, cursor visibility, and scrolling
+       regions when resetting.
+
+ ChangeLog   |   13 ++
+ README      |    6 +-
+ autogen.sh  |    2 +-
+ src/debug.c |    3 +
+ src/pty.c   |   27 ++--
+ src/trie.c  |    2 +-
+ src/vte.c   |  470 ++++++++++++++++++++++++++++++++++++++++++++---------------
+ src/vte.h   |    3 +-
+ vte.spec    |    5 +-
+ 9 files changed, 393 insertions(+), 138 deletions(-)
+
+commit c4f86f25e8c851fdb7fd433e7114bb8cf21de8f5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 10 23:45:21 2002 +0000
+
+    Make delete mode a no-op, fix ic/IC (#81417).
+    
+    * src/vte.c: Make delete mode a no-op, fix ic/IC (#81417).
+
+ ChangeLog |    3 +++
+ src/vte.c |   21 ++++++++++++---------
+ 2 files changed, 15 insertions(+), 9 deletions(-)
+
+commit bed9c035d7c4e226d9087f87b4c01d660fd7e4dc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 10 00:29:42 2002 +0000
+
+    Implement bt, ct, st. Reimplement ta.
+    
+    * src/vte.c: Implement bt, ct, st.  Reimplement ta.
+
+ ChangeLog |    1 +
+ README    |    4 +-
+ src/vte.c |  150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 144 insertions(+), 11 deletions(-)
+
+commit 265b32f280c4417ea6c0a1af70bd7859b80f6efb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 9 23:54:35 2002 +0000
+
+    Fixes to usage of iconv, from otaylor. Remap characters which are missing
+    
+    * src/vte.c: Fixes to usage of iconv, from otaylor.  Remap characters which are
+       missing in the current font to others in the current font, if possible,
+       from otaylor.  Change default emulation to "xterm", cleaning up
+       confusion over what standout really means.  Reorganize some internals.
+       Complain when an application sends us a key-press sequence, as if we
+       knew what to do with one of those.
+    * src/vte.c, src/vte.h: Implement vte_terminal_reset().
+    * src/debug.c, src/debug.h: Added to centralize some debugging settings.
+    * everywhere: Punt the question of whether or not to print debug spew to
+       run-time, suggested by otaylor.
+    * termcaps/xterm: Added.
+
+ ChangeLog            |    8 +
+ README               |    4 +-
+ src/Makefile.am      |   12 +
+ src/debug.c          |   59 ++
+ src/debug.h          |   35 ++
+ src/pty.c            |    5 +-
+ src/ring.c           |   36 +-
+ src/trie.c           |   26 +-
+ src/vte.c            | 1633 +++++++++++++++++++++++++++++++++-----------------
+ src/vte.h            |    1 +
+ src/vteaccess.c      |   45 +-
+ src/vteapp.c         |    6 +-
+ termcaps/Makefile.am |    4 +-
+ termcaps/xterm       |   28 +
+ vte.spec             |    6 +-
+ 15 files changed, 1305 insertions(+), 603 deletions(-)
+
+commit 0f6befd404efad9584311f0bea326034170b83c8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 8 22:20:57 2002 +0000
+
+    Warning fixes and cleanups.
+    
+    * src/vte.c: Warning fixes and cleanups.
+
+ src/vte.c |   11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+commit fce004c8c6ed9b6e6dd6f2803bf4d86edb397562
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 8 22:12:10 2002 +0000
+
+    Implement mouse button events and motion-event and any-event tracking.
+    
+    * src/vte.c: Implement mouse button events and motion-event and any-event
+       tracking.  Implement the rest of the special graphics characters.
+       Rename signals to be more consistent.  Add thin wrappers for emitting
+       signals, and use them everywhere.  Support pangox even when XFT isn't
+       available.  Try to provide bold text again.  Add signals for most of
+       the window manipulation control sequences.  Hide the mouse cursor when
+       we get keyboard events.  Use a different mouse cursor if the child is
+       mouse-aware.  Handle eA() by treating it as as().
+    * src/caps.c, src/caps.h: Export definitions of VTE_CAP_CSI and friends.
+    * src/ring.c: Remove a check in vte_ring_at() which is already made before
+       the function is called.
+
+ ChangeLog  |    6 +-
+ README     |   16 +-
+ src/ring.c |   15 +-
+ src/vte.c  |  756 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ vte.spec   |    5 +-
+ 5 files changed, 668 insertions(+), 130 deletions(-)
+
+commit 08b8caa553cf20f9fd7e40b1a1bd8c85294f438b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 6 23:14:27 2002 +0000
+
+    Hide the mouse cursor when we get keyboard events. Use a different mouse
+    
+    * src/vte.c: Hide the mouse cursor when we get keyboard events.  Use a
+       different mouse cursor if the child is mouse-aware.  Handle eA() by
+       treating it as as().
+    * src/vte.c, src/vte.h: Allow enabling/disabling of mouse autohide.
+
+ ChangeLog    |    3 +
+ README       |    2 +-
+ src/vte.c    |  240 ++++++++++++++++++++++++++++++++++++++++++++--------------
+ src/vte.h    |    3 +
+ src/vteapp.c |    1 +
+ vte.spec     |    5 +-
+ 6 files changed, 194 insertions(+), 60 deletions(-)
+
+commit 14b0aa82214da4bfc5243be3ab8c097924d69528
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 6 21:53:07 2002 +0000
+
+    Start handling mouse button down / button up events.
+    
+    * src/vte.c: Start handling mouse button down / button up events.
+
+ ChangeLog |    2 +-
+ src/vte.c |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ vte.spec  |    5 ++-
+ 3 files changed, 105 insertions(+), 7 deletions(-)
+
+commit 9d8fe49fb582d45b30c417e4139581053122d6bf
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 6 20:55:15 2002 +0000
+
+    Fix an inadvertent mixing of preprocessor logic with code.
+    
+    * src/vte.c: Fix an inadvertent mixing of preprocessor logic with code.
+
+ src/vte.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 45ce677ee3aaf79d5859b5922ea95cfca25f17f8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon May 6 20:51:06 2002 +0000
+
+    Finish implementing window-manipulation sequences. Rename signals to be
+    
+    * src/vte.c: Finish implementing window-manipulation sequences.  Rename signals
+       to be more consistent.  Add thin wrappers for emitting signals, and use
+       them everywhere.  Support pangox even when XFT isn't available.  Try to
+       provide bold text again.  Add signals for most of the window
+       manipulation control sequences.  Implement device-status-report and
+       dec-device-status-report.  Clamp location values in sequence_handler_cm
+       to the dimensions of the terminal window so that resize(1) will work
+       right.
+    * src/caps.c, src/caps.h: Export definitions of VTE_CAP_CSI and friends.
+
+ ChangeLog  |   12 +
+ src/caps.c |   31 +--
+ src/caps.h |    7 +
+ src/vte.c  |  704 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/vte.h  |   14 +-
+ vte.spec   |    5 +-
+ 6 files changed, 694 insertions(+), 79 deletions(-)
+
+commit 4b3f54222ae0eaafc64e1a9326042c5a012a1c2f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri May 3 21:21:25 2002 +0000
+
+    Export a vte_termcap_strip() function for preprocessing escape sequences
+    
+    * src/termcap.c: Export a vte_termcap_strip() function for preprocessing
+       escape sequences and whatnot from capability values.
+    * src/typescrypt: Removed.
+    * src/vte.c: Pass the hard-coded xterm-specific capabilities through
+       vte_termcap_strip(), which fixes a few weird bugs.  Discard invalid
+       might-be-control-sequence sequences, like other emulators do.  Don't
+       consider modifier keys, by themselves, to be enough to scroll-on-key.
+       When snapshotting, actually snapshot all of a row instead of just the
+       last character.  Don't run past the end of snapshot contents when
+       reading them.
+    * src/vteaccess.c: Clamp offsets so that they always sort right.
+
+ ChangeLog       |   12 +++++++
+ src/termcap.c   |   14 +++++++-
+ src/termcap.h   |    3 ++
+ src/trie.c      |   15 ++++++--
+ src/typescript  |   76 ------------------------------------------
+ src/vte.c       |   62 +++++++++++++++++++++++++---------
+ src/vteaccess.c |   98 ++++++++++++++++++++++++++++++++++++++++++++++++-------
+ vte.spec        |    6 +++-
+ 8 files changed, 174 insertions(+), 112 deletions(-)
+
+commit cf348c8da67cc21b8f0f1bc04cb112becfaf91c2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 2 23:31:55 2002 +0000
+
+    0.3.6
+
+ vte.spec |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+commit 823bf5b6426b9805b7e183abfd92630e0f556d7f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 2 23:31:19 2002 +0000
+
+    Hook up ts/te, ks/ke sequence handlers. Fix initialization crash bugs.
+    
+    * src/vte.c: Hook up ts/te, ks/ke sequence handlers.
+    * src/vteaccess.c: Fix initialization crash bugs.
+
+ ChangeLog       |    4 ++-
+ src/vte.c       |   52 +++++++++++++++++++++++++++--
+ src/vteaccess.c |   98 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ 3 files changed, 136 insertions(+), 18 deletions(-)
+
+commit ab1b7b660db6f9ea5b1d142e97749e232e708be5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 2 20:48:18 2002 +0000
+
+    fix parsing of octal codes which start with "1" instead of "0" munge as
+    
+    * src/termcap.c: fix parsing of octal codes which start with "1" instead of "0"
+    * src/vte.c: munge as many invalid multibyte characters as necessary to get
+       past decoding errors.
+
+ ChangeLog     |    6 +++++-
+ src/termcap.c |    1 +
+ src/trie.c    |    6 ++++++
+ src/vte.c     |    9 +++++----
+ vte.spec      |    5 ++++-
+ 5 files changed, 21 insertions(+), 6 deletions(-)
+
+commit 7df826f2358df847542716ad585d9982ff141cef
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 2 19:55:29 2002 +0000
+
+    Fix a crashbug due to mismatch between parent field in the object's
+    
+    * src/vteaccess.h: Fix a crashbug due to mismatch between parent field
+       in the object's structure and its inherited object's type.  More to go.
+    * src/trie.c: Fix a logic bug which caused intermittent escape sequence
+       recognition errors in the trie partial-match code.
+    * src/vte.c: Don't use $SHELL, which might have been set by a libtool wrapper,
+       as a default shell when we get NULL as a command.  Use 80x24 as the
+       default window size -- I'm pretty sure the termcap parsing is correct
+       now, so no need to use 60x18 to detect when it's broken.
+
+ ChangeLog       |   22 +++++++++++++++-------
+ src/trie.c      |   29 ++++++++++++++---------------
+ src/vte.c       |   50 ++++++++++++++++++++++++++------------------------
+ src/vteaccess.c |   10 +++++-----
+ src/vteaccess.h |    4 ++--
+ vte.spec        |    6 +++++-
+ 6 files changed, 67 insertions(+), 54 deletions(-)
+
+commit 386e1b45a5e205f28a29f1c3da82c7fcd6342c91
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu May 2 08:33:23 2002 +0000
+
+    Rework trie matching to return the address of the character which ended
+    
+    * src/trie.c: Rework trie matching to return the address of the
+       character which ended the match attempt, which should cut down on
+       useless initial-substring checks.  Remove several gdk_window_scroll()
+       calls which apparently aren't buffered.  Convert invalid multibyte
+       characters to '?' instead of just dropping them.  Provide a means of
+       setting the backspace/delete bindings.  Add a poor xlfd_from_pango
+       mapping function which would need serious work to be useful.  Get rid
+       of warnings when we're transparent and the root widnow pixmap isn't as
+       big as the root window because it's tiled.
+
+ ChangeLog       |   10 +
+ src/interpret.c |    2 +-
+ src/ring.c      |    2 +
+ src/trie.c      |  127 +++++++++++----
+ src/trie.h      |    3 +-
+ src/vte.c       |  490 +++++++++++++++++++++++++++++++++++++++++--------------
+ src/vte.h       |   13 ++-
+ src/vteaccess.c |    5 +-
+ src/vteapp.c    |    2 +-
+ vte.spec        |    2 +-
+ 10 files changed, 496 insertions(+), 160 deletions(-)
+
+commit 92d904d5dd39221b2ab942c2cc59056a50b357cc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed May 1 15:40:13 2002 +0000
+
+    Try @pkgdatadir@/termcap/$TERM when reading termcap files. This fixes the
+    
+    * src/vte.c: Try @pkgdatadir@/termcap/$TERM when reading termcap files.  This fixes the app on systems 
with no /etc/termcap, and also speeds up loads and reduces memory consumption for xterm-color at the expense 
of making on-the-fly emulation changes impossible.  Don't xor reverse with itself when drawing characters 
(this broke when snapshotting was added).
+    * termcaps/Makefile.am, termcaps/xterm-color: include a default termcap         for xterm-color.
+    * src/termcap.c src/termcap.h: make _find_boolean return a gboolean instead of an int.
+
+ ChangeLog            |   11 +++++++++++
+ Makefile.am          |    2 +-
+ configure.in         |   10 +++++++++-
+ src/termcap.c        |   15 ++++++++++++---
+ src/termcap.h        |    4 ++--
+ src/vte.c            |   18 +++++++++++++++---
+ termcaps/Makefile.am |    3 +++
+ termcaps/xterm-color |   27 +++++++++++++++++++++++++++
+ vte.spec             |    6 +++++-
+ 9 files changed, 85 insertions(+), 11 deletions(-)
+
+commit 4461f119849629f1ecca1003e78113d8cc3aa8fc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 30 23:15:58 2002 +0000
+
+    Disconnect from toplevel configure events at finalize-time.
+    
+    * src/vte.c: Disconnect from toplevel configure events at finalize-time.
+
+ ChangeLog |    4 ++++
+ src/vte.c |   11 ++++++++++-
+ vte.spec  |    5 ++++-
+ 3 files changed, 18 insertions(+), 2 deletions(-)
+
+commit cdf1940aa5107ae317b8f3696e6bb0808f8c422f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 30 22:06:35 2002 +0000
+
+    Track and free idle task tags properly. Change F11 and F12 capabilities
+    
+    * src/vte.c: Track and free idle task tags properly.  Change F11 and F12
+       capabilities from 'k;' and 'F1' to 'F1' and 'F2'.  Send a NUL on
+       control space. (#80350)  Allow setting and checking of word characters,
+       and change select-by-word behavior to use the word character list.  Emit
+       "contents_changed" signals whenever the visible contents change, and
+       "cursor_moved" when the cursor moves.  Add snapshotting method.  Scroll
+       when auto-margin handling moves the cursor to the next line.  Assume
+       that the locale charset is actually ISO-8859-1 when we're in a UTF-8
+       locale, so we don't toggle from UTF-8 to UTF-8.  Treat GDK_KP_Page_Up
+       as a GDK_Page_Up, ditto for GDK_KP_Page_Down and GDK_KP_Tab and
+       GDK_KP_Space.  Add vte_terminal_get_font().  Don't bother messing with
+       ring buffers if we're resizing them to their current sizes.
+    * src/pty.c, src/vte.c: Return a pid from vte_terminal_fork_command().
+    * src/vteaccess.c, src/vteaccess.h: Add VteTerminalAccessible object type.  It
+       might even work, mostly.
+
+ ChangeLog       |   18 ++-
+ README          |    2 +-
+ configure.in    |    1 +
+ src/Makefile.am |    6 +-
+ src/pty.c       |    1 +
+ src/vte.c       |  545 +++++++++++++++++++++++++++++++++++---------
+ src/vte.h       |   47 ++++-
+ src/vteaccess.c |  675 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/vteaccess.h |   63 +++++
+ vte.spec        |    9 +-
+ 10 files changed, 1241 insertions(+), 126 deletions(-)
+
+commit 2c418085fcfbb5fbefcdc840b5b5ba516d4af849
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 29 18:55:55 2002 +0000
+
+    Track and free idle task tags properly.
+    
+    * src/vte.c: Track and free idle task tags properly.
+
+ ChangeLog |    3 ++
+ src/vte.c |   83 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 73 insertions(+), 13 deletions(-)
+
+commit 93bd9f1619ada35b3f7248adf432adb5b3003808
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 29 18:23:06 2002 +0000
+
+    Handle me() by resetting all attributes (including colors, which we
+    
+    * src/vte.c: Handle me() by resetting all attributes (including
+    colors, which we weren't resetting before).
+
+ ChangeLog |    6 +++++-
+ src/vte.c |    8 +-------
+ 2 files changed, 6 insertions(+), 8 deletions(-)
+
+commit d1f7309ea90e51362ae3627788ab6e66f675df31
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 29 15:02:15 2002 +0000
+
+    Handle kb by treating it as a backspace. Make pangox rendering the
+    
+    * src/vte.c: Handle kb by treating it as a backspace.  Make pangox
+      rendering the default.  Handle control-key sequences better, unless
+      the input method is hiding the modifiers from us.  Set the default
+      TERM variable to "xterm-color".
+    * src/vte.c src/vte.h: Get rid of vte_terminal_set_core_font().
+
+ ChangeLog    |    7 ++++++
+ Makefile.am  |   10 ++++++--
+ src/vte.c    |   66 +++++++++++++++++++++++++++++++++------------------------
+ src/vte.h    |    1 -
+ src/vteapp.c |    2 +-
+ vte.spec     |    5 +++-
+ 6 files changed, 57 insertions(+), 34 deletions(-)
+
+commit 3031a899eaa0372f62ac8952f24b1217c846c520
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 23:15:43 2002 +0000
+
+    0.2.1
+
+ vte.spec |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit fe80bf4b546886f7a7931a8abea3d722b6d54c2b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 23:15:17 2002 +0000
+
+    Punt all changes to background images and transparency to an idle task.
+    
+    * src/vte.c: Punt all changes to background images and transparency
+       to an idle task.  Only insert newlines into the copy buffer when the
+       last column in a given line doesn't have a character in it.
+
+ ChangeLog |    4 +++
+ src/vte.c |   62 +++++++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 38 insertions(+), 28 deletions(-)
+
+commit 1be8627c33c2a83f2aadd432c9565598c00c25fb
+Author: Bill Nottingham <notting src gnome org>
+Date:   Fri Apr 26 21:35:45 2002 +0000
+
+    use execlp/execvp
+
+ ChangeLog |    3 +++
+ src/pty.c |   10 +++-------
+ 2 files changed, 6 insertions(+), 7 deletions(-)
+
+commit d05e9f47035f0472ee8e4aabf1d9cb255c86e94e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 19:08:10 2002 +0000
+
+    *** empty log message ***
+
+ ChangeLog |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 03af8398a4c4f77d730d3fae304e87e5da04ad99
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 19:07:54 2002 +0000
+
+    set a default scrollback line limit of 100. preserve the visible part of
+    
+    * src/vteapp.c: set a default scrollback line limit of 100.
+    * src/vte.c: preserve the visible part of the screen across scrollback size changes.
+
+ src/Makefile.am |    2 +-
+ src/vte.c       |   99 ++++++++++++++++++++++++-------------------------------
+ src/vteapp.c    |    1 +
+ 3 files changed, 45 insertions(+), 57 deletions(-)
+
+commit b1fd47d1a02451e17eca5408be6dee65f34d6055
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 16:22:13 2002 +0000
+
+    include config.h. fix adjustment calculations, which i didn't get quite
+    
+    * src/ring.c: include config.h.
+    * src/vte.c: fix adjustment calculations, which i didn't get quite right.
+
+ ChangeLog  |    2 +-
+ src/ring.c |    2 +-
+ src/vte.c  |    3 +--
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 488314375b9bfa1133f1e87aef5e77c0abeff01c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 16:09:29 2002 +0000
+
+    add a ring buffer for storing scrollback data. use a ring buffer instead
+    
+    * src/Makefile.am, src/ring.c, ring.h: add a ring buffer for storing scrollback data.
+    * src/vte.c: use a ring buffer instead of a GArray to hold scrollback rows.
+
+ ChangeLog       |    5 +
+ src/Makefile.am |   10 ++-
+ src/ring.c      |  292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/ring.h      |   41 ++++++++
+ src/vte.c       |  183 ++++++++++++++++++++---------------
+ 5 files changed, 451 insertions(+), 80 deletions(-)
+
+commit 738726cf0382a15b9ae171d1c8c52d25ae2390fb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 26 04:49:30 2002 +0000
+
+    Run autogen before tagging so that the tag is always correct.
+    Update docs.
+    Add pangox to the list of GTK+ 2.0 modules we link with.
+    Add vte_terminal_set_scrollback_lines(), add some code to use pangox for rendering before trying core 
rendering, which should make font selection actually work.
+
+ ChangeLog    |   10 ++
+ Makefile.am  |   12 +-
+ README       |    9 +-
+ configure.in |    2 +-
+ src/vte.c    |  296 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ src/vte.h    |    2 +
+ src/vteapp.c |    4 +
+ vte.spec     |    6 +-
+ 8 files changed, 303 insertions(+), 38 deletions(-)
+
+commit 32db0e81389b0f4df635c08c37139ade996f5d66
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 18:15:01 2002 +0000
+
+    Add the changelog.
+
+ ChangeLog |  518 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ vte.spec  |    6 +-
+ 2 files changed, 523 insertions(+), 1 deletions(-)
+
+commit ee090d8d4753c9333ffb7571d1710fdca3033e41
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Thu Apr 25 17:22:25 2002 +0000
+
+    Add scroll wheel support.
+
+ src/vte.c |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+commit 8d09ff93ed3b537e9d027fee64b26cf3a99c6538
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 16:23:46 2002 +0000
+
+    Uncomment the tag target.
+
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit ff95c57897cfdac2193b1434231593ae8d862ac0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 16:22:36 2002 +0000
+
+    Add some targets for building tarballs in a hopefully-reproducible way.
+
+ HACKING      |    5 ++---
+ Makefile.am  |   21 +++++++++++++++++++++
+ configure.in |    2 +-
+ 3 files changed, 24 insertions(+), 4 deletions(-)
+
+commit cc4f7a860c0f4ee8deeabee24a14a81125d8556a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 16:12:01 2002 +0000
+
+    Let GDK_USE_XFT turn on Xft as well as VTE_USE_XFT.
+    
+    * src/vte.c: Let GDK_USE_XFT turn on Xft as well as VTE_USE_XFT.
+
+ src/vte.c |   11 ++++++++++-
+ 1 files changed, 10 insertions(+), 1 deletions(-)
+
+commit 4f60fdbf12f68d9f7857b915fbbc518b9b661965
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 05:45:30 2002 +0000
+
+    Handle decoding errors better.
+    
+    * src/vte.c: Handle decoding errors better.
+
+ configure.in |    2 +-
+ src/vte.c    |   78 ++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 47 insertions(+), 33 deletions(-)
+
+commit 42c386e0c053bb8a46b9c156981b7619f56a98ec
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 04:49:26 2002 +0000
+
+    Include pkgconfig files in the package.
+    
+    * vte.spec: Include pkgconfig files in the package.
+
+ vte.spec |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit c994ded78505c50389800a97a3dbe3009b4ff4c9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 04:43:36 2002 +0000
+
+    src/vte.c: Make multiple calls to set_background_transparent() and set_background_image() do the right 
thing.
+
+ src/vte.c |  193 +++++++++++++++++++++++++++++++++++++++++-------------------
+ 1 files changed, 132 insertions(+), 61 deletions(-)
+
+commit f0efffbacfc8b5f8609656fbeff41d108b680f7e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 04:05:53 2002 +0000
+
+    Reverse the sanity check in vte_terminal_set_background_image_file() so
+    
+    * src/vte.c: Reverse the sanity check in vte_terminal_set_background_image_file() so that it rejects 
zero-length strings, not the other way around.
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit f4e3bb67144b3c2c7a5987a6a091a3140ef55c85
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 03:54:03 2002 +0000
+
+    Demote some debug messages to being trie-specific debug messages. Declare
+    
+    * src/trie.c: Demote some debug messages to being trie-specific debug messages.
+    * src/vte.h: Declare vte_terminal_set_core_font() for non-Xft use.
+    * src/vte.c: Adjust idle priorities to make the terminal be more responsive; fix a double-free that 
corrupted the heap on core font loads; rework some pixbuf handling; revert a patch for profterm crackiness 
that's gone now.
+
+ src/trie.c |    2 +-
+ src/vte.c  |   68 +++++++++++++++++++++++++++++++----------------------------
+ src/vte.h  |    5 ++-
+ 3 files changed, 40 insertions(+), 35 deletions(-)
+
+commit b8f6f28089d5e98516b041de3aeebf34982bcb1a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Apr 25 00:49:15 2002 +0000
+
+    update to-do list. remove --disable-shared. remove a memory leak. fix a
+    
+    * README: update to-do list.
+    * autogen.sh: remove --disable-shared.
+    * src/pty.c: remove a memory leak.
+    * src/termcap.c: fix a possible read-before-start-of-buffer.
+    * src/trie.c: use iconv instead of mbrstowcs, even if it's just ASCII->W_CHAR_T.
+    * src/vte.c: fix a few memory leaks; only reset the IM context when we're realized, which is the only 
time we actually have an IM context; don't create a copy of a pixbuf if we don't need to desaturate it, just 
ref it and use it directly.
+
+ README        |    2 +-
+ autogen.sh    |    2 +-
+ src/pty.c     |    1 +
+ src/termcap.c |    2 +-
+ src/trie.c    |   85 +++++++++++++++++++++++---------
+ src/vte.c     |  151 +++++++++++++++++++++++++++++++++++++++++----------------
+ 6 files changed, 173 insertions(+), 70 deletions(-)
+
+commit 75356484dfead6c210c1fe83e912a85169bd71af
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 23 23:40:10 2002 +0000
+
+    src/vte.c: Display UTF-8 preedit strings properly, fix copy (no, really this time), and reset IM 
contexts when pasting text in.
+
+ src/vte.c |  146 +++++++++++++++++++++++++++++++++++++++----------------------
+ 1 files changed, 94 insertions(+), 52 deletions(-)
+
+commit 1110318894ccf6a8f63b98a45741bd604f7840f5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 23 22:01:13 2002 +0000
+
+    src/pty.c: Print debug messages before redirecting stdio.
+    src/vte.c: Fix displaying of highlighted multi-column text.
+       Use the GTK global setting for cursor blinking to control das blinkencursor.
+    src/vte.h: Remove function for setting blinking timeout.
+
+ src/pty.c |   25 ++++---
+ src/vte.c |  230 +++++++++++++++++++++++++++++++++++++++++-------------------
+ src/vte.h |    1 -
+ 3 files changed, 171 insertions(+), 85 deletions(-)
+
+commit ef618352a20855f8657b66676aac2029f839b898
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 23 19:54:51 2002 +0000
+
+    src/pty.c: Fix a compile warning.
+
+ src/pty.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6484fcbc85aa95f11cee920e4434b062ff3b7c21
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 23 19:54:08 2002 +0000
+
+    autogen.sh: Default to include optimization, even for debugging.
+    configure.in: Move AM_CONFIG_HEADER to the top.
+    src/pty.c: Create non-login shells by default (when argv is NULL).
+    src/vte.c: Add mostly-complete input method support.
+    src/vte.h: Add vte_terminal_im_append_menuitems().
+
+ autogen.sh   |    2 +-
+ configure.in |    3 +-
+ src/pty.c    |    6 +-
+ src/vte.c    |  760 ++++++++++++++++++++++++++++++++++++++++++----------------
+ src/vte.h    |    5 +-
+ 5 files changed, 555 insertions(+), 221 deletions(-)
+
+commit bf831313bd700377003fef57a698fced01ef1241
+Author: Havoc Pennington <hp src gnome org>
+Date:   Tue Apr 23 17:04:33 2002 +0000
+
+    add vte_terminal_set_font
+
+ src/vte.c |  251 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
+ src/vte.h |    3 +
+ 2 files changed, 212 insertions(+), 42 deletions(-)
+
+commit 58c4e09569873a8ffc82f85c29581643487fad82
+Author: Havoc Pennington <hp src gnome org>
+Date:   Mon Apr 22 21:00:44 2002 +0000
+
+    when setting background color, use allocated color, and don't overwrite with bg of None
+
+ src/vte.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+commit 6cc8c68d2e521dc1378145257f56a12a3ce30e86
+Author: Havoc Pennington <hp src gnome org>
+Date:   Mon Apr 22 20:50:01 2002 +0000
+
+    use gdk_rgb_find_color to allocate X colors
+
+ src/vte.c |   20 +++++++++-----------
+ 1 files changed, 9 insertions(+), 11 deletions(-)
+
+commit 88ee13eaba3955ff8aa25bf2e4b5a8d52c80c2bb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 22 20:35:47 2002 +0000
+
+    Add vte_terminal_feed_child() to send UTF-8 strings to the child process, and
+    actually apply Havoc's fix right this time.
+
+ src/vte.c    |   17 ++++++++++++++---
+ src/vte.h    |    3 +++
+ src/vteapp.c |    1 +
+ 3 files changed, 18 insertions(+), 3 deletions(-)
+
+commit 8421ed85f076ed9e1b72adce56c75e22d1a04ba9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Apr 22 13:56:00 2002 +0000
+
+    src/vte.c: Prevent double-free of incoming buffer (patch from Havoc).
+
+ src/vte.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 6acf490a78630612a06a51c2cf828a4a08935296
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Apr 16 05:43:26 2002 +0000
+
+    Fix typo. Make blinking cursors stay on while the user is typing,
+    
+    * README: Fix typo.
+    * src/vte.c: Make blinking cursors stay on while the user is typing, desaturate images using integer 
math.
+
+ README    |    2 +-
+ src/vte.c |   81 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
+ 2 files changed, 67 insertions(+), 16 deletions(-)
+
+commit dbcb45e80b601817dfdf31f26687c8570a811594
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Apr 5 05:58:37 2002 +0000
+
+    Add less useless descriptions. Fix an uninitialized variable and missing
+    
+    * vte.spec: Add less useless descriptions.
+    * src/vte.c: Fix an uninitialized variable and missing declaration error.
+
+ src/vte.c |    3 ++-
+ vte.spec  |    8 +++++---
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit aa147f19aada24e6b0f49e9ab86116f24af7e7bc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 25 02:52:02 2002 +0000
+
+    Ensure that there's a data row whenever we scroll forward, fixing
+    
+       * src/vte.c: Ensure that there's a data row whenever we scroll forward, fixing strangeness when I 
suspend and resume vim.
+
+ src/vte.c |   40 +++++++++++++++++++++++++++++++++-------
+ 1 files changed, 33 insertions(+), 7 deletions(-)
+
+commit 2cae3586debcdc823932236cd8119b4441178304
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 25 00:08:36 2002 +0000
+
+    copy to clipboard synchronously, which fixes a number of problems
+    
+       * src/vte.c: copy to clipboard synchronously, which fixes a number of problems
+               implement background transparency
+       * src/vteapp.c: no changes(?)
+
+ src/vte.c |  405 ++++++++++++++++++++++++++++++++++++++++++++++++-------------
+ 1 files changed, 322 insertions(+), 83 deletions(-)
+
+commit 754c595a6cace97331f4ae5e94e4d5b3c3113f29
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 18 01:59:22 2002 +0000
+
+    Rework backgrounds to take advantage of gdk's automatic drawing. Try to
+    
+       * vte.c: Rework backgrounds to take advantage of gdk's automatic drawing.
+       * vteapp.c: Try to enable transparency if no background image is present.
+
+ src/vte.c    |  182 ++++++++++++++++++++++++++++-----------------------------
+ src/vte.h    |    3 +-
+ src/vteapp.c |   12 +++-
+ 3 files changed, 100 insertions(+), 97 deletions(-)
+
+commit c395df9bf8463fd367af146c3ab317b1c3ca9b96
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 18 01:58:34 2002 +0000
+
+    Adjust warnings used when in maintainer mode.
+    
+       * autogen.sh configure.in: Adjust warnings used when in maintainer mode.
+
+ autogen.sh   |    4 +---
+ configure.in |    9 +++++++++
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+commit ddf32b9455806ea339040d4aae4d556eae05236f
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 17 06:15:45 2002 +0000
+
+    Draw the cursor as an unfilled box when the widget does not have focus.
+    
+       * src/vte.c: Draw the cursor as an unfilled box when the widget does not have focus.
+
+ src/vte.c |   46 +++++++++++++++++++++++++++++++---------------
+ 1 files changed, 31 insertions(+), 15 deletions(-)
+
+commit 8b429a79a9eefcacc0f3edd07fe44d94e5242851
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 17 06:04:02 2002 +0000
+
+    Fix handling of scroll-on-output to always scroll when we're at the bottom
+    
+       * src/vte.c: Fix handling of scroll-on-output to always scroll when we're at the bottom of the buffer.
+       * src/vteapp.c: Disable scroll-on-output by default.
+
+ src/vte.c    |   11 +++++++----
+ src/vteapp.c |    2 +-
+ 2 files changed, 8 insertions(+), 5 deletions(-)
+
+commit 0d351fd6824f1b081a6dc559573ced5e0d20c5f2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 17 05:46:00 2002 +0000
+
+    Rework tiling of background images, and implement a blinking cursor. Set
+    
+       * src/vte.c src/vte.h: Rework tiling of background images, and implement a blinking cursor.
+       * src/vteapp.c: Set blinking cursor by default.
+
+ src/vte.c    |  214 ++++++++++++++++++++++++++++-----------------------------
+ src/vte.h    |    4 +-
+ src/vteapp.c |    1 +
+ 3 files changed, 109 insertions(+), 110 deletions(-)
+
+commit 2e09448fcfa06e92e8b7c272c8fde4fe277a58aa
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 07:58:34 2002 +0000
+
+    Corrections to some xterm control sequences.
+    
+       * caps.c: Corrections to some xterm control sequences.
+
+ src/caps.c |   21 +++++++++++++++++++--
+ 1 files changed, 19 insertions(+), 2 deletions(-)
+
+commit 68b3c69e860cf423352f9cb14f53f0450ba8185e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 07:32:12 2002 +0000
+
+    Define PACKAGE correctly. Move most of the tear-down code into the widget
+    
+    * configure.in: Define PACKAGE correctly.
+    * src/vte.c src/vteapp.c: Move most of the tear-down code into the widget finalize method; handle EOF 
and widget destruction correctly to prevent segfaults.
+
+ configure.in |    2 +-
+ src/vte.c    |   95 ++++++++++++++++++++++++++++++++++------------------------
+ src/vteapp.c |   13 +++++++-
+ 3 files changed, 69 insertions(+), 41 deletions(-)
+
+commit b28d242a31672b3717b615ed178d8703280e2f75
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 05:48:43 2002 +0000
+
+    Define PACKAGE.
+    
+    * configure.in: Define PACKAGE.
+
+ configure.in |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 447b6cc57780fb500dbcda9bf87401a58fe9ca09
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 05:18:44 2002 +0000
+
+    Disable gdk-pixbuf's deprecated functions. Discard non-ascii bytes to
+    
+       * configure.in: Disable gdk-pixbuf's deprecated functions.
+       * vte.c: Discard non-ascii bytes to clear logjams that happen when we pass invalid terminal data to 
iconv().
+
+ configure.in |    1 +
+ src/vte.c    |   31 +++++++++++++++++++++++++++++--
+ 2 files changed, 30 insertions(+), 2 deletions(-)
+
+commit aeee76e236204a2ba95aca6b026048f77fd61d21
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 04:07:14 2002 +0000
+
+    fix missing includes implement background color setting, provide a
+    
+       * iso8859mode.c utf8mode.c: fix missing includes
+       * vte.c vte.h: implement background color setting, provide a function for setting the defaults, tile 
background images properly
+
+ src/iso8859mode.c |    1 +
+ src/utf8mode.c    |    1 +
+ src/vte.c         |  213 ++++++++++++++++++++++++++++++++++++++++-------------
+ src/vte.h         |    7 ++
+ 4 files changed, 172 insertions(+), 50 deletions(-)
+
+commit 0b4037f448c393088c32b6e4e76aedf6319e035d
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Mar 14 02:12:38 2002 +0000
+
+    Remove gdk-pixbuf-xlib dependency by using just gdk-pixbuf. Perform
+    
+    * configure.in vte.pc.in vte.c: Remove gdk-pixbuf-xlib dependency by using just gdk-pixbuf.
+    * vte.c: Perform background image desaturation locally.
+
+ configure.in |    2 +-
+ src/vte.c    |   97 ++++++++++++++++++++++++++++-----------------------------
+ vte.pc.in    |    2 +-
+ 3 files changed, 50 insertions(+), 51 deletions(-)
+
+commit 2259b22d1aa442d5e8f6f4865de4634d1d317363
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 19:37:30 2002 +0000
+
+    Don't add the widget's allocation offsets when generating expose events.
+    
+    * vte.c: Don't add the widget's allocation offsets when generating expose events.
+
+ src/vte.c |   20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+commit c8bf38ef87850d05fa7f0292128fbfc0e8d5d8f0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 19:22:58 2002 +0000
+
+    *vteapp.c: Don't try to use transparency for now.
+
+ src/vteapp.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b752f2657c36eac80bcf5e07b28d7bd0f75e3951
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Wed Mar 13 18:29:20 2002 +0000
+
+    Add more functions that profterm can use.
+
+ src/vte.c |   24 ++++++++++++++++++++++++
+ src/vte.h |    2 ++
+ 2 files changed, 26 insertions(+), 0 deletions(-)
+
+commit 80d58364fb8f3021d006d1569416fb23ad91e8dd
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Wed Mar 13 17:51:53 2002 +0000
+
+    Silent cvs and add gdk-pixbuf-xlib to depends in the .pc.in file
+
+ .cvsignore |   12 ++++++++++++
+ vte.pc.in  |    2 +-
+ 2 files changed, 13 insertions(+), 1 deletions(-)
+
+commit 0810dc20a20fba7efca5f5a454b16970d0a21518
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Wed Mar 13 17:37:48 2002 +0000
+
+    Sliff sloff
+
+ src/.cvsignore |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit e7ffae48af31fa9bcff3aebcf1d4dba0c3ed2ae3
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Wed Mar 13 17:37:20 2002 +0000
+
+    sssh
+
+ src/.cvsignore |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+commit 2ed604fd59343a95542bbee9854aa40aded48552
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 17:19:56 2002 +0000
+
+    Add gdk-pixbuf-xlib-2.0 as a module requirement.
+    
+    * configure.in: Add gdk-pixbuf-xlib-2.0 as a module requirement.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 5b68ef885663950b30e0732154da3154a9bf27f8
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 06:21:56 2002 +0000
+
+    Add set_size, set_audible_bell, set_scroll_on_output,
+    
+    * vte.c: Add set_size, set_audible_bell, set_scroll_on_output,
+        set_scroll_on_keystroke, copy_clipboard, paste_clipboard,
+        set_background_image, set_background_image_file, and
+        set_background_saturation.  Also added a broken
+        set_background_transparent.
+    * vte.h: Add prototypes for those new functions.
+
+ src/vte.c    |  446 +++++++++++++++++++++++++++++++++++++++++++++++-----------
+ src/vte.h    |   14 ++-
+ src/vteapp.c |    8 +
+ 3 files changed, 386 insertions(+), 82 deletions(-)
+
+commit b16f2340ca3072b8a172cdd2cdbf4cf0694c3925
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 03:35:47 2002 +0000
+
+    fix the name of a declared function (was _set_size, is _size_set)
+    
+    * vte.c: fix the name of a declared function (was _set_size, is _size_set)
+
+ src/vte.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6733e2ed80ef9f104af4da5fd5e45260ce067803
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 03:11:07 2002 +0000
+
+    Get rid of a global copy of the parent class. Implement ec, ic, and IC
+    
+    * vte.c: Get rid of a global copy of the parent class.
+    * vte.c: Implement ec, ic, and IC handlers.
+
+ src/vte.c |  112 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 99 insertions(+), 13 deletions(-)
+
+commit 6ef5042c4cf08a28ddefbaf430ff2fedd4e6435a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 13 03:10:01 2002 +0000
+
+    Fix a typo in a comment (we don't "omit" signals).
+    
+    * vte.h: Fix a typo in a comment (we don't "omit" signals).
+
+ src/vte.h |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c7b1550d69b13d95700f12d054664abe476bd568
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 20:48:30 2002 +0000
+
+    caps.c: Recognize xterm cursor-character-absolute sequence.
+    vte.c: Handle cursor-character-absolute.
+    vte.c: Change the default font to "mono" 14 point when using Xft.
+
+ src/caps.c |    2 ++
+ src/vte.c  |   16 ++++++++++++++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit d3994081b99ef854365a08665dd5bfd8541a02a7
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 20:22:57 2002 +0000
+
+    Handle the ve (cursor visible) control sequence.
+    
+    * vte.c: Handle the ve (cursor visible) control sequence.
+
+ src/vte.c |   16 ++++++++++++++--
+ 1 files changed, 14 insertions(+), 2 deletions(-)
+
+commit 81af00a67fa68b3d8103a864537be5cfaa89dc13
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 20:19:09 2002 +0000
+
+    vte.c: Handle dec private mode set (cursor visibility).
+
+ src/vte.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+commit 5f5600122d32114887a78a842164b836f59a706a
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 20:13:23 2002 +0000
+
+    fix signed/unsigned problems (fixes from alexl) fix signed/unsigned
+    
+    * vte.c: fix signed/unsigned problems (fixes from alexl)
+    * vte.h: fix signed/unsigned problems (fixes from alexl)
+    * vteapp.h: fix signed/unsigned problems (fixes from alexl)
+
+ src/vte.c |   24 ++++++++++++------------
+ src/vte.h |    8 ++++----
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+commit 04839fb9aa22138d6aa2e13859bf6e4a5454bf82
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 01:29:09 2002 +0000
+
+    Make scroll-on-output scroll on control sequences, too.
+    
+    * src/vte.c: Make scroll-on-output scroll on control sequences, too.
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 250cc8e6ea15f9cb6dfbcbd88888ae0086682e69
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 12 01:19:40 2002 +0000
+
+    utf8mode.c: Add simple programs for moving a terminal in and out of UTF-8 mode.
+    iso8859mode.c: Add simple programs for moving a terminal in and out of UTF-8 mode.
+    vte.c: Be more verbose about iconv() errors.
+    vte.c: Implement dc and DC handlers.
+    vte.c: Handle auto-wrapping (the "am" flag).
+    vte.c: Remove scrolling cheats from the al handler, which made the window jump.
+
+ src/Makefile.am   |    2 +-
+ src/iso8859mode.c |   28 +++++++++++
+ src/utf8mode.c    |   28 +++++++++++
+ src/vte.c         |  138 +++++++++++++++++++++++++++++++++++++++++++++++------
+ 4 files changed, 180 insertions(+), 16 deletions(-)
+
+commit 2b86603f0b80d70ff6e56cf953d2a9c357e9e636
+Author: Anders Carlsson <andersca src gnome org>
+Date:   Mon Mar 11 07:39:01 2002 +0000
+
+    Add a finalize handler and free our title strings there.
+
+ src/vte.c |   24 ++++++++++++++++++++++++
+ 1 files changed, 24 insertions(+), 0 deletions(-)
+
+commit 7e61493272a33f3002236845f37d5c0d1e189138
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 07:05:47 2002 +0000
+
+    Emit "window_title_changed" and "icon_title_changed" when the titles change,
+    and store the new values in a public field so that a handler can retrieve the
+    values (patch from Anders Carlsson).
+
+ Makefile.am  |    5 ++++-
+ configure.in |    2 +-
+ src/vte.c    |   46 +++++++++++++++++++++++++---------------------
+ src/vte.h    |    7 +++++--
+ src/vteapp.c |   16 +++++++++-------
+ 5 files changed, 44 insertions(+), 32 deletions(-)
+
+commit 2ce24ceee46f1cd0a76049ba93401fd81a175af1
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 06:54:51 2002 +0000
+
+    Add vte.pc, from Anders Carlsson.
+
+ vte.pc.in |   11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+commit af1e14f4df40467c9e58404df6eb5599099927ae
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 06:47:00 2002 +0000
+
+    Fix a duplicate-idle-handler bug.
+
+ src/vte.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit e5635e58ef60f02e85d3beaf02e728abc7442f78
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 06:32:38 2002 +0000
+
+    Fix selection (except maybe the end-of-line stuff).
+
+ README    |    2 -
+ src/vte.c |  215 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 183 insertions(+), 34 deletions(-)
+
+commit fbde287badd3796f5f74fbee40da373028ae8aaf
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 04:44:31 2002 +0000
+
+    Whoops, I broke selection.  Fix that.
+    Implement selection by lines.
+
+ src/vte.c |   99 +++++++++++++++++++++++++++++++++++-------------------------
+ 1 files changed, 58 insertions(+), 41 deletions(-)
+
+commit 4b4d66d149c9b09a675fdcaa66ce75b29a5f0131
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 11 04:08:40 2002 +0000
+
+    Move character rendering into a common function so that the cursor is always
+    drawn the same as other characters (fixes previous glitches when using Xft and
+    when the cursor was over an alternate charset character).
+
+ src/vte.c |  814 ++++++++++++++++++++++++++++++-------------------------------
+ 1 files changed, 404 insertions(+), 410 deletions(-)
+
+commit 2c16599aa7d02b05831c09611617b86deafbf8c3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 10 08:31:21 2002 +0000
+
+    Differentiate between single, double, and triple-click for selection (still
+    need to do something with that info).
+
+ src/vte.c |   38 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 38 insertions(+), 0 deletions(-)
+
+commit 77f6cd58035ae91fb5bcb7b70b94c4594cb48ca3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 10 08:16:27 2002 +0000
+
+    remove this file
+
+ stamp-h.in |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 712c4627c927b77b9395c3edee321602bcf3da63
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 10 08:15:22 2002 +0000
+
+    Don't check for pango because we never call pango directly.
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 2536962bd099729a6066581548d6144b9a28cfbb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 10 08:13:06 2002 +0000
+
+    Deselect properly when something else is inserted into the clipboard.
+
+ src/vte.c |  173 ++++++++++++++++++++++++++++++++++++++++---------------------
+ 1 files changed, 114 insertions(+), 59 deletions(-)
+
+commit 2c5ff4b02a7ae83f21e8654d1f0ad4463a18cb55
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sun Mar 10 07:26:22 2002 +0000
+
+    Fix wide-character handling (now handles mid-stream encoding changes correctly).
+    Updates to the meager docs.
+
+ AUTHORS        |    1 +
+ HACKING        |    5 +-
+ README         |   16 +-
+ src/utf8echo.c |    4 +-
+ src/vte.c      |  639 +++++++++++++++++++++++++++++++++++---------------------
+ 5 files changed, 411 insertions(+), 254 deletions(-)
+
+commit df735564cf119c3d27d4d3bcb5d92ce57d9853d9
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Mar 9 07:41:56 2002 +0000
+
+    Add a .spec file (make dist; rpm -ts vte*.tar.gz; rpm --rebuild) to make
+    building a package easier.
+
+ Makefile.am     |    1 +
+ src/Makefile.am |    1 +
+ vte.spec        |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 51 insertions(+), 0 deletions(-)
+
+commit 53c5da226b4959b8bd14fde37ebfd1de66c5fc81
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Mar 9 07:24:45 2002 +0000
+
+    skip over space columns when selecting
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 57b54bb8340aae966384db4e6e82295b7c0dfdec
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Mar 9 07:20:49 2002 +0000
+
+    Use a login shell by default.
+
+ src/pty.c    |   10 ++++++++--
+ src/vteapp.c |    1 +
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 7501f2526afcd6452523050809726d6fd010b50b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Sat Mar 9 07:10:50 2002 +0000
+
+    Rework input queueing to allow for feeding without a pty.
+    Use gdk_window_scroll() in _al and _up handlers, and in the _do handler,
+    because it's usually faster.
+
+ src/vte.c    |  645 +++++++++++++++++++++++++++++++++++-----------------------
+ src/vte.h    |   46 +---
+ src/vteapp.c |    9 +
+ 3 files changed, 414 insertions(+), 286 deletions(-)
+
+commit c7a90a418e5f9917d47fbc5f51066a412ced388b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 8 07:52:56 2002 +0000
+
+    Implement copy and almost-correct selection highlighting.
+
+ src/vte.c |  292 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
+ 1 files changed, 243 insertions(+), 49 deletions(-)
+
+commit 2d110c873cb76c558bc1b210a0de630dfc46cf91
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Fri Mar 8 02:30:31 2002 +0000
+
+    Use a queue for pasting data.
+    Try to get dragging detected right (doesn't work).
+
+ src/vte.c |  312 ++++++++++++++++++++++++++++++++++++++++--------------------
+ 1 files changed, 208 insertions(+), 104 deletions(-)
+
+commit cc0a80eacdec88a5ed6689d98e7714e5abe91b30
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 6 00:21:56 2002 +0000
+
+    Mark the beginning of a selected area.
+
+ src/vte.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit c49c8873ac418e0cd290fb3566e062fb72089868
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 6 00:17:32 2002 +0000
+
+    Make pasting asynchronous.
+
+ src/vte.c |   23 ++++++++++++++---------
+ 1 files changed, 14 insertions(+), 9 deletions(-)
+
+commit 459e966538973c1d6f8afba469f35ec3a29de058
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 6 00:07:30 2002 +0000
+
+    actually free clipboard data when finished with it
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit b345ca1e8d0f54ea99ac27ebce6a073df7cbad66
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Mar 6 00:02:33 2002 +0000
+
+    Implement middle-button paste.
+
+ src/vte.c |   38 +++++++++++++++++++++++++++++++++-----
+ 1 files changed, 33 insertions(+), 5 deletions(-)
+
+commit 10a34b72206d08f31fdc33335e04228ac9ee432c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 5 23:55:03 2002 +0000
+
+    Properly convert from utf-8 or wchar_t strings when sending data to the
+    pseudo-terminal.
+
+ src/vte.c |   91 +++++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 79 insertions(+), 12 deletions(-)
+
+commit 62c68d4f4b406e284449dcbecc380bad32d406f5
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 5 00:53:46 2002 +0000
+
+    Implement shift/pgup/pgdown scrolling.
+    Make scroll-on-keypress and -on-output easier to toggle.
+
+ src/vte.c |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 56 insertions(+), 9 deletions(-)
+
+commit 6d48ff66daa142a878c86190a5c8db208fd3b510
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 5 00:26:31 2002 +0000
+
+    Spec out the rest of the alternate characters I haven't implemented yet.
+    Remove a function that can't be easily written (scroll_rows).
+    Correctly update the insertion delta when scrolling, to fix man(1) again.
+
+ src/vte.c |   51 +++++++++++++++++++++++++++++----------------------
+ 1 files changed, 29 insertions(+), 22 deletions(-)
+
+commit a2f0f68089632451d81b19c7f84dcbef9fdf5686
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Tue Mar 5 00:16:04 2002 +0000
+
+    Discard redundant cursor-position exposes.
+
+ src/vte.c |   50 ++++++++++----------------------------------------
+ 1 files changed, 10 insertions(+), 40 deletions(-)
+
+commit 41c8e20f65e616d2c01d3facb7be2a9fab637569
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 23:57:21 2002 +0000
+
+    Use ssize_t to measure string offsets in termcap, and don't assume that all
+    capabilities have values.  This fixes some nasty crashes.
+
+ src/termcap.c |   48 ++++++++++++++++++++++++------------------------
+ src/termcap.h |    2 +-
+ src/vte.c     |    2 +-
+ 3 files changed, 26 insertions(+), 26 deletions(-)
+
+commit 78f1d3381bf14b7bd2ecbd9269e20b00f5ec69d0
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 16:53:05 2002 +0000
+
+    add a missing bounds-check in the erase-in-row function
+
+ src/vte.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 41bcc218b89103794be0cedbe9403ffa58e2b217
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 06:13:49 2002 +0000
+
+    Send the slave pty's erase character when the user hits backspace.
+
+ README    |    3 ++-
+ src/vte.c |   11 ++++++++---
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+commit bb07d83e90995a955a297e7b9c0c2d26ff2ca43c
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 05:59:45 2002 +0000
+
+    Draw cursors to fill the entire cell.
+    Draw the blank alternate character (ooh, tough).
+    Remove a redundant expose.
+
+ src/vte.c |   56 ++++++++++++++++++++++++--------------------------------
+ 1 files changed, 24 insertions(+), 32 deletions(-)
+
+commit 8d6546f50f7de1d52abd4e7d0a75e73286c1492e
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 04:49:32 2002 +0000
+
+    stop using wcsnlen, which is a GNU extension
+
+ src/trie.c |   13 ++++++++++++-
+ 1 files changed, 12 insertions(+), 1 deletions(-)
+
+commit be85096e1b976a45e242e84665ac5f32e9b88a83
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 04:43:48 2002 +0000
+
+    Add support for the line-drawing characters in the special characters and line-
+    drawing character set. (See [http://vt100.net/docs/vt102-ug/table5-13.html].)
+
+ src/caps.h    |    4 +-
+ src/pty.h     |    4 +-
+ src/termcap.h |    4 +-
+ src/trie.h    |    4 +-
+ src/vte.c     |  269 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ src/vte.h     |    5 +-
+ 6 files changed, 274 insertions(+), 16 deletions(-)
+
+commit d28784479bb8600b64f13f902df2aff3eed22a67
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Mar 4 02:57:53 2002 +0000
+
+    Properly differentiate insertion delta (working screen) from scrolling delta.
+    Add environment setting to the pty code.
+
+ src/pty.c |   42 +++++++++---
+ src/pty.h |    3 +-
+ src/vte.c |  219 +++++++++++++++++++++++++++++++-----------------------------
+ 3 files changed, 147 insertions(+), 117 deletions(-)
+
+commit fa1f908159070fbf22e2d2bdd550328e8fe9767b
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Thu Feb 28 02:54:56 2002 +0000
+
+    Make the Xft support use long-lived data items.
+    Clean up a lot of other Xft-related code.
+
+ src/trie.c |    6 +-
+ src/vte.c  |  805 +++++++++++++++++++++++++++++++++--------------------------
+ src/vte.h  |   64 +-----
+ 3 files changed, 456 insertions(+), 419 deletions(-)
+
+commit 80e765769cde3af80508de06e3b1819e14b65ad3
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Feb 27 15:45:02 2002 +0000
+
+    actually hook up the nd handler to the "nd" sequence
+
+ src/vte.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 7061e97b13f9e496a189a80f5bd57766ce322bcc
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Wed Feb 27 05:05:16 2002 +0000
+
+    - Add sub-optimal Xft rendering (set VTE_USE_XFT to "1" to try it); still
+      needs quite a bit of work to be useful.
+    - Implement character-position-absolute and line-position-absolute, which I
+      think are the only sequences which emacs uses and which weren't implemented.
+
+ autogen.sh   |    3 +
+ configure.in |   14 +++++-
+ src/vte.c    |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ src/vte.h    |    5 ++-
+ 4 files changed, 164 insertions(+), 24 deletions(-)
+
+commit 180a6eb79a3afdc4ca536ea0cd598352bb010011
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:43:15 2002 +0000
+
+    distcheck fixes
+
+ src/Makefile.am |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit e60a3d6bd6beec15cd3bc23a6f55faac43f8c1bb
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:41:30 2002 +0000
+
+    add that line-drawing does not work to README
+
+ README |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 7739e1b896eb248fe6855e6f8dbf109b95879770
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:40:17 2002 +0000
+
+    tree fixups
+
+ configure.in    |    1 +
+ src/Makefile.am |    9 +++++----
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+commit 04158af635b73d321489484276dec578b0afb5ee
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:38:27 2002 +0000
+
+    fix autoconf reference file problem
+
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit bc8eb95c2f67e9aa7e4d2b52e5c8040242545177
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:38:06 2002 +0000
+
+    remove stuff which should never have been added
+
+ src/Makefile.in |  513 -------------------------------------------------------
+ 1 files changed, 0 insertions(+), 513 deletions(-)
+
+commit 4d9e5b9dd24b4d56f8e463abbfc365c747668be2
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:37:31 2002 +0000
+
+    rename configure.ac to configure.in, remove 2.5isms
+
+ configure.ac => configure.in |    1 -
+ src/Makefile.in              |  614 +++++++++++++++++++-----------------------
+ 2 files changed, 275 insertions(+), 340 deletions(-)
+
+commit 5d753e874d0c821df033b4e94e2a39cbb24d2616
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:35:22 2002 +0000
+
+    remove stuff that should never have been in there
+
+ Makefile.in                       |  419 --
+ aclocal.m4                        | 4130 -----------------
+ config.h.in                       |   49 -
+ configure                         | 9124 -------------------------------------
+ doc/ctlseqs.ps                    | 8729 -----------------------------------
+ doc/vttest-20011130/BUGS          |   19 -
+ doc/vttest-20011130/CHANGES       |  344 --
+ doc/vttest-20011130/COPYING       |   23 -
+ doc/vttest-20011130/MANIFEST      |   43 -
+ doc/vttest-20011130/README        |   67 -
+ doc/vttest-20011130/aclocal.m4    |   59 -
+ doc/vttest-20011130/charsets.c    |  478 --
+ doc/vttest-20011130/color.c       |  600 ---
+ doc/vttest-20011130/config.cache  |   40 -
+ doc/vttest-20011130/config.h      |   53 -
+ doc/vttest-20011130/config.hin    |   52 -
+ doc/vttest-20011130/config.log    |  105 -
+ doc/vttest-20011130/config.status |  279 --
+ doc/vttest-20011130/configure     | 1625 -------
+ doc/vttest-20011130/configure.in  |   48 -
+ doc/vttest-20011130/descrip.mms   |   94 -
+ doc/vttest-20011130/esc.c         |  968 ----
+ doc/vttest-20011130/esc.h         |  190 -
+ doc/vttest-20011130/install.sh    |  238 -
+ doc/vttest-20011130/keyboard.c    | 1080 -----
+ doc/vttest-20011130/main.c        | 1382 ------
+ doc/vttest-20011130/makefile      |  171 -
+ doc/vttest-20011130/makefile.in   |  172 -
+ doc/vttest-20011130/mkdirs.sh     |   32 -
+ doc/vttest-20011130/mouse.c       |  441 --
+ doc/vttest-20011130/nonvt100.c    |  437 --
+ doc/vttest-20011130/patchlev.h    |    3 -
+ doc/vttest-20011130/printer.c     |  198 -
+ doc/vttest-20011130/reports.c     |  510 ---
+ doc/vttest-20011130/reset.c       |   84 -
+ doc/vttest-20011130/setup.c       |  298 --
+ doc/vttest-20011130/sixel.c       |  303 --
+ doc/vttest-20011130/status.c      |  102 -
+ doc/vttest-20011130/tech.set      |   96 -
+ doc/vttest-20011130/ttymodes.c    |  300 --
+ doc/vttest-20011130/ttymodes.h    |   21 -
+ doc/vttest-20011130/unix_io.c     |  196 -
+ doc/vttest-20011130/vms_io.c      |  405 --
+ doc/vttest-20011130/vmsbuild.com  |  163 -
+ doc/vttest-20011130/vt220.c       |  463 --
+ doc/vttest-20011130/vt420.c       | 1615 -------
+ doc/vttest-20011130/vt52.c        |  235 -
+ doc/vttest-20011130/vttest        |  Bin 426799 -> 0 bytes
+ doc/vttest-20011130/vttest.1      |   47 -
+ doc/vttest-20011130/vttest.h      |  270 --
+ doc/vttest-20011130/vttest.lsm    |   15 -
+ doc/vttest-20011130/xterm.c       |  401 --
+ 52 files changed, 0 insertions(+), 37216 deletions(-)
+
+commit c8bad5955bbe3d0a69165e5bf050678dd70d03ae
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:30:22 2002 +0000
+
+    imported from private cvs
+
+commit 38fb480261b192dd73a8edcd22599d0d2fe57f67
+Author: Nalin Dahyabhai <nalin src gnome org>
+Date:   Mon Feb 25 17:30:22 2002 +0000
+
+    Initial revision
+
+ COPYING                           |  482 ++
+ HACKING                           |    4 +
+ Makefile.am                       |    1 +
+ Makefile.in                       |  419 ++
+ README                            |   40 +
+ aclocal.m4                        | 4130 +++++++++++++++++
+ autogen.sh                        |   11 +
+ config.h.in                       |   49 +
+ configure                         | 9124 +++++++++++++++++++++++++++++++++++++
+ configure.ac                      |   32 +
+ doc/ctlseqs.ms                    | 1647 +++++++
+ doc/ctlseqs.ps                    | 8729 +++++++++++++++++++++++++++++++++++
+ doc/readme.txt                    |    4 +
+ doc/vttest-20011130/BUGS          |   19 +
+ doc/vttest-20011130/CHANGES       |  344 ++
+ doc/vttest-20011130/COPYING       |   23 +
+ doc/vttest-20011130/MANIFEST      |   43 +
+ doc/vttest-20011130/README        |   67 +
+ doc/vttest-20011130/aclocal.m4    |   59 +
+ doc/vttest-20011130/charsets.c    |  478 ++
+ doc/vttest-20011130/color.c       |  600 +++
+ doc/vttest-20011130/config.cache  |   40 +
+ doc/vttest-20011130/config.h      |   53 +
+ doc/vttest-20011130/config.hin    |   52 +
+ doc/vttest-20011130/config.log    |  105 +
+ doc/vttest-20011130/config.status |  279 ++
+ doc/vttest-20011130/configure     | 1625 +++++++
+ doc/vttest-20011130/configure.in  |   48 +
+ doc/vttest-20011130/descrip.mms   |   94 +
+ doc/vttest-20011130/esc.c         |  968 ++++
+ doc/vttest-20011130/esc.h         |  190 +
+ doc/vttest-20011130/install.sh    |  238 +
+ doc/vttest-20011130/keyboard.c    | 1080 +++++
+ doc/vttest-20011130/main.c        | 1382 ++++++
+ doc/vttest-20011130/makefile      |  171 +
+ doc/vttest-20011130/makefile.in   |  172 +
+ doc/vttest-20011130/mkdirs.sh     |   32 +
+ doc/vttest-20011130/mouse.c       |  441 ++
+ doc/vttest-20011130/nonvt100.c    |  437 ++
+ doc/vttest-20011130/patchlev.h    |    3 +
+ doc/vttest-20011130/printer.c     |  198 +
+ doc/vttest-20011130/reports.c     |  510 +++
+ doc/vttest-20011130/reset.c       |   84 +
+ doc/vttest-20011130/setup.c       |  298 ++
+ doc/vttest-20011130/sixel.c       |  303 ++
+ doc/vttest-20011130/status.c      |  102 +
+ doc/vttest-20011130/tech.set      |   96 +
+ doc/vttest-20011130/ttymodes.c    |  300 ++
+ doc/vttest-20011130/ttymodes.h    |   21 +
+ doc/vttest-20011130/unix_io.c     |  196 +
+ doc/vttest-20011130/vms_io.c      |  405 ++
+ doc/vttest-20011130/vmsbuild.com  |  163 +
+ doc/vttest-20011130/vt220.c       |  463 ++
+ doc/vttest-20011130/vt420.c       | 1615 +++++++
+ doc/vttest-20011130/vt52.c        |  235 +
+ doc/vttest-20011130/vttest        |  Bin 0 -> 426799 bytes
+ doc/vttest-20011130/vttest.1      |   47 +
+ doc/vttest-20011130/vttest.h      |  270 ++
+ doc/vttest-20011130/vttest.lsm    |   15 +
+ doc/vttest-20011130/xterm.c       |  401 ++
+ doc/vttest.tar.gz                 |  Bin 0 -> 96645 bytes
+ src/Makefile.am                   |   62 +
+ src/Makefile.in                   |  577 +++
+ src/caps.c                        |  551 +++
+ src/caps.h                        |   50 +
+ src/interpret.c                   |  148 +
+ src/marshal.list                  |    4 +
+ src/pty.c                         |  209 +
+ src/pty.h                         |   35 +
+ src/termcap.c                     |  641 +++
+ src/termcap.h                     |   56 +
+ src/trie.c                        |  868 ++++
+ src/trie.h                        |   61 +
+ src/typescript                    |   76 +
+ src/utf8echo.c                    |   65 +
+ src/vte.c                         | 3494 ++++++++++++++
+ src/vte.h                         |  169 +
+ src/vteapp.c                      |  104 +
+ stamp-h.in                        |    1 +
+ 79 files changed, 46608 insertions(+), 0 deletions(-)
diff --git a/vte/ChangeLog.pre-git b/vte/ChangeLog.pre-git
new file mode 100644
index 0000000..f768be1
--- /dev/null
+++ b/vte/ChangeLog.pre-git
@@ -0,0 +1,12065 @@
+2009-03-31  Adam Jackson  <ajax redhat com>
+
+       * src/vteapp.c:
+       Add gopher:// to the dingus-click regexes.
+
+2009-03-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (always_selected):
+       * src/vtepangocairo.c (_vte_pangocairo_set_background_image):
+       * src/vteskel.c (_vte_skel_draw_text):
+       Minor fixes from Richard Russon.
+
+2009-03-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 576797 – Double-click sometimes stops working
+
+       * src/vte.c (vte_terminal_extend_selection): Invalidate selection
+       if forced.
+
+2009-03-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 573674 – reset resets width to 80 chars
+
+       * src/vteseq.c (vte_sequence_handler_decset_internal): Disable
+       resizing on decreset.
+
+2009-03-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 576504 – vte does not pass its testsuite.
+
+       * src/vte.c:
+       * src/vtedraw.h:
+       Fix "make check".
+
+2009-03-15  Christian Persch  <chpe gnome org>
+
+       Bug 574491 – gnome-pty-helper can prevent volumes from being unmounted
+
+       * gnome-pty-helper/gnome-pty-helper.c: (main): chdir to /.
+
+2009-03-15  Christian Persch  <chpe gnome org>
+
+       * configure.in: Prepare version 0.20.0.
+
+2009-03-15  Christian Persch  <chpe gnome org>
+
+       Bug 575398 – configure warns about term.h under OpenSolaris
+
+       * configure.in: Fix curses detection on solaris. Patch by David Adam.
+
+2009-03-09  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 574616 – "real" transparency not working from python bindings
+
+       * src/vtepangocairo.c (_vte_pangocairo_destroy),
+       (_vte_pangocairo_set_background_image): Better handle failure of
+       creating pixmap.
+
+       * src/vtebg.c (vte_bg_get_pixmap): Get rid of unused mask parameter.
+
+2009-03-07  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 574025 – Crash in _vte_terminal_insert_char
+
+       * src/vte.c (_vte_terminal_insert_char): Don't crash.
+
+2009-03-02  Christian Persch  <chpe gnome org>
+
+       * NEWS:
+       * configure.in: Updated for version 0.19.5.
+
+2009-03-02  Christian Persch  <chpe gnome org>
+
+       * src/vteaccess.c: (vte_terminal_accessible_set_size),
+       (vte_terminal_accessible_ref_accessible_at_point):
+       * src/vteapp.c: (button_pressed): Correct use of padding returned
+        by vte_terminal_get_padding().
+
+2009-03-02  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_refresh_size), (vte_terminal_set_size):
+       Use g_strerror() instead of strerror().
+
+2009-02-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 54926 – Should try bold version of font before pseudo-bolding
+
+       Patch from Kees Cook <kees outflux net>
+
+       * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+       (vte_terminal_unichar_is_local_graphic),
+       (vte_terminal_draw_graphic), (vte_terminal_draw_cells),
+       (vte_terminal_draw_rows), (vte_terminal_paint_cursor):
+       * src/vtedraw.c (_vte_draw_get_char_width), (_vte_draw_text),
+       (_vte_draw_char), (_vte_draw_has_char):
+       * src/vtedraw.h:
+       * src/vtepangocairo.c (_vte_pangocairo_set_text_font),
+       (_vte_pangocairo_get_char_width), (_vte_pangocairo_has_bold),
+       (_vte_pangocairo_draw_text), (_vte_pangocairo_draw_has_char):
+       * src/vteskel.c:
+       Try bold font before pseudo-bolding.
+
+2009-02-02  Christian Persch  <chpe gnome org>
+
+       Bug 570208 – vte fails to build outside source tree
+
+       * python/Makefile.am: Build fix.
+
+2009-02-01  Christian Persch  <chpe gnome org>
+
+       * src/marshal.list:
+       * src/vte.c: (vte_terminal_class_init):
+       * src/vtebg.c: (vte_bg_class_init): Remove marshalers that have stock
+       ones in gobject, and use the stock ones instead.
+
+2009-02-01  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in: Require GTK+ >= 2.14, for "gtk-fontconfig-timestamp"
+       settings property.
+
+       * src/vte.c (vte_terminal_style_set),
+       (vte_terminal_set_font_full_internal), (vte_terminal_init),
+       (vte_terminal_class_init):  Use style_set class method instead of
+       hooking to style-set signal.  Also, proceed to recreating the font
+       even if neither description nor antialias setting changed.  This is
+       necessary to pick up fontconfig configuration changes as well as font
+       install/uninstallations or GNOME font preferences changes.
+
+       * src/vtepangocairo.c (font_info_destroy),
+       (fontconfig_timestamp_quark),
+       (vte_pango_cairo_set_fontconfig_timestamp),
+       (vte_pango_cairo_get_fontconfig_timestamp), (context_hash),
+       (context_equal), (font_info_create_for_context),
+       (font_info_create_for_screen):
+       Use fontconfig_timestamp in the font object hash, such that we respond
+       to fontconfig configuration changes.
+
+2009-01-22  Saleem Abdulrasool <compnerd compnerd org>
+
+       * src/vteseq.c (vte_sequence_handler_window_manipulation):
+               Tweak output for OSC 13, 14, 18, 19, 20, 21.  Bug #548272.
+
+2009-01-20  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_realize): Use GDK_BLANK_CURSOR for the
+       invisible cursor on gtk+ >= 2.15.
+
+2009-01-20  Christian Persch  <chpe gnome org>
+
+       * gnome-pty-helper/gnome-pty-helper.c: (init_term_with_defaults),
+       (open_ptys), (close_pty_pair): Use ttyname() as recommended in the
+       glibc manual. Bug #565688.
+
+2009-01-06  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_parse_color),
+       (vte_sequence_handler_change_color),
+       (vte_sequence_handler_request_terminal_parameters),
+       (vte_sequence_handler_send_primary_device_attributes),
+       (vte_sequence_handler_send_secondary_device_attributes),
+       (vte_sequence_handler_device_status_report),
+       (vte_sequence_handler_dec_device_status_report),
+       (vte_sequence_handler_window_manipulation),
+       (vte_sequence_handler_change_cursor_color):
+       Convert some g_strdup_printf() uses to g_snprintf() when
+       the buffer was fixed-size and freed immediately.
+       Also fix g_snprintf usage by not using its return value.
+       *If* the buffer is short, the returned len is not what we
+       are interested in.
+       Finally, pass -1 as len to vte_terminal_feed_child() in
+       most places.  This means a bit more work for the processor,
+       but cleaner code.
+
+2009-01-06  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 566795 – VTE fails to build in trunk
+
+       * src/vteseq.c (vte_sequence_handler_change_cursor_color):
+       Fix build.
+
+2009-01-06  Saleem Abdulrasool <compnerd compnerd org>
+
+       * src/vteseq-n.gperf:
+       * src/vteseq.c (vte_ucs4_to_utf8), (vte_parse_color),
+       (vte_terminal_emit_deiconify_window), (vte_sequence_handler_change_color),
+       (vte_sequence_handler_change_cursor_color):
+
+       Bug #524170 - Pull out ucs4_to_utf8 and use in new functions.  Add support
+       for OSC 4 (initc) and OSC 12 (change cursor color).
+
+2009-01-06  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 566730 – vte_terminal_set_color_cursor() calls invalidate_all but
+       it doesn't have to
+
+       * src/vte.c (vte_terminal_set_color_internal): If color is VTE_CUR_BG,
+       invalidate_cursor_once instead of invalidate_all.
+
+2008-12-26  Halton Huo  <halton huo sun com>
+
+       Bug 565679 – alloca is discouraged
+
+       * gnome-pty-helper/gnome-pty-helper.c: use malloc replace alloca.
+
+2008-12-26  Christian Persch  <chpe gnome org>
+
+       * configure.in: Fix the same typo also in the libinfo check.
+
+2008-12-26  Halton Huo  <halton huo sun com>
+
+       Bug 565675 – typo in configure.in cause ncurses checking fail
+
+       * configure.in: Fix typo for ncurses. s/ncuses/ncurses
+
+2008-12-25  Behdad Esfahbod  <behdad gnome org>
+
+       * src/interpret.c (main):
+       * src/slowcat.c (catfile):
+       * src/table.c (_vte_table_addi), (_vte_table_add):
+       * src/trie.c (_vte_trie_matchx):
+       * src/vte.c (_vte_invalidate_cell), (_vte_terminal_insert_char):
+       * src/vteaccess.c (offset_from_xy),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere):
+       * src/vteapp.c (main):
+       * src/vtebg.c (vte_bg_cache_item_free), (vte_bg_cache_add):
+       Fix warnings.
+
+2008-12-25  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 565663 – compile failure because use static function in another .h
+       file
+
+       * src/vte.c: Don't mark extern function inline.
+
+2008-12-17  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+
+       * src/vteunistr.c:
+       Limit to 9 combining marks per unistr, and a total of 100,000 unistrs.
+       All to prevent OOM.
+
+2008-12-15  Behdad Esfahbod  <behdad gnome org>
+
+       * NEWS:
+       * configure.in:
+       Released 0.19.4.
+
+2008-12-14  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 564535 – check for gperf on build
+
+       * autogen.sh: Check for gperf.
+
+2008-12-12  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/Makefile.am:
+       * src/vteunistr.c (unistr_comp_hash), (unistr_comp_equal),
+       (_vte_unistr_append_unichar), (_vte_unistr_get_base),
+       (_vte_unistr_append_to_string), (_vte_unistr_strlen):
+       * src/vteunistr.h:
+       Document vteunistr.
+
+2008-12-12  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteunistr.h: Minor cleanup.
+
+2008-12-12  Behdad Esfahbod  <behdad gnome org>
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Avoid pointers in the
+       const array.
+
+2008-12-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+
+       * src/vteunistr.c:
+       * src/vteunistr.h:
+       An extended UTF-32 type that assigns numeric values to UTF-8 sequences
+       on demand.  Can be used to efficiently store a string, instead of one
+       character, at each cell.
+
+       * src/vte-private.h:
+       * src/vte.c:
+       * src/vtedraw.c:
+       * src/vtedraw.h:
+       * src/vtepangocairo.c:
+       Port to vteunistr instead of gunichar for cell content.
+       
+       * src/vte.c:
+       Handle zerowidth insertions by sticking it on the previous cell.
+
+       * src/iso2022.h:
+       * src/iso2022.c:
+       Cleanup ambiguous-width handling.  Handle zero-width chars.
+
+2008-12-11  Christian Persch  <chpe gnome org>
+
+       Bug 564057 – src/pty.c does not compile with
+       --disable-gnome-pty-helper
+       
+       * src/pty.c: Build with --disable-gnome-pty-helper. Patch by
+       yselkowitz at users.sourceforge.net .
+
+2008-12-11  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_class_init): Update set-scroll-adjustement
+       docs.
+
+2008-12-10  Paolo Borelli  <pborelli katamail com>
+
+       Bug 562695 - ship pkg-config file for python bindings
+
+       * configure.in:
+       * python/Makefile.am:
+       * python/pyvte.pc.in:
+
+2008-12-08  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 563752 – pangocairo backend recreates cairo_surface_t for
+       background drawing
+
+       * src/vte.c (vte_terminal_paint),
+       (vte_terminal_set_scroll_background),
+       (vte_terminal_background_update):
+       * src/vtedraw.c (_vte_draw_new), (_vte_draw_set_background_solid),
+       (_vte_draw_set_background_image),
+       (_vte_draw_set_background_scroll), (_vte_draw_draw_rectangle):
+       * src/vtedraw.h:
+       * src/vtepangocairo.c (_vte_pangocairo_destroy),
+       (_vte_pangocairo_set_background_solid),
+       (_vte_pangocairo_set_background_image),
+       (_vte_pangocairo_set_background_scroll), (_vte_pangocairo_clear),
+       (_vte_pangocairo_clip), (set_source_color_alpha):
+       * src/vteskel.c:
+       Cleanup vte_draw background API.  Use a cached cairo_pattern_t in
+       pangocairo backend.
+
+       Also, queue background update on scroll_background change.
+
+2008-12-07  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 163213 – Cursor should remain visible when selected
+
+       * src/vte.c (vte_terminal_paint_cursor): Do a reverse hollow cursor
+       if selected but not focused.
+
+2008-12-05  Christian Persch  <chpe gnome org>
+
+       * src/vtebg.c: (vte_bg_get_pixmap): Don't modify source_pixbuf. If
+       we're going to change the saturation, first make a copy. Fixes
+       switching background type between fauxtransparency and image in
+       gnome-terminal trunk.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (_vte_pangocairo_clear): Fix scrolling offset.
+       Ray Strode reported that background offset was being done incorrectly.
+       A negation did it.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * Makefile.am:
+       * configure.in:
+       Hook up perf/.
+
+       Also adjust svn:ignore props.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * NEWS:
+       * configure.in:
+       Released 0.19.3.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_new_row_data), (_vte_new_row_data_sized),
+       (vte_terminal_match_contents_refresh),
+       (vte_terminal_process_incoming), (vte_terminal_init),
+       (vte_terminal_set_word_chars):
+       Always call g_array_new() with clear flag set.  It incurs no overhead
+       but avoids heisenbugs.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_terminal_insert_char):
+       * src/vteseq.c (vte_sequence_handler_screen_alignment_test):
+       Use structure assignment instead of memcpy().
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor): Remove
+       unneeded checks.  They were masking bugs.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       Red Hat Bug 474618 -  gnome-terminal sometime leaves empty begining
+       of the line
+
+       * src/vte.c (_vte_terminal_insert_char): Really fix the bug this time.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       Build fixes.
+
+       * NEWS:
+       * configure.in:
+       Released 0.19.2.
+
+2008-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       Red Hat Bug 474618 -  gnome-terminal sometime leaves empty begining
+       of the line
+
+       * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor): continue
+       instead of break'ing out of the loop.
+
+2008-12-04  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 563274 – Misspelled word in src code
+
+       * src/vte.c (vte_terminal_process_incoming): Fix typo.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 563024 – In alternate-screen, selection can copy out of screen
+       boundaries
+
+       * src/vte.c (vte_terminal_extend_selection_expand),
+       (vte_terminal_extend_selection): Make sure current selection row is in the
+       visible screen.
+
+       I have a deja vu of fixing this bug like two years ago...
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       Bug 552096 – Detect tgetent if provided by libtinfo
+
+       * configure.in: Rewrote tgetent checks to be more readable. Also check
+       for tgetent in libtinfo.
+       * src/keymap.c: (_vte_keymap_map), (_vte_keymap_key_is_modifier):
+       * src/ssfe.c: Adjust includes accordingly.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_start_selection),
+       (vte_terminal_extend_selection): Don't do fancy rounding for row
+       selection, only for column.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_invalidate_selection),
+       (vte_terminal_start_selection): Call function instead of open coding.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtedraw.h:
+       * src/vtepangocairo.c (font_info_cache_ascii):
+       Cache the full ASCII range if Latin uses the default language.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (context_hash), (context_equal),
+       (font_info_create_for_context), (font_info_create_for_screen),
+       (font_info_create_for_widget): Respect PangoLanguage set on a widget's
+       PangoContext.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_measure_font): Remove CJK fullwidth
+       measurement hacks.  Pango doesn't need these.  We're down to one
+       FcFontSort() instead of two during initialization.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 559818 – redundant selection-changed signal on deselection
+
+       * src/vte.c (vte_terminal_start_selection),
+       (vte_terminal_extend_selection): Fix all redundant selection-changed
+       signals.  Including those on double-click.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c:
+       Rewrite text selection.  In particular, fix block_mode.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * HACKING: Update.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_set_pointer_visible),
+       (vte_terminal_get_mouse_tracking_info),
+       (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_button),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_scroll), (vte_terminal_reset):
+       * src/vteseq.c (vte_sequence_handler_decset_internal):
+       Mouse tracking cleanup.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in: Add -Wno-switch-enum warning flag as we are not
+       -Wswitch-enum clean.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_extend_selection_on_type),
+       (vte_terminal_extend_selection):
+       Cut one third of the 400-line function out into a function of its own.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_extend_selection): Revert previous change.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_extend_selection):  Add a shortcircuit
+       check.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag), (cursor_inside_match),
+       (vte_terminal_match_hilite_show),
+       (vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
+       (vte_terminal_extend_selection), (vte_terminal_autoscroll),
+       (vte_terminal_motion_notify), (vte_terminal_button_press),
+       (vte_terminal_button_release):
+       Change mouse coordinates type from double to long.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_start_selection),
+       (vte_terminal_extend_selection):
+       Cleanup selection code a bit more.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_start_selection),
+       (vte_terminal_extend_selection):
+       Merge selection_origin and selection_restart_origin as only one was
+       being used at a time.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 471480 – select single character
+       Bug 110371 – Cannot select newline at end of full line
+
+       * src/vte-private.h:
+       * src/vte.c (find_start_column), (find_end_column),
+       (vte_terminal_start_selection), (math_div),
+       (vte_terminal_extend_selection):
+       Make selection work more I-beam-like.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_class_init): Show the correct version in
+       Since: and Deprecated: annotations.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       Bug 112172 – Get rid of VteReaper
+
+       * src/reaper.h: Deprecate.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * configure.in: Enable maintainer mode by default. Define more
+       deprecation defines, and define the *_DISABLE_SINGLE_INCLUDES defines.
+       Enable deprecations by default in maintainer mode.
+       * src/vteapp.c: Undef VTE_DISABLE_DEPRECATED here.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * configure.in:
+       * src/vte-private.h: Move VTE_UTF8_BPC definition from configure to
+       vte-private.h.
+       * src/vteconv.c: Include vte-private.h here.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c: (mark_input_source_invalid),
+       (_vte_terminal_connect_pty_read), (mark_output_source_invalid),
+       (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_read),
+       (_vte_terminal_disconnect_pty_write),
+       (_vte_terminal_enable_input_source), (remove_cursor_timeout),
+       (vte_terminal_key_press), (vte_terminal_focus_in),
+       (vte_terminal_focus_out), (vte_terminal_init),
+       (vte_terminal_unrealize), (vte_terminal_expose),
+       (vte_terminal_background_update), (add_update_timeout),
+       (remove_from_active_list), (vte_terminal_add_process_timeout),
+       (process_timeout), (update_repeat_timeout), (update_timeout): Remove
+       VTE_INVALID_SOURCE definition and just use 0 directly.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       Bug 560667 – invalid definition of VTE_INVALID_SOURCE
+
+       * src/vte-private.h: Fix VTE_INVALID_SOURCE define to use 0 instead of
+       -1.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * configure.in: Remove two AC_DEFINEs from here.
+       * src/vte-private.h: Define VTE_INVALID_SOURCE here for now.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       Bug 112172 – Get rid of VteReaper
+
+       * src/reaper.c: (vte_reaper_child_watch_cb),
+       (vte_reaper_add_child), (vte_reaper_init),
+       (vte_reaper_constructor), (vte_reaper_finalize),
+       (vte_reaper_class_init), (vte_reaper_get), (child_exited), (main):
+       * src/reaper.h: Prepare for removal of Reaper in vte1.0 by removing
+       the unused pre-glib-2.4 code from Reaper.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * src/vteapp.c: (main): Catch the child-exited signal to the child's
+       exit code.
+
+2008-12-02  Christian Persch  <chpe gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_class_init): Intern the signal names.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_motion_notify): Do not discard motion notify
+       events with coordinates out of our allocation, or when the cell under
+       the cursor didn't change.  These are useful for extending selection
+       and for sub-cell selection details, as well as app-requested all
+       motion tracking.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 541441 – Dehighlight links on visibility notify?
+
+       * src/vte.c (vte_terminal_focus_in), (vte_terminal_enter):  Move match
+       highlight enabling into "enter" event instead of "focus in".
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_set_pointer_visible),
+       (vte_terminal_maybe_send_mouse_button),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_scroll), (vte_terminal_reset):
+       * src/vteseq.c (vte_sequence_handler_decset_internal):
+       Simplify mouse event tracking by using a single int instead of five
+       booleans.
+
+2008-12-02  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_deselect_all),
+       (vte_terminal_process_incoming), (vte_cell_is_selected),
+       (vte_terminal_copy), (vte_terminal_start_selection),
+       (vte_terminal_extend_selection), (vte_terminal_select_all),
+       (vte_terminal_paint), (_vte_terminal_get_start_selection),
+       (_vte_terminal_get_end_selection), (_vte_terminal_select_text):
+       Rename struct selection_cell_coords members from x,y to col,row for
+       clarity.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * NEWS:
+       * configure.in:
+       Released 0.19.1.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/Makefile.am:
+       * doc/reference/check-doc-syntax.sh:
+       * src/Makefile.am:
+       * src/check-doc-syntax.sh:
+       * src/vte.c (vte_terminal_catch_child_exited),
+       (vte_terminal_class_init):
+       * src/vte.h:
+       * src/vtepangocairo.c:
+       Copy check-doc-syntax.sh tests from cairo and fix doc bugs.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/tmpl/vte-unused.sgml:
+       * doc/reference/vte-sections.txt:
+       Remove reaper docs.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 562806 – crash in Terminal: Typing "cd " just after ...
+
+       * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor):
+       Fix possible NULL dereference.
+
+       * src/vteseq.c (vte_sequence_handler_ta):
+       Fix tab fragments to have \t as c.
+
+2008-12-01  Christian Persch  <chpe gnome org>
+
+       * NEWS:
+       * configure.in: Prepare 0.19.0.
+
+2008-12-01  Christian Persch  <chpe gnome org>
+
+       Bug 562511 – scrollbar doesn't sit at the bottom
+
+       * src/vte.c: (vte_terminal_init),
+       (vte_terminal_set_scrollback_lines): Always update the scrollback
+       lines, even if the setting hasn't changed. Work-around to fix bug
+       #562511.
+
+2008-12-01  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_class_init): Fix visible-bell property.
+
+2008-12-01  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_set_font_full_internal),
+       (vte_terminal_class_init): Rename font property to "font-desc" to be
+       more in line with other properties of this type in gtk.
+
+2008-12-01  Christian Persch  <chpe gnome org>
+
+       * src/vteapp.c: (main): Add gobject notification debugging.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_terminal_termcap_string_same_as_for),
+       (vte_sequence_handler_se), (vte_sequence_handler_so):
+       Simplify standout handling code.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_PROTO.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Rip out vte_sequence_handler_invoke.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_INVOKE.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Rip out VTE_SEQUENCE_HANDLER_REFERENCE.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (_vte_terminal_handle_sequence): Rip out the gcc label
+       vtable code.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (display_control_sequence),
+       (_vte_terminal_handle_sequence):
+       Some cleanup of the gcc label vtable code before I rip it out.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_sequence_handler_set_title_internal),
+       (vte_sequence_handler_set_mode_internal),
+       (vte_sequence_handler_invoke_internal):
+       Move some code around.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteskel.c: Remove excess initializer.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/buffer.c:
+       * src/caps.c:
+       * src/dumpkeys.c:
+       * src/interpret.c:
+       * src/iso2022.c:
+       * src/keymap.c:
+       * src/matcher.c:
+       * src/mev.c:
+       * src/pty.c:
+       * src/reaper.c:
+       * src/reflect.c:
+       * src/ring.c:
+       * src/slowcat.c:
+       * src/ssfe.c:
+       * src/table.c:
+       * src/trie.c:
+       * src/vteaccess.c:
+       * src/vtebg.c:
+       * src/vteconv.c:
+       * src/vtedraw.c:
+       * src/vteseq.c:
+       * src/vteskel.c:
+       * src/xticker.c:
+       #include <config.h> instead of "../config.h".
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Some wild crack to build the vtable using gcc
+       extension for labels as values.  The advantage is that we get down to
+       an empty .data for vteseq.o but .text grows considerably.  And we have
+       to use nested functions, and #define static auto.  It's really ugly.
+       I'm going to remove it in the next commit or the one after.  Just
+       wanted to record it here for posterity.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_sequence_handler_invoke),
+       (vte_sequence_handler_offset), (vte_sequence_handler_multiple),
+       (vte_sequence_handler_decset_internal),
+       (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+       Almost there.  Towards a .data-free vtable.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Finish decoupling handle type from function type.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vteseq.c (vte_sequence_handler_offset),
+       (vte_sequence_handler_multiple),
+       (vte_sequence_handler_decset_internal),
+       (vte_sequence_handler_set_mode_internal),
+       (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+       Make sequence handlers return void instead of gboolean.  The return
+       value was unused.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_sequence_handler_offset),
+       (vte_sequence_handler_multiple),
+       (vte_sequence_handler_decset_internal),
+       (VTE_SEQUENCE_HANDLER_PROTO), (_vte_terminal_handle_sequence):
+       Switch to calling other handlers using two macros.
+       Get rid of match and match_quark arguments to sequence handlers.
+       They were unused.
+
+2008-12-01  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_sequence_handler_set_title_internal):
+       Cleanup vte_sequence_handler_set_title_internal.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (VTE_SEQUENCE_HANDLER_PROTO): Use a macro to define
+       type of sequence handlers.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-2.c:
+       * src/vteseq-n.c:
+       Remove gperf-generated files from SVN, but still distribute them in
+       the tarball.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c:
+       * src/vteseq.c (_vte_terminal_scroll_text),
+       (vte_sequence_handler_scroll_down),
+       (vte_sequence_handler_scroll_up):
+       More code shufflling.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-list.h:
+       Remove vteseq-list.h from SVN, but still distribute it in the tarball.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-list.h:
+       Autogenerate vteseq-list.h.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-list.h:
+       * src/vteseq.c (_vte_terminal_home_cursor),
+       (_vte_terminal_clear_screen), (_vte_terminal_clear_current_line),
+       (_vte_terminal_clear_above_current),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_cl),
+       (vte_sequence_handler_ho), (vte_sequence_handler_erase_in_display),
+       (vte_sequence_handler_erase_in_line):
+       Sync vteseql-list.h with actual handlers used in gperf files.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-list.h:
+       * src/vteseq.c (vte_sequence_handler_scroll_down),
+       (vte_sequence_handler_scroll_up):
+       Implement these calling vte_terminal_scroll() directly instead of
+       multiple'ing.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_scroll), (_vte_terminal_scroll_region):
+       * src/vteseq.c (vte_sequence_handler_scroll_down_one),
+       (vte_sequence_handler_scroll_up_one):
+       Move vte_terminal_scroll to vte.c
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-list.h:
+       * src/vteseq.c:
+       Remove vte_sequence_handler_complain_key.  The idea was to warn about
+       receiving control-sequence handling request for escape sequences that
+       actually belong to a key stroke.  Kinda like a debugging feature.
+       Remove it as the number of sequences being handle that way was
+       greater than the number of sequences handled in the real sense.
+       Saves 2k .data!
+
+       The actual list is still in vteseq-2.gperf, but commented out.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (_vte_sequence_get_handler),
+       (display_control_sequence):
+       Remove stale comment.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_process_incoming):
+       * src/vteseq.c (display_control_sequence),
+       (_vte_terminal_handle_sequence):
+       * src/vteseq.h:
+       Move _vte_terminal_handle_sequence() into vteseq.c
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_insert_line_internal), (vte_remove_line_internal),
+       (_vte_terminal_cursor_down), (_vte_terminal_insert_char),
+       (_vte_terminal_audible_beep), (_vte_terminal_visible_beep),
+       (_vte_terminal_beep), (vte_terminal_key_press):
+       * src/vteseq.c (vte_insert_line_internal),
+       (vte_remove_line_internal), (vte_unichar_strlen),
+       (vte_sequence_handler_bl), (vte_sequence_handler_sf),
+       (vte_sequence_handler_SF), (vte_sequence_handler_vb):
+       * src/vteseq.h:
+       Some code reshuffling to remove vte.c calls to vteseq.c functions.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-2.gperf:
+       * src/vteseq.c:
+       Minor.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (vte_terminal_beep): Move helper function out of the
+       way.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-2.c (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.c (vteseq_n_lookup):
+       * src/vteseq-n.gperf:
+       * src/vteseq.c:
+       Add a macro around sequence handler citations, for future table
+       tricks.
+
+2008-11-30  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-n.gperf:
+       * src/vteseq-n.c (vteseq_n_hash), (vteseq_n_lookup):
+       Remove bogus entry that accidentally made it into the gperf list.
+
+2008-11-30  Christian Persch  <chpe gnome org>
+
+       * acinclude.m4: Remove more crufty macros.
+
+2008-11-30  Christian Persch  <chpe gnome org>
+
+       * acinclude.m4: Remove FT2 check macro.
+
+2008-11-30  Christian Persch  <chpe gnome org>
+
+       Bug 540951 – The gnome-pty-helper is spawn when its not needed
+       
+       * src/pty.c: (_vte_pty_open): Don't use the pty helper when we don't
+       need to update any of utmp, wtmp, lastlog. Patch by Alex Cornejo.
+
+2008-11-30  Christian Persch  <chpe gnome org>
+
+       Bug 465036 – gnome-pty-helper locks /var/run/utmp
+
+       * gnome-pty-helper/gnome-utmp.c: (update_utmp): Close the utmp
+       database after updating it. Patch by Kevin W. Rudd.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 127870 – terminal garbled and needs 'reset' after cat'ing file
+
+       * src/iso2022.c (_vte_iso2022_state_new): Initialize all four maps
+       (G0, G1, G2, G3) in USASCII mode, like xterm does.
+
+2008-11-29  Christian Persch  <chpe gnome org>
+
+       * python/vtemodule.c: (initvte): Register the constants too!
+
+2008-11-29  Christian Persch  <chpe gnome org>
+
+       * src/debug.c: (_vte_debug_init):
+       * src/debug.h:
+       * src/vte.c: (vte_terminal_size_request),
+       (vte_terminal_size_allocate): Add a specific debug flag for widget
+       size-request/size-allocation.
+
+2008-11-29  Christian Persch  <chpe gnome org>
+
+       * src/vteapp.c: (main): Add options to use a GtkScrolledWindow as the
+       terminal's container, and to set its vertical scrollbar policy, to
+       allow testing VteTerminal in a scrolled window.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 317236 – vte resynchrones too late on invalid UTF-8
+
+       * src/vteconv.c (_vte_conv_utf8_utf8): In our UTF-8 to UTF-8 converter
+       differentiate between an incomplete sequence and an ill sequence at
+       the end of the buffer.  Also cleanup some minor inaccuracies (return
+       value).
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 107031 – device-control-string error
+
+       * src/table.c (_vte_table_addi):
+       * src/vte.c (vte_terminal_handle_sequence):
+       * src/vteseq.c (vte_sequence_handler_decset_internal):
+       Replace some g_warning's with vte debug output.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 521420 – vte closes connection to child before all output is read
+       Patch from Thomas Leonard
+
+       * src/reaper.c (vte_reaper_add_child): Install child watch at low
+       priority instead of high.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in: Require glib >= 2.18.0 as earlier glib versions
+       had a totally bogus g_unichar_iswide_cjk().
+
+       * perf/vim.sh: Don't use builting time command.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_emit_char_size_changed),
+       (_vte_terminal_emit_status_line_changed), (vte_terminal_init),
+       (vte_terminal_background_update):
+       Remove C++-style comment markers.
+
+2008-11-29  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 514632 – Problem with cursor in emacs in gnome-terminal
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_cleanup_tab_fragments_at_cursor),
+       (_vte_terminal_insert_char):
+       * src/vteseq.c (vte_sequence_handler_ch),
+       (vte_sequence_handler_cm), (vte_sequence_handler_le),
+       (vte_sequence_handler_cursor_character_absolute):
+       Break "smart tabs" into multiple empty cells when cursor moves
+       into them or inserting character there.
+
+2008-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       * src/debug.c (_vte_debug_init):
+       * src/debug.h:
+       * src/vtepangocairo.c (font_info_cache_ascii),
+       (font_info_allocate), (font_info_free),
+       (font_info_find_for_context), (font_info_get_unichar_info):
+       Port vtepangocairo profiling and lifecycle logging to vtedebug
+       facilities under debug domain "pangocairo".
+
+2008-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       * src/debug.c (_vte_debug_init): Rename debug env var from
+       VTE_DEBUG_FLAGS to VTE_DEBUG.
+
+2008-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       * src/debug.c (_vte_debug_init):
+       * src/debug.h:
+       Make _vte_debug_on() inline.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: Remove backward compat define for gtk 2.0, since we
+       already depend on a much higher version.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       * src/debug.c: (_vte_debug_on): Revert behaviour change of
+       _vte_debug_on() from last commit.
+
+2008-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 459553 – gnome-terminal cannot shows circled digits with the
+       correct width on ja_JP.PCK
+       Patch from Takao Fujiwara
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Recognize Shift_JIS
+       as East Asian locale for width considerations.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       * src/debug.c: (_vte_debug_init), (_vte_debug_on):
+       * src/debug.h:
+       * src/interpret.c: (main):
+       * src/pty.c: (main):
+       * src/reaper.c: (main):
+       * src/trie.c: (main):
+       * src/vte.c: (vte_terminal_new), (vte_terminal_class_init): Use
+       g_parse_debug_string to parse the debug flags.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       * src/vteregex.c: (compare_matches), (_vte_regex_compile),
+       (_vte_regex_free), (_vte_regex_exec): Remove the unused GNU regex
+       code too.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       * src/vteregex.c: (_vte_regex_compile), (_vte_regex_free),
+       (_vte_regex_exec): Remove unused PCRE code. If you want PCRE regexes,
+       use the new APIs that take GRegex.
+
+2008-11-28  Christian Persch  <chpe gnome org>
+
+       Bug 562385 – gnome-pty-helper goes to 100% cpu usage
+
+       * gnome-pty-helper/gnome-pty-helper.c: (pass_fd), (pty_free),
+       (main): Make sure data structures are correctly aligned and of the
+       right size. 
+
+2008-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in:
+       * src/Makefile.am:
+       More cleanup.
+
+2008-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       Run some of the utilities in "make check", and build the others.
+
+       * src/nativeecho.c:
+       * src/utf8echo.c:
+       Remove more useless trivial utilities.
+
+2008-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/iso8859mode.c:
+       * src/utf8mode.c:
+       Remove useless trivial utilities.
+
+2008-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am: Update EXTRA_DIST.
+
+2008-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * HACKING: Update :P.
+
+2008-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c (_vte_sequence_get_handler): Safely handle input of
+       length 1.
+
+2008-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.c (vteseq_n_lookup):
+       * src/vteseq-n.gperf:
+       Don't use switch in gperf-generated code.  This increases .data by 1k
+       but decreases .text by 6k AND the lookup code is MUCH faster.  It used
+       to do tens of compares before.
+
+2008-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-n.c (vteseq_n_lookup):
+       * src/vteseq.c (_vte_sequence_get_handler):
+       Revert previous commit, fix NULL dereference that it was trying to
+       fix, and make lookup functions inline.
+
+2008-11-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/Makefile.am:
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-n.c (vteseq_n_lookup):
+       * src/vteseq.c (_vte_sequence_get_handler):
+       Manually modify (and record those modifications in the Makefile)
+       the autogenerated gperf source code so that we return the sequence
+       handler directly from the lookup function, or NULL on failure.
+       So is this pain worth it?
+
+2008-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_get_unichar_info):
+       Free internal layout resources.
+
+2008-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 562332 – cleanup font infos on exit?
+
+       * src/vtepangocairo.c
+       (cleanup_delayed_font_info_destroys_predicate),
+       (cleanup_delayed_font_info_destroys), (ensure_quit_handler),
+       (font_info_register), (font_info_reference),
+       (font_info_destroy_delayed), (font_info_destroy):
+       Use gtk_quit_add() to complete delayed font_info destroys.
+
+2008-11-26  Christian Persch  <chpe gnome org>
+
+       Bug 562338 – don't need to connect to bunch of xft settings
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_style_changed), (add_cursor_timeout),
+       (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_finalize), (vte_terminal_realize): Don't listen to
+       changes on the gtk-xft-* GtkSettings properties. Just calling
+       vte_terminal_set_font_full in the style-set handler works fine.
+
+2008-11-26  Christian Persch  <chpe gnome org>
+
+       Bug 488960 – gnome-terminal on Solaris 10 does not clean up utmpx on
+       exit (intermittent)
+
+       * gnome-pty-helper/gnome-pty-helper.c: (main):
+       * gnome-pty-helper/gnome-pty.h:
+       * src/pty.c: (_vte_pty_close): Add new GNOME_PTY_SYNCH operation to
+       gnome-pty-helper. Patch from Behdad.
+
+2008-11-26  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_style_changed),
+       (vte_terminal_ensure_font), (vte_terminal_set_font_full),
+       (vte_terminal_set_font_from_string_full_internal),
+       (vte_terminal_set_font_from_string_full),
+       (vte_terminal_reset_rowdata), (vte_terminal_set_property): Add
+       vte_terminal_set_font_*full_internal so we don't use deprecated
+       symbols internally.
+
+2008-11-26  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_sync_settings),
+       (vte_terminal_screen_changed): Remove gtk 2.12 version checks, since
+       we already depend on 2.12.
+
+2008-11-26  Christian Persch  <chpe gnome org>
+
+       Bug 561366 – remove antialias setting for 1.0
+       
+       * src/vte.c: (vte_terminal_set_font_full),
+       (vte_terminal_get_property), (vte_terminal_class_init):
+       * src/vte.h: Deprecate the font antialias setting, and remove the
+       (existing only on trunk) font-antialias property already.
+
+2008-11-25  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am:
+       * src/vteseq-2.c (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.c (vteseq_n_hash), (vteseq_n_lookup):
+       * src/vteseq-n.gperf:
+       * src/vteseq.c (_vte_sequence_get_handler):
+       Cleanup gperf stuff.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 562187 – Add make rules for calling gperf
+
+       * src/Makefile.am: Add a "gperf" target to be run manually.
+
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.gperf:
+       Add comment about "make gperf".
+
+       * src/vteseq-2.c:
+       * src/vteseq-n.c:
+       Regenerate using newer gperf.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 416518 – Do something about uniwidths
+
+       * src/iso2022.c (_vte_iso2022_is_ambiguous):
+       Call into glib to determine ambiguous-width chars.
+
+       * src/genwidths.py:
+       * src/uniwidths:
+       Remove.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 500191 – Remove vteseq-table.h?
+
+       * src/Makefile.am:
+       * src/vteseq-gen.c:
+       * src/vteseq-table.h:
+       Remove the old table implementation.  We use gperf-generated tables
+       now.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 514457 – Use g_strv_length()
+
+       * src/vte.c (_vte_terminal_fork_basic): Do it.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_create_for_widget): No need to check
+       widget font desc here as vte.c does that for us already.
+
+2008-11-24  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_destroy): Modify GTK_CHECK_VERSION
+       handling to make my vim syntax highlighter happy.
+
+2008-11-23  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_ensure_cursor): Refactor duplicate code.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/vte.h: Move all the deprecated stuff into one place.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       Bug 542561 – Doesn't build when disabling gnome-pty-helper
+
+       * src/pty.c: Always include sys/socket.h. Patch by Loïc Minier.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/vteapp.c: (main): Fix --blink; the flag is inverted.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/vteapp.c: (main): Use vte_terminal_set_cursor_blink_mode instead
+       of the deprecated set_cursor_blinks here.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       Bug 560766 – Deprecate and remove vte_terminal_get_using_xft()
+
+       * src/vte.c: (vte_terminal_get_using_xft):
+       * src/vte.h:
+       * src/vtedraw.c: (_vte_draw_text):
+       * src/vtedraw.h:
+       * src/vtepangocairo.c: Deprecate vte_terminal_get_using_xft() as preparation for
+       bug #560766. Remove the internal vtedraw method already.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       Bug 536894 – Confusing use of "free" as variable-name in ring
+       functions
+
+       * src/ring.c: (_vte_ring_new), (_vte_ring_new_with_delta),
+       (_vte_ring_remove):
+       * src/ring.h: Don't shadow global declarations. Patch by dmacks at 
+       netspace.org. 
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * python/vte.override: Fix missing-prototypes warnings.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/vtepangocairo.c: No need to include gi18n-lib.h here.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * configure.in:
+       * vte-uninstalled.pc.in:
+       * vte.pc.in: Clean up the pkgs declared for use in the .pc files.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * configure.in: Depend on gtk 2.12. Bug #398862.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/table.c: (print_array): Fix the build (broken since r1622).
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/reaper.c: Don't include gtk.h here, it's unneeded.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/iso2022.c: (main): Make iso2022 programme build again; it was
+       broken since r1612.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/Makefile.am: Separate CFLAGS and CPPFLAGS.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * src/Makefile.am: Don't add LDFLAGS to *_LDADD, that's wrong and
+       broken.
+
+2008-11-22  Christian Persch  <chpe gnome org>
+
+       * configure.in:
+       * src/Makefile.am:
+       * vte-uninstalled.pc.in:
+       * vte.pc.in: Remove more configure cruft: OTHERCFLAGS, OTHERLIBS,
+       X_CFLAGS and X_LIBS.
+
+2008-11-21  Christian Persch  <chpe gnome org>
+
+        * src/vtepangocairo.c: (font_info_destroy_delayed),
+        (font_info_destroy): Use gdk_threads_add_timeout_seconds() for
+        complete threadsafety.
+
+2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+
+       * vte.pc.in: Remove FT2_LIBS and FT2_CFLAGS
+
+2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/iso2022.c (_vte_iso2022_is_ambiguous): Break out of interval
+       search as early as possible. Exploit the strict ordering of the 
+       ambiguous/unambiguous ranges to break out of the for loop as soon
+       as the character is less than a range start. (As the arrays only
+       contain 2/3 elements, it is not worth adding the overhead of calling
+       bsearch()).
+
+2008-11-21  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/iso2022.c (process_cdata): Copy the gunichars directly to the
+       array from the incoming chunk.
+
+2008-11-20  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/Makefile.am: Remove FT2_FLAGS
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_destroy_delayed): Remove obsolete
+       check.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 561713 – crash on font cache cleanup
+
+       * src/vtepangocairo.c (font_info_reference), (font_info_destroy):
+       Remove destroy timeout when resurrecting a font info.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_cache_ascii),
+       (font_info_allocate), (font_info_free),
+       (font_info_find_for_context):
+       Make profiling messages print the info pointer.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in:  Remove more cruft.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560819 – Remove obsolete backends
+
+       * configure.in:
+       * src/Makefile.am:
+       * src/vtebg.c (vte_bg_get_pixmap):
+       * src/vtebg.h:
+       * src/vtedraw.c:
+       * src/vtefc.c:
+       * src/vtefc.h:
+       * src/vteft2.c:
+       * src/vteft2.h:
+       * src/vtegl.c:
+       * src/vtegl.h:
+       * src/vteglyph.c:
+       * src/vteglyph.h:
+       * src/vterdb.c:
+       * src/vterdb.h:
+       * src/vtergb.c:
+       * src/vtergb.h:
+       * src/vtexft.c:
+       * src/vtexft.h:
+       Remove all backends except for pangocairo.  Saves so much code.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560819 – Remove obsolete backends
+
+       * src/Makefile.am:
+       * src/vtedraw.c:
+       * src/vtepango.c:
+       * src/vtepango.h:
+       Remove pango backend.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560819 – Remove obsolete backends
+
+       * configure.in:
+       * src/Makefile.am:
+       * src/vtedraw.c:
+       * src/vtepangox.c:
+       * src/vtepangox.h:
+       Remove pangox backend.
+
+2008-11-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560818 – pangocairo backend doesn't share font cache across
+       widgets
+
+       * src/vtepangocairo.c (font_info_cache_ascii),
+       (font_info_allocate), (font_info_free), (font_info_register),
+       (font_info_unregister), (font_info_reference),
+       (font_info_destroy_delayed), (font_info_destroy), (context_hash),
+       (context_equal), (font_info_find_for_context),
+       (font_info_create_for_context), (font_info_create_for_screen),
+       (font_info_get_unichar_info): Cache font info and use it for multiple
+       widgets.
+
+2008-11-19  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_create_for_screen),
+       (font_info_destroy): Remove unused PangoCoverage.
+
+2008-11-19  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_find_unichar_info),
+       (font_info_cache_ascii), (font_info_measure_font),
+       (font_info_get_unichar_info): Cache ASCII characters when building
+       font.
+
+2008-11-18  Christian Persch  <chpe gnome org>
+
+       Remove glib usage from gnome-pty-helper. Bug #560977.
+
+       * gnome-pty-helper/Makefile.am: Remove GLIB CFLAGS/LIBS.
+       * gnome-pty-helper/configure.in: Remove glib check, and do some auto*
+       modernisation.
+       * gnome-pty-helper/gnome-pty-helper.c: (open_ptys), (exit_handler),
+       (main): Use alloca instead of g_alloca, and use int instead of
+       gboolean.
+
+2008-11-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtepangocairo.c (font_info_create_for_screen),
+       (font_info_destroy): Remove copy of font desc and antialias from font
+       info object as they were not used.
+
+2008-11-18  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 561185 – pangocairo backend sets antialias incorrectly
+
+       * src/vtepangocairo.c (font_info_create_for_screen): Handle
+       FORCE_ENABLE correctly.
+
+2008-11-16  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560817 – pagocairo backend doesn't have correct opacity support     
+
+       * src/vtepangocairo.c (_vte_pangocairo_clear),
+       (_vte_pangocairo_draw_text), (_vte_pangocairo_draw_rectangle),
+       (_vte_pangocairo_fill_rectangle): Fix opacity support by using
+       SOURCE operator.
+
+2008-11-16  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 560991 – Unsetting background doesn't work
+
+       * src/vte.c (vte_terminal_set_background_image): Correctly unset
+       background if image==NULL.
+
+2008-11-14 Christian Persch <chpe gnome org>
+
+       * src/vteskel.c: Fix missing prototype warning.
+
+2008-11-14  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 395599 – Add pangocairo backend
+
+       * configure.in:
+       Require pango >= 1.22.0
+
+       * src/Makefile.am:
+       * src/vtedraw.c:
+       * src/vtepangocairo.c:
+       * src/vtepangocairo.h:
+       Add a pangocairo drawing backend.  Use it by default.  This is as fast
+       as the xft backend.  Doesn't share font caches across widgets yet.
+       Also, the transparent background stuff doesn't match xft backend's
+       yet.
+
+2008-11-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_ensure_font):
+       * src/vtedraw.c (_vte_draw_new), (_vte_draw_free),
+       (_vte_draw_set_background_opacity),
+       (_vte_draw_set_background_color), (_vte_draw_set_text_font),
+       (_vte_draw_get_text_metrics), (_vte_draw_get_char_width),
+       (_vte_draw_char), (_vte_draw_draw_rectangle),
+       (_vte_draw_set_scroll):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_destroy), (_vte_ft2_start),
+       (_vte_ft2_end), (_vte_ft2_set_background_image), (_vte_ft2_clear),
+       (_vte_ft2_set_text_font), (_vte_ft2_get_text_metrics),
+       (_vte_ft2_get_char_width), (_vte_ft2_draw_text),
+       (_vte_ft2_draw_has_char), (_vte_ft2_draw_rectangle),
+       (_vte_ft2_fill_rectangle):
+       * src/vtegl.c (_vte_gl_destroy), (_vte_gl_get_visual),
+       (_vte_gl_start), (_vte_gl_end), (_vte_gl_set_background_image),
+       (_vte_gl_clear), (_vte_gl_set_text_font),
+       (_vte_gl_get_text_metrics), (_vte_gl_get_char_width),
+       (_vte_gl_draw_text), (_vte_gl_draw_has_char), (_vte_gl_rectangle):
+       * src/vtepango.c (_vte_pango_set_text_font),
+       (_vte_pango_get_text_metrics):
+       * src/vtepangox.c (_vte_pangox_create), (_vte_pangox_destroy),
+       (_vte_pangox_start), (_vte_pangox_end),
+       (_vte_pangox_set_background_image), (_vte_pangox_clip),
+       (_vte_pangox_clear), (_vte_pangox_set_text_font),
+       (_vte_pangox_get_text_metrics), (_vte_pangox_get_using_fontconfig),
+       (_vte_pangox_draw_text), (_vte_pangox_draw_has_char),
+       (_vte_pangox_draw_rectangle), (_vte_pangox_fill_rectangle):
+       * src/vtepangox.h:
+       * src/vteskel.c (_vte_skel_clear), (_vte_skel_get_text_metrics),
+       (_vte_skel_draw_text), (_vte_skel_fill_rectangle):
+       * src/vtexft.c (_vte_xft_set_text_font),
+       (_vte_xft_get_text_metrics), (_vte_xft_draw_text):
+       Remove unneeded draw methods.
+
+2008-11-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtedraw.c (_vte_draw_get_char_width): Minor fix.
+
+       * src/vtepangox.c (_vte_pango_x_create), (_vte_pango_x_start),
+       (_vte_pango_x_clear): Cleanup here too.
+
+2008-11-13  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in:
+       * src/vte-private.h:
+       Undo previous change instead of cleanly fix it for now.
+
+2008-11-13  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in:
+       * src/vte-private.h:
+       Why do we let people configure random things?
+
+2008-11-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_background_update):
+       * src/vtedraw.c (_vte_draw_update_requires_clear), (_vte_draw_new),
+       (_vte_draw_set_background_opacity),
+       (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+       (_vte_draw_char), (_vte_draw_set_scroll):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_image), (_vte_ft2_clear),
+       (_vte_ft2_get_char_width):
+       * src/vtegl.c (_vte_gl_create), (_vte_gl_clear),
+       (_vte_gl_get_char_width), (_vte_gl_draw_text):
+       * src/vtepango.c (_vte_pango_create), (_vte_pango_start),
+       (_vte_pango_set_background_image), (_vte_pango_clear):
+       * src/vtexft.c (_vte_xft_create), (_vte_xft_set_background_image),
+       (_vte_xft_clear), (_vte_xft_get_char_width):
+       Simplify backends by relying more on defaults.
+
+2008-11-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtedraw.c (_vte_draw_init_user), (_vte_draw_init_default):
+       Accept draw impl if impl->check is NULL.
+
+2008-11-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtedraw.h:
+       * src/vtedraw.c (_vte_draw_new), (_vte_draw_get_visual),
+       (_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
+       (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+       (_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
+       (_vte_draw_set_text_font), (_vte_draw_get_text_width),
+       (_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
+       (_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
+       (_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
+       (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
+       (_vte_draw_set_scroll):
+       Use sensical defaults instead of g_return_if_fail'ing when backend
+       functions are not implemented.
+
+2008-10-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+
+       * src/vte.c (vte_terminal_deselect_all):
+       Preserve the copy of the selection until it is replace by a new
+       selection, so that we can perform asynchronous copies from the
+       clipboard.
+
+2008-10-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+
+       * src/vte.c (vte_terminal_deselect_all),
+       (vte_terminal_extend_selection):
+       After the user modifies the selection, copy it to PRIMARY and store
+       it on the terminal. This ensures that after a screen redraw, we
+       compare the contents of the selected region with the current
+       selection, instead of stale data.
+
+2008-10-23  Christian Persch  <chpe gnome org>
+
+        * configure.in:
+        * src/Makefile.am: Use glib-genmarshal --internal directly instead
+        of checking the glib version, since we now depend on a glib version
+        that provides this.
+
+2008-10-23  Christian Persch  <chpe gnome org>
+
+        Bug 556398 – maybe deprecate vte_terminal_get_char_ascent/descent
+
+        * src/vte.[ch]: Deprecate vte_terminal_get_char_ascent/descent.
+
+2008-10-23  Christian Persch  <chpe gnome org>
+
+        Bug 339819 – LibVTE terminals in GLADE
+
+        A glade/*:
+        * Makefile.am
+        * configure.in: Add glade catalogue.
+
+2008-10-23  Christian Persch  <chpe gnome org>
+
+        Bug 399364 – Implement properties
+
+        * src/vte.c: Add gobject properties.
+
+2008-10-19  Christian Persch  <chpe gnome org>
+
+        Bug 556328 – Document set-scroll-adjustment parameters
+
+        * src/vte.c: Document the set-scroll-adjustments signal.
+
+2008-10-15  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/Makefile.am:
+       * doc/reference/check-doc-coverage.sh:
+       * doc/reference/check.docs:
+       Update doc coverage test from cairo.
+
+2008-10-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_set_cursor_shape):
+       Invalidate cursor upon shape change.
+
+2008-10-15  Christian Persch  <chpe gnome org>
+
+       * python/vte.defs: Add new API to the binding.
+
+2008-10-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_draw_line), (vte_terminal_paint_cursor):
+       Remove VTE_CURSOR_OUTLINE in favor of VTE_LINE_WIDTH.
+
+2008-10-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_paint_cursor):
+       Supposedly handle reverse video during cursor drawing.
+
+2008-10-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_paint_im_preedit_string),
+       (vte_terminal_paint):
+       Move IM preedit string drawing into its own function for code
+       clarity.
+
+2008-10-14  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 549835 – Feature Request: Configurable cursor appearance
+
+       * src/vte.h:
+       New public api:
+
+               VteTerminalCursorShape
+               vte_terminal_set_cursor_shape
+               vte_terminal_get_cursor_shape
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_insert_char), (vte_terminal_init),
+       (vte_terminal_paint_cursor), (vte_terminal_paint),
+       (vte_terminal_set_cursor_shape), (vte_terminal_get_cursor_shape):
+       Implement new API.  Also clean up cursor drawing in general.
+
+       * doc/reference/Makefile.am:
+       * doc/reference/tmpl/reaper.sgml:
+       * doc/reference/tmpl/vte-unused.sgml:
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/vte-sections.txt:
+       Doc new symbols.  Also add some missing docs.
+
+2008-10-13  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: Add gobject property infrastructure.
+
+2008-10-13  Christian Persch  <chpe gnome org>
+
+       * src/Makefile.am: Fix missing prototypes compiler warning in
+       marshal.c.
+
+2008-10-06  Christian Persch  <chpe gnome org>
+
+       * src/vteconv.c: (_vte_conv_open): Fix compiler warning.
+
+2008-10-06  Christian Persch  <chpe gnome org>
+
+        Bug 509204 – child-exited signal does not provide exit code
+
+       * python/vte.defs: Add the new function to the bindings.
+
+2008-10-06  Christian Persch  <chpe gnome org>
+
+        Bug 539130 – building g-t fails due to GtkType etc. deprecation
+
+        * src/vte.h: Deprecate useless macros.
+
+2008-10-06  Christian Persch  <chpe gnome org>
+
+        Bug 509204 – child-exited signal does not provide exit code
+
+        * src/vte-private.h:
+        * src/vte.h:
+        * src/vte.c: Add function to get the child's exit status.
+
+2008-10-06  Christian Persch  <chpe gnome org>
+
+       * configure.in: Bump version to 0.17.5.
+
+2008-09-08  Christian Persch  <chpe gnome org>
+
+        Release 0.17.3.
+
+        * NEWS:
+       * configure.in: Updated.
+
+2008-09-07  Christian Persch  <chpe gnome org>
+
+       * python/vte.defs: Update python bindings.
+
+2008-08-20  Sébastien Granjoux  <seb sfo free fr>
+
+       Bug 538344 – Anjuta hangs when program is executed in terminal
+
+       * src/vte.c: Ensure the output channel exists when we need to write.
+
+2008-08-20  Christian Persch  <chpe gnome org>
+
+       * src/vte.c: (vte_terminal_match_check_internal_gregex): Plug a mem
+       leak.
+
+2008-08-15  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_set_pty):
+       fcntl(2) specifies that the flags argument is a long. Make it so.
+
+2008-08-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_match_check_internal_vte),
+       (vte_terminal_ensure_cursor), (vte_terminal_set_colors),
+       (_vte_terminal_insert_char), (vte_terminal_feed),
+       (vte_terminal_key_press), (vte_terminal_match_hilite_update),
+       (vte_terminal_extend_selection):
+       * src/vteseq.c (vte_terminal_find_charcell),
+       (vte_sequence_handler_set_title_internal),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_cb),
+       (vte_sequence_handler_cd), (vte_sequence_handler_ce),
+       (vte_sequence_handler_ec), (vte_sequence_handler_ta),
+       (vte_sequence_handler_set_mode),
+       (vte_sequence_handler_window_manipulation):
+       Fix all "signed vs unsigned comparison" warnings.
+
+2008-08-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (regex_match_clear_cursor),
+       (vte_terminal_set_cursor_from_regex_match):
+       Fix uninitialized cursor warning.  Setting to NULL sounds
+       right to me.  ChPe?
+
+2008-08-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Remove useless "inline" decorators.  Gcc has been
+       rightfully complaining.
+
+2008-08-13  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 546940 – Crash when selecting text
+
+       * src/vte.c (vte_terminal_extend_selection): Fix crash with 64-bit
+       systems.  Note to self:
+
+               unsigned int len = 0;
+               long i = len - 1;
+               assert (i < 0);
+
+       fails on 64-bit systems.
+
+2008-08-05  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.17.1.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.17.1.
+       Bumped libtool version to 12:0:3.
+
+2008-08-05  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 546366 – hard to select last tab char on a line
+
+       * src/vte.c (vte_terminal_extend_selection):
+       * src/vteseq.c (vte_sequence_handler_ta):
+       Handle fragment cells.
+
+2008-08-05  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 545924 – tab characters not handled correctly after ncurses clear   
+       Patch from Patryk Zawadzki
+
+       * src/vteseq.c (vte_sequence_handler_ta): Ignore empty cells at end of
+       line.
+
+2008-07-14  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 542795 – VTE_CJK_WIDTH don't work
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Fix VTE_CJK_WIDTH env
+       handling.
+
+2008-06-27  Christian Persch  <chpe gnome org>
+
+        Bug 399744 – Hide more font-aa implementation details
+
+        * src/vtexft.c: Disable antialiasing if using the default antialias
+        setting and the XRender extension is not available.
+
+2008-06-27  Christian Persch  <chpe gnome org>
+
+        Bug 510903 – use gtk-cursor-blink setting
+
+        * doc/reference/tmpl/vte.sgml:
+        * doc/reference/vte-sections.txt:
+        * src/vte-private.h:
+        * src/vte.c:
+        * src/vte.h: Make the cursor blinking follow the gtk setting by
+        default, with a possible override.
+
+2008-06-26  Christian Persch  <chpe gnome org>
+
+       * src/vte.h: Remove the enum type declarations that are now in
+        vtetypebuiltins.h.
+
+2008-06-26  Christian Persch  <chpe gnome org>
+
+        * Makefile.am:
+        * autogen.sh: Fix the build from svn and make dist when using
+        intltool 0.40.0. Tarball builds still only require 0.35.0.
+
+2008-06-26  Christian Persch  <chpe gnome org>
+
+       * src/vteversion.h.in: Disallow direct inclusion of the new
+       vteversion.h file.
+
+2008-06-26  Christian Persch  <chpe gnome org>
+
+       * configure.in:
+       * src/Makefile.am:
+       * src/vte.c:
+       * src/vte.h:
+       * src/vtetypebuiltins.c.template:
+       * src/vtetypebuiltins.h.template: Use glib-mkenums to generate the
+       enum types; makes it easier to add more enum types.
+
+2008-06-26  Christian Persch  <chpe gnome org>
+
+        Bug 539130 – building g-t fails due to GtkType etc. deprecation
+
+        * src/reaper.h:
+        * src/vte.c:
+        * src/vteaccess.[ch]: 
+        * src/vtebg.h: Also remove the deprecated GtkType macros from here.
+
+2008-06-25  Christian Persch  <chpe gnome org>
+
+       Bug 540182 – crash in geany with vte trunk
+
+       * src/vte.c: Make sure that match_attributes always exist even if
+       there haven't been any matches added.
+
+2008-06-23  Christian Persch  <chpe gnome org>
+
+       Bug 535552 – vte_terminal_set_allow_bold doesn't queue redraw
+
+       * src/vte.c: Invalidate all when changing the allow-bold property.
+
+2008-06-23  Christian Persch  <chpe gnome org>
+
+        Bug 535469 – support named cursors on matches
+
+        * src/vte-private.h
+        * src/vte.c
+        * src/vte.h: Implement named cursors on matches.
+
+2008-06-23  Christian Persch  <chpe gnome org>
+
+        Bug 418918 – Switch to GRegex
+
+        * src/vte-private.h
+        * src/vte.c
+        * src/vte.h: Implement GRegex matching, to be used alternatively
+        to the old vteregex matching.
+
+2008-06-23  Christian Persch  <chpe gnome org>
+
+        Bug 535467 – implement set-scroll-adjustments signal
+
+        * src/vte.c: Add set-scroll-adjustments signal, needed to allow
+        adding a VteTerminal into a GtkScrolledWindow.
+
+2008-06-23  Christian Persch  <chpe gnome org>
+
+        Bug 535468 – need version check macros
+
+        * configure.in
+        * doc/reference/tmpl/vteversion.sgml
+        * doc/reference/vte-sections.txt
+        * doc/reference/vte.types
+        * src/Makefile.am
+        * src/vte.h
+        A src/vteversion.h.in: Add version check macro.
+
+2008-06-21  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.h: Don't use GTK_CHECK* macros.
+
+2008-06-04  Christian Persch  <chpe gnome org>
+
+       Bug 515972 – Bold black is black in vte's default palette
+
+       * src/vte.c: (vte_terminal_set_colors): Correctly set the value of
+       'bold black' in the palette. Patch by Santtu Lakkala.
+
+2008-06-04  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.14.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.14.
+       Bumped libtool version to 11:18:2.
+
+2008-06-04  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 536632 – vte build failure in ring.c:210: error: expected
+       expression before 'do'
+
+       * src/debug.h:
+       * src/ring.c:
+       * src/ring.h:
+       With latest glib (after bug #519026), g_error is expanding to
+       "do {...} while(0)" instead of "{...}".  This breaks build in
+       debugging mode.  Use g_critical instead.  Also add some
+       G_STMT_START/END to some macros.
+
+2008-05-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/pty.c (merge_environ): Replace previous commit with the
+       better patch by Christian Persch.
+
+2008-05-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/pty.c (merge_environ): Fix bug in patch to use g_listenv()
+       as it only returns the variable name and we need to use g_getenv()
+       to retrieve its value.
+
+2008-05-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Oops.  Fix thinko
+       in last commit.
+
+2008-05-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 535022 – ambiguous width in utf8 locale
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Recognize
+       env var settings VTE_CJK_WIDTH=narrow and VTE_CJK_WIDTH=wide.
+       Any other value means "auto" based on locale, as it was doing
+       previously.
+
+2008-05-21  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/pty.c (merge_environ): Silence compiler warning about using
+       environ as a local variable name.
+
+2008-05-21  Richard Hult  <richard imendio com>
+
+       Bug 534148 – Use g_listenv() instead of environ
+
+       * src/pty.c: (merge_environ): Use g_listenv() instead of
+       non-portable environ extern.
+
+2008-05-19  Kjartan Maraas  <kmaraas gnome org>
+
+       * configure.in: automake doesn't like to substitute more
+       than one variable at a time.
+       * src/vtedraw.c: (_vte_draw_get_using_fontconfig):
+       * src/vtetc.c: (_vte_termcap_find_boolean):
+       Fix two compiler warnings.
+
+2008-05-09  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtedraw.c (_vte_draw_text):
+           Add the text to draw to the debug output.
+
+2008-05-09  Chris Wilson  <chris chris-wilson co uk>
+
+       Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion
+                              `channel != NULL' failed"
+
+       * src/debug.c (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_emit_adjustment_changed),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_scroll_lines), (vte_terminal_maybe_scroll_to_bottom),
+       (_vte_terminal_insert_char), (vte_terminal_catch_child_exited),
+       (mark_input_source_invalid), (_vte_terminal_connect_pty_read),
+       (mark_output_source_invalid), (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_read),
+       (_vte_terminal_disconnect_pty_write), (_vte_terminal_fork_basic),
+       (vte_terminal_eof), (_vte_terminal_enable_input_source),
+       (vte_terminal_io_read), (vte_terminal_handle_scroll),
+       (vte_terminal_finalize), (vte_terminal_class_init),
+       (vte_terminal_set_pty), (process_timeout), (update_repeat_timeout),
+       (update_timeout):
+       It was possible for _vte_terminal_enable_input_source() to be called
+       after the input closed with G_IO_HUP. The minimal change would just
+       have been to add a guard to check the pty_master was still valid
+       before reattaching the source. Instead I removed the redundant
+       duplication of the input and output channels and added lots of
+       debugging.
+
+2008-05-08  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 516869 – vte displays nothing on GTK+/DirectFB
+
+       Original patch by Jérémy Bobbio.
+
+       * src/vte.c (vte_terminal_class_init), (update_regions),
+       (update_repeat_timeout), (update_timeout):
+       gdk_window_process_all_updates() is ineffective on the gtk+-directfb
+       and gtk+-quartz backends, so in order to process updates immediately
+       one must call gdk_window_process_updates() on the desired GdkWindows
+       instead.
+
+2008-03-10  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.13.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.13.
+       Bumped libtool version to 11:17:2.
+
+2008-02-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 517709 – VTE's pty.c makes 4096 getrlimit calls when it only needs
+       one
+
+       * src/pty.c (_vte_pty_start_helper): Only close fds 0, 1, and 2.
+       gnome-pty-helper closes all fds anyway.
+
+2008-02-08  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c:
+       * src/vteapp.c:
+       * src/vtergb.c:
+       Remove unneeded #include <fontconfig/fontconfig.h>
+
+2008-01-09  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 449131 – Wrong gettext domain
+
+       * src/pty.c:
+       * src/reaper.c (vte_reaper_class_init):
+       * src/trie.c:
+       * src/vtebg.c (vte_bg_class_init):
+       * src/vteglyph.c:
+       Oops.  Fix all remaining ones too.
+
+2008-01-07  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.12.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.12.
+       Bumped libtool version to 11:16:2.
+.
+2007-12-21  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 503164 – Drawing problems for VTE with gtk+-quartz
+
+       * src/vte.c (vte_terminal_realize):
+       Continuing the saga, remove the fiddling with visibility state
+       during realize.
+
+2007-12-18  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 449131 – Wrong gettext domain
+
+       * src/vte.c (vte_terminal_class_init): Use GETTEXT_DOMAIN in
+       bind_textdomain_codeset().
+
+2007-12-17  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.11.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.11.
+       Bumped libtool version to 11:15:2.
+.
+2007-12-17  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 503164 – Drawing problems for VTE with gtk+-quartz
+
+       * src/vte.c (vte_terminal_init):
+       GdkQuartz does not generate GdkVisibilityNotify events and
+       so the terminal was never marked as unobscured, causing all
+       redraws to be discarded. Resolve this by initially setting the
+       terminal to be unobscured.
+
+2007-12-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 319687 – Pasting of text containing characters not in the
+       terminal's encoding silently fails
+
+       * src/vteconv.c (_vte_conv_open): Try to open converter with
+       transliteration.  Supported by GNU iconv and GLibc.
+
+2007-12-03  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.10.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.10.
+       Bumped libtool version to 11:14:2.
+.
+2007-12-03  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 497246 – Kill vte_iso2022_fragment_input
+
+       * src/iso2022.c (process_block), (_vte_iso2022_process):
+       Avoid the temporary allocation of the GArray holding the fragments
+       by processing each fragment as it is decyphered. This array is
+       allocated and grown for every single input chunk and is currently the
+       most frequent allocation made by vte.
+
+2007-12-03  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/keymap.c: Make is_cursor_key static.
+
+2007-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 412435 – Invalid variable name in Makefile.am
+
+       * Makefile.am:
+       * configure.in:
+       * vte.spec.in:
+       Remove spec file and old convenience cvs make targets.
+
+2007-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 416561 – Rendering issue in VtePango
+
+       * src/vtepango.c (_vte_pango_draw_rectangle):
+       * src/vtepangox.c (_vte_pango_x_draw_rectangle):
+       gdk_draw_rectangle has slightly different semantics when
+       filling vs outlining.  Fix for that.
+
+2007-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 416558 – Rendering errors in VteFT2
+
+       * src/vteft2.c (_vte_ft2_create): Disable Gtk+ double-buffering.
+
+2007-11-28  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 403217 – Outdated README
+
+       * README: Rewrite.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 118967 – single line scrolling with "Ctrl+Shift+ArrowUp/ArrowDown"
+       Patch from Mauricio and Mariano Suárez-Alvarez
+
+       * src/vte.c (vte_terminal_scroll_lines),
+       (vte_terminal_scroll_pages), (vte_terminal_key_press):
+       Implement single-line scroll.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 353610 – Don't convert tab characters upon copying
+
+       * src/vte-private.h:
+       * src/vteseq.c (vte_sequence_handler_ta):
+       Smart tab handling to try to preserve tab character upong copying.
+       Also makes such smart tabs all-or-none selectable.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 499892 – strikethrough line is too high
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_apply_metrics), (vte_terminal_init),
+       (vte_terminal_draw_cells): Adjust underline/strikethrough thickness
+       and position based on pangofc's heuristics.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtedraw.c (_vte_draw_init_user): Make VTE_BACKEND=list list
+       available backends to stderr.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 499891 – vte with opacity set, shows invisible chars
+
+       * src/vte.c (vte_terminal_draw_rows): Don't draw invisible chars.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 499896 – Alternate charset isn't an attribute, though we treat it
+       as one.
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_set_default_attributes),
+       (_vte_terminal_insert_char), (vte_terminal_reset):
+       * src/vteseq.c (vte_sequence_handler_ae),
+       (vte_sequence_handler_as):
+       Move cell.attr.alternate to screen->alternate_charset.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 499893 – cell.attr.protect is unused
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_set_default_attributes):
+       * src/vteseq.c (vte_sequence_handler_mp):
+       Comment out cell.attr.protect which is unused.
+
+2007-11-27  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once):
+       Minor optimization, if one can call it that.
+
+2007-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Fix doc syntax.
+
+2007-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       Revert previous change.  For reason, see bug.
+       Bug 491832 – vte_terminal_get_text_range_maybe_wrapped always includes
+       trailing spaces
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+       Don't trim space characters, just the empty space after lines,
+       like we used to.
+
+2007-11-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 491832 – vte_terminal_get_text_range_maybe_wrapped always includes
+       trailing spaces
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+       Trim trailing space characters if asked to.
+
+2007-11-23  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/Makefile.am:
+       * doc/reference/check.docs:
+       Add script to check doc coverage is 100% on "make check".
+
+2007-11-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 499287 – Fix doc coverage regression
+
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/vte-sections.txt:
+       Document undocumented symbols.
+
+2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_io_read), (vte_terminal_init),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+           Tweak to read across chunk boundaries whilst still maintaining
+           fairness between multiple terminals and refresh rate targets.
+
+2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/ring.c (_vte_ring_insert_preserve):
+           Use stack allocation to hold small numbers of temporary
+           gpointers.
+
+2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_free_row_data), (vte_terminal_reset_rowdata),
+       (vte_terminal_finalize), (vte_terminal_reset):
+           Export _vte_row_data_free.
+
+       * src/vteseq.c (vte_remove_line_internal):
+           Cache the removed VteRowData - fixes the continual reallocation
+           of row data during the vim scrolling benchmark.
+
+2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (release_chunk), (prune_chunks),
+       (remove_from_active_list), (process_timeout),
+       (update_repeat_timeout):
+           Delay pruning the chunks freelist until we finished processing
+           all the incoming data. We were discarding the freelist far too
+           early and reduced the efficacy of the cache.
+
+2007-11-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vterdb.h:
+       * src/vterdb.c (_vte_rdb_get), (_vte_rdb_search), (_vte_rdb_quark),
+       (_vte_rdb_get_rgba), (_vte_rdb_get_hintstyle), (_vte_rdb_release):
+           Remove redundant queries and cache the XRequest on the root
+           window (saves a few round-trips during terminal construction).
+           Add a new function to free the cache.
+
+       * src/vtefc.c (_vte_fc_defaults_from_rdb):
+           Release the cache after retrieving settings.
+
+2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_focus_out):
+           Similar for the leave notify, disable the match updating after
+           hiding the cursor after the loss of focus.
+           However, do we really want to disable the hilighting whilst the
+           pointer may still be within the terminal?
+
+2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_enter):
+           Don't automatically reshow the hilight on receiving an enter
+           event, but wait for the motion notify to update the cursor
+           co-ordinates, otherwise we may hilight something quite distant
+           from the cursor.
+
+2007-11-15  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_leave):
+           Mark the cursor as invisible on leaving the terminal as this
+           stops the hilight matcher running whilst the cursor is absent.
+
+2007-11-06  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_set_font_from_string_full): Allow NULL
+       font argument.  Can be used to set antialias without setting font.
+
+       * src/vteapp.c (main): Fix antialias handling which was borked when
+       moving to GOption.
+
+2007-11-06  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 142640 – FcConfigSubstitute in place of _vte_fc_defaults_from_gtk
+       to get antialias and hinting value
+
+       * src/vtefc.c (_vte_fc_defaults_from_gtk),
+       (_vte_fc_defaults_from_rdb): Replace _vte_fc_defaults_from_gtk() with
+       gtk_default_substitute() from Gtk+-2.6.  It's essentially the same
+       thing, but not overriding elements of the pattern already present.
+       Also remove a couple redundant calls.
+
+2007-10-11  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 439384 – gnome-terminal on feisty crashes when giving wrong locale environment
+
+       * src/vte.c (vte_terminal_set_encoding):
+           Fallback to using UTF-8 as the locale encoding. This prevents
+           subsequent crashes but may display gibberish in the output.
+
+2007-10-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 483642 – vte_terminal_feed crash when 8190 characters passed
+
+       * src/vte.c (vte_terminal_feed):
+           Break the feed data into chunks.
+
+2007-09-30  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c (_vte_xft_set_background_image):
+               Skip retrieving the VteBg if the source is VTE_BG_SOURCE_NONE
+               as we neither need it to listen for changes to the background
+               nor require it to load the pixmap (which is a no-op).
+
+2007-09-30  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c (_vte_xft_destroy):
+               Ensure the GdkPixmap is destroyed along with the VteXft
+               context.
+
+2007-09-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 480735 – Underlining whitespace not reliable
+
+       Original patch by Steven Skovran.
+
+       I really must remember to run vttest more often. (And to work within
+       git-svn.)
+
+       * src/vte.c (vte_terminal_draw_rows):
+           Do not skip spaces.
+
+2007-09-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 480735 – Underlining whitespace not reliable
+
+       Original one-liner by Steven Skovran.
+
+       * src/vte.c (vte_terminal_draw_rows):
+           Do not try to over zealously skip whitespace. The goal is
+           to maintain the current run whilst avoiding adding spaces to
+           the glyph sequence - so check the cell fully for attribute
+           breaks and simply do not add it to the glyphs if it contains a
+           space.
+
+2007-09-17  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.9.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.9.
+       Bumped libtool version to 11:13:2.
+
+2007-09-05  Behdad Esfahbod  <behdad gnome org>
+
+       * perf/vim.sh: Wait for keypress when done, so one can do
+       "vte -c ./vim.sh" and not lose the final numbers.
+
+       * src/vtepango.c (_vte_pango_destroy), (_vte_pango_start),
+       (_vte_pango_end), (_vte_pango_set_background_color),
+       (_vte_pango_set_background_image), (_vte_pango_clear),
+       (_vte_pango_set_text_font), (_vte_pango_get_using_fontconfig),
+       (_vte_pango_draw_text), (_vte_pango_draw_has_char),
+       (_vte_pango_draw_rectangle), (_vte_pango_fill_rectangle),
+       (_vte_pango_set_scroll):  General cleanup.  Also implement
+       _vte_pango_draw_has_char() using
+       pango_layout_get_unknown_glyphs_count() when available.
+
+2007-09-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+
+       * src/vteseq.c (vte_sequence_handler_ce): Reset soft_wrapped.
+
+2007-09-01  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+           Revert the last character is in last column check as that
+           behaviour is required to handle terminal resizing where the
+           screen contents are not reconstructed (e.g. bash).
+
+2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 471901 – troubles with pad
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_invalidate_cells), (vte_terminal_draw_rows),
+       (vte_terminal_paint): Don't abuse VTE_PAD_WIDTH.
+
+2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped):
+           Check that the last character is in the last column before
+           adding a newline for autowrapped lines.
+
+2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+
+       * MAINTAINERS: Add myself to the list, as Behdad had suggested some
+       time ago.
+
+2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 153265 – Handle Sun Cut, Copy, Paste keys
+       Patch by Brian Cameron.
+
+       * doc/reference/tmpl/vte.sgml:
+       * src/vte.c (vte_terminal_class_init),
+       (vte_terminal_real_copy_clipboard), (vte_terminal_copy_clipboard),
+       (vte_terminal_real_paste_clipboard),
+       (vte_terminal_paste_clipboard):
+       * src/vte.h:
+           Add key bindings for the special function keys.
+
+2007-08-30  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_draw_rows): Bad manipulation of patches
+       whilst attempting to apply the fix for Bug 434230 - net result was
+       that the correct code was being circumvented.
+
+2007-08-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 471484 – vteapp resize weirdness
+
+       * src/vteapp.c (main): Distinguish between setting the geometry and
+       disabling the use of geometry hints. A regression when converting to
+       GOption based arguments.
+
+2007-08-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 470690 – Typo at src/vtexft.c "appropiate" should be "appropriate"
+
+       * src/vtexft.c (_vte_xft_open_font_for_char): Fix typo.
+
+2007-08-07  Behdad Esfahbod  <behdad gnome org>
+
+       * MAINTAINERS: Add Userid field, remove Guilherme.
+
+2007-08-03  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 434230 – Spaces are not underlined
+       Original patch by Santtu Lakkala.
+
+       * src/vte.c (vte_terminal_draw_rows): Only skip cells if we do not
+       need to draw on top.
+
+2007-08-03  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 450069 – vte crash on removing a terminal tab
+
+       * src/vte.c (vte_terminal_emit_eof), (vte_terminal_queue_eof),
+       (vte_terminal_eof): Move the EOF emission to an idle handler so that
+       the source is inactive whilst the VteTerminal is finalized.
+
+2007-07-30  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.8.
+
+       Quick followup release with no code changes, to fix missing
+       documentation index in the tarball.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.8.
+       Bumped libtool version to 11:12:2.
+
+2007-07-27  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.7.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.7.
+       Bumped libtool version to 11:11:2.
+
+2007-07-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+       Patch by James Bowes
+
+       * src/keymap.c (_vte_keymap_map), (is_cursor_key),
+       (_vte_keymap_key_add_key_modifiers):
+       * src/keymap.h:
+       * src/vte.c (vte_terminal_key_press):
+       Only switch to CSI for some cursor keys when in cursor app mode.
+
+2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 448259 – Mapping for Ctrl-_
+       Patch by Andrey Melnikov.
+
+       * src/keymap.c: Add mapping for Ctrl-Minus.
+
+2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 449809 – use python-config to get python includes
+       Patch by Sebastien Bacher.
+
+       * acinclude.m4: prefer python-config where available.
+
+2007-06-25  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 450745 – VTE's response to CSI 2 1 t incorrectly formatted
+       Patch by Dale Sedivec.
+
+       * src/vteseq.c (vte_sequence_handler_window_manipulation): Restore
+       the missing 'L'.
+
+2007-06-21  Christian Persch  <chpe gnome org>
+
+       * configure.in:
+       * src/Makefile.am: Move libtool versioning to configure so you just
+       have to update one file for releasing. See bug #396265 comment 17.
+
+2007-06-18  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.6.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.6.
+
+       * src/Makefile.am: Bumped libtool version to 11:10:2.
+
+2007-06-12  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_set_size): Call gtk_widget_queue_resize()
+       after updating row/column count.
+
+2007-06-11  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 372743 – vte_terminal_set_colors doesn't work as advertised
+
+       * src/vte.c (vte_terminal_set_colors): Allow 24-color palettes.
+
+2007-06-09  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 445620 – Some characters shows different in different locales.
+       Patch from Zealot
+
+       * src/iso2022.c (_vte_iso2022_state_set_codeset): Update ambiguous
+       width.
+
+2007-06-04  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.5.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.5.
+
+       * src/Makefile.am: Bumped libtool version to 11:9:2.
+
+2007-05-30  Chris Wilson  <chris chris-wilson co uk>
+
+       fcrozat pointed out 'some strange "underline" line where cursor is
+       located and blinking'.
+
+       Also reported in bug 442688.
+
+       * src/vte.c (vte_terminal_draw_rows):
+           Continuation of the previous commit: catch a couple more locations
+           where we need to skip past the end of the line. The problem in
+           this case was we tried to use some uninitialised variables whilst
+           trying to draw the cell attributes.
+
+2007-05-28  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.4.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.4.
+
+       * src/Makefile.am: Bumped libtool version to 11:8:2.
+
+2007-05-28  Chris Wilson  <chris chris-wilson co uk>
+
+       uws noted on IRC that 'vte trunk does strange thingies with colors'
+
+       * src/vte.c (vte_terminal_draw_rows):
+           When reaching the end-of-row be careful not to reset the
+           current text attributes (color, underlining, etc).
+
+2007-05-25  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_expand_region),
+       (vte_terminal_paint_area):
+           Only add the borders to the clear area.
+
+2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 429278 – Cursor drawn strangely in joe
+
+       * src/vte.c (vte_terminal_expand_region),
+       (vte_terminal_paint_area):
+           Ensure the expanded regions are cell aligned.
+
+2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 439247 – scrolling vim in full screen is painfully slow and takes up 100% of the cpu
+
+       * src/vte.c (vte_terminal_draw_rows):
+           Fix up the unwanted break of Glyph runs at the end-of-lines.
+
+2007-05-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 440475 – Display glitch with transparent backgroud
+
+       * src/vte.c (vte_terminal_paint_area):
+           Apply the band-aid fix to clear the area that's about to be
+           repainted. The full solution will to be ensure that the regions
+           after expansion are cell-aligned.
+
+2007-05-22  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 375112 – ctrl-key combinations yielding just key
+       Original patch by <samo altern org> and refactored by Loïc Minier.
+
+       * src/vte.c (vte_translate_national_ctrlkeys),
+       (vte_terminal_key_press):
+           When cooking a string to pass through to the client obtain the
+           "raw" keyval.
+
+2007-05-22  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 440377 – gnome-terminal cannot refresh terminal when accessibility enabled
+       Original patch by Li Yuan.
+
+       * src/vteaccess.c (vte_terminal_accessible_focus_in),
+       (vte_terminal_accessible_focus_out),
+       (vte_terminal_accessible_visibility_notify):
+           Return FALSE rather than void...
+
+2007-05-17  Chris Wilson  <chris chris-wilson co uk>
+
+       * perf/scroll.vim:
+       * perf/vim.sh:
+           Measure full screen scrolling performance.
+
+2007-05-15  Chris Wilson  <chris chris-wilson co uk>
+
+       kmaraas reported an issue on IRC where the scrollback was not being
+       updated correctly in the first tab when the terminal was resized via
+       a second tab.
+
+       * src/vte.c (vte_terminal_size_allocate): Check whether we need to
+       recompute the visible lines due to a change in layout geometry.
+
+2007-04-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 433776 – gnome-terminal crashes when open preedit area
+       Take 2.
+
+       * src/vte.c (vte_terminal_paint): The preedit_cursor is returned by
+       the input modules in characters not in bytes as assumed by the
+       validation.
+
+2007-04-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 433776 – gnome-terminal crashes when open preedit area
+
+       * src/vte.c (vte_terminal_paint): Use the validated cursor index.
+
+2007-04-27  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.3.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.3.
+
+       * src/Makefile.am: Bumped libtool version to 11:7:2.
+
+2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 429189 – Vte-WARNING's
+
+       * src/vtexft.c (_vte_xft_open_font_for_char):
+               Convert the warning into a DEBUG.
+
+2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 415044 – Use --enable-debug rather than --enable-debugging
+
+       As noted on Bug 414716, the convention is to use --enable-debug
+       to enable extra debugging code.
+
+       * configure.in:
+               s/debugging/debug/
+
+2007-04-24  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 414716 – Refresh issue after changing workspaces
+
+       * src/vte.c (vte_terminal_hierarchy_changed):
+               Do not respond to toplevel mapping events.
+
+2007-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.2.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.2.
+
+       * src/Makefile.am: Bumped libtool version to 11:6:2.
+
+2007-04-23  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 431799 – Regex highlighting is broken
+
+       * src/vte.c (vte_terminal_emit_contents_changed),
+       (vte_terminal_match_hilite_update), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+               Always emit any pending updates before redrawing. This
+               ensures for example that the match contents are updated
+               after a simple scroll event.
+
+2007-04-20  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c (_vte_xft_start), (_vte_xft_clip):
+               Optimise away the use of a clip mask for the common case
+               of redrawing the whole terminal.
+
+2007-04-17  Behdad Esfahbod  <behdad gnome org>
+
+       * src/iso2022.c (_vte_iso2022_ambiguous_width): Consider
+       ambiguous-width chars if VTE_CJK_WIDTH env var is set and we are
+       under a CJK locale.
+
+2007-03-12  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.1.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.1.
+
+       * src/Makefile.am: Bumped libtool version to 11:5:2.
+
+2007-04-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 426870 – vte often passes NUL to functions requiring valid unichar
+
+       * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+       (vte_terminal_paint):
+               Consistently guard against cell->c == '\0' before calling
+               _vte_draw_get_char_width.
+
+2007-04-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 419644 – Links do not get highlighted anymore
+       Also see Bug 404757 – URL matching doesn't work with PCRE
+
+       * configure.in:
+               Kill --with-pcre as it changes the semantics of the API
+               and only causes confusion.
+
+2007-04-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 426541 – crash on IRM escape code
+
+       * src/vte.c (vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char):
+               Mishandled insertion - we always extended the row for
+               inserts even though the row would automagically extend
+               for the inserted cells. This lead to referencing
+               uninitialised cells at the end of the row during painting.
+       * src/vte.c (vte_terminal_draw_rows):
+               Retrieve the cell before inspecting it.
+
+2007-04-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 424184 – Make scroll wheel send Page Up/Down when it makes sense
+
+       Original patch by Shaun McCance and refined by Baris Cicek.
+
+       * src/vte.c (vte_terminal_scroll):
+               Send cursor keypress instead of trying to scroll the
+               alternate screen in vain.
+
+2007-04-03  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 425767 – vte_terminal_set_color_highlight should test for
+       NULL before _vte_debug_print
+
+       * src/vte.c (vte_terminal_set_color_cursor),
+       (vte_terminal_set_color_highlight):
+               Differentiate between set/unset paths.
+
+2007-03-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 422385 – vte appears at the top of the root window even when
+       packed at the bottom of it
+
+       Patch by Dodji Seketeli.
+
+       * src/vte.c (vte_terminal_size_allocate), (vte_terminal_realize):
+               Honour the allocated position when realizing the widget.
+
+2007-03-22  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c (_vte_xft_draw_text):
+               Insert spaces into the Xft glyph stream to avoid the
+               overhead of restarting a glyph sequence for every word.
+
+2007-03-21  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 420935 – glyph can be cropped with not fitting in a cell
+
+       * src/vte.c (vte_terminal_paint):
+               Don't redraw the invisible cursor 
+               - avoids nasty artifacts like clipping extra wide glyphs.
+
+2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_scroll_pages):
+               Leave 'contents-change' to the scroll handler.
+
+2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows):
+               Accidentally inverted an is-empty? check during the 
+               elimination of the empty bitfield.
+
+2007-03-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 420067 – Does not handle expose events whilst processing
+       unseen incoming data
+
+       * src/vte.c (vte_terminal_expose):
+               Handle the expose immediately if we are only processing
+               incoming data (ie no redraws pending).
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c (vte_sequence_handler_cursor_character_absolute):
+               Remove a chunk of code that was tried as a mutt band-aid
+               long ago and was completely wrong.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 415381 – Improve performance of vte_terminal_insert_char()
+
+       The bulk of the work to remove redundant reads and conditionals
+       from the code. In particular, gcc was emitting bit-by-bit copies
+       for transferring the bitfield since we modified a member immediately
+       afterwards - overcome this by using an explicit memcpy of the
+       bitfields.
+
+       * src/vte-private.h:
+       * src/vte.c (vte_g_array_fill), (vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming),
+       (vte_terminal_send):
+       * src/vteseq.c (vte_sequence_handler_ic):
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+
+       * src/vte-private.h: Use a simple boolean rather than counter for
+       text changed style flags.
+       * src/vte.c: And update users.
+       * src/vteseq.c:
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 415381 – Improve performance of vte_terminal_insert_char()
+
+       * src/vte-private.h: Embed bitfield into struct
+       * src/vte.c:  And update users.
+       * src/vteseq.c:
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Need to trigger update timeout rather than process timeout
+       otherwise the background is not updated.
+
+       * src/vte.c (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed):
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c (_vte_xft_create), (_vte_xft_destroy),
+       (_vte_xft_start), (_vte_xft_end), (_vte_xft_clip),
+       (_vte_xft_clear): Avoid some allocations.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 418073 – Opacity ignored for vtexft
+
+       * src/vte.c:
+       * src/vtedraw.c (_vte_draw_requires_clear):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_image):
+       * src/vtegl.c (_vte_gl_create), (_vte_gl_set_background_image):
+       * src/vtepango.c (_vte_pango_set_background_image):
+       * src/vtepangox.c (_vte_pango_x_set_background_image):
+       * src/vtexft.c (_vte_xft_set_background_color),
+       (_vte_xft_set_background_image):
+               Flood fill the backing pixmap if we need to change it's
+               opacity as well.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 418910 – Asymmetric scrolling with mouse wheel
+
+       * configure.in:
+       * src/vte.c: Round-up the delta before applying to ensure consistency
+       between up and down.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming): Refactor some common code.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 416634 – Rendering glitch as autowrapped chars are outside invalidated bbox
+
+       * src/vte.c (_vte_terminal_insert_char),
+       (vte_terminal_process_incoming): Correctly update bbox after
+       autowrapping.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 416635 – Rendering glitch: double draw of line below exposed region
+
+       * src/vte.c (vte_terminal_expand_region),
+       (vte_terminal_paint_area): Kill a couple of off-by-ones.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 418588 – Invalid read when drawing preedit cursor
+
+       * src/vte.c (vte_terminal_paint):
+               No need to read what is drawn and furthermore isn't allocated.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 417652 – Scrolling bug exposed by nvi
+
+       * src/vte.c (vte_terminal_insert_rows), (_vte_terminal_ensure_row),
+       (vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta):
+               Ensure the rows before updating the insert delta and refactor
+               the common code.
+
+2007-03-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 417301 – Terminal widgets don't respond to DPI changes
+
+       * src/vte.c (vte_terminal_fc_settings_changed): Force a font reload
+       after XFT settings have changed.
+
+2007-03-12  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.16.0.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.16.0.
+
+       * src/Makefile.am: Bumped libtool version to 11:4:2.
+
+2007-03-06  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c (vte_sequence_handler_cm), (vte_sequence_handler_sf):
+               More work to match mutt's behaviour under xterm.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_io_read):
+               Use the process estimate to load balance between multiple
+               active terminals.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c (vte_sequence_handler_cm),
+       (vte_sequence_handler_dc), (vte_sequence_handler_sf),
+       (vte_sequence_handler_cursor_character_absolute):
+               Tweak the fill of painted cells to match mutt's behaviour
+               under xterm.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 414716 – gnome-terminal-2.17.92: terminal window dies...
+
+       * src/vte.c (vte_terminal_map_toplevel),
+       (vte_terminal_hierarchy_changed):
+               Force the visibility state to unobscured after the toplevel is
+               remapped.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_size_allocate):
+               Note to self: Never try to optimize away the redraw.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (_vte_terminal_insert_char):
+       * src/vtedraw.c (_vte_draw_text), (_vte_draw_char),
+       (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle):
+               Touch up whitespace in debug output.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (_vte_invalidate_cells), (vte_terminal_set_visibility),
+       (vte_terminal_paint_area), (vte_terminal_expose):
+               Make sure the invalidated_all flag is cleared in the expose
+               event if we handle it immediately.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c (vte_sequence_handler_ce),
+       (vte_sequence_handler_clear_current_line):
+               Fixup invalidation to end-of-line.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+
+       * src/vte.c (vte_terminal_draw_rows), (vte_terminal_expand_region):
+               Include the window padding when painting the cell backgrounds.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 414586 – Terminal screen blinks when menu is opened for the first time
+
+       Avoid resetting the window background colour when the style is reset.
+       Avoid clearing the window if we are using a simple color and double
+       bufferring (i.e when we know we are using a pre-cleared pixmap).
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_unrealize), (vte_terminal_realize),
+       (vte_terminal_paint_area), (vte_terminal_expose),
+       (vte_terminal_class_init), (vte_terminal_background_update):
+       * src/vtedraw.c (_vte_draw_has_background_image):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_image):
+       * src/vtegl.c (_vte_gl_set_background_image):
+       * src/vtepango.c (_vte_pango_set_background_image):
+       * src/vtepangox.c (_vte_pango_x_set_background_image):
+       * src/vtexft.c (_vte_xft_set_background_image):
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 414586 – Terminal screen blinks when menu is opened for the first time
+
+       * src/vte.c (_vte_invalidate_cells), (_vte_invalidate_all),
+       (vte_terminal_expose), (add_update_timeout):
+               Juggle the handling of external exposes/invalidates to avoid
+               delays in refreshing the display when we are idle.
+
+2007-03-05  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+
+       * src/vte.c (_vte_invalidate_cells), (vte_terminal_init),
+       (vte_terminal_expand_region), (vte_terminal_paint_area):
+               After enlarging the expand region make sure the dirty area
+               includes the border for edge cells.
+
+2007-03-04  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
+
+       Distinguish between internal update requests and external. If we
+       need to update due to a user action (such as adjusting the background
+       or color palette) do not impose a futher delay.
+
+       Tidy the color palette modification code to not trigger invalidates if
+       we do not actually modify the palette.
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_set_color_internal),
+       (vte_terminal_set_color_bold), (vte_terminal_set_color_dim),
+       (vte_terminal_set_color_foreground),
+       (vte_terminal_set_color_background),
+       (vte_terminal_set_color_cursor),
+       (vte_terminal_set_color_highlight), (vte_terminal_set_colors),
+       (root_pixmap_changed_cb), (vte_terminal_set_background_saturation),
+       (vte_terminal_set_background_tint_color), (add_update_timeout):
+       * src/vteseq.c (vte_sequence_handler_ce),
+       (vte_sequence_handler_clear_current_line),
+       (vte_sequence_handler_clear_above_current):
+
+2007-03-02  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413068 – new line added to tab when opened
+
+       * src/vte.c (vte_terminal_size_allocate):
+               Replace the ill-conceived attempt (delta could not be
+               negative, so insert_delta or scroll_delta would not become
+               negative either) by only considering changes wrt to the number
+               of visible lines.
+
+2007-03-02  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413068 – new line added to tab when opened
+
+       * src/vte.c (_vte_terminal_insert_char):
+               Improve debug output.
+       * src/vte.c (vte_terminal_size_allocate):
+               Be careful that we don't force insert_delta or scroll_delta
+               to become negative.
+
+2007-03-01  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.6.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.6.
+
+       * src/Makefile.am: Bumped libtool version to 11:3:2.
+
+2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (vte_terminal_draw_cells), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+               Tweak the clear widths to include the pixel widening due to
+               psuedo-bold.
+
+2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_ensure_row),
+       (vte_terminal_ensure_cursor), (_vte_terminal_insert_char):
+       * src/vteseq.c (vte_sequence_handler_ta):
+               Be more careful when filling in gaps.
+
+2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+
+       Fix X11 headers / libraries detection on bi-arch systems.
+       Patch by Frederic Crozat.
+
+       * configure.in:
+               Check for x_includes before ac_x_includes, and similary for
+               ac_x_libraries.
+
+2007-03-01  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+
+       * src/vtexft.c:
+               Further reduce the cap to 80 after more testing on the
+               broken fglrx driver.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413068 – new line added to tab when opened
+
+       * src/vte.c (vte_terminal_ensure_font), (vte_terminal_realize):
+               Beware when no font is set before the first request...
+               Make sure that at least the default font is set.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413262 – Incorrectly coloured tabs
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_ensure_cursor),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
+       (_vte_terminal_feed_chunks), (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c (vte_sequence_handler_ta),
+       (vte_sequence_handler_request_terminal_parameters),
+       (vte_sequence_handler_return_terminal_status),
+       (vte_sequence_handler_send_primary_device_attributes):
+               Fill the tab in the current color, else it will be filled at
+               the time of writing the next character.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413102 – Incorrect highlighting in vim
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_ensure_row),
+       (_vte_terminal_insert_char):
+       * src/vteseq.c(vte_sequence_handler_cb),
+       (vte_sequence_handler_ce), (vte_sequence_handler_cr),
+       (vte_sequence_handler_ec), (vte_sequence_handler_sf):
+               Paint the row background when scrolling, this more closely
+               matches xterm's behaviour.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413158 – Cursor trails
+
+       * src/vte.c (_vte_invalidate_cell):
+               _vte_invalidate_cell() can be called to invalidate any visible
+               cell so issue the invalidate even for blank cells.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c (_vte_terminal_insert_char):
+               Correct the OBO in the number of columns ensured.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 413078 – Crash during opening a new tab whilst scrolling
+       
+       During input processing it was possible to both remove the timeout and
+       then add a new one. The currently running timeout would believe that
+       it was to continue since the terminal was still active, and so *two*
+       timeouts would be scheduled. Occasionally the second timeout would be
+       called after the first had finished all the work, resulting in the
+       second timeout trying to access a NULL active_terminal list.
+
+       * src/vte.c (add_update_timeout), (remove_from_active_list),
+       (vte_terminal_add_process_timeout), (need_processing),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               Watch for recursive g_source_remove() from within timeouts.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+
+       Submitting long glyph runs was causing a dramatic (10x) slow down
+       in the fglrx xserver.
+
+       * src/vtedraw.h:
+       * src/vtexft.c(_vte_xft_draw_text):
+               Cap the max glyph run length to 300.
+
+2007-02-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 412717 – Crash when opening a new tab with window maximized
+
+       * src/vte.c (vte_terminal_size_allocate):
+               We didn't carefully check the values we were clamping the
+               cursor to and ended up setting it to -1...  Don't do that!
+
+2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteaccess.c (vte_terminal_accessible_text_scrolled):
+               Consistently guard against the snapshot being NULL.
+
+2007-02-27  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.5.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.5.
+
+       * src/Makefile.am: Bumped libtool version to 11:2:2.
+
+2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 412562 – Crash in vte_terminal_match_hilite_update
+
+       * src/vte.c (vte_terminal_match_check_internal),
+       (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
+       (vte_terminal_paste_cb), (vte_terminal_match_hilite_update),
+       (vte_terminal_copy_cb):
+               Fixup a few 64bit-isms, notably format strings and an
+               undesired unsigned integer promotion causing this crash.
+
+2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410986 – Fails to build with -z defs
+
+       If you link the vtemodule.so to libpython, then programs importing
+       vte will have the symbols twice in memory: one set from python and
+       the other from libpython.
+
+       * configure.in:
+       * python/Makefile.am:
+               Remove PYTHON_LIBS from linking vtemodule.so.
+               Convert unresolved symbol errors into warnings so that
+               building with -Wl,-z,defs continues to work. This is a 
+               *hack* as it hides real errors if you are updating
+               vte.{def,override}.
+               
+2007-02-27  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c  (_vte_xft_open_font_for_char),
+       (_vte_xft_font_for_char), (_vte_xft_compute_char_width),
+       (_vte_xft_char_width), (_vte_xft_start), (_vte_xft_get_char_width),
+       (_vte_xft_draw_text):
+               Avoid some computations whilst drawing text.
+
+2007-02-26  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.4.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.4.
+
+       * src/Makefile.am: Bumped libtool version to 11:1:2.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410986 – Fails to build with -z defs
+
+       The forgotten half - the python module also fails to link.
+
+       * acinclude.m4:
+       * python/Makefile.am:
+               Add PYTHON_LIBS pointing to the customary location and
+               remember to include them when compiling vtemodule.so.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 412361 – Yet another mouse selection regression...
+       Part 2.
+
+       * src/vte.c: (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_scroll_pages), (vte_terminal_autoscroll),
+       (vte_terminal_size_allocate), (vte_terminal_scroll):
+               We implicitly used a bit of sanity checking when setting the
+               adjustment value. Ensure the value really is within the
+               adjustment range before updating scroll_delta.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 412361 – Yet another mouse selection regression...
+       Part 1.
+
+       * src/vte.c: (vte_terminal_draw_rows):
+               Restore drawing of the selection below the text.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_class_init), (time_process_incoming),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               Update max number of processable bytes each time we call
+               vte_terminal_process_incoming().
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (_vte_terminal_adjust_adjustments_full):
+               Refactor the common code.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Push a couple of NULL checks to the callers so to be able to move them
+       outside of the inner-most loops.
+
+       * src/vte.c: (_vte_row_data_find_charcell), (_vte_invalidate_cell),
+       (_vte_terminal_adjust_adjustments),
+       (vte_terminal_get_text_range_maybe_wrapped), (find_start_column),
+       (find_end_column), (vte_terminal_draw_rows):
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Some applications, such as cat, dump as much data to the terminal as
+       possible. In these scenarios it is likely that we will read data from
+       the child much faster than we can process it and the refresh will
+       stutter.
+
+       The ideal solution would be to speed up the data processing so that
+       this overrun was impossible. However, the approach taken here is to
+       estimate how much data we can actually process in our time slice and
+       to stop reading once we have sufficient data.
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_all),
+       (vte_terminal_emit_contents_changed),
+       (vte_terminal_match_contents_clear),
+       (vte_terminal_match_contents_refresh),
+       (vte_terminal_emit_adjustment_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (vte_terminal_io_read),
+       (vte_terminal_handle_scroll), (vte_terminal_init),
+       (vte_terminal_size_allocate), (need_processing), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 411000 – Orca repeats old text in gnome-terminal
+
+       The deferred handling of the window scrolling had the unfortunate
+       side-effect of postponing the accessibility 'text-scrolled' signal
+       until after the 'text-inserted' signal. This caused vteaccess to
+       determine that the whole window had been modified and cause orca to
+       reread the entire screen.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_contents_changed),
+       (_vte_terminal_queue_contents_changed),
+       (vte_terminal_emit_cursor_moved),
+       (vte_terminal_queue_cursor_moved), (vte_terminal_scroll_pages),
+       (vte_terminal_eof), (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_process_incoming), (vte_terminal_handle_scroll),
+       (vte_terminal_size_allocate), (vte_terminal_unrealize),
+       (vte_terminal_emit_pending_signals):
+       * src/vteaccess.c: (emit_text_caret_moved),
+       (emit_text_changed_insert), (emit_text_changed_delete):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Restore the order of the ally signals. However, Bug 372777
+               remains unresolved.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_io_read):
+               Eeek, correctly compute the buffer length when we no longer
+               aim to fill it.
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Use a separate debug flag for the ally interface.
+
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vteaccess.c:
+       (vte_terminal_accessible_update_private_data_if_needed),
+       (vte_terminal_accessible_invalidate_cursor),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere),
+       (vte_terminal_accessible_text_init),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_action_init),
+       (vte_terminal_accessible_factory_new):
+
+2007-02-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+               And finally clamp the maximum number of bytes transferred in
+               a single chunk.
+
+2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c:
+               Hint that the compiler should inline
+               vte_terminal_determine_colors().
+
+2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
+       cf Bug 410463 – Poor interactive performance with multiple terminals
+
+       * src/vte.c: (vte_terminal_io_read):
+               Do not loop whilst reading in a backlog of child data - should
+               help prevent monopolisation of vte by a single child and make
+               vte more responsive to user input on slower computers.
+
+2007-02-24  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 159078 – slow highlight
+
+       Do not update the match hilite during a selection-drag.
+       Record unsuccesful regex matches, so we can quickly determine whether
+       the cursor is still inside the blank region.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_match_check_internal),
+       (rowcol_inside_match), (vte_terminal_match_check),
+       (_vte_terminal_set_pointer_visible),
+       (vte_terminal_match_hilite_clear),
+       (vte_terminal_match_hilite_show), (vte_terminal_match_hilite_hide),
+       (vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
+       (vte_terminal_motion_notify), (vte_terminal_button_press),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_enter), (vte_terminal_leave), (vte_terminal_init),
+       (vte_terminal_unrealize), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       A couple of compiler warnings and avoid unnecessary arithmetic.
+
+       * src/vte.c: (_vte_terminal_set_default_attributes),
+       (find_start_column), (find_end_column),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_for_char),
+       (_vte_xft_char_width), (_vte_xft_unlock_fonts), (_vte_xft_start),
+       (_vte_xft_clip), (_vte_xft_set_text_font), (_vte_xft_draw_text):
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 411276 – SVN trunk compilation error
+       Part 2.
+
+       * configure.in:
+               Check that the header file defines FcStrFree before checking
+               for the availability of the function. Complete hack, but
+               appears to work.
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 411276 – SVN trunk compilation error
+
+       * configure.in:
+               Ubuntu Edgy appears to have a broken fontconfig-dev package
+               where the function is exported from the library but is missing
+               the corresponding prototypes.
+               So we reorder the determination of the compilation flags
+               before checking for available functions in the hope that the
+               tests will then match the results at compile time.
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_io_read):
+               Prevent a deadlock on recursively grabbing the gdk_mutex.
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Heuristic to avoid a read when it's likely to just return EAGAIN.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Add a new debug flag to monitor draw operations.
+       Don't issue individual glyphs for is_local_graphic() in the middle of
+       a run.
+
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte.c: (vte_terminal_unichar_is_local_graphic),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+       * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
+       (_vte_draw_new), (_vte_draw_free), (_vte_draw_get_visual),
+       (_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
+       (_vte_draw_set_background_color), (_vte_draw_set_background_image),
+       (_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
+       (_vte_draw_set_text_font), (_vte_draw_get_text_width),
+       (_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
+       (_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
+       (_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
+       (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
+       (_vte_draw_set_scroll):
+       * src/vtedraw.h:
+       * src/vteft2.c: (_vte_ft2_draw_has_char):
+       * src/vtegl.c: (_vte_gl_draw_has_char):
+       * src/vtepango.c: (_vte_pango_draw_has_char):
+       * src/vtepangox.c: (_vte_pango_x_draw_has_char):
+       * src/vteskel.c: (_vte_skel_draw_has_char):
+       * src/vtexft.c: (_vte_xft_draw_has_char):
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't break a glyph run for a graphic, issue the draw
+               and continue.
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Cache the font metrics on the vte_xft_font, avoids having to remeasure
+       when opening a new terminal.
+
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_set_text_font):
+
+2007-02-23  Chris Wilson  <chris chris-wilson co uk>
+
+       Share XftFonts between terminal backends and preserve faces from the
+       previous draw - helps prevents font cache thrashing inside libXft.
+
+       * src/vtexft.c: (_vte_xft_font_hash), (_vte_xft_font_equal),
+       (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_unlock_fonts),
+       (_vte_xft_destroy), (_vte_xft_start), (_vte_xft_end),
+       (ptr_array_zeroed_new), (_vte_xft_set_text_font),
+       (_vte_xft_get_char_width), (_vte_xft_draw_text),
+       (_vte_xft_draw_char):
+
+2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410986 – Fails to build with -z defs
+       Patch by Loïc Minier.
+
+       * src/Makefile.am:
+               Add FreeType to the libs.
+
+2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_send):
+               Return in the face of error as we appear to hit this in the
+               wild.
+
+2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410819 – slider not correctly positioned after calling less
+
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_maybe_scroll_to_top), (vte_terminal_size_allocate),
+       (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Fixup a lot of issues with changing the number of scrollback
+               lines, such as missing value_changed signals for the
+               scrollbar and a couple of missing CLAMPs.
+
+2007-02-22  Chris Wilson  <chris chris-wilson co uk>
+
+       After adjusting the current profile, the last line gets chomped.
+
+       * src/vte.c: (vte_terminal_set_scrollback_lines):
+
+2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
+
+       * src/vte.c: (vte_terminal_scroll),
+       (vte_terminal_set_scrollback_lines):
+               Operate on scroll delta directly as adjustment->value updates
+               are not instantaneous and we may have several scroll events
+               before the next update.
+
+2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 410463 – Poor interactive performance with multiple terminals
+
+       * src/vte.c: (vte_terminal_io_read), (process_timeout),
+       (update_repeat_timeout):
+               When multiple terminals are active, poll the IO sources
+               from within the process/display timeout (akin to 
+               interrupt mitigation).
+               Return to normal interrupts when we only have a single active
+               terminal - so we don't sacrifice high performance.
+
+2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+
+       A small bit of callgrinding, avoid the modulus inside
+       vte_terminal_ensure_cursor() by caching the last row_data.
+
+       * src/iso2022.c: (process_cdata):
+       * src/ring.c: (_vte_ring_new), (_vte_ring_insert),
+       (_vte_ring_insert_preserve), (_vte_ring_remove):
+       * src/ring.h:
+       * src/table.c: (_vte_table_match):
+       * src/vte.c: (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming):
+
+2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+
+       Callgrind strikes again...
+       Inserting a char is a rare operation (especially in the scrolling
+       benchmark!) so only read the old cell during an insert. This wins
+       about 5% during a hexdump.
+
+       * src/iso2022.c: (_vte_iso2022_find_nextctl),
+       (_vte_iso2022_fragment_input), (process_cdata):
+       * src/vte.c: (_vte_terminal_insert_char):
+       * src/vteseq.c: (vte_sequence_handler_sf):
+
+2007-02-21  Chris Wilson  <chris chris-wilson co uk>
+
+       RedHat Bug 113195: First line displayed incorrectly if prompt changes background color
+
+       e.g. PS1='\e[46m[\u@\h:\w]\e[m \e[45m'
+       The issue is when we insert a char on a new row and the background is
+       not the default, we fill the entire row with the *current* colour.
+       This behaviour is incorrect, and the fix is to fill to the end of the
+       line on a carriage return.
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_process_incoming),
+       (vte_terminal_send):
+       * src/vteseq.c: (vte_sequence_handler_ce),
+       (vte_sequence_handler_cr), (vte_sequence_handler_cs),
+       (vte_sequence_handler_cS),
+       (vte_sequence_handler_cursor_lower_left),
+       (vte_sequence_handler_dc), (vte_sequence_handler_ic),
+       (vte_sequence_handler_sf):
+
+2007-02-20  Chris Wilson  <chris chris-wilson co uk>
+
+        RedHat Bug 123845: gnome-terminal not parsing cursor position escape sequence properly
+
+       * src/caps.c:
+       * src/vteseq.c: (vte_sequence_handler_cm):
+               Add 'ESC [ Pn H' to cursor-position and provide default
+               values.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 409055 – Terminal stays blank
+
+       Due to GTK+ coallescing of XExposeEvents it was possible for our
+       GdkExposeEvent to arrive before the GdkVisibilityEvent associated with
+       the mapping of our toplevel and so we discarded the event as we
+       believed we were still unviewable.
+
+       * src/vte.c: (_vte_invalidate_cells), (vte_terminal_expose),
+       (reset_update_regions):
+               Assume that all GdkExposeEvents have been checked for
+               suitability before delivery. We know this true for locally
+               generated expose events which are extensively checked during
+               invalidation, and we presume that X will not generate expose
+               events on unmapped or otherwise unviewable windows.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full):
+               Dead code elimination.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * perf/random.sh:
+               A simple script to dump a fixed amount of random data to the
+               terminal.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       A few more trivial incremental improvements.
+
+       * src/Makefile.am:
+       * src/iso2022.c: (_vte_iso2022_map_get):
+               Switch to a VteTree.
+       * src/vte.c: (_vte_terminal_update_insert_delta),
+       (_vte_terminal_insert_char):
+               No need to ensure the cursor when scrolling, only before
+               insertions.
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_end):
+               Lock the face over the entire expose.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Improve handling of parallel 'cat /dev/urandom' - notably a crasher
+       in the table matcher, repeated g_getenv processing and wasted time
+       in g_tree_lookup.
+
+       * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
+       (_vte_iso2022_map_init), (_vte_iso2022_map_get),
+       (process_8_bit_sequence), (process_cdata),
+       (_vte_iso2022_process_single), (_vte_iso2022_process):
+       * src/table.c: (_vte_table_match):
+       * src/vte-private.h:
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (update_timeout):
+               In conjunction with the previous fix, since the terminal
+               can be removed from the active list by
+               vte_terminal_process_incoming() we need to be careful whilst
+               iterating along the active list.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       <fcrozat> ickle: hi.. our kernel hacker just found a nice reproducible
+               crash in vte :)
+       <ickle> oh, joy
+       <fcrozat> very easy to reproduce
+               cat /dev/urandom
+               wait 2 or 3S
+               then press Ctrl-Shift-T to open a new tab
+               => crash
+
+       * src/vte.c: (process_timeout), (update_repeat_timeout):
+               vte_terminal_process_incoming() can trigger a terminal reset
+               which will remove the terminal from the active list, and then
+               we attempt to remove it again after handling the incoming
+               data. The fix is simple - don't delete the link if the the
+               terminal is no longer active.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       As noticed on bug 409055, we do not receive a visibility-notify
+       event when we switch workspaces (or even when the window is iconified).
+       The workaround for this is to watch for our toplevel being unmapped
+       and set the fully-obscured flag.
+
+       * src/vte.c: (vte_terminal_configure_toplevel),
+       (vte_terminal_unmap_toplevel), (vte_terminal_hierarchy_changed),
+       (vte_terminal_set_visibility), (vte_terminal_visibility_notify):
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (visibility_state_str),
+       (vte_terminal_visibility_notify), (vte_terminal_init),
+       (vte_terminal_realize):
+               Add the visibility state to the debug output.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * configure.in:
+               Add the configuration details to config.log as well.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 409241 – gnome-terminal crashed with SIGSEGV in vte_terminal_draw_graphic()
+
+       * src/vte.c: (vte_terminal_paint):
+               Lookup fore/back colours before attempting to draw the graphic
+               character behind the unfocused cursor.
+
+2007-02-19  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_visibility_notify):
+               Add VTE_DEBUG_EVENT info.
+
+2007-02-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 407945 – "GNOME" Terminal" regression after "vte" update when using "csh"
+
+       When passing multiple versions of the same environment
+       variable to execve (i.e g_spawn) the result is undefined.
+       So we solve the ambiguity by using the application passed env to
+       override values from the current environment.
+       
+       * src/pty.c: (collect_variables), (merge_environ),
+       (_vte_pty_run_on_pty):
+
+2007-02-16  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 408536 – trouble compiling vte 0.15.3
+
+       * configure.in:
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+               Check for availability of FcStrFree() - only used for
+               debugging purposes so we can live without it.
+
+2007-02-15  Chris Wilson  <chris chris-wilson co uk>
+
+       Guard against a missing default number of rows or columns
+       inside the termcap.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):
+
+2007-02-15  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 408040 – vte automagic hyperlinks
+       Patch by Gilles Dartiguelongue.
+
+       * src/vteapp.c:
+               Correct the typo in the nntp protocol matcher.
+
+2007-02-14  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 407839 – Use of environ breaks build on Solaris
+       Original patch by Damien Carbery.
+
+       * src/pty.c:
+               extern char **environ - glibc was 'conveniently' declaring
+               it for us...
+
+2007-02-13  Chris Wilson  <chris chris-wilson co uk>
+
+       uws reported that scrolling inside screen with a status line was
+       broken. Indeed any scrolling inside an alternative screen was broken,
+       e.g. plain vim would not always update the topmost line. The issue was
+       the interaction with the deferred value-changed signal emission and
+       failing to correctly maintain the current scroll_delta. The fix is
+       that we always now apply changes to the scroll_delta and swap
+       scroll_delta with adjustment->value before the deferred signal
+       emission to correctly trigger the handle_scroll().
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cells),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (vte_terminal_process_incoming), (vte_terminal_extend_selection),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_sf):
+
+2007-02-13  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 407358 – regression in mouse selection
+
+       * src/vte.c: (vte_terminal_motion_notify):
+               When outside the terminal we used an uninitialised variable to
+               determine the mouse tracking mode.
+
+2007-02-12  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.3.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.3.
+
+       * src/Makefile.am: Bumped libtool version to 11:0:2.
+
+2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_extend_selection),
+       (vte_terminal_motion_notify):
+               Restore autoscroll behaviour.
+
+2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_start_selection):
+               Invalidate the selected region when starting in
+               select-word or select-line mode.
+
+2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+
+       Restore double-click to select word behaviour, broken by r1671 as
+       the second click occurs in the same place as the first (obviously!).
+
+       * src/vte.c: (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press):
+
+2007-02-12  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 407091 – vte_terminal_fork_command() env argument changed semantic in 0.15.2
+       Original patch by Michael Vogt.
+
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Copy the current environment into the child's.
+
+2007-02-11  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 323393 – Hyper-sensitive selection
+
+       * src/vte.c: (vte_terminal_extend_selection):
+               Don't start (or update) the selection until you
+               move off the current cell (character).
+
+2007-02-11  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 406763 – Selecting double-wide characters
+
+       * src/vte.c: (start_column), (end_column),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows):
+               Extend selection to include fragment cells i.e. double-wide
+               characters.
+
+2007-02-10  Chris Wilson  <chris chris-wilson co uk>
+
+       Have a separate adjust_adjustments for when we know that the page
+       size and step lengths may have changed.
+
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (_vte_terminal_adjust_adjustments_full),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset):
+
+2007-02-10  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_terminal_adjust_adjustments),
+       (vte_terminal_size_allocate), (vte_terminal_set_scrollback_lines):
+               Prevent the display of garbage after resizing and switching
+               between alternate screens.
+               However, instead of displaying garbage after the cursor, we
+               lose some data above the current scroll delta, should we have
+               a full history.  Bizarre.
+
+2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_terminal_adjust_adjustments):
+               Do not allow to scroll past the last line after reducing
+               scrollback lines.
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Ensure a fallback height is set.
+
+2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_get_text_range_maybe_wrapped):
+               Reuse VteRowData whilst in the row.
+
+2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+
+       Rework to reduce number of times mutex is taken and shorten the hold.
+
+       * src/vte.c: (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (vte_terminal_io_read), (vte_terminal_paint),
+       (vte_terminal_add_process_timeout), (vte_terminal_is_processing),
+       (vte_terminal_start_processing):
+
+2007-02-09  Chris Wilson  <chris chris-wilson co uk>
+
+       A number of small bug fixes...
+       - do not override the user setting of scrollback lines with the
+       terminal size.
+       - only set the current screen rather than both and so reset the
+       scrollback lines when we switch between normal and alternate.
+       - do not invalidate inside set_scrollback lines as setting does not
+       actually modify the on-screen contents.
+       - push the scroll-adjustment to the post-processing emission.
+       - queue timeouts on value change (should be a no-op)
+       - reorder emission so that scrolling occurs before invalidating the
+       window (ie so that the scroll happens this cycle, not next).
+
+       Still unsolved: the clamping of the cursor when switching between
+       alternate screens.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_queue_adjustment_value_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_maybe_scroll_to_top),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta),
+       (vte_terminal_process_incoming), (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_handle_scroll),
+       (vte_terminal_size_allocate), (vte_terminal_scroll),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
+       (add_process_timeout), (vte_terminal_add_process_timeout),
+       (vte_terminal_start_processing), (update_repeat_timeout),
+       (update_timeout):
+       * src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_al),
+       (vte_sequence_handler_dl), (vte_sequence_handler_sf),
+       (vte_sequence_handler_sr), (vte_sequence_handler_clear_screen),
+       (vte_sequence_handler_cursor_character_absolute),
+       (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines),
+       (vte_sequence_handler_screen_alignment_test):
+
+2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteapp.c: (main): whitespace
+
+2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 363597 – Scrollback in profile dialog doesn't work
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_init),
+               Only use SCROLLBACK_MIN during initialisation, so rename it
+               to SCROLLBACK_INIT.
+       (vte_terminal_set_scrollback_lines):
+               Remove MAX(lines, SCROLLBACK_MIN) and update code comments
+               to reduce confusion.
+
+2007-02-08  Mariano Suárez-Alvarez  <mariano gnome org>
+
+       * src/vteapp.c(main): do something useful with --geometry.
+
+2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+
+       Use gtk_widget_get_(screen|display) which will itself return a default
+       if not currently attached.
+
+       * src/vtedraw.c: (_vte_draw_get_colormap):
+       * src/vtefc.c: (_vte_fc_defaults_from_gtk):
+       * src/vtegl.c: (_vte_gl_check), (_vte_gl_create),
+       (_vte_gl_destroy), (_vte_gl_start), (_vte_gl_end), (_vte_gl_clear),
+       (_vte_gl_draw_text), (_vte_gl_rectangle):
+       * src/vterdb.c: (_vte_rdb_get):
+       * src/vteseq.c: (vte_sequence_handler_window_manipulation):
+
+2007-02-08  Chris Wilson  <chris chris-wilson co uk>
+
+       Some more callgrinding - kill a little bit of overhead.
+
+       * src/iso2022.c: (_vte_iso2022_sequence_length),
+       (_vte_iso2022_fragment_input), (process_control):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/vteconv.c: (_vte_conv):
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       Actually return whether or not we found the char in
+       _vte_xft_font_for_char - saves having to double check afterwards!
+
+       * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_set_text_font),
+       (_vte_xft_draw_text):
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       As spotted perusing roxterm, we fail to redraw after changing the text
+       colour.
+
+       * src/vte.c: (vte_terminal_set_color_internal):
+               Remember to invalidate all!
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_match_check_internal):
+               Scan for newlines before and after the current row
+               to find the entire line in case of soft-wrapping.
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 345344 – Pattern matching is inefficient
+       Bug 324246 – Performance degredation with large numbers of highlighted addresses/URLs
+
+       * src/vte.c: (vte_terminal_match_check_internal):
+               Trim the searched string down to the row containing the
+               pointer. During a mutt session this drops the time consumed by
+               regexec from ~30% to ~2%.
+               Note: multi-line regexes are now unsupported!
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c: (_vte_sequence_get_handler):
+               Avoid the strlen when possible.
+
+2007-02-07  Chris Wilson  <chris chris-wilson co uk>
+
+       Some cleanups and a bug...
+
+       vte_terminal_match_hilite() compared the current cell to the last
+       mouse position without a floor().
+
+       * src/vte.c: (vte_terminal_process_incoming),
+       (vte_terminal_match_hilite), (vte_terminal_select_all),
+       (vte_terminal_select_none), (vte_terminal_motion_notify),
+       (vte_terminal_button_press):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 86119 – "select all" feature
+       Original patch by Simone Gotti.
+
+       * src/vte.c: (vte_terminal_select_all), (vte_terminal_select_none):
+       * src/vte.h:
+               Add 2 new API entry points to select the entire contents
+               and clear the current selection.
+
+2007-02-06  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 342059 – ASCII escape sequences don't work as expected
+       Correction by Mariano Suárez-Alvarez.
+
+       * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
+               OBO on the parameter.
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 342059 – ASCII escape sequences don't work as expected
+       Patch by Mariano Suárez-Alvarez.
+
+       * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
+               Provide a default value.
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       And finally as noted on bug 324246#c8 hide the hilite when the mouse
+       leaves the terminal (show again when it enters and let motion-notify
+       correct it later).
+
+       * src/vte.c: (vte_terminal_enter), (vte_terminal_leave),
+       (vte_terminal_realize), (vte_terminal_class_init):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       As noted on bug 324246#c8, hide the hilite when the focus disappears.
+       On focus restore the match for the last mouse coordinates and let
+       motion-notify take care of the rest.
+
+       * src/vte.c: (vte_terminal_match_hilite_update),
+       (vte_terminal_match_hilite), (vte_terminal_focus_in):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Convert the exposed rectangles to cells and remerge them.
+
+       * src/vte.c: (vte_terminal_expand_region),
+       (vte_terminal_paint_area), (vte_terminal_paint):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       As noted on Bug 401052#c13, vte fails to completely clear the cell's
+       previous contents.
+
+       * src/vte.c: (_vte_invalidate_cells):
+               Grow the invalidate region by a single pixel to accomodate
+               antialiased pseudo-bold characters.
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Move status_line_changed to post-processing emission.
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_insert_char), (vte_terminal_reset),
+       (vte_terminal_emit_pending_signals):
+       * src/vteseq.c: (vte_sequence_handler_ts):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       Clamp down on needless invalidates during selection.
+
+       As commented on in Bug 401052#c10
+
+       * src/vte.c: (_vte_invalidate_region), (vte_terminal_deselect_all),
+       (vte_terminal_match_hilite_clear), (vte_terminal_start_selection),
+       (vte_terminal_extend_selection):
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't needlessly break the text run on a space if we are
+               not drawing cell attributes.
+
+2007-02-06  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht):
+               One more G_UNLIKELY
+       * src/vte.c: (vte_terminal_match_hilite),
+       (vte_terminal_motion_notify):
+               Avoid expensive hiliting if the pointer is not in the window.
+       * src/vteregex.c: (_vte_regex_exec):
+               Prefer g_new(x,n) over g_malloc(sizeof(x)*n)
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 404757 – URL matching doesn't work with PCRE
+
+       * configure.in:
+               mention the inconsistency in the help string and default to no.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't draw cell attributes across spaces.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_terminal_insert_char):
+               A couple more G_LIKELYs.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 403028 – decset mode 12 = blinking cursor
+
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Following convention, disallow the application's control
+               over the blinking cursor in favour of the user's setting.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Some more small callgrind tweaks - well into the law of diminishing
+       returns.
+
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht),
+       (_vte_iso2022_is_ambiguous), (process_8_bit_sequence),
+       (process_cdata), (_vte_iso2022_unichar_width):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/vte.c: (vte_terminal_process_incoming):
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       Beware the trivial change. Handle reuse of GValueArray correctly.
+
+       * src/matcher.c: (_vte_matcher_match):
+       * src/table.c: (_vte_table_match):
+       * src/trie.c: (_vte_trie_match):
+       * src/vte.c: (vte_terminal_process_incoming):
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/table.c: (_vte_table_match):
+               And kill the leak as vte_table_match erroneously cleared
+               its output arguments.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       The continual reallocation of GValueArray is the last trivially
+       avoidable g_realloc.
+
+       * src/interpret.c: (main):
+       * src/matcher.c: (_vte_matcher_create), (_vte_matcher_destroy),
+       (_vte_matcher_match), (_vte_matcher_free_params_array):
+       * src/matcher.h:
+       * src/table.c: (_vte_table_extract_string):
+       * src/trie.c: (_vte_trie_matchx), (_vte_trie_match), (main):
+       * src/vte.c: (vte_terminal_process_incoming):
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/ring.c: (_vte_ring_insert):
+               Missed an important compiler warning.
+
+2007-02-05  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 342338 – suffers from memory fragmentation
+
+       Reuse the last VteRowData instead of immediately freeing it. Avoids
+       recreating and *regrowing* a new GArray on the heap.
+
+       In the simple scrolling benchmarks this can boost performance by as
+       much as 10%!
+
+       * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
+       (_vte_ring_remove), (_vte_ring_append):
+       * src/ring.h:
+       * src/vte-private.h:
+       * src/vte.c: (_vte_reset_row_data), (_vte_terminal_ensure_cursor),
+       (_vte_terminal_insert_char), (vte_terminal_reset_rowdata):
+       * src/vteseq.c: (vte_insert_line_internal),
+       (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_cd), (vte_sequence_handler_sf),
+       (vte_sequence_handler_clear_screen),
+       (vte_sequence_handler_screen_alignment_test):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       A few more compiler warnings.
+
+       * src/buffer.c: (_vte_buffer_peek_gstring):
+       * src/iso2022.c: (process_control):
+       * src/vteft2.c: (_vte_ft2_set_text_font):
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+       * src/vtetc.c: (_vte_termcap_parse_file):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue
+
+       * src/vtedraw.h:
+       * src/vteglyph.c: (_vte_glyph_cache_set_font_description):
+       * src/vtepango.c: (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_set_text_font):
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Detect a change in font between wide-chars and recheck for a
+               fixed-width estimate.
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Micro-opts.
+
+       * src/table.c: (_vte_table_match):
+               No need set to NULL.
+       * src/vte.c: (_vte_terminal_ensure_cursor):
+               If we have added some rows, the last is the current.
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Move window/icon title changed to the post-processing emission - helps
+       with the artificial benchmark of replaying a recorded jhbuild script.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_finalize),
+       (vte_terminal_emit_icon_title_changed),
+       (vte_terminal_emit_window_title_changed),
+       (vte_terminal_emit_pending_signals):
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Broke clear-to-end-of-line by lowering the number of cells appended,
+       instead of the number of cells invalidated.
+
+       * src/vte.c: (vte_terminal_draw_rows):
+       * src/vteseq.c: (vte_sequence_handler_ce):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on unaccelerated X server
+
+       Another chunk of performance improvements - the majority focusing on
+       reducing the amount of work down per interrupt (input data from
+       child).
+
+       To handle reads without addition copies VTE_INPUT_CHUNK_SIZE chunks
+       are allocated on demand and filled from read with no further copy -
+       previously the read was into a local buffer and then immediately
+       copied into a _vte_buffer.
+       _vte_iso2022_process() is then adjusted to use a ptr+length, rather
+       than a _vte_buffer and is called for every input chunk (taking special
+       care over the boundary cases).
+
+       * src/interpret.c: (main):
+       * src/iso2022.c: (_vte_iso2022_fragment_input),
+       (process_8_bit_sequence), (process_cdata), (_vte_iso2022_process):
+       * src/iso2022.h:
+       * src/vte-private.h:
+       * src/vte.c: (get_chunk), (release_chunk), (prune_chunks),
+       (_vte_incoming_chunks_release), (_vte_incoming_chunks_length),
+       (_vte_incoming_chunks_count), (_vte_incoming_chunks_reverse),
+       (vte_terminal_match_check_internal), (_vte_terminal_ensure_cursor),
+       (vte_terminal_set_colors), (_vte_terminal_insert_char),
+       (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
+       (vte_terminal_io_read), (vte_terminal_feed), (vte_terminal_send),
+       (vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
+       (remove_from_active_list), (need_processing), (update_regions),
+       (update_repeat_timeout):
+       * src/vte.h:
+       * src/vteseq.c: (vte_sequence_handler_cb),
+       (vte_sequence_handler_ce), (vte_sequence_handler_ec):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Store whether the codeset is ambiguous in a state variable,
+       rather than recomputing the ambiguous width every processing loop.
+
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_state_new), (_vte_iso2022_find_nextctl):
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c: (_vte_xft_create), (_vte_xft_destroy):
+               Remove zero-initialisers after g_slice_new0().
+       * src/vtexft.c :(_vte_xft_set_text_font):
+               Print out the width range.
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       * configure.in:
+               Missing space between -Wflags.
+
+2007-02-04  Chris Wilson  <chris chris-wilson co uk>
+
+       Eliminate the temporary g_sliced parameter list,
+       in favour of an on-stack list.
+
+       * src/table.c: (_vte_table_arginfo_head_init),
+       (_vte_table_arginfo_alloc), (_vte_table_arginfo_head_revert),
+       (_vte_table_arginfo_head_reverse),
+       (_vte_table_arginfo_head_finalize), (_vte_table_addi),
+       (_vte_table_matchi), (_vte_table_extract_string),
+       (_vte_table_match):
+
+2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+               Dump the chosen fonts to VTE_DEBUG_MISC.
+       * src/vteft2.c: (_vte_ft2_set_text_font):
+               Print out the font metrics ala vtexft.c
+
+2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 322241 – Please switch to pkg-config to check for freetype
+
+       * configure.in:
+               Prefer to use the freetype2.pc if available.
+
+2007-02-02  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 322240 – Usage of pkg-config privates header
+
+       * vte.pc.in:
+               Move @FT2_LIBS@ to Libs.private.
+
+2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+
+       cf Bug 403275 – crash in Terminal: I was typing reset on th...
+
+       Not the crash, just a freeze found whilst trying to reproduce the
+       bug on trunk.
+
+       * src/vte.c: (remove_from_active_list):
+               Don't remove the terminal from the active list if it still
+               has pending redraws.
+       
+       * src/vte.c: (process_timeout), (update_timeout):
+               Reorder the loop to remove the terminal from the active list
+               if it no longer needs processing.
+
+2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+
+       * perf/scroll.vim:
+               Extract the bits the test needs out of debian.vim.
+
+2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+
+       As spotted on bug 399617c8, we convert an array of unichars to a
+       string and then iterate over the string interpreting bytes as
+       unichars.
+
+       * src/table.c: (_vte_table_extract_numbers):
+               Dispense with the temporary string and process the unichar
+               array directly.
+
+2007-02-01  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386
+
+       * src/vtexft.c: (_vte_xft_clip):
+               Precompute clip offsets.
+
+2007-02-01  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 382245 – __PyGtk_API multiply defined in python module
+
+       * configure.in:
+               Add -fno-common to MAYBE_WARN in order to catch future
+               errors of this type.
+       * python/vte.override:
+               Define PYGTK_NO_IMPORT.
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 155687 – Scroll region \E[NN;MMr should set cursor to home
+
+       Patch originally by Michele Baldessari.
+
+       * src/vteseq.c: (vte_sequence_handler_cs):
+               Move the cursor to (0,0) rather than clamping the cursor to 
+               be inside the scroll region.
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       In a few places the contents of a GValue were being used without
+       checking that they were of the expected type.
+
+       cf Bug 117945 which mentions stack corruption inside
+       vte_sequence_handler_delete_lines() - one of the corrected instances.
+
+       * src/vteseq.c: (vte_sequence_handler_al),
+       (vte_sequence_handler_cs), (vte_sequence_handler_cS),
+       (vte_sequence_handler_dl),
+       (vte_sequence_handler_character_attributes),
+       (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines),
+       (vte_sequence_handler_device_status_report),
+       (vte_sequence_handler_dec_device_status_report):
+               Check that the GValue holds a long before dereference.
+
+2007-01-31  Chris Wilson <chris chris-wilson co uk>
+
+       Back to the old-style io loop as _vte_buffer_append() is too slow - on
+       a slow system the read can fill before the data is copied (even more
+       apparent under valgrind).
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Use the display stashed inside the font and not the default display!
+
+       * src/vtexft.c: (_vte_xft_char_exists), (_vte_xft_text_extents),
+       (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_draw_text):
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       A mixed bag of cleanups.
+
+       * configure.in:
+       * src/pty.c: (_vte_pty_set_utf8):
+               Test for existence of tc[sg]etattr.
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_set_color_internal), (vte_terminal_handle_sequence),
+       (_vte_terminal_enable_input_source), (vte_terminal_io_read),
+       (vte_terminal_init), (vte_terminal_unrealize),
+       (vte_terminal_finalize), (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_emit_pending_signals), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+               Move idle signal emission to display handlers.
+       * src/vtedraw.h:
+               Add '&' to the single width characters.
+       * src/vteseq.c: (_vte_sequence_get_handler):
+       * src/vteseq.h:
+               Drop the extraneous GQuark parameter.
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Avoid use of strlen for a compile-time fixed length string.
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 147784 – cursor unvisible under mouse highlight
+
+       Original patch by Chris Health
+
+       * src/vte.c: (vte_terminal_paint):
+               Reverse cursor color if it is in the selected region and draw
+               it as an outline.
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 368894 – crash in Terminal: I started gnome-terminal...
+
+       * src/vtebg.c: (vte_bg_cache_search), (vte_bg_get_pixmap),
+       (vte_bg_get_pixbuf):
+               When retrieving a cached pixmap check that the visual
+               matches the current request.
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Use gdk_error_trap_{push,pop} around raw Xft calls - about a
+       path outside of vte_draw_{begin,end}.
+
+       * src/vtexft.c: (_vte_xft_set_text_font):
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Use gdk_error_trap_{push,pop} around raw X11 and Xft calls.
+       cf Bug 368894.
+
+       * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_start),
+       (_vte_xft_end):
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Use gperf to calculate a more optimal vte_sequence_get_handler().
+       This reduces vte_sequence_get_handler() from ~13% of the runtime
+       during 'seq 1 1e6' to ~.5% (cumulative).
+
+       * src/Makefile.am:
+       * src/vteseq-2.c: (vteseq_2_hash), (vteseq_2_lookup):
+       * src/vteseq-2.gperf:
+       * src/vteseq-n.c: (vteseq_n_hash), (vteseq_n_lookup):
+       * src/vteseq-n.gperf:
+       * src/vteseq.c: (_vte_sequence_get_handler):
+
+2007-01-31  Chris Wilson  <chris chris-wilson co uk>
+
+       Rudimentary vim scrolling benchmark.
+
+       * perf/Makefile.am:
+       * perf/UTF-8-demo.txt:
+       * perf/scroll.vim:
+       * perf/vim.sh:
+
+2007-01-30  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 402329 – Rendering problem with underlines and cursor
+
+       * src/vte.c: (vte_terminal_paint):
+               Check hilite state when redrawing character under cursor.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_io_read):
+               Clean up the read IO loop.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       NULL return from pcre_study() does not necessarily mean an error
+       occurred.
+
+       * src/vteregex.c: (_vte_regex_compile), (_vte_regex_exec):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_terminal_set_pointer_visible),
+       (_vte_terminal_fudge_pango_colors):
+               Kill a couple more compiler warnings.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 336105 – gnome-terminal crashes when termcap not found
+
+       * src/matcher.c: (_vte_matcher_init):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_default_tabstops),
+       (vte_terminal_key_press), (vte_terminal_set_emulation),
+       (_vte_terminal_inline_error_message), (vte_terminal_set_termcap),
+       (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_draw_cells):
+               Detect and issue an inline warning when we fail
+               to load a termcap.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Tighten the invalidated cells.
+
+       * src/vte.c: (_vte_terminal_select_text):
+       * src/vteseq.c: (vte_sequence_handler_cb):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       More compiler warnings.
+
+       * src/vtepangox.c: (_vte_pango_x_set_text_font),
+       (_vte_pango_x_draw_text):
+       * src/vteregex.c: (_vte_regex_exec):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Detect availability of PCRE.
+
+       * configure.in:
+       * src/Makefile.am:
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Improve handling of multi-row clears.
+
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows),
+       (vte_terminal_paint):
+
+2007-01-29  Chris Wilson <chris chris-wilson co uk>
+
+       Add debugging flags for printing out cells contents and attributes as
+       they are rendered.
+
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte.c: (vte_terminal_draw_cells):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_rows):
+               Don't issue glyph items for blank cells.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * configure.in:
+               Add -Wshadow to MAYBE_WARN
+       * src/ring.c: (_vte_ring_remove):
+       * src/table.c: (_vte_table_matchi):
+       * src/vtedraw.c: (_vte_draw_clip):
+       * src/vteskel.c:
+               Clean up some compiler warnings.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteskel.c:
+               Add the NULL clip func to the skeleton function table.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Update match hilite before showing the pointer as the choice of
+       cursor depends on whether the pointer is above a matched region.
+
+       * src/vte.c: (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       Only update the matched region if we move the pointer outside of the
+       currently matched region.
+       And only invalidate the cells underneath the matched region.
+
+       * src/vte.c: (_vte_invalidate_region),
+       (vte_terminal_match_hilite_clear), (cursor_inside_match),
+       (vte_terminal_match_hilite), (vte_terminal_draw_rows):
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/table.c: (_vte_table_free):
+               Fix a memleak.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       ==26147== 2,895 (352 direct, 2,543 indirect) bytes in 22 blocks are definitely lost in loss record 
107 of 170
+       ==26147==    at 0x4021380: malloc (vg_replace_malloc.c:149)
+       ==26147==    by 0x4E85965: g_malloc (gmem.c:131)
+       ==26147==    by 0x4E95537: g_slice_alloc (gslice.c:777)
+       ==26147==    by 0x4E7C255: g_list_prepend (glist.c:95)
+       ==26147==    by 0x428B887: vte_terminal_feed (vte.c:10991)
+       ==26147==    by 0x429DD20: vte_terminal_io_read (vte.c:3214)
+       ==26147==    by 0x4EA7A8C: g_io_unix_dispatch (giounix.c:162)
+       ==26147==    by 0x4E7E481: g_main_context_dispatch (gmain.c:2045)
+       ==26147==    by 0x4E8145E: g_main_context_iterate (gmain.c:2677)
+       ==26147==    by 0x4E81808: g_main_loop_run (gmain.c:2881)
+       ==26147==    by 0x45BA503: gtk_main (gtkmain.c:1148)
+       ==26147==    by 0x805F7A3: main (terminal.c:1773)
+
+       * src/vte.c: (remove_from_active_list), (process_timeout),
+       (update_repeat_timeout):
+               g_list_delete_link() is the one that actually frees the link.
+               s/g_list_remove_link/g_list_delete_link/.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       ==26147== Conditional jump or move depends on uninitialised value(s)
+       ==26147==    at 0x42AB9F7: _vte_rdb_search (vterdb.c:95)
+       ==26147==    by 0x42ABB40: _vte_rdb_quark (vterdb.c:201)
+       ==26147==    by 0x42ABB9F: _vte_rdb_get_hintstyle (vterdb.c:241)
+       ==26147==    by 0x42A7952: _vte_fc_patterns_from_pango_font_desc (vtefc.c:302)
+       ==26147==    by 0x42B4E9B: _vte_xft_set_text_font (vtexft.c:103)
+       ==26147==    by 0x42A6BE5: _vte_draw_set_text_font (vtedraw.c:258)
+       ==26147==    by 0x428C62B: vte_terminal_ensure_font (vte.c:5963)
+       ==26147==    by 0x4290295: vte_terminal_size_request (vte.c:6613)
+       ==26147==    by 0x4E25228: g_cclosure_marshal_VOID__BOXED (gmarshal.c:566)
+       ==26147==    by 0x4E17038: g_type_class_meta_marshal (gclosure.c:567)
+       ==26147==    by 0x4E188FC: g_closure_invoke (gclosure.c:490)
+       ==26147==    by 0x4E29779: signal_emit_unlocked_R (gsignal.c:2370)
+       ==26147== 
+
+       * src/vterdb.c: (_vte_rdb_get):
+               Check the result of the get_property_string before using the
+               returned values.
+
+2007-01-29  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows):
+               Merge draw_cells() with the background clear, as generating
+               items for many rows and then splitting again in draw cells is
+               simply inefficient.
+
+2007-01-28  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 401215 – Multi-pass renderering
+
+       * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_clear_cells),
+       (vte_terminal_draw_cells_with_attributes),
+       (vte_terminal_draw_rows), (vte_terminal_paint):
+               Break the draw_rows() loop into two passes - first clear the
+               background and second render the text.
+               Add another function based on draw_cells() that just clears the
+               background and make clearing the background optional in
+               draw_cells() - updating callers accordingly.
+               Adventurous souls are required to clean up draw_rows().
+
+2007-01-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Fix compilation *with* debugging enabled.
+       Grrr.
+
+       * src/keymap.c: (_vte_keysym_print):
+
+2007-01-27  Chris Wilson  <chris chris-wilson co uk>
+
+       Fix compilation without debugging enabled.
+
+       * src/keymap.c: (_vte_keysym_print), (_vte_keymap_map):
+       * src/vte.c: (display_control_sequence):
+       * src/vteapp.c: (main):
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/debug.h:
+               Provide a safe fallback for non-C99 compilers (well actually
+               anything that isn't a recent gcc at the moment).
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input style
+
+       Patch by ynakai redhat com.
+
+       * src/vte.c: (_vte_terminal_fudge_pango_colors):
+               Check the attributes for each cell rather than assuming the
+               pango attributes (and cell attributes) are the same for the
+               whole string.
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vteseq.c: (vte_sequence_handler_vb):
+               Iterating over all queued exposures and drawing on top of the
+               flash does not sense. Simply flush the draw.
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       s/_VTE_DEBUG_ON/_VTE_DEBUG_IF/ and don't include
+       the code block inside the macro.
+
+       * src/debug.h:
+       * src/iso2022.c: (process_control), (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/matcher.c: (_vte_matcher_init):
+       * src/pty.c: (_vte_pty_run_on_pty):
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_extract_numbers), (_vte_table_match):
+       * src/trie.c: (_vte_trie_addx):
+       * src/vte.c: (vte_terminal_match_check_internal),
+       (vte_terminal_match_check), (vte_terminal_handle_sequence),
+       (vte_terminal_catch_child_exited), (vte_terminal_process_incoming),
+       (vte_terminal_io_write), (vte_terminal_send),
+       (vte_terminal_key_press), (vte_terminal_copy_cb),
+       (vte_terminal_set_font_full), (vte_terminal_realize),
+       (vte_terminal_paint), (vte_terminal_scroll):
+       * src/vteapp.c: (main):
+       * src/vtebg.c: (vte_bg_root_pixmap):
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 400834 – Use a global display/process timeout
+
+       Currently each terminal uses it own display timeout. Given that
+       typical usage is several active terminals, there is an immediate
+       advantage (context switches, fairness, smoothness) to using a single
+       common timeout.
+
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+               Add VTE_DEBUG_TIMEOUT
+       * src/vte-private.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_init),
+       (vte_terminal_class_init), (add_update_timeout),
+       (remove_from_active_list), (remove_update_timeout),
+       (add_process_timeout), (vte_terminal_stop_processing),
+       (vte_terminal_is_processing), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+               Modify to use a global timeout rather than individual
+               private timeouts.
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Unable to set background scrolling mode from cmdline due to variable
+       name confusion.
+
+       * src/vteapp.c: (main):
+               --scroll should set scroll=TRUE rather than cursor=TRUE!
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 401082 – double-draw issue
+
+       The main cause of this bug was not expanding the cleared area to cover
+       all the cells affected by the draw and forgetting to offset the clear
+       by VTE_PAD_WIDTH.
+
+       To counter the performance hit due to the expanded repaint area, each
+       backend is presented with the opportunity to apply a clip to the
+       exposed region before painting.
+
+       This also fixes bug 333157,
+
+       * src/vte.c: (_vte_invalidate_cells), (vte_terminal_paint_area),
+       (vte_terminal_paint):
+       * src/vtedraw.c: (_vte_draw_clip):
+       * src/vtedraw.h:
+       * src/vteft2.c: (_vte_ft2_end), (_vte_ft2_clip):
+       * src/vtegl.c:
+       * src/vtepango.c: (_vte_pango_clip):
+       * src/vtepangox.c: (_vte_pango_x_clip):
+       * src/vtexft.c: (_vte_xft_clip), (_vte_xft_draw_text):
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_match_hilite):
+       * src/vteseq.c: (vte_sequence_handler_ce),
+       (vte_sequence_handler_dc), (vte_sequence_handler_ec):
+               Tighten the _vte_invalidate_cells() to only those that
+               we potentially modify.
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               Remove the additional pixel inter-character spacing.
+               Compactness over clarity ;)
+
+2007-01-26  Chris Wilson  <chris chris-wilson co uk>
+
+       Apply a one pixel fudge to the Xft character position and width.
+       This greatly improves text appearance and hides the misrendering of
+       pseudo-bold characters.
+       cf bugs 317691, 333157.
+
+       * src/vte.c: (vte_terminal_paint):
+               Increase the cursor size to fit around the cell.
+       * src/vtexft.c: (_vte_xft_set_text_font), (_vte_xft_draw_text):
+               Fudge the Xft font positioning.
+
+2007-01-26  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 318307 – Cursor colour changes to foreground when unfocused
+
+       Whilst setting the colour, tweak the position of the rectangle, and
+       extended the invalidate region to account for the OBO nature of bold
+       font.
+
+       * src/vte.c: (_vte_invalidate_cells):
+               Include the padding to accomodate cell effects.
+       * src/vte.c: (vte_terminal_paint):
+               Use the cursor color for the rectangle when unfocused.
+
+2007-01-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_visibility_notify): Correctly handle
+       visibility events: set invalidated_all to FALSE, and invalidate_all
+       if fully unobscured.
+
+2007-01-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_visibility_notify): Make sure we redraw
+       after becoming unobscured.  There still is a bug that I've not found,
+       but after obscuring the widget and coming back, a first redraw
+       happens, but no update after that.
+
+2007-01-26  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_draw_area):
+               Occasionally we generate an exposed area which is computed
+               as 0x0 cells. Discard early, before we spend an infinity
+               drawing nothing.
+
+2007-01-26  Chris Wilson <chris chris-wilson co uk>
+
+       Janitorial work - near elimination of #ifdef VTE_DEBUG from within
+       functions, trimming a thousand lines of code.
+
+       We introduce a _vte_debug_print macro to cover the more common
+       occurrence of printing a message at a certain debug level.
+       And a _VTE_DEBUG_ON for a conditional code block.
+
+       src/debug.h     |   11 
+       src/iso2022.c   |  201 ++-------
+       src/keymap.c    |   41 -
+       src/matcher.c   |   24 -
+       src/pty.c       |  134 +-----
+       src/reaper.c    |   21 
+       src/ring.c      |   78 +--
+       src/table.c     |   11 
+       src/trie.c      |   19 
+       src/vte.c       | 1187 ++++++++++---------------------------------------
+       src/vteaccess.c |  198 +++------
+       src/vteapp.c    |   21 
+       src/vtebg.c     |   43 --
+       src/vteconv.c   |   60 +-
+       src/vteconv.h   |   12 
+       src/vtedraw.c   |    6 
+       src/vtefc.c     |    4 
+       src/vteft2.c    |    5 
+       src/vteglyph.c  |   27 -
+       src/vtepango.c  |   11 
+       src/vtepangox.c |    7 
+       src/vteregex.c  |    2 
+       src/vteseq.c    |  385 +++++-------------
+       src/vtexft.c    |   26 -
+       24 files changed, 789 insertions(+), 1745 deletions(-)
+
+       * src/debug.h:
+       * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
+       (_vte_iso2022_state_new), (_vte_iso2022_state_set_codeset),
+       (process_8_bit_sequence), (process_cdata), (process_control),
+       (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/matcher.c: (_vte_matcher_init), (_vte_matcher_create),
+       (_vte_matcher_destroy):
+       * src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
+       (_vte_pty_set_size), (_vte_pty_get_size), (_vte_pty_ptsname),
+       (_vte_pty_open_unix98), (_vte_pty_open_with_helper),
+       (_vte_pty_open):
+       * src/reaper.c: (vte_reaper_emit_signal),
+       (vte_reaper_child_watch_cb), (vte_reaper_init),
+       (vte_reaper_finalize):
+       * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
+       (_vte_ring_remove):
+       * src/table.c: (_vte_table_addi):
+       * src/trie.c: (char_class_string_extract), (_vte_trie_addx),
+       (_vte_trie_add):
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (_vte_invalidate_cell),
+       (_vte_invalidate_cursor_once),
+       (vte_terminal_emit_selection_changed), (vte_terminal_emit_commit),
+       (vte_terminal_emit_emulation_changed),
+       (vte_terminal_emit_encoding_changed),
+       (vte_terminal_emit_child_exited),
+       (_vte_terminal_emit_contents_changed),
+       (vte_terminal_emit_cursor_moved), (vte_terminal_emit_eof),
+       (vte_terminal_emit_char_size_changed),
+       (_vte_terminal_emit_status_line_changed),
+       (vte_terminal_emit_increase_font_size),
+       (vte_terminal_emit_decrease_font_size),
+       (_vte_terminal_emit_text_inserted),
+       (_vte_terminal_emit_text_deleted),
+       (vte_terminal_emit_text_modified),
+       (vte_terminal_emit_text_scrolled), (vte_terminal_deselect_all),
+       (vte_terminal_match_check_internal), (vte_terminal_match_check),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_maybe_scroll_to_bottom), (vte_terminal_set_encoding),
+       (_vte_terminal_set_pointer_visible), (vte_terminal_new),
+       (vte_terminal_generate_bold), (_vte_terminal_insert_char),
+       (vte_terminal_handle_sequence), (vte_terminal_catch_child_exited),
+       (vte_terminal_fork_command),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_process_incoming), (vte_terminal_io_read),
+       (vte_terminal_io_write), (vte_terminal_send),
+       (vte_terminal_im_commit), (vte_terminal_im_preedit_start),
+       (vte_terminal_im_preedit_end), (vte_terminal_im_preedit_changed),
+       (vte_terminal_configure_toplevel),
+       (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
+       (vte_terminal_key_press), (vte_terminal_paste_cb),
+       (vte_terminal_match_hilite_clear), (vte_terminal_match_hilite),
+       (vte_terminal_clear_cb), (vte_terminal_copy_cb),
+       (vte_terminal_copy), (vte_terminal_paste),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_set_font_full), (vte_terminal_set_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_emulation),
+       (vte_terminal_set_termcap), (vte_terminal_reset_rowdata),
+       (vte_terminal_fc_settings_changed), (vte_terminal_init),
+       (vte_terminal_size_request), (vte_terminal_size_allocate),
+       (vte_terminal_unrealize), (vte_terminal_finalize),
+       (vte_terminal_realize), (vte_terminal_draw_cells),
+       (_vte_terminal_map_pango_color), (vte_terminal_draw_area),
+       (vte_terminal_paint), (vte_terminal_expose), (vte_terminal_scroll),
+       (vte_terminal_class_init), (vte_terminal_copy_clipboard),
+       (vte_terminal_paste_clipboard), (vte_terminal_copy_primary),
+       (vte_terminal_paste_primary), (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_saturation),
+       (vte_terminal_set_background_tint_color),
+       (vte_terminal_set_background_transparent),
+       (vte_terminal_set_background_image),
+       (vte_terminal_set_background_image_file),
+       (vte_terminal_set_word_chars), (process_timeout),
+       (update_repeat_timeout), (update_timeout):
+       * src/vteaccess.c: (xy_from_offset), (emit_text_caret_moved),
+       (emit_text_changed_insert), (emit_text_changed_delete),
+       (vte_terminal_accessible_update_private_data_if_needed),
+       (vte_terminal_accessible_text_modified),
+       (vte_terminal_accessible_text_scrolled),
+       (vte_terminal_accessible_invalidate_cursor),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere),
+       (vte_terminal_accessible_get_run_attributes),
+       (vte_terminal_accessible_text_init),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_action_init),
+       (vte_terminal_accessible_factory_new):
+       * src/vteapp.c: (destroy_and_quit_eof), (destroy_and_quit_exited),
+       (take_xconsole_ownership), (main):
+       * src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_set_root_pixmap),
+       (_vte_bg_resize_pixbuf):
+       * src/vteconv.c: (_vte_conv_utf8_utf8), (_vte_conv_open),
+       (_vte_conv), (_vte_conv_cu), (_vte_conv_uu), (_vte_conv_uc):
+       * src/vteconv.h:
+       * src/vtedraw.c: (_vte_draw_new):
+       * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
+       * src/vteft2.c: (_vte_ft2_draw_text):
+       * src/vteglyph.c: (_vte_glyph_cache_free),
+       (_vte_glyph_cache_set_font_description):
+       * src/vtepango.c: (_vte_pango_set_text_font),
+       (_vte_pango_draw_text):
+       * src/vtepangox.c: (_vte_pango_x_set_text_font):
+       * src/vteregex.c: (_vte_regex_exec):
+       * src/vteseq.c: (vte_terminal_emit_deiconify_window),
+       (vte_terminal_emit_iconify_window),
+       (vte_terminal_emit_icon_title_changed),
+       (vte_terminal_emit_window_title_changed),
+       (vte_terminal_emit_raise_window), (vte_terminal_emit_lower_window),
+       (vte_terminal_emit_maximize_window),
+       (vte_terminal_emit_refresh_window),
+       (vte_terminal_emit_restore_window),
+       (vte_terminal_emit_move_window), (vte_terminal_emit_resize_window),
+       (vte_sequence_handler_set_title_internal),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_bt),
+       (vte_sequence_handler_application_keypad),
+       (vte_sequence_handler_normal_keypad),
+       (vte_sequence_handler_reset_mode), (vte_sequence_handler_decset),
+       (vte_sequence_handler_decreset),
+       (vte_sequence_handler_erase_in_display),
+       (vte_sequence_handler_erase_in_line),
+       (vte_sequence_handler_restore_mode),
+       (vte_sequence_handler_save_mode),
+       (vte_sequence_handler_window_manipulation):
+       * src/vtexft.c: (_vte_xft_set_text_font):
+
+2007-01-26  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 317449 – The cursor disappears when clicking on windows above gnome-terminal
+
+       Enter a command that causes partial obscuration of the terminal,
+       though it must cover the cursor. Close the new window, observe the
+       pointer disappears.
+
+       The issue is that we hide the pointer whilst typing and show it after
+       receiving a mouse movement. However in this case we steal the pointer
+       away from the terminal without any mouse events and the cursor remains
+       invisible.
+
+       * src/vte.c: (vte_terminal_focus_in):
+               Ensure the mouse pointer is visible on focus-in.
+
+2007-01-26  Chris Wilson <chris chris-wilson co uk>
+
+       Spend half an hour a day killing warnings...
+
+       * configure.in:
+               Remove -Wswitch-enum from MAYBE_WARN. I am that lazy.
+       * src/buffer.c:
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_ambiguous_width), (_vte_iso2022_map_get),
+       (_vte_iso2022_find_nextctl), (_vte_iso2022_sequence_length),
+       (_vte_iso2022_fragment_input), (process_8_bit_sequence),
+       (process_cdata), (_vte_iso2022_process_single), (process_control),
+       (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/table.c:
+       * src/trie.c: (char_class_none_extract),
+       (char_class_digit_extract), (char_class_multi_extract),
+       (char_class_any_extract), (unichar_snlen), (unichar_sncmp),
+       (char_class_string_extract), (_vte_trie_addx), (_vte_trie_add),
+       (_vte_trie_matchx), (_vte_trie_match), (_vte_trie_printx),
+       (_vte_trie_print), (convert_mbstowcs), (main):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_find_charcell),
+       (_vte_row_data_find_charcell), (vte_terminal_emit_commit),
+       (vte_terminal_match_clear_all), (vte_terminal_match_remove),
+       (vte_terminal_match_add), (vte_terminal_match_set_cursor),
+       (vte_terminal_match_check_internal), (vte_terminal_set_colors),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_is_word_char), (vte_terminal_finalize),
+       (vte_terminal_realize), (_vte_terminal_map_pango_color),
+       (_vte_terminal_apply_pango_attr),
+       (_vte_terminal_translate_pango_cells),
+       (vte_terminal_set_scrollback_lines):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Fixup compiler warnings, mostly of the type mixing signed and
+               unsigned compares and pointers.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (mark_input_source_invalid),
+       (_vte_terminal_connect_pty_read), (mark_output_source_invalid),
+       (_vte_terminal_connect_pty_write):
+               Use the GDestroyNotify to mark the source as invalid.
+       * src/vte.c: (vte_terminal_ensure_font):
+               Protect ensure fonts against the VteDraw being destroyed.
+       * src/vte.c: (vte_terminal_realize):
+               Reorder code to setup the style before the fonts.
+       * src/vte.c: (vte_terminal_class_init):
+               The ->show() handler was redundant.
+
+2007-01-25  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_terminal_set_default_attributes),
+       (_vte_invalidate_cells), (_vte_invalidate_all),
+       (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
+       (vte_terminal_visibility_notify), (vte_terminal_handle_scroll):
+       Replace most of checks for terminal->pvt->visibility_state ==
+       GDK_VISIBILITY_FULLY_OBSCURED by terminal->pvt->invalidated_all, and
+       adapt.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400759 – update problem with vte trunk
+
+       Otherwise known as the I can't count bug.
+
+       The number of rows and columns to paint were not properly taking
+       account of the discrete nature of the cells ie although the floor(x)
+       moved the start to the left by one, the extra cell was not being added
+       to the width.
+
+       Also since the howmany() macro is pulled from <sys/param.h>, it can
+       not be guarranteed to exist on all platforms. So in that case, provide
+       a local copy.
+
+       * src/vte.c: (vte_terminal_draw_area):
+               Calculate the width as the distance between the explicity
+               calculated start and end cells.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400671 – crash in Terminal: detaching of tabs
+
+       The fontdirty flag needed to be set on unrealize to ensure the fonts
+       get set on the VteDraw should the terminal be realized again (e.g
+       drag'n'dropping).
+
+       * src/vte.c: (vte_terminal_unrealize):
+               Set the fontdirty flag to TRUE.
+       * src/vtexft.c: (_vte_xft_set_text_font),
+       (_vte_xft_get_char_width), (_vte_xft_draw_text),
+       (_vte_xft_draw_char):
+               Add safe guards to avoid dereferencing a NULL font as it
+               is possible for _vte_xft_font_open() to fail.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 399137 – UTF-8 problem in VteAccess
+
+       Improve the UTF-8 string handling within vteaccess.c
+       A long and fraught history to this apparently simple change.
+       Many thanks to Joanmarie Diggs and Rich Burridge for testing the
+       patches and ensuring they caused no regressions in the ally interface.
+
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete):
+               Use g_utf8_pointer_to_offset() rather than open coding.
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Convert the caret into a byte offset before performing the
+               ASCII character lookup.
+               Iterate backwards over the string using a g_utf8_prev_char,
+               and g_utf8_get_char.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400493 – Mouse selection seriously broken
+
+       The rendering of non-text attributes, e.g highlight, backgrounds,
+       underlines, was broken by the change to multi-row run of glyphs. This
+       was most apparent when selecting regions with a mouse.
+
+       * src/vte.c: (_vte_invalidate_cursor_once),
+       (vte_terminal_extend_selection),
+       (vte_terminal_draw_rows), (vte_terminal_draw_area),
+       (vte_terminal_paint):
+               Some janitorial work (a memleak, whitespace, improving debug
+               messages, comments).
+       * src/vte.c: (vte_terminal_draw_cells):
+               Loop over cells and draw attributes for groups of cells on
+               each row.
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED
+
+       * src/vte.c: (vte_terminal_visibility_notify):
+               Only force an _vte_invalidate_all if we can trivially detect
+               that we have switch from fully obscured to fully unobscured.
+               Otherwise, we will just handle the GDK expose in the normal
+               manner.
+       * src/vte.c: (vte_terminal_expose):
+               Check the event area to see if we can use _vte_invalidate_all,
+               has a slight benefit of discarding further exposed area
+               processing.
+               
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       GDK tries to coalesce multiple expose events into a single event.
+       This is passed to the application as a large region containing
+       multiple rectangles. The unfortunate effect of this is having
+       broken the invalidated region into 2 small components for vim,
+       the expose event was still operating on a single region covering
+       both. The reason the effect was invisible to the eye is due to the
+       double buffer - GDK generated a backing pixmap for the exposed event
+       and only copied from the pixmap to the window exactly the pixels
+       exposed. So we regenerated draw commands for the entire area, and
+       only saved on the later blit.
+
+       The improvement to this is only issue draw commands for the individual
+       rectangles rather than the region as a whole.
+
+       * src/vte.c: (vte_terminal_draw_area), (vte_terminal_paint),
+       (vte_terminal_expose):
+               Paint the exposed rectangles not the event clipbox!
+
+2007-01-25  Chris Wilson <chris chris-wilson co uk>
+
+       Print out the painted area for VTE_DEBUG_UPDATES.
+
+       * src/vte.c: (vte_terminal_paint):
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       cf Bug 400072 – Handling of ; in control sequences
+
+       Moral of the story: wait until the morning.
+       Revert r1512, the mistaken attempt at parsing '\e[;30m'.
+
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_match):
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       cf Bug 399617 – Avoid memory allocations during an expose event.
+
+       Currently we cannot generate long glyph runs due to the text
+       painting being broken up into single rows and setting a low
+       max run cap. The benefit of longer runs is the backends can
+       do more caching within a run and potentially generate fewer
+       render calls and/or less network traffic.
+
+       In the simple test case, this increased the performance of a
+       remote hexdump by 10%.
+
+       * src/vte.c: (vte_terminal_draw_rows), (vte_terminal_paint):
+               Scan entired exposed area for glyph runs.
+       * src/vtedraw.h:
+               Increase VTE_DRAW_MAX_LENGTH
+       * src/vtexft.c: (_vte_xft_draw_text):
+               Create GlyphSpecs rather than CharFontSpecs, saves a 
+               conversion and potential malloc inside libXft, and our
+               own malloc.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 147495 – screen flicker when opening new terminal windows
+
+       Last in a series of work to reduce extraneous redraws. I no longer
+       see the flicker when opening a white terminal.
+
+       * src/vte.c: (_vte_terminal_scroll_region):
+               Detect when we can just invalidate all.
+       * src/vte.c: (_vte_terminal_fork_basic):
+               Don't force an unnecessary redraw.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_set_emulation):
+               Add a missing '\n' to the debug printerr.
+       * src/vte.c: (vte_terminal_init):
+               Initialize the row count to VTE_MIN_SCROLLBACK (was to 0
+               first and then later within the same function to
+               VTE_MIN_SCROLLBACK).
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 334755 – Incomplete information from vte_terminal_get_font
+
+       In many situations the font_desc stored in the terminal is incomplete.
+       _vte_fc_transcribe_from_pango_font_description() automagically fills
+       in default values for the backends but this is hidden from the
+       application. By filling in default values up front from the widget
+       font description control is returned to the application and theme
+       designers.
+
+       Patch by Pedro de Medeiros.
+       Also cf bug 335269.
+
+       * src/vte.c: (vte_terminal_set_font_full):
+               Pull default font description from widget.
+       * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
+               Remove default values.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+       actually revealed a faux-pas in the conversion of the public
+       interfaces to GPid - that it broke the ABI.
+
+       However, the intention is to remove the exposed pid_t, cf bug 400333.
+
+       * python/vte.defs:
+       * python/vte.override:
+       * src/pty.c: (_vte_pty_open):
+       * src/pty.h:
+       * src/vte.c: (_vte_terminal_fork_basic), (vte_terminal_forkpty):
+       * src/vte.h:
+               Revert the exposed GPids back to pid_t.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       ==25123== Invalid read of size 1
+       ==25123==    at 0x4055992: vte_terminal_accessible_text_modified (vteaccess.c:497)
+       ==25123==    by 0x46A1248: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
+       ==25123==    by 0x4693EAA: g_closure_invoke (gclosure.c:490)
+       ==25123==    by 0x46A4972: signal_emit_unlocked_R (gsignal.c:2440)
+       ==25123==    by 0x46A5E96: g_signal_emit_valist (gsignal.c:2199)
+       ==25123==    by 0x46A85ED: g_signal_emit_by_name (gsignal.c:2267)
+       ==25123==    by 0x403E9E2: _vte_terminal_emit_text_inserted (vte.c:863)
+       ==25123==    by 0x40517EF: vte_terminal_process_incoming (vte.c:3032)
+       ==25123==    by 0x40522B5: update_repeat_timeout (vte.c:11332)
+
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Check that the caret is inside the old string before
+               accessing.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       Revert changes in conjunction with bug 399137 back to r1487,
+       which contains Rich Burridge's fix for bug 397724.
+
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete),
+       (vte_terminal_accessible_text_modified):
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Valgrind pointed out a couple of places where we tried to
+               access before the start of the string.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+
+       Patch by Damien Carbery.
+
+       * src/pty.h:
+               Update prototype to match new definition.
+
+2007-01-24  Chris Wilson <chris chris-wilson co uk>
+
+       <mariano> hm, vte is not matching «ESC [ ; 7 m» :/
+
+       * src/table.c: (_vte_table_addi), (_vte_table_matchi),
+       (_vte_table_match):
+               s/GList/GSList/
+               g_slist_append -> g_slist_reverse(g_slist_prepend)
+               And finally add the subtable to handle the leading ';'
+               in the variable length parameters.
+
+2007-01-23  Chris Wilson <chris chris-wilson co uk>
+
+       A couple of minor buggets.
+
+       * src/iso2022.c: (_vte_iso2022_state_set_codeset):
+               Use g_intern_string() instead of from_quark(to_quark(str))
+       * src/vtepango.c: (_vte_pango_create), (_vte_pango_destroy),
+       (_vte_pango_start), (_vte_pango_end), (_vte_pango_set_text_font):
+               Use the widget pango context (we're guarranteed to have a
+               screen by this point) and don't unref it!
+               Inspired by Pedro de Medeiros in Bug 335269.
+
+2007-01-23  Chris Wilson <chris chris-wilson co uk>
+
+       Regression on Bug 123591:
+               mkdir /tmp/aa; cd /tmp/aa; bash; cd ..; rmdir aa
+               Open a new tab in g-t -> Failure.       
+
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Check the error return from g_spawn and try again with the
+               pwd if it reports that the child could not change directory.
+
+2007-01-23  Chris Wilson <chris chris-wilson co uk>
+
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Add all g_spawn parameters to VTE_DEBUG_MISC output.
+
+2007-01-22  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.2.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.2.
+
+       * src/Makefile.am: Bumped libtool version to 10:9:1.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 399137 - continuation.
+
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               Classic bug:
+                       clen = cp - old
+               rather than the more correct
+                       clen = cp - current
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vteapp.c: (char_size_changed), (char_size_realized), (main):
+               Don't try to perform gdk operations on unrealized windows.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Print out the argument vector for VTE_DEBUG_MISC.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       * src/pty.c: (_vte_pty_run_on_pty):
+               Protect against g_strv_length(NULL)
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 399137 - continuation.
+
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               After walking back along the UTF-8 string, remember to update
+               the string lengths that are used to detect insertions and
+               deletions!
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       If the caret is at the end of the buffer, then it set past the
+       end of the offset array - do not use this as a lookup!
+
+       * src/vteaccess.c: (vte_terminal_accessible_text_modified):
+               If the caret points to past the last character, set the
+               offset to the string's NUL terminator.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       * configure.in:
+               Earlier configure.in update introduced a trailing ']', pair
+               it with its '['
+               
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 132316 – terminal widget's context menu posting isn't exposed as an AtkAction
+
+       Original patch by <padraig obriain sun com>
+
+       * src/vteaccess.c: (vte_terminal_accessible_free_private_data),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_do_action),
+       (vte_terminal_accessible_get_n_actions),
+       (vte_terminal_accessible_action_get_description),
+       (vte_terminal_accessible_action_get_name),
+       (vte_terminal_accessible_action_get_keybinding),
+       (vte_terminal_accessible_action_set_description),
+       (vte_terminal_accessible_action_init),
+       (vte_terminal_accessible_get_type):
+               Remove grab_focus and defer to the parent's implementation.
+               Add an AtkAction iface.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 156161 – AccessibleText_getTextAtOffset returns wrong values in gnome-terminal
+
+       The code for ATK_TEXT_BOUNDARY_WORD_START and
+       ATK_TEXT_BOUNDARY_WORD_END is the same.
+
+       Patch by <padraig obriain sun com>
+
+       * src/vteaccess.c: (vte_terminal_accessible_get_text_somewhere):
+               Actually provide an implementation for
+               ATK_TEXT_BOUNDARY_WORD_END.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 399137 – UTF-8 problem in VteAccess
+
+       * src/vteaccess.c: (emit_text_changed_insert),
+       (emit_text_changed_delete):
+               use g_utf8_pointer_to_offset() instead of open coding
+       (vte_terminal_accessible_update_private_data_if_needed):
+               add the number of UTF-8 characters to the debug output.
+       (vte_terminal_accessible_text_modified):
+               iterate backwards over the UTF-8 string using
+               g_utf8_prev_char() and convert the caret into a byte offset
+               before it as such.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 123591 – vte_terminal_fork_command succeeds even when it does not
+
+       * python/vte.defs:
+       * python/vte.override:
+       * src/reaper.c: (vte_reaper_child_watch_cb):
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_catch_child_exited),
+       (_vte_terminal_fork_basic), (vte_terminal_forkpty):
+       * src/vte.h:
+       * src/vteapp.c:
+               s/pid_t/GPid/ portable variant, no API/ABI implications
+       * src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
+       (_vte_pty_fork_on_pty_name), (_vte_pty_fork_on_pty_fd),
+       (_vte_pty_open_unix98), (_vte_pty_pipe_open), (n_read), (n_write),
+       (_vte_pty_start_helper), (_vte_pty_open_with_helper),
+       (_vte_pty_open), (main):
+               Replace custom fork() and pipe based syncrohonisation scheme
+               with g_spawn_async_with_pipes() as it actually handles all
+               failure modes correctly, and gives us overtures of portability.
+               
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Hack'n'slash my way through doing a bit of weeding.
+
+       Fixed:
+       - Bug 345514 – -no-undefined doesn't work with latest libtool
+       - Bug 162003 – vte configure.in X checking can fail
+                    – though this may cause other regressions!
+       - Bug 314669 – Please specialize AC_PATH_XTRA
+
+       * configure.in:
+               Export LIBTOOL_EXPORT_OPTIONS for -no-undefined on windos.
+               Add to rather than override X_CFLAGS, X_LIBS
+               AC_PATH_XTRA - Find X11 using XFlush() rather than XtMalloc().
+               Print configuration details.
+       * src/Makefile.am:
+               Conditional compilation of backends.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 389538 – crash in Terminal: nothing
+
+       * src/vteaccess.c: (vte_terminal_accessible_get_text):
+               Guard against negative length strings.
+
+2007-01-22  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 161479 – Scroll wheel generates Release events
+
+        vte sends release events on scroll but xterm doesn't which breaks
+        mc among others.
+
+        Patch by Benedikt Meurer.
+
+       * src/vte.c: (vte_terminal_scroll):
+               Remove the offending release event.
+
+2007-01-20  Chris Wilson <chris chris-wilson co uk>
+
+       <kmaraas> ickle: sparse complains about dubious 1 bit bitfields
+               if you use gboolean instead of guint
+       <kmaraas> so s/gboolean/guint at line 166 and 174
+       <mariano> unless that changes the API, of course...
+       <kmaraas> it doesn't
+       <mariano> gboolean a:1 is not very correct anyways
+       <kmaraas> ickle: we've done the same change in other modules
+       <ickle> if I do it quick, behdad might not even notice ;)
+
+       * src/vte.h:
+               Convert signed single bit field to unsigned. The code
+               was setting it to 1 anyhow (and not -1 as the type indicated).
+
+2007-01-20  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398602 – Build Failure
+
+       * src/vte.c: (vte_terminal_expose):
+               Fixup typo. [Grrr. Must get git-svn back into sync]
+
+2006-11-19 Rich Burridge <rich burridge sun com>
+
+        * src/vteaccess.c:
+        Fixed bug #397724 - Orca incorrect echo's certain input in 
+        gnome-terminal when key echo is set to off (on Ubuntu Feisty).
+
+2007-01-20  Chris Wilson <chris chris-wilson co uk>
+       
+       * src/vte.c: (vte_terminal_expose):
+               Also if the entire terminal is invalidated,
+               do not add more GTK+ exposes to it.
+
+2007-01-20  Chris Wilson <chris chris-wilson co uk>
+
+       Track when we have invalidated the entire terminal and skip adding
+       new regions when possible.
+
+       * src/vte-private.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_size_allocate),
+       (reset_update_regions):
+
+2007-01-20  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398244 – Gnome-terminal opens a huge sized window
+
+       * src/vte.c: (vte_terminal_ensure_font),
+       (vte_terminal_set_font_full), (vte_terminal_size_request),
+       (vte_terminal_realize), (vte_terminal_get_char_width),
+       (vte_terminal_get_char_height), (vte_terminal_get_char_descent),
+       (vte_terminal_get_char_ascent):
+               Ensure the font metrics are calculated before use.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_process_incoming):
+               Do not invalidate the old cursor position if it was not
+               visible.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (process_timeout):
+               Make sure ->process_timeout is set to VTE_INVALID_SOURCE on
+               all paths that remove the timeout.
+
+2007-01-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Add <> to mark boundaries of process_timeout().
+
+       * src/vte.c: (vte_terminal_class_init), (process_timeout):
+
+2007-01-19  Chris Wilson  <chris chris-wilson co uk>
+
+       Add {},[] to mark boundaries of update_timeout() and notice that
+       the display limited update_timeout was not dying.
+
+       * src/vte.c: (vte_terminal_class_init), (update_repeat_timeout),
+       (update_timeout):
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_realize), (remove_process_timeout):
+               Small cleanup:
+                - protect remove_process_timeout against an invalid source.
+                - move static prototypes into common block.
+                - gdk_window_show() is done in map not realize.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_process_incoming):
+               Introduce a bit of slack in the bbox check to allow
+               for a small of amount of cursor motion e.g. due to line
+               scrolling. This turns the long sequence of
+               '(?!?!??? ... ????!)'
+               during a hexdump into the better behaved 
+               '.(?!?!?!??!)-+=.(?!?!??!)-+=........'. Although it is
+               puzzling why we now how have a block of IO and then two quick
+               display upates...
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (process_timeout), (update_repeat_timeout),
+       (update_timeout):
+               Repeat _vte_terminal_process_incoming until we have drained
+               the incoming buffers or we can handle no more. Fixes a
+               problem where the display wouldn't update if we hadn't
+               processed enough data (e.g. on startup, displaying the first
+               prompt). This bug corresponds with the sequence
+               '*-+=..()?!(?!?!?!)-+=' below, which now reads
+               '*-+=..()(?!?!?!)-+='
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_invalidate_cursor_once):
+               "%ld" for cursor indices.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_invalidate_cells),
+       (_vte_invalidate_cursor_once):
+               Cursor indices are long.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cell):
+               Cursor indices are long.
+       * src/vte.c: (_vte_terminal_expose):
+               Prepend the GTK+ generated expose if we already have an
+               display update pending.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       Add a new debug flag to visualize the work flow.
+       VTE_DEBUG_FLAGS=work generates output like:
+       Debugging work flow (top input to bottom output):
+         .  _vte_terminal_process_incoming
+         (  start _vte_terminal_process_incoming
+         ?  _vte_invalidate_cells (call)
+         !  _vte_invalidate_cells (dirty)
+         *  _vte_invalidate_all
+         )  end _vte_terminal_process_incoming
+         -  gdk_window_process_all_updates
+         +  vte_terminal_expose
+         =  vte_terminal_paint
+       
*?!**+=*-+=..()?!(?!?!?!)-+=?!-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.().(?!?!?!)-+=.().(?!?!?!)-+=.().().(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!)-+=.............................................................................................................................................................................................................................................................................(?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
 
??????????????????????????????????????????????????????????????????????????????????????????????????????????????!??!)-+=.......................................................................
+
+       Which tells me I have two bugs to track:
+               1. the initial '..()' is a missing invalidate.
+               2. '(?!?!????????????????????!??!)' is not very efficient.
+
+       * src/debug.c: (_vte_debug_parse_string):
+       * src/debug.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (vte_terminal_process_incoming),
+       (vte_terminal_io_read), (vte_terminal_paint),
+       (vte_terminal_expose), (vte_terminal_class_init):
+               Add VTE_DEBUG_WORK
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398150 – cursor leaves trail behind in vim
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_invalidate_cell),
+       (vte_terminal_process_incoming):
+       * src/vteseq.c: (vte_sequence_handler_decset_internal):
+               Invalidate the old cursor position if we detect the cursor
+               moved during the sequence or if the cursor changed state.
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       * src/Makefile.am:
+               Missing $(X_CFLAGS)
+
+2007-01-19  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398243 – Crash
+
+       * src/vtebg.c: (vte_bg_cache_prune_int):
+               Use the return from g_list_delete_link to maintain the list
+               head.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (_vte_invalidate_cells):
+               Check that the start of the invalid region is on screen.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398116 – lags behind when widget not visible
+
+       * src/vte.c: (vte_terminal_handle_scroll):
+               During the spring clean, I converted a few GTK_WIDGET_REALIZED()
+               checks to GTK_WIDGET_DRAWABLE()+visibility check.
+               Unfortunately, it broke keeping the scroll delta in sync with
+               the insert delta. Sync the pair, then perform the check before
+               making updates on the visible area.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       Bug 398083 – background not painted correctly when starting up
+
+       * src/vte.c: (_vte_invalidate_all):
+               Compute drawable area in window co-ordinates and not widget
+               co-ordinates.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_expose):
+               Small bit of logic inversion that would have tried to paint
+               on unmapped and invisible widgets.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+       And the corresponding overrides. [The downsides of losing track of
+       which machine you are working on.]
+
+       * python/vte.override:
+               Add (get_text_include_trailing_spaces)
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       Add missing export of vte_terminal_get_text_include_trailing_spaces,
+       needed for building a simple testcase for Bug 397724.
+       vte.defs needs a bit of love...
+
+       * python/vte.defs:
+               Add (get_text_include_trailing_spaces)
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vterdb.c: (_vte_rdb_search), (_vte_rdb_boolean):
+               Fix a couple of compiler warnings.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       * src/vte.c: (vte_terminal_process_incoming):
+               Delete some dead code.
+
+2007-01-18  Chris Wilson <chris chris-wilson co uk>
+
+       * configure.in:
+               Restore --enable-debugging. 
+
+2007-01-18  Chris Wilson  <chris chris-wilson co uk>
+
+       Copy Behdad's MAYBE_WARN comprehensive set of warnings from Cairo,
+       and fixup the immediate compilation failures.
+
+       * configure.in:
+               Iterate over a list of warnings and check that they are valid
+               for the compiler.
+               
+       * src/debug.c: (_vte_debug_on):
+               Kill fflush() [redundant with g_printerr].
+
+2007-01-18  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in: Don't call AC_CANONICAL_HOST.  Libtool calls it
+       already.
+
+       * src/Makefile.am: Don't build extra, test, programs by default.
+       Speeds build up.
+
+2007-01-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/ring.c (_vte_ring_insert_preserve):
+       * src/vte.c (vte_terminal_paint):
+       Fix loop-optimization warnings.
+
+2007-01-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/ssfe.c (cleanupexit), (barf):
+       * src/vtebg.c (vte_bg_cache_prune_int):
+       * src/vtetc.c (main):
+       Fix more warnings.
+
+2007-01-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/table.c (main):
+       * src/trie.c (_vte_trie_addx), (main):
+       * src/utf8echo.c (main):
+       Fix int vs long int mismatches in printf args.
+
+2007-01-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/iso2022.c (_vte_iso2022_find_nextctl):
+       * src/reaper.c (vte_reaper_finalize):
+       * src/vte.c (_vte_terminal_insert_char), (vte_terminal_key_press),
+       (vte_terminal_init), (vte_terminal_size_allocate):
+       * src/vteapp.c (main):
+       * src/vtedraw.c (_vte_draw_init_default):
+       * src/vteglyph.c (_vte_glyph_cache_free):
+       * src/vtergb.c (_vte_rgb_copy):
+       * src/vtexft.c (_vte_xft_font_for_char):
+       Remove unused variables.
+
+2007-01-18  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 161342 revisited. Reset the box to +-inf and not the current
+       cursor otherwise you just reproduce the slow behaviour (an overly
+       large invalidation area).
+
+       * src/vte.c: (vte_terminal_process_incoming):
+               Reset bbox to +-inf.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       Second breakage: VTE_INVALID_SOURCE !=0 and calling
+       vte_terminal_set_scrollback_lines with lines == ->scrollback_lines
+       is not a nop.
+
+       * src/vte.c: (vte_terminal_background_update),
+       (vte_terminal_queue_background_update):
+               VTE_INVALID_SOURCE != 0
+       (vte_terminal_set_scrollback_lines):
+               reset the rowdata everytime.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 397414 - port vteapp to GOption
+
+       * src/vteapp.c: (main):
+               Translation of getopt switch to GOptionEntry[].
+               Missing help for --geometry.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       First breakage spotted: the realized flag is set too late in
+       the realize handler. Note to self: not everybody uses a black
+       background.
+
+       * src/vte.c: (vte_terminal_realize):
+               Restore GTK_WIDGET_SET_FLAGS(REALIZED)
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       Bug 395373 - Allow the user to specify backend priorities.
+
+       * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
+       (_vte_draw_new):
+               Scan $ENV{VTE_BACKEND} for the user's preferred backend
+               and failover to the first working backend.
+               Discard checking VTE_USE_*
+
+       * src/vtedraw.h:
+       * src/vteft2.c:
+       * src/vteft2.h:
+       * src/vtegl.c:
+       * src/vtegl.h:
+       * src/vtepango.c:
+       * src/vtepango.h:
+       * src/vtepangox.c:
+       * src/vtepangox.h:
+       * src/vteskel.c: (_vte_skel_check), (_vte_skel_create),
+       (_vte_skel_destroy), (_vte_skel_start):
+       * src/vteskel.h:
+       * src/vtexft.c:
+       * src/vtexft.h:
+               Remove the environment variable field, drop the "Vte" prefix
+               from the backend names and make the exported structure const.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous):
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_set_default_attributes),
+       (vte_terminal_set_default_tabstops), (vte_terminal_set_encoding),
+       (vte_terminal_set_opacity), (vte_terminal_set_default_colors),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_feed_child_using_modes),
+       (vte_terminal_hierarchy_changed),
+       (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_set_font),
+       (vte_terminal_set_font_from_string), (vte_terminal_set_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scroll_adjustment),
+       (vte_terminal_set_emulation), (vte_terminal_set_termcap),
+       (vte_terminal_init), (vte_terminal_size_allocate),
+       (vte_terminal_unrealize), (vte_terminal_finalize),
+       (vte_terminal_realize), (vte_terminal_determine_colors),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_transparent),
+       (vte_terminal_set_cursor_blinks),
+       (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
+       (vte_terminal_set_pty):
+       * src/vteseq.c: (vte_sequence_handler_st),
+       (vte_sequence_handler_vb),
+       (vte_sequence_handler_device_status_report),
+       (vte_sequence_handler_dec_device_status_report),
+       (vte_sequence_handler_window_manipulation):
+               Janitorial work to improve code readability and small
+               micro-optimisations, such as use the length returned by
+               g_snprintf rather then calling strlen on the result or just
+               using a constant string.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/ring.h:
+               Make the debug checks conditional on VTE_DEBUG.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/matcher.c: (_vte_matcher_add), (_vte_matcher_create),
+       (_vte_matcher_destroy), (_vte_matcher_new), (_vte_matcher_match),
+       (_vte_matcher_print):
+       * src/matcher.h:
+       * src/table.c: (_vte_table_new):
+       * src/table.h:
+       * src/trie.c: (_vte_trie_new):
+       * src/trie.h:
+               _vte_match_match() is called extremely frequently, and the
+               switch shows up on the profiles. Replace the switch with a
+               function pointer obtained by introducing function tables for
+               the matcher implementations.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_terminal_set_font_full), (vte_terminal_realize):
+               Don't load a font until the terminal is realized.
+               Saves decoding 2 or 3 fonts before g-t is mapped.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vteseq.c: (vte_g_array_fill):
+               Micro-optimise the loop.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vteft2.c: (_vte_ft2_create), (_vte_ft2_start),
+       (_vte_ft2_end), (update_bbox), (_vte_ft2_set_text_font),
+       (_vte_ft2_draw_text):
+       * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_resize),
+       (_vte_rgb_draw_color_rgb), (_vte_rgb_copy):
+       * src/vtergb.h:
+               Reuse converted glyphs within a run.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vteconv.c: (_vte_conv_utf8_strlen), (_vte_conv):
+               Micro-optimise the loops.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vteglyph.c: (_vte_glyph_free), (_vte_cached_glyph_free),
+       (_vte_glyph_cache_new), (_vte_glyph_cache_free),
+       (_vte_glyph_cache_set_font_description),
+       (_vte_glyph_cache_has_char), (_vte_glyph_remap_char),
+       (_vte_glyph_get_uncached), (_vte_glyph_get), (_vte_glyph_draw):
+       * src/vteglyph.h:
+               Avoid the double glyph lookup in _vte_glyph_get and
+               replace the tree with a hash.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/iso2022.c: (_vte_iso2022_state_new),
+       (_vte_iso2022_state_free), (_vte_iso2022_state_set_codeset):
+       * src/trie.c: (_vte_trie_add), (convert_mbstowcs):
+       * src/utf8echo.c: (main):
+       * src/vte.c: (vte_terminal_set_encoding), (vte_terminal_send),
+       (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_set_word_chars):
+       * src/vteconv.c: (_vte_conv_open), (_vte_conv_close), (_vte_conv):
+       * src/vteconv.h:
+       * src/vteseq.c: (vte_sequence_handler_set_title_internal):
+               s/(VteConv)-1/VTE_INVALID_CONV/
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vte.c: (_vte_new_row_data), (_vte_new_row_data_sized),
+       (_vte_terminal_find_row_data), (_vte_row_data_find_charcell),
+       (vte_line_is_wrappable), (vte_terminal_extend_selection),
+       (vte_terminal_draw_row):
+               Refactor vte_find_row_data to simplify and improve
+               some logic.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vte.c: (vte_g_array_fill), (vte_terminal_emit_commit),
+       (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
+       (_vte_terminal_fork_basic), (vte_terminal_process_incoming),
+       (vte_terminal_key_press), (vte_terminal_visibility_notify),
+       (vte_terminal_apply_metrics), (vte_terminal_paint),
+       (vte_terminal_expose):
+               Callgrind driven rewrite of critical loops.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vte-private.h:
+       * src/vte.c: (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_write), (vte_terminal_io_read),
+       (vte_terminal_feed), (vte_terminal_feed_child_binary),
+       (vte_terminal_init), (vte_terminal_unrealize),
+       (add_process_timeout), (add_update_timeout),
+       (remove_process_timeout), (vte_terminal_stop_processing),
+       (vte_terminal_is_processing), (vte_terminal_start_processing),
+       (process_timeout), (update_repeat_timeout), (update_timeout):
+               The rate-limiting step is the display update - we do not need
+               to process input faster than we are displaying it. So use the
+               update display timeout to process new input (and dirty some
+               more pixels).
+
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/interpret.c: (main):
+       * src/iso2022.c: (_vte_iso2022_fragment_input),
+       (_vte_iso2022_process), (main):
+       * src/vte.c: (vte_terminal_match_contents_refresh),
+       (vte_terminal_process_incoming), (vte_terminal_init),
+       (vte_terminal_set_word_chars):
+       * src/vteaccess.c:
+       (vte_terminal_accessible_update_private_data_if_needed):
+       * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
+       * src/vtefc.h:
+       * src/vteglyph.c: (_vte_glyph_cache_new), (_vte_glyph_cache_free),
+       (_vte_glyph_cache_set_font_description):
+       * src/vteglyph.h:
+       * src/vteregex.c: (_vte_regex_sort_matches):
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char):
+               s/g_array_new(TRUE, TRUE/g_array_new(FALSE, FALSE/
+               All uses of GArray respect their lengths and do not
+               zero-termination or untouched members to be cleared.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/iso2022.c: (_vte_iso2022_state_free):
+       * src/matcher.c: (_vte_matcher_free_params_array):
+       * src/ring.c: (_vte_ring_free):
+       * src/table.c: (_vte_table_free):
+       * src/trie.c: (_vte_trie_match):
+       * src/vte.c: (_vte_terminal_match_contents_clear),
+       (_vte_terminal_fork_basic),
+       (vte_terminal_get_text_range_maybe_wrapped), (vte_terminal_copy),
+       (vte_terminal_finalize), (vte_terminal_draw_cells_with_attributes):
+       * src/vteaccess.c: (vte_terminal_accessible_free_private_data):
+       * src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_cache_item_free):
+       * src/vteconv.c: (_vte_conv_close):
+       * src/vtedraw.c: (_vte_draw_free):
+       * src/vteft2.c: (_vte_ft2_destroy):
+       * src/vtegl.c: (_vte_gl_destroy):
+       * src/vteglyph.c: (_vte_glyph_cache_free):
+       * src/vtepango.c: (_vte_pango_destroy):
+       * src/vtepangox.c: (_vte_pango_x_destroy):
+       * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_free):
+       * src/vteseq.c: (vte_sequence_handler_se),
+       (vte_sequence_handler_so):
+       * src/vteskel.c: (_vte_skel_destroy):
+       * src/vtexft.c: (_vte_xft_font_close), (_vte_xft_destroy):
+               Do not zero memory in destructors, as glib will zero all
+               freed memory if G_DEBUG=gc-friendly.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/reaper.c: (vte_reaper_add_child), (vte_reaper_init),
+       (vte_reaper_constructor), (vte_reaper_finalize),
+       (vte_reaper_class_init), (vte_reaper_get), (main):
+       * src/vte.c: (G_DEFINE_TYPE_WITH_CODE), (_vte_terminal_fork_basic),
+       (vte_terminal_key_press), (vte_terminal_init), (vte_terminal_show),
+       (vte_terminal_finalize), (vte_terminal_get_accessible),
+       (vte_terminal_class_init):
+       * src/vteaccess.c: (vte_terminal_initialize),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_class_init),
+       (vte_terminal_accessible_get_type),
+       (vte_terminal_accessible_factory_init),
+       (vte_terminal_accessible_factory_new):
+       * src/vtebg.c: (vte_bg_native_new), (vte_bg_finalize),
+       (vte_bg_class_init), (vte_bg_init), (vte_bg_get_for_screen),
+       (vte_bg_cache_item_free), (vte_bg_cache_prune_int),
+       (_vte_bg_resize_pixbuf), (vte_bg_set_root_pixmap),
+       (vte_bg_cache_add), (vte_bg_cache_search), (vte_bg_get_pixmap),
+       (vte_bg_get_pixbuf):
+               Use GObject boiler-plate code (G_DEFINE_TYPE),
+               as opposed to open coding.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/vte-private.h:
+       * src/vte.c: (vte_free_row_data), (vte_g_array_fill),
+       (vte_terminal_find_charcell), (vte_terminal_preedit_width),
+       (vte_terminal_preedit_length), (_vte_invalidate_cursor_once),
+       (vte_invalidate_cursor_periodic), (vte_terminal_deselect_all),
+       (vte_terminal_set_default_tabstops),
+       (vte_terminal_match_contents_refresh), (vte_terminal_cursor_new),
+       (vte_terminal_match_check_internal),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (vte_terminal_scroll_pages), (vte_terminal_maybe_scroll_to_top),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (_vte_terminal_set_pointer_visible), (vte_terminal_new),
+       (vte_terminal_set_color_internal), (vte_terminal_set_color_bold),
+       (vte_terminal_set_color_dim), (vte_terminal_set_color_foreground),
+       (vte_terminal_set_color_background),
+       (vte_terminal_set_color_cursor),
+       (vte_terminal_set_color_highlight), (vte_terminal_handle_sequence),
+       (vte_terminal_catch_child_exited),
+       (_vte_terminal_connect_pty_read),
+       (_vte_terminal_connect_pty_write), (_vte_terminal_fork_basic),
+       (vte_terminal_eof), (vte_terminal_im_reset),
+       (vte_terminal_process_incoming), (vte_terminal_io_read),
+       (vte_terminal_io_write), (vte_terminal_send),
+       (vte_terminal_im_commit), (vte_terminal_im_preedit_start),
+       (vte_terminal_im_preedit_end), (vte_terminal_im_preedit_changed),
+       (vte_terminal_configure_toplevel),
+       (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
+       (add_cursor_timeout), (vte_terminal_key_press), (vte_same_class),
+       (vte_line_is_wrappable), (vte_terminal_paste_cb),
+       (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag), (vte_terminal_clear_cb),
+       (vte_terminal_copy_cb),
+       (vte_terminal_get_text_range_maybe_wrapped),
+       (vte_terminal_clipboard_get), (vte_terminal_copy),
+       (vte_terminal_paste), (vte_terminal_autoscroll),
+       (vte_terminal_start_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_visibility_notify), (vte_terminal_apply_metrics),
+       (vte_terminal_set_font_full), (vte_terminal_refresh_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_scroll_adjustment),
+       (vte_terminal_connect_xft_settings),
+       (vte_terminal_disconnect_xft_settings),
+       (_vte_terminal_codeset_changed_cb), (vte_terminal_init),
+       (vte_terminal_size_request), (vte_terminal_size_allocate),
+       (vte_terminal_show), (root_pixmap_changed_cb),
+       (vte_terminal_unrealize), (vte_terminal_finalize),
+       (vte_terminal_realize), (vte_terminal_determine_colors),
+       (vte_terminal_paint), (vte_terminal_expose), (vte_terminal_scroll),
+       (vte_terminal_get_accessible), (vte_terminal_im_append_menuitems),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_image),
+       (vte_terminal_set_background_image_file),
+       (vte_terminal_set_cursor_blinks), (vte_terminal_reset),
+       (vte_terminal_set_pty):
+       * src/vteaccess.c: (vte_terminal_initialize),
+       (vte_terminal_accessible_finalize):
+       * src/vtedraw.c: (_vte_draw_new), (_vte_draw_free),
+       (_vte_draw_start), (_vte_draw_end):
+       * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description),
+       (_vte_fc_defaults_from_gtk), (_vte_fc_connect_settings_changes),
+       (_vte_fc_disconnect_settings_changes):
+       * src/vteft2.c: (_vte_ft2_destroy),
+       (_vte_ft2_set_background_image), (_vte_ft2_clear):
+       * src/vtegl.c: (_vte_gl_destroy), (_vte_gl_set_background_image),
+       (_vte_gl_clear):
+       * src/vtepango.c: (_vte_pango_destroy), (_vte_pango_start),
+       (_vte_pango_end), (_vte_pango_set_background_image),
+       (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_destroy), (_vte_pango_x_start),
+       (_vte_pango_x_end), (_vte_pango_x_set_background_image),
+       (_vte_pango_x_set_text_font):
+       * src/vterdb.c: (_vte_rdb_get):
+       * src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
+       (vte_sequence_handler_set_title_internal), (vte_terminal_beep),
+       (vte_sequence_handler_do), (vte_sequence_handler_sf),
+       (vte_sequence_handler_sr), (vte_sequence_handler_vb),
+       (vte_sequence_handler_window_manipulation):
+       * src/vteskel.c: (_vte_skel_destroy):
+       * src/vtetree.c: (_vte_tree_new), (_vte_tree_destroy):
+       * src/vtexft.c: (_vte_xft_set_background_image), (_vte_xft_clear):
+               Remove superfluous checks and run-time checked type casts.
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       As part of Bug 397439.
+
+       * src/debug.c:
+       * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
+       (_vte_iso2022_state_new), (_vte_iso2022_state_set_codeset),
+       (process_8_bit_sequence), (process_cdata), (process_control),
+       (_vte_iso2022_process):
+       * src/keymap.c: (_vte_keymap_map):
+       * src/matcher.c: (_vte_matcher_init), (_vte_matcher_create),
+       (_vte_matcher_destroy):
+       * src/pty.c: (_vte_pty_run_on_pty), (_vte_pty_fork_on_pty_name),
+       (_vte_pty_fork_on_pty_fd), (_vte_pty_set_size),
+       (_vte_pty_get_size), (_vte_pty_ptsname), (_vte_pty_open_unix98),
+       (_vte_pty_open_with_helper), (_vte_pty_open), (main):
+       * src/reaper.c: (vte_reaper_emit_signal),
+       (vte_reaper_child_watch_cb), (vte_reaper_init),
+       (vte_reaper_finalize):
+       * src/reflect.c: (text_changed_insert), (text_changed_delete):
+       * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
+       (_vte_ring_remove), (scrolled_off), (main):
+       * src/slowcat.c: (main):
+       * src/table.c: (_vte_table_printi), (_vte_table_print):
+       * src/trie.c: (char_class_string_extract):
+       * src/vte.c: (_vte_invalidate_cursor_once),
+       (vte_terminal_emit_selection_changed), (vte_terminal_emit_commit),
+       (vte_terminal_emit_emulation_changed),
+       (vte_terminal_emit_encoding_changed),
+       (vte_terminal_emit_child_exited),
+       (_vte_terminal_emit_contents_changed),
+       (vte_terminal_emit_cursor_moved), (vte_terminal_emit_eof),
+       (vte_terminal_emit_char_size_changed),
+       (_vte_terminal_emit_status_line_changed),
+       (vte_terminal_emit_increase_font_size),
+       (vte_terminal_emit_decrease_font_size),
+       (_vte_terminal_emit_text_inserted),
+       (_vte_terminal_emit_text_deleted),
+       (vte_terminal_emit_text_modified),
+       (vte_terminal_emit_text_scrolled), (vte_terminal_deselect_all),
+       (vte_terminal_match_check_internal), (vte_terminal_match_check),
+       (vte_terminal_emit_adjustment_changed),
+       (vte_terminal_queue_adjustment_changed),
+       (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
+       (vte_terminal_maybe_scroll_to_bottom), (vte_terminal_set_encoding),
+       (_vte_terminal_set_pointer_visible), (vte_terminal_new),
+       (vte_terminal_generate_bold), (_vte_terminal_insert_char),
+       (display_control_sequence), (vte_terminal_fork_command),
+       (vte_terminal_emit_pending_text_signals),
+       (vte_terminal_process_incoming), (vte_terminal_io_write),
+       (vte_terminal_send), (vte_terminal_im_commit),
+       (vte_terminal_im_preedit_start), (vte_terminal_im_preedit_end),
+       (vte_terminal_im_preedit_changed),
+       (vte_terminal_configure_toplevel),
+       (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
+       (vte_terminal_key_press), (vte_terminal_paste_cb),
+       (vte_terminal_match_hilite_clear), (vte_terminal_match_hilite),
+       (vte_terminal_clear_cb), (vte_terminal_copy_cb),
+       (vte_terminal_copy), (vte_terminal_paste),
+       (vte_terminal_start_selection), (vte_terminal_extend_selection),
+       (vte_terminal_autoscroll), (vte_terminal_motion_notify),
+       (vte_terminal_button_press), (vte_terminal_button_release),
+       (vte_terminal_focus_in), (vte_terminal_focus_out),
+       (vte_terminal_set_font_full), (vte_terminal_set_size),
+       (vte_terminal_handle_scroll), (vte_terminal_set_emulation),
+       (vte_terminal_set_termcap), (vte_terminal_reset_rowdata),
+       (vte_terminal_fc_settings_changed), (vte_terminal_init),
+       (vte_terminal_size_request), (vte_terminal_size_allocate),
+       (vte_terminal_show), (vte_terminal_unrealize),
+       (vte_terminal_finalize), (vte_terminal_realize),
+       (vte_terminal_draw_cells), (_vte_terminal_map_pango_color),
+       (vte_terminal_paint), (vte_terminal_scroll),
+       (vte_terminal_class_init), (vte_terminal_get_type),
+       (vte_terminal_copy_clipboard), (vte_terminal_paste_clipboard),
+       (vte_terminal_copy_primary), (vte_terminal_paste_primary),
+       (vte_terminal_background_update),
+       (vte_terminal_queue_background_update),
+       (vte_terminal_set_background_saturation),
+       (vte_terminal_set_background_tint_color),
+       (vte_terminal_set_background_transparent),
+       (vte_terminal_set_background_image),
+       (vte_terminal_set_background_image_file),
+       (vte_terminal_set_word_chars):
+       * src/vteaccess.c: (emit_text_caret_moved),
+       (emit_text_changed_insert), (emit_text_changed_delete),
+       (vte_terminal_accessible_update_private_data_if_needed),
+       (vte_terminal_accessible_invalidate_cursor),
+       (vte_terminal_accessible_finalize),
+       (vte_terminal_accessible_get_text),
+       (vte_terminal_accessible_get_text_somewhere),
+       (vte_terminal_accessible_text_init),
+       (vte_terminal_accessible_component_init),
+       (vte_terminal_accessible_factory_new):
+       * src/vteapp.c: (main):
+       * src/vtebg.c: (vte_bg_root_pixmap), (_vte_bg_resize_pixbuf):
+       * src/vtedraw.c: (_vte_draw_new):
+       * src/vtepango.c: (_vte_pango_set_text_font):
+       * src/vtepangox.c: (_vte_pango_x_set_text_font):
+       * src/vteseq.c: (vte_terminal_emit_deiconify_window),
+       (vte_terminal_emit_iconify_window),
+       (vte_terminal_emit_icon_title_changed),
+       (vte_terminal_emit_window_title_changed),
+       (vte_terminal_emit_raise_window), (vte_terminal_emit_lower_window),
+       (vte_terminal_emit_maximize_window),
+       (vte_terminal_emit_refresh_window),
+       (vte_terminal_emit_restore_window),
+       (vte_terminal_emit_move_window), (vte_terminal_emit_resize_window),
+       (vte_sequence_handler_set_title_internal),
+       (vte_sequence_handler_decset_internal), (vte_sequence_handler_bt),
+       (vte_sequence_handler_application_keypad),
+       (vte_sequence_handler_normal_keypad),
+       (vte_sequence_handler_window_manipulation):
+       * src/vtetc.c: (main):
+       * src/vtexft.c: (_vte_xft_set_text_font):
+               s/fprintf(stderr,/g_printerr(/
+
+2007-01-17  Chris Wilson  <chris chris-wilson co uk>
+
+       Only invalidate groups of inserted chars and not the whole bbox.
+       This speeds up applications like vim which maintain a status line
+       at the bottom of the screen. Fixes bug 161342.
+
+       * src/vte-private.h:
+       * src/vte.c: (update_regions), (_vte_invalidate_cells),
+       (_vte_invalidate_all), (_vte_terminal_scroll_region),
+       (vte_terminal_process_incoming), (reset_update_regions),
+       (remove_update_timeout), (update_repeat_timeout), (update_timeout):
+
+2007-01-15  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 387171 – vte fails to install on FreeBSD due to missing header
+       Patch from Roy Marples
+
+       * src/vteseq.c: #include <limits.h>
+
+2007-01-15  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 396831 – Unable to compile without X
+       Patch from Chris Wilson
+
+       * src/vtebg.c (_vte_bg_display_sync), (vte_bg_root_pixmap): Add stubs.
+
+2007-01-09  Ryan Lortie  <desrt desrt ca>
+
+       Bug 394890 – Segfault when running vte or gnome-terminal
+
+       * src/vtetc.c (_vte_termcap_find_string): change 'int' to 'gssize' to
+       match previous fixup.  Hopefully that does it. :)
+
+2007-01-08  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.1.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.1.
+
+       * src/Makefile.am: Bumped libtool version to 10:8:1.
+
+2006-12-29  Ryan Lortie  <desrt desrt ca>
+
+       Small fix to the previous patch.
+
+       * src/vtetc.c (_vte_termcap_find_string_length): 'int' is not the same
+       as 'gssize' on 64bit platforms, causing compile errors.
+
+2006-12-27  Ryan Lortie  <desrt desrt ca>
+
+       Bug 354061 – Excessive use of strlen by _vte_termcap_create
+
+       * src/vtetc.c: near-complete rewrite to use a GMappedFile rather than
+       reading a line at a time with excessive strlen/realloc use.
+
+       * str/matcher.c: this shouldn't be calling the strip code as the
+       strings it has are already unescaped.
+
+2006-12-27  Ryan Lortie  <desrt desrt ca>
+
+       Bug 387475 – Gtk-Warning spew in gnome-terminal
+
+       Problem introduced by fix to bug 356552.
+
+       * src/vte.c (vte_invalidate_cursor_periodic): Add a temporary backward
+       compatibility hack to prevent GObject from spewing warnings about
+       missing GtkSettings properties in old GTK versions.
+
+2006-12-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 387482 – Variable modified in signal handler should be volatile
+       Patch from Bastien Nocera
+
+       * gnome-pty-helper/gnome-pty-helper.c: Make variable "done" volatile.
+
+2006-12-08  Behdad Esfahbod  <behdad gnome org>
+
+       Red Hat Bug 218626: "last -ad" print junk in last column
+
+       * gnome-pty-helper/gnome-utmp.c (write_logout_record),
+       (write_login_record): Don't gettimeofday directly into ut.ut_tv.
+       That overruns on x86_64.
+
+2006-12-05  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.15.0.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.15.0.
+
+       * src/Makefile.am: Bumped libtool version to 10:7:1.
+
+2006-12-05  Ryan Lortie  <desrt desrt ca>
+
+       Bug 356552 – cursor timeout runs all the time
+
+       * src/vte-private.h: Rework how cursor blinking works.
+       * src/vte.c: Rework how cursor blinking works.  Only register the
+       cursor blink callback when cursor blink is enabled and the window
+       is focused.
+
+2006-11-16 Mariano Suárez-Alvarez <mariano gnome org>
+
+       Bug 307396 – Mouse scroll mode not controllable
+
+       * src/vte.c(vte_terminal_scroll): make the scrollwheel scroll by tenths of
+       a screen (or 1 line, whichever is bigger) instead of half screens.
+
+2006-11-16 Mariano Suárez-Alvarez <mariano gnome org>
+
+       Bug 356602 – const cast warning fixes for libvte
+       Patch by Ryan Lortie (desrt)
+
+       * src/matcher.h: Use const char * where appropriate.
+       * src/matcher.c: Use const char * where appropriate.  Cast g_strdup
+       to (GCacheDupFunc) to avoid a warning.
+       * src/vtetc.h: Use const char * where appropriate.
+       * src/vtetc.c: Use const char * where appropriate.  Cast g_strdup
+       to (GCacheDupFunc) to avoid a warning.
+       * src/vte.c: Use const char * where appropriate.
+
+2006-11-01 Rich Burridge <rich burridge sun com>
+
+       * src/vteaccess.c:
+       Fixed bug #150858 - In gnome-terminal, the deleted character 
+       is reported as "space".
+
+2006-10-13  Behdad Esfahbod  <behdad gnome org>
+
+       * po/POTFILES.in: Include vteseq.c
+
+2006-10-11  Mariano Suárez-Alvarez  <msuarezalvarez arnet com ar>
+
+       Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+
+       * src/keymap.c (_vte_keymap_key_add_key_modifiers): Match the (newer)
+       xterm behavior when reporting modifiers to things running in a terminal.
+
+2006-10-02  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.14.1.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.14.1.
+
+       * src/Makefile.am: Bumped libtool version to 10:6:1.
+
+2006-10-02  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 358344 – autoscroll only works one way in fullscreen [PATCH]
+       Patch by Egmont Koblinger
+
+       * src/vte.c (vte_terminal_autoscroll),
+       (vte_terminal_motion_notify): Fix forward autoscrolling in fullscreen
+       mode.
+
+2006-09-20  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 353756 – font setting cleanup
+
+       * src/vte.c (vte_terminal_set_font_full): Use 'monospace' family if no
+       font is set on a terminal widget
+
+       * src/vte.c (vte_terminal_set_font_from_string_full): Don't
+       g_return_if_fail(strlen(name) > 0).  An empty string is a perfectly
+       valid pango font description string.
+
+       * src/vte.c (vte_terminal_show): Make sure we have a font loaded.
+
+       * src/vteapp.c (main): Don't fallback on "Monospace 12".  Let the
+       widget decide what font to use if no font is set.
+
+2006-09-18  Ryan Lortie  <desrt desrt ca>
+
+       Bug 356616 – libvte broken with new autotools
+
+       * configure.in:
+       * src/Makefile.am: Fix broken variable substitution for newer
+       versions of automake.
+
+2006-09-13  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 354024 – Suppress multiple warnings for missing control sequence
+       handlers
+       Patch from Chris Wilson
+
+       * src/vte.c (vte_terminal_handle_sequence): Suppress multiple warnings
+       for missing control sequence handlers in non-debugging builds.
+
+2006-09-13  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 354620 – vte-0.14.0: undefined C code
+       Patch from Ales Nosek
+
+       * src/ssfe.c (inschar), (dokbdchar): Replace "*(tmp+1)=(*tmp--);"
+       with something well-defined.
+
+2006-09-08  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am: Define G_LOG_DOMAIN=Vte.
+
+2006-09-04  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.14.0.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.14.0.
+
+       * src/Makefile.am: Bumped libtool version to 10:5:1.
+
+2006-08-31  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 340631 – Printed lines containing tab characters are not wrapped 
+       correctly
+
+       * src/vteseq.c (vte_sequence_handler_ta): make sure we don't move the 
+       cursor back when tabbing past the end of the line.
+
+       * src/pty.c:
+       * src/ring.c:
+       * src/trie.c:
+       * src/vte.c:
+       * src/vtebg.c:
+       * src/vtetc.c:
+       Minor doc syntax update.
+
+2006-08-26  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Followup on
+       the fix for bug 350236.  It was causing empty lines not to be copied.
+
+2006-08-24  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.7.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.7.
+
+       * src/Makefile.am: Bumped libtool version to 10:4:1.
+
+2006-08-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 352365 – font caching problem for not-found glyphs
+
+       * src/vtexft.c (_vte_xft_font_for_char): Add caching on a missing
+       path.  This only affects the second time a character is looked up.
+
+       * src/vtexft.c (_vte_xft_font_close), (_vte_xft_font_for_char),
+       (_vte_xft_char_width): Remove g_assert()'s that are not needed, as
+       we will definitely crash pretty soon if the assertion is not true
+       anyway.
+
+2006-08-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 350236 – Cannot copy text containing invalid character sequences
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Fix another
+       bug in my rewritten selection code, that was assuming that
+       last_nonempty character is one byte long.
+
+2006-08-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 352439 – URL highlighting seriously broken
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Followup to
+       changes made for bug 350623.  Put back the g_array_set_size(), in the
+       correct place this time.
+
+2006-08-22  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 351494 – Gnome-terminal doesn't kills bash on tab close
+       Patch from Aivars Kalvans
+
+       * src/vte.c (vte_terminal_unrealize): Undo the change from bug 348814.
+       Dispose draw in unrealize again, but also set has_fonts to FALSE.
+
+2006-08-20  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.6.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.6.
+
+       * src/Makefile.am: Bumped libtool version to 10:3:1.
+
+2006-08-17  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 351696 – crash on Terminal
+
+       * src/vteseq.c (vte_sequence_handler_set_title_internal): Check
+       ->window is not NULL before setting icon/window title.
+
+2006-08-16  Willie Walker <william walker sun com>
+
+       Bug 350623 – Accessible text getTextAtOffset is broken
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Do not
+       resize array before calling vte_g_array_fill since it
+       nullifies any effect vte_g_array_fill will have.
+
+2006-08-16  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Make sure
+       attr.column is initialized.
+
+2006-07-31  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.5.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.5.
+
+       * src/Makefile.am: Bumped libtool version to 10:2:1.
+
+2006-07-30  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 158200 – terminal backspace behavior not set to UTF-8 mode
+       Based on patch from Egmont Koblinger
+
+       * src/vte.c (_vte_terminal_setup_utf8),
+       (vte_terminal_set_encoding), (_vte_terminal_fork_basic),
+       (vte_terminal_set_pty): Make sure UTF-8 state is correctly set
+       when pty changes.
+
+2006-07-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 348814 – crash on Terminal
+       Patch from Aivars Kalvans
+
+       * src/vte.c (vte_terminal_unrealize): Do not dispose draw in
+       unrealize.
+
+2006-07-24  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.4.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.4.
+
+       * src/Makefile.am: Bumped libtool version to 10:1:1.
+
+2006-07-24  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 336947 – [patch] Redundant vte_terminal_set_font_full() calls
+       Patch from Aivars Kalvans
+
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_set_font_full), (vte_terminal_init),
+       (vte_terminal_realize):
+       AVoid redundant set_font_full and invalidate_all calls.
+
+2006-07-19  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 134800 – gnome-termnal hung up when input by ATOK
+       Patch from Yukihiro Nakai  <nakai gnome gr jp>
+
+       * src/vte.c (vte_terminal_unrealize): Delay _vte_draw_free().
+
+2006-07-19  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_extend_selection):  Oops.  Fix selection
+       that I broke recently.
+
+2006-07-11  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 339983 – gnome-pty-helper should log username
+       Patch from Brian Cameron
+
+       * gnome-pty-helper/gnome-pty-helper.c (pty_remove), (shutdown_pty),
+       (pty_add), (open_ptys):
+       * gnome-pty-helper/gnome-pty.h:
+       * gnome-pty-helper/gnome-utmp.c (write_logout_record):
+       Log username if system supports it.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.3.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.3.
+
+       * src/Makefile.am: Bumped libtool version to 10:0:1.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 141985 – vte does not respond to 'CSI 2 1 t' or 'CSI 2 0 t' with
+       the correct window/icon title
+       Patch from Mariano Suárez-Alvarez
+
+       * src/vte.c (vte_terminal_realize), src/vteseq.c
+       * (vte_sequence_handler_set_title_internal): Set window/icon titles.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 121904 – copy-paste of empty line
+       Bug 25290 – Small UI tweak to select-by-word (only select only letter
+       at a time for non-word characters)
+       Bug 339986 – Patch to select localized strings exactly
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_set_default_attributes),
+       (_vte_terminal_insert_char), (vte_terminal_is_word_char),
+       (vte_same_class), (vte_terminal_get_text_range_maybe_wrapped),
+       (vte_terminal_extend_selection):
+       * src/vteseq.c (vte_sequence_handler_screen_alignment_test):
+       Fix a bunch of selection-related issues.  We now recognize explicitly
+       put space at the end of lines, and copy/paste it.  The other change is
+       that non-wordchar characters are not grouped together.  Also fixes the
+       fallback on Unicode properties that I added two commits ago.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 311855 – Race in vte leads to blocking of input.
+       Patch from Kalle Raiskila
+
+       * src/vte-private.h:
+       * src/vte.c (_vte_terminal_connect_pty_write),
+       (_vte_terminal_disconnect_pty_write), (vte_terminal_init):
+       Use a mutex for pty_output_source.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 339986 – Patch to select localized strings exactly
+       Patch from Takao Fujiwara
+
+       * src/vte.c (vte_terminal_is_word_char): Fall back on Unicode
+       properties for non-ASCII characters or when no array is set.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 342396 – Ctrl-space sends " ", not NUL.
+
+       * src/keymap.c (_vte_keymap_map): Fix keymap lookup bug that I
+       introduced during the char*->char[] work on 2006-04-18.
+
+2006-07-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 345377 – real transparency
+       Patch from Kristian Høgsberg <krh redhat.com>
+
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/vte-sections.txt:
+       * python/vte.defs:
+       * src/vte-private.h:
+       * src/vte.c (vte_terminal_set_opacity), (vte_terminal_init),
+       (vte_terminal_background_update):
+       * src/vte.h:
+       * src/vteapp.c (main):
+       * src/vtedraw.c (_vte_draw_set_background_color):
+       * src/vtedraw.h:
+       * src/vteft2.c (_vte_ft2_set_background_color):
+       * src/vtegl.c (_vte_gl_set_background_color):
+       * src/vtepango.c (_vte_pango_set_background_color):
+       * src/vtepangox.c (_vte_pango_x_set_background_color):
+       * src/vteskel.c (_vte_skel_set_background_color):
+       * src/vtexft.c (_vte_xft_create), (_vte_xft_set_background_color),
+       (_vte_xft_clear):
+       Add vte_terminal_set_opacity().
+
+2006-07-05  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am: Allow _vte_debug_.* into exported symbols.
+
+2006-06-21  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 345514 – -no-undefined doesn't work with latest libtool
+
+       * src/Makefile.am: Remove -no-undefined.
+
+2006-06-12  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.2.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.2.
+
+       * src/Makefile.am: Bumped libtool version to 9:2:0.
+
+2006-06-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 344666 – Problems with *_CFLAGS and *_LDFLAGS in makefiles
+       Patch from Stepan Kasal <kasal ucw cz>.
+
+       * src/Makefile.am (AM_CFLAGS, AM_LDFLAGS, *_CFLAGS, *_LDADD):
+       Replace @FOO@ references by $(FOO), remove redundant (or buggy)
+       occurences of `@CFLAGS@'.
+       * gnome-pty-helper/Makefile.am (AM_CFLAGS, AM_LDFLAGS): Likewise.
+       * python/Makefile.am (vtemodule_la_CFLAGS): Likewise.
+       * src/Makefile.am (AM_CFLAGS): Add $(FT2_CFLAGS).
+
+2006-06-08  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (remove_display_timeout): Fix typo which may have been
+       causing things like crashes.  Reported by muntyan.  Also reordered
+       some code around update_timeout for better matching the current
+       timeouts in style.
+
+2006-06-07  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 339529 – gnome-terminal (vte) crashes when detatched window is
+       closed
+
+       * src/vte.c (vte_invalidate_region): Bail out if terminal->window is
+       NULL.
+
+2006-05-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 342549 – uninitialized var (coverity)
+       Patch from Paolo Borelli.
+
+       * src/vte.c (vte_cell_is_selected): Remove uninitialized var ret.
+
+2006-05-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 342082 – vte_invalidate_region() may check whether terminal is
+       realiazed or not
+       Patch from Kouhei Sutou.
+
+       * src/vte.c (vte_invalidate_region): Return if not realized.
+
+2006-05-22  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 340363 – vte Cygwin build fixes
+       Patch from Cygwin Ports maintainer
+
+       * configure.in, src/keymap.c, src/pty.c, src/ssfe.c, src/trie.c,
+       src/utf8echo.c, src/vte.c, src/vteseq.c, src/vtetc.c: Check and
+       include syslimits.h and ncurses/curses.h
+
+2006-05-22  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 341793 – vte.h doesn't need to include X11/Xlib.h
+       Patch from Kouhei Sutou
+
+       * src/vte.h: Don't #include <X11/Xlib.h>
+
+2006-05-17  Wouter Bolsterlee  <uws+gnome xs4all nl>
+
+       * configure.in: Require intltool 0.35.0 to have
+       translations in the dist tarballs.
+
+2006-05-17  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.1.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.1.
+
+       * src/Makefile.am: Bumped libtool version to 9:1:0.
+
+2006-05-14  Behdad Esfahbod  <behdad gnome org>
+
+       * NEWS, ChangeLog: Add vim and emacs footers for UTF-8.
+
+2006-04-27  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 339980 – nativeecho needs glib in LDADD to build on Solaris
+       Patch from Brian Cameron.
+
+       * src/Makefile.am: Fix it.
+
+2006-04-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 331803 – style needs to be attached/detached to the window on
+       realize/unrealize
+       Patch from Benjamin Berg  <benjamin sipsolutions net>.
+
+       * src/vte.c: (vte_terminal_unrealize), (vte_terminal_realize):
+       attach and detach the style of the terminal widget.
+
+2006-04-25  Behdad Esfahbod  <behdad gnome org>
+
+       * src/Makefile.am: Pass -no-undefined linker flag.
+
+2006-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.13.0.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.13.0.
+
+       * src/Makefile.am: Bumped libtool version to 9:0:0.
+
+2006-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 339448 – selection doesn't respect hard newlines
+
+       * src/vte.c (vte_terminal_get_text_range_maybe_wrapped): Add newline
+       to the end of each line that is not soft-wrapped.
+
+2006-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 148720 – Word selection erroneously captures text from next line
+       Patch from Chris Heath.
+
+       * src/vteseq.c (vte_sequence_handler_cd), (vte_sequence_handler_ce),
+       (vte_sequence_handler_clear_current_line),
+       (vte_sequence_handler_clear_above_current): Reset soft_wrapped flag.
+
+2006-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 126376 – Uncoinditional definition of _XOPEN_SOURCE breaks build
+       on NetBSD
+       Patch from Dan Winship.
+
+       * configure.in:
+       * gnome-pty-helper/configure.in: Define XOPEN_SOURCE on solaris only.
+
+2006-04-23  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 97719 – Selection: double/triple click doesn't cross line boundaries
+       Patch from Chris Heath.
+
+       * src/vte.c (vte_same_class): Fix problem with selecting whitespace
+       from adjacent lines, on word selection.
+
+2006-04-22  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 160782 – Vte isn't multi-screen safe
+       Patch from Benedikt Meurer.
+
+       * src/vte.c (vte_terminal_unrealize), (vte_terminal_realize):
+       * src/vtebg.c (vte_bg_native_new), (_vte_bg_display_sync),
+       (vte_bg_root_pixmap), (vte_bg_get_for_screen), (vte_bg_init),
+       (vte_bg_get_pixmap), (vte_bg_get_pixbuf):
+       * src/vtebg.h:
+       * src/vteft2.c (_vte_ft2_set_background_image):
+       * src/vtegl.c (_vte_gl_set_background_image):
+       * src/vtepango.c (_vte_pango_set_background_image):
+       * src/vtepangox.c (_vte_pango_x_set_background_image):
+       * src/vtexft.c (_vte_xft_set_background_image): Handle per-screen
+       backgrounds.
+
+2006-04-22  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_cursor_new), (vte_terminal_clipboard_get):
+       * src/vteapp.c (take_xconsole_ownership):
+       * src/vtebg.c (vte_bg_native_new), (_vte_bg_display_sync),
+       (vte_bg_root_pixmap):
+       * src/vtedraw.c (_vte_draw_get_colormap):
+       * src/vtefc.c (_vte_fc_transcribe_from_pango_font_description),
+       (_vte_fc_defaults_from_gtk):
+       * src/vtepango.c (_vte_pango_start), (_vte_pango_set_text_font):
+       * src/vtepangox.c (_vte_pango_x_set_text_font):
+       * src/vterdb.c (_vte_rdb_get):
+       * src/vteseq.c (vte_terminal_beep),
+       (vte_sequence_handler_window_manipulation):
+       * src/vtexft.c (_vte_xft_char_exists), (_vte_xft_text_extents),
+       (_vte_xft_font_open):
+       * src/vtegl.c: Remove obsolete #ifde GTK_CHECK_VERSION(2,2,0) checks.
+
+2006-04-22  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 330441 – Remove libzvt support
+       Patch from Guilherme de S. Pastore  <gpastore gnome org>
+
+       * configure.in, src/Makefile.am, src/reflect.c: remove remnants
+       from the old, broken, and unmaintained libzvt.
+
+2006-04-21  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 328850 – Crash when pasting selection
+
+       * src/vte.c: Protect against passing NULL selection to strcmp.
+
+2006-04-20  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/tmpl/internals.sgml:
+       * doc/reference/tmpl/reaper.sgml:
+       * doc/reference/tmpl/vte-unused.sgml:
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/tmpl/vteaccess.sgml:
+       * doc/reference/vte-sections.txt: Misc fixes and updates.
+
+       * python/vte.defs:
+       * python/vte.override: Updates.
+
+       Bug 160134 – mouse events occurring past column 95 are not passed
+       through to terminal application
+       Based on patch from Sean Estabrooks.
+
+       * src/vte.h:
+       * src/vte.c (vte_terminal_feed_child_binary): New public function.
+
+       * src/vte.c (vte_terminal_send_mouse_button_internal),
+       (vte_terminal_maybe_send_mouse_drag): Use feed_child_binary.
+
+2006-04-19  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 135230 – Feature request to attach VTE to existing pty
+       Based on patch from eric brouhaha com, John Swensen, and
+       Chris Moller  <cmoller redhat com>
+
+       * src/vte.c:
+       * src/vte.h:
+       * python/vte.defs:
+       * doc/reference/vte-sections.txt: Added vte_terminal_set_pty().
+
+2006-04-18  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 337442 – [patch] Reduce .plt section
+
+       * src/Makefile.am: Pass export-symbols-regex to libtool.
+
+2006-04-18  Behdad Esfahbod  <behdad gnome org>
+
+       * src/caps.c (_vte_capability_init), src/caps.h:
+       * src/keymap.c (_vte_keymap_map), src/keymap.h: Make some data
+       structures const by changing char * to char [].
+
+       * src/vte.c (vte_update_delay_timeout), (vte_update_timeout),
+       (vte_terminal_extend_selection), (_vte_terminal_fudge_pango_colors):
+       Fix warnings and adapt to above changes.
+
+2006-04-18  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in, po/LINGUAS: Use intltool 0.34.90 format.
+
+2006-04-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 142247 – use of uninitialized value
+
+       * src/pty.c: Initialize the arbitrary byte that we send on the pipe
+       to zero.
+
+2006-04-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 149633 – gnome-terminal messes up boxdrawing chars aligment
+
+       * src/vte.c: Try to use the font first for all graphic characters.
+       This results in better looking graphics with modern fonts.
+
+2006-04-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 144456 – UK pound currency symbol rendered incorrectly
+
+       * src/vte.c: Offset characters drawn in draw_graphic for padding.
+
+2006-04-12  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 307403 – xticker doublefree
+
+       * src/xticker.c: Avoid double free.
+
+2006-04-10  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 337877 – Patch to use po/LINGUAS
+       Patch from Michiel Sikkes.
+
+       * configure.in, po/LINGUAS: Move list of translations to po/LINGUAS.
+
+2006-04-06  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 337552 – Insufficient version requirement for gtk+
+
+       * configure.in: Depend on Gtk+ 2.6.
+
+2006-03-30  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 168251 – add support for 256 colors terminals
+       Patch from dann godzilla ics uci edu.
+
+       * src/vte-private.h, src/vte.c, src/vteseq.c: Implement support
+       for 256 colors.
+
+2006-03-30  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 120276 – Wishlist: Support Rectangular Selection
+       Patch from Pedro de Medeiros.
+
+       * src/vte.c, src/vte-private.h: Implement block (rectangular)
+       selection using ctrl+mouse.
+
+2006-03-30  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 336117 – [patch] Use g_slice API
+       Patch from Aivars Kalvans.
+
+       * src/*.c: Use g_slice instead of g_malloc for structs.
+       Also, replace g_string_new("") with g_string_new(NULL).
+
+2006-03-30  Behdad Esfahbod  <behdad gnome org>
+
+       Branchpoint for vte-0-12.
+
+2006-03-30  Guntupalli Karunakar  <karunakar indlinux org>
+
+       * configure.in: Added "dz" (Dzongkha) to ALL_LINGUAS.
+
+2006-03-26  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 336128 – vim scrolling issues - emulation errors
+
+       * src/vteseq.c (vte_sequence_handler_sf): Update start and end
+       when updating insert_delta.
+
+2006-03-15  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 334385 – Use intltool
+
+       * Makefile.am, configure.in: Add intltool support.
+
+       * src/iso2022.c, src/reaper.c, src/vteaccess.c, src/vteapp.c,
+       src/vtebg.c, src/vtexft.c, src/vte.c: Include glib/gi18n-lib.h
+       instead of #ifdefing gettext stuff.
+
+       * src/vte.c (vte_terminal_class_init): Use GETTEXT_PACKAGE instead
+       of PACKAGE in bindgettextdomain.
+
+2006-03-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_size_allocate): More tweaks to the
+       previous changes.  Reported by dholbach again.
+
+2006-03-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_size_allocate): Put the stuff changed in
+       previous commit in their original order.  Problem reported by
+       dholbach.
+
+2006-03-13  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 104841 – scrolling doesn't work inside "screen" windows
+
+       * src/vte.c (vte_terminal_size_allocate): Fix restricted scrolling
+       region readjustment.  Moreover, do not do unnecessary updates when
+       number of rows & columns has not changed.
+
+2006-03-13  Behdad Esfahbod  <behdad gnome org>
+
+       Bug 333768 – vteapp debug stuff should be conditional
+       Patch from Egmont Koblinger.
+
+       * src/vteapp.c: Make pwd and setting env vars conditional on debug.
+
+2006-03-08  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.12.0.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.12.0.
+
+2006-03-09  Abel Cheung  <maddog linuxhall org>
+
+       * configure.in: Readd kn to ALL_LINGUAS and make sure everything
+       builds fine.
+
+2006-03-08  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.11.21.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.11.21.
+
+       * configure.in: Removed kn from ALL_LINGUAS, as it was breaking
+       the build.
+
+2006-03-08  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c, src/vte-private.h: Fix vte_update_timeout repeat to
+       25ms. (bug #333776, Egmont Koblinger)
+
+2006-03-07  Abel Cheung  <maddog linuxhall org>
+
+       * configure.in: Added "kn" "zh_HK" to ALL_LINGUAS.
+
+2006-02-28  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte-private.h: Step up COALESCE_TIMEOUT and DISPLAY_TIMEOUT
+       from 2ms to 10ms.  This is more compatible with the updated timeout
+       that we are doing at around 25ms.
+
+2006-02-27  Behdad Esfahbod  <behdad gnome org>
+
+       * MAINTAINERS: Added.
+
+2006-02-25  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.11.20.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.11.20.
+
+2006-02-25  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vtexft.c: (_vte_xft_font_for_char): Rever the patch to
+       optimize memory usage by releasing fonts that aren't needed early.
+       Because that was inserting destroyed fonts into cache. Closes bug
+       #332580 and reverts bug #309322.
+
+2006-02-25  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.11.19.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.11.19.
+
+2006-02-17  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Make shift+insert paste PRIMARY and ctrl+shift+insert
+       paste CLIPBOARD (switched them. bug #123844)
+
+2006-02-17  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Better update-timeout handling.  Always delay updates
+       a bit.  Schedule updates as G_PRIORITY_DEFAULT_IDLE.  And, set delay
+       as the number of lines, in milliseconds.
+
+2006-02-14  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq-gen.c (main): Return 0.  (bug #331178)
+
+2006-02-14  Behdad Esfahbod  <behdad gnome org>
+
+       * gnome-pty-helper/gnome-pty-helper.c (main): Use getpwnam to
+       correctly log multiple users with the same UID. (bug #319564,
+       patch from Laszlo (Laca) Peter.
+
+2006-02-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (update_timeout): Only discontinue timer if nothing
+       was updated in the last cycle.
+
+2006-02-13  Behdad Esfahbod  <behdad gnome org>
+
+       * gnome-pty-helper/gnome-pty-helper.c: Fix race condition when
+       shutdown_helper may be called again from the signal handler when
+       it's already running. (bug #331056)
+
+2006-02-13  Behdad Esfahbod  <behdad gnome org>
+
+       * configure.in: Do not prepend X_LIBS and X_CFLAGS to LIBS and
+       CFLAGS. (bug #331021, Sylvain BERTRAND)
+
+2006-02-13  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (vte_terminal_key_press): Handle Ctrl+Shift+Insert to
+       paste PRIMARY.
+
+2006-02-11  Behdad Esfahbod  <behdad gnome org>
+
+       Released vte-0.11.18.
+
+       * NEWS: Updated.
+
+       * configure.in: Bumped version to 0.11.18.
+
+2006-02-11  Behdad Esfahbod  <behdad gnome org>
+
+       * src/iso2022.c: Change INVALID_CODEPOINT from 0xFFFF to 0xFFFD.
+       (bug #317235, Egmont Koblinger)
+
+2006-02-11  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_invalidate_cells): Guard more against off values.
+
+2006-02-10  Behdad Esfahbod  <behdad gnome org>
+
+       Update the build infrastructure.  make distcheck works now!
+
+       * autogen.sh: Use a generic autogen.sh that uses gnome-common.
+
+       * configure.in: Simplify gtk-doc stuff.  Update to newer syntax.
+
+       * Makefile.am, src/Makefile.am, doc/reference/Makefile.am: Updated.
+
+2006-02-10  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c (_vte_invalidate_cells): Throttle invalidating to at most
+       40 times per second, using a timeout.
+
+2006-02-10  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteseq.c: Removed the huge sequence handler table.  Changed to
+       use the compact tables in vteseq-table.h.
+
+       * src/vteseq-gen.c: Generator containing the table removed from above,
+       that generates compact tables.
+
+       * src/vteseq-table.h: Table generated by above.  Can be regenerated
+       using make.
+
+       * src/Makefile.am: Adjusted.
+
+       * src/vteapp.c: Set default font to Monospace instead of Sans.
+
+2006-02-10  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Allocate terminal->pvt using GObject private data.
+
+2006-02-10  Behdad Esfahbod  <behdad gnome org>
+
+       Moved all sequence handler codes into a separate file.
+
+       * src/vte.c: Stuff moved to other files.
+
+       * src/vte-private.h: Includes all struct definitions from vte.c.
+
+       * src/vteseq.c, src/vteseq.h, src/vteseq-list.h: The sequence
+       handlers are all here now.
+
+2006-02-09  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vteapp.c: Make a couple debug messages conditional on
+       DEBUG_MISC.
+
+2006-02-03  Behdad Esfahbod  <behdad gnome org>
+
+       * src/vte.c: Warning cleanup.  A couple were actually bugs.
+
+       * src/vteapp.c: No need to run $SHELL by default.  Handled
+       by vte.c now.  A bug was causing nothing to be run...
+
+2006-02-03  Behdad Esfahbod  <behdad gnome org>
+
+       * src/debug.c, src/debug.h, src/matcher.c: Add the debug
+       flag TRIE for printing out the trie (previous was using
+       MISC.)
+
+       * src/vte.c (vte_invalidate_cells): Update row_count and
+       column_count when clamping their respective _start values.
+
+       * src/vte.c (vte_terminal_extend_selection, _vte_terminal_select_text): 
+       Pass row_count to vte_invalidate_cells(), instead of row_stop.
+
+       * src/vteapp.c: Run $SHELL by default.
+
+2006-02-01  Behdad Esfahbod  <behdad gnome org>
+
+       * doc/reference/tmpl/internals.sgml: Added to CVS.
+
+       * vte/src/vte.c: Fix selection vs. primary that have been
+       borked forever. Closes bug #123844.
+
+2006-01-30  Guilherme de S. Pastore  <gpastore gnome org>
+
+       * src/trie.c: applied patch from Tomas Mraz to fix a double
+         free. Closes bug #161337.
+
+2006-01-30  Erdal Ronahi  <erdal ronahi gmail com>
+
+       * configure.in: added ku (Kurdish) to ALL_LINGUAS
+
+2006-01-28  Guilherme de S. Pastore  <gpastore gnome org>
+
+       * src/Makefile.am: add -DG_DISABLE_ASSERT to CFLAGS.
+
+       * NEWS: updated.
+
+       * vte.spec: bumped version to 0.11.17.
+
+2006-01-28  Guilherme de S. Pastore  <gpastore gnome org>
+
+       * src/vte.c: only try to guess the user's shell when actually
+         forking, so we avoid unnecessary work if the application
+         already has to do that itself.
+       
+2006-01-15  Guilherme de S. Pastore  <gpastore gnome org>
+
+       * src/: applied patch from Kjartan Maraas that replaces g_return
+         functions with g_assert. Should give an 8% speed boost.
+
+2006-01-14  Guilherme de S. Pastore  <gpastore gnome org>
+
+       * doc/reference/Makefile.am: install more than *.html, based on the
+         patch from Ed Catmur. Closes bug #321909.
+
+2006-01-14  Olav Vitters  <olav bkor dhs org>
+
+       * src/caps.c: Support save and restore cursor position using \033[s
+       and \033[u. Reported by Dag Wieers. Fixes bug 170032.
+
+2005-12-31  Olav Vitters  <olav bkor dhs org>
+
+       * vte.pc.in: Backup patch from Steve Langasek. It needs pkg-config
+       changes.
+
+2005-12-12  Kjartan Maraas  <kmaraas gnome org>
+
+       * vte.pc.in: Cleanups for the pkg-config file.
+       Patch from Steve Langasek. Closes bug #322240.
+
+2005-12-12  Kjartan Maraas  <kmaraas gnome org>
+
+       * python/vte.override: python-vte seems to have a small bug in
+       the override file that prevents the forkpty() method to be generated.
+       The attached patch fixes this problem. Patch from Michael Vogt.
+       Closes bug #169201.
+
+2005-11-30  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_preedit_length): Remove some
+       unused code.
+       (vte_terminal_process_incoming): Don't emit signals for every
+       character that's output. Patch from Padraig O'Briain. Huge
+       performance gain when a11y is activated.
+
+2005-11-16  Timur Jamakeev  <timurj cvs gnome org>
+
+       * confgiure.in: Added 'ky' to ALL_LINGUAS
+
+2005-11-08  Kjartan Maraas  <kmaraas gnome org>
+
+       * NEWS: Update.
+       * Makefile.am:
+       * autogen.sh:
+       * configure.in:
+       * python/Makefile.am:
+       I'm attaching a patch that modernizes the python binding 
+       build stuff. Notably, it excludes python/vte.c from the dist.
+       Right now as it stands, the file is disted, which means people's 
+       builds will not work unless they build against pygtk 2.8, 
+       which makes this bug somewhat important. Patch from Manish Sing
+       Closes bug #320931.
+
+2005-11-01  Bill Haneman <billh gnome org>
+
+       * src/vteaccess.c: 
+       (vte_terminal_accessible_get_text):
+       Swap offsets if start > end; fixes crasher
+       bug #153405.  Patch from padraig o'briain,
+       thanks to Kjartan for review.
+
+2005-10-02  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vtebg.c: (_vte_property_get_pixmaps):
+       * src/vterdb.c: (_vte_property_get_string):
+       Fix gdk warnings. Patch from Michele Baldessari.
+       Closes bug #309025.
+
+2005-09-16  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vtexft.c: (_vte_xft_font_for_char): Optimize memory
+       usage by releasing fonts that aren't needed early. Patch
+       from Mike Hearn. Closes bug #309322.
+
+2005-08-13  Kjartan Maraas  <kmaraas gnome org>
+
+       * gnome-pty-helper/gnome-pty-helper.c: (init_msg_pass):
+       Make VTE work on NetBSD, OpenBSD (sparc and macppc).
+       Reported by Adrian Bunk, patches by Dan Winship and
+       Rich Edelman. Closes bug #126554.
+
+2005-08-12  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vtetc.c: (_vte_termcap_destroy): Don't crash
+       if there's no termcap file. Michele Baldessari
+       Closes bug #312260.
+
+2005-08-12  Kjartan Maraas  <kmaraas gnome org>
+
+       * configure.in: Correct test for recvmsg(). Patch from
+       Robert Basch. Closes bug #304815 and possibly bug #122055.
+
+2004-08-10  Kjartan Maraas  <kmaraas gnome org>
+
+       Patch from: Padraig O'Briain  <padraig obriain sun com>
+       Closes bug #113590.
+
+       * src/vte.c, src/vteint.h:
+       Add new functions to support accessible text selection:
+       _vte_terminal_get_selection, _vte_terminal_get_start_selection,
+       _vte_terminal_get_end_selection, _vte_terminal_select_text,
+       _vte_terminal_remove_selection
+       * src/vteaccess.c:
+       (xy_from_offset): Fix for offset being entire text.
+       (vte_terminal_accessibility_selection_changed): VteTerminal's
+       selection-changed signal handler which emits text-selection-changed
+       signal.
+       (vte_terminal_accessible_initialize): Connect to VteTerminal's
+       selection-changed signal.
+       (vte_terminal_accessible_get_n_selections) Add implementation.
+       (vte_terminal_accessible_get_selection) Add implementation.
+       (vte_terminal_accessible_add_selection) Add implementation.
+       (vte_terminal_accessible_remove_selection) Add implementation.
+       (vte_terminal_accessible_set_selection) Add implementation.
+
+2005-08-05  Kjartan Maraas  <kmaraas gnome org>
+
+       * gnome-pty-helper/gnome-pty-helper.c: (exit_handler), (main):
+       Clean up utmp/wtmp under vncserver if things fall apart under
+       the terminal. (Dave Lehman). Closes bug #312373
+
+2005-07-26  Michele Baldessari  <michele pupazzo org>
+
+       * python/vte.override (_wrap_vte_terminal_set_colors): 
+       pyg_boxed_get should be on item not py_palette. 
+       Reported with fix by Ethan Glasser-Camp <glasse rpi edu>
+       Closes bug #311570
+
+2005-07-25  Michele Baldessari  <michele pupazzo org>
+
+       * src/vtepango.c (_vte_pango_create): Initialize 
+       PangoContext * data->ctx with NULL. Closes bug #126262
+
+2005-07-21  Danilo Šegan  <danilo gnome org>
+
+       Fixes #149925.
+       
+       * src/vte.c (vte_terminal_io_read): Added simple comment for 
+       translators.
+
+2005-07-07  Matthias Clasen  <mclasen redhat com>
+
+       * src/vte.c (vte_terminal_unrealize): Unset the user data
+       on the gdk window. 
+
+2005-06-15  Theppitak Karoonboonyanan  <thep linux thai net>
+
+       * configure.in: Added 'th' (Thai) to ALL_LINGUAS.
+
+2005-06-11  Kjartan Maraas  <kmaraas gnome org>
+
+       * NEWS: Update some.
+       * doc/reference/tmpl/reaper.sgml:
+       * doc/reference/tmpl/vte-unused.sgml:
+       * doc/reference/tmpl/vte.sgml:
+       * doc/reference/tmpl/vteaccess.sgml: Docs updates.
+       * src/vte.c: (vte_terminal_init), (vte_terminal_finalize),
+       (vte_terminal_get_accessible), (vte_terminal_class_init):
+       Apply patch from Padraig O'Briain <padraig obriain sun com>
+       to fix a crash. Closes bug #119913.
+
+2005-06-09  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_style_changed):
+       Fix a crash when reparenting. Closes bug #169326.
+       Patch from Michele Baldessari.
+
+2005-06-05  Ignacio Casal Quinteiro  <nacho resa gmail com>
+
+       * configure.in: Added 'gl' to ALL_LINGUAS.
+
+2005-04-29  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/table.c: (_vte_table_literal_new), (_vte_table_free),
+       (_vte_table_addi), (_vte_table_matchi), (_vte_table_match),
+       (_vte_table_printi): Final bits of the memory reduction patch
+       from Aivars Kalvans. bug #160993 comment #9
+       * src/vte.c: (vte_terminal_scroll_region): Patch from Egmont
+       Koblinger to fix some scrolling issues. bug #164153
+       * vte.spec: Bump version.
+
+2005-04-07  Abduxukur Abdurixit  <abduxukur abdurixit t-systems ch>
+
+       * configure.in: Added "ug" to ALL_LINGUAS.
+
+2005-04-01  Adi Attar  <aattar cvs gnome org>
+
+       * configure.in: Added "xh" to ALL_LINGUAS.
+
+2005-03-31  Steve Murphy  <murf e-tools com>
+
+        * configure.in: Added "rw" to ALL_LINGUAS.
+
+2005-03-29  Kjartan Maraas  <kmaraas gnome org>
+
+       * autogen.sh: Use head -n 1 instead of head -1 to avoid
+       warning about the latter being deprecated in newer versions.
+       Reported by Ali Akcaagac. Closes bug #156022.
+       * vte.spec: Bump version
+
+2005-03-16  Manish Singh  <yosh gimp org>
+
+       * python/vtemodule.c: Remove stray underscores so python module
+       works again. Fixes bug #150760.
+
+2005-03-14  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/Makefile.am: 
+       * src/interpret.c: (main):
+       * src/matcher.c: (_vte_matcher_add), (_vte_matcher_init),
+       (_vte_matcher_create), (_vte_matcher_destroy), (_vte_matcher_new),
+       (_vte_matcher_free):
+       * src/matcher.h:
+       * src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):
+       * src/vtetc.c: (_vte_termcap_create), (_vte_termcap_destroy),
+       (_vte_termcap_new), (_vte_termcap_free):
+       * src/vtetc.h: Add patch for excessive memory consumption when
+       opening new tabs. This patch makes struct _vte_matcher and
+       struct _vte_termcap shared between terminals and should reduce
+       memory consumption with multiple tabs a lot. Patch from Aivars
+       Kalvans <kalvans at inbox lv>. From bug #160993.
+
+2005-03-14  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_scroll_region),
+       (vte_sequence_handler_al), (vte_sequence_handler_dl),
+       (vte_sequence_handler_sr), (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines), (vte_terminal_handle_scroll):
+       Back out one of the fedora patches since it apparently causes
+       screen corruption for some users. It was rumored to have issues
+       from the start, so...
+
+2005-03-02  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_process_incoming): Fix the
+       crash in minicom when resizing the window. Closes
+       bug #163814. Also adjust the coalesce and display timeouts.
+       This makes g-t and xterm behave just about the same visually
+       but g-t is still a bit faster when using the same font and
+       utf8.
+
+2005-03-02  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/Makefile.am: Add vtetree.[ch]
+       * src/vte.c: (vte_terminal_draw_row): Don't use a GArray
+       but use calloc'ed memory to speed up things further.
+       From bug #137864. Patch from Benjamin Otte.
+       * src/vtetree.c: (_vte_tree_new), (_vte_tree_destroy),
+       (_vte_tree_insert), (_vte_tree_lookup): New file
+       * src/vtetree.h: New file
+       * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
+       (_vte_xft_font_for_char), (_vte_xft_char_width): Use the new
+       functions to speed up things. From bug #137864. Patch from
+       Benjamin Otte. There are still two patches in there that don't
+       apply cleanly any more. Will look at those later.
+       * vte.spec: Bump version.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_sequence_handler_send_primary_device_attributes):
+       Patch from Mariano to make vte claim to be the right type terminal.
+       Closes bug #130671.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/iso2022.c: (_vte_iso2022_is_ambiguous),
+       (_vte_iso2022_find_nextctl):
+       * src/uniwidths:
+       * src/vte.c: (vte_terminal_catch_child_exited), (vte_terminal_eof),
+       (vte_terminal_process_incoming), (vte_terminal_feed),
+       (vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
+       (add_display_timeout), (add_coalesce_timeout),
+       (remove_display_timeout), (remove_coalesce_timeout),
+       (vte_terminal_stop_processing), (vte_terminal_start_processing),
+       (vte_terminal_is_processing), (display_timeout),
+       (coalesce_timeout):
+       * src/vtexft.c: (_vte_xft_drawcharfontspec), (_vte_xft_draw_text):
+       Apply fix from Fedora package for performance problems. Closes
+       bug #143914. Patch was written by Søren Sandmann.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_scroll_region): Fix for
+       problem with redrawing when scrolling back then forward
+       Closes bug #122150. Patch from Benjamin Otte.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_unrealize): Fix a crash
+       when trying to use input methods. From Fedora.
+       Closes bug #168213.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_scroll_region),
+       (vte_sequence_handler_al), (vte_sequence_handler_dl),
+       (vte_sequence_handler_sr), (vte_sequence_handler_insert_lines),
+       (vte_sequence_handler_delete_lines), (vte_terminal_handle_scroll):
+       Another patch from fedora. Make sure the screen is fully redrawn
+       before scrolling. Apparently this patch has some issues, but those
+       were found to be small enough to apply in Fedora, so I guess
+       the same holds true here. Closes bug #168212
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/iso2022.c: (_vte_iso2022_process): Apply another
+       patch from Fedora. This should fix some screen corruption
+       with multibyte charsets. Closes bug #168211 and possibly
+       others.
+
+2005-02-28  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_adjust_adjustments),
+       (vte_terminal_maybe_scroll_to_bottom),
+       (vte_terminal_update_insert_delta), (vte_terminal_handle_scroll),
+       (vte_terminal_set_scroll_adjustment), (vte_terminal_size_allocate):
+       Apply patch from Fedora to fix some scrolling issues. Closes
+       bug #168210 and possibly others.
+
+2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vte.c: (vte_terminal_visibility_notify): Fix black
+       backgrounds in new terminals. Fix from Jon Nettleton
+       <nettleton at gmail com>. Closes bug #125364. Has been
+       in Fedora Core for months already.
+
+2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/keymap.c: (_vte_keymap_map): Fix keypad behaviour
+       to be like xterm. Closes bug #128099. Fix is from
+       <jylefort at brutele be> and has been used in Fedora the last
+       three months at least.
+
+2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/vteregex.h: Don't include <config.h> here. It breaks
+       building on AIX and can cause problems for l10n. Closes
+       bug #161352.
+
+2005-02-15  Kjartan Maraas  <kmaraas gnome org>
+
+       * src/dumpkeys.c: Fix build on NetBSD and Darwin.
+       Patch from Adrian Bunk <bunk at stusta de>. Closes
+       bug #126377.
+
+2004-12-07 Rajesh Ranjan<rranjan redhat com>
+       * configure.in: included the hi locale in ALL_LINGUAS 
+2004-11-16 nalin
+       * src/vte.c(vte_terminal_io_read,vte_terminal_io_write): silence a
+       couple of warnings by expecting a GIOCondition instead of a
+       GtkInputCondition as a parameter.
+
+2004-11-16 nalin
+       * autogen.sh: accept more, newer versions of autoconf/automake.  Treat
+       autoconf >= 3 as acceptable instead of just > 3.
+
+2004-11-16 nalin
+       * src/vte.c(vte_terminal_sequence_handler_scroll_up_or_down): add.
+       * src/vte.c(vte_terminal_sequence_handler_scroll_up_once): add.
+       * src/vte.c(vte_terminal_sequence_handler_scroll_down_once): add.
+       * src/vte.c(vte_terminal_sequence_handler_scroll_up): add.
+       * src/vte.c(vte_terminal_sequence_handler_scroll_down): add.
+       * src/table.c(_vte_table_addi): expand "%m" locally so that we can
+       distinguish between control sequences which differ only in the number
+       of numeric arguments they expect.  This means we have a new upper
+       limit on the length of a numeric argument list we'll recognize.
+       * src/caps.c(_vte_xterm_capability_strings): remove alternates for
+       strings which include '%m' as a specifier -- that's handled at the
+       matching layer now.
+       * src/vte.c(vte_terminal_paste_cb): drop the supplied data if it isn't
+       valid UTF-8 (Red Hat #119099).
+       * src/keymap.c(_vte_keymap_map): try xterm variants if we're xterm, not
+       the other way around.
+
+2004-08-18  David Lodge <dave cirt net>
+
+       * configure.in: Added "ang" to ALL_LINGUAS.
+
+2004-08-18  Kjartan Maraas  <kmaraas gnome org>
+
+       * configure.in: Added «nb» to ALL_LINGUAS.
+
+2004-08-16  Christian Rose  <menthos menthos com>
+
+       * configure.in: Added "bs" to ALL_LINGUAS.
+
+2004-08-13  Gora Mohanty  <gmohanty cvs gnome org>
+
+       * configure.in: Added "or" to ALL_LINGUAS.
+
+2004-07-17  Dinesh Nadarajah <dinesh_list sbcglobal net>
+
+       * ta.po: Added tamil Translation
+
+2004-05-02 nalin
+       * src/reaper.c(vte_reaper_add_child): pass the global reaper in as
+       data when adding the child source, not the terminal which called us.
+       Stop accepting a data argument, because we'd discard it anyway.  Return
+       the ID of the source which is added, if that happens.
+       * configure.in: define VTE_INVALID_SOURCE for internal use.
+
+2004-05-01 nalin
+       * README: add pointers to info on bidirectional text and shaping.
+
+2004-05-01 nalin
+       * src/vte.c(vte_terminal_get_text_maybe_wrapped): add a parameter to
+       control whether or not trailing whitespace is trimmed (padraig.obriain,
+       #141148).
+       * src/vte.c,src/vte.h(vte_terminal_get_text_include_trailing_spaces):
+       add as a wrapper for the new vte_terminal_get_text_maybe_wrapped()
+       (padraig.obriain, #141148).
+       * src/vteaccess.c(vte_terminal_accessible_update_private_d): use
+       vte_terminal_get_text_include_trailing_spaces to ensure that we get
+       trailing spaces (padraig.obriain, #141148).
+       * src/vte.c(vte_terminal_insert_char): clean up some autowrap stuff.
+
+2004-04-30 nalin
+       * vte.pc.in, vte-uninstalled.pc.in: declare the defaultemulation
+       variable as one kind of variable, not that other kind (#141515).
+
+2004-04-30 nalin
+       * src/vte.c(vte_terminal_button_release): complete selection if we were
+       selecting, not just if Shift is held down (allows Press Shift, Press
+       Button, Release Shift, Release Button in addition to already-recognized
+       Press Shift, Press Button, Release Button, Release Shift) (#121905).
+       * vte.spec: buildrequire gtk-doc, manually copy png images at
+       install-time.
+
+2004-04-29 nalin
+       * src/vte.c, NEWS, doc/reference/vte-sections.txt,
+       doc/reference/tmpl/vte-unused.sgml: documentation updates.
+       * doc/reference/tmpl/reaper.sgml: note that we just proxy for glib 2.4
+       child_watch functionality, if present.
+
+2004-04-29 nalin
+       * python/vte.defs: include get_default_emulation binding.
+
+2004-04-29 nalin
+       * vte.spec: update version to 0.11.11
+
+2004-04-29 nalin
+       * src/vte.c(vte_terminal_unrealize): don't unref our accessible peer;
+       it may be accessed while we're unrealized, causing it to be destroyed
+       and re-created needlessly (#128049).
+       * src/vte.c(vte_terminal_finalize): unref our accessible peer.
+
+2004-04-29 nalin
+       * src/vte.c(vte_terminal_finalize): don't clear the child's PID early,
+       so that we'll SIGHUP it properly (the kernel should do that anyway,
+       but...) (#128291).
+
+2004-04-29 nalin
+       * src/vte.c(vte_terminal_insert_char): only deselect the current
+       selection if just-inserted text affected the selected region of the
+       screen (#135259).
+
+2004-04-29 nalin
+       * README: assorted updates.
+       * configure.in: check for <sys/termios.h>
+       * src/pty.c: include <sys/termios.h> if found (#141392).
+       * src/dumpkeys.c, src/mev.c, src/pty.c, src/ssfe.c, src/vte.c: do the
+       same.
+       * doc/reference/vte-sections.txt: add several functions which are new
+       but which weren't in the generated docs.
+       * doc/reference/vte-unused.txt: sort.
+
+2004-04-29 nalin
+       * src/vte.c(vte_terminal_scroll_region): remove stray debug printfs.
+
+2004-04-29 nalin
+       * configure.in: add a --with-default-emulation argument (part of
+       #115750).  Use AS_HELP_STRING wherever we need help strings.
+       * vte.pc.in, vte-uninstalled.pc.in: add DefaultEmulation variable
+       * vte.spec: specify "xterm" as the default-emulation, even though it's
+       the default default
+       * termcaps/Makefile.am: build and install the default emulation's
+       termcap, assuming it's some kind of xterm variant.
+       * src/keymap.c(_vte_keymap_map): check for xterm-xfree86 definitions
+       if the terminal type includes xterm, not if it exactly matches xterm
+       * src/reaper.c(vte_reaper_add_child): add.  The glib 2.4 SIGCHLD
+       watcher requires us to register particular PIDs for monitoring, so now
+       we require applications to do so.
+       * src/reaper.c(vte_reaper_child_watch_cb): add.
+       * src/reaper.c(vte_reaper_init): Don't hook the SIGCHLD handler if
+       we're running under glib 2.4, expect to use the g_child_watch
+       mechanism.
+       * src/vte.c: remove hard-coded definition of VTE_DEFAULT_EMULATION,
+       to be picked up from config.h instead.
+       * src/vte.c(vte_sequence_handler_cs): remove stray debug printfs.
+       * src/vte.c(vte_terminal_insert_char): only do what we were doing for
+       xn if LP was also set (#141445).
+       * src/vte.c(vte_terminal_get_default_emulation): add.
+       * src/vte.c(_vte_terminal_fork_basic): call vte_reaper_add_child for
+       new children.
+
+2004-04-27 nalin
+       * src/vte.c(vte_terminal_fork_command): more clearly document what
+       the argv and envv arguments are expected to contain (#127979).
+       * src/vte.c(vte_terminal_insert_char): attempt to more closely match
+       the behavior of am and xn on terminals -- if am is set {if xn is set,
+       autowrap should only happen before a character is output, and then only
+       if it's a graphic character, otherwise we autowrap after a character is
+       output}
+
+2004-04-21 nalin
+       * src/vte.c(vte_terminal_get_text_range_maybe_wrapped): also trim back
+       lines which are nothing but whitespace (#140765).
+       * src/vte.c(vte_terminal_configure_toplevel): invalidate the whole
+       window if we're "transparent", because we don't get expose events
+       unless some portion of our area came out from behind something else,
+       but we still need to repaint it (#122243).
+
+2004-04-20 nalin
+       * doc/reference/tmpl/reaper.sgml: document the child-exited signal.
+       * doc/reference/tmpl/vte.sgml: document the emulation-changed and
+       encoding-changed signals.
+
+2004-04-20 nalin
+       * Makefile.am: add rule for generating vte-uninstall.pc (Gman, #136129)
+       * vte-uninstalled.pc.in: add (Gman, #136129)
+
+2004-04-19 nalin
+       * src/vte.c(vte_terminal_key_press): don't steal keys from the input
+       method.
+
+2004-04-19 nalin
+       * src/pty.c(_vte_pty_set_utf8): toggle the IUTF8 flag, if
+       it was defined at compile-time (maybe for #129317).
+       * src/vte.c(vte_terminal_set_encoding): call _vte_pty_set_utf8.
+       * src/vte.h (vte_terminal_anti_alias_get_type): declare.
+       * src/vtebg.c(vte_bg_get_pixmap): Optimisation to fix the ridiculous
+       amount of time required to render solid colour or extremely small
+       image tiled backgrounds.  This fixes bug #123903.  (desrt)
+       * src/vtebg.c(vte_bg_root_pixmap): move resize code into a separate
+       function.
+       * src/vtebg.c(vte_bg_get_pixmap): Resize all image sources, in case
+       we're using a very small image file for the background.
+
+2004-04-19 nalin
+       * python/Makefile.am: move python module to site-packages/gtk-2.0,
+       which is added to the search path only by pygtk 2 (#92252).
+
+2004-04-19 nalin
+       * python/vte.override: define a modulename override so that the
+       Terminal class is registered in the proper namespace so that python's
+       help() builtin sees the Terminal class (#130267).
+
+2004-04-19 nalin
+       * src/vte.c(vte_terminal_anti_alias_get_type): add, for the sake of
+       bindings.
+
+2004-04-19 nalin
+       * src/vte.c(vte_terminal_key_press): call GtkWidget's key_press_event
+       callback for keys, in case GtkWidget has pre-programmed behavior for
+       that key (#133878).
+       * configure.in, gnome-pty-helper/configure.in: quote names of defined
+       functions (#133222).
+       * configure.in: make compilation of gnome-pty-helper actually
+       conditional (#133077).
+       * src/vte.c(vte_terminal_process_incoming): Doh #132610, actually
+       call vte_terminal_emit_contents_changed() when the contents change.
+
+2004-04-19 nalin
+       * src/vte.h, src/vte.c (vte_terminal_set_font_full): Add (#134429).
+       * src/vteglyph.c(_vte_glyph_cache_set_font_description): take a
+       VteTerminalAntiAlias argument.
+       * src/vteft2.c, src/vtegl.c, src/pango.c, src/pango.x, src/vtexft.c
+       (*_set_text_font): take a VteTerminalAntiAlias argument.
+
+2004-04-19  Victor Zverovich  <vitaut users sourceforge net>
+       * src/vte.h src/vte.c: Added default signal handlers to
+       VteTerminalClass (#137961).  [NOTE: ABI change.]
+
+2004-04-19 nalin
+       * src/vte.c(vte_terminal_configure_toplevel): don't re-invalidate
+       everything, apparently unnecessary (#122243).  Might need to back this
+       out if I ever remember what specific combination of software and
+       versions prompted its addition in the first place.
+       * src/vte.c(vte_terminal_class_init): tell gettext that messages
+       retrieved from this domain should be returned in UTF-8 (#139542).
+
+2004-04-19 nalin
+       * configure.in: don't disable use of deprecated APIs unless asked
+       to do so.
+       * src/keymap.c(_vte_keymap_GDK_space): add Meta case (gafton).
+       * src/vtefc.c(_vte_fc_width_from_pango_stretch): add.
+       * src/vtefc.c(_vte_fc_transcribe_from_pango_font_description): handle
+       PangoStretch characteristics using _vte_fc_width_from_pango_stretch.
+       * src/vteregex.c: add random comments.
+       * src/vte.c(VteTerminal): track the "xn" terminal attribute.
+
+2004-04-10  Guntupalli Karunakar  <karunakar freedomink org>
+
+        * configure.in: Added "gu" (Gujarati) to ALL_LINGUAS.
+
+2004-03-20  Gareth Owen  <gowen72 yahoo com>
+
+       * configure.in: Added en_GB to ALL_LINGUAS
+
+2004-03-10  Alexander Winston  <alexander winston comcast net>
+
+       * configure.in: Added en_CA to ALL_LINGUAS.
+
+2004-03-04  Guntupalli Karunakar  <karunakar freedomink org>
+
+       * configure.in: Added "pa" for Punjabi to ALL_LINGUAS.
+
+2004-02-07  Robert Sedak  <robert sedak sk htnet hr>
+
+       * configure.in: Added "hr" (Croatian) to ALL_LINGUAS.
+
+2004-02-02  Martin Kretzschmar  <m_kretzschmar gmx net>
+
+       * docs/reference/Makefile.am: use gtk-doc in xml-mode.
+
+       * docs/reference/vte-docs.sgml: sgml->xml, update to DocBook XML
+       4.1.2 DTD (fixes Bug #132945)
+
+2004-02-02 Alastair McKinstry <mckinstry computer org>
+
+       * configure.in: Added 'ga' to ALL_LINGUAS
+       * po/ga.po: Added Gaeilge (Irish) translation.
+
+2004-01-27  Åsmund Skjæveland  <aasmunds fys uio no>
+
+       * configure.in: Added 'nn' to ALL_LINGUAS
+       * po/nn.po: Added Norwegian Nynorsk translation.
+
+2003-12-20  Arafat Medini <lumina silverpen de>
+
+       * configure.in: Added Arabic Locale "ar" to ALL_LINGUAS
+
+2003-12-10  Tõivo Leedjärv  <toivo linux ee>
+
+       * configure.in: Added et to ALL_LINGUAS.
+
+2003-12-06  Iñaki Larrañaga  <dooteo euskalgnu org>
+
+       * configure.in: Added "eu" (Basque) to ALL_LINGUAS.
+
+2003-10-14  Christian Rose  <menthos menthos com>
+
+       * configure.in: Added "ne" to ALL_LINGUAS.
+
+2003-10-07  Žygimantas Beručka  <uid0 tuxfamily org>
+
+       * configure.in: Added "lt" to ALL_LINGUAS.
+
+2003-09-15 nalin
+       * src/vteapp.c: add options for exercising the cursor and highlight
+       colors.
+       * src/debug.c: flush output streams when we check if debugging is
+       enabled, because we'll probably output a string next.
+       * src/iso2022.c: don't print a zero-length string.  Yay compiler
+       warnings.
+       * src/interpret.c: use g_print() instead of fprintf() to print.
+       * src/keymap.c,src/ssfe.c: include <stdarg.h>, hopefully fixing
+       bug #121880 (or not).
+
+2003-09-15 nalin
+       * python/vte.defs: add specs for set_color_cursor and
+       set_color_highlight.
+
+2003-09-15 nalin
+       * src/vte.h,src/vte.c: add vte_terminal_set_color_cursor.
+       * src/vte.h,src/vte.c: add vte_terminal_set_color_highlight (#69776).
+       * src/vte.c(vte_terminal_determine_colors): add parameters for
+       specifying if the cell being rendered is the cursor or is highlighted,
+       probably for being selected.  If either flag is set, and we've been
+       given a color to use for the purpose by a caller, use the supplied
+       color, else use inverse colors.
+
+2003-09-15 nalin
+       * src/iso2022.c(process_control): don't reset the conversion state
+       when we hit an end-of-line.  I wasn't reading RFC1468 closely enough,
+       as it states that each line begins in the same encoding as the end of
+       the previous line, and read "application should reset before end-of-
+       line" as "terminal resets at end-of-line" (bug #122156).
+
+2003-09-11 nalin
+       * src/vteapp.c: silence a compiler warning.
+
+2003-09-11 nalin
+       * README: ask for LC_* in addition to LANG if weird spacing errors
+       crop up.
+       * src/vteconv.c,src/vteconv.h: add wrappers for _vte_conv which weed
+       out some warnings.
+       * src/iso2022.c: use _vte_conv_cu instead of _vte_conv.
+       * src/trie.c: use _vte_conv_cu instead of _vte_conv.
+       * src/vte.c: give _vte_terminal_fudge_pango_colors a return type again.
+       * src/vtebg.c: ifdef out vte_bg_source_name, which is unused.
+       * src/vtebg.c,src/vterdb.c: wrap calls to gdk_property_get to weed out
+       some compiler warnings.
+
+2003-09-11 nalin
+       * src/vte.c(vte_terminal_draw_cells_with_attributes): properly resolve
+       colors and cell properties to drawing colors.
+       * src/vte.c(_vte_terminal_fudge_pango_colors): add a function for
+       mapping GTK+ white-on-black preedit text to default reverse-colored
+       text for the terminal.
+       * src/vte.c(_vte_terminal_translate_pango_cells): don't bother
+       doing anything with the attribute for a range if the list is NULL.
+       Fudge white-on-black text to default colors in reverse so that it
+       works when the terminal is in a black-on-white color scheme.
+
+2003-09-11 nalin
+       * src/vte.c(_vte_terminal_apply_pango_attr): map weight attributes to
+       the terminal's bold attribute.
+
+2003-09-11 nalin
+       * src/vte.c(_vte_terminal_map_pango_color): add.
+       * src/vte.c(vte_terminal_im_preedit_changed): don't discard the
+       attributes list for the preedit string -- save them.
+       * src/vte.c(vte_terminal_draw_cells_with_attributes): add.
+       * src/vte.c(vte_terminal_paint): use draw_cells_with_attributes to
+       use the preedit attributes list when drawing the preedit string.  This
+       changes the way the preedit string is presented to the user, but it
+       now looks [more] like GTK+ suggests it should look, so it should be a
+       good change.
+
+2003-08-13 nalin
+       * src/caps.c: add sequences for linux-console-cursor-attributes, which
+       we'll ignore (bug #108232).
+
+2003-08-13 nalin
+       * configure.in: if we don't find the python headers (even if we found
+       python), disable compilation of python bindings (bug #116756).  Make the
+       checks for python support sequential for easier maintenance.
+       * python/vte.defs: add def for vte_terminal_match_set_cursor_type.  Make
+       the color argument to vte_terminal_set_background_tint_color const.
+       * python/vte.override(_wrap_vte_terminal_forkpty): add.
+       * python/vte.override(_wrap_vte_terminal_fork_command): don't leak envv.
+
+2003-08-13 nalin
+       * src/vte.c(vte_terminal_fork_command,vte_terminal_forkpty): doc update
+       to note that directory and envv can be NULL for both.
+
+2003-08-13 nalin
+       * src/vteapp.c(main): if -S is passed, use forkpty to start a child that
+       just counts until killed with Ctrl-C.
+
+2003-08-13 nalin
+       * doc/reference/vte-sections.txt: add vte_terminal_forkpty.
+       * src/pty.c(_vte_pty_run_on_pty): exit on any error, to avoid leaving
+       random unreaped children running.  Accept NULL command indicating that
+       no exec() should occur, but still error out if command isn't NULL and
+       exec() fails.
+       * src/pty.c(_vte_pty_fork_on_pty_name,_vte_pty_fork_on_pty_fd): store
+       0 as the new child's PID if we're the child.
+       * src/pty.c(main): don't run "tty" by default, test the forkpty() case
+       instead.
+       * src/vte.c(vte_terminal_fork_command): rename to
+       _vte_terminal_fork_basic.  Remove code to replace NULL command with
+       the user's shell.
+       * src/vte.c(vte_terminal_fork_command): new! wrap
+       _vte_terminal_fork_basic, replacing a NULL command with the user's
+       shell.
+       * src/vte.c(vte_terminal_forkpty),src/vte.h: new! wrap
+       _vte_terminal_fork_basic, passing NULL for the command and argv
+       arguments (bug #116450).
+       * src/Makefile.am: update shared library version.
+
+2003-08-12 nalin
+       * configure.in: if <ft2build.h> isn't found, then we can't use any
+       freetype-specific bits, and that's not useful.  Error out, and say
+       that we need freetype 2.0.2 or newer, which introduced this header
+       into the procedure (bug #116341).
+
+2003-08-12 nalin
+       * src/vte.c: don't create an accessible peer at init() time in
+       debug mode.
+       * gnome-pty-helper/gnome-pty-helper.c(struct pty_info): add a field to
+       keep track of whether or not we created a lastlog record.
+       * gnome-pty-helper/gnome-pty-helper.c(shutdown_pty): also try to
+       write a logout record if pi->lastlog is true, because in doing so we
+       free pi->data, closing a leak (bug #116091).
+
+2003-08-12 nalin
+       * src/vteapp.c(resize_window): don't add the padding in when calculating
+       the new window size.
+
+2003-08-12 nalin
+       * doc/reference/tmpl/vte.sgml: note that dimensions passed in with
+       the resize-window signal include padding (more of bug #119141).
+
+2003-08-12 nalin
+       * src/vte.c(vte_sequence_handler_character_attributes,
+       vte_sequence_handler_decset_internal): remove redundant type checks.
+       * src/vte.c(all signal handlers): return a boolean indicating whether
+       or not to exit the processing loop instance early to allow the
+       application to deal with some input (usually along the lines of a
+       signal requesting that the terminal be resized) (bug #118938).
+
+2003-08-12 nalin
+       * python/vte.override(get_text,get_text_range): reorder arguments to
+       match the order for the C versions (#118882).
+       * python/vte.override(get_text,get_text_range,call_callback): fix
+       refcounting and callback argument marshalling (bug #118882).
+       * python/vte-demo.py: exercise get_text() on "window-raise" signals.
+
+2003-08-12  Padraig O'Briain  <padraig obriain sun com>
+
+       * src/vteaccess.c:
+       (vte_terminal_initialize): New function containing initialization code
+       previously in vte_terminal_accessible_new. Also set role in
+       this function.
+       (vte_terminal_accessible_class_init): Specify function pointer for
+       vte_terminal_initialize.
+       (vte_terminal_accessible_get_type): Do not set instance data size or
+       GInstanceInitFunc. Remove vte_terminal_accessible_init.
+
+       This fixes bug #119694.
+
+2003-08-11 nalin
+       * python/vte.override: add binding for get_padding() (bug #118834).
+
+2003-08-11 nalin
+       * python/vte.override: add binding for get_cursor_position()
+       (bug #118800).
+
+2003-08-11 nalin
+       * python/vte.defs: give length parameters for feed() and feed_child()
+       default values of -1 (bug #118711).
+       * python/vte.override: use the length parameter if it's supplied to the
+       feed() and feed_child() methods.
+
+2003-08-11 nalin
+       * python/vte.override: add overrides for feed() and feed_child()
+       methods which use the length of the string as given in C, to hopefully
+       allow passing NUL bytes around as part of strings (bug #118711).  Make
+       the length parameter optional, and ignored, to try to avoid breaking
+       existing Python code in an obvious way.
+
+2003-08-11 nalin
+       * src/vte.c(vte_terminal_start_selection,vte_terminal_extend_selection):
+       drop an unnecessary cast-and-check, which we don't need because we have
+       no use for the GtkWidget pointer to the terminal.  Fix initial shift-
+       click (bug #118106).
+
+2003-08-11 nalin
+       * configure.in: error out if we don't find ncurses, curses, or
+       libtermcap development headers (bug #117754).
+
+2003-08-11 nalin
+       * autogen.sh: export WANT_AUTOCONF_2_5 for the sake of Mandrake autoconf
+       wrapper (bug #119066).
+
+2003-08-05 nalin
+       * src/vte.c(vte_sequence_handler_decset_internal,
+       vte_sequence_handler_window_manipulation): include the widget's padding
+       widths in resize requests (bug #119141).
+
+2003-07-30 nalin
+       * autogen.sh: check for autoconf-2.51, autoconf-2.50, autoconf-2.5 when
+       looking for autoconf 2.5x (bug #118627).
+
+2003-07-21 nalin
+       * gnome-pty-helper/configure.in: define _XOPEN_SOURCE_EXTENDED,
+       _XOPEN_SOURCE, and __EXTENSIONS__ for Solaris, as we do in the top-level
+       configure (#117636).
+
+2003-07-16 nalin
+       * gnome-pty-helper/configure.in: check for grantpt in libc and then
+       in libpt.  Check for openpty in libc before checking libutil.  Check for
+       sendmsg in libc before checking libsocket (with libnsl) (#117636).
+
+2003-07-11  Pablo Saratxaga <pablo mandrakesoft com>
+       * configure.in: Added Walloon (wa) to ALL_LINGUAS
+
+2003-07-10 nalin
+       * src/vteregex.h, src/vteregex.c: add.
+       * src/vte.c: use interfaces from vteregex for doing dingus matching.
+
+2003-07-03 nalin
+       * src/vte.c(vte_sequence_handler_return_terminal_status): return an
+       empty string in response to the ENQ control sequence instead of "xterm".
+       Report and patch from Mariano Suárez-Alvarez (#116495).
+
+2003-06-27 nalin
+       * src/iso2022.c: treat the "big5hkscs" encoding as an East Asian
+       encoding, which uses ambiguous widths (#116078).  Report and patch
+       from Roger So.
+       * src/dumpkeys.c, src/iso2022.c, src/iso8859mode.c, src/nativeecho.c,
+       src/utf8echo.c, src/utf8mode.c, src/vte.c: don't use the literal escape
+       character, express it as an octal sequence.
+
+2003-06-16 nalin
+       * src/caps.c: add vertical-tab and form-feed to the list of control
+       sequences.
+       * src/vte.c(vte_controL_sequence_handler_form_feed): add.
+       * src/vte.c(vte_controL_sequence_handler_vertical_tab): add.
+
+2003-06-16 nalin
+       * src/vteaccess.c(xy_from_offset): fix a compiler warning.
+
+2003-06-16 nalin
+       * src/vteint.h: add.  Move private VteTerminal stuff which needs to be
+       shared with other modules in the library here.
+       * src/vtedraw.c, src/vtedraw.h: add get_char_width(), for use in drawing
+       the cursor.
+       * src/vte.c(vte_invalidate_cursor_once): if the character under the
+       cursor doesn't fit into its cell, expose the column to the right of
+       it so that we can paint into the adjacent cell.
+       * src/vte.c(vte_terminal_paint): when clearing the area behind the
+       cursor or drawing the hollow rectangle to indicate its position when
+       we don't have focus, use the visible width of the character instead
+       of just assuming it will fit.  This complies better with assertion 2.
+
+2003-06-09 nalin
+       * src/vte.c(vte_terminal_set_encoding): set the encoding for the iso2022
+       converter (spotted by havill).
+
+2003-06-04 nalin
+       * src/vtebg.c, src/vterdb.c: sync the display before trapping errors
+       to ensure that any errors we'll get will be handled before we remove
+       the error handlers.
+
+2003-06-03 nalin
+       * src/vtebg.c(_vte_bg_get_pixmap, _vte_bg_get_pixbuf): trap X errors
+       while retrieving the contents of the root pixmap.
+       * doc/ambiguous.txt: add.
+       * README: update.
+       * vte.spec: rebuild.
+
+Tue Jun  3 15:50:38 2003  Jonathan Blandford  <jrb redhat com>
+
+       * src/pty.c (n_read): add a missing break in the switch statement.
+
+2003-06-03  Kenneth Rohde Christiansen  <kenneth gnu org>
+       * configure.in: Added Limburgish (li) to ALL_LINGUAS.
+
+2003-06-02 nalin
+       * src/Makefile.am: start using libtool versioning in earnest.
+
+2003-06-01 nalin
+       * src/vtegl.c(_vte_gl_set_text_font): compile fix.
+
+2003-05-30 nalin
+       * src/vte.c(vte_sequence_handler_decset_internal): fix logic for
+       skipping over particular settings so that setting 1048 actually works.
+       * src/vte.c(vte_terminal_process_incoming): in debug mode, print out
+       characters with codepoints higher than 255 in hex rather than decimal.
+       * src/iso2022.c(_vte_iso2022_ambiguous_width): rename to
+       _vte_iso2022_ambiguous_width_guess because that's all we can do without
+       more context.
+       * src/iso2022.c(_vte_iso2022_ambiguous_width): add for using the
+       current encoding to determine what the width of an ambiguously-wide
+       character should be.  This seems to work better.
+
+2003-05-30  Padraig O'Briain  <padraig obriain sun com>
+       * src/vteaccess.c: Add implementation for get_character_extents,
+       get_offset_at_point and get_run_attributes. This fixes bug #110770.
+       Add casts to fix complier warnings on Solaris.
+       
+       * src/vtexft.c (_vte_xft_text_extents): Do not call return as function
+       returns void. Fixes compiler error on Solaris.
+
+2003-05-29 nalin
+       * src/vteapp.c: require -i for icon-title-changed messages, which got
+       really annoying really fast.
+       * src/trie.c(main): use g_quark_from_static_string for static strings.
+
+2003-05-29 nalin
+       * src/vte.c(vte_terminal_send): fix newline stuffing (used in linefeed
+       mode).
+       * src/vte.c(vte_unicode_strlen): rename to vte_unichar_strlen.
+       * src/vte.c(vte_terminal_set_title_internal): don't leak the new title
+       in the unlikely cases.
+       * src/vte.c(vte_terminal_process_incoming): be more careful with control
+       characters to avoid cases where we could be tricked into a loop.
+       * src/vteapp.c: emit a message when the icon title is changed.
+
+2003-05-29 nalin
+       * src/vte.c(vte_terminal_process_incoming): handle control characters
+       in the middle of control sequences.
+       * src/vte.c(vte_sequence_handler_cm): fix origin mode.
+       * src/vte.c(vte_sequence_handler_cv): fix origin mode.
+       * src/vte.c(vte_sequence_handler_cs): snap the cursor to the scrolling
+       region which is set.
+       * src/table.c(_vte_table_extract_number): extract a number digit by
+       digit as we do in the trie parser.
+       * src/vte.h: declare 'struct vte_char_attributes' again to restore API
+       back compat with 0.10.x.
+       * src/iso2022.c(_vte_iso2022_sequence_length): don't recognize PM
+       messages -- Xterm doesn't do anything with them and we don't want to
+       appear to hang when we're really just waiting for the end of the
+       message.
+
+2003-05-28 nalin
+       * src/vtefc.c(_vte_fc_defaults_from_rdb): only apply DPI if we were
+       able to get a value.
+       * src/vterdb.c, src/vterdb.h: use the display and screen of a passed-in
+       widget if asked to do so, else use screen 0 of the default display.
+
+2003-05-28 nalin
+       * configure.in: check for GTK+ 2.2, and if found, force use of
+       multihead-safe APIs to try to flush out some bugs.
+       * src/vte.c, src/vteapp.c, src/vtedraw.c, src/vtefc.c, src/vteglyph.c:
+       clean up some sloppy multihead changes.
+       * src/vte.c, src/vte.h (vte_terminal_match_set_cursor_type): add.
+       * src/vtedraw.c, src/vtedraw.h: add a draw_char() method which is
+       allowed to fail.
+       * src/vte.c(vte_terminal_draw_graphic): separate the width of a column
+       and the number of columns to be drawn.  Use _vte_draw_char() to avoid
+       crude approximations of characters when we have a font for them.
+
+2003-05-21 nalin
+       * src/vte.c(vte_terminal_scroll_region): force an entire window repaint
+       if we're supposed to scroll the background but we're not scrolling the
+       entire window.  This means we need to repaint the scrolled region, and
+       to keep things looking right, we need to repaint everything.
+       * src/vteapp.c(main): enable visible bell if we're disabling the
+       audible bell, and vice-versa.
+       * src/vte.c: flesh out some doc comments.
+       * doc/reference/tmpl/vte.sgml: flesh out some notes on signals.
+
+2003-05-21 nalin
+       * src/vteconv.c(_vte_conv): pass zero bytes which trigger EILSEQ
+       through and keep going.
+       * src/vteconv.c: replace use of g_utf8_strlen with an internal function
+       which doesn't stop counting at NUL characters.
+
+2003-05-21 nalin
+       * src/interpret.c: use _vte_matcher_free_params_array.
+       * src/vte.c(vte_invalidate_cursor_once): add a parameter for indicating
+       if this is a "cursor blink" (periodic) refresh, and if it is set and
+       the cursor isn't supposed to blink, suppress the invalidate.
+
+2003-05-21 nalin
+       * src/iso2022.c(_vte_iso2022_process): free the temporary array.
+       * src/matcher.c(_vte_matcher_free_params_array): add.
+       * src/vte.c: use _vte_matcher_free_params_array instead of the local
+       copy, which is removed.
+       * src/interpret.c, src/table.c, src/trie.c: use
+       _vte_matcher_free_params_array to free parameter arrays instead of
+       g_value_array_free, which doesn't take care of the pointer values.
+       * src/vte.c(vte_sequence_handler_set_title_internal): only attempt to
+       close the conversion descriptor if it was opened successfully.
+       * src/vteapp.c: add the -k option to spin after gtk_main() returns.
+       * src/vtefc.c: make copies of patterns with FcPatternDuplicate so that
+       we know where all of the returned patterns came from.
+       * src/vtexft.c(_vte_xft_font_for_char): set the item in the pattern
+       array to NULL if we successfully opened a font using the pattern.
+
+2003-05-20 nalin
+       * src/iso2022.c: clarify comments near one of the warning messages.
+       * src/vtefc.c(_vte_fc_transcribe_from_pango_font_description): unref
+       the Pango context, which was created for us.
+       * src/vtepango.c: keep track of the Pango context, and unref it when
+       it is no longer needed.
+
+2003-05-20 nalin
+       * src/Makefile.am: try juggling the CFLAGS and LIBS order to let the
+       xft CFLAGS/LIBS take precedence over everything else (#113335).
+
+2003-05-20 nalin
+       * src/ssfe.c: compile fix for Solaris, patch from #113344.
+
+2003-05-20 nalin
+       * src/vte.c: remove no-longer-used tree structure.
+       * src/vtefc.c: free strings returned by g_object_get().
+
+2003-05-20 nalin
+       * src/vte.c(vte_terminal_realize): create the terminal's draw structure.
+       * src/vte.c(vte_terminal_unrealize): free the terminal's draw structure.
+       * src/vteapp.c(main): enforce a clean shutdown by requiring that the
+       terminal and top-level window are both finalized before gtk_main()
+       returns.
+
+2003-05-20 nalin
+       * src/vte.c(vte_terminal_finalize): properly send a SIGHUP to the child
+       process if it hasn't already exited (#112505).
+       * src/vteapp.c: don't exit on EOF, only on child-exited.
+       * src/vte.c(vte_sequence_handler_sf): increment the scrolling offset
+       to avoid flickering when the application has defined a scrolling region
+       with top row == 1.
+
+2003-05-19 nalin
+       * src/iso2022.c, src/keymap.c, src/mev.c, src/vtebg.h, src/vteglyph.h:
+       remove comma from end of enum declaration (#111925).
+       * src/vtetc.c: don't use parameter-as-array-size compiler
+       extension (#111925).
+       * src/ssfe.c: don't assume that the compiler interprets \e correctly,
+       use %c with value of 27 instead (#111925).
+       * doc/reference/Makefile.am: obey CPPFLAGS and LDFLAGS (#111925).
+       * gnome-pty-helper/gnome-utmp.c: only include <utmp.h> if HAVE_UTMP_H
+       was defined (#111925).
+       * src/keymap.c, src/ssfe.c: unconditionally include <term.h> if we
+       defined HAVE_CURSES or HAVE_NCURSES, as having the header is a
+       precondition for defining either (#111925).
+       * src/iso2022.c: make each array have at least one element (#111925).
+       * src/pty.c, src/gnome-login-support.c: try to open /dev/ptc if opening
+       /dev/ptmx fails due to ENOENT (#111925).
+
+2003-05-19 nalin
+       * src/vteapp.c: don't exit on eof, just child-exited.
+       * src/vte.c(vte_terminal_eof): don't disconnect from SIGCHLD on eof,
+       the child might still be running.
+
+2003-05-19 nalin
+       * src/Makefile.am: change all instances of "termcap" to "vtetc".
+       * src/termcap.c, src/termcap.h: rename to vtetc.c, vtetc.h, to avoid
+       conflicts with system headers.
+
+2003-05-19 nalin
+       * src/keymap.c: fix KP_PageDown in application keypad mode (#113187).
+       * src/reaper.c: add a finalize method which properly cleans things up
+       so that the singleton can at least theoretically be destroyed (part of
+       a fix for #112172).
+       * src/vte.c: obtain a ref to a reaper object whenever we are waiting
+       for a child to exit.
+       * po/POTFILES.in: add more source files for scanning.
+       * src/iso2022.c: rework pieces to handle incomplete sequences at the
+       end of input.  Check for 8-bit SS2 and SS3 in case of EILSEQ.  Build
+       a fake ISO-8859-1 map for conversions using invalid maps.
+       * src/iso2022.c(_vte_iso2022_state_free): free the state's buffer.
+       * src/vteconv.c: internalize UTF-8 to UTF-8 conversions, fix handling
+       of incomplete sequences at the end of the available data.
+       * src/vte.c: implement send/receive and automatic linefeed modes.
+       * src/vte.c(vte_sequence_handler_sr): invalidate the row which contains
+       the cursor to ensure that it doesn't leave a trail.
+       * src/vte.c(vte_sequence_handler_return_terminal_id): add.
+       * src/vte.c(vte_terminal_feed_child_using_modes): add.
+
+2003-05-19 Telsa Gwynne  <hobbit aloss ukuu org uk>
+
+       * configure.in: Add cy (Welsh) to ALL_LINGUAS
+
+2003-05-13 nalin
+       * src/iso2022.c(_vte_iso2022_find_nextctl): don't recognize 8-bit
+       SS2 and SS3 by default, it breaks UTF-8 and other encodings (#112879).
+
+2003-05-13 nalin
+       * src/vtedraw.c, src/vtedraw.h: add _vte_draw_needs_repaint() to
+       indicate if the drawing back-end can only handle entire-window paints.
+       * src/vteconv.c: return a value from _vte_conv_close(), even though
+       it isn't used.
+       * src/vte.c(vte_terminal_paint): don't look at drawing starting at
+       negative row or coumn offsets.
+       * src/vtegl.c: prefer glX double-buffering to GDK's, and use double-
+       buffered possibly-direct windows instead of indirect pixmaps.
+
+2003-05-12 nalin
+       * src/vtebg.c(_vte_bg_get_pixmap, _vte_bg_get_pixbuf): account for the
+       foreign root pixmap not having a colormap by default, using the root
+       window's colormap if it doesn't already have one set.
+
+2003-05-12 nalin
+       * src/iso2022.c(_vte_iso2022_state_new): if we can't convert from the
+       locale encoding to UTF-8, use UTF-8 as the locale encoding (#112614).
+       * src/vtegl.c(_vte_gl_start): enable point smoothing.
+
+2003-05-08 nalin
+       * src/vtedraw.c, src/vtedraw.h (_vte_draw_get_colormap): let the caller
+       control whether or not we return the default colormap.
+       * src/vtegl.c: enable blending.  Don't specify any buffer depths.  Set
+       the current drawable before we do any drawing.  Call gluOrtho2D with
+       the right args to set up the right projection.
+       * src/vteskel.c: quiet compiler warning by removing a "const".
+       * src/vtedraw.c: juggle the preferred render order again.
+
+2003-05-08  Abel Cheung  <maddog linux org hk>
+
+       * configure.in: Added "mk" to ALL_LINGUAS.
+
+2003-05-07 nalin
+       * src/iso2022.c: let OSC command sequences be subject to code
+       conversion again (#112485).
+
+2003-05-07 nalin
+       * src/vteconv.c, src/vteconv.h: add VteConv as a thin wrapper around
+       GIConv.
+       * src/iso2022.c: use VteConv.
+       * src/matcher.c(_vte_matcher_find_valid_encoding): remove.
+       * src/matcher.c(_vte_matcher_wide_encoding): remove.
+       * src/trie.c: use VteConv.
+       * src/utf8echo.c: use VteConv.
+       * src/vte.c: use VteConv (#112446).
+
+2003-05-06 nalin
+       * src/vte.c: add "Since: 0.11" to documentation for functions which
+       aren't available in the 0.10 series.
+       * src/iso2022.c: default G2 to JIS0201, G3 to JIS0212 for Japanese,
+       because they appear to not be used by anyone else.
+       * vte.spec: merge with .spec file from RHL.
+
+2003-05-06 nalin
+       * src/vtegl.c: get text rendering semi-working.
+
+2003-05-06 nalin
+       * src/vteft2.c, src/vtegl.c, src/vtepango.c, src/vtepangox.c,
+       src/vtexft.c: when setting up backgrounds, don't deref an existing
+       background before fetching a new one, in case they're the same.
+       * src/vteglyph.c(_vte_glyph_draw): fix computation of the input offset.
+       * src/vtegl.c: implement drawing of backgrounds.
+
+2003-05-06 nalin
+       * src/iso2022.c(_vte_iso2022_map_J): include the whole JIS0201 map
+       instead of just the lower half.
+       * src/iso2022.c(_vte_iso2022_map_get): set the and_mask to clear the
+       high bits of pairs before looking them up in the maps.
+       * src/iso2022.c(_vte_iso2022_fragment_input): recognize the 8-bit
+       versions of SS2 and SS3.
+       * src/iso2022.c(_vte_iso2022_process_control): recognize the 8-bit
+       versions of SS2 and SS3.
+
+2003-05-06  Danilo Šegan  <dsegan gmx net>
+
+       * configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS.
+
+2003-05-05 nalin
+       * src/debug.h: include <glib.h> for gboolean type definition.
+       * src/matcher.c: include "config.h" and "debug.h".
+       * src/matcher.h: use G_BEGIN_DECLS/G_END_DECLS
+       * src/table.h: use G_BEGIN_DECLS/G_END_DECLS
+       * src/termcap.h: include <glib.h>, again for gboolean.
+       * src/vtebg.h,src/vterdb.h,src/vtergb.h: adjust macro used to prevent
+       multiple inclusions to match the rest of the tree.
+       * src/vtefc.c(_vte_fc_patterns_from_pango_font_desc): provide a callback
+       which can be used to override all defaults.
+       * src/vtegl.h,src/vtexft.h: don't include "config.h"
+       * src/vteglyph.c, src/vteglyph.h: add _vte_glyph_get_uncached().
+
+2003-05-04 nalin
+       * gnome-pty-helper/gnome-login-support.c(n_read,n_write): if ERESTART
+       is defined, treat it like EINTR and EAGAIN.
+       * src/pty.c(n_read,n_write): if ERESTART is defined, treat it like
+       EINTR and EAGAIN.
+
+2003-05-02 nalin
+       * configure.in: define _XOPEN_SOURCE_EXTENDED, _XOPEN_SOURCE, and
+       __EXTENSIONS__ to get definitions for msg_control and msg_controllen
+       on Solaris (#112036).
+       * src/vtedraw.c(_vte_draw_set_scroll): don't try to return a value from
+       this void function (#112036).  Patch from Hidetoshi Tajima.
+       * src/xticker.c: don't include getopt.h, which isn't even needed for
+       regular getopt() (#112036).  Patch from Hidetoshi Tajima.
+
+2003-05-01 nalin
+       * src/vtebg.c(vte_bg_set_root_pixmap,vte_bg_root_pixmap): remove some
+       debugging g_print() calls.
+       * src/iso2022.c(process_cdata): skip over NUL bytes (#112022).
+       * src/vte.c(vte_terminal_background_update): map the bgcolor values to
+       a pixel value before setting the window background color.
+       * src/nativeecho.c(main): echo NUL bytes if asked to do so.
+
+2003-05-01 nalin
+       * src/vtebg.c, src/vtebg.h: add a singleton object for managing
+       copies of background images, either the desktop background, an
+       in-memory pixbuf, or an on-disk file, with tinting.  Using a single
+       store for this stuff lets multiple widgets share images and should
+       reduce both CPU and memory consumption in applications which create
+       more than one VteTerminal instance with similar settings.
+       * src/vtedraw.c, src/vtedraw.h: adapt the set_background_pixbuf()
+       interface to the vtebg method and rename to set_background_image().
+       * src/vteft2.c, src/vtegl.c, src/vtepango.c, src/vtepangox.c,
+       src/vteskel.c, src/vtexft.c: update to work with newer vtebg/vtedraw
+       interfaces.
+       * src/vte.c(vte_terminal_filter_property_changes): remove in favor
+       of vtebg method.  Manage background state for vtebg.
+
+2003-05-01 Kang Jeong-Hee <Keizi mail co kr>
+       * doc/reference/Makefile.am: s/index.sgml/index.html/.
+       There's no index.sgml in html directory, but a index.html.
+
+2003-04-29 nalin
+       * src/vte.c(vte_sequence_handler_local_charset): remove the unused
+       DEFAULT_ISO_8859_1 case.
+       * src/vte.c(vte_terminal_class_init): don't call
+       _vte_matcher_narrow_encoding(), because we don't need it any more.
+       Change the error message emitted when _vte_matcher_wide_encoding()
+       fails (#111925), and mark it for translation.
+       * src/trie.c(main): don't call _vte_matcher_narrow_encoding() just
+       to print its result.
+       * src/vte.c(vte_terminal_set_encoding): include the right codeset name
+       in the error message.
+       * src/vteglyph.c(_vte_glyph_get): mark error message for translation.
+       * src/matcher.c, src/matcher.h: remove _vte_matcher_narrow_encoding().
+       Make tables of strings "const".
+
+2003-04-29 nalin
+       * src/vte.c(vte_terminal_unrealize): set the IM context's client window
+       to NULL before unreferencing it to avoid crashes when preedit is active.
+
+2003-04-29 nalin
+       * src/keymap.c: add keymaps for GDK_slash and GDK_question (#108299).
+
+2003-04-29 nalin
+       * src/vterdb.c(_vte_rdb_get): use INT_MAX instead of LONG_MAX when
+       passing in the maximum length, because it's returned in an int.
+
+2003-04-29 nalin
+       * src/iso2022.txt: fix the UTF-8 sample text which corresponds to the
+       ISO-2022-KR sample text so that it actually matches the text.
+
+2003-04-29 nalin
+       * src/iso2022.c(_vte_iso2022_map_U): add map for CP437.
+       * src/unitable.CP437: add.
+       * src/mkunitables.sh: add CP437.
+       * src/Makefile.am: add unitable.CP437 to the file list.
+
+2003-04-29 nalin
+       * src/iso2022.c(_vte_iso2022_process_control): accept and warn about
+       bogus map names (#110300).
+
+2003-04-28 nalin
+       * src/vte.c(vte_invalidate_cursor_once): rework to simplify the logic
+       of how many cells to invalidate when we have a preedit string.
+       * src/vte.c(vte_terminal_paint): draw the preedit string correctly for
+       cases more complicated than the default IM (seems to fix #111767).
+       * src/vterdb.c(_vte_rdb_get): use g_strncpy() and the property length
+       to avoid going past the end of the possibly-not-nul-terminated string.
+       * src/Makefile.am: build a standalone vterdb binary.
+
+2003-04-28 nalin
+       * src/vte.c(vte_terminal_insert_char): add another flag to skip over
+       sanity-checking the buffer when adding characters.
+       * src/vte.c(vte_terminal_process_incoming): sanity-check the buffer
+       only when necessary to save time.
+       * src/vte.c(vte_terminal_scroll_region): invalidate the region which
+       is exposed when we scroll so that the entire cell gets redrawn, avoiding
+       clipping problems (#111683).
+       * src/vte.c(vte_terminal_paint): fix math for determining where to
+       stop drawing.
+       * src/vte.c(vte_terminal_fill_rectangle): rename to ..._int to reduce
+       confusion over which internal drawing commands are offset and which are
+       not.
+       * src/vte.c(vte_terminal_insert_char): if performing a single
+       substitution, check the encoded width of the output char, not the
+       input char, which doesn't have one.
+
+2003-04-28 nalin
+       * src/vterdb.c, src/vterdb.h: add routines for pulling Xft antialiasing
+       and hinting options from the resource database.
+       * src/vtefc.c(_vte_fc_patterns_from_pango_font_desc): apply settings
+       from the resource database after applying settings from GTK+.
+       * src/vtefc.c(_vte_fc_defaults_from_rdb): added, for adding default
+       settings based on the resource database.
+
+2003-04-27 nalin
+       * src/vtefc.c(_vte_fc_defaults_from_gtk): complain when the installed
+       version of GTK+ doesn't support reporting Xft antialiasing and hinting
+       settings.
+
+2003-04-25 nalin
+       * src/vte.c(vte_sequence_handler_sf): freeze the window when scrolling
+       down in a restricted scrolling area again.
+
+2003-04-23 nalin
+       * src/iso2022.c(_vte_iso2022_state_set_codeset): save the new codeset.
+       * src/iso2022.c(process_cdata): compare the new codeset to the name of
+       the UTF-8 codeset instead of the local codeset to see if we need to
+       notify callers of a change.
+
+2003-04-23 nalin
+       * src/vte.c(vte_sequence_handler_sf): don't use the window freeze count
+       to check if it's safe to scroll using gdk_window_scroll(), require other
+       parts of this widget to declare it unsafe for those cases.
+
+2003-04-23 nalin
+       * src/vtexft.c(_vte_xft_char_width): take an explicit XftFont instead
+       of figuring out which one to use ourselves.
+       * src/vtexft.c(_vte_xft_draw_text): pass the XftFont which we're already
+       using to _vte_xft_char_width to save a call to _vte_xft_font_for_char.
+
+2003-04-23 nalin
+       * autogen.sh: accept libtool 1.5 in addition to 1.4 (#15968).
+
+2003-04-23 nalin
+       * src/vte.c,src/vte.h: (_vte_terminal_accessible_ref): add.
+       * src/vteaccess.c(vte_terminal_accessible_new): call
+       _vte_terminal_accessible_ref to ensure that accessible signals are
+       going to be emitted.
+
+2003-04-23 nalin
+       * src/dumpkeys.c: formatting fixup.
+       * src/iso2022.c: formatting fixups.  Try using U+FFFF as the "invalid"
+       marker character instead of '?', because it's actually invalid.
+       * src/pty.c: formatting fixup.
+       * src/reflect.c: formatting fixup.
+       * src/ring.c: formatting fixup.
+       * src/ssfe.c: formatting fixups.
+       * src/trie.c: formatting fixup.
+       * src/vte.c: formatting fixups.
+       * src/vte.c(vte_terminal_get_accessible): don't add a weak pointer to
+       the AtkObject if it isn't a valid AtkObject.  Only emit text-changed
+       signals if we managed to create a valid accessible peer.
+       * src/vteaccess.c: formatting fixups.
+       * src/vteaccess.c(vte_terminal_accessible_init): unset the EXPANDABLE
+       Atk state.  Set the RESIZABLE state.
+       * src/vteaccess.c(vte_terminal_accessible_class_init): Remove
+       spurious(?) call to bind_textdomain.
+       * src/vteaccess.c(vte_terminal_accessible_get_type): check if the
+       accessible peer of our peer's ancestor is derived from GtkAccessible,
+       and if it isn't derive from GtkAccessible instead of that.
+       * src/vteaccess.c(vte_terminal_accessible_get_type): register our
+       factory type.
+       * src/vteaccess.c, src/vteaccess.c: add VteTerminalAccessibleFactory.
+       * src/vtedraw.c: formatting fixup.
+
+2003-04-23 nalin
+       * src/vte.c(vte_terminal_background_update): always refetch the
+       root pixmap if we don't currently have a background image (#111386).
+
+2003-04-23 nalin
+       * src/vteaccess.c: implement an AtkComponent interface (part of
+       #110770).
+       * src/vteaccess.c(vte_terminal_accessible_focus_in): set the focus
+       state on the accessible peer (part of #110770).
+       * src/vteaccess.c(vte_terminal_accessible_focus_out): unset the focus
+       state on the accessible peer (part of #110770).
+       * src/vteaccess.c(vte_terminal_accessible_init): connect to the widget's
+       visibility-notify signals.
+       * src/vteaccess.c(vte_terminal_accessible_finalize): disconnect from
+       the widget's visibility-notify signals.
+
+2003-04-23 nalin
+       * src/vte.c(vte_terminal_background_update): don't bother generating
+       a new pixmap or panning the pixbuf -- we can use the desaturated
+       pixbuf directly now (#111386).
+       * src/vte.c(vte_terminal_paint): use the drawing offsets because we
+       don't regenerate new background pixmaps when the window is moved.
+       * src/vte.c(vte_terminal_draw_cells): add jittered bold text back in,
+       fell out in the drawing overhaul (#111430).
+
+2003-04-22 nalin
+       * src/iso2022.c(_vte_iso2022_fragment_input): account for valid CSI
+       sequences which were missed earlier.
+
+2003-04-22 nalin
+       * src/vte.c(vte_terminal_eof): dispose of the PTY completely.
+       * src/vte.c(vte_terminal_child_exited): dispose of the PTY completely.
+
+2003-04-22 nalin
+       * configure.in: add missing check for recvmsg.
+       * gnome-pty-helper/gnome-login-support.c: formatting and spelling fixes.
+       * gnome-pty-helper/gnome-login-support.c(n_read): reorganize.
+       * gnome-pty-helper/gnome-login-support.c(n_write): add.
+       * gnome-pty-helper/gnome-login-support.h: add prototype for n_write.
+       * gnome-pty-helper/gnome-pty-helper.c: only define the I_SENDFD version
+       of pass_fd() if I_SENDFD is defined, to clarify compile errors when it
+       isn't defined.
+       * src/pty.c(main): exercise session logging.
+       * src/pty.c(_vte_pty_open_with_helper): add more debug messages.
+
+2003-04-22 nalin
+       * src/iso2022.c(_vte_iso2022_map_get): force visible widths to 2 columns
+       for CJK maps which use 2 bytes per character.
+       * src/iso2022.c(_vte_iso2022_fragment_input): recognize CSI/OSC/PM
+       sequences as control sequences and not raw text, allowing us to treat
+       them specially later.
+       * src/iso2022.c(process_control): pass CSI/OSC/PM sequences through
+       unmodified (without going through maps).
+
+2003-04-22 nalin
+       * src/vte.c(vte_invalidate_cursor_once): don't bother doing anything if
+       we're fully obscured (related to #102703).
+
+2003-04-22 nalin
+       * src/vteapp.c(main): stop messing with fontconfig's list of font
+       directories.
+
+2003-04-22 nalin
+       * configure.in: rework link order so that xft2 is linked before anything
+       else.  You're still screwed if you link with both xft1 and xft2 libs,
+       but maybe this'll help (#107285).
+
+2003-04-22 nalin
+       * src/vteglyph.c: fix a couple of #errors.
+       * src/vte.c(vte_invalidate_cells): if the area we're invading is on the
+       edge, invalidate the edge as well.
+       * src/pty.c: implement and use wrappers for read and write which handle
+       EINTR and EAGAIN.
+       * src/vte.c(vte_terminal_scroll_region): don't use gdk_window_scroll if
+       the window is frozen for updates.
+       * src/vte.c(vte_terminal_sequence_handler_sf): when scrolling down while
+       we have a defined scrolling region, freeze the window to avoid flicker
+       when we update the scrolling offsets (#108058).
+
+2003-04-21 nalin
+       * gnome-pty-helper/gnome-login-support.c(n_read): don't bail out if
+       read() returns -1 and errno is either EINTR or EAGAIN, candidate fix for
+       #107534.
+
+2003-04-21 nalin
+       * src/vte.c(vte_terminal_io_read): add a couple of assertions here
+       just to be sure (#108066).
+
+2003-04-21 nalin
+       * src/pty.c(_vte_pty_ptsname): don't depend on PATH_MAX being
+       available and correct (#109805).
+       * src/vte.c(vte_terminal_set_termcap): don't depend on PATH_MAX being
+       available and correct (#109805).
+       * src/vte.c(vte_terminal_io_read): fix signed/unsigned comparison
+       (#108066).
+
+2003-04-21 nalin
+       * Makefile.am: add MESSAGE-OF-DOOM to EXTRA_DIST
+       * src/keymap.c: make Alt+Return generate ESC newline (#108863).
+
+2003-04-21 nalin
+       * src/Makefile.am: drop unitable.KSC5601
+       * src/iso2022.c: fixup comment re: KS X 1001 (#107119).
+       * src/mkunitables.sh: add two characters from KS X 1001:1998 (#107119).
+
+2003-04-21 nalin
+       * src/vte.c(vte_terminal_eof): don't try to process incoming data if
+       there isn't any (#110946).
+       * src/vtexft.c: mark a warning message for translation.
+       * src/vtegl.c: make the warning when glX isn't available debug-only.
+
+2003-04-21 nalin
+       * src/vteglyph.c: use #if HAVE_DECL_XXX instead of #ifdef HAVE_DECL_XXX,
+       noted by Bob Doan.
+
+2003-04-20 nalin
+       * src/vtexft.c: work around for garbled glyphs when drawing runs of
+       text using multiple fonts while mixing bitmap and antialiased fonts
+
+2003-04-17 nalin
+       * src/vte.c: add missing prototype for vte_terminal_process_incoming().
+
+2003-04-17 nalin
+       * src/vteglyph.c(_vte_glyph_get): quiet a compiler warning.
+       * src/iso2022.c: use KSX-1001 instead of KSC-5601 for Korean (#107119),
+       add maps for CNS 11643 planes 3,4,5,6,7 (can't test them, but hey).
+       Rework so that we get the data before it's passed to g_iconv(), and
+       return gunichars.
+       * src/interpret.c: adapt to changes in the iso2022 interfaces.
+       * src/vte.c: adapt to changes in the iso2022 interfaces.
+       * src/mkunitables.sh: add snippets for KSX 1001.
+       * src/iso2022.txt: add iso-2022-cn example text.
+
+2003-04-17 nalin
+       * src/vte.c(vte_terminal_process_incoming): invalidate a larger
+       rectangle to fix behavior wrt openi18n assertion 2.
+
+2003-04-16 nalin
+       * src/vte.c(vte_terminal_paint): fix logic error drawing the cursor
+       which caused ALTGR characters to always be used.  Draw the preedit
+       string in the right location.
+       * src/vte.c(vte_invalidate_cursor_once): expose the visible width of
+       the preedit string, not its length.
+
+2003-04-15 nalin
+       * src/vteaccess.c: fix broken debug message.
+
+2003-04-15 nalin
+       * src/vte.c: make row_data a structure containing an array instead of a
+       simple array.  Add a field to row data structures which tracks whether
+       or not we soft-wrapped from this line to the next one.  Make use of the
+       field when copying text and selecting by "line" (#105189).
+       * src/reflect.c: put the label in a scrolled window to avoid mad loops
+       when we resize it to accomodate more text, which shrinks the terminal,
+       which removes text from the label, which resizes it to be smaller, which
+       gives the terminal more space, which adds text to the viewable area,
+       which requires a bigger label, and so on.
+       * src/vte.c: move vte_terminal_get_text_range logic into
+       vte_terminal_get_text_range_maybe_wrapped for internal use,
+       vte_terminal_get_text likewise.
+
+2003-04-14 nalin
+       * src/vte.c: don't snap the beginning of selection to the next line in
+       select-by-line mode.
+
+2003-04-14 nalin
+       * configure.in, src/vteglyph.c: fix macro invocations so that when
+       LCD and GRAY2/GRAY4 pixel modes are supported by freetype, we don't
+       get confused by them.
+       * src/vtepango.c, src/vtepangox.c: fix background scrolling.
+
+2003-04-14 nalin
+       * autogen.sh: require automake 1.6, 1.5 chokes on AM_LDFLAGS, which 1.7
+       wants instead of LDFLAGS(!).  Require autoconf 2.52 or newer, because
+       older versions bail on configure.in.
+       * configure.in: Check if ft_render_mode_mono, FT_RENDER_MODE_NORMAL,
+       FT_PIXEL_MODE_MONO, ft_pixel_mode_mono, FT_PIXEL_MODE_GRAY2,
+       FT_PIXEL_MODE_GRAY4, FT_PIXEL_MODE_GRAY, ft_pixel_mode_grays,
+       FT_PIXEL_MODE_LCD are declared.
+       * src/vte.c, src/vteapp.c, src/vtefc.c, src/vtepango.c: handle being
+       built with GTK+ 2.0 or 2.2.
+       * src/vtegl.c: disable for GTK+ < 2.2.0.
+       * src/vtepangox.c: use a PangoX context instead of a Pango context
+       when determining font metrics.
+       * src/vteglyph.c: handle the twisty maze of load and render options and
+       pixel modes various versions of freetype support.
+
+2003-04-14 nalin
+       * configure.in: disable pangox, xft, glx drawing if run invoked with
+       the --without-x flag.
+       * vte.pc.in: include CFLAGS found by AC_PATH_XTRA when built with X.
+       * src/iso2022.c(_vte_iso2022_substitute_single): clean up and ensure
+       that ambiguous widths are respected.
+       * src/iso2022.c, src/iso2022.h: add _vte_iso2022_unichar_width().
+       * src/vte.c: remove old xft2/xft1/pango/pangox/core drawing code,
+       making draw the only supported method.  Remove most dependencies on
+       gdkx and Xlib, except for root pixmap ID watching.
+       * src/vtedraw.c: only use pangox, xft if X_DISPLAY_MISSING is not
+       defined.
+       * src/vtedraw.c, src/vtedraw.h: add get_using_fontconfig() method.
+       * src/vte.c(vte_terminal_get_using_xft): use
+       _vte_draw_get_using_fontconfig(), which is what apps really want to
+       know when they call this function.
+       * src/vtegl.c: wrap in #ifndef X_DISPLAY_MISSING.
+       * src/vtepangox.c: wrap in #ifndef X_DISPLAY_MISSING.
+       * src/vtexft.c: wrap in #ifndef X_DISPLAY_MISSING.
+       * src/vteglyph.c(_vte_glyph_cache_set_description): use horizontal
+       advance instead of bitmap width when calculating display widths.
+       Rename to _vte_glyph_cache_set_font_description.
+
+2003-04-09 nalin
+       * src/vte.c: add back some variables which are used after all.
+
+2003-04-09 nalin
+       * configure.in: add specific checks for PangoX and glX.
+       * src/vteft2.c, src/vteft2.h: add drawing method using freetype and
+       GdkRGB.
+       * src/vteglyph.c, src/vteglyph.h: add.
+       * src/vtepangox.c, src/vtepangox.h: add drawing method using PangoX.
+       * src/vtergb.c, src/vtergb.h: add.
+       * src/vtegl.c, src/vtegl.h: add placeholder drawing method using
+       freetype and glX.
+       * src/Makefile.am: add newly-added source files to libvte.la target.
+       * src/vtedraw.c, src/vtedraw.h: add get_visual and get_colormap
+       methods so that drawing methods can override the default visual and
+       colormap.  Rename get_text_base() to get_text_ascent(), which is more
+       correct.  Remove scroll(), which would just wrap gdk_window_scroll().
+       * src/vte.c: fix logic for choosing alternate render methods when
+       VTE_USE_XFT is "0".
+       * src/vteapp.c: add -- option to stop parsing options with getopt.
+       * src/vtefc.c: fix incorrect DPI read due to type mismatch (#109513).
+
+2003-03-31  Laurent Dhima  <laurenti alblinux net>
+
+       * configure.in: Added "sq" to ALL_LINGUAS.
+        
+2003-03-26 nalin
+       * src/Makefile.am: specify AM_CFLAGS and AM_LDFLAGS instead of CFLAGS
+       and LDFLAGS so that automake 1.7 doesn't kick us to the curb
+
+2003-03-13  Christian Rose  <menthos menthos com>
+
+       * configure.in: Added "ml" to ALL_LINGUAS.
+
+2003-03-07 nalin       
+       * src/vte.c(vte_terminal_paint): adjust coordinates for the border when
+       clearing rectangles.
+       * src/vteskel.c, src/vteskel.h: add.
+       * src/vtedraw.c: use the skeleton drawing code.
+2003-03-07 nalin       
+       * src/vte.c(vte_terminal_visibility_notify): watch for Visibility
+       events.
+       * src/vte.c(vte_invalidate_cells,vte_invalidate_all): don't synthesize
+       an expose event if we're fully obscured, that's just silly.
+
+2003-03-06 nalin       
+       * src/vte.c, src/vte.h(vte_terminal_set_background_tint_color): take a
+       const GdkColor* instead of a non-const color.
+
+2003-03-06 nalin       
+       * python/vte.defs: regenerate.
+       * python/vte.override: update for vte_char_attributes rename.
+
+2003-03-06 nalin       
+       * src/vte.c, src/vte.h, src/vteaccess.c: rename struct
+       vte_char_attributes to VteCharAttributes, fixup some docs.
+       * doc/reference: finish up docs.
+
+2003-03-05 nalin       
+       * vte.pc.in: add FT2_LIBS and FT2_CFLAGS to our libs and cflags.  Add
+       xft >= 2.0 and fontconfig as hard requirements.
+
+2003-03-05 nalin       
+       * src/vtedraw.c: don't spit out which rendering method we're using
+       except in debug mode.
+
+2003-03-05 nalin       
+       * src/vtepango.c, src/vtexft.c: don't print "Bogus font." when we think
+       the font metrics are screwy.
+
+2003-03-05 nalin       
+       * configure.in: require Xft2 and fontconfig, drop Xft1.  Require
+       freetype2.
+       * src/Makefile.am, src/xticker.c: add xticker, useless but interesting.
+       * src/vte.c, src/vte.h: add vte_terminal_set_scroll_background() to
+       enable background scrolling (where supported by the drawing code).
+       * src/vteapp.c: set the tinting color to the default background color
+       to see what that's like.  Add -s option to toggle scrolling backgrounds.
+       * src/vtefc.c, src/vtefc.h: add.  For converting PangoFontDescriptions
+       to sorted lists of FcPatterns suitable for passing to XftFontOpenPattern
+       or FT_New_Face.
+       * src/vtedraw.c, src/vtedraw.h: add.  New drawing layer.
+       * src/vtepango.c, src/vtepango.h: add.  Drawing layer using Pango.
+       * src/vtexft.c, src/vtexft.h: add.  Drawing layer using Xft2.
+       * src/vte.c: add render type VteRenderDraw for transitional period in
+       preparation for nuking other drawing code.  Merge HAVE_XFT bits into
+       HAVE_XFT2 areas.  Nuke Xft1-specific stuff.  Move drawing of lines
+       and rectangles to dedicated functions.  Always call vte_unichar_width()
+       instead of g_unichar_iswide().
+
+2003-03-04 nalin       
+       * src/vte.c(vte_sequence_handler_set_title_internal): fix swap of
+       one variable for another which prevented stripping of control chars,
+       spotted by Nam SungHyun.
+
+2003-03-04 nalin       
+       * src/vte.c(vte_terminal_insert_char): wrap properly when a scrolling
+       region is set (#107559).
+
+2003-02-28  Takeshi AIHANA <aihana gnome gr jp>
+
+       * po/ja.po: Added Japanese translations from gnome-2-2.
+
+2003-02-26 nalin
+       * src/iso2022.c(_vte_iso2022_substitute,_vte_iso2022_substitute_single):
+       force characters substituted through the ACS map to have width of 1.
+
+2003-02-26 nalin
+       * src/vte.c(vte_terminal_font_open_xft,vte_terminal_font_open_pango):
+       use an array of codepoints instead of a UTF-8 string so that we can
+       check for lack of font coverage in Xft fonts.
+
+2003-02-26 nalin
+       * src/vte.c: formatting fixups.
+
+2003-02-26 nalin
+       * src/vte.c(vte_terminal_font_open_xft,vte_terminal_font_open_pango):
+       patch from Jungshik Shin for detecting and handling fonts where ASCII
+       characters are double-width (#106618)
+
+2003-02-26  Taneem Ahmed  <taneem eyetap org>
+
+       * configure.in:  Added "bn" to ALL_LINGUAS.
+
+2003-02-25 nalin
+       * src/vteapp.c(main): take a shot at implementing xconsole-like
+       functionality when started with the -C flag: we open /dev/console and
+       TIOCCONS it, and just feed data to the widget until we lose ownership
+       of the MIT_CONSOLE_$(hostname) clipboard.
+
+2003-02-25 Samúel Jón Gunnarsson <sammi techattack nu>
+
+       * configure.in: added "is" to ALL_LINGUAS.
+
+2003-02-24 nalin
+       * src/vte.c(vte_sequence_handler_window_manipulation): don't report the
+       user-settable title and icon strings to applications, based on H D
+       Moore's "Terminal Emulator Security Issues" (CAN-2003-0070).
+       * src/vte.c(vte_sequence_handler_set_title_internal): strip out control
+       characters just to be on the safe side.
+
+2003-02-24 nalin
+       * src/vte.c(vte_sequence_handler_decset_internal): home the cursor when
+       we switch to the alternate screen (#105075).
+
+2003-02-23  Duarte Loreto <happyguy_pt hotmail com>
+
+        * configure.in: Added "pt" to ALL_LINGUAS.
+
+2003-02-21  Metin Amiroff  <metin karegen com>
+
+       * configure.in:  Added az to ALL_LINGUAS.
+
+2003-02-20 nalin
+       * src/keymap.c(_vte_keymap_map): in debug mode, skip coverage assertions
+       for specific keys (GDK_2 - GDK_8).
+       * src/keymap.c: remove unshifted entries for GDK_2 - GDK_8 (#106667)
+
+2003-02-20 nalin
+       * src/vte.c(vte_terminal_im_commit,vte_terminal_paste_cb): stop
+       gratuitously resetting the IM context.
+       * src/vte.c(vte_terminal_process_incoming): correctly determine when
+       we have an IM context -- it should be iff we're realized.
+       * src/vte.c(vte_terminal_key_press/release): only filter keypresses
+       through the IM context if we're realized, otherwise it doesn't exist.
+
+2003-02-20 nalin
+       * src/vte.c(vte_terminal_paint): reverse that last change -- don't
+       always assume proportional text.
+       * src/vte.c(vte_sequence_handler_ta): eliminate dead code.
+
+2003-02-20 nalin
+       * src/vte.c(vte_terminal_draw_row): move the initial drawing x left
+       whenever we back up to a previous cell to avoid drawing fragments.
+       * src/vte.c(vte_terminal_paint): always assume non-monospaced text,
+       because the "missing glyph" glyph consistently looks screwy otherwise.
+
+2003-02-20 nalin
+       * src/vte.c(vte_terminal_feed_child): don't reset the input method
+       here -- it may be in the middle of something (Red Hat #81542).
+       * src/vte.c(vte_terminal_im_commit): reset the input method when we
+       get text committed (Red Hat #81542).
+
+2003-02-19 nalin
+       * src/vte.c(vte_terminal_focus_in,vte_terminal_focus_out): if we're not
+       currently realized, don't try to tell our IM context that our focus
+       state changed, because we don't have one.  While we're at it, it's
+       silly to try to force the cursor to be drawn when we're not realized,
+       either.
+       * src/vte.c(vte_terminal_background_update): disconnect self, just in
+       case we were called directly while still queued, which would otherwise
+       leak the source, leading to potential problems later (Red Hat #84368).
+
+2003-02-19 nalin
+       * src/vte.c(vte_terminal_scroll_window): use gdk_window_scroll if the
+       first row to be scrolled is the first visible row, not just if it's the
+       first row we ever saw (Red Hat #83472).
+
+2003-02-19 nalin
+       * src/vte.c(vte_terminal_button_press): grab input focus on button 1
+       press (#106573, Red Hat #84384).
+
+2003-02-19 nalin
+       * src/vte.c(vte_terminal_sequence_handler_bt): add missing chunk of
+       fix for backtab.
+
+2003-02-19 nalin
+       * src/vte.c: turn on update debugging if VTE_DEBUG_FLAGS includes
+       "updates"
+
+2003-02-19 nalin
+       * src/keymap.c: add map entries for unmodified digit keypresses.
+
+2003-02-19 nalin
+       * src/vte.c(vte_terminal_match_add): use the default cursor by default,
+       so that we don't look weird to people who aren't used to the cursor
+       changing this way.
+       * configure.in: forcibly define VTE_DEBUG to "1" when we define it.
+
+2003-02-19 nalin
+       * src/vteaccess.c: emit focus-event signals from the accessible peer
+       when the widget receives focus-in and focus-out events, noted by
+       Marc Mulcahy.
+
+2003-02-18  Roozbeh Pournader  <roozbeh sharif edu>
+
+       * configure.in: Added "fa" to ALL_LINGUAS.
+
+2003-02-18 nalin
+       * src/vte.c, src/vte.h: add vte_terminal_match_set_cursor() (#105986).
+
+2003-02-18 nalin
+       * src/Makefile.am: add @LDFLAGS@ to all of the LDADD clauses, hopefully
+       fixing #105415.
+
+2003-02-17 nalin
+       * src/vte.c(vte_terminal_sequence_handler_cs): recognize and discard
+       invalid arguments (#57453).
+
+2003-02-17 nalin
+       * src/keymap.c: add map entries for Ctrl+digit keys (#106193, Red Hat
+       #83563).
+
+2003-02-17  Alessio Frusciante  <algol firenze linux it>
+
+       * configure.in: Added "it" (Italian) to ALL_LINGUAS.
+
+2003-02-16  Dmitry G. Mastrukov  <dmitry taurussoft org>
+
+       * configure.in: Added Belarusian to ALL_LINGUAS.
+
+2003-02-14 nalin
+       * src/vte.c(vte_terminal_sequence_handler_bt): fix to move back to the
+       leftmost column if there are no previous tabstops, exercised by
+       make menuconfig.
+
+2003-02-14 nalin
+       * src/vte.c(vte_terminal_background_update): handle pixbufs with
+       n_channels != 3.
+
+2003-02-14 nalin
+       * src/interpret.c: handle width masks now that we're encoding widths for
+       all characters.
+
+2003-02-14 nalin
+       * src/vte.c: more comments to keep myself from getting confused later.
+
+2003-02-13 nalin
+       * src/vte.c: change the coalescing timeout to 2ms.
+
+2003-02-13 nalin
+       * src/vte.c(vte_terminal_io_read): attempt to coalesce data received
+       within about 10ms to reduce load on the X server on systems where the
+       scheduler wakes us up as soon as we have a few bytes available.  Based
+       on a suggested fix by msw.
+       * src/vte.c(vte_terminal_io_read): never free buf, it's not a heap
+       variable any more.  Spotted by msw.
+
+2003-02-12 nalin
+        * src/vte.c(vte_terminal_finalize): close fd leak.
+        * src/vte.c(vte_terminal_fork_command): close potential fd leak.
+
+2003-02-12 nalin
+       * src/reflect.c(main): handle cases where the widget has no data and
+       returns NULL when we ask for it.
+
+2003-02-12 nalin
+       * src/reflect.c(main): do a complete read of the widget before we
+       start off in main to ensure we have accurate data.
+       * src/vteaccess.c(vte_terminal_accessible_update_private_data_if_needed):
+       only attempt to free the previous snapshot if it existed.
+
+2003-02-12 nalin
+       * src/reflect.c(main): connect to signals before any get emitted.
+       * src/vteaccess.c: use a GString to store snapshot text so that we
+       always have proper length information.
+
+2003-02-12 nalin
+       * src/reflect.c(text_changed_delete): spit out a warning if we receive
+       an out-of-range text_changed::delete signal.
+
+2003-02-11 nalin
+       * src/genwidths, src/uniwidths: add data for tracking ambiguous-width
+       Unicode characters.
+       * src/iso2022.c, src/iso2022.h: add _vte_iso2022_is_ambiguous() for
+       checking if a character is ambiguous, and _vte_iso2022_ambiguous_width()
+       for guessing how wide it should be based on the current locale.  Rename
+       _vte_iso2022_get/set_width to ...encoded_width to clarify the intent,
+       ditto for the related macros.
+       * src/table.c,src/trie.c: use renamed macros for reading encoded widths.
+       * src/iso2022.c(_vte_iso2022_substitute_single,_vte_iso2022_substitute):
+       handle ambiguous widths properly, and always encode a width.
+       * src/Makefile.am: use the default LDFLAGS, I think.
+       * src/vte.c,src/vte.h: add vte_terminal_set_background_tint_color().
+       * src/vte.c(vte_terminal_unrealize): unhook from background update
+       sources, because we may not have a display after that.
+       * src/vte.c(vte_terminal_size_allocate): only queue a background update
+       if we're in transparent mode and either we've been moved or we have no
+       background yet.  If our size changed, force a repaint.
+       * src/vte.c(vte_sequence_handler_window_manipulation): snip off the
+       padding along the edges when responding to requests for the window size
+       and location -- apps have no way to query it.
+       * src/vte.c(vte_terminal_get_text_range): skip over fragments properly.
+       * src/vte.c(vte_terminal_draw_row): skip over fragments properly.
+       * src/vte.c(vte_unichar_width): rework in terms of the width checking
+       in the iso2022 module for consistency.
+
+2003-02-06  Christian Rose  <menthos menthos com>
+
+       * configure.in: Added "id" to ALL_LINGUAS.
+
+2003-02-03 nalin
+       * src/vte.c(vte_terminal_size_allocate): suppress background updates if
+       we haven't moved and the background image already exists (#104868).
+
+2003-01-31 nalin
+       * src/vte.c(vte_terminal_get_accessible): keep a weak pointer to the
+       accessible peer instead of a static pointer (part of #104909).
+       * src/vte.c(vte_terminal_finalize): if the accessible peer still exists,
+       remove its weak pointer before attempting to unref it.
+       * src/vte.c: rename accessible_exists member to accessible_emit, which
+       more accurately reflects its purpose.
+       * src/vteaccess.c(vte_terminal_accessible_update_private_data_if_needed):
+       always update the cursor position, in case text was added or removed
+       without the cursor itself moving.
+       * src/vteaccess.c(vte_terminal_accessible_get_text_somewhere): don't
+       emit a warning when the caller attempts to read the Nth character when
+       we have 0 to N-1, just return an empty string.
+       * src/vteaccess.c(vte_terminal_accessible_new): make the terminal peer
+       a weak pointer (part of #104909).
+       * src/vteaccess.c(vte_terminal_accessible_finalize): if the terminal
+       peer is not NULL, disconnect it as a weak pointer and don't bother
+       disconnecting from its signals (part of #104909).  Add a debug message.
+       * src/vteaccess.c(vte_terminal_accessible_text_finalize):  Add a debug
+       message.
+
+2003-01-31 nalin
+       * src/vte.c(vte_unichar_isgraphic): rename to vte_unichar_is_graphic,
+       to match conventions used elsewhere.
+       * src/vte.c(vte_unichar_is_graphic): count 0xa3, 0x3c0, 0x2592,
+       0x25ae, 0x25c6 as graphic characters.
+       * src/iso2022.txt: add sample text using character set 0.
+
+2003-01-30  Fatih Demir <kabalak gtranslator org>
+
+       * configure.in: Added "tr" (Turkish) to the languages' list.
+
+2003-01-30 nalin       
+       * MESSAGE-OF-DOOM: added, for scaring people away.
+       * vte.spec: bump to 0.11.x for development.
+       * src/mev.c(main): reset modes before quitting.
+       * src/vte.c(vte_terminal_button_press): don't always extend selection
+       when not in event mode.
+
+2003-01-28 nalin       
+       * configure.in: make debugging support an explicit option to configure.
+       don't automatically enable debugging in maintainer mode.
+
+2003-01-27 nalin       
+       * src/vte.c(vte_terminal_realize): create the "invisible" cursor using
+       a bitmap instead of a pixmap, changing it from a 1x1 black square to
+       nothing.
+
+2003-01-27 nalin       
+       * src/vte.c(vte_terminal_decset_internal): make the various mouse event
+       modes mutually-exclusive, because apps expect them to be (#104395).
+       * src/vte.c: add a prototype for vte_terminal_background_update before
+       it is used to silence a compiler warning.
+
+2003-01-27 nalin       
+       * src/vte.c(vte_terminal_realize): force a background update immediately
+       when we realize instead of queuing it up (#104381).
+
+2003-01-26  Daniel Yacob <locales geez org>
+
+       * configure.in: Added "am" to ALL_LINGUAS.
+
+2003-01-24 nalin
+       * src/vte.c(vte_terminal_background_update): fix declaration order
+       (#13795).
+
+2003-01-24  Nam SungHyun  <namsh kldp org>
+
+       * configure.in: Added "ko" to ALL_LINGUAS.
+
+2003-01-23 nalin
+       * src/caps.c, src/vte.c: recognize and ignore attempts to set text
+       properties 21 and 2L, whatever those are (possible workaround #104154).
+
+2003-01-23 nalin
+       * src/iso2022.c: accept "1" and "2" as aliases for "B" (#104257).
+
+2003-01-23 nalin
+       * configure.in: check for curses if we don't have ncurses (the order
+       is ncurses, curses, libtermcap), as Solaris has neither ncurses nor
+       libtermcap.  Reported by Brian Cameron.
+       * src/keymap.c, src/ssfe.c: accept either curses or ncurses as
+       equivalent.
+
+2003-01-22 nalin
+       * src/Makefile.am, src/mev.c: add mev.
+       * src/vte.c(vte_sequence_handler_clear_screen): don't home the cursor
+       automatically.
+       * src/vte.c(vte_terminal_button_pressed): fix sense of shift overriding
+       event mode.  Ignore double- and triple-click in event mode.
+       * src/vte.c(vte_terminal_scroll): in event mode, send button release
+       events to the terminal if it's expecting them.
+       * src/vte.c(vte_terminal_send_mouse_button_internal): clamp coordinates
+       to existing cells.
+       * src/vte.c(vte_terminal_maybe_send_mouse_drag): compare integral cell
+       locations, not floating point, when choosing whether or not to drop
+       events in cell tracking mode.  Don't lose the modifiers.
+       * src/vte.c(vte_terminal_motion_notify): don't autoscroll in events
+       mode.
+
+2003-01-22 nalin
+       * src/caps.c: accept OSC{number};{string}ST as set-text-parameters,
+       per XTerm docs (part of #104154).
+       * src/keymap.c: revert change to prepend "1;" to keys with
+       modifiers (#104139).
+
+2003-01-22  Christian Rose  <menthos menthos com>
+
+       * configure.in: Added "mn" to ALL_LINGUAS.
+
+2003-01-21 nalin
+       * src/vte.c: streamline background images and transparency handling,
+       should use less memory now.
+
+2003-01-20 nalin
+       * src/reflect.c: add some debugging messages if REFLECT_VERBOSE is
+       set in the environment.
+
+2003-01-20 nalin
+       * src/Makefile.am, src/reflect.c: add reflect-text-view, for testing
+       with GtkTextView for sanity's sake.
+
+2003-01-20 nalin
+       * src/reflect.c: account for atk_text_get_text() being 0-clean.
+
+2003-01-20 nalin
+       * configure.in, src/Makefile.am, src/reflect.c: try to build reflect
+       with both vte and libzvt, building a useless binary if libzvt isn't
+       available.
+
+2003-01-20 nalin
+       * src/vte.c: colors 90-97 and 100-107 are bold colors, noted and patched
+       by Matthijs Melchior (#103874).
+
+2003-01-19  He Qiangqiang  <carton linux net cn>
+
+       * configure.in: Added "zh_CN" (Simplified Chinese) to ALL_LINGUAS.
+
+2003-01-19  Marius Andreiana <marius galuna.ro>
+
+       * configure.in: added 'ro' to ALL_LINGUAS
+
+2003-01-18 nalin
+       * src/vteaccess.c(update_private_data_if_needed): if the caret is past
+       the end of the text, count unichars properly.  Compute the caret
+       location correctly.
+       * src/reflect.c: handle text-caret-moved signals and display the caret.
+
+2003-01-18 nalin
+       * src/iso2022.c: update copyright dates.
+       * src/reflect.c: add.
+       * src/Makefile.am: add reflect (noinst).
+       * src/vteaccess.c(vte_terminal_accessible_get_text): always return a
+       string, even if it's zero-length.  Properly detect and handle requests
+       that go right up to the last byte.
+
+2003-01-18 Andras Timar  <timar gnome hu>
+
+       * configure.in: Added "hu" to ALL_LINGUAS.
+
+2003-01-17 nalin
+       * src/vte.c(vte_terminal_set_size): emit a "text-modified" signal,
+       because what you see changes when you resize the terminal.
+
+2003-01-17 nalin
+       * src/vte.c(vte_terminal_paint): don't draw cursors below or above the
+       screen, correctly compute the clear area when drawing the cursor,
+       if we're ignoring padding in general because we're monospaced, also
+       ignore it when drawing the character under the cursor.
+       * src/vte.c(vte_terminal_io_read): eliminate dead code.
+
+2003-01-17 nalin
+       * src/keymap.c(_vte_keymap_map): if we don't find an entry for the
+       requested key, and the terminal type is "xterm", retry using
+       "xterm-xfree86", possible fix for #103713.
+       * src/vte.c(vte_terminal_draw_row): fix handling of items with
+       width != 1 when computing runs.
+
+2003-01-17 nalin
+       * src/iso2022.c: fix boneheaded "config.h" instead of "../config.h"
+       include, pointed out by Dan Mills and Brian Cameron.
+
+2003-01-16 nalin
+       * configure.in: fix test for whether or not we need to check for termcap
+       * src/Makefile.am: override default includes to not prepend "." to the
+       include path, so that we can include the system <termcap.h> properly
+       * src/keymap.c: define the ncurses scratch buffer for use when we're
+       using termcap
+
+2003-01-16 nalin
+       * configure.in: actually disable attempts to build python bindings if
+       pygtk-2.0 isn't found (#103676)
+
+2003-01-14 nalin
+       * src/keymap.c(_vte_keymap_key_add_key_modifiers): if a key sequence
+       which needs modifiers doesn't have a numeric part, add "1" as the
+       numeric part before adding the modifiers.  Spotted by msw.
+
+2003-01-13 nalin
+       * src/ring.c, src/ring.h: add _vte_ring_insert_preserve(), which
+       scrolls lost items off the top instead of the bottom, as
+       _vte_ring_insert() does.
+       * src/slowcat.c (catfile): check that we didn't read an EOF before
+       attempting to write it.  Skip the more complicated checks and just
+       check that the file pointer isn't stdin before closing it.
+       * src/ssfe.c: cleanups.
+       * src/vte.c(vte_sequence_handler_sf): add lines to the scrollback area
+       when scrolling is restricted but the top line of the area is the
+       topmost visible line (Red Hat #75900).
+
+2003-01-13 nalin
+       * src/nativeecho.c, src/utf8echo.c: don't switch terminal modes before
+       or after echoing bytes -- doing so confuses me now.
+       * src/vte.c: make use of '?' to mark invalid data a compile-time define.
+       * src/vteaccess.c(vte_terminal_accessible_text_scrolled): properly
+       handle scrolling events with delta less than the window size (more
+       of #95901).
+       * src/vteaccess.c(vte_terminal_accessible_finalize): disconnect
+       from text-inserted, text-deleted, text-modified, text-scrolled,
+       cursor-moved, window-title-changed on finalize.
+       * src/vte.c(vte_terminal_key_press,vte_terminal_key_release,
+       vte_terminal_button_press,vte_terminal_button_release,
+       vte_terminal_motion_notify,vte_terminal_focus_in,vte_terminal_focus_out,
+       vte_terminal_scroll): track event modifiers in an object-local modifier
+       variable.
+       * src/vte.c(vte_terminal_key_press): always steal key events from the
+       input method if the meta key is down (#96006).  Don't munge the cursor
+       or keypad modes before passing them to the keymapping routines.  Stop
+       overriding the cursor mode on NumLock (doesn't appear to work as
+       documented in other terminals, needed to modify the keymap mode anyway
+       (#96364)).
+       * configure.in: define HAVE_XFT whenever HAVE_XFT2 is defined -- they're
+       more or less compatible (#103130).
+
+2003-01-10  Abel Cheung  <maddog linux org hk>
+
+       * configure.in: Added "zh_TW" to ALL_LINGUAS.
+
+2003-01-10  Dmitry G. Mastrukov  <dmitry taurussoft org>
+
+       * configure.in: Added Russian to ALL_LINGUAS.
+
+2003-01-09  nalin
+       * configure.in: disable the python bindings if we can't find python,
+       from Brian Cameron.
+
+2003-01-09  nalin
+       * src/vte.c: don't just skip reading data if selection is in progress --
+       we wedge if we do that (#101739).  Instead, temporarily stop reading
+       from the child pty.
+       * src/vte.c(vte_terminal_open_font_xft): if we get NULL when matching
+       fonts, use the desired pattern's name when displaying an error,
+       preventing a NULL dereference (#96769).
+       * configure.in: make building of python modules depend on configure
+       having been run with --enable-python. make --enable-python the default.
+       Fix an indentation error in the version check which chokes Python 2.2.2.
+       * src/vte.h, src/vte.c: add new signals to VteTerminalClass (NOTE: may
+       break ABI, so might as well add some padding)
+       * src/vteaccess.c: be more precise about locations in text_changed
+       signals (part of #95901)
+       * src/vte.c: get more selective about when we consider it necessary to
+       emit text-insert and text-delete events.
+
+2003-01-07  nalin
+       * src/vte.c(vte_terminal_key_press): Only suppress meta-sends-escape on
+       Backspace if backspace is mapped to the delete sequence. (#100635)
+
+2003-01-07  nalin
+       * src/vte.c(vte_terminal_setup_background): Use a lookup table
+       instead of a mess of floating point math when desaturating images.
+
+2003-01-06  nalin
+       * src/vte.c(vte_terminal_init): Add the periodic blinking refresh
+       with the normal timeout instead of 0 to avoid wedging when we get
+       created without focus.  Fix suggested by Dennis Haney (#102701).
+
+2003-01-06  nalin
+       * src/vte.c: Use a simple XftPatternGetString/GetDouble pair instead
+       of XftNameUnparse, which isn't in older versions of Xft (#101142).
+       * src/vte.c: Add a flag to VteTerminalPrivate which we can use to keep
+       track of modifications, particularly if they remove text, and toggle
+       it in several sequence handlers.
+       * src/vte.c(vte_terminal_process_incoming): Also emit the "contents
+       changed" signal when the modified flag is TRUE, not enough to fix
+       #95901, but at least making some forward progress.
+
+2003-01-05  Pauli Virtanen <pauli virtanen hut fi>
+
+       * configure.in (ALL_LINGUAS): Added "fi" (Finnish).
+
+2003-01-04  Stanislav Visnovsky  <visnovsky nenya ms mff cuni cz>
+
+       * configure.in: (ALL_LINGUAS) Added sk (Slovak).
+       * po/sk.po: Added Slovak translation.
+
+2003-01-02  nalin
+       * configure.in: look for libncurses or libtermcap
+       * vte.pc.in: include other libraries (ncurses, termcap, socket,
+       whatever) in the list of libraries.
+       * src/keymap.c(_vte_keymap_map): for Home and End, consult libncurses
+       or libtermcap if we have no hard-wired mapping and there's none in the
+       termcap file.  Should fix #100472, even in cases where Home and End
+       vary wildly from what I've got on my box.
+       * src/keymap.c: rename cursor/fkey_normal to cursor/fkey_default,
+       which makes a little more sense.
+
+2003-01-02  Zbigniew Chyla  <cyba gnome pl>
+
+       * configure.in: (ALL_LINGUAS) Added pl (Polish).
+
+2002-12-22  Artis Trops  <hornet navigator lv>
+
+       * configure.in: Added Latvian (lv) to ALL_LINGUAS.
+
+2002-12-19  Yanko Kaneti <yaneti declera com>
+
+       * configure.in: (ALL_LINGUAS) Added Bulgarian (bg).
+
+2002-12-18  nalin
+       * configure.in: complain if Xft2 and Xft aren't found.
+       * src/vte.c (vte_terminal_paint): if we're not double-buffered, clear
+       the drawing area before we draw text.
+       * src/vteapp.c: add -2 to toggle double-buffering.
+
+2002-12-16  nalin
+       * src/vte.c (vte_terminal_key_press): wire Shift+Home/Shift+End to
+       scroll-to-top and scroll-to-bottom.
+
+2002-12-13  nalin
+       * src/buffer.c: add a short test program.
+       * src/iso2022.c: use hard values instead of GDK defines in the 0 map.
+       Add _vte_iso2022_substitute_single() for performing a single mapping
+       operation.
+       * src/vte.c: use _vte_iso2022_substitute_single() instead of a local
+       mapping table when mapping line-drawing charset data, simplifies        
+       maintenance of the mapping.
+
+2002-12-12  Pablo Saratxaga <pablo mandrakesoft com>
+       * configure.in: Added Catalan (ca), Spanish (es)
+       and Hebrew (he) to ALL_LINGUAS
+
+2002-12-11  nalin
+       * configure.in: define VTE_USE_GNOME_PTY_HELPER if use of the helper
+       is enabled at compile-time (enabled by default).
+       * src/iso2022.c(_vte_iso2022_substitute): force characters received in
+       the line-drawing map to have width = 1 (more #99603), so that we can
+       distinguish them from line-drawing characters received in eucXX, which
+       have width = 2.
+       * src/vte.c(vte_terminal_insert_char): when mapping from line-drawing
+       to gunichars, force a width of 1.
+       * src/vte.c(vte_terminal_process_incoming): extend the bounding box
+       for updates one cell further to the right, in case the cursor is in
+       a cell which contains a wide character.
+       * src/pty.c(_vte_pty_start_helper): spit out a warning if the helper
+       isn't installed.
+       * src/pty.c: don't compile in any gnome-pty-helper-specific code if
+       VTE_USE_GNOME_PTY_HELPER isn't defined.
+
+2002-12-10  nalin
+       * src/buffer.c, src/buffer.h: centralize buffer length sanity checks,
+       add some utility functions for stuffing things into buffers and pulling
+       them back out.
+       * src/debug.c, src/debug.h: add a lifecycle debug class, for tracking
+       down initialization order weirdness.
+       * src/pty.c: try to check that we can run the pty helper before
+       trying to run it, to avoid SIGPIPE failures when it's not installed.
+       * src/vte.c: never grab focus -- let the shell app deal with it.
+       Return TRUE from mouse motion and press/release events to keep them
+       from being passed up. (#101089)
+
+2002-12-09  nalin
+       * configure.in: add "uk" to the list of languages.
+       * src/vte.h: remove the alternate attribute bit -- it's no longer
+       meaningful.
+       * python/vte.override: remove the alternate attribute, add the
+       strikethrough attribute.
+       * src/vte.c (vte_terminal_insert_char): perform drawing character set
+       to Unicode mapping at insertion time if the alternate attribute is set,
+       otherwise discarding the attribute.  If the character being inserted is
+       a graphic character, force its width to 1 or 2 depending on the current
+       codeset (#99603).
+       * src/vte.c (xlfd_from_pango_font_description): take advantage of
+       XftXlfdParse if we were built with Xft, as it appears to handle family
+       aliases.
+       * src/vte.c (vte_terminal_draw_graphic): decide what to draw using
+       Unicode code points (instead of reverse mappings to drawing set), and
+       implement the double-thick versions of many of the existing glyphs.
+       Return a boolean indicating whether or not we drew something.
+       * src/vte.c (vte_terminal_draw_row): if vte_terminal_draw_graphic()
+       returns FALSE, try to draw the graphic character using the current font.
+       * src/vte.c (vte_terminal_paint): if vte_terminal_draw_graphic()
+       returns FALSE, try to draw the graphic character using the current font.
+       * src/caps.c: add the undocumented default 0 to the OSC set text
+       parameters sequence (#100468).
+
+2002-12-03  nalin
+       * README: updates.
+       * src/iso2022.c, src/iso2022.h: add a width mask for overriding widths
+       for ambiguous Unicode characters, and _vte_iso2022_get_width() for
+       reading the width, using unused bits in Unicode in a manner similar to
+       http://www.cl.cam.ac.uk/~mgk25/ucs/iso2022-wc.html
+       * src/table.c,src/trie.c: strip out iso2022 widths when extracting
+       parameters of control sequences.
+       * src/vte.c: heed iso2022 widths when inserting characters into the
+       screen buffer, but clear then before storing them so that copy and
+       paste will continue to work.
+       * src/matcher.c, src/matcher.h: add matcher, a wrapper for table and
+       trie, and move _vte_table_narrow_encoding and _vte_table_wide_encoding
+       to this module.
+
+2002-12-03  nalin
+       * src/pty.c: if TIOCSCTTY is defined, use it, even if it's redundant.
+
+2002-12-02  nalin
+       * po: update-po
+       * src/utf8echo.c: change the default from resetting to the terminal's
+       default encoding before exiting to leaving it alone.  Don't mess with
+       the terminal's encoding if stdout isn't connected to a terminal.
+       * src/nativeecho.c: add, for printing random bytes.
+
+2002-12-02  nalin
+       * src/vte.c: don't zero-fill rows, space-fill them.
+       * src/vte.c(vte_terminal_is_word_char): Don't just fail if the
+       word_chars array doesn't exist.
+
+2002-12-02  nalin
+       * acinclude.m4: add AC_CHECK_CC_OPT from ac-archive.
+       * configure.in: check for cfmakeraw, sys/select.h, compiler support
+       for -std= (#99698)
+       * doc/boxes.txt: change reference to online Docbook reference to the
+       charts at the Unicode web site.
+       * src/dumpkeys.c: make a best-effort at making a terminal raw on systems
+       where cfmakeraw() isn't available, from patch by Brian Cameron.  Wait
+       for up to 1/50 of a second for more bytes we'll consider to be part of
+       a sequence.
+       * src/pty.c(getpt): ensure that the new terminal is opened in non-
+       blocking mode.
+       * src/trie.c: use g_unichar_digit_value() instead of subtracting '0'.
+       * src/vte.c: don't declare the xft_textitem member on non-Xft2 systems,
+       because it uses an Xft2-specific type (#99685).
+       * src/vteapp.c: add $pkgdatadir/fonts to the font path for testing.
+
+2002-11-25  nalin
+       * src/vte.c: fix mapping of Unicode code chars 0x252c and 0x2534 which
+       incorrectly mixed them up (#99474).
+       * src/iso2022.c: fix mapping of 'v' and 'w' from special graphics to
+        Unicode, which masked the above bug.
+
+2002-11-25  nalin
+       * src/vte.c: fix cd() to clear using the current colors.
+
+2002-11-25  nalin
+       * termcaps/xterm: add ta back in -- it's not a key sequence.
+
+2002-11-25  nalin
+       * src/vte.c: fix cd() to clear to the right of the cursor on the current
+       line instead of the entire line (#98844).
+
+2002-11-25  nalin
+       * src/vte.c: add keyboard debug messages when we change keyboard modes.
+       * termcaps/xterm: remove kh definition.
+
+2002-11-25  nalin
+       * src/keymap.c: make keypad arrow keys follow cursor mode (#98604).
+
+2002-11-25  nalin
+       * src/keymap.c: sort out when we add modifiers to keys (#98094).  Fix
+       Alt+Tab.
+       * termcaps/xterm: remove ta definition.
+
+2002-11-25  nalin
+       * src/debug.c, src/debug.h: add keyboard debugging class.
+       * src/dumpkeys.c: refresh on Ctrl-L, reset on 'r'.
+       * src/keymap.c, src/keymap.h: add more setting combinations, and a
+       simplistic check for more complete coverage.
+       * src/vte.c: add debug messages for keyboard handling.  Improve
+       detection of invalid coordinates as a signal that no text is selected
+       or hilited (#98946).
+       * termcaps/xterm.baseline: add a baseline copy of xterm from my termcap,
+       so that I can diff it more easily.
+       * termcaps/xterm: remove key definitions -- xterm's way more complicated
+       than the capability strings suggest.
+       
+2002-11-22  nalin
+       * configure.in: incorporate more correct check for the right version of
+       gtk-doc (#99314).
+
+2002-11-15  Hasbullah BIn Pit <sebol ikhlas com>
+
+        * configure.in: Added "ms" to ALL_LINGUAS.
+
+2002-11-11  nalin
+       * src/vte.c: ensure that when we select by line, we include all of the
+       last line, even if it's past the edge of the screen.  Snap selection to
+       the beginning or end of a line when selecting lines which don't exist.
+       Only strip off whitespace if there's nothing but whitespace to the right
+       of the selection.  Chuck the non-wrapping selection code.
+
+2002-11-11  nalin
+       * src/vte.c: properly set the "selecting" flag again when we start
+       selection (#97923).
+
+2002-11-11  nalin
+       * src/vte.c: rework selection so that word- and line-based selection
+       can wrap like XTerm does (#97057,#97719).
+
+2002-11-07  nalin
+       * src/vte.h: doc fixes.
+       * src/dumpkeys.c: use the older alternate-screen decset value.
+       * src/vte.c: fixup screwups on extending selection (#97118).
+
+2002-11-05  nalin
+       * src/vte.c: handle end-of-line selection correctly.  Stop highlighting
+       selection on click, but don't lose it until new text is selected
+       (#97117).
+       * python/vte.override: fix binding for set_colors() to properly take a
+       list of colors for the palette (#97682).
+       * src/vte.c, src/vte.h: add increase-font-size and decrease-font-size
+       to allow mimicking XTerm's behavior on Shift/Control+KP_Add/KP_Subtract
+       * src/vteapp.c: handle increase-font-size and decrease-font-size.
+
+2002-11-05  Abi Brady  <morwen evilmagic org>
+       * src/vte.c: Add and implement the strikethrough attribute.
+       Change underline to be drawn using the ascent, rather than
+       arbritarily putting it two lines above the bottom of the
+       charcell - looks much better with large fonts.
+
+2002-11-04  nalin
+       * NEWS: be more verbose.
+       * README: add more items to the TODO list so that I don't forget them.
+       * src/vte.c: ifdef out some of the selection code.
+
+2002-10-30  nalin
+       * src/buffer.c, src/iso2022.c, src/vteaccess.c: add ident tags.
+       * src/vte.c: don't scroll-to-bottom if we're selecting (#97923).
+
+2002-10-30  nalin
+       * src/vteapp.c: implement iconify, deiconify, raise, lower, maximize,
+       restore, refresh, resize, and move signals.
+       * src/vte.c: add vte_terminal_match_remove().
+       * src/vte.c (vte_sequence_handler_cb): clear the current column in
+       addition to columns to the left, spotted by Sam Varshavchik.
+       * src/vte.c:  Use g_array_set_size() to clear arrays instead of
+       removing each element.  Properly initialize new columns with just the
+       default colors and not other attributes (#96978).
+       * src/vte.c (vte_sequence_handler_ta): revert to non-overwriting tabs,
+       otherwise we got occasional drawing artifacts.
+
+2002-10-30  Abi Brady  <morwen evilmagic org>
+
+       * src/vte.c, src/vte.h : Support dim (halfbright) colours. All the
+       infrastructure for this was here already (apart from making sure bold
+       and half are mutually exclusive).  Add API set_color_dim, and let
+       set_colors take a palette of size 24.
+
+2002-10-29  Abi Brady  <morwen evilmagic org>
+       * src/iso2022.c (_vte_iso2022_map_[J4]): Map to UCS, not keysyms.
+       (which differ > 0xff).
+
+2002-10-28  Abi Brady  <morwen evilmagic org>
+       * src/vte.c: Add line-drawing representation for full block. Draw 
+       U+23BA-23BD. Fix drawing of U+23BD (scan line 9) and U+2592 
+       (checkerboard) to use bottom line of the charcell, not the top line of 
+       the one below.
+       * src/iso2022.c: Complete DEC Special Graphics to Unicode map.
+
+2002-10-25  nalin
+       * src/vte.c (vte_terminal_match_check_internal): snip off final
+       newlines when we're matching, they're usually not wanted.
+
+2002-10-24  nalin
+       * src/pty.c, src/pty.h: replace the simpler pty_open() function with
+       a logging version, adding the ability to specify a startup directory
+       (Red Hat #76529).
+       * src/vte.c, src/vte.h: replace the simpler fork_command() function with
+       a logging version, adding the ability to specify a startup directory
+       (Red Hat #76529).
+       * src/vteapp.c: modify call to handle new fork_command().
+       * python/vte.defs: update as above.
+       * python/vte.override: modify call to handle new fork_command(), adding
+       an optional "directory" argument.
+
+2002-10-23  nalin
+       * src/vte.c: refactor the selection code, cleaning up when selection is
+       cleared/started/extended (#95783).
+
+2002-10-22  nalin
+       * src/vte.c: rework how wide characters are stored to allow storing
+       tabs (#95958).
+
+2002-10-21  nalin
+       * python/vte.override: wrap vte_terminal_get_text() and
+       vte_terminal_get_text_range().  Based on patch from ha shao (#96230).
+
+2002-10-21  nalin
+       * src/vte.c, src/vte.h: add a user pointer argument to get_text
+       callbacks (#96230).
+       * src/Makefile.am: bump shared library version because we changed
+       a public function's signature.  Take the opportunity to replace padding
+       fields which had previously been used up.
+
+2002-10-21  jacob berkman  <jacob ximian com>
+       * src/Makefile.am (EXTRA_DIST): include decset, osc, and window
+
+2002-10-18 nalin
+       * src/iso2022.c: use character constants instead of hex constants.
+       * src/iso2022.txt: add more illustrations.
+       * src/decset: scriptlet to save some typing.
+       * src/vte.c: zero-terminate window and icon title strings again.
+       * src/decset, src/osc, src/window: add.
+
+2002-10-18 nalin
+       * src/keymap.c: add a mapping for the escape key.
+
+2002-10-18 nalin
+       * src/vte.c: implement decset 42 (enable/disable NRC processing), but
+       enable it by default.  Implement decset 44 (margin bell).
+       * src/vte.c: do not trust the event->string.  Use gdk_keyval_to_unicode
+       and the built-in keymapping to cope with the weirdness.  Extend the
+       range of characters we controlify from 0x40-0x60 to 0x40-0x7f so that
+       lower-case ascii chars controlify (not a word, I know).
+       * src/keymap.c: add map entries for GDK_Return and GDK_KP_Enter for
+       GDK_CONTROL_MASK = cr, normal = lf.
+
+2002-10-18 nalin
+       * src/vte.c: make sure that strings passed to a commit signal are zero-
+       terminated (#96131).
+       * python/Makefile.am: install the module in site-packages instead of a
+       subdirectory, which doesn't work on my system.
+
+2002-10-17 nalin
+       * src/vte.c: remove vte_terminal_update_scroll_delta, which only did
+       things vte_terminal_adjust_adjustments already did and was only called
+       immediately after.  Fill newly-added lines with the current attributes
+       if the current background isn't the default color (Red Hat #73853).
+       Implement ignored DECSET settings, so that we don't mistakenly complain
+       about settings not being implemented yet when we actually just want to
+       ignore them.
+       * vte.spec: 0.9.2
+
+2002-10-17 nalin
+       * src/vte.c: force the first cursor redraw after focus-in to always be
+       in the foreground color (Red Hat #75908).
+
+2002-10-17 nalin
+       * src/vte.c (vte_terminal_insert_char): force invalidation mode if
+       we're in insert mode to get the entire line redrawn.  Spotted by msw.
+
+2002-10-17 nalin
+       * configure.in: clean up tests for wint_t.  Patch from Brian Cameron.
+
+2002-10-17 nalin
+       * src/pty.c: close a possible race on systems where pty initialization
+       requires more than just opening the pty (for example, Solaris).  Spotted
+       by Brian Cameron.
+       * src/utf8echo.c: don't reset to iso-8859-1 unless -r is used.
+
+2002-10-16 nalin
+       * src/vte.c: remove a bogus assertion for a case which we were already
+       handling a little further down (incorrectly triggered by autowrap).
+
+2002-10-16 nalin
+       * src/vte.c: adjust our adjustments whenever a line might scroll off
+       the top of the buffer.  Fix computation of the new insertion delta to
+       ensure that it never goes below the scroll delta, which should fix the
+       resizing crashes (#94509, #95187, Red Hat #75871), and add some debug
+       assertions to verify this.
+       * configure.in, python/Makefile.am: build the python bindings as a
+       library, not a binary with wacky ldflags.
+
+2002-10-15 nalin
+       * src/vte.c: don't try to close the pty at finalize time if we didn't
+       open it.  Patch from ha shao.
+       * src/keymap.c, src/keymap.h: move the addition of modifiers into a
+       separate function.  Add the function key strings from terminfo for
+       fkey_sun and fkey_hp cases.  Make control+F1 = F13 only in vt220 mode.
+       * src/vte.c: apply modifiers to function keys in normal and legacy
+       modes.
+
+2002-10-14 nalin
+       * src/vte.c: add super-bogus bold text mode (Red Hat #74779).
+
+2002-10-14 nalin
+       * src/caps.c: recognize CSI-r (with no arguments) as resetting the
+       scrolling region in XTerm emulation (Red Hat #75902).
+
+2002-10-14 nalin
+       * src/keymap.c: add mappings for GDK_Page_Up and GDK_Page_Down,
+       missed in the conversion.
+       * src/vte.c: steal GDK_KP_{Add,Subtract,Multiply,Divide} from the
+       input methods (Red Hat #75207).
+
+2002-10-14 nalin
+       * configure.in: more $pkglibdir -> $libexecdir fixing.
+       * doc/Makefile.am: add rules for generating ps and text versions of the
+       ctlseqs docs.
+       * doc/reference/tmpl/vte.sgml: add snippet for "commit".
+       * python/python/vte.defs: update to add a binding for
+       vte_terminal_fork_logged_command().
+       * src/buffer.h: add a warning comment that these are private interfaces.
+       Wrap declarations in G_BEGIN_DECLS/G_END_DECLS.
+       * src/caps.h: add macros for the SS2/SS3 sequences.
+       * src/marshal.list: add a marshaller for the "commit" signal.
+       * src/keymap.c, src/keymap.h: move the getting-more-convoluted
+       keypress-handling code to a shell that parses tables of static info.
+       * src/vte.c: use the keymap for most non-printable keys.  Add a "commit"
+       signal to allow an app to just use the terminal for displaying data and
+       grabbing input (missing functionality noted by ha shao).  Obey the
+       application's desired meta-sends-escape setting.  Recognize HP function
+       key mode.  Recognize and handle legacy XTerm function key mode.  Force
+       a redraw if the child application tries to switch to 80/132 columns,
+       even though we don't usually let them succeed.  Don't try to send
+       keystrokes to the child pty when there is no child pty.  Don't convert
+       final whitespace to newlines when copying text (Red Hat #74611).
+       * python/cat.py: test program for running without a command.
+       * termcaps/xterm: change the definitions for ku/kd/kl/kr to match
+       XTerm in normal cursor mode instead of application cursor mode.
+
+2002-10-11 nalin
+       * src/vte.c: properly distinguish cursor key mode and keypad key mode,
+       obey application mode for cursor keys (#92941).
+       * src/pty.c: reset signal handlers before exec() (Red Hat #75341).
+
+2002-10-11 nalin
+       * src/trie.c: change the typedef of wint_t here to match vte.c (now
+       a gunichar instead of a long).  Spotted by Brian Cameron.
+
+2002-10-11 Brian Cameron <Brian Cameron sun com>
+       * configure.in: Changed to that wchar.h is included when checking for
+       wint_t on Solaris.  This was needed because on Solaris wint_t is defined
+       to be a long, and in vte.c its definition was recently changed to be a
+       gunichar.  This caused the compile to break on Solaris.
+
+2002-10-10 nalin
+       * configure.in, src/pty.c, gnome-pty-helper/Makefile.am: fix the bits
+       I missed when fixing #95085.
+
+2002-10-10 nalin
+       * src/vteapp.c, python/vte-demo.py: allow specifying the scrollback
+       buffer size.
+       * src/vte.c: if we don't have wint_t, typedef wint_t as a gunichar,
+       not a long.
+
+2002-10-09 nalin
+       * src/buffer.c, src/buffer.h: add.
+       * src/interpret.c, src/vte.c: use _vte_buffer structures instead of
+       char arrays with separate lengths.  Use a scratch buffer for holding
+       the results of conversions.
+       * src/vte.c: separate the pango and pangox drawing paths so that they're
+       easier to tweak and compare to each other.
+       * src/vte.c: ditch the smooth scrolling change, which won't work right
+       anyway (expose events don't get processed until after we finish
+       processing a chunk of data unless we explicitly request it, so using a
+       bbox is both simpler and faster).  Use a mask when creating the cursor
+       we use for hiding the cursor.
+
+2002-10-09 nalin
+       * vte.spec, gnome-pty-helper/Makefile.am: install gnome-pty-helper into
+       the libexecdir, not pkglibdir (#95085).
+       * src/vte.c: obey smooth/jump scrolling options, default is jump scroll.
+
+Mon Oct  7 14:53:12 2002  Owen Taylor  <otaylor redhat com>
+       * src/vte.c (vte_font_match): Fix over-aggressive 
+       Xft => Fc conversion - need to call XftDefaultSubstitute to pick up Xft
+       X resources, not FcDefaultSubstitute.
+
+2002-10-01  Stanislav Brabec  <sbrabec suse cz>
+
+       * configure.in: Added cs to ALL_LINGUAS.
+
+2002-09-24 nalin
+       * src/vte.c(vte_terminal_set_word_chars,vte_terminal_is_word_char):
+       if the list of word characters is NULL or zero-length, try to guess
+       with (g_unichar_isgraph() && !g_unichar_ispunct()), which seems to
+       produce reasonable results (#77134).
+
+2002-09-24 nalin
+       * gnome-pty-helper/acinclude.m4: Fix HAVE_UT_UT_TV for cases where
+       the static initializer might not work right (#93774, patch from
+       Kalpesh Shah).
+
+2002-09-24 nalin
+       * README, gnome-pty-helper/README:  Doc fixups (mention gnome-terminal
+       instead of profterm, note the proper permissions for gnome-pty-helper,
+       #84505).
+
+2002-09-20 nalin
+       * src/ring.c: Fix a ring-buffer manipulation bug (Red Hat #74290) which
+       might cause a new item to be inserted in the wrong location.
+
+2002-09-19 nalin
+       * src/interpret.c: Munge input data the way the terminal does so that
+       conversion failures don't wedge us.
+
+2002-09-19 Brian Cameron <Brian Cameron sun com>
+       * src/vte.c: Backed out scrolldelay patches from 09-17 and 09-18 at
+       Nalin's request.  Left in the patch which allows programs which 
+       update the screen non-linearly like lynx to work properly.
+
+2002-09-18 Brian Cameron <Brian Cameron sun com>
+       * src/vte.c: Corrected a problem with yesterday's patch.  I am now
+       properly calling g_source_remove on the scroll_delay timeout
+       function.  This prevents VTE from core dumping if you start up
+       more than one VTE gnome-terminal and exit from one of them.  Also
+       made the vte_scroll_timeout function a little cleaner by using
+       the VTE_IS_TERMINAL macro.
+
+2002-09-17 Brian Cameron <Brian Cameron sun com>
+       * src/vte.c: Fixed bug with my 09/11 speedup fix which caused programs
+       that update the screen non-linearly like lynx to update incorrectly.
+       Also included a speed improvement which delays the scroll-down for
+       70ms.  Too fast to be noticeable to the user, but it speeds up VTE
+       greatly.
+
+2002-09-13 nalin
+       * src/pty.c: Fix typo which broke builds on systems where MSG_NOSIGNAL
+       is defined.
+
+2002-09-12 Brian Cameron <Brian Cameron sun com>
+       * configure.in : Added -lsocket to LIBS if socket is in libsocket,
+       so VTE will compile on Solaris.
+
+2002-09-12  jacob berkman  <jacob ximian com>
+
+       * src/pty.c: only use MSG_NOSIGNAL if it's defined
+
+       * gnome-pty-helper/gnome-pty-helper.c (struct pty_info): remove
+       master_fd and slave_fd fields
+       (shutdown_pty): don't close master/slave fd's here...
+       (pty_add): don't take master/slave fd args
+       (open_ptys): ...close master/slave fd's right after passing them
+
+       this fixes a hang after closing a window on os x, not sure why...
+
+       * gnome-pty-helper/Makefile.am (install-exec-hook): remove
+       trailing / after $DESTDIR
+
+       * configure.in: AC_CHECK_FUNC() doesn't do AC_DEFINE(HAVE_FOO), so
+       do that for socket() and socketpair() if they are found
+
+2002-09-12 nalin
+       * src/vte.c(vte_invalidate_cursor_once): Remove the invalidate_cells
+       parameter, because the function is a big no-op if FALSE, in which case
+       we should just not call it instead. (vte_terminal_process_incoming):
+       refresh the right number of rows after processing a block of data.
+
+2002-09-12 Brian Cameron <Brian Cameron sun com>
+       * src/vte.c Fixed minor error with my previous patch.  This just makes
+       a warning go away.
+  
+2002-09-11 nalin
+       * src/pty.c: Reorder definitions to avoid implicit declaration warnings.
+       * configure.in: Check for socketpair().  Check for socket() in libc
+       before poking around in libsocket.
+       * gnome-pty-helper/configure.in: Check for openpty() in libutil as well,
+       and do so before we check for other functions.
+
+2002-09-11 nalin
+       * configure.in, gnome-pty-helper/cofnigure.in: Test for sendmsg() with
+       AC_CHECK_FUNCS instead of AC_TRY_COMPILE.
+       * acconfig.h: Removed.
+       * src/pty.c: Formatting.
+
+2002-09-11 Brian Cameron <Brian Cameron sun com>
+       * configure.in: Added check for socket library and SendMsg
+       check. 
+       * acconfig.h: Added this file with a HAVE_SENDMSG definition.
+       * gnome-pty-helper/configure.in: Added checks needed for the
+       source code, including the SendMsg check.
+       * src/pty.c: Corrected _vte_pty_pipe_open so it works on
+       Solaris.
+       *src/vte.c: Made some speed improvements so vte_invalidate_cells
+       is not called for every character in the while loop in 
+       vte_process_incoming, but only once when the while loop is done.
+
+2002-09-11 nalin
+       * gnome-pty-helper: Update from libzvt CVS.
+       * python/Makefile.am: Fix some automake breakage.
+
+2002-09-11 nalin
+       * python/Makefile.am: Fix my broken merge of Jacob's patch to make
+       inability to build python modules non-fatal.
+
+2002-09-11 nalin
+       * src/vte.c: Skip lookups for padding information if we're pretty sure
+       we're using a monospaced font.
+
+2002-09-10 nalin
+       * src/vte.c: Fix from Brian Cameron for uninitialized GError in
+       vte_wc_from_unichar().
+       * src/interpret.c, src/iso2022.c, src/pty.c, src/ring.h, src/table.c,
+       src/table.h, src/trie.c, src/vte.c, src/vteaccess.c: Signed/unsigned
+       int/size_t/gsize and pointer typecast warning fixes from Brian Cameron.
+       * src/vte.c: Avoid invalidating the cursor in the cursor blink
+       timeout unless we have focus.
+
+2002-09-10  Jacob Berkman  <jacob ximian com>
+       * configure.in (ALL_LINGUAS: remove es until the file really gets
+       added.  also it wasn't added alphabetically
+
+2002-09-10 Pablo Gonzalo del Campo <pablodc bigfoot com>
+
+        * configure.in: Added "es" to ALL_LINGUAS
+
+2002-09-10 nalin
+       * src/pty.c, src/pty.h: Add vte_pty_close() and
+       vte_pty_open_with_logging(), breaking the ABI.
+       * src/vte.c, src/vte.h: Add vte_terminal_fork_logged_command(), breaking
+       the ABI.
+       * gnome-pty-helper/*: Swallow the pty helper bits of gnome-libs,
+       but install into $pkglibdir instead of $sbindir so that existing
+       packages don't suddenly start breaking.
+       * src/termcap.c(_vte_termcap_find_string_length): Fix signature to
+       match the declaration in termcap.h.  From patch by Jacob Berkman.
+
+2002-09-06 nalin
+       * configure.in: Add $X_PRE_LIBS to the front of $X_LIBS, -lX11 and
+       $X_EXTRA_LIBS to the end of $X_LIBS.  Remove some cruftiness and set
+       CPPFLAGS when checking for Xft.  Check for the existence of wchar.h,
+       because it might not exist.  Use an automake conditional to make
+       compilation of the Python bindings non-critical.  From patch by
+       Jacob Berkman.
+       * src/pty.c: Silence compiler warning when exec() fails.  From patch
+       by Jacob Berkman.
+       * src/interpret.c, src/vte.c: Stop including langinfo.h since we don't
+       call nl_langinfo() any more.  Adapted from patch by Jacob Berkman.
+       * src/caps.c: Fill in a couple of missing initializers.
+       * src/vte.c, src/vte.h: Add accessor functions for use in language
+       bindings.
+       * python/vte.defs: Add defs for the new accessor functions.
+       * python/vte-demo.py: Add a scrollbar to the sample window, handle
+       more of the options the C version handles.  Stop expecting additional
+       arguments with a signal that doesn't include any.
+       * python/Makefile.am: We only have one target, so don't bother with
+       target-specific primaries if we can avoid it (#92252).
+       * vte.pc.in: Note build dependencies on ATK, Pango, and PangoX.
+
+2002-09-05 nalin
+       * src/caps.c, src/caps.h, src/debug.c, src/debug.h, src/interpret.c,
+       src/iso2022.c, src/iso2022.h, src/pty.c, src/reaper.c, src/ring.c,
+       src/ring.h, src/table.c, src/table.h, src/termcap.c, src/termcap.h,
+       src/trie.c, src/trie.h, src/utf8echo.c, src/vte.c, src/vteaccess.c,
+       src/vteapp.c: prefix library-internal interfaces with underscores so
+       that gtk-doc doesn't guess they're public.
+       * src/vte.c: return FALSE from focus-in/focus-out/expose handlers.
+
+2002-09-05 nalin
+       * src/caps.h, src/debug.h, src/iso2022.h, src/marshal.h, src/ring.h,
+       src/table.h, src/termcap.h, src/trie.h: add giant warnings about how
+       these headers define library-internal interfaces.
+       * vte.spec: 0.8.18
+
+2002-09-05 nalin
+       * docs/reference: first pass at writing documentation
+       * src/termcap.c: fix how'd-that-ever-work in vte_termcap_strip(), patch
+       from Brian Cameron.  Take \\e as an alias for \\E, which is already
+       an alias for Escape.
+       * src/vte.c(vte_terminal_get_cursor): Return an absolute cursor position
+       instead of a relative position.
+
+2002-09-04  jacob berkman  <jacob ximian com>
+
+       * src/vte.c (vte_default_substitute): only compile the FC_HINT_STYLE
+       part if FC_HINT_STYLE is defined
+
+2002-09-04 nalin
+       * src/vte.c: Add missing <fontconfig/fontconfig.h> include for Xft2,
+       spotted by Jacob Berkman.
+
+2002-09-04 Brian Cameron <Brian Cameron sun com>
+       * src/vte.c: Avoid double color deallocations with Xft.
+       * configure.in: Added stropts.h check for Solaris.
+       * src/vte.c: Do not send data to the slave if the length is zero.
+       Some shells on Solaris do not handle this well.
+       * src/pty.c: Added ptem/ldterm/ttcompat ioctls so VTE will work
+       on Solaris.
+
+2002-09-03 nalin
+       * src/vte.c: Avoid double color deallocations with Xft.
+
+2002-09-03 nalin
+       * src/vte.c: Handle color allocation failures with Xft better.
+       * src/vte.h: Clean up typedef declarations.
+
+2002-09-03 nalin
+       * src/marshal.list, src/reaper.c, src/reaper.h, src/vte.c: Modify the
+       child-exited signal to pass a signed int and an unmodified exit status,
+       allowing the callback to check for normal/abnormal exit status.
+
+2002-09-02 nalin
+       * src/vte.c: Don't send zero-length strings to the child -- it may not
+       be able to cope properly.  Spotted by Brian Cameron.
+
+2002-08-30 nalin
+       * src/vte.c: Handle cursor exposes correctly for multicolumn characters,
+       no matter which cell the cursor is in.  Fix autoscrolling boundary
+       checks for when allocation.y != 0.
+
+2002-08-30 nalin
+       * src/vte.c(vte_terminal_insert_char): Wrap correctly to avoid screwing
+       up multicolumn characters.
+
+2002-08-30 nalin
+       * src/vte.c: Get smarter about when it's necessary to start messing
+       with our adjustments (Red Hat #73091).  Change the way we clear the
+       screen so that all of the contents of the current screen become
+       scrollback data.
+
+2002-08-30 nalin
+       * src/vte.c: Register VteTerminalEraseBinding with GObject as an
+       enumerated type.
+       * python/vte.defs: Update.
+       * python/vte.overrides: Ignore vte_terminal_get_text_range().
+
+2002-08-30 nalin
+       * src/vte.c: Restore the focus-in/focus-out handlers -- the defaults
+       don't quite DTRT for us because they miss our im_context (#72946).  When
+       setting the cursor location for the input method, make the Y coordinate
+       relative to the window, not the scrollback buffer.  When resizing the
+       scrollback buffer, clamp the cursor to the set of possible locations,
+       not the visible locations.
+
+2002-08-30 nalin
+       * src/vte.c: Initialize the pty master fd to -1 to avoid spurious
+       window resizes on fd 0.
+       * src/debug.c, src/debug.h: Add a "pty" debug message class.
+
+2002-08-30 nalin
+       * src/iso2022.c: Fix a how'd-that-ever-work bug (not returning anything
+       from vte_iso2022_new()), spotted by Brian Cameron.
+       * configure.in: Use -Wall when building with gcc in maintainer mode.
+       * src/interpret.c, src/ring.h, src/table.c, src/trie.c, src/vte.c,
+       src/vteaccess.c: Warning cleanups.
+
+2002-08-29 nalin
+       * src/vte.c: Clean up bookkeeping for mouse autoscrolling and adjustment
+       change notifications.  Reset the scrolling and insertion deltas when
+       clearing the history.
+       * src/interpret.c: Don't dump data on incomplete conversion errors,
+       which we're going to retry anyway.
+       * src/iso2022.txt: Add iso-2022-kr examples (no workee -- uses GR).
+
+2002-08-28 nalin
+       * src/vte.c, src/vte.h: Add vte_terminal_copy_primary and
+       vte_terminal_paste_primary(), because I really want to let
+       profterm decide default values for key bindings.
+
+2002-08-28  Gustavo Noronha Silva  <kov debian org>
+       * configure.in (ALL_LINGUAS): added pt_BR
+
+2002-08-27 nalin
+       * src/vte.c: Stop autoscrolling on button release.
+
+2002-08-27 nalin
+       * src/vte.c: When autoscrolling, clamp the new boundary to what the user
+       can see.
+
+2002-08-27 nalin
+       * src/vte.c: Implement autoscroll (Red Hat #70481).
+
+2002-08-27 nalin
+       * src/vte.c: Only perform cr-lf substitutions when pasting text, not
+       when inputting from a live user (Red Hat #72639).  Bind GDK_ISO_Left_Tab
+       to kB.  Formatting changes.
+       * termcaps/xterm: Bind kB to back-tab (Red Hat #70340).
+
+2002-08-27 nalin
+       * src/vte.c: Don't tamper with the scrolling offsets -- they're updated
+       when we handle adjustment_changed notifications.  Scroll instead of just
+       moving the cursor down when soft-wrapping to the next line.  Avoid
+       emitting adjustment_changed when only the value has changed, likewise
+       for the value and the other fields of the adjustment.
+
+2002-08-27 nalin
+       * src/vte.c: Keep cursor position and scrolling offsets from going
+       wonky when you resize, especially on the alternate screen.  Suppress
+       duplicate adjustment_changed notifications.
+       * src/vteapp.c: Set the MIN_SIZE geometry hints so that we can resize
+       to unreasonably-small dimensions.
+       * src/ring.c, src/ring.h: Add vte_ring_new_with_delta().
+
+2002-08-26 nalin
+       * src/vte.c: Add padding spaces after full lines as well -- spotted by
+       both notting and pjones.
+
+2002-08-26 nalin
+       * src/vte.c: Don't deadlock when substitution fails, spotted by msw.
+
+2002-08-26 nalin
+       * src/vte.c: If GDK_USE_XFT is set, check the value of GDK_USE_XFT, not
+       VTE_USE_XFT.  Spotted by hp.
+
+2002-08-25 nalin
+       * src/vte.c: Heed the reverse-video setting when painting character
+       cells again.  Make selection and matching coordinates global, fixing
+       the selecting-while-scrolling case.  Prevent overdraws into the padding
+       area on the right.
+
+2002-08-25 nalin
+       * src/vte.c: Make nd() move right but not wrap -- according to Strang
+       it's undefined, but xterm doesn't wrap it.  Separate do/DO from sf/SF
+       and up/UP from sr/SR, because the scrolling behavior is supposed to be
+       different.  Add support for decset/decreset 7 (wraparound mode) and
+       1051 (Sun keyboard).  Add support for DECALN.  Remove some type checks
+       from run-time which the compiler can catch with certainty.
+
+2002-08-25  Kjartan Maraas  <kmaraas gnome org>
+       * configure.in: Added Norwegian (no) to ALL_LINGUAS.
+       
+2002-08-25  Pablo Saratxaga <pablo mandrakesoft com>
+       * configure.in: Added Vietnamese (vi) to ALL_LINGUAS
+
+2002-08-22 nalin
+       * src/caps.c: Bind ENQ to "return-terminal-status".
+       * src/iso2022.c: Fix an off-by-one which incorrectly triggered an
+       assertion.
+       * src/vte.c: Implement send-primary/secondary-device-attributes.  Bind
+       shift+insert to "paste PRIMARY".  Guard against NULL window/icon title
+       when telling the child app what they are.  Prevent DO(), up(), and UP()
+       from scrolling.
+
+2002-08-22 nalin
+       * src/vteapp.c: Set geometry hints using the initial font setup.
+2002-08-22 nalin
+       * src/vte.c, src/vte.h: Make use of the visible bell a separate option
+       from use of the audible bell, allowing both/neither to be used.  Open
+       fonts right away again -- profterm reads the metrics right after calling
+       set_font(), so we have to open fonts ASAP.  Rework the Xft/Pango/Xlib
+       decision code to be more consistent.  Watch for style changes and reset
+       our font to the new style's font when we're already using the old
+       style's font.
+2002-08-21 nalin
+       * src/iso2022.c(vte_iso2022_substitute): Take a vte_table as an
+       additional argument, and don't mess with text that's part of a control
+       sequence, even if it's in shifted-out text.
+       * src/table.c(vte_table_match): Speed up for the no-arguments-requested
+       case, which just became much more common.
+2002-08-21 nalin
+       * src/vte.c(vte_terminal_draw_rows): Cap the maximum number of
+       characters we draw in a single call to vte_terminal_draw_cells at a
+       reasonable number.
+2002-08-21 nalin
+       * src/table.c: Don't overwrite the original pattern pointers before
+       freeing the old value.
+       * src/vte.c: Use the same pango context whenever possible, to save on
+       PangoX startup time.
+2002-08-20 nalin
+       * src/vte.c: Unref the output channel one more time when we're done
+       sending data to the child.  Free the background data GDK property when
+       we're finished with it.  Don't retrieve the pango context when drawing
+       unless Xft has already been disabled.  Don't try to use the pango layout
+       to draw unless it's valid.  Don't try to use the XftDraw item to draw
+       unless it's valid.
+2002-08-20 nalin
+       * src/vte.c: Dispose of the updated substitution context properly when
+       processing blocks of input text.  Spotted by Arjan van de Ven.
+2002-08-20 nalin
+       * src/ring.c: Debug when rows get freed.
+       * src/vte.c: Maybe-release pango contexts after unreffing layouts which
+       refer to them.  Decide on how we want to draw fonts before deciding
+       which fonts to draw, to avoid spurious font loading.  Remove output tags
+       when the output tag's callback is about to return FALSE.
+2002-08-20 nalin
+       * src/vte.c: Don't leak the hintstyle and rgba settings.  Patch from
+       Arjan van de Ven.  Free PangoX contexts when we're done with them,
+       spotted by Arjan van de Ven.
+2002-08-19 nalin
+       * src/vte.c: Load fonts just-in-time to avoid spurious reloads.  Don't
+       override the focus_in and focus_out event handlers -- the defaults DTRT.
+       * src/debug.c, src/debug.h: Add a RING debug class.
+2002-08-19 nalin
+       * src/iso2022.c: Handle override maps which don't affect the font
+       palette correctly, resetting at newlines and escape marks.  Process
+       bogon data correctly.
+       * src/iso2022.txt: Add some sample text.
+2002-08-19 nalin
+       * src/vte.c: Fixup some fontconfig/Xft mixups.  Set the hint style
+       instead of hinting when reading the GTK hint style setting (spotted
+       by katzj and otaylor).
+2002-08-19 nalin
+       * src/vte.h, src/vte.c: Use gssize instead of ssize_t.  Perform
+       substitutions while processing.  Use PangoX contexts when we're using
+       the PangoX fontmap and when doing PangoX rendering.
+2002-08-19 nalin
+       * src/mkunitables.sh,src/unitable.*: Add.
+       * src/iso2022.c, src/iso2022.h: Use unitables.
+       * src/caps.c: Remove sequences for designating character sets.  Switch
+       to using a second passed-in buffer for storing results in case the
+       caller doesn't want substitutions done in-place.
+       * src/debug.c, src/debug.h: Add a substitution debug flag.
+       * src/interpret.c: Perform substitution.
+       * src/table.c, src/table.h: Use gssize instead of ssize_t.
+       * src/termcap.c, src/termcap.h: Use gssize instead of ssize_t.
+       * src/utf8echo.c: Use strtol, allowing users to specify code points in
+       hex format.
+2002-08-14 nalin
+       * src/vte.c(vte_terminal_configure_toplevel): repaint the entire window
+       to ensure that any overdraw area we're not paying attention to at least
+       gets cleared to the background.
+       * src/vte.c(vte_terminal_locale_encoding): don't try to second-guess
+       the local encoding, just use the current charset as returned by
+       g_get_charset().
+2002-08-14 nalin
+       * src/vte.c(vte_terminal_reset): drop pending incoming data on reset.
+       * src/vte.c: give reprocessing of pending input data a higher priority
+       than reading it from the child to prevent backlogs on corrupt or invalid
+       multibyte data from building up and whacking us exponentially.
+2002-08-13 nalin
+       * src/vte.c(vte_sequence_handler_delete_lines): initialize lines added
+       to the current default colors.  Spotted by jrb.
+       * src/vte.c(vte_terminal_set_font): don't try to pick up GTK Xft
+       settings unless we're using FontConfig.  Patch from otaylor.
+2002-08-11 nalin
+       * src/vte.c: reorder set/reset processing for decset so that 1049
+       properly represents the combination of 1047 and 1048 (#90027).
+2002-08-11 nalin
+       * src/caps.c: properly escape a sequence which had a bare '%' in it.
+2002-08-11 nalin
+       * src/vte.c: change Xft-related defaults match whichever version of GTK
+       we were built with (hopefully).
+2002-08-11 nalin
+       * src/vte.c: don't bother with cursor blinking or freezing/thawing
+       updates when the widget isn't realized.  Patch from Gustavo Giráldez.
+2002-08-08 nalin
+       * src/vte.c: take extra steps to make sure that the cursor doesn't go
+       back into negative scrollback space.
+2002-08-08 nalin
+       * src/vte.c(vte_terminal_invalidate_all): rewrite.
+2002-08-08 nalin
+       * src/vte.c(vte_terminal_paint,vte_terminal_draw_cells): fill in the
+       background color when drawing the cursor, even if it's going to end up
+       as the default background color, spotted by Peter Jones.  Draw the
+       cursor correctly if it's over a graphic character.
+2002-08-07 nalin
+       * src/vte.c(vte_terminal_draw_cells): once again, avoid drawing NULs.
+       * src/vte.c: add a small pad to each edge (#89048).
+       * src/vteapp.c: handle widget padding.
+2002-08-07 nalin
+       * src/interpret.c: look for $pkgdatadir/termcap/$TERM first, as the
+       widget does, before consulting /etc/termcap.
+       * src/ring.c(vte_ring_free): check for a non-NULL removal function
+       before calling it.
+       * src/vte.c(vte_terminal_key_press): add an option for doing
+       VT220-style or Sun/PC-style modified function keys.  Default to VT220
+       for now, though, pending feedback.
+       * src/vte.c(vte_terminal_reset): scroll to the bottom when resetting.
+2002-08-07 nalin
+       * src/vte.c(vte_terminal_draw_cells): don't trust XftDrawString32() to
+       advance linearly for monospaced fonts (#90164).
+
+2002-08-07 nalin
+       * src/vte.c(vte_terminal_reset): reset the default setting as well
+       (#89506).
+
+2002-08-07 nalin
+       * src/vte.c(vte_terminal_draw_cells): perform Xft remapping for Xft1,
+       switch back to PangoX.
+2002-08-06 nalin
+       * src/vte.c(vte_terminal_set_encoding,
+       vte_sequence_handler_local_charset): use g_get_charset() instead of
+       nl_langinfo() to determine the default codeset, and to check if it's
+       UTF-8.  Patch from Hidetoshi Tajima.
+       * src/vte.c(vte_terminal_set_encoding): don't leak conversion
+       descriptors when changing the encoding fails.  Patch from Hidetoshi
+       Tajima.
+       * src/vte.c(vte_terminal_send): don't read past the converted string
+       when performing paste substitutions.
+       * src/vte.c: rework the straight-Pango rendering routines to call
+       normal Pango instead of PangoX.
+       * src/vte.c(vte_terminal_ensure_cursor): speed up the "add many cells"
+       case a bit.
+2002-08-05 nalin
+       * src/vte.c(vte_cell_is_between): sort the two endpoints correctly and
+       provide a boolean to control whether or not the endpoint is "in".
+       * src/vte.c(vte_cell_draw_rows): check if a cell is selected using
+       the right indicator.
+       * src/vte.c(vte_terminal_get_text): when adding a newline to the end
+       of a returned line, don't show it as being in the rightmost column.
+       * src/vte.c(xlfd_from_pango_font_description): turn the DPI, pixel size,
+       and added info into wildcards.
+       * src/vte.c(vte_terminal_draw_cells): go back to drawing individual
+       cells when using Xlib.
+       * src/vte.c: Compute right-side padding as well as left.
+       * src/vte.c(vte_terminal_init): disable use of PangoX by default.
+       * src/vteapp.c: add -D to add the same patterns profterm does to test
+       dingus hiliting.
+
+2002-08-03  Havoc Pennington  <hp redhat com>
+
+       * src/vte.c (vte_terminal_setup_background): add a gdk_flush()
+       before the error trap pop, just for paranoia, may help with 
+       #89049
+
+2002-08-02 nalin
+       * src/vte.c(vte_terminal_send): Substitute carriage returns for
+       newlines when pasting text to the child, fixing weird paste behavior
+       in pico and friends.
+
+2002-08-02  Christophe Merlet  <christophe merlet net>
+
+       * configure.in: Added fr to ALL_LINGUAS.
+
+2002-08-01  nalin
+       * src/pty.c, src/pty.h: Expose vte_pty_set_size() and get_size() to
+       localize terminal ioctl usage.
+       * src/ring.c(vte_ring_validate): Don't repeatedly compute the same
+       value when we know it won't change.
+       * src/vte.c(vte_wc_from_unichar): Implement for the non-STDC_ISO_10646
+       case, heavily based on patch from Hidetoshi Tajima.
+       * src/vte.c(vte_terminal_ensure_cursor): Don't initialize the local
+       data unless we have to.
+       * src/vte.c(vte_terminal_process_incoming): Don't insert NUL characters
+       into the display, matching behavior of xterm.
+       * src/vte.c: Clean up use of various G_PRIORITY values throughout to
+       allow for simpler tuning.  Rewrite rendering code to use per-paint
+       PangoLayouts when they're needed, use Xft2's DrawCharSpec function when
+       available, and to cut down on X requests.  Don't paint on expose events
+       if the window isn't realized, drawable, and at least partially visible.
+       Don't deselect previous selection when the user clicks unless there's
+       also a drag first.
+2002-07-31  nalin
+       * src/pty.c: Include <termios.h> if available, per patch from Hidetoshi
+       Tajima.
+       * src/trie.c: Include missing <wchar.h>, spotted by Hidetoshi Tajima.
+       * src/vte.c: Initialize new lines created in insert_lines() to the
+       current default attributes like al() does.
+2002-07-30  nalin
+       * configure.in: Check for wint_t and attempt to allow compiles even
+       when wint_t isn't defined (this type is used only debug code, so it
+       shouldn't break anything).
+       * src/caps.c: Remove "te" and "ti", which are logical, in the same way
+       "so" is, from the known capabilities lists.  Add a "is a key" field to
+       the termcap list so that we don't match against keystrokes in case
+       they're also control sequences.
+       * src/interpret.c: Use tables instead of tries.  Don't add key sequences
+       to the table.
+       * src/pty.c: Fix incorrect invocation in sample.
+       * src/reaper.c: Include stdlib.h to quiet compiler warning.
+       * src/trie.c, src/trie.h: Remove the unused precomputing routines.
+       * src/utf8echo.c: Switch to link with tables instead of tries.
+       * src/vte.c: Switch to using tables instead of tries.  Map
+       cursor-backward to LE instead of le, which handles parameters right.
+       Don't add key sequences to the parsing table.  Tune updates so that
+       they occur less often when we're processing large amounts of data from
+       the child.  Add a 'status-line-changed' signal.  Implement fs() and
+       fix ts().  Add ::get_status_line() to get the contents of the status
+       line.  Obey it() when setting default tabstops.  Implement
+       cursor_next_line(), cursor_lower_left(), cursor_preceding_line(),
+       cursor_horizontal_and_vertical_position(), erase_characters(), and
+       insert_blank_characters().  Implement nw().
+
+2002-07-26  nalin
+       * src/vte.c: Initialize new lines added for al().  Spotted by jrb.
+
+2002-07-25  Ole Laursen  <olau hardworking dk>
+
+       * configure.in: Added Danish translation.
+
+2002-07-25  nalin
+       * README: Note that bold isn't broken any more.
+       * termcaps/xterm: Note that k; was added.
+       * src/pty.c: Set the proper number of columns in the window size.
+       * src/ring.h: Change macro argument names to hopefully not step on
+       application code.
+       * src/vte.c: Set the terminal size to the default size as specified in
+       termcap at init-time.
+2002-07-24  nalin
+       * src/pty.c: Add private vte_pty_set_size() function.
+       * src/pty.c, src/pty.h: vte_pty_open() takes size arguments now.
+       * src/vte.c: Open the PTY with the proper initial size.
+2002-07-23  nalin
+       * src/ring.c, ring.h: Expose the ring implementation and convert several
+       simple functions into macros.
+       * src/vteapp.c: Pass all long options on to gtk_init().
+2002-07-23  nalin
+       * src/vte.c: Fix realize/unrealize to be properly reversible.  Use the
+       font from the default style unless we're explicitly given one.
+       * src/vteapp.c: Don't set base size or minimum size geometry hints when
+       sizing the terminal widget.
+2002-07-22  nalin
+       * src/pty.c(vte_pty_ptsname): Fix an incorrect logic check.
+2002-07-19  nalin
+       * src/vte.c(vte_terminal_set_color_internal): If we're changing the
+       background color, apply it to the widget's window as well, from msw.
+2002-07-19  nalin
+       * src/vte.c: Undo the scrolling changes -- there too many combinations
+       of circumstances that cause them to not work right.
+2002-07-18  nalin
+       * src/vte.c: Fudge the repaint line count by one when scrolling regions
+       to ensure that the old cursor gets repainted.  Calculate the area which
+       needs to be repainted when reverse-scrolling correctly.
+2002-07-18  nalin
+       * src/vte.c: Implement enough of set-mode and reset-mode to allow
+       toggling of insert mode using this sequence.  Move all scrolling into
+       vte_terminal_scroll_region and use gdk_draw_drawable to avoid repainting
+       from scratch whenever possible.
+2002-07-17  nalin
+       * configure.in: Actually set ALL_LINGUAS so translations get installed.
+       * README: Document the weirdness that is cursor movement around wide
+       characters.
+       * src/vte.defs: Bind set_color_bold().
+       * src/debug.c: Suppress warnings when $VTE_DEBUG_FLAGS isn't set.
+       * src/pty.c, src/reaper.c, src/termcap.c, src/trie.c: Provide for
+       debug messages in the test program.
+       * src/interpret.c, src/trie.c: Use libc stdio instead of g_print for
+       printing what might be part of a multibyte sequence because g_print
+       checks for validity.
+       * src/interpret.c, src/trie.c, src/utf8echo.c, src/vte.c: Use gunichar
+       instead of wchar_t in places where a gunichar is expected.  Provide a
+       means for converting from wchar_t to gunichar for the sake of X11 calls
+       which want a wchar_t.
+       * src/trie.c: Provide vte_trie_wide_encoding() for finding a giconv
+       target which is hopefully compatible with gunichar.  Likewise provide
+       vte_trie_narrow_encoding() to find one compatible with iso-8859-1.
+       * src/vte.c: Fall back to ISO-8859-1 if we can't set things up for the
+       current locale encoding at startup time.  Fall back to the current
+       encoding if we can't perform a given dynamic switch.
+2002-07-16  nalin
+       * configure.in: Set GETTEXT_PACKAGE correctly, noted by menthos.
+
+2002-07-16  nalin
+       * src/vte.c (vte_terminal_set_colors): Guess at an appropriate bold
+       version of the foreground color instead of hard-coding in a default.
+       * src/vte.c, src/vte.h (vte_terminal_set_color_bold): Add.
+
+2002-07-16  nalin
+       * src/trie.c: Correctly check for g_iconv_open() failure.
+       * src/vte.c (vte_terminal_set_encoding): Try to give a meaningful
+       error when g_iconv_open() fails, even though we're screwed.
+
+2002-07-15  nalin
+       * src/vte.c: wrap the new Xft/fontconfig-specific code in HAVE_XFT
+       * src/vte.c: Revert some changes in how new cells were initialized,
+       removing various cosmetic problems.
+       * src/vte.c (vte_terminal_process_incoming): Discard the proper number
+       of characters when we don't recognize a sequence, previously we left
+       one byte that should have been removed.
+
+2002-07-14  Havoc Pennington  <hp pobox com>
+       * src/vte.c (vte_terminal_get_cursor_position): decrement spaces
+       as we go through the loop, it was nice and infinite.
+
+2002-07-13 nalin
+       * src/vte.c (vte_terminal_get_text): Add the proper number of attribute
+       structs to the attribute array to fix crashes which occurred when the
+       buffer contains non-ASCII text (Red Hat #67930).
+2002-07-12 nalin
+       * src/vte.c: Small optimization in the al() and dl() handlers.  al()
+       doesn't move the cursor, per GNU termcap docs.  Check for a pixbuf in
+       the bgfx check instead of pixmap, which was the wrong type.
+2002-07-12 nalin
+       * src/vte.c: Add patch to heed Xft/fontconfig settings as kept by GTK.
+       Based on patch from otaylor.
+2002-07-12 nalin
+       * src/slowcat.c: Added.
+       * src/vteapp.c: Add -a/-b flags to control audible bell and blinking
+       cursors.  Only send "pwd" as an initial command if there wasn't a
+       command specified on the command line.  Add a simple help message.
+       * src/vte.c: Bind F13-F35 per termcap.  Treat GDK_KP_Delete as
+       GDK_Delete.  Map Ctrl+F1-F12 to F13-F24.  Fix dc() to ensure that the
+       rows stays full and that newly-added cells get the default attributes.
+       Fix cl() to clear all rows on the screen with the default attributes
+       (bce).  Default to using Xft if available for consistency with GTK.
+2002-07-11 nalin
+       * src/vte.c: Treat super, hyper, meta, and alt as modifiers when
+       deciding to scroll-on-keypress.  Noted by jrb.
+       * src/vte.c: Always map \r and \n to cr and so, even when they're
+       defined by the termcap.
+       * src/vte.c, src/vte.h: Rework how default colors are set up, and add
+       vte_terminal_set_color_foreground and vte_terminal_set_color_background.
+       * src/vte.h: Remove includes for local headers which apps are not
+       likely to never use, cleaning up the namespace a little.
+       * python/vte.defs: Bind vte_terminal_set_color_{fore,back}ground.
+       * src/debug.h, src/ring.h: Use G_BEGIN_DECLS/G_END_DECLS.
+       * src/reaper.h: Use G_BEGIN_DECLS/G_END_DECLS in the right place.
+       * src/vteapp.c: Add -B/-T flags to set background images and
+       transparency.
+2002-07-02 nalin
+       * src/vte.c: Make shift+button1 extend selection.
+2002-07-01 nalin
+       * src/vte.c (vte_terminal_draw_char): Draw unicode line-drawing code
+       points natively as we do for the GR1 support, in case the current font
+       doesn't include glyphs for them.
+       * src/vte.c: Test for g_iconv_open() failure properly (compare result
+       to ((GIConv)-1), not NULL).
+       * src/vte.c: Rework recovery from illegal sequence errors in the input
+       stream to be much more aggressive about it.
+2002-06-25 nalin
+       * src/vte.c: Bind F10 to "k;", not "k0".
+       * termcaps/xterm: Add "k;" defined as F10.
+2002-06-25 nalin
+       * src/vte.c (vte_terminal_reset_rowdata): Check for redundant resizes.
+       * src/vte.c (vte_terminal_set_scrollback_lines): Keep the alternate
+       screen buffer size the same as the window height, because xterm's
+       alternate screen doesn't backscroll.
+       * src/vte.c (vte_terminal_get_text): Don't append spaces to multicolumn
+       characters when reading the screen's contents.
+       * src/vte.c: Don't overexpose neighboring cells any more.  Cleanups.
+       * src/ring.h, src/ring.c: Add vte_ring_max() to read a ring's maximum
+       size.
+2002-06-24 nalin
+       * src/vte.c (vte_sequence_handler_decset_internal): Treat option 1049
+       as a combination of 1047 and 1048.
+       * src/vte.c (vte_terminal_finalize): When finalizing while holding the
+       selection, throw the selection onto the clipboard without an owner so
+       that it doesn't just disappear.
+2002-06-19 nalin
+       * src/vte.c (vte_sequence_handler_set_title_int): Fix a logic bug
+       that got rid of the title always, not just when conversion failed.
+2002-06-19 nalin
+       * src/vte.c: Clear the alternate screen when switching to it.
+2002-06-18 nalin
+       * src/vte.c: Fix refs/derefs with IOChannels and sources.  Clean up
+       I/O GIConv descriptors at finalize-time.
+2002-06-18 nalin
+       * src/vte.c: Make cursor_visible a widget-wide (not per-screen) setting.
+2002-06-18 nalin
+       * autogen.sh: Correct automake version check to require 1.5, heads
+       up from Glynn Foster.
+2002-06-18 nalin
+       * src/trie.c (vte_trie_match, vte_trie_match_x): Sort out greedy vs.
+       non-greedy pattern matching.
+       * src/vte.c (vte_sequence_handler_decset_internal): Make 1047 an alias
+       for 47 (use alternate buffer), and handle cursor save/restore properly.
+2002-06-14 nalin
+       * src/vte.c, src/vte.h (vte_terminal_fork_command): Add a parameter for
+       passing in environment variables to add.
+       * src/termcap.c: Preprocess out unused comment() and generate() funcs.
+       * src/Makefile.am: Bump library version number.
+       * vte.spec: 0.4.0
+2002-06-14 nalin
+       * configure.in, python/Makefile.am: Handle cases where pygtk isn't
+       installed in the prefix we're configuring for.
+       * src/Makefile.am: Link libvte to its library dependencies.
+2002-06-13 nalin
+       * src/vteaccess.c: Stop watching for hierarchy-changed signals -- the
+       accessible container which is our parent handles it already (from msw).
+2002-06-13 nalin
+       * src/vteaccess.c: Re-read cursor position immediately on "cursor-moved"
+       events, and emit the "text-caret-moved" signal then as well.  Don't
+       override the signal handlers for signals we emit, bad things can
+       happen (from msw).
+2002-06-12 nalin
+       * src/vte.c: Re-read the termcap when we change emulation, because
+       the location of the file may have changed.
+       * src/reaper.c: Also tell the parent the child died when the child
+       dies due to an uncaught signal.
+       * python/vte.override (_wrap_vte_terminal_fork_command): Handle default
+       value for the command.
+2002-06-12 msw
+       * python/vte.override (_wrap_vte_terminal_fork_command): implement
+2002-06-12 msw
+       * acinclude.m4: added AM_CHECK_PYTHON_HEADERS from pygtk
+       * configure.in: rewrote python checks to be more robust
+       * python/Makefile.am (CFLAGS): include @PYTHON_INCLUDES@
+2002-06-12 msw
+       * src/vte.c (vte_terminal_get_accessible): turn the logic around
+       to be the right way
+2002-06-12 nalin
+       * src/vte.c: Cache the result of vte_terminal_get_accessible() and
+       unref it at finalize-time.  Add debug messages to log signals emitted
+       by the widget.  Implement vte_terminal_get_encoding and
+       vte_terminal_get_emulation, emit signals when these change.
+       * src/vteaccess.c: Emit a "text_caret_moved" signal when the cursor
+       moves.
+       * configure.in, src/Makefile.am: Add rules for building python modules.
+2002-06-12 msw
+       * src/vteaccess.c (vte_terminal_accessible_get_text): accept
+       end_offset of -1, which means "until the end".
+       * src/vteaccess.c (vte_terminal_accessible_new): never set the
+       description to a NULL pointer
+2002-06-10 nalin
+       * Makefile.am, configure.in: Include gettext support.
+       * src/vte.c, src/vte.h: Expose vte_terminal_set_encoding().
+       * src/vte.c: Finish merging otaylor's Xft2 patch (oops).  Compute
+       padding correctly.
+       * src/pty.c, src/reaper.c, src/trie.c, src/vte.c: Mark warnings for
+       possible translation.
+2002-06-07 nalin
+       * src/vte.c: Center characters in their cells, caching their extents.
+2002-06-06 nalin
+       * src/vte.c, src/vte.h: Add get_cursor_position(). Remove get_snapshot()
+       and free_shapshot().
+       * src/vte.c: Fix a logic bug that caused us to scroll to the bottom
+       even if the user just pressed and released a modifier key.  Fix saving
+       of the font in set_font() in most cases, where we weren't saving the
+       new font before.  Scroll-to-bottom on input method commits, which are
+       also the result of keystrokes, when scroll-on-keystroke is enabled.
+       * src/vteaccess.c: Rework to use get_text() and get_cursor_position()
+       instead of get_snapshot(), so that selection and accessibility both
+       agree on what's visible (or "visible").
+2002-06-05 nalin
+       * configure.in: Check for pangoxft with Xft1 or Xft2, hopefully getting
+       things right for either case.  Originally from patch by andersca.
+       * src/reaper.c, src/reaper.h: Add a singleton object to watch for
+       SIGCHLD when child processes quit.
+       * src/vte.c: Emit a "child-exited" signal when a child started with
+       fork_command() exits.
+       * src/vte.c: Make a better guess at font metrics when using Xft by
+       measuring the extents for a string of representative characters.
+       * src/vte.defs: Add.  Not very useful yet.
+2002-05-31 nalin
+       * src/vte.c: Implement font setting using PangoX to convert Pango
+       font descriptions to core font xlfds for use when drawing with Xlib.
+2002-05-29 nalin
+       * src/trie.c, src,vte.c: Finish switching iconv to g_iconv.  I think
+       this was a part of Hidetoshi Tajima's patch that I lost.  Free regexes
+       when we're done with them.
+2002-05-28 nalin
+       * src/vte.c: Fix matching when scrolling delta isn't zero.  Fix async
+       background updating (report from Richard Neal Plana).  Fix cb() and ce()
+       when the cursor is on a line without data (needed to create it) and when
+       cells being cleared don't exist (needed to create them) (report from
+       Garret LeSage).
+       * src/vte.c, src/vteaccess.c: Always free the segment when freeing
+       arrays and strings.
+
+2002-05-24 nalin
+       * autogen.sh: Call libtoolize. (#82836)
+       * src/vte.c: Fix stupid segfault in set_scrollback_lines.  (Patch
+       from notting.)  Make another attempt to convert Pango font descriptions
+       to xlfds.
+       * src/vteapp.c: Add -c, -f, -t command-line flags for easier testing.
+
+2002-05-22 nalin
+       * src/vte.c: Fix hiliting of matched strings.
+
+2002-05-21 nalin
+       * src/vte.c: Filter key release events through input methods.  (Patch
+       from otaylor.)  When building with gcc, use -std=c99.
+
+2002-05-21 nalin
+       * autogen.sh, src/termcap.c, src/utf8echo.c, src/vte.c: Patch from
+       Hidetoshi Tajima to fix building on Solaris systems, remove use of
+       syntax that might be specific to gcc, and fix an overrun in
+       vte_termcap_generate().  (#82433)
+
+2002-05-18 andersca
+       * src/vte.c: Don't queue a background update if the background isn't
+       transparent.
+
+2002-05-16 nalin
+       * src/vte.c: Snip trailing whitespace off of copied lines, insert
+       an end-of-line only when the copied line doesn't go to the right edge,
+       don't overrun right edge, even in insert mode.  Fix displaying of
+       underlined text.  Finish implementing matching.
+
+2002-05-15 nalin
+       * src/vte.c: Send kI on insert key.  Don't send drag events when the
+       child has only asked for click events.  Fix crashbugs in selection.
+       When getting scroll events, send mouse 4/5 events to the child instead
+       of performing a history scroll if the child wants mouse events.  Start
+       adding match support, merging how selection views the buffer with how
+       matching views the buffer, though matching doesn't work yet.
+
+2002-05-14 nalin
+       * src/vte.c: Don't try to draw nul characters, most fonts can't.  Don't
+       send motion-tracking events to the child unless we're dragging.  Fix
+       ce so that it works even right after startup.  Make sure that repainting
+       the entire window actually exposes the visible parts of the window.  Fix
+       tab clearing to also allow removal of the current tabstop.  Implement
+       save-mode and restore-mode.  Start on reverse-video mode.  Don't scroll
+       on modifier keypress events.  Rework part of clipboard copy.
+       * termcaps/xterm: Add missing F11/F12/End keysyms to bundled xterm
+       termcap.
+2002-05-13 nalin
+       * src/debug.c: Add "ALL" as a debug flag, aliased to everything.
+       * src/pty.c: Print debug info after redirecting stdio.
+       * src/trie.c: When debugging, count only decision nodes.
+       * src/vte.c: Fix se, for real this time.  Add a mostly-ignored protected
+       attribute.  Handle am, bw, ul flags properly.  Make cd clear the current
+       line, too.  Make ce fill the current default attributes through the end
+       of the line.  Handle cS.  Fix cv to work when we have a scrollback
+       buffer.  Handle ll, mp.  Line wrap on nd.  Reset tab stops on hard
+       reset only.  Handle soft-reset and full-reset.  Handle uc.  Initialize
+       scrollback line count properly.  Tweak drawing of alternate 'a' to
+       get rid of artifacts.  Reset insert mode, cursor visibility, and
+       scrolling regions when resetting.
+2002-05-10 nalin
+       * src/vte.c: Fix IC, which should *always* be done in insert mode,
+       from otaylor.  Make delete mode do nothing.
+2002-05-09 nalin
+       * src/vte.c: Fixes to usage of iconv, from otaylor.  Remap certain
+       characters which are missing in the current Xft font to similar
+       characters if they are in the font, from otaylor.  Change default
+       emulation to "xterm", cleaning up confusion over what standout really
+       means.  Reorganize some internals.  Complain when an application sends
+       us a key-press sequence, as if we knew what to do with one of those.
+       Implement bt, ct, st.  Reimplement ta.
+       * src/debug.c, src/debug.h: Added.
+2002-05-08 nalin
+       * src/vte.c: Implement mouse motion-event and any-event tracking.
+2002-05-07 nalin
+       * src/vte.c: Implement the rest of the special graphics characters.
+2002-05-06 nalin
+       * src/vte.c: Finish implementing window-manipulation sequences.  Rename
+       signals to be more consistent.  Add thin wrappers for emitting signals,
+       and use them everywhere.  Support pangox even when XFT isn't available.
+       Try to provide bold text again.  Add signals for most of the window
+       manipulation control sequences.  Start handling mouse button events.
+       Hide the mouse cursor when we get keyboard events.  Use a different
+       mouse cursor if the child is mouse-aware.  Handle eA() by treating it as
+       as().
+       * src/caps.c, src/caps.h: Export definitions of VTE_CAP_CSI and friends.
+2002-05-04 nalin
+       * src/vte.c: Implement device-status-report and dec-device-status-
+       report.  Clamp location values in sequence_handler_cm() to the
+       dimensions of the terminal window so that resize(1) will work right.
+       Start handling window-manipulation sequences.
+2002-05-03 nalin
+       * src/termcap.c: Export a vte_termcap_strip() function for preprocessing
+       escape sequences and whatnot from capability values.
+       * src/typescrypt: Removed.
+       * src/vte.c: Pass the hard-coded xterm-specific capabilities through
+       vte_termcap_strip(), which fixes a few weird bugs.  Discard invalid
+       might-be-control-sequence sequences, like other emulators do.  Don't
+       consider modifier keys, by themselves, to be enough to scroll-on-key.
+       When snapshotting, actually snapshot all of a row instead of just the
+       last character.  Don't run past the end of snapshot contents when
+       reading them.
+       * src/vteaccess.c: Clamp offsets so that they always sort right.
+2002-05-02 nalin
+       * src/termcap.c: Fix handling of triple-digit escaped characters,
+       which weren't being processed right if the first digit was '1' instead
+       of '0'.
+       * src/trie.c: Rework trie matching to return the address of the
+       character which ended the match attempt, which should cut down on
+       useless initial-substring checks.  Fix a subtle bug which caused
+       intermittent off-by-somenumber errors in the return address.
+       * src/vte.c:  Remove several gdk_window_scroll() calls which apparently
+       aren't buffered.  Convert invalid multibyte characters to '?' instead of
+       just dropping them.  Provide a means of setting the backspace/delete
+       bindings.  Add a poor xlfd_from_pango mapping function which would need
+       serious work to be useful.  Get rid of warnings when we're transparent
+       and the root window pixmap isn't as big as the root window because it's
+       been tiled.  Setup bindings using the export functions.  Set the default
+       terminal size to 80x24 instead of 60x18, which was originally chosen for
+       debugging purposes.  Don't use $SHELL as the command to invoke when
+       starting up a default command (as in the test app) -- libtool wrappers
+       keep screwing this up.  Don't limit the number of characters we skip
+       over in invalid multibyte sequences -- sometimes that's not enough.
+       Hook up ts/te, ks/ke sequence handlers.
+       * src/vteaccess.h: Fix a crashbug due to mismatch between parent field
+       in the object's structure and its inherited object's type.  Fix more
+       crash bugs due to initialization weirdness.  More to go.
+2002-05-01 nalin
+       * src/vte.c: Try @pkgdatadir@/termcap/$TERM when reading termcap files.
+       This fixes the app on systems with no /etc/termcap, and also speeds up
+       loads and reduces memory consumption for xterm-color at the expense of
+       making on-the-fly emulation changes impossible.  Don't xor reverse with
+       itself when drawing characters (this broke when snapshotting was added).
+       * termcaps/Makefile.am, termcaps/xterm-color: include a default termcap
+       for xterm-color.
+       * src/termcap.c src/termcap.h: make _find_boolean return a gboolean
+       instead of an int.
+       
+2002-04-30 nalin
+       * src/vte.c: Disconnect from toplevel window_configure events at
+       finalize-time.
+
+2002-04-30 18:06  nalin
+       * src/vte.c: Track and free idle task tags properly.  Change F11 and
+       F12 capabilities from 'k;' and 'F1' to 'F1' and 'F2'.  Send a NUL on
+       control space. (#80350)  Allow setting and checking of word characters,
+       and change select-by-word behavior to use the word character list.
+       Emit "contents_changed" signals whenever the visible contents change,
+       and "cursor_moved" when the cursor moves.  Add snapshotting method.
+       Scroll when auto-margin handling moves the cursor to the next line.
+       Assume that the locale charset is actually ISO-8859-1 when we're in
+       a UTF-8 locale, so we don't toggle from UTF-8 to UTF-8.  Treat
+       GDK_KP_Page_Up as a GDK_Page_Up, ditto for GDK_KP_Page_Down and
+       GDK_KP_Tab and GDK_KP_Space.  Add vte_terminal_get_font().  Don't bother
+       messing with ring buffers if we're resizing them to their current sizes.
+       * src/pty.c, src/vte.c: Return a pid from vte_terminal_fork_command().
+       * src/vteaccess.c, src/vteaccess.h: Add VteTerminalAccessible object
+       type.  It might even work, mostly.
+
+2002-04-29 14:25  nalin
+       * src/vte.c: Handle me() by resetting all attributes (including
+       colors, which we weren't resetting before).
+
+2002-04-29 10:57  nalin
+       * src/vte.c: Handle kb by treating it as a backspace.  Make pangox
+       rendering the default.  Handle control-key sequences better, unless
+       the input method is hiding the modifiers from us.  Set the default
+       TERM variable to "xterm-color".
+       * src/vte.c src/vte.h: Get rid of vte_terminal_set_core_font().
+
+2002-04-26 19:14  nalin
+       * src/vte.c: Punt all changes to background images and transparency
+       to an idle task.  Only insert newlines into the copy buffer when the
+       last column in a given line doesn't have a character in it.
+2002-04-26 17:35  notting
+       * src/pty.c: use execlp/execvp
+
+2002-04-26 12:09  nalin
+       * src/Makefile.am, src/ring.c, ring.h: add a ring buffer for storing
+       scrollback data.
+       * src/vte.c: use a ring buffer instead of a GArray to hold scrollback
+       rows.  Fix a bug in that.  Try to preserve what the user sees when the
+       scrollback size changes.
+       * src/vteapp.c: set a default scrollback buffer size of 100.
+2002-04-26 00:49  nalin
+       * Makefile.am: run autogen before tagging so that the tag is always
+       correct.
+       * README: update.
+       * configure.in: add pangox to the list of GTK+ 2.0 modules we link with.
+       * src/vte.c, src/vte.h: add vte_terminal_set_scrollback_lines(), add
+       some code to use pangox for rendering before trying core rendering,
+       which should make font selection actually work.
+       * vte.spec: tweak description text.
+
+2002-04-25 12:23  nalin
+
+       * Makefile.am: Uncomment the tag target.
+
+2002-04-25 12:22  nalin
+
+       * HACKING, Makefile.am, configure.in: Add some targets for building
+       tarballs in a hopefully-reproducible way.
+
+2002-04-25 12:12  nalin
+
+       * src/vte.c: Let GDK_USE_XFT turn on Xft as well as
+       VTE_USE_XFT.
+
+2002-04-25 01:45  nalin
+
+       * src/vte.c: Handle decoding errors
+       better.
+
+2002-04-25 00:49  nalin
+
+       * vte.spec: Include pkgconfig files in the package.
+
+2002-04-25 00:43  nalin
+
+       * src/vte.c: src/vte.c: Make multiple calls to
+       set_background_transparent() and set_background_image() do the
+       right thing.
+
+2002-04-25 00:05  nalin
+
+       * src/vte.c: Reverse the sanity check in
+       vte_terminal_set_background_image_file() so that it rejects
+       zero-length strings, not the other way around.
+
+2002-04-24 23:54  nalin
+
+       * src/trie.c: Demote some debug messages to being trie-specific
+       debug messages.
+       * src/vte.h: Declare vte_terminal_set_core_font() for non-Xft use.
+       * src/vte.c: Adjust idle priorities to make the terminal be more
+       responsive. Fix a double-free that corrupted the heap on core font
+       loads. Rework some pixbuf handling to only create new pixbufs when
+       we need to modify what we are given. Revert a patch for profterm
+       crackiness that's gone now.
+
+2002-04-24 20:49  nalin
+
+       * README: update to-do list.
+       * autogen.sh: remove --disable-shared.
+       * src/pty.c: remove a memory leak.
+       * src/termcap.c: fix a possible read-before-start-of-buffer.
+       * src/trie.c: use iconv instead of mbrstowcs, even if it's just
+       ASCII->W_CHAR_T.
+       * src/vte.c: fix a few memory leaks. Only reset the IM context when
+       we're realized, which is the only time we actually have an IM context.
+       Don't create a copy of a pixbuf if we don't need to desaturate it,
+       just ref it and use it directly.
+
+2002-04-23 19:40  nalin
+
+       * src/vte.c: Display UTF-8 preedit strings properly, fix
+       copy (no, really this time), and reset IM contexts when pasting
+       text in.
+
+2002-04-23 18:01  nalin
+
+       * src/pty.c: Print debug messages before redirecting stdio.
+       * src/vte.c: Fix displaying of highlighted multi-column text.
+       Use the GTK global setting for cursor blinking to control das
+       blinkencursor.
+       * src/vte.h: Remove function for setting blinking timeout.
+
+2002-04-23 15:54  nalin
+
+       * src/pty.c: Fix a compile warning.
+
+2002-04-23 15:54  nalin
+
+       * autogen.sh: Default to include optimization, even for debugging. 
+       * configure.in: Move AM_CONFIG_HEADER to the top.
+       * src/pty.c: Create non-login shells by default (when argv is NULL,
+       otherwise it's up to the caller anyway.
+       *  src/vte.c: Add mostly-complete input method support.
+       * src/vte.h: Add vte_terminal_im_append_menuitems().
+
+2002-04-23 13:04  hp
+
+       * src/vte.c, src/vte.h: add vte_terminal_set_font
+
+2002-04-22 17:00  hp
+
+       * src/vte.c: when setting background color, use allocated color,
+       and don't overwrite with bg of None
+
+2002-04-22 16:50  hp
+
+       * src/vte.c: use gdk_rgb_find_color to allocate X colors
+
+2002-04-22 16:35  nalin
+
+       * src/vte.c, src/vte.h, src/vteapp.c: Add vte_terminal_feed_child() to
+       send UTF-8 strings to the child process, and actually apply Havoc's
+       fix right this time.
+
+2002-04-22 09:56  nalin
+
+       * src/vte.c: Prevent double-free of incoming buffer
+       (patch from Havoc).
+
+2002-04-16 01:43  nalin
+
+       * README: Fix typo.
+       * src/vte.c: Make blinking cursors stay on while the user is typing,
+       desaturate images using integer math.
+
+2002-04-05 00:58  nalin
+
+       * vte.spec: Add less useless descriptions. 
+       * src/vte.c: Fix an uninitialized variable and missing declaration
+       error.
+
+2002-03-24 21:52  nalin
+
+       * src/vte.c: Ensure that there's a data row
+       whenever we scroll forward, fixing strangeness when I suspend and
+       resume vim.
+
+2002-03-24 19:08  nalin
+
+       * src/vte.c: Copy to clipboard synchronously, which
+       fixes a number of problems.  Implement background transparency.
+
+2002-03-17 20:59  nalin
+
+       * src/vte.c: Rework backgrounds to take advantage of gdk's automatic
+       drawing.
+       * src/vteapp.c: Try to enable transparency if no background
+       image is present.
+
+2002-03-17 20:58  nalin
+
+       * autogen.sh, configure.in: Adjust warnings used when in maintainer
+       mode.
+
+2002-03-17 01:15  nalin
+
+       * src/vte.c: Draw the cursor as an unfilled box when the widget does
+       not have focus.
+
+2002-03-17 01:04  nalin
+
+       * src/vte.c: Fix handling of scroll-on-output to always scroll when
+       only we're at the bottom of the buffer.
+       * src/vteapp.c: Disable scroll-on-output by default.
+
+2002-03-17 00:45  nalin
+
+       * src/vte.c src/vte.h: Rework tiling of background images, and
+       implement a blinking cursor.
+       * src/vteapp.c: Set blinking cursor by default.
+
+2002-03-14 02:58  nalin
+
+       * src/caps.c: Corrections to some xterm control sequences.
+
+2002-03-14 02:32  nalin
+
+       * configure.in: Define PACKAGE correctly.
+       * src/vte.c src/vteapp.c: Move most of the tear-down code into the
+       widget finalize method; handle EOF and widget destruction correctly
+       to prevent segfaults.
+
+2002-03-14 00:48  nalin
+
+       * configure.in: * configure.in: Define PACKAGE.
+
+2002-03-14 00:18  nalin
+
+       * configure.in: Disable gdk-pixbuf's deprecated functions.
+       * vte.c: Discard non-ascii bytes to clear logjams that
+       happen when we pass invalid terminal data to iconv().
+
+2002-03-13 23:07  nalin
+
+       * src/iso8859mode.c, src/utf8mode.c, src/vte.c, src/vte.h:
+       add missing includes
+       * vte.c vte.h: implement background color setting, provide
+       a function for setting the defaults, tile background images
+       properly
+
+2002-03-13 21:12  nalin
+
+       * configure.in, vte.pc.in, src/vte.c: Remove gdk-pixbuf-xlib
+       dependency by using just gdk-pixbuf. 
+       * src/vte.c: Perform background image desaturation locally.
+
+2002-03-13 14:37  nalin
+
+       * src/vte.c: Don't add the widget's allocation offsets
+       when generating expose events.
+
+2002-03-13 14:22  nalin
+
+       * src/vteapp.c: Don't try to use transparency for now.
+
+2002-03-13 13:29  andersca
+
+       * src/vte.c, src/vte.h: Add more functions that profterm can use.
+
+2002-03-13 12:51  andersca
+
+       * .cvsignore, vte.pc.in: Silent cvs and add gdk-pixbuf-xlib to
+       depends in the .pc.in file
+
+2002-03-13 12:37  andersca
+
+       * src/.cvsignore: Sliff sloff
+
+2002-03-13 12:37  andersca
+
+       * src/.cvsignore: sssh
+
+2002-03-13 12:19  nalin
+
+       * configure.in: Add gdk-pixbuf-xlib-2.0 as a module requirement.
+
+2002-03-13 01:21  nalin
+
+       * src/vte.c, vte.h, vteapp.c: * vte.c: Add set_size,
+       set_audible_bell, set_scroll_on_output, set_scroll_on_keystroke,
+       copy_clipboard, paste_clipboard, set_background_image,
+       set_background_image_file, and set_background_saturation.  Also
+       added a broken set_background_transparent.
+
+2002-03-12 22:35  nalin
+
+       * src/vte.h: adjust the name of a declared function (was _set_size,
+       is _size_set)
+
+2002-03-12 22:11  nalin
+
+       * src/vte.c: Get rid of a global copy of the parent class.
+       * vte.c: Implement ec, ic, and IC handlers.
+
+2002-03-12 22:10  nalin
+
+       * src/vte.h: Fix a typo in a comment (we don't "omit" signals).
+
+2002-03-12 15:48  nalin
+
+       * src/caps.c: Recognize xterm cursor-character-absolute sequence.
+       * src/vte.c: Handle cursor-character-absolute.  Change the default font
+       to "mono" 14 point when using Xft.
+
+2002-03-12 15:22  nalin
+
+       * src/vte.c: Handle the ve (cursor visible) control sequence.
+
+2002-03-12 15:19  nalin
+
+       * src/vte.c: Handle dec private mode set (cursor visibility).
+
+2002-03-12 15:13  nalin
+
+       * src/vte.c, src/vte.h, src/vteapp.h: fix signed/unsigned problems
+       (fixes from alexl)
+
+2002-03-11 20:29  nalin
+
+       * src/vte.c: Make scroll-on-output scroll on control sequences, too.
+
+2002-03-11 20:19  nalin
+
+       * src/Makefile.am, src/iso8859mode.c, src/utf8mode.c:
+       Add simple programs for moving a terminal in and out of UTF-8 mode.
+       * src/vte.c: Be more verbose about iconv() errors.  Implement dc and DC
+       handlers.  Handle auto-wrapping (the "am" flag).  Remove scrolling
+       cheats from the al handler, which made the window jump.
+
+2002-03-11 02:39  andersca
+
+       * src/vte.c: Add a finalize handler and free our title strings
+       there.
+
+2002-03-11 02:05  nalin
+
+       * Makefile.am, configure.in, src/vte.c, src/vte.h, src/vteapp.c:
+       Emit "window_title_changed" and "icon_title_changed" when the
+       titles change, and store the new values in a public field so that a
+       handler can retrieve the values (patch from Anders Carlsson).
+
+2002-03-11 01:54  nalin
+
+       * vte.pc.in: Add vte.pc, from Anders Carlsson.
+
+2002-03-11 01:47  nalin
+
+       * src/vte.c: Fix a duplicate-idle-handler bug.
+
+2002-03-11 01:32  nalin
+
+       * README, src/vte.c: Fix selection (except maybe the end-of-line
+       stuff).
+
+2002-03-10 23:44  nalin
+
+       * src/vte.c: Whoops, I broke selection.  Fix that.  Implement
+       selection by lines.
+
+2002-03-10 23:08  nalin
+
+       * src/vte.c: Move character rendering into a common function so
+       that the cursor is always drawn the same as other characters (fixes
+       previous glitches when using Xft and when the cursor was over an
+       alternate charset character).
+
+2002-03-10 03:31  nalin
+
+       * src/vte.c: Differentiate between single, double, and triple-click
+       for selection (still need to do something with that info).
+
+2002-03-10 03:16  nalin
+
+       * stamp-h.in: remove this file
+
+2002-03-10 03:15  nalin
+
+       * configure.in: Don't check for pango because we never call pango
+       directly.
+
+2002-03-10 03:13  nalin
+
+       * src/vte.c: Deselect properly when something else is inserted into
+       the clipboard.
+
+2002-03-10 02:26  nalin
+
+       * AUTHORS, HACKING, README, src/utf8echo.c, src/vte.c: Fix
+       wide-character handling (now handles mid-stream encoding changes
+       correctly).  Updates to the meager docs.
+
+2002-03-09 02:41  nalin
+
+       * Makefile.am, vte.spec, src/Makefile.am: Add a .spec file (make
+       dist; rpm -ts vte*.tar.gz; rpm --rebuild) to make building a
+       package easier.
+
+2002-03-09 02:24  nalin
+
+       * src/vte.c: skip over space columns when selecting
+
+2002-03-09 02:20  nalin
+
+       * src/pty.c, src/vteapp.c: Use a login shell by default.
+
+2002-03-09 02:10  nalin
+
+       * src/vte.c, src/vte.h, src/vteapp.c: Rework input queueing to allow for
+       feeding without a pty.  Use gdk_window_scroll() in _al and _up
+       handlers, and in the _do handler, because it's usually faster.
+
+2002-03-08 02:52  nalin
+
+       * src/vte.c: Implement copy and almost-correct selection
+       highlighting.
+
+2002-03-07 21:30  nalin
+
+       * src/vte.c: Use a queue for pasting data.  Try to get dragging
+       detected right (doesn't work).
+
+2002-03-05 19:21  nalin
+
+       * src/vte.c: Mark the beginning of a selected area.
+
+2002-03-05 19:17  nalin
+
+       * src/vte.c: Make pasting asynchronous.
+
+2002-03-05 19:07  nalin
+
+       * src/vte.c: actually free clipboard data when finished with it
+
+2002-03-05 19:02  nalin
+
+       * src/vte.c: Implement middle-button paste.
+
+2002-03-05 18:55  nalin
+
+       * src/vte.c: Properly convert from utf-8 or wchar_t strings when
+       sending data to the pseudo-terminal.
+
+2002-03-04 19:53  nalin
+
+       * src/vte.c: Implement shift/pgup/pgdown scrolling.  Make
+       scroll-on-keypress and -on-output easier to toggle.
+
+2002-03-04 19:26  nalin
+
+       * src/vte.c: Spec out the rest of the alternate characters I
+       haven't implemented yet.  Remove a function that can't be easily
+       written (scroll_rows).  Correctly update the insertion delta when
+       scrolling, to fix man(1) again.
+
+2002-03-04 19:16  nalin
+
+       * src/vte.c: Discard redundant cursor-position exposes.
+
+2002-03-04 18:57  nalin
+
+       * src/termcap.c, src/termcap.h, src/vte.c: Use ssize_t to measure string
+       offsets in termcap, and don't assume that all capabilities have
+       values.  This fixes some nasty crashes.
+
+2002-03-04 11:53  nalin
+
+       * src/vte.c: add a missing bounds-check in the erase-in-row
+       function
+
+2002-03-04 01:13  nalin
+
+       * README, src/vte.c: Send the slave pty's erase character when the
+       user hits backspace.
+
+2002-03-04 00:59  nalin
+
+       * src/vte.c: Draw cursors to fill the entire cell.  Draw the blank
+       alternate character (ooh, tough).  Remove a redundant expose.
+
+2002-03-03 23:49  nalin
+
+       * src/trie.c: stop using wcsnlen, which is a GNU extension
+
+2002-03-03 23:43  nalin
+
+       * src/caps.h, src/pty.h, src/termcap.h, src/trie.h, src/vte.c,
+       src/vte.h: Add support for the line-drawing characters in the special
+       characters and line-drawing character set. (See
+       [http://vt100.net/docs/vt102-ug/table5-13.html].)
+
+2002-03-03 21:57  nalin
+
+       * src/pty.c, src/pty.h, src/vte.c: Properly differentiate insertion
+       delta (working screen) from scrolling delta.    Add environment setting
+       to the pty code.
+
+2002-02-27 21:54  nalin
+
+       * src/trie.c, src/vte.c, src/vte.h: Make the Xft support use long-lived
+       data items.  Clean up a lot of other Xft-related code.
+
+2002-02-27 10:45  nalin
+
+       * src/vte.c: actually hook up the nd handler to the "nd" sequence
+
+2002-02-27 00:05  nalin
+
+       * autogen.sh, configure.in, src/vte.c, src/vte.h: - Add sub-optimal
+       Xft rendering (set VTE_USE_XFT to "1" to try it); still needs
+       quite a bit of work to be useful.  Implement character-position-absolute
+       and line-position-absolute, which I  think are the only sequences which
+       emacs uses and which weren't implemented.
+
+2002-02-25 12:43  nalin
+
+       * src/Makefile.am: distcheck fixes
+
+2002-02-25 12:41  nalin
+
+       * README: add that line-drawing does not work to README
+
+2002-02-25 12:40  nalin
+
+       * configure.in, src/Makefile.am: tree fixups
+
+2002-02-25 12:38  nalin
+
+       * configure.in: fix autoconf reference file problem
+
+2002-02-25 12:38  nalin
+
+       * src/Makefile.in: remove stuff which should never have been added
+
+2002-02-25 12:37  nalin
+
+       * configure.ac, configure.in, src/Makefile.in: rename configure.ac
+       to configure.in, remove 2.5isms
+
+2002-02-25 12:35  nalin
+
+       * doc/ctlseqs.ps, Makefile.in, aclocal.m4, config.h.in, configure:
+       remove stuff that should never have been in there
+
+2002-02-25 12:30  nalin
+
+       * AUTHORS, ChangeLog, Makefile.am, NEWS, README, autogen.sh,
+       configure.ac, COPYING, HACKING, Makefile.in, aclocal.m4,
+       config.h.in, configure, stamp-h.in, doc/ctlseqs.ms, doc/ctlseqs.ps,
+       doc/readme.txt, doc/vttest.tar.gz, src/Makefile.am,
+       src/Makefile.in, src/caps.c, src/caps.h, src/interpret.c,
+       src/marshal.list, src/pty.c, src/pty.h, src/termcap.c,
+       src/termcap.h, src/trie.c, src/trie.h, src/typescript,
+       src/utf8echo.c, src/vte.c, src/vte.h, src/vteapp.c: Initial
+       revision
+
+2002-02-25 12:30  nalin
+
+       * AUTHORS, ChangeLog, Makefile.am, NEWS, README, autogen.sh,
+       configure.ac, COPYING, HACKING, Makefile.in, aclocal.m4,
+       config.h.in, configure, stamp-h.in, doc/ctlseqs.ms, doc/ctlseqs.ps,
+       doc/readme.txt, doc/vttest.tar.gz, src/Makefile.am,
+       src/Makefile.in, src/caps.c, src/caps.h, src/interpret.c,
+       src/marshal.list, src/pty.c, src/pty.h, src/termcap.c,
+       src/termcap.h, src/trie.c, src/trie.h, src/typescript,
+       src/utf8echo.c, src/vte.c, src/vte.h, src/vteapp.c: imported from
+       private cvs
+
+Local Variables:
+coding: utf-8
+End:
+vim: encoding=utf-8:
diff --git a/vte/HACKING b/vte/HACKING
new file mode 100644
index 0000000..b399c0e
--- /dev/null
+++ b/vte/HACKING
@@ -0,0 +1,18 @@
+This entire tree is "some highly unsupported crackrock", though we are
+cleaning it as fast as possible and aiming for a 1.0 release "next year".
+Please contact people listed in filed MAINTAINERS if you intend to hack
+on it, especially if you want to commit stuff.
+
+Vte is different from other terminal emulators in that instead of hard
+coding behavior of a few select terminals, it can emulate any terminal
+simply by reading its terminfo capabilities file.  The idea being that
+if applications can communicate with any terminal by reading its
+capabilities, the emulation widget can also behave like any terminal by
+reading that file.  Well, that's just the idea :).
+
+This is the most useful resource in understanding various internal states
+as well as control sequences:
+
+       http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
+
+And to understand termcap, terminfo, etc, "make terminfo" is a great start.
diff --git a/vte/MAINTAINERS b/vte/MAINTAINERS
new file mode 100644
index 0000000..2488253
--- /dev/null
+++ b/vte/MAINTAINERS
@@ -0,0 +1,7 @@
+Behdad Esfahbod
+Email: behdad gnome org
+Userid: behdad
+
+Chris Wilson
+Email: chris chris-wilson co uk
+Userid: cpwilson
diff --git a/vte/Makefile.am b/vte/Makefile.am
new file mode 100644
index 0000000..c856fb3
--- /dev/null
+++ b/vte/Makefile.am
@@ -0,0 +1,51 @@
+ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
+
+SUBDIRS = src termcaps po perf
+
+EXTRA_DIST = \
+       MAINTAINERS \
+       HACKING \
+       autogen.sh \
+       ChangeLog.pre-git
+
+DISTCLEANFILES =
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = vte$(VTE_PC_VERSION).pc
+
+DISTCHECK_CONFIGURE_FLAGS = \
+       --enable-gtk-doc \
+       --disable-silent-rules
+
+MAINTAINERCLEANFILES = \
+               ChangeLog \
+               $(srcdir)/INSTALL \
+               $(srcdir)/aclocal.m4 \
+               $(srcdir)/autoscan.log \
+               $(srcdir)/compile \
+               $(srcdir)/config.guess \
+               $(srcdir)/config.h.in \
+               $(srcdir)/config.sub \
+               $(srcdir)/configure \
+               $(srcdir)/configure.scan \
+               $(srcdir)/depcomp \
+               $(srcdir)/install-sh \
+               $(srcdir)/ltmain.sh \
+               $(srcdir)/missing \
+               $(srcdir)/mkinstalldirs \
+               $(srcdir)/omf.make \
+               $(srcdir)/xmldocs.make \
+               $(srcdir)/gtk-doc.make \
+               `find "$(srcdir)" -type f -name Makefile.in -print`
+
+# Build ChangeLog from GIT  history
+ChangeLog:
+       $(AM_V_GEN) if test -d $(top_srcdir)/.git; then \
+               GIT_DIR="$(top_srcdir)/.git" git log --stat > $@; \
+       fi
+
+dist: ChangeLog
+
+.PHONY: ChangeLog
+
+-include $(top_srcdir)/git.mk
diff --git a/vte/NEWS b/vte/NEWS
new file mode 100644
index 0000000..a338299
--- /dev/null
+++ b/vte/NEWS
@@ -0,0 +1,1068 @@
+0.28.2
+======
+- Translation updates
+- Dist correct gtk-doc API docs
+
+0.28.1
+======
+- Bugs fixed:
+   * Bug 652124 - malicious escape sequence causes gnome-terminal to exhaust memory
+- Translation updates
+
+0.28.0
+======
+- Bugs fixed:
+   * Bug 642184 - vte does not build against new glade (with gladeui-2.0)
+- Translation updates
+
+0.27.90
+=======
+- Fix shrinking terminal on gtk3
+- Translation updates
+
+0.27.5
+======
+- Fix build with recent GTK+
+- Translation updates
+
+0.27.4
+======
+- Fix build with recent GTK+
+- Introspection fixes for fork_command_full
+- Translation updates
+
+0.27.3
+======
+- Add a gsettings .enums.xml file for vte's enum types
+- Fix build with latest gtk 3
+- Fix introspection annotations and require gobject-introspection 0.9.0
+- Bugs fixed:
+  * Bug 628870 - Clarify error message
+- Translation updates
+
+0.27.2
+======
+(See git log)
+
+0.27.1
+======
+
+- Bugs fixed:
+  * Bug 631589 - Pass the correct TERM value inside envp when spawning
+  * Bug 631903 - Report correct minimum/natural sizes for GTK+ 3
+  * Bug 632257 - vte leaks FDs
+- Translation updates
+
+0.25.90
+=======
+
+- Make vte parallel-buildable with gtk 2 and gtk 3
+- Bugs fixed:
+  * Bug 617690 - Setting default fg color should not cancel underline
+  * Bug 614658 - text selection with mouse is buggy when using the shift key
+  * Bug 618749 - set terminal widget background color to terminal background
+  * Bug 601926 - Don't hardcode meta to alt
+  * Bug 618097 - Broken backtab (cbt)
+  * Bug 621298 - Cursor invisible (plain black) in (xfce) Terminal & terminator
+  * Bug 626676 - Cleanup vte_terminal_determine_colors
+  * Bug 620493 - strict aliasing warning
+- Translation updates
+
+0.25.1
+=======
+- Add support for searching the buffer.  New public API:
+  vte_terminal_search_[sg]et_regex
+  vte_terminal_search_find_(previous|next)
+
+0.24.1
+======
+- Bugs fixed: 
https://bugzilla.gnome.org/buglist.cgi?status_whiteboard_type=substring;chfieldto=2010-04-26%2012%3A00%3A00;query_format=advanced;chfieldfrom=2010-03-29;status_whiteboard=fixed-0-24;bug_status=RESOLVED;resolution=FIXED;product=vte
+- Translation updates
+
+0.24.0
+======
+- Updated API docs
+- Cache backgrounds as cairo surfaces
+- Translation updates
+
+0.23.5
+=======
+- Fix unintented soversion bump
+
+0.23.4
+=======
+- Add public API vte_terminal_write_contents()
+- Update docs
+
+0.23.3
+=======
+- Disable symbol deprecation stuff since they were broken
+- Merge pangocairo draw impl into vtedraw (Kristian Høgsberg)
+- Bugs fixed in this release:
+    Bug 534526 - Flickering when resizing a vte widget
+    Bug 605299 - Please support xterm bracketed paste mode
+
+0.23.2
+=======
+- Fix overflow with unlimited scrollback lines
+- Require glib >= 2.22.0
+- Deprecate vte_terminal_get_padding
+- Add VteTerminal::inner-border style property
+- vteapp: Add --cursor-shape option
+- Bugs fixed in this release:
+    Bug 604966 - Fix "select all" to include text occurring after the visible region
+    Bug 604135 - [PATCH] fix behaviour of set-scrolling-region
+    Bug 603733 - Remove deprecated Glib symbol
+    Bug 603713 - ibeam/underline cursor broken with large inner-border
+    Bug 471920 - Expose the border width property
+    Bug 601265 -  gnome-terminal assert failure: table.c:723:_vte_table_match
+    Revert "Bug 591648 - Don't clear the screen when switching to the alternate screen"
+
+0.23.1
+=======
+- Various crash and bug fixes
+- Rework mouse selection to be more robust.  In particular, PRIMARY selection
+  now only changes when mouse button is released, not upon every motion when
+  selecting.
+- Interpret and document negative number of scrollback lines as infinite
+- We now chain unhandled motion-notify events up such that the parent widget
+  can give them a shot.
+- Bugs fixed in this release:
+    Bug 597604 - assertion failed: (_vte_ring_contains (ring, position))
+    Bug 598124 - The selection does not only change when the mousebutton is released
+    Bug 598090 - LMB Mouse up event not registered when opining context popup menu
+    Bug 587463 - "select all"+copy from gnome-terminal includes lines no longer in scrollback
+    Bug 585370 - Incomplete disabling of python
+    Bug 597242 - libvte color and cursor glitches
+    Bug 591648 - Don't clear the screen when switching to the alternate screen
+    Bug 595445 - Motion notify events are not propagated to parent widget
+    Bug 569184 - vte generates unnecessary ioctl(I_FIND) kernel warnings
+    Bug 599444 - Scrollback index type mess
+    Bug 598814 - text.getText(0, -1) triggers assertion in vteaccess.c
+    Bug 596739 - Python bindings leak memory
+    Bug 597165 - void return in vte.c
+    Bug 587894 - the environment passing with python does no longer work
+
+0.22.2
+=======
+- Fix crash introduced in previous release
+- Fix a11y assertion failure
+- Improve selection at the end of row
+- Bugs fixed in this release:
+    https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/435646
+    Bug 596444 - word-select includes \n when the word ends at the edge of the terminal
+    Bug 596460 - 0.22.1 kills vte based apps
+
+0.22.1
+=======
+- Fix crash on terminal reset
+- Fix build on Solaris
+- Bugs fixed in this release:
+    Bug 596365 - libvte crashes when issueing 'reset' in a terminal
+    Bug 588033 - background tabs may lose lines off the bottom of the scrollback
+    Bug 596163 - Doesn't display expected background color in ncurses apps
+    Bug 596011 - Problem compiling vte 0.22.0 on Solaris
+
+0.22.0
+=======
+- New stable release series
+
+0.21.7
+=======
+- Fix tab and wide-char handling
+- Revert symbol-hiding that was breaking build in some cases
+
+0.21.6
+=======
+- Another rewrite of the ring.  Stores ring data on tmp files on disk now.
+  Please report any regressions.
+- Mark library-internal symbols as such
+
+0.21.5
+=======
+- Finish ring rewrite.  Scrollback buffer consumes ten times less
+  memory now, and better, doesn't allocate from the heap, so closing
+  tabs actually releases memory.
+
+0.21.4
+=======
+- Remove another stale assert()
+- Oops, use the right map decoding function is iso2022 code
+
+0.21.3
+=======
+- Really fix the ring this time
+- Enable g_assert().  May trigger some bogus ones now.  Please report.
+
+0.21.2
+=======
+- Bugs fixed in this release:
+    Bug 592990 - gnome terminal crashes with glibc detected
+
+0.21.1
+=======
+- Redesigning the vte buffer ring is going on.  Please report any misbehavior
+- Bugs fixed in this release:
+    Bug 590824 - gnome-terminal crashed with SIGSEGV after hiting ctrl+o
+    Bug 572230 - text mode program rendering is strange in cjk locale.
+    Bug 588200 - bashisms in shell scripts
+
+0.20.5
+=======
+- Followup release to undo unintentded .soname bump
+
+0.20.4
+=======
+- New enum value VTE_ERASE_TTY.
+- Make VTE_ERASE_AUTO send \H for backspace if terminal erase is undefined.
+- Bugs fixed in this release:
+    Bug 584281 - build: avoid double installation of xterm
+    Bug 543379 - VTE sends NUL/^@ for backspace
+
+0.20.3
+=======
+- Bugs fixed in this release:
+    Bug 583129 - [python] allow passing None as command or directory option
+    Bug 583078 - [python] allow passing of environment as a dictionary
+
+0.20.2
+=======
+- Bugs fixed in this release:
+    Bug 567064 - Work around buggy iconv
+
+0.20.1
+=======
+- Bugs fixed in this release:
+    Bug 574491 – gnome-pty-helper can prevent volumes from being unmounted
+    Bug 576504 – vte does not pass its testsuite.
+    Bug 573674 – reset resets width to 80 chars
+    Bug 576797 – Double-click sometimes stops working
+
+0.20.0
+=======
+- Support using a real bold font instead of pseudo-bolding
+- Respond to fontconfig configuration changes
+- Bugs fixed in this release:
+    Bug 54926 – Should try bold version of font before pseudo-bolding
+    Bug 570208 – vte fails to build outside source tree
+    Bug 548272 – Fix output of CSI 13,14, 18-21
+    Bug 565688 – [gnome-pty-helper] using openpty in a bad way
+    Bug 566795 – VTE fails to build in trunk
+    Bug 524170 – Support initc terminfo capability and change-cursor-color
+    Bug 566730 – vte_terminal_set_color_cursor() calls invalidate_all but
+                 it doesn't have to
+    Bug 565679 – alloca is discouraged
+    Bug 565675 – typo in configure.in cause ncurses checking fail
+    Bug 565663 – compile failure because use static function in another .h
+                 file
+    Bug 575398 – configure warns about term.h under OpenSolaris
+    Bug 574616 – "real" transparency not working from python bindings
+    Bug 574025 – Crash in _vte_terminal_insert_char
+
+0.19.4
+======
+- Support for correct rendering of combining characters
+- Fix background rendering.
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 564535 – check for gperf in autogen.sh
+       Bug 149631 – gnome-terminal doesn't combine combining chars in utf8
+       Bug 564057 – src/pty.c does not compile with
+               --disable-gnome-pty-helper
+       Bug 562695 - ship pkg-config file for python bindings
+       Bug 563752 – pangocairo backend recreates cairo_surface_t for
+               background drawing
+       Bug 163213 – Cursor should remain visible when selected
+
+0.19.3
+======
+- Really fix the rendering bug.
+- Bugs fixed in this release:
+       Red Hat Bug 474618 -  gnome-terminal sometime leaves empty begining
+               of the line
+
+0.19.2
+======
+- Rewrote text selection.  Much less buggy now.  Specially block-mode.
+- Fixed rendering bug caused by wrong tab handling introduced in 0.19.0.
+- More deprecation.  VteReaper is deprecated and will be removed in 1.0.
+- Minor optimizations in the pangocairo backend.  Only one FcFontSort now
+  instead of the previous two.
+- Bugs fixed in this release:
+       Red Hat Bug 474618 -  gnome-terminal sometime leaves empty begining
+               of the line
+       Bug 563274 – Misspelled word in src code
+       Bug 563024 – In alternate-screen, selection can copy out of screen
+               boundaries
+       Bug 552096 – Detect tgetent if provided by libtinfo
+       Bug 559818 – redundant selection-changed signal on deselection
+       Bug 471480 – select single character
+       Bug 110371 – Cannot select newline at end of full line
+       Bug 112172 – Get rid of VteReaper
+       Bug 560667 – invalid definition of VTE_INVALID_SOURCE
+       Bug 541441 – Dehighlight links on visibility notify?
+
+0.19.1
+======
+- New, PangoCairo, rendering backend.  This is functionally equivalent to the
+  previous default backend which was Xft.  And just a tad bit faster.
+- All other backends are removed.
+- Configurable cursor shape (block, underline, I-beam).
+- Preliminary object properties added to VteTerminal.
+- Vte now depends on glib, pango, gtk+, and nothing else.
+- API that will be removed in vte 1.0 has been marked deprecated in this
+  release.
+- gnome-pty-helper does no longer depend on and link to glib
+- General code maintenance and cleanup.
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 562806 – crash in Terminal: Typing "cd " just after ...
+       Bug 562511 – scrollbar doesn't sit at the bottom
+       Bug 540951 – The gnome-pty-helper is spawn when its not needed
+       Bug 465036 – gnome-pty-helper locks /var/run/utmp
+       Bug 127870 – terminal garbled and needs 'reset' after cat'ing file
+       Bug 317236 – vte resynchrones too late on invalid UTF-8
+       Bug 107031 – device-control-string error
+       Bug 521420 – vte closes connection to child before all output is read
+               Patch from Thomas Leonard
+       Bug 514632 – Problem with cursor in emacs in gnome-terminal
+       Bug 459553 – gnome-terminal cannot shows circled digits with the
+               correct width on ja_JP.PCK
+               Patch from Takao Fujiwara
+       Bug 562385 – gnome-pty-helper goes to 100% cpu usage
+       Bug 562332 – cleanup font infos on exit?
+       Bug 562338 – don't need to connect to bunch of xft settings
+       Bug 488960 – gnome-terminal on Solaris 10 does not clean up utmpx on
+               exit (intermittent)
+       Bug 561366 – remove antialias setting for 1.0
+       Bug 562187 – Add make rules for calling gperf
+       Bug 416518 – Do something about uniwidths
+       Bug 500191 – Remove vteseq-table.h?
+       Bug 514457 – Use g_strv_length()
+       Bug 542561 – Doesn't build when disabling gnome-pty-helper
+       Bug 560766 – Deprecate and remove vte_terminal_get_using_xft()
+       Bug 536894 – Confusing use of "free" as variable-name in ring
+               functions
+       Bug 561713 – crash on font cache cleanup
+       Bug 560819 – Remove obsolete backends
+       Bug 560818 – pangocairo backend doesn't share font cache across
+               widgets
+       Bug 560977 – Cleaning up GTK Includes in vte
+       Bug 561185 – pangocairo backend sets antialias incorrectly
+       Bug 560817 – pagocairo backend doesn't have correct opacity support     
+       Bug 560991 – Unsetting background doesn't work
+       Bug 395599 – Add pangocairo backend
+       Bug 557375 – >=vte-0.16.14 breaks highlighting on activity
+        Bug 556398 – maybe deprecate vte_terminal_get_char_ascent/descent
+        Bug 339819 – LibVTE terminals in GLADE
+        Bug 399364 – Implement properties
+        Bug 556328 – Document set-scroll-adjustment parameters
+       Bug 549835 – Feature Request: Configurable cursor appearance
+        Bug 509204 – child-exited signal does not provide exit code
+        Bug 539130 – building g-t fails due to GtkType etc. deprecation
+
+0.17.4
+======
+- Translation updates
+
+0.17.3
+======
+- Update python bindings to bind new API from 0.17.1
+- Bugs fixed in this release:
+       Bug 538344 – Anjuta hangs when program is executed in terminal
+
+
+0.17.2
+======
+- Bugs fixed in this release:
+       Bug 546940 – Crash when selecting text
+
+0.17.1
+======
+- New API to:
+  * Make the cursor blinking follow the gtk setting by default, with a
+    possible override.
+  * Set named cursors on matches.
+  * Do GRegex matching, to be used alternatively to the old vteregex matching.
+  * Add set-scroll-adjustments signal, needed to allow adding a VteTerminal
+    into a GtkScrolledWindow.
+  * Add version check macro.
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 546366 – hard to select last tab char on a line
+       Bug 545924 – tab characters not handled correctly after ncurses clear   
+               Patch from Patryk Zawadzki
+       Bug 542795 – VTE_CJK_WIDTH don't work
+        Bug 399744 – Hide more font-aa implementation details
+        Bug 510903 – use gtk-cursor-blink setting
+        Bug 539130 – building g-t fails due to GtkType etc. deprecation
+       Bug 540182 – crash in geany with vte trunk
+       Bug 535552 – vte_terminal_set_allow_bold doesn't queue redraw
+        Bug 535469 – support named cursors on matches
+        Bug 418918 – Switch to GRegex
+        Bug 535467 – implement set-scroll-adjustments signal
+        Bug 535468 – need version check macros
+       Bug 515972 – Bold black is black in vte's default palette
+
+0.16.14
+=======
+- Bugs fixed in this release:
+       Bug 536632 – vte build failure in ring.c:210: error: expected
+               expression before 'do'
+       Bug 535022 – ambiguous width in utf8 locale
+       Bug 534148 – Use g_listenv() instead of environ
+       Bug 516869 – vte displays nothing on GTK+/DirectFB
+               Original patch by Jérémy Bobbio.
+       Fix "GLib-CRITICAL **: g_io_add_watch_full: assertion
+                              `channel != NULL' failed"
+
+0.16.13
+=======
+- Minor optimization.
+- Bugs fixed in this release:
+       Bug 517709 – VTE's pty.c makes 4096 getrlimit calls when it only needs
+       one
+       Bug 449131 – Wrong gettext domain
+
+0.16.12
+=======
+- More work around Gdk backends that don't issue GdkVisibilityNotify.
+- Bugs fixed in this release:
+       Bug 503164 – Drawing problems for VTE with gtk+-quartz
+       Bug 449131 – Wrong gettext domain
+
+0.16.11
+=======
+- Work around Gdk backends that don't issue GdkVisibilityNotify.
+- Try transliteration when pasting text into a non-UTF-8 locale.
+- Bugs fixed in this release:
+       Bug 503164 – Drawing problems for VTE with gtk+-quartz
+       Bug 319687 – Pasting of text containing characters not in the
+               terminal's encoding silently fails
+
+0.16.10
+=======
+- Smart tab character: you can now copy/paste tab characters printed by cat,
+  diff, and other line-oriented tools and get the tab character in the
+  clipboard, instead of multiple spaces.  The selection indicates that by
+  being all or none.
+- Misc bug fixes and optimizations.
+- Bugs fixed in this release:
+       * src/vtedraw.c (_vte_draw_init_user): Make VTE_BACKEND=list list
+       available backends to stderr.
+
+       Bug 497246 – Kill vte_iso2022_fragment_input
+       Bug 412435 – Invalid variable name in Makefile.am
+       Bug 416561 – Rendering issue in VtePango
+       Bug 416558 – Rendering errors in VteFT2
+       Bug 403217 – Outdated README
+       Bug 118967 – single line scrolling with "Ctrl+Shift+ArrowUp/ArrowDown"
+               Patch from Mauricio and Mariano Suárez-Alvarez
+       Bug 353610 – Don't convert tab characters upon copying
+       Bug 499892 – strikethrough line is too high
+       Bug 499891 – vte with opacity set, shows invisible chars
+       Bug 499896 – Alternate charset isn't an attribute, though we treat it
+               as one.
+       Bug 499893 – cell.attr.protect is unused
+       Bug 499287 – Fix doc coverage regression
+       Bug 142640 – FcConfigSubstitute in place of _vte_fc_defaults_from_gtk
+               to get antialias and hinting value
+       Bug 439384 – gnome-terminal on feisty crashes when giving wrong locale
+               environment
+       Bug 483642 – vte_terminal_feed crash when 8190 characters passed
+       Bug 480735 – Underlining whitespace not reliable
+               Original patch by Steven Skovran.
+
+0.16.9
+======
+- Slightly improved pango backend
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 469862 – Handling of wrapped links in gnome-terminal is broken
+       Bug 471901 – troubles with pad
+       Bug 153265 – Handle Sun Cut, Copy, Paste keys
+               Patch by Brian Cameron.
+       Bug 471484 – vteapp resize weirdness
+       Bug 434230 – Spaces are not underlined
+               Original patch by Santtu Lakkala.
+       Bug 450069 – vte crash on removing a terminal tab
+
+0.16.8
+======
+- Quick followup release with no code changes, to fix missing
+  documentation index in the tarball.
+
+0.16.7
+======
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal
+               Patch by James Bowes
+       Bug 448259 – Mapping for Ctrl-_
+               Patch by Andrey Melnikov.
+       Bug 449809 – use python-config to get python includes
+               Patch by Sebastien Bacher.
+       Bug 450745 – VTE's response to CSI 2 1 t incorrectly formatted
+               Patch by Dale Sedivec.
+
+0.16.6
+======
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 445620 – Some characters shows different in different locales.
+               Patch from Zealot
+       Bug 372743 – vte_terminal_set_colors doesn't work as advertised
+
+0.16.5
+======
+- Fix issue with 'some strange "underline" line where cursor is
+  located and blinking'.
+
+0.16.4
+======
+- Misc bug fixes.
+- Bugs fixed in this release:
+       Bug 429278 – Cursor drawn strangely in joe
+       cf Bug 439247 – scrolling vim in full screen is painfully slow and takes up 100% of the cpu
+       Bug 440475 – Display glitch with transparent backgroud
+       Bug 375112 – ctrl-key combinations yielding just key
+               Original patch by <samo altern org> and refactored by Loïc Minier.
+       Bug 440377 – gnome-terminal cannot refresh terminal when accessibility enabled
+               Original patch by Li Yuan.
+       Bug 433776 – gnome-terminal crashes when open preedit area
+
+0.16.3
+======
+- Remove false warnings about missing glyphs in the Xft backend.
+- Rename --enable-debugging configure option to --enable-debug to
+  match other modules.
+- Fix some of refresh issue where terminals stopped updating after
+  changing workspaces.
+- Bugs fixed in this release:
+       Bug 429189 – Vte-WARNING's
+       Bug 415044 – Use --enable-debug rather than --enable-debugging
+       Bug 414716 – Refresh issue after changing workspaces
+
+0.16.2
+======
+- Consider ambiguous-width chars if VTE_CJK_WIDTH env var is set and we
+  are under a CJK locale.
+- Minor optimization
+- Bugs fixed in this release:
+       Bug 431799 – Regex highlighting is broken
+
+0.16.1
+======
+- Lots of bug fixes by Chris Wilson
+- New feature: mouse scroll-wheel now feeds three arrow-up/down keys to the
+  terminal if in the "alternate" mode.  The alternate mode is used by apps
+  like vim, less, emacs, screen, etc.  This makes the scroll-wheel usable
+  in a state that it was of no use before.
+- Bugs fixed in this release:
+       Bug 426870 – vte often passes NUL to functions requiring valid unichar
+       Bug 419644 – Links do not get highlighted anymore
+       Bug 404757 – URL matching doesn't work with PCRE
+       Bug 426541 – crash on IRM escape code
+       Bug 424184 – Make scroll wheel send Page Up/Down when it makes sense
+               Original patch by Shaun McCance and refined by Baris Cicek.
+       Bug 425767 – vte_terminal_set_color_highlight should test for
+               NULL before _vte_debug_print
+       Bug 422385 – vte appears at the top of the root window even when
+               packed at the bottom of it
+               Patch by Dodji Seketeli.
+       Bug 420935 – glyph can be cropped with not fitting in a cell
+       Bug 420067 – Does not handle expose events whilst processing
+               unseen incoming data
+       Bug 415381 – Improve performance of vte_terminal_insert_char()
+       Bug 418073 – Opacity ignored for vtexft
+       Bug 418910 – Asymmetric scrolling with mouse wheel
+       Bug 416634 – Rendering glitch as autowrapped chars are outside
+               invalidated bbox
+       Bug 416635 – Rendering glitch: double draw of line below exposed region
+       Bug 418588 – Invalid read when drawing preedit cursor
+       Bug 417652 – Scrolling bug exposed by nvi
+       Bug 417301 – Terminal widgets don't respond to DPI changes
+
+0.16.0
+======
+- Fix some minor bugs.  More regressions to be fixed later.
+- Bugs fixed in this release:
+       Bug 414716 – gnome-terminal-2.17.92: terminal window dies...
+       Bug 414586 – Terminal screen blinks when menu is opened for the first time
+       Bug 413068 – new line added to tab when opened
+
+0.15.6
+======
+- Fix various bugs introduced in last couple of releases.
+- Bugs fixed in this release:
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+       Bug 413068 – new line added to tab when opened
+       Bug 413262 – Incorrectly coloured tabs
+       Bug 413102 – Incorrect highlighting in vim
+       Bug 413158 – Cursor trails
+       Bug 413078 – Crash during opening a new tab whilst scrolling
+       Bug 412717 – Crash when opening a new tab with window maximized
+
+0.15.5
+======
+This is a quick followup release to 0.15.4 to fix a crasher recently
+introduced.
+- Fix a newly-introduced crasher
+- Do not link to libpython in the python bindings
+- Bugs fixed in this release:
+       Bug 412562 – Crash in vte_terminal_match_hilite_update
+       Bug 410986 – Fails to build with -z defs
+
+0.15.4
+======
+This is yet another release including awesome work of Chris Wilson.
+Hopefully mostly bugs fixed with this release and not many introduced.
+- Bugs fixed in this release:
+       Bug 412361 – Yet another mouse selection regression...
+       Bug 411000 – Orca repeats old text in gnome-terminal
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+       Bug 410463 – Poor interactive performance with multiple terminals
+       Bug 159078 – slow highlight
+       Bug 411276 – SVN trunk compilation error
+       Bug 410986 – Fails to build with -z defs
+               Patch by Loïc Minier.
+       Bug 410819 – slider not correctly positioned after calling less
+       Bug 410534 – Slow content scrolling, takes 100% of CPU.
+       Bug 410463 – Poor interactive performance with multiple terminals
+       RedHat Bug 113195: First line displayed incorrectly if prompt changes background color
+       RedHat Bug 123845: gnome-terminal not parsing cursor position escape sequence properly
+       Bug 409055 – Terminal stays blank
+       Bug 409241 – gnome-terminal crashed with SIGSEGV in vte_terminal_draw_graphic()
+       Bug 407945 – "GNOME" Terminal" regression after "vte" update when using "csh"
+       Bug 408536 – trouble compiling vte 0.15.3
+       Bug 408040 – vte automagic hyperlinks
+               Patch by Gilles Dartiguelongue.
+       Bug 407839 – Use of environ breaks build on Solaris
+               Original patch by Damien Carbery.
+       Bug 407358 – regression in mouse selection
+
+0.15.3
+======
+This is another release including awesome work of one Chris Wilson.  Lots of
+bugs with the previous release are fixed in this one and some new ones are
+introduced.  Doh!
+
+- Faster control sequence matching, using gperf-generated tables now
+- Faster regex matching
+- Improved expose handling
+- Improved control sequence matching
+- Various optimizations
+- Various cleanups
+- Bugs fixed in this release:
+       Bug 407091 – vte_terminal_fork_command() env argument changed semantic
+               in 0.15.2
+               Original patch by Michael Vogt.
+       Bug 323393 – Hyper-sensitive selection
+       Bug 406763 – Selecting double-wide characters
+       Bug 363597 – Scrollback in profile dialog doesn't work
+       Bug 345344 – Pattern matching is inefficient
+       Bug 324246 – Performance degredation with large numbers of highlighted
+               addresses/URLs
+       Bug 86119 – "select all" feature
+               Original patch by Simone Gotti.
+       Bug 342059 – ASCII escape sequences don't work as expected
+               Patch by Mariano Suárez-Alvarez.
+       Bug 404757 – URL matching doesn't work with PCRE
+       Bug 403028 – decset mode 12 = blinking cursor
+       cf Bug 342338 – suffers from memory fragmentation
+       Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue
+       cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on
+               unaccelerated X server
+       Bug 322241 – Please switch to pkg-config to check for freetype
+       Bug 322240 – Usage of pkg-config privates header
+       cf Bug 403275 – crash in Terminal: I was typing reset on th...
+       Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386
+       Bug 382245 – __PyGtk_API multiply defined in python module
+       Bug 155687 – Scroll region \E[NN;MMr should set cursor to home
+       Bug 147784 – cursor unvisible under mouse highlight
+       Bug 368894 – crash in Terminal: I started gnome-terminal...
+       Bug 402329 – Rendering problem with underlines and cursor
+       Bug 336105 – gnome-terminal crashes when termcap not found
+       Bug 401215 – Multi-pass renderering
+       Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input
+               style
+               Patch by ynakai redhat com.
+       Bug 400834 – Use a global display/process timeout
+       Bug 401082 – double-draw issue
+       Bug 318307 – Cursor colour changes to foreground when unfocused
+       Bug 317449 – The cursor disappears when clicking on windows above
+               gnome-terminal
+       Bug 400759 – update problem with vte trunk
+       Bug 400671 – crash in Terminal: detaching of tabs
+       Bug 399137 – UTF-8 problem in VteAccess
+       Bug 400493 – Mouse selection seriously broken
+       Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED
+       cf Bug 400072 – Handling of ; in control sequences
+       cf Bug 399617 – Avoid memory allocations during an expose event.
+       Bug 147495 – screen flicker when opening new terminal windows
+       Bug 334755 – Incomplete information from vte_terminal_get_font
+       Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
+       Bug 335269 – Change the way vte handles PangoFontDescription behind
+               vte_terminal_set_font
+       Bug 123591 – vte_terminal_fork_command succeeds even when it does not
+
+0.15.2
+======
+This is a very exciting release.  Most of the changes are made by Chris Wilson
+who just got access to the vte repository.  On his first day he committed more
+than 20 large patches, cleaning various parts of the code base and optimizing
+too!  As a result of huge changes in this release, some regressions, specially
+on less common systems/architectures is expected.  Please file bugs.
+
+Highlights of improvements in this release:
+- Moving around in vim and mc is a lot faster now, thanks to much
+  smaller areas that will be redrawn with this release.
+- Mouse wheel is usable in mc now, since we don't generate release
+  events for scroll wheel events anymore.
+- Faster.  One of the internal timers was completely removed, and
+  lots of unnecessary work is not done anymore.  Particularly when
+  the widget is not visible.
+- Switched to using g_spawn_async to fork the child process, so we
+  can now enjoy the error checking implemented in that functions.
+  Failed forks now return an error message.
+- Accessibility improvements.
+- New environment variable VTE_BACKEND, to choose which rendering
+  backend to use.  The old VTE_USE_* env vars are deprecated and
+  not functional anymore.
+- Bugs fixed in this release:
+       Bug 399137 - continuation.
+       Bug 132316 – terminal widget's context menu posting isn't exposed as an AtkAction
+                    Original patch by <padraig obriain sun com>
+       Bug 156161 – AccessibleText_getTextAtOffset returns wrong values in gnome-terminal
+                    Patch by <padraig obriain sun com>
+       Bug 399137 – UTF-8 problem in VteAccess
+       Bug 123591 – vte_terminal_fork_command succeeds even when it does not
+       Bug 345514 – -no-undefined doesn't work with latest libtool
+       Bug 162003 – vte configure.in X checking can fail
+                  – though this may cause other regressions!
+       Bug 314669 – Please specialize AC_PATH_XTRA
+       Bug 389538 – crash in Terminal: nothing
+       Bug 161479 – Scroll wheel generates Release events
+       Bug 398602 – Build Failure
+       Bug 397724 – Orca incorrect echo's certain input in gnome-terminal
+                    when key echo is set to off (on Ubuntu Feisty).
+       Bug 398244 – Gnome-terminal opens a huge sized window
+       Bug 398243 – Crash
+       Bug 398116 – lags behind when widget not visible
+       Bug 398083 – background not painted correctly when starting up
+       Bug 397414 - port vteapp to GOption
+       Bug 395373 - Allow the user to specify backend priorities.
+       Bug 346554 – Fancy prompt triggers update problem
+       Bug 397439 – Performance enhancement patch series
+       Bug 161342 – Vte slow with mc and vim
+       Bug 387171 – vte fails to install on FreeBSD due to missing header
+                    Patch from Roy Marples
+       Bug 396831 – Unable to compile without X
+                    Patch from Chris Wilson
+       Bug 394890 – Segfault when running vte or gnome-terminal
+
+0.15.1
+       Bug 354061 – Excessive use of strlen by _vte_termcap_create
+                    Patch from Ryan Lortie
+       Bug 387475 – Gtk-Warning spew in gnome-terminal
+                    Patch from Ryan Lortie
+       Bug 387482 – Variable modified in signal handler should be volatile
+                    Patch from Bastien Nocera
+       Red Hat Bug 218626: "last -ad" print junk in last column
+
+0.15.0
+       Bug 356552 – cursor timeout runs all the time [Ryan Lortie]
+       Bug 307396 – Mouse scroll mode not controllable [Mariano Suárez-Alvarez]
+       Bug 356602 – const cast warning fixes for libvte [Ryan]
+       Bug 150858 – In gnome-terminal, the deleted character reported as "space" [Rich Burridge]
+       Bug 337252 – ALT + Arrow keys don't work in irssi through gnome-terminal [Mariano]
+
+0.14.1
+       Bug 358344 – autoscroll only works one way in fullscreen [PATCH]
+                    Patch by Egmont Koblinger
+       Bug 353756 – font setting cleanup
+       Bug 356616 – libvte broken with new autotools
+       Bug 354024 – Suppress multiple warnings for missing control sequence
+                    handlers
+                    Patch from Chris Wilson
+       Bug 354620 – vte-0.14.0: undefined C code
+                    Patch from Ales Nosek
+       Define G_LOG_DOMAIN=Vte.
+
+0.14.0
+       Minor doc syntax update.
+       Fix bug causing empty lines to not being copied.
+
+0.13.7
+       Bug 350236 – Cannot copy text; invalid character sequence errors
+       Bug 352439 – URL highlighting seriously broken
+       Bug 351494 – Gnome-terminal doesn't kills bash on tab close
+                    Patch from Aivars Kalvans
+       Bug 352365 – font caching problem for not-found glyphs
+
+0.13.6
+       Bug 351696 – crash on Terminal, check ->window before setting
+                    icon/window title
+       Bug 350623 – Accessible text getTextAtOffset is broken
+                    Patch from Willie Walker
+
+0.13.5
+       Bug 158200 – terminal backspace behavior not set to UTF-8 mode
+                    Based on patch from Egmont Koblinger
+       Bug 348814 – crash on Terminal
+                    Patch from Aivars Kalvans
+
+0.13.4
+       Fix selection that I broke in last release.
+       Bug 336947 – [patch] Redundant vte_terminal_set_font_full() calls
+                    Patch from Aivars Kalvans
+       Bug 134800 – gnome-termnal hung up when input by ATOK
+                    Patch from Yukihiro Nakai  <nakai gnome gr jp>
+       Bug 339983 – gnome-pty-helper should log username
+                    Patch from Brian Cameron
+
+0.13.3
+       Bug 121904 – copy-paste of empty line
+       Bug 25290 – Small UI tweak to select-by-word (only select only letter
+                   at a time for non-word characters)
+       Bug 339986 – Patch to select localized strings exactly
+                    Patch from Takao Fujiwara
+       Bug 311855 – Race in vte leads to blocking of input.
+                    Patch from Kalle Raiskila
+       Bug 342396 – Ctrl-space sends " ", not NUL.
+       Bug 345377 – real transparency
+                    Patch from Kristian Høgsberg <krh redhat.com>
+       Bug 345514 – -no-undefined doesn't work with latest libtool
+       Bug 141985 – vte does not respond to 'CSI 2 1 t' or 'CSI 2 0 t' with
+                    the correct window/icon title
+                    Patch from Mariano Suárez-Alvarez
+
+0.13.2
+       Bug 344666 – Problems with *_CFLAGS and *_LDFLAGS in makefiles
+                    Patch from Stepan Kasal <kasal ucw cz>.
+       Bug 339529 – gnome-terminal (vte) crashes when detatched window is
+                    closed
+       Bug 342549 – uninitialized var (coverity)
+                    Patch from Paolo Borelli.
+       Bug 342082 – vte_invalidate_region() may check whether terminal is
+                    realiazed or not
+                    Patch from Kouhei Sutou.
+       Bug 340363 – vte Cygwin build fixes
+                    Patch from Cygwin Ports maintainer
+       Bug 341793 – vte.h doesn't need to include X11/Xlib.h
+                    Patch from Kouhei Sutou
+       Require intltool 0.35.0 to have translations in the dist tarballs.
+       Fix typo which may have been causing things like crashes.
+
+0.13.1
+       Use intltool 0.34.90 to make sure tarball includes po files.
+       Bug 339980 – nativeecho needs glib in LDADD to build on Solaris
+                    Patch from Brian Cameron.
+       Bug 331803 – style needs to be attached/detached to the window on
+                    realize/unrealize
+                    Patch from Benjamin Berg  <benjamin sipsolutions net>.
+       Pass -no-undefined linker flag.
+
+0.13.0
+       Removed obsolete #ifde GTK_CHECK_VERSION(2,2,0) checks.
+       Bug 339448 – selection doesn't respect hard newlines
+       Bug 148720 – Word selection erroneously captures text from next line
+       Bug 126376 – Uncoinditional definition of _XOPEN_SOURCE breaks build
+                    on NetBSD
+       Bug 97719 – Selection: double/triple click doesn't cross line boundaries
+       Bug 160782 – Vte isn't multi-screen safe
+       Bug 330441 – Remove libzvt support
+       Bug 328850 – Crash when pasting selection
+       Bug 160134 – mouse events occurring past column 95 are not passed
+                    through to terminal application
+                    New public function vte_terminal_feed_child_binary
+       Bug 135230 – Feature request to attach VTE to existing pty
+                    New public function vte_terminal_set_pty
+       Bug 337442 – [patch] Reduce .plt section
+                    We use a regexp to limit exported symbols now.
+       Bug 142247 – use of uninitialized value
+       Bug 149633 – gnome-terminal messes up boxdrawing chars aligment
+       Bug 144456 – UK pound currency symbol rendered incorrectly
+       Bug 307403 – xticker doublefree
+       Bug 337877 – Patch to use po/LINGUAS
+       Bug 337552 – Insufficient version requirement for gtk+
+       Bug 168251 – add support for 256 colors terminals
+       Bug 120276 – Wishlist: Support Rectangular Selection
+       Bug 336117 – [patch] Use g_slice API
+       Bug 336128 – vim scrolling issues - emulation errors
+       Bug 334385 – Use intltool
+       Bug 104841 – scrolling doesn't work inside "screen" windows
+       Bug 333768 – vteapp debug stuff should be conditional
+
+0.12.0   - Released with no code changes.
+
+0.11.21         - Revert change introduced in 0.11.19 that made vte very unresponsive
+          with tall terminal windows. (bug #333776)
+        - Step up COALESCE_TIMEOUT and DISPLAY_TIMEOUT from 2ms to 10ms.
+          This is more compatible with the update timeout that we are doing
+          at 25ms, but needs testing.
+
+0.11.20         - Revert patch introduced in 0.11.16 that was corrupting the Xft
+          font cache. (bug #309322)
+
+0.11.19         - Revert Shift+Insert to paste PRIMARY.  Use Ctrl+Shirt+Insert to
+          paste CLIPBOARD (bug #123844)
+        - Improvements to the update throttling handler.
+        - gnome-pty-helper minor race condition fix.
+        - Use getpwnam to correctly log multiple users with the same UID
+          (bug #319564, Laszlo Peter)
+        - A couple minor build fixes.
+
+0.11.18         - Fix bug #317235 - Use U+FFFD instead of U-FFFF for invalid
+          codepoints. (Egmont Koblinger)
+        - Modernized the build system.  Depending on gnome-common  for
+          autogen.sh now and make distcheck works.
+        - Limit redrawings to a maximum of 40fps.  Makes vte run about
+          three times faster.
+        - Use GObject private data internally. (Behdad)
+        - Optimize the sequence handler code and split it into a
+          separate file. (Behdad)
+        - Fix bug #123844 - primary and clipboard selections are broken.
+          (Behdad)
+        - Fix bug #161337 - double free. (Guilherme de S. Pastore)
+        - Code cleanup and misc fixes. (Behdad)
+
+0.11.17  - Revert .pc changes from previous release (Olav Vitters)
+        - Fix bug #170032 - gnome-terminal has problems with ANSI
+          (save and restore cursor position) (Olav Vitters)
+        - Fix bug #321909 – vte does not install devhelp file
+          (Guilherme de S. Pastore)
+        - Apply patch from Kjartan Maraas to replace g_return* with
+          g_assert in static functions (Guilherme de S. Pastore)
+        - Avoid guessing the user's shell until we make sure it is
+          really necessary (Guilherme de S. Pastore)
+        - Disable asserts by default (Guilherme de S. Pastore)
+
+0.11.16  - Optimize memory used for fonts (Mike Hearn)
+        - Fix crasher with accessibility (Padraig O'Briain)
+        - Fix some warning from GDK (Michele Baldessari)
+        - Fix python build problems (Manish Sing)
+        - Fix generation of the forkpty() method for python.
+          (Michael Vogt)
+        - Cleanups for the .pc file (Steve Langasek)
+        - Don't emit signals for every character of output. Huge performance
+          improvement with a11y enabled. Patch from Padraig O'Briain.
+
+0.11.15  - Fix check for recvmsg () (Robert Basch)
+        - Make it possible to implement atkText selection methods
+          for VteAccessible. Bug #113590. (Padraig O'Briain)
+        - Don't crash if there's no termcap file (Michele Baldessari)
+        - Make VTE work on some Net/OpenBSD on sparc and macppc
+          (Dan Winship, Rich Edelman, Adrian Bunk)
+
+0.11.14  - Fix a crasher on reparent (Michele Baldessari)
+        - Fix a crash in a11y related code (Padraig O'Briain)
+        - Fix a crash in the pango backend (Michele Baldessari)
+        - Fix a crash from not unsetting the user data on the
+          gdk window (Matthias Clasen)
+        - Fix a crash in the python bindings when changing color
+          (Michele Baaldessari, Ethan Glasser-Kamp)
+
+0.11.13  - Back out one of the previous patches from Fedora since it had
+          issues (Reported by Warren Togami)
+        - Reduce memory consumption with more that one tab a whole lot
+          (Aivars Kalvans)
+        - Make the python bindings work again (Manish Singh)
+        - Build fix (Ali Akcaagac)
+        - Updated translations ug (Abduxukur Abdurixit), rw (Steve Murphy),
+          xh (Adi Attar))
+
+0.11.12: - Performance improvements:
+          - Two patches from bug #137864 (Benjamin Otte)
+          - Patch from bug #143914 (Søren Sandmann)
+        - Fix crash when resizing a terminal running minicom (Søren Sandmann)
+          Closes bug #163814 and duplicate.
+        - Adjust timeouts to make us behave like xterm when
+          outputing large amounts of text and still be fast (Kjartan)
+        - Fix build with VTE_DEBUG enabled (Kjartan)
+        - Build fixes for NetBSD and Darwin. Bug #126377 (Adrian Bunk)
+        - Build fixes for AIX. Bug #161352
+        - Make keypad behave like in xterm. Bug #128099. (jylefort at brutele be)
+        - Fix black background in new terminals. Bug #125364. (Fedora)
+        - Fix scrolling issues. Bug #168210 (Fedora)
+        - Fix screen corruption with multibyte charsets. Bug #168211 (Fedora)
+        - Redraw terminal fully before scrolling. Bug #168212 (Fedora)
+        - Fix crash with IM-methods. Bug #168213 (Fedora)
+        - Fix for scrolling back then forward. Bug 122150 (Benjamin Otte)
+        - Make terminal report correct type. Bug 130761 (Mariano)
+        - Updated translations:
+          Estii (et), Old English (ang), Canadian English (en_CA),
+          Spanish (es), Hungarian (hu), Albanian (sq), Norwegian bokmål
+          (nb), Bosnian (bs), Finnish (fi), Oriya (or), Georgian (ka),
+          Hindi (hi)
+0.11.11: Add APIs for setting font with/without antialiasing, cursor color,
+        hilite color, and a forkpty()-alike.  Fix meta-space.  Use glib 2.4's
+        child watch API if available.
+        Add a configure switch for setting the default emulation instead of
+        hard-coding it to be "xterm".
+        Tweak autowrapping of text to handle cases where the terminal has
+        both LP and xn capabilities.
+        Truncate empty lines when copying text to mimic xterm.
+        Internally abstract out matching APIs, though we still use POSIX regex.
+        Try to set UTF8 line editing mode under sufficiently-new Linux.
+        Obey Pango's specified attributes when displaying pre-edit text.
+        Never steal modifier keys which might affect the input method from
+        the input methods.
+        Fix python binding so that help() lists the terminal class.
+0.11.10: Fix cases where the application sets the encoding.  Adjust display of
+         way-too-wide characters to better comply with openi18n.
+0.11.9: Accessibility improvements.  Multihead fixes.  Revert to the 0.10 way
+        of determining how wide an ambiguously-wide character should be.  Fix
+        origin mode.  Fix linefeed mode, really.  Fix saving/restoring the
+        cursor position via DECSET/DECRST.  Fix handling of control characters
+        in the middle of control sequences.  Don't subject users to my crude
+        approximation of U00A3 if any available font can be used instead.
+0.11.8: Fix some memory leaks.  Fix compilation on Solaris.  Fix Ctrl-Space.
+0.11.7: Properly recognizes 8-bit versions of SS2 and SS3 intermixed with
+        UTF-8.  Add Macedonian and Welsh translations (yay GTP!).  Fix keypad
+        page down key in application keypad mode.  Internalize some conversions
+        to work better on platforms which lack a gunichar-compatible iconv
+        target or UTF-8 to UTF-8 conversions.
+0.11.6: Recognizes 8-bit versions of SS2 and SS3.
+        Shares pixmap and pixbuf backgrounds between multiple terminal widgets
+        within the same process, reducing both memory and CPU use.
+0.11.5: Support for PC437.  Fix Ctrl+/.  Use xrdb font settings if GTK+ doesn't
+        have anything to say.
+0.11.4: Speedier transparency update when you move the windows, fixes for
+        flickering when scrolling part of the screen, accessibility fixes.
+        Bold works again.
+0.11.3: Reworked handling of ISO-2022 text, handles Chinese and Korean
+        correctly.
+0.11.2: Fix for wrapping when selecting by word or lines.  Fix to conform to
+        OpenI18N assertions.
+0.11.1: A native FT2 drawing backend which may be faster than Pango on systems
+        without Xft2.  Support for scrolling backgrounds for everyone.
+0.11.0: Support for using font sets for better Unicode coverage when drawing
+        using Xft2.  Support for scrolling backgrounds with Xft2.
+0.10: Rewrote selection to better integrate dingus and autoscroll support.  The
+      previous implementation was just a mess.  Changed the APIs so that callers
+      have to decide whether or not to log (NOTE: this breaks gnome-terminal
+      versions before 2.1.1 and 2.0.2).
+0.9: Added integration with gnome-pty-helper.  This makes the lastlog/utmp/wtmp
+     stuff work.
+0.8: Added iso-2022 and national replacement character substitutions.  Line
+     drawing characters are now represented as Unicode code points internally,
+     so if you select a graphical line, you'll get the right results when you
+     paste it.
+0.7: Broke rendering code up into a couple of pieces to take advantage of
+     Xft2 and Xlib APIs for drawing more than one character at a time.
+0.6: Replaced the trie parser with a table-driven parser which is faster but
+     only accurate enough for ANSI-compatible terminal types.  At some point
+     I'll add a redirection layer to use the older code for other terminals.
+0.5: Store characters as gunichars internally instead of wchar_t's.  Most of
+     the internal processing is performed on gunichars anyway.
+0.4: Support for Xft2 (which lets us do things faster than Xft1), and python
+     bindings.
+0.3: Initial accessibility peer implementation.
+
+prehistory
+
+Local Variables:
+coding: utf-8
+End:
+vim: encoding=utf-8:
diff --git a/vte/README b/vte/README
new file mode 100644
index 0000000..190ef57
--- /dev/null
+++ b/vte/README
@@ -0,0 +1,13 @@
+* What is VTE?
+
+VTE is a library (libvte) implementing a terminal emulator widget for GTK+,
+and a minimal sample application (vte) using that.  Vte is mainly used in
+gnome-terminal, but can also be used to embed a console/terminal in games,
+editors, IDEs, etc.
+
+VTE supports Unicode and character set conversion, as well as emulating any
+terminal known to the system's terminfo database.
+
+VTE doesn't have a homepage.  Report any issues at:
+
+  http://bugzilla.gnome.org/enter_bug.cgi?product=vte
diff --git a/vte/acinclude.m4 b/vte/acinclude.m4
new file mode 100644
index 0000000..1a95c35
--- /dev/null
+++ b/vte/acinclude.m4
@@ -0,0 +1,32 @@
+dnl From msw.
+dnl
+dnl a macro to check for ability to create python extensions
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+if test -x "$PYTHON-config"; then
+    PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null`
+else
+    PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+    if test "$py_prefix" != "$py_exec_prefix"; then
+      PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+    fi
+fi
+PYTHON_LIBS="-L${py_prefix}/libs -lpython${PYTHON_VERSION}"
+AC_SUBST(PYTHON_INCLUDES)
+AC_SUBST(PYTHON_LIBS)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
diff --git a/vte/autogen.sh b/vte/autogen.sh
new file mode 100755
index 0000000..e1cc132
--- /dev/null
+++ b/vte/autogen.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+PKG_NAME="vte"
+
+(test -f $srcdir/configure.in \
+  && test -f $srcdir/README \
+  && test -d $srcdir/src) || {
+    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+    echo " top-level $PKG_NAME directory"
+    exit 1
+}
+
+echo "checking for GNU gperf"
+which gperf || {
+    echo "You need to install GNU gperf"
+    exit 1
+}
+
+echo "checking for gnome-autogen.sh"
+which gnome-autogen.sh || {
+    echo "You need to install the gnome-common package"
+    exit 1
+}
+
+. gnome-autogen.sh
diff --git a/vte/configure.in b/vte/configure.in
new file mode 100644
index 0000000..852056d
--- /dev/null
+++ b/vte/configure.in
@@ -0,0 +1,458 @@
+m4_define([version_major],0)
+m4_define([version_minor],28)
+m4_define([version_micro],2)
+m4_define([version_triplet],version_major.version_minor.version_micro)
+
+m4_define([so_major_adjust],9) dnl Don't change!
+
+AC_PREREQ([2.63])
+AC_INIT([vte],
+        [version_triplet],
+        [http://bugzilla.gnome.org/enter_bug.cgi?product=vte],
+        [vte])
+
+AC_CONFIG_SRCDIR([src/vte.c])
+AC_CONFIG_HEADERS([config.h])
+
+AM_INIT_AUTOMAKE([1.9 foreign no-dist-gzip dist-bzip2])
+
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+if test -z "$enable_maintainer_mode"; then
+  enable_maintainer_mode=yes
+fi
+AM_MAINTAINER_MODE([enable])
+
+################################################################################
+# Libtool versioning
+################################################################################
+m4_define([lt_revision], m4_if(m4_eval(version_minor%2),1,0,version_micro))
+m4_define([lt_age], m4_eval(version_minor*100+version_micro-lt_revision))
+m4_define([lt_current], m4_eval(so_major_adjust+version_major+lt_age))
+m4_define([lt_triplet],lt_current:lt_revision:lt_age)
+
+LT_VERSION_INFO="lt_triplet()"
+AC_SUBST([LT_VERSION_INFO])
+
+################################################################################
+# GTK+
+################################################################################
+
+  VTE_API_VERSION=0.0
+  VTE_API_MAJOR_VERSION=0
+  VTE_API_MINOR_VERSION=0
+  VTE_PC_VERSION=
+  VTE_LIBRARY_SUFFIX=
+  VTE_SEAL_CFLAGS=
+  GTK_API_VERSION=2.0
+  GTK_REQUIRED=2.20.0
+  GLADE_API_VERSION=1.0
+
+AC_SUBST([VTE_API_VERSION])
+AC_SUBST([VTE_API_VERSION_U],[AS_TR_SH([$VTE_API_VERSION])])
+AC_SUBST([VTE_API_MAJOR_VERSION])
+AC_SUBST([VTE_API_MINOR_VERSION])
+AC_SUBST([VTE_PC_VERSION])
+AC_SUBST([VTE_SEAL_CFLAGS])
+AC_SUBST([GTK_API_VERSION])
+AC_SUBST([VTE_LIBRARY_SUFFIX_U],[AS_TR_SH([$VTE_LIBRARY_SUFFIX])])
+
+AM_CONDITIONAL([HAVE_GTK_2],[true])
+AM_CONDITIONAL([HAVE_GTK_3],[false])
+
+################################################################################
+
+# Check for programs
+AC_PROG_CC
+AC_HEADER_STDC
+AM_PROG_CC_C_O
+AC_PROG_SED
+
+# Initialize libtool
+LT_PREREQ([2.2])
+LT_INIT
+
+
+################################################################################
+# i18n
+################################################################################
+
+IT_PROG_INTLTOOL([0.35.0])
+
+GETTEXT_PACKAGE=vte-$VTE_API_VERSION
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
+                   [Package translatable messages domain name.])
+AM_GLIB_GNU_GETTEXT
+AC_CHECK_DECLS(bind_textdomain_codeset,,,[#include "libintl.h"])
+
+
+################################################################################
+# Platform checks
+################################################################################
+
+AC_MSG_CHECKING([for a win32 platform])
+platform_win32=no
+case "$host" in
+       *-*-mingw*|*-*-cygwin*)
+               platform_win32=yes
+               ;;
+esac
+AC_MSG_RESULT([$platform_win32])
+AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
+
+os_win32=no
+if test "x$platform_win32" = "xyes"; then
+       AC_MSG_CHECKING([for native win32])
+       case "$host" in
+               *-*-mingw*)
+                       os_win32=yes
+                       ;;
+       esac
+       AC_MSG_RESULT([$os_win32])
+fi
+AM_CONDITIONAL(OS_WIN32, test "x$os_win32" = "xyes")
+
+
+if test "x$platform_win32" != "xyes"; then
+       LIBTOOL_EXPORT_OPTIONS=
+else
+       LIBTOOL_EXPORT_OPTIONS='-no-undefined'
+fi
+AC_SUBST([LIBTOOL_EXPORT_OPTIONS])
+LIBTOOL_FLAGS='-as-needed'
+AC_SUBST([LIBTOOL_FLAGS])
+
+
+################################################################################
+# Compilation
+################################################################################
+
+dnl Use lots of warning flags with with gcc and compatible compilers
+dnl Copied from cairo
+AC_DEFUN([VTE_CC_TRY_FLAG], [
+  AC_MSG_CHECKING([whether $CC supports $1])
+
+  vte_save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $1"
+
+  AC_COMPILE_IFELSE([ ], [vte_cc_flag=yes], [vte_cc_flag=no])
+  CFLAGS="$vte_save_CFLAGS"
+
+  if test "x$vte_cc_flag" = "xyes"; then
+    ifelse([$2], , :, [$2])
+  else
+    ifelse([$3], , :, [$3])
+  fi
+  AC_MSG_RESULT([$vte_cc_flag])
+])
+AC_DEFUN([VTE_LD_TRY_FLAG], [
+  AC_MSG_CHECKING([whether $CC supports $1 when linking])
+
+  vte_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $1"
+
+  AC_LINK_IFELSE([int main(void) {return 0;}],
+               [vte_ld_flag=yes], [vte_ld_flag=no])
+  LDFLAGS="$vte_save_LDFLAGS"
+
+  if test "x$vte_ld_flag" = "xyes"; then
+    ifelse([$2], , :, [$2])
+  else
+    ifelse([$3], , :, [$3])
+  fi
+  AC_MSG_RESULT([$vte_ld_flag])
+])
+
+
+dnl Note: if you change the following variable, the cache is automatically
+dnl skipped and all flags rechecked.  So there's no need to do anything
+dnl else.  If for any reason you need to force a recheck, just change
+dnl MAYBE_WARN in an ignorable way (like adding whitespace)
+
+MAYBE_WARN="-Wall -Wextra \
+-Wsign-compare -Werror-implicit-function-declaration \
+-Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
+-Waggregate-return -Wcast-align -Wimplicit -Wuninitialised \
+-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
+-Wpacked -Wmissing-format-attribute -Wshadow \
+-Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \
+-Wdeclaration-after-statement -Wold-style-definition \
+-Wno-missing-field-initializers -Wno-unused-parameter \
+-fno-common -Wno-switch-enum"
+
+# invalidate cached value if MAYBE_WARN has changed
+if test "x$vte_cv_warn_maybe" != "x$MAYBE_WARN"; then
+       unset vte_cv_warn_cflags
+fi
+AC_CACHE_CHECK([for supported warning flags], vte_cv_warn_cflags, [
+       echo
+       WARN_CFLAGS=""
+
+       # Some warning options are not supported by all versions of
+       # gcc, so test all desired options against the current
+       # compiler.
+       #
+       # Note that there are some order dependencies
+       # here. Specifically, an option that disables a warning will
+       # have no net effect if a later option then enables that
+       # warnings, (perhaps implicitly). So we put some grouped
+       # options (-Wall and -Wextra) up front and the -Wno options
+       # last.
+
+       for W in $MAYBE_WARN; do
+               VTE_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
+       done
+
+       vte_cv_warn_cflags=$WARN_CFLAGS
+       vte_cv_warn_maybe=$MAYBE_WARN
+
+       AC_MSG_CHECKING([which warning flags were supported])])
+WARN_CFLAGS=$vte_cv_warn_cflags
+AC_SUBST(WARN_CFLAGS)
+CFLAGS="$CFLAGS $WARN_CFLAGS"
+
+PYTHON_LDFLAGS=""
+for W in "-Wl,--warn-unresolved-symbols"; do
+       VTE_LD_TRY_FLAG([$W], [PYTHON_LDFLAGS="$PYTHON_LDFLAGS $W"])
+done
+AC_SUBST(PYTHON_LDFLAGS)
+
+# Enable debugging messages and additional run-time checks.
+AC_ARG_ENABLE(debug,
+             [AS_HELP_STRING([--enable-debug],
+                             [enable extra debugging checks and logging messages]
+                             )],
+             DEBUG=$enableval, DEBUG=no)
+if test "x$DEBUG" != "xno" ; then
+       AC_MSG_RESULT([enabling debug checks and messages])
+       AC_DEFINE(VTE_DEBUG,1,[Enable debugging messages.])
+fi
+
+##########################################################
+# Check for -Bsymbolic-functions linker flag used to avoid
+# intra-library PLT jumps, if available.
+##########################################################
+
+AC_ARG_ENABLE([Bsymbolic],
+  [AS_HELP_STRING([--disable-Bsymbolic],
+                  [disable linking with -Bsymbolic])],
+  [],[enable_Bsymbolic=yes])
+
+VTE_LDFLAGS=
+if test "$enable_Bsymbolic" != "no"; then
+  FLAG="-Wl,-Bsymbolic-functions"
+  VTE_LD_TRY_FLAG([$FLAG],
+    [VTE_LDFLAGS="$VTE_LDFLAGS $FLAG"],
+    [if test "$enable_Bsymbolic" = "auto"; then
+       AC_MSG_WARN([-Bsymbolic not supported by ld; disabling])
+       enable_Bsymbolic=no
+     else
+       AC_MSG_ERROR([-Bsymbolic requested but not supported by ld. Use --disable-Bsymbolic to disable])
+     fi])
+fi
+
+AC_SUBST([VTE_LDFLAGS])
+
+################################################################################
+
+# Disable deprecations and single includes
+# We don't use GNOME_MAINTAINER_MODE_DEFINES here since it's too much and
+# it also defines VTE's own defines.
+dnl AC_ARG_ENABLE([deprecation],
+dnl   [AS_HELP_STRING([--disable-deprecation],
+dnl                   [prohibit VTE from using deprecated GLib/Pango/ATK/GDK/GTK+ features])],
+dnl   [],[enable_deprecation=$enable_maintainer_mode])
+dnl if test "x$enable_deprecation" = xyes; then
+dnl   AC_MSG_NOTICE([disabling deprecated GLIB/PANGO/GDK/ATK/GTK+ features])
+dnl 
+dnl   AC_DEFINE([ATK_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([ATK_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl   AC_DEFINE([G_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([G_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl   AC_DEFINE([GDK_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([GDK_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl   AC_DEFINE([GDK_PIXBUF_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([GDK_PIXBUF_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl   AC_DEFINE([GTK_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([GTK_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl   AC_DEFINE([PANGO_DISABLE_DEPRECATED],[1],[Disable deprecated features])
+dnl   AC_DEFINE([PANGO_DISABLE_SINGLE_INCLUDES],[1],[Disable single includes])
+dnl fi
+
+################################################################################
+# Core
+################################################################################
+
+# Use all available features under glibc, and disable accidental use of
+# deprecated functionality.
+AC_EGREP_CPP(glibc,
+               [
+                #include <stdio.h>
+                #ifdef __GLIBC__
+                glibc
+                #endif
+               ],
+               AC_DEFINE(_GNU_SOURCE,1,[Use all glibc features.]))
+
+case $host in
+*-*-solaris*)
+       AC_DEFINE(_XOPEN_SOURCE_EXTENDED,1,[Needed to get declarations for msg_control and msg_controllen on 
Solaris])
+       AC_DEFINE(_XOPEN_SOURCE,1,[Needed to get declarations for msg_control and msg_controllen on Solaris])
+       AC_DEFINE(__EXTENSIONS__,1,[Needed to get declarations for msg_control and msg_controllen on Solaris])
+       ;;
+esac
+
+GLIB_REQUIRED=2.26.0
+PANGO_REQUIRED=1.22.0
+AC_DEFINE(GDK_MULTIHEAD_SAFE,1,[Force use of GDK's multihead-safe APIs.])
+PKG_CHECK_MODULES(GLIB,[glib-2.0 >= $GLIB_REQUIRED gobject-2.0])
+PKG_CHECK_MODULES(GTK,[glib-2.0 >= $GLIB_REQUIRED gobject-2.0 gtk+-$GTK_API_VERSION >= $GTK_REQUIRED])
+
+AC_PATH_PROG([GLIB_GENMARSHAL],[glib-genmarshal])
+AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
+
+# Let the user specify the default terminal emulation.
+AC_ARG_WITH(default-emulation,
+AS_HELP_STRING(--with-default-emulation=xterm,default terminal type to be emulated),
+emulation=$withval,emulation=xterm)
+AC_DEFINE_UNQUOTED(VTE_DEFAULT_EMULATION,"$emulation",[The default terminal type to be emulated.])
+VTE_DEFAULT_EMULATION=$emulation
+AC_SUBST(VTE_DEFAULT_EMULATION)
+AM_CONDITIONAL(VTE_DEFAULT_EMULATION, [test "$emulation" != xterm])
+
+# Check for headers.
+AC_CHECK_HEADERS(sys/select.h sys/syslimits.h sys/termios.h sys/un.h sys/wait.h stropts.h termios.h wchar.h)
+AC_HEADER_TIOCGWINSZ
+
+# Check for PTY handling functions.
+AC_CHECK_FUNCS([cfmakeraw fork setsid setpgid getpgid getpt grantpt unlockpt ptsname ptsname_r tcgetattr 
tcsetattr])
+
+# Pull in the right libraries for various functions which might not be
+# bundled into an exploded libc.
+AC_CHECK_FUNC(socket,[have_socket=1],AC_CHECK_LIB(socket,socket,[have_socket=1; LIBS="$LIBS -lsocket"]))
+AC_CHECK_FUNC(socketpair,[have_socketpair=1],AC_CHECK_LIB(socket,socketpair,[have_socketpair=1; LIBS="$LIBS 
-lsocket"]))
+AC_CHECK_FUNC(recvmsg,[have_recvmsg=1],AC_CHECK_LIB(socket,recvmsg,[have_recvmsg=1; LIBS="$LIBS -lsocket 
-lnsl"]))
+if test x$have_socket = x1 ; then
+       AC_DEFINE(HAVE_SOCKET,1,[Define if you have the socket function.])
+fi
+if test x$have_socketpair = x1 ; then
+       AC_DEFINE(HAVE_SOCKETPAIR,1,[Define if you have the socketpair function.])
+fi
+if test x$have_recvmsg = x1 ; then
+       AC_DEFINE(HAVE_RECVMSG,1,[Define if you have the recvmsg function.])
+fi
+AC_CHECK_FUNC(floor,,AC_CHECK_LIB(m,floor,LIBS=["$LIBS -lm"]))
+AC_CHECK_FUNCS([ceil floor])
+
+# Look for tgetent
+
+AC_CHECK_FUNC([tgetent],[vte_cv_termcap_lib=libc],
+  [AC_CHECK_LIB([ncurses],[tgetent],[vte_cv_termcap_lib=libncurses],
+    [AC_CHECK_LIB([tinfo],[tgetent],[vte_cv_termcap_lib=libtinfo],
+      [AC_CHECK_LIB([curses],[tgetent],[vte_cv_termcap_lib=libcurses],
+        [AC_CHECK_LIB([termcap],[tgetent],[vte_cv_termcap_lib=libtermcap],
+          [vte_cv_termcap_lib=])])])])])
+
+case "$vte_cv_termcap_lib" in
+  libc)       # FIXME: which headers to include here?
+              ;;
+  libncurses) # We need ncurses.h and term.h, or ncurses/curses.h and ncurses/term.h
+              AC_CHECK_HEADERS([ncurses.h term.h],[],
+                [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
+                  [AC_MSG_ERROR([ncurses headers not found])])])
+              LIBS="-lncurses $LIBS"
+              ;;
+  libtinfo)   # Need ncurses/curses.h and ncurses/term.h
+              AC_CHECK_HEADERS([ncurses.h term.h],[],
+                [AC_CHECK_HEADERS([ncurses/curses.h ncurses/term.h],[],
+                  [AC_MSG_ERROR([ncurses headers not found])])])
+              LIBS="-ltinfo $LIBS"
+              ;;
+  libcurses)  # Need curses.h and term.h
+              AC_CHECK_HEADERS([curses.h term.h],[],
+                [AC_MSG_ERROR([curses headers not found])],
+                [[#ifdef HAVE_CURSES_H
+                  #include <curses.h>
+                  #endif]])
+              LIBS="-lcurses $LIBS"
+              ;;
+  libtermcap) # Need termcap.h
+              AC_CHECK_HEADERS([termcap.h],[],
+                [AC_MSG_ERROR([termcap headers not found])])
+              LIBS="-ltermcap $LIBS"
+              ;;
+  *)          AC_MSG_ERROR([tgetent not found in any library]) ;;
+esac
+
+# Search for the required modules.
+
+# We have a direct dependency on X11 on gdk-x11, see bug #613525
+AC_MSG_CHECKING([for GDK target])
+GDK_TARGET="$($PKG_CONFIG --variable target gdk-$GTK_API_VERSION)"
+AC_MSG_RESULT([$GDK_TARGET])
+case "$GDK_TARGET" in
+  x11) PLATFORM_PKGS="x11 cairo-xlib" ;;
+  *) PLATFORM_PKGS="" ;;
+esac
+
+VTE_PKGS="glib-2.0 >= $GLIB_REQUIRED gobject-2.0 pango >= $PANGO_REQUIRED gtk+-$GTK_API_VERSION >= 
$GTK_REQUIRED gobject-2.0 gio-2.0 gio-unix-2.0 $PLATFORM_PKGS"
+PKG_CHECK_MODULES([VTE],[$VTE_PKGS])
+AC_SUBST([VTE_PKGS])
+
+wcs_funcs_includes="
+#ifdef HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#else
+# ifdef HAVE_STRINGS_H
+#  include <strings.h>
+# endif
+#endif
+#ifdef HAVE_WCHAR_H
+# include <wchar.h>
+#endif
+"
+
+AC_CHECK_TYPES(wint_t, AC_DEFINE(HAVE_WINT_T, , [Defined when the wint_t type is supported]), 
,$wcs_funcs_includes)
+
+################################################################################
+
+GTK_DOC_CHECK([1.13],[--flavour no-tmpl])
+
+AC_SUBST([GLIB_PREFIX],[$($PKG_CONFIG --variable=prefix glib-2.0)])
+AC_SUBST([GTK_PREFIX],[$($PKG_CONFIG --variable=prefix gtk+-$GTK_API_VERSION)])
+
+################################################################################
+
+AC_SUBST([VTE_MAJOR_VERSION],[version_major])
+AC_SUBST([VTE_MINOR_VERSION],[version_minor])
+AC_SUBST([VTE_MICRO_VERSION],[version_micro])
+
+################################################################################
+
+AC_CONFIG_FILES([
+Makefile
+src/Makefile
+src/vteversion.h
+termcaps/Makefile
+])
+
+AC_OUTPUT
+
+#####################
+# Print configuration
+#####################
+cat <<EOF | tee -a config.log
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+Configuration for libvte $VERSION for gtk+-$GTK_API_VERSION
+       Installing Glade catalogue: $enable_glade_catalogue
+       Debugging: $DEBUG
+       Disallow deprecated features: $enable_deprecation
+EOF
diff --git a/vte/depcomp b/vte/depcomp
new file mode 100755
index 0000000..df8eea7
--- /dev/null
+++ b/vte/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 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 Alexandre Oliva <oliva dcc unicamp br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake gnu org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/vte/src/Makefile.am b/vte/src/Makefile.am
new file mode 100644
index 0000000..1971458
--- /dev/null
+++ b/vte/src/Makefile.am
@@ -0,0 +1,333 @@
+
+EXTRA_DIST = iso2022.txt
+
+
+# The library
+
+headerdir = $(includedir)/vte-$(VTE_API_VERSION)/vte
+header_HEADERS = pty.h reaper.h vte.h vteaccess.h vtepty.h vtetypebuiltins.h vteversion.h vtedeprecated.h
+
+lib_LTLIBRARIES = libvte@VTE_LIBRARY_SUFFIX_U@.la
+
+EXTRA_libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES = \
+       genkeysyms.py \
+       keysyms.c \
+       marshal.list \
+       mkunitables.sh \
+       unitable.CNS11643 \
+       unitable.CP437 \
+       unitable.GB12345 \
+       unitable.GB2312 \
+       unitable.JIS0201 \
+       unitable.JIS0208 \
+       unitable.JIS0212 \
+       unitable.KSX1001 \
+       vteseq-2.gperf \
+       vteseq-2.c \
+       vteseq-n.gperf \
+       vteseq-n.c \
+       vtetypebuiltins.c.template \
+       vtetypebuiltins.h.template \
+       $(NULL)
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       keymap.c \
+       keymap.h \
+       marshal.c \
+       marshal.h \
+       matcher.c \
+       matcher.h \
+       pty.c \
+       pty.h \
+       reaper.c \
+       reaper.h \
+       ring.c \
+       ring.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vte.c \
+       vte.h \
+       vte-gtk-compat.h \
+       vte-private.h \
+       vteaccess.c \
+       vteaccess.h \
+       vtebg.c \
+       vtebg.h \
+       vteconv.c \
+       vteconv.h \
+       vtedraw.c \
+       vtedraw.h \
+       vtedeprecated.h \
+       vteint.h \
+       vtepty.h \
+       vtepty-private.h \
+       vteregex.c \
+       vteregex.h \
+       vterowdata.c \
+       vterowdata.h \
+       vteseq.c \
+       vteseq-list.h \
+       vtestream.c \
+       vtestream.h \
+       vtestream-base.h \
+       vtestream-file.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h \
+       vtetypebuiltins.c \
+       vtetypebuiltins.h \
+       vteunistr.c \
+       vteunistr.h \
+       vteversion.h
+       $(NULL)
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS = \
+       -DG_LOG_DOMAIN=\"Vte-$(VTE_API_VERSION)\" \
+       -DDATADIR='"$(datadir)"' \
+       -DLIBEXECDIR='"$(libexecdir)"' \
+       -DLOCALEDIR='"$(localedir)"' \
+       -DTERMCAPDIR='"$(pkgdatadir)/termcap-$(VTE_API_VERSION)"' \
+       -DVTE_COMPILATION \
+       $(AM_CPPFLAGS)
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS = $(VTE_CFLAGS) $(AM_CFLAGS)
+libvte@VTE_LIBRARY_SUFFIX_U@_la_LIBADD = $(VTE_LIBS)
+libvte@VTE_LIBRARY_SUFFIX_U@_la_LDFLAGS = \
+  $(VTE_LDFLAGS) \
+       -version-info $(LT_VERSION_INFO) \
+       -export-symbols-regex 
"^vte_terminal_.*|^vte_pty_.*|^vte_get_.*|^_vte_pty_.*|^vte_reaper_.*|_vte_debug_.*" \
+       @LIBTOOL_EXPORT_OPTIONS@ @LIBTOOL_FLAGS@ \
+       $(AM_LDFLAGS)
+
+
+# Generated sources
+
+VTESEQ_BUILTSOURCES = vteseq-list.h vteseq-2.c vteseq-n.c
+BUILT_SOURCES = marshal.c marshal.h vtetypebuiltins.c vtetypebuiltins.h $(VTESEQ_BUILTSOURCES)
+MAINTAINERCLEANFILES = $(VTESEQ_BUILTSOURCES)
+EXTRA_DIST += $(VTESEQ_BUILTSOURCES)
+CLEANFILES = marshal.c marshal.h vtetypebuiltins.c vtetypebuiltins.h stamp-vtetypebuiltins.h
+
+marshal.c: marshal.list
+       $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_vte_marshal --header --body --internal $< > $@
+       
+marshal.h: marshal.list
+       $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_vte_marshal --header --internal $< > $@
+
+vtetypebuiltins.h: stamp-vtetypebuiltins.h
+       @true
+stamp-vtetypebuiltins.h: vtetypebuiltins.h.template vte.h vtepty.h vtedeprecated.h
+       $(AM_V_GEN) $(GLIB_MKENUMS) --template $< $(filter %.h,$^) > xgen-vtbh \
+       && (cmp -s xgen-vtbh vtetypebuiltins.h || cp xgen-vtbh vtetypebuiltins.h ) \
+       && rm -f xgen-vtbh \
+       && echo timestamp > $(@F)
+
+vtetypebuiltins.c: vtetypebuiltins.c.template vte.h vtepty.h vtedeprecated.h
+       $(AM_V_GEN) $(GLIB_MKENUMS) --template $< $(filter %.h,$^) > xgen-vtbc \
+       && (cmp -s xgen-vtbc vtetypebuiltins.c || cp xgen-vtbc vtetypebuiltins.c ) \
+       && rm -f xgen-vtbc
+
+vteseq-2.c: vteseq-2.gperf
+       $(AM_V_GEN) $(top_srcdir)/missing --run gperf -m 100 --no-strlen $< > $@.tmp && \
+       mv -f $@.tmp $@
+
+vteseq-n.c: vteseq-n.gperf
+       $(AM_V_GEN) $(top_srcdir)/missing --run gperf -m 100 $< > $@.tmp && \
+       mv -f $@.tmp $@
+
+vteseq-list.h: vteseq-2.gperf vteseq-n.gperf
+       $(AM_V_GEN) echo '/* Generated file.  Do not edit */' > $@.tmp && \
+       cat $^ | grep -v '^#' | grep '\<VTE_SEQUENCE_HANDLER\>'| sed 's/.*, //' | LANG=C sort -u >> $@.tmp && 
\
+       mv -f $@.tmp $@
+
+
+# vte the application
+
+bin_PROGRAMS = vte@VTE_LIBRARY_SUFFIX_U@
+
+vte@VTE_LIBRARY_SUFFIX_U@_SOURCES = vteapp.c
+vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS = $(VTE_CFLAGS)
+vte@VTE_LIBRARY_SUFFIX_U@_LDADD = libvte@VTE_LIBRARY_SUFFIX_U@.la $(VTE_LIBS)
+
+# introspection
+
+INTROSPECTION_GIRS =
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
+
+if HAVE_INTROSPECTION
+
+Vte-@VTE_API_VERSION@.gir: libvte@VTE_LIBRARY_SUFFIX_U@.la
+Vte_@VTE_API_VERSION_U@_gir_INCLUDES = Pango-1.0 Gdk-$(GTK_API_VERSION) Gtk-$(GTK_API_VERSION)
+Vte_@VTE_API_VERSION_U@_gir_CFLAGS = $(VTE_CFLAGS) -DVTE_COMPILATION -I$(top_srcdir)
+Vte_@VTE_API_VERSION_U@_gir_LIBS = libvte@VTE_LIBRARY_SUFFIX_U@.la
+Vte_@VTE_API_VERSION_U@_gir_FILES = \
+       vte.c \
+       vte.h \
+       vtepty.h \
+       pty.c \
+       vtetypebuiltins.c \
+       vtetypebuiltins.h \
+       $(NULL)
+
+INTROSPECTION_GIRS += Vte-$(VTE_API_VERSION).gir
+
+girdir = $(INTROSPECTION_GIRDIR)
+nodist_gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibdir = $(INTROSPECTION_TYPELIBDIR)
+nodist_typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+
+CLEANFILES += $(nodist_gir_DATA) $(nodist_typelib_DATA)
+endif
+
+
+# Misc unit tests and utilities
+
+noinst_PROGRAMS = interpret slowcat
+noinst_SCRIPTS = decset osc window
+EXTRA_DIST += $(noinst_SCRIPTS)
+
+TEST_SH = check-doc-syntax.sh
+EXTRA_DIST += $(TEST_SH)
+
+check_PROGRAMS = dumpkeys iso2022 reaper reflect-text-view reflect-vte mev ssfe table trie xticker vteconv 
vtetc
+TESTS = table trie $(TEST_SH)
+
+AM_CFLAGS = $(GLIB_CFLAGS)
+LDADD = $(GLIB_LIBS)
+
+reflect_text_view_CPPFLAGS = -DUSE_TEXT_VIEW
+reflect_text_view_CFLAGS = $(VTE_CFLAGS)
+reflect_text_view_SOURCES = reflect.c
+reflect_text_view_LDADD = $(VTE_LIBS)
+
+reflect_vte_CPPFLAGS = -DUSE_VTE
+reflect_vte_CFLAGS = $(VTE_CFLAGS)
+reflect_vte_SOURCES = reflect.c
+reflect_vte_LDADD = libvte@VTE_LIBRARY_SUFFIX_U@.la $(VTE_LIBS)
+
+interpret_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h \
+       interpret.c
+interpret_CPPFLAGS = \
+       -DINTERPRET_MAIN \
+       -DTERMCAPDIR='"$(pkgdatadir)/termcap-$(VTE_API_VERSION)"'
+interpret_CFLAGS = $(GTK_CFLAGS)
+interpret_LDADD = $(GTK_LIBS)
+
+iso2022_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h
+iso2022_CPPFLAGS = -DISO2022_MAIN
+iso2022_CFLAGS = $(GTK_CFLAGS)
+iso2022_LDADD = $(GTK_LIBS)
+
+slowcat_SOURCES = \
+       slowcat.c
+
+table_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h
+table_CPPFLAGS = -DTABLE_MAIN
+table_CFLAGS = $(VTE_CFLAGS)
+table_LDADD = $(VTE_LIBS)
+
+trie_SOURCES = \
+       trie.c \
+       trie.h \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h 
+trie_CPPFLAGS = -DTRIE_MAIN
+trie_CFLAGS = $(VTE_CFLAGS)
+trie_LDADD = $(VTE_LIBS)
+
+vtetc_SOURCES = vtetc.c vtetc.h debug.c debug.h
+vtetc_CPPFLAGS = -DTERMCAP_MAIN
+
+reaper_SOURCES = reaper.c reaper.h debug.c debug.h marshal.c marshal.h
+reaper_CPPFLAGS =  -DREAPER_MAIN -DLOCALEDIR='"$(localedir)"'
+
+vteconv_SOURCES = buffer.h debug.c debug.h vteconv.c vteconv.h
+vteconv_CPPFLAGS = -DVTECONV_MAIN
+vteconv_CFLAGS = $(VTE_CFLAGS)
+vteconv_LDADD = $(VTE_LIBS)
+
+dumpkeys_SOURCES = dumpkeys.c
+mev_SOURCES = mev.c
+ssfe_SOURCES = ssfe.c
+xticker_SOURCES = xticker.c
+
+#
+
+-include $(top_srcdir)/git.mk
+-include $(INTROSPECTION_MAKEFILE)
diff --git a/vte/src/Makefile.in b/vte/src/Makefile.in
new file mode 100644
index 0000000..62c5cb8
--- /dev/null
+++ b/vte/src/Makefile.in
@@ -0,0 +1,2335 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = vte@VTE_LIBRARY_SUFFIX_U@$(EXEEXT)
+@HAVE_INTROSPECTION_TRUE@am__append_1 = Vte-$(VTE_API_VERSION).gir
+@HAVE_INTROSPECTION_TRUE@am__append_2 = $(nodist_gir_DATA) $(nodist_typelib_DATA)
+noinst_PROGRAMS = interpret$(EXEEXT) slowcat$(EXEEXT)
+check_PROGRAMS = dumpkeys$(EXEEXT) iso2022$(EXEEXT) reaper$(EXEEXT) \
+       reflect-text-view$(EXEEXT) reflect-vte$(EXEEXT) mev$(EXEEXT) \
+       ssfe$(EXEEXT) table$(EXEEXT) trie$(EXEEXT) xticker$(EXEEXT) \
+       vteconv$(EXEEXT) vtetc$(EXEEXT)
+TESTS = table$(EXEEXT) trie$(EXEEXT) $(TEST_SH)
+subdir = src
+DIST_COMMON = $(header_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/vteversion.h.in TODO
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+       $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = vteversion.h
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibdir)" \
+       "$(DESTDIR)$(headerdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libvte@VTE_LIBRARY_SUFFIX_U@_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libvte@VTE_LIBRARY_SUFFIX_U@_la_OBJECTS =  \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo \
+       libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo
+libvte@VTE_LIBRARY_SUFFIX_U@_la_OBJECTS =  \
+       $(am_libvte@VTE_LIBRARY_SUFFIX_U@_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libvte@VTE_LIBRARY_SUFFIX_U@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+       $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) \
+       $(libvte@VTE_LIBRARY_SUFFIX_U@_la_LDFLAGS) $(LDFLAGS) -o $@
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am_dumpkeys_OBJECTS = dumpkeys.$(OBJEXT)
+dumpkeys_OBJECTS = $(am_dumpkeys_OBJECTS)
+dumpkeys_LDADD = $(LDADD)
+dumpkeys_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_interpret_OBJECTS = interpret-caps.$(OBJEXT) \
+       interpret-debug.$(OBJEXT) interpret-iso2022.$(OBJEXT) \
+       interpret-matcher.$(OBJEXT) interpret-table.$(OBJEXT) \
+       interpret-trie.$(OBJEXT) interpret-vteconv.$(OBJEXT) \
+       interpret-vtetc.$(OBJEXT) interpret-vtetree.$(OBJEXT) \
+       interpret-interpret.$(OBJEXT)
+interpret_OBJECTS = $(am_interpret_OBJECTS)
+interpret_DEPENDENCIES = $(am__DEPENDENCIES_1)
+interpret_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(interpret_CFLAGS) \
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_iso2022_OBJECTS = iso2022-caps.$(OBJEXT) iso2022-debug.$(OBJEXT) \
+       iso2022-iso2022.$(OBJEXT) iso2022-matcher.$(OBJEXT) \
+       iso2022-table.$(OBJEXT) iso2022-trie.$(OBJEXT) \
+       iso2022-vteconv.$(OBJEXT) iso2022-vtetc.$(OBJEXT) \
+       iso2022-vtetree.$(OBJEXT)
+iso2022_OBJECTS = $(am_iso2022_OBJECTS)
+iso2022_DEPENDENCIES = $(am__DEPENDENCIES_1)
+iso2022_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(iso2022_CFLAGS) \
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_mev_OBJECTS = mev.$(OBJEXT)
+mev_OBJECTS = $(am_mev_OBJECTS)
+mev_LDADD = $(LDADD)
+mev_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_reaper_OBJECTS = reaper-reaper.$(OBJEXT) reaper-debug.$(OBJEXT) \
+       reaper-marshal.$(OBJEXT)
+reaper_OBJECTS = $(am_reaper_OBJECTS)
+reaper_LDADD = $(LDADD)
+reaper_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_reflect_text_view_OBJECTS = reflect_text_view-reflect.$(OBJEXT)
+reflect_text_view_OBJECTS = $(am_reflect_text_view_OBJECTS)
+reflect_text_view_DEPENDENCIES = $(am__DEPENDENCIES_1)
+reflect_text_view_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+       $(reflect_text_view_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+       -o $@
+am_reflect_vte_OBJECTS = reflect_vte-reflect.$(OBJEXT)
+reflect_vte_OBJECTS = $(am_reflect_vte_OBJECTS)
+reflect_vte_DEPENDENCIES = libvte@VTE_LIBRARY_SUFFIX_U@.la \
+       $(am__DEPENDENCIES_1)
+reflect_vte_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(reflect_vte_CFLAGS) \
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_slowcat_OBJECTS = slowcat.$(OBJEXT)
+slowcat_OBJECTS = $(am_slowcat_OBJECTS)
+slowcat_LDADD = $(LDADD)
+slowcat_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_ssfe_OBJECTS = ssfe.$(OBJEXT)
+ssfe_OBJECTS = $(am_ssfe_OBJECTS)
+ssfe_LDADD = $(LDADD)
+ssfe_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_table_OBJECTS = table-caps.$(OBJEXT) table-debug.$(OBJEXT) \
+       table-matcher.$(OBJEXT) table-table.$(OBJEXT) \
+       table-trie.$(OBJEXT) table-vteconv.$(OBJEXT) \
+       table-vtetc.$(OBJEXT)
+table_OBJECTS = $(am_table_OBJECTS)
+table_DEPENDENCIES = $(am__DEPENDENCIES_1)
+table_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(table_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_trie_OBJECTS = trie-trie.$(OBJEXT) trie-caps.$(OBJEXT) \
+       trie-debug.$(OBJEXT) trie-matcher.$(OBJEXT) \
+       trie-table.$(OBJEXT) trie-vteconv.$(OBJEXT) \
+       trie-vtetc.$(OBJEXT)
+trie_OBJECTS = $(am_trie_OBJECTS)
+trie_DEPENDENCIES = $(am__DEPENDENCIES_1)
+trie_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(trie_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_vte@VTE_LIBRARY_SUFFIX_U@_OBJECTS =  \
+       vte@VTE_LIBRARY_SUFFIX_U@-vteapp.$(OBJEXT)
+vte@VTE_LIBRARY_SUFFIX_U@_OBJECTS =  \
+       $(am_vte@VTE_LIBRARY_SUFFIX_U@_OBJECTS)
+vte@VTE_LIBRARY_SUFFIX_U@_DEPENDENCIES =  \
+       libvte@VTE_LIBRARY_SUFFIX_U@.la $(am__DEPENDENCIES_1)
+vte@VTE_LIBRARY_SUFFIX_U@_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+       $(vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+am_vteconv_OBJECTS = vteconv-debug.$(OBJEXT) vteconv-vteconv.$(OBJEXT)
+vteconv_OBJECTS = $(am_vteconv_OBJECTS)
+vteconv_DEPENDENCIES = $(am__DEPENDENCIES_1)
+vteconv_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(vteconv_CFLAGS) \
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_vtetc_OBJECTS = vtetc-vtetc.$(OBJEXT) vtetc-debug.$(OBJEXT)
+vtetc_OBJECTS = $(am_vtetc_OBJECTS)
+vtetc_LDADD = $(LDADD)
+vtetc_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_xticker_OBJECTS = xticker.$(OBJEXT)
+xticker_OBJECTS = $(am_xticker_OBJECTS)
+xticker_LDADD = $(LDADD)
+xticker_DEPENDENCIES = $(am__DEPENDENCIES_1)
+SCRIPTS = $(noinst_SCRIPTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES) \
+       $(EXTRA_libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES) \
+       $(dumpkeys_SOURCES) $(interpret_SOURCES) $(iso2022_SOURCES) \
+       $(mev_SOURCES) $(reaper_SOURCES) $(reflect_text_view_SOURCES) \
+       $(reflect_vte_SOURCES) $(slowcat_SOURCES) $(ssfe_SOURCES) \
+       $(table_SOURCES) $(trie_SOURCES) \
+       $(vte@VTE_LIBRARY_SUFFIX_U@_SOURCES) $(vteconv_SOURCES) \
+       $(vtetc_SOURCES) $(xticker_SOURCES)
+DIST_SOURCES = $(libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES) \
+       $(EXTRA_libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES) \
+       $(dumpkeys_SOURCES) $(interpret_SOURCES) $(iso2022_SOURCES) \
+       $(mev_SOURCES) $(reaper_SOURCES) $(reflect_text_view_SOURCES) \
+       $(reflect_vte_SOURCES) $(slowcat_SOURCES) $(ssfe_SOURCES) \
+       $(table_SOURCES) $(trie_SOURCES) \
+       $(vte@VTE_LIBRARY_SUFFIX_U@_SOURCES) $(vteconv_SOURCES) \
+       $(vtetc_SOURCES) $(xticker_SOURCES)
+DATA = $(nodist_gir_DATA) $(nodist_typelib_DATA)
+HEADERS = $(header_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLADE_CATALOGUE_DIR = @GLADE_CATALOGUE_DIR@
+GLADE_ICON_DIR = @GLADE_ICON_DIR@
+GLADE_MODULE_DIR = @GLADE_MODULE_DIR@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GLIB_PREFIX = @GLIB_PREFIX@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_API_VERSION = @GTK_API_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTK_PREFIX = @GTK_PREFIX@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
+LIBTOOL_FLAGS = @LIBTOOL_FLAGS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_VERSION_INFO = @LT_VERSION_INFO@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_CODEGEN = @PYGTK_CODEGEN@
+PYGTK_DEFSDIR = @PYGTK_DEFSDIR@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHONMODULES = @PYTHONMODULES@
+PYTHONREV = @PYTHONREV@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VTE_API_MAJOR_VERSION = @VTE_API_MAJOR_VERSION@
+VTE_API_MINOR_VERSION = @VTE_API_MINOR_VERSION@
+VTE_API_VERSION = @VTE_API_VERSION@
+VTE_API_VERSION_U = @VTE_API_VERSION_U@
+VTE_CFLAGS = @VTE_CFLAGS@
+VTE_DEFAULT_EMULATION = @VTE_DEFAULT_EMULATION@
+VTE_LDFLAGS = @VTE_LDFLAGS@
+VTE_LIBRARY_SUFFIX_U = @VTE_LIBRARY_SUFFIX_U@
+VTE_LIBS = @VTE_LIBS@
+VTE_MAJOR_VERSION = @VTE_MAJOR_VERSION@
+VTE_MICRO_VERSION = @VTE_MICRO_VERSION@
+VTE_MINOR_VERSION = @VTE_MINOR_VERSION@
+VTE_PC_VERSION = @VTE_PC_VERSION@
+VTE_PKGS = @VTE_PKGS@
+VTE_SEAL_CFLAGS = @VTE_SEAL_CFLAGS@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = iso2022.txt $(VTESEQ_BUILTSOURCES) $(noinst_SCRIPTS) \
+       $(TEST_SH)
+
+# The library
+headerdir = $(includedir)/vte-$(VTE_API_VERSION)/vte
+header_HEADERS = pty.h reaper.h vte.h vteaccess.h vtepty.h vtetypebuiltins.h vteversion.h vtedeprecated.h
+lib_LTLIBRARIES = libvte@VTE_LIBRARY_SUFFIX_U@.la
+EXTRA_libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES = \
+       genkeysyms.py \
+       keysyms.c \
+       marshal.list \
+       mkunitables.sh \
+       unitable.CNS11643 \
+       unitable.CP437 \
+       unitable.GB12345 \
+       unitable.GB2312 \
+       unitable.JIS0201 \
+       unitable.JIS0208 \
+       unitable.JIS0212 \
+       unitable.KSX1001 \
+       vteseq-2.gperf \
+       vteseq-2.c \
+       vteseq-n.gperf \
+       vteseq-n.c \
+       vtetypebuiltins.c.template \
+       vtetypebuiltins.h.template \
+       $(NULL)
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       keymap.c \
+       keymap.h \
+       marshal.c \
+       marshal.h \
+       matcher.c \
+       matcher.h \
+       pty.c \
+       pty.h \
+       reaper.c \
+       reaper.h \
+       ring.c \
+       ring.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vte.c \
+       vte.h \
+       vte-gtk-compat.h \
+       vte-private.h \
+       vteaccess.c \
+       vteaccess.h \
+       vtebg.c \
+       vtebg.h \
+       vteconv.c \
+       vteconv.h \
+       vtedraw.c \
+       vtedraw.h \
+       vtedeprecated.h \
+       vteint.h \
+       vtepty.h \
+       vtepty-private.h \
+       vteregex.c \
+       vteregex.h \
+       vterowdata.c \
+       vterowdata.h \
+       vteseq.c \
+       vteseq-list.h \
+       vtestream.c \
+       vtestream.h \
+       vtestream-base.h \
+       vtestream-file.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h \
+       vtetypebuiltins.c \
+       vtetypebuiltins.h \
+       vteunistr.c \
+       vteunistr.h \
+       vteversion.h
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS = \
+       -DG_LOG_DOMAIN=\"Vte-$(VTE_API_VERSION)\" \
+       -DDATADIR='"$(datadir)"' \
+       -DLIBEXECDIR='"$(libexecdir)"' \
+       -DLOCALEDIR='"$(localedir)"' \
+       -DTERMCAPDIR='"$(pkgdatadir)/termcap-$(VTE_API_VERSION)"' \
+       -DVTE_COMPILATION \
+       $(AM_CPPFLAGS)
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS = $(VTE_CFLAGS) $(AM_CFLAGS)
+libvte@VTE_LIBRARY_SUFFIX_U@_la_LIBADD = $(VTE_LIBS)
+libvte@VTE_LIBRARY_SUFFIX_U@_la_LDFLAGS = \
+  $(VTE_LDFLAGS) \
+       -version-info $(LT_VERSION_INFO) \
+       -export-symbols-regex 
"^vte_terminal_.*|^vte_pty_.*|^vte_get_.*|^_vte_pty_.*|^vte_reaper_.*|_vte_debug_.*" \
+       @LIBTOOL_EXPORT_OPTIONS@ @LIBTOOL_FLAGS@ \
+       $(AM_LDFLAGS)
+
+
+# Generated sources
+VTESEQ_BUILTSOURCES = vteseq-list.h vteseq-2.c vteseq-n.c
+BUILT_SOURCES = marshal.c marshal.h vtetypebuiltins.c vtetypebuiltins.h $(VTESEQ_BUILTSOURCES)
+MAINTAINERCLEANFILES = $(VTESEQ_BUILTSOURCES)
+CLEANFILES = marshal.c marshal.h vtetypebuiltins.c vtetypebuiltins.h \
+       stamp-vtetypebuiltins.h $(am__append_2)
+vte@VTE_LIBRARY_SUFFIX_U@_SOURCES = vteapp.c
+vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS = $(VTE_CFLAGS)
+vte@VTE_LIBRARY_SUFFIX_U@_LDADD = libvte@VTE_LIBRARY_SUFFIX_U@.la $(VTE_LIBS)
+
+# introspection
+INTROSPECTION_GIRS = $(am__append_1)
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
+@HAVE_INTROSPECTION_TRUE@Vte_@VTE_API_VERSION_U@_gir_INCLUDES = Pango-1.0 Gdk-$(GTK_API_VERSION) 
Gtk-$(GTK_API_VERSION)
+@HAVE_INTROSPECTION_TRUE@Vte_@VTE_API_VERSION_U@_gir_CFLAGS = $(VTE_CFLAGS) -DVTE_COMPILATION -I$(top_srcdir)
+@HAVE_INTROSPECTION_TRUE@Vte_@VTE_API_VERSION_U@_gir_LIBS = libvte@VTE_LIBRARY_SUFFIX_U@.la
+@HAVE_INTROSPECTION_TRUE@Vte_@VTE_API_VERSION_U@_gir_FILES = \
+@HAVE_INTROSPECTION_TRUE@      vte.c \
+@HAVE_INTROSPECTION_TRUE@      vte.h \
+@HAVE_INTROSPECTION_TRUE@      vtepty.h \
+@HAVE_INTROSPECTION_TRUE@      pty.c \
+@HAVE_INTROSPECTION_TRUE@      vtetypebuiltins.c \
+@HAVE_INTROSPECTION_TRUE@      vtetypebuiltins.h \
+@HAVE_INTROSPECTION_TRUE@      $(NULL)
+
+@HAVE_INTROSPECTION_TRUE@girdir = $(INTROSPECTION_GIRDIR)
+@HAVE_INTROSPECTION_TRUE@nodist_gir_DATA = $(INTROSPECTION_GIRS)
+@HAVE_INTROSPECTION_TRUE@typelibdir = $(INTROSPECTION_TYPELIBDIR)
+@HAVE_INTROSPECTION_TRUE@nodist_typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+noinst_SCRIPTS = decset osc window
+TEST_SH = check-doc-syntax.sh
+AM_CFLAGS = $(GLIB_CFLAGS)
+LDADD = $(GLIB_LIBS)
+reflect_text_view_CPPFLAGS = -DUSE_TEXT_VIEW
+reflect_text_view_CFLAGS = $(VTE_CFLAGS)
+reflect_text_view_SOURCES = reflect.c
+reflect_text_view_LDADD = $(VTE_LIBS)
+reflect_vte_CPPFLAGS = -DUSE_VTE
+reflect_vte_CFLAGS = $(VTE_CFLAGS)
+reflect_vte_SOURCES = reflect.c
+reflect_vte_LDADD = libvte@VTE_LIBRARY_SUFFIX_U@.la $(VTE_LIBS)
+interpret_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h \
+       interpret.c
+
+interpret_CPPFLAGS = \
+       -DINTERPRET_MAIN \
+       -DTERMCAPDIR='"$(pkgdatadir)/termcap-$(VTE_API_VERSION)"'
+
+interpret_CFLAGS = $(GTK_CFLAGS)
+interpret_LDADD = $(GTK_LIBS)
+iso2022_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       iso2022.c \
+       iso2022.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h \
+       vtetree.c \
+       vtetree.h
+
+iso2022_CPPFLAGS = -DISO2022_MAIN
+iso2022_CFLAGS = $(GTK_CFLAGS)
+iso2022_LDADD = $(GTK_LIBS)
+slowcat_SOURCES = \
+       slowcat.c
+
+table_SOURCES = \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       trie.c \
+       trie.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h
+
+table_CPPFLAGS = -DTABLE_MAIN
+table_CFLAGS = $(VTE_CFLAGS)
+table_LDADD = $(VTE_LIBS)
+trie_SOURCES = \
+       trie.c \
+       trie.h \
+       buffer.h \
+       caps.c \
+       caps.h \
+       debug.c \
+       debug.h \
+       matcher.c \
+       matcher.h \
+       table.c \
+       table.h \
+       vteconv.c \
+       vteconv.h \
+       vtetc.c \
+       vtetc.h 
+
+trie_CPPFLAGS = -DTRIE_MAIN
+trie_CFLAGS = $(VTE_CFLAGS)
+trie_LDADD = $(VTE_LIBS)
+vtetc_SOURCES = vtetc.c vtetc.h debug.c debug.h
+vtetc_CPPFLAGS = -DTERMCAP_MAIN
+reaper_SOURCES = reaper.c reaper.h debug.c debug.h marshal.c marshal.h
+reaper_CPPFLAGS = -DREAPER_MAIN -DLOCALEDIR='"$(localedir)"'
+vteconv_SOURCES = buffer.h debug.c debug.h vteconv.c vteconv.h
+vteconv_CPPFLAGS = -DVTECONV_MAIN
+vteconv_CFLAGS = $(VTE_CFLAGS)
+vteconv_LDADD = $(VTE_LIBS)
+dumpkeys_SOURCES = dumpkeys.c
+mev_SOURCES = mev.c
+ssfe_SOURCES = ssfe.c
+xticker_SOURCES = xticker.c
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+vteversion.h: $(top_builddir)/config.status $(srcdir)/vteversion.h.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) 
$(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) 
$$list2 "$(DESTDIR)$(libdir)"; \
+       }
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f 
'$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libvte@VTE_LIBRARY_SUFFIX_U@.la: $(libvte@VTE_LIBRARY_SUFFIX_U@_la_OBJECTS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libvte@VTE_LIBRARY_SUFFIX_U@_la_LINK) -rpath $(libdir) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_OBJECTS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install 
$(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install 
$(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+dumpkeys$(EXEEXT): $(dumpkeys_OBJECTS) $(dumpkeys_DEPENDENCIES) 
+       @rm -f dumpkeys$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dumpkeys_OBJECTS) $(dumpkeys_LDADD) $(LIBS)
+interpret$(EXEEXT): $(interpret_OBJECTS) $(interpret_DEPENDENCIES) 
+       @rm -f interpret$(EXEEXT)
+       $(AM_V_CCLD)$(interpret_LINK) $(interpret_OBJECTS) $(interpret_LDADD) $(LIBS)
+iso2022$(EXEEXT): $(iso2022_OBJECTS) $(iso2022_DEPENDENCIES) 
+       @rm -f iso2022$(EXEEXT)
+       $(AM_V_CCLD)$(iso2022_LINK) $(iso2022_OBJECTS) $(iso2022_LDADD) $(LIBS)
+mev$(EXEEXT): $(mev_OBJECTS) $(mev_DEPENDENCIES) 
+       @rm -f mev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mev_OBJECTS) $(mev_LDADD) $(LIBS)
+reaper$(EXEEXT): $(reaper_OBJECTS) $(reaper_DEPENDENCIES) 
+       @rm -f reaper$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(reaper_OBJECTS) $(reaper_LDADD) $(LIBS)
+reflect-text-view$(EXEEXT): $(reflect_text_view_OBJECTS) $(reflect_text_view_DEPENDENCIES) 
+       @rm -f reflect-text-view$(EXEEXT)
+       $(AM_V_CCLD)$(reflect_text_view_LINK) $(reflect_text_view_OBJECTS) $(reflect_text_view_LDADD) $(LIBS)
+reflect-vte$(EXEEXT): $(reflect_vte_OBJECTS) $(reflect_vte_DEPENDENCIES) 
+       @rm -f reflect-vte$(EXEEXT)
+       $(AM_V_CCLD)$(reflect_vte_LINK) $(reflect_vte_OBJECTS) $(reflect_vte_LDADD) $(LIBS)
+slowcat$(EXEEXT): $(slowcat_OBJECTS) $(slowcat_DEPENDENCIES) 
+       @rm -f slowcat$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(slowcat_OBJECTS) $(slowcat_LDADD) $(LIBS)
+ssfe$(EXEEXT): $(ssfe_OBJECTS) $(ssfe_DEPENDENCIES) 
+       @rm -f ssfe$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ssfe_OBJECTS) $(ssfe_LDADD) $(LIBS)
+table$(EXEEXT): $(table_OBJECTS) $(table_DEPENDENCIES) 
+       @rm -f table$(EXEEXT)
+       $(AM_V_CCLD)$(table_LINK) $(table_OBJECTS) $(table_LDADD) $(LIBS)
+trie$(EXEEXT): $(trie_OBJECTS) $(trie_DEPENDENCIES) 
+       @rm -f trie$(EXEEXT)
+       $(AM_V_CCLD)$(trie_LINK) $(trie_OBJECTS) $(trie_LDADD) $(LIBS)
+vte@VTE_LIBRARY_SUFFIX_U@$(EXEEXT): $(vte@VTE_LIBRARY_SUFFIX_U@_OBJECTS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_DEPENDENCIES) 
+       @rm -f vte@VTE_LIBRARY_SUFFIX_U@$(EXEEXT)
+       $(AM_V_CCLD)$(vte@VTE_LIBRARY_SUFFIX_U@_LINK) $(vte@VTE_LIBRARY_SUFFIX_U@_OBJECTS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_LDADD) $(LIBS)
+vteconv$(EXEEXT): $(vteconv_OBJECTS) $(vteconv_DEPENDENCIES) 
+       @rm -f vteconv$(EXEEXT)
+       $(AM_V_CCLD)$(vteconv_LINK) $(vteconv_OBJECTS) $(vteconv_LDADD) $(LIBS)
+vtetc$(EXEEXT): $(vtetc_OBJECTS) $(vtetc_DEPENDENCIES) 
+       @rm -f vtetc$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(vtetc_OBJECTS) $(vtetc_LDADD) $(LIBS)
+xticker$(EXEEXT): $(xticker_OBJECTS) $(xticker_DEPENDENCIES) 
+       @rm -f xticker$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xticker_OBJECTS) $(xticker_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dumpkeys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-interpret.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-iso2022.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-matcher.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-trie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-vteconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-vtetc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret-vtetree.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-iso2022.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-matcher.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-trie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-vteconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-vtetc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso2022-vtetree.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-table.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ 
@am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reaper-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reaper-marshal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reaper-reaper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reflect_text_view-reflect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reflect_vte-reflect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slowcat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssfe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-matcher.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-trie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-vteconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table-vtetc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-matcher.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-trie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-vteconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie-vtetc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vteconv-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vteconv-vteconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtetc-debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vtetc-vtetc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xticker.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo 
`test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-caps.lo `test -f 
'caps.c' || echo '$(srcdir)/'`caps.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-debug.lo `test -f 
'debug.c' || echo '$(srcdir)/'`debug.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo: iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo `test -f 'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iso2022.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-iso2022.lo `test -f 
'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo: keymap.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo `test -f 'keymap.c' || echo '$(srcdir)/'`keymap.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='keymap.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-keymap.lo `test -f 
'keymap.c' || echo '$(srcdir)/'`keymap.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo: marshal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='marshal.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-marshal.lo `test -f 
'marshal.c' || echo '$(srcdir)/'`marshal.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-matcher.lo `test -f 
'matcher.c' || echo '$(srcdir)/'`matcher.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo: pty.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo 
`test -f 'pty.c' || echo '$(srcdir)/'`pty.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pty.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-pty.lo `test -f 
'pty.c' || echo '$(srcdir)/'`pty.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo: reaper.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo `test -f 'reaper.c' || echo '$(srcdir)/'`reaper.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reaper.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-reaper.lo `test -f 
'reaper.c' || echo '$(srcdir)/'`reaper.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo: ring.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo 
`test -f 'ring.c' || echo '$(srcdir)/'`ring.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ring.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-ring.lo `test -f 
'ring.c' || echo '$(srcdir)/'`ring.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-table.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo `test -f 'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-table.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-table.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-table.lo `test -f 
'table.c' || echo '$(srcdir)/'`table.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo 
`test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-trie.lo `test -f 
'trie.c' || echo '$(srcdir)/'`trie.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo: vte.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo 
`test -f 'vte.c' || echo '$(srcdir)/'`vte.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vte.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vte.lo `test -f 
'vte.c' || echo '$(srcdir)/'`vte.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo: vteaccess.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo 
`test -f 'vteaccess.c' || echo '$(srcdir)/'`vteaccess.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteaccess.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteaccess.lo `test 
-f 'vteaccess.c' || echo '$(srcdir)/'`vteaccess.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo: vtebg.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo `test -f 'vtebg.c' || echo '$(srcdir)/'`vtebg.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtebg.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtebg.lo `test -f 
'vtebg.c' || echo '$(srcdir)/'`vtebg.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteconv.lo `test -f 
'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo: vtedraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo `test -f 'vtedraw.c' || echo '$(srcdir)/'`vtedraw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtedraw.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtedraw.lo `test -f 
'vtedraw.c' || echo '$(srcdir)/'`vtedraw.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo: vteregex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo 
`test -f 'vteregex.c' || echo '$(srcdir)/'`vteregex.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteregex.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteregex.lo `test 
-f 'vteregex.c' || echo '$(srcdir)/'`vteregex.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo: vterowdata.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo 
`test -f 'vterowdata.c' || echo '$(srcdir)/'`vterowdata.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vterowdata.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vterowdata.lo `test 
-f 'vterowdata.c' || echo '$(srcdir)/'`vterowdata.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo: vteseq.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo `test -f 'vteseq.c' || echo '$(srcdir)/'`vteseq.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteseq.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq.lo `test -f 
'vteseq.c' || echo '$(srcdir)/'`vteseq.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo: vtestream.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo 
`test -f 'vtestream.c' || echo '$(srcdir)/'`vtestream.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtestream.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtestream.lo `test 
-f 'vtestream.c' || echo '$(srcdir)/'`vtestream.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo 
-MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo' 
libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetc.lo `test -f 
'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo: vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo `test -f 'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetree.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetree.lo `test -f 
'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo: vtetypebuiltins.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.Tpo -c -o 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo `test -f 'vtetypebuiltins.c' || echo 
'$(srcdir)/'`vtetypebuiltins.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetypebuiltins.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vtetypebuiltins.lo 
`test -f 'vtetypebuiltins.c' || echo '$(srcdir)/'`vtetypebuiltins.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo: vteunistr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo 
`test -f 'vteunistr.c' || echo '$(srcdir)/'`vteunistr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteunistr.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteunistr.lo `test 
-f 'vteunistr.c' || echo '$(srcdir)/'`vteunistr.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.lo: keysyms.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.lo -MD -MP -MF $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.Tpo 
-c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.lo `test -f 'keysyms.c' || echo '$(srcdir)/'`keysyms.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='keysyms.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-keysyms.lo `test -f 
'keysyms.c' || echo '$(srcdir)/'`keysyms.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.lo: vteseq-2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.lo 
`test -f 'vteseq-2.c' || echo '$(srcdir)/'`vteseq-2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteseq-2.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-2.lo `test 
-f 'vteseq-2.c' || echo '$(srcdir)/'`vteseq-2.c
+
+libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.lo: vteseq-n.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) 
$(CPPFLAGS) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -MT 
libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.lo -MD -MP -MF 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.Tpo -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.lo 
`test -f 'vteseq-n.c' || echo '$(srcdir)/'`vteseq-n.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.Tpo 
$(DEPDIR)/libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteseq-n.c' 
object='libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile 
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvte@VTE_LIBRARY_SUFFIX_U@_la_CPPFLAGS) $(CPPFLAGS) 
$(libvte@VTE_LIBRARY_SUFFIX_U@_la_CFLAGS) $(CFLAGS) -c -o libvte@VTE_LIBRARY_SUFFIX_U@_la-vteseq-n.lo `test 
-f 'vteseq-n.c' || echo '$(srcdir)/'`vteseq-n.c
+
+interpret-caps.o: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-caps.o -MD -MP -MF $(DEPDIR)/interpret-caps.Tpo -c -o 
interpret-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-caps.Tpo $(DEPDIR)/interpret-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='interpret-caps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+
+interpret-caps.obj: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-caps.obj -MD -MP -MF $(DEPDIR)/interpret-caps.Tpo -c 
-o interpret-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else $(CYGPATH_W) '$(srcdir)/caps.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-caps.Tpo $(DEPDIR)/interpret-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='interpret-caps.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else 
$(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+
+interpret-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-debug.o -MD -MP -MF $(DEPDIR)/interpret-debug.Tpo -c 
-o interpret-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-debug.Tpo $(DEPDIR)/interpret-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='interpret-debug.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+interpret-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-debug.obj -MD -MP -MF $(DEPDIR)/interpret-debug.Tpo 
-c -o interpret-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) 
'$(srcdir)/debug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-debug.Tpo $(DEPDIR)/interpret-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='interpret-debug.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; 
else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+interpret-iso2022.o: iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-iso2022.o -MD -MP -MF $(DEPDIR)/interpret-iso2022.Tpo 
-c -o interpret-iso2022.o `test -f 'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-iso2022.Tpo $(DEPDIR)/interpret-iso2022.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iso2022.c' object='interpret-iso2022.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-iso2022.o `test -f 'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+
+interpret-iso2022.obj: iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-iso2022.obj -MD -MP -MF 
$(DEPDIR)/interpret-iso2022.Tpo -c -o interpret-iso2022.obj `if test -f 'iso2022.c'; then $(CYGPATH_W) 
'iso2022.c'; else $(CYGPATH_W) '$(srcdir)/iso2022.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-iso2022.Tpo $(DEPDIR)/interpret-iso2022.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iso2022.c' object='interpret-iso2022.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-iso2022.obj `if test -f 'iso2022.c'; then $(CYGPATH_W) 
'iso2022.c'; else $(CYGPATH_W) '$(srcdir)/iso2022.c'; fi`
+
+interpret-matcher.o: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-matcher.o -MD -MP -MF $(DEPDIR)/interpret-matcher.Tpo 
-c -o interpret-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-matcher.Tpo $(DEPDIR)/interpret-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='interpret-matcher.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+
+interpret-matcher.obj: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-matcher.obj -MD -MP -MF 
$(DEPDIR)/interpret-matcher.Tpo -c -o interpret-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 
'matcher.c'; else $(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-matcher.Tpo $(DEPDIR)/interpret-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='interpret-matcher.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 
'matcher.c'; else $(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+
+interpret-table.o: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-table.o -MD -MP -MF $(DEPDIR)/interpret-table.Tpo -c 
-o interpret-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-table.Tpo $(DEPDIR)/interpret-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='interpret-table.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+
+interpret-table.obj: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-table.obj -MD -MP -MF $(DEPDIR)/interpret-table.Tpo 
-c -o interpret-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) 
'$(srcdir)/table.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-table.Tpo $(DEPDIR)/interpret-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='interpret-table.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; 
else $(CYGPATH_W) '$(srcdir)/table.c'; fi`
+
+interpret-trie.o: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-trie.o -MD -MP -MF $(DEPDIR)/interpret-trie.Tpo -c -o 
interpret-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-trie.Tpo $(DEPDIR)/interpret-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='interpret-trie.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+
+interpret-trie.obj: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-trie.obj -MD -MP -MF $(DEPDIR)/interpret-trie.Tpo -c 
-o interpret-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-trie.Tpo $(DEPDIR)/interpret-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='interpret-trie.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else 
$(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+
+interpret-vteconv.o: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vteconv.o -MD -MP -MF $(DEPDIR)/interpret-vteconv.Tpo 
-c -o interpret-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vteconv.Tpo $(DEPDIR)/interpret-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='interpret-vteconv.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+interpret-vteconv.obj: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vteconv.obj -MD -MP -MF 
$(DEPDIR)/interpret-vteconv.Tpo -c -o interpret-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 
'vteconv.c'; else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vteconv.Tpo $(DEPDIR)/interpret-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='interpret-vteconv.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 
'vteconv.c'; else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+
+interpret-vtetc.o: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vtetc.o -MD -MP -MF $(DEPDIR)/interpret-vtetc.Tpo -c 
-o interpret-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vtetc.Tpo $(DEPDIR)/interpret-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='interpret-vtetc.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+interpret-vtetc.obj: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vtetc.obj -MD -MP -MF $(DEPDIR)/interpret-vtetc.Tpo 
-c -o interpret-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else $(CYGPATH_W) 
'$(srcdir)/vtetc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vtetc.Tpo $(DEPDIR)/interpret-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='interpret-vtetc.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; 
else $(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+
+interpret-vtetree.o: vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vtetree.o -MD -MP -MF $(DEPDIR)/interpret-vtetree.Tpo 
-c -o interpret-vtetree.o `test -f 'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vtetree.Tpo $(DEPDIR)/interpret-vtetree.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetree.c' object='interpret-vtetree.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vtetree.o `test -f 'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+
+interpret-vtetree.obj: vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-vtetree.obj -MD -MP -MF 
$(DEPDIR)/interpret-vtetree.Tpo -c -o interpret-vtetree.obj `if test -f 'vtetree.c'; then $(CYGPATH_W) 
'vtetree.c'; else $(CYGPATH_W) '$(srcdir)/vtetree.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-vtetree.Tpo $(DEPDIR)/interpret-vtetree.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetree.c' object='interpret-vtetree.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-vtetree.obj `if test -f 'vtetree.c'; then $(CYGPATH_W) 
'vtetree.c'; else $(CYGPATH_W) '$(srcdir)/vtetree.c'; fi`
+
+interpret-interpret.o: interpret.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-interpret.o -MD -MP -MF 
$(DEPDIR)/interpret-interpret.Tpo -c -o interpret-interpret.o `test -f 'interpret.c' || echo 
'$(srcdir)/'`interpret.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-interpret.Tpo $(DEPDIR)/interpret-interpret.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='interpret.c' object='interpret-interpret.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-interpret.o `test -f 'interpret.c' || echo 
'$(srcdir)/'`interpret.c
+
+interpret-interpret.obj: interpret.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) 
$(CPPFLAGS) $(interpret_CFLAGS) $(CFLAGS) -MT interpret-interpret.obj -MD -MP -MF 
$(DEPDIR)/interpret-interpret.Tpo -c -o interpret-interpret.obj `if test -f 'interpret.c'; then $(CYGPATH_W) 
'interpret.c'; else $(CYGPATH_W) '$(srcdir)/interpret.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/interpret-interpret.Tpo $(DEPDIR)/interpret-interpret.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='interpret.c' object='interpret-interpret.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(interpret_CPPFLAGS) $(CPPFLAGS) 
$(interpret_CFLAGS) $(CFLAGS) -c -o interpret-interpret.obj `if test -f 'interpret.c'; then $(CYGPATH_W) 
'interpret.c'; else $(CYGPATH_W) '$(srcdir)/interpret.c'; fi`
+
+iso2022-caps.o: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-caps.o -MD -MP -MF $(DEPDIR)/iso2022-caps.Tpo -c -o 
iso2022-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-caps.Tpo $(DEPDIR)/iso2022-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='iso2022-caps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+
+iso2022-caps.obj: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-caps.obj -MD -MP -MF $(DEPDIR)/iso2022-caps.Tpo -c -o 
iso2022-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else $(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-caps.Tpo $(DEPDIR)/iso2022-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='iso2022-caps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else 
$(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+
+iso2022-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-debug.o -MD -MP -MF $(DEPDIR)/iso2022-debug.Tpo -c -o 
iso2022-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-debug.Tpo $(DEPDIR)/iso2022-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='iso2022-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+iso2022-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-debug.obj -MD -MP -MF $(DEPDIR)/iso2022-debug.Tpo -c -o 
iso2022-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-debug.Tpo $(DEPDIR)/iso2022-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='iso2022-debug.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+iso2022-iso2022.o: iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-iso2022.o -MD -MP -MF $(DEPDIR)/iso2022-iso2022.Tpo -c -o 
iso2022-iso2022.o `test -f 'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-iso2022.Tpo $(DEPDIR)/iso2022-iso2022.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iso2022.c' object='iso2022-iso2022.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-iso2022.o `test -f 'iso2022.c' || echo '$(srcdir)/'`iso2022.c
+
+iso2022-iso2022.obj: iso2022.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-iso2022.obj -MD -MP -MF $(DEPDIR)/iso2022-iso2022.Tpo -c 
-o iso2022-iso2022.obj `if test -f 'iso2022.c'; then $(CYGPATH_W) 'iso2022.c'; else $(CYGPATH_W) 
'$(srcdir)/iso2022.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-iso2022.Tpo $(DEPDIR)/iso2022-iso2022.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iso2022.c' object='iso2022-iso2022.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-iso2022.obj `if test -f 'iso2022.c'; then $(CYGPATH_W) 'iso2022.c'; 
else $(CYGPATH_W) '$(srcdir)/iso2022.c'; fi`
+
+iso2022-matcher.o: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-matcher.o -MD -MP -MF $(DEPDIR)/iso2022-matcher.Tpo -c -o 
iso2022-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-matcher.Tpo $(DEPDIR)/iso2022-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='iso2022-matcher.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+
+iso2022-matcher.obj: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-matcher.obj -MD -MP -MF $(DEPDIR)/iso2022-matcher.Tpo -c 
-o iso2022-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; else $(CYGPATH_W) 
'$(srcdir)/matcher.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-matcher.Tpo $(DEPDIR)/iso2022-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='iso2022-matcher.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; 
else $(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+
+iso2022-table.o: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-table.o -MD -MP -MF $(DEPDIR)/iso2022-table.Tpo -c -o 
iso2022-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-table.Tpo $(DEPDIR)/iso2022-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='iso2022-table.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+
+iso2022-table.obj: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-table.obj -MD -MP -MF $(DEPDIR)/iso2022-table.Tpo -c -o 
iso2022-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) '$(srcdir)/table.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-table.Tpo $(DEPDIR)/iso2022-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='iso2022-table.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else 
$(CYGPATH_W) '$(srcdir)/table.c'; fi`
+
+iso2022-trie.o: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-trie.o -MD -MP -MF $(DEPDIR)/iso2022-trie.Tpo -c -o 
iso2022-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-trie.Tpo $(DEPDIR)/iso2022-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='iso2022-trie.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+
+iso2022-trie.obj: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-trie.obj -MD -MP -MF $(DEPDIR)/iso2022-trie.Tpo -c -o 
iso2022-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-trie.Tpo $(DEPDIR)/iso2022-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='iso2022-trie.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else 
$(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+
+iso2022-vteconv.o: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vteconv.o -MD -MP -MF $(DEPDIR)/iso2022-vteconv.Tpo -c -o 
iso2022-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vteconv.Tpo $(DEPDIR)/iso2022-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='iso2022-vteconv.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+iso2022-vteconv.obj: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vteconv.obj -MD -MP -MF $(DEPDIR)/iso2022-vteconv.Tpo -c 
-o iso2022-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; else $(CYGPATH_W) 
'$(srcdir)/vteconv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vteconv.Tpo $(DEPDIR)/iso2022-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='iso2022-vteconv.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; 
else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+
+iso2022-vtetc.o: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vtetc.o -MD -MP -MF $(DEPDIR)/iso2022-vtetc.Tpo -c -o 
iso2022-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vtetc.Tpo $(DEPDIR)/iso2022-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='iso2022-vtetc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+iso2022-vtetc.obj: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vtetc.obj -MD -MP -MF $(DEPDIR)/iso2022-vtetc.Tpo -c -o 
iso2022-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else $(CYGPATH_W) '$(srcdir)/vtetc.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vtetc.Tpo $(DEPDIR)/iso2022-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='iso2022-vtetc.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else 
$(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+
+iso2022-vtetree.o: vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vtetree.o -MD -MP -MF $(DEPDIR)/iso2022-vtetree.Tpo -c -o 
iso2022-vtetree.o `test -f 'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vtetree.Tpo $(DEPDIR)/iso2022-vtetree.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetree.c' object='iso2022-vtetree.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vtetree.o `test -f 'vtetree.c' || echo '$(srcdir)/'`vtetree.c
+
+iso2022-vtetree.obj: vtetree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) 
$(CPPFLAGS) $(iso2022_CFLAGS) $(CFLAGS) -MT iso2022-vtetree.obj -MD -MP -MF $(DEPDIR)/iso2022-vtetree.Tpo -c 
-o iso2022-vtetree.obj `if test -f 'vtetree.c'; then $(CYGPATH_W) 'vtetree.c'; else $(CYGPATH_W) 
'$(srcdir)/vtetree.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/iso2022-vtetree.Tpo $(DEPDIR)/iso2022-vtetree.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetree.c' object='iso2022-vtetree.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(iso2022_CPPFLAGS) $(CPPFLAGS) 
$(iso2022_CFLAGS) $(CFLAGS) -c -o iso2022-vtetree.obj `if test -f 'vtetree.c'; then $(CYGPATH_W) 'vtetree.c'; 
else $(CYGPATH_W) '$(srcdir)/vtetree.c'; fi`
+
+reaper-reaper.o: reaper.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-reaper.o -MD -MP -MF $(DEPDIR)/reaper-reaper.Tpo -c -o 
reaper-reaper.o `test -f 'reaper.c' || echo '$(srcdir)/'`reaper.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-reaper.Tpo $(DEPDIR)/reaper-reaper.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reaper.c' object='reaper-reaper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-reaper.o `test -f 'reaper.c' || echo '$(srcdir)/'`reaper.c
+
+reaper-reaper.obj: reaper.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-reaper.obj -MD -MP -MF $(DEPDIR)/reaper-reaper.Tpo -c -o 
reaper-reaper.obj `if test -f 'reaper.c'; then $(CYGPATH_W) 'reaper.c'; else $(CYGPATH_W) 
'$(srcdir)/reaper.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-reaper.Tpo $(DEPDIR)/reaper-reaper.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reaper.c' object='reaper-reaper.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-reaper.obj `if test -f 'reaper.c'; then $(CYGPATH_W) 'reaper.c'; else 
$(CYGPATH_W) '$(srcdir)/reaper.c'; fi`
+
+reaper-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-debug.o -MD -MP -MF $(DEPDIR)/reaper-debug.Tpo -c -o 
reaper-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-debug.Tpo $(DEPDIR)/reaper-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='reaper-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+reaper-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-debug.obj -MD -MP -MF $(DEPDIR)/reaper-debug.Tpo -c -o 
reaper-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-debug.Tpo $(DEPDIR)/reaper-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='reaper-debug.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+reaper-marshal.o: marshal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-marshal.o -MD -MP -MF $(DEPDIR)/reaper-marshal.Tpo -c -o 
reaper-marshal.o `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-marshal.Tpo $(DEPDIR)/reaper-marshal.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='marshal.c' object='reaper-marshal.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-marshal.o `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c
+
+reaper-marshal.obj: marshal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT reaper-marshal.obj -MD -MP -MF $(DEPDIR)/reaper-marshal.Tpo -c -o 
reaper-marshal.obj `if test -f 'marshal.c'; then $(CYGPATH_W) 'marshal.c'; else $(CYGPATH_W) 
'$(srcdir)/marshal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reaper-marshal.Tpo $(DEPDIR)/reaper-marshal.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='marshal.c' object='reaper-marshal.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reaper_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o reaper-marshal.obj `if test -f 'marshal.c'; then $(CYGPATH_W) 'marshal.c'; else 
$(CYGPATH_W) '$(srcdir)/marshal.c'; fi`
+
+reflect_text_view-reflect.o: reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_text_view_CPPFLAGS) 
$(CPPFLAGS) $(reflect_text_view_CFLAGS) $(CFLAGS) -MT reflect_text_view-reflect.o -MD -MP -MF 
$(DEPDIR)/reflect_text_view-reflect.Tpo -c -o reflect_text_view-reflect.o `test -f 'reflect.c' || echo 
'$(srcdir)/'`reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reflect_text_view-reflect.Tpo 
$(DEPDIR)/reflect_text_view-reflect.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reflect.c' object='reflect_text_view-reflect.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_text_view_CPPFLAGS) 
$(CPPFLAGS) $(reflect_text_view_CFLAGS) $(CFLAGS) -c -o reflect_text_view-reflect.o `test -f 'reflect.c' || 
echo '$(srcdir)/'`reflect.c
+
+reflect_text_view-reflect.obj: reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_text_view_CPPFLAGS) 
$(CPPFLAGS) $(reflect_text_view_CFLAGS) $(CFLAGS) -MT reflect_text_view-reflect.obj -MD -MP -MF 
$(DEPDIR)/reflect_text_view-reflect.Tpo -c -o reflect_text_view-reflect.obj `if test -f 'reflect.c'; then 
$(CYGPATH_W) 'reflect.c'; else $(CYGPATH_W) '$(srcdir)/reflect.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reflect_text_view-reflect.Tpo 
$(DEPDIR)/reflect_text_view-reflect.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reflect.c' object='reflect_text_view-reflect.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_text_view_CPPFLAGS) 
$(CPPFLAGS) $(reflect_text_view_CFLAGS) $(CFLAGS) -c -o reflect_text_view-reflect.obj `if test -f 
'reflect.c'; then $(CYGPATH_W) 'reflect.c'; else $(CYGPATH_W) '$(srcdir)/reflect.c'; fi`
+
+reflect_vte-reflect.o: reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_vte_CPPFLAGS) 
$(CPPFLAGS) $(reflect_vte_CFLAGS) $(CFLAGS) -MT reflect_vte-reflect.o -MD -MP -MF 
$(DEPDIR)/reflect_vte-reflect.Tpo -c -o reflect_vte-reflect.o `test -f 'reflect.c' || echo 
'$(srcdir)/'`reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reflect_vte-reflect.Tpo $(DEPDIR)/reflect_vte-reflect.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reflect.c' object='reflect_vte-reflect.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_vte_CPPFLAGS) $(CPPFLAGS) 
$(reflect_vte_CFLAGS) $(CFLAGS) -c -o reflect_vte-reflect.o `test -f 'reflect.c' || echo 
'$(srcdir)/'`reflect.c
+
+reflect_vte-reflect.obj: reflect.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_vte_CPPFLAGS) 
$(CPPFLAGS) $(reflect_vte_CFLAGS) $(CFLAGS) -MT reflect_vte-reflect.obj -MD -MP -MF 
$(DEPDIR)/reflect_vte-reflect.Tpo -c -o reflect_vte-reflect.obj `if test -f 'reflect.c'; then $(CYGPATH_W) 
'reflect.c'; else $(CYGPATH_W) '$(srcdir)/reflect.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/reflect_vte-reflect.Tpo $(DEPDIR)/reflect_vte-reflect.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='reflect.c' object='reflect_vte-reflect.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(reflect_vte_CPPFLAGS) $(CPPFLAGS) 
$(reflect_vte_CFLAGS) $(CFLAGS) -c -o reflect_vte-reflect.obj `if test -f 'reflect.c'; then $(CYGPATH_W) 
'reflect.c'; else $(CYGPATH_W) '$(srcdir)/reflect.c'; fi`
+
+table-caps.o: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-caps.o -MD -MP -MF $(DEPDIR)/table-caps.Tpo -c -o table-caps.o `test -f 
'caps.c' || echo '$(srcdir)/'`caps.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-caps.Tpo $(DEPDIR)/table-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='table-caps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+
+table-caps.obj: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-caps.obj -MD -MP -MF $(DEPDIR)/table-caps.Tpo -c -o table-caps.obj `if 
test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else $(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-caps.Tpo $(DEPDIR)/table-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='table-caps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else 
$(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+
+table-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-debug.o -MD -MP -MF $(DEPDIR)/table-debug.Tpo -c -o table-debug.o `test 
-f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-debug.Tpo $(DEPDIR)/table-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='table-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+table-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-debug.obj -MD -MP -MF $(DEPDIR)/table-debug.Tpo -c -o table-debug.obj `if 
test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-debug.Tpo $(DEPDIR)/table-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='table-debug.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+table-matcher.o: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-matcher.o -MD -MP -MF $(DEPDIR)/table-matcher.Tpo -c -o table-matcher.o 
`test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-matcher.Tpo $(DEPDIR)/table-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='table-matcher.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+
+table-matcher.obj: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-matcher.obj -MD -MP -MF $(DEPDIR)/table-matcher.Tpo -c -o 
table-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; else $(CYGPATH_W) 
'$(srcdir)/matcher.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-matcher.Tpo $(DEPDIR)/table-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='table-matcher.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; 
else $(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+
+table-table.o: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-table.o -MD -MP -MF $(DEPDIR)/table-table.Tpo -c -o table-table.o `test 
-f 'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-table.Tpo $(DEPDIR)/table-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='table-table.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+
+table-table.obj: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-table.obj -MD -MP -MF $(DEPDIR)/table-table.Tpo -c -o table-table.obj `if 
test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) '$(srcdir)/table.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-table.Tpo $(DEPDIR)/table-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='table-table.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else 
$(CYGPATH_W) '$(srcdir)/table.c'; fi`
+
+table-trie.o: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-trie.o -MD -MP -MF $(DEPDIR)/table-trie.Tpo -c -o table-trie.o `test -f 
'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-trie.Tpo $(DEPDIR)/table-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='table-trie.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+
+table-trie.obj: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-trie.obj -MD -MP -MF $(DEPDIR)/table-trie.Tpo -c -o table-trie.obj `if 
test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-trie.Tpo $(DEPDIR)/table-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='table-trie.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else 
$(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+
+table-vteconv.o: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-vteconv.o -MD -MP -MF $(DEPDIR)/table-vteconv.Tpo -c -o table-vteconv.o 
`test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-vteconv.Tpo $(DEPDIR)/table-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='table-vteconv.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+table-vteconv.obj: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-vteconv.obj -MD -MP -MF $(DEPDIR)/table-vteconv.Tpo -c -o 
table-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; else $(CYGPATH_W) 
'$(srcdir)/vteconv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-vteconv.Tpo $(DEPDIR)/table-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='table-vteconv.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; 
else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+
+table-vtetc.o: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-vtetc.o -MD -MP -MF $(DEPDIR)/table-vtetc.Tpo -c -o table-vtetc.o `test 
-f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-vtetc.Tpo $(DEPDIR)/table-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='table-vtetc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+table-vtetc.obj: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -MT table-vtetc.obj -MD -MP -MF $(DEPDIR)/table-vtetc.Tpo -c -o table-vtetc.obj `if 
test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else $(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/table-vtetc.Tpo $(DEPDIR)/table-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='table-vtetc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(table_CPPFLAGS) $(CPPFLAGS) 
$(table_CFLAGS) $(CFLAGS) -c -o table-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else 
$(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+
+trie-trie.o: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-trie.o -MD -MP -MF $(DEPDIR)/trie-trie.Tpo -c -o trie-trie.o `test -f 
'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-trie.Tpo $(DEPDIR)/trie-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='trie-trie.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+
+trie-trie.obj: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-trie.obj -MD -MP -MF $(DEPDIR)/trie-trie.Tpo -c -o trie-trie.obj `if test 
-f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-trie.Tpo $(DEPDIR)/trie-trie.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='trie.c' object='trie-trie.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else 
$(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+
+trie-caps.o: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-caps.o -MD -MP -MF $(DEPDIR)/trie-caps.Tpo -c -o trie-caps.o `test -f 
'caps.c' || echo '$(srcdir)/'`caps.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-caps.Tpo $(DEPDIR)/trie-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='trie-caps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-caps.o `test -f 'caps.c' || echo '$(srcdir)/'`caps.c
+
+trie-caps.obj: caps.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-caps.obj -MD -MP -MF $(DEPDIR)/trie-caps.Tpo -c -o trie-caps.obj `if test 
-f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else $(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-caps.Tpo $(DEPDIR)/trie-caps.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='caps.c' object='trie-caps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-caps.obj `if test -f 'caps.c'; then $(CYGPATH_W) 'caps.c'; else 
$(CYGPATH_W) '$(srcdir)/caps.c'; fi`
+
+trie-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-debug.o -MD -MP -MF $(DEPDIR)/trie-debug.Tpo -c -o trie-debug.o `test -f 
'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-debug.Tpo $(DEPDIR)/trie-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='trie-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+trie-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-debug.obj -MD -MP -MF $(DEPDIR)/trie-debug.Tpo -c -o trie-debug.obj `if 
test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-debug.Tpo $(DEPDIR)/trie-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='trie-debug.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+trie-matcher.o: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-matcher.o -MD -MP -MF $(DEPDIR)/trie-matcher.Tpo -c -o trie-matcher.o `test 
-f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-matcher.Tpo $(DEPDIR)/trie-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='trie-matcher.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-matcher.o `test -f 'matcher.c' || echo '$(srcdir)/'`matcher.c
+
+trie-matcher.obj: matcher.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-matcher.obj -MD -MP -MF $(DEPDIR)/trie-matcher.Tpo -c -o trie-matcher.obj 
`if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; else $(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-matcher.Tpo $(DEPDIR)/trie-matcher.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='matcher.c' object='trie-matcher.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-matcher.obj `if test -f 'matcher.c'; then $(CYGPATH_W) 'matcher.c'; else 
$(CYGPATH_W) '$(srcdir)/matcher.c'; fi`
+
+trie-table.o: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-table.o -MD -MP -MF $(DEPDIR)/trie-table.Tpo -c -o trie-table.o `test -f 
'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-table.Tpo $(DEPDIR)/trie-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='trie-table.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+
+trie-table.obj: table.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-table.obj -MD -MP -MF $(DEPDIR)/trie-table.Tpo -c -o trie-table.obj `if 
test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) '$(srcdir)/table.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-table.Tpo $(DEPDIR)/trie-table.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='table.c' object='trie-table.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else 
$(CYGPATH_W) '$(srcdir)/table.c'; fi`
+
+trie-vteconv.o: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-vteconv.o -MD -MP -MF $(DEPDIR)/trie-vteconv.Tpo -c -o trie-vteconv.o `test 
-f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-vteconv.Tpo $(DEPDIR)/trie-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='trie-vteconv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+trie-vteconv.obj: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-vteconv.obj -MD -MP -MF $(DEPDIR)/trie-vteconv.Tpo -c -o trie-vteconv.obj 
`if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-vteconv.Tpo $(DEPDIR)/trie-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='trie-vteconv.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; else 
$(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+
+trie-vtetc.o: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-vtetc.o -MD -MP -MF $(DEPDIR)/trie-vtetc.Tpo -c -o trie-vtetc.o `test -f 
'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-vtetc.Tpo $(DEPDIR)/trie-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='trie-vtetc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+trie-vtetc.obj: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -MT trie-vtetc.obj -MD -MP -MF $(DEPDIR)/trie-vtetc.Tpo -c -o trie-vtetc.obj `if 
test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else $(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie-vtetc.Tpo $(DEPDIR)/trie-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='trie-vtetc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_CPPFLAGS) $(CPPFLAGS) 
$(trie_CFLAGS) $(CFLAGS) -c -o trie-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else 
$(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+
+vte@VTE_LIBRARY_SUFFIX_U@-vteapp.o: vteapp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS) $(CFLAGS) -MT vte@VTE_LIBRARY_SUFFIX_U@-vteapp.o -MD -MP -MF 
$(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Tpo -c -o vte@VTE_LIBRARY_SUFFIX_U@-vteapp.o `test -f 'vteapp.c' 
|| echo '$(srcdir)/'`vteapp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Tpo 
$(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteapp.c' object='vte@VTE_LIBRARY_SUFFIX_U@-vteapp.o' 
libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS) $(CFLAGS) -c -o vte@VTE_LIBRARY_SUFFIX_U@-vteapp.o `test -f 'vteapp.c' || 
echo '$(srcdir)/'`vteapp.c
+
+vte@VTE_LIBRARY_SUFFIX_U -vteapp obj: vteapp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS) $(CFLAGS) -MT vte@VTE_LIBRARY_SUFFIX_U -vteapp obj -MD -MP -MF 
$(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Tpo -c -o vte@VTE_LIBRARY_SUFFIX_U -vteapp obj `if test -f 
'vteapp.c'; then $(CYGPATH_W) 'vteapp.c'; else $(CYGPATH_W) '$(srcdir)/vteapp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Tpo 
$(DEPDIR)/vte@VTE_LIBRARY_SUFFIX_U -vteapp Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteapp.c' object='vte@VTE_LIBRARY_SUFFIX_U -vteapp obj' 
libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(vte@VTE_LIBRARY_SUFFIX_U@_CFLAGS) $(CFLAGS) -c -o vte@VTE_LIBRARY_SUFFIX_U -vteapp obj `if test -f 
'vteapp.c'; then $(CYGPATH_W) 'vteapp.c'; else $(CYGPATH_W) '$(srcdir)/vteapp.c'; fi`
+
+vteconv-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) 
$(CPPFLAGS) $(vteconv_CFLAGS) $(CFLAGS) -MT vteconv-debug.o -MD -MP -MF $(DEPDIR)/vteconv-debug.Tpo -c -o 
vteconv-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vteconv-debug.Tpo $(DEPDIR)/vteconv-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='vteconv-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) $(CPPFLAGS) 
$(vteconv_CFLAGS) $(CFLAGS) -c -o vteconv-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+vteconv-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) 
$(CPPFLAGS) $(vteconv_CFLAGS) $(CFLAGS) -MT vteconv-debug.obj -MD -MP -MF $(DEPDIR)/vteconv-debug.Tpo -c -o 
vteconv-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; 
fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vteconv-debug.Tpo $(DEPDIR)/vteconv-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='vteconv-debug.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) $(CPPFLAGS) 
$(vteconv_CFLAGS) $(CFLAGS) -c -o vteconv-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+vteconv-vteconv.o: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) 
$(CPPFLAGS) $(vteconv_CFLAGS) $(CFLAGS) -MT vteconv-vteconv.o -MD -MP -MF $(DEPDIR)/vteconv-vteconv.Tpo -c -o 
vteconv-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vteconv-vteconv.Tpo $(DEPDIR)/vteconv-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='vteconv-vteconv.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) $(CPPFLAGS) 
$(vteconv_CFLAGS) $(CFLAGS) -c -o vteconv-vteconv.o `test -f 'vteconv.c' || echo '$(srcdir)/'`vteconv.c
+
+vteconv-vteconv.obj: vteconv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) 
$(CPPFLAGS) $(vteconv_CFLAGS) $(CFLAGS) -MT vteconv-vteconv.obj -MD -MP -MF $(DEPDIR)/vteconv-vteconv.Tpo -c 
-o vteconv-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; else $(CYGPATH_W) 
'$(srcdir)/vteconv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vteconv-vteconv.Tpo $(DEPDIR)/vteconv-vteconv.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vteconv.c' object='vteconv-vteconv.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vteconv_CPPFLAGS) $(CPPFLAGS) 
$(vteconv_CFLAGS) $(CFLAGS) -c -o vteconv-vteconv.obj `if test -f 'vteconv.c'; then $(CYGPATH_W) 'vteconv.c'; 
else $(CYGPATH_W) '$(srcdir)/vteconv.c'; fi`
+
+vtetc-vtetc.o: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT vtetc-vtetc.o -MD -MP -MF $(DEPDIR)/vtetc-vtetc.Tpo -c -o vtetc-vtetc.o `test -f 
'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vtetc-vtetc.Tpo $(DEPDIR)/vtetc-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='vtetc-vtetc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o vtetc-vtetc.o `test -f 'vtetc.c' || echo '$(srcdir)/'`vtetc.c
+
+vtetc-vtetc.obj: vtetc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT vtetc-vtetc.obj -MD -MP -MF $(DEPDIR)/vtetc-vtetc.Tpo -c -o vtetc-vtetc.obj `if 
test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else $(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vtetc-vtetc.Tpo $(DEPDIR)/vtetc-vtetc.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='vtetc.c' object='vtetc-vtetc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o vtetc-vtetc.obj `if test -f 'vtetc.c'; then $(CYGPATH_W) 'vtetc.c'; else 
$(CYGPATH_W) '$(srcdir)/vtetc.c'; fi`
+
+vtetc-debug.o: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT vtetc-debug.o -MD -MP -MF $(DEPDIR)/vtetc-debug.Tpo -c -o vtetc-debug.o `test -f 
'debug.c' || echo '$(srcdir)/'`debug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vtetc-debug.Tpo $(DEPDIR)/vtetc-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='vtetc-debug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o vtetc-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
+
+vtetc-debug.obj: debug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -MT vtetc-debug.obj -MD -MP -MF $(DEPDIR)/vtetc-debug.Tpo -c -o vtetc-debug.obj `if 
test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/vtetc-debug.Tpo $(DEPDIR)/vtetc-debug.Po
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='debug.c' object='vtetc-debug.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vtetc_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS) -c -o vtetc-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else 
$(CYGPATH_W) '$(srcdir)/debug.c'; fi`
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-nodist_girDATA: $(nodist_gir_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(girdir)" || $(MKDIR_P) "$(DESTDIR)$(girdir)"
+       @list='$(nodist_gir_DATA)'; test -n "$(girdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(girdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \
+       done
+
+uninstall-nodist_girDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_gir_DATA)'; test -n "$(girdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(girdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(girdir)" && rm -f $$files
+install-nodist_typelibDATA: $(nodist_typelib_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(typelibdir)" || $(MKDIR_P) "$(DESTDIR)$(typelibdir)"
+       @list='$(nodist_typelib_DATA)'; test -n "$(typelibdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(typelibdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibdir)" || exit $$?; \
+       done
+
+uninstall-nodist_typelibDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_typelib_DATA)'; test -n "$(typelibdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(typelibdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(typelibdir)" && rm -f $$files
+install-headerHEADERS: $(header_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(headerdir)" || $(MKDIR_P) "$(DESTDIR)$(headerdir)"
+       @list='$(header_HEADERS)'; test -n "$(headerdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(headerdir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(headerdir)" || exit $$?; \
+       done
+
+uninstall-headerHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(header_HEADERS)'; test -n "$(headerdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(headerdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(headerdir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           echo "$$grn$$dashes"; \
+         else \
+           echo "$$red$$dashes"; \
+         fi; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes$$std"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+               $(HEADERS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs:
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(girdir)" 
"$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(headerdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+       clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-headerHEADERS install-nodist_girDATA \
+       install-nodist_typelibDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-headerHEADERS \
+       uninstall-libLTLIBRARIES uninstall-nodist_girDATA \
+       uninstall-nodist_typelibDATA
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+       clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-binPROGRAMS \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-headerHEADERS \
+       install-html install-html-am install-info install-info-am \
+       install-libLTLIBRARIES install-man install-nodist_girDATA \
+       install-nodist_typelibDATA install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-binPROGRAMS \
+       uninstall-headerHEADERS uninstall-libLTLIBRARIES \
+       uninstall-nodist_girDATA uninstall-nodist_typelibDATA
+
+       $(NULL)
+
+marshal.c: marshal.list
+       $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_vte_marshal --header --body --internal $< > $@
+
+marshal.h: marshal.list
+       $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_vte_marshal --header --internal $< > $@
+
+vtetypebuiltins.h: stamp-vtetypebuiltins.h
+       @true
+stamp-vtetypebuiltins.h: vtetypebuiltins.h.template vte.h vtepty.h vtedeprecated.h
+       $(AM_V_GEN) $(GLIB_MKENUMS) --template $< $(filter %.h,$^) > xgen-vtbh \
+       && (cmp -s xgen-vtbh vtetypebuiltins.h || cp xgen-vtbh vtetypebuiltins.h ) \
+       && rm -f xgen-vtbh \
+       && echo timestamp > $(@F)
+
+vtetypebuiltins.c: vtetypebuiltins.c.template vte.h vtepty.h vtedeprecated.h
+       $(AM_V_GEN) $(GLIB_MKENUMS) --template $< $(filter %.h,$^) > xgen-vtbc \
+       && (cmp -s xgen-vtbc vtetypebuiltins.c || cp xgen-vtbc vtetypebuiltins.c ) \
+       && rm -f xgen-vtbc
+
+vteseq-2.c: vteseq-2.gperf
+       $(AM_V_GEN) $(top_srcdir)/missing --run gperf -m 100 --no-strlen $< > $@.tmp && \
+       mv -f $@.tmp $@
+
+vteseq-n.c: vteseq-n.gperf
+       $(AM_V_GEN) $(top_srcdir)/missing --run gperf -m 100 $< > $@.tmp && \
+       mv -f $@.tmp $@
+
+vteseq-list.h: vteseq-2.gperf vteseq-n.gperf
+       $(AM_V_GEN) echo '/* Generated file.  Do not edit */' > $@.tmp && \
+       cat $^ | grep -v '^#' | grep '\<VTE_SEQUENCE_HANDLER\>'| sed 's/.*, //' | LANG=C sort -u >> $@.tmp && 
\
+       mv -f $@.tmp $@
+
+@HAVE_INTROSPECTION_TRUE@Vte-@VTE_API_VERSION@.gir: libvte@VTE_LIBRARY_SUFFIX_U@.la
+
+#
+
+-include $(top_srcdir)/git.mk
+-include $(INTROSPECTION_MAKEFILE)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vte/src/TODO b/vte/src/TODO
new file mode 100644
index 0000000..4729fb1
--- /dev/null
+++ b/vte/src/TODO
@@ -0,0 +1,32 @@
+Remove VteTerminalPrivate:char_{a,de}scent
+
+Handle display changes for cursors! (vte_terminal_set_cursor_from_regex_match is buggy then)
+Maybe rename vte_terminal_feed_child to make utf-8 clear
+use guint8 instead char in vte_terminal_feed_child_binary?
+VteBufferClass::commit size param -> gsize! (also in class_init: gtype!)
+::commit make TYPE_POINTER to avoid the string copy?
+VteBufferClass etc: add padding!!!
+support passing child_pid = -1 to remove the wathch in vte_buffer_watch_child
+add default handlers for Vtebuffer:move-window and :resize-window to VteView ?
+add default handlers for VteView:{in,de}crease-font-size ?
+VteScreen:scroll_delta -> move to vteview ??
+add freeze/unfreeze vtebuffer methods (to use while selecting, saving, etc)
+difference between default_row/column_count and row/column_count in Vtebufferprivate?
+remove vte_buffer_refresh_size calls from get_Preferred_width/height!
+make Vteview able to view just a subrect of the grid of vtebuffer (replace buffer->column/row_count by 
terminal ones?)
+maybe replace word-chars with a regex?
+replace vte_conv with VTE_CONV_GUNICHAR_TYPE to/from UTF-8 with g_utf8_to_ucs4/g_ucs4_to_utf8
+[re]do stuff from realize/size-allocate when buffer is set!
+make vtebuffer implement ginitable (ring_ini can fail!)
+vtebufferiter: is it global, or should it store the VteScreen too? + vte_view_match_check_iter: what if the 
iter points to a different screen thatn the one currently shown?
+make vte_view_match_check* return a GMatchInfo instead (depends on glib bug 
https://bugzilla.gnome.org/show_bug.cgi?id=653005)
+add freeze/thaw to vtebuffer
+rename VteBufferIter -> VteBufferMark to match gtktextview stuff?
+add vte_view_freeze/thaw_scroll ? to temporarily inhibit scroll-to-end on keystroke/output
+use AtkText:text-insterted/changed/removed instead of text-changed (see bug atk #638377)
+move gtk-doc vte-docs.xml etc from GFDL to simply GPL 3+ ?
+get-goemetry-hints arg order (out last), and also add maybe (inout) flags?
+hide VteBuffer public struct, extending it is not really possible anyway, and then remove ->priv
+VteProcess to abstract around g_spawn_async() (and for running task notification & question on tab close in 
g-t?)
+
+hard: move from GIOChannel to GIOStream, process IO on a worker thread, make buffer abstract and move pty 
stuff up into a derived VtePtyBuffer class
diff --git a/vte/src/buffer.h b/vte/src/buffer.h
new file mode 100644
index 0000000..987a6a8
--- /dev/null
+++ b/vte/src/buffer.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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
+ *
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_buffer_h_included
+#define vte_buffer_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef GByteArray VteBuffer;
+
+#define _vte_buffer_new                                g_byte_array_new
+#define _vte_buffer_free(B)                    g_byte_array_free (B, TRUE)
+#define _vte_buffer_append(B, data, length)    g_byte_array_append (B, (const guint8 *) (data), length)
+#define _vte_buffer_length(B)                  ((B)->len)
+#define _vte_buffer_consume(B, length)         g_byte_array_remove_range (B, 0, length)
+#define _vte_buffer_clear(B)                   g_byte_array_set_size (B, 0)
+#define _vte_buffer_set_minimum_size(B, length)        g_byte_array_set_size (B, (guint) MAX ((gint) 
(length), (gint) (B)->len))
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/caps.c b/vte/src/caps.c
new file mode 100644
index 0000000..c7217e0
--- /dev/null
+++ b/vte/src/caps.c
@@ -0,0 +1,599 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <glib.h>
+#include "caps.h"
+
+#define ESC _VTE_CAP_ESC
+#define CSI _VTE_CAP_CSI
+#define ST  _VTE_CAP_ST
+#define OSC _VTE_CAP_OSC
+#define PM  _VTE_CAP_PM
+#define APC _VTE_CAP_APC
+
+#define ENQ "\005"
+#define BEL "\007"
+#define BS  "\010"
+#define TAB "\011"
+#define LF  "\012"
+#define VT  "\013"
+#define FF  "\014"
+#define CR  "\015"
+#define SO  "\016"
+#define SI  "\017"
+
+/* This list combined from the Linux termcap(5) man page, and
+ * termcap_&_terminfo by Strang, Mui, and O'Reilly. */
+struct _vte_capability_quark _vte_terminal_capability_strings[] = {
+       {"!1", TRUE, 0},
+       {"!2", TRUE, 0},
+       {"!3", TRUE, 0},
+
+       {"#1", TRUE, 0},
+       {"#2", TRUE, 0},
+       {"#3", TRUE, 0},
+       {"#4", TRUE, 0},
+
+       {"%0", TRUE, 0},
+       {"%1", TRUE, 0},
+       {"%2", TRUE, 0},
+       {"%3", TRUE, 0},
+       {"%4", TRUE, 0},
+       {"%5", TRUE, 0},
+       {"%6", TRUE, 0},
+       {"%7", TRUE, 0},
+       {"%8", TRUE, 0},
+       {"%9", TRUE, 0},
+       {"%a", TRUE, 0},
+       {"%b", TRUE, 0},
+       {"%c", TRUE, 0},
+       {"%d", TRUE, 0},
+       {"%e", TRUE, 0},
+       {"%f", TRUE, 0},
+       {"%g", TRUE, 0},
+       {"%h", TRUE, 0},
+       {"%i", TRUE, 0},
+       {"%j", TRUE, 0},
+
+       {"&0", TRUE, 0},
+       {"&1", TRUE, 0},
+       {"&2", TRUE, 0},
+       {"&3", TRUE, 0},
+       {"&4", TRUE, 0},
+       {"&5", TRUE, 0},
+       {"&6", TRUE, 0},
+       {"&7", TRUE, 0},
+       {"&8", TRUE, 0},
+       {"&9", TRUE, 0},
+
+       {"*0", TRUE, 0},
+       {"*1", TRUE, 0},
+       {"*2", TRUE, 0},
+       {"*3", TRUE, 0},
+       {"*4", TRUE, 0},
+       {"*5", TRUE, 0},
+       {"*6", TRUE, 0},
+       {"*7", TRUE, 0},
+       {"*8", TRUE, 0},
+       {"*9", TRUE, 0},
+
+       {"@0", TRUE, 0},
+       {"@1", TRUE, 0},
+       {"@2", TRUE, 0},
+       {"@3", TRUE, 0},
+       {"@4", TRUE, 0},
+       {"@5", TRUE, 0},
+       {"@6", TRUE, 0},
+       {"@7", TRUE, 0},
+       {"@8", TRUE, 0},
+       {"@9", TRUE, 0},
+
+       {"ae", FALSE, 0},
+       {"al", FALSE, 0},
+       {"AL", FALSE, 0},
+       {"as", FALSE, 0},
+
+       {"bc", FALSE, 0},
+       {"bl", FALSE, 0},
+       {"bt", FALSE, 0},
+
+       {"cb", FALSE, 0},
+       {"cc", FALSE, 0},
+       {"cd", FALSE, 0},
+       {"ce", FALSE, 0},
+       {"ch", FALSE, 0},
+       {"cl", FALSE, 0},
+       {"cm", FALSE, 0},
+       {"CM", FALSE, 0},
+       {"cr", FALSE, 0},
+       {"cs", FALSE, 0},
+       {"ct", FALSE, 0},
+       {"cv", FALSE, 0},
+
+       {"dc", FALSE, 0},
+       {"DC", FALSE, 0},
+       {"dl", FALSE, 0},
+       {"DL", FALSE, 0},
+       {"dm", FALSE, 0},
+       {"do", FALSE, 0},
+       {"DO", FALSE, 0},
+       {"ds", FALSE, 0},
+
+       {"eA", FALSE, 0},
+       {"ec", FALSE, 0},
+       {"ed", FALSE, 0},
+       {"ei", FALSE, 0},
+
+       {"F1", TRUE, 0},
+       {"F2", TRUE, 0},
+       {"F3", TRUE, 0},
+       {"F4", TRUE, 0},
+       {"F5", TRUE, 0},
+       {"F6", TRUE, 0},
+       {"F7", TRUE, 0},
+       {"F8", TRUE, 0},
+       {"F9", TRUE, 0},
+       {"FA", TRUE, 0},
+       {"FB", TRUE, 0},
+       {"FC", TRUE, 0},
+       {"FD", TRUE, 0},
+       {"FE", TRUE, 0},
+       {"FF", TRUE, 0},
+       {"FG", TRUE, 0},
+       {"FH", TRUE, 0},
+       {"FI", TRUE, 0},
+       {"FJ", TRUE, 0},
+       {"FK", TRUE, 0},
+       {"FL", TRUE, 0},
+       {"FM", TRUE, 0},
+       {"FN", TRUE, 0},
+       {"FO", TRUE, 0},
+       {"FP", TRUE, 0},
+       {"FQ", TRUE, 0},
+       {"FR", TRUE, 0},
+       {"FS", TRUE, 0},
+       {"FT", TRUE, 0},
+       {"FU", TRUE, 0},
+       {"FV", TRUE, 0},
+       {"FW", TRUE, 0},
+       {"FX", TRUE, 0},
+       {"FY", TRUE, 0},
+       {"FZ", TRUE, 0},
+
+       {"Fa", TRUE, 0},
+       {"Fb", TRUE, 0},
+       {"Fc", TRUE, 0},
+       {"Fd", TRUE, 0},
+       {"Fe", TRUE, 0},
+       {"Ff", TRUE, 0},
+       {"Fg", TRUE, 0},
+       {"Fh", TRUE, 0},
+       {"Fi", TRUE, 0},
+       {"Fj", TRUE, 0},
+       {"Fk", TRUE, 0},
+       {"Fl", TRUE, 0},
+       {"Fm", TRUE, 0},
+       {"Fn", TRUE, 0},
+       {"Fo", TRUE, 0},
+       {"Fp", TRUE, 0},
+       {"Fq", TRUE, 0},
+       {"Fr", TRUE, 0},
+
+       {"ff", FALSE, 0},
+       {"fs", FALSE, 0},
+
+       {"hd", FALSE, 0},
+       {"ho", FALSE, 0},
+       {"hu", FALSE, 0},
+
+       {"i1", FALSE, 0},
+       {"i3", FALSE, 0},
+
+       {"ic", FALSE, 0},
+       {"IC", FALSE, 0},
+       {"if", FALSE, 0},
+       {"im", FALSE, 0},
+       {"ip", FALSE, 0},
+       {"iP", FALSE, 0},
+       {"is", FALSE, 0},
+
+       {"K1", TRUE, 0},
+       {"K2", TRUE, 0},
+       {"K3", TRUE, 0},
+       {"K4", TRUE, 0},
+       {"K5", TRUE, 0},
+
+       {"k0", TRUE, 0},
+       {"k1", TRUE, 0},
+       {"k2", TRUE, 0},
+       {"k3", TRUE, 0},
+       {"k4", TRUE, 0},
+       {"k5", TRUE, 0},
+       {"k6", TRUE, 0},
+       {"k7", TRUE, 0},
+       {"k8", TRUE, 0},
+       {"k9", TRUE, 0},
+       {"k;", TRUE, 0},
+       {"ka", TRUE, 0},
+       {"kA", TRUE, 0},
+       {"kb", TRUE, 0},
+       {"kB", TRUE, 0},
+       {"kC", TRUE, 0},
+       {"kd", TRUE, 0},
+       {"kD", TRUE, 0},
+       {"ke", TRUE, 0},
+       {"kE", TRUE, 0},
+       {"kF", TRUE, 0},
+       {"kh", TRUE, 0},
+       {"kH", TRUE, 0},
+       {"kI", TRUE, 0},
+       {"kl", TRUE, 0},
+       {"kL", TRUE, 0},
+       {"kM", TRUE, 0},
+       {"kN", TRUE, 0},
+       {"kP", TRUE, 0},
+       {"kr", TRUE, 0},
+       {"kR", TRUE, 0},
+       {"ks", TRUE, 0},
+       {"kS", TRUE, 0},
+       {"kt", TRUE, 0},
+       {"kT", TRUE, 0},
+       {"ku", TRUE, 0},
+
+       {"l0", FALSE, 0},
+       {"l1", FALSE, 0},
+       {"l2", FALSE, 0},
+       {"l3", FALSE, 0},
+       {"l4", FALSE, 0},
+       {"l5", FALSE, 0},
+       {"l6", FALSE, 0},
+       {"l7", FALSE, 0},
+       {"l8", FALSE, 0},
+       {"l9", FALSE, 0},
+
+       {"la", FALSE, 0},
+       {"le", FALSE, 0},
+       {"LE", FALSE, 0},
+       {"LF", FALSE, 0},
+       {"ll", FALSE, 0},
+       {"LO", FALSE, 0},
+
+       {"mb", FALSE, 0},
+       {"MC", FALSE, 0},
+       {"md", FALSE, 0},
+       {"me", FALSE, 0},
+       {"mh", FALSE, 0},
+       {"mk", FALSE, 0},
+       {"ml", FALSE, 0},
+       {"ML", FALSE, 0},
+       {"mm", FALSE, 0},
+       {"mo", FALSE, 0},
+       {"mp", FALSE, 0},
+       {"mr", FALSE, 0},
+       {"MR", FALSE, 0},
+       {"mu", FALSE, 0},
+
+       {"nd", FALSE, 0},
+       {"nl", FALSE, 0},
+       {"nw", FALSE, 0},
+
+       {"pc", FALSE, 0},
+       {"pf", FALSE, 0},
+       {"pk", FALSE, 0},
+       {"pl", FALSE, 0},
+       {"pn", FALSE, 0},
+       {"po", FALSE, 0},
+       {"pO", FALSE, 0},
+       {"ps", FALSE, 0},
+       {"px", FALSE, 0},
+
+       {"r1", FALSE, 0},
+       {"r2", FALSE, 0},
+       {"r3", FALSE, 0},
+
+       {"RA", FALSE, 0},
+       {"rc", FALSE, 0},
+       {"rf", FALSE, 0},
+       {"RF", FALSE, 0},
+       {"RI", FALSE, 0},
+       {"rp", FALSE, 0},
+       {"rP", FALSE, 0},
+       {"rs", FALSE, 0},
+       {"RX", FALSE, 0},
+
+       {"s0", FALSE, 0},
+       {"s1", FALSE, 0},
+       {"s2", FALSE, 0},
+       {"s3", FALSE, 0},
+
+       {"sa", FALSE, 0},
+       {"SA", FALSE, 0},
+       {"sc", FALSE, 0},
+       {"se", FALSE, 0},
+       {"sf", FALSE, 0},
+       {"SF", FALSE, 0},
+       /* {"so", 0}, standout is always the same as another attribute. */
+       {"sr", FALSE, 0},
+       {"SR", FALSE, 0},
+       {"st", FALSE, 0},
+       {"SX", FALSE, 0},
+
+       {"ta", FALSE, 0},
+       /* {"te", 0}, terminal end-use is "logical". */
+       /* {"ti", 0}, terminal init is "logical". */
+       {"ts", FALSE, 0},
+
+       {"uc", FALSE, 0},
+       {"ue", FALSE, 0},
+       {"up", FALSE, 0},
+       {"UP", FALSE, 0},
+       {"us", FALSE, 0},
+
+       {"vb", FALSE, 0},
+       /* {"ve", FALSE, 0}, */
+       {"vi", FALSE, 0},
+       /* {"vs", FALSE, 0}, */
+
+       {"wi", FALSE, 0},
+
+       {"XF", FALSE, 0},
+       {"XN", FALSE, 0},
+
+
+       {"", FALSE, 0}
+};
+
+/* From some really old XTerm docs we had at the office, and an updated
+ * version at Moy, Gildea, and Dickey. */
+struct _vte_capability_string _vte_xterm_capability_strings[] = {
+       {ENQ, "return-terminal-status", 0},
+       {VT,  "vertical-tab", 0},
+       {FF,  "form-feed", 0},
+
+       {ESC " F", "7-bit-controls", 0},
+       {ESC " G", "8-bit-controls", 0},
+       {ESC " L", "ansi-conformance-level-1", 0},
+       {ESC " M", "ansi-conformance-level-2", 0},
+       {ESC " N", "ansi-conformance-level-3", 0},
+       {ESC "#3", "double-height-top-half", 0},
+       {ESC "#4", "double-height-bottom-half", 0},
+       {ESC "#5", "single-width", 0},
+       {ESC "#6", "double-width", 0},
+       {ESC "#8", "screen-alignment-test", 0},
+
+       /* These are actually designate-other-coding-system from ECMA 35,
+        * but we don't support the full repertoire.  Actually, we don't
+        * know what the full repertoire looks like. */
+       {ESC "%%@", "iso8859-1-character-set", 0},
+       {ESC "%%G", "utf-8-character-set", 0},
+
+       {ESC "7", "save-cursor", 0},
+       {ESC "8", "restore-cursor", 0},
+       {ESC "=", "application-keypad", 0},
+       {ESC ">", "normal-keypad", 0},
+       {ESC "D", "index", 0},
+       {ESC "E", "next-line", 0},
+       {ESC "F", "cursor-lower-left", 0},
+       {ESC "H", "tab-set", 0},
+       {ESC "M", "reverse-index", 0},
+       /* {ESC "N", "single-shift-g2", 0}, */
+       /* {ESC "O", "single-shift-g3", 0}, */
+       {ESC "P%s" ESC "\\", "device-control-string", 0},
+       {ESC "V", "start-of-guarded-area", 0},
+       {ESC "W", "end-of-guarded-area", 0},
+       {ESC "X", "start-of-string", 0},
+       {ESC "\\", "end-of-string", 0},
+       {ESC "Z", "return-terminal-id", 0},
+       {ESC "c", "full-reset", 0},
+       {ESC "l", "memory-lock", 0},
+       {ESC "m", "memory-unlock", 0},
+       /* {ESC "n", "invoke-g2-character-set", 0}, */
+       /* {ESC "o", "invoke-g3-character-set", 0}, */
+       /* {ESC "|", "invoke-g3-character-set-as-gr", 0}, */
+       /* {ESC "}", "invoke-g2-character-set-as-gr", 0}, */
+       /* {ESC "~", "invoke-g1-character-set-as-gr", 0}, */
+
+       /* APC stuff omitted. */
+
+       /* DCS stuff omitted. */
+
+       {CSI "@", "insert-blank-characters", 0},
+       {CSI "%d@", "insert-blank-characters", 0},
+       {CSI "A", "cursor-up", 0},
+       {CSI "%dA", "cursor-up", 0},
+       {CSI "B", "cursor-down", 0},
+       {CSI "%dB", "cursor-down", 0},
+       {CSI "C", "cursor-forward", 0},
+       {CSI "%dC", "cursor-forward", 0},
+       {CSI "D", "cursor-backward", 0},
+       {CSI "%dD", "cursor-backward", 0},
+       {CSI "E", "cursor-next-line", 0},
+       {CSI "%dE", "cursor-next-line", 0},
+       {CSI "F", "cursor-preceding-line", 0},
+       {CSI "%dF", "cursor-preceding-line", 0},
+       {CSI "G", "cursor-character-absolute", 0},
+       {CSI "%dG", "cursor-character-absolute", 0},
+       {CSI ";H", "cursor-position", 0},
+       {CSI "%dH", "cursor-position", 0},
+       {CSI "%d;H", "cursor-position", 0},
+       {CSI ";%dH", "cursor-position", 0},
+       {CSI "%d;%dH", "cursor-position", 0},
+       {CSI "I", "cursor-forward-tabulation", 0},
+       {CSI "J", "erase-in-display", 0},
+       {CSI "%dJ", "erase-in-display", 0},
+       {CSI "?J", "selective-erase-in-display", 0},
+       {CSI "?%dJ", "selective-erase-in-display", 0},
+       {CSI "K", "erase-in-line", 0},
+       {CSI "%dK", "erase-in-line", 0},
+       {CSI "?K", "selective-erase-in-line", 0},
+       {CSI "?%dK", "selective-erase-in-line", 0},
+       {CSI "L", "insert-lines", 0},
+       {CSI "%dL", "insert-lines", 0},
+       {CSI "M", "delete-lines", 0},
+       {CSI "%dM", "delete-lines", 0},
+       {CSI "P", "delete-characters", 0},
+       {CSI "%dP", "delete-characters", 0},
+       {CSI "S", "scroll-up", 0},
+       {CSI "%dS", "scroll-up", 0},
+       {CSI "T", "scroll-down", 0},
+       {CSI "%dT", "scroll-down", 0},
+       {CSI "%d;%d;%d;%d;%dT", "initiate-hilite-mouse-tracking", 0},
+       {CSI "X", "erase-characters", 0},
+       {CSI "%dX", "erase-characters", 0},
+       {CSI "Z", "cursor-back-tab", 0},
+       {CSI "%dZ", "cursor-back-tab", 0},
+
+       {CSI "`", "character-position-absolute", 0},
+       {CSI "%d`", "character-position-absolute", 0},
+       {CSI "b", "repeat", 0},
+       {CSI "%db", "repeat", 0},
+       {CSI "c", "send-primary-device-attributes", 0},
+       {CSI "%dc", "send-primary-device-attributes", 0},
+       {CSI ">c", "send-secondary-device-attributes", 0},
+       {CSI ">%dc", "send-secondary-device-attributes", 0},
+       {CSI "=c", "send-tertiary-device-attributes", 0},
+       {CSI "=%dc", "send-tertiary-device-attributes", 0},
+       {CSI "?%mc", "linux-console-cursor-attributes", 0},
+       {CSI "d", "line-position-absolute", 0},
+       {CSI "%dd", "line-position-absolute", 0},
+       {CSI ";f", "horizontal-and-vertical-position", 0},
+       {CSI "%d;f", "horizontal-and-vertical-position", 0},
+       {CSI ";%df", "horizontal-and-vertical-position", 0},
+       {CSI "%d;%df", "horizontal-and-vertical-position", 0},
+       {CSI "g", "tab-clear", 0},
+       {CSI "%dg", "tab-clear", 0},
+
+       {CSI "%mh", "set-mode", 0},
+       {CSI "?%mh", "decset", 0},
+
+       {CSI "%mi", "media-copy", 0},
+       {CSI "?%mi", "dec-media-copy", 0},
+
+       {CSI "%ml", "reset-mode", 0},
+       {CSI "?%ml", "decreset", 0},
+
+       {CSI "%mm", "character-attributes", 0},
+
+       {CSI "%dn", "device-status-report", 0},
+       {CSI "?%dn", "dec-device-status-report", 0},
+       {CSI "!p", "soft-reset", 0},
+       {CSI "%d;%d\"p", "set-conformance-level", 0},
+       {CSI "%d\"q", "select-character-protection", 0},
+
+       {CSI "r", "set-scrolling-region", 0},
+       {CSI ";r", "set-scrolling-region", 0},
+       {CSI ";%dr", "set-scrolling-region-from-start", 0},
+       {CSI "%dr", "set-scrolling-region-to-end", 0},
+       {CSI "%d;r", "set-scrolling-region-to-end", 0},
+       {CSI "%d;%dr", "set-scrolling-region", 0},
+
+       {CSI "?%mr", "restore-mode", 0},
+       {CSI "s", "save-cursor", 0},
+       {CSI "?%ms", "save-mode", 0},
+       {CSI "u", "restore-cursor", 0},
+
+       {CSI "%mt", "window-manipulation", 0},
+
+       {CSI "%d;%d;%d;%dw", "enable-filter-rectangle", 0},
+       {CSI "%dx", "request-terminal-parameters", 0},
+       {CSI "%d;%d'z", "enable-locator-reporting", 0},
+       {CSI "%m'{", "select-locator-events", 0},
+       {CSI "%d'|", "request-locator-position", 0},
+
+       /* Set text parameters, BEL-terminated versions. */
+       {OSC ";%s" BEL, "set-icon-and-window-title", 0}, /* undocumented default */
+       {OSC "0;%s" BEL, "set-icon-and-window-title", 0},
+       {OSC "1;%s" BEL, "set-icon-title", 0},
+       {OSC "2;%s" BEL, "set-window-title", 0},
+       {OSC "3;%s" BEL, "set-xproperty", 0},
+       {OSC "4;%s" BEL, "change-color", 0},
+       {OSC "10;%s" BEL, "change-foreground-colors", 0},
+       {OSC "11;%s" BEL, "change-background-colors", 0},
+       {OSC "12;%s" BEL, "change-cursor-colors", 0},
+       {OSC "13;%s" BEL, "change-mouse-cursor-foreground-colors", 0},
+       {OSC "14;%s" BEL, "change-mouse-cursor-foreground-colors", 0},
+       {OSC "15;%s" BEL, "change-tek-background-colors", 0},
+       {OSC "16;%s" BEL, "change-tek-background-colors", 0},
+       {OSC "17;%s" BEL, "change-highlight-colors", 0},
+       {OSC "46;%s" BEL, "change-logfile", 0},
+       {OSC "50;#%d" BEL, "change-font-number", 0},
+       {OSC "50;%s" BEL, "change-font-name", 0},
+
+       /* Set text parameters, ST-terminated versions. */
+       {OSC ";%s" ST, "set-icon-and-window-title", 0}, /* undocumented default */
+       {OSC "0;%s" ST, "set-icon-and-window-title", 0},
+       {OSC "1;%s" ST, "set-icon-title", 0},
+       {OSC "2;%s" ST, "set-window-title", 0},
+       {OSC "3;%s" ST, "set-xproperty", 0},
+       {OSC "4;%s" ST, "change-color", 0},
+       {OSC "10;%s" ST, "change-foreground-colors", 0},
+       {OSC "11;%s" ST, "change-background-colors", 0},
+       {OSC "12;%s" ST, "change-cursor-colors", 0},
+       {OSC "13;%s" ST, "change-mouse-cursor-foreground-colors", 0},
+       {OSC "14;%s" ST, "change-mouse-cursor-foreground-colors", 0},
+       {OSC "15;%s" ST, "change-tek-background-colors", 0},
+       {OSC "16;%s" ST, "change-tek-background-colors", 0},
+       {OSC "17;%s" ST, "change-highlight-colors", 0},
+       {OSC "46;%s" ST, "change-logfile", 0},
+       {OSC "50;#%d" ST, "change-font-number", 0},
+       {OSC "50;%s" ST, "change-font-name", 0},
+
+       /* These may be bogus, I can't find docs for them anywhere (#104154). */
+       {OSC "21;%s" BEL, "set-text-property-21", 0},
+       {OSC "2L;%s" BEL, "set-text-property-2L", 0},
+       {OSC "21;%s" ST, "set-text-property-21", 0},
+       {OSC "2L;%s" ST, "set-text-property-2L", 0},
+
+       {NULL, NULL, 0},
+};
+
+#if 0
+/**
+ * vte_capability_init:
+ *
+ * Initializes the vte_terminal_capability_strings and
+ * vte_xterm_capability_strings structures used by the terminal.  Can
+ * be called multiple times without ill effect.
+ *
+ * Returns: void
+ */
+
+void
+_vte_capability_init(void)
+{
+       unsigned int i;
+       for (i = 0; _vte_terminal_capability_strings[i].capability[0]; i++) {
+               const char *tmp;
+               GQuark quark;
+               tmp = _vte_terminal_capability_strings[i].capability;
+               quark = g_quark_from_static_string(tmp);
+               _vte_terminal_capability_strings[i].quark = quark;
+       }
+       for (i = 0; i < G_N_ELEMENTS(_vte_xterm_capability_strings); i++) {
+               const char *tmp;
+               GQuark quark;
+               tmp = _vte_xterm_capability_strings[i].value;
+               if (tmp != NULL) {
+                       quark = g_quark_from_static_string(tmp);
+                       _vte_xterm_capability_strings[i].quark = quark;
+               }
+       }
+}
+#endif
diff --git a/vte/src/caps.h b/vte/src/caps.h
new file mode 100644
index 0000000..e8d1118
--- /dev/null
+++ b/vte/src/caps.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_caps_h_included
+#define vte_caps_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define _VTE_CAP_ESC "\033"            /* Escape */
+#define _VTE_CAP_CSI _VTE_CAP_ESC "["  /* Control Sequence Introducer */
+#define _VTE_CAP_ST  _VTE_CAP_ESC "\\" /* String Terminator */
+#define _VTE_CAP_OSC _VTE_CAP_ESC "]"  /* Operating System Command */
+#define _VTE_CAP_PM  _VTE_CAP_ESC "^"  /* Privacy Message */
+#define _VTE_CAP_APC _VTE_CAP_ESC "_"  /* Application Program Command */
+#define _VTE_CAP_SS2 _VTE_CAP_ESC "N"  /* Single-shift to G2 */
+#define _VTE_CAP_SS3 _VTE_CAP_ESC "O"  /* Single-shift to G3 */
+
+/* A NULL-terminated list of capability strings which have string values,
+ * which means they're either key sequences or commands. */
+struct _vte_capability_quark {
+       const char capability[4];
+       gboolean key;
+       GQuark quark;
+};
+struct _vte_capability_string {
+       const char *code;
+       const char *value;
+       GQuark quark;
+};
+
+/* The known capability strings in termcap entries, terminated by NULLs. */
+extern struct _vte_capability_quark _vte_terminal_capability_strings[];
+
+/* The xterm-specific terminal control strings, terminated by NULLs. */
+extern struct _vte_capability_string _vte_xterm_capability_strings[];
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/check-doc-syntax.sh b/vte/src/check-doc-syntax.sh
new file mode 100755
index 0000000..81f76be
--- /dev/null
+++ b/vte/src/check-doc-syntax.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+LC_ALL=C
+export LC_ALL
+
+prefix=vte
+PREFIX=VTE
+
+if grep --version 2>/dev/null | grep GNU >/dev/null; then
+       :
+else
+       echo "GNU grep not found; skipping test"
+       exit 0
+fi
+
+test -z "$srcdir" && srcdir=.
+stat=0
+
+echo Checking documentation for incorrect syntax
+
+cd "$srcdir"
+
+# Note: this test is also run from doc/public/ to check the SGML files
+
+if test "x$SGML_DOCS" = x; then
+    FILES=$all_source_files
+    if test "x$FILES" = x; then
+        FILES=`find . -name "$prefix*.h" -or -name "$prefix*.c"`
+    fi
+fi
+
+enum_regexp="\([^%@']\|^\)\<\(FALSE\|TRUE\|NULL\|${PREFIX}_[0-9A-Z_]*\)\($\|[^(A-Za-z0-9_]\)"
+if test "x$SGML_DOCS" = x; then
+       enum_regexp='^[^:]*:[/ ][*]\(\|[ \t].*\)'$enum_regexp\($\|[^:]\)
+fi
+if echo $FILES | xargs grep . /dev/null | sed -e '/<programlisting>/,/<\/programlisting>/d' | grep 
"$enum_regexp" | grep -v '#####'; then
+       stat=1
+       echo Error: some macros in the docs are not prefixed by percent sign.
+       echo Fix this by searching for the following regexp in the above files:
+       echo "  '$enum_regexp'"
+fi >&2
+
+type_regexp="\( .*[^#']\| \|^\)\<$prefix[0-9a-z_]*_t\>\($\|[^:]$\|[^:].\)"
+if test "x$SGML_DOCS" = x; then
+       type_regexp='^[^:]*:[/ ][*]'$type_regexp
+else
+       type_regexp='\(.'$type_regexp'\)\|\('$type_regexp'.\)'
+fi
+
+if echo $FILES | xargs grep . /dev/null | sed -e '/<programlisting>/,/<\/programlisting>/d' | grep 
"$type_regexp" | grep -v '#####'; then
+       stat=1
+       echo Error: some type names in the docs are not prefixed by hash sign,
+       echo neither are the only token in the doc line followed by colon.
+       echo Fix this by searching for the following regexp in the above files:
+       echo "  '$type_regexp'"
+fi >&2
+
+func_regexp="\([^#']\|^\)\<\(${prefix}_[][<>/0-9a-z_]*\>[^][<>(]\)"
+if test "x$SGML_DOCS" = x; then
+       func_regexp='^[^:]*:[/ ][*]\(\|[ \t].*\)'$func_regexp
+fi
+
+# We need to filter out gtk-doc markup errors for program listings.
+if echo $FILES | xargs grep . /dev/null | sed -e '/<programlisting>/,/<\/programlisting>/d' | grep 
"$func_regexp" | grep -v '^[^:]*: [*] [a-z_0-9]*:$' | grep -v '#####'; then
+       stat=1
+       echo Error: some function names in the docs are not followed by parentheses.
+       echo Fix this by searching for the following regexp in the above files:
+       echo "  '$func_regexp'"
+fi >&2
+
+note_regexp='\<NOTE\>'
+if echo $FILES | xargs grep "$note_regexp" /dev/null; then
+       stat=1
+       echo Error: some source files contain the string 'NOTE'.
+       echo Be civil and replace it by 'Note' please.
+fi >&2
+
+exit $stat
diff --git a/vte/src/debug.c b/vte/src/debug.c
new file mode 100644
index 0000000..54997b9
--- /dev/null
+++ b/vte/src/debug.c
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2002,2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+
+#include <glib.h>
+#include "debug.h"
+
+VteDebugFlags _vte_debug_flags;
+
+void
+_vte_debug_init(void)
+{
+#ifdef VTE_DEBUG
+  const GDebugKey keys[] = {
+    { "misc",         VTE_DEBUG_MISC         },
+    { "io",           VTE_DEBUG_IO           },
+    { "adj",          VTE_DEBUG_ADJ          },
+    { "updates",      VTE_DEBUG_UPDATES      },
+    { "events",       VTE_DEBUG_EVENTS       },
+    { "parse",        VTE_DEBUG_PARSE        },
+    { "signals",      VTE_DEBUG_SIGNALS      },
+    { "selection",    VTE_DEBUG_SELECTION    },
+    { "substitution", VTE_DEBUG_SUBSTITUTION },
+    { "ring",         VTE_DEBUG_RING         },
+    { "pty",          VTE_DEBUG_PTY          },
+    { "cursor",       VTE_DEBUG_CURSOR       },
+    { "keyboard",     VTE_DEBUG_KEYBOARD     },
+    { "lifecycle",    VTE_DEBUG_LIFECYCLE    },
+    { "trie",         VTE_DEBUG_TRIE         },
+    { "work",         VTE_DEBUG_WORK         },
+    { "cells",        VTE_DEBUG_CELLS        },
+    { "timeout",      VTE_DEBUG_TIMEOUT      },
+    { "draw",         VTE_DEBUG_DRAW         },
+    { "ally",         VTE_DEBUG_ALLY         },
+    { "pangocairo",   VTE_DEBUG_PANGOCAIRO   },
+    { "widget-size",  VTE_DEBUG_WIDGET_SIZE  },
+    { "bg",           VTE_DEBUG_BG           }
+  };
+
+  _vte_debug_flags = g_parse_debug_string (g_getenv("VTE_DEBUG"),
+                                           keys, G_N_ELEMENTS (keys));
+  _vte_debug_print(0xFFFFFFFF, "VTE debug flags = %x\n", _vte_debug_flags);
+#endif /* VTE_DEBUG */
+}
diff --git a/vte/src/debug.h b/vte/src/debug.h
new file mode 100644
index 0000000..eee72cb
--- /dev/null
+++ b/vte/src/debug.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_debug_h_included
+#define vte_debug_h_included
+
+#include <config.h>
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+       VTE_DEBUG_MISC          = 1 << 0,
+       VTE_DEBUG_PARSE         = 1 << 1,
+       VTE_DEBUG_IO            = 1 << 2,
+       VTE_DEBUG_UPDATES       = 1 << 3,
+       VTE_DEBUG_EVENTS        = 1 << 4,
+       VTE_DEBUG_SIGNALS       = 1 << 5,
+       VTE_DEBUG_SELECTION     = 1 << 6,
+       VTE_DEBUG_SUBSTITUTION  = 1 << 7,
+       VTE_DEBUG_RING          = 1 << 8,
+       VTE_DEBUG_PTY           = 1 << 9,
+       VTE_DEBUG_CURSOR        = 1 << 10,
+       VTE_DEBUG_KEYBOARD      = 1 << 11,
+       VTE_DEBUG_LIFECYCLE     = 1 << 12,
+       VTE_DEBUG_TRIE          = 1 << 13,
+       VTE_DEBUG_WORK          = 1 << 14,
+       VTE_DEBUG_CELLS         = 1 << 15,
+       VTE_DEBUG_TIMEOUT       = 1 << 16,
+       VTE_DEBUG_DRAW          = 1 << 17,
+       VTE_DEBUG_ALLY          = 1 << 18,
+       VTE_DEBUG_ADJ           = 1 << 19,
+       VTE_DEBUG_PANGOCAIRO    = 1 << 20,
+       VTE_DEBUG_WIDGET_SIZE   = 1 << 21,
+        VTE_DEBUG_BG            = 1 << 22
+} VteDebugFlags;
+
+void _vte_debug_init(void);
+
+extern VteDebugFlags _vte_debug_flags;
+static inline gboolean _vte_debug_on(VteDebugFlags flags) G_GNUC_CONST G_GNUC_UNUSED;
+
+static inline gboolean
+_vte_debug_on(VteDebugFlags flags)
+{
+       return (_vte_debug_flags & flags) == flags;
+}
+
+#ifdef VTE_DEBUG
+#define _VTE_DEBUG_IF(flags) if (G_UNLIKELY (_vte_debug_on (flags)))
+#else
+#define _VTE_DEBUG_IF(flags) if (0)
+#endif
+
+#if defined(__GNUC__) && G_HAVE_GNUC_VARARGS
+#define _vte_debug_print(flags, fmt, ...) \
+       G_STMT_START { _VTE_DEBUG_IF(flags) g_printerr(fmt, ##__VA_ARGS__); } G_STMT_END
+#else
+#include <stdarg.h>
+#include <glib/gstdio.h>
+static void _vte_debug_print(guint flags, const char *fmt, ...)
+{
+       _VTE_DEBUG_IF(flags) {
+               va_list  ap;
+               va_start (ap, fmt);
+               g_vfprintf (stderr, fmt, ap);
+               va_end (ap);
+       }
+}
+#endif
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/decset b/vte/src/decset
new file mode 100755
index 0000000..a68bfb7
--- /dev/null
+++ b/vte/src/decset
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+#  Set or reset DEC private modes.  You'll need the XTerm docs.
+#
+if [ "$#" -eq 0 ] ; then
+       echo usage: `basename $0` '[ -r | -s ] mode [...]'
+       exit
+fi
+char=h
+for arg in $@ ; do
+       case "$arg" in
+       -r) char=l ;;
+       -s) char=h ;;
+       *) echo -n -e '\033[?'${arg}${char}
+       esac
+done
diff --git a/vte/src/dumpkeys.c b/vte/src/dumpkeys.c
new file mode 100644
index 0000000..976eb5e
--- /dev/null
+++ b/vte/src/dumpkeys.c
@@ -0,0 +1,348 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif
+#include <sys/time.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include <unistd.h>
+#include <glib.h>
+
+#define ESC "\033"
+#define MODE_APPLICATION_KEYPAD                ESC "="
+#define MODE_NORMAL_KEYPAD             ESC ">"
+#define MODE_APPLICATION_CURSOR_KEYS   1
+#define MODE_SUN_FUNCTION_KEYS         1051
+#define MODE_HP_FUNCTION_KEYS          1052
+#define MODE_XTERM_FUNCTION_KEYS       1060
+#define MODE_VT220_FUNCTION_KEYS       1061
+#define MODE_ALTERNATE_SCREEN          1047
+
+enum {
+       normal = 0, application = 1
+} keypad_mode = normal, cursor_mode = normal;
+gboolean sun_fkeys = FALSE, hp_fkeys = FALSE,
+        xterm_fkeys = FALSE, vt220_fkeys = FALSE;
+struct termios original;
+
+/* Output the DEC private mode set sequence. */
+static void
+decset(int mode, gboolean value)
+{
+       g_print(ESC "[?%d%c", mode, value ? 'h' : 'l');
+}
+
+/* Move the cursor to the upper left corner of the screen. */
+static void
+home(void)
+{
+       g_print(ESC "[1;1H");
+}
+
+/* Clear the screen. */
+static void
+clear(void)
+{
+       g_print(ESC "[2J");
+       home();
+}
+
+/* Print the what-does-this-key-do help messages and current status. */
+static void
+print_help(void)
+{
+       g_print(ESC "[m");
+       home();
+       g_print(ESC "[K" "A - KEYPAD ");
+       if (keypad_mode == application) {
+               g_print("APPLICATION\r\n");
+       } else {
+               g_print("NORMAL\r\n");
+       }
+       g_print(ESC "[K" "B - CURSOR ");
+       if (cursor_mode == application) {
+               g_print("APPLICATION\r\n");
+       } else {
+               g_print("NORMAL\r\n");
+       }
+       g_print(ESC "[K" "C - SUN    ");
+       if (sun_fkeys) {
+               g_print("TRUE\r\n");
+       } else {
+               g_print("FALSE\r\n");
+       }
+       g_print(ESC "[K" "D - HP     ");
+       if (hp_fkeys) {
+               g_print("TRUE\r\n");
+       } else {
+               g_print("FALSE\r\n");
+       }
+       g_print(ESC "[K" "E - XTERM  ");
+       if (xterm_fkeys) {
+               g_print("TRUE\r\n");
+       } else {
+               g_print("FALSE\r\n");
+       }
+       g_print(ESC "[K" "F - VT220  ");
+       if (vt220_fkeys) {
+               g_print("TRUE\r\n");
+       } else {
+               g_print("FALSE\r\n");
+       }
+       g_print(ESC "[K" "R - RESET\r\n");
+       g_print(ESC "[K" "Q - QUIT\r\n");
+}
+
+/* Reset the scrolling region, so that the entire screen becomes
+ * addressable again. */
+static void
+reset_scrolling_region(void)
+{
+       g_print(ESC "[r");
+}
+
+/* Set the scrolling region, so that the help/status at the top of the
+ * screen doesn't scroll off. */
+static void
+set_scrolling_region(void)
+{
+       g_print(ESC "[10;24r");
+       g_print(ESC "[9;1H");
+}
+
+/* Save the current location of the cursor in the terminal's memory. */
+static void
+save_cursor(void)
+{
+       g_print(ESC "7");
+}
+
+/* Restore the cursor to the location stored in the terminal's memory. */
+static void
+restore_cursor(void)
+{
+       g_print(ESC "8");
+}
+
+/* Reset all of the keyboard modes. */
+static void
+reset(void)
+{
+       g_print(MODE_NORMAL_KEYPAD);
+       decset(MODE_APPLICATION_CURSOR_KEYS, FALSE);
+       decset(MODE_SUN_FUNCTION_KEYS, FALSE);
+       decset(MODE_HP_FUNCTION_KEYS, FALSE);
+       decset(MODE_XTERM_FUNCTION_KEYS, FALSE);
+       decset(MODE_VT220_FUNCTION_KEYS, FALSE);
+       reset_scrolling_region();
+       restore_cursor();
+}
+
+/* Cleanly exit. */
+G_GNUC_NORETURN static void
+sigint_handler(int signum)
+{
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &original) != 0) {
+               perror("tcsetattr");
+       }
+       reset();
+       _exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+       char c;
+       guint i;
+       struct termios tcattr;
+       GByteArray *bytes;
+       gboolean done = FALSE, saved = FALSE;
+       struct timeval tv;
+       fd_set readset;
+
+       /* Start up: save the cursor location and put the terminal in
+        * raw mode. */
+       bytes = g_byte_array_new();
+       save_cursor();
+       if (tcgetattr(STDIN_FILENO, &tcattr) != 0) {
+               perror("tcgetattr");
+               return 1;
+       }
+       original = tcattr;
+       signal(SIGINT, sigint_handler);
+       /* Here we approximate what cfmakeraw() would do, for the benefit
+        * of systems which don't actually provide the function. */
+       tcattr.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP |
+                           INLCR | IGNCR | ICRNL | IXON);
+       tcattr.c_oflag &= ~(OPOST);
+       tcattr.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+       tcattr.c_cflag &= ~(CSIZE | PARENB);
+       tcattr.c_cflag |= CS8;
+#ifdef HAVE_CFMAKERAW
+       cfmakeraw(&tcattr);
+#endif
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &tcattr) != 0) {
+               perror("tcsetattr");
+               return 1;
+       }
+
+       /* Switch to the alternate screen, clear it, and reset the keyboard. */
+       decset(MODE_ALTERNATE_SCREEN, TRUE);
+       clear();
+       reset();
+
+       /* Main processing loop. */
+       while (!done) {
+               print_help();
+               set_scrolling_region();
+               if (saved) {
+                       restore_cursor();
+               }
+
+               /* Read a single byte. */
+               if (read(STDIN_FILENO, &c, 1) != 1) {
+                       done = TRUE;
+               }
+               switch (c) {
+               case 'A':
+               case 'a':
+                       keypad_mode = 1 - keypad_mode;
+                       if (keypad_mode == normal) {
+                               g_print(MODE_NORMAL_KEYPAD);
+                       } else {
+                               g_print(MODE_APPLICATION_KEYPAD);
+                       }
+                       break;
+               case 'B':
+               case 'b':
+                       cursor_mode = 1 - cursor_mode;
+                       decset(MODE_APPLICATION_CURSOR_KEYS,
+                              cursor_mode == application);
+                       break;
+               case 'C':
+               case 'c':
+                       sun_fkeys = !sun_fkeys;
+                       decset(MODE_SUN_FUNCTION_KEYS, sun_fkeys);
+                       break;
+               case 'D':
+               case 'd':
+                       hp_fkeys = !hp_fkeys;
+                       decset(MODE_HP_FUNCTION_KEYS, hp_fkeys);
+                       break;
+               case 'E':
+               case 'e':
+                       xterm_fkeys = !xterm_fkeys;
+                       decset(MODE_XTERM_FUNCTION_KEYS, xterm_fkeys);
+                       break;
+               case 'F':
+               case 'f':
+                       vt220_fkeys = !vt220_fkeys;
+                       decset(MODE_VT220_FUNCTION_KEYS, vt220_fkeys);
+                       break;
+               case 'R':
+               case 'r':
+                       keypad_mode = cursor_mode = normal;
+                       sun_fkeys = hp_fkeys = xterm_fkeys = vt220_fkeys = FALSE;
+                       reset();
+                       break;
+               case 'Q':
+               case 'q':
+                       done = TRUE;
+                       break;
+               case 0x0c: /* ^L */
+                       clear();
+                       if (saved) {
+                               restore_cursor();
+                               saved = FALSE;
+                       }
+                       break;
+               default:
+                       /* We get here if it's not one of the keys we care
+                        * about, so it might be a sequence. */
+                       if (saved) {
+                               restore_cursor();
+                       }
+                       g_byte_array_append(bytes, (const guint8 *) &c, 1);
+                       /* Wait for up to just under 1/50 second. */
+                       tv.tv_sec = 0;
+                       tv.tv_usec = 1000000 / 50;
+                       FD_ZERO(&readset);
+                       FD_SET(STDIN_FILENO, &readset);
+                       while (select(STDIN_FILENO + 1,
+                                     &readset, NULL, NULL, &tv) == 1) {
+                               if (read(STDIN_FILENO, &c, 1) == 1) {
+                                       g_byte_array_append(bytes, (const guint8 *) &c, 1);
+                               } else {
+                                       break;
+                               }
+                               tv.tv_sec = 0;
+                               tv.tv_usec = 1000000 / 50;
+                               FD_ZERO(&readset);
+                               FD_SET(STDIN_FILENO, &readset);
+                       }
+                       /* Clear this line, and print the sequence. */
+                       g_print(ESC "[K");
+                       for (i = 0; i < bytes->len; i++) {
+                               if (bytes->data[i] == 27) {
+                                       g_print("<ESC> ");
+                               } else
+                               if ((((guint8)bytes->data[i]) < 32) ||
+                                   (((guint8)bytes->data[i]) > 126)) {
+                                       g_print("<0x%02x> ", bytes->data[i]);
+                               } else {
+                                       g_print("`%c' ", bytes->data[i]);
+                               }
+                       }
+                       g_print("\r\n");
+                       g_byte_array_set_size(bytes, 0);
+                       save_cursor();
+                       saved = TRUE;
+                       break;
+               }
+               reset_scrolling_region();
+       }
+
+       decset(MODE_ALTERNATE_SCREEN, FALSE);
+
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &original) != 0) {
+               perror("tcsetattr");
+               return 1;
+       }
+
+       g_byte_array_free(bytes, TRUE);
+
+       reset();
+
+       return 0;
+}
diff --git a/vte/src/genkeysyms.py b/vte/src/genkeysyms.py
new file mode 100755
index 0000000..b99bd79
--- /dev/null
+++ b/vte/src/genkeysyms.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+
+import os, string, sys
+
+def scanheader(filename):
+       definitions = {}
+       file = open(filename, "r")
+       if file:
+               for line in file.readlines():
+                       if line[:12] == '#define GDK_':
+                               fields = string.split(line)
+                               fields[2] = string.lower(fields[2])
+                               if definitions.has_key(fields[2]):
+                                       definitions[fields[2]] = definitions[fields[2]] + ", " + fields[1]
+                               else:
+                                       definitions[fields[2]] = fields[1]
+               file.close()
+       for key in definitions.keys():
+               print '\tcase %s: return \"%s\";' % (key, definitions[key])
+
+print '\t/* this file is auto-generated -- do not edit */'
+
+if len(sys.argv) > 1:
+       for header in sys.argv[1:]:
+               scanheader(header)
+else:
+       scanheader("/usr/include/gtk-2.0/gdk/gdkkeysyms.h")
diff --git a/vte/src/interpret.c b/vte/src/interpret.c
new file mode 100644
index 0000000..782d05b
--- /dev/null
+++ b/vte/src/interpret.c
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2001,2002,2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "caps.h"
+#include "debug.h"
+#include "iso2022.h"
+#include "matcher.h"
+#include "vtetc.h"
+
+int
+main(int argc, char **argv)
+{
+       char *terminal = NULL;
+       struct _vte_matcher *matcher = NULL;
+       struct _vte_termcap *termcap = NULL;
+       GArray *array;
+       unsigned int i, j;
+       int l;
+       unsigned char buf[4096];
+       GValue *value;
+       int infile;
+       struct _vte_iso2022_state *subst;
+       const char *tmp;
+       GQuark quark;
+       GValueArray *values;
+
+       _vte_debug_init();
+
+       if (argc < 2) {
+               g_print("usage: %s terminal [file]\n", argv[0]);
+               return 1;
+       }
+
+       if ((argc > 2) && (strcmp(argv[2], "-") != 0)) {
+               infile = open (argv[2], O_RDONLY);
+               if (infile == -1) {
+                       g_print("error opening %s: %s\n", argv[2],
+                               strerror(errno));
+                       exit(1);
+               }
+       } else {
+               infile = 1;
+       }
+
+       g_type_init();
+       terminal = argv[1];
+       termcap = _vte_termcap_new(g_build_filename(TERMCAPDIR, terminal, NULL));
+       if (termcap == NULL) {
+               termcap = _vte_termcap_new("/etc/termcap");
+       }
+       array = g_array_new(FALSE, FALSE, sizeof(gunichar));
+
+       matcher = _vte_matcher_new(terminal, termcap);
+
+       subst = _vte_iso2022_state_new(NULL, NULL, NULL);
+
+       for (;;) {
+               l = read (infile, buf, sizeof (buf));
+               if (!l)
+                       break;
+               if (l == -1) {
+                       if (errno == EAGAIN)
+                               continue;
+                       exit (1);
+               }
+               g_array_set_size (array, 0);
+               _vte_iso2022_process(subst, buf, (unsigned int) l, array);
+
+               i = 0;
+               while (i <= array->len) {
+                       tmp = NULL;
+                       values = NULL;
+                       for (j = 1; j < (array->len - i); j++) {
+                               _vte_matcher_match(matcher,
+                                                  &g_array_index(array, gunichar, i),
+                                                  j,
+                                                  &tmp,
+                                                  NULL,
+                                                  &quark,
+                                                  &values);
+                               if ((tmp == NULL) || (strlen(tmp) > 0)) {
+                                       break;
+                               }
+                       }
+                       if (i + j == array->len) {
+                               break;
+                       }
+                       if (tmp == NULL) {
+                               gunichar c;
+                               c = g_array_index(array, gunichar, i);
+                               if (VTE_ISO2022_HAS_ENCODED_WIDTH(c)) {
+                                       c &= ~VTE_ISO2022_ENCODED_WIDTH_MASK;
+                               }
+                               if (c < 32) {
+                                       g_print("`^%c'\n", c + 64);
+                               } else
+                               if (c < 127) {
+                                       g_print("`%c'\n", c);
+                               } else {
+                                       g_print("`0x%x'\n", c);
+                               }
+                               i++;
+                               continue;
+                       }
+
+                       l = j;
+                       g_print("%s(", g_quark_to_string(quark));
+                       for (j = 0; (values != NULL) && (j < values->n_values); j++) {
+                               if (j > 0) {
+                                       g_print(", ");
+                               }
+                               value = g_value_array_get_nth(values, j);
+                               if (G_VALUE_HOLDS_LONG(value)) {
+                                       g_print("%ld", g_value_get_long(value));
+                               }
+                               if (G_VALUE_HOLDS_STRING(value)) {
+                                       g_print("`%s'",
+                                               g_value_get_string(value));
+                               }
+                               if (G_VALUE_HOLDS_POINTER(value)) {
+                                       g_print("`%ls'",
+                                               (wchar_t*)
+                                               g_value_get_pointer(value));
+                               }
+                       }
+                       if (values != NULL) {
+                               _vte_matcher_free_params_array(matcher, values);
+                       }
+                       g_print(")\n");
+                       i += l;
+               }
+       }
+       g_print("End of data.\n");
+
+       close (infile);
+
+       _vte_iso2022_state_free(subst);
+       g_array_free(array, TRUE);
+       _vte_termcap_free(termcap);
+       _vte_matcher_free(matcher);
+       return 0;
+}
diff --git a/vte/src/iso2022.c b/vte/src/iso2022.c
new file mode 100644
index 0000000..79a9e01
--- /dev/null
+++ b/vte/src/iso2022.c
@@ -0,0 +1,1831 @@
+/*
+ * Copyright (C) 2002,2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <glib.h>
+#include "debug.h"
+#include "buffer.h"
+#include "iso2022.h"
+#include "matcher.h"
+#include "vteconv.h"
+#include "vtetree.h"
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+#include <glib/gi18n-lib.h>
+
+#include <gtk/gtk.h>
+
+#if GTK_CHECK_VERSION (2, 90, 7)
+#define GDK_KEY(symbol) GDK_KEY_##symbol
+#else
+#include <gdk/gdkkeysyms.h>
+#define GDK_KEY(symbol) GDK_##symbol
+#endif
+
+/* Maps which jive with XTerm's ESC ()*+ ? sequences, RFC 1468.  Add the
+ * PC437 map because despite knowing that XTerm doesn't support it, certain
+ * applications try to use it anyway. */
+#define NARROW_MAPS    "012AB4C5RQKYE6ZH7=" "J" "U"
+/* Maps which jive with RFC 1468's ESC $ ? sequences. */
+#define WIDE_MAPS      "@B"
+/* Maps which jive with RFC 1557/1922/2237's ESC $ ()*+ ? sequences. */
+#define WIDE_GMAPS     "C" "AGHIJKLM" "D"
+/* Fudge factor we add to wide map identifiers to keep them distinct. */
+#define WIDE_FUDGE     0x100000
+/* An invalid codepoint. */
+#define INVALID_CODEPOINT 0xFFFD
+
+struct _vte_iso2022_map16 {
+       guint16 from, to;
+};
+
+struct _vte_iso2022_map32 {
+       guint32 from, to;
+};
+
+struct _vte_iso2022_block {
+       enum {
+               _vte_iso2022_cdata,
+               _vte_iso2022_preserve,
+               _vte_iso2022_control
+       } type;
+       gulong start, end;
+};
+
+struct _vte_iso2022_state {
+       gboolean nrc_enabled;
+       int current, override;
+       gunichar g[4];
+       const gchar *codeset, *native_codeset, *utf8_codeset, *target_codeset;
+       gint ambiguous_width;
+       VteConv conv;
+       _vte_iso2022_codeset_changed_cb_fn codeset_changed;
+       gpointer codeset_changed_data;
+       VteBuffer *buffer;
+};
+
+/* DEC Special Character and Line Drawing Set.  VT100 and higher (per XTerm
+ * docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_0[] = {
+       { 96, 0x25c6},  /* diamond */
+       {'a', 0x2592},  /* checkerboard */
+       {'b', 0x2409},  /* HT symbol */
+       {'c', 0x240c},  /* FF symbol */
+       {'d', 0x240d},  /* CR symbol */
+       {'e', 0x240a},  /* LF symbol */
+       {'f', 0x00b0},  /* degree */
+       {'g', 0x00b1},  /* plus/minus */
+       {'h', 0x2424},  /* NL symbol */
+       {'i', 0x240b},  /* VT symbol */
+       {'j', 0x2518},  /* downright corner */
+       {'k', 0x2510},  /* upright corner */
+       {'l', 0x250c},  /* upleft corner */
+       {'m', 0x2514},  /* downleft corner */
+       {'n', 0x253c},  /* cross */
+       {'o', 0x23ba},  /* scan line 1/9 */
+       {'p', 0x23bb},  /* scan line 3/9 */
+       {'q', 0x2500},  /* horizontal line (also scan line 5/9) */
+       {'r', 0x23bc},  /* scan line 7/9 */
+       {'s', 0x23bd},  /* scan line 9/9 */
+       {'t', 0x251c},  /* left t */
+       {'u', 0x2524},  /* right t */
+       {'v', 0x2534},  /* bottom t */
+       {'w', 0x252c},  /* top t */
+       {'x', 0x2502},  /* vertical line */
+       {'y', 0x2264},  /* <= */
+       {'z', 0x2265},  /* >= */
+       {'{', 0x03c0},  /* pi */
+       {'|', 0x2260},  /* not equal */
+       {'}', 0x00a3},  /* pound currency sign */
+       {'~', 0x00b7},  /* bullet */
+};
+/* United Kingdom.  VT100 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_A[] = {
+       {'$', GDK_KEY (sterling)},
+};
+/* US-ASCII (no conversions).  VT100 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_B[] = {
+       {0, 0},
+};
+/* Dutch. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_4[] = {
+       {'#',  GDK_KEY (sterling)},
+       {'@',  GDK_KEY (threequarters)},
+       {'[',  GDK_KEY (ydiaeresis)},
+       {'\\', GDK_KEY (onehalf)},
+       {']',  GDK_KEY (bar)}, /* FIXME? not in XTerm 170 */
+       {'{',  GDK_KEY (diaeresis)},
+       {'|',  0x192}, /* f with hook (florin) */ /* FIXME? not in XTerm 170 */
+       {'}',  GDK_KEY (onequarter)},
+       {'~',  GDK_KEY (acute)}
+};
+/* Finnish. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_C[] = {
+       {'[',  GDK_KEY (Adiaeresis)},
+       {'\\', GDK_KEY (Odiaeresis)},
+       {']',  GDK_KEY (Aring)},
+       {'^',  GDK_KEY (Udiaeresis)},
+       {'`',  GDK_KEY (eacute)},
+       {'{',  GDK_KEY (adiaeresis)},
+       {'|',  GDK_KEY (odiaeresis)},
+       {'}',  GDK_KEY (aring)},
+       {'~',  GDK_KEY (udiaeresis)},
+};
+/* French. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_R[] = {
+       {'#',  GDK_KEY (sterling)},
+       {'@',  GDK_KEY (agrave)},
+       {'[',  GDK_KEY (degree)},
+       {'\\', GDK_KEY (ccedilla)},
+       {']',  GDK_KEY (section)},
+       {'{',  GDK_KEY (eacute)},
+       {'|',  GDK_KEY (ugrave)},
+       {'}',  GDK_KEY (egrave)},
+       {'~',  GDK_KEY (diaeresis)},
+};
+/* French Canadian. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_Q[] = {
+       {'@',  GDK_KEY (agrave)},
+       {'[',  GDK_KEY (acircumflex)},
+       {'\\', GDK_KEY (ccedilla)},
+       {']',  GDK_KEY (ecircumflex)},
+       {'^',  GDK_KEY (icircumflex)},
+       {'`',  GDK_KEY (ocircumflex)},
+       {'{',  GDK_KEY (eacute)},
+       {'|',  GDK_KEY (ugrave)},
+       {'}',  GDK_KEY (egrave)},
+       {'~',  GDK_KEY (ucircumflex)},
+};
+/* German. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_K[] = {
+       {'@',  GDK_KEY (section)},
+       {'[',  GDK_KEY (Adiaeresis)},
+       {'\\', GDK_KEY (Odiaeresis)},
+       {']',  GDK_KEY (Udiaeresis)},
+       {'{',  GDK_KEY (adiaeresis)},
+       {'|',  GDK_KEY (odiaeresis)},
+       {'}',  GDK_KEY (udiaeresis)},
+       {'~',  GDK_KEY (ssharp)},
+};
+/* Italian. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_Y[] = {
+       {'#',  GDK_KEY (sterling)},
+       {'@',  GDK_KEY (section)},
+       {'[',  GDK_KEY (degree)},
+       {'\\', GDK_KEY (ccedilla)},
+       {']',  GDK_KEY (eacute)},
+       {'`',  GDK_KEY (ugrave)},
+       {'{',  GDK_KEY (agrave)},
+       {'|',  GDK_KEY (ograve)},
+       {'}',  GDK_KEY (egrave)},
+       {'~',  GDK_KEY (igrave)},
+};
+/* Norwegian and Danish. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_E[] = {
+       {'@',  GDK_KEY (Adiaeresis)},
+       {'[',  GDK_KEY (AE)},
+       {'\\', GDK_KEY (Ooblique)},
+       {']',  GDK_KEY (Aring)},
+       {'^',  GDK_KEY (Udiaeresis)},
+       {'`',  GDK_KEY (adiaeresis)},
+       {'{',  GDK_KEY (ae)},
+       {'|',  GDK_KEY (oslash)},
+       {'}',  GDK_KEY (aring)},
+       {'~',  GDK_KEY (udiaeresis)},
+};
+/* Spanish. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_Z[] = {
+       {'#',  GDK_KEY (sterling)},
+       {'@',  GDK_KEY (section)},
+       {'[',  GDK_KEY (exclamdown)},
+       {'\\', GDK_KEY (Ntilde)},
+       {']',  GDK_KEY (questiondown)},
+       {'{',  GDK_KEY (degree)},
+       {'|',  GDK_KEY (ntilde)},
+       {'}',  GDK_KEY (ccedilla)},
+};
+/* Swedish. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_H[] = {
+       {'@',  GDK_KEY (Eacute)},
+       {'[',  GDK_KEY (Adiaeresis)},
+       {'\\', GDK_KEY (Odiaeresis)},
+       {']',  GDK_KEY (Aring)},
+       {'^',  GDK_KEY (Udiaeresis)},
+       {'`',  GDK_KEY (eacute)},
+       {'{',  GDK_KEY (adiaeresis)},
+       {'|',  GDK_KEY (odiaeresis)},
+       {'}',  GDK_KEY (aring)},
+       {'~',  GDK_KEY (udiaeresis)},
+};
+/* Swiss. VT220 and higher (per XTerm docs). */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_equal[] = {
+       {'#',  GDK_KEY (ugrave)},
+       {'@',  GDK_KEY (agrave)},
+       {'[',  GDK_KEY (eacute)},
+       {'\\', GDK_KEY (ccedilla)},
+       {']',  GDK_KEY (ecircumflex)},
+       {'^',  GDK_KEY (icircumflex)},
+       {'_',  GDK_KEY (egrave)},
+       {'`',  GDK_KEY (ocircumflex)},
+       {'{',  GDK_KEY (adiaeresis)},
+       {'|',  GDK_KEY (odiaeresis)},
+       {'}',  GDK_KEY (udiaeresis)},
+       {'~',  GDK_KEY (ucircumflex)},
+};
+/* Codepage 437. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_U[] = {
+#include "unitable.CP437"
+};
+
+/* Japanese.  JIS X 0201-1976 ("Roman" set), per RFC 1468/2237. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_J[] = {
+#include "unitable.JIS0201"
+};
+/* Japanese.  JIS X 0208-1978, per RFC 1468/2237. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_wide_at[] = {
+#include "unitable.JIS0208"
+};
+/* Chinese.  GB 2312-80, per RFC 1922. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_wide_A[] = {
+#include "unitable.GB2312"
+};
+/* Japanese.  JIS X 0208-1983, per RFC 1468/2237. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_wide_B[] = {
+#include "unitable.JIS0208"
+};
+/* Korean.  KS X 1001 (formerly KS C 5601), per Ken Lunde's
+ * CJKV_Information_Processing. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_wide_C[] = {
+#include "unitable.KSX1001"
+};
+/* Japanese.  JIS X 0212-1990, per RFC 2237. */
+static const struct _vte_iso2022_map16 _vte_iso2022_map_wide_D[] = {
+#include "unitable.JIS0212"
+};
+/* Chinese.  CNS 11643-plane-1, per RFC 1922. */
+static const struct _vte_iso2022_map32 _vte_iso2022_map_wide_G[] = {
+#include "unitable.CNS11643"
+};
+
+static gint
+_vte_direct_compare(gconstpointer a, gconstpointer b)
+{
+       return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b);
+}
+
+/* If we have the encoding, decide how wide an ambiguously-wide character is
+ * based on the encoding.  This is basically what GNU libc does, and it agrees
+ * with my reading of Unicode UAX 11, so.... */
+static int
+_vte_iso2022_ambiguous_width(struct _vte_iso2022_state *state)
+{
+       const char wide_codelist[][10] = {
+               "big5",
+               "big5hkscs",
+               "euccn",
+               "eucjp",
+               "euckr",
+               "euctw",
+               "gb18030",
+               "gb2312",
+               "gbk",
+               "shiftjis",
+               "tcvn",
+       };
+       gsize i, j;
+       char codeset[16];
+
+       /* Catch weirdo cases. */
+       if ((state->codeset == NULL) || (state->codeset[0] == '\0')) {
+               return 1;
+       }
+
+       /* Sort-of canonify the encoding name. */
+       i = j = 0;
+       for (i = 0; state->codeset[i] != '\0'; i++) {
+               if (g_ascii_isalnum(state->codeset[i]))
+                       codeset[j++] = g_ascii_tolower(state->codeset[i]);
+
+               if (j >= sizeof(codeset) - 1)
+                       break;
+       }
+       codeset[j] = '\0';
+
+       /* Check for the name in the list. */
+       for (i = 0; i < G_N_ELEMENTS(wide_codelist); i++) {
+               if (strcmp(codeset, wide_codelist[i]) == 0) {
+                       return 2;
+               }
+       }
+
+       /*
+        * Decide the ambiguous width according to user preference if
+        * current locale is UTF-8.
+        */
+       if (strcmp (codeset, "utf8") == 0) {
+         const char *env = g_getenv ("VTE_CJK_WIDTH");
+         if (env && (g_ascii_strcasecmp (env, "wide")==0 || g_ascii_strcasecmp (env, "1")==0))
+           return 2;
+       }
+
+       /* Not in the list => not wide. */
+       return 1;
+}
+
+static inline gboolean
+_vte_iso2022_is_ambiguous(gunichar c)
+{
+       if (G_LIKELY (c < 0x80))
+               return FALSE;
+       if (G_UNLIKELY (g_unichar_iszerowidth (c)))
+               return FALSE;
+       return G_UNLIKELY (!g_unichar_iswide (c) && g_unichar_iswide_cjk (c));
+}
+
+int
+_vte_iso2022_unichar_width(struct _vte_iso2022_state *state,
+                          gunichar c)
+{
+       if (G_LIKELY (c < 0x80))
+               return 1;
+       if (G_UNLIKELY (g_unichar_iszerowidth (c)))
+               return 0;
+       if (G_UNLIKELY (g_unichar_iswide (c)))
+               return 2;
+       if (G_LIKELY (state->ambiguous_width == 1))
+               return 1;
+       if (G_UNLIKELY (g_unichar_iswide_cjk (c)))
+               return 2;
+       return 1;
+}
+
+static GHashTable *
+_vte_iso2022_map_init16(const struct _vte_iso2022_map16 *map, gssize length)
+{
+       GHashTable *ret;
+       int i;
+       if (length == 0) {
+               return NULL;
+       }
+       ret = g_hash_table_new(NULL, NULL);
+       for (i = 0; i < length; i++) {
+               g_hash_table_insert(ret,
+                             GINT_TO_POINTER((unsigned int) map[i].from),
+                             GINT_TO_POINTER((unsigned int) map[i].to));
+       }
+       return ret;
+}
+
+static GHashTable *
+_vte_iso2022_map_init32(const struct _vte_iso2022_map32 *map, gssize length)
+{
+       GHashTable *ret;
+       int i;
+       if (length == 0) {
+               return NULL;
+       }
+       ret = g_hash_table_new(NULL, NULL);
+       for (i = 0; i < length; i++) {
+               g_hash_table_insert(ret,
+                             GINT_TO_POINTER((unsigned int) map[i].from),
+                             GINT_TO_POINTER((unsigned int) map[i].to));
+       }
+       return ret;
+}
+
+static void
+_vte_iso2022_map_get(gunichar mapname,
+                    GHashTable **_map, guint *bytes_per_char, guint *force_width,
+                    gulong *or_mask, gulong *and_mask)
+{
+       static VteTree *maps = NULL;
+       gint bytes = 0, width = 0;
+       GHashTable *map = NULL;
+       gboolean new_map = FALSE;
+       gsize i;
+
+       if (or_mask) {
+               *or_mask = 0;
+       }
+       if (and_mask) {
+               *and_mask = (~(0));
+       }
+
+       /* Make sure we have a map, erm, map. */
+       if (maps == NULL) {
+               maps = _vte_tree_new(_vte_direct_compare);
+       }
+
+       /* Check for a cached map for this charset. */
+       map = _vte_tree_lookup(maps, GINT_TO_POINTER(mapname));
+       new_map = map == NULL;
+
+       /* Construct a new one. */
+       switch (mapname) {
+       case '0':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_0,
+                                           G_N_ELEMENTS(_vte_iso2022_map_0));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'A':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_A,
+                                           G_N_ELEMENTS(_vte_iso2022_map_A));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case '1': /* treated as an alias in xterm */
+       case '2': /* treated as an alias in xterm */
+       case 'B':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_B,
+                                           G_N_ELEMENTS(_vte_iso2022_map_B));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case '4':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_4,
+                                           G_N_ELEMENTS(_vte_iso2022_map_4));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'C':
+       case '5':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_C,
+                                           G_N_ELEMENTS(_vte_iso2022_map_C));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'R':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_R,
+                                           G_N_ELEMENTS(_vte_iso2022_map_R));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'Q':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_Q,
+                                           G_N_ELEMENTS(_vte_iso2022_map_Q));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'K':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_K,
+                                           G_N_ELEMENTS(_vte_iso2022_map_K));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'Y':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_Y,
+                                           G_N_ELEMENTS(_vte_iso2022_map_Y));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'E':
+       case '6':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_E,
+                                           G_N_ELEMENTS(_vte_iso2022_map_E));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'Z':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_Z,
+                                           G_N_ELEMENTS(_vte_iso2022_map_Z));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'H':
+       case '7':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_H,
+                                           G_N_ELEMENTS(_vte_iso2022_map_H));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case '=':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_equal,
+                                           G_N_ELEMENTS(_vte_iso2022_map_equal));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'U':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_U,
+                                           G_N_ELEMENTS(_vte_iso2022_map_U));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case 'J':
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_J,
+                                           G_N_ELEMENTS(_vte_iso2022_map_J));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       case '@' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_wide_at,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_at));
+               }
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               *and_mask = 0xf7f7f;
+               break;
+       case 'A' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_wide_A,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_A));
+               }
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               *and_mask = 0xf7f7f;
+               break;
+       case 'B' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_wide_B,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_B));
+               }
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               *and_mask = 0xf7f7f;
+               break;
+       case 'C' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_wide_C,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_C));
+               }
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               *and_mask = 0xf7f7f;
+               break;
+       case 'D' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_wide_D,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_D));
+               }
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               *and_mask = 0xf7f7f;
+               break;
+       case 'G' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x10000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'H' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x20000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'I' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x30000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'J' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x40000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'K' + WIDE_FUDGE:
+               if (map == NULL) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x50000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'L' + WIDE_FUDGE:
+               if (G_UNLIKELY (map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x60000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       case 'M' + WIDE_FUDGE:
+               if (G_UNLIKELY(map == NULL)) {
+                       map = _vte_iso2022_map_init32(_vte_iso2022_map_wide_G,
+                                           G_N_ELEMENTS(_vte_iso2022_map_wide_G));
+               }
+               /* Return the plane number as part of the "or" mask. */
+               g_assert(or_mask != NULL);
+               *or_mask = 0x70000;
+               *and_mask = 0xf7f7f;
+               width = 2; /* CJKV expects 2 bytes -> 2 columns */
+               bytes = 2;
+               break;
+       default:
+               /* No such map.  Set up a ISO-8859-1 to UCS-4 map. */
+               if (G_UNLIKELY (map == NULL)) {
+                       struct _vte_iso2022_map16 _vte_iso2022_map_NUL[256];
+                       for (i = 0; i < G_N_ELEMENTS(_vte_iso2022_map_NUL); i++) {
+                               _vte_iso2022_map_NUL[i].from = (i & 0xff);
+                               _vte_iso2022_map_NUL[i].to = (i & 0xff);
+                       }
+                       map = _vte_iso2022_map_init16(_vte_iso2022_map_NUL,
+                                           G_N_ELEMENTS(_vte_iso2022_map_NUL));
+               }
+               width = 1;
+               bytes = 1;
+               break;
+       }
+       /* Save the new map. */
+       if (G_UNLIKELY(new_map && map != NULL)) {
+               _vte_tree_insert(maps, GINT_TO_POINTER(mapname), map);
+       }
+       /* Return. */
+       if (_map) {
+               *_map = map;
+       }
+       if (bytes_per_char) {
+               *bytes_per_char = bytes;
+       }
+       if (force_width) {
+               *force_width = width;
+       }
+}
+
+int
+_vte_iso2022_get_encoded_width(gunichar c)
+{
+       int width;
+       width = (c & VTE_ISO2022_ENCODED_WIDTH_MASK) >> VTE_ISO2022_ENCODED_WIDTH_BIT_OFFSET;
+       return CLAMP(width, 0, 2);
+}
+
+static gunichar
+_vte_iso2022_set_encoded_width(gunichar c, int width)
+{
+       width = CLAMP(width, 0, 2);
+       c &= ~(VTE_ISO2022_ENCODED_WIDTH_MASK);
+       c |= (width << VTE_ISO2022_ENCODED_WIDTH_BIT_OFFSET);
+       return c;
+}
+
+struct _vte_iso2022_state *
+_vte_iso2022_state_new(const char *native_codeset,
+                      _vte_iso2022_codeset_changed_cb_fn fn,
+                      gpointer data)
+{
+       struct _vte_iso2022_state *state;
+       state = g_slice_new0(struct _vte_iso2022_state);
+       state->nrc_enabled = TRUE;
+       state->current = 0;
+       state->override = -1;
+       state->g[0] = 'B';
+       state->g[1] = 'B';
+       state->g[2] = 'B';
+       state->g[3] = 'B';
+       state->codeset = native_codeset;
+       state->native_codeset = state->codeset;
+       if (native_codeset == NULL) {
+               g_get_charset(&state->codeset);
+               state->native_codeset = state->codeset;
+       }
+       state->utf8_codeset = "UTF-8";
+       state->target_codeset = VTE_CONV_GUNICHAR_TYPE;
+       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                       "Native codeset \"%s\", currently %s\n",
+                       state->native_codeset, state->codeset);
+       state->conv = _vte_conv_open(state->target_codeset, state->codeset);
+       state->codeset_changed = fn;
+       state->codeset_changed_data = data;
+       state->buffer = _vte_buffer_new();
+       if (state->conv == VTE_INVALID_CONV) {
+               g_warning(_("Unable to convert characters from %s to %s."),
+                         state->codeset, state->target_codeset);
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "Using UTF-8 instead.\n");
+               state->codeset = state->utf8_codeset;
+               state->conv = _vte_conv_open(state->target_codeset,
+                                            state->codeset);
+               if (state->conv == VTE_INVALID_CONV) {
+                       g_error(_("Unable to convert characters from %s to %s."),
+                               state->codeset, state->target_codeset);
+               }
+       }
+       state->ambiguous_width = _vte_iso2022_ambiguous_width(state);
+       return state;
+}
+
+void
+_vte_iso2022_state_free(struct _vte_iso2022_state *state)
+{
+       _vte_buffer_free(state->buffer);
+       if (state->conv != VTE_INVALID_CONV) {
+               _vte_conv_close(state->conv);
+       }
+       g_slice_free(struct _vte_iso2022_state, state);
+}
+
+void
+_vte_iso2022_state_set_codeset(struct _vte_iso2022_state *state,
+                              const char *codeset)
+{
+       VteConv conv;
+
+       g_return_if_fail(state != NULL);
+       g_return_if_fail(codeset != NULL);
+       g_return_if_fail(strlen(codeset) > 0);
+
+       _vte_debug_print(VTE_DEBUG_SUBSTITUTION, "%s\n", codeset);
+       conv = _vte_conv_open(state->target_codeset, codeset);
+       if (conv == VTE_INVALID_CONV) {
+               g_warning(_("Unable to convert characters from %s to %s."),
+                         codeset, state->target_codeset);
+               return;
+       }
+       if (state->conv != VTE_INVALID_CONV) {
+               _vte_conv_close(state->conv);
+       }
+       state->codeset = g_intern_string (codeset);
+       state->conv = conv;
+       state->ambiguous_width = _vte_iso2022_ambiguous_width (state);
+}
+
+const char *
+_vte_iso2022_state_get_codeset(struct _vte_iso2022_state *state)
+{
+       return state->codeset;
+}
+
+static const guchar *
+_vte_iso2022_find_nextctl(const guchar *p, const guchar * const q)
+{
+       do {
+               switch (*p) {
+                       case '\033':
+                       case '\n':
+                       case '\r':
+                       case '\016':
+                       case '\017':
+#ifdef VTE_ISO2022_8_BIT_CONTROLS
+                   /* This breaks UTF-8 and other encodings which
+                    * use the high bits.
+                    */
+                       case '0x8e':
+                       case '0x8f':
+#endif
+                               return p;
+               }
+       } while (++p < q);
+       return NULL;
+}
+
+static long
+_vte_iso2022_sequence_length(const unsigned char *nextctl, gsize length)
+{
+       long sequence_length = -1;
+       gsize i;
+
+       switch (nextctl[0]) {
+       case '\n':
+       case '\r':
+       case '\016':
+       case '\017':
+               /* LF */
+               /* CR */
+               /* SO */
+               /* SI */
+               sequence_length = 1;
+               break;
+       case 0x8e:
+       case 0x8f:
+               /* SS2 - 8bit */
+               /* SS3 - 8bit */
+               sequence_length = 1;
+               break;
+       case '\033':
+               if (length < 2) {
+                       /* Inconclusive. */
+                       sequence_length = 0;
+               } else {
+                       switch (nextctl[1]) {
+                       case '[':
+                               /* ESC [, the CSI.  The first letter
+                                * is the end of the sequence, */
+                               for (i = 2; i < length; i++) {
+                                       if (g_unichar_isalpha(nextctl[i])) {
+                                               break;
+                                       }
+                                       if ((nextctl[i] == '@') ||
+                                           (nextctl[i] == '`') ||
+                                           (nextctl[i] == '{') ||
+                                           (nextctl[i] == '|')) {
+                                               break;
+                                       }
+                               }
+                               if (i < length) {
+                                       /* Return the length of this
+                                        * sequence. */
+                                       sequence_length = i + 1;
+                               } else {
+                                       /* Inconclusive. */
+                                       sequence_length = 0;
+                               }
+                               break;
+#if 0
+                       case ']':
+                               /* ESC ], the OSC.  Search for a string
+                                * terminator or a BEL. */
+                               for (i = 2; i < q - nextctl - 1; i++) {
+                                       if ((nextctl[i] == '\033') &&
+                                           (nextctl[i + 1] == '\\')) {
+                                               break;
+                                       }
+                               }
+                               if (i < length - 1) {
+                                       /* Return the length of this
+                                        * sequence. */
+                                       sequence_length = i + 1;
+                               } else {
+                                       for (i = 2; i < length; i++) {
+                                               if (nextctl[i] == '\007') {
+                                                       break;
+                                               }
+                                       }
+                                       if (i < length) {
+                                               /* Return the length of
+                                                * this sequence. */
+                                               sequence_length = i + 1;
+                                       } else {
+                                               /* Inconclusive. */
+                                               sequence_length = 0;
+                                       }
+                               }
+                               break;
+#endif
+#if 0
+                       case '^':
+                               /* ESC ^, the PM.  Search for a string
+                                * terminator. */
+#endif
+                       case 'P':
+                               /* ESC P, the DCS.  Search for a string
+                                * terminator. */
+                               for (i = 2; i < length - 1; i++) {
+                                       if ((nextctl[i] == '\033') &&
+                                           (nextctl[i + 1] == '\\')) {
+                                               break;
+                                       }
+                               }
+                               if (i < length - 1) {
+                                       /* Return the length of this
+                                        * sequence. */
+                                       sequence_length = i + 1;
+                               } else {
+                                       /* Inconclusive. */
+                                       sequence_length = 0;
+                               }
+                               break;
+                       case 'N':
+                       case 'O':
+                       case 'n':
+                       case 'o':
+                               /* ESC N */
+                               /* ESC O */
+                               /* ESC n */
+                               /* ESC o */
+                               sequence_length = 2;
+                               break;
+                       case '(':
+                       case ')':
+                       case '*':
+                       case '+':
+                               if (length < 3) {
+                                       /* Inconclusive. */
+                                       sequence_length = 0;
+                               } else {
+                                       /* ESC ) x */
+                                       /* ESC ( x */
+                                       /* ESC * x */
+                                       /* ESC + x */
+                                       /* Just accept whatever. */
+                                       sequence_length = 3;
+                               }
+                               break;
+                       case '%':
+                               if (length < 3) {
+                                       /* Inconclusive. */
+                                       sequence_length = 0;
+                               } else {
+                                       /* ESC % @ */
+                                       /* ESC % G */
+                                       switch (nextctl[2]) {
+                                       case '@':
+                                       case 'G':
+                                               sequence_length = 3;
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                               }
+                               break;
+                       case '$':
+                               if (length < 3) {
+                                       /* Inconclusive. */
+                                       sequence_length = 0;
+                               } else {
+                                       switch (nextctl[2]) {
+                                       case '@':
+                                       case 'B':
+                                               /* ESC $ @ */
+                                               /* ESC $ B */
+                                               sequence_length = 3;
+                                               break;
+                                       case '(':
+                                       case ')':
+                                       case '*':
+                                       case '+':
+                                               /* ESC $ ( x */
+                                               /* ESC $ ) x */
+                                               /* ESC $ * x */
+                                               /* ESC $ + x */
+                                               if (length < 4) {
+                                                       /* Inconclusive. */
+                                                       sequence_length = 0;
+                                               } else {
+                                                       /* strchr(WIDE_GMAPS, nextctl[3]) */
+                                                       switch (nextctl[3]) {
+                                                       case 'C':
+                                                       case 'A':
+                                                       case 'G':
+                                                       case 'H':
+                                                       case 'I':
+                                                       case 'J':
+                                                       case 'K':
+                                                       case 'L':
+                                                       case 'M':
+                                                       case 'D':
+                                                               sequence_length = 4;
+                                                               break;
+                                                       default:
+                                                               break;
+                                                       }
+                                               }
+                                               break;
+                                       }
+                               }
+                               break;
+                       default:
+                               break;
+                       }
+               }
+               break;
+       }
+       return sequence_length;
+}
+
+static int
+process_8_bit_sequence(struct _vte_iso2022_state *state,
+                      const guchar **inbuf, gsize *inbytes,
+                      gunichar **outbuf, gsize *outbytes)
+{
+       guint i, width;
+       gpointer p;
+       gunichar c, *outptr;
+       const guchar *inptr;
+       gulong acc, or_mask, and_mask;
+       GHashTable *map;
+       guint bytes_per_char, force_width, current;
+
+       /* Check if it's an 8-bit escape.  If it is, take a note of which map
+        * it's for, and if it isn't, fail. */
+       current = 0;
+       switch (**inbuf) {
+       case 0x8e:
+               current = 2;
+               break;
+       case 0x8f:
+               current = 3;
+               break;
+       default:
+               /* We processed 0 bytes, and we have no intention of looking
+                * at this byte again. */
+               return 0;
+       }
+
+       inptr = *inbuf;
+       outptr = *outbuf;
+
+       /* Find the map, and ensure that in addition to the escape byte, we
+        * have enough information to construct the character. */
+       _vte_iso2022_map_get(state->g[current],
+                            &map, &bytes_per_char, &force_width,
+                            &or_mask, &and_mask);
+       if (*inbytes < (bytes_per_char + 1)) {
+               /* We need more information to work with. */
+               return -1;
+       }
+
+       for (acc = 0, i = 0; i < bytes_per_char; i++) {
+               acc = (acc << 8) | ((guint8*)inptr)[i + 1];
+       }
+       *inbuf += (bytes_per_char + 1);
+       *inbytes -= (bytes_per_char + 1);
+
+       acc &= and_mask;
+       acc |= or_mask;
+       p = GINT_TO_POINTER(acc);
+       c = GPOINTER_TO_INT(g_hash_table_lookup(map, p));
+       if ((c == 0) && (acc != 0)) {
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "%04lx -(%c)-> %04lx(?)\n",
+                               acc, state->g[current] & 0xff, acc);
+       } else {
+               width = 0;
+               if (force_width != 0) {
+                       width = force_width;
+               } else {
+                       if (G_UNLIKELY (_vte_iso2022_is_ambiguous(c))) {
+                               width = state->ambiguous_width;
+                       }
+               }
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "%05lx -> " "%04x\n", acc, c);
+               c = _vte_iso2022_set_encoded_width(c, width);
+       }
+       /* Save the unichar. */
+       g_assert(*outbytes >= sizeof(c));
+       *outbytes -= sizeof(c);
+       *outptr++ = c;
+       *outbuf = outptr;
+       /* Return the number of input bytes consumed. */
+       return bytes_per_char + 1;
+}
+
+static glong
+process_cdata(struct _vte_iso2022_state *state, const guchar *cdata, gsize length,
+             GArray *gunichars)
+{
+       int ambiguous_width;
+       glong processed = 0;
+       GHashTable *map;
+       guint bytes_per_char, force_width, current;
+       gsize converted;
+       const guchar *inbuf;
+       gunichar *outbuf, *buf;
+       gsize inbytes, outbytes;
+       guint i, j, width;
+       gulong acc, or_mask, and_mask;
+       gunichar c;
+       gboolean single, stop;
+
+       ambiguous_width = state->ambiguous_width;
+
+       single = (state->override != -1);
+       current = single ? state->override : state->current;
+       state->override = -1;
+       g_assert(current < G_N_ELEMENTS(state->g));
+
+       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                       "Current map = %d (%c).\n",
+                       current, (state->g[current] & 0xff));
+
+       if (!state->nrc_enabled || (state->g[current] == 'B')) {
+               inbuf = cdata;
+               inbytes = length;
+               _vte_buffer_set_minimum_size(state->buffer,
+                                            sizeof(gunichar) * length * 2);
+               buf = (gunichar *)state->buffer->data;
+               outbuf = buf;
+               outbytes = sizeof(gunichar) * length * 2;
+               do {
+                       converted = _vte_conv_cu(state->conv,
+                                                &inbuf, &inbytes,
+                                                &outbuf, &outbytes);
+                       stop = FALSE;
+                       switch (converted) {
+                       case ((gsize)-1):
+                               switch (errno) {
+                               case EILSEQ:
+                                       /* Check if it's an 8-bit sequence. */
+                                       i = process_8_bit_sequence(state,
+                                                                  &inbuf,
+                                                                  &inbytes,
+                                                                  &outbuf,
+                                                                  &outbytes);
+                                       switch (i) {
+                                       case 0:
+                                               /* iconv() may be buggy,
+                                                * returning EILSEQ and
+                                                * no remaining bytes.
+                                                * Bug 567064 */
+                                               if (inbytes) {
+                                                       /* Nope, munge the input. */
+                                                       inbuf++;
+                                                       inbytes--;
+                                               }
+                                               *outbuf++ = INVALID_CODEPOINT;
+                                               outbytes -= sizeof(gunichar);
+                                               break;
+                                       case -1:
+                                               /* Looks good so far, try again
+                                                * later. */
+                                               stop = TRUE;
+                                               break;
+                                       default:
+                                               /* Processed n bytes, just keep
+                                                * going. */
+                                               break;
+                                       }
+                                       break;
+                               case EINVAL:
+                                       /* Incomplete. Save for later. */
+                                       stop = TRUE;
+                                       break;
+                               case E2BIG:
+                                       /* Should never happen. */
+                                       g_assert_not_reached();
+                                       break;
+                               default:
+                                       /* Should never happen. */
+                                       g_assert_not_reached();
+                                       break;
+                               }
+                       default:
+                               break;
+                       }
+               } while ((inbytes > 0) && !stop);
+
+               /* encode any ambiguous widths and skip blanks */
+               j = gunichars->len;
+               g_array_set_size(gunichars, gunichars->len + outbuf-buf);
+               for (i = 0; buf + i < outbuf; i++) {
+                       c = buf[i];
+                       if (G_UNLIKELY (c == '\0')) {
+                               /* Skip the padding character. */
+                               continue;
+                       }
+                       if (G_UNLIKELY (_vte_iso2022_is_ambiguous(c))) {
+                               width = ambiguous_width;
+                               c = _vte_iso2022_set_encoded_width(c, width);
+                       }
+                       g_array_index(gunichars, gunichar, j++) = c;
+               }
+               gunichars->len = j;
+
+               /* Done. */
+               processed = length - inbytes;
+       } else {
+               _vte_iso2022_map_get(state->g[current],
+                                    &map, &bytes_per_char, &force_width,
+                                    &or_mask, &and_mask);
+               i = 0;
+               acc = 0;
+               j = gunichars->len;
+               g_array_set_size(gunichars, gunichars->len + length);
+               do {
+                       if (i < length) {
+                               acc = (acc << 8) | cdata[i];
+                       }
+                       i++;
+                       if ((i % bytes_per_char) == 0) {
+                               acc &= and_mask;
+                               acc |= or_mask;
+                               c = GPOINTER_TO_INT(g_hash_table_lookup(map,
+                                                       GINT_TO_POINTER(acc)));
+                               if ((c == 0) && (acc != 0)) {
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                       "%04lx -(%c)-> "
+                                                       "%04lx(?)\n",
+                                                       acc,
+                                                       state->g[current] & 0xff,
+                                                       acc);
+                                       c = acc;
+                               } else {
+                                       width = 0;
+                                       if (force_width != 0) {
+                                               width = force_width;
+                                       } else {
+                                               if (G_UNLIKELY (_vte_iso2022_is_ambiguous(c))) {
+                                                       width = ambiguous_width;
+                                               }
+                                       }
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                       "%05lx -> "
+                                                       "%04x\n", acc, c);
+                                       c = _vte_iso2022_set_encoded_width(c, width);
+                               }
+                               g_array_index(gunichars, gunichar, j++) = c;
+                               if (single) {
+                                       break;
+                               }
+                               acc = 0;
+                       }
+               } while (i < length);
+               processed = i;
+               gunichars->len = j;
+       }
+       return processed;
+}
+
+gunichar
+_vte_iso2022_process_single(struct _vte_iso2022_state *state,
+                           gunichar c, gunichar map)
+{
+       GHashTable *hash;
+       gunichar ret = c;
+       gpointer p;
+       guint bytes_per_char, force_width;
+       gulong or_mask, and_mask;
+
+       _vte_iso2022_map_get(map,
+                            &hash, &bytes_per_char, &force_width,
+                            &or_mask, &and_mask);
+
+       p = GINT_TO_POINTER((c & and_mask) | or_mask);
+       if (hash != NULL) {
+               p = g_hash_table_lookup(hash, p);
+       }
+       if (p != NULL) {
+               ret = GPOINTER_TO_INT(p);
+       }
+       if (force_width) {
+               ret = _vte_iso2022_set_encoded_width(ret, force_width);
+       }
+       return ret;
+}
+
+static void
+process_control(struct _vte_iso2022_state *state, guchar *ctl, gsize length,
+               GArray *gunichars)
+{
+       gunichar c;
+       gsize i;
+       if (length >= 1) {
+               switch (ctl[0]) {
+               case '\r':  /* CR */
+                       c = '\r';
+                       g_array_append_val(gunichars, c);
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION, "\tCR\n");
+                       break;
+               case '\n':  /* LF */
+                       c = '\n';
+                       g_array_append_val(gunichars, c);
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION, "\tLF\n");
+                       break;
+               case '\016': /* SO */
+                       state->current = 1;
+                       state->override = -1;
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION, "\tSO (^N)\n");
+                       break;
+               case '\017': /* SI */
+                       state->current = 0;
+                       state->override = -1;
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION, "\tSI (^O)\n");
+                       break;
+               case 0x8e:
+                       /* SS2 - 8bit */
+                       state->override = 2;
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                       "\tSS2 (8-bit)\n");
+                       break;
+               case 0x8f:
+                       /* SS3 - 8bit */
+                       state->override = 3;
+                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "\tSS3 (8-bit)\n");
+                       break;
+               case '\033':
+                       if (length >= 2) {
+                               switch (ctl[1]) {
+                               case '[': /* CSI */
+                               case ']': /* OSC */
+                               case '^': /* PM */
+                               case 'P': /* DCS */
+                                       /* Pass it through. */
+                                       for (i = 0; i < length; i++) {
+                                               c = (guchar) ctl[i];
+                                               g_array_append_val(gunichars,
+                                                                  c);
+                                       }
+                                       _VTE_DEBUG_IF(VTE_DEBUG_SUBSTITUTION) {
+                                               g_printerr("\t");
+                                               for (i = 0; i < length; i++) {
+                                                       c = (guchar) ctl[i];
+                                                       g_printerr(
+                                                               "(%s%c)",
+                                                               c < 0x20 ?
+                                                               "^" : "",
+                                                               c < 0x20 ?
+                                                               c : c + 64);
+                                               }
+                                               g_printerr("\n");
+                                       }
+                                       break;
+                               case 'N': /* SS2 */
+                                       state->override = 2;
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                               "\tSS2\n");
+                                       break;
+                               case 'O': /* SS3 */
+                                       state->override = 3;
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                               "\tSS3\n");
+                                       break;
+                               case 'n': /* LS2 */
+                                       state->current = 2;
+                                       state->override = -1;
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                       "\tLS2\n");
+                                       break;
+                               case 'o': /* LS3 */
+                                       state->current = 3;
+                                       state->override = -1;
+                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                       "\tLS3\n");
+                                       break;
+                               case '(':
+                               case ')':
+                               case '*':
+                               case '+':
+                                       if (length >= 3) {
+                                               int g = -1;
+                                               switch (ctl[1]) {
+                                               case '(':
+                                                       g = 0;
+                                                       break;
+                                               case ')':
+                                                       g = 1;
+                                                       break;
+                                               case '*':
+                                                       g = 2;
+                                                       break;
+                                               case '+':
+                                                       g = 3;
+                                                       break;
+                                               default:
+                                                       g_assert_not_reached();
+                                                       break;
+                                               }
+                                               /* strchr(NARROW_MAPS, c) */
+                                               switch (ctl[2]) {
+                                               case '0':
+                                               case '1':
+                                               case '2':
+                                               case 'A':
+                                               case 'B':
+                                               case '4':
+                                               case 'C':
+                                               case '5':
+                                               case 'R':
+                                               case 'Q':
+                                               case 'K':
+                                               case 'Y':
+                                               case 'E':
+                                               case '6':
+                                               case 'Z':
+                                               case 'H':
+                                               case '7':
+                                               case '=':
+                                               case 'J':
+                                               case 'U':
+                                                       state->g[g] = ctl[2];
+                                                       break;
+
+                                               default:
+                                                       g_warning(_("Attempt to set invalid NRC map '%c'."), 
ctl[2]);
+                                                       break;
+                                               }
+                                               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                               "\tG[%d] = %c.\n",
+                                                               g, c);
+                                       }
+                                       break;
+                               case '%':
+                                       if (length >= 3) {
+                                               gboolean notify = FALSE;
+                                               switch (ctl[2]) {
+                                               case '@':
+                                                       if (strcmp(state->codeset, state->native_codeset) != 
0) {
+                                                               notify = TRUE;
+                                                       }
+                                                       _vte_iso2022_state_set_codeset(state, 
state->native_codeset);
+                                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                                       "\tNative encoding.\n");
+                                                       break;
+                                               case 'G':
+                                                       if (strcmp(state->codeset, state->utf8_codeset) != 0) 
{
+                                                               notify = TRUE;
+                                                       }
+                                                       _vte_iso2022_state_set_codeset(state, 
state->utf8_codeset);
+                                                       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                                       "\tUTF-8 encoding.\n");
+                                                       break;
+                                               default:
+                                                       /* Application signalled an "identified coding 
system" we haven't heard of.  See ECMA-35 for gory details. */
+                                                       g_warning(_("Unrecognized identified coding 
system."));
+                                                       break;
+                                               }
+                                               if (notify &&
+                                                   state->codeset_changed) {
+                                                       state->codeset_changed(state, 
state->codeset_changed_data);
+                                               }
+                                       }
+                                       break;
+                               case '$':
+                                       if (length >= 4) {
+                                               int g = -1;
+                                               c = 0;
+                                               switch (ctl[2]) {
+                                               case '@':
+                                                       g = 0;
+                                                       c = '@';
+                                                       break;
+                                               case 'B':
+                                                       g = 0;
+                                                       c = 'B';
+                                                       break;
+                                               case '(':
+                                                       g = 0;
+                                                       break;
+                                               case ')':
+                                                       g = 1;
+                                                       break;
+                                               case '*':
+                                                       g = 2;
+                                                       break;
+                                               case '+':
+                                                       g = 3;
+                                                       break;
+                                               default:
+                                                       g_assert_not_reached();
+                                                       break;
+                                               }
+                                               if (c == 0) {
+                                                       c = ctl[3];
+                                               }
+                                               /* strchr(WIDE_MAPS WIDE_GMAPS, c) */
+                                               switch (c) {
+                                               case '@':
+                                               case 'B':
+                                               case 'C':
+                                               case 'A':
+                                               case 'G':
+                                               case 'H':
+                                               case 'I':
+                                               case 'J':
+                                               case 'K':
+                                               case 'L':
+                                               case 'M':
+                                               case 'D':
+                                                       state->g[g] = c + WIDE_FUDGE;
+                                                       break;
+
+                                               default:
+                                                       g_warning(_("Attempt to set invalid wide NRC map 
'%c'."), c);
+                                                       break;
+                                               }
+                                               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                               "\tG[%d] = wide %c.\n",
+                                                               g, c);
+                                       } else
+                                       if (length >= 3) {
+                                               switch (ctl[2]) {
+                                               case '@':
+                                                       c = '@';
+                                                       break;
+                                               case 'B':
+                                                       c = 'B';
+                                                       break;
+                                               default:
+                                                       c = ctl[2];
+                                                       break;
+                                               }
+                                               /* strchr(WIDE_MAPS, c) */
+                                               switch (c){
+                                               case '@':
+                                               case 'B':
+                                                       state->g[0] = c + WIDE_FUDGE;
+                                                       break;
+
+                                               default:
+                                                       g_warning(_("Attempt to set invalid wide NRC map 
'%c'."), c);
+                                               }
+                                               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                                                               "\tG[0] = wide %c.\n",
+                                                               c);
+                                       }
+                                       break;
+                               default:
+                                       g_assert_not_reached();
+                                       break;
+                               }
+                               break;
+                       }
+                       break;
+               default:
+                       g_assert_not_reached();
+                       break;
+               }
+       }
+}
+
+static guint
+process_block (struct _vte_iso2022_state *state,
+              guchar *input,
+              struct _vte_iso2022_block *block,
+              gboolean last,
+              GArray *gunichars)
+{
+       guint preserve_last = -1;
+       guint initial;
+
+       switch (block->type) {
+       case _vte_iso2022_cdata:
+               _VTE_DEBUG_IF(VTE_DEBUG_SUBSTITUTION) {
+                       guint j;
+                       g_printerr("%3ld %3ld CDATA \"%.*s\"",
+                               block->start, block->end,
+                               (int) (block->end - block->start),
+                               input + block->start);
+                       g_printerr(" (");
+                       for (j = block->start; j < block->end; j++) {
+                               if (j > block->start) {
+                                       g_printerr(", ");
+                               }
+                               g_printerr("0x%02x",
+                                       input[j]);
+                       }
+                       g_printerr(")\n");
+               }
+               initial = 0;
+               while (initial < block->end - block->start) {
+                       int j;
+                       j = process_cdata(state,
+                                         input +
+                                         block->start +
+                                         initial,
+                                         block->end -
+                                         block->start -
+                                         initial,
+                                         gunichars);
+                       if (j == 0) {
+                               break;
+                       }
+                       initial += j;
+               }
+               if (initial < block->end - block->start && last) {
+                       preserve_last = block->start + initial;
+               }
+               break;
+       case _vte_iso2022_control:
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "%3ld %3ld CONTROL ",
+                               block->start, block->end);
+               process_control(state,
+                               input + block->start,
+                               block->end - block->start,
+                               gunichars);
+               break;
+       case _vte_iso2022_preserve:
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "%3ld %3ld PRESERVE\n",
+                               block->start, block->end);
+               preserve_last = block->start;
+               break;
+       default:
+               g_assert_not_reached();
+               break;
+       }
+
+       return preserve_last;
+}
+
+gsize
+_vte_iso2022_process(struct _vte_iso2022_state *state,
+                    guchar *input, gsize length,
+                    GArray *gunichars)
+{
+       struct _vte_iso2022_block block;
+       guint preserve_last = -1;
+       const guchar *nextctl, *p, *q;
+       glong sequence_length = 0;
+
+       p = input;
+       q = input + length;
+       do {
+               nextctl = _vte_iso2022_find_nextctl(p, q);
+               if (nextctl == NULL) {
+                       /* It's all garden-variety data. */
+                       block.type = _vte_iso2022_cdata;
+                       block.start = p - input;
+                       block.end = q - input;
+                       preserve_last = process_block (state,
+                                                      input, &block,
+                                                      TRUE,
+                                                      gunichars);
+                       break;
+               }
+               /* We got some garden-variety data. */
+               if (nextctl != p) {
+                       block.type = _vte_iso2022_cdata;
+                       block.start = p - input;
+                       block.end = nextctl - input;
+                       process_block (state, input, &block, FALSE, gunichars);
+               }
+               /* Move on to the control data. */
+               p = nextctl;
+               sequence_length = _vte_iso2022_sequence_length(nextctl,
+                                                              q - nextctl);
+               switch (sequence_length) {
+               case -1:
+                       /* It's just garden-variety data. */
+                       block.type = _vte_iso2022_cdata;
+                       block.start = p - input;
+                       block.end = nextctl + 1 - input;
+                       /* Continue at the next byte. */
+                       p = nextctl + 1;
+                       break;
+               case 0:
+                       /* Inconclusive.  Save this data and try again later. */
+                       block.type = _vte_iso2022_preserve;
+                       block.start = nextctl - input;
+                       block.end = q - input;
+                       /* Trigger an end-of-loop. */
+                       p = q;
+                       break;
+               default:
+                       /* It's a control sequence. */
+                       block.type = _vte_iso2022_control;
+                       block.start = nextctl - input;
+                       block.end = nextctl + sequence_length - input;
+                       /* Continue after the sequence. */
+                       p = nextctl + sequence_length;
+                       break;
+               }
+               preserve_last = process_block (state,
+                                              input, &block,
+                                              FALSE,
+                                              gunichars);
+       } while (p < q);
+       if (preserve_last != (guint) -1) {
+               length = preserve_last;
+       }
+       _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                       "Consuming %ld bytes.\n", (long) length);
+       return length;
+}
+
+#ifdef ISO2022_MAIN
+#include <stdio.h>
+int
+main(int argc, char **argv)
+{
+       VteBuffer *buffer;
+       struct _vte_iso2022_state *state;
+       GString *string;
+       GArray *gunichars;
+       struct {
+               const char *s;
+               gboolean process;
+       } strings[] = {
+               {"abcd\033$(Cefgh\ri\nj\033)0k\017lmn\033Nopqrst\033%G", TRUE},
+               {"ABCD\033$(C\033)", TRUE},
+               {"0", TRUE},
+               {"\014\033[33;41m", TRUE},
+               {"\015", TRUE},
+               {"\014{|}\015\r\n", TRUE},
+               {"\033(B\033)0\033*B\033+B", TRUE},
+               {"\033$B$+$J4A;z\033(J~", TRUE},
+               {"\033(B\033)0\033*B\033+B", TRUE},
+               {"\033$)C\0161hD!\017", TRUE},
+               {"\033$*C\033N1hD!", TRUE},
+               {"\033$(G\043\071", TRUE},
+               {"\033(B\033)0\033*B\033+B", TRUE},
+               {"\r\n", TRUE},
+       };
+       guint i;
+       FILE *fp;
+       guchar b;
+
+       state = _vte_iso2022_state_new(NULL, NULL, NULL);
+       buffer = _vte_buffer_new();
+       gunichars = g_array_new(FALSE, FALSE, sizeof(gunichar));
+       if (argc > 1) {
+               string = g_string_new(NULL);
+               for (i = 1; i < (guint) argc; i++) {
+                       if (strcmp(argv[i], "-") == 0) {
+                               fp = stdin;
+                       } else {
+                               fp = fopen(argv[i], "r");
+                       }
+                       while (fread(&b, sizeof(guchar), 1, fp) == sizeof(b)) {
+                               g_string_append_c(string, b);
+                       }
+                       if (fp != stdin) {
+                               fclose(fp);
+                       }
+               }
+               _vte_buffer_append(buffer, string->str, string->len);
+               _vte_iso2022_process(state, buffer->data, _vte_buffer_length (buffer), gunichars);
+               g_string_free(string, TRUE);
+       } else {
+               for (i = 0; i < G_N_ELEMENTS(strings); i++) {
+                       string = g_string_new(strings[i].s);
+                       _vte_buffer_append(buffer, string->str, string->len);
+                       g_string_free(string, TRUE);
+                       if (strings[i].process) {
+                               _vte_iso2022_process(state, buffer->data, _vte_buffer_length (buffer), 
gunichars);
+                       }
+               }
+       }
+       _vte_buffer_free(buffer);
+       _vte_iso2022_state_free(state);
+
+       string = g_string_new(NULL);
+       for (i = 0; i < gunichars->len; i++) {
+               g_string_append_unichar(string,
+                                       g_array_index(gunichars, gunichar, i));
+       }
+       (void) write(STDOUT_FILENO, string->str, string->len);
+       g_string_free(string, TRUE);
+
+       return 0;
+}
+#endif
diff --git a/vte/src/iso2022.h b/vte/src/iso2022.h
new file mode 100644
index 0000000..cb54f81
--- /dev/null
+++ b/vte/src/iso2022.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_iso2022_h_included
+#define vte_iso2022_h_included
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include "buffer.h"
+#include "matcher.h"
+
+G_BEGIN_DECLS
+
+struct _vte_iso2022_state;
+typedef void (*_vte_iso2022_codeset_changed_cb_fn)(struct _vte_iso2022_state *,
+                                                  gpointer);
+struct _vte_iso2022_state *_vte_iso2022_state_new(const char *native_codeset,
+                                                 _vte_iso2022_codeset_changed_cb_fn,
+                                                 gpointer);
+void _vte_iso2022_state_set_codeset(struct _vte_iso2022_state *state,
+                                   const char *codeset);
+const char *_vte_iso2022_state_get_codeset(struct _vte_iso2022_state *state);
+gsize _vte_iso2022_process(struct _vte_iso2022_state *state,
+                         guchar *input, gsize length,
+                         GArray *gunichars);
+gunichar _vte_iso2022_process_single(struct _vte_iso2022_state *state,
+                                    gunichar c, gunichar map);
+void _vte_iso2022_state_free(struct _vte_iso2022_state *);
+
+
+#define VTE_ISO2022_ENCODED_WIDTH_BIT_OFFSET   28
+#define VTE_ISO2022_ENCODED_WIDTH_MASK         (3 << VTE_ISO2022_ENCODED_WIDTH_BIT_OFFSET)
+#define VTE_ISO2022_HAS_ENCODED_WIDTH(__c)     (((__c) & VTE_ISO2022_ENCODED_WIDTH_MASK) != 0)
+int _vte_iso2022_get_encoded_width(gunichar c);
+int _vte_iso2022_unichar_width(struct _vte_iso2022_state *state,
+                              gunichar c);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/iso2022.txt b/vte/src/iso2022.txt
new file mode 100644
index 0000000..80ac6ed
--- /dev/null
+++ b/vte/src/iso2022.txt
@@ -0,0 +1,33 @@
+#
+#  Sample text using terminal national character set suppport.
+#
+General format: [ISO-2022] [UTF-8]
+
+#
+#  Sample text from Ken Lunde's CJKV Information Processing.
+#
+ISO-2022-JP/156:  [$B$+$J4A;z(B] [かな漢字]
+ISO-2022-KR/158:  [$)C1hD!)B] [김치]
+
+#
+#  Sample text based on XTerm's specs and random other docs.
+#
+US-ASCII:         [(B#$@[\]^_{|}~(B] [#$@[\]^_{|}~]
+Graphics:         [(0abcdefghijklmnopqrstuvwxyz_{|}~(B]
+                  [▒␉␌␍␊°±␤␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥_π≠£·]
+British:          [(A#$@[\]^_{|}~(B] [#£@[\]^_{|}~]
+Dutch:            [(4#$@[\]^_{|}~(B] [£$¾ÿ½|^_¨f¼´]
+Finnish:          [(C#$@[\]^_{|}~(B] [#$@ÄÖÅÜ_äöåü]
+French:           [(R#$@[\]^_{|}~(B] [£$à°ç§^_éùè¨]
+French Canadian:  [(Q#$@[\]^_{|}~(B] [#$àâçêî_éùèû]
+German:           [(K#$@[\]^_{|}~(B] [#$§ÄÖÜ^_äöüß]
+Italian:          [(Y#$@[\]^_{|}~(B] [£$§°çé^_àòèì]
+Norwegian/Danish: [(E#$@[\]^_{|}~(B] [#$ÄÆØÅÜ_æøåü]
+Spanish:          [(Z#$@[\]^_{|}~(B] [£$§¡Ñ¿^_°ñç~]
+Swedish:          [(H#$@[\]^_{|}~(B] [#$ÉÄÖÅÜ_äöåü]
+Swiss:            [(=#$@[\]^_{|}~(B] [ù$àéçêîèäöüû]
+
+ISO-2022-JP:      [(J~\(B~\] [¥‾~\]
+ISO-2022-KR:      [$)C>o^-] [억嚬]
+ISO-2022-CN(1):   [$)G&*&4] [⑩⑽]
+ISO-2022-CN(2):   [$*HN$&N5~] [怀梩]
diff --git a/vte/src/keymap.c b/vte/src/keymap.c
new file mode 100644
index 0000000..9a21669
--- /dev/null
+++ b/vte/src/keymap.c
@@ -0,0 +1,1455 @@
+/*
+ * Copyright (C) 2002,2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include "caps.h"
+#include "debug.h"
+#include "keymap.h"
+#include "vtetc.h"
+
+#if GTK_CHECK_VERSION (2, 90, 7)
+#define GDK_KEY(symbol) GDK_KEY_##symbol
+#else
+#include <gdk/gdkkeysyms.h>
+#define GDK_KEY(symbol) GDK_##symbol
+#endif
+
+#if defined(HAVE_NCURSES_H) && defined(HAVE_TERM_H)
+#include <ncurses.h>
+#include <term.h>
+#define VTE_TERMCAP_NAME "ncurses"
+#elif defined(HAVE_NCURSES_CURSES_H) && defined(HAVE_NCURSES_TERM_H)
+#include <ncurses/curses.h>
+#include <ncurses/term.h>
+#define VTE_TERMCAP_NAME "ncurses"
+#elif defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
+#include <curses.h>
+#include <term.h>
+#define VTE_TERMCAP_NAME "curses"
+#elif defined(HAVE_TERMCAP_H)
+#include <termcap.h>
+#define VTE_TERMCAP_NAME "termcap"
+#else
+#error No termcap??
+#endif
+
+#ifdef VTE_DEBUG
+static const char *
+_vte_keysym_name(guint keyval)
+{
+       switch (keyval) {
+#include "keysyms.c"
+               default:
+                       break;
+       }
+       return "(unknown)";
+}
+static void
+_vte_keysym_print(guint keyval,
+               GdkModifierType modifiers,
+               gboolean sun_mode,
+               gboolean hp_mode,
+               gboolean legacy_mode,
+               gboolean vt220_mode)
+{
+       g_printerr("Mapping ");
+       if (modifiers & GDK_CONTROL_MASK) {
+               g_printerr("Control+");
+       }
+       if (modifiers & VTE_META_MASK) {
+               g_printerr("Meta+");
+       }
+       if (modifiers & VTE_NUMLOCK_MASK) {
+               g_printerr("NumLock+");
+       }
+       if (modifiers & GDK_SHIFT_MASK) {
+               g_printerr("Shift+");
+       }
+       g_printerr("%s" , _vte_keysym_name(keyval));
+       if (sun_mode|hp_mode|legacy_mode|vt220_mode) {
+               gboolean first = TRUE;
+               g_printerr("(");
+               if (sun_mode) {
+                       if (!first) {
+                               g_printerr(",");
+                       }
+                       first = FALSE;
+                       g_printerr("Sun");
+               }
+               if (hp_mode) {
+                       if (!first) {
+                               g_printerr(",");
+                       }
+                       first = FALSE;
+                       g_printerr("HP");
+               }
+               if (legacy_mode) {
+                       if (!first) {
+                               g_printerr(",");
+                       }
+                       first = FALSE;
+                       g_printerr("Legacy");
+               }
+               if (vt220_mode) {
+                       if (!first) {
+                               g_printerr(",");
+                       }
+                       first = FALSE;
+                       g_printerr("VT220");
+               }
+               g_printerr(")");
+       }
+}
+#else
+static void
+_vte_keysym_print(guint keyval,
+               GdkModifierType modifiers,
+               gboolean sun_mode,
+               gboolean hp_mode,
+               gboolean legacy_mode,
+               gboolean vt220_mode)
+{
+}
+#endif
+
+enum _vte_cursor_mode {
+       cursor_default =        1 << 0,
+       cursor_app =            1 << 1
+};
+
+enum _vte_keypad_mode {
+       keypad_default =        1 << 0,
+       keypad_app =            1 << 1
+};
+
+enum _vte_fkey_mode {
+       fkey_default =  1 << 0,
+       fkey_sun =      1 << 1,
+       fkey_hp =       1 << 2,
+       fkey_legacy =   1 << 3,
+       fkey_vt220 =    1 << 4
+};
+
+#define cursor_all     (cursor_default | cursor_app)
+#define keypad_all     (keypad_default | keypad_app)
+#define fkey_all       (fkey_default | fkey_sun | fkey_hp | fkey_legacy | fkey_vt220)
+#define fkey_notvt220  (fkey_default | fkey_sun | fkey_hp | fkey_legacy)
+#define fkey_notsun    (fkey_default | fkey_hp | fkey_legacy | fkey_vt220)
+#define fkey_nothp     (fkey_default | fkey_sun | fkey_legacy | fkey_vt220)
+#define fkey_notsunvt  (fkey_default | fkey_hp | fkey_legacy)
+#define fkey_notsunhp  (fkey_default | fkey_legacy | fkey_vt220)
+#define fkey_nothpvt   (fkey_default | fkey_sun | fkey_legacy)
+
+struct _vte_keymap_entry {
+       enum _vte_cursor_mode cursor_mode;
+       enum _vte_keypad_mode keypad_mode;
+       enum _vte_fkey_mode fkey_mode;
+       GdkModifierType mod_mask;
+       const char normal[8];
+       gssize normal_length;
+       const char special[4];
+};
+
+#define X_NULL ""
+
+/* Normal keys unaffected by modes. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_space[] = {
+       /* Meta+space = ESC+" " */
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC " ", 2, X_NULL},
+       /* Control+space = NUL */
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\0", 1, X_NULL},
+       /* Regular space. */
+       {cursor_all, keypad_all, fkey_all, 0, " ", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Tab[] = {
+       /* Shift+Tab = Back-Tab */
+       {cursor_all, keypad_all, fkey_all,
+        GDK_SHIFT_MASK, X_NULL, 0, "kB"},
+       {cursor_all, keypad_all, fkey_all,
+        GDK_SHIFT_MASK, _VTE_CAP_CSI "Z", -1, X_NULL},
+       /* Alt+Tab = Esc+Tab */
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC "\t", -1, X_NULL},
+       /* Regular tab. */
+       {cursor_all, keypad_all, fkey_all,
+        0, X_NULL, 0, "ta"},
+       {cursor_all, keypad_all, fkey_all, 0, "\t", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Return[] = {
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC "\n", 2, X_NULL},
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\n", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, "\r", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Escape[] = {
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC _VTE_CAP_ESC, 2, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_ESC, 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Insert[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kI"},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "Q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "2z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_notsunhp, 0, _VTE_CAP_CSI "2~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_ISO_Left_Tab[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kB"},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_CSI "Z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_slash[] = {
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC "/", 2, X_NULL},
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\037", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, "/", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_question[] = {
+       {cursor_all, keypad_all, fkey_all,
+        VTE_META_MASK, _VTE_CAP_ESC "?", 2, X_NULL},
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\177", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, "?", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* Various numeric keys enter control characters. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_2[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\0", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_3[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\033", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_4[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\034", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_5[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\035", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_6[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\036", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_7[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\037", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_8[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\177", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+static const struct _vte_keymap_entry _vte_keymap_GDK_Minus[] = {
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\037", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* Home and End are strange cases because their sequences vary wildly from
+ * system to system, or mine's just broken.  But anyway. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_Home[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kh"},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "h", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_nothpvt, 0, X_NULL, 0, "kh"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_End[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "@7"},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "@7"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Page_Up[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kP"},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "T", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_notsunhp, 0, _VTE_CAP_CSI "5~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "5z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Page_Down[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kN"},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "S", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_notsunhp, 0, _VTE_CAP_CSI "6~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "6z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* Keys affected by the cursor key mode. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_Up[] = {
+       {cursor_default, keypad_all, fkey_all, 0, X_NULL, 0, "ku"},
+       {cursor_default, keypad_all, fkey_nothp, 0, _VTE_CAP_CSI "A", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "A", -1, X_NULL},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "A", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Down[] = {
+       {cursor_default, keypad_all, fkey_all, 0, X_NULL, 0, "kd"},
+       {cursor_default, keypad_all, fkey_nothp, 0, _VTE_CAP_CSI "B", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "B", -1, X_NULL},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "B", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Right[] = {
+       {cursor_default, keypad_all, fkey_all, 0, X_NULL, 0, "kr"},
+       {cursor_default, keypad_all, fkey_nothp, 0, _VTE_CAP_CSI "C", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "C", -1, X_NULL},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "C", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_Left[] = {
+       {cursor_default, keypad_all, fkey_all, 0, X_NULL, 0, "kl"},
+       {cursor_default, keypad_all, fkey_nothp, 0, _VTE_CAP_CSI "D", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "D", -1, X_NULL},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "D", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* Keys (potentially) affected by the keypad key mode. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Space[] = {
+       {cursor_all, keypad_default, fkey_all, 0, " ", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 " ", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Tab[] = {
+       {cursor_all, keypad_default, fkey_all, 0, "\t", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "I", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Enter[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "@8"},
+       {cursor_all, keypad_app, fkey_all, VTE_NUMLOCK_MASK | GDK_CONTROL_MASK, "\n", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, VTE_NUMLOCK_MASK, "\r", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "M", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, GDK_CONTROL_MASK, "\n", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, "\r", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_F1[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "k1"},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "P", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_F2[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "k2"},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "Q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_F3[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "k3"},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "R", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_F4[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "k4"},
+       {cursor_all, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "S", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Multiply[] = {
+       {cursor_all, keypad_default, fkey_all, 0, "*", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, VTE_NUMLOCK_MASK, "*", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "j", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Add[] = {
+       {cursor_all, keypad_default, fkey_notvt220, 0, "+", 1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, ",", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, VTE_NUMLOCK_MASK, "+", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, VTE_NUMLOCK_MASK, ",", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_SS3 "k", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "l", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Separator[] = {
+       {cursor_all, keypad_default, fkey_all, 0, ",", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "l", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Subtract[] = {
+       {cursor_all, keypad_default, fkey_all, 0, "-", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, VTE_NUMLOCK_MASK, "-", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "m", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Decimal_Delete[] = {
+       {cursor_all, keypad_default, fkey_default, 0, ".", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notsun, 0, _VTE_CAP_SS3 "3~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_sun, 0, _VTE_CAP_SS3 "3~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Divide[] = {
+       {cursor_all, keypad_default, fkey_all, 0, "/", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, VTE_NUMLOCK_MASK, "/", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_all, 0, _VTE_CAP_SS3 "o", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* GDK already separates keypad "0" from keypad "Insert", so the only time
+ * we'll see this key is when NumLock is on, and that means that we're in
+ * "default" mode. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_0[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "0", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_1[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "1", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_2[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "2", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_3[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "3", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_4[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "4", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_5[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "5", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_6[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "6", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_7[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "7", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_8[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "8", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_9[] = {
+       {cursor_all, keypad_all, fkey_all, 0, "9", 1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+/* These are the same keys as above, but without numlock.  If there's a
+ * capability associated with the key, then we send that, unless we're in
+ * application mode. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Insert[] = {
+       {cursor_all, keypad_default, fkey_notsunvt,
+        0, _VTE_CAP_CSI "2~", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_sun, 0, _VTE_CAP_CSI "2z", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "0", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "2~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "p", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_End[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K4"},
+       {cursor_all, keypad_default, fkey_notvt220,
+        0, _VTE_CAP_CSI "4~", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "1", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Down[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kd"},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "B", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_notvt220,
+        0, _VTE_CAP_CSI "B", -1, X_NULL},
+       {cursor_default, keypad_default, fkey_vt220, 0, "2", 1, X_NULL},
+       {cursor_default, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "r", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Page_Down[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K5"},
+       {cursor_all, keypad_default, fkey_notsunvt,
+        0, _VTE_CAP_CSI "6~", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_sun, 0, _VTE_CAP_CSI "6z", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "3", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "6~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "s", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Left[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kl"},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "D", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_notvt220,
+        0, _VTE_CAP_CSI "D", -1, X_NULL},
+       {cursor_default, keypad_default, fkey_vt220, 0, "4", 1, X_NULL},
+       {cursor_default, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "t", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Begin[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K2"},
+       {cursor_all, keypad_default, fkey_notvt220,
+        0, _VTE_CAP_CSI "E", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "5", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "E", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "u", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Right[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "kr"},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "C", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_notvt220,
+        0, _VTE_CAP_CSI "C", -1, X_NULL},
+       {cursor_default, keypad_default, fkey_vt220, 0, "6", 1, X_NULL},
+       {cursor_default, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "v", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Home[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K1"},
+       {cursor_all, keypad_default, fkey_notvt220,
+        0, _VTE_CAP_CSI "1~", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "7", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "w", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Up[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "ku"},
+       {cursor_app, keypad_all, fkey_all, 0, _VTE_CAP_SS3 "A", -1, X_NULL},
+       {cursor_default, keypad_all, fkey_notvt220,
+        0, _VTE_CAP_CSI "A", -1, X_NULL},
+       {cursor_default, keypad_default, fkey_vt220, 0, "8", 1, X_NULL},
+       {cursor_default, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "x", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Page_Up[] = {
+       {cursor_all, keypad_default, fkey_all, 0, X_NULL, 0, "K3"},
+       {cursor_all, keypad_default, fkey_notvt220,
+        0, _VTE_CAP_CSI "5~", -1, X_NULL},
+       {cursor_all, keypad_default, fkey_vt220, 0, "9", 1, X_NULL},
+       {cursor_all, keypad_app, fkey_notvt220, 0, _VTE_CAP_CSI "5~", -1, X_NULL},
+       {cursor_all, keypad_app, fkey_vt220, 0, _VTE_CAP_SS3 "y", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+
+/* Keys affected by the function key mode. */
+static const struct _vte_keymap_entry _vte_keymap_GDK_F1[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k1"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F3"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k1"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "P", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "224z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "p", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "11~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "23~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_SS3 "P", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F2[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k2"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F4"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k2"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "Q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "225z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "12~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "24~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_SS3 "Q", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F3[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k3"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F5"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k3"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "R", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "226z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "r", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "13~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "25~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_SS3 "R", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F4[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k4"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F6"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k4"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "S", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "227z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "s", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "14~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "26~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_SS3 "S", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F5[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k5"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F7"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k5"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "15~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "228z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "t", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "15~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "28~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "15~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F6[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k6"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F8"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k6"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "17~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "229z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "u", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "17~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "29~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "17~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F7[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k7"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "F9"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k7"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "18~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "230z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "v", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "18~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "31~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "18~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F8[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k8"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "FA"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k8"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "19~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "231z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "w", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "19~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "32~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "19~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F9[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k9"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "FB"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k9"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "20~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "232z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_CSI "20~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "20~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "33~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "20~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F10[] = {
+       {cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "k;"},
+       {cursor_all, keypad_all, fkey_vt220, GDK_CONTROL_MASK, X_NULL, 0, "FC"},
+       {cursor_all, keypad_all, fkey_vt220, 0, X_NULL, 0, "k;"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "21~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "233z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_CSI "21~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "21~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220,
+        GDK_CONTROL_MASK, _VTE_CAP_CSI "34~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "21~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F11[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F1"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "23~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "192z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_CSI "23~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "23~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "23~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F12[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F2"},
+       {cursor_all, keypad_all, fkey_default, 0, _VTE_CAP_CSI "24~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "193z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_CSI "24~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_legacy, 0, _VTE_CAP_CSI "24~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "24~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F13[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F3"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "25~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "194z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F14[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F4"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "26~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "195z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F15[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F5"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "28~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "196z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F16[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F6"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "29~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "197z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F17[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F7"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "31~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "198z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F18[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F8"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "32~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "199z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F19[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "F9"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "33~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "200z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F20[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FA"},
+       {cursor_all, keypad_all, fkey_notsun, 0, _VTE_CAP_CSI "34~", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_sun, 0, _VTE_CAP_CSI "201z", -1, X_NULL},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F21[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FB"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F22[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FC"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F23[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FD"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F24[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FE"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F25[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FF"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F26[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FG"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F27[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FH"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F28[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FI"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F29[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FJ"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F30[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FK"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F31[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FL"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F32[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FM"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F33[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FN"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F34[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FO"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_entry _vte_keymap_GDK_F35[] = {
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "FP"},
+       {cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
+};
+
+static const struct _vte_keymap_group {
+       guint keyval;
+       const struct _vte_keymap_entry *entries;
+} _vte_keymap[] = {
+       {GDK_KEY (space),               _vte_keymap_GDK_space},
+       {GDK_KEY (Return),              _vte_keymap_GDK_Return},
+       {GDK_KEY (Escape),              _vte_keymap_GDK_Escape},
+       {GDK_KEY (Tab),                 _vte_keymap_GDK_Tab},
+       {GDK_KEY (ISO_Left_Tab),        _vte_keymap_GDK_ISO_Left_Tab},
+       {GDK_KEY (Home),                _vte_keymap_GDK_Home},
+       {GDK_KEY (End),                 _vte_keymap_GDK_End},
+       {GDK_KEY (Insert),              _vte_keymap_GDK_Insert},
+       {GDK_KEY (slash),               _vte_keymap_GDK_slash},
+       {GDK_KEY (question),            _vte_keymap_GDK_question},
+       /* GDK_KEY (Delete is all handled in code), due to funkiness. */
+       {GDK_KEY (Page_Up),             _vte_keymap_GDK_Page_Up},
+       {GDK_KEY (Page_Down),           _vte_keymap_GDK_Page_Down},
+
+       {GDK_KEY (2),                   _vte_keymap_GDK_2},
+       {GDK_KEY (3),                   _vte_keymap_GDK_3},
+       {GDK_KEY (4),                   _vte_keymap_GDK_4},
+       {GDK_KEY (5),                   _vte_keymap_GDK_5},
+       {GDK_KEY (6),                   _vte_keymap_GDK_6},
+       {GDK_KEY (7),                   _vte_keymap_GDK_7},
+       {GDK_KEY (8),                   _vte_keymap_GDK_8},
+       {GDK_KEY (minus),               _vte_keymap_GDK_Minus},
+
+       {GDK_KEY (Up),          _vte_keymap_GDK_Up},
+       {GDK_KEY (Down),                _vte_keymap_GDK_Down},
+       {GDK_KEY (Right),               _vte_keymap_GDK_Right},
+       {GDK_KEY (Left),                _vte_keymap_GDK_Left},
+
+       {GDK_KEY (KP_Space),            _vte_keymap_GDK_KP_Space},
+       {GDK_KEY (KP_Tab),              _vte_keymap_GDK_KP_Tab},
+       {GDK_KEY (KP_Enter),            _vte_keymap_GDK_KP_Enter},
+       {GDK_KEY (KP_F1),               _vte_keymap_GDK_KP_F1},
+       {GDK_KEY (KP_F2),               _vte_keymap_GDK_KP_F2},
+       {GDK_KEY (KP_F3),               _vte_keymap_GDK_KP_F3},
+       {GDK_KEY (KP_F4),               _vte_keymap_GDK_KP_F4},
+       {GDK_KEY (KP_Multiply), _vte_keymap_GDK_KP_Multiply},
+       {GDK_KEY (KP_Add),              _vte_keymap_GDK_KP_Add},
+       {GDK_KEY (KP_Separator),        _vte_keymap_GDK_KP_Separator},
+       {GDK_KEY (KP_Subtract), _vte_keymap_GDK_KP_Subtract},
+       {GDK_KEY (KP_Decimal),  _vte_keymap_GDK_KP_Decimal_Delete},
+       {GDK_KEY (KP_Delete),           _vte_keymap_GDK_KP_Decimal_Delete},
+       {GDK_KEY (KP_Divide),           _vte_keymap_GDK_KP_Divide},
+       {GDK_KEY (KP_0),                _vte_keymap_GDK_KP_0},
+       {GDK_KEY (KP_Insert),           _vte_keymap_GDK_KP_Insert},
+       {GDK_KEY (KP_1),                _vte_keymap_GDK_KP_1},
+       {GDK_KEY (KP_End),              _vte_keymap_GDK_KP_End},
+       {GDK_KEY (KP_2),                _vte_keymap_GDK_KP_2},
+       {GDK_KEY (KP_Down),             _vte_keymap_GDK_KP_Down},
+       {GDK_KEY (KP_3),                _vte_keymap_GDK_KP_3},
+       {GDK_KEY (KP_Page_Down),        _vte_keymap_GDK_KP_Page_Down},
+       {GDK_KEY (KP_4),                _vte_keymap_GDK_KP_4},
+       {GDK_KEY (KP_Left),             _vte_keymap_GDK_KP_Left},
+       {GDK_KEY (KP_5),                _vte_keymap_GDK_KP_5},
+       {GDK_KEY (KP_Begin),            _vte_keymap_GDK_KP_Begin},
+       {GDK_KEY (KP_6),                _vte_keymap_GDK_KP_6},
+       {GDK_KEY (KP_Right),            _vte_keymap_GDK_KP_Right},
+       {GDK_KEY (KP_7),                _vte_keymap_GDK_KP_7},
+       {GDK_KEY (KP_Home),             _vte_keymap_GDK_KP_Home},
+       {GDK_KEY (KP_8),                _vte_keymap_GDK_KP_8},
+       {GDK_KEY (KP_Up),               _vte_keymap_GDK_KP_Up},
+       {GDK_KEY (KP_9),                _vte_keymap_GDK_KP_9},
+       {GDK_KEY (KP_Page_Up),  _vte_keymap_GDK_KP_Page_Up},
+
+       {GDK_KEY (F1),          _vte_keymap_GDK_F1},
+       {GDK_KEY (F2),          _vte_keymap_GDK_F2},
+       {GDK_KEY (F3),          _vte_keymap_GDK_F3},
+       {GDK_KEY (F4),          _vte_keymap_GDK_F4},
+       {GDK_KEY (F5),          _vte_keymap_GDK_F5},
+       {GDK_KEY (F6),          _vte_keymap_GDK_F6},
+       {GDK_KEY (F7),          _vte_keymap_GDK_F7},
+       {GDK_KEY (F8),          _vte_keymap_GDK_F8},
+       {GDK_KEY (F9),          _vte_keymap_GDK_F9},
+       {GDK_KEY (F10),         _vte_keymap_GDK_F10},
+       {GDK_KEY (F11),         _vte_keymap_GDK_F11},
+       {GDK_KEY (F12),         _vte_keymap_GDK_F12},
+       {GDK_KEY (F13),         _vte_keymap_GDK_F13},
+       {GDK_KEY (F14),         _vte_keymap_GDK_F14},
+       {GDK_KEY (F15),         _vte_keymap_GDK_F15},
+       {GDK_KEY (F16),         _vte_keymap_GDK_F16},
+       {GDK_KEY (F17),         _vte_keymap_GDK_F17},
+       {GDK_KEY (F18),         _vte_keymap_GDK_F18},
+       {GDK_KEY (F19),         _vte_keymap_GDK_F19},
+       {GDK_KEY (F20),         _vte_keymap_GDK_F20},
+       {GDK_KEY (F21),         _vte_keymap_GDK_F21},
+       {GDK_KEY (F22),         _vte_keymap_GDK_F22},
+       {GDK_KEY (F23),         _vte_keymap_GDK_F23},
+       {GDK_KEY (F24),         _vte_keymap_GDK_F24},
+       {GDK_KEY (F25),         _vte_keymap_GDK_F25},
+       {GDK_KEY (F26),         _vte_keymap_GDK_F26},
+       {GDK_KEY (F27),         _vte_keymap_GDK_F27},
+       {GDK_KEY (F28),         _vte_keymap_GDK_F28},
+       {GDK_KEY (F29),         _vte_keymap_GDK_F29},
+       {GDK_KEY (F30),         _vte_keymap_GDK_F30},
+       {GDK_KEY (F31),         _vte_keymap_GDK_F31},
+       {GDK_KEY (F32),         _vte_keymap_GDK_F32},
+       {GDK_KEY (F33),         _vte_keymap_GDK_F33},
+       {GDK_KEY (F34),         _vte_keymap_GDK_F34},
+       {GDK_KEY (F35),         _vte_keymap_GDK_F35},
+};
+
+/* Map the specified keyval/modifier setup, dependent on the mode, to either
+ * a literal string or a capability name. */
+void
+_vte_keymap_map(guint keyval,
+               GdkModifierType modifiers,
+               gboolean sun_mode,
+               gboolean hp_mode,
+               gboolean legacy_mode,
+               gboolean vt220_mode,
+               gboolean app_cursor_keys,
+               gboolean app_keypad_keys,
+               struct _vte_termcap *termcap,
+               const char *terminal,
+               char **normal,
+               gssize *normal_length,
+               const char **special)
+{
+       gsize i;
+       const struct _vte_keymap_entry *entries;
+       enum _vte_cursor_mode cursor_mode;
+       enum _vte_keypad_mode keypad_mode;
+       enum _vte_fkey_mode fkey_mode;
+       char *cap, *tmp;
+       const char *termcap_special = NULL;
+       char ncurses_buffer[4096];
+       char ncurses_area[512];
+
+       g_return_if_fail(normal != NULL);
+       g_return_if_fail(normal_length != NULL);
+       g_return_if_fail(special != NULL);
+
+       _VTE_DEBUG_IF(VTE_DEBUG_KEYBOARD) 
+               _vte_keysym_print(keyval, modifiers,
+                               sun_mode,
+                               hp_mode,
+                               legacy_mode,
+                               vt220_mode);
+
+       /* Start from scratch. */
+       *normal = NULL;
+       *special = NULL;
+       *normal_length = 0;
+
+       /* Search for the list for this key. */
+       entries = NULL;
+       for (i = 0; i < G_N_ELEMENTS(_vte_keymap); i++) {
+#ifdef VTE_DEBUG
+               int j;
+               GdkModifierType mods;
+               /* Check for NULL strings with non-zero length, and
+                * vice-versa. */
+               entries = _vte_keymap[i].entries;
+               for (j = 0; entries[j].normal_length || entries[j].special[0]; j++) {
+                       if (entries[j].normal_length) {
+                               g_assert(!entries[j].special[0]);
+                       } else {
+                               g_assert(!entries[j].normal[0]);
+                       }
+               }
+               /* Check for coverage. This check is not exhaustive. */
+               fkey_mode = 0;
+               mods = GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK;
+               for (j = 0; entries[j].normal_length || entries[j].special[0]; j++) {
+                       if (entries[j].fkey_mode != fkey_all) {
+                               fkey_mode |= entries[j].fkey_mode;
+                       }
+                       mods &= entries[j].mod_mask;
+               }
+               switch (_vte_keymap[i].keyval) {
+               case GDK_KEY (2):
+               case GDK_KEY (3):
+               case GDK_KEY (4):
+               case GDK_KEY (5):
+               case GDK_KEY (6):
+               case GDK_KEY (7):
+               case GDK_KEY (8):
+                       /* Known non-full-coverage cases. */
+                       break;
+               default:
+                       /* Everything else we double-check. */
+                       g_assert((fkey_mode == 0) || (fkey_mode == fkey_all));
+                       break;
+               }
+               entries = NULL;
+#endif
+               if (_vte_keymap[i].keyval == keyval) {
+                       /* Found it! */
+                       entries = _vte_keymap[i].entries;
+                       break;
+               }
+       }
+       if (entries == NULL) {
+               _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                               " (ignoring, no map for key).\n");
+               return;
+       }
+
+       /* Build mode masks. */
+       cursor_mode = app_cursor_keys ? cursor_app : cursor_default;
+       keypad_mode = app_keypad_keys ? keypad_app : keypad_default;
+       if (sun_mode) {
+               fkey_mode = fkey_sun;
+       } else
+       if (hp_mode) {
+               fkey_mode = fkey_hp;
+       } else
+       if (legacy_mode) {
+               fkey_mode = fkey_legacy;
+       } else
+       if (vt220_mode) {
+               fkey_mode = fkey_vt220;
+       } else {
+               fkey_mode = fkey_default;
+       }
+       modifiers &= (GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
+
+       /* Search for the conditions. */
+       for (i = 0; entries[i].normal_length || entries[i].special[0]; i++)
+       if ((entries[i].cursor_mode & cursor_mode) &&
+           (entries[i].keypad_mode & keypad_mode) &&
+           (entries[i].fkey_mode & fkey_mode))
+       if ((modifiers & entries[i].mod_mask) == entries[i].mod_mask) {
+               if (entries[i].normal_length) {
+                       if (entries[i].normal_length != -1) {
+                               *normal_length = entries[i].normal_length;
+                               *normal = g_memdup(entries[i].normal,
+                                                  entries[i].normal_length);
+                       } else {
+                               *normal_length = strlen(entries[i].normal);
+                               *normal = g_strdup(entries[i].normal);
+                       }
+                       _vte_keymap_key_add_key_modifiers(keyval,
+                                                         modifiers,
+                                                         sun_mode,
+                                                         hp_mode,
+                                                         legacy_mode,
+                                                         vt220_mode,
+                                                         cursor_mode & cursor_app,
+                                                         normal,
+                                                         normal_length);
+                       _VTE_DEBUG_IF(VTE_DEBUG_KEYBOARD) {
+                               int j;
+                               g_printerr(" to '");
+                               for (j = 0; j < *normal_length; j++) {
+                                       if (((*normal)[j] < 32) ||
+                                           ((*normal)[j] >= 127)) {
+                                               g_printerr("<0x%02x>",
+                                                       (*normal)[j]);
+                                       } else {
+                                               g_printerr("%c",
+                                                       (*normal)[j]);
+                                       }
+                               }
+                               g_printerr("'.\n");
+                       }
+                       return;
+               } else {
+                       termcap_special = entries[i].special;
+                       cap = _vte_termcap_find_string(termcap,
+                                                      terminal,
+                                                      entries[i].special);
+                       if (cap != NULL) {
+                               *special = NULL;
+                               if (strlen(cap) > 0) {
+                                       /* Save the special string. */
+                                       *special = entries[i].special;
+                                       _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                                                       " to \"%s\"", *special);
+                               }
+                               g_free(cap);
+                               if (*special != NULL) {
+                                       /* Return the special string. */
+                                       _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                                                       ", returning.\n");
+                                       return;
+                               }
+                       }
+               }
+       }
+       if (termcap_special != NULL) {
+               tmp = g_strdup(terminal);
+               cap = NULL;
+               if (tgetent(ncurses_buffer, tmp) == 1) {
+                       cap = ncurses_area;
+                       tmp = g_strdup(termcap_special);
+                       cap = tgetstr(tmp, &cap);
+               }
+               if ((cap == NULL) && (strstr(terminal, "xterm") != NULL)) {
+                       /* try, try again */
+                       if (tgetent(ncurses_buffer, "xterm-xfree86") == 1) {
+                               cap = ncurses_area;
+                               tmp = g_strdup(termcap_special);
+                               cap = tgetstr(tmp, &cap);
+                       }
+               }
+               g_free(tmp);
+               if ((cap != NULL) && (*cap != '\0')) {
+                       *normal_length = strlen(cap);
+                       *normal = g_strdup(cap);
+#ifdef VTE_DEBUG
+                       if (_vte_debug_on(VTE_DEBUG_KEYBOARD)) {
+                               int j;
+                               g_printerr(" via " VTE_TERMCAP_NAME " to '");
+                               for (j = 0; j < *normal_length; j++) {
+                                       if (((*normal)[j] < 32) ||
+                                           ((*normal)[j] >= 127)) {
+                                               g_printerr("<0x%02x>",
+                                                       (*normal)[j]);
+                                       } else {
+                                               g_printerr("%c",
+                                                       (*normal)[j]);
+                                       }
+                               }
+                               g_printerr("', returning.\n");
+                       }
+#endif
+                       return;
+               }
+       }
+
+       _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                       " (ignoring, no match for modifier state).\n");
+}
+
+gboolean
+_vte_keymap_key_is_modifier(guint keyval)
+{
+       gboolean modifier = FALSE;
+       /* Determine if this is just a modifier key. */
+       switch (keyval) {
+       case GDK_KEY (Alt_L):
+       case GDK_KEY (Alt_R):
+       case GDK_KEY (Caps_Lock):
+       case GDK_KEY (Control_L):
+       case GDK_KEY (Control_R):
+       case GDK_KEY (Eisu_Shift):
+       case GDK_KEY (Hyper_L):
+       case GDK_KEY (Hyper_R):
+       case GDK_KEY (ISO_First_Group_Lock):
+       case GDK_KEY (ISO_Group_Lock):
+       case GDK_KEY (ISO_Group_Shift):
+       case GDK_KEY (ISO_Last_Group_Lock):
+       case GDK_KEY (ISO_Level3_Lock):
+       case GDK_KEY (ISO_Level3_Shift):
+       case GDK_KEY (ISO_Lock):
+       case GDK_KEY (ISO_Next_Group_Lock):
+       case GDK_KEY (ISO_Prev_Group_Lock):
+       case GDK_KEY (Kana_Lock):
+       case GDK_KEY (Kana_Shift):
+       case GDK_KEY (Meta_L):
+       case GDK_KEY (Meta_R):
+       case GDK_KEY (Num_Lock):
+       case GDK_KEY (Scroll_Lock):
+       case GDK_KEY (Shift_L):
+       case GDK_KEY (Shift_Lock):
+       case GDK_KEY (Shift_R):
+       case GDK_KEY (Super_L):
+       case GDK_KEY (Super_R):
+               modifier = TRUE;
+               break;
+       default:
+               modifier = FALSE;
+               break;
+       }
+       return modifier;
+}
+
+static gboolean
+_vte_keymap_key_gets_modifiers(guint keyval)
+{
+       gboolean fkey = FALSE;
+       /* Determine if this key gets modifiers. */
+       switch (keyval) {
+       case GDK_KEY (Up):
+       case GDK_KEY (Down):
+       case GDK_KEY (Left):
+       case GDK_KEY (Right):
+       case GDK_KEY (Insert):
+       case GDK_KEY (Delete):
+       case GDK_KEY (Page_Up):
+       case GDK_KEY (Page_Down):
+       case GDK_KEY (KP_Up):
+       case GDK_KEY (KP_Down):
+       case GDK_KEY (KP_Left):
+       case GDK_KEY (KP_Right):
+       case GDK_KEY (KP_Insert):
+       case GDK_KEY (KP_Delete):
+       case GDK_KEY (KP_Page_Up):
+       case GDK_KEY (KP_Page_Down):
+       case GDK_KEY (F1):
+       case GDK_KEY (F2):
+       case GDK_KEY (F3):
+       case GDK_KEY (F4):
+       case GDK_KEY (F5):
+       case GDK_KEY (F6):
+       case GDK_KEY (F7):
+       case GDK_KEY (F8):
+       case GDK_KEY (F9):
+       case GDK_KEY (F10):
+       case GDK_KEY (F11):
+       case GDK_KEY (F12):
+       case GDK_KEY (F13):
+       case GDK_KEY (F14):
+       case GDK_KEY (F15):
+       case GDK_KEY (F16):
+       case GDK_KEY (F17):
+       case GDK_KEY (F18):
+       case GDK_KEY (F19):
+       case GDK_KEY (F20):
+       case GDK_KEY (F21):
+       case GDK_KEY (F22):
+       case GDK_KEY (F23):
+       case GDK_KEY (F24):
+       case GDK_KEY (F25):
+       case GDK_KEY (F26):
+       case GDK_KEY (F27):
+       case GDK_KEY (F28):
+       case GDK_KEY (F29):
+       case GDK_KEY (F30):
+       case GDK_KEY (F31):
+       case GDK_KEY (F32):
+       case GDK_KEY (F33):
+       case GDK_KEY (F34):
+       case GDK_KEY (F35):
+               fkey = TRUE;
+               break;
+       default:
+               fkey = FALSE;
+               break;
+       }
+       return fkey;
+}
+
+/* Prior and Next are ommitted for the SS3 to CSI switch below */
+static gboolean
+is_cursor_key(guint keyval)
+{
+       switch (keyval) {
+       case GDK_KEY (Home):
+       case GDK_KEY (Left):
+       case GDK_KEY (Up):
+       case GDK_KEY (Right):
+       case GDK_KEY (Down):
+       case GDK_KEY (End):
+
+       case GDK_KEY (KP_Home):
+       case GDK_KEY (KP_Left):
+       case GDK_KEY (KP_Up):
+       case GDK_KEY (KP_Right):
+       case GDK_KEY (KP_Down):
+       case GDK_KEY (KP_End):
+               return TRUE;
+       default:
+               return FALSE;
+       }
+}
+
+
+void
+_vte_keymap_key_add_key_modifiers(guint keyval,
+                                 GdkModifierType modifiers,
+                                 gboolean sun_mode,
+                                 gboolean hp_mode,
+                                 gboolean legacy_mode,
+                                 gboolean vt220_mode,
+                                 gboolean cursor_app_mode,
+                                 char **normal,
+                                 gssize *normal_length)
+{
+       int modifier, offset;
+       char *nnormal;
+       GdkModifierType significant_modifiers;
+
+       significant_modifiers = GDK_SHIFT_MASK |
+                               GDK_CONTROL_MASK |
+                               VTE_META_MASK;
+
+       if (!_vte_keymap_key_gets_modifiers(keyval)) {
+               return;
+       }
+       if (sun_mode || hp_mode || vt220_mode) {
+               /* no modifiers for you! */
+               return;
+       }
+
+       switch (modifiers & significant_modifiers) {
+       case 0:
+               modifier = 0;
+               break;
+       case GDK_SHIFT_MASK:
+               modifier = 2;
+               break;
+       case VTE_META_MASK:
+               modifier = 3;
+               break;
+       case GDK_SHIFT_MASK | VTE_META_MASK:
+               modifier = 4;
+               break;
+       case GDK_CONTROL_MASK:
+               modifier = 5;
+               break;
+       case GDK_SHIFT_MASK | GDK_CONTROL_MASK:
+               modifier = 6;
+               break;
+       case VTE_META_MASK | GDK_CONTROL_MASK:
+               modifier = 7;
+               break;
+       case GDK_SHIFT_MASK | VTE_META_MASK | GDK_CONTROL_MASK:
+               modifier = 8;
+               break;
+       default:
+               modifier = 8;
+               break;
+       }
+
+       if (modifier == 0) {
+               return;
+       }
+
+       nnormal = g_malloc0(*normal_length + 4);
+       memcpy(nnormal, *normal, *normal_length);
+       if (strlen(nnormal) > 1) {
+               /* SS3 should have no modifiers so make it CSI instead. See
+                * http://cvsweb.xfree86.org/cvsweb/xc/programs/xterm/input.c.diff?r1=3.57&r2=3.58
+                */
+               if (cursor_app_mode &&
+                       g_str_has_prefix(nnormal, _VTE_CAP_SS3)
+                       && is_cursor_key(keyval)) {
+                       nnormal[1] = '[';
+               }
+
+               /* Get the offset of the last character. */
+               offset = strlen(nnormal) - 1;
+               if (g_ascii_isdigit(nnormal[offset - 1])) {
+                       /* Stuff a semicolon and the modifier in right before
+                        * that last character. */
+                       nnormal[offset + 2] = nnormal[offset];
+                       nnormal[offset + 1] = modifier + '0';
+                       nnormal[offset + 0] = ';';
+                       *normal_length += 2;
+               } else {
+#if 1
+                       /* Stuff a "1", a semicolon and the modifier in right
+                        * before that last character, matching Xterm. */
+                       nnormal[offset + 3] = nnormal[offset];
+                       nnormal[offset + 2] = modifier + '0';
+                       nnormal[offset + 1] = ';';
+                       nnormal[offset + 0] = '1';
+                       *normal_length += 3;
+#else
+                       /* Stuff the modifier in right before that last
+                        * character, matching what people expect. */
+                       nnormal[offset + 1] = nnormal[offset];
+                       nnormal[offset + 0] = modifier + '0';
+                       *normal_length += 1;
+#endif
+               }
+               g_free(*normal);
+               *normal = nnormal;
+       } else {
+               g_free(nnormal);
+       }
+}
diff --git a/vte/src/keymap.h b/vte/src/keymap.h
new file mode 100644
index 0000000..243e22e
--- /dev/null
+++ b/vte/src/keymap.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_keymap_h_included
+#define vte_keymap_h_included
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include "vtetc.h"
+
+G_BEGIN_DECLS
+
+#define VTE_META_MASK          GDK_META_MASK
+#define VTE_NUMLOCK_MASK       GDK_MOD2_MASK
+
+/* Map the specified keyval/modifier setup, dependent on the mode, to either
+ * a literal string or a capability name. */
+void _vte_keymap_map(guint keyval,
+                    GdkModifierType modifiers,
+                    gboolean sun_mode,
+                    gboolean hp_mode,
+                    gboolean legacy_mode,
+                    gboolean vt220_mode,
+                    gboolean app_cursor_keys,
+                    gboolean app_keypad_keys,
+                    struct _vte_termcap *termcap,
+                    const char *term,
+                    char **normal,
+                    gssize *normal_length,
+                    const char **special);
+
+/* Return TRUE if a keyval is just a modifier key. */
+gboolean _vte_keymap_key_is_modifier(guint keyval);
+
+/* Add modifiers to the sequence if they're needed. */
+void _vte_keymap_key_add_key_modifiers(guint keyval,
+                                      GdkModifierType modifiers,
+                                      gboolean sun_mode,
+                                      gboolean hp_mode,
+                                      gboolean legacy_mode,
+                                      gboolean vt220_mode,
+                                      gboolean app_cursor_keys,
+                                      char **normal,
+                                      gssize *normal_length);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/keysyms.c b/vte/src/keysyms.c
new file mode 100644
index 0000000..c8acee3
--- /dev/null
+++ b/vte/src/keysyms.c
@@ -0,0 +1,1254 @@
+       /* this file is auto-generated -- do not edit */
+       case 0xfe0a: return "GDK_ISO_Prev_Group";
+       case 0xfe0c: return "GDK_ISO_First_Group";
+       case 0xfe0b: return "GDK_ISO_Prev_Group_Lock";
+       case 0xfe0e: return "GDK_ISO_Last_Group";
+       case 0xfe0d: return "GDK_ISO_First_Group_Lock";
+       case 0xfe0f: return "GDK_ISO_Last_Group_Lock";
+       case 0xce5: return "GDK_hebrew_waw";
+       case 0xcf7: return "GDK_hebrew_qoph, GDK_hebrew_kuf";
+       case 0x2a1: return "GDK_Hstroke";
+       case 0xdbd: return "GDK_Thai_fofa";
+       case 0x4df: return "GDK_semivoicedsound";
+       case 0x2bc: return "GDK_jcircumflex";
+       case 0x2bb: return "GDK_gbreve";
+       case 0x9ec: return "GDK_upleftcorner";
+       case 0x9eb: return "GDK_uprightcorner";
+       case 0x9ea: return "GDK_lowrightcorner";
+       case 0xcf9: return "GDK_hebrew_shin";
+       case 0x47e: return "GDK_overline";
+       case 0xce6: return "GDK_hebrew_zain, GDK_hebrew_zayin";
+       case 0x05b: return "GDK_bracketleft";
+       case 0x05c: return "GDK_backslash";
+       case 0x05a: return "GDK_Z";
+       case 0x05f: return "GDK_underscore";
+       case 0x05d: return "GDK_bracketright";
+       case 0x05e: return "GDK_asciicircum";
+       case 0x6c6: return "GDK_Cyrillic_ef";
+       case 0x6c7: return "GDK_Cyrillic_ghe";
+       case 0x6c4: return "GDK_Cyrillic_de";
+       case 0x6c5: return "GDK_Cyrillic_ie";
+       case 0x6c2: return "GDK_Cyrillic_be";
+       case 0x6c3: return "GDK_Cyrillic_tse";
+       case 0x6c0: return "GDK_Cyrillic_yu";
+       case 0x6c1: return "GDK_Cyrillic_a";
+       case 0x5e3: return "GDK_Arabic_kaf";
+       case 0x5e2: return "GDK_Arabic_qaf";
+       case 0x5e1: return "GDK_Arabic_feh";
+       case 0x5e0: return "GDK_Arabic_tatweel";
+       case 0x5e7: return "GDK_Arabic_ha, GDK_Arabic_heh";
+       case 0x5e6: return "GDK_Arabic_noon";
+       case 0x5e5: return "GDK_Arabic_meem";
+       case 0x5e4: return "GDK_Arabic_lam";
+       case 0x5e9: return "GDK_Arabic_alefmaksura";
+       case 0x5e8: return "GDK_Arabic_waw";
+       case 0xab4: return "GDK_threefifths";
+       case 0x2b1: return "GDK_hstroke";
+       case 0x9e5: return "GDK_lf";
+       case 0x13bc: return "GDK_OE";
+       case 0x9e3: return "GDK_ff";
+       case 0x9e2: return "GDK_ht";
+       case 0x9e1: return "GDK_checkerboard";
+       case 0x2b6: return "GDK_hcircumflex";
+       case 0x2b9: return "GDK_idotless";
+       case 0xee4: return "GDK_Hangul_J_Pieub";
+       case 0xecc: return "GDK_Hangul_U";
+       case 0xef4: return "GDK_Hangul_SunkyeongeumPhieuf";
+       case 0x9e9: return "GDK_vt";
+       case 0x9e8: return "GDK_nl";
+       case 0xfe01: return "GDK_ISO_Lock";
+       case 0xfe03: return "GDK_ISO_Level3_Shift";
+       case 0xfe02: return "GDK_ISO_Level2_Latch";
+       case 0xfe05: return "GDK_ISO_Level3_Lock";
+       case 0xfe04: return "GDK_ISO_Level3_Latch";
+       case 0xfe07: return "GDK_ISO_Group_Lock";
+       case 0xfe06: return "GDK_ISO_Group_Latch";
+       case 0xfe09: return "GDK_ISO_Next_Group_Lock";
+       case 0xfe08: return "GDK_ISO_Next_Group";
+       case 0xab1: return "GDK_twothirds";
+       case 0x065: return "GDK_e";
+       case 0xef3: return "GDK_Hangul_KkogjiDalrinIeung";
+       case 0x5ec: return "GDK_Arabic_dammatan";
+       case 0xffee: return "GDK_Hyper_R";
+       case 0x5ea: return "GDK_Arabic_yeh";
+       case 0xfd0c: return "GDK_3270_PA3";
+       case 0x5ef: return "GDK_Arabic_damma";
+       case 0x5ee: return "GDK_Arabic_fatha";
+       case 0x5ed: return "GDK_Arabic_kasratan";
+       case 0x0f3: return "GDK_oacute";
+       case 0x063: return "GDK_c";
+       case 0x7a3: return "GDK_Greek_ETAaccent";
+       case 0xfd0e: return "GDK_3270_Attn";
+       case 0x052: return "GDK_R";
+       case 0x053: return "GDK_S";
+       case 0x050: return "GDK_P";
+       case 0x051: return "GDK_Q";
+       case 0x056: return "GDK_V";
+       case 0x057: return "GDK_W";
+       case 0x054: return "GDK_T";
+       case 0x055: return "GDK_U";
+       case 0x6cf: return "GDK_Cyrillic_o";
+       case 0xffea: return "GDK_Alt_R";
+       case 0x058: return "GDK_X";
+       case 0x059: return "GDK_Y";
+       case 0x6cb: return "GDK_Cyrillic_ka";
+       case 0x6cc: return "GDK_Cyrillic_el";
+       case 0x6ca: return "GDK_Cyrillic_shorti";
+       case 0x0c4: return "GDK_Adiaeresis";
+       case 0x0c5: return "GDK_Aring";
+       case 0x0c6: return "GDK_AE";
+       case 0x0c7: return "GDK_Ccedilla";
+       case 0x0c0: return "GDK_Agrave";
+       case 0xffec: return "GDK_Super_R";
+       case 0x0c2: return "GDK_Acircumflex";
+       case 0x0c3: return "GDK_Atilde";
+       case 0xffeb: return "GDK_Super_L";
+       case 0x0c8: return "GDK_Egrave";
+       case 0x0c9: return "GDK_Eacute";
+       case 0xeab: return "GDK_Hangul_RieulMieum";
+       case 0x0a6: return "GDK_brokenbar";
+       case 0xba9: return "GDK_upcaret";
+       case 0x7c9: return "GDK_Greek_IOTA";
+       case 0x0a7: return "GDK_section";
+       case 0x7c7: return "GDK_Greek_ETA";
+       case 0x7c6: return "GDK_Greek_ZETA";
+       case 0x7c5: return "GDK_Greek_EPSILON";
+       case 0x7c4: return "GDK_Greek_DELTA";
+       case 0x7c3: return "GDK_Greek_GAMMA";
+       case 0x7c2: return "GDK_Greek_BETA";
+       case 0x7c1: return "GDK_Greek_ALPHA";
+       case 0x9e0: return "GDK_soliddiamond";
+       case 0xbd8: return "GDK_rightshoe";
+       case 0xea3: return "GDK_Hangul_KiyeogSios";
+       case 0x20aa: return "GDK_NewSheqelSign";
+       case 0x8da: return "GDK_includedin";
+       case 0xfefd: return "GDK_Pointer_Drag5";
+       case 0xfefc: return "GDK_Pointer_DfltBtnPrev";
+       case 0xfefb: return "GDK_Pointer_DfltBtnNext";
+       case 0xfefa: return "GDK_Pointer_Accelerate";
+       case 0x20a8: return "GDK_RupeeSign";
+       case 0x8dc: return "GDK_intersection";
+       case 0xec9: return "GDK_Hangul_WAE";
+       case 0xec8: return "GDK_Hangul_WA";
+       case 0xad1: return "GDK_rightsinglequotemark";
+       case 0x7cf: return "GDK_Greek_OMICRON";
+       case 0x7ce: return "GDK_Greek_XI";
+       case 0x7cd: return "GDK_Greek_NU";
+       case 0x7cc: return "GDK_Greek_MU";
+       case 0x7cb: return "GDK_Greek_LAMDA, GDK_Greek_LAMBDA";
+       case 0x7ca: return "GDK_Greek_KAPPA";
+       case 0x8dd: return "GDK_union";
+       case 0x0cd: return "GDK_Iacute";
+       case 0x0ce: return "GDK_Icircumflex";
+       case 0x0cf: return "GDK_Idiaeresis";
+       case 0xde5: return "GDK_Thai_lakkhangyao";
+       case 0x0ca: return "GDK_Ecircumflex";
+       case 0x0cb: return "GDK_Ediaeresis";
+       case 0x0cc: return "GDK_Igrave";
+       case 0xaf8: return "GDK_femalesymbol";
+       case 0xfef7: return "GDK_Pointer_Drag3";
+       case 0xfef6: return "GDK_Pointer_Drag2";
+       case 0xfef5: return "GDK_Pointer_Drag1";
+       case 0xfef4: return "GDK_Pointer_Drag_Dflt";
+       case 0xfef3: return "GDK_Pointer_DblClick5";
+       case 0xfef2: return "GDK_Pointer_DblClick4";
+       case 0xfef1: return "GDK_Pointer_DblClick3";
+       case 0xfef0: return "GDK_Pointer_DblClick2";
+       case 0xdaf: return "GDK_Thai_topatak";
+       case 0x6c9: return "GDK_Cyrillic_i";
+       case 0xfef9: return "GDK_Pointer_EnableKeys";
+       case 0xfef8: return "GDK_Pointer_Drag4";
+       case 0xec1: return "GDK_Hangul_YA";
+       case 0xec0: return "GDK_Hangul_AE";
+       case 0xdae: return "GDK_Thai_dochada";
+       case 0xec3: return "GDK_Hangul_EO";
+       case 0xcfa: return "GDK_hebrew_taw, GDK_hebrew_taf";
+       case 0xec2: return "GDK_Hangul_YAE";
+       case 0x6f7: return "GDK_Cyrillic_VE";
+       case 0x1bf: return "GDK_zabovedot";
+       case 0xec5: return "GDK_Hangul_YEO";
+       case 0x1bd: return "GDK_doubleacute";
+       case 0x1be: return "GDK_zcaron";
+       case 0x1bb: return "GDK_tcaron";
+       case 0x1bc: return "GDK_zacute";
+       case 0x1ba: return "GDK_scedilla";
+       case 0xbdc: return "GDK_lefttack";
+       case 0xef9: return "GDK_Hangul_J_KkogjiDalrinIeung";
+       case 0xde8: return "GDK_Thai_maiek";
+       case 0x02c: return "GDK_comma";
+       case 0x02b: return "GDK_plus";
+       case 0x02a: return "GDK_asterisk";
+       case 0xec6: return "GDK_Hangul_YE";
+       case 0x02f: return "GDK_slash";
+       case 0x02e: return "GDK_period";
+       case 0x02d: return "GDK_minus";
+       case 0xecd: return "GDK_Hangul_WEO";
+       case 0x3dd: return "GDK_Utilde";
+       case 0x3de: return "GDK_Umacron";
+       case 0xff55: return "GDK_Prior, GDK_Page_Up";
+       case 0xff54: return "GDK_Down";
+       case 0xff57: return "GDK_End";
+       case 0xff56: return "GDK_Next, GDK_Page_Down";
+       case 0xff51: return "GDK_Left";
+       case 0xff50: return "GDK_Home";
+       case 0xff53: return "GDK_Right";
+       case 0xff52: return "GDK_Up";
+       case 0xadd: return "GDK_filledrighttribullet";
+       case 0xff58: return "GDK_Begin";
+       case 0x7f6: return "GDK_Greek_phi";
+       case 0xfd08: return "GDK_3270_Reset";
+       case 0x029: return "GDK_parenright";
+       case 0x028: return "GDK_parenleft";
+       case 0x023: return "GDK_numbersign";
+       case 0x022: return "GDK_quotedbl";
+       case 0x021: return "GDK_exclam";
+       case 0x020: return "GDK_space";
+       case 0x027: return "GDK_apostrophe, GDK_quoteright";
+       case 0x026: return "GDK_ampersand";
+       case 0x025: return "GDK_percent";
+       case 0x024: return "GDK_dollar";
+       case 0xcf0: return "GDK_hebrew_nun";
+       case 0xcf1: return "GDK_hebrew_samech, GDK_hebrew_samekh";
+       case 0xcf2: return "GDK_hebrew_ayin";
+       case 0xcf3: return "GDK_hebrew_finalpe";
+       case 0xcf4: return "GDK_hebrew_pe";
+       case 0xcf5: return "GDK_hebrew_finalzade, GDK_hebrew_finalzadi";
+       case 0xcf6: return "GDK_hebrew_zade, GDK_hebrew_zadi";
+       case 0x1b9: return "GDK_scaron";
+       case 0x1b6: return "GDK_sacute";
+       case 0x1b7: return "GDK_caron";
+       case 0x1b5: return "GDK_lcaron";
+       case 0x1b2: return "GDK_ogonek";
+       case 0x1b3: return "GDK_lstroke";
+       case 0x1b1: return "GDK_aogonek";
+       case 0xef6: return "GDK_Hangul_AraeA";
+       case 0xef7: return "GDK_Hangul_AraeAE";
+       case 0xece: return "GDK_Hangul_WE";
+       case 0xef5: return "GDK_Hangul_YeorinHieuh";
+       case 0xef2: return "GDK_Hangul_PanSios";
+       case 0xdab: return "GDK_Thai_soso";
+       case 0xef0: return "GDK_Hangul_SunkyeongeumMieum";
+       case 0xef1: return "GDK_Hangul_SunkyeongeumPieub";
+       case 0xef8: return "GDK_Hangul_J_PanSios";
+       case 0xac4: return "GDK_threeeighths";
+       case 0xdca: return "GDK_Thai_sosua";
+       case 0x3d9: return "GDK_Uogonek";
+       case 0x5ac: return "GDK_Arabic_comma";
+       case 0xfd01: return "GDK_3270_Duplicate";
+       case 0x3d2: return "GDK_Omacron";
+       case 0x3d3: return "GDK_Kcedilla";
+       case 0x3d1: return "GDK_Ncedilla";
+       case 0x06e: return "GDK_n";
+       case 0xdc5: return "GDK_Thai_loling";
+       case 0x7a2: return "GDK_Greek_EPSILONaccent";
+       case 0xffe5: return "GDK_Caps_Lock";
+       case 0x06d: return "GDK_m";
+       case 0xff8d: return "GDK_KP_Enter";
+       case 0xebb: return "GDK_Hangul_Khieuq";
+       case 0x06c: return "GDK_l";
+       case 0xdc7: return "GDK_Thai_wowaen";
+       case 0xffe7: return "GDK_Meta_L";
+       case 0xfd05: return "GDK_3270_BackTab";
+       case 0xdc0: return "GDK_Thai_phosamphao";
+       case 0xdc1: return "GDK_Thai_moma";
+       case 0xdc2: return "GDK_Thai_yoyak";
+       case 0xffe6: return "GDK_Shift_Lock";
+       case 0xdc4: return "GDK_Thai_ru";
+       case 0x06a: return "GDK_j";
+       case 0xdc6: return "GDK_Thai_lu";
+       case 0xacd: return "GDK_rightopentriangle";
+       case 0xace: return "GDK_emopencircle";
+       case 0xffe1: return "GDK_Shift_L";
+       case 0xacf: return "GDK_emopenrectangle";
+       case 0xaca: return "GDK_signaturemark";
+       case 0xacc: return "GDK_leftopentriangle";
+       case 0xffe0: return "GDK_F35, GDK_R15";
+       case 0xfe78: return "GDK_Overlay1_Enable";
+       case 0xfe79: return "GDK_Overlay2_Enable";
+       case 0xea4: return "GDK_Hangul_Nieun";
+       case 0xff3b: return "GDK_Hangul_PostHanja";
+       case 0xfe70: return "GDK_AccessX_Enable";
+       case 0xfe71: return "GDK_AccessX_Feedback_Enable";
+       case 0xfe72: return "GDK_RepeatKeys_Enable";
+       case 0xffe2: return "GDK_Shift_R";
+       case 0xfe74: return "GDK_BounceKeys_Enable";
+       case 0xfe75: return "GDK_StickyKeys_Enable";
+       case 0xfe76: return "GDK_MouseKeys_Enable";
+       case 0xfe77: return "GDK_MouseKeys_Accel_Enable";
+       case 0xdde: return "GDK_Thai_maihanakat_maitho";
+       case 0x4a8: return "GDK_kana_i";
+       case 0x4a9: return "GDK_kana_u";
+       case 0xdda: return "GDK_Thai_phinthu";
+       case 0xed6: return "GDK_Hangul_J_KiyeogSios";
+       case 0x4a2: return "GDK_kana_openingbracket";
+       case 0x4a3: return "GDK_kana_closingbracket";
+       case 0x4a1: return "GDK_kana_fullstop";
+       case 0x4a6: return "GDK_kana_WO";
+       case 0x4a7: return "GDK_kana_a";
+       case 0x4a4: return "GDK_kana_comma";
+       case 0x4a5: return "GDK_kana_conjunctive, GDK_kana_middledot";
+       case 0x8c8: return "GDK_approximate";
+       case 0xba3: return "GDK_leftcaret";
+       case 0xdcb: return "GDK_Thai_hohip";
+       case 0xdcc: return "GDK_Thai_lochula";
+       case 0xac9: return "GDK_trademark";
+       case 0xdce: return "GDK_Thai_honokhuk";
+       case 0xdcf: return "GDK_Thai_paiyannoi";
+       case 0xac5: return "GDK_fiveeighths";
+       case 0x0ab: return "GDK_guillemotleft";
+       case 0xff3d: return "GDK_MultipleCandidate, GDK_Zen_Koho, GDK_Hangul_MultipleCandidate";
+       case 0xac3: return "GDK_oneeighth";
+       case 0x0ac: return "GDK_notsign";
+       case 0x7f4: return "GDK_Greek_tau";
+       case 0x7f5: return "GDK_Greek_upsilon";
+       case 0xff80: return "GDK_KP_Space";
+       case 0x7f7: return "GDK_Greek_chi";
+       case 0x7f0: return "GDK_Greek_pi";
+       case 0x7f1: return "GDK_Greek_rho";
+       case 0x7f2: return "GDK_Greek_sigma";
+       case 0x7f3: return "GDK_Greek_finalsmallsigma";
+       case 0xff89: return "GDK_KP_Tab";
+       case 0x7f8: return "GDK_Greek_psi";
+       case 0x7f9: return "GDK_Greek_omega";
+       case 0xdd5: return "GDK_Thai_saraii";
+       case 0xdd4: return "GDK_Thai_sarai";
+       case 0xdd7: return "GDK_Thai_sarauee";
+       case 0xdd6: return "GDK_Thai_saraue";
+       case 0xdd1: return "GDK_Thai_maihanakat";
+       case 0xdd0: return "GDK_Thai_saraa";
+       case 0xdd3: return "GDK_Thai_saraam";
+       case 0xdd2: return "GDK_Thai_saraaa";
+       case 0x4ab: return "GDK_kana_o";
+       case 0x4ac: return "GDK_kana_ya";
+       case 0x4aa: return "GDK_kana_e";
+       case 0x4af: return "GDK_kana_tsu, GDK_kana_tu";
+       case 0xdd8: return "GDK_Thai_sarau";
+       case 0x4ad: return "GDK_kana_yu";
+       case 0x4ae: return "GDK_kana_yo";
+       case 0xad9: return "GDK_latincross";
+       case 0xdf1: return "GDK_Thai_leknung";
+       case 0xada: return "GDK_hexagram";
+       case 0xad0: return "GDK_leftsinglequotemark";
+       case 0xfe7a: return "GDK_AudibleBell_Enable";
+       case 0xad2: return "GDK_leftdoublequotemark";
+       case 0xad3: return "GDK_rightdoublequotemark";
+       case 0xad4: return "GDK_prescription";
+       case 0xadb: return "GDK_filledrectbullet";
+       case 0xad6: return "GDK_minutes";
+       case 0xad7: return "GDK_seconds";
+       case 0xffd6: return "GDK_F25, GDK_R5";
+       case 0xffd7: return "GDK_F26, GDK_R6";
+       case 0xffd4: return "GDK_F23, GDK_R3";
+       case 0xfe73: return "GDK_SlowKeys_Enable";
+       case 0xffd2: return "GDK_F21, GDK_R1";
+       case 0xffd3: return "GDK_F22, GDK_R2";
+       case 0xffd0: return "GDK_F19, GDK_L9";
+       case 0xffd1: return "GDK_F20, GDK_L10";
+       case 0xffffff: return "GDK_VoidSymbol";
+       case 0xffd8: return "GDK_F27, GDK_R7";
+       case 0xffd9: return "GDK_F28, GDK_R8";
+       case 0x1fb: return "GDK_udoubleacute";
+       case 0x8b2: return "GDK_botleftsummation";
+       case 0x8b1: return "GDK_topleftsummation";
+       case 0x8b0: return "GDK_rightmiddlecurlybrace";
+       case 0x1ff: return "GDK_abovedot";
+       case 0x8b6: return "GDK_botrightsummation";
+       case 0x8b5: return "GDK_toprightsummation";
+       case 0x1fe: return "GDK_tcedilla";
+       case 0xdaa: return "GDK_Thai_chochang";
+       case 0xba6: return "GDK_rightcaret";
+       case 0xda3: return "GDK_Thai_khokhuat";
+       case 0xacb: return "GDK_trademarkincircle";
+       case 0xabb: return "GDK_figdash";
+       case 0x5da: return "GDK_Arabic_ghain";
+       case 0xaf9: return "GDK_telephone";
+       case 0xabc: return "GDK_leftanglebracket";
+       case 0xffc3: return "GDK_F6";
+       case 0xffc2: return "GDK_F5";
+       case 0xffc1: return "GDK_F4";
+       case 0xffc0: return "GDK_F3";
+       case 0xffc7: return "GDK_F10";
+       case 0xffc6: return "GDK_F9";
+       case 0xfee8: return "GDK_Pointer_Button_Dflt";
+       case 0xfee9: return "GDK_Pointer_Button1";
+       case 0xfee6: return "GDK_Pointer_DownLeft";
+       case 0xfee7: return "GDK_Pointer_DownRight";
+       case 0xffc9: return "GDK_F12, GDK_L2";
+       case 0xfee5: return "GDK_Pointer_UpRight";
+       case 0xfee2: return "GDK_Pointer_Up";
+       case 0xfee3: return "GDK_Pointer_Down";
+       case 0xfee0: return "GDK_Pointer_Left";
+       case 0xfee1: return "GDK_Pointer_Right";
+       case 0x1f2: return "GDK_ncaron";
+       case 0x1f0: return "GDK_dstroke";
+       case 0x1f1: return "GDK_nacute";
+       case 0x8bf: return "GDK_integral";
+       case 0x8be: return "GDK_greaterthanequal";
+       case 0x1f5: return "GDK_odoubleacute";
+       case 0x20a7: return "GDK_PesetaSign";
+       case 0xdf7: return "GDK_Thai_lekchet";
+       case 0x1f8: return "GDK_rcaron";
+       case 0x1f9: return "GDK_uring";
+       case 0xdf6: return "GDK_Thai_lekhok";
+       case 0xffdf: return "GDK_F34, GDK_R14";
+       case 0xedd: return "GDK_Hangul_J_RieulMieum";
+       case 0xffdd: return "GDK_F32, GDK_R12";
+       case 0xffde: return "GDK_F33, GDK_R13";
+       case 0xffdb: return "GDK_F30, GDK_R10";
+       case 0xffdc: return "GDK_F31, GDK_R11";
+       case 0xffda: return "GDK_F29, GDK_R9";
+       case 0xeca: return "GDK_Hangul_OE";
+       case 0xedf: return "GDK_Hangul_J_RieulSios";
+       case 0xbfc: return "GDK_righttack";
+       case 0xffcc: return "GDK_F15, GDK_L5";
+       case 0xffcb: return "GDK_F14, GDK_L4";
+       case 0xffca: return "GDK_F13, GDK_L3";
+       case 0xeb9: return "GDK_Hangul_SsangJieuj";
+       case 0x20ac: return "GDK_EuroSign";
+       case 0xffcf: return "GDK_F18, GDK_L8";
+       case 0xffce: return "GDK_F17, GDK_L7";
+       case 0xffcd: return "GDK_F16, GDK_L6";
+       case 0xfeef: return "GDK_Pointer_DblClick1";
+       case 0xeb3: return "GDK_Hangul_SsangPieub";
+       case 0xfeed: return "GDK_Pointer_Button5";
+       case 0xff1b: return "GDK_Escape";
+       case 0xfeeb: return "GDK_Pointer_Button3";
+       case 0xfeec: return "GDK_Pointer_Button4";
+       case 0xeb4: return "GDK_Hangul_PieubSios";
+       case 0xfeea: return "GDK_Pointer_Button2";
+       case 0x5d8: return "GDK_Arabic_zah";
+       case 0x5d9: return "GDK_Arabic_ain";
+       case 0x5d4: return "GDK_Arabic_sheen";
+       case 0x5d5: return "GDK_Arabic_sad";
+       case 0x5d6: return "GDK_Arabic_dad";
+       case 0x5d7: return "GDK_Arabic_tah";
+       case 0x5d0: return "GDK_Arabic_thal";
+       case 0x5d1: return "GDK_Arabic_ra";
+       case 0x5d2: return "GDK_Arabic_zain";
+       case 0x5d3: return "GDK_Arabic_seen";
+       case 0xefa: return "GDK_Hangul_J_YeorinHieuh";
+       case 0x2c6: return "GDK_Ccircumflex";
+       case 0x2c5: return "GDK_Cabovedot";
+       case 0xdf4: return "GDK_Thai_leksi";
+       case 0x7ba: return "GDK_Greek_upsilonaccentdieresis";
+       case 0x7bb: return "GDK_Greek_omegaaccent";
+       case 0x3a3: return "GDK_Rcedilla";
+       case 0x0da: return "GDK_Uacute";
+       case 0x0dc: return "GDK_Udiaeresis";
+       case 0x0db: return "GDK_Ucircumflex";
+       case 0x0de: return "GDK_THORN, GDK_Thorn";
+       case 0x0dd: return "GDK_Yacute";
+       case 0x0df: return "GDK_ssharp";
+       case 0xfe34: return "GDK_ISO_Enter";
+       case 0xdcd: return "GDK_Thai_oang";
+       case 0xac6: return "GDK_seveneighths";
+       case 0xfe30: return "GDK_ISO_Continuous_Underline";
+       case 0xfe31: return "GDK_ISO_Discontinuous_Underline";
+       case 0xfe32: return "GDK_ISO_Emphasize";
+       case 0xfe33: return "GDK_ISO_Center_Object";
+       case 0xce9: return "GDK_hebrew_yod";
+       case 0xce8: return "GDK_hebrew_tet, GDK_hebrew_teth";
+       case 0xea5: return "GDK_Hangul_NieunJieuj";
+       case 0x1c6: return "GDK_Cacute";
+       case 0xce1: return "GDK_hebrew_bet, GDK_hebrew_beth";
+       case 0xce0: return "GDK_hebrew_aleph";
+       case 0xce3: return "GDK_hebrew_dalet, GDK_hebrew_daleth";
+       case 0xce2: return "GDK_hebrew_gimel, GDK_hebrew_gimmel";
+       case 0x7a4: return "GDK_Greek_IOTAaccent";
+       case 0xce4: return "GDK_hebrew_he";
+       case 0xce7: return "GDK_hebrew_chet, GDK_hebrew_het";
+       case 0x1c0: return "GDK_Racute";
+       case 0x3c0: return "GDK_Amacron";
+       case 0x3c7: return "GDK_Iogonek";
+       case 0x1c3: return "GDK_Abreve";
+       case 0x069: return "GDK_i";
+       case 0x068: return "GDK_h";
+       case 0x067: return "GDK_g";
+       case 0x066: return "GDK_f";
+       case 0xfd0b: return "GDK_3270_PA2";
+       case 0x064: return "GDK_d";
+       case 0xfd0d: return "GDK_3270_Test";
+       case 0x062: return "GDK_b";
+       case 0x061: return "GDK_a";
+       case 0x060: return "GDK_grave, GDK_quoteleft";
+       case 0x0d1: return "GDK_Ntilde";
+       case 0x0d0: return "GDK_ETH, GDK_Eth";
+       case 0x0d3: return "GDK_Oacute";
+       case 0x0d2: return "GDK_Ograve";
+       case 0x0d5: return "GDK_Otilde";
+       case 0x0d4: return "GDK_Ocircumflex";
+       case 0x0d7: return "GDK_multiply";
+       case 0x0d6: return "GDK_Odiaeresis";
+       case 0x0d9: return "GDK_Ugrave";
+       case 0x0d8: return "GDK_Ooblique";
+       case 0x6ae: return "GDK_Byelorussian_shortu";
+       case 0xdea: return "GDK_Thai_maitri";
+       case 0x7b8: return "GDK_Greek_upsilonaccent";
+       case 0x7b9: return "GDK_Greek_upsilondieresis";
+       case 0x9df: return "GDK_blank";
+       case 0x7b1: return "GDK_Greek_alphaaccent";
+       case 0x7b2: return "GDK_Greek_epsilonaccent";
+       case 0x7b3: return "GDK_Greek_etaaccent";
+       case 0x7b4: return "GDK_Greek_iotaaccent";
+       case 0x6cd: return "GDK_Cyrillic_em";
+       case 0x7b6: return "GDK_Greek_iotaaccentdieresis";
+       case 0x7b7: return "GDK_Greek_omicronaccent";
+       case 0x3cc: return "GDK_Eabovedot";
+       case 0xfd09: return "GDK_3270_Quit";
+       case 0x6ce: return "GDK_Cyrillic_en";
+       case 0x3cf: return "GDK_Imacron";
+       case 0x06f: return "GDK_o";
+       case 0xfd02: return "GDK_3270_FieldMark";
+       case 0xfd03: return "GDK_3270_Right2";
+       case 0xfd04: return "GDK_3270_Left2";
+       case 0x06b: return "GDK_k";
+       case 0xfd06: return "GDK_3270_EraseEOF";
+       case 0xfd07: return "GDK_3270_EraseInput";
+       case 0xcea: return "GDK_hebrew_finalkaph";
+       case 0xcec: return "GDK_hebrew_lamed";
+       case 0xceb: return "GDK_hebrew_kaph";
+       case 0xcee: return "GDK_hebrew_mem";
+       case 0x8b3: return "GDK_topvertsummationconnector";
+       case 0xcef: return "GDK_hebrew_finalnun";
+       case 0x8f6: return "GDK_function";
+       case 0xddf: return "GDK_Thai_baht";
+       case 0xdf8: return "GDK_Thai_lekpaet";
+       case 0x6df: return "GDK_Cyrillic_hardsign";
+       case 0x6de: return "GDK_Cyrillic_che";
+       case 0x6dd: return "GDK_Cyrillic_shcha";
+       case 0x6dc: return "GDK_Cyrillic_e";
+       case 0x6db: return "GDK_Cyrillic_sha";
+       case 0x6da: return "GDK_Cyrillic_ze";
+       case 0xeb6: return "GDK_Hangul_SsangSios";
+       case 0x0c1: return "GDK_Aacute";
+       case 0xade: return "GDK_emfilledcircle";
+       case 0xff6a: return "GDK_Help";
+       case 0xff6b: return "GDK_Break";
+       case 0x7e9: return "GDK_Greek_iota";
+       case 0x7e8: return "GDK_Greek_theta";
+       case 0xff34: return "GDK_Hangul_Hanja";
+       case 0x7e5: return "GDK_Greek_epsilon";
+       case 0x7e4: return "GDK_Greek_delta";
+       case 0x7e7: return "GDK_Greek_eta";
+       case 0x7e6: return "GDK_Greek_zeta";
+       case 0x7e1: return "GDK_Greek_alpha";
+       case 0x7e3: return "GDK_Greek_gamma";
+       case 0x7e2: return "GDK_Greek_beta";
+       case 0x1e6: return "GDK_cacute";
+       case 0x7b5: return "GDK_Greek_iotadieresis";
+       case 0x1e5: return "GDK_lacute";
+       case 0xda5: return "GDK_Thai_khokhon";
+       case 0xecb: return "GDK_Hangul_YO";
+       case 0xbcc: return "GDK_quad";
+       case 0x8ef: return "GDK_partialderivative";
+       case 0xbca: return "GDK_jot";
+       case 0x8fe: return "GDK_downarrow";
+       case 0x8fd: return "GDK_rightarrow";
+       case 0x8fc: return "GDK_uparrow";
+       case 0x8fb: return "GDK_leftarrow";
+       case 0x6d9: return "GDK_Cyrillic_yeru";
+       case 0x6d8: return "GDK_Cyrillic_softsign";
+       case 0x6d7: return "GDK_Cyrillic_ve";
+       case 0x6d6: return "GDK_Cyrillic_zhe";
+       case 0x6d5: return "GDK_Cyrillic_u";
+       case 0x1e0: return "GDK_racute";
+       case 0x6d3: return "GDK_Cyrillic_es";
+       case 0x6d2: return "GDK_Cyrillic_er";
+       case 0x6d1: return "GDK_Cyrillic_ya";
+       case 0x6d0: return "GDK_Cyrillic_pe";
+       case 0xea7: return "GDK_Hangul_Dikeud";
+       case 0xfee4: return "GDK_Pointer_UpLeft";
+       case 0xed4: return "GDK_Hangul_J_Kiyeog";
+       case 0xea6: return "GDK_Hangul_NieunHieuh";
+       case 0xbcf: return "GDK_circle";
+       case 0xff60: return "GDK_Select";
+       case 0x04e: return "GDK_N";
+       case 0xff62: return "GDK_Execute";
+       case 0xff63: return "GDK_Insert";
+       case 0xff65: return "GDK_Undo";
+       case 0xff66: return "GDK_Redo";
+       case 0xff7f: return "GDK_Num_Lock";
+       case 0xff68: return "GDK_Find";
+       case 0xff69: return "GDK_Cancel";
+       case 0x7ef: return "GDK_Greek_omicron";
+       case 0x7ea: return "GDK_Greek_kappa";
+       case 0x6b7: return "GDK_Ukrainian_YI, GDK_Ukranian_YI";
+       case 0x6ac: return "GDK_Macedonia_kje";
+       case 0x7eb: return "GDK_Greek_lamda, GDK_Greek_lambda";
+       case 0xed5: return "GDK_Hangul_J_SsangKiyeog";
+       case 0xdf0: return "GDK_Thai_leksun";
+       case 0xea1: return "GDK_Hangul_Kiyeog";
+       case 0xaac: return "GDK_signifblank";
+       case 0xdd9: return "GDK_Thai_sarauu";
+       case 0x7c8: return "GDK_Greek_THETA";
+       case 0x2de: return "GDK_Scircumflex";
+       case 0x2dd: return "GDK_Ubreve";
+       case 0x1a9: return "GDK_Scaron";
+       case 0xed2: return "GDK_Hangul_YI";
+       case 0xab6: return "GDK_onesixth";
+       case 0x1a3: return "GDK_Lstroke";
+       case 0x1a2: return "GDK_breve";
+       case 0x1a1: return "GDK_Aogonek";
+       case 0xed3: return "GDK_Hangul_I";
+       case 0x1a6: return "GDK_Sacute";
+       case 0x1a5: return "GDK_Lcaron";
+       case 0x03d: return "GDK_equal";
+       case 0x03e: return "GDK_greater";
+       case 0x03f: return "GDK_question";
+       case 0xee0: return "GDK_Hangul_J_RieulTieut";
+       case 0xee7: return "GDK_Hangul_J_SsangSios";
+       case 0x03a: return "GDK_colon";
+       case 0x03b: return "GDK_semicolon";
+       case 0x03c: return "GDK_less";
+       case 0xee9: return "GDK_Hangul_J_Jieuj";
+       case 0xffc5: return "GDK_F8";
+       case 0x4bf: return "GDK_kana_SO";
+       case 0x4be: return "GDK_kana_SE";
+       case 0x4bd: return "GDK_kana_SU";
+       case 0x4bc: return "GDK_kana_SHI";
+       case 0x4bb: return "GDK_kana_SA";
+       case 0x4ba: return "GDK_kana_KO";
+       case 0xec7: return "GDK_Hangul_O";
+       case 0xed7: return "GDK_Hangul_J_Nieun";
+       case 0x7ab: return "GDK_Greek_OMEGAaccent";
+       case 0x0f4: return "GDK_ocircumflex";
+       case 0x1ac: return "GDK_Zacute";
+       case 0x1ab: return "GDK_Tcaron";
+       case 0x1aa: return "GDK_Scedilla";
+       case 0x1af: return "GDK_Zabovedot";
+       case 0x1ae: return "GDK_Zcaron";
+       case 0x2d8: return "GDK_Gcircumflex";
+       case 0x1cc: return "GDK_Ecaron";
+       case 0xfe60: return "GDK_dead_belowdot";
+       case 0x20a1: return "GDK_ColonSign";
+       case 0xed0: return "GDK_Hangul_YU";
+       case 0x2d5: return "GDK_Gabovedot";
+       case 0x4b7: return "GDK_kana_KI";
+       case 0x4b6: return "GDK_kana_KA";
+       case 0x4b5: return "GDK_kana_O";
+       case 0x4b4: return "GDK_kana_E";
+       case 0x4b3: return "GDK_kana_U";
+       case 0x4b2: return "GDK_kana_I";
+       case 0x4b1: return "GDK_kana_A";
+       case 0x4b0: return "GDK_prolongedsound";
+       case 0x4b9: return "GDK_kana_KE";
+       case 0x4b8: return "GDK_kana_KU";
+       case 0x034: return "GDK_4";
+       case 0x035: return "GDK_5";
+       case 0x036: return "GDK_6";
+       case 0x037: return "GDK_7";
+       case 0x030: return "GDK_0";
+       case 0x031: return "GDK_1";
+       case 0x032: return "GDK_2";
+       case 0x033: return "GDK_3";
+       case 0xed1: return "GDK_Hangul_EU";
+       case 0x038: return "GDK_8";
+       case 0x3bf: return "GDK_eng";
+       case 0xdb2: return "GDK_Thai_thophuthao";
+       case 0xab8: return "GDK_careof";
+       case 0x8cd: return "GDK_ifonlyif";
+       case 0x8ce: return "GDK_implies";
+       case 0x8cf: return "GDK_identical";
+       case 0xab5: return "GDK_fourfifths";
+       case 0xab2: return "GDK_onefifth";
+       case 0xab3: return "GDK_twofifths";
+       case 0xab0: return "GDK_onethird";
+       case 0x07e: return "GDK_asciitilde";
+       case 0xff91: return "GDK_KP_F1";
+       case 0xffed: return "GDK_Hyper_L";
+       case 0xff93: return "GDK_KP_F3";
+       case 0xff92: return "GDK_KP_F2";
+       case 0xff95: return "GDK_KP_Home";
+       case 0xff94: return "GDK_KP_F4";
+       case 0xff97: return "GDK_KP_Up";
+       case 0xff96: return "GDK_KP_Left";
+       case 0xff99: return "GDK_KP_Down";
+       case 0xff98: return "GDK_KP_Right";
+       case 0x0a4: return "GDK_currency";
+       case 0x0a5: return "GDK_yen";
+       case 0x0a2: return "GDK_cent";
+       case 0x0a3: return "GDK_sterling";
+       case 0x0a0: return "GDK_nobreakspace";
+       case 0x0a1: return "GDK_exclamdown";
+       case 0xde6: return "GDK_Thai_maiyamok";
+       case 0xde7: return "GDK_Thai_maitaikhu";
+       case 0xde4: return "GDK_Thai_saraaimaimalai";
+       case 0x6d4: return "GDK_Cyrillic_te";
+       case 0xde2: return "GDK_Thai_sarao";
+       case 0xde3: return "GDK_Thai_saraaimaimuan";
+       case 0xde0: return "GDK_Thai_sarae";
+       case 0xde1: return "GDK_Thai_saraae";
+       case 0x7a8: return "GDK_Greek_UPSILONaccent";
+       case 0x8b7: return "GDK_rightmiddlesummation";
+       case 0xde9: return "GDK_Thai_maitho";
+       case 0xff2d: return "GDK_Kana_Lock";
+       case 0xff2e: return "GDK_Kana_Shift";
+       case 0xff2f: return "GDK_Eisu_Shift";
+       case 0xff2a: return "GDK_Zenkaku_Hankaku";
+       case 0xff2b: return "GDK_Touroku";
+       case 0xff2c: return "GDK_Massyo";
+       case 0x7af: return "GDK_Greek_horizbar";
+       case 0xff9a: return "GDK_KP_Prior, GDK_KP_Page_Up";
+       case 0xffe4: return "GDK_Control_R";
+       case 0xff9c: return "GDK_KP_End";
+       case 0xff9b: return "GDK_KP_Next, GDK_KP_Page_Down";
+       case 0xff9e: return "GDK_KP_Insert";
+       case 0xff9d: return "GDK_KP_Begin";
+       case 0xffe3: return "GDK_Control_L";
+       case 0xff9f: return "GDK_KP_Delete";
+       case 0x0af: return "GDK_macron";
+       case 0x0ad: return "GDK_hyphen";
+       case 0x0ae: return "GDK_registered";
+       case 0xffe9: return "GDK_Alt_L";
+       case 0xffe8: return "GDK_Meta_R";
+       case 0x0aa: return "GDK_ordfeminine";
+       case 0xeba: return "GDK_Hangul_Cieuc";
+       case 0xda9: return "GDK_Thai_choching";
+       case 0xfd0a: return "GDK_3270_PA1";
+       case 0x8c9: return "GDK_similarequal";
+       case 0xabf: return "GDK_marker";
+       case 0x8c5: return "GDK_nabla";
+       case 0xabd: return "GDK_decimalpoint";
+       case 0xabe: return "GDK_rightanglebracket";
+       case 0x8c0: return "GDK_therefore";
+       case 0x8c1: return "GDK_variation";
+       case 0x8c2: return "GDK_infinity";
+       case 0xff24: return "GDK_Romaji";
+       case 0xff25: return "GDK_Hiragana";
+       case 0xff26: return "GDK_Katakana";
+       case 0xff27: return "GDK_Hiragana_Katakana";
+       case 0xff20: return "GDK_Multi_key";
+       case 0xff21: return "GDK_Kanji";
+       case 0xff22: return "GDK_Muhenkan";
+       case 0xff23: return "GDK_Henkan_Mode, GDK_Henkan";
+       case 0xcdf: return "GDK_hebrew_doublelowline";
+       case 0xff28: return "GDK_Zenkaku";
+       case 0xff29: return "GDK_Hankaku";
+       case 0xded: return "GDK_Thai_nikhahit";
+       case 0xdeb: return "GDK_Thai_maichattawa";
+       case 0xdec: return "GDK_Thai_thanthakhat";
+       case 0xebc: return "GDK_Hangul_Tieut";
+       case 0xab7: return "GDK_fivesixths";
+       case 0xfed5: return "GDK_Terminate_Server";
+       case 0xfed4: return "GDK_Last_Virtual_Screen";
+       case 0x6c8: return "GDK_Cyrillic_ha";
+       case 0xfed1: return "GDK_Prev_Virtual_Screen";
+       case 0xfed0: return "GDK_First_Virtual_Screen";
+       case 0xfed2: return "GDK_Next_Virtual_Screen";
+       case 0xced: return "GDK_hebrew_finalmem";
+       case 0x1e8: return "GDK_ccaron";
+       case 0xfe2c: return "GDK_ISO_Fast_Cursor_Left";
+       case 0xfe2b: return "GDK_ISO_Release_Both_Margins";
+       case 0xfe2a: return "GDK_ISO_Release_Margin_Right";
+       case 0x8b4: return "GDK_botvertsummationconnector";
+       case 0x1e3: return "GDK_abreve";
+       case 0xfe2f: return "GDK_ISO_Fast_Cursor_Down";
+       case 0xfe2e: return "GDK_ISO_Fast_Cursor_Up";
+       case 0xfe2d: return "GDK_ISO_Fast_Cursor_Right";
+       case 0x6a4: return "GDK_Ukrainian_ie, GDK_Ukranian_je";
+       case 0x6a5: return "GDK_Macedonia_dse";
+       case 0x6a6: return "GDK_Ukrainian_i, GDK_Ukranian_i";
+       case 0x6a7: return "GDK_Ukrainian_yi, GDK_Ukranian_yi";
+       case 0x7d1: return "GDK_Greek_RHO";
+       case 0x6a1: return "GDK_Serbian_dje";
+       case 0x6a2: return "GDK_Macedonia_gje";
+       case 0x6a3: return "GDK_Cyrillic_io";
+       case 0x6a8: return "GDK_Cyrillic_je, GDK_Serbian_je";
+       case 0x6a9: return "GDK_Cyrillic_lje, GDK_Serbian_lje";
+       case 0xea9: return "GDK_Hangul_Rieul";
+       case 0xea8: return "GDK_Hangul_SsangDikeud";
+       case 0xdc8: return "GDK_Thai_sosala";
+       case 0xeaa: return "GDK_Hangul_RieulKiyeog";
+       case 0xff61: return "GDK_Print";
+       case 0x3bd: return "GDK_ENG";
+       case 0x07a: return "GDK_z";
+       case 0x07b: return "GDK_braceleft";
+       case 0x07c: return "GDK_bar";
+       case 0x07d: return "GDK_braceright";
+       case 0x3ba: return "GDK_emacron";
+       case 0x3bb: return "GDK_gcedilla";
+       case 0x3bc: return "GDK_tslash";
+       case 0x5c9: return "GDK_Arabic_tehmarbuta";
+       case 0x5c8: return "GDK_Arabic_beh";
+       case 0xaae: return "GDK_ellipsis";
+       case 0x5c1: return "GDK_Arabic_hamza";
+       case 0x5c3: return "GDK_Arabic_hamzaonalef";
+       case 0x5c2: return "GDK_Arabic_maddaonalef";
+       case 0x5c5: return "GDK_Arabic_hamzaunderalef";
+       case 0x5c4: return "GDK_Arabic_hamzaonwaw";
+       case 0x5c7: return "GDK_Arabic_alef";
+       case 0x5c6: return "GDK_Arabic_hamzaonyeh";
+       case 0xdc9: return "GDK_Thai_sorusi";
+       case 0x4c0: return "GDK_kana_TA";
+       case 0x6af: return "GDK_Cyrillic_dzhe, GDK_Serbian_dze";
+       case 0xead: return "GDK_Hangul_RieulSios";
+       case 0xeac: return "GDK_Hangul_RieulPieub";
+       case 0x6aa: return "GDK_Cyrillic_nje, GDK_Serbian_nje";
+       case 0x6ab: return "GDK_Serbian_tshe";
+       case 0x4c1: return "GDK_kana_CHI, GDK_kana_TI";
+       case 0xba8: return "GDK_downcaret";
+       case 0xff67: return "GDK_Menu";
+       case 0xadf: return "GDK_emfilledrect";
+       case 0x7ee: return "GDK_Greek_xi";
+       case 0xfe29: return "GDK_ISO_Release_Margin_Left";
+       case 0xfe28: return "GDK_ISO_Set_Margin_Right";
+       case 0x7ed: return "GDK_Greek_nu";
+       case 0xfe23: return "GDK_ISO_Partial_Line_Up";
+       case 0x1ef: return "GDK_dcaron";
+       case 0xfe21: return "GDK_ISO_Move_Line_Up";
+       case 0xfe20: return "GDK_ISO_Left_Tab";
+       case 0xfe27: return "GDK_ISO_Set_Margin_Left";
+       case 0xfe26: return "GDK_ISO_Partial_Space_Right";
+       case 0xfe25: return "GDK_ISO_Partial_Space_Left";
+       case 0xfe24: return "GDK_ISO_Partial_Line_Down";
+       case 0xeb0: return "GDK_Hangul_RieulHieuh";
+       case 0x4c6: return "GDK_kana_NI";
+       case 0xed9: return "GDK_Hangul_J_NieunHieuh";
+       case 0x5ca: return "GDK_Arabic_teh";
+       case 0x5cc: return "GDK_Arabic_jeem";
+       case 0x4c7: return "GDK_kana_NU";
+       case 0x5ce: return "GDK_Arabic_khah";
+       case 0x5cd: return "GDK_Arabic_hah";
+       case 0x5cf: return "GDK_Arabic_dal";
+       case 0x078: return "GDK_x";
+       case 0x079: return "GDK_y";
+       case 0x7ec: return "GDK_Greek_mu";
+       case 0x070: return "GDK_p";
+       case 0x071: return "GDK_q";
+       case 0x072: return "GDK_r";
+       case 0x073: return "GDK_s";
+       case 0x074: return "GDK_t";
+       case 0x075: return "GDK_u";
+       case 0x076: return "GDK_v";
+       case 0x077: return "GDK_w";
+       case 0x0e2: return "GDK_acircumflex";
+       case 0x0e3: return "GDK_atilde";
+       case 0x0e0: return "GDK_agrave";
+       case 0x0e1: return "GDK_aacute";
+       case 0x0e6: return "GDK_ae";
+       case 0x0e7: return "GDK_ccedilla";
+       case 0x0e4: return "GDK_adiaeresis";
+       case 0x0e5: return "GDK_aring";
+       case 0x0e8: return "GDK_egrave";
+       case 0x0e9: return "GDK_eacute";
+       case 0xea2: return "GDK_Hangul_SsangKiyeog";
+       case 0xfd17: return "GDK_3270_Setup";
+       case 0xfd16: return "GDK_3270_Play";
+       case 0xfd15: return "GDK_3270_Copy";
+       case 0xfd14: return "GDK_3270_Rule";
+       case 0xfd13: return "GDK_3270_Ident";
+       case 0xfd12: return "GDK_3270_Jump";
+       case 0xfd11: return "GDK_3270_KeyClick";
+       case 0xfe22: return "GDK_ISO_Move_Line_Down";
+       case 0xffaa: return "GDK_KP_Multiply";
+       case 0xff3a: return "GDK_Hangul_PreHanja";
+       case 0xffac: return "GDK_KP_Separator";
+       case 0xffab: return "GDK_KP_Add";
+       case 0xffae: return "GDK_KP_Decimal";
+       case 0xffad: return "GDK_KP_Subtract";
+       case 0xfd19: return "GDK_3270_ChangeScreen";
+       case 0xfd18: return "GDK_3270_Record";
+       case 0xafb: return "GDK_phonographcopyright";
+       case 0x041: return "GDK_A";
+       case 0xda8: return "GDK_Thai_chochan";
+       case 0xafa: return "GDK_telephonerecorder";
+       case 0xaff: return "GDK_cursor";
+       case 0xfe58: return "GDK_dead_abovering";
+       case 0xfe59: return "GDK_dead_doubleacute";
+       case 0xfe56: return "GDK_dead_abovedot";
+       case 0x1ec: return "GDK_ecaron";
+       case 0xfe54: return "GDK_dead_macron";
+       case 0xfe55: return "GDK_dead_breve";
+       case 0xfe52: return "GDK_dead_circumflex";
+       case 0xfe53: return "GDK_dead_tilde";
+       case 0xfe50: return "GDK_dead_grave";
+       case 0xfe51: return "GDK_dead_acute";
+       case 0xaaa: return "GDK_endash";
+       case 0x20a9: return "GDK_WonSign";
+       case 0x042: return "GDK_B";
+       case 0x1ea: return "GDK_eogonek";
+       case 0x20a3: return "GDK_FFrancSign";
+       case 0x20a2: return "GDK_CruzeiroSign";
+       case 0xebf: return "GDK_Hangul_A";
+       case 0xfd1e: return "GDK_3270_Enter";
+       case 0xfd1d: return "GDK_3270_PrintScreen";
+       case 0xfd1c: return "GDK_3270_CursorSelect";
+       case 0xfd1b: return "GDK_3270_ExSelect";
+       case 0xfd1a: return "GDK_3270_DeleteWord";
+       case 0x3a2: return "GDK_kra, GDK_kappa";
+       case 0xffc4: return "GDK_F7";
+       case 0x0eb: return "GDK_ediaeresis";
+       case 0x0ec: return "GDK_igrave";
+       case 0x0ea: return "GDK_ecircumflex";
+       case 0x0ef: return "GDK_idiaeresis";
+       case 0x0ed: return "GDK_iacute";
+       case 0x0ee: return "GDK_icircumflex";
+       case 0xee1: return "GDK_Hangul_J_RieulPhieuf";
+       case 0xff13: return "GDK_Pause";
+       case 0xcf8: return "GDK_hebrew_resh";
+       case 0xed8: return "GDK_Hangul_J_NieunJieuj";
+       case 0xffc8: return "GDK_F11, GDK_L1";
+       case 0x20a4: return "GDK_LiraSign";
+       case 0x7d8: return "GDK_Greek_PSI";
+       case 0x7d9: return "GDK_Greek_OMEGA";
+       case 0x7d6: return "GDK_Greek_PHI";
+       case 0xff15: return "GDK_Sys_Req";
+       case 0x7d4: return "GDK_Greek_TAU";
+       case 0x7d5: return "GDK_Greek_UPSILON";
+       case 0x7d2: return "GDK_Greek_SIGMA";
+       case 0x7d0: return "GDK_Greek_PI";
+       case 0xff14: return "GDK_Scroll_Lock";
+       case 0xaf2: return "GDK_doubledagger";
+       case 0xaf3: return "GDK_checkmark";
+       case 0xaf0: return "GDK_maltesecross";
+       case 0xaf1: return "GDK_dagger";
+       case 0xaf6: return "GDK_musicalflat";
+       case 0xaf7: return "GDK_malesymbol";
+       case 0xaf4: return "GDK_ballotcross";
+       case 0xaf5: return "GDK_musicalsharp";
+       case 0xfe5f: return "GDK_dead_semivoiced_sound";
+       case 0xdac: return "GDK_Thai_chochoe";
+       case 0xfe5d: return "GDK_dead_iota";
+       case 0xfe5e: return "GDK_dead_voiced_sound";
+       case 0xfe5b: return "GDK_dead_cedilla";
+       case 0xfe5c: return "GDK_dead_ogonek";
+       case 0xdad: return "GDK_Thai_yoying";
+       case 0xfe5a: return "GDK_dead_caron";
+       case 0x8bc: return "GDK_lessthanequal";
+       case 0x5cb: return "GDK_Arabic_theh";
+       case 0xdf5: return "GDK_Thai_lekha";
+       case 0x6e8: return "GDK_Cyrillic_HA";
+       case 0x6e9: return "GDK_Cyrillic_I";
+       case 0x20a6: return "GDK_NairaSign";
+       case 0xee5: return "GDK_Hangul_J_PieubSios";
+       case 0x6e0: return "GDK_Cyrillic_YU";
+       case 0x6e1: return "GDK_Cyrillic_A";
+       case 0x6e2: return "GDK_Cyrillic_BE";
+       case 0x6e3: return "GDK_Cyrillic_TSE";
+       case 0x6e4: return "GDK_Cyrillic_DE";
+       case 0x6e5: return "GDK_Cyrillic_IE";
+       case 0x6e6: return "GDK_Cyrillic_EF";
+       case 0x6e7: return "GDK_Cyrillic_GHE";
+       case 0x8bd: return "GDK_notequal";
+       case 0xbc2: return "GDK_downtack";
+       case 0xbc3: return "GDK_upshoe";
+       case 0xbc0: return "GDK_overbar";
+       case 0x3fd: return "GDK_utilde";
+       case 0x3fe: return "GDK_umacron";
+       case 0xbc4: return "GDK_downstile";
+       case 0xaa2: return "GDK_enspace";
+       case 0x6be: return "GDK_Byelorussian_SHORTU";
+       case 0xede: return "GDK_Hangul_J_RieulPieub";
+       case 0x0a8: return "GDK_diaeresis";
+       case 0x6bf: return "GDK_Cyrillic_DZHE, GDK_Serbian_DZE";
+       case 0x6ba: return "GDK_Cyrillic_NJE, GDK_Serbian_NJE";
+       case 0xeda: return "GDK_Hangul_J_Dikeud";
+       case 0x6bc: return "GDK_Macedonia_KJE";
+       case 0x6bb: return "GDK_Serbian_TSHE";
+       case 0x20ab: return "GDK_DongSign";
+       case 0xee3: return "GDK_Hangul_J_Mieum";
+       case 0x9ef: return "GDK_horizlinescan1";
+       case 0x7a1: return "GDK_Greek_ALPHAaccent";
+       case 0xee2: return "GDK_Hangul_J_RieulHieuh";
+       case 0x6ea: return "GDK_Cyrillic_SHORTI";
+       case 0x6eb: return "GDK_Cyrillic_KA";
+       case 0x6ec: return "GDK_Cyrillic_EL";
+       case 0x6ed: return "GDK_Cyrillic_EM";
+       case 0x6ee: return "GDK_Cyrillic_EN";
+       case 0x6ef: return "GDK_Cyrillic_O";
+       case 0xeb8: return "GDK_Hangul_Jieuj";
+       case 0x3b5: return "GDK_itilde";
+       case 0x0a9: return "GDK_copyright";
+       case 0x3b6: return "GDK_lcedilla";
+       case 0xee6: return "GDK_Hangul_J_Sios";
+       case 0x3f1: return "GDK_ncedilla";
+       case 0x3f2: return "GDK_omacron";
+       case 0x3f3: return "GDK_kcedilla";
+       case 0x6b9: return "GDK_Cyrillic_LJE, GDK_Serbian_LJE";
+       case 0x6b8: return "GDK_Cyrillic_JE, GDK_Serbian_JE";
+       case 0xbce: return "GDK_uptack";
+       case 0x6b5: return "GDK_Macedonia_DSE";
+       case 0x3f9: return "GDK_uogonek";
+       case 0xff7e: return "GDK_Mode_switch, GDK_script_switch, GDK_ISO_Group_Shift, GDK_kana_switch, 
GDK_Arabic_switch, GDK_Greek_switch, GDK_Hebrew_switch, GDK_Hangul_switch";
+       case 0x6b6: return "GDK_Ukrainian_I, GDK_Ukranian_I";
+       case 0x6b1: return "GDK_Serbian_DJE";
+       case 0x6b0: return "GDK_numerosign";
+       case 0x6b3: return "GDK_Cyrillic_IO";
+       case 0x6b2: return "GDK_Macedonia_GJE";
+       case 0x5f2: return "GDK_Arabic_sukun";
+       case 0x5f0: return "GDK_Arabic_kasra";
+       case 0x5f1: return "GDK_Arabic_shadda";
+       case 0xda6: return "GDK_Thai_khorakhang";
+       case 0x3b3: return "GDK_rcedilla";
+       case 0x9ed: return "GDK_lowleftcorner";
+       case 0x2e5: return "GDK_cabovedot";
+       case 0x2e6: return "GDK_ccircumflex";
+       case 0xdc3: return "GDK_Thai_rorua";
+       case 0x0bc: return "GDK_onequarter";
+       case 0x0bb: return "GDK_guillemotright";
+       case 0x0ba: return "GDK_masculine";
+       case 0x0bf: return "GDK_questiondown";
+       case 0x0be: return "GDK_threequarters";
+       case 0x0bd: return "GDK_onehalf";
+       case 0x9f8: return "GDK_vertbar";
+       case 0x9f2: return "GDK_horizlinescan7";
+       case 0x9f3: return "GDK_horizlinescan9";
+       case 0x9f0: return "GDK_horizlinescan3";
+       case 0x9f1: return "GDK_horizlinescan5";
+       case 0x9f6: return "GDK_bott";
+       case 0x9f7: return "GDK_topt";
+       case 0x9f4: return "GDK_leftt";
+       case 0x9f5: return "GDK_rightt";
+       case 0x4de: return "GDK_voicedsound";
+       case 0x4dd: return "GDK_kana_N";
+       case 0x4c2: return "GDK_kana_TSU, GDK_kana_TU";
+       case 0x4c3: return "GDK_kana_TE";
+       case 0x4da: return "GDK_kana_RE";
+       case 0x4c5: return "GDK_kana_NA";
+       case 0x4dc: return "GDK_kana_WA";
+       case 0x4db: return "GDK_kana_RO";
+       case 0x4c8: return "GDK_kana_NE";
+       case 0x4c9: return "GDK_kana_NO";
+       case 0xee8: return "GDK_Hangul_J_Ieung";
+       case 0x3a5: return "GDK_Itilde";
+       case 0x040: return "GDK_at";
+       case 0x043: return "GDK_C";
+       case 0x3a6: return "GDK_Lcedilla";
+       case 0x045: return "GDK_E";
+       case 0x044: return "GDK_D";
+       case 0x047: return "GDK_G";
+       case 0x046: return "GDK_F";
+       case 0x049: return "GDK_I";
+       case 0x048: return "GDK_H";
+       case 0x7a5: return "GDK_Greek_IOTAdiaeresis";
+       case 0x7ae: return "GDK_Greek_accentdieresis";
+       case 0xdf3: return "GDK_Thai_leksam";
+       case 0xaa9: return "GDK_emdash";
+       case 0xaa8: return "GDK_hairspace";
+       case 0xeec: return "GDK_Hangul_J_Tieut";
+       case 0xaa3: return "GDK_em3space";
+       case 0x9e4: return "GDK_cr";
+       case 0xaa1: return "GDK_emspace";
+       case 0xaa7: return "GDK_thinspace";
+       case 0xaa6: return "GDK_punctspace";
+       case 0xaa5: return "GDK_digitspace";
+       case 0xaa4: return "GDK_em4space";
+       case 0x0b9: return "GDK_onesuperior";
+       case 0x0b8: return "GDK_cedilla";
+       case 0x0b3: return "GDK_threesuperior";
+       case 0x0b2: return "GDK_twosuperior";
+       case 0x0b1: return "GDK_plusminus";
+       case 0x0b0: return "GDK_degree";
+       case 0x0b7: return "GDK_periodcentered";
+       case 0x0b6: return "GDK_paragraph";
+       case 0x0b5: return "GDK_mu";
+       case 0x0b4: return "GDK_acute";
+       case 0x04a: return "GDK_J";
+       case 0xdf2: return "GDK_Thai_leksong";
+       case 0x04c: return "GDK_L";
+       case 0x04b: return "GDK_K";
+       case 0x3aa: return "GDK_Emacron";
+       case 0x04d: return "GDK_M";
+       case 0x3ac: return "GDK_Tslash";
+       case 0x3ab: return "GDK_Gcedilla";
+       case 0xdf9: return "GDK_Thai_lekkao";
+       case 0x04f: return "GDK_O";
+       case 0x13bd: return "GDK_oe";
+       case 0x13be: return "GDK_Ydiaeresis";
+       case 0x4d5: return "GDK_kana_YU";
+       case 0x4ca: return "GDK_kana_HA";
+       case 0x4cb: return "GDK_kana_HI";
+       case 0x4cc: return "GDK_kana_FU, GDK_kana_HU";
+       case 0x4d1: return "GDK_kana_MU";
+       case 0x4d0: return "GDK_kana_MI";
+       case 0x4d3: return "GDK_kana_MO";
+       case 0x4d2: return "GDK_kana_ME";
+       case 0x7a7: return "GDK_Greek_OMICRONaccent";
+       case 0xae0: return "GDK_enopencircbullet";
+       case 0x4d9: return "GDK_kana_RU";
+       case 0x4d8: return "GDK_kana_RI";
+       case 0x6fa: return "GDK_Cyrillic_ZE";
+       case 0xeea: return "GDK_Hangul_J_Cieuc";
+       case 0x6fc: return "GDK_Cyrillic_E";
+       case 0xfeee: return "GDK_Pointer_DblClick_Dflt";
+       case 0x6fe: return "GDK_Cyrillic_CHE";
+       case 0x6fd: return "GDK_Cyrillic_SHCHA";
+       case 0x6ff: return "GDK_Cyrillic_HARDSIGN";
+       case 0xbd3: return "GDK_upstile";
+       case 0xeb2: return "GDK_Hangul_Pieub";
+       case 0xfd10: return "GDK_3270_AltCursor";
+       case 0xbd6: return "GDK_downshoe";
+       case 0xeb7: return "GDK_Hangul_Ieung";
+       case 0xec4: return "GDK_Hangul_E";
+       case 0xedc: return "GDK_Hangul_J_RieulKiyeog";
+       case 0x1db: return "GDK_Udoubleacute";
+       case 0xeb5: return "GDK_Hangul_Sios";
+       case 0x1de: return "GDK_Tcedilla";
+       case 0x8d6: return "GDK_radical";
+       case 0xff33: return "GDK_Hangul_End";
+       case 0xff32: return "GDK_Hangul_Start";
+       case 0xff31: return "GDK_Hangul";
+       case 0xff30: return "GDK_Eisu_toggle";
+       case 0xff37: return "GDK_Codeinput, GDK_Kanji_Bangou, GDK_Hangul_Codeinput";
+       case 0xff36: return "GDK_Hangul_Romaja";
+       case 0xff35: return "GDK_Hangul_Jamo";
+       case 0x4d4: return "GDK_kana_YA";
+       case 0x5bb: return "GDK_Arabic_semicolon";
+       case 0xff39: return "GDK_Hangul_Banja";
+       case 0xff38: return "GDK_Hangul_Jeonja";
+       case 0x5bf: return "GDK_Arabic_question_mark";
+       case 0x4d7: return "GDK_kana_RA";
+       case 0x4c4: return "GDK_kana_TO";
+       case 0x4d6: return "GDK_kana_YO";
+       case 0x7a9: return "GDK_Greek_UPSILONdieresis";
+       case 0x4cd: return "GDK_kana_HE";
+       case 0xffaf: return "GDK_KP_Divide";
+       case 0x4ce: return "GDK_kana_HO";
+       case 0x1d8: return "GDK_Rcaron";
+       case 0x1d9: return "GDK_Uring";
+       case 0x4cf: return "GDK_kana_MA";
+       case 0xafc: return "GDK_caret";
+       case 0x1d0: return "GDK_Dstroke";
+       case 0x1d1: return "GDK_Nacute";
+       case 0x1d2: return "GDK_Ncaron";
+       case 0x8db: return "GDK_includes";
+       case 0x8de: return "GDK_logicaland";
+       case 0x1d5: return "GDK_Odoubleacute";
+       case 0x9ee: return "GDK_crossinglines";
+       case 0x8df: return "GDK_logicalor";
+       case 0x6f1: return "GDK_Cyrillic_YA";
+       case 0x6f0: return "GDK_Cyrillic_PE";
+       case 0x6f3: return "GDK_Cyrillic_ES";
+       case 0x6f2: return "GDK_Cyrillic_ER";
+       case 0x6f5: return "GDK_Cyrillic_U";
+       case 0x6f4: return "GDK_Cyrillic_TE";
+       case 0xffff: return "GDK_Delete";
+       case 0x6f6: return "GDK_Cyrillic_ZHE";
+       case 0x6f9: return "GDK_Cyrillic_YERU";
+       case 0x6f8: return "GDK_Cyrillic_SOFTSIGN";
+       case 0xbda: return "GDK_leftshoe";
+       case 0xeef: return "GDK_Hangul_RieulYeorinHieuh";
+       case 0xadc: return "GDK_filledlefttribullet";
+       case 0xdbf: return "GDK_Thai_fofan";
+       case 0xeb1: return "GDK_Hangul_Mieum";
+       case 0xafd: return "GDK_singlelowquotemark";
+       case 0xebe: return "GDK_Hangul_Hieuh";
+       case 0xafe: return "GDK_doublelowquotemark";
+       case 0xff3c: return "GDK_SingleCandidate, GDK_Hangul_SingleCandidate";
+       case 0xda2: return "GDK_Thai_khokhai";
+       case 0xaaf: return "GDK_doubbaselinedot";
+       case 0xff3f: return "GDK_Hangul_Special";
+       case 0xff3e: return "GDK_PreviousCandidate, GDK_Mae_Koho, GDK_Hangul_PreviousCandidate";
+       case 0xfe57: return "GDK_dead_diaeresis";
+       case 0xecf: return "GDK_Hangul_WI";
+       case 0x2a9: return "GDK_Iabovedot";
+       case 0xdbe: return "GDK_Thai_phophan";
+       case 0xda1: return "GDK_Thai_kokai";
+       case 0xdbc: return "GDK_Thai_phophung";
+       case 0xdbb: return "GDK_Thai_popla";
+       case 0xdba: return "GDK_Thai_bobaimai";
+       case 0x2fe: return "GDK_scircumflex";
+       case 0x2fd: return "GDK_ubreve";
+       case 0xeaf: return "GDK_Hangul_RieulPhieuf";
+       case 0x2a6: return "GDK_Hcircumflex";
+       case 0xda7: return "GDK_Thai_ngongu";
+       case 0x6fb: return "GDK_Cyrillic_SHA";
+       case 0x1c8: return "GDK_Ccaron";
+       case 0x1c5: return "GDK_Lacute";
+       case 0x0ff: return "GDK_ydiaeresis";
+       case 0x0fe: return "GDK_thorn";
+       case 0x0fd: return "GDK_yacute";
+       case 0x0fc: return "GDK_udiaeresis";
+       case 0x0fb: return "GDK_ucircumflex";
+       case 0x0fa: return "GDK_uacute";
+       case 0xeff: return "GDK_Korean_Won";
+       case 0xda4: return "GDK_Thai_khokhwai";
+       case 0xeae: return "GDK_Hangul_RieulTieut";
+       case 0xffd5: return "GDK_F24, GDK_R4";
+       case 0x20a5: return "GDK_MillSign";
+       case 0x3e0: return "GDK_amacron";
+       case 0xebd: return "GDK_Hangul_Phieuf";
+       case 0x3e7: return "GDK_iogonek";
+       case 0x6b4: return "GDK_Ukrainian_IE, GDK_Ukranian_JE";
+       case 0x0f9: return "GDK_ugrave";
+       case 0x0f8: return "GDK_oslash";
+       case 0x0f7: return "GDK_division";
+       case 0x0f6: return "GDK_odiaeresis";
+       case 0x0f5: return "GDK_otilde";
+       case 0x1cf: return "GDK_Dcaron";
+       case 0x1ca: return "GDK_Eogonek";
+       case 0x0f2: return "GDK_ograve";
+       case 0x0f1: return "GDK_ntilde";
+       case 0x0f0: return "GDK_eth";
+       case 0xdb7: return "GDK_Thai_thothahan";
+       case 0xdb6: return "GDK_Thai_thothung";
+       case 0xdb5: return "GDK_Thai_totao";
+       case 0xdb4: return "GDK_Thai_dodek";
+       case 0xdb3: return "GDK_Thai_nonen";
+       case 0x2f8: return "GDK_gcircumflex";
+       case 0xdb1: return "GDK_Thai_thonangmontho";
+       case 0xdb0: return "GDK_Thai_thothan";
+       case 0x2f5: return "GDK_gabovedot";
+       case 0x2ab: return "GDK_Gbreve";
+       case 0x2ac: return "GDK_Jcircumflex";
+       case 0xdb9: return "GDK_Thai_nonu";
+       case 0xdb8: return "GDK_Thai_thothong";
+       case 0x3ec: return "GDK_eabovedot";
+       case 0x3ef: return "GDK_imacron";
+       case 0x8af: return "GDK_leftmiddlecurlybrace";
+       case 0x8ad: return "GDK_toprightparens";
+       case 0x8ae: return "GDK_botrightparens";
+       case 0x8ab: return "GDK_topleftparens";
+       case 0x8ac: return "GDK_botleftparens";
+       case 0x8aa: return "GDK_botrightsqbracket";
+       case 0xfd0f: return "GDK_3270_CursorBlink";
+       case 0xffbd: return "GDK_KP_Equal";
+       case 0xffbe: return "GDK_F1";
+       case 0xffbf: return "GDK_F2";
+       case 0xeeb: return "GDK_Hangul_J_Khieuq";
+       case 0xff0b: return "GDK_Clear";
+       case 0xff0a: return "GDK_Linefeed";
+       case 0xff08: return "GDK_BackSpace";
+       case 0xff0d: return "GDK_Return";
+       case 0xff09: return "GDK_Tab";
+       case 0xae9: return "GDK_filledtribulletdown";
+       case 0xae8: return "GDK_filledtribulletup";
+       case 0xae7: return "GDK_enfilledsqbullet";
+       case 0xae6: return "GDK_enfilledcircbullet";
+       case 0xae5: return "GDK_openstar";
+       case 0xae4: return "GDK_opentribulletdown";
+       case 0xae3: return "GDK_opentribulletup";
+       case 0xae2: return "GDK_openrectbullet";
+       case 0xae1: return "GDK_enopensquarebullet";
+       case 0xffb1: return "GDK_KP_1";
+       case 0xeee: return "GDK_Hangul_J_Hieuh";
+       case 0x20a0: return "GDK_EcuSign";
+       case 0xeed: return "GDK_Hangul_J_Phieuf";
+       case 0xbc6: return "GDK_underbar";
+       case 0x8a6: return "GDK_vertconnector";
+       case 0x8a7: return "GDK_topleftsqbracket";
+       case 0x8a4: return "GDK_topintegral";
+       case 0x8a5: return "GDK_botintegral";
+       case 0x8a2: return "GDK_topleftradical";
+       case 0x8a3: return "GDK_horizconnector";
+       case 0x8a1: return "GDK_leftradical";
+       case 0x8a8: return "GDK_botleftsqbracket";
+       case 0x8a9: return "GDK_toprightsqbracket";
+       case 0xedb: return "GDK_Hangul_J_Rieul";
+       case 0xaee: return "GDK_heart";
+       case 0xaed: return "GDK_diamond";
+       case 0xaec: return "GDK_club";
+       case 0xaeb: return "GDK_rightpointer";
+       case 0xaea: return "GDK_leftpointer";
+       case 0x039: return "GDK_9";
+       case 0xffb4: return "GDK_KP_4";
+       case 0xffb5: return "GDK_KP_5";
+       case 0xffb6: return "GDK_KP_6";
+       case 0xffb7: return "GDK_KP_7";
+       case 0xffb0: return "GDK_KP_0";
+       case 0x5eb: return "GDK_Arabic_fathatan";
+       case 0xffb2: return "GDK_KP_2";
+       case 0xffb3: return "GDK_KP_3";
+       case 0xffb8: return "GDK_KP_8";
+       case 0xffb9: return "GDK_KP_9";
+       case 0x7d7: return "GDK_Greek_CHI";
diff --git a/vte/src/marshal.c b/vte/src/marshal.c
new file mode 100644
index 0000000..dc11916
--- /dev/null
+++ b/vte/src/marshal.c
@@ -0,0 +1,231 @@
+
+#ifndef ___vte_marshal_MARSHAL_H__
+#define ___vte_marshal_MARSHAL_H__
+
+#include       <glib-object.h>
+
+G_BEGIN_DECLS
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v)     g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v)      g_value_get_int (v)
+#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
+#define g_marshal_value_peek_long(v)     g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
+#define g_marshal_value_peek_float(v)    g_value_get_float (v)
+#define g_marshal_value_peek_double(v)   g_value_get_double (v)
+#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v)    g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v)   g_value_get_object (v)
+#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ *          Do not access GValues directly in your code. Instead, use the
+ *          g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
+#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
+#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
+#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* VOID:INT,INT (marshal.list:1) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__INT_INT (GClosure     *closure,
+                                                 GValue       *return_value,
+                                                 guint         n_param_values,
+                                                 const GValue *param_values,
+                                                 gpointer      invocation_hint,
+                                                 gpointer      marshal_data);
+void
+_vte_marshal_VOID__INT_INT (GClosure     *closure,
+                            GValue       *return_value G_GNUC_UNUSED,
+                            guint         n_param_values,
+                            const GValue *param_values,
+                            gpointer      invocation_hint G_GNUC_UNUSED,
+                            gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__INT_INT) (gpointer     data1,
+                                              gint         arg_1,
+                                              gint         arg_2,
+                                              gpointer     data2);
+  register GMarshalFunc_VOID__INT_INT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__INT_INT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_int (param_values + 1),
+            g_marshal_value_peek_int (param_values + 2),
+            data2);
+}
+
+/* VOID:OBJECT,OBJECT (marshal.list:2) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
+                                                       GValue       *return_value,
+                                                       guint         n_param_values,
+                                                       const GValue *param_values,
+                                                       gpointer      invocation_hint,
+                                                       gpointer      marshal_data);
+void
+_vte_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
+                                  GValue       *return_value G_GNUC_UNUSED,
+                                  guint         n_param_values,
+                                  const GValue *param_values,
+                                  gpointer      invocation_hint G_GNUC_UNUSED,
+                                  gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer     data1,
+                                                    gpointer     arg_1,
+                                                    gpointer     arg_2,
+                                                    gpointer     data2);
+  register GMarshalFunc_VOID__OBJECT_OBJECT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_object (param_values + 1),
+            g_marshal_value_peek_object (param_values + 2),
+            data2);
+}
+
+/* VOID:STRING,UINT (marshal.list:3) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__STRING_UINT (GClosure     *closure,
+                                                     GValue       *return_value,
+                                                     guint         n_param_values,
+                                                     const GValue *param_values,
+                                                     gpointer      invocation_hint,
+                                                     gpointer      marshal_data);
+void
+_vte_marshal_VOID__STRING_UINT (GClosure     *closure,
+                                GValue       *return_value G_GNUC_UNUSED,
+                                guint         n_param_values,
+                                const GValue *param_values,
+                                gpointer      invocation_hint G_GNUC_UNUSED,
+                                gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__STRING_UINT) (gpointer     data1,
+                                                  gpointer     arg_1,
+                                                  guint        arg_2,
+                                                  gpointer     data2);
+  register GMarshalFunc_VOID__STRING_UINT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__STRING_UINT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_string (param_values + 1),
+            g_marshal_value_peek_uint (param_values + 2),
+            data2);
+}
+
+/* VOID:UINT,UINT (marshal.list:4) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__UINT_UINT (GClosure     *closure,
+                                                   GValue       *return_value,
+                                                   guint         n_param_values,
+                                                   const GValue *param_values,
+                                                   gpointer      invocation_hint,
+                                                   gpointer      marshal_data);
+void
+_vte_marshal_VOID__UINT_UINT (GClosure     *closure,
+                              GValue       *return_value G_GNUC_UNUSED,
+                              guint         n_param_values,
+                              const GValue *param_values,
+                              gpointer      invocation_hint G_GNUC_UNUSED,
+                              gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer     data1,
+                                                guint        arg_1,
+                                                guint        arg_2,
+                                                gpointer     data2);
+  register GMarshalFunc_VOID__UINT_UINT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_uint (param_values + 1),
+            g_marshal_value_peek_uint (param_values + 2),
+            data2);
+}
+
+G_END_DECLS
+
+#endif /* ___vte_marshal_MARSHAL_H__ */
+
diff --git a/vte/src/marshal.h b/vte/src/marshal.h
new file mode 100644
index 0000000..fb2584c
--- /dev/null
+++ b/vte/src/marshal.h
@@ -0,0 +1,44 @@
+
+#ifndef ___vte_marshal_MARSHAL_H__
+#define ___vte_marshal_MARSHAL_H__
+
+#include       <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* VOID:INT,INT (marshal.list:1) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__INT_INT (GClosure     *closure,
+                                                 GValue       *return_value,
+                                                 guint         n_param_values,
+                                                 const GValue *param_values,
+                                                 gpointer      invocation_hint,
+                                                 gpointer      marshal_data);
+
+/* VOID:OBJECT,OBJECT (marshal.list:2) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
+                                                       GValue       *return_value,
+                                                       guint         n_param_values,
+                                                       const GValue *param_values,
+                                                       gpointer      invocation_hint,
+                                                       gpointer      marshal_data);
+
+/* VOID:STRING,UINT (marshal.list:3) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__STRING_UINT (GClosure     *closure,
+                                                     GValue       *return_value,
+                                                     guint         n_param_values,
+                                                     const GValue *param_values,
+                                                     gpointer      invocation_hint,
+                                                     gpointer      marshal_data);
+
+/* VOID:UINT,UINT (marshal.list:4) */
+G_GNUC_INTERNAL void _vte_marshal_VOID__UINT_UINT (GClosure     *closure,
+                                                   GValue       *return_value,
+                                                   guint         n_param_values,
+                                                   const GValue *param_values,
+                                                   gpointer      invocation_hint,
+                                                   gpointer      marshal_data);
+
+G_END_DECLS
+
+#endif /* ___vte_marshal_MARSHAL_H__ */
+
diff --git a/vte/src/marshal.list b/vte/src/marshal.list
new file mode 100644
index 0000000..0276422
--- /dev/null
+++ b/vte/src/marshal.list
@@ -0,0 +1,4 @@
+VOID:INT,INT
+VOID:OBJECT,OBJECT
+VOID:STRING,UINT
+VOID:UINT,UINT
diff --git a/vte/src/matcher.c b/vte/src/matcher.c
new file mode 100644
index 0000000..723cbaa
--- /dev/null
+++ b/vte/src/matcher.c
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <config.h>
+#include <sys/types.h>
+#include <string.h>
+#include <glib-object.h>
+#include "debug.h"
+#include "caps.h"
+#include "matcher.h"
+#include "table.h"
+#include "trie.h"
+
+struct _vte_matcher {
+       _vte_matcher_match_func match; /* shortcut to the most common op */
+       struct _vte_matcher_impl *impl;
+       GValueArray *free_params;
+};
+
+static GStaticMutex _vte_matcher_mutex = G_STATIC_MUTEX_INIT;
+static GCache *_vte_matcher_cache = NULL;
+static struct _vte_matcher_impl dummy_vte_matcher_trie = {
+       &_vte_matcher_trie
+};
+static struct _vte_matcher_impl dummy_vte_matcher_table = {
+       &_vte_matcher_table
+};
+
+/* Add a string to the matcher. */
+static void
+_vte_matcher_add(const struct _vte_matcher *matcher,
+                const char *pattern, gssize length,
+                const char *result, GQuark quark)
+{
+       matcher->impl->klass->add(matcher->impl, pattern, length, result, quark);
+}
+
+/* Loads all sequences into matcher */
+static void
+_vte_matcher_init(struct _vte_matcher *matcher, const char *emulation,
+                 struct _vte_termcap *termcap)
+{
+       const char *code, *value;
+       gboolean found_cr = FALSE, found_lf = FALSE;
+       gssize stripped_length;
+       char *stripped;
+       int i;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "_vte_matcher_init()\n");
+
+       if (termcap != NULL) {
+               /* Load the known capability strings from the termcap
+                * structure into the table for recognition. */
+               for (i = 0;
+                               _vte_terminal_capability_strings[i].capability[0];
+                               i++) {
+                       if (_vte_terminal_capability_strings[i].key) {
+                               continue;
+                       }
+                       code = _vte_terminal_capability_strings[i].capability;
+                       stripped = _vte_termcap_find_string_length(termcap,
+                                       emulation,
+                                       code,
+                                       &stripped_length);
+                       if (stripped[0] != '\0') {
+                               _vte_matcher_add(matcher,
+                                               stripped, stripped_length,
+                                               code, 0);
+                               if (stripped[0] == '\r') {
+                                       found_cr = TRUE;
+                               } else
+                                       if (stripped[0] == '\n') {
+                                               if (strcmp(code, "sf") == 0 ||
+                                                               strcmp(code, "do") == 0) {
+                                                       found_lf = TRUE;
+                                               }
+                                       }
+                       }
+                       g_free(stripped);
+               }
+       }
+
+       /* Add emulator-specific sequences. */
+       if (strstr(emulation, "xterm") || strstr(emulation, "dtterm")) {
+               /* Add all of the xterm-specific stuff. */
+               for (i = 0;
+                    _vte_xterm_capability_strings[i].value != NULL;
+                    i++) {
+                       code = _vte_xterm_capability_strings[i].code;
+                       value = _vte_xterm_capability_strings[i].value;
+                       _vte_matcher_add(matcher, code, strlen (code),
+                                        value, 0);
+               }
+       }
+
+       /* Always define cr and lf. */
+       if (!found_cr) {
+               _vte_matcher_add(matcher, "\r", 1, "cr", 0);
+       }
+       if (!found_lf) {
+               _vte_matcher_add(matcher, "\n", 1, "sf", 0);
+       }
+
+       _VTE_DEBUG_IF(VTE_DEBUG_TRIE) {
+               g_printerr("Trie contents:\n");
+               _vte_matcher_print(matcher);
+               g_printerr("\n");
+       }
+}
+
+/* Allocates new matcher structure. */
+static gpointer
+_vte_matcher_create(gpointer key)
+{
+       char *emulation = key;
+       struct _vte_matcher *ret = NULL;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "_vte_matcher_create()\n");
+       ret = g_slice_new(struct _vte_matcher);
+       ret->impl = &dummy_vte_matcher_trie;
+       ret->match = NULL;
+       ret->free_params = NULL;
+
+       if (strcmp(emulation, "xterm") == 0) {
+               ret->impl = &dummy_vte_matcher_table;
+       } else
+       if (strcmp(emulation, "dtterm") == 0) {
+               ret->impl = &dummy_vte_matcher_table;
+       }
+
+       return ret;
+}
+
+/* Noone uses this matcher, free it. */
+static void
+_vte_matcher_destroy(gpointer value)
+{
+       struct _vte_matcher *matcher = value;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "_vte_matcher_destroy()\n");
+       if (matcher->free_params != NULL) {
+               g_value_array_free (matcher->free_params);
+       }
+       if (matcher->match != NULL) /* do not call destroy on dummy values */
+               matcher->impl->klass->destroy(matcher->impl);
+       g_slice_free(struct _vte_matcher, matcher);
+}
+
+/* Create and init matcher. */
+struct _vte_matcher *
+_vte_matcher_new(const char *emulation, struct _vte_termcap *termcap)
+{
+       struct _vte_matcher *ret = NULL;
+       g_static_mutex_lock(&_vte_matcher_mutex);
+
+       if (emulation == NULL) {
+               emulation = "";
+       }
+
+       if (_vte_matcher_cache == NULL) {
+               _vte_matcher_cache = g_cache_new(_vte_matcher_create,
+                               _vte_matcher_destroy,
+                               (GCacheDupFunc) g_strdup, g_free,
+                               g_str_hash, g_direct_hash, g_str_equal);
+       }
+
+       ret = g_cache_insert(_vte_matcher_cache, (gpointer) emulation);
+
+       if (ret->match == NULL) {
+               ret->impl = ret->impl->klass->create();
+               ret->match = ret->impl->klass->match;
+               _vte_matcher_init(ret, emulation, termcap);
+       }
+
+       g_static_mutex_unlock(&_vte_matcher_mutex);
+       return ret;
+}
+
+/* Free a matcher. */
+void
+_vte_matcher_free(struct _vte_matcher *matcher)
+{
+       g_assert(_vte_matcher_cache != NULL);
+       g_static_mutex_lock(&_vte_matcher_mutex);
+       g_cache_remove(_vte_matcher_cache, matcher);
+       g_static_mutex_unlock(&_vte_matcher_mutex);
+}
+
+/* Check if a string matches a sequence the matcher knows about. */
+const char *
+_vte_matcher_match(struct _vte_matcher *matcher,
+                  const gunichar *pattern, gssize length,
+                  const char **res, const gunichar **consumed,
+                  GQuark *quark, GValueArray **array)
+{
+       if (G_UNLIKELY (array != NULL && matcher->free_params != NULL)) {
+               *array = matcher->free_params;
+               matcher->free_params = NULL;
+       }
+       return matcher->match(matcher->impl, pattern, length,
+                                       res, consumed, quark, array);
+}
+
+/* Dump out the contents of a matcher, mainly for debugging. */
+void
+_vte_matcher_print(struct _vte_matcher *matcher)
+{
+       matcher->impl->klass->print(matcher->impl);
+}
+
+/* Free a parameter array.  Most of the GValue elements can clean up after
+ * themselves, but we're using gpointers to hold unicode character strings, and
+ * we need to free those ourselves. */
+void
+_vte_matcher_free_params_array(struct _vte_matcher *matcher,
+                              GValueArray *params)
+{
+       guint i;
+       for (i = 0; i < params->n_values; i++) {
+               GValue *value = &params->values[i];
+               if (G_UNLIKELY (g_type_is_a (value->g_type, G_TYPE_POINTER))) {
+                       g_free (g_value_get_pointer (value));
+               }
+       }
+       if (G_UNLIKELY (matcher == NULL || matcher->free_params != NULL)) {
+               g_value_array_free (params);
+       } else {
+               matcher->free_params = params;
+               params->n_values = 0;
+       }
+}
+
diff --git a/vte/src/matcher.h b/vte/src/matcher.h
new file mode 100644
index 0000000..540cf97
--- /dev/null
+++ b/vte/src/matcher.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_matcher_h_included
+#define vte_matcher_h_included
+
+
+#include <glib-object.h>
+#include "vtetc.h"
+
+G_BEGIN_DECLS
+
+struct _vte_matcher;
+
+struct _vte_matcher_impl {
+       const struct _vte_matcher_class *klass;
+       /* private */
+};
+
+typedef struct _vte_matcher_impl *(*_vte_matcher_create_func)(void);
+typedef const char *(*_vte_matcher_match_func)(struct _vte_matcher_impl *impl,
+               const gunichar *pattern, gssize length,
+               const char **res, const gunichar **consumed,
+               GQuark *quark, GValueArray **array);
+typedef void (*_vte_matcher_add_func)(struct _vte_matcher_impl *impl,
+               const char *pattern, gssize length,
+               const char *result, GQuark quark);
+typedef void (*_vte_matcher_print_func)(struct _vte_matcher_impl *impl);
+typedef void (*_vte_matcher_destroy_func)(struct _vte_matcher_impl *impl);
+struct _vte_matcher_class{
+       _vte_matcher_create_func create;
+       _vte_matcher_add_func add;
+       _vte_matcher_print_func print;
+       _vte_matcher_match_func match;
+       _vte_matcher_destroy_func destroy;
+};
+
+/* Create and init matcher. */
+struct _vte_matcher *_vte_matcher_new(const char *emulation,
+                                     struct _vte_termcap *termcap);
+
+/* Free a matcher. */
+void _vte_matcher_free(struct _vte_matcher *matcher);
+
+/* Check if a string matches a sequence the matcher knows about. */
+const char *_vte_matcher_match(struct _vte_matcher *matcher,
+                              const gunichar *pattern, gssize length,
+                              const char **res, const gunichar **consumed,
+                              GQuark *quark, GValueArray **array);
+
+/* Dump out the contents of a matcher, mainly for debugging. */
+void _vte_matcher_print(struct _vte_matcher *matcher);
+
+/* Free a parameter array. */
+void _vte_matcher_free_params_array(struct _vte_matcher *matcher, GValueArray *params);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/mev.c b/vte/src/mev.c
new file mode 100644
index 0000000..f6817e1
--- /dev/null
+++ b/vte/src/mev.c
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif
+#include <sys/time.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <string.h>
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include <unistd.h>
+#include <glib.h>
+#include "caps.h"
+
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+static enum {
+       tracking_x10 = 9,
+       tracking_mouse = 1000,
+       tracking_hilite = 1001,
+       tracking_cell_motion = 1002,
+       tracking_all_motion = 1003
+} tracking_mode = 0;
+
+static void
+decset(int mode, gboolean value)
+{
+       fprintf(stdout, _VTE_CAP_CSI "?%d%c", mode, value ? 'h' : 'l');
+}
+
+static void
+reset(void)
+{
+       decset(tracking_x10, FALSE);
+       decset(tracking_mouse, FALSE);
+       decset(tracking_hilite, FALSE);
+       decset(tracking_cell_motion, FALSE);
+       decset(tracking_all_motion, FALSE);
+       fflush(stdout);
+}
+
+static void
+clear(void)
+{
+       fprintf(stdout, "%s",
+               _VTE_CAP_ESC "7"
+               _VTE_CAP_CSI "8;1H"
+               _VTE_CAP_CSI "1J"
+               _VTE_CAP_CSI "2K"
+               _VTE_CAP_CSI "1;1H");
+       reset();
+       switch (tracking_mode) {
+       case tracking_x10:
+               fprintf(stdout, "X10 tracking enabled.\r\n");
+               decset(tracking_x10, TRUE);
+               break;
+       case tracking_mouse:
+               fprintf(stdout, "Mouse tracking enabled.\r\n");
+               decset(tracking_mouse, TRUE);
+               break;
+       case tracking_hilite:
+               fprintf(stdout, "Hilite tracking enabled.\r\n");
+               decset(tracking_hilite, TRUE);
+               break;
+       case tracking_cell_motion:
+               fprintf(stdout, "Cell motion tracking enabled.\r\n");
+               decset(tracking_cell_motion, TRUE);
+               break;
+       case tracking_all_motion:
+               fprintf(stdout, "All motion tracking enabled.\r\n");
+               decset(tracking_all_motion, TRUE);
+               break;
+       default:
+               fprintf(stdout, "Tracking disabled.\r\n");
+               break;
+       }
+       fprintf(stdout, "A - X10.\r\n");
+       fprintf(stdout, "B - Mouse tracking.\r\n");
+       fprintf(stdout, "C - Hilite tracking [FIXME: NOT IMPLEMENTED].\r\n");
+       fprintf(stdout, "D - Cell motion tracking.\r\n");
+       fprintf(stdout, "E - All motion tracking.\r\n");
+       fprintf(stdout, "%s", _VTE_CAP_ESC "8");
+       fflush(stdout);
+}
+
+static gboolean
+parse(void)
+{
+       GByteArray *bytes;
+       gchar buffer[64];
+       int i, length;
+       guchar b;
+       gboolean ret = FALSE;
+
+       bytes = g_byte_array_new();
+       if ((length = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) {
+               g_byte_array_append(bytes, buffer, length);
+       }
+
+       i = 0;
+       while (i < bytes->len) {
+               switch (bytes->data[i]) {
+               case 'A':
+               case 'a':
+                       tracking_mode = (tracking_mode == tracking_x10) ?
+                                       0 : tracking_x10;
+                       i++;
+                       break;
+               case 'B':
+               case 'b':
+                       tracking_mode = (tracking_mode == tracking_mouse) ?
+                                       0 : tracking_mouse;
+                       i++;
+                       break;
+               case 'C':
+               case 'c':
+                       tracking_mode = (tracking_mode == tracking_hilite) ?
+                                       0 : tracking_hilite;
+                       i++;
+                       break;
+               case 'D':
+               case 'd':
+                       tracking_mode = (tracking_mode == tracking_cell_motion) ?
+                                       0 : tracking_cell_motion;
+                       i++;
+                       break;
+               case 'E':
+               case 'e':
+                       tracking_mode = (tracking_mode == tracking_all_motion) ?
+                                       0 : tracking_all_motion;
+                       i++;
+                       break;
+               case 'Q':
+               case 'q':
+                       ret = TRUE;
+                       i++;
+                       break;
+               case '\033':
+                       if (bytes->len - i >= 6) {
+                               int button = 0;
+                               const char *shift = "", *control = "",
+                                          *meta = "";
+                               gboolean motion = FALSE;
+                               int x, y;
+                               if ((bytes->data[i + 0] == '\033') &&
+                                   (bytes->data[i + 1] == '[')) {
+                                       if (bytes->data[i + 2] == 'M') {
+                                               b = bytes->data[i + 3] - 32;
+                                               switch (b & 3) {
+                                               case 0:
+                                                       button = 1;
+                                                       if (b & 64) {
+                                                               button += 3;
+                                                       }
+                                                       break;
+                                               case 1:
+                                                       button = 2;
+                                                       if (b & 64) {
+                                                               button += 3;
+                                                       }
+                                                       break;
+                                               case 2:
+                                                       button = 3;
+                                                       if (b & 64) {
+                                                               button += 3;
+                                                       }
+                                                       break;
+                                               case 3:
+                                                       button = 0;
+                                                       break;
+                                               }
+                                               shift = b & 4 ?
+                                                       "[shift]" :
+                                                       "";
+                                               meta = b & 8 ?
+                                                      "[meta]" :
+                                                      "";
+                                               control = b & 16 ?
+                                                         "[control]" :
+                                                         "";
+                                               motion = (b & 32) != 0;
+                                               x = bytes->data[i + 4] - 32;
+                                               y = bytes->data[i + 5] - 32;
+                                               fprintf(stdout, "%d %s%s%s(%s%s%s) at %d,%d\r\n",
+                                                       button,
+                                                       motion ? "motion " : "",
+                                                       (!motion && button) ? "press" : "",
+                                                       (!motion && !button) ? "release" : "",
+                                                       meta, control, shift,
+                                                       x, y);
+                                       }
+                               }
+                               i += 6;
+                               break;
+                       }
+               default:
+                       while (i < length) {
+                               if (bytes->data[i] < 32) {
+                                       fprintf(stdout, "'^%c' ",
+                                               bytes->data[i] | 64);
+                               } else {
+                                       fprintf(stdout, "'%c' ",
+                                               bytes->data[i]);
+                               }
+                               i++;
+                       }
+                       fprintf(stdout, "\r\n");
+                       break;
+               }
+       }
+       fflush(stdout);
+       g_byte_array_free(bytes, TRUE);
+
+       return ret;
+}
+
+static struct termios tcattr, original;
+
+static void
+sigint_handler(int signum)
+{
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &original) != 0) {
+               perror("tcsetattr");
+       }
+       reset();
+       _exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+       int flags;
+       gboolean stop;
+       fd_set in_fds;
+
+       if (tcgetattr(STDIN_FILENO, &tcattr) != 0) {
+               perror("tcgetattr");
+               return 1;
+       }
+
+       original = tcattr;
+       signal(SIGINT, sigint_handler);
+       /* Here we approximate what cfmakeraw() would do, for the benefit
+        * of systems which don't actually provide the function. */
+       tcattr.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP |
+                           INLCR | IGNCR | ICRNL | IXON);
+       tcattr.c_oflag &= ~(OPOST);
+       tcattr.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+       tcattr.c_cflag &= ~(CSIZE | PARENB);
+       tcattr.c_cflag |= CS8;
+#ifdef HAVE_CFMAKERAW
+       cfmakeraw(&tcattr);
+#endif
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &tcattr) != 0) {
+               perror("tcsetattr");
+               return 1;
+       }
+
+       flags = fcntl(STDIN_FILENO, F_GETFL);
+       fcntl(STDIN_FILENO, F_SETFL, flags & ~(O_NONBLOCK));
+       fprintf(stdout, "%s",
+               _VTE_CAP_CSI "9;1H"
+               _VTE_CAP_CSI "2K"
+               _VTE_CAP_CSI "2J");
+       do {
+               clear();
+               FD_ZERO(&in_fds);
+               FD_SET(STDIN_FILENO, &in_fds);
+               stop = TRUE;
+               switch (select(STDIN_FILENO + 1, &in_fds, NULL, NULL, NULL)) {
+               case 1:
+                       stop = parse();
+                       break;
+               default:
+                       stop = TRUE;
+                       break;
+               }
+       } while (!stop);
+       reset();
+       fcntl(STDIN_FILENO, F_SETFL, flags);
+
+       if (tcsetattr(STDIN_FILENO, TCSANOW, &original) != 0) {
+               perror("tcsetattr");
+               return 1;
+       }
+
+       return 0;
+}
diff --git a/vte/src/mkunitables.sh b/vte/src/mkunitables.sh
new file mode 100755
index 0000000..3c5d708
--- /dev/null
+++ b/vte/src/mkunitables.sh
@@ -0,0 +1,45 @@
+#!/bin/sh -e
+
+awk=${AWK:-awk}
+
+generate() {
+       echo "  /* generated file -- do not edit */"
+       ${awk} -F'#' '/^0x/ {print $1}' $* |\
+       ${awk} '{print $(NF-1),$(NF)}' $* |\
+       (
+       while read A B ; do
+               if test `printf '%d' $A` != `printf '%d' $B` ; then
+                       echo "  {$A, $B},"
+               fi
+       done
+       )
+}
+
+cjkmaphome=http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/
+cpmaphome=http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/
+
+encodings="CNS11643 CP437 GB12345 GB2312 JIS0201 JIS0208 JIS0212 KSX1001"
+if test "$#" != 0 ; then
+       encodings="$*"
+fi
+for encoding in $encodings ; do
+       if ! test -f unitable.$encoding ; then
+               if ! test -f $encoding.TXT ; then
+                       echo -n "Retrieving "
+                       case $encoding in
+                               CP*) wget -qc $cpmaphome/$encoding.TXT;;
+                               CNS*) wget -qc $cjkmaphome/OTHER/$encoding.TXT;;
+                               GB*) wget -qc $cjkmaphome/GB/$encoding.TXT;;
+                               JIS*) wget -qc $cjkmaphome/JIS/$encoding.TXT;;
+                               KSX1001)
+                                       wget -qc $cjkmaphome/KSC/$encoding.TXT
+                                       echo 0x2266 0x20AC >> $encoding.TXT
+                                       echo 0x2267 0x00AE >> $encoding.TXT
+                                       ;;
+                       esac
+               fi
+               echo -n $encoding
+               generate < $encoding.TXT > unitable.$encoding
+               echo .
+       fi
+done
diff --git a/vte/src/osc b/vte/src/osc
new file mode 100755
index 0000000..1a8d41f
--- /dev/null
+++ b/vte/src/osc
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+#  Operating system commands.
+#
+if [ "$#" -eq 0 ] ; then
+       echo usage: `basename $0` 'command [...]'
+       echo commands:
+       echo "  0 'title'       change icon name and window title"
+       echo "  1 'title'       change icon name"
+       echo "  2 'title'       change window title"
+       echo "  12 'color'      change cursor color"
+       exit
+fi
+args=
+for arg in $@ ; do
+       if [ "$args" = "" ] ; then
+               args="$arg"
+       else
+               args="$args;$arg"
+       fi
+done
+printf "]"${args}
diff --git a/vte/src/pty.c b/vte/src/pty.c
new file mode 100644
index 0000000..a4c8c07
--- /dev/null
+++ b/vte/src/pty.c
@@ -0,0 +1,2052 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ * Copyright © 2009, 2010 Christian Persch
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/**
+ * SECTION: vte-pty
+ * @short_description: Functions for starting a new process on a new pseudo-terminal and for
+ * manipulating pseudo-terminals
+ *
+ * The terminal widget uses these functions to start commands with new controlling
+ * pseudo-terminals and to resize pseudo-terminals.
+ *
+ * Since: 0.26
+ */
+
+#include <config.h>
+
+#include "vtepty.h"
+#include "vtepty-private.h"
+#include "vte.h"
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#ifdef HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include <unistd.h>
+#ifdef HAVE_STROPTS_H
+#include <stropts.h>
+#endif
+#include <glib.h>
+#include <gio/gio.h>
+#include "debug.h"
+#include "pty.h"
+
+#ifdef MSG_NOSIGNAL
+#define PTY_RECVMSG_FLAGS MSG_NOSIGNAL
+#else
+#define PTY_RECVMSG_FLAGS 0
+#endif
+
+#include <glib/gi18n-lib.h>
+
+#ifdef VTE_USE_GNOME_PTY_HELPER
+#include <sys/uio.h>
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+#include "../gnome-pty-helper/gnome-pty.h"
+static gboolean _vte_pty_helper_started = FALSE;
+static pid_t _vte_pty_helper_pid = -1;
+static int _vte_pty_helper_tunnel = -1;
+#endif
+
+/* Reset the handlers for all known signals to their defaults.  The parent
+ * (or one of the libraries it links to) may have changed one to be ignored. */
+static void
+_vte_pty_reset_signal_handlers(void)
+{
+#ifdef SIGHUP
+       signal(SIGHUP,  SIG_DFL);
+#endif
+       signal(SIGINT,  SIG_DFL);
+       signal(SIGILL,  SIG_DFL);
+       signal(SIGABRT, SIG_DFL);
+       signal(SIGFPE,  SIG_DFL);
+#ifdef SIGKILL
+       signal(SIGKILL, SIG_DFL);
+#endif
+       signal(SIGSEGV, SIG_DFL);
+#ifdef SIGPIPE
+       signal(SIGPIPE, SIG_DFL);
+#endif
+#ifdef SIGALRM
+       signal(SIGALRM, SIG_DFL);
+#endif
+       signal(SIGTERM, SIG_DFL);
+#ifdef SIGCHLD
+       signal(SIGCHLD, SIG_DFL);
+#endif
+#ifdef SIGCONT
+       signal(SIGCONT, SIG_DFL);
+#endif
+#ifdef SIGSTOP
+       signal(SIGSTOP, SIG_DFL);
+#endif
+#ifdef SIGTSTP
+       signal(SIGTSTP, SIG_DFL);
+#endif
+#ifdef SIGTTIN
+       signal(SIGTTIN, SIG_DFL);
+#endif
+#ifdef SIGTTOU
+       signal(SIGTTOU, SIG_DFL);
+#endif
+#ifdef SIGBUS
+       signal(SIGBUS,  SIG_DFL);
+#endif
+#ifdef SIGPOLL
+       signal(SIGPOLL, SIG_DFL);
+#endif
+#ifdef SIGPROF
+       signal(SIGPROF, SIG_DFL);
+#endif
+#ifdef SIGSYS
+       signal(SIGSYS,  SIG_DFL);
+#endif
+#ifdef SIGTRAP
+       signal(SIGTRAP, SIG_DFL);
+#endif
+#ifdef SIGURG
+       signal(SIGURG,  SIG_DFL);
+#endif
+#ifdef SIGVTALARM
+       signal(SIGVTALARM, SIG_DFL);
+#endif
+#ifdef SIGXCPU
+       signal(SIGXCPU, SIG_DFL);
+#endif
+#ifdef SIGXFSZ
+       signal(SIGXFSZ, SIG_DFL);
+#endif
+#ifdef SIGIOT
+       signal(SIGIOT,  SIG_DFL);
+#endif
+#ifdef SIGEMT
+       signal(SIGEMT,  SIG_DFL);
+#endif
+#ifdef SIGSTKFLT
+       signal(SIGSTKFLT, SIG_DFL);
+#endif
+#ifdef SIGIO
+       signal(SIGIO,   SIG_DFL);
+#endif
+#ifdef SIGCLD
+       signal(SIGCLD,  SIG_DFL);
+#endif
+#ifdef SIGPWR
+       signal(SIGPWR,  SIG_DFL);
+#endif
+#ifdef SIGINFO
+       signal(SIGINFO, SIG_DFL);
+#endif
+#ifdef SIGLOST
+       signal(SIGLOST, SIG_DFL);
+#endif
+#ifdef SIGWINCH
+       signal(SIGWINCH, SIG_DFL);
+#endif
+#ifdef SIGUNUSED
+       signal(SIGUNUSED, SIG_DFL);
+#endif
+}
+
+typedef struct _VtePtyPrivate VtePtyPrivate;
+
+typedef struct {
+       enum {
+               TTY_OPEN_BY_NAME,
+               TTY_OPEN_BY_FD
+       } mode;
+       union {
+               const char *name;
+               int fd;
+       } tty;
+} VtePtyChildSetupData;
+
+/**
+ * VtePty:
+ *
+ * Since: 0.26
+ */
+struct _VtePty {
+        GObject parent_instance;
+
+        /* <private> */
+        VtePtyPrivate *priv;
+};
+
+struct _VtePtyPrivate {
+        VtePtyFlags flags;
+        int pty_fd;
+
+        const char *term;
+        VtePtyChildSetupData child_setup_data;
+
+        gpointer helper_tag; /* only use when using_helper is TRUE */
+
+        guint utf8 : 1;
+        guint foreign : 1;
+        guint using_helper : 1;
+};
+
+struct _VtePtyClass {
+        GObjectClass parent_class;
+};
+
+/**
+ * vte_pty_child_setup:
+ * @pty: a #VtePty
+ *
+ * FIXMEchpe
+ *
+ * Since: 0.26
+ */
+void
+vte_pty_child_setup (VtePty *pty)
+{
+        VtePtyPrivate *priv = pty->priv;
+       VtePtyChildSetupData *data = &priv->child_setup_data;
+       int fd = -1;
+       const char *tty = NULL;
+
+        if (priv->foreign) {
+                fd = priv->pty_fd;
+        } else {
+                /* Save the name of the pty -- we'll need it later to acquire
+                * it as our controlling terminal.
+                */
+                switch (data->mode) {
+                        case TTY_OPEN_BY_NAME:
+                                tty = data->tty.name;
+                                break;
+                        case TTY_OPEN_BY_FD:
+                                fd = data->tty.fd;
+                                tty = ttyname(fd);
+                                break;
+                }
+
+                _vte_debug_print (VTE_DEBUG_PTY,
+                                "Setting up child pty: name = %s, fd = %d\n",
+                                        tty ? tty : "(none)", fd);
+
+
+                /* Try to reopen the pty to acquire it as our controlling terminal. */
+                /* FIXMEchpe: why not just use the passed fd in TTY_OPEN_BY_FD mode? */
+                if (tty != NULL) {
+                        int i = open(tty, O_RDWR);
+                        if (i != -1) {
+                                if (fd != -1){
+                                        close(fd);
+                                }
+                                fd = i;
+                        }
+                }
+        }
+
+       if (fd == -1)
+               _exit (127);
+
+       /* Start a new session and become process-group leader. */
+#if defined(HAVE_SETSID) && defined(HAVE_SETPGID)
+       _vte_debug_print (VTE_DEBUG_PTY, "Starting new session\n");
+       setsid();
+       setpgid(0, 0);
+#endif
+
+#ifdef TIOCSCTTY
+       /* TIOCSCTTY is defined?  Let's try that, too. */
+       ioctl(fd, TIOCSCTTY, fd);
+#endif
+
+#ifdef HAVE_STROPTS_H
+       if (isastream (fd) == 1) {
+               if ((ioctl(fd, I_FIND, "ptem") == 0) &&
+                               (ioctl(fd, I_PUSH, "ptem") == -1)) {
+                       _exit (127);
+               }
+               if ((ioctl(fd, I_FIND, "ldterm") == 0) &&
+                               (ioctl(fd, I_PUSH, "ldterm") == -1)) {
+                       _exit (127);
+               }
+               if ((ioctl(fd, I_FIND, "ttcompat") == 0) &&
+                               (ioctl(fd, I_PUSH, "ttcompat") == -1)) {
+                       perror ("ioctl (fd, I_PUSH, \"ttcompat\")");
+                       _exit (127);
+               }
+       }
+#endif
+
+       /* now setup child I/O through the tty */
+       if (fd != STDIN_FILENO) {
+               if (dup2(fd, STDIN_FILENO) != STDIN_FILENO){
+                       _exit (127);
+               }
+       }
+       if (fd != STDOUT_FILENO) {
+               if (dup2(fd, STDOUT_FILENO) != STDOUT_FILENO){
+                       _exit (127);
+               }
+       }
+       if (fd != STDERR_FILENO) {
+               if (dup2(fd, STDERR_FILENO) != STDERR_FILENO){
+                       _exit (127);
+               }
+       }
+
+       /* Close the original slave descriptor, unless it's one of the stdio
+        * descriptors. */
+       if (fd != STDIN_FILENO &&
+                       fd != STDOUT_FILENO &&
+                       fd != STDERR_FILENO) {
+               close(fd);
+       }
+
+       /* Reset our signals -- our parent may have done any number of
+        * weird things to them. */
+       _vte_pty_reset_signal_handlers();
+
+        /* Now set the TERM environment variable */
+        if (priv->term != NULL) {
+                g_setenv("TERM", priv->term, TRUE);
+        }
+}
+
+/* TODO: clean up the spawning
+ * - replace current env rather than adding!
+ */
+
+/*
+ * __vte_pty_get_argv:
+ * @command: the command to run
+ * @argv: the argument vector
+ * @flags: (inout) flags from #GSpawnFlags
+ *
+ * Creates an argument vector to pass to g_spawn_async() from @command and
+ * @argv, modifying *@flags if necessary.
+ *
+ * Returns: a newly allocated array of strings. Free with g_strfreev()
+ */
+char **
+__vte_pty_get_argv (const char *command,
+                    char **argv,
+                    GSpawnFlags *flags /* inout */)
+{
+       char **argv2;
+       int i, argc;
+
+        g_return_val_if_fail(command != NULL, NULL);
+
+       /* push the command into argv[0] */
+       argc = argv ? g_strv_length (argv) : 0;
+       argv2 = g_new (char *, argc + 2);
+
+       argv2[0] = g_strdup (command);
+
+       for (i = 0; i < argc; i++) {
+               argv2[i+1] = g_strdup (argv[i]);
+       }
+       argv2[i+1] = NULL;
+
+        if (argv) {
+                *flags |= G_SPAWN_FILE_AND_ARGV_ZERO;
+        }
+
+       return argv2;
+}
+
+/*
+ * __vte_pty_merge_environ:
+ * @envp: environment vector
+ *
+ * Merges @envp to the parent environment, and returns a new environment vector.
+ *
+ * Returns: a newly allocated string array. Free using g_strfreev()
+ */
+static gchar **
+__vte_pty_merge_environ (char **envp, const char *term_value)
+{
+       GHashTable *table;
+        GHashTableIter iter;
+        char *name, *value;
+       gchar **parent_environ;
+       GPtrArray *array;
+       gint i;
+
+       table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+       parent_environ = g_listenv ();
+       for (i = 0; parent_environ[i] != NULL; i++) {
+               g_hash_table_replace (table,
+                                     g_strdup (parent_environ[i]),
+                                     g_strdup (g_getenv (parent_environ[i])));
+       }
+       g_strfreev (parent_environ);
+
+       if (envp != NULL) {
+               for (i = 0; envp[i] != NULL; i++) {
+                       name = g_strdup (envp[i]);
+                       value = strchr (name, '=');
+                       if (value) {
+                               *value = '\0';
+                               value = g_strdup (value + 1);
+                       }
+                       g_hash_table_replace (table, name, value);
+               }
+       }
+
+        if (term_value != NULL)
+                g_hash_table_replace (table, g_strdup ("TERM"), g_strdup (term_value));
+
+       array = g_ptr_array_sized_new (g_hash_table_size (table) + 1);
+        g_hash_table_iter_init(&iter, table);
+        while (g_hash_table_iter_next(&iter, (gpointer) &name, (gpointer) &value)) {
+                g_ptr_array_add (array, g_strconcat (name, "=", value, NULL));
+        }
+        g_assert(g_hash_table_size(table) == array->len);
+       g_hash_table_destroy (table);
+       g_ptr_array_add (array, NULL);
+
+       return (gchar **) g_ptr_array_free (array, FALSE);
+}
+
+/*
+ * __vte_pty_get_pty_flags:
+ * @lastlog: %TRUE if the session should be logged to the lastlog
+ * @utmp: %TRUE if the session should be logged to the utmp/utmpx log
+ * @wtmp: %TRUE if the session should be logged to the wtmp/wtmpx log
+ *
+ * Combines the @lastlog, @utmp, @wtmp arguments into the coresponding
+ * #VtePtyFlags flags.
+ *
+ * Returns: flags from #VtePtyFlags
+ */
+VtePtyFlags
+__vte_pty_get_pty_flags(gboolean lastlog,
+                        gboolean utmp,
+                        gboolean wtmp)
+{
+        VtePtyFlags flags = VTE_PTY_DEFAULT;
+
+        if (!lastlog)
+                flags |= VTE_PTY_NO_LASTLOG;
+        if (!utmp)
+                flags |= VTE_PTY_NO_UTMP;
+        if (!wtmp)
+                flags |= VTE_PTY_NO_WTMP;
+
+        return flags;
+}
+
+/*
+ * __vte_pty_spawn:
+ * @pty: a #VtePty
+ * @directory: the name of a directory the command should start in, or %NULL
+ *   to use the cwd
+ * @argv: child's argument vector
+ * @envv: a list of environment variables to be added to the environment before
+ *   starting the process, or %NULL
+ * @spawn_flags: flags from #GSpawnFlags
+ * @child_setup: function to run in the child just before exec()
+ * @child_setup_data: user data for @child_setup
+ * @child_pid: a location to store the child PID, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Uses g_spawn_async() to spawn the command in @argv. The child's environment will
+ * be the parent environment with the variables in @envv set afterwards.
+ *
+ * Enforces the vte_terminal_watch_child() requirements by adding
+ * %G_SPAWN_DO_NOT_REAP_CHILD to @spawn_flags.
+ *
+ * Note that the %G_SPAWN_LEAVE_DESCRIPTORS_OPEN flag is not supported;
+ * it will be cleared!
+ *
+ * If spawning the command in @working_directory fails because the child
+ * is unable to chdir() to it, falls back trying to spawn the command
+ * in the parent's working directory.
+ *
+ * Returns: %TRUE on success, or %FALSE on failure with @error filled in
+ */
+gboolean
+__vte_pty_spawn (VtePty *pty,
+                 const char *directory,
+                 char **argv,
+                 char **envv,
+                 GSpawnFlags spawn_flags,
+                 GSpawnChildSetupFunc child_setup,
+                 gpointer child_setup_data,
+                 GPid *child_pid /* out */,
+                 GError **error)
+{
+       gboolean ret = TRUE;
+        char **envp2;
+        gint i;
+        GError *err = NULL;
+
+        spawn_flags |= G_SPAWN_DO_NOT_REAP_CHILD;
+
+        /* FIXMEchpe: Enforce this until I've checked our code to make sure
+         * it doesn't leak out internal FDs into the child this way.
+         */
+        spawn_flags &= ~G_SPAWN_LEAVE_DESCRIPTORS_OPEN;
+
+        /* add the given environment to the childs */
+        envp2 = __vte_pty_merge_environ (envv, pty->priv->term);
+
+        _VTE_DEBUG_IF (VTE_DEBUG_MISC) {
+                g_printerr ("Spawing command:\n");
+                for (i = 0; argv[i] != NULL; i++) {
+                        g_printerr ("    argv[%d] = %s\n", i, argv[i]);
+                }
+                for (i = 0; envp2[i] != NULL; i++) {
+                        g_printerr ("    env[%d] = %s\n", i, envp2[i]);
+                }
+                g_printerr ("    directory: %s\n",
+                            directory ? directory : "(none)");
+        }
+
+        ret = g_spawn_async_with_pipes(directory,
+                                       argv, envp2,
+                                       spawn_flags,
+                                       child_setup ? child_setup
+                                                   : (GSpawnChildSetupFunc) vte_pty_child_setup,
+                                       child_setup ? child_setup_data : pty,
+                                       child_pid,
+                                       NULL, NULL, NULL,
+                                       &err);
+        if (!ret &&
+            directory != NULL &&
+            g_error_matches(err, G_SPAWN_ERROR, G_SPAWN_ERROR_CHDIR)) {
+                /* try spawning in our working directory */
+                g_clear_error(&err);
+                ret = g_spawn_async_with_pipes(NULL,
+                                               argv, envp2,
+                                               spawn_flags,
+                                               child_setup ? child_setup
+                                                           : (GSpawnChildSetupFunc) vte_pty_child_setup,
+                                               child_setup ? child_setup_data : pty,
+                                               child_pid,
+                                               NULL, NULL, NULL,
+                                               &err);
+        }
+
+        g_strfreev (envp2);
+
+        if (ret)
+                return TRUE;
+
+        g_propagate_error (error, err);
+        return FALSE;
+}
+
+/*
+ * __vte_pty_fork:
+ * @pty: a #VtePty
+ * @pid: (out) a location to store a #GPid, or %NULL
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Forks and calls vte_pty_child_setup() in the child.
+ *
+ * Returns: %TRUE on success, or %FALSE on failure with @error filled in
+ */
+gboolean
+__vte_pty_fork(VtePty *pty,
+               GPid *pid,
+               GError **error)
+{
+#ifdef HAVE_FORK
+        gboolean ret = TRUE;
+
+        *pid = fork();
+        switch (*pid) {
+                case -1:
+                        g_set_error(error,
+                                    G_SPAWN_ERROR,
+                                    G_SPAWN_ERROR_FAILED,
+                                    "Unable to fork: %s",
+                                    g_strerror(errno));
+                        ret = FALSE;
+                case 0: /* child */
+                        vte_pty_child_setup(pty);
+                        break;
+                default: /* parent */
+                        break;
+        }
+
+       return ret;
+#else /* !HAVE_FORK */
+        g_set_error_literal(error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+                            "No fork implementation");
+        return FALSE;
+#endif /* HAVE_FORK */
+}
+
+/**
+ * vte_pty_set_size:
+ * @pty: a #VtePty
+ * @rows: the desired number of rows
+ * @columns: the desired number of columns
+ * @error: (allow-none); return location to store a #GError, or %NULL
+ *
+ * Attempts to resize the pseudo terminal's window size.  If successful, the
+ * OS kernel will send #SIGWINCH to the child process group.
+ *
+ * If setting the window size failed, @error will be set to a #GIOError.
+ *
+ * Returns: %TRUE on success, %FALSE on failure with @error filled in
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_pty_set_size(VtePty *pty,
+                 int rows,
+                 int columns,
+                 GError **error)
+{
+        VtePtyPrivate *priv;
+       struct winsize size;
+        int master;
+       int ret;
+
+        g_return_val_if_fail(VTE_IS_PTY(pty), FALSE);
+
+        priv = pty->priv;
+
+        master = vte_pty_get_fd(pty);
+
+       memset(&size, 0, sizeof(size));
+       size.ws_row = rows > 0 ? rows : 24;
+       size.ws_col = columns > 0 ? columns : 80;
+       _vte_debug_print(VTE_DEBUG_PTY,
+                       "Setting size on fd %d to (%d,%d).\n",
+                       master, columns, rows);
+       ret = ioctl(master, TIOCSWINSZ, &size);
+       if (ret != 0) {
+                int errsv = errno;
+
+                g_set_error(error, G_IO_ERROR,
+                            g_io_error_from_errno(errsv),
+                            "Failed to set window size: %s",
+                            g_strerror(errsv));
+
+               _vte_debug_print(VTE_DEBUG_PTY,
+                               "Failed to set size on %d: %s.\n",
+                               master, g_strerror(errsv));
+
+                errno = errsv;
+
+                return FALSE;
+       }
+
+        return TRUE;
+}
+
+/**
+ * vte_pty_get_size:
+ * @pty: a #VtePty
+ * @rows: (out) (allow-none): a location to store the number of rows, or %NULL
+ * @columns: (out) (allow-none): a location to store the number of columns, or %NULL
+ * @error: return location to store a #GError, or %NULL
+ *
+ * Reads the pseudo terminal's window size.
+ *
+ * If getting the window size failed, @error will be set to a #GIOError.
+ *
+ * Returns: %TRUE on success, %FALSE on failure with @error filled in
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_pty_get_size(VtePty *pty,
+                 int *rows,
+                 int *columns,
+                 GError **error)
+{
+        VtePtyPrivate *priv;
+       struct winsize size;
+        int master;
+       int ret;
+
+        g_return_val_if_fail(VTE_IS_PTY(pty), FALSE);
+
+        priv = pty->priv;
+
+        master = vte_pty_get_fd(pty);
+
+       memset(&size, 0, sizeof(size));
+       ret = ioctl(master, TIOCGWINSZ, &size);
+       if (ret == 0) {
+               if (columns != NULL) {
+                       *columns = size.ws_col;
+               }
+               if (rows != NULL) {
+                       *rows = size.ws_row;
+               }
+               _vte_debug_print(VTE_DEBUG_PTY,
+                               "Size on fd %d is (%d,%d).\n",
+                               master, size.ws_col, size.ws_row);
+                return TRUE;
+       } else {
+                int errsv = errno;
+
+                g_set_error(error, G_IO_ERROR,
+                            g_io_error_from_errno(errsv),
+                            "Failed to get window size: %s",
+                            g_strerror(errsv));
+
+               _vte_debug_print(VTE_DEBUG_PTY,
+                               "Failed to read size from fd %d: %s\n",
+                               master, g_strerror(errsv));
+
+                errno = errsv;
+
+                return FALSE;
+       }
+}
+
+/*
+ * _vte_pty_ptsname:
+ * @master: file descriptor to the PTY master
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Returns: a newly allocated string containing the file name of the
+ *   PTY slave device, or %NULL on failure with @error filled in
+ */
+static char *
+_vte_pty_ptsname(int master,
+                 GError **error)
+{
+#if defined(HAVE_PTSNAME_R)
+       gsize len = 1024;
+       char *buf = NULL;
+       int i, errsv;
+       do {
+               buf = g_malloc0(len);
+               i = ptsname_r(master, buf, len - 1);
+               switch (i) {
+               case 0:
+                       /* Return the allocated buffer with the name in it. */
+                       _vte_debug_print(VTE_DEBUG_PTY,
+                                       "PTY slave is `%s'.\n", buf);
+                       return buf;
+                       break;
+               default:
+                        errsv = errno;
+                       g_free(buf);
+                        errno = errsv;
+                       buf = NULL;
+                       break;
+               }
+               len *= 2;
+       } while ((i != 0) && (errno == ERANGE));
+
+        g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                    "%s failed: %s", "ptsname_r", g_strerror(errno));
+        return NULL;
+#elif defined(HAVE_PTSNAME)
+       char *p;
+       if ((p = ptsname(master)) != NULL) {
+               _vte_debug_print(VTE_DEBUG_PTY, "PTY slave is `%s'.\n", p);
+               return g_strdup(p);
+       }
+
+        g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                    "%s failed: %s", "ptsname", g_strerror(errno));
+        return NULL;
+#elif defined(TIOCGPTN)
+       int pty = 0;
+       if (ioctl(master, TIOCGPTN, &pty) == 0) {
+               _vte_debug_print(VTE_DEBUG_PTY,
+                               "PTY slave is `/dev/pts/%d'.\n", pty);
+               return g_strdup_printf("/dev/pts/%d", pty);
+       }
+
+        g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                    "%s failed: %s", "ioctl(TIOCGPTN)", g_strerror(errno));
+        return NULL;
+#else
+#error no ptsname implementation for this platform
+#endif
+}
+
+/*
+ * _vte_pty_getpt:
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Opens a file descriptor for the next available PTY master.
+ * Sets the descriptor to blocking mode!
+ *
+ * Returns: a new file descriptor, or %-1 on failure
+ */
+static int
+_vte_pty_getpt(GError **error)
+{
+       int fd, flags, rv;
+#ifdef HAVE_GETPT
+       /* Call the system's function for allocating a pty. */
+       fd = getpt();
+#else
+       /* Try to allocate a pty by accessing the pty master multiplex. */
+       fd = open("/dev/ptmx", O_RDWR | O_NOCTTY);
+       if ((fd == -1) && (errno == ENOENT)) {
+               fd = open("/dev/ptc", O_RDWR | O_NOCTTY); /* AIX */
+       }
+#endif
+        if (fd == -1) {
+                g_set_error (error, VTE_PTY_ERROR,
+                             VTE_PTY_ERROR_PTY98_FAILED,
+                             "%s failed: %s", "getpt", g_strerror(errno));
+                return -1;
+        }
+
+        rv = fcntl(fd, F_GETFL, 0);
+        if (rv < 0) {
+                int errsv = errno;
+                g_set_error(error, VTE_PTY_ERROR,
+                            VTE_PTY_ERROR_PTY98_FAILED,
+                            "%s failed: %s", "fcntl(F_GETFL)", g_strerror(errno));
+                close(fd);
+                errno = errsv;
+                return -1;
+        }
+
+       /* Set it to blocking. */
+        /* FIXMEchpe: why?? vte_terminal_set_pty does the inverse... */
+        flags = rv & ~(O_NONBLOCK);
+        rv = fcntl(fd, F_SETFL, flags);
+        if (rv < 0) {
+                int errsv = errno;
+                g_set_error(error, VTE_PTY_ERROR,
+                            VTE_PTY_ERROR_PTY98_FAILED,
+                            "%s failed: %s", "fcntl(F_SETFL)", g_strerror(errno));
+                close(fd);
+                errno = errsv;
+                return -1;
+        }
+
+       return fd;
+}
+
+static gboolean
+_vte_pty_grantpt(int master,
+                 GError **error)
+{
+#ifdef HAVE_GRANTPT
+        int rv;
+
+        rv = grantpt(master);
+        if (rv != 0) {
+                int errsv = errno;
+                g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                            "%s failed: %s", "grantpt", g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+        }
+#endif
+        return TRUE;
+}
+
+static gboolean
+_vte_pty_unlockpt(int fd,
+                  GError **error)
+{
+        int rv;
+#ifdef HAVE_UNLOCKPT
+       rv = unlockpt(fd);
+        if (rv != 0) {
+                int errsv = errno;
+                g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                            "%s failed: %s", "unlockpt", g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+        }
+        return TRUE;
+#elif defined(TIOCSPTLCK)
+       int zero = 0;
+       rv = ioctl(fd, TIOCSPTLCK, &zero);
+        if (rv != 0) {
+                int errsv = errno;
+                g_set_error(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY98_FAILED,
+                            "%s failed: %s", "ioctl(TIOCSPTLCK)", g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+        }
+        return TRUE;
+#else
+#error no unlockpt implementation for this platform
+#endif
+}
+
+/*
+ * _vte_pty_open_unix98:
+ * @pty: a #VtePty
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Opens a new file descriptor to a new PTY master.
+ *
+ * Returns: %TRUE on success, %FALSE on failure with @error filled in
+ */
+static gboolean
+_vte_pty_open_unix98(VtePty *pty,
+                     GError **error)
+{
+        VtePtyPrivate *priv = pty->priv;
+       int fd;
+       char *buf;
+
+       /* Attempt to open the master. */
+       fd = _vte_pty_getpt(error);
+       if (fd == -1)
+                return FALSE;
+
+       _vte_debug_print(VTE_DEBUG_PTY, "Allocated pty on fd %d.\n", fd);
+
+        /* Read the slave number and unlock it. */
+        if ((buf = _vte_pty_ptsname(fd, error)) == NULL ||
+            !_vte_pty_grantpt(fd, error) ||
+            !_vte_pty_unlockpt(fd, error)) {
+                int errsv = errno;
+                _vte_debug_print(VTE_DEBUG_PTY,
+                                "PTY setup failed, bailing.\n");
+                close(fd);
+                errno = errsv;
+                return FALSE;
+        }
+
+        priv->pty_fd = fd;
+        priv->child_setup_data.mode = TTY_OPEN_BY_NAME;
+        priv->child_setup_data.tty.name = buf;
+        priv->using_helper = FALSE;
+
+        return TRUE;
+}
+
+#ifdef VTE_USE_GNOME_PTY_HELPER
+#ifdef HAVE_RECVMSG
+static void
+_vte_pty_read_ptypair(int tunnel, int *parentfd, int *childfd)
+{
+       int i, ret;
+       char control[LINE_MAX], iobuf[LINE_MAX];
+       struct cmsghdr *cmsg;
+       struct msghdr msg;
+       struct iovec vec;
+
+       for (i = 0; i < 2; i++) {
+               vec.iov_base = iobuf;
+               vec.iov_len = sizeof(iobuf);
+               msg.msg_name = NULL;
+               msg.msg_namelen = 0;
+               msg.msg_iov = &vec;
+               msg.msg_iovlen = 1;
+               msg.msg_control = control;
+               msg.msg_controllen = sizeof(control);
+               ret = recvmsg(tunnel, &msg, PTY_RECVMSG_FLAGS);
+               if (ret == -1) {
+                       return;
+               }
+               for (cmsg = CMSG_FIRSTHDR(&msg);
+                    cmsg != NULL;
+                    cmsg = CMSG_NXTHDR(&msg, cmsg)) {
+                       if (cmsg->cmsg_type == SCM_RIGHTS) {
+                               memcpy(&ret, CMSG_DATA(cmsg), sizeof(ret));
+                               switch (i) {
+                                       case 0:
+                                               *parentfd = ret;
+                                               break;
+                                       case 1:
+                                               *childfd = ret;
+                                               break;
+                                       default:
+                                               g_assert_not_reached();
+                                               break;
+                               }
+                       }
+               }
+       }
+}
+#elif defined (I_RECVFD)
+static void
+_vte_pty_read_ptypair(int tunnel, int *parentfd, int *childfd)
+{
+       int i;
+       if (ioctl(tunnel, I_RECVFD, &i) == -1) {
+               return;
+       }
+       *parentfd = i;
+       if (ioctl(tunnel, I_RECVFD, &i) == -1) {
+               return;
+       }
+       *childfd = i;
+}
+#endif
+
+#ifdef HAVE_SOCKETPAIR
+static int
+_vte_pty_pipe_open(int *a, int *b)
+{
+       int p[2], ret = -1;
+#ifdef PF_UNIX
+#ifdef SOCK_STREAM
+       ret = socketpair(PF_UNIX, SOCK_STREAM, 0, p);
+#else
+#ifdef SOCK_DGRAM
+       ret = socketpair(PF_UNIX, SOCK_DGRAM, 0, p);
+#endif
+#endif
+       if (ret == 0) {
+               *a = p[0];
+               *b = p[1];
+               return 0;
+       }
+#endif
+       return ret;
+}
+#else
+static int
+_vte_pty_pipe_open(int *a, int *b)
+{
+       int p[2], ret = -1;
+
+       ret = pipe(p);
+
+       if (ret == 0) {
+               *a = p[0];
+               *b = p[1];
+       }
+       return ret;
+}
+#endif
+
+/* Like read, but hide EINTR and EAGAIN. */
+static ssize_t
+n_read(int fd, void *buffer, size_t count)
+{
+       size_t n = 0;
+       char *buf = buffer;
+       int i;
+       while (n < count) {
+               i = read(fd, buf + n, count - n);
+               switch (i) {
+               case 0:
+                       return n;
+               case -1:
+                       switch (errno) {
+                       case EINTR:
+                       case EAGAIN:
+#ifdef ERESTART
+                       case ERESTART:
+#endif
+                               break;
+                       default:
+                               return -1;
+                       }
+                       break;
+               default:
+                       n += i;
+                       break;
+               }
+       }
+       return n;
+}
+
+/* Like write, but hide EINTR and EAGAIN. */
+static ssize_t
+n_write(int fd, const void *buffer, size_t count)
+{
+       size_t n = 0;
+       const char *buf = buffer;
+       int i;
+       while (n < count) {
+               i = write(fd, buf + n, count - n);
+               switch (i) {
+               case 0:
+                       return n;
+               case -1:
+                       switch (errno) {
+                       case EINTR:
+                       case EAGAIN:
+#ifdef ERESTART
+                       case ERESTART:
+#endif
+                               break;
+                       default:
+                               return -1;
+                       }
+                       break;
+               default:
+                       n += i;
+                       break;
+               }
+       }
+       return n;
+}
+
+/*
+ * _vte_pty_stop_helper:
+ *
+ * Terminates the running GNOME PTY helper.
+ */
+static void
+_vte_pty_stop_helper(void)
+{
+       if (_vte_pty_helper_started) {
+               close(_vte_pty_helper_tunnel);
+               _vte_pty_helper_tunnel = -1;
+               kill(_vte_pty_helper_pid, SIGTERM);
+               _vte_pty_helper_pid = -1;
+               _vte_pty_helper_started = FALSE;
+       }
+}
+
+/*
+ * _vte_pty_start_helper:
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Starts the GNOME PTY helper process, if it is not already running.
+ *
+ * Returns: %TRUE if the helper was already started, or starting it succeeded,
+ *   %FALSE on failure with @error filled in
+ */
+static gboolean
+_vte_pty_start_helper(GError **error)
+{
+       int i, errsv;
+        int tunnel = -1;
+        int tmp[2] = { -1, -1 };
+
+        if (_vte_pty_helper_started)
+                return TRUE;
+
+       /* Create a communication link for use with the helper. */
+       tmp[0] = open("/dev/null", O_RDONLY);
+       if (tmp[0] == -1) {
+               goto failure;
+       }
+       tmp[1] = open("/dev/null", O_RDONLY);
+       if (tmp[1] == -1) {
+               goto failure;
+       }
+       if (_vte_pty_pipe_open(&_vte_pty_helper_tunnel, &tunnel) != 0) {
+               goto failure;
+       }
+       close(tmp[0]);
+       close(tmp[1]);
+        tmp[0] = tmp[1] = -1;
+
+       /* Now fork and start the helper. */
+       _vte_pty_helper_pid = fork();
+       if (_vte_pty_helper_pid == -1) {
+               goto failure;
+       }
+       if (_vte_pty_helper_pid == 0) {
+               /* Child.  Close descriptors.  No need to close all,
+                * gnome-pty-helper does that anyway. */
+               for (i = 0; i < 3; i++) {
+                       close(i);
+               }
+               /* Reassign the socket pair to stdio. */
+               dup2(tunnel, STDIN_FILENO);
+               dup2(tunnel, STDOUT_FILENO);
+               close(tunnel);
+               close(_vte_pty_helper_tunnel);
+               /* Exec our helper. */
+               execl(LIBEXECDIR "/gnome-pty-helper",
+                     "gnome-pty-helper", NULL);
+               /* Bail. */
+               _exit(1);
+       }
+       close(tunnel);
+       atexit(_vte_pty_stop_helper);
+
+        _vte_pty_helper_started = TRUE;
+       return TRUE;
+
+failure:
+        errsv = errno;
+
+        g_set_error(error, VTE_PTY_ERROR,
+                    VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                    "Failed to start gnome-pty-helper: %s",
+                    g_strerror (errsv));
+
+        if (tmp[0] != -1)
+                close(tmp[0]);
+        if (tmp[1] != -1)
+                close(tmp[1]);
+        if (tunnel != -1)
+                close(tunnel);
+        if (_vte_pty_helper_tunnel != -1)
+                close(_vte_pty_helper_tunnel);
+
+        _vte_pty_helper_pid = -1;
+        _vte_pty_helper_tunnel = -1;
+
+        errno = errsv;
+        return FALSE;
+}
+
+/*
+ * _vte_pty_helper_ops_from_flags:
+ * @flags: flags from #VtePtyFlags
+ *
+ * Translates @flags into the corresponding op code for the
+ * GNOME PTY helper.
+ *
+ * Returns: the #GnomePtyOps corresponding to @flags
+ */
+static int
+_vte_pty_helper_ops_from_flags (VtePtyFlags flags)
+{
+       int op = 0;
+       static const int opmap[8] = {
+               GNOME_PTY_OPEN_NO_DB_UPDATE,            /* 0 0 0 */
+               GNOME_PTY_OPEN_PTY_LASTLOG,             /* 0 0 1 */
+               GNOME_PTY_OPEN_PTY_UTMP,                /* 0 1 0 */
+               GNOME_PTY_OPEN_PTY_LASTLOGUTMP,         /* 0 1 1 */
+               GNOME_PTY_OPEN_PTY_WTMP,                /* 1 0 0 */
+               GNOME_PTY_OPEN_PTY_LASTLOGWTMP,         /* 1 0 1 */
+               GNOME_PTY_OPEN_PTY_UWTMP,               /* 1 1 0 */
+               GNOME_PTY_OPEN_PTY_LASTLOGUWTMP,        /* 1 1 1 */
+       };
+       if ((flags & VTE_PTY_NO_LASTLOG) == 0) {
+               op += 1;
+       }
+       if ((flags & VTE_PTY_NO_UTMP) == 0) {
+               op += 2;
+       }
+       if ((flags & VTE_PTY_NO_WTMP) == 0) {
+               op += 4;
+       }
+       g_assert(op >= 0 && op < (int) G_N_ELEMENTS(opmap));
+
+        return opmap[op];
+}
+
+/*
+ * _vte_pty_open_with_helper:
+ * @pty: a #VtePty
+ * @error: a location to store a #GError, or %NULL
+ *
+ * Opens a new file descriptor to a new PTY master using the
+ * GNOME PTY helper.
+ *
+ * Returns: %TRUE on success, %FALSE on failure with @error filled in
+ */
+static gboolean
+_vte_pty_open_with_helper(VtePty *pty,
+                          GError **error)
+{
+        VtePtyPrivate *priv = pty->priv;
+       GnomePtyOps ops;
+       int ret;
+       int parentfd = -1, childfd = -1;
+       gpointer tag;
+
+       /* We have to use the pty helper here. */
+       if (!_vte_pty_start_helper(error))
+                return FALSE;
+
+       /* Try to open a new descriptor. */
+
+        ops = _vte_pty_helper_ops_from_flags(priv->flags);
+        /* Send our request. */
+        if (n_write(_vte_pty_helper_tunnel,
+                    &ops, sizeof(ops)) != sizeof(ops)) {
+                g_set_error (error, VTE_PTY_ERROR,
+                              VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                              "Failed to send request to gnome-pty-helper: %s",
+                              g_strerror(errno));
+                return FALSE;
+        }
+        _vte_debug_print(VTE_DEBUG_PTY, "Sent request to helper.\n");
+        /* Read back the response. */
+        if (n_read(_vte_pty_helper_tunnel,
+                    &ret, sizeof(ret)) != sizeof(ret)) {
+                g_set_error (error, VTE_PTY_ERROR,
+                              VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                              "Failed to read response from gnome-pty-helper: %s",
+                              g_strerror(errno));
+                return FALSE;
+        }
+        _vte_debug_print(VTE_DEBUG_PTY,
+                        "Received response from helper.\n");
+        if (ret == 0) {
+                g_set_error_literal (error, VTE_PTY_ERROR,
+                                      VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                                      "gnome-pty-helper failed to open pty");
+                return FALSE;
+        }
+        _vte_debug_print(VTE_DEBUG_PTY, "Helper returns success.\n");
+        /* Read back a tag. */
+        if (n_read(_vte_pty_helper_tunnel,
+                    &tag, sizeof(tag)) != sizeof(tag)) {
+                g_set_error (error, VTE_PTY_ERROR,
+                              VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                              "Failed to read tag from gnome-pty-helper: %s",
+                              g_strerror(errno));
+                return FALSE;
+        }
+        _vte_debug_print(VTE_DEBUG_PTY, "Tag = %p.\n", tag);
+        /* Receive the master and slave ptys. */
+        _vte_pty_read_ptypair(_vte_pty_helper_tunnel,
+                              &parentfd, &childfd);
+
+        if ((parentfd == -1) || (childfd == -1)) {
+                int errsv = errno;
+
+                close(parentfd);
+                close(childfd);
+
+                g_set_error (error, VTE_PTY_ERROR,
+                              VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                              "Failed to read master or slave pty from gnome-pty-helper: %s",
+                              g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+        }
+
+        _vte_debug_print(VTE_DEBUG_PTY,
+                        "Got master pty %d and slave pty %d.\n",
+                        parentfd, childfd);
+
+        priv->using_helper = TRUE;
+        priv->helper_tag = tag;
+        priv->pty_fd = parentfd;
+
+        priv->child_setup_data.mode = TTY_OPEN_BY_FD;
+        priv->child_setup_data.tty.fd = childfd;
+
+        return TRUE;
+}
+
+#endif /* VTE_USE_GNOME_PTY_HELPER */
+
+/**
+ * vte_pty_set_utf8:
+ * @pty: a #VtePty
+ * @utf8: whether or not the pty is in UTF-8 mode
+ * @error: (allow-none): return location to store a #GError, or %NULL
+ *
+ * Tells the kernel whether the terminal is UTF-8 or not, in case it can make
+ * use of the info.  Linux 2.6.5 or so defines IUTF8 to make the line
+ * discipline do multibyte backspace correctly.
+ *
+ * Returns: %TRUE on success, %FALSE on failure with @error filled in
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_pty_set_utf8(VtePty *pty,
+                 gboolean utf8,
+                 GError **error)
+{
+#if defined(HAVE_TCSETATTR) && defined(IUTF8)
+        VtePtyPrivate *priv;
+       struct termios tio;
+       tcflag_t saved_cflag;
+
+        g_return_val_if_fail(VTE_IS_PTY(pty), FALSE);
+
+        priv = pty->priv;
+        g_return_val_if_fail (priv->pty_fd > 0, FALSE);
+
+        if (tcgetattr(priv->pty_fd, &tio) == -1) {
+                int errsv = errno;
+                g_set_error(error, G_IO_ERROR, g_io_error_from_errno(errsv),
+                            "%s failed: %s", "tcgetattr", g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+        }
+
+        saved_cflag = tio.c_iflag;
+        if (utf8) {
+                tio.c_iflag |= IUTF8;
+        } else {
+              tio.c_iflag &= ~IUTF8;
+        }
+
+        /* Only set the flag if it changes */
+        if (saved_cflag != tio.c_iflag &&
+            tcsetattr(priv->pty_fd, TCSANOW, &tio) == -1) {
+                int errsv = errno;
+                g_set_error(error, G_IO_ERROR, g_io_error_from_errno(errsv),
+                            "%s failed: %s", "tcgetattr", g_strerror(errsv));
+                errno = errsv;
+                return FALSE;
+       }
+#endif
+
+        return TRUE;
+}
+
+/**
+ * vte_pty_close:
+ * @pty: a #VtePty
+ *
+ * Cleans up the PTY, specifically any logging performed for the session.
+ * The file descriptor to the PTY master remains open.
+ *
+ * Since: 0.26
+ */
+void
+vte_pty_close (VtePty *pty)
+{
+#ifdef VTE_USE_GNOME_PTY_HELPER
+        VtePtyPrivate *priv = pty->priv;
+       gpointer tag;
+       GnomePtyOps ops;
+
+        if (!priv->using_helper)
+                return;
+
+        /* Signal the helper that it needs to close its connection. */
+        tag = priv->helper_tag;
+
+        ops = GNOME_PTY_CLOSE_PTY;
+        if (n_write(_vte_pty_helper_tunnel,
+                    &ops, sizeof(ops)) != sizeof(ops)) {
+                return;
+        }
+        if (n_write(_vte_pty_helper_tunnel,
+                    &tag, sizeof(tag)) != sizeof(tag)) {
+                return;
+        }
+
+        ops = GNOME_PTY_SYNCH;
+        if (n_write(_vte_pty_helper_tunnel,
+                    &ops, sizeof(ops)) != sizeof(ops)) {
+                return;
+        }
+        n_read(_vte_pty_helper_tunnel, &ops, 1);
+
+        priv->helper_tag = NULL;
+        priv->using_helper = FALSE;
+#endif
+}
+
+/* VTE PTY class */
+
+enum {
+        PROP_0,
+        PROP_FLAGS,
+        PROP_FD,
+        PROP_TERM
+};
+
+/* GInitable impl */
+
+static gboolean
+vte_pty_initable_init (GInitable *initable,
+                       GCancellable *cancellable,
+                       GError **error)
+{
+        VtePty *pty = VTE_PTY (initable);
+        VtePtyPrivate *priv = pty->priv;
+        gboolean ret = FALSE;
+
+        if (cancellable != NULL) {
+                g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                                    "Cancellable initialisation not supported");
+                return FALSE;
+        }
+
+        /* If we already have a (foreign) FD, we're done. */
+        if (priv->foreign) {
+                g_assert(priv->pty_fd != -1);
+                return TRUE;
+        }
+
+#ifdef VTE_USE_GNOME_PTY_HELPER
+       if ((priv->flags & VTE_PTY_NO_HELPER) == 0) {
+                GError *err = NULL;
+
+               ret = _vte_pty_open_with_helper(pty, &err);
+                g_assert(ret || err != NULL);
+
+                if (ret)
+                        goto out;
+
+                _vte_debug_print(VTE_DEBUG_PTY,
+                                 "_vte_pty_open_with_helper failed: %s\n",
+                                 err->message);
+
+                /* Only do fallback if gnome-pty-helper failed! */
+                if ((priv->flags & VTE_PTY_NO_FALLBACK) ||
+                    !g_error_matches(err,
+                                     VTE_PTY_ERROR,
+                                     VTE_PTY_ERROR_PTY_HELPER_FAILED)) {
+                        g_propagate_error (error, err);
+                        goto out;
+                }
+
+                g_error_free(err);
+                /* Fall back to unix98 PTY */
+        }
+#else
+        if (priv->flags & VTE_PTY_NO_FALLBACK) {
+                g_set_error_literal(error, VTE_PTY_ERROR, VTE_PTY_ERROR_PTY_HELPER_FAILED,
+                                    "VTE compiled without GNOME PTY helper");
+                goto out;
+        }
+#endif /* VTE_USE_GNOME_PTY_HELPER */
+
+        ret = _vte_pty_open_unix98(pty, error);
+
+  out:
+       _vte_debug_print(VTE_DEBUG_PTY,
+                       "vte_pty_initable_init returning %s with ptyfd = %d\n",
+                       ret ? "TRUE" : "FALSE", priv->pty_fd);
+
+       return ret;
+}
+
+static void
+vte_pty_initable_iface_init (GInitableIface  *iface)
+{
+        iface->init = vte_pty_initable_init;
+}
+
+/* GObjectClass impl */
+
+G_DEFINE_TYPE_WITH_CODE (VtePty, vte_pty, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, vte_pty_initable_iface_init))
+
+static void
+vte_pty_init (VtePty *pty)
+{
+        VtePtyPrivate *priv;
+
+        priv = pty->priv = G_TYPE_INSTANCE_GET_PRIVATE (pty, VTE_TYPE_PTY, VtePtyPrivate);
+
+        priv->flags = VTE_PTY_DEFAULT;
+        priv->pty_fd = -1;
+        priv->foreign = FALSE;
+        priv->using_helper = FALSE;
+        priv->helper_tag = NULL;
+        priv->term = vte_terminal_get_default_emulation(NULL /* that's ok, this function is just retarded 
*/); /* already interned */
+}
+
+static void
+vte_pty_finalize (GObject *object)
+{
+        VtePty *pty = VTE_PTY (object);
+        VtePtyPrivate *priv = pty->priv;
+
+        if (priv->child_setup_data.mode == TTY_OPEN_BY_FD &&
+            priv->child_setup_data.tty.fd != -1) {
+                /* Close the child FD */
+                close(priv->child_setup_data.tty.fd);
+        }
+
+        vte_pty_close(pty);
+
+        /* Close the master FD */
+        if (priv->pty_fd != -1) {
+                close(priv->pty_fd);
+        }
+
+        G_OBJECT_CLASS (vte_pty_parent_class)->finalize (object);
+}
+
+static void
+vte_pty_get_property (GObject    *object,
+                       guint       property_id,
+                       GValue     *value,
+                       GParamSpec *pspec)
+{
+        VtePty *pty = VTE_PTY (object);
+        VtePtyPrivate *priv = pty->priv;
+
+        switch (property_id) {
+        case PROP_FLAGS:
+                g_value_set_flags(value, priv->flags);
+                break;
+
+        case PROP_FD:
+                g_value_set_int(value, vte_pty_get_fd(pty));
+                break;
+
+        case PROP_TERM:
+                g_value_set_string(value, priv->term);
+                break;
+
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+        }
+}
+
+static void
+vte_pty_set_property (GObject      *object,
+                       guint         property_id,
+                       const GValue *value,
+                       GParamSpec   *pspec)
+{
+        VtePty *pty = VTE_PTY (object);
+        VtePtyPrivate *priv = pty->priv;
+
+        switch (property_id) {
+        case PROP_FLAGS:
+                priv->flags = g_value_get_flags(value);
+                break;
+
+        case PROP_FD:
+                priv->pty_fd = g_value_get_int(value);
+                priv->foreign = (priv->pty_fd != -1);
+                break;
+
+        case PROP_TERM:
+                vte_pty_set_term(pty, g_value_get_string(value));
+                break;
+
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+        }
+}
+
+static void
+vte_pty_class_init (VtePtyClass *klass)
+{
+        GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+        g_type_class_add_private(object_class, sizeof(VtePtyPrivate));
+
+        object_class->set_property = vte_pty_set_property;
+        object_class->get_property = vte_pty_get_property;
+        object_class->finalize     = vte_pty_finalize;
+
+        /**
+         * VtePty:flags:
+         *
+         * Controls how the session is recorded in lastlog, utmp, and wtmp,
+         * and whether to use the GNOME PTY helper.
+         *
+         * Since: 0.26
+         */
+        g_object_class_install_property
+                (object_class,
+                 PROP_FLAGS,
+                 g_param_spec_flags ("flags", NULL, NULL,
+                                     VTE_TYPE_PTY_FLAGS,
+                                     VTE_PTY_DEFAULT,
+                                     G_PARAM_READWRITE |
+                                     G_PARAM_CONSTRUCT_ONLY |
+                                     G_PARAM_STATIC_STRINGS));
+
+        /**
+         * VtePty:fd:
+         *
+         * The file descriptor of the PTY master.
+         *
+         * Since: 0.26
+         */
+        g_object_class_install_property
+                (object_class,
+                 PROP_FD,
+                 g_param_spec_int ("fd", NULL, NULL,
+                                   -1, G_MAXINT, -1,
+                                   G_PARAM_READWRITE |
+                                   G_PARAM_CONSTRUCT_ONLY |
+                                   G_PARAM_STATIC_STRINGS));
+
+        /**
+         * VtePty:term:
+         *
+         * The value to set for the TERM environment variable just after
+         * forking.
+         *
+         * Since: 0.26
+         */
+        g_object_class_install_property
+                (object_class,
+                 PROP_TERM,
+                 g_param_spec_string ("term", NULL, NULL,
+                                      "xterm",
+                                      G_PARAM_READWRITE |
+                                      G_PARAM_STATIC_STRINGS));
+}
+
+/* public API */
+
+/**
+ * vte_pty_error_quark:
+ *
+ * Error domain for VTE PTY errors. Errors in this domain will be from the #VtePtyError
+ * enumeration. See #GError for more information on error domains.
+ *
+ * Returns: the error domain for VTE PTY errors
+ *
+ * Since: 0.26
+ */
+GQuark
+vte_pty_error_quark(void)
+{
+  static GQuark quark = 0;
+
+  if (G_UNLIKELY (quark == 0))
+    quark = g_quark_from_static_string("vte-pty-error");
+
+  return quark;
+}
+
+/**
+ * vte_pty_new:
+ * @flags: flags from #VtePtyFlags
+ * @error: (allow-none): return location for a #GError, or %NULL
+ *
+ * Allocates a new pseudo-terminal.
+ *
+ * You can later use fork() or the g_spawn_async() family of functions
+ * to start a process on the PTY.
+ *
+ * If using fork(), you MUST call vte_pty_child_setup() in the child.
+ *
+ * If using g_spawn_async() and friends, you MUST either use
+ * vte_pty_child_setup() directly as the child setup function, or call
+ * vte_pty_child_setup() from your own child setup function supplied.
+ * Also, you MUST pass the %G_SPAWN_DO_NOT_REAP_CHILD flag.
+ *
+ * If GNOME PTY Helper is available and
+ * unless some of the %VTE_PTY_NO_LASTLOG, %VTE_PTY_NO_UTMP or
+ * %VTE_PTY_NO_WTMP flags are passed in @flags, the
+ * session is logged in the corresponding lastlog, utmp or wtmp
+ * system files.  When passing %VTE_PTY_NO_HELPER in @flags, the
+ * GNOME PTY Helper is bypassed entirely.
+ *
+ * When passing %VTE_PTY_NO_FALLBACK in @flags,
+ * and opening a PTY using the PTY helper fails, there will
+ * be no fallback to allocate a PTY using Unix98 PTY functions.
+ *
+ * Returns: (transfer full): a new #VtePty, or %NULL on error with @error filled in
+ *
+ * Since: 0.26
+ */
+VtePty *
+vte_pty_new (VtePtyFlags flags,
+             GError **error)
+{
+        return g_initable_new (VTE_TYPE_PTY,
+                               NULL /* cancellable */,
+                               error,
+                               "flags", flags,
+                               NULL);
+}
+
+/**
+ * vte_pty_new_foreign:
+ * @fd: (transfer full): a file descriptor to the PTY
+ * @error: (allow-none): return location for a #GError, or %NULL
+ *
+ * Creates a new #VtePty for the PTY master @fd.
+ *
+ * No entry will be made in the lastlog, utmp or wtmp system files.
+ *
+ * Note that the newly created #VtePty will take ownership of @fd
+ * and close it on finalize.
+ *
+ * Returns: (transfer full): a new #VtePty for @fd, or %NULL on error with @error filled in
+ *
+ * Since: 0.26
+ */
+VtePty *
+vte_pty_new_foreign (int fd,
+                     GError **error)
+{
+        g_return_val_if_fail(fd >= 0, NULL);
+
+        return g_initable_new (VTE_TYPE_PTY,
+                               NULL /* cancellable */,
+                               error,
+                               "fd", fd,
+                               NULL);
+}
+
+/**
+ * vte_pty_get_fd:
+ * @pty: a #VtePty
+ *
+ * Returns: (transfer none): the file descriptor of the PTY master in @pty. The
+ *   file descriptor belongs to @pty and must not be closed
+ */
+int
+vte_pty_get_fd (VtePty *pty)
+{
+        VtePtyPrivate *priv;
+
+        g_return_val_if_fail(VTE_IS_PTY(pty), -1);
+
+        priv = pty->priv;
+        g_return_val_if_fail(priv->pty_fd != -1, -1);
+
+        return priv->pty_fd;
+}
+
+/**
+ * vte_pty_set_term:
+ * @pty: a #VtePty
+ * @emulation: (allow-none): the name of a terminal description, or %NULL
+ *
+ * Sets what value of the TERM environment variable to set just after forking.
+ *
+ * Since: 0.26
+ */
+void
+vte_pty_set_term (VtePty *pty,
+                  const char *emulation)
+{
+        VtePtyPrivate *priv;
+
+        g_return_if_fail(VTE_IS_PTY(pty));
+        g_return_if_fail(emulation != NULL);
+
+        priv = pty->priv;
+        emulation = g_intern_string(emulation);
+        if (emulation == priv->term)
+                return;
+
+        priv->term = emulation;
+        g_object_notify(G_OBJECT(pty), "term");
+}
+
+/* Reimplementation of the ugly deprecated APIs _vte_pty_*() */
+
+#ifndef VTE_DISABLE_DEPRECATED_SOURCE
+
+static GHashTable *fd_to_pty_hash = NULL;
+
+static VtePty *
+get_vte_pty_for_fd (int fd)
+{
+        VtePty *pty;
+
+        if (fd_to_pty_hash != NULL &&
+            (pty = g_hash_table_lookup(fd_to_pty_hash, &fd)) != NULL)
+                return pty;
+
+        g_warning("No VtePty found for fd %d!\n", fd);
+        return NULL;
+}
+
+/**
+ * _vte_pty_open:
+ * @child: location to store the new process's ID
+ * @env_add: a list of environment variables to add to the child's environment
+ * @command: name of the binary to run
+ * @argv: arguments to pass to @command
+ * @directory: directory to start the new command in, or %NULL
+ * @columns: desired window columns
+ * @rows: desired window rows
+ * @lastlog: %TRUE if the lastlog should be updated
+ * @utmp: %TRUE if the utmp or utmpx log should be updated
+ * @wtmp: %TRUE if the wtmp or wtmpx log should be updated
+ *
+ * Starts a new copy of @command running under a psuedo-terminal, optionally in
+ * the supplied @directory, with window size set to @rows x @columns
+ * and variables in @env_add added to its environment.  If any combination of
+ * @lastlog, @utmp, and @wtmp is set, then the session is logged in the
+ * corresponding system files.
+ *
+ * Returns: an open file descriptor for the pty master, -1 on failure
+ *
+ * Deprecated: 0.26: Use #VtePty together with fork() or the g_spawn_async() family of functions instead
+ */
+int
+_vte_pty_open(pid_t *child,
+              char **env_add,
+              const char *command,
+              char **argv,
+              const char *directory,
+              int columns,
+              int rows,
+              gboolean lastlog,
+              gboolean utmp,
+              gboolean wtmp)
+{
+        VtePty *pty;
+        GPid pid;
+        gboolean ret;
+
+        pty = vte_pty_new(__vte_pty_get_pty_flags (lastlog, utmp, wtmp), NULL);
+        if (pty == NULL)
+                return -1;
+
+        if (command != NULL) {
+                char **real_argv;
+                GSpawnFlags spawn_flags;
+
+                spawn_flags = G_SPAWN_CHILD_INHERITS_STDIN |
+                              G_SPAWN_SEARCH_PATH;
+                real_argv = __vte_pty_get_argv(command, argv, &spawn_flags);
+                ret = __vte_pty_spawn(pty,
+                                      directory,
+                                      real_argv,
+                                      env_add,
+                                      spawn_flags,
+                                      NULL, NULL,
+                                      &pid,
+                                      NULL);
+                g_strfreev(real_argv);
+        } else {
+                ret = __vte_pty_fork(pty, &pid, NULL);
+        }
+
+        if (!ret) {
+                g_object_unref(pty);
+                return -1;
+        }
+
+        vte_pty_set_size(pty, rows, columns, NULL);
+
+        /* Stash the pty in the hash so we can later retrieve it by FD */
+        if (fd_to_pty_hash == NULL) {
+                fd_to_pty_hash = g_hash_table_new_full(g_int_hash,
+                                                       g_int_equal,
+                                                       NULL,
+                                                       (GDestroyNotify) g_object_unref);
+        }
+
+        g_hash_table_insert(fd_to_pty_hash, &pty->priv->pty_fd, pty /* adopt refcount */);
+
+        if (child)
+                *child = (pid_t) pid;
+
+        return vte_pty_get_fd(pty);
+}
+
+/**
+ * _vte_pty_get_size:
+ * @master: the file descriptor of the PTY master
+ * @columns: a place to store the number of columns
+ * @rows: a place to store the number of rows
+ *
+ * Attempts to read the pseudo terminal's window size.
+ *
+ * Returns: 0 on success, -1 on failure.
+ *
+ * Deprecated: 0.26: Use #VtePty and vte_pty_get_size() instead
+ */
+int
+_vte_pty_get_size(int master,
+                  int *columns,
+                  int *rows)
+{
+        VtePty *pty;
+
+        if ((pty = get_vte_pty_for_fd(master)) == NULL)
+                return -1;
+
+        if (vte_pty_get_size(pty, rows, columns, NULL))
+                return 0;
+
+        return -1;
+}
+
+/**
+ * _vte_pty_set_size:
+ * @master: the file descriptor of the PTY master
+ * @columns: the desired number of columns
+ * @rows: the desired number of rows
+ *
+ * Attempts to resize the pseudo terminal's window size.  If successful, the
+ * OS kernel will send #SIGWINCH to the child process group.
+ *
+ * Returns: 0 on success, -1 on failure.
+ *
+ * Deprecated: 0.26: Use #VtePty and vte_pty_set_size() instead
+ */
+int
+_vte_pty_set_size(int master,
+                  int columns,
+                  int rows)
+{
+        VtePty *pty;
+
+        if ((pty = get_vte_pty_for_fd(master)) == NULL)
+                return -1;
+
+        if (vte_pty_set_size(pty, rows, columns, NULL))
+                return 0;
+
+        return -1;
+}
+
+/**
+ * _vte_pty_set_utf8:
+ * @pty: The pty master descriptor.
+ * @utf8: Whether or not the pty is in UTF-8 mode.
+ *
+ * Tells the kernel whether the terminal is UTF-8 or not, in case it can make
+ * use of the info.  Linux 2.6.5 or so defines IUTF8 to make the line
+ * discipline do multibyte backspace correctly.
+ *
+ * Deprecated: 0.26: Use #VtePty and vte_pty_set_utf8() instead
+ */
+void _vte_pty_set_utf8(int master,
+                       gboolean utf8)
+{
+        VtePty *pty;
+
+        if ((pty = get_vte_pty_for_fd(master)) == NULL)
+                return;
+
+        vte_pty_set_utf8(pty, utf8, NULL);
+}
+
+/**
+ * _vte_pty_close:
+ * @pty: the pty master descriptor.
+ *
+ * Cleans up the PTY associated with the descriptor, specifically any logging
+ * performed for the session.  The descriptor itself remains open.
+ *
+ * Deprecated: 0.26: Use #VtePty and vte_pty_close() instead
+ */
+void _vte_pty_close(int master)
+{
+        VtePty *pty;
+
+        if ((pty = get_vte_pty_for_fd(master)) == NULL)
+                return;
+
+        /* Prevent closing the FD */
+        pty->priv->pty_fd = -1;
+
+        g_hash_table_remove(fd_to_pty_hash, &master);
+
+        if (g_hash_table_size(fd_to_pty_hash) == 0) {
+                g_hash_table_destroy(fd_to_pty_hash);
+                fd_to_pty_hash = NULL;
+        }
+}
+
+#endif /* !VTE_DISABLE_DEPRECATED_SOURCE */
diff --git a/vte/src/pty.h b/vte/src/pty.h
new file mode 100644
index 0000000..726d639
--- /dev/null
+++ b/vte/src/pty.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef VTE_DISABLE_DEPRECATED
+
+#ifndef vte_pty_h_included
+#define vte_pty_h_included
+
+#include <sys/types.h>
+
+G_BEGIN_DECLS
+
+/* Start up the given binary (exact path, not interpreted at all) in a
+ * pseudo-terminal of its own, returning the descriptor for the master
+ * side of the PTY pair, logging the session to the specified files, and
+ * storing the child's PID in the given argument. */
+int _vte_pty_open(pid_t *child, char **env_add,
+                 const char *command, char **argv, const char *directory,
+                 int columns, int rows,
+                 gboolean lastlog, gboolean utmp, gboolean wtmp);
+
+/* Set or read the size of a terminal.  Returns 0 on success, -1 on failure,
+ * with errno set to defined return codes from ioctl(). */
+int _vte_pty_get_size(int master, int *columns, int *rows);
+int _vte_pty_set_size(int master, int columns, int rows);
+
+/* Try to let the kernel know that the terminal is or is not UTF-8. */
+void _vte_pty_set_utf8(int pty, gboolean utf8);
+
+/* Close a pty. */
+void _vte_pty_close(int pty);
+
+G_END_DECLS
+
+#endif /* vte_pty_h_included */
+
+#endif /* !VTE_DISABLE_DEPRECATED */
diff --git a/vte/src/reaper.c b/vte/src/reaper.c
new file mode 100644
index 0000000..35ae488
--- /dev/null
+++ b/vte/src/reaper.c
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/**
+ * SECTION: vte-reaper
+ * @short_description: A singleton object which catches %SIGCHLD signals and
+ * converts them into GObject-style &quot;child-exited&quot; signals
+ *
+ * Because an application may need to be notified when child processes
+ * exit, and because there is only one %SIGCHLD handler, the #VteTerminal
+ * widget relies on a #VteReaper to watch for %SIGCHLD notifications and
+ * retrieve the exit status of child processes which have exited.  When
+ * glib provides child_watch functionality, the #VteReaper merely acts as
+ * a proxy for glib's own functionality.
+ *
+ * Since 0.11.11
+ */
+
+#include <config.h>
+
+#include "debug.h"
+#include "marshal.h"
+#include "reaper.h"
+
+static VteReaper *singleton_reaper = NULL;
+
+G_DEFINE_TYPE(VteReaper, vte_reaper, G_TYPE_OBJECT)
+
+static void
+vte_reaper_child_watch_cb(GPid pid, gint status, gpointer data)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Reaper emitting child-exited signal.\n");
+       g_signal_emit_by_name(data, "child-exited", pid, status);
+       g_spawn_close_pid (pid);
+}
+
+/**
+ * vte_reaper_add_child:
+ * @pid: the ID of a child process which will be monitored
+ *
+ * Ensures that child-exited signals will be emitted when @pid exits.  This is
+ * necessary for correct operation when running with glib versions >= 2.4.
+ *
+ * Returns: the new source ID
+ *
+ * Since 0.11.11
+ */
+int
+vte_reaper_add_child(GPid pid)
+{
+       return g_child_watch_add_full(G_PRIORITY_LOW,
+                                     pid,
+                                     vte_reaper_child_watch_cb,
+                                     vte_reaper_get(),
+                                     (GDestroyNotify)g_object_unref);
+}
+
+static void
+vte_reaper_init(VteReaper *reaper)
+{
+}
+
+static GObject*
+vte_reaper_constructor (GType                  type,
+                        guint                  n_construct_properties,
+                        GObjectConstructParam *construct_properties)
+{
+  if (singleton_reaper) {
+         return g_object_ref (singleton_reaper);
+  } else {
+         GObject *obj;
+         obj = G_OBJECT_CLASS (vte_reaper_parent_class)->constructor (type, n_construct_properties, 
construct_properties);
+         singleton_reaper = VTE_REAPER (obj);
+         return obj;
+  }
+}
+
+
+static void
+vte_reaper_finalize(GObject *reaper)
+{
+       G_OBJECT_CLASS(vte_reaper_parent_class)->finalize(reaper);
+       singleton_reaper = NULL;
+}
+
+static void
+vte_reaper_class_init(VteReaperClass *klass)
+{
+       GObjectClass *gobject_class;
+
+        /**
+         * VteReaper::child-exited:
+         * @vtereaper: the object which received the signal
+         * @arg1: the process ID of the exited child
+         * @arg2: the status of the exited child, as returned by waitpid()
+         * 
+         * Emitted when the #VteReaper object detects that a child of the
+         * current process has exited.
+         *
+         * Since: 0.11.11
+         */
+       klass->child_exited_signal = g_signal_new(g_intern_static_string("child-exited"),
+                                                 G_OBJECT_CLASS_TYPE(klass),
+                                                 G_SIGNAL_RUN_LAST,
+                                                 0,
+                                                 NULL,
+                                                 NULL,
+                                                 _vte_marshal_VOID__INT_INT,
+                                                 G_TYPE_NONE,
+                                                 2, G_TYPE_INT, G_TYPE_INT);
+
+       gobject_class = G_OBJECT_CLASS(klass);
+       gobject_class->constructor = vte_reaper_constructor;
+       gobject_class->finalize = vte_reaper_finalize;
+}
+
+/**
+ * vte_reaper_get:
+ *
+ * Finds the address of the global #VteReaper object, creating the object if
+ * necessary.
+ *
+ * Returns: the global #VteReaper object, which should not be unreffed.
+ */
+VteReaper *
+vte_reaper_get(void)
+{
+       return g_object_new(VTE_TYPE_REAPER, NULL);
+}
+
+#ifdef REAPER_MAIN
+
+#include <unistd.h>
+
+GMainContext *context;
+GMainLoop *loop;
+pid_t child;
+
+static void
+child_exited(GObject *object, int pid, int status, gpointer data)
+{
+       g_print("[parent] Child with pid %d exited with code %d, "
+               "was waiting for %d.\n", pid, status, GPOINTER_TO_INT(data));
+       if (child == pid) {
+               g_print("[parent] Quitting.\n");
+               g_main_loop_quit(loop);
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       VteReaper *reaper;
+       pid_t p, q;
+
+       _vte_debug_init();
+
+       g_type_init();
+       context = g_main_context_default();
+       loop = g_main_loop_new(context, FALSE);
+       reaper = vte_reaper_get();
+
+       g_print("[parent] Forking.\n");
+       p = fork();
+       switch (p) {
+               case -1:
+                       g_print("[parent] Fork failed.\n");
+                       g_assert_not_reached();
+                       break;
+               case 0:
+                       g_print("[child]  Going to sleep.\n");
+                       sleep(10);
+                       g_print("[child]  Quitting.\n");
+                       _exit(30);
+                       break;
+               default:
+                       g_print("[parent] Starting to wait for %d.\n", p);
+                       child = p;
+                       g_signal_connect(reaper,
+                                        "child-exited",
+                                        G_CALLBACK(child_exited),
+                                        GINT_TO_POINTER(child));
+                       break;
+       }
+
+       g_print("[parent] Forking.\n");
+       q = fork();
+       switch (q) {
+               case -1:
+                       g_print("[parent] Fork failed.\n");
+                       g_assert_not_reached();
+                       break;
+               case 0:
+                       g_print("[child]  Going to sleep.\n");
+                       sleep(5);
+                       _exit(5);
+                       break;
+               default:
+                       g_print("[parent] Not waiting for %d.\n", q);
+                       break;
+       }
+
+
+       g_main_loop_run(loop);
+
+       g_object_unref(reaper);
+
+       return 0;
+}
+#endif
diff --git a/vte/src/reaper.h b/vte/src/reaper.h
new file mode 100644
index 0000000..d67498e
--- /dev/null
+++ b/vte/src/reaper.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef VTE_DISABLE_DEPRECATED
+
+#ifndef vte_reaper_h_included
+#define vte_reaper_h_included
+
+#include <sys/wait.h>
+#include <signal.h>
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/**
+ * VteReaper:
+ *
+ * The reaper object.
+ */
+struct _VteReaper {
+       GObject object;
+
+        /*< private >*/
+       GIOChannel *_channel; /* unused */
+       int _iopipe[2]; /* unused */
+};
+typedef struct _VteReaper VteReaper;
+
+struct _VteReaperClass {
+       GObjectClass parent_class;
+        /*< private >*/
+       guint child_exited_signal;
+};
+typedef struct _VteReaperClass VteReaperClass;
+
+GType vte_reaper_get_type(void);
+
+#define VTE_TYPE_REAPER                        (vte_reaper_get_type())
+#define VTE_REAPER(obj)                        (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+                                                       VTE_TYPE_REAPER, \
+                                                       VteReaper))
+#define VTE_REAPER_CLASS(klass)                G_TYPE_CHECK_CLASS_CAST((klass), \
+                                                            VTE_TYPE_REAPER, \
+                                                            VteReaperClass)
+#define VTE_IS_REAPER(obj)             G_TYPE_CHECK_INSTANCE_TYPE((obj), VTE_TYPE_REAPER)
+#define VTE_IS_REAPER_CLASS(klass)     G_TYPE_CHECK_CLASS_TYPE((klass), \
+                                                            VTE_TYPE_REAPER)
+#define VTE_REAPER_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), \
+                                                                  VTE_TYPE_REAPER, \
+                                                                  VteReaperClass))
+
+VteReaper *vte_reaper_get(void);
+int vte_reaper_add_child(GPid pid);
+
+G_END_DECLS
+
+#endif
+
+#endif /* !VTE_DISABLE_DEPRECATED */
diff --git a/vte/src/reflect.c b/vte/src/reflect.c
new file mode 100644
index 0000000..6d43649
--- /dev/null
+++ b/vte/src/reflect.c
@@ -0,0 +1,340 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <gtk/gtk.h>
+#include <atk/atk.h>
+#ifdef USE_VTE
+#include "vte.h"
+#endif
+
+static GArray *contents = NULL;
+
+#ifdef USE_TEXT_VIEW
+/*
+ * Implementation for a TextView widget.
+ */
+static void
+terminal_init_text_view(GtkWidget **widget)
+{
+       *widget = gtk_text_view_new();
+       gtk_text_view_set_editable(GTK_TEXT_VIEW(*widget), TRUE);
+}
+static void
+terminal_shell_text_view(GtkWidget *widget)
+{
+       /* no-op */
+}
+static GtkAdjustment *
+terminal_adjustment_text_view(GtkWidget *terminal)
+{
+#if GTK_CHECK_VERSION (2, 21, 6)
+       return gtk_text_view_get_vadjustment(GTK_TEXT_VIEW(terminal));
+#else
+       return GTK_TEXT_VIEW(terminal)->vadjustment;
+#endif
+}
+#endif
+#ifdef USE_VTE
+/*
+ * Implementation for a VteTerminal widget.
+ */
+static void
+terminal_init_vte(GtkWidget **terminal)
+{
+       *terminal = vte_terminal_new();
+       g_signal_connect(G_OBJECT(*terminal), "eof",
+                        G_CALLBACK(gtk_main_quit), NULL);
+       g_signal_connect(G_OBJECT(*terminal), "child-exited",
+                        G_CALLBACK(gtk_main_quit), NULL);
+}
+static void
+terminal_shell_vte(GtkWidget *terminal)
+{
+       vte_terminal_fork_command(VTE_TERMINAL(terminal),
+                                 getenv("SHELL") ? getenv("SHELL") : "/bin/sh",
+                                 NULL,
+                                 NULL,
+                                 g_get_home_dir() ? g_get_home_dir() : NULL,
+                                 FALSE,
+                                 FALSE,
+                                 FALSE);
+}
+static GtkAdjustment *
+terminal_adjustment_vte(GtkWidget *terminal)
+{
+       return (VTE_TERMINAL(terminal))->adjustment;
+}
+#endif
+
+/*
+ * Update the contents of the widget with the data from our contents array.
+ */
+static void
+update_contents(AtkObject *obj, GtkWidget *widget)
+{
+       int caret, i;
+       GString *s;
+
+       caret = atk_text_get_caret_offset(ATK_TEXT(obj));
+       s = g_string_new(NULL);
+       for (i = 0; i < contents->len; i++) {
+               if (i == caret) {
+                       s = g_string_append(s, "[CARET]");
+               }
+               s = g_string_append_unichar(s,
+                                           g_array_index(contents,
+                                                         gunichar,
+                                                         i));
+       }
+       if (i == caret) {
+               s = g_string_append(s, "[CARET]");
+       }
+       if (GTK_IS_LABEL(widget)) {
+               gtk_label_set_text(GTK_LABEL(widget), s->str);
+               gtk_label_set_selectable(GTK_LABEL(widget),
+                                        atk_text_get_n_selections(ATK_TEXT(obj)) > 0);
+               if (gtk_label_get_selectable(GTK_LABEL(widget))) {
+                       int selection_start, selection_end;
+                       atk_text_get_selection(ATK_TEXT(obj), 0,
+                                              &selection_start,
+                                              &selection_end);
+                       gtk_label_select_region(GTK_LABEL(widget),
+                                               selection_start, selection_end);
+               }
+       }
+       g_string_free(s, TRUE);
+}
+
+/* Handle inserted text by inserting the text into our gunichar array. */
+static void
+text_changed_insert(AtkObject *obj, gint offset, gint length, gpointer data)
+{
+       char *inserted, *p;
+       gunichar c;
+       int i;
+
+       inserted = atk_text_get_text(ATK_TEXT(obj), offset, offset + length);
+
+       if (!g_utf8_validate(inserted, -1, NULL)) {
+               g_free(inserted);
+               g_error("UTF-8 validation error");
+               return;
+       }
+
+       p = inserted;
+       i = 0;
+       while (i < length) {
+               c = g_utf8_get_char(p);
+               if (offset + i >= contents->len) {
+                       g_array_append_val(contents, c);
+               } else {
+                       g_array_insert_val(contents, offset + i, c);
+               }
+               i++;
+               p = g_utf8_next_char(p);
+       }
+
+#ifdef VTE_DEBUG
+       if ((getenv("REFLECT_VERBOSE") != NULL) &&
+           (atol(getenv("REFLECT_VERBOSE")) != 0)) {
+               g_printerr("Inserted %d chars ('%.*s') at %d,",
+                       length, (int)(p - inserted), inserted, offset);
+               g_printerr(" buffer contains %d characters.\n",
+                       contents->len);
+       }
+#endif
+
+       g_free(inserted);
+
+       update_contents(obj, GTK_WIDGET(data));
+}
+
+/* Handle deleted text by removing the text from our gunichar array. */
+static void
+text_changed_delete(AtkObject *obj, gint offset, gint length, gpointer data)
+{
+       int i;
+       for (i = offset + length - 1; i >= offset; i--) {
+               if (i > contents->len - 1) {
+                       g_warning("Invalid character %d was deleted.\n", i);
+               }
+               g_array_remove_index(contents, i);
+       }
+#ifdef VTE_DEBUG
+       if ((getenv("REFLECT_VERBOSE") != NULL) &&
+           (atol(getenv("REFLECT_VERBOSE")) != 0)) {
+               g_printerr("Deleted %d chars at %d.\n", length, offset);
+       }
+#endif
+       update_contents(obj, GTK_WIDGET(data));
+}
+
+static void
+text_caret_moved(AtkObject *obj, gint offset, gpointer data)
+{
+       update_contents(obj, GTK_WIDGET(data));
+}
+
+static void
+text_selection_changed(AtkObject *obj, gpointer data)
+{
+       update_contents(obj, GTK_WIDGET(data));
+}
+
+/* Wrapper versions. */
+static void
+terminal_init(GtkWidget **terminal)
+{
+       *terminal = NULL;
+#ifdef USE_TEXT_VIEW
+       terminal_init_text_view(terminal);
+       return;
+#endif
+#ifdef USE_VTE
+       terminal_init_vte(terminal);
+       return;
+#endif
+       g_assert_not_reached();
+}
+static void
+terminal_shell(GtkWidget *terminal)
+{
+#ifdef USE_TEXT_VIEW
+       terminal_shell_text_view(terminal);
+       return;
+#endif
+#ifdef USE_VTE
+       terminal_shell_vte(terminal);
+       return;
+#endif
+       g_assert_not_reached();
+}
+static GtkAdjustment *
+terminal_adjustment(GtkWidget *terminal)
+{
+#ifdef USE_TEXT_VIEW
+       return terminal_adjustment_text_view(terminal);
+#endif
+#ifdef USE_VTE
+       return terminal_adjustment_vte(terminal);
+#endif
+       g_assert_not_reached();
+}
+
+int
+main(int argc, char **argv)
+{
+       GtkWidget *label, *terminal, *tophalf, *pane, *window, *scrollbar, *sw;
+       AtkObject *obj;
+       char *text, *p;
+       gunichar c;
+       gint count;
+
+       gtk_init(&argc, &argv);
+
+       contents = g_array_new(TRUE, FALSE, sizeof(gunichar));
+
+       terminal_init(&terminal);
+
+#ifdef USE_TEXT_VIEW
+       tophalf = gtk_scrolled_window_new(NULL, terminal_adjustment(terminal));
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tophalf),
+                                      GTK_POLICY_AUTOMATIC,
+                                      GTK_POLICY_AUTOMATIC);
+       scrollbar = NULL;
+       gtk_container_add(GTK_CONTAINER(tophalf), terminal);
+#else
+       tophalf = gtk_hbox_new(FALSE, 0);
+
+       gtk_box_pack_start(GTK_BOX(tophalf), terminal, TRUE, TRUE, 0);
+       gtk_widget_show(terminal);
+
+       scrollbar = gtk_vscrollbar_new(terminal_adjustment(terminal));
+       gtk_box_pack_start(GTK_BOX(tophalf), scrollbar, FALSE, TRUE, 0);
+       gtk_widget_show(scrollbar);
+#endif
+       gtk_widget_show(terminal);
+
+       label = gtk_label_new("");
+       gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
+       gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+
+       sw = gtk_scrolled_window_new(NULL, NULL);
+       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), label);
+       gtk_widget_show(label);
+
+#if GTK_CHECK_VERSION (2, 91, 2)
+       pane = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
+#else
+       pane = gtk_vpaned_new();
+#endif
+       gtk_paned_pack1(GTK_PANED(pane), tophalf, TRUE, FALSE);
+       gtk_paned_pack2(GTK_PANED(pane), sw, TRUE, FALSE);
+       gtk_widget_show(tophalf);
+       gtk_widget_show(sw);
+
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(gtk_main_quit), NULL);
+       gtk_container_add(GTK_CONTAINER(window), pane);
+       gtk_widget_show(pane);
+
+       obj = gtk_widget_get_accessible(terminal);
+       g_assert(obj != NULL);
+       g_signal_connect(G_OBJECT(obj), "text-changed::insert",
+                        G_CALLBACK(text_changed_insert), label);
+       g_signal_connect(G_OBJECT(obj), "text-changed::delete",
+                        G_CALLBACK(text_changed_delete), label);
+       g_signal_connect(G_OBJECT(obj), "text-caret-moved",
+                        G_CALLBACK(text_caret_moved), label);
+       g_signal_connect(G_OBJECT(obj), "text-selection-changed",
+                        G_CALLBACK(text_selection_changed), label);
+
+       count = atk_text_get_character_count(ATK_TEXT(obj));
+       if (count > 0) {
+               text = atk_text_get_text(ATK_TEXT(obj), 0, count);
+               if (text != NULL) {
+                       for (p = text;
+                            contents->len < count;
+                            p = g_utf8_next_char(p)) {
+                               c = g_utf8_get_char(p);
+                               g_array_append_val(contents, c);
+                       }
+                       g_free(text);
+               }
+       }
+       terminal_shell(terminal);
+
+       gtk_window_set_default_size(GTK_WINDOW(window), 600, 450);
+       gtk_widget_show(window);
+
+       update_contents(obj, terminal);
+
+       gtk_main();
+
+       g_array_free(contents, TRUE);
+       contents = NULL;
+
+       return 0;
+}
diff --git a/vte/src/ring.c b/vte/src/ring.c
new file mode 100644
index 0000000..db4edec
--- /dev/null
+++ b/vte/src/ring.c
@@ -0,0 +1,631 @@
+/*
+ * Copyright (C) 2002,2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Nalin Dahyabhai, Behdad Esfahbod
+ */
+
+#include <config.h>
+
+#include "debug.h"
+#include "ring.h"
+
+#include <string.h>
+
+/*
+ * VteRing: A buffer ring
+ */
+
+#ifdef VTE_DEBUG
+static void
+_vte_ring_validate (VteRing * ring)
+{
+       g_assert(ring != NULL);
+       _vte_debug_print(VTE_DEBUG_RING,
+                       " Delta = %lu, Length = %lu, Max = %lu, Writable = %lu.\n",
+                       ring->start, ring->end - ring->start,
+                       ring->max, ring->end - ring->writable);
+
+       g_assert (ring->start <= ring->writable);
+       g_assert (ring->writable <= ring->end);
+
+       g_assert (ring->end - ring->start <= ring->max);
+       g_assert (ring->end - ring->writable <= ring->mask);
+}
+#else
+#define _vte_ring_validate(ring) G_STMT_START {} G_STMT_END
+#endif
+
+
+void
+_vte_ring_init (VteRing *ring, gulong max_rows)
+{
+       _vte_debug_print(VTE_DEBUG_RING, "New ring %p.\n", ring);
+
+       memset (ring, 0, sizeof (*ring));
+
+       ring->max = MAX (max_rows, 3);
+
+       ring->mask = 31;
+       ring->array = g_malloc0 (sizeof (ring->array[0]) * (ring->mask + 1));
+
+       ring->attr_stream = _vte_file_stream_new ();
+       ring->text_stream = _vte_file_stream_new ();
+       ring->row_stream = _vte_file_stream_new ();
+
+       ring->last_attr.text_offset = 0;
+       ring->last_attr.attr.i = basic_cell.i.attr;
+       ring->utf8_buffer = g_string_sized_new (128);
+
+       _vte_row_data_init (&ring->cached_row);
+       ring->cached_row_num = (gulong) -1;
+
+       _vte_ring_validate(ring);
+}
+
+void
+_vte_ring_fini (VteRing *ring)
+{
+       gulong i;
+
+       for (i = 0; i <= ring->mask; i++)
+               _vte_row_data_fini (&ring->array[i]);
+
+       g_free (ring->array);
+
+       g_object_unref (ring->attr_stream);
+       g_object_unref (ring->text_stream);
+       g_object_unref (ring->row_stream);
+
+       g_string_free (ring->utf8_buffer, TRUE);
+
+       _vte_row_data_fini (&ring->cached_row);
+}
+
+typedef struct _VteRowRecord {
+       gsize text_offset;
+       gsize attr_offset;
+} VteRowRecord;
+
+static gboolean
+_vte_ring_read_row_record (VteRing *ring, VteRowRecord *record, gulong position)
+{
+       return _vte_stream_read (ring->row_stream, position * sizeof (*record), (char *) record, sizeof 
(*record));
+}
+
+static void
+_vte_ring_append_row_record (VteRing *ring, const VteRowRecord *record, gulong position)
+{
+       _vte_stream_append (ring->row_stream, (const char *) record, sizeof (*record));
+}
+
+static void
+_vte_ring_freeze_row (VteRing *ring, gulong position, const VteRowData *row)
+{
+       VteRowRecord record;
+       VteCell *cell;
+       GString *buffer = ring->utf8_buffer;
+       int i;
+
+       _vte_debug_print (VTE_DEBUG_RING, "Freezing row %lu.\n", position);
+
+       record.text_offset = _vte_stream_head (ring->text_stream);
+       record.attr_offset = _vte_stream_head (ring->attr_stream);
+
+       g_string_set_size (buffer, 0);
+       for (i = 0, cell = row->cells; i < row->len; i++, cell++) {
+               VteIntCellAttr attr;
+               int num_chars;
+
+               /* Attr storage:
+                *
+                * 1. We don't store attrs for fragments.  They can be
+                * reconstructed using the columns of their start cell.
+                *
+                * 2. We store one attr per vteunistr character starting
+                * from the second character, with columns=0.
+                *
+                * That's enough to reconstruct the attrs, and to store
+                * the text in real UTF-8.
+                */
+               attr.s = cell->attr;
+               if (G_LIKELY (!attr.s.fragment)) {
+
+                       if (ring->last_attr.attr.i != attr.i) {
+                               ring->last_attr.text_offset = record.text_offset + buffer->len;
+                               _vte_stream_append (ring->attr_stream, (const char *) &ring->last_attr, 
sizeof (ring->last_attr));
+                               if (!buffer->len)
+                                       /* This row doesn't use last_attr, adjust */
+                                       record.attr_offset += sizeof (ring->last_attr);
+                               ring->last_attr.attr = attr;
+                       }
+
+                       num_chars = _vte_unistr_strlen (cell->c);
+                       if (num_chars > 1) {
+                               attr.s.columns = 0;
+                               ring->last_attr.text_offset = record.text_offset + buffer->len
+                                                           + g_unichar_to_utf8 (_vte_unistr_get_base 
(cell->c), NULL);
+                               _vte_stream_append (ring->attr_stream, (const char *) &ring->last_attr, 
sizeof (ring->last_attr));
+                               ring->last_attr.attr = attr;
+                       }
+
+                       _vte_unistr_append_to_string (cell->c, buffer);
+               }
+       }
+       if (!row->attr.soft_wrapped)
+               g_string_append_c (buffer, '\n');
+
+       _vte_stream_append (ring->text_stream, buffer->str, buffer->len);
+       _vte_ring_append_row_record (ring, &record, position);
+}
+
+static void
+_vte_ring_thaw_row (VteRing *ring, gulong position, VteRowData *row, gboolean do_truncate)
+{
+       VteRowRecord records[2], record;
+       VteIntCellAttr attr;
+       VteCellAttrChange attr_change;
+       VteCell cell;
+       const char *p, *q, *end;
+       GString *buffer = ring->utf8_buffer;
+
+       _vte_debug_print (VTE_DEBUG_RING, "Thawing row %lu.\n", position);
+
+       _vte_row_data_clear (row);
+
+       attr_change.text_offset = 0;
+
+       if (!_vte_ring_read_row_record (ring, &records[0], position))
+               return;
+       if ((position + 1) * sizeof (records[0]) < _vte_stream_head (ring->row_stream)) {
+               if (!_vte_ring_read_row_record (ring, &records[1], position + 1))
+                       return;
+       } else
+               records[1].text_offset = _vte_stream_head (ring->text_stream);
+
+       g_string_set_size (buffer, records[1].text_offset - records[0].text_offset);
+       if (!_vte_stream_read (ring->text_stream, records[0].text_offset, buffer->str, buffer->len))
+               return;
+
+       record = records[0];
+
+       if (G_LIKELY (buffer->len && buffer->str[buffer->len - 1] == '\n'))
+               buffer->len--;
+       else
+               row->attr.soft_wrapped = TRUE;
+
+       p = buffer->str;
+       end = p + buffer->len;
+       while (p < end) {
+
+               if (record.text_offset >= ring->last_attr.text_offset) {
+                       attr = ring->last_attr.attr;
+               } else {
+                       if (record.text_offset >= attr_change.text_offset) {
+                               if (!_vte_stream_read (ring->attr_stream, record.attr_offset, (char *) 
&attr_change, sizeof (attr_change)))
+                                       return;
+                               record.attr_offset += sizeof (attr_change);
+                       }
+                       attr = attr_change.attr;
+               }
+
+               cell.attr = attr.s;
+               cell.c = g_utf8_get_char (p);
+
+               q = g_utf8_next_char (p);
+               record.text_offset += q - p;
+               p = q;
+
+               if (G_UNLIKELY (cell.attr.columns == 0)) {
+                       if (G_LIKELY (row->len)) {
+                               /* Combine it */
+                               row->cells[row->len - 1].c = _vte_unistr_append_unichar (row->cells[row->len 
- 1].c, cell.c);
+                       } else {
+                               cell.attr.columns = 1;
+                               _vte_row_data_append (row, &cell);
+                       }
+               } else {
+                       _vte_row_data_append (row, &cell);
+                       if (cell.attr.columns > 1) {
+                               /* Add the fragments */
+                               int i, columns = cell.attr.columns;
+                               cell.attr.fragment = 1;
+                               cell.attr.columns = 1;
+                               for (i = 1; i < columns; i++)
+                                       _vte_row_data_append (row, &cell);
+                       }
+               }
+       }
+
+       if (do_truncate) {
+               if (records[0].text_offset < ring->last_attr.text_offset)
+                       if (!_vte_stream_read (ring->attr_stream, records[0].attr_offset, (char *) 
&ring->last_attr, sizeof (ring->last_attr))) {
+                               ring->last_attr.text_offset = 0;
+                               ring->last_attr.attr.i = basic_cell.i.attr;
+                       }
+               _vte_stream_truncate (ring->row_stream, position * sizeof (record));
+               _vte_stream_truncate (ring->attr_stream, records[0].attr_offset);
+               _vte_stream_truncate (ring->text_stream, records[0].text_offset);
+       }
+}
+
+static void
+_vte_ring_reset_streams (VteRing *ring, gulong position)
+{
+       _vte_debug_print (VTE_DEBUG_RING, "Reseting streams to %lu.\n", position);
+
+       _vte_stream_reset (ring->row_stream, position * sizeof (VteRowRecord));
+       _vte_stream_reset (ring->text_stream, 0);
+       _vte_stream_reset (ring->attr_stream, 0);
+
+       ring->last_attr.text_offset = 0;
+       ring->last_attr.attr.i = basic_cell.i.attr;
+
+       ring->last_page = position;
+}
+
+static void
+_vte_ring_new_page (VteRing *ring)
+{
+       _vte_debug_print (VTE_DEBUG_RING, "Starting new stream page at %lu.\n", ring->writable);
+
+       _vte_stream_new_page (ring->attr_stream);
+       _vte_stream_new_page (ring->text_stream);
+       _vte_stream_new_page (ring->row_stream);
+
+       ring->last_page = ring->writable;
+}
+
+
+
+static inline VteRowData *
+_vte_ring_writable_index (VteRing *ring, gulong position)
+{
+       return &ring->array[position & ring->mask];
+}
+
+const VteRowData *
+_vte_ring_index (VteRing *ring, gulong position)
+{
+       if (G_LIKELY (position >= ring->writable))
+               return _vte_ring_writable_index (ring, position);
+
+       if (ring->cached_row_num != position) {
+               _vte_debug_print(VTE_DEBUG_RING, "Caching row %lu.\n", position);
+               _vte_ring_thaw_row (ring, position, &ring->cached_row, FALSE);
+               ring->cached_row_num = position;
+       }
+
+       return &ring->cached_row;
+}
+
+static void _vte_ring_ensure_writable (VteRing *ring, gulong position);
+static void _vte_ring_ensure_writable_room (VteRing *ring);
+
+VteRowData *
+_vte_ring_index_writable (VteRing *ring, gulong position)
+{
+       _vte_ring_ensure_writable (ring, position);
+       return _vte_ring_writable_index (ring, position);
+}
+
+static void
+_vte_ring_freeze_one_row (VteRing *ring)
+{
+       VteRowData *row;
+
+       if (G_UNLIKELY (ring->writable == ring->start))
+               _vte_ring_reset_streams (ring, ring->writable);
+
+       row = _vte_ring_writable_index (ring, ring->writable);
+       _vte_ring_freeze_row (ring, ring->writable, row);
+
+       ring->writable++;
+
+       if (G_UNLIKELY (ring->writable == ring->last_page || ring->writable - ring->last_page >= ring->max))
+               _vte_ring_new_page (ring);
+}
+
+static void
+_vte_ring_thaw_one_row (VteRing *ring)
+{
+       VteRowData *row;
+
+       g_assert (ring->start < ring->writable);
+
+       _vte_ring_ensure_writable_room (ring);
+
+       ring->writable--;
+
+       if (ring->writable == ring->cached_row_num)
+               ring->cached_row_num = (gulong) -1; /* Invalidate cached row */
+
+       row = _vte_ring_writable_index (ring, ring->writable);
+
+       _vte_ring_thaw_row (ring, ring->writable, row, TRUE);
+}
+
+static void
+_vte_ring_discard_one_row (VteRing *ring)
+{
+       ring->start++;
+       if (G_UNLIKELY (ring->start == ring->writable)) {
+               _vte_ring_reset_streams (ring, 0);
+       }
+       if (ring->start > ring->writable)
+               ring->writable = ring->start;
+}
+
+static void
+_vte_ring_maybe_freeze_one_row (VteRing *ring)
+{
+       if (G_LIKELY (ring->writable + ring->mask == ring->end))
+               _vte_ring_freeze_one_row (ring);
+}
+
+static void
+_vte_ring_maybe_discard_one_row (VteRing *ring)
+{
+       if ((gulong) _vte_ring_length (ring) == ring->max)
+               _vte_ring_discard_one_row (ring);
+}
+
+static void
+_vte_ring_ensure_writable_room (VteRing *ring)
+{
+       gulong new_mask, old_mask, i, end;
+       VteRowData *old_array, *new_array;;
+
+       if (G_LIKELY (ring->writable + ring->mask > ring->end))
+               return;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Enlarging writable array.\n");
+
+       old_mask = ring->mask;
+       old_array = ring->array;
+
+       ring->mask = (ring->mask << 1) + 1;
+       ring->array = g_malloc0 (sizeof (ring->array[0]) * (ring->mask + 1));
+
+       new_mask = ring->mask;
+       new_array = ring->array;
+
+       end = ring->writable + old_mask + 1;
+       for (i = ring->writable; i < end; i++)
+               new_array[i & new_mask] = old_array[i & old_mask];
+
+       g_free (old_array);
+}
+
+static void
+_vte_ring_ensure_writable (VteRing *ring, gulong position)
+{
+       if (G_LIKELY (position >= ring->writable))
+               return;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Ensure writable %lu.\n", position);
+
+       while (position < ring->writable)
+               _vte_ring_thaw_one_row (ring);
+}
+
+/**
+ * _vte_ring_resize:
+ * @ring: a #VteRing
+ * @max_rows: new maximum numbers of rows in the ring
+ *
+ * Changes the number of lines the ring can contain.
+ */
+void
+_vte_ring_resize (VteRing *ring, gulong max_rows)
+{
+       _vte_debug_print(VTE_DEBUG_RING, "Resizing to %lu.\n", max_rows);
+       _vte_ring_validate(ring);
+
+       /* Adjust the start of tail chunk now */
+       if ((gulong) _vte_ring_length (ring) > max_rows) {
+               ring->start = ring->end - max_rows;
+               if (ring->start >= ring->writable) {
+                       _vte_ring_reset_streams (ring, 0);
+                       ring->writable = ring->start;
+               }
+       }
+
+       ring->max = max_rows;
+}
+
+void
+_vte_ring_shrink (VteRing *ring, gulong max_len)
+{
+       if ((gulong) _vte_ring_length (ring) <= max_len)
+               return;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Shrinking to %lu.\n", max_len);
+       _vte_ring_validate(ring);
+
+       if (ring->writable - ring->start <= max_len)
+               ring->end = ring->start + max_len;
+       else {
+               while (ring->writable - ring->start > max_len) {
+                       _vte_ring_ensure_writable (ring, ring->writable - 1);
+                       ring->end = ring->writable;
+               }
+       }
+
+       /* TODO May want to shrink down ring->array */
+
+       _vte_ring_validate(ring);
+}
+
+/**
+ * _vte_ring_insert_internal:
+ * @ring: a #VteRing
+ * @position: an index
+ *
+ * Inserts a new, empty, row into @ring at the @position'th offset.
+ * The item at that position and any items after that are shifted down.
+ *
+ * Return: the newly added row.
+ */
+VteRowData *
+_vte_ring_insert (VteRing *ring, gulong position)
+{
+       gulong i;
+       VteRowData *row, tmp;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Inserting at position %lu.\n", position);
+       _vte_ring_validate(ring);
+
+       _vte_ring_maybe_discard_one_row (ring);
+
+       _vte_ring_ensure_writable (ring, position);
+       _vte_ring_ensure_writable_room (ring);
+
+       g_assert (position >= ring->writable && position <= ring->end);
+
+       tmp = *_vte_ring_writable_index (ring, ring->end);
+       for (i = ring->end; i > position; i--)
+               *_vte_ring_writable_index (ring, i) = *_vte_ring_writable_index (ring, i - 1);
+       *_vte_ring_writable_index (ring, position) = tmp;
+
+       row = _vte_ring_writable_index (ring, position);
+       _vte_row_data_clear (row);
+       ring->end++;
+
+       _vte_ring_maybe_freeze_one_row (ring);
+
+       _vte_ring_validate(ring);
+       return row;
+}
+
+/**
+ * _vte_ring_remove:
+ * @ring: a #VteRing
+ * @position: an index
+ *
+ * Removes the @position'th item from @ring.
+ */
+void
+_vte_ring_remove (VteRing * ring, gulong position)
+{
+       gulong i;
+       VteRowData tmp;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Removing item at position %lu.\n", position);
+       _vte_ring_validate(ring);
+
+       if (G_UNLIKELY (!_vte_ring_contains (ring, position)))
+               return;
+
+       _vte_ring_ensure_writable (ring, position);
+
+       tmp = *_vte_ring_writable_index (ring, position);
+       for (i = position; i < ring->end - 1; i++)
+               *_vte_ring_writable_index (ring, i) = *_vte_ring_writable_index (ring, i + 1);
+       *_vte_ring_writable_index (ring, ring->end - 1) = tmp;
+
+       if (ring->end > ring->writable)
+               ring->end--;
+
+       _vte_ring_validate(ring);
+}
+
+
+/**
+ * _vte_ring_append:
+ * @ring: a #VteRing
+ * @data: the new item
+ *
+ * Appends a new item to the ring.
+ *
+ * Return: the newly added row.
+ */
+VteRowData *
+_vte_ring_append (VteRing * ring)
+{
+       return _vte_ring_insert (ring, _vte_ring_next (ring));
+}
+
+
+static gboolean
+_vte_ring_write_row (VteRing *ring,
+                    GOutputStream *stream,
+                    VteRowData *row,
+                    VteTerminalWriteFlags flags,
+                    GCancellable *cancellable,
+                    GError **error)
+{
+       VteCell *cell;
+       GString *buffer = ring->utf8_buffer;
+       int i;
+       gsize bytes_written;
+
+       /* Simple version of the loop in _vte_ring_freeze_row().
+        * TODO Should unify one day */
+       g_string_set_size (buffer, 0);
+       for (i = 0, cell = row->cells; i < row->len; i++, cell++) {
+               if (G_LIKELY (!cell->attr.fragment))
+                       _vte_unistr_append_to_string (cell->c, buffer);
+       }
+       if (!row->attr.soft_wrapped)
+               g_string_append_c (buffer, '\n');
+
+       return g_output_stream_write_all (stream, buffer->str, buffer->len, &bytes_written, cancellable, 
error);
+}
+
+/**
+ * _vte_ring_write_contents:
+ * @ring: a #VteRing
+ * @stream: a #GOutputStream to write to
+ * @flags: a set of #VteTerminalWriteFlags
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @error: a #GError location to store the error occuring, or %NULL to ignore
+ *
+ * Write entire ring contents to @stream according to @flags.
+ *
+ * Return: %TRUE on success, %FALSE if there was an error
+ */
+gboolean
+_vte_ring_write_contents (VteRing *ring,
+                         GOutputStream *stream,
+                         VteTerminalWriteFlags flags,
+                         GCancellable *cancellable,
+                         GError **error)
+{
+       gulong i;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Writing contents to GOutputStream.\n");
+
+       if (ring->start < ring->writable) {
+               VteRowRecord record;
+               /* XXX what to do in case of error? */
+               if (_vte_ring_read_row_record (ring, &record, ring->start)) {
+                       if (!_vte_stream_write_contents (ring->text_stream, stream,
+                                                        record.text_offset,
+                                                        cancellable, error))
+                               return FALSE;
+               }
+       }
+
+       for (i = ring->writable; i < ring->end; i++) {
+               if (!_vte_ring_write_row (ring, stream,
+                                         _vte_ring_writable_index (ring, i),
+                                         flags, cancellable, error))
+                       return FALSE;
+       }
+
+       return TRUE;
+}
diff --git a/vte/src/ring.h b/vte/src/ring.h
new file mode 100644
index 0000000..50dd5a2
--- /dev/null
+++ b/vte/src/ring.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2002,2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_ring_h_included
+#define vte_ring_h_included
+
+#include <gio/gio.h>
+#include "vte.h"
+
+#include "vterowdata.h"
+#include "vtestream.h"
+
+G_BEGIN_DECLS
+
+
+typedef struct _VteCellAttrChange {
+       gsize text_offset;
+       VteIntCellAttr attr;
+} VteCellAttrChange;
+
+
+/*
+ * VteRing: A scrollback buffer ring
+ */
+
+typedef struct _VteRing VteRing;
+struct _VteRing {
+       gulong max;
+
+       gulong start, end;
+
+       /* Writable */
+       gulong writable, mask;
+       VteRowData *array;
+
+       /* Storage */
+       gulong last_page;
+       VteStream *attr_stream, *text_stream, *row_stream;
+       VteCellAttrChange last_attr;
+       GString *utf8_buffer;
+
+       VteRowData cached_row;
+       gulong cached_row_num;
+
+};
+
+#define _vte_ring_contains(__ring, __position) \
+       (((gulong) (__position) >= (__ring)->start) && \
+        ((gulong) (__position) < (__ring)->end))
+#define _vte_ring_delta(__ring) ((glong) (__ring)->start)
+#define _vte_ring_length(__ring) ((glong) ((__ring)->end - (__ring)->start))
+#define _vte_ring_next(__ring) ((glong) (__ring)->end)
+
+const VteRowData *_vte_ring_index (VteRing *ring, gulong position);
+VteRowData *_vte_ring_index_writable (VteRing *ring, gulong position);
+
+void _vte_ring_init (VteRing *ring, gulong max_rows);
+void _vte_ring_fini (VteRing *ring);
+void _vte_ring_resize (VteRing *ring, gulong max_rows);
+void _vte_ring_shrink (VteRing *ring, gulong max_len);
+VteRowData *_vte_ring_insert (VteRing *ring, gulong position);
+VteRowData *_vte_ring_append (VteRing *ring);
+void _vte_ring_remove (VteRing *ring, gulong position);
+gboolean _vte_ring_write_contents (VteRing *ring,
+                                  GOutputStream *stream,
+                                  VteTerminalWriteFlags flags,
+                                  GCancellable *cancellable,
+                                  GError **error);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/slowcat.c b/vte/src/slowcat.c
new file mode 100644
index 0000000..78ac531
--- /dev/null
+++ b/vte/src/slowcat.c
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <glib.h>
+
+static void
+catfile(const char *pathname, long delay, long chunksize)
+{
+       FILE *fp;
+       struct timeval tv;
+       char *buf;
+       int c;
+       long i;
+
+       if (!((pathname == NULL) || (strcmp(pathname, "-") == 0))) {
+               fp = fopen(pathname, "r");
+               if (fp == NULL) {
+                       g_warning("Error opening file `%s': %s.\n",
+                                 pathname, strerror(errno));
+                       return;
+               }
+       } else {
+               fp = stdin;
+       }
+
+       buf = g_malloc(chunksize);
+
+       while (!feof(fp)) {
+               tv.tv_sec = delay / 1000000;
+               tv.tv_usec = delay % 1000000;
+               select(0, NULL, NULL, NULL, &tv);
+               for (i = 0; i < chunksize; i++) {
+                       c = fgetc(fp);
+                       if (c != EOF) {
+                               buf[i] = c;
+                       } else {
+                               break;
+                       }
+               }
+               if (i > 0) {
+                       int bytes;
+                       bytes = write(STDOUT_FILENO, buf, i);
+                       fsync(STDOUT_FILENO);
+               }
+       }
+
+       g_free(buf);
+
+       if (fp != stdin) {
+               fclose(fp);
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       int i, c;
+       long delay = 200000, chunksize = 1, tmp;
+       char *p;
+       GList *files = NULL, *file;
+
+       while ((c = getopt(argc, argv, "t:c:")) != -1) {
+               switch (c) {
+               case 't':
+                       tmp = strtol(optarg, &p, 0);
+                       if ((p != NULL) && (*p == '\0')) {
+                               delay = tmp;
+                       }
+                       break;
+               case 'c':
+                       tmp = strtol(optarg, &p, 0);
+                       if ((p != NULL) && (*p == '\0')) {
+                               chunksize = tmp;
+                       }
+                       break;
+               default:
+                       g_printerr("Usage: slowcat [-t delay] [-c chunksize] [file ...]\n");
+                       exit(1);
+                       break;
+               }
+       }
+       for (i = optind; i < argc; i++) {
+               files = g_list_append(files, argv[i]);
+       }
+
+       if (files) {
+               for (file = files; file != NULL; file = g_list_next(file)) {
+                       catfile((const char*)file->data, delay, chunksize);
+               }
+       } else {
+               catfile(NULL, delay, chunksize);
+       }
+       return 0;
+}
diff --git a/vte/src/ssfe.c b/vte/src/ssfe.c
new file mode 100644
index 0000000..33706eb
--- /dev/null
+++ b/vte/src/ssfe.c
@@ -0,0 +1,1271 @@
+/* An ircII-like split-screen front end
+   Copyright (C) 1995 Roger Espel Llima
+
+   Started: 17 Feb 95 by orabidoo <roger espel llima ens fr>
+   Latest modification: 7 June 97
+
+   To compile: gcc ssfe.c -o ssfe -ltermcap
+
+   If it doesn't work, try gcc ssfe.c -o ssfe -lcurses
+   or try cc, acc or c89 instead of gcc, or -lncurses.
+
+   Use: ssfe [options] program arguments
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation. See the file LICENSE for details.
+
+   From attachment to Red Hat Bugzilla #75900.
+*/
+
+#include <config.h>
+
+#include <stdarg.h>
+
+#if defined(HAVE_NCURSES_H) && defined(HAVE_TERM_H)
+#include <ncurses.h>
+#include <term.h>
+#define VTE_TERMCAP_NAME "ncurses"
+#elif defined(HAVE_NCURSES_CURSES_H) && defined(HAVE_NCURSES_TERM_H)
+#include <ncurses/curses.h>
+#include <ncurses/term.h>
+#define VTE_TERMCAP_NAME "ncurses"
+#elif defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
+#include <curses.h>
+#include <term.h>
+#define VTE_TERMCAP_NAME "curses"
+#elif defined(HAVE_TERMCAP_H)
+#include <termcap.h>
+#define VTE_TERMCAP_NAME "termcap"
+#else
+#error No termcap??
+#endif
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif
+#include <sys/time.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include <time.h>
+#include <unistd.h>
+
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+#define BUF_SIZE 512
+#define MAX_COLS 512
+
+unsigned char *statusline;
+int ystatus, yinput;     /* line number of the status line, input line */
+
+int ttyfd;
+#ifdef TIOCGWINSZ
+struct winsize wsz;
+#endif
+
+#ifdef USE_SGTTY
+struct sgttyb term, term0;
+struct tchars tch, tch0;
+struct ltchars lch, lch0;
+#else
+struct termios term, term0;
+#endif
+
+int pid, mypid;
+int i;
+int ncols, nlines;
+int readfd, writefd, errfd;
+
+unsigned char *t, *w;
+unsigned char tmpstr[BUF_SIZE], extrainput[BUF_SIZE+20], readbuf[2*BUF_SIZE],
+             *input, *writebuf, o_buffer[BUF_SIZE];
+int bold=0, inv=0, under=0, wherex=0, wherey=0, donl=0;
+int hold_mode=0, hold_lines=0, ctrlx=0, beep_mode=0, flow=0;
+
+unsigned char defprompt[]="> ",
+        nullstring[]="",
+        *prompt;
+int plen=0, specialprompt=0, modified=1, no_echo=0;
+
+#define MAX_TAB_LINES 20
+struct tabinfo {
+  unsigned char string[BUF_SIZE];
+  struct tabinfo *prev, *next;
+};
+int tablines=0;
+struct tabinfo *curtabt=NULL, *curtabr=NULL, *oldest=NULL;
+
+#define MAX_HIST_LINES 50
+struct histinfo {
+  unsigned char string[BUF_SIZE+20];
+  int len, plen;
+  struct histinfo *prev, *next;
+};
+int histlines=0;
+struct histinfo *histcurrent=NULL, *histoldest=NULL;
+
+char ctrl_t[128] = "/next\n";
+
+unsigned char id[]="`#ssfe#", *inid=id, protcmd[BUF_SIZE], *wpc=protcmd;
+int idstatus=0;  /* 0 looking for/in the word, 1 in the arguments */
+#define ID_BACK "@ssfe@"
+
+int rc, rrc, inputcursor, inputlast, inputofs, inarrow=0, quote=0;
+int cursorwhere;     /* 0 = up, 1 = down, 2 = undef */
+int dispmode=1; /* 0=raw, 1=wordwrap, 2=process ^b^v^_ */
+int printmode=0;
+int cutline=0;
+
+char *termtype, termcap[1024], *tc, capabilities[2048];
+char *t_cm, *t_cl, *t_mr, *t_md, *t_me, *t_cs, *t_ce, *t_us;
+int ansi_cs = 0;
+
+fd_set ready, result;
+
+static int myputchar(int c) {
+  unsigned char cc=(unsigned char)c;
+  return(write(1, &cc, 1));
+}
+
+static int addchar(int c) {
+  (*w++)=(unsigned char)c;
+  return *w;
+}
+
+static void putcap(unsigned char *s) {
+  tputs(s, 0, myputchar);
+}
+
+static int do_cs(int y1, int y2) {
+  static char temp[16];
+  if (ansi_cs) {
+    sprintf(temp, "%c[%d;%dr", 27, y1, y2);
+    write(1, temp, strlen(temp));
+  } else putcap((char *)tgoto(t_cs, y2-1, y1-1));
+  return 0;
+}
+
+static void writecap(unsigned char *s) {
+  tputs(s, 0, addchar);
+}
+
+static void gotoxy(int x, int y) {
+/* left upper = 0, 0 */
+  putcap(tgoto(t_cm, x, y));
+}
+
+#define clearscreen() (putcap(t_cl))
+#define cleareol() (putcap(t_ce))
+#define fullscroll() (do_cs(0, 0))
+#define winscroll() (do_cs(1, nlines-2))
+#define setbold() (putcap(t_md))
+#define setunder() (putcap(t_us))
+#define setinv() (putcap(t_mr))
+#define normal() (putcap(t_me))
+
+static void ofsredisplay(int x);
+static void inschar(unsigned char t);
+static void dokbdchar(unsigned char t);
+static void displaystatus(void);
+
+static void cleanupexit(int n, const char *error) {
+  normal();
+  fullscroll();
+  gotoxy(0, nlines-1);
+  cleareol();
+#ifdef USE_SGTTY
+  ioctl(ttyfd, TIOCSETP, &term0);
+  ioctl(ttyfd, TIOCSETC, &tch0);
+  ioctl(ttyfd, TIOCSLTC, &lch0);
+#else
+  tcsetattr(ttyfd, TCSADRAIN, &term0);
+#endif
+  close(ttyfd);
+  if (error!=NULL)
+    fprintf(stderr, "%s\n", error);
+  exit(n);
+}
+
+static void allsigs(int);
+
+static void interrupted(int ignored) {
+  cleanupexit(1, "interrupted");
+}
+
+static void sigpipe(int ignored) {
+  cleanupexit(1, "program died");
+}
+
+static void sigcont(int ignored) {
+  allsigs(0);
+#ifdef USE_SGTTY
+  ioctl(ttyfd, TIOCSETP, &term);
+  ioctl(ttyfd, TIOCSETC, &tch);
+  ioctl(ttyfd, TIOCSLTC, &lch);
+#else
+  tcsetattr(ttyfd, TCSANOW, &term);
+#endif
+  wherex=0;
+  wherey=ystatus-1;
+  displaystatus();
+  ofsredisplay(0);
+}
+
+static void suspend(int ignored) {
+  normal();
+  fullscroll();
+  gotoxy(0, ystatus);
+  cleareol();
+#ifdef USE_SGTTY
+  ioctl(ttyfd, TIOCSETP, &term0);
+  ioctl(ttyfd, TIOCSETC, &tch0);
+  ioctl(ttyfd, TIOCSLTC, &lch0);
+#else
+  tcsetattr(ttyfd, TCSANOW, &term0);
+#endif
+  kill(pid, SIGCONT);
+  signal(SIGTSTP, SIG_DFL);
+  signal(SIGCONT, sigcont);
+  kill(mypid, SIGTSTP);
+}
+
+static void sigwinch(int ignored) {
+#ifdef TIOCGWINSZ
+  signal(SIGWINCH, sigwinch);
+  if (ioctl(ttyfd, TIOCGWINSZ, &wsz)>=0 && wsz.ws_row>0 && wsz.ws_col>0) {
+    nlines=wsz.ws_row;
+    ncols=wsz.ws_col;
+    cursorwhere=2;
+    ystatus=nlines-2;
+    yinput=nlines-1;
+    wherex=0;
+    wherey=ystatus-1;
+    displaystatus();
+    if (inputlast>ncols-8) {
+      inputcursor=ncols-9;
+      inputofs=inputlast-ncols+9;
+    } else {
+      inputofs=0;
+      inputcursor=inputlast;
+    }
+    ofsredisplay(0);
+  }
+#endif
+}
+
+static void allsigs(int ignored) {
+  signal(SIGHUP, interrupted);
+  signal(SIGINT, interrupted);
+  signal(SIGQUIT, SIG_IGN);
+  signal(SIGPIPE, sigpipe);
+  signal(SIGTSTP, suspend);
+  signal(SIGCONT, sigcont);
+#ifdef TIOCGWINSZ
+  signal(SIGWINCH, sigwinch);
+#endif
+}
+
+static void setstatus(unsigned char *title) {
+  unsigned char *t=title;
+  for (;*t;t++) if (*t<' ') (*t)+='@';
+  memset(statusline, ' ', MAX_COLS-1);
+  memcpy(statusline, title, strlen(title)<MAX_COLS ? strlen(title) : MAX_COLS);
+}
+
+static void displaystatus(void) {
+  normal();
+  fullscroll();
+  gotoxy(0, ystatus);
+  setinv();
+  write(1, statusline, ncols-1);
+  if (hold_mode) {
+    gotoxy(ncols-4, ystatus);
+    write(1, "(h)", 3);
+  }
+  cursorwhere=2;
+  normal();
+  cleareol();
+}
+
+static int casecmp(unsigned char *s, unsigned char *t) {
+  while (((*s>='a' && *s<='z')?(*s)-32:*s)==
+         ((*t>='a' && *t<='z')?(*t)-32:*t)) {
+    if (*s=='\0') return 1;
+    s++; t++;
+  }
+  return 0;
+}
+
+static void addtab(unsigned char *line) {
+  struct tabinfo *nt;
+
+  nt=oldest;
+  if (tablines) do {
+    if (casecmp(nt->string, line)) {
+      strcpy(nt->string, line);
+      if (nt==oldest) oldest=nt->prev;
+      else {
+       nt->prev->next=nt->next;
+       nt->next->prev=nt->prev;
+       nt->prev=oldest;
+       nt->next=oldest->next;
+       oldest->next=nt;
+       nt->next->prev=nt;
+      }
+      curtabt=oldest->next;
+      curtabr=oldest;
+      return;
+    }
+    nt=nt->next;
+  } while (nt!=oldest);
+
+  if (!tablines) {
+    nt=(struct tabinfo *)malloc(sizeof (struct tabinfo));
+    nt->prev=nt->next=curtabt=curtabr=oldest=nt;
+    tablines++;
+  } else if (tablines<MAX_TAB_LINES) {
+    nt=(struct tabinfo *)malloc(sizeof (struct tabinfo));
+    nt->prev=oldest;
+    nt->next=oldest->next;
+    oldest->next=nt;
+    nt->next->prev=nt;
+    tablines++;
+  } else {
+    nt=oldest;
+    oldest=nt->prev;
+  }
+  strcpy(nt->string, line);
+  oldest=nt->prev;
+  curtabt=oldest->next;
+  curtabr=oldest;
+}
+
+static void doprotcommand(void) {
+  unsigned char *tmp;
+
+  switch (protcmd[0]) {
+    case 'i' : dispmode=2;     /* set irc mode, ack */
+              bold=inv=under=0;
+              write(writefd, "@ssfe@i\n", 8);
+              break;
+    case 'c' : dispmode=1;     /* set cooked mode, ack */
+              write(writefd, "@ssfe@c\n", 8);
+              break;
+    case 's' : setstatus(protcmd+1); /* set status */
+              displaystatus();
+              break;
+    case 'T' : strncpy(ctrl_t, protcmd+1, 127); /* set ^t's text */
+              ctrl_t[126] = '\0';
+              strcat(ctrl_t, "\n");
+              break;
+    case 't' : addtab(protcmd+1); /* add tabkey entry */
+              break;
+    case 'l' : fullscroll(); /* clear screen */
+              normal();
+              clearscreen();
+              bold=inv=under=wherex=wherey=donl=0;
+              displaystatus();
+              ofsredisplay(0);
+              break;
+
+    case 'P' : no_echo = 1;                /* password prompt */
+    case 'p' : if (strlen(protcmd+1)<=8) {  /* prompt something */
+                fullscroll();
+                if (!specialprompt) {
+                  histcurrent->len=inputlast;
+                  histcurrent->plen=plen;
+                }
+                input=extrainput;
+                strcpy(input, protcmd+1);
+                plen=strlen(input);
+                inputofs=0;
+                modified=specialprompt=1;
+                inputlast=inputcursor=plen;
+                ofsredisplay(0);
+              }
+              break;
+    case 'n' : if (cursorwhere!=1) { /* type text */
+                normal();
+                fullscroll();
+                gotoxy(inputcursor, yinput);
+                cursorwhere=1;
+              }
+              for (tmp=protcmd+1; *tmp; tmp++) {
+                inschar(*tmp);
+              }
+              break;
+    case 'o' : strcpy(o_buffer, protcmd+1);
+              break;
+  }
+}
+
+static void do_newline(void) {
+  unsigned char t;
+  hold_lines++;
+  if (hold_mode && hold_lines>nlines-4) {
+    normal();
+    fullscroll();
+    gotoxy(ncols-4, ystatus);
+    setinv();
+    write(1, "(H)", 3);
+    while(1) {
+      read(0, &t, 1);
+      if (t==9) break;
+      dokbdchar(t);
+    }
+    normal();
+    fullscroll();
+    gotoxy(ncols-4, ystatus);
+    setinv();
+    write(1, "(h)", 3);
+    hold_lines=0;
+    normal();
+    winscroll();
+    gotoxy(ncols-1, wherey);
+    if (bold) setbold();
+    if (under) setunder();
+    if (inv) setinv();
+  }
+}
+
+static void formatter(unsigned char *readbuf, int rc) {
+
+  unsigned char t, *r, *lwr, *lww;
+  int lwrc, lwbold, lwunder, lwinv, lwx;
+
+  lwbold=lwunder=lwinv=0;
+  if (cursorwhere!=0) {
+    winscroll();
+    gotoxy(wherex, wherey);
+    cursorwhere=0;
+  }
+  if (donl) {
+    do_newline();
+    write(1, "\r\n", 2);
+    normal();
+    wherex=0;
+    bold=inv=under=lwbold=lwinv=lwunder=0;
+    if (wherey<ystatus-1) {
+      wherey++;
+    }
+  } else {
+    if (dispmode>1) {
+      if (bold) {
+        setbold();
+      }
+      if (under) {
+        setunder();
+      }
+      if (inv) {
+        setinv();
+      }
+      lwbold=bold;
+      lwinv=inv;
+      lwunder=under;
+    }
+  }
+  if (rc && readbuf[rc-1]=='\n') {
+    rc--;
+    donl=1; cutline=0;
+  } else {
+    donl=0;
+    if (dispmode==0) cutline=1;
+  }
+  if (dispmode==0) {
+    if (rc) write(1, readbuf, rc);
+    normal();
+    return;
+  }
+  lww=w=writebuf;
+  lwr=r=readbuf;
+  lwrc=rc;
+  lwx=wherex;
+  while(rc-->0) {
+    t=(*r++);
+    if (t=='\r') continue;
+    if ((wherex>ncols-2) || (t==9 && (wherex>((ncols-2)&0xfff8)))) {
+      if (t==' ' || t==9) ;
+      else if (lww>writebuf+ncols/2) {
+       wherex=lwx; r=lwr; w=lww; rc=lwrc;
+       bold=lwbold; inv=lwinv; under=lwunder; wherex=lwx;
+      } else {
+       rc++; r--;
+      }
+      write(1, writebuf, w-writebuf);
+      do_newline();
+      write(1, "\r\n           ", 13);
+      w=writebuf;
+      lwr=r; lww=w; lwrc=rc;
+      lwbold=bold; lwinv=inv; lwunder=under;
+      lwx=wherex=11;
+      if (wherey<ystatus-1) wherey++;
+      rc--; t=(*r++);
+    }
+    if (t=='\n') {
+      if (w!=writebuf) write(1, writebuf, w-writebuf);
+      do_newline();
+      write(1, "\r\n", 2);
+      normal();
+      w=writebuf;
+      lwr=r; lww=w; lwrc=rc;
+      lwbold=bold=lwinv=inv=lwunder=under=lwx=wherex=0;
+      if (wherey<ystatus-1) wherey++;
+    } else if (dispmode>1 &&
+               ((t==2 && bold) || (t==22 && inv) || (t==31 && under))) {
+      writecap(t_me);
+      bold=under=inv=0;
+    } else if (dispmode>1 && t==2) {
+      writecap(t_md);
+      bold=1;
+    } else if (dispmode>1 && t==22) {
+      writecap(t_mr);
+      inv=1;
+    } else if (dispmode>1 && t==31) {
+      writecap(t_us);
+      under=1;
+    } else if (dispmode>1 && t==15) {
+      if (bold || inv || under) writecap(t_me);
+      bold=under=inv=0;
+    } else if (t==9) {
+      (*w++)=t;
+      wherex=(wherex & 0xfff8)+8;
+    } else if (t<' ' && (t!=7 || !beep_mode)) {
+      wherex++;
+      if (inv) {
+       writecap(t_me);
+       (*w++)=(t+'@');
+      } else {
+       writecap(t_mr);
+       (*w++)=(t+'@');
+       writecap(t_me);
+      }
+      if (bold) writecap(t_md);
+      if (inv) writecap(t_mr);
+      if (under) writecap(t_us);
+    } else {
+      if (t!=7) wherex++;
+      (*w++)=t;
+    }
+    if (t==' ' || t==9) {
+      lwr=r; lww=w; lwrc=rc;
+      lwbold=bold; lwinv=inv; lwunder=under;
+      lwx=wherex;
+    }
+  }
+  if (w!=writebuf) write(1, writebuf, w-writebuf);
+}
+
+static void doprogramline(unsigned char *readbuf, int rc) {
+
+  unsigned char *w, *r, *r2, t;
+  if (dispmode==0) {
+    formatter(readbuf, rc);
+    return;
+  }
+  w=r=readbuf;
+  while(rc-->0) {
+    t=(*r++);
+    if (idstatus==0) {
+      if (*inid=='\0') {
+       idstatus=1;
+       wpc=protcmd;
+       inid=id;
+      } else {
+        if (*inid==t && (inid!=id || r==(readbuf+1) || *(r-2)=='\n')) {
+         inid++;
+         (*wpc++)=t;
+        } else {
+          r2=protcmd;
+          while (r2!=wpc) {
+           (*w++)=(*r2++);
+         }
+         (*w++)=t;
+         wpc=protcmd;
+         inid=id;
+        }
+      }
+    }
+    if (idstatus==1) {
+      if (t=='\n') {
+        *wpc='\0';
+        doprotcommand();
+       inid=id;
+       wpc=protcmd;
+       idstatus=0;
+      } else {
+       (*wpc++)=t;
+      }
+    }
+  }
+  if (w!=readbuf) formatter(readbuf, w-readbuf);
+}
+
+static void write1(unsigned char t, int pos) {
+  if (no_echo && pos>=plen) {
+    write(1, "*", 1);
+  } else if (t>=' ')
+      write(1, &t, 1);
+  else {
+      setinv();
+      t+='@';
+      write(1, &t, 1);
+      normal();
+  }
+}
+
+static void ofsredisplay(int x) {
+/* redisplays starting at x */
+  unsigned char *w;
+  int i;
+  gotoxy(x, yinput);
+  if (inputlast-inputofs>=x) {
+    i=((inputlast-inputofs>ncols-1 ? ncols-1-x : inputlast-inputofs-x));
+    for (w=input+inputofs+x; i--; w++) write1(*w, w-input);
+  }
+  cleareol();
+  gotoxy(inputcursor, yinput);
+  cursorwhere=1;
+}
+
+static void delempty(struct histinfo *leavealone) {
+  struct histinfo *h, *h2;
+  int cont=0;
+  h=histoldest;
+  do {
+    cont=0;
+    if ((h->len<=h->plen) && (h!=leavealone)) {
+      histlines--;
+      h->next->prev=h->prev;
+      h->prev->next=h->next;
+      h2=h->prev;
+      free(h);
+      if (h==histoldest) {
+        histoldest=h2;
+       cont=1;
+      }
+      h=h2;
+    } else h=h->prev;
+  } while ((h!=histoldest || cont) && histlines>0);
+  if (!histlines) {
+    histoldest=NULL;
+    return;
+  }
+}
+
+static struct histinfo *makenew(void) {
+  struct histinfo *nh;
+  if (!histlines) {
+    nh=(struct histinfo *)malloc(sizeof (struct histinfo));
+    nh->prev=nh->next=histoldest=nh;
+    histlines++;
+  } else if (histlines<MAX_HIST_LINES) {
+    nh=(struct histinfo *)malloc(sizeof (struct histinfo));
+    nh->prev=histoldest;
+    nh->next=histoldest->next;
+    histoldest->next=nh;
+    nh->next->prev=nh;
+    histlines++;
+  } else {
+    nh=histoldest;
+    histoldest=nh->prev;
+  }
+  return nh;
+}
+
+static void sendline(int yank) {
+  if (!specialprompt) {
+    histcurrent->len=inputlast;
+    histcurrent->plen=plen;
+  }
+  if (!yank) {
+    input[inputlast]='\n';
+    if (printmode) formatter(input, inputlast+1);
+    if (write(writefd, input+plen, inputlast+1-plen)<inputlast+1-plen)
+      cleanupexit(1, "write error");
+  }
+  input[inputlast]='\0';
+  delempty(NULL);
+  histcurrent=makenew();
+  input=histcurrent->string;
+  strcpy(input, prompt);
+  plen=strlen(prompt);
+  inputofs=specialprompt=0;
+  modified=1;
+  inputcursor=inputlast=plen;
+  ofsredisplay(0);
+  no_echo=0;
+}
+
+static void modify(void) {
+  struct histinfo *h;
+  if (!modified) {
+    if (inputlast>plen) {
+      h=histcurrent;
+      delempty(h);
+      histcurrent=makenew();
+      strcpy(histcurrent->string, h->string);
+      input=histcurrent->string;
+    }
+    modified=1;
+  }
+}
+
+static void fixpos(void) {
+  if (inputcursor<8 && inputofs>0) {
+    inputofs-=ncols-16;
+    inputcursor+=ncols-16;
+    if (inputofs<0) {
+      inputcursor+=inputofs;
+      inputofs=0;
+    }
+    ofsredisplay(0);
+  } else if (inputcursor>ncols-8) {
+    inputofs+=ncols-16;
+    inputcursor-=ncols-16;
+    ofsredisplay(0);
+  }
+}
+
+static void reshow(void) {
+  if (inputlast>ncols-8) {
+    inputcursor=ncols-9;
+    inputofs=inputlast-ncols+9;
+  } else {
+    inputofs=0;
+    inputcursor=inputlast;
+  }
+  ofsredisplay(0);
+}
+
+static void inschar(unsigned char t) {
+
+  unsigned char *tmp;
+
+  if (inputlast<BUF_SIZE-4) {
+    modify();
+    if (inputofs+inputcursor==inputlast) {
+      write1(t, inputlast);
+      input[inputlast++]=t;
+      input[inputlast]='\0';
+      inputcursor++;
+    } else {
+      tmp=input+inputlast;
+      while (tmp>=input+inputofs+inputcursor) {
+       *(tmp+1)=(*tmp);        
+       tmp--;  
+      }
+      input[inputofs+(inputcursor++)]=t;
+      inputlast++;
+      ofsredisplay(inputcursor-1);
+    }
+    fixpos();
+  }
+}
+
+static void dokbdchar(unsigned char t) {
+
+  unsigned char *tmp;
+
+  if (inarrow==1) {
+    if (t=='[' || t=='O') {
+      inarrow++;
+      return;
+    }
+    inarrow=0;
+  } else if (inarrow==2) {
+    inarrow=0;
+    if (t=='D') t=2;
+    else if (t=='C') t=6;
+    else if (t=='A') t=16;
+    else if (t=='B') t=14;
+    else return;
+  }
+  if (ctrlx && !quote) {
+    ctrlx=0;
+    t|=0x20;
+    if (dispmode>0 && ((t=='h' && !hold_mode) || t=='y')) {
+      hold_mode=1;
+      hold_lines=0;
+      if (cursorwhere!=1) fullscroll();
+      cursorwhere=2;
+      normal();
+      gotoxy(ncols-4, ystatus);
+      setinv();
+      write(1, "(h)", 3);
+      normal();
+    } else if (dispmode>0 && ((t=='h' && hold_mode) || t=='n')) {
+      hold_mode=0;
+      if (cursorwhere!=1) fullscroll();
+      cursorwhere=2;
+      normal();
+      gotoxy(ncols-4, ystatus);
+      setinv();
+      write(1, "   ", 3);
+      normal();
+    } else if (dispmode>0 && t=='i') {
+      dispmode=3-dispmode;
+      bold=inv=under=0;
+    } else if (dispmode>0 && t=='b') {
+      beep_mode=!beep_mode;
+    } else if (t=='c') cleanupexit(1, "exiting");
+    return;
+  }
+  if (cutline) donl=1;
+  if (cursorwhere!=1) {
+    normal();
+    fullscroll();
+    gotoxy(inputcursor, yinput);
+    cursorwhere=1;
+  }
+  if (t==24 && !quote) {
+    ctrlx=1;
+    return;
+  } else ctrlx=0;
+  if (t==27 && !quote) {
+    inarrow=1;
+  } else if ((t==10 || t==13) && !quote) {  /* return, do_newline */
+    sendline(0);
+    if (tablines) {
+      curtabr=oldest;
+      curtabt=oldest->next;
+    }
+  } else if (t==25 && !quote) {          /* ^y */
+    if (!specialprompt) {
+      sendline(1);
+      if (tablines) {
+       curtabr=oldest;
+       curtabt=oldest->next;
+      }
+    }
+  } else if (t==21 && !quote) {   /* ^u */
+    modify();
+    input[plen]='\0';
+    inputcursor=inputlast=plen;
+    inputofs=0;
+    ofsredisplay(0);
+  } else if ((t==8 || t==0x7f) && !quote) {  /* ^h, ^? */
+    if (inputcursor>plen) {
+      modify();
+      tmp=input+inputcursor+inputofs;
+      while (tmp<input+inputlast) {
+       *(tmp-1)=(*tmp);
+       tmp++;
+      }
+      input[--inputlast]='\0';
+      gotoxy(--inputcursor, yinput);
+      ofsredisplay(inputcursor);
+      fixpos();
+    }
+  } else if (t==4 && !quote) {  /* ^d */
+    if (inputcursor+inputofs<inputlast) {
+      modify();
+      tmp=input+inputcursor+inputofs+1;
+      while (tmp<input+inputlast) {
+       *(tmp-1)=(*tmp);
+       tmp++;
+      }
+      input[--inputlast]='\0';
+      gotoxy(inputcursor, yinput);
+      ofsredisplay(inputcursor);
+    }
+  } else if (t==11 && !quote) {  /* ^k */
+    if (inputcursor+inputofs<inputlast) {
+      modify();
+      input[inputlast=inputofs+inputcursor]='\0';
+      ofsredisplay(inputcursor);
+    }
+  } else if (t==2 && !quote) {  /* ^b */
+    if (inputcursor>0 && (inputcursor>plen || inputofs>0)) {
+      gotoxy(--inputcursor, yinput);
+      fixpos();
+    }
+  } else if (t==6 && !quote) {  /* ^f */
+    if (inputcursor+inputofs<inputlast) {
+      gotoxy(++inputcursor, yinput);
+      fixpos();
+    }
+  } else if (t==1 && !quote) { /* ^a */
+    if (inputcursor+inputofs>plen) {
+      if (inputofs==0)
+       gotoxy((inputcursor=plen), yinput);
+      else {
+       inputofs=0;
+       inputcursor=plen;
+       ofsredisplay(0);
+      }
+    }
+  } else if (t==5 && !quote) { /* ^e */
+    if (inputcursor+inputofs<inputlast) {
+      if (inputlast-inputofs<ncols-3) {
+       gotoxy((inputcursor=inputlast-inputofs), yinput);
+      } else if (inputlast>ncols-8) {
+       inputcursor=ncols-9;
+       inputofs=inputlast-ncols+9;
+       ofsredisplay(0);
+      } else {
+       inputofs=0;
+       inputcursor=inputlast;
+       ofsredisplay(0);
+      }
+    }
+  } else if (t==12 && !quote) { /* ^l */
+    displaystatus();
+    ofsredisplay(0);
+  } else if (t==9 && !quote) { /* TAB */
+    if (tablines) {
+      modify();
+      strcpy(input+plen, curtabt->string);
+      curtabr=curtabt->prev;
+      curtabt=curtabt->next;
+      inputlast=strlen(input);
+      reshow();
+    }
+  } else if (t==18 && !quote) { /* ^r */
+    if (tablines) {
+      modify();
+      strcpy(input+plen, curtabr->string);
+      curtabt=curtabr->next;
+      curtabr=curtabr->prev;
+      inputlast=strlen(input);
+      reshow();
+    }
+  } else if (t==16 && !quote) { /* ^p */
+    if (histlines>1 && !specialprompt) {
+      histcurrent->plen=plen;
+      histcurrent->len=inputlast;
+      histcurrent=histcurrent->next;
+      plen=histcurrent->plen;
+      inputlast=histcurrent->len;
+      input=histcurrent->string;
+      modified=0;
+      reshow();
+    }
+  } else if (t==14 && !quote) { /* ^n */
+    if (histlines>1 && !specialprompt) {
+      histcurrent->plen=plen;
+      histcurrent->len=inputlast;
+      histcurrent=histcurrent->prev;
+      plen=histcurrent->plen;
+      inputlast=histcurrent->len;
+      input=histcurrent->string;
+      modified=0;
+      reshow();
+    }
+  } else if (t==15 &&!quote) { /* ^o */
+    if (strlen(o_buffer)) modify();
+    for (tmp=o_buffer; *tmp; tmp++) inschar(*tmp);
+  } else if (t==20 && !quote) { /* ^t */
+    write(writefd, ctrl_t, strlen(ctrl_t));
+  } else if (t==22 && !quote) { /* ^v */
+    quote++;
+    return;
+#ifdef CONTROL_W
+  } else if (t==23 && !quote) { /* ^w */
+    fullscroll();
+    normal();
+    clearscreen();
+    bold=inv=under=wherex=wherey=donl=0;
+    displaystatus();
+    ofsredisplay(0);
+#endif
+  } else inschar(t);
+  quote=0;
+}
+
+static void barf(const char *m) {
+  fprintf(stderr, "%s\n", m);
+  exit(1);
+}
+
+char *myname;
+
+static void use(void) {
+  fprintf(stderr, "Use: %s [options] program [program's options]\n", myname);
+  fprintf(stderr, "Options are:\n");
+  fprintf(stderr, "   -raw, -cooked, -irc  : set display mode\n");
+  fprintf(stderr, "   -print               : print your input lines\n");
+  fprintf(stderr, "   -prompt <prompt>     : specify a command-line prompt\n");
+  fprintf(stderr, "   -hold                : pause after each full screen (for cooked/irc mode)\n");
+  fprintf(stderr, "   -beep                : let beeps through (for cooked/irc mode)\n");
+  fprintf(stderr, "   -flow                : leave ^S/^Q alone for flow control\n");
+  exit(1);
+}
+
+int main(int argc, char *argv[]) {
+
+  char *vr;
+  int pfds0[2], pfds1[2], pfds2[2];
+
+  myname=(*argv);
+  prompt=nullstring;
+  while (argc>1) {
+    if (strcmp(argv[1], "-raw")==0) {
+      dispmode=0;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-cooked")==0) {
+      dispmode=1;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-irc")==0) {
+      dispmode=2;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-hold")==0) {
+      hold_mode=1;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-print")==0) {
+      argv++; argc--;
+      if (prompt==nullstring) prompt=defprompt;
+      printmode=1;
+    } else if (strcmp(argv[1], "-beep")==0) {
+      beep_mode=1;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-flow")==0) {
+      flow=1;
+      argv++; argc--;
+    } else if (strcmp(argv[1], "-prompt")==0) {
+      if (argc>2) prompt=(unsigned char *)argv[2];
+      if (strlen(prompt)>8) barf("Prompt too long");
+      argv+=2; argc-=2;
+    } else break;
+  }
+  if (argc<2) use();
+  if (!isatty(0)) barf("I can only run on a tty, sorry");
+  if ((termtype=getenv("TERM"))==NULL) barf("No terminal type set");
+  if (tgetent(termcap, termtype)<1) barf("No termcap info for your terminal");
+  tc=capabilities;
+  if ((t_cm=(char *)tgetstr("cm", &tc))==NULL)
+    barf("Can't find a way to move the cursor around with your terminal");
+  if ((t_cl=(char *)tgetstr("cl", &tc))==NULL)
+    barf("Can't find a way to clear the screen with your terminal");
+  if ((t_ce=(char *)tgetstr("ce", &tc))==NULL)
+    barf("Can't find a way to clear to end of line with your terminal");
+  if ((t_cs=(char *)tgetstr("cs", &tc))==NULL) {
+    if (strncmp(termtype, "xterm", 5)==0 || strncmp(termtype, "vt100", 5)==0)
+      ansi_cs=1;
+    else
+      barf("Can't find a way to set the scrolling region with your terminal");
+  }
+  if ((t_me=(char *)tgetstr("me", &tc))!=NULL) {
+    if ((t_mr=(char *)tgetstr("mr", &tc))==NULL) t_mr=t_me;
+    if ((t_md=(char *)tgetstr("md", &tc))==NULL) t_md=t_me;
+    if ((t_us=(char *)tgetstr("us", &tc))==NULL) t_us=t_me;
+  } else if ((t_me=(char *)tgetstr("se", &tc))!=NULL &&
+            (t_mr=(char *)tgetstr("so", &tc))!=NULL) {
+    t_md=t_mr;
+    t_us=tc;
+    (*tc++)='\0';
+  } else {
+    t_me=t_md=t_mr=t_us=tc;
+    (*tc++)='\0';
+  }
+
+/*
+  if ((ttyfd=open("/dev/tty", O_RDWR))<0 &&
+      (ttyfd=open("/dev/tty", O_RDONLY))<0) barf("Can't open terminal!");
+    */
+    ttyfd = 0;
+
+#ifdef TIOCGWINSZ
+  if (ioctl(ttyfd, TIOCGWINSZ, &wsz)<0 || wsz.ws_row<1 || wsz.ws_col<1) {
+#endif
+    nlines=((vr=getenv("LINES"))?atoi(vr):0);
+    ncols=((vr=getenv("COLUMNS"))?atoi(vr):0);
+    if (nlines<1 || ncols<1) {
+      if ((nlines=tgetnum("li"))<1 || (ncols=tgetnum("co"))<1) {
+       nlines=24; ncols=80;
+      }
+    }
+#ifdef TIOCGWINSZ
+  } else {
+    nlines=wsz.ws_row;
+    ncols=wsz.ws_col;
+  }
+#endif
+
+  if (pipe(pfds0)<0 || pipe(pfds1)<0 || pipe(pfds2)<0) {
+    perror("pipe");
+    exit(1);
+  }
+  mypid=getpid();
+  switch (pid=fork()) {
+    case -1:
+      perror("fork");
+      exit(1);
+    case 0:
+      if (pfds0[0]!=0) dup2(pfds0[0], 0);
+      if (pfds1[1]!=1) dup2(pfds1[1], 1);
+      if (pfds2[1]!=2) dup2(pfds2[1], 2);
+      if (pfds0[0]>2) close(pfds0[0]);
+      if (pfds0[1]>2) close(pfds0[1]);
+      if (pfds1[0]>2) close(pfds1[0]);
+      if (pfds1[1]>2) close(pfds1[1]);
+      if (pfds2[0]>2) close(pfds2[0]);
+      if (pfds2[1]>2) close(pfds2[1]);
+      /* okay we can read from 0 and write to 1 and 2, now.. it seems */
+      execvp(argv[1], argv+1);
+      perror("exec");
+      sleep(1);
+      exit(1);
+    default:
+      close(pfds0[0]);
+      close(pfds1[1]);
+      close(pfds2[1]);
+      readfd=pfds1[0];
+      writefd=pfds0[1];
+      errfd=pfds2[0];
+  }
+
+#ifdef USE_SGTTY
+
+  if (ioctl(ttyfd, TIOCGETP, &term)<0 || ioctl(ttyfd, TIOCGETC, &tch)<0 ||
+      ioctl(ttyfd, TIOCGLTC, &lch)<0) {
+    perror("sgtty get ioctl");
+    exit(1);
+  }
+  term0=term;
+  tch0=tch;
+  lch0=lch;
+  term.sg_flags|=CBREAK;
+  term.sg_flags&= ~ECHO & ~CRMOD;
+
+  memset(&tch, -1, sizeof(tch));
+  memset(&lch, -1, sizeof(lch));
+  tch.t_intrc=(char)28;
+  tch.t_quitc=(char)3;
+  if (flow) {
+    tch.t_startc=(char)17;
+    tch.t_stopc=(char)19;
+  }
+  lch.t_suspc=(char)26;
+
+  if (ioctl(ttyfd, TIOCSETP, &term)<0 || ioctl(ttyfd, TIOCSETC, &tch)<0 ||
+      ioctl(ttyfd, TIOCSLTC, &lch)<0) {
+    perror("sgtty set ioctl");
+    exit(1);
+  }
+
+#else
+  if (tcgetattr(ttyfd, &term)<0) {
+    perror("tcgetattr");
+    exit(1);
+  }
+  term0=term;
+
+  term.c_lflag &= ~ECHO & ~ICANON;
+  term.c_cc[VTIME]=(char)0;
+  term.c_cc[VMIN]=(char)1;
+  if (!flow) {
+    term.c_cc[VSTOP]=(char)0;
+    term.c_cc[VSTART]=(char)0;
+  }
+  term.c_cc[VQUIT]=(char)3;
+  term.c_cc[VINTR]=(char)28; /* reverse ^c and ^\ */
+  term.c_cc[VSUSP]=(char)26;
+#ifdef VREPRINT
+  term.c_cc[VREPRINT]=(char)0;
+#endif
+#ifdef VDISCARD
+  term.c_cc[VDISCARD]=(char)0;
+#endif
+#ifdef VLNEXT
+  term.c_cc[VLNEXT]=(char)0;
+#endif
+#ifdef VDSUSP
+  term.c_cc[VDSUSP]=(char)0;
+#endif
+
+  if (tcsetattr(ttyfd, TCSANOW, &term)<0) {
+    perror("tcsetattr");
+    exit(1);
+  }
+#endif
+
+  allsigs(0);
+
+  ystatus=nlines-2;
+  yinput=nlines-1;
+
+  if (nlines>255) barf("Screen too big");
+  if (ystatus<=2 || ncols<20) barf("Screen too small");
+
+  statusline=(unsigned char *)malloc(MAX_COLS);
+  writebuf=(unsigned char *)malloc(20*BUF_SIZE);
+  strcpy(tmpstr, " ");
+  for (i=1; i<argc; i++)
+    if (strlen(tmpstr)+strlen(argv[i])<ncols-1) {
+      strcat(tmpstr, argv[i]);
+      strcat(tmpstr, " ");
+    }
+  setstatus(tmpstr);
+
+  if (dispmode==0) wherey=ystatus-1;
+  clearscreen();
+  displaystatus();
+
+  histoldest=histcurrent=(struct histinfo *)malloc(sizeof (struct histinfo));
+  input=histcurrent->string;
+  histcurrent->prev=histcurrent->next=histcurrent;
+  histlines=1;
+  plen=strlen(prompt);
+  inputlast=inputcursor=plen;
+  strcpy(input, prompt);
+  ofsredisplay(0);
+  *protcmd='\0';
+  *o_buffer='\0';
+  cursorwhere=1;
+
+  FD_ZERO(&ready);
+  FD_SET(ttyfd, &ready);
+  FD_SET(readfd, &ready);
+  FD_SET(errfd, &ready);
+
+  while(1) {
+    result=ready;
+
+    if (select(64, &result, NULL, NULL, NULL)<=0) {
+      if (errno==EINTR) {
+       continue;
+      } else {
+       cleanupexit(1, "select error");
+      }
+    }
+
+    if (FD_ISSET(readfd, &result)) {
+      if ((rc=read(readfd, readbuf, BUF_SIZE))>0) {
+        doprogramline(readbuf, rc);
+      } else {
+        cleanupexit(1, "program terminated");
+      }
+    }
+
+    if (FD_ISSET(errfd, &result)) {
+      if ((rc=read(errfd, readbuf, BUF_SIZE))>0) {
+        doprogramline(readbuf, rc);
+      } else {
+        cleanupexit(1, "program terminated");
+      }
+    }
+
+    if (FD_ISSET(ttyfd, &result)) {
+      if ((rrc=read(0, readbuf, BUF_SIZE))>0) {
+        for (t=readbuf; rrc>0; rrc--) {
+         dokbdchar(*(t++));
+       }
+      } else {
+       cleanupexit(1, "read error from keyboard");
+      }
+    }
+
+  }
+}
+
diff --git a/vte/src/table.c b/vte/src/table.c
new file mode 100644
index 0000000..140e8c8
--- /dev/null
+++ b/vte/src/table.c
@@ -0,0 +1,935 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "debug.h"
+#include "iso2022.h"
+#include "table.h"
+
+/* Table info. */
+#define VTE_TABLE_MAX_LITERAL (128 + 32)
+#define _vte_table_map_literal(__c) \
+       (((__c) < (VTE_TABLE_MAX_LITERAL)) ? (__c) : 0)
+#define _vte_table_is_numeric(__c) \
+       (((__c) >= '0') && ((__c) <= '9'))
+#define _vte_table_is_numeric_list(__c) \
+       ((((__c) >= '0') && ((__c) <= '9')) || (__c) == ';')
+
+struct _vte_table {
+       struct _vte_matcher_impl impl;
+       GQuark resultq;
+       const char *result;
+       unsigned char *original;
+       gssize original_length;
+       int increment;
+       struct _vte_table *table_string;
+       struct _vte_table *table_number;
+       struct _vte_table *table_number_list;
+       struct _vte_table **table;
+};
+
+/* Argument info. */
+enum _vte_table_argtype {
+       _vte_table_arg_number=0,
+       _vte_table_arg_string,
+       _vte_table_arg_char
+};
+struct _vte_table_arginfo {
+       const gunichar *start;
+       struct _vte_table_arginfo *next;
+       guint type:2;
+       guint length:30;
+};
+#define MAX_STACK 16
+struct _vte_table_arginfo_head {
+       guint stack_allocated;
+       struct _vte_table_arginfo *list;
+       struct _vte_table_arginfo stack[MAX_STACK];
+};
+
+static void
+_vte_table_arginfo_head_init(struct _vte_table_arginfo_head *head)
+{
+       head->list = NULL;
+       head->stack_allocated = 0;
+}
+static inline struct _vte_table_arginfo*
+_vte_table_arginfo_alloc(struct _vte_table_arginfo_head *head)
+{
+       struct _vte_table_arginfo *info;
+       if (G_LIKELY (head->stack_allocated < G_N_ELEMENTS(head->stack))) {
+               info = &head->stack[head->stack_allocated++];
+       } else {
+               info = g_slice_new (struct _vte_table_arginfo);
+       }
+       info->next = head->list;
+       head->list = info;
+       return info;
+}
+static void
+_vte_table_arginfo_head_revert(struct _vte_table_arginfo_head *head, struct _vte_table_arginfo *last)
+{
+       struct _vte_table_arginfo *info;
+       info = head->list;
+       head->list = last->next;
+       if (last >= &head->stack[0] &&
+                       last < &head->stack[G_N_ELEMENTS(head->stack)]){
+               head->stack_allocated = last - &head->stack[0];
+       }
+       do {
+               struct _vte_table_arginfo *next = info->next;
+               if (info >= &head->stack[0] &&
+                               info < &head->stack[G_N_ELEMENTS(head->stack)]){
+                       break;
+               }
+               g_slice_free(struct _vte_table_arginfo, info);
+               if (info == last) {
+                       break;
+               }
+               info = next;
+       }while (TRUE);
+}
+static struct _vte_table_arginfo *
+_vte_table_arginfo_head_reverse(struct _vte_table_arginfo_head *head)
+{
+       struct _vte_table_arginfo *prev = NULL;
+       while (head->list) {
+               struct _vte_table_arginfo *next = head->list->next;
+
+               head->list->next = prev;
+
+               prev = head->list;
+               head->list = next;
+       }
+       return prev;
+}
+static void
+_vte_table_arginfo_head_finalize(struct _vte_table_arginfo_head *head)
+{
+       struct _vte_table_arginfo *info, *next;
+       for (info = head->list; info != NULL; info = next) {
+               next = info->next;
+               if (info >= &head->stack[0] &&
+                               info < &head->stack[G_N_ELEMENTS(head->stack)]){
+                       continue;
+               }
+               g_slice_free(struct _vte_table_arginfo, info);
+       }
+}
+
+/* Create an empty, one-level table. */
+struct _vte_table *
+_vte_table_new(void)
+{
+       struct _vte_table * ret;
+       ret = g_slice_new0(struct _vte_table);
+       ret->impl.klass = &_vte_matcher_table;
+       return ret;
+}
+
+static struct _vte_table **
+_vte_table_literal_new(void)
+{
+       return g_new0(struct _vte_table *, VTE_TABLE_MAX_LITERAL);
+}
+
+/* Free a table. */
+void
+_vte_table_free(struct _vte_table *table)
+{
+       unsigned int i;
+       if (table->table != NULL) {
+               for (i = 0; i < VTE_TABLE_MAX_LITERAL; i++) {
+                       if (table->table[i] != NULL) {
+                               _vte_table_free(table->table[i]);
+                       }
+               }
+               g_free(table->table);
+       }
+       if (table->table_string != NULL) {
+               _vte_table_free(table->table_string);
+       }
+       if (table->table_number != NULL) {
+               _vte_table_free(table->table_number);
+       }
+       if (table->table_number_list != NULL) {
+               _vte_table_free(table->table_number_list);
+       }
+       if (table->original_length == 0) {
+               g_assert(table->original == NULL);
+       } else {
+               g_assert(table->original != NULL);
+       }
+       if (table->original != NULL) {
+               g_free(table->original);
+       }
+       g_slice_free(struct _vte_table, table);
+}
+
+/* Add a string to the tree with the given increment value. */
+static void
+_vte_table_addi(struct _vte_table *table,
+               const unsigned char *original, gssize original_length,
+               const char *pattern, gssize length,
+               const char *result, GQuark quark, int inc)
+{
+       int i;
+       guint8 check;
+       struct _vte_table *subtable;
+
+       if (original_length == -1) {
+               original_length = strlen((char *) original);
+       }
+       if (length == -1) {
+               length = strlen(pattern);
+       }
+
+       /* If this is the terminal node, set the result. */
+       if (length == 0) {
+               if (table->result != NULL)
+                       _vte_debug_print (VTE_DEBUG_PARSE, 
+                                         "`%s' and `%s' are indistinguishable.\n",
+                                         table->result, result);
+
+               table->resultq = g_quark_from_string(result);
+               table->result = g_quark_to_string(table->resultq);
+               if (table->original != NULL) {
+                       g_free(table->original);
+               }
+               table->original = g_memdup(original, original_length);
+               table->original_length = original_length;
+               table->increment = inc;
+               return;
+       }
+
+       /* All of the interesting arguments begin with '%'. */
+       if (pattern[0] == '%') {
+               /* Handle an increment. */
+               if (pattern[1] == 'i') {
+                       _vte_table_addi(table, original, original_length,
+                                       pattern + 2, length - 2,
+                                       result, quark, inc + 1);
+                       return;
+               }
+
+               /* Handle numeric parameters. */
+               if ((pattern[1] == 'd') ||
+                   (pattern[1] == '2') ||
+                   (pattern[1] == '3')) {
+                       /* Create a new subtable. */
+                       if (table->table_number == NULL) {
+                               subtable = _vte_table_new();
+                               table->table_number = subtable;
+                       } else {
+                               subtable = table->table_number;
+                       }
+                       /* Add the rest of the string to the subtable. */
+                       _vte_table_addi(subtable, original, original_length,
+                                       pattern + 2, length - 2,
+                                       result, quark, inc);
+                       return;
+               }
+
+               /* Handle variable-length parameters. */
+               if ((pattern[1] == 'm') ||
+                   (pattern[1] == 'M')) {
+                       /* Build the "new" original using the initial portion
+                        * of the original string and what's left after this
+                        * specifier. */
+                       if (pattern[1] == 'm') {
+                               int initial;
+                               GByteArray *b;
+
+                               initial = original_length - length;
+                               /* 0 args; we use 'M' to signal that zero is
+                                * not allowed.  */
+                               b = g_byte_array_new();
+                               g_byte_array_set_size(b, 0);
+                               g_byte_array_append(b, original, initial);
+                               g_byte_array_append(b, (const guint8*)pattern + 2, length - 2);
+                               _vte_table_addi(table, b->data, b->len,
+                                               (const char *)b->data + initial,
+                                               b->len - initial,
+                                               result, quark, inc);
+                               g_byte_array_free(b, TRUE);
+                       }
+                       /* Create a new subtable. */
+                       if (table->table_number_list == NULL) {
+                               subtable = _vte_table_new();
+                               table->table_number_list = subtable;
+                       } else {
+                               subtable = table->table_number_list;
+                       }
+                       /* Add the rest of the string to the subtable. */
+                       _vte_table_addi(subtable, original, original_length,
+                                       pattern + 2, length - 2,
+                                       result, quark, inc);
+                       return;
+               }
+
+               /* Handle string parameters. */
+               if (pattern[1] == 's') {
+                       /* It must have a terminator. */
+                       g_assert(length >= 3);
+                       /* Create a new subtable. */
+                       if (table->table_string == NULL) {
+                               subtable = _vte_table_new();
+                               table->table_string = subtable;
+                       } else {
+                               subtable = table->table_string;
+                       }
+                       /* Add the rest of the string to the subtable. */
+                       _vte_table_addi(subtable, original, original_length,
+                                       pattern + 2, length - 2,
+                                       result, quark, inc);
+                       return;
+               }
+
+               /* Handle an escaped '%'. */
+               if (pattern[1] == '%') {
+                       /* Create a new subtable. */
+                       if (table->table == NULL) {
+                               table->table = _vte_table_literal_new();
+                               subtable = _vte_table_new();
+                               table->table['%'] = subtable;
+                       } else
+                       if (table->table['%'] == NULL) {
+                               subtable = _vte_table_new();
+                               table->table['%'] = subtable;
+                       } else {
+                               subtable = table->table['%'];
+                       }
+                       /* Add the rest of the string to the subtable. */
+                       _vte_table_addi(subtable, original, original_length,
+                                       pattern + 2, length - 2,
+                                       result, quark, inc);
+                       return;
+               }
+
+               /* Handle a parameter character. */
+               if (pattern[1] == '+') {
+                       /* It must have an addend. */
+                       g_assert(length >= 3);
+                       /* Fill in all of the table entries above the given
+                        * character value. */
+                       for (i = pattern[2]; i < VTE_TABLE_MAX_LITERAL; i++) {
+                               /* Create a new subtable. */
+                               if (table->table == NULL) {
+                                       table->table = _vte_table_literal_new();
+                                       subtable = _vte_table_new();
+                                       table->table[i] = subtable;
+                               } else
+                               if (table->table[i] == NULL) {
+                                       subtable = _vte_table_new();
+                                       table->table[i] = subtable;
+                               } else {
+                                       subtable = table->table[i];
+                               }
+                               /* Add the rest of the string to the subtable. */
+                               _vte_table_addi(subtable,
+                                               original, original_length,
+                                               pattern + 3, length - 3,
+                                               result, quark, inc);
+                       }
+                       /* Also add a subtable for higher characters. */
+                       if (table->table == NULL) {
+                               table->table = _vte_table_literal_new();
+                               subtable = _vte_table_new();
+                               table->table[0] = subtable;
+                       } else
+                       if (table->table[0] == NULL) {
+                               subtable = _vte_table_new();
+                               table->table[0] = subtable;
+                       } else {
+                               subtable = table->table[0];
+                       }
+                       /* Add the rest of the string to the subtable. */
+                       _vte_table_addi(subtable, original, original_length,
+                                       pattern + 3, length - 3,
+                                       result, quark, inc);
+                       return;
+               }
+       }
+
+       /* A literal (or an unescaped '%', which is also a literal). */
+       check = (guint8) pattern[0];
+       g_assert(check < VTE_TABLE_MAX_LITERAL);
+       if (table->table == NULL) {
+               table->table = _vte_table_literal_new();
+               subtable = _vte_table_new();
+               table->table[check] = subtable;
+       } else
+       if (table->table[check] == NULL) {
+               subtable = _vte_table_new();
+               table->table[check] = subtable;
+       } else {
+               subtable = table->table[check];
+       }
+
+       /* Add the rest of the string to the subtable. */
+       _vte_table_addi(subtable, original, original_length,
+                       pattern + 1, length - 1,
+                       result, quark, inc);
+}
+
+/* Add a string to the matching tree. */
+void
+_vte_table_add(struct _vte_table *table,
+              const char *pattern, gssize length,
+              const char *result, GQuark quark)
+{
+       _vte_table_addi(table,
+                       (const unsigned char *) pattern, length,
+                       pattern, length,
+                       result, quark, 0);
+}
+
+/* Match a string in a subtree. */
+static const char *
+_vte_table_matchi(struct _vte_table *table,
+                 const gunichar *candidate, gssize length,
+                 const char **res, const gunichar **consumed, GQuark *quark,
+                 unsigned char **original, gssize *original_length,
+                 struct _vte_table_arginfo_head *params)
+{
+       int i = 0;
+       struct _vte_table *subtable = NULL;
+       struct _vte_table_arginfo *arginfo;
+
+       /* Check if this is a result node. */
+       if (table->result != NULL) {
+               *consumed = candidate;
+               *original = table->original;
+               *original_length = table->original_length;
+               *res = table->result;
+               *quark = table->resultq;
+               return table->result;
+       }
+
+       /* If we're out of data, but we still have children, return the empty
+        * string. */
+       if (G_UNLIKELY (length == 0)) {
+               *consumed = candidate;
+               return "";
+       }
+
+       /* Check if this node has a string disposition. */
+       if (table->table_string != NULL) {
+               /* Iterate over all non-terminator values. */
+               subtable = table->table_string;
+               for (i = 0; i < length; i++) {
+                       if ((subtable->table != NULL) &&
+                           (subtable->table[_vte_table_map_literal(candidate[i])] != NULL)) {
+                               break;
+                       }
+               }
+               /* Save the parameter info. */
+               arginfo = _vte_table_arginfo_alloc(params);
+               arginfo->type = _vte_table_arg_string;
+               arginfo->start = candidate;
+               arginfo->length = i;
+               /* Continue. */
+               return _vte_table_matchi(subtable, candidate + i, length - i,
+                                        res, consumed, quark,
+                                        original, original_length, params);
+       }
+
+       /* Check if this could be a list. */
+       if ((_vte_table_is_numeric_list(candidate[0])) &&
+           (table->table_number_list != NULL)) {
+               const char *local_result;
+
+               subtable = table->table_number_list;
+               /* Iterate over all numeric characters and ';'. */
+               for (i = 1; i < length; i++) {
+                       if (!_vte_table_is_numeric_list(candidate[i])) {
+                               break;
+                       }
+               }
+               /* Save the parameter info. */
+               arginfo = _vte_table_arginfo_alloc(params);
+               arginfo->type = _vte_table_arg_number;
+               arginfo->start = candidate;
+               arginfo->length = i;
+
+               /* Try and continue. */
+               local_result = _vte_table_matchi(subtable,
+                                        candidate + i, length - i,
+                                        res, consumed, quark,
+                                        original, original_length,
+                                        params);
+               if (local_result != NULL) {
+                       return local_result;
+               }
+               _vte_table_arginfo_head_revert (params, arginfo);
+
+               /* try again */
+       }
+
+       /* Check if this could be a number. */
+       if ((_vte_table_is_numeric(candidate[0])) &&
+           (table->table_number != NULL)) {
+               subtable = table->table_number;
+               /* Iterate over all numeric characters. */
+               for (i = 1; i < length; i++) {
+                       if (!_vte_table_is_numeric(candidate[i])) {
+                               break;
+                       }
+               }
+               /* Save the parameter info. */
+               arginfo = _vte_table_arginfo_alloc(params);
+               arginfo->type = _vte_table_arg_number;
+               arginfo->start = candidate;
+               arginfo->length = i;
+               /* Continue. */
+               return _vte_table_matchi(subtable, candidate + i, length - i,
+                                        res, consumed, quark,
+                                        original, original_length, params);
+       }
+
+       /* Check for an exact match. */
+       if ((table->table != NULL) &&
+           (table->table[_vte_table_map_literal(candidate[0])] != NULL)) {
+               subtable = table->table[_vte_table_map_literal(candidate[0])];
+               /* Save the parameter info. */
+               arginfo = _vte_table_arginfo_alloc(params);
+               arginfo->type = _vte_table_arg_char;
+               arginfo->start = candidate;
+               arginfo->length = 1;
+               /* Continue. */
+               return _vte_table_matchi(subtable, candidate + 1, length - 1,
+                                        res, consumed, quark,
+                                        original, original_length, params);
+       }
+
+       /* If there's nothing else to do, then we can't go on.  Keep track of
+        * where we are. */
+       *consumed = candidate;
+       return NULL;
+}
+
+static void
+_vte_table_extract_numbers(GValueArray **array,
+                          struct _vte_table_arginfo *arginfo, long increment)
+{
+       GValue value = {0,};
+       gssize i;
+
+       g_value_init(&value, G_TYPE_LONG);
+       i = 0;
+       do {
+               long total = 0;
+               for (; i < arginfo->length && arginfo->start[i] != ';'; i++) {
+                       gint v = g_unichar_digit_value (arginfo->start[i]);
+                       total *= 10;
+                       total += v == -1 ?  0 : v;
+               }
+               if (G_UNLIKELY (*array == NULL)) {
+                       *array = g_value_array_new(1);
+               }
+               g_value_set_long(&value, total);
+               g_value_array_append(*array, &value);
+       } while (i++ < arginfo->length);
+       g_value_unset(&value);
+}
+
+static void
+_vte_table_extract_string(GValueArray **array,
+                         struct _vte_table_arginfo *arginfo)
+{
+       GValue value = {0,};
+       gunichar *ptr;
+       guint i;
+
+       ptr = g_new(gunichar, arginfo->length + 1);
+       for (i = 0; i < arginfo->length; i++) {
+               ptr[i] = arginfo->start[i] & ~VTE_ISO2022_ENCODED_WIDTH_MASK;
+       }
+       ptr[i] = '\0';
+       g_value_init(&value, G_TYPE_POINTER);
+       g_value_set_pointer(&value, ptr);
+
+       if (G_UNLIKELY (*array == NULL)) {
+               *array = g_value_array_new(1);
+       }
+       g_value_array_append(*array, &value);
+       g_value_unset(&value);
+}
+
+static void
+_vte_table_extract_char(GValueArray **array,
+                       struct _vte_table_arginfo *arginfo, long increment)
+{
+       GValue value = {0,};
+
+       g_value_init(&value, G_TYPE_LONG);
+       g_value_set_long(&value, *(arginfo->start) - increment);
+
+       if (G_UNLIKELY (*array == NULL)) {
+               *array = g_value_array_new(1);
+       }
+       g_value_array_append(*array, &value);
+       g_value_unset(&value);
+}
+
+/* Check if a string matches something in the tree. */
+const char *
+_vte_table_match(struct _vte_table *table,
+                const gunichar *candidate, gssize length,
+                const char **res, const gunichar **consumed,
+                GQuark *quark, GValueArray **array)
+{
+       struct _vte_table *head;
+       const gunichar *dummy_consumed;
+       const char *dummy_res;
+       GQuark dummy_quark;
+       GValueArray *dummy_array;
+       const char *ret;
+       unsigned char *original, *p;
+       gssize original_length;
+       long increment = 0;
+       int i;
+       struct _vte_table_arginfo_head params;
+       struct _vte_table_arginfo *arginfo;
+
+       /* Clean up extracted parameters. */
+       if (G_UNLIKELY (res == NULL)) {
+               res = &dummy_res;
+       }
+       *res = NULL;
+       if (G_UNLIKELY (consumed == NULL)) {
+               consumed = &dummy_consumed;
+       }
+       *consumed = candidate;
+       if (G_UNLIKELY (quark == NULL)) {
+               quark = &dummy_quark;
+       }
+       *quark = 0;
+       if (G_UNLIKELY (array == NULL)) {
+               dummy_array = NULL;
+               array = &dummy_array;
+       }
+
+       /* Provide a fast path for the usual "not a sequence" cases. */
+       if (G_LIKELY (length == 0 || candidate == NULL)) {
+               return NULL;
+       }
+
+       /* If there's no literal path, and no generic path, and the numeric
+        * path isn't available, then it's not a sequence, either. */
+       if (table->table == NULL ||
+           table->table[_vte_table_map_literal(candidate[0])] == NULL) {
+               if (table->table_string == NULL) {
+                       if (table->table_number == NULL ||
+                                       !_vte_table_is_numeric(candidate[0])){
+                               if (table->table_number_list == NULL ||
+                                       !_vte_table_is_numeric_list(candidate[0])){
+                                       /* No match. */
+                                       return NULL;
+                               }
+                       }
+               }
+       }
+
+       /* Check for a literal match. */
+       for (i = 0, head = table; i < length && head != NULL; i++) {
+               if (head->table == NULL) {
+                       head = NULL;
+               } else {
+                       head = head->table[_vte_table_map_literal(candidate[i])];
+               }
+       }
+       if (head != NULL && head->result != NULL) {
+               /* Got a literal match. */
+               *consumed = candidate + i;
+               *res = head->result;
+               *quark = head->resultq;
+               return *res;
+       }
+
+       _vte_table_arginfo_head_init (&params);
+
+       /* Check for a pattern match. */
+       ret = _vte_table_matchi(table, candidate, length,
+                               res, consumed, quark,
+                               &original, &original_length,
+                               &params);
+       *res = ret;
+
+       /* If we got a match, extract the parameters. */
+       if (ret != NULL && ret[0] != '\0' && array != &dummy_array) {
+               g_assert(original != NULL);
+               p = original;
+               arginfo = _vte_table_arginfo_head_reverse (&params);
+               do {
+                       /* All of the interesting arguments begin with '%'. */
+                       if (p[0] == '%') {
+                               /* Handle an increment. */
+                               if (p[1] == 'i') {
+                                       increment++;
+                                       p += 2;
+                                       continue;
+                               }
+                               /* Handle an escaped '%'. */
+                               else if (p[1] == '%') {
+                                       p++;
+                               }
+                               /* Handle numeric parameters. */
+                               else if ((p[1] == 'd') ||
+                                   (p[1] == '2') ||
+                                   (p[1] == '3') ||
+                                   (p[1] == 'm') ||
+                                   (p[1] == 'M')) {
+                                       _vte_table_extract_numbers(array,
+                                                                  arginfo,
+                                                                  increment);
+                                       p++;
+                               }
+                               /* Handle string parameters. */
+                               else if (p[1] == 's') {
+                                       _vte_table_extract_string(array,
+                                                                 arginfo);
+                                       p++;
+                               }
+                               /* Handle a parameter character. */
+                               else if (p[1] == '+') {
+                                       _vte_table_extract_char(array,
+                                                               arginfo,
+                                                               p[2]);
+                                       p += 2;
+                               } else {
+                                       _vte_debug_print (VTE_DEBUG_PARSE,
+                                                         "Invalid termcap sequence %s\n",
+                                                         original);
+                               }
+                       } /* else Literal. */
+                       arginfo = arginfo->next;
+               } while (++p < original + original_length && arginfo);
+       }
+
+       /* Clean up extracted parameters. */
+       _vte_table_arginfo_head_finalize (&params);
+
+       return ret;
+}
+
+static void
+_vte_table_printi(struct _vte_table *table, const char *lead, int *count)
+{
+       unsigned int i;
+       char *newlead = NULL;
+
+       (*count)++;
+
+       /* Result? */
+       if (table->result != NULL) {
+               g_printerr("%s = `%s'(%d)\n", lead,
+                       table->result, table->increment);
+       }
+
+       /* Literal? */
+       for (i = 1; i < VTE_TABLE_MAX_LITERAL; i++) {
+               if ((table->table != NULL) && (table->table[i] != NULL)) {
+                       if (i < 32) {
+                               newlead = g_strdup_printf("%s^%c", lead,
+                                                         i + 64);
+                       } else {
+                               newlead = g_strdup_printf("%s%c", lead, i);
+                       }
+                       _vte_table_printi(table->table[i], newlead, count);
+                       g_free(newlead);
+               }
+       }
+
+       /* String? */
+       if (table->table_string != NULL) {
+               newlead = g_strdup_printf("%s{string}", lead);
+               _vte_table_printi(table->table_string,
+                                 newlead, count);
+               g_free(newlead);
+       }
+
+       /* Number(+)? */
+       if (table->table_number != NULL) {
+               newlead = g_strdup_printf("%s{number}", lead);
+               _vte_table_printi(table->table_number,
+                                 newlead, count);
+               g_free(newlead);
+       }
+}
+
+/* Dump out the contents of a tree. */
+void
+_vte_table_print(struct _vte_table *table)
+{
+       int count = 0;
+       _vte_table_printi(table, "", &count);
+       g_printerr("%d nodes = %ld bytes.\n",
+               count, (long) count * sizeof(struct _vte_table));
+}
+
+#ifdef TABLE_MAIN
+/* Return an escaped version of a string suitable for printing. */
+static char *
+escape(const char *p)
+{
+       char *tmp;
+       GString *ret;
+       int i;
+       guint8 check;
+       ret = g_string_new(NULL);
+       for (i = 0; p[i] != '\0'; i++) {
+               tmp = NULL;
+               check = p[i];
+               if (check < 32) {
+                       tmp = g_strdup_printf("^%c", check + 64);
+               } else
+               if (check >= 0x80) {
+                       tmp = g_strdup_printf("{0x%x}", check);
+               } else {
+                       tmp = g_strdup_printf("%c", check);
+               }
+               g_string_append(ret, tmp);
+               g_free(tmp);
+       }
+       return g_string_free(ret, FALSE);
+}
+
+/* Spread out a narrow ASCII string into a wide-character string. */
+static gunichar *
+make_wide(const char *p)
+{
+       gunichar *ret;
+       guint8 check;
+       int i;
+       ret = g_malloc((strlen(p) + 1) * sizeof(gunichar));
+       for (i = 0; p[i] != 0; i++) {
+               check = (guint8) p[i];
+               g_assert(check < 0x80);
+               ret[i] = check;
+       }
+       ret[i] = '\0';
+       return ret;
+}
+
+/* Print the contents of a GValueArray. */
+static void
+print_array(GValueArray *array)
+{
+       int i;
+       GValue *value;
+       if (array != NULL) {
+               printf(" (");
+               for (i = 0; i < array->n_values; i++) {
+                       value = g_value_array_get_nth(array, i);
+                       if (i > 0) {
+                               printf(", ");
+                       }
+                       if (G_VALUE_HOLDS_LONG(value)) {
+                               printf("%ld", g_value_get_long(value));
+                       } else
+                       if (G_VALUE_HOLDS_STRING(value)) {
+                               printf("\"%s\"", g_value_get_string(value));
+                       } else
+                       if (G_VALUE_HOLDS_POINTER(value)) {
+                               printf("\"%ls\"",
+                                      (wchar_t*) g_value_get_pointer(value));
+                       }
+               }
+               printf(")");
+               /* _vte_matcher_free_params_array(array); */
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       struct _vte_table *table;
+       int i;
+       const char *candidates[] = {
+               "ABCD",
+               "ABCDEF",
+               "]2;foo",
+               "]3;foo",
+               "]3;fook",
+               "oo",
+               "",
+               "k",
+               "k",
+               "",
+               "]3;3h",
+               "",
+               "j",
+               "s",
+       };
+       const char *result, *p;
+       const gunichar *consumed;
+       char *tmp;
+       gunichar *candidate;
+       GQuark quark;
+       GValueArray *array;
+       g_type_init();
+       table = _vte_table_new();
+       _vte_table_add(table, "ABCDEFG", 7, "ABCDEFG", 0);
+       _vte_table_add(table, "ABCD", 4, "ABCD", 0);
+       _vte_table_add(table, "ABCDEFH", 7, "ABCDEFH", 0);
+       _vte_table_add(table, "ACDEFH", 6, "ACDEFH", 0);
+       _vte_table_add(table, "ACDEF%sJ", 8, "ACDEF%sJ", 0);
+       _vte_table_add(table, "ACDEF%i%mJ", 10, "ACDEF%dJ", 0);
+       _vte_table_add(table, "[%mh", 5, "move-cursor", 0);
+       _vte_table_add(table, "[%d;%d;%dm", 11, "set-graphic-rendition", 0);
+       _vte_table_add(table, "[%dm", 5, "set-graphic-rendition", 0);
+       _vte_table_add(table, "", 3, "set-graphic-rendition", 0);
+       _vte_table_add(table, "]3;%s", 7, "set-icon-title", 0);
+       _vte_table_add(table, "]4;%s", 7, "set-window-title", 0);
+       printf("Table contents:\n");
+       _vte_table_print(table);
+       printf("\nTable matches:\n");
+       for (i = 0; i < G_N_ELEMENTS(candidates); i++) {
+               p = candidates[i];
+               candidate = make_wide(p);
+               array = NULL;
+               _vte_table_match(table, candidate, strlen(p),
+                                &result, &consumed, &quark, &array);
+               tmp = escape(p);
+               printf("`%s' => `%s'", tmp, (result ? result : "(NULL)"));
+               g_free(tmp);
+               print_array(array);
+               printf(" (%d chars)\n", (int) (consumed ? consumed - candidate: 0));
+               g_free(candidate);
+       }
+       _vte_table_free(table);
+       return 0;
+}
+#endif
+
+const struct _vte_matcher_class _vte_matcher_table = {
+       (_vte_matcher_create_func)_vte_table_new,
+       (_vte_matcher_add_func)_vte_table_add,
+       (_vte_matcher_print_func)_vte_table_print,
+       (_vte_matcher_match_func)_vte_table_match,
+       (_vte_matcher_destroy_func)_vte_table_free
+};
diff --git a/vte/src/table.h b/vte/src/table.h
new file mode 100644
index 0000000..31989f2
--- /dev/null
+++ b/vte/src/table.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_table_h_included
+#define vte_table_h_included
+
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _vte_table;
+
+/* Create an empty, one-level table. */
+struct _vte_table *_vte_table_new(void);
+
+/* Free a table tree. */
+void _vte_table_free(struct _vte_table *table);
+
+/* Add a string to the matching tree. */
+void _vte_table_add(struct _vte_table *table,
+                   const char *pattern, gssize length,
+                   const char *result, GQuark quark);
+
+/* Check if a string matches something in the tree. */
+const char *_vte_table_match(struct _vte_table *table,
+                            const gunichar *pattern, gssize length,
+                            const char **res, const gunichar **consumed,
+                            GQuark *quark, GValueArray **array);
+/* Dump out the contents of a tree. */
+void _vte_table_print(struct _vte_table *table);
+
+extern const struct _vte_matcher_class _vte_matcher_table;
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/trie.c b/vte/src/trie.c
new file mode 100644
index 0000000..7b40a35
--- /dev/null
+++ b/vte/src/trie.c
@@ -0,0 +1,1110 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+#include <assert.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+#include <glib.h>
+#include <glib-object.h>
+#include "debug.h"
+#include "iso2022.h"
+#include "matcher.h"
+#include "trie.h"
+#include "vteconv.h"
+
+#ifndef HAVE_WINT_T
+typedef gunichar wint_t;
+#endif
+
+#include <glib/gi18n-lib.h>
+
+#ifndef TRIE_MAYBE_STATIC
+#define TRIE_MAYBE_STATIC
+#endif
+
+/* Structures and whatnot for tracking character classes. */
+struct char_class_data {
+       gunichar c;                     /* A character. */
+       int i;                          /* An integer. */
+       char *s;                        /* A string. */
+       int inc;                        /* An increment value. */
+};
+
+struct char_class {
+       enum cclass {
+               exact = 0,              /* Not a special class. */
+               digit,                  /* Multiple-digit special class. */
+               multi,                  /* Multiple-number special class. */
+               any,                    /* Any single character. */
+               string,                 /* Any string of characters. */
+               invalid                 /* A placeholder. */
+       } type;
+       gboolean multiple;              /* Whether a sequence of multiple
+                                          characters in this class should be
+                                          counted together. */
+       gunichar *code;                 /* A magic string that indicates this
+                                          class should be found here. */
+       gsize code_length;
+       gsize ccount;                   /* The maximum number of characters
+                                          after the format specifier to
+                                          consume. */
+       gboolean (*check)(const gunichar c, struct char_class_data *data);
+                                       /* Function to check if a character
+                                          is in this class. */
+       void (*setup)(const gunichar *s, struct char_class_data *data, int inc);
+                                       /* Setup the data struct for use in the
+                                        * above check function. */
+       gboolean (*extract)(const gunichar *s, gsize length,
+                           struct char_class_data *data,
+                           GValueArray *array);
+                                       /* Extract a parameter. */
+};
+
+/* A trie to hold control sequences. */
+struct _vte_trie {
+       struct _vte_matcher_impl impl;
+       const char *result;             /* If this is a terminal node, then this
+                                          field contains its "value". */
+       GQuark quark;                   /* The quark for the value of the
+                                          result. */
+       gsize trie_path_count;          /* Number of children of this node. */
+       struct trie_path {
+               struct char_class *cclass;
+               struct char_class_data data;
+               struct _vte_trie *trie; /* The child node corresponding to this
+                                          character. */
+       } *trie_paths;
+};
+
+/* Functions for checking if a particular character is part of a class, and
+ * for setting up a structure for use when determining matches. */
+static gboolean
+char_class_exact_check(gunichar c, struct char_class_data *data)
+{
+       return (c == data->c) ? TRUE : FALSE;
+}
+static void
+char_class_exact_setup(const gunichar *s, struct char_class_data *data, int inc)
+{
+       data->c = s[0];
+       return;
+}
+static void
+char_class_percent_setup(const gunichar *s, struct char_class_data *data,
+                        int inc)
+{
+       data->c = '%';
+       return;
+}
+static gboolean
+char_class_none_extract(const gunichar *s, gsize length,
+                       struct char_class_data *data, GValueArray *array)
+{
+       return FALSE;
+}
+
+static gboolean
+char_class_digit_check(gunichar c, struct char_class_data *data)
+{
+       switch (c) {
+               case '0':
+               case '1':
+               case '2':
+               case '3':
+               case '4':
+               case '5':
+               case '6':
+               case '7':
+               case '8':
+               case '9':
+                       return TRUE;
+               default:
+                       return FALSE;
+       }
+}
+static void
+char_class_digit_setup(const gunichar *s, struct char_class_data *data, int inc)
+{
+       data->inc = inc;
+       return;
+}
+static gboolean
+char_class_digit_extract(const gunichar *s, gsize length,
+                        struct char_class_data *data, GValueArray *array)
+{
+       long ret = 0;
+       gsize i;
+       GValue value;
+       for (i = 0; i < length; i++) {
+               ret *= 10;
+               ret += g_unichar_digit_value(s[i]) == -1 ?
+                      0 : g_unichar_digit_value(s[i]);
+       }
+       memset(&value, 0, sizeof(value));
+       g_value_init(&value, G_TYPE_LONG);
+       g_value_set_long(&value, ret - data->inc);
+       g_value_array_append(array, &value);
+       g_value_unset(&value);
+       return TRUE;
+}
+
+static gboolean
+char_class_multi_check(gunichar c, struct char_class_data *data)
+{
+       switch (c) {
+               case '0':
+               case '1':
+               case '2':
+               case '3':
+               case '4':
+               case '5':
+               case '6':
+               case '7':
+               case '8':
+               case '9':
+               case ';':
+                       return TRUE;
+               default:
+                       return FALSE;
+       }
+}
+static void
+char_class_multi_setup(const gunichar *s, struct char_class_data *data, int inc)
+{
+       data->inc = inc;
+       return;
+}
+static gboolean
+char_class_multi_extract(const gunichar *s, gsize length,
+                        struct char_class_data *data, GValueArray *array)
+{
+       long ret = 0;
+       gsize i;
+       GValue value;
+       memset(&value, 0, sizeof(value));
+       g_value_init(&value, G_TYPE_LONG);
+       for (i = 0; i < length; i++) {
+               if (s[i] == ';') {
+                       g_value_set_long(&value, ret - data->inc);
+                       g_value_array_append(array, &value);
+                       ret = 0;
+               } else {
+                       ret *= 10;
+                       ret += (s[i] - '0');
+               }
+       }
+       g_value_set_long(&value, ret - data->inc);
+       g_value_array_append(array, &value);
+       g_value_unset(&value);
+       return TRUE;
+}
+
+static gboolean
+char_class_any_check(gunichar c, struct char_class_data *data)
+{
+       return (c >= data->c) ? TRUE : FALSE;
+}
+static void
+char_class_any_setup(const gunichar *s, struct char_class_data *data, int inc)
+{
+       data->c = s[0] + inc;
+       return;
+}
+static gboolean
+char_class_any_extract(const gunichar *s, gsize length,
+                      struct char_class_data *data, GValueArray *array)
+{
+       long ret = 0;
+       GValue value;
+       ret = s[0] - data->c;
+       memset(&value, 0, sizeof(value));
+       g_value_init(&value, G_TYPE_LONG);
+       g_value_set_long(&value, ret - data->inc);
+       g_value_array_append(array, &value);
+       g_value_unset(&value);
+       return TRUE;
+}
+
+static gboolean
+char_class_string_check(gunichar c, struct char_class_data *data)
+{
+       return (c != data->c) ? TRUE : FALSE;
+}
+static void
+char_class_string_setup(const gunichar *s, struct char_class_data *data, int inc)
+{
+       data->c = s[0];
+       return;
+}
+static gsize
+unichar_snlen(const gunichar *s, gsize length)
+{
+       gsize i;
+       for (i = 0; i < length; i++) {
+               if (s[i] == '\0') {
+                       return i;
+               }
+       }
+       return length;
+}
+static void
+unichar_sncpy(gunichar *d, const gunichar *s, gsize length)
+{
+       unsigned int i;
+       for (i = 0; i < length; i++) {
+               d[i] = s[i];
+               if (s[i] == 0) {
+                       break;
+               }
+       }
+}
+static int
+unichar_sncmp(const gunichar *a, const gunichar *b, gsize length)
+{
+       gsize i;
+       for (i = 0; i < length; i++) {
+               if (a[i] != b[i]) {
+                       return a[i] - b[i];
+               }
+               if (a[i] == 0) {
+                       break;
+               }
+       }
+       return 0;
+}
+static gboolean
+char_class_string_extract(const gunichar *s, gsize length,
+                         struct char_class_data *data, GValueArray *array)
+{
+       gunichar *ret = NULL;
+       gsize len;
+       gsize i;
+       GValue value;
+
+       len = unichar_snlen(s, length);
+       ret = g_malloc0((len + 1) * sizeof(gunichar));
+       unichar_sncpy(ret, s, len);
+       for (i = 0; i < len; i++) {
+               ret[i] &= ~(VTE_ISO2022_ENCODED_WIDTH_MASK);
+       }
+       _vte_debug_print(VTE_DEBUG_PARSE,
+                       "Extracting string `%ls'.\n", (wchar_t*) ret);
+       memset(&value, 0, sizeof(value));
+
+       g_value_init(&value, G_TYPE_POINTER);
+       g_value_set_pointer(&value, ret);
+       g_value_array_append(array, &value);
+       g_value_unset(&value);
+
+       return TRUE;
+}
+
+static gunichar empty_wstring[] = {'\0'};
+static gunichar digit_wstring1[] = {'%', '2', '\0'};
+static gunichar digit_wstring2[] = {'%', 'd', '\0'};
+static gunichar any_wstring[] = {'%', '+', '\0'};
+static gunichar exact_wstring[] = {'%', '%', '\0'};
+static gunichar string_wstring[] = {'%', 's', '\0'};
+static gunichar multi_wstring[] = {'%', 'm', '\0'};
+
+static struct char_class char_classes[] = {
+       {exact, FALSE, empty_wstring, 0, 1,
+        char_class_exact_check,
+        char_class_exact_setup,
+        char_class_none_extract},
+       {digit, TRUE, digit_wstring1, 2, 0,
+        char_class_digit_check,
+        char_class_digit_setup,
+        char_class_digit_extract},
+       {digit, TRUE, digit_wstring2, 2, 0,
+        char_class_digit_check,
+        char_class_digit_setup,
+        char_class_digit_extract},
+       {multi, TRUE, multi_wstring, 2, 0,
+        char_class_multi_check,
+        char_class_multi_setup,
+        char_class_multi_extract},
+       {any, FALSE, any_wstring, 2, 1,
+        char_class_any_check,
+        char_class_any_setup,
+        char_class_any_extract},
+       {exact, FALSE, exact_wstring, 2, 0,
+        char_class_exact_check,
+        char_class_percent_setup,
+        char_class_none_extract},
+       {string, TRUE, string_wstring, 2, 0,
+        char_class_string_check,
+        char_class_string_setup,
+        char_class_string_extract},
+};
+
+/* Create a new trie. */
+TRIE_MAYBE_STATIC struct _vte_trie *
+_vte_trie_new(void)
+{
+       struct _vte_trie *ret;
+       ret = g_slice_new0(struct _vte_trie);
+       ret->impl.klass = &_vte_matcher_trie;
+       return ret;
+}
+
+TRIE_MAYBE_STATIC void
+_vte_trie_free(struct _vte_trie *trie)
+{
+       unsigned int i;
+       for (i = 0; i < trie->trie_path_count; i++) {
+               _vte_trie_free(trie->trie_paths[i].trie);
+       }
+       if (trie->trie_path_count > 0) {
+               g_free(trie->trie_paths);
+       }
+       g_slice_free(struct _vte_trie, trie);
+}
+
+/* Add the given pattern, with its own result string, to the trie, with the
+ * given initial increment value. */
+static void
+_vte_trie_addx(struct _vte_trie *trie, gunichar *pattern, gsize length,
+              const char *result, GQuark quark, int inc)
+{
+       gsize i;
+       struct char_class *cclass = NULL;
+       struct char_class_data data;
+       gunichar *code;
+       gsize len = 0, ccount = 0;
+       gunichar inc_wstring[] = {'%', 'i', '\0'};
+
+       /* The trivial case -- we'll just set the result at this node. */
+       if (length == 0) {
+               if (trie->result == NULL) {
+                       trie->quark = g_quark_from_string(result);
+                       trie->result = g_quark_to_string(trie->quark);
+               } else {
+                       _VTE_DEBUG_IF(VTE_DEBUG_PARSE)
+                               g_warning(_("Duplicate (%s/%s)!"),
+                                         result, trie->result);
+               }
+               return;
+       }
+
+       /* If this part of the control sequence indicates incrementing a
+        * parameter, keep track of the incrementing, skip over the increment
+        * substring, and keep going. */
+       if ((length >= 2) && (unichar_sncmp(pattern, inc_wstring, 2) == 0)) {
+               _vte_trie_addx(trie, pattern + 2, length - 2,
+                              result, quark, inc + 1);
+               return;
+       }
+
+       /* Now check for examples of character class specifiers, and use that
+        * to put this part of the pattern in a character class. */
+       for (i = G_N_ELEMENTS(char_classes); i--; ) {
+               len = char_classes[i].code_length;
+               code = char_classes[i].code;
+               ccount = char_classes[i].ccount;
+               if ((len <= length) && (unichar_sncmp(pattern, code, len) == 0)) {
+                       cclass = &char_classes[i];
+                       break;
+               }
+       }
+
+       /* Initialize the data item using the data we have here. */
+       memset(&data, 0, sizeof(data));
+       cclass->setup(pattern + len, &data, inc);
+
+       /* Hunt for a subtrie which matches this class / data pair. */
+       for (i = 0; i < trie->trie_path_count; i++) {
+               struct char_class_data *tdata;
+               tdata =  &trie->trie_paths[i].data;
+               if ((trie->trie_paths[i].cclass == cclass) &&
+                   (memcmp(&data, tdata, sizeof(data)) == 0)) {
+                       /* It matches, so insert the rest of the pattern into
+                        * this subtrie. */
+                       _vte_trie_addx(trie->trie_paths[i].trie,
+                                      pattern + (len + ccount),
+                                      length - (len + ccount),
+                                      result,
+                                      quark,
+                                      inc);
+                       return;
+               }
+       }
+
+       /* Add a new subtrie to contain the rest of this pattern. */
+       trie->trie_path_count++;
+       trie->trie_paths = g_realloc(trie->trie_paths,
+                                    trie->trie_path_count *
+                                    sizeof(trie->trie_paths[0]));
+       i = trie->trie_path_count - 1;
+       memset(&trie->trie_paths[i], 0, sizeof(trie->trie_paths[i]));
+       trie->trie_paths[i].trie = _vte_trie_new();
+       cclass->setup(pattern + len, &trie->trie_paths[i].data, inc);
+       trie->trie_paths[i].cclass = cclass;
+
+       /* Now insert the rest of the pattern into the node we just created. */
+       _vte_trie_addx(trie->trie_paths[i].trie,
+                      pattern + (len + ccount),
+                      length - (len + ccount),
+                      result,
+                      quark,
+                      inc);
+}
+
+/* Add the given pattern, with its own result string, to the trie. */
+TRIE_MAYBE_STATIC void
+_vte_trie_add(struct _vte_trie *trie, const char *pattern, gsize length,
+             const char *result, GQuark quark)
+{
+       const guchar *tpattern;
+       guchar *wpattern, *wpattern_end;
+       VteConv conv;
+       gsize wlength;
+
+       g_return_if_fail(trie != NULL);
+       g_return_if_fail(pattern != NULL);
+       g_return_if_fail(length > 0);
+       g_return_if_fail(result != NULL);
+       if (quark == 0) {
+               quark = g_quark_from_string(result);
+       }
+
+       wlength = sizeof(gunichar) * (length + 1);
+       wpattern = wpattern_end = g_malloc0(wlength + 1);
+
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "UTF-8");
+       g_assert(conv != VTE_INVALID_CONV);
+
+       tpattern = (const guchar *)pattern;
+       _vte_conv(conv, &tpattern, &length, &wpattern_end, &wlength);
+       if (length == 0) {
+               wlength = (wpattern_end - wpattern) / sizeof(gunichar);
+               _vte_trie_addx(trie, (gunichar*)wpattern, wlength,
+                              result, quark, 0);
+       }
+       _vte_conv_close(conv);
+
+       g_free(wpattern);
+}
+
+/* Check if the given pattern matches part of the given trie, returning an
+ * empty string on a partial initial match, a %NULL if there's no match in the
+ * works, and the result string if we have an exact match. */
+static const char *
+_vte_trie_matchx(struct _vte_trie *trie, const gunichar *pattern, gsize length,
+                gboolean greedy,
+                const char **res, const gunichar **consumed,
+                GQuark *quark, GValueArray *array)
+{
+       unsigned int i;
+       const char *hres;
+       enum cclass cc;
+       const char *best = NULL;
+       GValueArray *bestarray = NULL;
+       GQuark bestquark = 0;
+       const gunichar *bestconsumed = pattern;
+
+       /* Make sure that attempting to save output values doesn't kill us. */
+       if (res == NULL) {
+               res = &hres;
+       }
+
+       /* Trivial cases.  We've matched an entire pattern, or we're out of
+        * pattern to match. */
+       if (trie->result != NULL) {
+               *res = trie->result;
+               *quark = trie->quark;
+               *consumed = pattern;
+               return *res;
+       }
+       if (length <= 0) {
+               if (trie->trie_path_count > 0) {
+                       *res = "";
+                       *quark = g_quark_from_static_string("");
+                       *consumed = pattern;
+                       return *res;
+               } else {
+                       *res = NULL;
+                       *quark = 0;
+                       *consumed = pattern;
+                       return *res;
+               }
+       }
+
+       /* Now figure out which (if any) subtrees to search.  First, see
+        * which character class this character matches. */
+       for (cc = exact; cc < invalid; cc++)
+       for (i = 0; i < trie->trie_path_count; i++) {
+               struct _vte_trie *subtrie = trie->trie_paths[i].trie;
+               struct char_class *cclass = trie->trie_paths[i].cclass;
+               struct char_class_data *data = &trie->trie_paths[i].data;
+               if (trie->trie_paths[i].cclass->type == cc) {
+                       /* If it matches this character class... */
+                       if (cclass->check(pattern[0], data)) {
+                               const gunichar *prospect = pattern + 1;
+                               const char *tmp;
+                               GQuark tmpquark = 0;
+                               GValueArray *tmparray;
+                               gboolean better = FALSE;
+                               /* Move past characters which might match this
+                                * part of the string... */
+                               while (cclass->multiple &&
+                                      ((gsize)(prospect - pattern) < length) &&
+                                      cclass->check(prospect[0], data)) {
+                                       prospect++;
+                               }
+                               /* ... see if there's a parameter here, ... */
+                               tmparray = g_value_array_new(0);
+                               cclass->extract(pattern,
+                                               prospect - pattern,
+                                               data,
+                                               tmparray);
+                               /* ... and check if the subtree matches the
+                                * rest of the input string.  Any parameters
+                                * further on will be appended to the array. */
+                               _vte_trie_matchx(subtrie,
+                                                prospect,
+                                                length - (prospect - pattern),
+                                                greedy,
+                                                &tmp,
+                                                consumed,
+                                                &tmpquark,
+                                                tmparray);
+                               /* If we haven't seen any matches yet, go ahead
+                                * and go by this result. */
+                               if (best == NULL) {
+                                       better = TRUE;
+                               } else
+                               /* If we have a match, and we didn't have one
+                                * already, go by this result. */
+                               if ((best != NULL) &&
+                                   (best[0] == '\0') &&
+                                   (tmp != NULL) &&
+                                   (tmp[0] != '\0')) {
+                                       better = TRUE;
+                               } else
+                               /* If we already have a match, and this one's
+                                * better (longer if we're greedy, shorter if
+                                * we're not), then go by this result. */
+                               if ((tmp != NULL) &&
+                                   (tmp[0] != '\0') &&
+                                   (bestconsumed != NULL) &&
+                                   (consumed != NULL) &&
+                                   (*consumed != NULL)) {
+                                       if (greedy &&
+                                           (bestconsumed < *consumed)) {
+                                               better = TRUE;
+                                       } else
+                                       if (!greedy &&
+                                           (bestconsumed > *consumed)) {
+                                               better = TRUE;
+                                       }
+                               }
+                               if (better) {
+                                       best = tmp;
+                                       if (bestarray != NULL) {
+                                               _vte_matcher_free_params_array(
+                                                               NULL, bestarray);
+                                       }
+                                       bestarray = tmparray;
+                                       bestquark = tmpquark;
+                                       bestconsumed = *consumed;
+                               } else {
+                                       _vte_matcher_free_params_array(
+                                                       NULL, tmparray);
+                                       tmparray = NULL;
+                               }
+                       }
+               }
+       }
+
+       /* We're done searching.  Copy out any parameters we picked up. */
+       if (bestarray != NULL) {
+               for (i = 0; i < bestarray->n_values; i++) {
+                       GValue *value = g_value_array_get_nth(bestarray, i);
+                       g_value_array_append(array, value);
+
+                       if (G_VALUE_HOLDS_POINTER(value)) {
+                               g_value_set_pointer(value, NULL);
+                       }
+               }
+               _vte_matcher_free_params_array(NULL, bestarray);
+       }
+#if 0
+       printf("`%s' ", best);
+       dump_array(array);
+#endif
+       *quark = bestquark;
+       *res = best;
+       *consumed = bestconsumed;
+       return *res;
+}
+
+/* Check if the given pattern matches part of the given trie, returning an
+ * empty string on a partial initial match, a %NULL if there's no match in the
+ * works, and the result string if we have an exact match. */
+TRIE_MAYBE_STATIC const char *
+_vte_trie_match(struct _vte_trie *trie, const gunichar *pattern, gsize length,
+               const char **res, const gunichar **consumed,
+               GQuark *quark, GValueArray **array)
+{
+       const char *ret = NULL;
+       GQuark tmpquark;
+       GValueArray *valuearray;
+       GValue *value;
+       const gunichar *dummyconsumed;
+       gboolean greedy = FALSE;
+       guint i;
+
+       if (array != NULL && *array != NULL) {
+               valuearray = *array;
+       } else {
+               valuearray = g_value_array_new(0);
+       }
+       if (quark == NULL) {
+               quark = &tmpquark;
+       }
+       *quark = 0;
+
+       if (consumed == NULL) {
+               consumed = &dummyconsumed;
+       }
+       *consumed = pattern;
+
+       ret = _vte_trie_matchx(trie, pattern, length, greedy,
+                              res, consumed, quark, valuearray);
+
+       if (((ret == NULL) || (ret[0] == '\0')) || (valuearray->n_values == 0)){
+               if (valuearray != NULL) {
+                       for (i = 0; i < valuearray->n_values; i++) {
+                               value = g_value_array_get_nth(valuearray, i);
+                               if (G_VALUE_HOLDS_POINTER(value)) {
+                                       g_free(g_value_get_pointer(value));
+                                       g_value_set_pointer(value, NULL);
+                               }
+                       }
+                       if (array == NULL || valuearray != *array) {
+                               _vte_matcher_free_params_array(NULL, valuearray);
+                       }
+               }
+       } else {
+               if (array == NULL) {
+                       _vte_matcher_free_params_array(NULL, valuearray);
+               }
+       }
+
+       return ret;
+}
+
+/* Print the next layer of the trie, indented by length spaces. */
+static void
+_vte_trie_printx(struct _vte_trie *trie, const char *previous,
+                gsize *nodecount)
+{
+       unsigned int i;
+       char buf[LINE_MAX];
+
+       if ((nodecount) && (trie->trie_path_count > 0)) {
+               (*nodecount)++;
+       }
+
+       for (i = 0; i < trie->trie_path_count; i++) {
+               memset(buf, '\0', sizeof(buf));
+               snprintf(buf, sizeof(buf), "%s", previous);
+               switch (trie->trie_paths[i].cclass->type) {
+                       case exact:
+                               if (trie->trie_paths[i].data.c < 32) {
+                                       snprintf(buf + strlen(buf),
+                                                sizeof(buf) - strlen(buf),
+                                                "^%lc",
+                                                (wint_t)trie->trie_paths[i].data.c +
+                                                64);
+                               } else
+                               if (trie->trie_paths[i].data.c > 126) {
+                                       snprintf(buf + strlen(buf),
+                                                sizeof(buf) - strlen(buf),
+                                                "[:%ld:]",
+                                                (long)trie->trie_paths[i].data.c);
+                               } else {
+                                       snprintf(buf + strlen(buf),
+                                                sizeof(buf) - strlen(buf),
+                                                "%lc",
+                                                (wint_t)trie->trie_paths[i].data.c);
+                               }
+                               break;
+                       case digit:
+                               snprintf(buf + strlen(buf),
+                                        sizeof(buf) - strlen(buf),
+                                        "{num+%d}",
+                                        trie->trie_paths[i].data.inc);
+                               break;
+                       case multi:
+                               snprintf(buf + strlen(buf),
+                                        sizeof(buf) - strlen(buf),
+                                        "{multinum+%d}",
+                                        trie->trie_paths[i].data.inc);
+                               break;
+                       case any:
+                               if (trie->trie_paths[i].data.c < 32) {
+                                       snprintf(buf + strlen(buf),
+                                                sizeof(buf) - strlen(buf),
+                                                "{char+0x%02lx}",
+                                                (long)trie->trie_paths[i].data.c);
+                               } else {
+                                       snprintf(buf + strlen(buf),
+                                                sizeof(buf) - strlen(buf),
+                                                "{char+`%lc'}",
+                                                (wint_t)trie->trie_paths[i].data.c);
+                               }
+                               break;
+                       case string:
+                               snprintf(buf + strlen(buf),
+                                        sizeof(buf) - strlen(buf),
+                                        "{string}");
+                               break;
+                       case invalid:
+                               break;
+               }
+               if (trie->trie_paths[i].trie->result != NULL) {
+                       printf("%s = `%s'\n", buf,
+                              trie->trie_paths[i].trie->result);
+               }
+               _vte_trie_printx(trie->trie_paths[i].trie, buf, nodecount);
+       }
+}
+
+/* Print the trie. */
+TRIE_MAYBE_STATIC void
+_vte_trie_print(struct _vte_trie *trie)
+{
+       gsize nodecount = 0;
+       _vte_trie_printx(trie, "", &nodecount);
+       printf("Trie has %ld nodes.\n", (long) nodecount);
+}
+
+#ifdef TRIE_MAIN
+static void
+dump_array(GValueArray *array)
+{
+       unsigned int i;
+       if (array != NULL) {
+               printf("args = {");
+               for (i = 0; i < array->n_values; i++) {
+                       GValue *value;
+                       value = g_value_array_get_nth(array, i);
+                       if (i > 0) {
+                               printf(", ");
+                       }
+                       if (G_VALUE_HOLDS_LONG(value)) {
+                               printf("%ld", g_value_get_long(value));
+                       }
+                       if (G_VALUE_HOLDS_STRING(value)) {
+                               printf("`%s'", g_value_get_string(value));
+                       }
+                       if (G_VALUE_HOLDS_POINTER(value)) {
+                               printf("`%ls'",
+                                      (wchar_t*) g_value_get_pointer(value));
+                       }
+               }
+               printf("}\n");
+       }
+}
+
+static void
+convert_mbstowcs(const char *i, gsize ilen,
+                gunichar *o, gsize *olen, gsize max_olen)
+{
+       VteConv conv;
+       gsize outlen;
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "UTF-8");
+       g_assert(conv != VTE_INVALID_CONV);
+
+       memset(o, 0, max_olen);
+       outlen = max_olen;
+       _vte_conv_cu(conv, (char**)&i, &ilen, &o, &outlen);
+       _vte_conv_close(conv);
+
+       *olen = (max_olen - outlen) / sizeof(gunichar);
+}
+
+int
+main(int argc, char **argv)
+{
+       struct _vte_trie *trie;
+       GValueArray *array = NULL;
+       GQuark quark;
+       gunichar buf[LINE_MAX];
+       const gunichar *consumed;
+       gsize buflen;
+
+       _vte_debug_init();
+
+       g_type_init();
+       trie = _vte_trie_new();
+
+       _vte_trie_add(trie, "abcdef", 6, "abcdef",
+                     g_quark_from_static_string("abcdef"));
+       _vte_trie_add(trie, "abcde", 5, "abcde",
+                     g_quark_from_static_string("abcde"));
+       _vte_trie_add(trie, "abcdeg", 6, "abcdeg",
+                     g_quark_from_static_string("abcdeg"));
+       _vte_trie_add(trie, "abc%+Aeg", 8, "abc%+Aeg",
+                     g_quark_from_static_string("abc%+Aeg"));
+       _vte_trie_add(trie, "abc%deg", 7, "abc%deg",
+                     g_quark_from_static_string("abc%deg"));
+       _vte_trie_add(trie, "abc%%eg", 7, "abc%%eg",
+                     g_quark_from_static_string("abc%%eg"));
+       _vte_trie_add(trie, "abc%%%i%deg", 11, "abc%%%i%deg",
+                     g_quark_from_static_string("abc%%%i%deg"));
+       _vte_trie_add(trie, "<esc>[%i%d;%dH", 14, "vtmatch",
+                     g_quark_from_static_string("vtmatch"));
+       _vte_trie_add(trie, "<esc>[%i%mL", 11, "multimatch",
+                     g_quark_from_static_string("multimatch"));
+       _vte_trie_add(trie, "<esc>[%mL<esc>[%mL", 18, "greedy",
+                     g_quark_from_static_string("greedy"));
+       _vte_trie_add(trie, "<esc>]2;%sh", 11, "decset-title",
+                     g_quark_from_static_string("decset-title"));
+
+       printf("Wide encoding is `%s'.\n", VTE_CONV_GUNICHAR_TYPE);
+
+       _vte_trie_print(trie);
+       printf("\n");
+
+       quark = 0;
+       convert_mbstowcs("abc", 3, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abc",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abcdef", 6, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abcdef",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abcde", 5, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abcde",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abcdeg", 6, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abcdeg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abc%deg", 7, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abc%deg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abc10eg", 7, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abc10eg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abc%eg", 6, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abc%eg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abc%10eg", 8, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abc%10eg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("abcBeg", 6, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "abcBeg",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>[25;26H", 12, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>[25;26H",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>[25;2", 10, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>[25;2",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>[25L", 9, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>[25L",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>[25L<esc>[24L", 18, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>[25L<esc>[24L",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>[25;26L", 12, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>[25;26L",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>]2;WoofWoofh", 17, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>]2;WoofWoofh",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>]2;WoofWoofh<esc>]2;WoofWoofh", 34,
+                        buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>]2;WoofWoofh<esc>]2;WoofWoofh",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       quark = 0;
+       convert_mbstowcs("<esc>]2;WoofWoofhfoo", 20, buf, &buflen, sizeof(buf));
+       printf("`%s' = `%s'\n", "<esc>]2;WoofWoofhfoo",
+              _vte_trie_match(trie, buf, buflen,
+                              NULL, &consumed, &quark, &array));
+       printf("=> `%s' (%d)\n", g_quark_to_string(quark), (int)(consumed - buf));
+       if (array != NULL) {
+               dump_array(array);
+               _vte_matcher_free_params_array(NULL, array);
+               array = NULL;
+       }
+
+       _vte_trie_free(trie);
+
+       return 0;
+}
+#endif
+
+const struct _vte_matcher_class _vte_matcher_trie = {
+       (_vte_matcher_create_func)_vte_trie_new,
+       (_vte_matcher_add_func)_vte_trie_add,
+       (_vte_matcher_print_func)_vte_trie_print,
+       (_vte_matcher_match_func)_vte_trie_match,
+       (_vte_matcher_destroy_func)_vte_trie_free
+};
diff --git a/vte/src/trie.h b/vte/src/trie.h
new file mode 100644
index 0000000..3e23c2c
--- /dev/null
+++ b/vte/src/trie.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_trie_h_included
+#define vte_trie_h_included
+
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _vte_trie;
+
+/* Create a new trie structure. */
+struct _vte_trie *_vte_trie_new(void);
+
+/* Free a trie structure. */
+void _vte_trie_free(struct _vte_trie *trie);
+
+/* Add a string to the trie, along with its associated result and an optional
+ * Quark to store with it. */
+void _vte_trie_add(struct _vte_trie *trie,
+                  const char *pattern, size_t length,
+                  const char *result, GQuark quark);
+
+/* See if a given pattern of a given length is in the trie.  The result is
+ * returned both as the result of the function, and in the pointer res (if
+ * res is not NULL).  The associated quark is also stored in "quark".  If
+ * the string could be the initial portion of some sequence in the trie, the
+ * empty string is returned for the answer.  If no match is found, and the
+ * passed-in string can not be an initial substring of one of the strings in
+ * the trie, then NULL is returned. */
+const char *_vte_trie_match(struct _vte_trie *trie,
+                           const gunichar *pattern, size_t length,
+                           const char **res,
+                           const gunichar **consumed,
+                           GQuark *quark,
+                           GValueArray **array);
+
+/* Print the contents of the trie (mainly for diagnostic purposes). */
+void _vte_trie_print(struct _vte_trie *trie);
+
+extern const struct _vte_matcher_class _vte_matcher_trie;
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/unitable.CNS11643 b/vte/src/unitable.CNS11643
new file mode 100644
index 0000000..425e756
--- /dev/null
+++ b/vte/src/unitable.CNS11643
@@ -0,0 +1,17712 @@
+       /* generated file -- do not edit */
+       {0x12121, 0x3000},
+       {0x12122, 0xFF0C},
+       {0x12123, 0x3001},
+       {0x12124, 0x3002},
+       {0x12125, 0xFF0E},
+       {0x12126, 0x30FB},
+       {0x12127, 0xFF1B},
+       {0x12128, 0xFF1A},
+       {0x12129, 0xFF1F},
+       {0x1212A, 0xFF01},
+       {0x1212B, 0xFE30},
+       {0x1212C, 0x2026},
+       {0x1212D, 0x2025},
+       {0x1212E, 0xFE50},
+       {0x1212F, 0xFE51},
+       {0x12130, 0xFE52},
+       {0x12131, 0x00B7},
+       {0x12132, 0xFE54},
+       {0x12133, 0xFE55},
+       {0x12134, 0xFE56},
+       {0x12135, 0xFE57},
+       {0x12136, 0xFE31},
+       {0x12137, 0x2014},
+       {0x12138, 0xFE32},
+       {0x12139, 0x2013},
+       {0x1213E, 0xFF08},
+       {0x1213F, 0xFF09},
+       {0x12140, 0xFE35},
+       {0x12141, 0xFE36},
+       {0x12142, 0xFF5B},
+       {0x12143, 0xFF5D},
+       {0x12144, 0xFE37},
+       {0x12145, 0xFE38},
+       {0x12146, 0x3014},
+       {0x12147, 0x3015},
+       {0x12148, 0xFE39},
+       {0x12149, 0xFE3A},
+       {0x1214A, 0x3010},
+       {0x1214B, 0x3011},
+       {0x1214C, 0xFE3B},
+       {0x1214D, 0xFE3C},
+       {0x1214E, 0x300A},
+       {0x1214F, 0x300B},
+       {0x12150, 0xFE3D},
+       {0x12151, 0xFE3E},
+       {0x12152, 0x3008},
+       {0x12153, 0x3009},
+       {0x12154, 0xFE3F},
+       {0x12155, 0xFE40},
+       {0x12156, 0x300C},
+       {0x12157, 0x300D},
+       {0x12158, 0xFE41},
+       {0x12159, 0xFE42},
+       {0x1215A, 0x300E},
+       {0x1215B, 0x300F},
+       {0x1215C, 0xFE43},
+       {0x1215D, 0xFE44},
+       {0x1215E, 0xFE59},
+       {0x1215F, 0xFE5A},
+       {0x12160, 0xFE5B},
+       {0x12161, 0xFE5C},
+       {0x12162, 0xFE5D},
+       {0x12163, 0xFE5E},
+       {0x12164, 0x2018},
+       {0x12165, 0x2019},
+       {0x12166, 0x201C},
+       {0x12167, 0x201D},
+       {0x12168, 0x301D},
+       {0x12169, 0x301E},
+       {0x1216A, 0x2032},
+       {0x1216B, 0x2035},
+       {0x1216C, 0xFF03},
+       {0x1216D, 0xFF06},
+       {0x1216E, 0xFF0A},
+       {0x1216F, 0x203B},
+       {0x12170, 0x00A7},
+       {0x12171, 0x3003},
+       {0x12172, 0x25CB},
+       {0x12173, 0x25CF},
+       {0x12174, 0x25B3},
+       {0x12175, 0x25B2},
+       {0x12176, 0x25CE},
+       {0x12177, 0x2606},
+       {0x12178, 0x2605},
+       {0x12179, 0x25C7},
+       {0x1217A, 0x25C6},
+       {0x1217B, 0x25A1},
+       {0x1217C, 0x25A0},
+       {0x1217D, 0x25BD},
+       {0x1217E, 0x25BC},
+       {0x12221, 0x32A3},
+       {0x12222, 0x2105},
+       {0x12223, 0x203E},
+       {0x12225, 0xFF3F},
+       {0x12227, 0xFE49},
+       {0x12228, 0xFE4A},
+       {0x12229, 0xFE4D},
+       {0x1222A, 0xFE4E},
+       {0x1222B, 0xFE4B},
+       {0x1222C, 0xFE4C},
+       {0x1222D, 0xFE5F},
+       {0x1222E, 0xFE60},
+       {0x1222F, 0xFE61},
+       {0x12230, 0xFF0B},
+       {0x12231, 0xFF0D},
+       {0x12232, 0x00D7},
+       {0x12233, 0x00F7},
+       {0x12234, 0x00B1},
+       {0x12235, 0x221A},
+       {0x12236, 0xFF1C},
+       {0x12237, 0xFF1E},
+       {0x12238, 0xFF1D},
+       {0x12239, 0x2266},
+       {0x1223A, 0x2267},
+       {0x1223B, 0x2260},
+       {0x1223C, 0x221E},
+       {0x1223D, 0x2252},
+       {0x1223E, 0x2261},
+       {0x1223F, 0xFE62},
+       {0x12240, 0xFE63},
+       {0x12241, 0xFE64},
+       {0x12242, 0xFE66},
+       {0x12243, 0xFE65},
+       {0x12244, 0x223C},
+       {0x12245, 0x2229},
+       {0x12246, 0x222A},
+       {0x12247, 0x22A5},
+       {0x12248, 0x2220},
+       {0x12249, 0x221F},
+       {0x1224A, 0x22BF},
+       {0x1224B, 0x33D2},
+       {0x1224C, 0x33D1},
+       {0x1224D, 0x222B},
+       {0x1224E, 0x222E},
+       {0x1224F, 0x2235},
+       {0x12250, 0x2234},
+       {0x12251, 0x2640},
+       {0x12252, 0x2642},
+       {0x12253, 0x2641},
+       {0x12254, 0x2609},
+       {0x12255, 0x2191},
+       {0x12256, 0x2193},
+       {0x12257, 0x2192},
+       {0x12258, 0x2190},
+       {0x12259, 0x2196},
+       {0x1225A, 0x2197},
+       {0x1225B, 0x2199},
+       {0x1225C, 0x2198},
+       {0x1225D, 0x2016},
+       {0x1225E, 0xFF5C},
+       {0x1225F, 0xFF0F},
+       {0x12260, 0xFF3C},
+       {0x12261, 0x2215},
+       {0x12262, 0xFE68},
+       {0x12263, 0xFF04},
+       {0x12264, 0xFFE5},
+       {0x12265, 0x3012},
+       {0x12266, 0xFFE0},
+       {0x12267, 0xFFE1},
+       {0x12268, 0xFF05},
+       {0x12269, 0xFF20},
+       {0x1226A, 0x2103},
+       {0x1226B, 0x2109},
+       {0x1226C, 0xFE69},
+       {0x1226D, 0xFE6A},
+       {0x1226E, 0xFE6B},
+       {0x1226F, 0x33D5},
+       {0x12270, 0x339C},
+       {0x12271, 0x339D},
+       {0x12272, 0x339E},
+       {0x12273, 0x33CE},
+       {0x12274, 0x33A1},
+       {0x12275, 0x338E},
+       {0x12276, 0x338F},
+       {0x12277, 0x33C4},
+       {0x12278, 0x00B0},
+       {0x12279, 0x5159},
+       {0x1227A, 0x515B},
+       {0x1227B, 0x515E},
+       {0x1227C, 0x515D},
+       {0x1227D, 0x5161},
+       {0x1227E, 0x5163},
+       {0x12321, 0x55E7},
+       {0x12322, 0x74E9},
+       {0x12323, 0x7CCE},
+       {0x12324, 0x2581},
+       {0x12325, 0x2582},
+       {0x12326, 0x2583},
+       {0x12327, 0x2584},
+       {0x12328, 0x2585},
+       {0x12329, 0x2586},
+       {0x1232A, 0x2587},
+       {0x1232B, 0x2588},
+       {0x1232C, 0x258F},
+       {0x1232D, 0x258E},
+       {0x1232E, 0x258D},
+       {0x1232F, 0x258C},
+       {0x12330, 0x258B},
+       {0x12331, 0x258A},
+       {0x12332, 0x2589},
+       {0x12333, 0x253C},
+       {0x12334, 0x2534},
+       {0x12335, 0x252C},
+       {0x12336, 0x2524},
+       {0x12337, 0x251C},
+       {0x12338, 0x2594},
+       {0x12339, 0x2500},
+       {0x1233A, 0x2502},
+       {0x1233B, 0x2595},
+       {0x1233C, 0x250C},
+       {0x1233D, 0x2510},
+       {0x1233E, 0x2514},
+       {0x1233F, 0x2518},
+       {0x12340, 0x256D},
+       {0x12341, 0x256E},
+       {0x12342, 0x2570},
+       {0x12343, 0x256F},
+       {0x12344, 0x2550},
+       {0x12345, 0x255E},
+       {0x12346, 0x256A},
+       {0x12347, 0x2561},
+       {0x12348, 0x25E2},
+       {0x12349, 0x25E3},
+       {0x1234A, 0x25E5},
+       {0x1234B, 0x25E4},
+       {0x1234C, 0x2571},
+       {0x1234D, 0x2572},
+       {0x1234E, 0x2573},
+       {0x12421, 0xFF10},
+       {0x12422, 0xFF11},
+       {0x12423, 0xFF12},
+       {0x12424, 0xFF13},
+       {0x12425, 0xFF14},
+       {0x12426, 0xFF15},
+       {0x12427, 0xFF16},
+       {0x12428, 0xFF17},
+       {0x12429, 0xFF18},
+       {0x1242A, 0xFF19},
+       {0x1242B, 0x2160},
+       {0x1242C, 0x2161},
+       {0x1242D, 0x2162},
+       {0x1242E, 0x2163},
+       {0x1242F, 0x2164},
+       {0x12430, 0x2165},
+       {0x12431, 0x2166},
+       {0x12432, 0x2167},
+       {0x12433, 0x2168},
+       {0x12434, 0x2169},
+       {0x12435, 0x3021},
+       {0x12436, 0x3022},
+       {0x12437, 0x3023},
+       {0x12438, 0x3024},
+       {0x12439, 0x3025},
+       {0x1243A, 0x3026},
+       {0x1243B, 0x3027},
+       {0x1243C, 0x3028},
+       {0x1243D, 0x3029},
+       {0x1243F, 0x5344},
+       {0x12441, 0xFF21},
+       {0x12442, 0xFF22},
+       {0x12443, 0xFF23},
+       {0x12444, 0xFF24},
+       {0x12445, 0xFF25},
+       {0x12446, 0xFF26},
+       {0x12447, 0xFF27},
+       {0x12448, 0xFF28},
+       {0x12449, 0xFF29},
+       {0x1244A, 0xFF2A},
+       {0x1244B, 0xFF2B},
+       {0x1244C, 0xFF2C},
+       {0x1244D, 0xFF2D},
+       {0x1244E, 0xFF2E},
+       {0x1244F, 0xFF2F},
+       {0x12450, 0xFF30},
+       {0x12451, 0xFF31},
+       {0x12452, 0xFF32},
+       {0x12453, 0xFF33},
+       {0x12454, 0xFF34},
+       {0x12455, 0xFF35},
+       {0x12456, 0xFF36},
+       {0x12457, 0xFF37},
+       {0x12458, 0xFF38},
+       {0x12459, 0xFF39},
+       {0x1245A, 0xFF3A},
+       {0x1245B, 0xFF41},
+       {0x1245C, 0xFF42},
+       {0x1245D, 0xFF43},
+       {0x1245E, 0xFF44},
+       {0x1245F, 0xFF45},
+       {0x12460, 0xFF46},
+       {0x12461, 0xFF47},
+       {0x12462, 0xFF48},
+       {0x12463, 0xFF49},
+       {0x12464, 0xFF4A},
+       {0x12465, 0xFF4B},
+       {0x12466, 0xFF4C},
+       {0x12467, 0xFF4D},
+       {0x12468, 0xFF4E},
+       {0x12469, 0xFF4F},
+       {0x1246A, 0xFF50},
+       {0x1246B, 0xFF51},
+       {0x1246C, 0xFF52},
+       {0x1246D, 0xFF53},
+       {0x1246E, 0xFF54},
+       {0x1246F, 0xFF55},
+       {0x12470, 0xFF56},
+       {0x12471, 0xFF57},
+       {0x12472, 0xFF58},
+       {0x12473, 0xFF59},
+       {0x12474, 0xFF5A},
+       {0x12475, 0x0391},
+       {0x12476, 0x0392},
+       {0x12477, 0x0393},
+       {0x12478, 0x0394},
+       {0x12479, 0x0395},
+       {0x1247A, 0x0396},
+       {0x1247B, 0x0397},
+       {0x1247C, 0x0398},
+       {0x1247D, 0x0399},
+       {0x1247E, 0x039A},
+       {0x12521, 0x039B},
+       {0x12522, 0x039C},
+       {0x12523, 0x039D},
+       {0x12524, 0x039E},
+       {0x12525, 0x039F},
+       {0x12526, 0x03A0},
+       {0x12527, 0x03A1},
+       {0x12528, 0x03A3},
+       {0x12529, 0x03A4},
+       {0x1252A, 0x03A5},
+       {0x1252B, 0x03A6},
+       {0x1252C, 0x03A7},
+       {0x1252D, 0x03A8},
+       {0x1252E, 0x03A9},
+       {0x1252F, 0x03B1},
+       {0x12530, 0x03B2},
+       {0x12531, 0x03B3},
+       {0x12532, 0x03B4},
+       {0x12533, 0x03B5},
+       {0x12534, 0x03B6},
+       {0x12535, 0x03B7},
+       {0x12536, 0x03B8},
+       {0x12537, 0x03B9},
+       {0x12538, 0x03BA},
+       {0x12539, 0x03BB},
+       {0x1253A, 0x03BC},
+       {0x1253B, 0x03BD},
+       {0x1253C, 0x03BE},
+       {0x1253D, 0x03BF},
+       {0x1253E, 0x03C0},
+       {0x1253F, 0x03C1},
+       {0x12540, 0x03C3},
+       {0x12541, 0x03C4},
+       {0x12542, 0x03C5},
+       {0x12543, 0x03C6},
+       {0x12544, 0x03C7},
+       {0x12545, 0x03C8},
+       {0x12546, 0x03C9},
+       {0x12547, 0x3105},
+       {0x12548, 0x3106},
+       {0x12549, 0x3107},
+       {0x1254A, 0x3108},
+       {0x1254B, 0x3109},
+       {0x1254C, 0x310A},
+       {0x1254D, 0x310B},
+       {0x1254E, 0x310C},
+       {0x1254F, 0x310D},
+       {0x12550, 0x310E},
+       {0x12551, 0x310F},
+       {0x12552, 0x3110},
+       {0x12553, 0x3111},
+       {0x12554, 0x3112},
+       {0x12555, 0x3113},
+       {0x12556, 0x3114},
+       {0x12557, 0x3115},
+       {0x12558, 0x3116},
+       {0x12559, 0x3117},
+       {0x1255A, 0x3118},
+       {0x1255B, 0x3119},
+       {0x1255C, 0x311A},
+       {0x1255D, 0x311B},
+       {0x1255E, 0x311C},
+       {0x1255F, 0x311D},
+       {0x12560, 0x311E},
+       {0x12561, 0x311F},
+       {0x12562, 0x3120},
+       {0x12563, 0x3121},
+       {0x12564, 0x3122},
+       {0x12565, 0x3123},
+       {0x12566, 0x3124},
+       {0x12567, 0x3125},
+       {0x12568, 0x3126},
+       {0x12569, 0x3127},
+       {0x1256A, 0x3128},
+       {0x1256B, 0x3129},
+       {0x1256C, 0x02D9},
+       {0x1256D, 0x02C9},
+       {0x1256E, 0x02CA},
+       {0x1256F, 0x02C7},
+       {0x12570, 0x02CB},
+       {0x12621, 0x2460},
+       {0x12622, 0x2461},
+       {0x12623, 0x2462},
+       {0x12624, 0x2463},
+       {0x12625, 0x2464},
+       {0x12626, 0x2465},
+       {0x12627, 0x2466},
+       {0x12628, 0x2467},
+       {0x12629, 0x2468},
+       {0x1262A, 0x2469},
+       {0x1262B, 0x2474},
+       {0x1262C, 0x2475},
+       {0x1262D, 0x2476},
+       {0x1262E, 0x2477},
+       {0x1262F, 0x2478},
+       {0x12630, 0x2479},
+       {0x12631, 0x247A},
+       {0x12632, 0x247B},
+       {0x12633, 0x247C},
+       {0x12634, 0x247D},
+       {0x12635, 0x2170},
+       {0x12636, 0x2171},
+       {0x12637, 0x2172},
+       {0x12638, 0x2173},
+       {0x12639, 0x2174},
+       {0x1263A, 0x2175},
+       {0x1263B, 0x2176},
+       {0x1263C, 0x2177},
+       {0x1263D, 0x2178},
+       {0x1263E, 0x2179},
+       {0x14221, 0x2400},
+       {0x14222, 0x2401},
+       {0x14223, 0x2402},
+       {0x14224, 0x2403},
+       {0x14225, 0x2404},
+       {0x14226, 0x2405},
+       {0x14227, 0x2406},
+       {0x14228, 0x2407},
+       {0x14229, 0x2408},
+       {0x1422A, 0x2409},
+       {0x1422B, 0x240A},
+       {0x1422C, 0x240B},
+       {0x1422D, 0x240C},
+       {0x1422E, 0x240D},
+       {0x1422F, 0x240E},
+       {0x14230, 0x240F},
+       {0x14231, 0x2410},
+       {0x14232, 0x2411},
+       {0x14233, 0x2412},
+       {0x14234, 0x2413},
+       {0x14235, 0x2414},
+       {0x14236, 0x2415},
+       {0x14237, 0x2416},
+       {0x14238, 0x2417},
+       {0x14239, 0x2418},
+       {0x1423A, 0x2419},
+       {0x1423B, 0x241A},
+       {0x1423C, 0x241B},
+       {0x1423D, 0x241C},
+       {0x1423E, 0x241D},
+       {0x1423F, 0x241E},
+       {0x14240, 0x241F},
+       {0x14241, 0x2421},
+       {0x14421, 0x4E00},
+       {0x14422, 0x4E59},
+       {0x14423, 0x4E01},
+       {0x14424, 0x4E03},
+       {0x14425, 0x4E43},
+       {0x14426, 0x4E5D},
+       {0x14427, 0x4E86},
+       {0x14428, 0x4E8C},
+       {0x14429, 0x4EBA},
+       {0x1442A, 0x513F},
+       {0x1442B, 0x5165},
+       {0x1442C, 0x516B},
+       {0x1442D, 0x51E0},
+       {0x1442E, 0x5200},
+       {0x1442F, 0x5201},
+       {0x14430, 0x529B},
+       {0x14431, 0x5315},
+       {0x14432, 0x5341},
+       {0x14433, 0x535C},
+       {0x14434, 0x53C8},
+       {0x14435, 0x4E09},
+       {0x14436, 0x4E0B},
+       {0x14437, 0x4E08},
+       {0x14438, 0x4E0A},
+       {0x14439, 0x4E2B},
+       {0x1443A, 0x4E38},
+       {0x1443B, 0x51E1},
+       {0x1443C, 0x4E45},
+       {0x1443D, 0x4E48},
+       {0x1443E, 0x4E5F},
+       {0x1443F, 0x4E5E},
+       {0x14440, 0x4E8E},
+       {0x14441, 0x4EA1},
+       {0x14442, 0x5140},
+       {0x14443, 0x5203},
+       {0x14444, 0x52FA},
+       {0x14445, 0x5343},
+       {0x14446, 0x53C9},
+       {0x14447, 0x53E3},
+       {0x14448, 0x571F},
+       {0x14449, 0x58EB},
+       {0x1444A, 0x5915},
+       {0x1444B, 0x5927},
+       {0x1444C, 0x5973},
+       {0x1444D, 0x5B50},
+       {0x1444E, 0x5B51},
+       {0x1444F, 0x5B53},
+       {0x14450, 0x5BF8},
+       {0x14451, 0x5C0F},
+       {0x14452, 0x5C22},
+       {0x14453, 0x5C38},
+       {0x14454, 0x5C71},
+       {0x14455, 0x5DDD},
+       {0x14456, 0x5DE5},
+       {0x14457, 0x5DF1},
+       {0x14458, 0x5DF2},
+       {0x14459, 0x5DF3},
+       {0x1445A, 0x5DFE},
+       {0x1445B, 0x5E72},
+       {0x1445C, 0x5EFE},
+       {0x1445D, 0x5F0B},
+       {0x1445E, 0x5F13},
+       {0x1445F, 0x624D},
+       {0x14460, 0x4E11},
+       {0x14461, 0x4E10},
+       {0x14462, 0x4E0D},
+       {0x14463, 0x4E2D},
+       {0x14464, 0x4E30},
+       {0x14465, 0x4E39},
+       {0x14466, 0x4E4B},
+       {0x14467, 0x5C39},
+       {0x14468, 0x4E88},
+       {0x14469, 0x4E91},
+       {0x1446A, 0x4E95},
+       {0x1446B, 0x4E92},
+       {0x1446C, 0x4E94},
+       {0x1446D, 0x4EA2},
+       {0x1446E, 0x4EC1},
+       {0x1446F, 0x4EC0},
+       {0x14470, 0x4EC3},
+       {0x14471, 0x4EC6},
+       {0x14472, 0x4EC7},
+       {0x14473, 0x4ECD},
+       {0x14474, 0x4ECA},
+       {0x14475, 0x4ECB},
+       {0x14476, 0x4EC4},
+       {0x14477, 0x5143},
+       {0x14478, 0x5141},
+       {0x14479, 0x5167},
+       {0x1447A, 0x516D},
+       {0x1447B, 0x516E},
+       {0x1447C, 0x516C},
+       {0x1447D, 0x5197},
+       {0x1447E, 0x51F6},
+       {0x14521, 0x5206},
+       {0x14522, 0x5207},
+       {0x14523, 0x5208},
+       {0x14524, 0x52FB},
+       {0x14525, 0x52FE},
+       {0x14526, 0x52FF},
+       {0x14527, 0x5316},
+       {0x14528, 0x5339},
+       {0x14529, 0x5348},
+       {0x1452A, 0x5347},
+       {0x1452B, 0x5345},
+       {0x1452C, 0x535E},
+       {0x1452D, 0x5384},
+       {0x1452E, 0x53CB},
+       {0x1452F, 0x53CA},
+       {0x14530, 0x53CD},
+       {0x14531, 0x58EC},
+       {0x14532, 0x5929},
+       {0x14533, 0x592B},
+       {0x14534, 0x592A},
+       {0x14535, 0x592D},
+       {0x14536, 0x5B54},
+       {0x14537, 0x5C11},
+       {0x14538, 0x5C24},
+       {0x14539, 0x5C3A},
+       {0x1453A, 0x5C6F},
+       {0x1453B, 0x5DF4},
+       {0x1453C, 0x5E7B},
+       {0x1453D, 0x5EFF},
+       {0x1453E, 0x5F14},
+       {0x1453F, 0x5F15},
+       {0x14540, 0x5FC3},
+       {0x14541, 0x6208},
+       {0x14542, 0x6236},
+       {0x14543, 0x624B},
+       {0x14544, 0x624E},
+       {0x14545, 0x652F},
+       {0x14546, 0x6587},
+       {0x14547, 0x6597},
+       {0x14548, 0x65A4},
+       {0x14549, 0x65B9},
+       {0x1454A, 0x65E5},
+       {0x1454B, 0x66F0},
+       {0x1454C, 0x6708},
+       {0x1454D, 0x6728},
+       {0x1454E, 0x6B20},
+       {0x1454F, 0x6B62},
+       {0x14550, 0x6B79},
+       {0x14551, 0x6BCB},
+       {0x14552, 0x6BD4},
+       {0x14553, 0x6BDB},
+       {0x14554, 0x6C0F},
+       {0x14555, 0x6C34},
+       {0x14556, 0x706B},
+       {0x14557, 0x722A},
+       {0x14558, 0x7236},
+       {0x14559, 0x723B},
+       {0x1455A, 0x7247},
+       {0x1455B, 0x7259},
+       {0x1455C, 0x725B},
+       {0x1455D, 0x72AC},
+       {0x1455E, 0x738B},
+       {0x1455F, 0x4E19},
+       {0x14560, 0x4E16},
+       {0x14561, 0x4E15},
+       {0x14562, 0x4E14},
+       {0x14563, 0x4E18},
+       {0x14564, 0x4E3B},
+       {0x14565, 0x4E4D},
+       {0x14566, 0x4E4F},
+       {0x14567, 0x4E4E},
+       {0x14568, 0x4EE5},
+       {0x14569, 0x4ED8},
+       {0x1456A, 0x4ED4},
+       {0x1456B, 0x4ED5},
+       {0x1456C, 0x4ED6},
+       {0x1456D, 0x4ED7},
+       {0x1456E, 0x4EE3},
+       {0x1456F, 0x4EE4},
+       {0x14570, 0x4ED9},
+       {0x14571, 0x4EDE},
+       {0x14572, 0x5145},
+       {0x14573, 0x5144},
+       {0x14574, 0x5189},
+       {0x14575, 0x518A},
+       {0x14576, 0x51AC},
+       {0x14577, 0x51F9},
+       {0x14578, 0x51FA},
+       {0x14579, 0x51F8},
+       {0x1457A, 0x520A},
+       {0x1457B, 0x52A0},
+       {0x1457C, 0x529F},
+       {0x1457D, 0x5305},
+       {0x1457E, 0x5306},
+       {0x14621, 0x5317},
+       {0x14622, 0x531D},
+       {0x14623, 0x4EDF},
+       {0x14624, 0x534A},
+       {0x14625, 0x5349},
+       {0x14626, 0x5361},
+       {0x14627, 0x5360},
+       {0x14628, 0x536F},
+       {0x14629, 0x536E},
+       {0x1462A, 0x53BB},
+       {0x1462B, 0x53EF},
+       {0x1462C, 0x53E4},
+       {0x1462D, 0x53F3},
+       {0x1462E, 0x53EC},
+       {0x1462F, 0x53EE},
+       {0x14630, 0x53E9},
+       {0x14631, 0x53E8},
+       {0x14632, 0x53FC},
+       {0x14633, 0x53F8},
+       {0x14634, 0x53F5},
+       {0x14635, 0x53EB},
+       {0x14636, 0x53E6},
+       {0x14637, 0x53EA},
+       {0x14638, 0x53F2},
+       {0x14639, 0x53F1},
+       {0x1463A, 0x53F0},
+       {0x1463B, 0x53E5},
+       {0x1463C, 0x53ED},
+       {0x1463D, 0x53FB},
+       {0x1463E, 0x56DB},
+       {0x1463F, 0x56DA},
+       {0x14640, 0x5916},
+       {0x14641, 0x592E},
+       {0x14642, 0x5931},
+       {0x14643, 0x5974},
+       {0x14644, 0x5976},
+       {0x14645, 0x5B55},
+       {0x14646, 0x5B83},
+       {0x14647, 0x5C3C},
+       {0x14648, 0x5DE8},
+       {0x14649, 0x5DE7},
+       {0x1464A, 0x5DE6},
+       {0x1464B, 0x5E02},
+       {0x1464C, 0x5E03},
+       {0x1464D, 0x5E73},
+       {0x1464E, 0x5E7C},
+       {0x1464F, 0x5F01},
+       {0x14650, 0x5F18},
+       {0x14651, 0x5F17},
+       {0x14652, 0x5FC5},
+       {0x14653, 0x620A},
+       {0x14654, 0x6253},
+       {0x14655, 0x6254},
+       {0x14656, 0x6252},
+       {0x14657, 0x6251},
+       {0x14658, 0x65A5},
+       {0x14659, 0x65E6},
+       {0x1465A, 0x672E},
+       {0x1465B, 0x672C},
+       {0x1465C, 0x672A},
+       {0x1465D, 0x672B},
+       {0x1465E, 0x672D},
+       {0x1465F, 0x6B63},
+       {0x14660, 0x6BCD},
+       {0x14661, 0x6C11},
+       {0x14662, 0x6C10},
+       {0x14663, 0x6C38},
+       {0x14664, 0x6C41},
+       {0x14665, 0x6C40},
+       {0x14666, 0x6C3E},
+       {0x14667, 0x72AF},
+       {0x14668, 0x7384},
+       {0x14669, 0x7389},
+       {0x1466A, 0x74DC},
+       {0x1466B, 0x74E6},
+       {0x1466C, 0x7518},
+       {0x1466D, 0x751F},
+       {0x1466E, 0x7528},
+       {0x1466F, 0x7529},
+       {0x14670, 0x7530},
+       {0x14671, 0x7531},
+       {0x14672, 0x7532},
+       {0x14673, 0x7533},
+       {0x14674, 0x758B},
+       {0x14675, 0x767D},
+       {0x14676, 0x76AE},
+       {0x14677, 0x76BF},
+       {0x14678, 0x76EE},
+       {0x14679, 0x77DB},
+       {0x1467A, 0x77E2},
+       {0x1467B, 0x77F3},
+       {0x1467C, 0x793A},
+       {0x1467D, 0x79BE},
+       {0x1467E, 0x7A74},
+       {0x14721, 0x7ACB},
+       {0x14722, 0x4E1E},
+       {0x14723, 0x4E1F},
+       {0x14724, 0x4E52},
+       {0x14725, 0x4E53},
+       {0x14726, 0x4E69},
+       {0x14727, 0x4E99},
+       {0x14728, 0x4EA4},
+       {0x14729, 0x4EA6},
+       {0x1472A, 0x4EA5},
+       {0x1472B, 0x4EFF},
+       {0x1472C, 0x4F09},
+       {0x1472D, 0x4F19},
+       {0x1472E, 0x4F0A},
+       {0x1472F, 0x4F15},
+       {0x14730, 0x4F0D},
+       {0x14731, 0x4F10},
+       {0x14732, 0x4F11},
+       {0x14733, 0x4F0F},
+       {0x14734, 0x4EF2},
+       {0x14735, 0x4EF6},
+       {0x14736, 0x4EFB},
+       {0x14737, 0x4EF0},
+       {0x14738, 0x4EF3},
+       {0x14739, 0x4EFD},
+       {0x1473A, 0x4F01},
+       {0x1473B, 0x4F0B},
+       {0x1473C, 0x5149},
+       {0x1473D, 0x5147},
+       {0x1473E, 0x5146},
+       {0x1473F, 0x5148},
+       {0x14740, 0x5168},
+       {0x14741, 0x5171},
+       {0x14742, 0x518D},
+       {0x14743, 0x51B0},
+       {0x14744, 0x5217},
+       {0x14745, 0x5211},
+       {0x14746, 0x5212},
+       {0x14747, 0x520E},
+       {0x14748, 0x5216},
+       {0x14749, 0x52A3},
+       {0x1474A, 0x5308},
+       {0x1474B, 0x5321},
+       {0x1474C, 0x5320},
+       {0x1474D, 0x5370},
+       {0x1474E, 0x5371},
+       {0x1474F, 0x5409},
+       {0x14750, 0x540F},
+       {0x14751, 0x540C},
+       {0x14752, 0x540A},
+       {0x14753, 0x5410},
+       {0x14754, 0x5401},
+       {0x14755, 0x540B},
+       {0x14756, 0x5404},
+       {0x14757, 0x5411},
+       {0x14758, 0x540D},
+       {0x14759, 0x5408},
+       {0x1475A, 0x5403},
+       {0x1475B, 0x540E},
+       {0x1475C, 0x5406},
+       {0x1475D, 0x5412},
+       {0x1475E, 0x56E0},
+       {0x1475F, 0x56DE},
+       {0x14760, 0x56DD},
+       {0x14761, 0x5733},
+       {0x14762, 0x5730},
+       {0x14763, 0x5728},
+       {0x14764, 0x572D},
+       {0x14765, 0x572C},
+       {0x14766, 0x572F},
+       {0x14767, 0x5729},
+       {0x14768, 0x5919},
+       {0x14769, 0x591A},
+       {0x1476A, 0x5937},
+       {0x1476B, 0x5938},
+       {0x1476C, 0x5984},
+       {0x1476D, 0x5978},
+       {0x1476E, 0x5983},
+       {0x1476F, 0x597D},
+       {0x14770, 0x5979},
+       {0x14771, 0x5982},
+       {0x14772, 0x5981},
+       {0x14773, 0x5B57},
+       {0x14774, 0x5B58},
+       {0x14775, 0x5B87},
+       {0x14776, 0x5B88},
+       {0x14777, 0x5B85},
+       {0x14778, 0x5B89},
+       {0x14779, 0x5BFA},
+       {0x1477A, 0x5C16},
+       {0x1477B, 0x5C79},
+       {0x1477C, 0x5DDE},
+       {0x1477D, 0x5E06},
+       {0x1477E, 0x5E76},
+       {0x14821, 0x5E74},
+       {0x14822, 0x5F0F},
+       {0x14823, 0x5F1B},
+       {0x14824, 0x5FD9},
+       {0x14825, 0x5FD6},
+       {0x14826, 0x620E},
+       {0x14827, 0x620C},
+       {0x14828, 0x620D},
+       {0x14829, 0x6210},
+       {0x1482A, 0x6263},
+       {0x1482B, 0x625B},
+       {0x1482C, 0x6258},
+       {0x1482D, 0x6536},
+       {0x1482E, 0x65E9},
+       {0x1482F, 0x65E8},
+       {0x14830, 0x65EC},
+       {0x14831, 0x65ED},
+       {0x14832, 0x66F2},
+       {0x14833, 0x66F3},
+       {0x14834, 0x6709},
+       {0x14835, 0x673D},
+       {0x14836, 0x6734},
+       {0x14837, 0x6731},
+       {0x14838, 0x6735},
+       {0x14839, 0x6B21},
+       {0x1483A, 0x6B64},
+       {0x1483B, 0x6B7B},
+       {0x1483C, 0x6C16},
+       {0x1483D, 0x6C5D},
+       {0x1483E, 0x6C57},
+       {0x1483F, 0x6C59},
+       {0x14840, 0x6C5F},
+       {0x14841, 0x6C60},
+       {0x14842, 0x6C50},
+       {0x14843, 0x6C55},
+       {0x14844, 0x6C61},
+       {0x14845, 0x6C5B},
+       {0x14846, 0x6C4D},
+       {0x14847, 0x6C4E},
+       {0x14848, 0x7070},
+       {0x14849, 0x725F},
+       {0x1484A, 0x725D},
+       {0x1484B, 0x767E},
+       {0x1484C, 0x7AF9},
+       {0x1484D, 0x7C73},
+       {0x1484E, 0x7CF8},
+       {0x1484F, 0x7F36},
+       {0x14850, 0x7F8A},
+       {0x14851, 0x7FBD},
+       {0x14852, 0x8001},
+       {0x14853, 0x8003},
+       {0x14854, 0x800C},
+       {0x14855, 0x8012},
+       {0x14856, 0x8033},
+       {0x14857, 0x807F},
+       {0x14858, 0x8089},
+       {0x14859, 0x808B},
+       {0x1485A, 0x808C},
+       {0x1485B, 0x81E3},
+       {0x1485C, 0x81EA},
+       {0x1485D, 0x81F3},
+       {0x1485E, 0x81FC},
+       {0x1485F, 0x820C},
+       {0x14860, 0x821B},
+       {0x14861, 0x821F},
+       {0x14862, 0x826E},
+       {0x14863, 0x8272},
+       {0x14864, 0x827E},
+       {0x14865, 0x866B},
+       {0x14866, 0x8840},
+       {0x14867, 0x884C},
+       {0x14868, 0x8863},
+       {0x14869, 0x897F},
+       {0x1486A, 0x9621},
+       {0x1486B, 0x4E32},
+       {0x1486C, 0x4EA8},
+       {0x1486D, 0x4F4D},
+       {0x1486E, 0x4F4F},
+       {0x1486F, 0x4F47},
+       {0x14870, 0x4F57},
+       {0x14871, 0x4F5E},
+       {0x14872, 0x4F34},
+       {0x14873, 0x4F5B},
+       {0x14874, 0x4F55},
+       {0x14875, 0x4F30},
+       {0x14876, 0x4F50},
+       {0x14877, 0x4F51},
+       {0x14878, 0x4F3D},
+       {0x14879, 0x4F3A},
+       {0x1487A, 0x4F38},
+       {0x1487B, 0x4F43},
+       {0x1487C, 0x4F54},
+       {0x1487D, 0x4F3C},
+       {0x1487E, 0x4F46},
+       {0x14921, 0x4F63},
+       {0x14922, 0x4F5C},
+       {0x14923, 0x4F60},
+       {0x14924, 0x4F2F},
+       {0x14925, 0x4F4E},
+       {0x14926, 0x4F36},
+       {0x14927, 0x4F59},
+       {0x14928, 0x4F5D},
+       {0x14929, 0x4F48},
+       {0x1492A, 0x4F5A},
+       {0x1492B, 0x514C},
+       {0x1492C, 0x514B},
+       {0x1492D, 0x514D},
+       {0x1492E, 0x5175},
+       {0x1492F, 0x51B6},
+       {0x14930, 0x51B7},
+       {0x14931, 0x5225},
+       {0x14932, 0x5224},
+       {0x14933, 0x5229},
+       {0x14934, 0x522A},
+       {0x14935, 0x5228},
+       {0x14936, 0x52AB},
+       {0x14937, 0x52A9},
+       {0x14938, 0x52AA},
+       {0x14939, 0x52AC},
+       {0x1493A, 0x5323},
+       {0x1493B, 0x5373},
+       {0x1493C, 0x5375},
+       {0x1493D, 0x541D},
+       {0x1493E, 0x542D},
+       {0x1493F, 0x541E},
+       {0x14940, 0x543E},
+       {0x14941, 0x5426},
+       {0x14942, 0x544E},
+       {0x14943, 0x5427},
+       {0x14944, 0x5446},
+       {0x14945, 0x5443},
+       {0x14946, 0x5433},
+       {0x14947, 0x5448},
+       {0x14948, 0x5442},
+       {0x14949, 0x541B},
+       {0x1494A, 0x5429},
+       {0x1494B, 0x544A},
+       {0x1494C, 0x5439},
+       {0x1494D, 0x543B},
+       {0x1494E, 0x5438},
+       {0x1494F, 0x542E},
+       {0x14950, 0x5435},
+       {0x14951, 0x5436},
+       {0x14952, 0x5420},
+       {0x14953, 0x543C},
+       {0x14954, 0x5440},
+       {0x14955, 0x5431},
+       {0x14956, 0x542B},
+       {0x14957, 0x541F},
+       {0x14958, 0x542C},
+       {0x14959, 0x56EA},
+       {0x1495A, 0x56F0},
+       {0x1495B, 0x56E4},
+       {0x1495C, 0x56EB},
+       {0x1495D, 0x574A},
+       {0x1495E, 0x5751},
+       {0x1495F, 0x5740},
+       {0x14960, 0x574D},
+       {0x14961, 0x5747},
+       {0x14962, 0x574E},
+       {0x14963, 0x573E},
+       {0x14964, 0x5750},
+       {0x14965, 0x574F},
+       {0x14966, 0x573B},
+       {0x14967, 0x58EF},
+       {0x14968, 0x593E},
+       {0x14969, 0x599D},
+       {0x1496A, 0x5992},
+       {0x1496B, 0x59A8},
+       {0x1496C, 0x599E},
+       {0x1496D, 0x59A3},
+       {0x1496E, 0x5999},
+       {0x1496F, 0x5996},
+       {0x14970, 0x598D},
+       {0x14971, 0x59A4},
+       {0x14972, 0x5993},
+       {0x14973, 0x598A},
+       {0x14974, 0x59A5},
+       {0x14975, 0x5B5D},
+       {0x14976, 0x5B5C},
+       {0x14977, 0x5B5A},
+       {0x14978, 0x5B5B},
+       {0x14979, 0x5B8C},
+       {0x1497A, 0x5B8B},
+       {0x1497B, 0x5B8F},
+       {0x1497C, 0x5C2C},
+       {0x1497D, 0x5C40},
+       {0x1497E, 0x5C41},
+       {0x14A21, 0x5C3F},
+       {0x14A22, 0x5C3E},
+       {0x14A23, 0x5C90},
+       {0x14A24, 0x5C91},
+       {0x14A25, 0x5C94},
+       {0x14A26, 0x5C8C},
+       {0x14A27, 0x5DEB},
+       {0x14A28, 0x5E0C},
+       {0x14A29, 0x5E8F},
+       {0x14A2A, 0x5E87},
+       {0x14A2B, 0x5E8A},
+       {0x14A2C, 0x5EF7},
+       {0x14A2D, 0x5F04},
+       {0x14A2E, 0x5F1F},
+       {0x14A2F, 0x5F64},
+       {0x14A30, 0x5F62},
+       {0x14A31, 0x5F77},
+       {0x14A32, 0x5F79},
+       {0x14A33, 0x5FD8},
+       {0x14A34, 0x5FCC},
+       {0x14A35, 0x5FD7},
+       {0x14A36, 0x5FCD},
+       {0x14A37, 0x5FF1},
+       {0x14A38, 0x5FEB},
+       {0x14A39, 0x5FF8},
+       {0x14A3A, 0x5FEA},
+       {0x14A3B, 0x6212},
+       {0x14A3C, 0x6211},
+       {0x14A3D, 0x6284},
+       {0x14A3E, 0x6297},
+       {0x14A3F, 0x6296},
+       {0x14A40, 0x6280},
+       {0x14A41, 0x6276},
+       {0x14A42, 0x6289},
+       {0x14A43, 0x626D},
+       {0x14A44, 0x628A},
+       {0x14A45, 0x627C},
+       {0x14A46, 0x627E},
+       {0x14A47, 0x6279},
+       {0x14A48, 0x6273},
+       {0x14A49, 0x6292},
+       {0x14A4A, 0x626F},
+       {0x14A4B, 0x6298},
+       {0x14A4C, 0x626E},
+       {0x14A4D, 0x6295},
+       {0x14A4E, 0x6293},
+       {0x14A4F, 0x6291},
+       {0x14A50, 0x6286},
+       {0x14A51, 0x6539},
+       {0x14A52, 0x653B},
+       {0x14A53, 0x6538},
+       {0x14A54, 0x65F1},
+       {0x14A55, 0x66F4},
+       {0x14A56, 0x675F},
+       {0x14A57, 0x674E},
+       {0x14A58, 0x674F},
+       {0x14A59, 0x6750},
+       {0x14A5A, 0x6751},
+       {0x14A5B, 0x675C},
+       {0x14A5C, 0x6756},
+       {0x14A5D, 0x675E},
+       {0x14A5E, 0x6749},
+       {0x14A5F, 0x6746},
+       {0x14A60, 0x6760},
+       {0x14A61, 0x6753},
+       {0x14A62, 0x6757},
+       {0x14A63, 0x6B65},
+       {0x14A64, 0x6BCF},
+       {0x14A65, 0x6C42},
+       {0x14A66, 0x6C5E},
+       {0x14A67, 0x6C99},
+       {0x14A68, 0x6C81},
+       {0x14A69, 0x6C88},
+       {0x14A6A, 0x6C89},
+       {0x14A6B, 0x6C85},
+       {0x14A6C, 0x6C9B},
+       {0x14A6D, 0x6C6A},
+       {0x14A6E, 0x6C7A},
+       {0x14A6F, 0x6C90},
+       {0x14A70, 0x6C70},
+       {0x14A71, 0x6C8C},
+       {0x14A72, 0x6C68},
+       {0x14A73, 0x6C96},
+       {0x14A74, 0x6C92},
+       {0x14A75, 0x6C7D},
+       {0x14A76, 0x6C83},
+       {0x14A77, 0x6C72},
+       {0x14A78, 0x6C7E},
+       {0x14A79, 0x6C74},
+       {0x14A7A, 0x6C86},
+       {0x14A7B, 0x6C76},
+       {0x14A7C, 0x6C8D},
+       {0x14A7D, 0x6C94},
+       {0x14A7E, 0x6C98},
+       {0x14B21, 0x6C82},
+       {0x14B22, 0x7076},
+       {0x14B23, 0x707C},
+       {0x14B24, 0x707D},
+       {0x14B25, 0x7078},
+       {0x14B26, 0x7262},
+       {0x14B27, 0x7261},
+       {0x14B28, 0x7260},
+       {0x14B29, 0x72C4},
+       {0x14B2A, 0x72C2},
+       {0x14B2B, 0x7396},
+       {0x14B2C, 0x752C},
+       {0x14B2D, 0x752B},
+       {0x14B2E, 0x7537},
+       {0x14B2F, 0x7538},
+       {0x14B30, 0x7682},
+       {0x14B31, 0x76EF},
+       {0x14B32, 0x77E3},
+       {0x14B33, 0x79C1},
+       {0x14B34, 0x79C0},
+       {0x14B35, 0x79BF},
+       {0x14B36, 0x7A76},
+       {0x14B37, 0x7CFB},
+       {0x14B38, 0x7F55},
+       {0x14B39, 0x8096},
+       {0x14B3A, 0x8093},
+       {0x14B3B, 0x809D},
+       {0x14B3C, 0x8098},
+       {0x14B3D, 0x809B},
+       {0x14B3E, 0x809A},
+       {0x14B3F, 0x80B2},
+       {0x14B40, 0x826F},
+       {0x14B41, 0x8292},
+       {0x14B42, 0x828B},
+       {0x14B43, 0x828D},
+       {0x14B44, 0x898B},
+       {0x14B45, 0x89D2},
+       {0x14B46, 0x8A00},
+       {0x14B47, 0x8C37},
+       {0x14B48, 0x8C46},
+       {0x14B49, 0x8C55},
+       {0x14B4A, 0x8C9D},
+       {0x14B4B, 0x8D64},
+       {0x14B4C, 0x8D70},
+       {0x14B4D, 0x8DB3},
+       {0x14B4E, 0x8EAB},
+       {0x14B4F, 0x8ECA},
+       {0x14B50, 0x8F9B},
+       {0x14B51, 0x8FB0},
+       {0x14B52, 0x8FC2},
+       {0x14B53, 0x8FC6},
+       {0x14B54, 0x8FC5},
+       {0x14B55, 0x8FC4},
+       {0x14B56, 0x5DE1},
+       {0x14B57, 0x9091},
+       {0x14B58, 0x90A2},
+       {0x14B59, 0x90AA},
+       {0x14B5A, 0x90A6},
+       {0x14B5B, 0x90A3},
+       {0x14B5C, 0x9149},
+       {0x14B5D, 0x91C6},
+       {0x14B5E, 0x91CC},
+       {0x14B5F, 0x9632},
+       {0x14B60, 0x962E},
+       {0x14B61, 0x9631},
+       {0x14B62, 0x962A},
+       {0x14B63, 0x962C},
+       {0x14B64, 0x4E26},
+       {0x14B65, 0x4E56},
+       {0x14B66, 0x4E73},
+       {0x14B67, 0x4E8B},
+       {0x14B68, 0x4E9B},
+       {0x14B69, 0x4E9E},
+       {0x14B6A, 0x4EAB},
+       {0x14B6B, 0x4EAC},
+       {0x14B6C, 0x4F6F},
+       {0x14B6D, 0x4F9D},
+       {0x14B6E, 0x4F8D},
+       {0x14B6F, 0x4F73},
+       {0x14B70, 0x4F7F},
+       {0x14B71, 0x4F6C},
+       {0x14B72, 0x4F9B},
+       {0x14B73, 0x4F8B},
+       {0x14B74, 0x4F86},
+       {0x14B75, 0x4F83},
+       {0x14B76, 0x4F70},
+       {0x14B77, 0x4F75},
+       {0x14B78, 0x4F88},
+       {0x14B79, 0x4F69},
+       {0x14B7A, 0x4F7B},
+       {0x14B7B, 0x4F96},
+       {0x14B7C, 0x4F7E},
+       {0x14B7D, 0x4F8F},
+       {0x14B7E, 0x4F91},
+       {0x14C21, 0x4F7A},
+       {0x14C22, 0x5154},
+       {0x14C23, 0x5152},
+       {0x14C24, 0x5155},
+       {0x14C25, 0x5169},
+       {0x14C26, 0x5177},
+       {0x14C27, 0x5176},
+       {0x14C28, 0x5178},
+       {0x14C29, 0x51BD},
+       {0x14C2A, 0x51FD},
+       {0x14C2B, 0x523B},
+       {0x14C2C, 0x5238},
+       {0x14C2D, 0x5237},
+       {0x14C2E, 0x523A},
+       {0x14C2F, 0x5230},
+       {0x14C30, 0x522E},
+       {0x14C31, 0x5236},
+       {0x14C32, 0x5241},
+       {0x14C33, 0x52BE},
+       {0x14C34, 0x52BB},
+       {0x14C35, 0x5352},
+       {0x14C36, 0x5354},
+       {0x14C37, 0x5353},
+       {0x14C38, 0x5351},
+       {0x14C39, 0x5366},
+       {0x14C3A, 0x5377},
+       {0x14C3B, 0x5378},
+       {0x14C3C, 0x5379},
+       {0x14C3D, 0x53D6},
+       {0x14C3E, 0x53D4},
+       {0x14C3F, 0x53D7},
+       {0x14C40, 0x5473},
+       {0x14C41, 0x5475},
+       {0x14C42, 0x5496},
+       {0x14C43, 0x5478},
+       {0x14C44, 0x5495},
+       {0x14C45, 0x5480},
+       {0x14C46, 0x547B},
+       {0x14C47, 0x5477},
+       {0x14C48, 0x5484},
+       {0x14C49, 0x5492},
+       {0x14C4A, 0x5486},
+       {0x14C4B, 0x547C},
+       {0x14C4C, 0x5490},
+       {0x14C4D, 0x5471},
+       {0x14C4E, 0x5476},
+       {0x14C4F, 0x548C},
+       {0x14C50, 0x549A},
+       {0x14C51, 0x5462},
+       {0x14C52, 0x5468},
+       {0x14C53, 0x548B},
+       {0x14C54, 0x547D},
+       {0x14C55, 0x548E},
+       {0x14C56, 0x56FA},
+       {0x14C57, 0x5783},
+       {0x14C58, 0x5777},
+       {0x14C59, 0x576A},
+       {0x14C5A, 0x5769},
+       {0x14C5B, 0x5761},
+       {0x14C5C, 0x5766},
+       {0x14C5D, 0x5764},
+       {0x14C5E, 0x577C},
+       {0x14C5F, 0x591C},
+       {0x14C60, 0x5949},
+       {0x14C61, 0x5947},
+       {0x14C62, 0x5948},
+       {0x14C63, 0x5944},
+       {0x14C64, 0x5954},
+       {0x14C65, 0x59BE},
+       {0x14C66, 0x59BB},
+       {0x14C67, 0x59D4},
+       {0x14C68, 0x59B9},
+       {0x14C69, 0x59AE},
+       {0x14C6A, 0x59D1},
+       {0x14C6B, 0x59C6},
+       {0x14C6C, 0x59D0},
+       {0x14C6D, 0x59CD},
+       {0x14C6E, 0x59CB},
+       {0x14C6F, 0x59D3},
+       {0x14C70, 0x59CA},
+       {0x14C71, 0x59AF},
+       {0x14C72, 0x59B3},
+       {0x14C73, 0x59D2},
+       {0x14C74, 0x59C5},
+       {0x14C75, 0x5B5F},
+       {0x14C76, 0x5B64},
+       {0x14C77, 0x5B63},
+       {0x14C78, 0x5B97},
+       {0x14C79, 0x5B9A},
+       {0x14C7A, 0x5B98},
+       {0x14C7B, 0x5B9C},
+       {0x14C7C, 0x5B99},
+       {0x14C7D, 0x5B9B},
+       {0x14C7E, 0x5C1A},
+       {0x14D21, 0x5C48},
+       {0x14D22, 0x5C45},
+       {0x14D23, 0x5C46},
+       {0x14D24, 0x5CB7},
+       {0x14D25, 0x5CA1},
+       {0x14D26, 0x5CB8},
+       {0x14D27, 0x5CA9},
+       {0x14D28, 0x5CAB},
+       {0x14D29, 0x5CB1},
+       {0x14D2A, 0x5CB3},
+       {0x14D2B, 0x5E18},
+       {0x14D2C, 0x5E1A},
+       {0x14D2D, 0x5E16},
+       {0x14D2E, 0x5E15},
+       {0x14D2F, 0x5E1B},
+       {0x14D30, 0x5E11},
+       {0x14D31, 0x5E78},
+       {0x14D32, 0x5E9A},
+       {0x14D33, 0x5E97},
+       {0x14D34, 0x5E9C},
+       {0x14D35, 0x5E95},
+       {0x14D36, 0x5E96},
+       {0x14D37, 0x5EF6},
+       {0x14D38, 0x5F26},
+       {0x14D39, 0x5F27},
+       {0x14D3A, 0x5F29},
+       {0x14D3B, 0x5F80},
+       {0x14D3C, 0x5F81},
+       {0x14D3D, 0x5F7F},
+       {0x14D3E, 0x5F7C},
+       {0x14D3F, 0x5FDD},
+       {0x14D40, 0x5FE0},
+       {0x14D41, 0x5FFD},
+       {0x14D42, 0x5FF5},
+       {0x14D43, 0x5FFF},
+       {0x14D44, 0x600F},
+       {0x14D45, 0x6014},
+       {0x14D46, 0x602F},
+       {0x14D47, 0x6035},
+       {0x14D48, 0x6016},
+       {0x14D49, 0x602A},
+       {0x14D4A, 0x6015},
+       {0x14D4B, 0x6021},
+       {0x14D4C, 0x6027},
+       {0x14D4D, 0x6029},
+       {0x14D4E, 0x602B},
+       {0x14D4F, 0x601B},
+       {0x14D50, 0x6216},
+       {0x14D51, 0x6215},
+       {0x14D52, 0x623F},
+       {0x14D53, 0x623E},
+       {0x14D54, 0x6240},
+       {0x14D55, 0x627F},
+       {0x14D56, 0x62C9},
+       {0x14D57, 0x62CC},
+       {0x14D58, 0x62C4},
+       {0x14D59, 0x62BF},
+       {0x14D5A, 0x62C2},
+       {0x14D5B, 0x62B9},
+       {0x14D5C, 0x62D2},
+       {0x14D5D, 0x62DB},
+       {0x14D5E, 0x62AB},
+       {0x14D5F, 0x62D3},
+       {0x14D60, 0x62D4},
+       {0x14D61, 0x62CB},
+       {0x14D62, 0x62C8},
+       {0x14D63, 0x62A8},
+       {0x14D64, 0x62BD},
+       {0x14D65, 0x62BC},
+       {0x14D66, 0x62D0},
+       {0x14D67, 0x62D9},
+       {0x14D68, 0x62C7},
+       {0x14D69, 0x62CD},
+       {0x14D6A, 0x62B5},
+       {0x14D6B, 0x62DA},
+       {0x14D6C, 0x62B1},
+       {0x14D6D, 0x62D8},
+       {0x14D6E, 0x62D6},
+       {0x14D6F, 0x62D7},
+       {0x14D70, 0x62C6},
+       {0x14D71, 0x62AC},
+       {0x14D72, 0x62CE},
+       {0x14D73, 0x653E},
+       {0x14D74, 0x65A7},
+       {0x14D75, 0x65BC},
+       {0x14D76, 0x65FA},
+       {0x14D77, 0x6614},
+       {0x14D78, 0x6613},
+       {0x14D79, 0x660C},
+       {0x14D7A, 0x6606},
+       {0x14D7B, 0x6602},
+       {0x14D7C, 0x660E},
+       {0x14D7D, 0x6600},
+       {0x14D7E, 0x660F},
+       {0x14E21, 0x6615},
+       {0x14E22, 0x660A},
+       {0x14E23, 0x6607},
+       {0x14E24, 0x670D},
+       {0x14E25, 0x670B},
+       {0x14E26, 0x676D},
+       {0x14E27, 0x678B},
+       {0x14E28, 0x6795},
+       {0x14E29, 0x6771},
+       {0x14E2A, 0x679C},
+       {0x14E2B, 0x6773},
+       {0x14E2C, 0x6777},
+       {0x14E2D, 0x6787},
+       {0x14E2E, 0x679D},
+       {0x14E2F, 0x6797},
+       {0x14E30, 0x676F},
+       {0x14E31, 0x6770},
+       {0x14E32, 0x677F},
+       {0x14E33, 0x6789},
+       {0x14E34, 0x677E},
+       {0x14E35, 0x6790},
+       {0x14E36, 0x6775},
+       {0x14E37, 0x679A},
+       {0x14E38, 0x6793},
+       {0x14E39, 0x677C},
+       {0x14E3A, 0x676A},
+       {0x14E3B, 0x6772},
+       {0x14E3C, 0x6B23},
+       {0x14E3D, 0x6B66},
+       {0x14E3E, 0x6B67},
+       {0x14E3F, 0x6B7F},
+       {0x14E40, 0x6C13},
+       {0x14E41, 0x6C1B},
+       {0x14E42, 0x6CE3},
+       {0x14E43, 0x6CE8},
+       {0x14E44, 0x6CF3},
+       {0x14E45, 0x6CB1},
+       {0x14E46, 0x6CCC},
+       {0x14E47, 0x6CE5},
+       {0x14E48, 0x6CB3},
+       {0x14E49, 0x6CBD},
+       {0x14E4A, 0x6CBE},
+       {0x14E4B, 0x6CBC},
+       {0x14E4C, 0x6CE2},
+       {0x14E4D, 0x6CAB},
+       {0x14E4E, 0x6CD5},
+       {0x14E4F, 0x6CD3},
+       {0x14E50, 0x6CB8},
+       {0x14E51, 0x6CC4},
+       {0x14E52, 0x6CB9},
+       {0x14E53, 0x6CC1},
+       {0x14E54, 0x6CAE},
+       {0x14E55, 0x6CD7},
+       {0x14E56, 0x6CC5},
+       {0x14E57, 0x6CF1},
+       {0x14E58, 0x6CBF},
+       {0x14E59, 0x6CBB},
+       {0x14E5A, 0x6CE1},
+       {0x14E5B, 0x6CDB},
+       {0x14E5C, 0x6CCA},
+       {0x14E5D, 0x6CAC},
+       {0x14E5E, 0x6CEF},
+       {0x14E5F, 0x6CDC},
+       {0x14E60, 0x6CD6},
+       {0x14E61, 0x6CE0},
+       {0x14E62, 0x7095},
+       {0x14E63, 0x708E},
+       {0x14E64, 0x7092},
+       {0x14E65, 0x708A},
+       {0x14E66, 0x7099},
+       {0x14E67, 0x722C},
+       {0x14E68, 0x722D},
+       {0x14E69, 0x7238},
+       {0x14E6A, 0x7248},
+       {0x14E6B, 0x7267},
+       {0x14E6C, 0x7269},
+       {0x14E6D, 0x72C0},
+       {0x14E6E, 0x72CE},
+       {0x14E6F, 0x72D9},
+       {0x14E70, 0x72D7},
+       {0x14E71, 0x72D0},
+       {0x14E72, 0x73A9},
+       {0x14E73, 0x73A8},
+       {0x14E74, 0x739F},
+       {0x14E75, 0x73AB},
+       {0x14E76, 0x73A5},
+       {0x14E77, 0x753D},
+       {0x14E78, 0x759D},
+       {0x14E79, 0x7599},
+       {0x14E7A, 0x759A},
+       {0x14E7B, 0x7684},
+       {0x14E7C, 0x76C2},
+       {0x14E7D, 0x76F2},
+       {0x14E7E, 0x76F4},
+       {0x14F21, 0x77E5},
+       {0x14F22, 0x77FD},
+       {0x14F23, 0x793E},
+       {0x14F24, 0x7940},
+       {0x14F25, 0x7941},
+       {0x14F26, 0x79C9},
+       {0x14F27, 0x79C8},
+       {0x14F28, 0x7A7A},
+       {0x14F29, 0x7A79},
+       {0x14F2A, 0x7AFA},
+       {0x14F2B, 0x7CFE},
+       {0x14F2C, 0x7F54},
+       {0x14F2D, 0x7F8C},
+       {0x14F2E, 0x7F8B},
+       {0x14F2F, 0x8005},
+       {0x14F30, 0x80BA},
+       {0x14F31, 0x80A5},
+       {0x14F32, 0x80A2},
+       {0x14F33, 0x80B1},
+       {0x14F34, 0x80A1},
+       {0x14F35, 0x80AB},
+       {0x14F36, 0x80A9},
+       {0x14F37, 0x80B4},
+       {0x14F38, 0x80AA},
+       {0x14F39, 0x80AF},
+       {0x14F3A, 0x81E5},
+       {0x14F3B, 0x81FE},
+       {0x14F3C, 0x820D},
+       {0x14F3D, 0x82B3},
+       {0x14F3E, 0x829D},
+       {0x14F3F, 0x8299},
+       {0x14F40, 0x82AD},
+       {0x14F41, 0x82BD},
+       {0x14F42, 0x829F},
+       {0x14F43, 0x82B9},
+       {0x14F44, 0x82B1},
+       {0x14F45, 0x82AC},
+       {0x14F46, 0x82A5},
+       {0x14F47, 0x82AF},
+       {0x14F48, 0x82B8},
+       {0x14F49, 0x82A3},
+       {0x14F4A, 0x82B0},
+       {0x14F4B, 0x82BE},
+       {0x14F4C, 0x82B7},
+       {0x14F4D, 0x864E},
+       {0x14F4E, 0x8671},
+       {0x14F4F, 0x521D},
+       {0x14F50, 0x8868},
+       {0x14F51, 0x8ECB},
+       {0x14F52, 0x8FCE},
+       {0x14F53, 0x8FD4},
+       {0x14F54, 0x8FD1},
+       {0x14F55, 0x90B5},
+       {0x14F56, 0x90B8},
+       {0x14F57, 0x90B1},
+       {0x14F58, 0x90B6},
+       {0x14F59, 0x91C7},
+       {0x14F5A, 0x91D1},
+       {0x14F5B, 0x9577},
+       {0x14F5C, 0x9580},
+       {0x14F5D, 0x961C},
+       {0x14F5E, 0x9640},
+       {0x14F5F, 0x963F},
+       {0x14F60, 0x963B},
+       {0x14F61, 0x9644},
+       {0x14F62, 0x9642},
+       {0x14F63, 0x96B9},
+       {0x14F64, 0x96E8},
+       {0x14F65, 0x9752},
+       {0x14F66, 0x975E},
+       {0x14F67, 0x4E9F},
+       {0x14F68, 0x4EAD},
+       {0x14F69, 0x4EAE},
+       {0x14F6A, 0x4FE1},
+       {0x14F6B, 0x4FB5},
+       {0x14F6C, 0x4FAF},
+       {0x14F6D, 0x4FBF},
+       {0x14F6E, 0x4FE0},
+       {0x14F6F, 0x4FD1},
+       {0x14F70, 0x4FCF},
+       {0x14F71, 0x4FDD},
+       {0x14F72, 0x4FC3},
+       {0x14F73, 0x4FB6},
+       {0x14F74, 0x4FD8},
+       {0x14F75, 0x4FDF},
+       {0x14F76, 0x4FCA},
+       {0x14F77, 0x4FD7},
+       {0x14F78, 0x4FAE},
+       {0x14F79, 0x4FD0},
+       {0x14F7A, 0x4FC4},
+       {0x14F7B, 0x4FC2},
+       {0x14F7C, 0x4FDA},
+       {0x14F7D, 0x4FCE},
+       {0x14F7E, 0x4FDE},
+       {0x15021, 0x4FB7},
+       {0x15022, 0x5157},
+       {0x15023, 0x5192},
+       {0x15024, 0x5191},
+       {0x15025, 0x51A0},
+       {0x15026, 0x524E},
+       {0x15027, 0x5243},
+       {0x15028, 0x524A},
+       {0x15029, 0x524D},
+       {0x1502A, 0x524C},
+       {0x1502B, 0x524B},
+       {0x1502C, 0x5247},
+       {0x1502D, 0x52C7},
+       {0x1502E, 0x52C9},
+       {0x1502F, 0x52C3},
+       {0x15030, 0x52C1},
+       {0x15031, 0x530D},
+       {0x15032, 0x5357},
+       {0x15033, 0x537B},
+       {0x15034, 0x539A},
+       {0x15035, 0x53DB},
+       {0x15036, 0x54AC},
+       {0x15037, 0x54C0},
+       {0x15038, 0x54A8},
+       {0x15039, 0x54CE},
+       {0x1503A, 0x54C9},
+       {0x1503B, 0x54B8},
+       {0x1503C, 0x54A6},
+       {0x1503D, 0x54B3},
+       {0x1503E, 0x54C7},
+       {0x1503F, 0x54C2},
+       {0x15040, 0x54BD},
+       {0x15041, 0x54AA},
+       {0x15042, 0x54C1},
+       {0x15043, 0x54C4},
+       {0x15044, 0x54C8},
+       {0x15045, 0x54AF},
+       {0x15046, 0x54AB},
+       {0x15047, 0x54B1},
+       {0x15048, 0x54BB},
+       {0x15049, 0x54A9},
+       {0x1504A, 0x54A7},
+       {0x1504B, 0x54BF},
+       {0x1504C, 0x56FF},
+       {0x1504D, 0x5782},
+       {0x1504E, 0x578B},
+       {0x1504F, 0x57A0},
+       {0x15050, 0x57A3},
+       {0x15051, 0x57A2},
+       {0x15052, 0x57CE},
+       {0x15053, 0x57AE},
+       {0x15054, 0x5793},
+       {0x15055, 0x5955},
+       {0x15056, 0x5951},
+       {0x15057, 0x594F},
+       {0x15058, 0x594E},
+       {0x15059, 0x5950},
+       {0x1505A, 0x59DC},
+       {0x1505B, 0x59D8},
+       {0x1505C, 0x59FF},
+       {0x1505D, 0x59E3},
+       {0x1505E, 0x59E8},
+       {0x1505F, 0x5A03},
+       {0x15060, 0x59E5},
+       {0x15061, 0x59EA},
+       {0x15062, 0x59DA},
+       {0x15063, 0x59E6},
+       {0x15064, 0x5A01},
+       {0x15065, 0x59FB},
+       {0x15066, 0x5B69},
+       {0x15067, 0x5BA3},
+       {0x15068, 0x5BA6},
+       {0x15069, 0x5BA4},
+       {0x1506A, 0x5BA2},
+       {0x1506B, 0x5BA5},
+       {0x1506C, 0x5C01},
+       {0x1506D, 0x5C4E},
+       {0x1506E, 0x5C4F},
+       {0x1506F, 0x5C4D},
+       {0x15070, 0x5C4B},
+       {0x15071, 0x5CD9},
+       {0x15072, 0x5CD2},
+       {0x15073, 0x5DF7},
+       {0x15074, 0x5E1D},
+       {0x15075, 0x5E25},
+       {0x15076, 0x5E1F},
+       {0x15077, 0x5E7D},
+       {0x15078, 0x5EA0},
+       {0x15079, 0x5EA6},
+       {0x1507A, 0x5EFA},
+       {0x1507B, 0x5F08},
+       {0x1507C, 0x5F2D},
+       {0x1507D, 0x5F65},
+       {0x1507E, 0x5F88},
+       {0x15121, 0x5F85},
+       {0x15122, 0x5F8A},
+       {0x15123, 0x5F8B},
+       {0x15124, 0x5F87},
+       {0x15125, 0x5F8C},
+       {0x15126, 0x5F89},
+       {0x15127, 0x6012},
+       {0x15128, 0x601D},
+       {0x15129, 0x6020},
+       {0x1512A, 0x6025},
+       {0x1512B, 0x600E},
+       {0x1512C, 0x6028},
+       {0x1512D, 0x604D},
+       {0x1512E, 0x6070},
+       {0x1512F, 0x6068},
+       {0x15130, 0x6062},
+       {0x15131, 0x6046},
+       {0x15132, 0x6043},
+       {0x15133, 0x606C},
+       {0x15134, 0x606B},
+       {0x15135, 0x606A},
+       {0x15136, 0x6064},
+       {0x15137, 0x6241},
+       {0x15138, 0x62DC},
+       {0x15139, 0x6316},
+       {0x1513A, 0x6309},
+       {0x1513B, 0x62FC},
+       {0x1513C, 0x62ED},
+       {0x1513D, 0x6301},
+       {0x1513E, 0x62EE},
+       {0x1513F, 0x62FD},
+       {0x15140, 0x6307},
+       {0x15141, 0x62F1},
+       {0x15142, 0x62F7},
+       {0x15143, 0x62EF},
+       {0x15144, 0x62EC},
+       {0x15145, 0x62FE},
+       {0x15146, 0x62F4},
+       {0x15147, 0x6311},
+       {0x15148, 0x6302},
+       {0x15149, 0x653F},
+       {0x1514A, 0x6545},
+       {0x1514B, 0x65AB},
+       {0x1514C, 0x65BD},
+       {0x1514D, 0x65E2},
+       {0x1514E, 0x6625},
+       {0x1514F, 0x662D},
+       {0x15150, 0x6620},
+       {0x15151, 0x6627},
+       {0x15152, 0x662F},
+       {0x15153, 0x661F},
+       {0x15154, 0x6628},
+       {0x15155, 0x6631},
+       {0x15156, 0x6624},
+       {0x15157, 0x66F7},
+       {0x15158, 0x67FF},
+       {0x15159, 0x67D3},
+       {0x1515A, 0x67F1},
+       {0x1515B, 0x67D4},
+       {0x1515C, 0x67D0},
+       {0x1515D, 0x67EC},
+       {0x1515E, 0x67B6},
+       {0x1515F, 0x67AF},
+       {0x15160, 0x67F5},
+       {0x15161, 0x67E9},
+       {0x15162, 0x67EF},
+       {0x15163, 0x67C4},
+       {0x15164, 0x67D1},
+       {0x15165, 0x67B4},
+       {0x15166, 0x67DA},
+       {0x15167, 0x67E5},
+       {0x15168, 0x67B8},
+       {0x15169, 0x67CF},
+       {0x1516A, 0x67DE},
+       {0x1516B, 0x67F3},
+       {0x1516C, 0x67B0},
+       {0x1516D, 0x67D9},
+       {0x1516E, 0x67E2},
+       {0x1516F, 0x67DD},
+       {0x15170, 0x67D2},
+       {0x15171, 0x6B6A},
+       {0x15172, 0x6B83},
+       {0x15173, 0x6B86},
+       {0x15174, 0x6BB5},
+       {0x15175, 0x6BD2},
+       {0x15176, 0x6BD7},
+       {0x15177, 0x6C1F},
+       {0x15178, 0x6CC9},
+       {0x15179, 0x6D0B},
+       {0x1517A, 0x6D32},
+       {0x1517B, 0x6D2A},
+       {0x1517C, 0x6D41},
+       {0x1517D, 0x6D25},
+       {0x1517E, 0x6D0C},
+       {0x15221, 0x6D31},
+       {0x15222, 0x6D1E},
+       {0x15223, 0x6D17},
+       {0x15224, 0x6D3B},
+       {0x15225, 0x6D3D},
+       {0x15226, 0x6D3E},
+       {0x15227, 0x6D36},
+       {0x15228, 0x6D1B},
+       {0x15229, 0x6CF5},
+       {0x1522A, 0x6D39},
+       {0x1522B, 0x6D27},
+       {0x1522C, 0x6D38},
+       {0x1522D, 0x6D29},
+       {0x1522E, 0x6D2E},
+       {0x1522F, 0x6D35},
+       {0x15230, 0x6D0E},
+       {0x15231, 0x6D2B},
+       {0x15232, 0x70AB},
+       {0x15233, 0x70BA},
+       {0x15234, 0x70B3},
+       {0x15235, 0x70AC},
+       {0x15236, 0x70AF},
+       {0x15237, 0x70AD},
+       {0x15238, 0x70B8},
+       {0x15239, 0x70AE},
+       {0x1523A, 0x70A4},
+       {0x1523B, 0x7230},
+       {0x1523C, 0x7272},
+       {0x1523D, 0x726F},
+       {0x1523E, 0x7274},
+       {0x1523F, 0x72E9},
+       {0x15240, 0x72E0},
+       {0x15241, 0x72E1},
+       {0x15242, 0x73B7},
+       {0x15243, 0x73CA},
+       {0x15244, 0x73BB},
+       {0x15245, 0x73B2},
+       {0x15246, 0x73CD},
+       {0x15247, 0x73C0},
+       {0x15248, 0x73B3},
+       {0x15249, 0x751A},
+       {0x1524A, 0x752D},
+       {0x1524B, 0x754F},
+       {0x1524C, 0x754C},
+       {0x1524D, 0x754E},
+       {0x1524E, 0x754B},
+       {0x1524F, 0x75AB},
+       {0x15250, 0x75A4},
+       {0x15251, 0x75A5},
+       {0x15252, 0x75A2},
+       {0x15253, 0x75A3},
+       {0x15254, 0x7678},
+       {0x15255, 0x7686},
+       {0x15256, 0x7687},
+       {0x15257, 0x7688},
+       {0x15258, 0x76C8},
+       {0x15259, 0x76C6},
+       {0x1525A, 0x76C3},
+       {0x1525B, 0x76C5},
+       {0x1525C, 0x7701},
+       {0x1525D, 0x76F9},
+       {0x1525E, 0x76F8},
+       {0x1525F, 0x7709},
+       {0x15260, 0x770B},
+       {0x15261, 0x76FE},
+       {0x15262, 0x76FC},
+       {0x15263, 0x7707},
+       {0x15264, 0x77DC},
+       {0x15265, 0x7802},
+       {0x15266, 0x7814},
+       {0x15267, 0x780C},
+       {0x15268, 0x780D},
+       {0x15269, 0x7946},
+       {0x1526A, 0x7949},
+       {0x1526B, 0x7948},
+       {0x1526C, 0x7947},
+       {0x1526D, 0x79B9},
+       {0x1526E, 0x79BA},
+       {0x1526F, 0x79D1},
+       {0x15270, 0x79D2},
+       {0x15271, 0x79CB},
+       {0x15272, 0x7A7F},
+       {0x15273, 0x7A81},
+       {0x15274, 0x7AFF},
+       {0x15275, 0x7AFD},
+       {0x15276, 0x7C7D},
+       {0x15277, 0x7D02},
+       {0x15278, 0x7D05},
+       {0x15279, 0x7D00},
+       {0x1527A, 0x7D09},
+       {0x1527B, 0x7D07},
+       {0x1527C, 0x7D04},
+       {0x1527D, 0x7D06},
+       {0x1527E, 0x7F38},
+       {0x15321, 0x7F8E},
+       {0x15322, 0x7FBF},
+       {0x15323, 0x8010},
+       {0x15324, 0x800D},
+       {0x15325, 0x8011},
+       {0x15326, 0x8036},
+       {0x15327, 0x80D6},
+       {0x15328, 0x80E5},
+       {0x15329, 0x80DA},
+       {0x1532A, 0x80C3},
+       {0x1532B, 0x80C4},
+       {0x1532C, 0x80CC},
+       {0x1532D, 0x80E1},
+       {0x1532E, 0x80DB},
+       {0x1532F, 0x80CE},
+       {0x15330, 0x80DE},
+       {0x15331, 0x80E4},
+       {0x15332, 0x80DD},
+       {0x15333, 0x81F4},
+       {0x15334, 0x8222},
+       {0x15335, 0x82E7},
+       {0x15336, 0x8303},
+       {0x15337, 0x8305},
+       {0x15338, 0x82E3},
+       {0x15339, 0x82DB},
+       {0x1533A, 0x82E6},
+       {0x1533B, 0x8304},
+       {0x1533C, 0x82E5},
+       {0x1533D, 0x8302},
+       {0x1533E, 0x8309},
+       {0x1533F, 0x82D2},
+       {0x15340, 0x82D7},
+       {0x15341, 0x82F1},
+       {0x15342, 0x8301},
+       {0x15343, 0x82DC},
+       {0x15344, 0x82D4},
+       {0x15345, 0x82D1},
+       {0x15346, 0x82DE},
+       {0x15347, 0x82D3},
+       {0x15348, 0x82DF},
+       {0x15349, 0x82EF},
+       {0x1534A, 0x8306},
+       {0x1534B, 0x8650},
+       {0x1534C, 0x8679},
+       {0x1534D, 0x867B},
+       {0x1534E, 0x867A},
+       {0x1534F, 0x884D},
+       {0x15350, 0x886B},
+       {0x15351, 0x8981},
+       {0x15352, 0x89D4},
+       {0x15353, 0x8A08},
+       {0x15354, 0x8A02},
+       {0x15355, 0x8A03},
+       {0x15356, 0x8C9E},
+       {0x15357, 0x8CA0},
+       {0x15358, 0x8D74},
+       {0x15359, 0x8D73},
+       {0x1535A, 0x8DB4},
+       {0x1535B, 0x8ECD},
+       {0x1535C, 0x8ECC},
+       {0x1535D, 0x8FF0},
+       {0x1535E, 0x8FE6},
+       {0x1535F, 0x8FE2},
+       {0x15360, 0x8FEA},
+       {0x15361, 0x8FE5},
+       {0x15362, 0x8FED},
+       {0x15363, 0x8FEB},
+       {0x15364, 0x8FE4},
+       {0x15365, 0x8FE8},
+       {0x15366, 0x90CA},
+       {0x15367, 0x90CE},
+       {0x15368, 0x90C1},
+       {0x15369, 0x90C3},
+       {0x1536A, 0x914B},
+       {0x1536B, 0x914A},
+       {0x1536C, 0x91CD},
+       {0x1536D, 0x9582},
+       {0x1536E, 0x9650},
+       {0x1536F, 0x964B},
+       {0x15370, 0x964C},
+       {0x15371, 0x964D},
+       {0x15372, 0x9762},
+       {0x15373, 0x9769},
+       {0x15374, 0x97CB},
+       {0x15375, 0x97ED},
+       {0x15376, 0x97F3},
+       {0x15377, 0x9801},
+       {0x15378, 0x98A8},
+       {0x15379, 0x98DB},
+       {0x1537A, 0x98DF},
+       {0x1537B, 0x9996},
+       {0x1537C, 0x9999},
+       {0x1537D, 0x4E58},
+       {0x1537E, 0x4EB3},
+       {0x15421, 0x500C},
+       {0x15422, 0x500D},
+       {0x15423, 0x5023},
+       {0x15424, 0x4FEF},
+       {0x15425, 0x5026},
+       {0x15426, 0x5025},
+       {0x15427, 0x4FF8},
+       {0x15428, 0x5029},
+       {0x15429, 0x5016},
+       {0x1542A, 0x5006},
+       {0x1542B, 0x503C},
+       {0x1542C, 0x501F},
+       {0x1542D, 0x501A},
+       {0x1542E, 0x5012},
+       {0x1542F, 0x5011},
+       {0x15430, 0x4FFA},
+       {0x15431, 0x5000},
+       {0x15432, 0x5014},
+       {0x15433, 0x5028},
+       {0x15434, 0x4FF1},
+       {0x15435, 0x5021},
+       {0x15436, 0x500B},
+       {0x15437, 0x5019},
+       {0x15438, 0x5018},
+       {0x15439, 0x4FF3},
+       {0x1543A, 0x4FEE},
+       {0x1543B, 0x502D},
+       {0x1543C, 0x502A},
+       {0x1543D, 0x4FFE},
+       {0x1543E, 0x502B},
+       {0x1543F, 0x5009},
+       {0x15440, 0x517C},
+       {0x15441, 0x51A4},
+       {0x15442, 0x51A5},
+       {0x15443, 0x51A2},
+       {0x15444, 0x51CD},
+       {0x15445, 0x51CC},
+       {0x15446, 0x51C6},
+       {0x15447, 0x51CB},
+       {0x15448, 0x5256},
+       {0x15449, 0x525C},
+       {0x1544A, 0x5254},
+       {0x1544B, 0x525B},
+       {0x1544C, 0x525D},
+       {0x1544D, 0x532A},
+       {0x1544E, 0x537F},
+       {0x1544F, 0x539F},
+       {0x15450, 0x539D},
+       {0x15451, 0x53DF},
+       {0x15452, 0x54E8},
+       {0x15453, 0x5510},
+       {0x15454, 0x5501},
+       {0x15455, 0x5537},
+       {0x15456, 0x54FC},
+       {0x15457, 0x54E5},
+       {0x15458, 0x54F2},
+       {0x15459, 0x5506},
+       {0x1545A, 0x54FA},
+       {0x1545B, 0x5514},
+       {0x1545C, 0x54E9},
+       {0x1545D, 0x54ED},
+       {0x1545E, 0x54E1},
+       {0x1545F, 0x5509},
+       {0x15460, 0x54EE},
+       {0x15461, 0x54EA},
+       {0x15462, 0x54E6},
+       {0x15463, 0x5527},
+       {0x15464, 0x5507},
+       {0x15465, 0x54FD},
+       {0x15466, 0x550F},
+       {0x15467, 0x5703},
+       {0x15468, 0x5704},
+       {0x15469, 0x57C2},
+       {0x1546A, 0x57D4},
+       {0x1546B, 0x57CB},
+       {0x1546C, 0x57C3},
+       {0x1546D, 0x5809},
+       {0x1546E, 0x590F},
+       {0x1546F, 0x5957},
+       {0x15470, 0x5958},
+       {0x15471, 0x595A},
+       {0x15472, 0x5A11},
+       {0x15473, 0x5A18},
+       {0x15474, 0x5A1C},
+       {0x15475, 0x5A1F},
+       {0x15476, 0x5A1B},
+       {0x15477, 0x5A13},
+       {0x15478, 0x59EC},
+       {0x15479, 0x5A20},
+       {0x1547A, 0x5A23},
+       {0x1547B, 0x5A29},
+       {0x1547C, 0x5A25},
+       {0x1547D, 0x5A0C},
+       {0x1547E, 0x5A09},
+       {0x15521, 0x5B6B},
+       {0x15522, 0x5C58},
+       {0x15523, 0x5BB0},
+       {0x15524, 0x5BB3},
+       {0x15525, 0x5BB6},
+       {0x15526, 0x5BB4},
+       {0x15527, 0x5BAE},
+       {0x15528, 0x5BB5},
+       {0x15529, 0x5BB9},
+       {0x1552A, 0x5BB8},
+       {0x1552B, 0x5C04},
+       {0x1552C, 0x5C51},
+       {0x1552D, 0x5C55},
+       {0x1552E, 0x5C50},
+       {0x1552F, 0x5CED},
+       {0x15530, 0x5CFD},
+       {0x15531, 0x5CFB},
+       {0x15532, 0x5CEA},
+       {0x15533, 0x5CE8},
+       {0x15534, 0x5CF0},
+       {0x15535, 0x5CF6},
+       {0x15536, 0x5D01},
+       {0x15537, 0x5CF4},
+       {0x15538, 0x5DEE},
+       {0x15539, 0x5E2D},
+       {0x1553A, 0x5E2B},
+       {0x1553B, 0x5EAB},
+       {0x1553C, 0x5EAD},
+       {0x1553D, 0x5EA7},
+       {0x1553E, 0x5F31},
+       {0x1553F, 0x5F92},
+       {0x15540, 0x5F91},
+       {0x15541, 0x5F90},
+       {0x15542, 0x6059},
+       {0x15543, 0x6063},
+       {0x15544, 0x6065},
+       {0x15545, 0x6050},
+       {0x15546, 0x6055},
+       {0x15547, 0x606D},
+       {0x15548, 0x6069},
+       {0x15549, 0x606F},
+       {0x1554A, 0x6084},
+       {0x1554B, 0x609F},
+       {0x1554C, 0x609A},
+       {0x1554D, 0x608D},
+       {0x1554E, 0x6094},
+       {0x1554F, 0x608C},
+       {0x15550, 0x6085},
+       {0x15551, 0x6096},
+       {0x15552, 0x6247},
+       {0x15553, 0x62F3},
+       {0x15554, 0x6308},
+       {0x15555, 0x62FF},
+       {0x15556, 0x634E},
+       {0x15557, 0x633E},
+       {0x15558, 0x632F},
+       {0x15559, 0x6355},
+       {0x1555A, 0x6342},
+       {0x1555B, 0x6346},
+       {0x1555C, 0x634F},
+       {0x1555D, 0x6349},
+       {0x1555E, 0x633A},
+       {0x1555F, 0x6350},
+       {0x15560, 0x633D},
+       {0x15561, 0x632A},
+       {0x15562, 0x632B},
+       {0x15563, 0x6328},
+       {0x15564, 0x634D},
+       {0x15565, 0x634C},
+       {0x15566, 0x6548},
+       {0x15567, 0x6549},
+       {0x15568, 0x6599},
+       {0x15569, 0x65C1},
+       {0x1556A, 0x65C5},
+       {0x1556B, 0x6642},
+       {0x1556C, 0x6649},
+       {0x1556D, 0x664F},
+       {0x1556E, 0x6643},
+       {0x1556F, 0x6652},
+       {0x15570, 0x664C},
+       {0x15571, 0x6645},
+       {0x15572, 0x6641},
+       {0x15573, 0x66F8},
+       {0x15574, 0x6714},
+       {0x15575, 0x6715},
+       {0x15576, 0x6717},
+       {0x15577, 0x6821},
+       {0x15578, 0x6838},
+       {0x15579, 0x6848},
+       {0x1557A, 0x6846},
+       {0x1557B, 0x6853},
+       {0x1557C, 0x6839},
+       {0x1557D, 0x6842},
+       {0x1557E, 0x6854},
+       {0x15621, 0x6829},
+       {0x15622, 0x68B3},
+       {0x15623, 0x6817},
+       {0x15624, 0x684C},
+       {0x15625, 0x6851},
+       {0x15626, 0x683D},
+       {0x15627, 0x67F4},
+       {0x15628, 0x6850},
+       {0x15629, 0x6840},
+       {0x1562A, 0x683C},
+       {0x1562B, 0x6843},
+       {0x1562C, 0x682A},
+       {0x1562D, 0x6845},
+       {0x1562E, 0x6813},
+       {0x1562F, 0x6818},
+       {0x15630, 0x6841},
+       {0x15631, 0x6B8A},
+       {0x15632, 0x6B89},
+       {0x15633, 0x6BB7},
+       {0x15634, 0x6C23},
+       {0x15635, 0x6C27},
+       {0x15636, 0x6C28},
+       {0x15637, 0x6C26},
+       {0x15638, 0x6C24},
+       {0x15639, 0x6CF0},
+       {0x1563A, 0x6D6A},
+       {0x1563B, 0x6D95},
+       {0x1563C, 0x6D88},
+       {0x1563D, 0x6D87},
+       {0x1563E, 0x6D66},
+       {0x1563F, 0x6D78},
+       {0x15640, 0x6D77},
+       {0x15641, 0x6D59},
+       {0x15642, 0x6D93},
+       {0x15643, 0x6D6C},
+       {0x15644, 0x6D89},
+       {0x15645, 0x6D6E},
+       {0x15646, 0x6D5A},
+       {0x15647, 0x6D74},
+       {0x15648, 0x6D69},
+       {0x15649, 0x6D8C},
+       {0x1564A, 0x6D8A},
+       {0x1564B, 0x6D79},
+       {0x1564C, 0x6D85},
+       {0x1564D, 0x6D65},
+       {0x1564E, 0x6D94},
+       {0x1564F, 0x70CA},
+       {0x15650, 0x70D8},
+       {0x15651, 0x70E4},
+       {0x15652, 0x70D9},
+       {0x15653, 0x70C8},
+       {0x15654, 0x70CF},
+       {0x15655, 0x7239},
+       {0x15656, 0x7279},
+       {0x15657, 0x72FC},
+       {0x15658, 0x72F9},
+       {0x15659, 0x72FD},
+       {0x1565A, 0x72F8},
+       {0x1565B, 0x72F7},
+       {0x1565C, 0x7386},
+       {0x1565D, 0x73ED},
+       {0x1565E, 0x7409},
+       {0x1565F, 0x73EE},
+       {0x15660, 0x73E0},
+       {0x15661, 0x73EA},
+       {0x15662, 0x73DE},
+       {0x15663, 0x7554},
+       {0x15664, 0x755D},
+       {0x15665, 0x755C},
+       {0x15666, 0x755A},
+       {0x15667, 0x7559},
+       {0x15668, 0x75BE},
+       {0x15669, 0x75C5},
+       {0x1566A, 0x75C7},
+       {0x1566B, 0x75B2},
+       {0x1566C, 0x75B3},
+       {0x1566D, 0x75BD},
+       {0x1566E, 0x75BC},
+       {0x1566F, 0x75B9},
+       {0x15670, 0x75C2},
+       {0x15671, 0x75B8},
+       {0x15672, 0x768B},
+       {0x15673, 0x76B0},
+       {0x15674, 0x76CA},
+       {0x15675, 0x76CD},
+       {0x15676, 0x76CE},
+       {0x15677, 0x7729},
+       {0x15678, 0x771F},
+       {0x15679, 0x7720},
+       {0x1567A, 0x7728},
+       {0x1567B, 0x77E9},
+       {0x1567C, 0x7830},
+       {0x1567D, 0x7827},
+       {0x1567E, 0x7838},
+       {0x15721, 0x781D},
+       {0x15722, 0x7834},
+       {0x15723, 0x7837},
+       {0x15724, 0x7825},
+       {0x15725, 0x782D},
+       {0x15726, 0x7820},
+       {0x15727, 0x781F},
+       {0x15728, 0x7832},
+       {0x15729, 0x7955},
+       {0x1572A, 0x7950},
+       {0x1572B, 0x7960},
+       {0x1572C, 0x795F},
+       {0x1572D, 0x7956},
+       {0x1572E, 0x795E},
+       {0x1572F, 0x795D},
+       {0x15730, 0x7957},
+       {0x15731, 0x795A},
+       {0x15732, 0x79E4},
+       {0x15733, 0x79E3},
+       {0x15734, 0x79E7},
+       {0x15735, 0x79DF},
+       {0x15736, 0x79E6},
+       {0x15737, 0x79E9},
+       {0x15738, 0x79D8},
+       {0x15739, 0x7A84},
+       {0x1573A, 0x7A88},
+       {0x1573B, 0x7AD9},
+       {0x1573C, 0x7B06},
+       {0x1573D, 0x7B11},
+       {0x1573E, 0x7C89},
+       {0x1573F, 0x7D21},
+       {0x15740, 0x7D17},
+       {0x15741, 0x7D0B},
+       {0x15742, 0x7D0A},
+       {0x15743, 0x7D20},
+       {0x15744, 0x7D22},
+       {0x15745, 0x7D14},
+       {0x15746, 0x7D10},
+       {0x15747, 0x7D15},
+       {0x15748, 0x7D1A},
+       {0x15749, 0x7D1C},
+       {0x1574A, 0x7D0D},
+       {0x1574B, 0x7D19},
+       {0x1574C, 0x7D1B},
+       {0x1574D, 0x7F3A},
+       {0x1574E, 0x7F5F},
+       {0x1574F, 0x7F94},
+       {0x15750, 0x7FC5},
+       {0x15751, 0x7FC1},
+       {0x15752, 0x8006},
+       {0x15753, 0x8004},
+       {0x15754, 0x8018},
+       {0x15755, 0x8015},
+       {0x15756, 0x8019},
+       {0x15757, 0x8017},
+       {0x15758, 0x803D},
+       {0x15759, 0x803F},
+       {0x1575A, 0x80F1},
+       {0x1575B, 0x8102},
+       {0x1575C, 0x80F0},
+       {0x1575D, 0x8105},
+       {0x1575E, 0x80ED},
+       {0x1575F, 0x80F4},
+       {0x15760, 0x8106},
+       {0x15761, 0x80F8},
+       {0x15762, 0x80F3},
+       {0x15763, 0x8108},
+       {0x15764, 0x80FD},
+       {0x15765, 0x810A},
+       {0x15766, 0x80FC},
+       {0x15767, 0x80EF},
+       {0x15768, 0x81ED},
+       {0x15769, 0x81EC},
+       {0x1576A, 0x8200},
+       {0x1576B, 0x8210},
+       {0x1576C, 0x822A},
+       {0x1576D, 0x822B},
+       {0x1576E, 0x8228},
+       {0x1576F, 0x822C},
+       {0x15770, 0x82BB},
+       {0x15771, 0x832B},
+       {0x15772, 0x8352},
+       {0x15773, 0x8354},
+       {0x15774, 0x834A},
+       {0x15775, 0x8338},
+       {0x15776, 0x8350},
+       {0x15777, 0x8349},
+       {0x15778, 0x8335},
+       {0x15779, 0x8334},
+       {0x1577A, 0x834F},
+       {0x1577B, 0x8332},
+       {0x1577C, 0x8339},
+       {0x1577D, 0x8336},
+       {0x1577E, 0x8317},
+       {0x15821, 0x8340},
+       {0x15822, 0x8331},
+       {0x15823, 0x8328},
+       {0x15824, 0x8343},
+       {0x15825, 0x8654},
+       {0x15826, 0x868A},
+       {0x15827, 0x86AA},
+       {0x15828, 0x8693},
+       {0x15829, 0x86A4},
+       {0x1582A, 0x86A9},
+       {0x1582B, 0x868C},
+       {0x1582C, 0x86A3},
+       {0x1582D, 0x869C},
+       {0x1582E, 0x8870},
+       {0x1582F, 0x8877},
+       {0x15830, 0x8881},
+       {0x15831, 0x8882},
+       {0x15832, 0x887D},
+       {0x15833, 0x8879},
+       {0x15834, 0x8A18},
+       {0x15835, 0x8A10},
+       {0x15836, 0x8A0E},
+       {0x15837, 0x8A0C},
+       {0x15838, 0x8A15},
+       {0x15839, 0x8A0A},
+       {0x1583A, 0x8A17},
+       {0x1583B, 0x8A13},
+       {0x1583C, 0x8A16},
+       {0x1583D, 0x8A0F},
+       {0x1583E, 0x8A11},
+       {0x1583F, 0x8C48},
+       {0x15840, 0x8C7A},
+       {0x15841, 0x8C79},
+       {0x15842, 0x8CA1},
+       {0x15843, 0x8CA2},
+       {0x15844, 0x8D77},
+       {0x15845, 0x8EAC},
+       {0x15846, 0x8ED2},
+       {0x15847, 0x8ED4},
+       {0x15848, 0x8ECF},
+       {0x15849, 0x8FB1},
+       {0x1584A, 0x9001},
+       {0x1584B, 0x9006},
+       {0x1584C, 0x8FF7},
+       {0x1584D, 0x9000},
+       {0x1584E, 0x8FFA},
+       {0x1584F, 0x8FF4},
+       {0x15850, 0x9003},
+       {0x15851, 0x8FFD},
+       {0x15852, 0x9005},
+       {0x15853, 0x8FF8},
+       {0x15854, 0x9095},
+       {0x15855, 0x90E1},
+       {0x15856, 0x90DD},
+       {0x15857, 0x90E2},
+       {0x15858, 0x9152},
+       {0x15859, 0x914D},
+       {0x1585A, 0x914C},
+       {0x1585B, 0x91D8},
+       {0x1585C, 0x91DD},
+       {0x1585D, 0x91D7},
+       {0x1585E, 0x91DC},
+       {0x1585F, 0x91D9},
+       {0x15860, 0x9583},
+       {0x15861, 0x9662},
+       {0x15862, 0x9663},
+       {0x15863, 0x9661},
+       {0x15864, 0x965B},
+       {0x15865, 0x965D},
+       {0x15866, 0x9664},
+       {0x15867, 0x9658},
+       {0x15868, 0x965E},
+       {0x15869, 0x96BB},
+       {0x1586A, 0x98E2},
+       {0x1586B, 0x99AC},
+       {0x1586C, 0x9AA8},
+       {0x1586D, 0x9AD8},
+       {0x1586E, 0x9B25},
+       {0x1586F, 0x9B32},
+       {0x15870, 0x9B3C},
+       {0x15871, 0x4E7E},
+       {0x15872, 0x507A},
+       {0x15873, 0x507D},
+       {0x15874, 0x505C},
+       {0x15875, 0x5047},
+       {0x15876, 0x5043},
+       {0x15877, 0x504C},
+       {0x15878, 0x505A},
+       {0x15879, 0x5049},
+       {0x1587A, 0x5065},
+       {0x1587B, 0x5076},
+       {0x1587C, 0x504E},
+       {0x1587D, 0x5055},
+       {0x1587E, 0x5075},
+       {0x15921, 0x5074},
+       {0x15922, 0x5077},
+       {0x15923, 0x504F},
+       {0x15924, 0x500F},
+       {0x15925, 0x506F},
+       {0x15926, 0x506D},
+       {0x15927, 0x515C},
+       {0x15928, 0x5195},
+       {0x15929, 0x51F0},
+       {0x1592A, 0x526A},
+       {0x1592B, 0x526F},
+       {0x1592C, 0x52D2},
+       {0x1592D, 0x52D9},
+       {0x1592E, 0x52D8},
+       {0x1592F, 0x52D5},
+       {0x15930, 0x5310},
+       {0x15931, 0x530F},
+       {0x15932, 0x5319},
+       {0x15933, 0x533F},
+       {0x15934, 0x5340},
+       {0x15935, 0x533E},
+       {0x15936, 0x53C3},
+       {0x15937, 0x66FC},
+       {0x15938, 0x5546},
+       {0x15939, 0x556A},
+       {0x1593A, 0x5566},
+       {0x1593B, 0x5544},
+       {0x1593C, 0x555E},
+       {0x1593D, 0x5561},
+       {0x1593E, 0x5543},
+       {0x1593F, 0x554A},
+       {0x15940, 0x5531},
+       {0x15941, 0x5556},
+       {0x15942, 0x554F},
+       {0x15943, 0x5555},
+       {0x15944, 0x552F},
+       {0x15945, 0x5564},
+       {0x15946, 0x5538},
+       {0x15947, 0x552E},
+       {0x15948, 0x555C},
+       {0x15949, 0x552C},
+       {0x1594A, 0x5563},
+       {0x1594B, 0x5533},
+       {0x1594C, 0x5541},
+       {0x1594D, 0x5557},
+       {0x1594E, 0x5708},
+       {0x1594F, 0x570B},
+       {0x15950, 0x5709},
+       {0x15951, 0x57DF},
+       {0x15952, 0x5805},
+       {0x15953, 0x580A},
+       {0x15954, 0x5806},
+       {0x15955, 0x57E0},
+       {0x15956, 0x57E4},
+       {0x15957, 0x57FA},
+       {0x15958, 0x5802},
+       {0x15959, 0x5835},
+       {0x1595A, 0x57F7},
+       {0x1595B, 0x57F9},
+       {0x1595C, 0x5920},
+       {0x1595D, 0x5962},
+       {0x1595E, 0x5A36},
+       {0x1595F, 0x5A41},
+       {0x15960, 0x5A49},
+       {0x15961, 0x5A66},
+       {0x15962, 0x5A6A},
+       {0x15963, 0x5A40},
+       {0x15964, 0x5A3C},
+       {0x15965, 0x5A62},
+       {0x15966, 0x5A5A},
+       {0x15967, 0x5A46},
+       {0x15968, 0x5A4A},
+       {0x15969, 0x5B70},
+       {0x1596A, 0x5BC7},
+       {0x1596B, 0x5BC5},
+       {0x1596C, 0x5BC4},
+       {0x1596D, 0x5BC2},
+       {0x1596E, 0x5BBF},
+       {0x1596F, 0x5BC6},
+       {0x15970, 0x5C09},
+       {0x15971, 0x5C08},
+       {0x15972, 0x5C07},
+       {0x15973, 0x5C60},
+       {0x15974, 0x5C5C},
+       {0x15975, 0x5C5D},
+       {0x15976, 0x5D07},
+       {0x15977, 0x5D06},
+       {0x15978, 0x5D0E},
+       {0x15979, 0x5D1B},
+       {0x1597A, 0x5D16},
+       {0x1597B, 0x5D22},
+       {0x1597C, 0x5D11},
+       {0x1597D, 0x5D29},
+       {0x1597E, 0x5D14},
+       {0x15A21, 0x5D19},
+       {0x15A22, 0x5D24},
+       {0x15A23, 0x5D27},
+       {0x15A24, 0x5D17},
+       {0x15A25, 0x5DE2},
+       {0x15A26, 0x5E38},
+       {0x15A27, 0x5E36},
+       {0x15A28, 0x5E33},
+       {0x15A29, 0x5E37},
+       {0x15A2A, 0x5EB7},
+       {0x15A2B, 0x5EB8},
+       {0x15A2C, 0x5EB6},
+       {0x15A2D, 0x5EB5},
+       {0x15A2E, 0x5EBE},
+       {0x15A2F, 0x5F35},
+       {0x15A30, 0x5F37},
+       {0x15A31, 0x5F57},
+       {0x15A32, 0x5F6C},
+       {0x15A33, 0x5F69},
+       {0x15A34, 0x5F6B},
+       {0x15A35, 0x5F97},
+       {0x15A36, 0x5F99},
+       {0x15A37, 0x5F9E},
+       {0x15A38, 0x5F98},
+       {0x15A39, 0x5FA1},
+       {0x15A3A, 0x5FA0},
+       {0x15A3B, 0x5F9C},
+       {0x15A3C, 0x607F},
+       {0x15A3D, 0x60A3},
+       {0x15A3E, 0x6089},
+       {0x15A3F, 0x60A0},
+       {0x15A40, 0x60A8},
+       {0x15A41, 0x60CB},
+       {0x15A42, 0x60B4},
+       {0x15A43, 0x60E6},
+       {0x15A44, 0x60BD},
+       {0x15A45, 0x60C5},
+       {0x15A46, 0x60BB},
+       {0x15A47, 0x60B5},
+       {0x15A48, 0x60DC},
+       {0x15A49, 0x60BC},
+       {0x15A4A, 0x60D8},
+       {0x15A4B, 0x60D5},
+       {0x15A4C, 0x60C6},
+       {0x15A4D, 0x60DF},
+       {0x15A4E, 0x60B8},
+       {0x15A4F, 0x60DA},
+       {0x15A50, 0x60C7},
+       {0x15A51, 0x621A},
+       {0x15A52, 0x621B},
+       {0x15A53, 0x6248},
+       {0x15A54, 0x63A0},
+       {0x15A55, 0x63A7},
+       {0x15A56, 0x6372},
+       {0x15A57, 0x6396},
+       {0x15A58, 0x63A2},
+       {0x15A59, 0x63A5},
+       {0x15A5A, 0x6377},
+       {0x15A5B, 0x6367},
+       {0x15A5C, 0x6398},
+       {0x15A5D, 0x63AA},
+       {0x15A5E, 0x6371},
+       {0x15A5F, 0x63A9},
+       {0x15A60, 0x6389},
+       {0x15A61, 0x6383},
+       {0x15A62, 0x639B},
+       {0x15A63, 0x636B},
+       {0x15A64, 0x63A8},
+       {0x15A65, 0x6384},
+       {0x15A66, 0x6388},
+       {0x15A67, 0x6399},
+       {0x15A68, 0x63A1},
+       {0x15A69, 0x63AC},
+       {0x15A6A, 0x6392},
+       {0x15A6B, 0x638F},
+       {0x15A6C, 0x6380},
+       {0x15A6D, 0x637B},
+       {0x15A6E, 0x6369},
+       {0x15A6F, 0x6368},
+       {0x15A70, 0x637A},
+       {0x15A71, 0x655D},
+       {0x15A72, 0x6556},
+       {0x15A73, 0x6551},
+       {0x15A74, 0x6559},
+       {0x15A75, 0x6557},
+       {0x15A76, 0x555F},
+       {0x15A77, 0x654F},
+       {0x15A78, 0x6558},
+       {0x15A79, 0x6555},
+       {0x15A7A, 0x6554},
+       {0x15A7B, 0x659C},
+       {0x15A7C, 0x659B},
+       {0x15A7D, 0x65AC},
+       {0x15A7E, 0x65CF},
+       {0x15B21, 0x65CB},
+       {0x15B22, 0x65CC},
+       {0x15B23, 0x65CE},
+       {0x15B24, 0x665D},
+       {0x15B25, 0x665A},
+       {0x15B26, 0x6664},
+       {0x15B27, 0x6668},
+       {0x15B28, 0x6666},
+       {0x15B29, 0x665E},
+       {0x15B2A, 0x66F9},
+       {0x15B2B, 0x52D7},
+       {0x15B2C, 0x671B},
+       {0x15B2D, 0x6881},
+       {0x15B2E, 0x68AF},
+       {0x15B2F, 0x68A2},
+       {0x15B30, 0x6893},
+       {0x15B31, 0x68B5},
+       {0x15B32, 0x687F},
+       {0x15B33, 0x6876},
+       {0x15B34, 0x68B1},
+       {0x15B35, 0x68A7},
+       {0x15B36, 0x6897},
+       {0x15B37, 0x68B0},
+       {0x15B38, 0x6883},
+       {0x15B39, 0x68C4},
+       {0x15B3A, 0x68AD},
+       {0x15B3B, 0x6886},
+       {0x15B3C, 0x6885},
+       {0x15B3D, 0x6894},
+       {0x15B3E, 0x689D},
+       {0x15B3F, 0x68A8},
+       {0x15B40, 0x689F},
+       {0x15B41, 0x68A1},
+       {0x15B42, 0x6882},
+       {0x15B43, 0x6B32},
+       {0x15B44, 0x6BBA},
+       {0x15B45, 0x6BEB},
+       {0x15B46, 0x6BEC},
+       {0x15B47, 0x6C2B},
+       {0x15B48, 0x6D8E},
+       {0x15B49, 0x6DBC},
+       {0x15B4A, 0x6DF3},
+       {0x15B4B, 0x6DD9},
+       {0x15B4C, 0x6DB2},
+       {0x15B4D, 0x6DE1},
+       {0x15B4E, 0x6DCC},
+       {0x15B4F, 0x6DE4},
+       {0x15B50, 0x6DFB},
+       {0x15B51, 0x6DFA},
+       {0x15B52, 0x6E05},
+       {0x15B53, 0x6DC7},
+       {0x15B54, 0x6DCB},
+       {0x15B55, 0x6DAF},
+       {0x15B56, 0x6DD1},
+       {0x15B57, 0x6DAE},
+       {0x15B58, 0x6DDE},
+       {0x15B59, 0x6DF9},
+       {0x15B5A, 0x6DB8},
+       {0x15B5B, 0x6DF7},
+       {0x15B5C, 0x6DF5},
+       {0x15B5D, 0x6DC5},
+       {0x15B5E, 0x6DD2},
+       {0x15B5F, 0x6E1A},
+       {0x15B60, 0x6DB5},
+       {0x15B61, 0x6DDA},
+       {0x15B62, 0x6DEB},
+       {0x15B63, 0x6DD8},
+       {0x15B64, 0x6DEA},
+       {0x15B65, 0x6DF1},
+       {0x15B66, 0x6DEE},
+       {0x15B67, 0x6DE8},
+       {0x15B68, 0x6DC6},
+       {0x15B69, 0x6DC4},
+       {0x15B6A, 0x6DAA},
+       {0x15B6B, 0x6DEC},
+       {0x15B6C, 0x6DBF},
+       {0x15B6D, 0x6DE6},
+       {0x15B6E, 0x70F9},
+       {0x15B6F, 0x7109},
+       {0x15B70, 0x710A},
+       {0x15B71, 0x70FD},
+       {0x15B72, 0x70EF},
+       {0x15B73, 0x723D},
+       {0x15B74, 0x727D},
+       {0x15B75, 0x7281},
+       {0x15B76, 0x731C},
+       {0x15B77, 0x731B},
+       {0x15B78, 0x7316},
+       {0x15B79, 0x7313},
+       {0x15B7A, 0x7319},
+       {0x15B7B, 0x7387},
+       {0x15B7C, 0x7405},
+       {0x15B7D, 0x740A},
+       {0x15B7E, 0x7403},
+       {0x15C21, 0x7406},
+       {0x15C22, 0x73FE},
+       {0x15C23, 0x740D},
+       {0x15C24, 0x74E0},
+       {0x15C25, 0x74F6},
+       {0x15C26, 0x74F7},
+       {0x15C27, 0x751C},
+       {0x15C28, 0x7522},
+       {0x15C29, 0x7565},
+       {0x15C2A, 0x7566},
+       {0x15C2B, 0x7562},
+       {0x15C2C, 0x7570},
+       {0x15C2D, 0x758F},
+       {0x15C2E, 0x75D4},
+       {0x15C2F, 0x75D5},
+       {0x15C30, 0x75B5},
+       {0x15C31, 0x75CA},
+       {0x15C32, 0x75CD},
+       {0x15C33, 0x768E},
+       {0x15C34, 0x76D4},
+       {0x15C35, 0x76D2},
+       {0x15C36, 0x76DB},
+       {0x15C37, 0x7737},
+       {0x15C38, 0x773E},
+       {0x15C39, 0x773C},
+       {0x15C3A, 0x7736},
+       {0x15C3B, 0x7738},
+       {0x15C3C, 0x773A},
+       {0x15C3D, 0x786B},
+       {0x15C3E, 0x7843},
+       {0x15C3F, 0x784E},
+       {0x15C40, 0x7965},
+       {0x15C41, 0x7968},
+       {0x15C42, 0x796D},
+       {0x15C43, 0x79FB},
+       {0x15C44, 0x7A92},
+       {0x15C45, 0x7A95},
+       {0x15C46, 0x7B20},
+       {0x15C47, 0x7B28},
+       {0x15C48, 0x7B1B},
+       {0x15C49, 0x7B2C},
+       {0x15C4A, 0x7B26},
+       {0x15C4B, 0x7B19},
+       {0x15C4C, 0x7B1E},
+       {0x15C4D, 0x7B2E},
+       {0x15C4E, 0x7C92},
+       {0x15C4F, 0x7C97},
+       {0x15C50, 0x7C95},
+       {0x15C51, 0x7D46},
+       {0x15C52, 0x7D43},
+       {0x15C53, 0x7D71},
+       {0x15C54, 0x7D2E},
+       {0x15C55, 0x7D39},
+       {0x15C56, 0x7D3C},
+       {0x15C57, 0x7D40},
+       {0x15C58, 0x7D30},
+       {0x15C59, 0x7D33},
+       {0x15C5A, 0x7D44},
+       {0x15C5B, 0x7D2F},
+       {0x15C5C, 0x7D42},
+       {0x15C5D, 0x7D32},
+       {0x15C5E, 0x7D31},
+       {0x15C5F, 0x7F3D},
+       {0x15C60, 0x7F9E},
+       {0x15C61, 0x7F9A},
+       {0x15C62, 0x7FCC},
+       {0x15C63, 0x7FCE},
+       {0x15C64, 0x7FD2},
+       {0x15C65, 0x801C},
+       {0x15C66, 0x804A},
+       {0x15C67, 0x8046},
+       {0x15C68, 0x812F},
+       {0x15C69, 0x8116},
+       {0x15C6A, 0x8123},
+       {0x15C6B, 0x812B},
+       {0x15C6C, 0x8129},
+       {0x15C6D, 0x8130},
+       {0x15C6E, 0x8124},
+       {0x15C6F, 0x8202},
+       {0x15C70, 0x8235},
+       {0x15C71, 0x8237},
+       {0x15C72, 0x8236},
+       {0x15C73, 0x8239},
+       {0x15C74, 0x838E},
+       {0x15C75, 0x839E},
+       {0x15C76, 0x8398},
+       {0x15C77, 0x8378},
+       {0x15C78, 0x83A2},
+       {0x15C79, 0x8396},
+       {0x15C7A, 0x83BD},
+       {0x15C7B, 0x83AB},
+       {0x15C7C, 0x8392},
+       {0x15C7D, 0x838A},
+       {0x15C7E, 0x8393},
+       {0x15D21, 0x8389},
+       {0x15D22, 0x83A0},
+       {0x15D23, 0x8377},
+       {0x15D24, 0x837B},
+       {0x15D25, 0x837C},
+       {0x15D26, 0x8386},
+       {0x15D27, 0x83A7},
+       {0x15D28, 0x8655},
+       {0x15D29, 0x5F6A},
+       {0x15D2A, 0x86C7},
+       {0x15D2B, 0x86C0},
+       {0x15D2C, 0x86B6},
+       {0x15D2D, 0x86C4},
+       {0x15D2E, 0x86B5},
+       {0x15D2F, 0x86C6},
+       {0x15D30, 0x86CB},
+       {0x15D31, 0x86B1},
+       {0x15D32, 0x86AF},
+       {0x15D33, 0x86C9},
+       {0x15D34, 0x8853},
+       {0x15D35, 0x889E},
+       {0x15D36, 0x8888},
+       {0x15D37, 0x88AB},
+       {0x15D38, 0x8892},
+       {0x15D39, 0x8896},
+       {0x15D3A, 0x888D},
+       {0x15D3B, 0x888B},
+       {0x15D3C, 0x8993},
+       {0x15D3D, 0x898F},
+       {0x15D3E, 0x8A2A},
+       {0x15D3F, 0x8A1D},
+       {0x15D40, 0x8A23},
+       {0x15D41, 0x8A25},
+       {0x15D42, 0x8A31},
+       {0x15D43, 0x8A2D},
+       {0x15D44, 0x8A1F},
+       {0x15D45, 0x8A1B},
+       {0x15D46, 0x8A22},
+       {0x15D47, 0x8C49},
+       {0x15D48, 0x8C5A},
+       {0x15D49, 0x8CA9},
+       {0x15D4A, 0x8CAC},
+       {0x15D4B, 0x8CAB},
+       {0x15D4C, 0x8CA8},
+       {0x15D4D, 0x8CAA},
+       {0x15D4E, 0x8CA7},
+       {0x15D4F, 0x8D67},
+       {0x15D50, 0x8D66},
+       {0x15D51, 0x8DBE},
+       {0x15D52, 0x8DBA},
+       {0x15D53, 0x8EDB},
+       {0x15D54, 0x8EDF},
+       {0x15D55, 0x9019},
+       {0x15D56, 0x900D},
+       {0x15D57, 0x901A},
+       {0x15D58, 0x9017},
+       {0x15D59, 0x9023},
+       {0x15D5A, 0x901F},
+       {0x15D5B, 0x901D},
+       {0x15D5C, 0x9010},
+       {0x15D5D, 0x9015},
+       {0x15D5E, 0x901E},
+       {0x15D5F, 0x9020},
+       {0x15D60, 0x900F},
+       {0x15D61, 0x9022},
+       {0x15D62, 0x9016},
+       {0x15D63, 0x901B},
+       {0x15D64, 0x9014},
+       {0x15D65, 0x90E8},
+       {0x15D66, 0x90ED},
+       {0x15D67, 0x90FD},
+       {0x15D68, 0x9157},
+       {0x15D69, 0x91CE},
+       {0x15D6A, 0x91F5},
+       {0x15D6B, 0x91E6},
+       {0x15D6C, 0x91E3},
+       {0x15D6D, 0x91E7},
+       {0x15D6E, 0x91ED},
+       {0x15D6F, 0x91E9},
+       {0x15D70, 0x9589},
+       {0x15D71, 0x966A},
+       {0x15D72, 0x9675},
+       {0x15D73, 0x9673},
+       {0x15D74, 0x9678},
+       {0x15D75, 0x9670},
+       {0x15D76, 0x9674},
+       {0x15D77, 0x9676},
+       {0x15D78, 0x9677},
+       {0x15D79, 0x966C},
+       {0x15D7A, 0x96C0},
+       {0x15D7B, 0x96EA},
+       {0x15D7C, 0x96E9},
+       {0x15D7D, 0x7AE0},
+       {0x15D7E, 0x7ADF},
+       {0x15E21, 0x9802},
+       {0x15E22, 0x9803},
+       {0x15E23, 0x9B5A},
+       {0x15E24, 0x9CE5},
+       {0x15E25, 0x9E75},
+       {0x15E26, 0x9E7F},
+       {0x15E27, 0x9EA5},
+       {0x15E28, 0x9EBB},
+       {0x15E29, 0x50A2},
+       {0x15E2A, 0x508D},
+       {0x15E2B, 0x5085},
+       {0x15E2C, 0x5099},
+       {0x15E2D, 0x5091},
+       {0x15E2E, 0x5080},
+       {0x15E2F, 0x5096},
+       {0x15E30, 0x5098},
+       {0x15E31, 0x509A},
+       {0x15E32, 0x6700},
+       {0x15E33, 0x51F1},
+       {0x15E34, 0x5272},
+       {0x15E35, 0x5274},
+       {0x15E36, 0x5275},
+       {0x15E37, 0x5269},
+       {0x15E38, 0x52DE},
+       {0x15E39, 0x52DD},
+       {0x15E3A, 0x52DB},
+       {0x15E3B, 0x535A},
+       {0x15E3C, 0x53A5},
+       {0x15E3D, 0x557B},
+       {0x15E3E, 0x5580},
+       {0x15E3F, 0x55A7},
+       {0x15E40, 0x557C},
+       {0x15E41, 0x558A},
+       {0x15E42, 0x559D},
+       {0x15E43, 0x5598},
+       {0x15E44, 0x5582},
+       {0x15E45, 0x559C},
+       {0x15E46, 0x55AA},
+       {0x15E47, 0x5594},
+       {0x15E48, 0x5587},
+       {0x15E49, 0x558B},
+       {0x15E4A, 0x5583},
+       {0x15E4B, 0x55B3},
+       {0x15E4C, 0x55AE},
+       {0x15E4D, 0x559F},
+       {0x15E4E, 0x553E},
+       {0x15E4F, 0x55B2},
+       {0x15E50, 0x559A},
+       {0x15E51, 0x55BB},
+       {0x15E52, 0x55AC},
+       {0x15E53, 0x55B1},
+       {0x15E54, 0x557E},
+       {0x15E55, 0x5589},
+       {0x15E56, 0x55AB},
+       {0x15E57, 0x5599},
+       {0x15E58, 0x570D},
+       {0x15E59, 0x582F},
+       {0x15E5A, 0x582A},
+       {0x15E5B, 0x5834},
+       {0x15E5C, 0x5824},
+       {0x15E5D, 0x5830},
+       {0x15E5E, 0x5831},
+       {0x15E5F, 0x5821},
+       {0x15E60, 0x581D},
+       {0x15E61, 0x5820},
+       {0x15E62, 0x58F9},
+       {0x15E63, 0x58FA},
+       {0x15E64, 0x5960},
+       {0x15E65, 0x5A77},
+       {0x15E66, 0x5A9A},
+       {0x15E67, 0x5A7F},
+       {0x15E68, 0x5A92},
+       {0x15E69, 0x5A9B},
+       {0x15E6A, 0x5AA7},
+       {0x15E6B, 0x5B73},
+       {0x15E6C, 0x5B71},
+       {0x15E6D, 0x5BD2},
+       {0x15E6E, 0x5BCC},
+       {0x15E6F, 0x5BD3},
+       {0x15E70, 0x5BD0},
+       {0x15E71, 0x5C0A},
+       {0x15E72, 0x5C0B},
+       {0x15E73, 0x5C31},
+       {0x15E74, 0x5D4C},
+       {0x15E75, 0x5D50},
+       {0x15E76, 0x5D34},
+       {0x15E77, 0x5D47},
+       {0x15E78, 0x5DFD},
+       {0x15E79, 0x5E45},
+       {0x15E7A, 0x5E3D},
+       {0x15E7B, 0x5E40},
+       {0x15E7C, 0x5E43},
+       {0x15E7D, 0x5E7E},
+       {0x15E7E, 0x5ECA},
+       {0x15F21, 0x5EC1},
+       {0x15F22, 0x5EC2},
+       {0x15F23, 0x5EC4},
+       {0x15F24, 0x5F3C},
+       {0x15F25, 0x5F6D},
+       {0x15F26, 0x5FA9},
+       {0x15F27, 0x5FAA},
+       {0x15F28, 0x5FA8},
+       {0x15F29, 0x60D1},
+       {0x15F2A, 0x60E1},
+       {0x15F2B, 0x60B2},
+       {0x15F2C, 0x60B6},
+       {0x15F2D, 0x60E0},
+       {0x15F2E, 0x611C},
+       {0x15F2F, 0x6123},
+       {0x15F30, 0x60FA},
+       {0x15F31, 0x6115},
+       {0x15F32, 0x60F0},
+       {0x15F33, 0x60FB},
+       {0x15F34, 0x60F4},
+       {0x15F35, 0x6168},
+       {0x15F36, 0x60F1},
+       {0x15F37, 0x610E},
+       {0x15F38, 0x60F6},
+       {0x15F39, 0x6109},
+       {0x15F3A, 0x6100},
+       {0x15F3B, 0x6112},
+       {0x15F3C, 0x621F},
+       {0x15F3D, 0x6249},
+       {0x15F3E, 0x63A3},
+       {0x15F3F, 0x638C},
+       {0x15F40, 0x63CF},
+       {0x15F41, 0x63C0},
+       {0x15F42, 0x63E9},
+       {0x15F43, 0x63C9},
+       {0x15F44, 0x63C6},
+       {0x15F45, 0x63CD},
+       {0x15F46, 0x63D2},
+       {0x15F47, 0x63E3},
+       {0x15F48, 0x63D0},
+       {0x15F49, 0x63E1},
+       {0x15F4A, 0x63D6},
+       {0x15F4B, 0x63ED},
+       {0x15F4C, 0x63EE},
+       {0x15F4D, 0x6376},
+       {0x15F4E, 0x63F4},
+       {0x15F4F, 0x63EA},
+       {0x15F50, 0x63DB},
+       {0x15F51, 0x6452},
+       {0x15F52, 0x63DA},
+       {0x15F53, 0x63F9},
+       {0x15F54, 0x655E},
+       {0x15F55, 0x6566},
+       {0x15F56, 0x6562},
+       {0x15F57, 0x6563},
+       {0x15F58, 0x6591},
+       {0x15F59, 0x6590},
+       {0x15F5A, 0x65AF},
+       {0x15F5B, 0x666E},
+       {0x15F5C, 0x6670},
+       {0x15F5D, 0x6674},
+       {0x15F5E, 0x6676},
+       {0x15F5F, 0x666F},
+       {0x15F60, 0x6691},
+       {0x15F61, 0x667A},
+       {0x15F62, 0x667E},
+       {0x15F63, 0x6677},
+       {0x15F64, 0x66FE},
+       {0x15F65, 0x66FF},
+       {0x15F66, 0x671F},
+       {0x15F67, 0x671D},
+       {0x15F68, 0x68FA},
+       {0x15F69, 0x68D5},
+       {0x15F6A, 0x68E0},
+       {0x15F6B, 0x68D8},
+       {0x15F6C, 0x68D7},
+       {0x15F6D, 0x6905},
+       {0x15F6E, 0x68DF},
+       {0x15F6F, 0x68F5},
+       {0x15F70, 0x68EE},
+       {0x15F71, 0x68E7},
+       {0x15F72, 0x68F9},
+       {0x15F73, 0x68D2},
+       {0x15F74, 0x68F2},
+       {0x15F75, 0x68E3},
+       {0x15F76, 0x68CB},
+       {0x15F77, 0x68CD},
+       {0x15F78, 0x690D},
+       {0x15F79, 0x6912},
+       {0x15F7A, 0x690E},
+       {0x15F7B, 0x68C9},
+       {0x15F7C, 0x68DA},
+       {0x15F7D, 0x696E},
+       {0x15F7E, 0x68FB},
+       {0x16021, 0x6B3E},
+       {0x16022, 0x6B3A},
+       {0x16023, 0x6B3D},
+       {0x16024, 0x6B98},
+       {0x16025, 0x6B96},
+       {0x16026, 0x6BBC},
+       {0x16027, 0x6BEF},
+       {0x16028, 0x6C2E},
+       {0x16029, 0x6C2F},
+       {0x1602A, 0x6C2C},
+       {0x1602B, 0x6E2F},
+       {0x1602C, 0x6E38},
+       {0x1602D, 0x6E54},
+       {0x1602E, 0x6E21},
+       {0x1602F, 0x6E32},
+       {0x16030, 0x6E67},
+       {0x16031, 0x6E4A},
+       {0x16032, 0x6E20},
+       {0x16033, 0x6E25},
+       {0x16034, 0x6E23},
+       {0x16035, 0x6E1B},
+       {0x16036, 0x6E5B},
+       {0x16037, 0x6E58},
+       {0x16038, 0x6E24},
+       {0x16039, 0x6E56},
+       {0x1603A, 0x6E6E},
+       {0x1603B, 0x6E2D},
+       {0x1603C, 0x6E26},
+       {0x1603D, 0x6E6F},
+       {0x1603E, 0x6E34},
+       {0x1603F, 0x6E4D},
+       {0x16040, 0x6E3A},
+       {0x16041, 0x6E2C},
+       {0x16042, 0x6E43},
+       {0x16043, 0x6E1D},
+       {0x16044, 0x6E3E},
+       {0x16045, 0x6ECB},
+       {0x16046, 0x6E89},
+       {0x16047, 0x6E19},
+       {0x16048, 0x6E4E},
+       {0x16049, 0x6E63},
+       {0x1604A, 0x6E44},
+       {0x1604B, 0x6E72},
+       {0x1604C, 0x6E69},
+       {0x1604D, 0x6E5F},
+       {0x1604E, 0x7119},
+       {0x1604F, 0x711A},
+       {0x16050, 0x7126},
+       {0x16051, 0x7130},
+       {0x16052, 0x7121},
+       {0x16053, 0x7136},
+       {0x16054, 0x716E},
+       {0x16055, 0x711C},
+       {0x16056, 0x724C},
+       {0x16057, 0x7284},
+       {0x16058, 0x7280},
+       {0x16059, 0x7336},
+       {0x1605A, 0x7325},
+       {0x1605B, 0x7334},
+       {0x1605C, 0x7329},
+       {0x1605D, 0x743A},
+       {0x1605E, 0x742A},
+       {0x1605F, 0x7433},
+       {0x16060, 0x7422},
+       {0x16061, 0x7425},
+       {0x16062, 0x7435},
+       {0x16063, 0x7436},
+       {0x16064, 0x7434},
+       {0x16065, 0x742F},
+       {0x16066, 0x741B},
+       {0x16067, 0x7426},
+       {0x16068, 0x7428},
+       {0x16069, 0x7525},
+       {0x1606A, 0x7526},
+       {0x1606B, 0x756B},
+       {0x1606C, 0x756A},
+       {0x1606D, 0x75E2},
+       {0x1606E, 0x75DB},
+       {0x1606F, 0x75E3},
+       {0x16070, 0x75D9},
+       {0x16071, 0x75D8},
+       {0x16072, 0x75DE},
+       {0x16073, 0x75E0},
+       {0x16074, 0x767B},
+       {0x16075, 0x767C},
+       {0x16076, 0x7696},
+       {0x16077, 0x7693},
+       {0x16078, 0x76B4},
+       {0x16079, 0x76DC},
+       {0x1607A, 0x774F},
+       {0x1607B, 0x77ED},
+       {0x1607C, 0x785D},
+       {0x1607D, 0x786C},
+       {0x1607E, 0x786F},
+       {0x16121, 0x7A0D},
+       {0x16122, 0x7A08},
+       {0x16123, 0x7A0B},
+       {0x16124, 0x7A05},
+       {0x16125, 0x7A00},
+       {0x16126, 0x7A98},
+       {0x16127, 0x7A97},
+       {0x16128, 0x7A96},
+       {0x16129, 0x7AE5},
+       {0x1612A, 0x7AE3},
+       {0x1612B, 0x7B49},
+       {0x1612C, 0x7B56},
+       {0x1612D, 0x7B46},
+       {0x1612E, 0x7B50},
+       {0x1612F, 0x7B52},
+       {0x16130, 0x7B54},
+       {0x16131, 0x7B4D},
+       {0x16132, 0x7B4B},
+       {0x16133, 0x7B4F},
+       {0x16134, 0x7B51},
+       {0x16135, 0x7C9F},
+       {0x16136, 0x7CA5},
+       {0x16137, 0x7D5E},
+       {0x16138, 0x7D50},
+       {0x16139, 0x7D68},
+       {0x1613A, 0x7D55},
+       {0x1613B, 0x7D2B},
+       {0x1613C, 0x7D6E},
+       {0x1613D, 0x7D72},
+       {0x1613E, 0x7D61},
+       {0x1613F, 0x7D66},
+       {0x16140, 0x7D62},
+       {0x16141, 0x7D70},
+       {0x16142, 0x7D73},
+       {0x16143, 0x5584},
+       {0x16144, 0x7FD4},
+       {0x16145, 0x7FD5},
+       {0x16146, 0x800B},
+       {0x16147, 0x8052},
+       {0x16148, 0x8085},
+       {0x16149, 0x8155},
+       {0x1614A, 0x8154},
+       {0x1614B, 0x814B},
+       {0x1614C, 0x8151},
+       {0x1614D, 0x814E},
+       {0x1614E, 0x8139},
+       {0x1614F, 0x8146},
+       {0x16150, 0x813E},
+       {0x16151, 0x814C},
+       {0x16152, 0x8153},
+       {0x16153, 0x8174},
+       {0x16154, 0x8212},
+       {0x16155, 0x821C},
+       {0x16156, 0x83E9},
+       {0x16157, 0x8403},
+       {0x16158, 0x83F8},
+       {0x16159, 0x840D},
+       {0x1615A, 0x83E0},
+       {0x1615B, 0x83C5},
+       {0x1615C, 0x840B},
+       {0x1615D, 0x83C1},
+       {0x1615E, 0x83EF},
+       {0x1615F, 0x83F1},
+       {0x16160, 0x83F4},
+       {0x16161, 0x8457},
+       {0x16162, 0x840A},
+       {0x16163, 0x83F0},
+       {0x16164, 0x840C},
+       {0x16165, 0x83CC},
+       {0x16166, 0x83FD},
+       {0x16167, 0x83F2},
+       {0x16168, 0x83CA},
+       {0x16169, 0x8438},
+       {0x1616A, 0x840E},
+       {0x1616B, 0x8404},
+       {0x1616C, 0x83DC},
+       {0x1616D, 0x8407},
+       {0x1616E, 0x83D4},
+       {0x1616F, 0x83DF},
+       {0x16170, 0x865B},
+       {0x16171, 0x86DF},
+       {0x16172, 0x86D9},
+       {0x16173, 0x86ED},
+       {0x16174, 0x86D4},
+       {0x16175, 0x86DB},
+       {0x16176, 0x86E4},
+       {0x16177, 0x86D0},
+       {0x16178, 0x86DE},
+       {0x16179, 0x8857},
+       {0x1617A, 0x88C1},
+       {0x1617B, 0x88C2},
+       {0x1617C, 0x88B1},
+       {0x1617D, 0x8983},
+       {0x1617E, 0x8996},
+       {0x16221, 0x8A3B},
+       {0x16222, 0x8A60},
+       {0x16223, 0x8A55},
+       {0x16224, 0x8A5E},
+       {0x16225, 0x8A3C},
+       {0x16226, 0x8A41},
+       {0x16227, 0x8A54},
+       {0x16228, 0x8A5B},
+       {0x16229, 0x8A50},
+       {0x1622A, 0x8A46},
+       {0x1622B, 0x8A34},
+       {0x1622C, 0x8A3A},
+       {0x1622D, 0x8A36},
+       {0x1622E, 0x8A56},
+       {0x1622F, 0x8C61},
+       {0x16230, 0x8C82},
+       {0x16231, 0x8CAF},
+       {0x16232, 0x8CBC},
+       {0x16233, 0x8CB3},
+       {0x16234, 0x8CBD},
+       {0x16235, 0x8CC1},
+       {0x16236, 0x8CBB},
+       {0x16237, 0x8CC0},
+       {0x16238, 0x8CB4},
+       {0x16239, 0x8CB7},
+       {0x1623A, 0x8CB6},
+       {0x1623B, 0x8CBF},
+       {0x1623C, 0x8CB8},
+       {0x1623D, 0x8D8A},
+       {0x1623E, 0x8D85},
+       {0x1623F, 0x8D81},
+       {0x16240, 0x8DCE},
+       {0x16241, 0x8DDD},
+       {0x16242, 0x8DCB},
+       {0x16243, 0x8DDA},
+       {0x16244, 0x8DD1},
+       {0x16245, 0x8DCC},
+       {0x16246, 0x8DDB},
+       {0x16247, 0x8DC6},
+       {0x16248, 0x8EFB},
+       {0x16249, 0x8EF8},
+       {0x1624A, 0x8EFC},
+       {0x1624B, 0x8F9C},
+       {0x1624C, 0x902E},
+       {0x1624D, 0x9035},
+       {0x1624E, 0x9031},
+       {0x1624F, 0x9038},
+       {0x16250, 0x9032},
+       {0x16251, 0x9036},
+       {0x16252, 0x9102},
+       {0x16253, 0x90F5},
+       {0x16254, 0x9109},
+       {0x16255, 0x90FE},
+       {0x16256, 0x9163},
+       {0x16257, 0x9165},
+       {0x16258, 0x91CF},
+       {0x16259, 0x9214},
+       {0x1625A, 0x9215},
+       {0x1625B, 0x9223},
+       {0x1625C, 0x9209},
+       {0x1625D, 0x921E},
+       {0x1625E, 0x920D},
+       {0x1625F, 0x9210},
+       {0x16260, 0x9207},
+       {0x16261, 0x9211},
+       {0x16262, 0x9594},
+       {0x16263, 0x958F},
+       {0x16264, 0x958B},
+       {0x16265, 0x9591},
+       {0x16266, 0x9593},
+       {0x16267, 0x9592},
+       {0x16268, 0x958E},
+       {0x16269, 0x968A},
+       {0x1626A, 0x968E},
+       {0x1626B, 0x968B},
+       {0x1626C, 0x967D},
+       {0x1626D, 0x9685},
+       {0x1626E, 0x9686},
+       {0x1626F, 0x968D},
+       {0x16270, 0x9672},
+       {0x16271, 0x9684},
+       {0x16272, 0x96C1},
+       {0x16273, 0x96C5},
+       {0x16274, 0x96C4},
+       {0x16275, 0x96C6},
+       {0x16276, 0x96C7},
+       {0x16277, 0x96EF},
+       {0x16278, 0x96F2},
+       {0x16279, 0x97CC},
+       {0x1627A, 0x9805},
+       {0x1627B, 0x9806},
+       {0x1627C, 0x9808},
+       {0x1627D, 0x98E7},
+       {0x1627E, 0x98EA},
+       {0x16321, 0x98EF},
+       {0x16322, 0x98E9},
+       {0x16323, 0x98F2},
+       {0x16324, 0x98ED},
+       {0x16325, 0x99AE},
+       {0x16326, 0x99AD},
+       {0x16327, 0x9EC3},
+       {0x16328, 0x9ECD},
+       {0x16329, 0x9ED1},
+       {0x1632A, 0x4E82},
+       {0x1632B, 0x50AD},
+       {0x1632C, 0x50B5},
+       {0x1632D, 0x50B2},
+       {0x1632E, 0x50B3},
+       {0x1632F, 0x50C5},
+       {0x16330, 0x50BE},
+       {0x16331, 0x50AC},
+       {0x16332, 0x50B7},
+       {0x16333, 0x50BB},
+       {0x16334, 0x50AF},
+       {0x16335, 0x50C7},
+       {0x16336, 0x527F},
+       {0x16337, 0x5277},
+       {0x16338, 0x527D},
+       {0x16339, 0x52DF},
+       {0x1633A, 0x52E6},
+       {0x1633B, 0x52E4},
+       {0x1633C, 0x52E2},
+       {0x1633D, 0x52E3},
+       {0x1633E, 0x532F},
+       {0x1633F, 0x55DF},
+       {0x16340, 0x55E8},
+       {0x16341, 0x55D3},
+       {0x16342, 0x55E6},
+       {0x16343, 0x55CE},
+       {0x16344, 0x55DC},
+       {0x16345, 0x55C7},
+       {0x16346, 0x55D1},
+       {0x16347, 0x55E3},
+       {0x16348, 0x55E4},
+       {0x16349, 0x55EF},
+       {0x1634A, 0x55DA},
+       {0x1634B, 0x55E1},
+       {0x1634C, 0x55C5},
+       {0x1634D, 0x55C6},
+       {0x1634E, 0x55E5},
+       {0x1634F, 0x55C9},
+       {0x16350, 0x5712},
+       {0x16351, 0x5713},
+       {0x16352, 0x585E},
+       {0x16353, 0x5851},
+       {0x16354, 0x5858},
+       {0x16355, 0x5857},
+       {0x16356, 0x585A},
+       {0x16357, 0x5854},
+       {0x16358, 0x586B},
+       {0x16359, 0x584C},
+       {0x1635A, 0x586D},
+       {0x1635B, 0x584A},
+       {0x1635C, 0x5862},
+       {0x1635D, 0x5852},
+       {0x1635E, 0x584B},
+       {0x1635F, 0x5967},
+       {0x16360, 0x5AC1},
+       {0x16361, 0x5AC9},
+       {0x16362, 0x5ACC},
+       {0x16363, 0x5ABE},
+       {0x16364, 0x5ABD},
+       {0x16365, 0x5ABC},
+       {0x16366, 0x5AB3},
+       {0x16367, 0x5AC2},
+       {0x16368, 0x5AB2},
+       {0x16369, 0x5D69},
+       {0x1636A, 0x5D6F},
+       {0x1636B, 0x5E4C},
+       {0x1636C, 0x5E79},
+       {0x1636D, 0x5EC9},
+       {0x1636E, 0x5EC8},
+       {0x1636F, 0x5F12},
+       {0x16370, 0x5F59},
+       {0x16371, 0x5FAC},
+       {0x16372, 0x5FAE},
+       {0x16373, 0x611A},
+       {0x16374, 0x610F},
+       {0x16375, 0x6148},
+       {0x16376, 0x611F},
+       {0x16377, 0x60F3},
+       {0x16378, 0x611B},
+       {0x16379, 0x60F9},
+       {0x1637A, 0x6101},
+       {0x1637B, 0x6108},
+       {0x1637C, 0x614E},
+       {0x1637D, 0x614C},
+       {0x1637E, 0x6144},
+       {0x16421, 0x614D},
+       {0x16422, 0x613E},
+       {0x16423, 0x6134},
+       {0x16424, 0x6127},
+       {0x16425, 0x610D},
+       {0x16426, 0x6106},
+       {0x16427, 0x6137},
+       {0x16428, 0x6221},
+       {0x16429, 0x6222},
+       {0x1642A, 0x6413},
+       {0x1642B, 0x643E},
+       {0x1642C, 0x641E},
+       {0x1642D, 0x642A},
+       {0x1642E, 0x642D},
+       {0x1642F, 0x643D},
+       {0x16430, 0x642C},
+       {0x16431, 0x640F},
+       {0x16432, 0x641C},
+       {0x16433, 0x6414},
+       {0x16434, 0x640D},
+       {0x16435, 0x6436},
+       {0x16436, 0x6416},
+       {0x16437, 0x6417},
+       {0x16438, 0x6406},
+       {0x16439, 0x656C},
+       {0x1643A, 0x659F},
+       {0x1643B, 0x65B0},
+       {0x1643C, 0x6697},
+       {0x1643D, 0x6689},
+       {0x1643E, 0x6687},
+       {0x1643F, 0x6688},
+       {0x16440, 0x6696},
+       {0x16441, 0x6684},
+       {0x16442, 0x6698},
+       {0x16443, 0x668D},
+       {0x16444, 0x6703},
+       {0x16445, 0x6994},
+       {0x16446, 0x696D},
+       {0x16447, 0x695A},
+       {0x16448, 0x6977},
+       {0x16449, 0x6960},
+       {0x1644A, 0x6954},
+       {0x1644B, 0x6975},
+       {0x1644C, 0x6930},
+       {0x1644D, 0x6982},
+       {0x1644E, 0x694A},
+       {0x1644F, 0x6968},
+       {0x16450, 0x696B},
+       {0x16451, 0x695E},
+       {0x16452, 0x6953},
+       {0x16453, 0x6979},
+       {0x16454, 0x6986},
+       {0x16455, 0x695D},
+       {0x16456, 0x6963},
+       {0x16457, 0x695B},
+       {0x16458, 0x6B47},
+       {0x16459, 0x6B72},
+       {0x1645A, 0x6BC0},
+       {0x1645B, 0x6BBF},
+       {0x1645C, 0x6BD3},
+       {0x1645D, 0x6BFD},
+       {0x1645E, 0x6EA2},
+       {0x1645F, 0x6EAF},
+       {0x16460, 0x6ED3},
+       {0x16461, 0x6EB6},
+       {0x16462, 0x6EC2},
+       {0x16463, 0x6E90},
+       {0x16464, 0x6E9D},
+       {0x16465, 0x6EC7},
+       {0x16466, 0x6EC5},
+       {0x16467, 0x6EA5},
+       {0x16468, 0x6E98},
+       {0x16469, 0x6EBC},
+       {0x1646A, 0x6EBA},
+       {0x1646B, 0x6EAB},
+       {0x1646C, 0x6ED1},
+       {0x1646D, 0x6E96},
+       {0x1646E, 0x6E9C},
+       {0x1646F, 0x6EC4},
+       {0x16470, 0x6ED4},
+       {0x16471, 0x6EAA},
+       {0x16472, 0x6EA7},
+       {0x16473, 0x6EB4},
+       {0x16474, 0x714E},
+       {0x16475, 0x7159},
+       {0x16476, 0x7169},
+       {0x16477, 0x7164},
+       {0x16478, 0x7149},
+       {0x16479, 0x7167},
+       {0x1647A, 0x715C},
+       {0x1647B, 0x716C},
+       {0x1647C, 0x7166},
+       {0x1647D, 0x714C},
+       {0x1647E, 0x7165},
+       {0x16521, 0x715E},
+       {0x16522, 0x7146},
+       {0x16523, 0x7168},
+       {0x16524, 0x7156},
+       {0x16525, 0x723A},
+       {0x16526, 0x7252},
+       {0x16527, 0x7337},
+       {0x16528, 0x7345},
+       {0x16529, 0x733F},
+       {0x1652A, 0x733E},
+       {0x1652B, 0x746F},
+       {0x1652C, 0x745A},
+       {0x1652D, 0x7455},
+       {0x1652E, 0x745F},
+       {0x1652F, 0x745E},
+       {0x16530, 0x7441},
+       {0x16531, 0x743F},
+       {0x16532, 0x7459},
+       {0x16533, 0x745B},
+       {0x16534, 0x745C},
+       {0x16535, 0x7576},
+       {0x16536, 0x7578},
+       {0x16537, 0x7600},
+       {0x16538, 0x75F0},
+       {0x16539, 0x7601},
+       {0x1653A, 0x75F2},
+       {0x1653B, 0x75F1},
+       {0x1653C, 0x75FA},
+       {0x1653D, 0x75FF},
+       {0x1653E, 0x75F4},
+       {0x1653F, 0x75F3},
+       {0x16540, 0x76DE},
+       {0x16541, 0x76DF},
+       {0x16542, 0x775B},
+       {0x16543, 0x776B},
+       {0x16544, 0x7766},
+       {0x16545, 0x775E},
+       {0x16546, 0x7763},
+       {0x16547, 0x7779},
+       {0x16548, 0x776A},
+       {0x16549, 0x776C},
+       {0x1654A, 0x775C},
+       {0x1654B, 0x7765},
+       {0x1654C, 0x7768},
+       {0x1654D, 0x7762},
+       {0x1654E, 0x77EE},
+       {0x1654F, 0x788E},
+       {0x16550, 0x78B0},
+       {0x16551, 0x7897},
+       {0x16552, 0x7898},
+       {0x16553, 0x788C},
+       {0x16554, 0x7889},
+       {0x16555, 0x787C},
+       {0x16556, 0x7891},
+       {0x16557, 0x7893},
+       {0x16558, 0x787F},
+       {0x16559, 0x797A},
+       {0x1655A, 0x797F},
+       {0x1655B, 0x7981},
+       {0x1655C, 0x842C},
+       {0x1655D, 0x79BD},
+       {0x1655E, 0x7A1C},
+       {0x1655F, 0x7A1A},
+       {0x16560, 0x7A20},
+       {0x16561, 0x7A14},
+       {0x16562, 0x7A1F},
+       {0x16563, 0x7A1E},
+       {0x16564, 0x7A9F},
+       {0x16565, 0x7AA0},
+       {0x16566, 0x7B77},
+       {0x16567, 0x7BC0},
+       {0x16568, 0x7B60},
+       {0x16569, 0x7B6E},
+       {0x1656A, 0x7B67},
+       {0x1656B, 0x7CB1},
+       {0x1656C, 0x7CB3},
+       {0x1656D, 0x7CB5},
+       {0x1656E, 0x7D93},
+       {0x1656F, 0x7D79},
+       {0x16570, 0x7D91},
+       {0x16571, 0x7D81},
+       {0x16572, 0x7D8F},
+       {0x16573, 0x7D5B},
+       {0x16574, 0x7F6E},
+       {0x16575, 0x7F69},
+       {0x16576, 0x7F6A},
+       {0x16577, 0x7F72},
+       {0x16578, 0x7FA9},
+       {0x16579, 0x7FA8},
+       {0x1657A, 0x7FA4},
+       {0x1657B, 0x8056},
+       {0x1657C, 0x8058},
+       {0x1657D, 0x8086},
+       {0x1657E, 0x8084},
+       {0x16621, 0x8171},
+       {0x16622, 0x8170},
+       {0x16623, 0x8178},
+       {0x16624, 0x8165},
+       {0x16625, 0x816E},
+       {0x16626, 0x8173},
+       {0x16627, 0x816B},
+       {0x16628, 0x8179},
+       {0x16629, 0x817A},
+       {0x1662A, 0x8166},
+       {0x1662B, 0x8205},
+       {0x1662C, 0x8247},
+       {0x1662D, 0x8482},
+       {0x1662E, 0x8477},
+       {0x1662F, 0x843D},
+       {0x16630, 0x8431},
+       {0x16631, 0x8475},
+       {0x16632, 0x8466},
+       {0x16633, 0x846B},
+       {0x16634, 0x8449},
+       {0x16635, 0x846C},
+       {0x16636, 0x845B},
+       {0x16637, 0x843C},
+       {0x16638, 0x8435},
+       {0x16639, 0x8461},
+       {0x1663A, 0x8463},
+       {0x1663B, 0x8469},
+       {0x1663C, 0x846D},
+       {0x1663D, 0x8446},
+       {0x1663E, 0x865E},
+       {0x1663F, 0x865C},
+       {0x16640, 0x865F},
+       {0x16641, 0x86F9},
+       {0x16642, 0x8713},
+       {0x16643, 0x8708},
+       {0x16644, 0x8707},
+       {0x16645, 0x8700},
+       {0x16646, 0x86FE},
+       {0x16647, 0x86FB},
+       {0x16648, 0x8702},
+       {0x16649, 0x8703},
+       {0x1664A, 0x8706},
+       {0x1664B, 0x870A},
+       {0x1664C, 0x8859},
+       {0x1664D, 0x88DF},
+       {0x1664E, 0x88D4},
+       {0x1664F, 0x88D9},
+       {0x16650, 0x88DC},
+       {0x16651, 0x88D8},
+       {0x16652, 0x88DD},
+       {0x16653, 0x88E1},
+       {0x16654, 0x88CA},
+       {0x16655, 0x88D5},
+       {0x16656, 0x88D2},
+       {0x16657, 0x899C},
+       {0x16658, 0x89E3},
+       {0x16659, 0x8A6B},
+       {0x1665A, 0x8A72},
+       {0x1665B, 0x8A73},
+       {0x1665C, 0x8A66},
+       {0x1665D, 0x8A69},
+       {0x1665E, 0x8A70},
+       {0x1665F, 0x8A87},
+       {0x16660, 0x8A7C},
+       {0x16661, 0x8A63},
+       {0x16662, 0x8AA0},
+       {0x16663, 0x8A71},
+       {0x16664, 0x8A85},
+       {0x16665, 0x8A6D},
+       {0x16666, 0x8A62},
+       {0x16667, 0x8A6E},
+       {0x16668, 0x8A6C},
+       {0x16669, 0x8A79},
+       {0x1666A, 0x8A7B},
+       {0x1666B, 0x8A3E},
+       {0x1666C, 0x8A68},
+       {0x1666D, 0x8C62},
+       {0x1666E, 0x8C8A},
+       {0x1666F, 0x8C89},
+       {0x16670, 0x8CCA},
+       {0x16671, 0x8CC7},
+       {0x16672, 0x8CC8},
+       {0x16673, 0x8CC4},
+       {0x16674, 0x8CB2},
+       {0x16675, 0x8CC3},
+       {0x16676, 0x8CC2},
+       {0x16677, 0x8CC5},
+       {0x16678, 0x8DE1},
+       {0x16679, 0x8DDF},
+       {0x1667A, 0x8DE8},
+       {0x1667B, 0x8DEF},
+       {0x1667C, 0x8DF3},
+       {0x1667D, 0x8DFA},
+       {0x1667E, 0x8DEA},
+       {0x16721, 0x8DE4},
+       {0x16722, 0x8DE6},
+       {0x16723, 0x8EB2},
+       {0x16724, 0x8F03},
+       {0x16725, 0x8F09},
+       {0x16726, 0x8EFE},
+       {0x16727, 0x8F0A},
+       {0x16728, 0x8F9F},
+       {0x16729, 0x8FB2},
+       {0x1672A, 0x904B},
+       {0x1672B, 0x904A},
+       {0x1672C, 0x9053},
+       {0x1672D, 0x9042},
+       {0x1672E, 0x9054},
+       {0x1672F, 0x903C},
+       {0x16730, 0x9055},
+       {0x16731, 0x9050},
+       {0x16732, 0x9047},
+       {0x16733, 0x904F},
+       {0x16734, 0x904E},
+       {0x16735, 0x904D},
+       {0x16736, 0x9051},
+       {0x16737, 0x903E},
+       {0x16738, 0x9041},
+       {0x16739, 0x9112},
+       {0x1673A, 0x9117},
+       {0x1673B, 0x916C},
+       {0x1673C, 0x916A},
+       {0x1673D, 0x9169},
+       {0x1673E, 0x91C9},
+       {0x1673F, 0x9237},
+       {0x16740, 0x9257},
+       {0x16741, 0x9238},
+       {0x16742, 0x923D},
+       {0x16743, 0x9240},
+       {0x16744, 0x923E},
+       {0x16745, 0x925B},
+       {0x16746, 0x924B},
+       {0x16747, 0x9264},
+       {0x16748, 0x9251},
+       {0x16749, 0x9234},
+       {0x1674A, 0x9249},
+       {0x1674B, 0x924D},
+       {0x1674C, 0x9245},
+       {0x1674D, 0x9239},
+       {0x1674E, 0x923F},
+       {0x1674F, 0x925A},
+       {0x16750, 0x9598},
+       {0x16751, 0x9698},
+       {0x16752, 0x9694},
+       {0x16753, 0x9695},
+       {0x16754, 0x96CD},
+       {0x16755, 0x96CB},
+       {0x16756, 0x96C9},
+       {0x16757, 0x96CA},
+       {0x16758, 0x96F7},
+       {0x16759, 0x96FB},
+       {0x1675A, 0x96F9},
+       {0x1675B, 0x96F6},
+       {0x1675C, 0x9756},
+       {0x1675D, 0x9774},
+       {0x1675E, 0x9776},
+       {0x1675F, 0x9810},
+       {0x16760, 0x9811},
+       {0x16761, 0x9813},
+       {0x16762, 0x980A},
+       {0x16763, 0x9812},
+       {0x16764, 0x980C},
+       {0x16765, 0x98FC},
+       {0x16766, 0x98F4},
+       {0x16767, 0x98FD},
+       {0x16768, 0x98FE},
+       {0x16769, 0x99B3},
+       {0x1676A, 0x99B1},
+       {0x1676B, 0x99B4},
+       {0x1676C, 0x9AE1},
+       {0x1676D, 0x9CE9},
+       {0x1676E, 0x9E82},
+       {0x1676F, 0x9F0E},
+       {0x16770, 0x9F13},
+       {0x16771, 0x9F20},
+       {0x16772, 0x50E7},
+       {0x16773, 0x50EE},
+       {0x16774, 0x50E5},
+       {0x16775, 0x50D6},
+       {0x16776, 0x50ED},
+       {0x16777, 0x50DA},
+       {0x16778, 0x50D5},
+       {0x16779, 0x50CF},
+       {0x1677A, 0x50D1},
+       {0x1677B, 0x50F1},
+       {0x1677C, 0x50CE},
+       {0x1677D, 0x50E9},
+       {0x1677E, 0x5162},
+       {0x16821, 0x51F3},
+       {0x16822, 0x5283},
+       {0x16823, 0x5282},
+       {0x16824, 0x5331},
+       {0x16825, 0x53AD},
+       {0x16826, 0x55FE},
+       {0x16827, 0x5600},
+       {0x16828, 0x561B},
+       {0x16829, 0x5617},
+       {0x1682A, 0x55FD},
+       {0x1682B, 0x5614},
+       {0x1682C, 0x5606},
+       {0x1682D, 0x5609},
+       {0x1682E, 0x560D},
+       {0x1682F, 0x560E},
+       {0x16830, 0x55F7},
+       {0x16831, 0x5616},
+       {0x16832, 0x561F},
+       {0x16833, 0x5608},
+       {0x16834, 0x5610},
+       {0x16835, 0x55F6},
+       {0x16836, 0x5718},
+       {0x16837, 0x5716},
+       {0x16838, 0x5875},
+       {0x16839, 0x587E},
+       {0x1683A, 0x5883},
+       {0x1683B, 0x5893},
+       {0x1683C, 0x588A},
+       {0x1683D, 0x5879},
+       {0x1683E, 0x5885},
+       {0x1683F, 0x587D},
+       {0x16840, 0x58FD},
+       {0x16841, 0x5925},
+       {0x16842, 0x5922},
+       {0x16843, 0x5924},
+       {0x16844, 0x596A},
+       {0x16845, 0x5969},
+       {0x16846, 0x5AE1},
+       {0x16847, 0x5AE6},
+       {0x16848, 0x5AE9},
+       {0x16849, 0x5AD7},
+       {0x1684A, 0x5AD6},
+       {0x1684B, 0x5AD8},
+       {0x1684C, 0x5AE3},
+       {0x1684D, 0x5B75},
+       {0x1684E, 0x5BDE},
+       {0x1684F, 0x5BE7},
+       {0x16850, 0x5BE1},
+       {0x16851, 0x5BE5},
+       {0x16852, 0x5BE6},
+       {0x16853, 0x5BE8},
+       {0x16854, 0x5BE2},
+       {0x16855, 0x5BE4},
+       {0x16856, 0x5BDF},
+       {0x16857, 0x5C0D},
+       {0x16858, 0x5C62},
+       {0x16859, 0x5D84},
+       {0x1685A, 0x5D87},
+       {0x1685B, 0x5E5B},
+       {0x1685C, 0x5E63},
+       {0x1685D, 0x5E55},
+       {0x1685E, 0x5E57},
+       {0x1685F, 0x5E54},
+       {0x16860, 0x5ED3},
+       {0x16861, 0x5ED6},
+       {0x16862, 0x5F0A},
+       {0x16863, 0x5F46},
+       {0x16864, 0x5F70},
+       {0x16865, 0x5FB9},
+       {0x16866, 0x6147},
+       {0x16867, 0x613F},
+       {0x16868, 0x614B},
+       {0x16869, 0x6177},
+       {0x1686A, 0x6162},
+       {0x1686B, 0x6163},
+       {0x1686C, 0x615F},
+       {0x1686D, 0x615A},
+       {0x1686E, 0x6158},
+       {0x1686F, 0x6175},
+       {0x16870, 0x622A},
+       {0x16871, 0x6487},
+       {0x16872, 0x6458},
+       {0x16873, 0x6454},
+       {0x16874, 0x64A4},
+       {0x16875, 0x6478},
+       {0x16876, 0x645F},
+       {0x16877, 0x647A},
+       {0x16878, 0x6451},
+       {0x16879, 0x6467},
+       {0x1687A, 0x6434},
+       {0x1687B, 0x646D},
+       {0x1687C, 0x647B},
+       {0x1687D, 0x6572},
+       {0x1687E, 0x65A1},
+       {0x16921, 0x65D7},
+       {0x16922, 0x65D6},
+       {0x16923, 0x66A2},
+       {0x16924, 0x66A8},
+       {0x16925, 0x669D},
+       {0x16926, 0x699C},
+       {0x16927, 0x69A8},
+       {0x16928, 0x6995},
+       {0x16929, 0x69C1},
+       {0x1692A, 0x69AE},
+       {0x1692B, 0x69D3},
+       {0x1692C, 0x69CB},
+       {0x1692D, 0x699B},
+       {0x1692E, 0x69B7},
+       {0x1692F, 0x69BB},
+       {0x16930, 0x69AB},
+       {0x16931, 0x69B4},
+       {0x16932, 0x69D0},
+       {0x16933, 0x69CD},
+       {0x16934, 0x69AD},
+       {0x16935, 0x69CC},
+       {0x16936, 0x69A6},
+       {0x16937, 0x69C3},
+       {0x16938, 0x69A3},
+       {0x16939, 0x6B49},
+       {0x1693A, 0x6B4C},
+       {0x1693B, 0x6C33},
+       {0x1693C, 0x6F33},
+       {0x1693D, 0x6F14},
+       {0x1693E, 0x6EFE},
+       {0x1693F, 0x6F13},
+       {0x16940, 0x6EF4},
+       {0x16941, 0x6F29},
+       {0x16942, 0x6F3E},
+       {0x16943, 0x6F20},
+       {0x16944, 0x6F2C},
+       {0x16945, 0x6F0F},
+       {0x16946, 0x6F02},
+       {0x16947, 0x6F22},
+       {0x16948, 0x6EFF},
+       {0x16949, 0x6EEF},
+       {0x1694A, 0x6F06},
+       {0x1694B, 0x6F31},
+       {0x1694C, 0x6F38},
+       {0x1694D, 0x6F32},
+       {0x1694E, 0x6F23},
+       {0x1694F, 0x6F15},
+       {0x16950, 0x6F2B},
+       {0x16951, 0x6F2F},
+       {0x16952, 0x6F88},
+       {0x16953, 0x6F2A},
+       {0x16954, 0x6EEC},
+       {0x16955, 0x6F01},
+       {0x16956, 0x6EF2},
+       {0x16957, 0x6ECC},
+       {0x16958, 0x6EF7},
+       {0x16959, 0x7194},
+       {0x1695A, 0x7199},
+       {0x1695B, 0x717D},
+       {0x1695C, 0x718A},
+       {0x1695D, 0x7184},
+       {0x1695E, 0x7192},
+       {0x1695F, 0x723E},
+       {0x16960, 0x7292},
+       {0x16961, 0x7296},
+       {0x16962, 0x7344},
+       {0x16963, 0x7350},
+       {0x16964, 0x7464},
+       {0x16965, 0x7463},
+       {0x16966, 0x746A},
+       {0x16967, 0x7470},
+       {0x16968, 0x746D},
+       {0x16969, 0x7504},
+       {0x1696A, 0x7591},
+       {0x1696B, 0x7627},
+       {0x1696C, 0x760D},
+       {0x1696D, 0x760B},
+       {0x1696E, 0x7609},
+       {0x1696F, 0x7613},
+       {0x16970, 0x76E1},
+       {0x16971, 0x76E3},
+       {0x16972, 0x7784},
+       {0x16973, 0x777D},
+       {0x16974, 0x777F},
+       {0x16975, 0x7761},
+       {0x16976, 0x78C1},
+       {0x16977, 0x789F},
+       {0x16978, 0x78A7},
+       {0x16979, 0x78B3},
+       {0x1697A, 0x78A9},
+       {0x1697B, 0x78A3},
+       {0x1697C, 0x798E},
+       {0x1697D, 0x798F},
+       {0x1697E, 0x798D},
+       {0x16A21, 0x7A2E},
+       {0x16A22, 0x7A31},
+       {0x16A23, 0x7AAA},
+       {0x16A24, 0x7AA9},
+       {0x16A25, 0x7AED},
+       {0x16A26, 0x7AEF},
+       {0x16A27, 0x7BA1},
+       {0x16A28, 0x7B95},
+       {0x16A29, 0x7B8B},
+       {0x16A2A, 0x7B75},
+       {0x16A2B, 0x7B97},
+       {0x16A2C, 0x7B9D},
+       {0x16A2D, 0x7B94},
+       {0x16A2E, 0x7B8F},
+       {0x16A2F, 0x7BB8},
+       {0x16A30, 0x7B87},
+       {0x16A31, 0x7B84},
+       {0x16A32, 0x7CB9},
+       {0x16A33, 0x7CBD},
+       {0x16A34, 0x7CBE},
+       {0x16A35, 0x7DBB},
+       {0x16A36, 0x7DB0},
+       {0x16A37, 0x7D9C},
+       {0x16A38, 0x7DBD},
+       {0x16A39, 0x7DBE},
+       {0x16A3A, 0x7DA0},
+       {0x16A3B, 0x7DCA},
+       {0x16A3C, 0x7DB4},
+       {0x16A3D, 0x7DB2},
+       {0x16A3E, 0x7DB1},
+       {0x16A3F, 0x7DBA},
+       {0x16A40, 0x7DA2},
+       {0x16A41, 0x7DBF},
+       {0x16A42, 0x7DB5},
+       {0x16A43, 0x7DB8},
+       {0x16A44, 0x7DAD},
+       {0x16A45, 0x7DD2},
+       {0x16A46, 0x7DC7},
+       {0x16A47, 0x7DAC},
+       {0x16A48, 0x7F70},
+       {0x16A49, 0x7FE0},
+       {0x16A4A, 0x7FE1},
+       {0x16A4B, 0x7FDF},
+       {0x16A4C, 0x805E},
+       {0x16A4D, 0x805A},
+       {0x16A4E, 0x8087},
+       {0x16A4F, 0x8150},
+       {0x16A50, 0x8180},
+       {0x16A51, 0x818F},
+       {0x16A52, 0x8188},
+       {0x16A53, 0x818A},
+       {0x16A54, 0x817F},
+       {0x16A55, 0x8182},
+       {0x16A56, 0x81E7},
+       {0x16A57, 0x81FA},
+       {0x16A58, 0x8207},
+       {0x16A59, 0x8214},
+       {0x16A5A, 0x821E},
+       {0x16A5B, 0x824B},
+       {0x16A5C, 0x84C9},
+       {0x16A5D, 0x84BF},
+       {0x16A5E, 0x84C6},
+       {0x16A5F, 0x84C4},
+       {0x16A60, 0x8499},
+       {0x16A61, 0x849E},
+       {0x16A62, 0x84B2},
+       {0x16A63, 0x849C},
+       {0x16A64, 0x84CB},
+       {0x16A65, 0x84B8},
+       {0x16A66, 0x84C0},
+       {0x16A67, 0x84D3},
+       {0x16A68, 0x8490},
+       {0x16A69, 0x84BC},
+       {0x16A6A, 0x84D1},
+       {0x16A6B, 0x84CA},
+       {0x16A6C, 0x873F},
+       {0x16A6D, 0x871C},
+       {0x16A6E, 0x873B},
+       {0x16A6F, 0x8722},
+       {0x16A70, 0x8725},
+       {0x16A71, 0x8734},
+       {0x16A72, 0x8718},
+       {0x16A73, 0x8755},
+       {0x16A74, 0x8737},
+       {0x16A75, 0x8729},
+       {0x16A76, 0x88F3},
+       {0x16A77, 0x8902},
+       {0x16A78, 0x88F4},
+       {0x16A79, 0x88F9},
+       {0x16A7A, 0x88F8},
+       {0x16A7B, 0x88FD},
+       {0x16A7C, 0x88E8},
+       {0x16A7D, 0x891A},
+       {0x16A7E, 0x88EF},
+       {0x16B21, 0x8AA6},
+       {0x16B22, 0x8A8C},
+       {0x16B23, 0x8A9E},
+       {0x16B24, 0x8AA3},
+       {0x16B25, 0x8A8D},
+       {0x16B26, 0x8AA1},
+       {0x16B27, 0x8A93},
+       {0x16B28, 0x8AA4},
+       {0x16B29, 0x8AAA},
+       {0x16B2A, 0x8AA5},
+       {0x16B2B, 0x8AA8},
+       {0x16B2C, 0x8A98},
+       {0x16B2D, 0x8A91},
+       {0x16B2E, 0x8A9A},
+       {0x16B2F, 0x8AA7},
+       {0x16B30, 0x8C6A},
+       {0x16B31, 0x8C8D},
+       {0x16B32, 0x8C8C},
+       {0x16B33, 0x8CD3},
+       {0x16B34, 0x8CD1},
+       {0x16B35, 0x8CD2},
+       {0x16B36, 0x8D6B},
+       {0x16B37, 0x8D99},
+       {0x16B38, 0x8D95},
+       {0x16B39, 0x8DFC},
+       {0x16B3A, 0x8F14},
+       {0x16B3B, 0x8F12},
+       {0x16B3C, 0x8F15},
+       {0x16B3D, 0x8F13},
+       {0x16B3E, 0x8FA3},
+       {0x16B3F, 0x9060},
+       {0x16B40, 0x9058},
+       {0x16B41, 0x905C},
+       {0x16B42, 0x9063},
+       {0x16B43, 0x9059},
+       {0x16B44, 0x905E},
+       {0x16B45, 0x9062},
+       {0x16B46, 0x905D},
+       {0x16B47, 0x905B},
+       {0x16B48, 0x9119},
+       {0x16B49, 0x9118},
+       {0x16B4A, 0x911E},
+       {0x16B4B, 0x9175},
+       {0x16B4C, 0x9178},
+       {0x16B4D, 0x9177},
+       {0x16B4E, 0x9174},
+       {0x16B4F, 0x9278},
+       {0x16B50, 0x92AC},
+       {0x16B51, 0x9280},
+       {0x16B52, 0x9285},
+       {0x16B53, 0x9298},
+       {0x16B54, 0x9296},
+       {0x16B55, 0x927B},
+       {0x16B56, 0x9293},
+       {0x16B57, 0x929C},
+       {0x16B58, 0x92A8},
+       {0x16B59, 0x927C},
+       {0x16B5A, 0x9291},
+       {0x16B5B, 0x95A1},
+       {0x16B5C, 0x95A8},
+       {0x16B5D, 0x95A9},
+       {0x16B5E, 0x95A3},
+       {0x16B5F, 0x95A5},
+       {0x16B60, 0x95A4},
+       {0x16B61, 0x9699},
+       {0x16B62, 0x969C},
+       {0x16B63, 0x969B},
+       {0x16B64, 0x96CC},
+       {0x16B65, 0x96D2},
+       {0x16B66, 0x9700},
+       {0x16B67, 0x977C},
+       {0x16B68, 0x9785},
+       {0x16B69, 0x97F6},
+       {0x16B6A, 0x9817},
+       {0x16B6B, 0x9818},
+       {0x16B6C, 0x98AF},
+       {0x16B6D, 0x98B1},
+       {0x16B6E, 0x9903},
+       {0x16B6F, 0x9905},
+       {0x16B70, 0x990C},
+       {0x16B71, 0x9909},
+       {0x16B72, 0x99C1},
+       {0x16B73, 0x9AAF},
+       {0x16B74, 0x9AB0},
+       {0x16B75, 0x9AE6},
+       {0x16B76, 0x9B41},
+       {0x16B77, 0x9B42},
+       {0x16B78, 0x9CF4},
+       {0x16B79, 0x9CF6},
+       {0x16B7A, 0x9CF3},
+       {0x16B7B, 0x9EBC},
+       {0x16B7C, 0x9F3B},
+       {0x16B7D, 0x9F4A},
+       {0x16B7E, 0x5104},
+       {0x16C21, 0x5100},
+       {0x16C22, 0x50FB},
+       {0x16C23, 0x50F5},
+       {0x16C24, 0x50F9},
+       {0x16C25, 0x5102},
+       {0x16C26, 0x5108},
+       {0x16C27, 0x5109},
+       {0x16C28, 0x5105},
+       {0x16C29, 0x51DC},
+       {0x16C2A, 0x5287},
+       {0x16C2B, 0x5288},
+       {0x16C2C, 0x5289},
+       {0x16C2D, 0x528D},
+       {0x16C2E, 0x528A},
+       {0x16C2F, 0x52F0},
+       {0x16C30, 0x53B2},
+       {0x16C31, 0x562E},
+       {0x16C32, 0x563B},
+       {0x16C33, 0x5639},
+       {0x16C34, 0x5632},
+       {0x16C35, 0x563F},
+       {0x16C36, 0x5634},
+       {0x16C37, 0x5629},
+       {0x16C38, 0x5653},
+       {0x16C39, 0x564E},
+       {0x16C3A, 0x5657},
+       {0x16C3B, 0x5674},
+       {0x16C3C, 0x5636},
+       {0x16C3D, 0x562F},
+       {0x16C3E, 0x5630},
+       {0x16C3F, 0x5880},
+       {0x16C40, 0x589F},
+       {0x16C41, 0x589E},
+       {0x16C42, 0x58B3},
+       {0x16C43, 0x589C},
+       {0x16C44, 0x58AE},
+       {0x16C45, 0x58A9},
+       {0x16C46, 0x58A6},
+       {0x16C47, 0x596D},
+       {0x16C48, 0x5B09},
+       {0x16C49, 0x5AFB},
+       {0x16C4A, 0x5B0B},
+       {0x16C4B, 0x5AF5},
+       {0x16C4C, 0x5B0C},
+       {0x16C4D, 0x5B08},
+       {0x16C4E, 0x5BEE},
+       {0x16C4F, 0x5BEC},
+       {0x16C50, 0x5BE9},
+       {0x16C51, 0x5BEB},
+       {0x16C52, 0x5C64},
+       {0x16C53, 0x5C65},
+       {0x16C54, 0x5D9D},
+       {0x16C55, 0x5D94},
+       {0x16C56, 0x5E62},
+       {0x16C57, 0x5E5F},
+       {0x16C58, 0x5E61},
+       {0x16C59, 0x5EE2},
+       {0x16C5A, 0x5EDA},
+       {0x16C5B, 0x5EDF},
+       {0x16C5C, 0x5EDD},
+       {0x16C5D, 0x5EE3},
+       {0x16C5E, 0x5EE0},
+       {0x16C5F, 0x5F48},
+       {0x16C60, 0x5F71},
+       {0x16C61, 0x5FB7},
+       {0x16C62, 0x5FB5},
+       {0x16C63, 0x6176},
+       {0x16C64, 0x6167},
+       {0x16C65, 0x616E},
+       {0x16C66, 0x615D},
+       {0x16C67, 0x6155},
+       {0x16C68, 0x6182},
+       {0x16C69, 0x617C},
+       {0x16C6A, 0x6170},
+       {0x16C6B, 0x616B},
+       {0x16C6C, 0x617E},
+       {0x16C6D, 0x61A7},
+       {0x16C6E, 0x6190},
+       {0x16C6F, 0x61AB},
+       {0x16C70, 0x618E},
+       {0x16C71, 0x61AC},
+       {0x16C72, 0x619A},
+       {0x16C73, 0x61A4},
+       {0x16C74, 0x6194},
+       {0x16C75, 0x61AE},
+       {0x16C76, 0x622E},
+       {0x16C77, 0x6469},
+       {0x16C78, 0x646F},
+       {0x16C79, 0x6479},
+       {0x16C7A, 0x649E},
+       {0x16C7B, 0x64B2},
+       {0x16C7C, 0x6488},
+       {0x16C7D, 0x6490},
+       {0x16C7E, 0x64B0},
+       {0x16D21, 0x64A5},
+       {0x16D22, 0x6493},
+       {0x16D23, 0x6495},
+       {0x16D24, 0x64A9},
+       {0x16D25, 0x6492},
+       {0x16D26, 0x64AE},
+       {0x16D27, 0x64AD},
+       {0x16D28, 0x64AB},
+       {0x16D29, 0x649A},
+       {0x16D2A, 0x64AC},
+       {0x16D2B, 0x6499},
+       {0x16D2C, 0x64A2},
+       {0x16D2D, 0x64B3},
+       {0x16D2E, 0x6575},
+       {0x16D2F, 0x6577},
+       {0x16D30, 0x6578},
+       {0x16D31, 0x66AE},
+       {0x16D32, 0x66AB},
+       {0x16D33, 0x66B4},
+       {0x16D34, 0x66B1},
+       {0x16D35, 0x6A23},
+       {0x16D36, 0x6A1F},
+       {0x16D37, 0x69E8},
+       {0x16D38, 0x6A01},
+       {0x16D39, 0x6A1E},
+       {0x16D3A, 0x6A19},
+       {0x16D3B, 0x69FD},
+       {0x16D3C, 0x6A21},
+       {0x16D3D, 0x6A13},
+       {0x16D3E, 0x6A0A},
+       {0x16D3F, 0x69F3},
+       {0x16D40, 0x6A02},
+       {0x16D41, 0x6A05},
+       {0x16D42, 0x69ED},
+       {0x16D43, 0x6A11},
+       {0x16D44, 0x6B50},
+       {0x16D45, 0x6B4E},
+       {0x16D46, 0x6BA4},
+       {0x16D47, 0x6BC5},
+       {0x16D48, 0x6BC6},
+       {0x16D49, 0x6F3F},
+       {0x16D4A, 0x6F7C},
+       {0x16D4B, 0x6F84},
+       {0x16D4C, 0x6F51},
+       {0x16D4D, 0x6F66},
+       {0x16D4E, 0x6F54},
+       {0x16D4F, 0x6F86},
+       {0x16D50, 0x6F6D},
+       {0x16D51, 0x6F5B},
+       {0x16D52, 0x6F78},
+       {0x16D53, 0x6F6E},
+       {0x16D54, 0x6F8E},
+       {0x16D55, 0x6F7A},
+       {0x16D56, 0x6F70},
+       {0x16D57, 0x6F64},
+       {0x16D58, 0x6F97},
+       {0x16D59, 0x6F58},
+       {0x16D5A, 0x6ED5},
+       {0x16D5B, 0x6F6F},
+       {0x16D5C, 0x6F60},
+       {0x16D5D, 0x6F5F},
+       {0x16D5E, 0x719F},
+       {0x16D5F, 0x71AC},
+       {0x16D60, 0x71B1},
+       {0x16D61, 0x71A8},
+       {0x16D62, 0x7256},
+       {0x16D63, 0x729B},
+       {0x16D64, 0x734E},
+       {0x16D65, 0x7357},
+       {0x16D66, 0x7469},
+       {0x16D67, 0x748B},
+       {0x16D68, 0x7483},
+       {0x16D69, 0x747E},
+       {0x16D6A, 0x7480},
+       {0x16D6B, 0x757F},
+       {0x16D6C, 0x7620},
+       {0x16D6D, 0x7629},
+       {0x16D6E, 0x761F},
+       {0x16D6F, 0x7624},
+       {0x16D70, 0x7626},
+       {0x16D71, 0x7621},
+       {0x16D72, 0x7622},
+       {0x16D73, 0x769A},
+       {0x16D74, 0x76BA},
+       {0x16D75, 0x76E4},
+       {0x16D76, 0x778E},
+       {0x16D77, 0x7787},
+       {0x16D78, 0x778C},
+       {0x16D79, 0x7791},
+       {0x16D7A, 0x778B},
+       {0x16D7B, 0x78CB},
+       {0x16D7C, 0x78C5},
+       {0x16D7D, 0x78BA},
+       {0x16D7E, 0x78CA},
+       {0x16E21, 0x78BE},
+       {0x16E22, 0x78D5},
+       {0x16E23, 0x78BC},
+       {0x16E24, 0x78D0},
+       {0x16E25, 0x7A3F},
+       {0x16E26, 0x7A3C},
+       {0x16E27, 0x7A40},
+       {0x16E28, 0x7A3D},
+       {0x16E29, 0x7A37},
+       {0x16E2A, 0x7A3B},
+       {0x16E2B, 0x7AAF},
+       {0x16E2C, 0x7AAE},
+       {0x16E2D, 0x7BAD},
+       {0x16E2E, 0x7BB1},
+       {0x16E2F, 0x7BC4},
+       {0x16E30, 0x7BB4},
+       {0x16E31, 0x7BC6},
+       {0x16E32, 0x7BC7},
+       {0x16E33, 0x7BC1},
+       {0x16E34, 0x7BA0},
+       {0x16E35, 0x7BCC},
+       {0x16E36, 0x7CCA},
+       {0x16E37, 0x7DE0},
+       {0x16E38, 0x7DF4},
+       {0x16E39, 0x7DEF},
+       {0x16E3A, 0x7DFB},
+       {0x16E3B, 0x7DD8},
+       {0x16E3C, 0x7DEC},
+       {0x16E3D, 0x7DDD},
+       {0x16E3E, 0x7DE8},
+       {0x16E3F, 0x7DE3},
+       {0x16E40, 0x7DDA},
+       {0x16E41, 0x7DDE},
+       {0x16E42, 0x7DE9},
+       {0x16E43, 0x7D9E},
+       {0x16E44, 0x7DD9},
+       {0x16E45, 0x7DF2},
+       {0x16E46, 0x7DF9},
+       {0x16E47, 0x7F75},
+       {0x16E48, 0x7F77},
+       {0x16E49, 0x7FAF},
+       {0x16E4A, 0x7FE9},
+       {0x16E4B, 0x8026},
+       {0x16E4C, 0x819B},
+       {0x16E4D, 0x819C},
+       {0x16E4E, 0x819D},
+       {0x16E4F, 0x81A0},
+       {0x16E50, 0x819A},
+       {0x16E51, 0x8198},
+       {0x16E52, 0x8517},
+       {0x16E53, 0x853D},
+       {0x16E54, 0x851A},
+       {0x16E55, 0x84EE},
+       {0x16E56, 0x852C},
+       {0x16E57, 0x852D},
+       {0x16E58, 0x8513},
+       {0x16E59, 0x8511},
+       {0x16E5A, 0x8523},
+       {0x16E5B, 0x8521},
+       {0x16E5C, 0x8514},
+       {0x16E5D, 0x84EC},
+       {0x16E5E, 0x8525},
+       {0x16E5F, 0x84FF},
+       {0x16E60, 0x8506},
+       {0x16E61, 0x8782},
+       {0x16E62, 0x8774},
+       {0x16E63, 0x8776},
+       {0x16E64, 0x8760},
+       {0x16E65, 0x8766},
+       {0x16E66, 0x8778},
+       {0x16E67, 0x8768},
+       {0x16E68, 0x8759},
+       {0x16E69, 0x8757},
+       {0x16E6A, 0x874C},
+       {0x16E6B, 0x8753},
+       {0x16E6C, 0x885B},
+       {0x16E6D, 0x885D},
+       {0x16E6E, 0x8910},
+       {0x16E6F, 0x8907},
+       {0x16E70, 0x8912},
+       {0x16E71, 0x8913},
+       {0x16E72, 0x8915},
+       {0x16E73, 0x890A},
+       {0x16E74, 0x8ABC},
+       {0x16E75, 0x8AD2},
+       {0x16E76, 0x8AC7},
+       {0x16E77, 0x8AC4},
+       {0x16E78, 0x8A95},
+       {0x16E79, 0x8ACB},
+       {0x16E7A, 0x8AF8},
+       {0x16E7B, 0x8AB2},
+       {0x16E7C, 0x8AC9},
+       {0x16E7D, 0x8AC2},
+       {0x16E7E, 0x8ABF},
+       {0x16F21, 0x8AB0},
+       {0x16F22, 0x8AD6},
+       {0x16F23, 0x8ACD},
+       {0x16F24, 0x8AB6},
+       {0x16F25, 0x8AB9},
+       {0x16F26, 0x8ADB},
+       {0x16F27, 0x8C4C},
+       {0x16F28, 0x8C4E},
+       {0x16F29, 0x8C6C},
+       {0x16F2A, 0x8CE0},
+       {0x16F2B, 0x8CDE},
+       {0x16F2C, 0x8CE6},
+       {0x16F2D, 0x8CE4},
+       {0x16F2E, 0x8CEC},
+       {0x16F2F, 0x8CED},
+       {0x16F30, 0x8CE2},
+       {0x16F31, 0x8CE3},
+       {0x16F32, 0x8CDC},
+       {0x16F33, 0x8CEA},
+       {0x16F34, 0x8CE1},
+       {0x16F35, 0x8D6D},
+       {0x16F36, 0x8D9F},
+       {0x16F37, 0x8DA3},
+       {0x16F38, 0x8E2B},
+       {0x16F39, 0x8E10},
+       {0x16F3A, 0x8E1D},
+       {0x16F3B, 0x8E22},
+       {0x16F3C, 0x8E0F},
+       {0x16F3D, 0x8E29},
+       {0x16F3E, 0x8E1F},
+       {0x16F3F, 0x8E21},
+       {0x16F40, 0x8E1E},
+       {0x16F41, 0x8EBA},
+       {0x16F42, 0x8F1D},
+       {0x16F43, 0x8F1B},
+       {0x16F44, 0x8F1F},
+       {0x16F45, 0x8F29},
+       {0x16F46, 0x8F26},
+       {0x16F47, 0x8F2A},
+       {0x16F48, 0x8F1C},
+       {0x16F49, 0x8F1E},
+       {0x16F4A, 0x8F25},
+       {0x16F4B, 0x9069},
+       {0x16F4C, 0x906E},
+       {0x16F4D, 0x9068},
+       {0x16F4E, 0x906D},
+       {0x16F4F, 0x9077},
+       {0x16F50, 0x9130},
+       {0x16F51, 0x912D},
+       {0x16F52, 0x9127},
+       {0x16F53, 0x9131},
+       {0x16F54, 0x9187},
+       {0x16F55, 0x9189},
+       {0x16F56, 0x918B},
+       {0x16F57, 0x9183},
+       {0x16F58, 0x92C5},
+       {0x16F59, 0x92BB},
+       {0x16F5A, 0x92B7},
+       {0x16F5B, 0x92EA},
+       {0x16F5C, 0x92E4},
+       {0x16F5D, 0x92C1},
+       {0x16F5E, 0x92B3},
+       {0x16F5F, 0x92BC},
+       {0x16F60, 0x92D2},
+       {0x16F61, 0x92C7},
+       {0x16F62, 0x92F0},
+       {0x16F63, 0x92B2},
+       {0x16F64, 0x95AD},
+       {0x16F65, 0x95B1},
+       {0x16F66, 0x9704},
+       {0x16F67, 0x9706},
+       {0x16F68, 0x9707},
+       {0x16F69, 0x9709},
+       {0x16F6A, 0x9760},
+       {0x16F6B, 0x978D},
+       {0x16F6C, 0x978B},
+       {0x16F6D, 0x978F},
+       {0x16F6E, 0x9821},
+       {0x16F6F, 0x982B},
+       {0x16F70, 0x981C},
+       {0x16F71, 0x98B3},
+       {0x16F72, 0x990A},
+       {0x16F73, 0x9913},
+       {0x16F74, 0x9912},
+       {0x16F75, 0x9918},
+       {0x16F76, 0x99DD},
+       {0x16F77, 0x99D0},
+       {0x16F78, 0x99DF},
+       {0x16F79, 0x99DB},
+       {0x16F7A, 0x99D1},
+       {0x16F7B, 0x99D5},
+       {0x16F7C, 0x99D2},
+       {0x16F7D, 0x99D9},
+       {0x16F7E, 0x9AB7},
+       {0x17021, 0x9AEE},
+       {0x17022, 0x9AEF},
+       {0x17023, 0x9B27},
+       {0x17024, 0x9B45},
+       {0x17025, 0x9B44},
+       {0x17026, 0x9B77},
+       {0x17027, 0x9B6F},
+       {0x17028, 0x9D06},
+       {0x17029, 0x9D09},
+       {0x1702A, 0x9D03},
+       {0x1702B, 0x9EA9},
+       {0x1702C, 0x9EBE},
+       {0x1702D, 0x9ECE},
+       {0x1702E, 0x58A8},
+       {0x1702F, 0x9F52},
+       {0x17030, 0x5112},
+       {0x17031, 0x5118},
+       {0x17032, 0x5114},
+       {0x17033, 0x5110},
+       {0x17034, 0x5115},
+       {0x17035, 0x5180},
+       {0x17036, 0x51AA},
+       {0x17037, 0x51DD},
+       {0x17038, 0x5291},
+       {0x17039, 0x5293},
+       {0x1703A, 0x52F3},
+       {0x1703B, 0x5659},
+       {0x1703C, 0x566B},
+       {0x1703D, 0x5679},
+       {0x1703E, 0x5669},
+       {0x1703F, 0x5664},
+       {0x17040, 0x5678},
+       {0x17041, 0x566A},
+       {0x17042, 0x5668},
+       {0x17043, 0x5665},
+       {0x17044, 0x5671},
+       {0x17045, 0x566F},
+       {0x17046, 0x566C},
+       {0x17047, 0x5662},
+       {0x17048, 0x5676},
+       {0x17049, 0x58C1},
+       {0x1704A, 0x58BE},
+       {0x1704B, 0x58C7},
+       {0x1704C, 0x58C5},
+       {0x1704D, 0x596E},
+       {0x1704E, 0x5B1D},
+       {0x1704F, 0x5B34},
+       {0x17050, 0x5B78},
+       {0x17051, 0x5BF0},
+       {0x17052, 0x5C0E},
+       {0x17053, 0x5F4A},
+       {0x17054, 0x61B2},
+       {0x17055, 0x6191},
+       {0x17056, 0x61A9},
+       {0x17057, 0x618A},
+       {0x17058, 0x61CD},
+       {0x17059, 0x61B6},
+       {0x1705A, 0x61BE},
+       {0x1705B, 0x61CA},
+       {0x1705C, 0x61C8},
+       {0x1705D, 0x6230},
+       {0x1705E, 0x64C5},
+       {0x1705F, 0x64C1},
+       {0x17060, 0x64CB},
+       {0x17061, 0x64BB},
+       {0x17062, 0x64BC},
+       {0x17063, 0x64DA},
+       {0x17064, 0x64C4},
+       {0x17065, 0x64C7},
+       {0x17066, 0x64C2},
+       {0x17067, 0x64CD},
+       {0x17068, 0x64BF},
+       {0x17069, 0x64D2},
+       {0x1706A, 0x64D4},
+       {0x1706B, 0x64BE},
+       {0x1706C, 0x6574},
+       {0x1706D, 0x66C6},
+       {0x1706E, 0x66C9},
+       {0x1706F, 0x66B9},
+       {0x17070, 0x66C4},
+       {0x17071, 0x66C7},
+       {0x17072, 0x66B8},
+       {0x17073, 0x6A3D},
+       {0x17074, 0x6A38},
+       {0x17075, 0x6A3A},
+       {0x17076, 0x6A59},
+       {0x17077, 0x6A6B},
+       {0x17078, 0x6A58},
+       {0x17079, 0x6A39},
+       {0x1707A, 0x6A44},
+       {0x1707B, 0x6A62},
+       {0x1707C, 0x6A61},
+       {0x1707D, 0x6A4B},
+       {0x1707E, 0x6A47},
+       {0x17121, 0x6A35},
+       {0x17122, 0x6A5F},
+       {0x17123, 0x6A48},
+       {0x17124, 0x6B59},
+       {0x17125, 0x6B77},
+       {0x17126, 0x6C05},
+       {0x17127, 0x6FC2},
+       {0x17128, 0x6FB1},
+       {0x17129, 0x6FA1},
+       {0x1712A, 0x6FC3},
+       {0x1712B, 0x6FA4},
+       {0x1712C, 0x6FC1},
+       {0x1712D, 0x6FA7},
+       {0x1712E, 0x6FB3},
+       {0x1712F, 0x6FC0},
+       {0x17130, 0x6FB9},
+       {0x17131, 0x6FB6},
+       {0x17132, 0x6FA6},
+       {0x17133, 0x6FA0},
+       {0x17134, 0x6FB4},
+       {0x17135, 0x71BE},
+       {0x17136, 0x71C9},
+       {0x17137, 0x71D0},
+       {0x17138, 0x71D2},
+       {0x17139, 0x71C8},
+       {0x1713A, 0x71D5},
+       {0x1713B, 0x71B9},
+       {0x1713C, 0x71CE},
+       {0x1713D, 0x71D9},
+       {0x1713E, 0x71DC},
+       {0x1713F, 0x71C3},
+       {0x17140, 0x71C4},
+       {0x17141, 0x7368},
+       {0x17142, 0x749C},
+       {0x17143, 0x74A3},
+       {0x17144, 0x7498},
+       {0x17145, 0x749F},
+       {0x17146, 0x749E},
+       {0x17147, 0x74E2},
+       {0x17148, 0x750C},
+       {0x17149, 0x750D},
+       {0x1714A, 0x7634},
+       {0x1714B, 0x7638},
+       {0x1714C, 0x763A},
+       {0x1714D, 0x76E7},
+       {0x1714E, 0x76E5},
+       {0x1714F, 0x77A0},
+       {0x17150, 0x779E},
+       {0x17151, 0x779F},
+       {0x17152, 0x77A5},
+       {0x17153, 0x78E8},
+       {0x17154, 0x78DA},
+       {0x17155, 0x78EC},
+       {0x17156, 0x78E7},
+       {0x17157, 0x79A6},
+       {0x17158, 0x7A4D},
+       {0x17159, 0x7A4E},
+       {0x1715A, 0x7A46},
+       {0x1715B, 0x7A4C},
+       {0x1715C, 0x7A4B},
+       {0x1715D, 0x7ABA},
+       {0x1715E, 0x7BD9},
+       {0x1715F, 0x7C11},
+       {0x17160, 0x7BC9},
+       {0x17161, 0x7BE4},
+       {0x17162, 0x7BDB},
+       {0x17163, 0x7BE1},
+       {0x17164, 0x7BE9},
+       {0x17165, 0x7BE6},
+       {0x17166, 0x7CD5},
+       {0x17167, 0x7CD6},
+       {0x17168, 0x7E0A},
+       {0x17169, 0x7E11},
+       {0x1716A, 0x7E08},
+       {0x1716B, 0x7E1B},
+       {0x1716C, 0x7E23},
+       {0x1716D, 0x7E1E},
+       {0x1716E, 0x7E1D},
+       {0x1716F, 0x7E09},
+       {0x17170, 0x7E10},
+       {0x17171, 0x7F79},
+       {0x17172, 0x7FB2},
+       {0x17173, 0x7FF0},
+       {0x17174, 0x7FF1},
+       {0x17175, 0x7FEE},
+       {0x17176, 0x8028},
+       {0x17177, 0x81B3},
+       {0x17178, 0x81A9},
+       {0x17179, 0x81A8},
+       {0x1717A, 0x81FB},
+       {0x1717B, 0x8208},
+       {0x1717C, 0x8258},
+       {0x1717D, 0x8259},
+       {0x1717E, 0x854A},
+       {0x17221, 0x8559},
+       {0x17222, 0x8548},
+       {0x17223, 0x8568},
+       {0x17224, 0x8569},
+       {0x17225, 0x8543},
+       {0x17226, 0x8549},
+       {0x17227, 0x856D},
+       {0x17228, 0x856A},
+       {0x17229, 0x855E},
+       {0x1722A, 0x8783},
+       {0x1722B, 0x879F},
+       {0x1722C, 0x879E},
+       {0x1722D, 0x87A2},
+       {0x1722E, 0x878D},
+       {0x1722F, 0x8861},
+       {0x17230, 0x892A},
+       {0x17231, 0x8932},
+       {0x17232, 0x8925},
+       {0x17233, 0x892B},
+       {0x17234, 0x8921},
+       {0x17235, 0x89AA},
+       {0x17236, 0x89A6},
+       {0x17237, 0x8AE6},
+       {0x17238, 0x8AFA},
+       {0x17239, 0x8AEB},
+       {0x1723A, 0x8AF1},
+       {0x1723B, 0x8B00},
+       {0x1723C, 0x8ADC},
+       {0x1723D, 0x8AE7},
+       {0x1723E, 0x8AEE},
+       {0x1723F, 0x8AFE},
+       {0x17240, 0x8B01},
+       {0x17241, 0x8B02},
+       {0x17242, 0x8AF7},
+       {0x17243, 0x8AED},
+       {0x17244, 0x8AF3},
+       {0x17245, 0x8AF6},
+       {0x17246, 0x8AFC},
+       {0x17247, 0x8C6B},
+       {0x17248, 0x8C6D},
+       {0x17249, 0x8C93},
+       {0x1724A, 0x8CF4},
+       {0x1724B, 0x8E44},
+       {0x1724C, 0x8E31},
+       {0x1724D, 0x8E34},
+       {0x1724E, 0x8E42},
+       {0x1724F, 0x8E39},
+       {0x17250, 0x8E35},
+       {0x17251, 0x8F3B},
+       {0x17252, 0x8F2F},
+       {0x17253, 0x8F38},
+       {0x17254, 0x8F33},
+       {0x17255, 0x8FA8},
+       {0x17256, 0x8FA6},
+       {0x17257, 0x9075},
+       {0x17258, 0x9074},
+       {0x17259, 0x9078},
+       {0x1725A, 0x9072},
+       {0x1725B, 0x907C},
+       {0x1725C, 0x907A},
+       {0x1725D, 0x9134},
+       {0x1725E, 0x9192},
+       {0x1725F, 0x9320},
+       {0x17260, 0x9336},
+       {0x17261, 0x92F8},
+       {0x17262, 0x9333},
+       {0x17263, 0x932F},
+       {0x17264, 0x9322},
+       {0x17265, 0x92FC},
+       {0x17266, 0x932B},
+       {0x17267, 0x9304},
+       {0x17268, 0x931A},
+       {0x17269, 0x9310},
+       {0x1726A, 0x9326},
+       {0x1726B, 0x9321},
+       {0x1726C, 0x9315},
+       {0x1726D, 0x932E},
+       {0x1726E, 0x9319},
+       {0x1726F, 0x95BB},
+       {0x17270, 0x96A7},
+       {0x17271, 0x96A8},
+       {0x17272, 0x96AA},
+       {0x17273, 0x96D5},
+       {0x17274, 0x970E},
+       {0x17275, 0x9711},
+       {0x17276, 0x9716},
+       {0x17277, 0x970D},
+       {0x17278, 0x9713},
+       {0x17279, 0x970F},
+       {0x1727A, 0x975B},
+       {0x1727B, 0x975C},
+       {0x1727C, 0x9766},
+       {0x1727D, 0x9798},
+       {0x1727E, 0x9830},
+       {0x17321, 0x9838},
+       {0x17322, 0x983B},
+       {0x17323, 0x9837},
+       {0x17324, 0x982D},
+       {0x17325, 0x9839},
+       {0x17326, 0x9824},
+       {0x17327, 0x9910},
+       {0x17328, 0x9928},
+       {0x17329, 0x991E},
+       {0x1732A, 0x991B},
+       {0x1732B, 0x9921},
+       {0x1732C, 0x991A},
+       {0x1732D, 0x99ED},
+       {0x1732E, 0x99E2},
+       {0x1732F, 0x99F1},
+       {0x17330, 0x9AB8},
+       {0x17331, 0x9ABC},
+       {0x17332, 0x9AFB},
+       {0x17333, 0x9AED},
+       {0x17334, 0x9B28},
+       {0x17335, 0x9B91},
+       {0x17336, 0x9D15},
+       {0x17337, 0x9D23},
+       {0x17338, 0x9D26},
+       {0x17339, 0x9D28},
+       {0x1733A, 0x9D12},
+       {0x1733B, 0x9D1B},
+       {0x1733C, 0x9ED8},
+       {0x1733D, 0x9ED4},
+       {0x1733E, 0x9F8D},
+       {0x1733F, 0x9F9C},
+       {0x17340, 0x512A},
+       {0x17341, 0x511F},
+       {0x17342, 0x5121},
+       {0x17343, 0x5132},
+       {0x17344, 0x52F5},
+       {0x17345, 0x568E},
+       {0x17346, 0x5680},
+       {0x17347, 0x5690},
+       {0x17348, 0x5685},
+       {0x17349, 0x5687},
+       {0x1734A, 0x568F},
+       {0x1734B, 0x58D5},
+       {0x1734C, 0x58D3},
+       {0x1734D, 0x58D1},
+       {0x1734E, 0x58CE},
+       {0x1734F, 0x5B30},
+       {0x17350, 0x5B2A},
+       {0x17351, 0x5B24},
+       {0x17352, 0x5B7A},
+       {0x17353, 0x5C37},
+       {0x17354, 0x5C68},
+       {0x17355, 0x5DBC},
+       {0x17356, 0x5DBA},
+       {0x17357, 0x5DBD},
+       {0x17358, 0x5DB8},
+       {0x17359, 0x5E6B},
+       {0x1735A, 0x5F4C},
+       {0x1735B, 0x5FBD},
+       {0x1735C, 0x61C9},
+       {0x1735D, 0x61C2},
+       {0x1735E, 0x61C7},
+       {0x1735F, 0x61E6},
+       {0x17360, 0x61CB},
+       {0x17361, 0x6232},
+       {0x17362, 0x6234},
+       {0x17363, 0x64CE},
+       {0x17364, 0x64CA},
+       {0x17365, 0x64D8},
+       {0x17366, 0x64E0},
+       {0x17367, 0x64F0},
+       {0x17368, 0x64E6},
+       {0x17369, 0x64EC},
+       {0x1736A, 0x64F1},
+       {0x1736B, 0x64E2},
+       {0x1736C, 0x64ED},
+       {0x1736D, 0x6582},
+       {0x1736E, 0x6583},
+       {0x1736F, 0x66D9},
+       {0x17370, 0x66D6},
+       {0x17371, 0x6A80},
+       {0x17372, 0x6A94},
+       {0x17373, 0x6A84},
+       {0x17374, 0x6AA2},
+       {0x17375, 0x6A9C},
+       {0x17376, 0x6ADB},
+       {0x17377, 0x6AA3},
+       {0x17378, 0x6A7E},
+       {0x17379, 0x6A97},
+       {0x1737A, 0x6A90},
+       {0x1737B, 0x6AA0},
+       {0x1737C, 0x6B5C},
+       {0x1737D, 0x6BAE},
+       {0x1737E, 0x6BDA},
+       {0x17421, 0x6C08},
+       {0x17422, 0x6FD8},
+       {0x17423, 0x6FF1},
+       {0x17424, 0x6FDF},
+       {0x17425, 0x6FE0},
+       {0x17426, 0x6FDB},
+       {0x17427, 0x6FE4},
+       {0x17428, 0x6FEB},
+       {0x17429, 0x6FEF},
+       {0x1742A, 0x6F80},
+       {0x1742B, 0x6FEC},
+       {0x1742C, 0x6FE1},
+       {0x1742D, 0x6FE9},
+       {0x1742E, 0x6FD5},
+       {0x1742F, 0x6FEE},
+       {0x17430, 0x6FF0},
+       {0x17431, 0x71E7},
+       {0x17432, 0x71DF},
+       {0x17433, 0x71EE},
+       {0x17434, 0x71E6},
+       {0x17435, 0x71E5},
+       {0x17436, 0x71ED},
+       {0x17437, 0x71EC},
+       {0x17438, 0x71F4},
+       {0x17439, 0x71E0},
+       {0x1743A, 0x7235},
+       {0x1743B, 0x7246},
+       {0x1743C, 0x7370},
+       {0x1743D, 0x7372},
+       {0x1743E, 0x74A9},
+       {0x1743F, 0x74B0},
+       {0x17440, 0x74A6},
+       {0x17441, 0x74A8},
+       {0x17442, 0x7646},
+       {0x17443, 0x7642},
+       {0x17444, 0x764C},
+       {0x17445, 0x76EA},
+       {0x17446, 0x77B3},
+       {0x17447, 0x77AA},
+       {0x17448, 0x77B0},
+       {0x17449, 0x77AC},
+       {0x1744A, 0x77A7},
+       {0x1744B, 0x77AD},
+       {0x1744C, 0x77EF},
+       {0x1744D, 0x78F7},
+       {0x1744E, 0x78FA},
+       {0x1744F, 0x78F4},
+       {0x17450, 0x78EF},
+       {0x17451, 0x7901},
+       {0x17452, 0x79A7},
+       {0x17453, 0x79AA},
+       {0x17454, 0x7A57},
+       {0x17455, 0x7ABF},
+       {0x17456, 0x7C07},
+       {0x17457, 0x7C0D},
+       {0x17458, 0x7BFE},
+       {0x17459, 0x7BF7},
+       {0x1745A, 0x7C0C},
+       {0x1745B, 0x7BE0},
+       {0x1745C, 0x7CE0},
+       {0x1745D, 0x7CDC},
+       {0x1745E, 0x7CDE},
+       {0x1745F, 0x7CE2},
+       {0x17460, 0x7CDF},
+       {0x17461, 0x7CD9},
+       {0x17462, 0x7CDD},
+       {0x17463, 0x7E2E},
+       {0x17464, 0x7E3E},
+       {0x17465, 0x7E46},
+       {0x17466, 0x7E37},
+       {0x17467, 0x7E32},
+       {0x17468, 0x7E43},
+       {0x17469, 0x7E2B},
+       {0x1746A, 0x7E3D},
+       {0x1746B, 0x7E31},
+       {0x1746C, 0x7E45},
+       {0x1746D, 0x7E41},
+       {0x1746E, 0x7E34},
+       {0x1746F, 0x7E39},
+       {0x17470, 0x7E48},
+       {0x17471, 0x7E35},
+       {0x17472, 0x7E3F},
+       {0x17473, 0x7E2F},
+       {0x17474, 0x7F44},
+       {0x17475, 0x7FF3},
+       {0x17476, 0x7FFC},
+       {0x17477, 0x8071},
+       {0x17478, 0x8072},
+       {0x17479, 0x8070},
+       {0x1747A, 0x806F},
+       {0x1747B, 0x8073},
+       {0x1747C, 0x81C6},
+       {0x1747D, 0x81C3},
+       {0x1747E, 0x81BA},
+       {0x17521, 0x81C2},
+       {0x17522, 0x81C0},
+       {0x17523, 0x81BF},
+       {0x17524, 0x81BD},
+       {0x17525, 0x81C9},
+       {0x17526, 0x81BE},
+       {0x17527, 0x81E8},
+       {0x17528, 0x8209},
+       {0x17529, 0x8271},
+       {0x1752A, 0x85AA},
+       {0x1752B, 0x8584},
+       {0x1752C, 0x857E},
+       {0x1752D, 0x859C},
+       {0x1752E, 0x8591},
+       {0x1752F, 0x8594},
+       {0x17530, 0x85AF},
+       {0x17531, 0x859B},
+       {0x17532, 0x8587},
+       {0x17533, 0x85A8},
+       {0x17534, 0x858A},
+       {0x17535, 0x85A6},
+       {0x17536, 0x8667},
+       {0x17537, 0x87C0},
+       {0x17538, 0x87D1},
+       {0x17539, 0x87B3},
+       {0x1753A, 0x87D2},
+       {0x1753B, 0x87C6},
+       {0x1753C, 0x87AB},
+       {0x1753D, 0x87BB},
+       {0x1753E, 0x87BA},
+       {0x1753F, 0x87C8},
+       {0x17540, 0x87CB},
+       {0x17541, 0x893B},
+       {0x17542, 0x8936},
+       {0x17543, 0x8944},
+       {0x17544, 0x8938},
+       {0x17545, 0x893D},
+       {0x17546, 0x89AC},
+       {0x17547, 0x8B0E},
+       {0x17548, 0x8B17},
+       {0x17549, 0x8B19},
+       {0x1754A, 0x8B1B},
+       {0x1754B, 0x8B0A},
+       {0x1754C, 0x8B20},
+       {0x1754D, 0x8B1D},
+       {0x1754E, 0x8B04},
+       {0x1754F, 0x8B10},
+       {0x17550, 0x8C41},
+       {0x17551, 0x8C3F},
+       {0x17552, 0x8C73},
+       {0x17553, 0x8CFA},
+       {0x17554, 0x8CFD},
+       {0x17555, 0x8CFC},
+       {0x17556, 0x8CF8},
+       {0x17557, 0x8CFB},
+       {0x17558, 0x8DA8},
+       {0x17559, 0x8E49},
+       {0x1755A, 0x8E4B},
+       {0x1755B, 0x8E48},
+       {0x1755C, 0x8E4A},
+       {0x1755D, 0x8F44},
+       {0x1755E, 0x8F3E},
+       {0x1755F, 0x8F42},
+       {0x17560, 0x8F45},
+       {0x17561, 0x8F3F},
+       {0x17562, 0x907F},
+       {0x17563, 0x907D},
+       {0x17564, 0x9084},
+       {0x17565, 0x9081},
+       {0x17566, 0x9082},
+       {0x17567, 0x9080},
+       {0x17568, 0x9139},
+       {0x17569, 0x91A3},
+       {0x1756A, 0x919E},
+       {0x1756B, 0x919C},
+       {0x1756C, 0x934D},
+       {0x1756D, 0x9382},
+       {0x1756E, 0x9328},
+       {0x1756F, 0x9375},
+       {0x17570, 0x934A},
+       {0x17571, 0x9365},
+       {0x17572, 0x934B},
+       {0x17573, 0x9318},
+       {0x17574, 0x937E},
+       {0x17575, 0x936C},
+       {0x17576, 0x935B},
+       {0x17577, 0x9370},
+       {0x17578, 0x935A},
+       {0x17579, 0x9354},
+       {0x1757A, 0x95CA},
+       {0x1757B, 0x95CB},
+       {0x1757C, 0x95CC},
+       {0x1757D, 0x95C8},
+       {0x1757E, 0x95C6},
+       {0x17621, 0x96B1},
+       {0x17622, 0x96B8},
+       {0x17623, 0x96D6},
+       {0x17624, 0x971C},
+       {0x17625, 0x971E},
+       {0x17626, 0x97A0},
+       {0x17627, 0x97D3},
+       {0x17628, 0x9846},
+       {0x17629, 0x98B6},
+       {0x1762A, 0x9935},
+       {0x1762B, 0x9A01},
+       {0x1762C, 0x99FF},
+       {0x1762D, 0x9BAE},
+       {0x1762E, 0x9BAB},
+       {0x1762F, 0x9BAA},
+       {0x17630, 0x9BAD},
+       {0x17631, 0x9D3B},
+       {0x17632, 0x9D3F},
+       {0x17633, 0x9E8B},
+       {0x17634, 0x9ECF},
+       {0x17635, 0x9EDE},
+       {0x17636, 0x9EDC},
+       {0x17637, 0x9EDD},
+       {0x17638, 0x9EDB},
+       {0x17639, 0x9F3E},
+       {0x1763A, 0x9F4B},
+       {0x1763B, 0x53E2},
+       {0x1763C, 0x5695},
+       {0x1763D, 0x56AE},
+       {0x1763E, 0x58D9},
+       {0x1763F, 0x58D8},
+       {0x17640, 0x5B38},
+       {0x17641, 0x5F5E},
+       {0x17642, 0x61E3},
+       {0x17643, 0x6233},
+       {0x17644, 0x64F4},
+       {0x17645, 0x64F2},
+       {0x17646, 0x64FE},
+       {0x17647, 0x6506},
+       {0x17648, 0x64FA},
+       {0x17649, 0x64FB},
+       {0x1764A, 0x64F7},
+       {0x1764B, 0x65B7},
+       {0x1764C, 0x66DC},
+       {0x1764D, 0x6726},
+       {0x1764E, 0x6AB3},
+       {0x1764F, 0x6AAC},
+       {0x17650, 0x6AC3},
+       {0x17651, 0x6ABB},
+       {0x17652, 0x6AB8},
+       {0x17653, 0x6AC2},
+       {0x17654, 0x6AAE},
+       {0x17655, 0x6AAF},
+       {0x17656, 0x6B5F},
+       {0x17657, 0x6B78},
+       {0x17658, 0x6BAF},
+       {0x17659, 0x7009},
+       {0x1765A, 0x700B},
+       {0x1765B, 0x6FFE},
+       {0x1765C, 0x7006},
+       {0x1765D, 0x6FFA},
+       {0x1765E, 0x7011},
+       {0x1765F, 0x700F},
+       {0x17660, 0x71FB},
+       {0x17661, 0x71FC},
+       {0x17662, 0x71FE},
+       {0x17663, 0x71F8},
+       {0x17664, 0x7377},
+       {0x17665, 0x7375},
+       {0x17666, 0x74A7},
+       {0x17667, 0x74BF},
+       {0x17668, 0x7515},
+       {0x17669, 0x7656},
+       {0x1766A, 0x7658},
+       {0x1766B, 0x7652},
+       {0x1766C, 0x77BD},
+       {0x1766D, 0x77BF},
+       {0x1766E, 0x77BB},
+       {0x1766F, 0x77BC},
+       {0x17670, 0x790E},
+       {0x17671, 0x79AE},
+       {0x17672, 0x7A61},
+       {0x17673, 0x7A62},
+       {0x17674, 0x7A60},
+       {0x17675, 0x7AC4},
+       {0x17676, 0x7AC5},
+       {0x17677, 0x7C2B},
+       {0x17678, 0x7C27},
+       {0x17679, 0x7C2A},
+       {0x1767A, 0x7C1E},
+       {0x1767B, 0x7C23},
+       {0x1767C, 0x7C21},
+       {0x1767D, 0x7CE7},
+       {0x1767E, 0x7E54},
+       {0x17721, 0x7E55},
+       {0x17722, 0x7E5E},
+       {0x17723, 0x7E5A},
+       {0x17724, 0x7E61},
+       {0x17725, 0x7E52},
+       {0x17726, 0x7E59},
+       {0x17727, 0x7F48},
+       {0x17728, 0x7FF9},
+       {0x17729, 0x7FFB},
+       {0x1772A, 0x8077},
+       {0x1772B, 0x8076},
+       {0x1772C, 0x81CD},
+       {0x1772D, 0x81CF},
+       {0x1772E, 0x820A},
+       {0x1772F, 0x85CF},
+       {0x17730, 0x85A9},
+       {0x17731, 0x85CD},
+       {0x17732, 0x85D0},
+       {0x17733, 0x85C9},
+       {0x17734, 0x85B0},
+       {0x17735, 0x85BA},
+       {0x17736, 0x85B9},
+       {0x17737, 0x87EF},
+       {0x17738, 0x87EC},
+       {0x17739, 0x87F2},
+       {0x1773A, 0x87E0},
+       {0x1773B, 0x8986},
+       {0x1773C, 0x89B2},
+       {0x1773D, 0x89F4},
+       {0x1773E, 0x8B28},
+       {0x1773F, 0x8B39},
+       {0x17740, 0x8B2C},
+       {0x17741, 0x8B2B},
+       {0x17742, 0x8C50},
+       {0x17743, 0x8D05},
+       {0x17744, 0x8E59},
+       {0x17745, 0x8E63},
+       {0x17746, 0x8E66},
+       {0x17747, 0x8E64},
+       {0x17748, 0x8E5F},
+       {0x17749, 0x8E55},
+       {0x1774A, 0x8EC0},
+       {0x1774B, 0x8F49},
+       {0x1774C, 0x8F4D},
+       {0x1774D, 0x9087},
+       {0x1774E, 0x9083},
+       {0x1774F, 0x9088},
+       {0x17750, 0x91AB},
+       {0x17751, 0x91AC},
+       {0x17752, 0x91D0},
+       {0x17753, 0x9394},
+       {0x17754, 0x938A},
+       {0x17755, 0x9396},
+       {0x17756, 0x93A2},
+       {0x17757, 0x93B3},
+       {0x17758, 0x93AE},
+       {0x17759, 0x93AC},
+       {0x1775A, 0x93B0},
+       {0x1775B, 0x9398},
+       {0x1775C, 0x939A},
+       {0x1775D, 0x9397},
+       {0x1775E, 0x95D4},
+       {0x1775F, 0x95D6},
+       {0x17760, 0x95D0},
+       {0x17761, 0x95D5},
+       {0x17762, 0x96E2},
+       {0x17763, 0x96DC},
+       {0x17764, 0x96D9},
+       {0x17765, 0x96DB},
+       {0x17766, 0x96DE},
+       {0x17767, 0x9724},
+       {0x17768, 0x97A3},
+       {0x17769, 0x97A6},
+       {0x1776A, 0x97AD},
+       {0x1776B, 0x97F9},
+       {0x1776C, 0x984D},
+       {0x1776D, 0x984F},
+       {0x1776E, 0x984C},
+       {0x1776F, 0x984E},
+       {0x17770, 0x9853},
+       {0x17771, 0x98BA},
+       {0x17772, 0x993E},
+       {0x17773, 0x993F},
+       {0x17774, 0x993D},
+       {0x17775, 0x992E},
+       {0x17776, 0x99A5},
+       {0x17777, 0x9A0E},
+       {0x17778, 0x9AC1},
+       {0x17779, 0x9B03},
+       {0x1777A, 0x9B06},
+       {0x1777B, 0x9B4F},
+       {0x1777C, 0x9B4E},
+       {0x1777D, 0x9B4D},
+       {0x1777E, 0x9BCA},
+       {0x17821, 0x9BC9},
+       {0x17822, 0x9BFD},
+       {0x17823, 0x9BC8},
+       {0x17824, 0x9BC0},
+       {0x17825, 0x9D51},
+       {0x17826, 0x9D5D},
+       {0x17827, 0x9D60},
+       {0x17828, 0x9EE0},
+       {0x17829, 0x9F15},
+       {0x1782A, 0x9F2C},
+       {0x1782B, 0x5133},
+       {0x1782C, 0x56A5},
+       {0x1782D, 0x56A8},
+       {0x1782E, 0x58DE},
+       {0x1782F, 0x58DF},
+       {0x17830, 0x58E2},
+       {0x17831, 0x5BF5},
+       {0x17832, 0x9F90},
+       {0x17833, 0x5EEC},
+       {0x17834, 0x61F2},
+       {0x17835, 0x61F7},
+       {0x17836, 0x61F6},
+       {0x17837, 0x61F5},
+       {0x17838, 0x6500},
+       {0x17839, 0x650F},
+       {0x1783A, 0x66E0},
+       {0x1783B, 0x66DD},
+       {0x1783C, 0x6AE5},
+       {0x1783D, 0x6ADD},
+       {0x1783E, 0x6ADA},
+       {0x1783F, 0x6AD3},
+       {0x17840, 0x701B},
+       {0x17841, 0x701F},
+       {0x17842, 0x7028},
+       {0x17843, 0x701A},
+       {0x17844, 0x701D},
+       {0x17845, 0x7015},
+       {0x17846, 0x7018},
+       {0x17847, 0x7206},
+       {0x17848, 0x720D},
+       {0x17849, 0x7258},
+       {0x1784A, 0x72A2},
+       {0x1784B, 0x7378},
+       {0x1784C, 0x737A},
+       {0x1784D, 0x74BD},
+       {0x1784E, 0x74CA},
+       {0x1784F, 0x74E3},
+       {0x17850, 0x7587},
+       {0x17851, 0x7586},
+       {0x17852, 0x765F},
+       {0x17853, 0x7661},
+       {0x17854, 0x77C7},
+       {0x17855, 0x7919},
+       {0x17856, 0x79B1},
+       {0x17857, 0x7A6B},
+       {0x17858, 0x7A69},
+       {0x17859, 0x7C3E},
+       {0x1785A, 0x7C3F},
+       {0x1785B, 0x7C38},
+       {0x1785C, 0x7C3D},
+       {0x1785D, 0x7C37},
+       {0x1785E, 0x7C40},
+       {0x1785F, 0x7E6B},
+       {0x17860, 0x7E6D},
+       {0x17861, 0x7E79},
+       {0x17862, 0x7E69},
+       {0x17863, 0x7E6A},
+       {0x17864, 0x7E73},
+       {0x17865, 0x7F85},
+       {0x17866, 0x7FB6},
+       {0x17867, 0x7FB9},
+       {0x17868, 0x7FB8},
+       {0x17869, 0x81D8},
+       {0x1786A, 0x85E9},
+       {0x1786B, 0x85DD},
+       {0x1786C, 0x85EA},
+       {0x1786D, 0x85D5},
+       {0x1786E, 0x85E4},
+       {0x1786F, 0x85E5},
+       {0x17870, 0x85F7},
+       {0x17871, 0x87FB},
+       {0x17872, 0x8805},
+       {0x17873, 0x880D},
+       {0x17874, 0x87F9},
+       {0x17875, 0x87FE},
+       {0x17876, 0x8960},
+       {0x17877, 0x895F},
+       {0x17878, 0x8956},
+       {0x17879, 0x895E},
+       {0x1787A, 0x8B41},
+       {0x1787B, 0x8B5C},
+       {0x1787C, 0x8B58},
+       {0x1787D, 0x8B49},
+       {0x1787E, 0x8B5A},
+       {0x17921, 0x8B4E},
+       {0x17922, 0x8B4F},
+       {0x17923, 0x8B46},
+       {0x17924, 0x8B59},
+       {0x17925, 0x8D08},
+       {0x17926, 0x8D0A},
+       {0x17927, 0x8E7C},
+       {0x17928, 0x8E72},
+       {0x17929, 0x8E87},
+       {0x1792A, 0x8E76},
+       {0x1792B, 0x8E6C},
+       {0x1792C, 0x8E7A},
+       {0x1792D, 0x8E74},
+       {0x1792E, 0x8F54},
+       {0x1792F, 0x8F4E},
+       {0x17930, 0x8FAD},
+       {0x17931, 0x908A},
+       {0x17932, 0x908B},
+       {0x17933, 0x91B1},
+       {0x17934, 0x91AE},
+       {0x17935, 0x93E1},
+       {0x17936, 0x93D1},
+       {0x17937, 0x93DF},
+       {0x17938, 0x93C3},
+       {0x17939, 0x93C8},
+       {0x1793A, 0x93DC},
+       {0x1793B, 0x93DD},
+       {0x1793C, 0x93D6},
+       {0x1793D, 0x93E2},
+       {0x1793E, 0x93CD},
+       {0x1793F, 0x93D8},
+       {0x17940, 0x93E4},
+       {0x17941, 0x93D7},
+       {0x17942, 0x93E8},
+       {0x17943, 0x95DC},
+       {0x17944, 0x96B4},
+       {0x17945, 0x96E3},
+       {0x17946, 0x972A},
+       {0x17947, 0x9727},
+       {0x17948, 0x9761},
+       {0x17949, 0x97DC},
+       {0x1794A, 0x97FB},
+       {0x1794B, 0x985E},
+       {0x1794C, 0x9858},
+       {0x1794D, 0x985B},
+       {0x1794E, 0x98BC},
+       {0x1794F, 0x9945},
+       {0x17950, 0x9949},
+       {0x17951, 0x9A16},
+       {0x17952, 0x9A19},
+       {0x17953, 0x9B0D},
+       {0x17954, 0x9BE8},
+       {0x17955, 0x9BE7},
+       {0x17956, 0x9BD6},
+       {0x17957, 0x9BDB},
+       {0x17958, 0x9D89},
+       {0x17959, 0x9D61},
+       {0x1795A, 0x9D72},
+       {0x1795B, 0x9D6A},
+       {0x1795C, 0x9D6C},
+       {0x1795D, 0x9E92},
+       {0x1795E, 0x9E97},
+       {0x1795F, 0x9E93},
+       {0x17960, 0x9EB4},
+       {0x17961, 0x52F8},
+       {0x17962, 0x56B7},
+       {0x17963, 0x56B6},
+       {0x17964, 0x56B4},
+       {0x17965, 0x56BC},
+       {0x17966, 0x58E4},
+       {0x17967, 0x5B40},
+       {0x17968, 0x5B43},
+       {0x17969, 0x5B7D},
+       {0x1796A, 0x5BF6},
+       {0x1796B, 0x5DC9},
+       {0x1796C, 0x61F8},
+       {0x1796D, 0x61FA},
+       {0x1796E, 0x6518},
+       {0x1796F, 0x6514},
+       {0x17970, 0x6519},
+       {0x17971, 0x66E6},
+       {0x17972, 0x6727},
+       {0x17973, 0x6AEC},
+       {0x17974, 0x703E},
+       {0x17975, 0x7030},
+       {0x17976, 0x7032},
+       {0x17977, 0x7210},
+       {0x17978, 0x737B},
+       {0x17979, 0x74CF},
+       {0x1797A, 0x7662},
+       {0x1797B, 0x7665},
+       {0x1797C, 0x7926},
+       {0x1797D, 0x792A},
+       {0x1797E, 0x792C},
+       {0x17A21, 0x792B},
+       {0x17A22, 0x7AC7},
+       {0x17A23, 0x7AF6},
+       {0x17A24, 0x7C4C},
+       {0x17A25, 0x7C43},
+       {0x17A26, 0x7C4D},
+       {0x17A27, 0x7CEF},
+       {0x17A28, 0x7CF0},
+       {0x17A29, 0x8FAE},
+       {0x17A2A, 0x7E7D},
+       {0x17A2B, 0x7E7C},
+       {0x17A2C, 0x7E82},
+       {0x17A2D, 0x7F4C},
+       {0x17A2E, 0x8000},
+       {0x17A2F, 0x81DA},
+       {0x17A30, 0x8266},
+       {0x17A31, 0x85FB},
+       {0x17A32, 0x85F9},
+       {0x17A33, 0x8611},
+       {0x17A34, 0x85FA},
+       {0x17A35, 0x8606},
+       {0x17A36, 0x860B},
+       {0x17A37, 0x8607},
+       {0x17A38, 0x860A},
+       {0x17A39, 0x8814},
+       {0x17A3A, 0x8815},
+       {0x17A3B, 0x8964},
+       {0x17A3C, 0x89BA},
+       {0x17A3D, 0x89F8},
+       {0x17A3E, 0x8B70},
+       {0x17A3F, 0x8B6C},
+       {0x17A40, 0x8B66},
+       {0x17A41, 0x8B6F},
+       {0x17A42, 0x8B5F},
+       {0x17A43, 0x8B6B},
+       {0x17A44, 0x8D0F},
+       {0x17A45, 0x8D0D},
+       {0x17A46, 0x8E89},
+       {0x17A47, 0x8E81},
+       {0x17A48, 0x8E85},
+       {0x17A49, 0x8E82},
+       {0x17A4A, 0x91B4},
+       {0x17A4B, 0x91CB},
+       {0x17A4C, 0x9418},
+       {0x17A4D, 0x9403},
+       {0x17A4E, 0x93FD},
+       {0x17A4F, 0x95E1},
+       {0x17A50, 0x9730},
+       {0x17A51, 0x98C4},
+       {0x17A52, 0x9952},
+       {0x17A53, 0x9951},
+       {0x17A54, 0x99A8},
+       {0x17A55, 0x9A2B},
+       {0x17A56, 0x9A30},
+       {0x17A57, 0x9A37},
+       {0x17A58, 0x9A35},
+       {0x17A59, 0x9C13},
+       {0x17A5A, 0x9C0D},
+       {0x17A5B, 0x9E79},
+       {0x17A5C, 0x9EB5},
+       {0x17A5D, 0x9EE8},
+       {0x17A5E, 0x9F2F},
+       {0x17A5F, 0x9F5F},
+       {0x17A60, 0x9F63},
+       {0x17A61, 0x9F61},
+       {0x17A62, 0x5137},
+       {0x17A63, 0x5138},
+       {0x17A64, 0x56C1},
+       {0x17A65, 0x56C0},
+       {0x17A66, 0x56C2},
+       {0x17A67, 0x5914},
+       {0x17A68, 0x5C6C},
+       {0x17A69, 0x5DCD},
+       {0x17A6A, 0x61FC},
+       {0x17A6B, 0x61FE},
+       {0x17A6C, 0x651D},
+       {0x17A6D, 0x651C},
+       {0x17A6E, 0x6595},
+       {0x17A6F, 0x66E9},
+       {0x17A70, 0x6AFB},
+       {0x17A71, 0x6B04},
+       {0x17A72, 0x6AFA},
+       {0x17A73, 0x6BB2},
+       {0x17A74, 0x704C},
+       {0x17A75, 0x721B},
+       {0x17A76, 0x72A7},
+       {0x17A77, 0x74D6},
+       {0x17A78, 0x74D4},
+       {0x17A79, 0x7669},
+       {0x17A7A, 0x77D3},
+       {0x17A7B, 0x7C50},
+       {0x17A7C, 0x7E8F},
+       {0x17A7D, 0x7E8C},
+       {0x17A7E, 0x7FBC},
+       {0x17B21, 0x8617},
+       {0x17B22, 0x862D},
+       {0x17B23, 0x861A},
+       {0x17B24, 0x8823},
+       {0x17B25, 0x8822},
+       {0x17B26, 0x8821},
+       {0x17B27, 0x881F},
+       {0x17B28, 0x896A},
+       {0x17B29, 0x896C},
+       {0x17B2A, 0x89BD},
+       {0x17B2B, 0x8B74},
+       {0x17B2C, 0x8B77},
+       {0x17B2D, 0x8B7D},
+       {0x17B2E, 0x8D13},
+       {0x17B2F, 0x8E8A},
+       {0x17B30, 0x8E8D},
+       {0x17B31, 0x8E8B},
+       {0x17B32, 0x8F5F},
+       {0x17B33, 0x8FAF},
+       {0x17B34, 0x91BA},
+       {0x17B35, 0x942E},
+       {0x17B36, 0x9433},
+       {0x17B37, 0x9435},
+       {0x17B38, 0x943A},
+       {0x17B39, 0x9438},
+       {0x17B3A, 0x9432},
+       {0x17B3B, 0x942B},
+       {0x17B3C, 0x95E2},
+       {0x17B3D, 0x9738},
+       {0x17B3E, 0x9739},
+       {0x17B3F, 0x9732},
+       {0x17B40, 0x97FF},
+       {0x17B41, 0x9867},
+       {0x17B42, 0x9865},
+       {0x17B43, 0x9957},
+       {0x17B44, 0x9A45},
+       {0x17B45, 0x9A43},
+       {0x17B46, 0x9A40},
+       {0x17B47, 0x9A3E},
+       {0x17B48, 0x9ACF},
+       {0x17B49, 0x9B54},
+       {0x17B4A, 0x9B51},
+       {0x17B4B, 0x9C2D},
+       {0x17B4C, 0x9C25},
+       {0x17B4D, 0x9DAF},
+       {0x17B4E, 0x9DB4},
+       {0x17B4F, 0x9DC2},
+       {0x17B50, 0x9DB8},
+       {0x17B51, 0x9E9D},
+       {0x17B52, 0x9EEF},
+       {0x17B53, 0x9F19},
+       {0x17B54, 0x9F5C},
+       {0x17B55, 0x9F66},
+       {0x17B56, 0x9F67},
+       {0x17B57, 0x513C},
+       {0x17B58, 0x513B},
+       {0x17B59, 0x56C8},
+       {0x17B5A, 0x56CA},
+       {0x17B5B, 0x56C9},
+       {0x17B5C, 0x5B7F},
+       {0x17B5D, 0x5DD4},
+       {0x17B5E, 0x5DD2},
+       {0x17B5F, 0x5F4E},
+       {0x17B60, 0x61FF},
+       {0x17B61, 0x6524},
+       {0x17B62, 0x6B0A},
+       {0x17B63, 0x6B61},
+       {0x17B64, 0x7051},
+       {0x17B65, 0x7058},
+       {0x17B66, 0x7380},
+       {0x17B67, 0x74E4},
+       {0x17B68, 0x758A},
+       {0x17B69, 0x766E},
+       {0x17B6A, 0x766C},
+       {0x17B6B, 0x79B3},
+       {0x17B6C, 0x7C60},
+       {0x17B6D, 0x7C5F},
+       {0x17B6E, 0x807E},
+       {0x17B6F, 0x807D},
+       {0x17B70, 0x81DF},
+       {0x17B71, 0x8972},
+       {0x17B72, 0x896F},
+       {0x17B73, 0x89FC},
+       {0x17B74, 0x8B80},
+       {0x17B75, 0x8D16},
+       {0x17B76, 0x8D17},
+       {0x17B77, 0x8E91},
+       {0x17B78, 0x8E93},
+       {0x17B79, 0x8F61},
+       {0x17B7A, 0x9148},
+       {0x17B7B, 0x9444},
+       {0x17B7C, 0x9451},
+       {0x17B7D, 0x9452},
+       {0x17B7E, 0x973D},
+       {0x17C21, 0x973E},
+       {0x17C22, 0x97C3},
+       {0x17C23, 0x97C1},
+       {0x17C24, 0x986B},
+       {0x17C25, 0x9955},
+       {0x17C26, 0x9A55},
+       {0x17C27, 0x9A4D},
+       {0x17C28, 0x9AD2},
+       {0x17C29, 0x9B1A},
+       {0x17C2A, 0x9C49},
+       {0x17C2B, 0x9C31},
+       {0x17C2C, 0x9C3E},
+       {0x17C2D, 0x9C3B},
+       {0x17C2E, 0x9DD3},
+       {0x17C2F, 0x9DD7},
+       {0x17C30, 0x9F34},
+       {0x17C31, 0x9F6C},
+       {0x17C32, 0x9F6A},
+       {0x17C33, 0x9F94},
+       {0x17C34, 0x56CC},
+       {0x17C35, 0x5DD6},
+       {0x17C36, 0x6200},
+       {0x17C37, 0x6523},
+       {0x17C38, 0x652B},
+       {0x17C39, 0x652A},
+       {0x17C3A, 0x66EC},
+       {0x17C3B, 0x6B10},
+       {0x17C3C, 0x74DA},
+       {0x17C3D, 0x7ACA},
+       {0x17C3E, 0x7C64},
+       {0x17C3F, 0x7C63},
+       {0x17C40, 0x7C65},
+       {0x17C41, 0x7E93},
+       {0x17C42, 0x7E96},
+       {0x17C43, 0x7E94},
+       {0x17C44, 0x81E2},
+       {0x17C45, 0x8638},
+       {0x17C46, 0x863F},
+       {0x17C47, 0x8831},
+       {0x17C48, 0x8B8A},
+       {0x17C49, 0x9090},
+       {0x17C4A, 0x908F},
+       {0x17C4B, 0x9463},
+       {0x17C4C, 0x9460},
+       {0x17C4D, 0x9464},
+       {0x17C4E, 0x9768},
+       {0x17C4F, 0x986F},
+       {0x17C50, 0x995C},
+       {0x17C51, 0x9A5A},
+       {0x17C52, 0x9A5B},
+       {0x17C53, 0x9A57},
+       {0x17C54, 0x9AD3},
+       {0x17C55, 0x9AD4},
+       {0x17C56, 0x9AD1},
+       {0x17C57, 0x9C54},
+       {0x17C58, 0x9C57},
+       {0x17C59, 0x9C56},
+       {0x17C5A, 0x9DE5},
+       {0x17C5B, 0x9E9F},
+       {0x17C5C, 0x9EF4},
+       {0x17C5D, 0x56D1},
+       {0x17C5E, 0x58E9},
+       {0x17C5F, 0x652C},
+       {0x17C60, 0x705E},
+       {0x17C61, 0x7671},
+       {0x17C62, 0x7672},
+       {0x17C63, 0x77D7},
+       {0x17C64, 0x7F50},
+       {0x17C65, 0x7F88},
+       {0x17C66, 0x8836},
+       {0x17C67, 0x8839},
+       {0x17C68, 0x8862},
+       {0x17C69, 0x8B93},
+       {0x17C6A, 0x8B92},
+       {0x17C6B, 0x8B96},
+       {0x17C6C, 0x8277},
+       {0x17C6D, 0x8D1B},
+       {0x17C6E, 0x91C0},
+       {0x17C6F, 0x946A},
+       {0x17C70, 0x9742},
+       {0x17C71, 0x9748},
+       {0x17C72, 0x9744},
+       {0x17C73, 0x97C6},
+       {0x17C74, 0x9870},
+       {0x17C75, 0x9A5F},
+       {0x17C76, 0x9B22},
+       {0x17C77, 0x9B58},
+       {0x17C78, 0x9C5F},
+       {0x17C79, 0x9DF9},
+       {0x17C7A, 0x9DFA},
+       {0x17C7B, 0x9E7C},
+       {0x17C7C, 0x9E7D},
+       {0x17C7D, 0x9F07},
+       {0x17C7E, 0x9F77},
+       {0x17D21, 0x9F72},
+       {0x17D22, 0x5EF3},
+       {0x17D23, 0x6B16},
+       {0x17D24, 0x7063},
+       {0x17D25, 0x7C6C},
+       {0x17D26, 0x7C6E},
+       {0x17D27, 0x883B},
+       {0x17D28, 0x89C0},
+       {0x17D29, 0x8EA1},
+       {0x17D2A, 0x91C1},
+       {0x17D2B, 0x9472},
+       {0x17D2C, 0x9470},
+       {0x17D2D, 0x9871},
+       {0x17D2E, 0x995E},
+       {0x17D2F, 0x9AD6},
+       {0x17D30, 0x9B23},
+       {0x17D31, 0x9ECC},
+       {0x17D32, 0x7064},
+       {0x17D33, 0x77DA},
+       {0x17D34, 0x8B9A},
+       {0x17D35, 0x9477},
+       {0x17D36, 0x97C9},
+       {0x17D37, 0x9A62},
+       {0x17D38, 0x9A65},
+       {0x17D39, 0x7E9C},
+       {0x17D3A, 0x8B9C},
+       {0x17D3B, 0x8EAA},
+       {0x17D3C, 0x91C5},
+       {0x17D3D, 0x947D},
+       {0x17D3E, 0x947E},
+       {0x17D3F, 0x947C},
+       {0x17D40, 0x9C77},
+       {0x17D41, 0x9C78},
+       {0x17D42, 0x9EF7},
+       {0x17D43, 0x8C54},
+       {0x17D44, 0x947F},
+       {0x17D45, 0x9E1A},
+       {0x17D46, 0x7228},
+       {0x17D47, 0x9A6A},
+       {0x17D48, 0x9B31},
+       {0x17D49, 0x9E1B},
+       {0x17D4A, 0x9E1E},
+       {0x17D4B, 0x7C72},
+       {0x22121, 0x4E42},
+       {0x22122, 0x4E5C},
+       {0x22123, 0x51F5},
+       {0x22124, 0x531A},
+       {0x22125, 0x5382},
+       {0x22126, 0x4E07},
+       {0x22127, 0x4E0C},
+       {0x22128, 0x4E47},
+       {0x22129, 0x4E8D},
+       {0x2212A, 0x56D7},
+       {0x2212B, 0x5C6E},
+       {0x2212C, 0x5F73},
+       {0x2212D, 0x4E0F},
+       {0x2212E, 0x5187},
+       {0x2212F, 0x4E0E},
+       {0x22130, 0x4E2E},
+       {0x22131, 0x4E93},
+       {0x22132, 0x4EC2},
+       {0x22133, 0x4EC9},
+       {0x22134, 0x4EC8},
+       {0x22135, 0x5198},
+       {0x22136, 0x52FC},
+       {0x22137, 0x536C},
+       {0x22138, 0x53B9},
+       {0x22139, 0x5720},
+       {0x2213A, 0x5903},
+       {0x2213B, 0x592C},
+       {0x2213C, 0x5C10},
+       {0x2213D, 0x5DFF},
+       {0x2213E, 0x65E1},
+       {0x2213F, 0x6BB3},
+       {0x22140, 0x6BCC},
+       {0x22141, 0x6C14},
+       {0x22142, 0x723F},
+       {0x22143, 0x4E31},
+       {0x22144, 0x4E3C},
+       {0x22145, 0x4EE8},
+       {0x22146, 0x4EDC},
+       {0x22147, 0x4EE9},
+       {0x22148, 0x4EE1},
+       {0x22149, 0x4EDD},
+       {0x2214A, 0x4EDA},
+       {0x2214B, 0x520C},
+       {0x2214C, 0x5209},
+       {0x2214D, 0x531C},
+       {0x2214E, 0x534C},
+       {0x2214F, 0x5722},
+       {0x22150, 0x5723},
+       {0x22151, 0x5917},
+       {0x22152, 0x592F},
+       {0x22153, 0x5B81},
+       {0x22154, 0x5B84},
+       {0x22155, 0x5C12},
+       {0x22156, 0x5C3B},
+       {0x22157, 0x5C74},
+       {0x22158, 0x5C73},
+       {0x22159, 0x5E04},
+       {0x2215A, 0x5E80},
+       {0x2215B, 0x5E82},
+       {0x2215C, 0x5FC9},
+       {0x2215D, 0x6209},
+       {0x2215E, 0x6250},
+       {0x2215F, 0x6C15},
+       {0x22160, 0x6C36},
+       {0x22161, 0x6C43},
+       {0x22162, 0x6C3F},
+       {0x22163, 0x6C3B},
+       {0x22164, 0x72AE},
+       {0x22165, 0x72B0},
+       {0x22166, 0x738A},
+       {0x22167, 0x79B8},
+       {0x22168, 0x808A},
+       {0x22169, 0x961E},
+       {0x2216A, 0x4F0E},
+       {0x2216B, 0x4F18},
+       {0x2216C, 0x4F2C},
+       {0x2216D, 0x4EF5},
+       {0x2216E, 0x4F14},
+       {0x2216F, 0x4EF1},
+       {0x22170, 0x4F00},
+       {0x22171, 0x4EF7},
+       {0x22172, 0x4F08},
+       {0x22173, 0x4F1D},
+       {0x22174, 0x4F02},
+       {0x22175, 0x4F05},
+       {0x22176, 0x4F22},
+       {0x22177, 0x4F13},
+       {0x22178, 0x4F04},
+       {0x22179, 0x4EF4},
+       {0x2217A, 0x4F12},
+       {0x2217B, 0x51B1},
+       {0x2217C, 0x5213},
+       {0x2217D, 0x5210},
+       {0x2217E, 0x52A6},
+       {0x22221, 0x5322},
+       {0x22222, 0x531F},
+       {0x22223, 0x534D},
+       {0x22224, 0x538A},
+       {0x22225, 0x5407},
+       {0x22226, 0x56E1},
+       {0x22227, 0x56DF},
+       {0x22228, 0x572E},
+       {0x22229, 0x572A},
+       {0x2222A, 0x5734},
+       {0x2222B, 0x593C},
+       {0x2222C, 0x5980},
+       {0x2222D, 0x597C},
+       {0x2222E, 0x5985},
+       {0x2222F, 0x597B},
+       {0x22230, 0x597E},
+       {0x22231, 0x5977},
+       {0x22232, 0x597F},
+       {0x22233, 0x5B56},
+       {0x22234, 0x5C15},
+       {0x22235, 0x5C25},
+       {0x22236, 0x5C7C},
+       {0x22237, 0x5C7A},
+       {0x22238, 0x5C7B},
+       {0x22239, 0x5C7E},
+       {0x2223A, 0x5DDF},
+       {0x2223B, 0x5E75},
+       {0x2223C, 0x5E84},
+       {0x2223D, 0x5F02},
+       {0x2223E, 0x5F1A},
+       {0x2223F, 0x5F74},
+       {0x22240, 0x5FD5},
+       {0x22241, 0x5FD4},
+       {0x22242, 0x5FCF},
+       {0x22243, 0x625C},
+       {0x22244, 0x625E},
+       {0x22245, 0x6264},
+       {0x22246, 0x6261},
+       {0x22247, 0x6266},
+       {0x22248, 0x6262},
+       {0x22249, 0x6259},
+       {0x2224A, 0x6260},
+       {0x2224B, 0x625A},
+       {0x2224C, 0x6265},
+       {0x2224D, 0x6537},
+       {0x2224E, 0x65EF},
+       {0x2224F, 0x65EE},
+       {0x22250, 0x673E},
+       {0x22251, 0x6739},
+       {0x22252, 0x6738},
+       {0x22253, 0x673B},
+       {0x22254, 0x673A},
+       {0x22255, 0x673F},
+       {0x22256, 0x673C},
+       {0x22257, 0x6733},
+       {0x22258, 0x6C18},
+       {0x22259, 0x6C46},
+       {0x2225A, 0x6C52},
+       {0x2225B, 0x6C5C},
+       {0x2225C, 0x6C4F},
+       {0x2225D, 0x6C4A},
+       {0x2225E, 0x6C54},
+       {0x2225F, 0x6C4B},
+       {0x22260, 0x6C4C},
+       {0x22261, 0x7071},
+       {0x22262, 0x725E},
+       {0x22263, 0x72B4},
+       {0x22264, 0x72B5},
+       {0x22265, 0x738E},
+       {0x22266, 0x752A},
+       {0x22267, 0x767F},
+       {0x22268, 0x7A75},
+       {0x22269, 0x7F51},
+       {0x2226A, 0x8278},
+       {0x2226B, 0x827C},
+       {0x2226C, 0x8280},
+       {0x2226D, 0x827D},
+       {0x2226E, 0x827F},
+       {0x2226F, 0x864D},
+       {0x22270, 0x897E},
+       {0x22271, 0x9099},
+       {0x22272, 0x9097},
+       {0x22273, 0x9098},
+       {0x22274, 0x909B},
+       {0x22275, 0x9094},
+       {0x22276, 0x9622},
+       {0x22277, 0x9624},
+       {0x22278, 0x9620},
+       {0x22279, 0x9623},
+       {0x2227A, 0x4F56},
+       {0x2227B, 0x4F3B},
+       {0x2227C, 0x4F62},
+       {0x2227D, 0x4F49},
+       {0x2227E, 0x4F53},
+       {0x22321, 0x4F64},
+       {0x22322, 0x4F3E},
+       {0x22323, 0x4F67},
+       {0x22324, 0x4F52},
+       {0x22325, 0x4F5F},
+       {0x22326, 0x4F41},
+       {0x22327, 0x4F58},
+       {0x22328, 0x4F2D},
+       {0x22329, 0x4F33},
+       {0x2232A, 0x4F3F},
+       {0x2232B, 0x4F61},
+       {0x2232C, 0x518F},
+       {0x2232D, 0x51B9},
+       {0x2232E, 0x521C},
+       {0x2232F, 0x521E},
+       {0x22330, 0x5221},
+       {0x22331, 0x52AD},
+       {0x22332, 0x52AE},
+       {0x22333, 0x5309},
+       {0x22334, 0x5363},
+       {0x22335, 0x5372},
+       {0x22336, 0x538E},
+       {0x22337, 0x538F},
+       {0x22338, 0x5430},
+       {0x22339, 0x5437},
+       {0x2233A, 0x542A},
+       {0x2233B, 0x5454},
+       {0x2233C, 0x5445},
+       {0x2233D, 0x5419},
+       {0x2233E, 0x541C},
+       {0x2233F, 0x5425},
+       {0x22340, 0x5418},
+       {0x22341, 0x543D},
+       {0x22342, 0x544F},
+       {0x22343, 0x5441},
+       {0x22344, 0x5428},
+       {0x22345, 0x5424},
+       {0x22346, 0x5447},
+       {0x22347, 0x56EE},
+       {0x22348, 0x56E7},
+       {0x22349, 0x56E5},
+       {0x2234A, 0x5741},
+       {0x2234B, 0x5745},
+       {0x2234C, 0x574C},
+       {0x2234D, 0x5749},
+       {0x2234E, 0x574B},
+       {0x2234F, 0x5752},
+       {0x22350, 0x5906},
+       {0x22351, 0x5940},
+       {0x22352, 0x59A6},
+       {0x22353, 0x5998},
+       {0x22354, 0x59A0},
+       {0x22355, 0x5997},
+       {0x22356, 0x598E},
+       {0x22357, 0x59A2},
+       {0x22358, 0x5990},
+       {0x22359, 0x598F},
+       {0x2235A, 0x59A7},
+       {0x2235B, 0x59A1},
+       {0x2235C, 0x5B8E},
+       {0x2235D, 0x5B92},
+       {0x2235E, 0x5C28},
+       {0x2235F, 0x5C2A},
+       {0x22360, 0x5C8D},
+       {0x22361, 0x5C8F},
+       {0x22362, 0x5C88},
+       {0x22363, 0x5C8B},
+       {0x22364, 0x5C89},
+       {0x22365, 0x5C92},
+       {0x22366, 0x5C8A},
+       {0x22367, 0x5C86},
+       {0x22368, 0x5C93},
+       {0x22369, 0x5C95},
+       {0x2236A, 0x5DE0},
+       {0x2236B, 0x5E0A},
+       {0x2236C, 0x5E0E},
+       {0x2236D, 0x5E8B},
+       {0x2236E, 0x5E89},
+       {0x2236F, 0x5E8C},
+       {0x22370, 0x5E88},
+       {0x22371, 0x5E8D},
+       {0x22372, 0x5F05},
+       {0x22373, 0x5F1D},
+       {0x22374, 0x5F78},
+       {0x22375, 0x5F76},
+       {0x22376, 0x5FD2},
+       {0x22377, 0x5FD1},
+       {0x22378, 0x5FD0},
+       {0x22379, 0x5FED},
+       {0x2237A, 0x5FE8},
+       {0x2237B, 0x5FEE},
+       {0x2237C, 0x5FF3},
+       {0x2237D, 0x5FE1},
+       {0x2237E, 0x5FE4},
+       {0x22421, 0x5FE3},
+       {0x22422, 0x5FFA},
+       {0x22423, 0x5FEF},
+       {0x22424, 0x5FF7},
+       {0x22425, 0x5FFB},
+       {0x22426, 0x6000},
+       {0x22427, 0x5FF4},
+       {0x22428, 0x623A},
+       {0x22429, 0x6283},
+       {0x2242A, 0x628C},
+       {0x2242B, 0x628E},
+       {0x2242C, 0x628F},
+       {0x2242D, 0x6294},
+       {0x2242E, 0x6287},
+       {0x2242F, 0x6271},
+       {0x22430, 0x627B},
+       {0x22431, 0x627A},
+       {0x22432, 0x6270},
+       {0x22433, 0x6281},
+       {0x22434, 0x6288},
+       {0x22435, 0x6277},
+       {0x22436, 0x627D},
+       {0x22437, 0x6272},
+       {0x22438, 0x6274},
+       {0x22439, 0x65F0},
+       {0x2243A, 0x65F4},
+       {0x2243B, 0x65F3},
+       {0x2243C, 0x65F2},
+       {0x2243D, 0x65F5},
+       {0x2243E, 0x6745},
+       {0x2243F, 0x6747},
+       {0x22440, 0x6759},
+       {0x22441, 0x6755},
+       {0x22442, 0x674C},
+       {0x22443, 0x6748},
+       {0x22444, 0x675D},
+       {0x22445, 0x674D},
+       {0x22446, 0x675A},
+       {0x22447, 0x674B},
+       {0x22448, 0x6BD0},
+       {0x22449, 0x6C19},
+       {0x2244A, 0x6C1A},
+       {0x2244B, 0x6C78},
+       {0x2244C, 0x6C67},
+       {0x2244D, 0x6C6B},
+       {0x2244E, 0x6C84},
+       {0x2244F, 0x6C8B},
+       {0x22450, 0x6C8F},
+       {0x22451, 0x6C71},
+       {0x22452, 0x6C6F},
+       {0x22453, 0x6C69},
+       {0x22454, 0x6C9A},
+       {0x22455, 0x6C6D},
+       {0x22456, 0x6C87},
+       {0x22457, 0x6C95},
+       {0x22458, 0x6C9C},
+       {0x22459, 0x6C66},
+       {0x2245A, 0x6C73},
+       {0x2245B, 0x6C65},
+       {0x2245C, 0x6C7B},
+       {0x2245D, 0x6C8E},
+       {0x2245E, 0x7074},
+       {0x2245F, 0x707A},
+       {0x22460, 0x7263},
+       {0x22461, 0x72BF},
+       {0x22462, 0x72BD},
+       {0x22463, 0x72C3},
+       {0x22464, 0x72C6},
+       {0x22465, 0x72C1},
+       {0x22466, 0x72BA},
+       {0x22467, 0x72C5},
+       {0x22468, 0x7395},
+       {0x22469, 0x7397},
+       {0x2246A, 0x7393},
+       {0x2246B, 0x7394},
+       {0x2246C, 0x7392},
+       {0x2246D, 0x753A},
+       {0x2246E, 0x7539},
+       {0x2246F, 0x7594},
+       {0x22470, 0x7595},
+       {0x22471, 0x7681},
+       {0x22472, 0x793D},
+       {0x22473, 0x8034},
+       {0x22474, 0x8095},
+       {0x22475, 0x8099},
+       {0x22476, 0x8090},
+       {0x22477, 0x8092},
+       {0x22478, 0x809C},
+       {0x22479, 0x8290},
+       {0x2247A, 0x828F},
+       {0x2247B, 0x8285},
+       {0x2247C, 0x828E},
+       {0x2247D, 0x8291},
+       {0x2247E, 0x8293},
+       {0x22521, 0x828A},
+       {0x22522, 0x8283},
+       {0x22523, 0x8284},
+       {0x22524, 0x8C78},
+       {0x22525, 0x8FC9},
+       {0x22526, 0x8FBF},
+       {0x22527, 0x909F},
+       {0x22528, 0x90A1},
+       {0x22529, 0x90A5},
+       {0x2252A, 0x909E},
+       {0x2252B, 0x90A7},
+       {0x2252C, 0x90A0},
+       {0x2252D, 0x9630},
+       {0x2252E, 0x9628},
+       {0x2252F, 0x962F},
+       {0x22530, 0x962D},
+       {0x22531, 0x4E33},
+       {0x22532, 0x4F98},
+       {0x22533, 0x4F7C},
+       {0x22534, 0x4F85},
+       {0x22535, 0x4F7D},
+       {0x22536, 0x4F80},
+       {0x22537, 0x4F87},
+       {0x22538, 0x4F76},
+       {0x22539, 0x4F74},
+       {0x2253A, 0x4F89},
+       {0x2253B, 0x4F84},
+       {0x2253C, 0x4F77},
+       {0x2253D, 0x4F4C},
+       {0x2253E, 0x4F97},
+       {0x2253F, 0x4F6A},
+       {0x22540, 0x4F9A},
+       {0x22541, 0x4F79},
+       {0x22542, 0x4F81},
+       {0x22543, 0x4F78},
+       {0x22544, 0x4F90},
+       {0x22545, 0x4F9C},
+       {0x22546, 0x4F94},
+       {0x22547, 0x4F9E},
+       {0x22548, 0x4F92},
+       {0x22549, 0x4F82},
+       {0x2254A, 0x4F95},
+       {0x2254B, 0x4F6B},
+       {0x2254C, 0x4F6E},
+       {0x2254D, 0x519E},
+       {0x2254E, 0x51BC},
+       {0x2254F, 0x51BE},
+       {0x22550, 0x5235},
+       {0x22551, 0x5232},
+       {0x22552, 0x5233},
+       {0x22553, 0x5246},
+       {0x22554, 0x5231},
+       {0x22555, 0x52BC},
+       {0x22556, 0x530A},
+       {0x22557, 0x530B},
+       {0x22558, 0x533C},
+       {0x22559, 0x5392},
+       {0x2255A, 0x5394},
+       {0x2255B, 0x5487},
+       {0x2255C, 0x547F},
+       {0x2255D, 0x5481},
+       {0x2255E, 0x5491},
+       {0x2255F, 0x5482},
+       {0x22560, 0x5488},
+       {0x22561, 0x546B},
+       {0x22562, 0x547A},
+       {0x22563, 0x547E},
+       {0x22564, 0x5465},
+       {0x22565, 0x546C},
+       {0x22566, 0x5474},
+       {0x22567, 0x5466},
+       {0x22568, 0x548D},
+       {0x22569, 0x546F},
+       {0x2256A, 0x5461},
+       {0x2256B, 0x5460},
+       {0x2256C, 0x5498},
+       {0x2256D, 0x5463},
+       {0x2256E, 0x5467},
+       {0x2256F, 0x5464},
+       {0x22570, 0x56F7},
+       {0x22571, 0x56F9},
+       {0x22572, 0x576F},
+       {0x22573, 0x5772},
+       {0x22574, 0x576D},
+       {0x22575, 0x576B},
+       {0x22576, 0x5771},
+       {0x22577, 0x5770},
+       {0x22578, 0x5776},
+       {0x22579, 0x5780},
+       {0x2257A, 0x5775},
+       {0x2257B, 0x577B},
+       {0x2257C, 0x5773},
+       {0x2257D, 0x5774},
+       {0x2257E, 0x5762},
+       {0x22621, 0x5768},
+       {0x22622, 0x577D},
+       {0x22623, 0x590C},
+       {0x22624, 0x5945},
+       {0x22625, 0x59B5},
+       {0x22626, 0x59BA},
+       {0x22627, 0x59CF},
+       {0x22628, 0x59CE},
+       {0x22629, 0x59B2},
+       {0x2262A, 0x59CC},
+       {0x2262B, 0x59C1},
+       {0x2262C, 0x59B6},
+       {0x2262D, 0x59BC},
+       {0x2262E, 0x59C3},
+       {0x2262F, 0x59D6},
+       {0x22630, 0x59B1},
+       {0x22631, 0x59BD},
+       {0x22632, 0x59C0},
+       {0x22633, 0x59C8},
+       {0x22634, 0x59B4},
+       {0x22635, 0x59C7},
+       {0x22636, 0x5B62},
+       {0x22637, 0x5B65},
+       {0x22638, 0x5B93},
+       {0x22639, 0x5B95},
+       {0x2263A, 0x5C44},
+       {0x2263B, 0x5C47},
+       {0x2263C, 0x5CAE},
+       {0x2263D, 0x5CA4},
+       {0x2263E, 0x5CA0},
+       {0x2263F, 0x5CB5},
+       {0x22640, 0x5CAF},
+       {0x22641, 0x5CA8},
+       {0x22642, 0x5CAC},
+       {0x22643, 0x5C9F},
+       {0x22644, 0x5CA3},
+       {0x22645, 0x5CAD},
+       {0x22646, 0x5CA2},
+       {0x22647, 0x5CAA},
+       {0x22648, 0x5CA7},
+       {0x22649, 0x5C9D},
+       {0x2264A, 0x5CA5},
+       {0x2264B, 0x5CB6},
+       {0x2264C, 0x5CB0},
+       {0x2264D, 0x5CA6},
+       {0x2264E, 0x5E17},
+       {0x2264F, 0x5E14},
+       {0x22650, 0x5E19},
+       {0x22651, 0x5F28},
+       {0x22652, 0x5F22},
+       {0x22653, 0x5F23},
+       {0x22654, 0x5F24},
+       {0x22655, 0x5F54},
+       {0x22656, 0x5F82},
+       {0x22657, 0x5F7E},
+       {0x22658, 0x5F7D},
+       {0x22659, 0x5FDE},
+       {0x2265A, 0x5FE5},
+       {0x2265B, 0x602D},
+       {0x2265C, 0x6026},
+       {0x2265D, 0x6019},
+       {0x2265E, 0x6032},
+       {0x2265F, 0x600B},
+       {0x22660, 0x6034},
+       {0x22661, 0x600A},
+       {0x22662, 0x6017},
+       {0x22663, 0x6033},
+       {0x22664, 0x601A},
+       {0x22665, 0x601E},
+       {0x22666, 0x602C},
+       {0x22667, 0x6022},
+       {0x22668, 0x600D},
+       {0x22669, 0x6010},
+       {0x2266A, 0x602E},
+       {0x2266B, 0x6013},
+       {0x2266C, 0x6011},
+       {0x2266D, 0x600C},
+       {0x2266E, 0x6009},
+       {0x2266F, 0x601C},
+       {0x22670, 0x6214},
+       {0x22671, 0x623D},
+       {0x22672, 0x62AD},
+       {0x22673, 0x62B4},
+       {0x22674, 0x62D1},
+       {0x22675, 0x62BE},
+       {0x22676, 0x62AA},
+       {0x22677, 0x62B6},
+       {0x22678, 0x62CA},
+       {0x22679, 0x62AE},
+       {0x2267A, 0x62B3},
+       {0x2267B, 0x62AF},
+       {0x2267C, 0x62BB},
+       {0x2267D, 0x62A9},
+       {0x2267E, 0x62B0},
+       {0x22721, 0x62B8},
+       {0x22722, 0x653D},
+       {0x22723, 0x65A8},
+       {0x22724, 0x65BB},
+       {0x22725, 0x6609},
+       {0x22726, 0x65FC},
+       {0x22727, 0x6604},
+       {0x22728, 0x6612},
+       {0x22729, 0x6608},
+       {0x2272A, 0x65FB},
+       {0x2272B, 0x6603},
+       {0x2272C, 0x660B},
+       {0x2272D, 0x660D},
+       {0x2272E, 0x6605},
+       {0x2272F, 0x65FD},
+       {0x22730, 0x6611},
+       {0x22731, 0x6610},
+       {0x22732, 0x66F6},
+       {0x22733, 0x670A},
+       {0x22734, 0x6785},
+       {0x22735, 0x676C},
+       {0x22736, 0x678E},
+       {0x22737, 0x6792},
+       {0x22738, 0x6776},
+       {0x22739, 0x677B},
+       {0x2273A, 0x6798},
+       {0x2273B, 0x6786},
+       {0x2273C, 0x6784},
+       {0x2273D, 0x6774},
+       {0x2273E, 0x678D},
+       {0x2273F, 0x678C},
+       {0x22740, 0x677A},
+       {0x22741, 0x679F},
+       {0x22742, 0x6791},
+       {0x22743, 0x6799},
+       {0x22744, 0x6783},
+       {0x22745, 0x677D},
+       {0x22746, 0x6781},
+       {0x22747, 0x6778},
+       {0x22748, 0x6779},
+       {0x22749, 0x6794},
+       {0x2274A, 0x6B25},
+       {0x2274B, 0x6B80},
+       {0x2274C, 0x6B7E},
+       {0x2274D, 0x6BDE},
+       {0x2274E, 0x6C1D},
+       {0x2274F, 0x6C93},
+       {0x22750, 0x6CEC},
+       {0x22751, 0x6CEB},
+       {0x22752, 0x6CEE},
+       {0x22753, 0x6CD9},
+       {0x22754, 0x6CB6},
+       {0x22755, 0x6CD4},
+       {0x22756, 0x6CAD},
+       {0x22757, 0x6CE7},
+       {0x22758, 0x6CB7},
+       {0x22759, 0x6CD0},
+       {0x2275A, 0x6CC2},
+       {0x2275B, 0x6CBA},
+       {0x2275C, 0x6CC3},
+       {0x2275D, 0x6CC6},
+       {0x2275E, 0x6CED},
+       {0x2275F, 0x6CF2},
+       {0x22760, 0x6CD2},
+       {0x22761, 0x6CDD},
+       {0x22762, 0x6CB4},
+       {0x22763, 0x6C8A},
+       {0x22764, 0x6C9D},
+       {0x22765, 0x6C80},
+       {0x22766, 0x6CDE},
+       {0x22767, 0x6CC0},
+       {0x22768, 0x6D30},
+       {0x22769, 0x6CCD},
+       {0x2276A, 0x6CC7},
+       {0x2276B, 0x6CB0},
+       {0x2276C, 0x6CF9},
+       {0x2276D, 0x6CCF},
+       {0x2276E, 0x6CE9},
+       {0x2276F, 0x6CD1},
+       {0x22770, 0x7094},
+       {0x22771, 0x7098},
+       {0x22772, 0x7085},
+       {0x22773, 0x7093},
+       {0x22774, 0x7086},
+       {0x22775, 0x7084},
+       {0x22776, 0x7091},
+       {0x22777, 0x7096},
+       {0x22778, 0x7082},
+       {0x22779, 0x709A},
+       {0x2277A, 0x7083},
+       {0x2277B, 0x726A},
+       {0x2277C, 0x72D6},
+       {0x2277D, 0x72CB},
+       {0x2277E, 0x72D8},
+       {0x22821, 0x72C9},
+       {0x22822, 0x72DC},
+       {0x22823, 0x72D2},
+       {0x22824, 0x72D4},
+       {0x22825, 0x72DA},
+       {0x22826, 0x72CC},
+       {0x22827, 0x72D1},
+       {0x22828, 0x73A4},
+       {0x22829, 0x73A1},
+       {0x2282A, 0x73AD},
+       {0x2282B, 0x73A6},
+       {0x2282C, 0x73A2},
+       {0x2282D, 0x73A0},
+       {0x2282E, 0x73AC},
+       {0x2282F, 0x739D},
+       {0x22830, 0x74DD},
+       {0x22831, 0x74E8},
+       {0x22832, 0x753F},
+       {0x22833, 0x7540},
+       {0x22834, 0x753E},
+       {0x22835, 0x758C},
+       {0x22836, 0x7598},
+       {0x22837, 0x76AF},
+       {0x22838, 0x76F3},
+       {0x22839, 0x76F1},
+       {0x2283A, 0x76F0},
+       {0x2283B, 0x76F5},
+       {0x2283C, 0x77F8},
+       {0x2283D, 0x77FC},
+       {0x2283E, 0x77F9},
+       {0x2283F, 0x77FB},
+       {0x22840, 0x77FA},
+       {0x22841, 0x77F7},
+       {0x22842, 0x7942},
+       {0x22843, 0x793F},
+       {0x22844, 0x79C5},
+       {0x22845, 0x7A78},
+       {0x22846, 0x7A7B},
+       {0x22847, 0x7AFB},
+       {0x22848, 0x7C75},
+       {0x22849, 0x7CFD},
+       {0x2284A, 0x8035},
+       {0x2284B, 0x808F},
+       {0x2284C, 0x80AE},
+       {0x2284D, 0x80A3},
+       {0x2284E, 0x80B8},
+       {0x2284F, 0x80B5},
+       {0x22850, 0x80AD},
+       {0x22851, 0x8220},
+       {0x22852, 0x82A0},
+       {0x22853, 0x82C0},
+       {0x22854, 0x82AB},
+       {0x22855, 0x829A},
+       {0x22856, 0x8298},
+       {0x22857, 0x829B},
+       {0x22858, 0x82B5},
+       {0x22859, 0x82A7},
+       {0x2285A, 0x82AE},
+       {0x2285B, 0x82BC},
+       {0x2285C, 0x829E},
+       {0x2285D, 0x82BA},
+       {0x2285E, 0x82B4},
+       {0x2285F, 0x82A8},
+       {0x22860, 0x82A1},
+       {0x22861, 0x82A9},
+       {0x22862, 0x82C2},
+       {0x22863, 0x82A4},
+       {0x22864, 0x82C3},
+       {0x22865, 0x82B6},
+       {0x22866, 0x82A2},
+       {0x22867, 0x8670},
+       {0x22868, 0x866F},
+       {0x22869, 0x866D},
+       {0x2286A, 0x866E},
+       {0x2286B, 0x8C56},
+       {0x2286C, 0x8FD2},
+       {0x2286D, 0x8FCB},
+       {0x2286E, 0x8FD3},
+       {0x2286F, 0x8FCD},
+       {0x22870, 0x8FD6},
+       {0x22871, 0x8FD5},
+       {0x22872, 0x8FD7},
+       {0x22873, 0x90B2},
+       {0x22874, 0x90B4},
+       {0x22875, 0x90AF},
+       {0x22876, 0x90B3},
+       {0x22877, 0x90B0},
+       {0x22878, 0x9639},
+       {0x22879, 0x963D},
+       {0x2287A, 0x963C},
+       {0x2287B, 0x963A},
+       {0x2287C, 0x9643},
+       {0x2287D, 0x4FCD},
+       {0x2287E, 0x4FC5},
+       {0x22921, 0x4FD3},
+       {0x22922, 0x4FB2},
+       {0x22923, 0x4FC9},
+       {0x22924, 0x4FCB},
+       {0x22925, 0x4FC1},
+       {0x22926, 0x4FD4},
+       {0x22927, 0x4FDC},
+       {0x22928, 0x4FD9},
+       {0x22929, 0x4FBB},
+       {0x2292A, 0x4FB3},
+       {0x2292B, 0x4FDB},
+       {0x2292C, 0x4FC7},
+       {0x2292D, 0x4FD6},
+       {0x2292E, 0x4FBA},
+       {0x2292F, 0x4FC0},
+       {0x22930, 0x4FB9},
+       {0x22931, 0x4FEC},
+       {0x22932, 0x5244},
+       {0x22933, 0x5249},
+       {0x22934, 0x52C0},
+       {0x22935, 0x52C2},
+       {0x22936, 0x533D},
+       {0x22937, 0x537C},
+       {0x22938, 0x5397},
+       {0x22939, 0x5396},
+       {0x2293A, 0x5399},
+       {0x2293B, 0x5398},
+       {0x2293C, 0x54BA},
+       {0x2293D, 0x54A1},
+       {0x2293E, 0x54AD},
+       {0x2293F, 0x54A5},
+       {0x22940, 0x54CF},
+       {0x22941, 0x54C3},
+       {0x22942, 0x830D},
+       {0x22943, 0x54B7},
+       {0x22944, 0x54AE},
+       {0x22945, 0x54D6},
+       {0x22946, 0x54B6},
+       {0x22947, 0x54C5},
+       {0x22948, 0x54C6},
+       {0x22949, 0x54A0},
+       {0x2294A, 0x5470},
+       {0x2294B, 0x54BC},
+       {0x2294C, 0x54A2},
+       {0x2294D, 0x54BE},
+       {0x2294E, 0x5472},
+       {0x2294F, 0x54DE},
+       {0x22950, 0x54B0},
+       {0x22951, 0x57B5},
+       {0x22952, 0x579E},
+       {0x22953, 0x579F},
+       {0x22954, 0x57A4},
+       {0x22955, 0x578C},
+       {0x22956, 0x5797},
+       {0x22957, 0x579D},
+       {0x22958, 0x579B},
+       {0x22959, 0x5794},
+       {0x2295A, 0x5798},
+       {0x2295B, 0x578F},
+       {0x2295C, 0x5799},
+       {0x2295D, 0x57A5},
+       {0x2295E, 0x579A},
+       {0x2295F, 0x5795},
+       {0x22960, 0x58F4},
+       {0x22961, 0x590D},
+       {0x22962, 0x5953},
+       {0x22963, 0x59E1},
+       {0x22964, 0x59DE},
+       {0x22965, 0x59EE},
+       {0x22966, 0x5A00},
+       {0x22967, 0x59F1},
+       {0x22968, 0x59DD},
+       {0x22969, 0x59FA},
+       {0x2296A, 0x59FD},
+       {0x2296B, 0x59FC},
+       {0x2296C, 0x59F6},
+       {0x2296D, 0x59E4},
+       {0x2296E, 0x59F2},
+       {0x2296F, 0x59F7},
+       {0x22970, 0x59DB},
+       {0x22971, 0x59E9},
+       {0x22972, 0x59F3},
+       {0x22973, 0x59F5},
+       {0x22974, 0x59E0},
+       {0x22975, 0x59FE},
+       {0x22976, 0x59F4},
+       {0x22977, 0x59ED},
+       {0x22978, 0x5BA8},
+       {0x22979, 0x5C4C},
+       {0x2297A, 0x5CD0},
+       {0x2297B, 0x5CD8},
+       {0x2297C, 0x5CCC},
+       {0x2297D, 0x5CD7},
+       {0x2297E, 0x5CCB},
+       {0x22A21, 0x5CDB},
+       {0x22A22, 0x5CDE},
+       {0x22A23, 0x5CDA},
+       {0x22A24, 0x5CC9},
+       {0x22A25, 0x5CC7},
+       {0x22A26, 0x5CCA},
+       {0x22A27, 0x5CD6},
+       {0x22A28, 0x5CD3},
+       {0x22A29, 0x5CD4},
+       {0x22A2A, 0x5CCF},
+       {0x22A2B, 0x5CC8},
+       {0x22A2C, 0x5CC6},
+       {0x22A2D, 0x5CCE},
+       {0x22A2E, 0x5CDF},
+       {0x22A2F, 0x5CF8},
+       {0x22A30, 0x5DF9},
+       {0x22A31, 0x5E21},
+       {0x22A32, 0x5E22},
+       {0x22A33, 0x5E23},
+       {0x22A34, 0x5E20},
+       {0x22A35, 0x5E24},
+       {0x22A36, 0x5EB0},
+       {0x22A37, 0x5EA4},
+       {0x22A38, 0x5EA2},
+       {0x22A39, 0x5E9B},
+       {0x22A3A, 0x5EA3},
+       {0x22A3B, 0x5EA5},
+       {0x22A3C, 0x5F07},
+       {0x22A3D, 0x5F2E},
+       {0x22A3E, 0x5F56},
+       {0x22A3F, 0x5F86},
+       {0x22A40, 0x6037},
+       {0x22A41, 0x6039},
+       {0x22A42, 0x6054},
+       {0x22A43, 0x6072},
+       {0x22A44, 0x605E},
+       {0x22A45, 0x6045},
+       {0x22A46, 0x6053},
+       {0x22A47, 0x6047},
+       {0x22A48, 0x6049},
+       {0x22A49, 0x605B},
+       {0x22A4A, 0x604C},
+       {0x22A4B, 0x6040},
+       {0x22A4C, 0x6042},
+       {0x22A4D, 0x605F},
+       {0x22A4E, 0x6024},
+       {0x22A4F, 0x6044},
+       {0x22A50, 0x6058},
+       {0x22A51, 0x6066},
+       {0x22A52, 0x606E},
+       {0x22A53, 0x6242},
+       {0x22A54, 0x6243},
+       {0x22A55, 0x62CF},
+       {0x22A56, 0x630D},
+       {0x22A57, 0x630B},
+       {0x22A58, 0x62F5},
+       {0x22A59, 0x630E},
+       {0x22A5A, 0x6303},
+       {0x22A5B, 0x62EB},
+       {0x22A5C, 0x62F9},
+       {0x22A5D, 0x630F},
+       {0x22A5E, 0x630C},
+       {0x22A5F, 0x62F8},
+       {0x22A60, 0x62F6},
+       {0x22A61, 0x6300},
+       {0x22A62, 0x6313},
+       {0x22A63, 0x6314},
+       {0x22A64, 0x62FA},
+       {0x22A65, 0x6315},
+       {0x22A66, 0x62FB},
+       {0x22A67, 0x62F0},
+       {0x22A68, 0x6541},
+       {0x22A69, 0x6543},
+       {0x22A6A, 0x65AA},
+       {0x22A6B, 0x65BF},
+       {0x22A6C, 0x6636},
+       {0x22A6D, 0x6621},
+       {0x22A6E, 0x6632},
+       {0x22A6F, 0x6635},
+       {0x22A70, 0x661C},
+       {0x22A71, 0x6626},
+       {0x22A72, 0x6622},
+       {0x22A73, 0x6633},
+       {0x22A74, 0x662B},
+       {0x22A75, 0x663A},
+       {0x22A76, 0x661D},
+       {0x22A77, 0x6634},
+       {0x22A78, 0x6639},
+       {0x22A79, 0x662E},
+       {0x22A7A, 0x670F},
+       {0x22A7B, 0x6710},
+       {0x22A7C, 0x67C1},
+       {0x22A7D, 0x67F2},
+       {0x22A7E, 0x67C8},
+       {0x22B21, 0x67BA},
+       {0x22B22, 0x67DC},
+       {0x22B23, 0x67BB},
+       {0x22B24, 0x67F8},
+       {0x22B25, 0x67D8},
+       {0x22B26, 0x67C0},
+       {0x22B27, 0x67B7},
+       {0x22B28, 0x67C5},
+       {0x22B29, 0x67EB},
+       {0x22B2A, 0x67E4},
+       {0x22B2B, 0x67DF},
+       {0x22B2C, 0x67B5},
+       {0x22B2D, 0x67CD},
+       {0x22B2E, 0x67B3},
+       {0x22B2F, 0x67F7},
+       {0x22B30, 0x67F6},
+       {0x22B31, 0x67EE},
+       {0x22B32, 0x67E3},
+       {0x22B33, 0x67C2},
+       {0x22B34, 0x67B9},
+       {0x22B35, 0x67CE},
+       {0x22B36, 0x67E7},
+       {0x22B37, 0x67F0},
+       {0x22B38, 0x67B2},
+       {0x22B39, 0x67FC},
+       {0x22B3A, 0x67C6},
+       {0x22B3B, 0x67ED},
+       {0x22B3C, 0x67CC},
+       {0x22B3D, 0x67AE},
+       {0x22B3E, 0x67E6},
+       {0x22B3F, 0x67DB},
+       {0x22B40, 0x67FA},
+       {0x22B41, 0x67C9},
+       {0x22B42, 0x67CA},
+       {0x22B43, 0x67C3},
+       {0x22B44, 0x67EA},
+       {0x22B45, 0x67CB},
+       {0x22B46, 0x6B28},
+       {0x22B47, 0x6B82},
+       {0x22B48, 0x6B84},
+       {0x22B49, 0x6BB6},
+       {0x22B4A, 0x6BD6},
+       {0x22B4B, 0x6BD8},
+       {0x22B4C, 0x6BE0},
+       {0x22B4D, 0x6C20},
+       {0x22B4E, 0x6C21},
+       {0x22B4F, 0x6D28},
+       {0x22B50, 0x6D34},
+       {0x22B51, 0x6D2D},
+       {0x22B52, 0x6D1F},
+       {0x22B53, 0x6D3C},
+       {0x22B54, 0x6D3F},
+       {0x22B55, 0x6D12},
+       {0x22B56, 0x6D0A},
+       {0x22B57, 0x6CDA},
+       {0x22B58, 0x6D33},
+       {0x22B59, 0x6D04},
+       {0x22B5A, 0x6D19},
+       {0x22B5B, 0x6D3A},
+       {0x22B5C, 0x6D1A},
+       {0x22B5D, 0x6D11},
+       {0x22B5E, 0x6D00},
+       {0x22B5F, 0x6D1D},
+       {0x22B60, 0x6D42},
+       {0x22B61, 0x6D01},
+       {0x22B62, 0x6D18},
+       {0x22B63, 0x6D37},
+       {0x22B64, 0x6D03},
+       {0x22B65, 0x6D0F},
+       {0x22B66, 0x6D40},
+       {0x22B67, 0x6D07},
+       {0x22B68, 0x6D20},
+       {0x22B69, 0x6D2C},
+       {0x22B6A, 0x6D08},
+       {0x22B6B, 0x6D22},
+       {0x22B6C, 0x6D09},
+       {0x22B6D, 0x6D10},
+       {0x22B6E, 0x70B7},
+       {0x22B6F, 0x709F},
+       {0x22B70, 0x70BE},
+       {0x22B71, 0x70B1},
+       {0x22B72, 0x70B0},
+       {0x22B73, 0x70A1},
+       {0x22B74, 0x70B4},
+       {0x22B75, 0x70B5},
+       {0x22B76, 0x70A9},
+       {0x22B77, 0x7241},
+       {0x22B78, 0x7249},
+       {0x22B79, 0x724A},
+       {0x22B7A, 0x726C},
+       {0x22B7B, 0x7270},
+       {0x22B7C, 0x7273},
+       {0x22B7D, 0x726E},
+       {0x22B7E, 0x72CA},
+       {0x22C21, 0x72E4},
+       {0x22C22, 0x72E8},
+       {0x22C23, 0x72EB},
+       {0x22C24, 0x72DF},
+       {0x22C25, 0x72EA},
+       {0x22C26, 0x72E6},
+       {0x22C27, 0x72E3},
+       {0x22C28, 0x7385},
+       {0x22C29, 0x73CC},
+       {0x22C2A, 0x73C2},
+       {0x22C2B, 0x73C8},
+       {0x22C2C, 0x73C5},
+       {0x22C2D, 0x73B9},
+       {0x22C2E, 0x73B6},
+       {0x22C2F, 0x73B5},
+       {0x22C30, 0x73B4},
+       {0x22C31, 0x73EB},
+       {0x22C32, 0x73BF},
+       {0x22C33, 0x73C7},
+       {0x22C34, 0x73BE},
+       {0x22C35, 0x73C3},
+       {0x22C36, 0x73C6},
+       {0x22C37, 0x73B8},
+       {0x22C38, 0x73CB},
+       {0x22C39, 0x74EC},
+       {0x22C3A, 0x74EE},
+       {0x22C3B, 0x752E},
+       {0x22C3C, 0x7547},
+       {0x22C3D, 0x7548},
+       {0x22C3E, 0x75A7},
+       {0x22C3F, 0x75AA},
+       {0x22C40, 0x7679},
+       {0x22C41, 0x76C4},
+       {0x22C42, 0x7708},
+       {0x22C43, 0x7703},
+       {0x22C44, 0x7704},
+       {0x22C45, 0x7705},
+       {0x22C46, 0x770A},
+       {0x22C47, 0x76F7},
+       {0x22C48, 0x76FB},
+       {0x22C49, 0x76FA},
+       {0x22C4A, 0x77E7},
+       {0x22C4B, 0x77E8},
+       {0x22C4C, 0x7806},
+       {0x22C4D, 0x7811},
+       {0x22C4E, 0x7812},
+       {0x22C4F, 0x7805},
+       {0x22C50, 0x7810},
+       {0x22C51, 0x780F},
+       {0x22C52, 0x780E},
+       {0x22C53, 0x7809},
+       {0x22C54, 0x7803},
+       {0x22C55, 0x7813},
+       {0x22C56, 0x794A},
+       {0x22C57, 0x794C},
+       {0x22C58, 0x794B},
+       {0x22C59, 0x7945},
+       {0x22C5A, 0x7944},
+       {0x22C5B, 0x79D5},
+       {0x22C5C, 0x79CD},
+       {0x22C5D, 0x79CF},
+       {0x22C5E, 0x79D6},
+       {0x22C5F, 0x79CE},
+       {0x22C60, 0x7A80},
+       {0x22C61, 0x7A7E},
+       {0x22C62, 0x7AD1},
+       {0x22C63, 0x7B00},
+       {0x22C64, 0x7B01},
+       {0x22C65, 0x7C7A},
+       {0x22C66, 0x7C78},
+       {0x22C67, 0x7C79},
+       {0x22C68, 0x7C7F},
+       {0x22C69, 0x7C80},
+       {0x22C6A, 0x7C81},
+       {0x22C6B, 0x7D03},
+       {0x22C6C, 0x7D08},
+       {0x22C6D, 0x7D01},
+       {0x22C6E, 0x7F58},
+       {0x22C6F, 0x7F91},
+       {0x22C70, 0x7F8D},
+       {0x22C71, 0x7FBE},
+       {0x22C72, 0x8007},
+       {0x22C73, 0x800E},
+       {0x22C74, 0x800F},
+       {0x22C75, 0x8014},
+       {0x22C76, 0x8037},
+       {0x22C77, 0x80D8},
+       {0x22C78, 0x80C7},
+       {0x22C79, 0x80E0},
+       {0x22C7A, 0x80D1},
+       {0x22C7B, 0x80C8},
+       {0x22C7C, 0x80C2},
+       {0x22C7D, 0x80D0},
+       {0x22C7E, 0x80C5},
+       {0x22D21, 0x80E3},
+       {0x22D22, 0x80D9},
+       {0x22D23, 0x80DC},
+       {0x22D24, 0x80CA},
+       {0x22D25, 0x80D5},
+       {0x22D26, 0x80C9},
+       {0x22D27, 0x80CF},
+       {0x22D28, 0x80D7},
+       {0x22D29, 0x80E6},
+       {0x22D2A, 0x80CD},
+       {0x22D2B, 0x81FF},
+       {0x22D2C, 0x8221},
+       {0x22D2D, 0x8294},
+       {0x22D2E, 0x82D9},
+       {0x22D2F, 0x82FE},
+       {0x22D30, 0x82F9},
+       {0x22D31, 0x8307},
+       {0x22D32, 0x82E8},
+       {0x22D33, 0x8300},
+       {0x22D34, 0x82D5},
+       {0x22D35, 0x833A},
+       {0x22D36, 0x82EB},
+       {0x22D37, 0x82D6},
+       {0x22D38, 0x82F4},
+       {0x22D39, 0x82EC},
+       {0x22D3A, 0x82E1},
+       {0x22D3B, 0x82F2},
+       {0x22D3C, 0x82F5},
+       {0x22D3D, 0x830C},
+       {0x22D3E, 0x82FB},
+       {0x22D3F, 0x82F6},
+       {0x22D40, 0x82F0},
+       {0x22D41, 0x82EA},
+       {0x22D42, 0x82E4},
+       {0x22D43, 0x82E0},
+       {0x22D44, 0x82FA},
+       {0x22D45, 0x82F3},
+       {0x22D46, 0x82ED},
+       {0x22D47, 0x8677},
+       {0x22D48, 0x8674},
+       {0x22D49, 0x867C},
+       {0x22D4A, 0x8673},
+       {0x22D4B, 0x8841},
+       {0x22D4C, 0x884E},
+       {0x22D4D, 0x8867},
+       {0x22D4E, 0x886A},
+       {0x22D4F, 0x8869},
+       {0x22D50, 0x89D3},
+       {0x22D51, 0x8A04},
+       {0x22D52, 0x8A07},
+       {0x22D53, 0x8D72},
+       {0x22D54, 0x8FE3},
+       {0x22D55, 0x8FE1},
+       {0x22D56, 0x8FEE},
+       {0x22D57, 0x8FE0},
+       {0x22D58, 0x90F1},
+       {0x22D59, 0x90BD},
+       {0x22D5A, 0x90BF},
+       {0x22D5B, 0x90D5},
+       {0x22D5C, 0x90C5},
+       {0x22D5D, 0x90BE},
+       {0x22D5E, 0x90C7},
+       {0x22D5F, 0x90CB},
+       {0x22D60, 0x90C8},
+       {0x22D61, 0x91D4},
+       {0x22D62, 0x91D3},
+       {0x22D63, 0x9654},
+       {0x22D64, 0x964F},
+       {0x22D65, 0x9651},
+       {0x22D66, 0x9653},
+       {0x22D67, 0x964A},
+       {0x22D68, 0x964E},
+       {0x22D69, 0x501E},
+       {0x22D6A, 0x5005},
+       {0x22D6B, 0x5007},
+       {0x22D6C, 0x5013},
+       {0x22D6D, 0x5022},
+       {0x22D6E, 0x5030},
+       {0x22D6F, 0x501B},
+       {0x22D70, 0x4FF5},
+       {0x22D71, 0x4FF4},
+       {0x22D72, 0x5033},
+       {0x22D73, 0x5037},
+       {0x22D74, 0x502C},
+       {0x22D75, 0x4FF6},
+       {0x22D76, 0x4FF7},
+       {0x22D77, 0x5017},
+       {0x22D78, 0x501C},
+       {0x22D79, 0x5020},
+       {0x22D7A, 0x5027},
+       {0x22D7B, 0x5035},
+       {0x22D7C, 0x502F},
+       {0x22D7D, 0x5031},
+       {0x22D7E, 0x500E},
+       {0x22E21, 0x515A},
+       {0x22E22, 0x5194},
+       {0x22E23, 0x5193},
+       {0x22E24, 0x51CA},
+       {0x22E25, 0x51C4},
+       {0x22E26, 0x51C5},
+       {0x22E27, 0x51C8},
+       {0x22E28, 0x51CE},
+       {0x22E29, 0x5261},
+       {0x22E2A, 0x525A},
+       {0x22E2B, 0x5252},
+       {0x22E2C, 0x525E},
+       {0x22E2D, 0x525F},
+       {0x22E2E, 0x5255},
+       {0x22E2F, 0x5262},
+       {0x22E30, 0x52CD},
+       {0x22E31, 0x530E},
+       {0x22E32, 0x539E},
+       {0x22E33, 0x5526},
+       {0x22E34, 0x54E2},
+       {0x22E35, 0x5517},
+       {0x22E36, 0x5512},
+       {0x22E37, 0x54E7},
+       {0x22E38, 0x54F3},
+       {0x22E39, 0x54E4},
+       {0x22E3A, 0x551A},
+       {0x22E3B, 0x54FF},
+       {0x22E3C, 0x5504},
+       {0x22E3D, 0x5508},
+       {0x22E3E, 0x54EB},
+       {0x22E3F, 0x5511},
+       {0x22E40, 0x5505},
+       {0x22E41, 0x54F1},
+       {0x22E42, 0x550A},
+       {0x22E43, 0x54FB},
+       {0x22E44, 0x54F7},
+       {0x22E45, 0x54F8},
+       {0x22E46, 0x54E0},
+       {0x22E47, 0x550E},
+       {0x22E48, 0x5503},
+       {0x22E49, 0x550B},
+       {0x22E4A, 0x5701},
+       {0x22E4B, 0x5702},
+       {0x22E4C, 0x57CC},
+       {0x22E4D, 0x5832},
+       {0x22E4E, 0x57D5},
+       {0x22E4F, 0x57D2},
+       {0x22E50, 0x57BA},
+       {0x22E51, 0x57C6},
+       {0x22E52, 0x57BD},
+       {0x22E53, 0x57BC},
+       {0x22E54, 0x57B8},
+       {0x22E55, 0x57B6},
+       {0x22E56, 0x57BF},
+       {0x22E57, 0x57C7},
+       {0x22E58, 0x57D0},
+       {0x22E59, 0x57B9},
+       {0x22E5A, 0x57C1},
+       {0x22E5B, 0x590E},
+       {0x22E5C, 0x594A},
+       {0x22E5D, 0x5A19},
+       {0x22E5E, 0x5A16},
+       {0x22E5F, 0x5A2D},
+       {0x22E60, 0x5A2E},
+       {0x22E61, 0x5A15},
+       {0x22E62, 0x5A0F},
+       {0x22E63, 0x5A17},
+       {0x22E64, 0x5A0A},
+       {0x22E65, 0x5A1E},
+       {0x22E66, 0x5A33},
+       {0x22E67, 0x5B6C},
+       {0x22E68, 0x5BA7},
+       {0x22E69, 0x5BAD},
+       {0x22E6A, 0x5BAC},
+       {0x22E6B, 0x5C03},
+       {0x22E6C, 0x5C56},
+       {0x22E6D, 0x5C54},
+       {0x22E6E, 0x5CEC},
+       {0x22E6F, 0x5CFF},
+       {0x22E70, 0x5CEE},
+       {0x22E71, 0x5CF1},
+       {0x22E72, 0x5CF7},
+       {0x22E73, 0x5D00},
+       {0x22E74, 0x5CF9},
+       {0x22E75, 0x5E29},
+       {0x22E76, 0x5E28},
+       {0x22E77, 0x5EA8},
+       {0x22E78, 0x5EAE},
+       {0x22E79, 0x5EAA},
+       {0x22E7A, 0x5EAC},
+       {0x22E7B, 0x5F33},
+       {0x22E7C, 0x5F30},
+       {0x22E7D, 0x5F67},
+       {0x22E7E, 0x605D},
+       {0x22F21, 0x605A},
+       {0x22F22, 0x6067},
+       {0x22F23, 0x6041},
+       {0x22F24, 0x60A2},
+       {0x22F25, 0x6088},
+       {0x22F26, 0x6080},
+       {0x22F27, 0x6092},
+       {0x22F28, 0x6081},
+       {0x22F29, 0x609D},
+       {0x22F2A, 0x6083},
+       {0x22F2B, 0x6095},
+       {0x22F2C, 0x609B},
+       {0x22F2D, 0x6097},
+       {0x22F2E, 0x6087},
+       {0x22F2F, 0x609C},
+       {0x22F30, 0x608E},
+       {0x22F31, 0x6219},
+       {0x22F32, 0x6246},
+       {0x22F33, 0x62F2},
+       {0x22F34, 0x6310},
+       {0x22F35, 0x6356},
+       {0x22F36, 0x632C},
+       {0x22F37, 0x6344},
+       {0x22F38, 0x6345},
+       {0x22F39, 0x6336},
+       {0x22F3A, 0x6343},
+       {0x22F3B, 0x63E4},
+       {0x22F3C, 0x6339},
+       {0x22F3D, 0x634B},
+       {0x22F3E, 0x634A},
+       {0x22F3F, 0x633C},
+       {0x22F40, 0x6329},
+       {0x22F41, 0x6341},
+       {0x22F42, 0x6334},
+       {0x22F43, 0x6358},
+       {0x22F44, 0x6354},
+       {0x22F45, 0x6359},
+       {0x22F46, 0x632D},
+       {0x22F47, 0x6347},
+       {0x22F48, 0x6333},
+       {0x22F49, 0x635A},
+       {0x22F4A, 0x6351},
+       {0x22F4B, 0x6338},
+       {0x22F4C, 0x6357},
+       {0x22F4D, 0x6340},
+       {0x22F4E, 0x6348},
+       {0x22F4F, 0x654A},
+       {0x22F50, 0x6546},
+       {0x22F51, 0x65C6},
+       {0x22F52, 0x65C3},
+       {0x22F53, 0x65C4},
+       {0x22F54, 0x65C2},
+       {0x22F55, 0x664A},
+       {0x22F56, 0x665F},
+       {0x22F57, 0x6647},
+       {0x22F58, 0x6651},
+       {0x22F59, 0x6712},
+       {0x22F5A, 0x6713},
+       {0x22F5B, 0x681F},
+       {0x22F5C, 0x681A},
+       {0x22F5D, 0x6849},
+       {0x22F5E, 0x6832},
+       {0x22F5F, 0x6833},
+       {0x22F60, 0x683B},
+       {0x22F61, 0x684B},
+       {0x22F62, 0x684F},
+       {0x22F63, 0x6816},
+       {0x22F64, 0x6831},
+       {0x22F65, 0x681C},
+       {0x22F66, 0x6835},
+       {0x22F67, 0x682B},
+       {0x22F68, 0x682D},
+       {0x22F69, 0x682F},
+       {0x22F6A, 0x684E},
+       {0x22F6B, 0x6844},
+       {0x22F6C, 0x6834},
+       {0x22F6D, 0x681D},
+       {0x22F6E, 0x6812},
+       {0x22F6F, 0x6814},
+       {0x22F70, 0x6826},
+       {0x22F71, 0x6828},
+       {0x22F72, 0x682E},
+       {0x22F73, 0x684D},
+       {0x22F74, 0x683A},
+       {0x22F75, 0x6825},
+       {0x22F76, 0x6820},
+       {0x22F77, 0x6B2C},
+       {0x22F78, 0x6B2F},
+       {0x22F79, 0x6B2D},
+       {0x22F7A, 0x6B31},
+       {0x22F7B, 0x6B34},
+       {0x22F7C, 0x6B6D},
+       {0x22F7D, 0x8082},
+       {0x22F7E, 0x6B88},
+       {0x23021, 0x6BE6},
+       {0x23022, 0x6BE4},
+       {0x23023, 0x6BE8},
+       {0x23024, 0x6BE3},
+       {0x23025, 0x6BE2},
+       {0x23026, 0x6BE7},
+       {0x23027, 0x6C25},
+       {0x23028, 0x6D7A},
+       {0x23029, 0x6D63},
+       {0x2302A, 0x6D64},
+       {0x2302B, 0x6D76},
+       {0x2302C, 0x6D0D},
+       {0x2302D, 0x6D61},
+       {0x2302E, 0x6D92},
+       {0x2302F, 0x6D58},
+       {0x23030, 0x6D62},
+       {0x23031, 0x6D6D},
+       {0x23032, 0x6D6F},
+       {0x23033, 0x6D91},
+       {0x23034, 0x6D8D},
+       {0x23035, 0x6DEF},
+       {0x23036, 0x6D7F},
+       {0x23037, 0x6D86},
+       {0x23038, 0x6D5E},
+       {0x23039, 0x6D67},
+       {0x2303A, 0x6D60},
+       {0x2303B, 0x6D97},
+       {0x2303C, 0x6D70},
+       {0x2303D, 0x6D7C},
+       {0x2303E, 0x6D5F},
+       {0x2303F, 0x6D82},
+       {0x23040, 0x6D98},
+       {0x23041, 0x6D2F},
+       {0x23042, 0x6D68},
+       {0x23043, 0x6D8B},
+       {0x23044, 0x6D7E},
+       {0x23045, 0x6D80},
+       {0x23046, 0x6D84},
+       {0x23047, 0x6D16},
+       {0x23048, 0x6D83},
+       {0x23049, 0x6D7B},
+       {0x2304A, 0x6D7D},
+       {0x2304B, 0x6D75},
+       {0x2304C, 0x6D90},
+       {0x2304D, 0x70DC},
+       {0x2304E, 0x70D3},
+       {0x2304F, 0x70D1},
+       {0x23050, 0x70DD},
+       {0x23051, 0x70CB},
+       {0x23052, 0x7F39},
+       {0x23053, 0x70E2},
+       {0x23054, 0x70D7},
+       {0x23055, 0x70D2},
+       {0x23056, 0x70DE},
+       {0x23057, 0x70E0},
+       {0x23058, 0x70D4},
+       {0x23059, 0x70CD},
+       {0x2305A, 0x70C5},
+       {0x2305B, 0x70C6},
+       {0x2305C, 0x70C7},
+       {0x2305D, 0x70DA},
+       {0x2305E, 0x70CE},
+       {0x2305F, 0x70E1},
+       {0x23060, 0x7242},
+       {0x23061, 0x7278},
+       {0x23062, 0x7277},
+       {0x23063, 0x7276},
+       {0x23064, 0x7300},
+       {0x23065, 0x72FA},
+       {0x23066, 0x72F4},
+       {0x23067, 0x72FE},
+       {0x23068, 0x72F6},
+       {0x23069, 0x72F3},
+       {0x2306A, 0x72FB},
+       {0x2306B, 0x7301},
+       {0x2306C, 0x73D3},
+       {0x2306D, 0x73D9},
+       {0x2306E, 0x73E5},
+       {0x2306F, 0x73D6},
+       {0x23070, 0x73BC},
+       {0x23071, 0x73E7},
+       {0x23072, 0x73E3},
+       {0x23073, 0x73E9},
+       {0x23074, 0x73DC},
+       {0x23075, 0x73D2},
+       {0x23076, 0x73DB},
+       {0x23077, 0x73D4},
+       {0x23078, 0x73DD},
+       {0x23079, 0x73DA},
+       {0x2307A, 0x73D7},
+       {0x2307B, 0x73D8},
+       {0x2307C, 0x73E8},
+       {0x2307D, 0x74DE},
+       {0x2307E, 0x74DF},
+       {0x23121, 0x74F4},
+       {0x23122, 0x74F5},
+       {0x23123, 0x7521},
+       {0x23124, 0x755B},
+       {0x23125, 0x755F},
+       {0x23126, 0x75B0},
+       {0x23127, 0x75C1},
+       {0x23128, 0x75BB},
+       {0x23129, 0x75C4},
+       {0x2312A, 0x75C0},
+       {0x2312B, 0x75BF},
+       {0x2312C, 0x75B6},
+       {0x2312D, 0x75BA},
+       {0x2312E, 0x768A},
+       {0x2312F, 0x76C9},
+       {0x23130, 0x771D},
+       {0x23131, 0x771B},
+       {0x23132, 0x7710},
+       {0x23133, 0x7713},
+       {0x23134, 0x7712},
+       {0x23135, 0x7723},
+       {0x23136, 0x7711},
+       {0x23137, 0x7715},
+       {0x23138, 0x7719},
+       {0x23139, 0x771A},
+       {0x2313A, 0x7722},
+       {0x2313B, 0x7727},
+       {0x2313C, 0x7823},
+       {0x2313D, 0x782C},
+       {0x2313E, 0x7822},
+       {0x2313F, 0x7835},
+       {0x23140, 0x782F},
+       {0x23141, 0x7828},
+       {0x23142, 0x782E},
+       {0x23143, 0x782B},
+       {0x23144, 0x7821},
+       {0x23145, 0x7829},
+       {0x23146, 0x7833},
+       {0x23147, 0x782A},
+       {0x23148, 0x7831},
+       {0x23149, 0x7954},
+       {0x2314A, 0x795B},
+       {0x2314B, 0x794F},
+       {0x2314C, 0x795C},
+       {0x2314D, 0x7953},
+       {0x2314E, 0x7952},
+       {0x2314F, 0x7951},
+       {0x23150, 0x79EB},
+       {0x23151, 0x79EC},
+       {0x23152, 0x79E0},
+       {0x23153, 0x79EE},
+       {0x23154, 0x79ED},
+       {0x23155, 0x79EA},
+       {0x23156, 0x79DC},
+       {0x23157, 0x79DE},
+       {0x23158, 0x79DD},
+       {0x23159, 0x7A86},
+       {0x2315A, 0x7A89},
+       {0x2315B, 0x7A85},
+       {0x2315C, 0x7A8B},
+       {0x2315D, 0x7A8C},
+       {0x2315E, 0x7A8A},
+       {0x2315F, 0x7A87},
+       {0x23160, 0x7AD8},
+       {0x23161, 0x7B10},
+       {0x23162, 0x7B04},
+       {0x23163, 0x7B13},
+       {0x23164, 0x7B05},
+       {0x23165, 0x7B0F},
+       {0x23166, 0x7B08},
+       {0x23167, 0x7B0A},
+       {0x23168, 0x7B0E},
+       {0x23169, 0x7B09},
+       {0x2316A, 0x7B12},
+       {0x2316B, 0x7C84},
+       {0x2316C, 0x7C91},
+       {0x2316D, 0x7C8A},
+       {0x2316E, 0x7C8C},
+       {0x2316F, 0x7C88},
+       {0x23170, 0x7C8D},
+       {0x23171, 0x7C85},
+       {0x23172, 0x7D1E},
+       {0x23173, 0x7D1D},
+       {0x23174, 0x7D11},
+       {0x23175, 0x7D0E},
+       {0x23176, 0x7D18},
+       {0x23177, 0x7D16},
+       {0x23178, 0x7D13},
+       {0x23179, 0x7D1F},
+       {0x2317A, 0x7D12},
+       {0x2317B, 0x7D0F},
+       {0x2317C, 0x7D0C},
+       {0x2317D, 0x7F5C},
+       {0x2317E, 0x7F61},
+       {0x23221, 0x7F5E},
+       {0x23222, 0x7F60},
+       {0x23223, 0x7F5D},
+       {0x23224, 0x7F5B},
+       {0x23225, 0x7F96},
+       {0x23226, 0x7F92},
+       {0x23227, 0x7FC3},
+       {0x23228, 0x7FC2},
+       {0x23229, 0x7FC0},
+       {0x2322A, 0x8016},
+       {0x2322B, 0x803E},
+       {0x2322C, 0x8039},
+       {0x2322D, 0x80FA},
+       {0x2322E, 0x80F2},
+       {0x2322F, 0x80F9},
+       {0x23230, 0x80F5},
+       {0x23231, 0x8101},
+       {0x23232, 0x80FB},
+       {0x23233, 0x8100},
+       {0x23234, 0x8201},
+       {0x23235, 0x822F},
+       {0x23236, 0x8225},
+       {0x23237, 0x8333},
+       {0x23238, 0x832D},
+       {0x23239, 0x8344},
+       {0x2323A, 0x8319},
+       {0x2323B, 0x8351},
+       {0x2323C, 0x8325},
+       {0x2323D, 0x8356},
+       {0x2323E, 0x833F},
+       {0x2323F, 0x8341},
+       {0x23240, 0x8326},
+       {0x23241, 0x831C},
+       {0x23242, 0x8322},
+       {0x23243, 0x8342},
+       {0x23244, 0x834E},
+       {0x23245, 0x831B},
+       {0x23246, 0x832A},
+       {0x23247, 0x8308},
+       {0x23248, 0x833C},
+       {0x23249, 0x834D},
+       {0x2324A, 0x8316},
+       {0x2324B, 0x8324},
+       {0x2324C, 0x8320},
+       {0x2324D, 0x8337},
+       {0x2324E, 0x832F},
+       {0x2324F, 0x8329},
+       {0x23250, 0x8347},
+       {0x23251, 0x8345},
+       {0x23252, 0x834C},
+       {0x23253, 0x8353},
+       {0x23254, 0x831E},
+       {0x23255, 0x832C},
+       {0x23256, 0x834B},
+       {0x23257, 0x8327},
+       {0x23258, 0x8348},
+       {0x23259, 0x8653},
+       {0x2325A, 0x8652},
+       {0x2325B, 0x86A2},
+       {0x2325C, 0x86A8},
+       {0x2325D, 0x8696},
+       {0x2325E, 0x868D},
+       {0x2325F, 0x8691},
+       {0x23260, 0x869E},
+       {0x23261, 0x8687},
+       {0x23262, 0x8697},
+       {0x23263, 0x8686},
+       {0x23264, 0x868B},
+       {0x23265, 0x869A},
+       {0x23266, 0x8685},
+       {0x23267, 0x86A5},
+       {0x23268, 0x8699},
+       {0x23269, 0x86A1},
+       {0x2326A, 0x86A7},
+       {0x2326B, 0x8695},
+       {0x2326C, 0x8698},
+       {0x2326D, 0x868E},
+       {0x2326E, 0x869D},
+       {0x2326F, 0x8690},
+       {0x23270, 0x8694},
+       {0x23271, 0x8843},
+       {0x23272, 0x8844},
+       {0x23273, 0x886D},
+       {0x23274, 0x8875},
+       {0x23275, 0x8876},
+       {0x23276, 0x8872},
+       {0x23277, 0x8880},
+       {0x23278, 0x8871},
+       {0x23279, 0x887F},
+       {0x2327A, 0x886F},
+       {0x2327B, 0x8883},
+       {0x2327C, 0x887E},
+       {0x2327D, 0x8874},
+       {0x2327E, 0x887C},
+       {0x23321, 0x8A12},
+       {0x23322, 0x8C47},
+       {0x23323, 0x8C57},
+       {0x23324, 0x8C7B},
+       {0x23325, 0x8CA4},
+       {0x23326, 0x8CA3},
+       {0x23327, 0x8D76},
+       {0x23328, 0x8D78},
+       {0x23329, 0x8DB5},
+       {0x2332A, 0x8DB7},
+       {0x2332B, 0x8DB6},
+       {0x2332C, 0x8ED1},
+       {0x2332D, 0x8ED3},
+       {0x2332E, 0x8FFE},
+       {0x2332F, 0x8FF5},
+       {0x23330, 0x9002},
+       {0x23331, 0x8FFF},
+       {0x23332, 0x8FFB},
+       {0x23333, 0x9004},
+       {0x23334, 0x8FFC},
+       {0x23335, 0x8FF6},
+       {0x23336, 0x90D6},
+       {0x23337, 0x90E0},
+       {0x23338, 0x90D9},
+       {0x23339, 0x90DA},
+       {0x2333A, 0x90E3},
+       {0x2333B, 0x90DF},
+       {0x2333C, 0x90E5},
+       {0x2333D, 0x90D8},
+       {0x2333E, 0x90DB},
+       {0x2333F, 0x90D7},
+       {0x23340, 0x90DC},
+       {0x23341, 0x90E4},
+       {0x23342, 0x9150},
+       {0x23343, 0x914E},
+       {0x23344, 0x914F},
+       {0x23345, 0x91D5},
+       {0x23346, 0x91E2},
+       {0x23347, 0x91DA},
+       {0x23348, 0x965C},
+       {0x23349, 0x965F},
+       {0x2334A, 0x96BC},
+       {0x2334B, 0x98E3},
+       {0x2334C, 0x9ADF},
+       {0x2334D, 0x9B2F},
+       {0x2334E, 0x4E7F},
+       {0x2334F, 0x5070},
+       {0x23350, 0x506A},
+       {0x23351, 0x5061},
+       {0x23352, 0x505E},
+       {0x23353, 0x5060},
+       {0x23354, 0x5053},
+       {0x23355, 0x504B},
+       {0x23356, 0x505D},
+       {0x23357, 0x5072},
+       {0x23358, 0x5048},
+       {0x23359, 0x504D},
+       {0x2335A, 0x5041},
+       {0x2335B, 0x505B},
+       {0x2335C, 0x504A},
+       {0x2335D, 0x5062},
+       {0x2335E, 0x5015},
+       {0x2335F, 0x5045},
+       {0x23360, 0x505F},
+       {0x23361, 0x5069},
+       {0x23362, 0x506B},
+       {0x23363, 0x5063},
+       {0x23364, 0x5064},
+       {0x23365, 0x5046},
+       {0x23366, 0x5040},
+       {0x23367, 0x506E},
+       {0x23368, 0x5073},
+       {0x23369, 0x5057},
+       {0x2336A, 0x5051},
+       {0x2336B, 0x51D0},
+       {0x2336C, 0x526B},
+       {0x2336D, 0x526D},
+       {0x2336E, 0x526C},
+       {0x2336F, 0x526E},
+       {0x23370, 0x52D6},
+       {0x23371, 0x52D3},
+       {0x23372, 0x532D},
+       {0x23373, 0x539C},
+       {0x23374, 0x5575},
+       {0x23375, 0x5576},
+       {0x23376, 0x553C},
+       {0x23377, 0x554D},
+       {0x23378, 0x5550},
+       {0x23379, 0x5534},
+       {0x2337A, 0x552A},
+       {0x2337B, 0x5551},
+       {0x2337C, 0x5562},
+       {0x2337D, 0x5536},
+       {0x2337E, 0x5535},
+       {0x23421, 0x5530},
+       {0x23422, 0x5552},
+       {0x23423, 0x5545},
+       {0x23424, 0x550C},
+       {0x23425, 0x5532},
+       {0x23426, 0x5565},
+       {0x23427, 0x554E},
+       {0x23428, 0x5539},
+       {0x23429, 0x5548},
+       {0x2342A, 0x552D},
+       {0x2342B, 0x553B},
+       {0x2342C, 0x5540},
+       {0x2342D, 0x554B},
+       {0x2342E, 0x570A},
+       {0x2342F, 0x5707},
+       {0x23430, 0x57FB},
+       {0x23431, 0x5814},
+       {0x23432, 0x57E2},
+       {0x23433, 0x57F6},
+       {0x23434, 0x57DC},
+       {0x23435, 0x57F4},
+       {0x23436, 0x5800},
+       {0x23437, 0x57ED},
+       {0x23438, 0x57FD},
+       {0x23439, 0x5808},
+       {0x2343A, 0x57F8},
+       {0x2343B, 0x580B},
+       {0x2343C, 0x57F3},
+       {0x2343D, 0x57CF},
+       {0x2343E, 0x5807},
+       {0x2343F, 0x57EE},
+       {0x23440, 0x57E3},
+       {0x23441, 0x57F2},
+       {0x23442, 0x57E5},
+       {0x23443, 0x57EC},
+       {0x23444, 0x57E1},
+       {0x23445, 0x580E},
+       {0x23446, 0x57FC},
+       {0x23447, 0x5810},
+       {0x23448, 0x57E7},
+       {0x23449, 0x5801},
+       {0x2344A, 0x580C},
+       {0x2344B, 0x57F1},
+       {0x2344C, 0x57E9},
+       {0x2344D, 0x57F0},
+       {0x2344E, 0x580D},
+       {0x2344F, 0x5804},
+       {0x23450, 0x595C},
+       {0x23451, 0x5A60},
+       {0x23452, 0x5A58},
+       {0x23453, 0x5A55},
+       {0x23454, 0x5A67},
+       {0x23455, 0x5A5E},
+       {0x23456, 0x5A38},
+       {0x23457, 0x5A35},
+       {0x23458, 0x5A6D},
+       {0x23459, 0x5A50},
+       {0x2345A, 0x5A5F},
+       {0x2345B, 0x5A65},
+       {0x2345C, 0x5A6C},
+       {0x2345D, 0x5A53},
+       {0x2345E, 0x5A64},
+       {0x2345F, 0x5A57},
+       {0x23460, 0x5A43},
+       {0x23461, 0x5A5D},
+       {0x23462, 0x5A52},
+       {0x23463, 0x5A44},
+       {0x23464, 0x5A5B},
+       {0x23465, 0x5A48},
+       {0x23466, 0x5A8E},
+       {0x23467, 0x5A3E},
+       {0x23468, 0x5A4D},
+       {0x23469, 0x5A39},
+       {0x2346A, 0x5A4C},
+       {0x2346B, 0x5A70},
+       {0x2346C, 0x5A69},
+       {0x2346D, 0x5A47},
+       {0x2346E, 0x5A51},
+       {0x2346F, 0x5A56},
+       {0x23470, 0x5A42},
+       {0x23471, 0x5A5C},
+       {0x23472, 0x5B72},
+       {0x23473, 0x5B6E},
+       {0x23474, 0x5BC1},
+       {0x23475, 0x5BC0},
+       {0x23476, 0x5C59},
+       {0x23477, 0x5D1E},
+       {0x23478, 0x5D0B},
+       {0x23479, 0x5D1D},
+       {0x2347A, 0x5D1A},
+       {0x2347B, 0x5D20},
+       {0x2347C, 0x5D0C},
+       {0x2347D, 0x5D28},
+       {0x2347E, 0x5D0D},
+       {0x23521, 0x5D26},
+       {0x23522, 0x5D25},
+       {0x23523, 0x5D0F},
+       {0x23524, 0x5D30},
+       {0x23525, 0x5D12},
+       {0x23526, 0x5D23},
+       {0x23527, 0x5D1F},
+       {0x23528, 0x5D2E},
+       {0x23529, 0x5E3E},
+       {0x2352A, 0x5E34},
+       {0x2352B, 0x5EB1},
+       {0x2352C, 0x5EB4},
+       {0x2352D, 0x5EB9},
+       {0x2352E, 0x5EB2},
+       {0x2352F, 0x5EB3},
+       {0x23530, 0x5F36},
+       {0x23531, 0x5F38},
+       {0x23532, 0x5F9B},
+       {0x23533, 0x5F96},
+       {0x23534, 0x5F9F},
+       {0x23535, 0x608A},
+       {0x23536, 0x6090},
+       {0x23537, 0x6086},
+       {0x23538, 0x60BE},
+       {0x23539, 0x60B0},
+       {0x2353A, 0x60BA},
+       {0x2353B, 0x60D3},
+       {0x2353C, 0x60D4},
+       {0x2353D, 0x60CF},
+       {0x2353E, 0x60E4},
+       {0x2353F, 0x60D9},
+       {0x23540, 0x60DD},
+       {0x23541, 0x60C8},
+       {0x23542, 0x60B1},
+       {0x23543, 0x60DB},
+       {0x23544, 0x60B7},
+       {0x23545, 0x60CA},
+       {0x23546, 0x60BF},
+       {0x23547, 0x60C3},
+       {0x23548, 0x60CD},
+       {0x23549, 0x60C0},
+       {0x2354A, 0x6332},
+       {0x2354B, 0x6365},
+       {0x2354C, 0x638A},
+       {0x2354D, 0x6382},
+       {0x2354E, 0x637D},
+       {0x2354F, 0x63BD},
+       {0x23550, 0x639E},
+       {0x23551, 0x63AD},
+       {0x23552, 0x639D},
+       {0x23553, 0x6397},
+       {0x23554, 0x63AB},
+       {0x23555, 0x638E},
+       {0x23556, 0x636F},
+       {0x23557, 0x6387},
+       {0x23558, 0x6390},
+       {0x23559, 0x636E},
+       {0x2355A, 0x63AF},
+       {0x2355B, 0x6375},
+       {0x2355C, 0x639C},
+       {0x2355D, 0x636D},
+       {0x2355E, 0x63AE},
+       {0x2355F, 0x637C},
+       {0x23560, 0x63A4},
+       {0x23561, 0x633B},
+       {0x23562, 0x639F},
+       {0x23563, 0x6378},
+       {0x23564, 0x6385},
+       {0x23565, 0x6381},
+       {0x23566, 0x6391},
+       {0x23567, 0x638D},
+       {0x23568, 0x6370},
+       {0x23569, 0x6553},
+       {0x2356A, 0x65CD},
+       {0x2356B, 0x6665},
+       {0x2356C, 0x6661},
+       {0x2356D, 0x665B},
+       {0x2356E, 0x6659},
+       {0x2356F, 0x665C},
+       {0x23570, 0x6662},
+       {0x23571, 0x6718},
+       {0x23572, 0x6879},
+       {0x23573, 0x6887},
+       {0x23574, 0x6890},
+       {0x23575, 0x689C},
+       {0x23576, 0x686D},
+       {0x23577, 0x686E},
+       {0x23578, 0x68AE},
+       {0x23579, 0x68AB},
+       {0x2357A, 0x6956},
+       {0x2357B, 0x686F},
+       {0x2357C, 0x68A3},
+       {0x2357D, 0x68AC},
+       {0x2357E, 0x68A9},
+       {0x23621, 0x6875},
+       {0x23622, 0x6874},
+       {0x23623, 0x68B2},
+       {0x23624, 0x688F},
+       {0x23625, 0x6877},
+       {0x23626, 0x6892},
+       {0x23627, 0x687C},
+       {0x23628, 0x686B},
+       {0x23629, 0x6872},
+       {0x2362A, 0x68AA},
+       {0x2362B, 0x6880},
+       {0x2362C, 0x6871},
+       {0x2362D, 0x687E},
+       {0x2362E, 0x689B},
+       {0x2362F, 0x6896},
+       {0x23630, 0x688B},
+       {0x23631, 0x68A0},
+       {0x23632, 0x6889},
+       {0x23633, 0x68A4},
+       {0x23634, 0x6878},
+       {0x23635, 0x687B},
+       {0x23636, 0x6891},
+       {0x23637, 0x688C},
+       {0x23638, 0x688A},
+       {0x23639, 0x687D},
+       {0x2363A, 0x6B36},
+       {0x2363B, 0x6B33},
+       {0x2363C, 0x6B37},
+       {0x2363D, 0x6B38},
+       {0x2363E, 0x6B91},
+       {0x2363F, 0x6B8F},
+       {0x23640, 0x6B8D},
+       {0x23641, 0x6B8E},
+       {0x23642, 0x6B8C},
+       {0x23643, 0x6C2A},
+       {0x23644, 0x6DC0},
+       {0x23645, 0x6DAB},
+       {0x23646, 0x6DB4},
+       {0x23647, 0x6DB3},
+       {0x23648, 0x6E74},
+       {0x23649, 0x6DAC},
+       {0x2364A, 0x6DE9},
+       {0x2364B, 0x6DE2},
+       {0x2364C, 0x6DB7},
+       {0x2364D, 0x6DF6},
+       {0x2364E, 0x6DD4},
+       {0x2364F, 0x6E00},
+       {0x23650, 0x6DC8},
+       {0x23651, 0x6DE0},
+       {0x23652, 0x6DDF},
+       {0x23653, 0x6DD6},
+       {0x23654, 0x6DBE},
+       {0x23655, 0x6DE5},
+       {0x23656, 0x6DDC},
+       {0x23657, 0x6DDD},
+       {0x23658, 0x6DDB},
+       {0x23659, 0x6DF4},
+       {0x2365A, 0x6DCA},
+       {0x2365B, 0x6DBD},
+       {0x2365C, 0x6DED},
+       {0x2365D, 0x6DF0},
+       {0x2365E, 0x6DBA},
+       {0x2365F, 0x6DD5},
+       {0x23660, 0x6DC2},
+       {0x23661, 0x6DCF},
+       {0x23662, 0x6DC9},
+       {0x23663, 0x6DD0},
+       {0x23664, 0x6DF2},
+       {0x23665, 0x6DD3},
+       {0x23666, 0x6DFD},
+       {0x23667, 0x6DD7},
+       {0x23668, 0x6DCD},
+       {0x23669, 0x6DE3},
+       {0x2366A, 0x6DBB},
+       {0x2366B, 0x70FA},
+       {0x2366C, 0x710D},
+       {0x2366D, 0x70F7},
+       {0x2366E, 0x7117},
+       {0x2366F, 0x70F4},
+       {0x23670, 0x710C},
+       {0x23671, 0x70F0},
+       {0x23672, 0x7104},
+       {0x23673, 0x70F3},
+       {0x23674, 0x7110},
+       {0x23675, 0x70FC},
+       {0x23676, 0x70FF},
+       {0x23677, 0x7106},
+       {0x23678, 0x7113},
+       {0x23679, 0x7100},
+       {0x2367A, 0x70F8},
+       {0x2367B, 0x70F6},
+       {0x2367C, 0x710B},
+       {0x2367D, 0x7102},
+       {0x2367E, 0x710E},
+       {0x23721, 0x727E},
+       {0x23722, 0x727B},
+       {0x23723, 0x727C},
+       {0x23724, 0x727F},
+       {0x23725, 0x731D},
+       {0x23726, 0x7317},
+       {0x23727, 0x7307},
+       {0x23728, 0x7311},
+       {0x23729, 0x7318},
+       {0x2372A, 0x730A},
+       {0x2372B, 0x7308},
+       {0x2372C, 0x72FF},
+       {0x2372D, 0x730F},
+       {0x2372E, 0x731E},
+       {0x2372F, 0x7388},
+       {0x23730, 0x73F6},
+       {0x23731, 0x73F8},
+       {0x23732, 0x73F5},
+       {0x23733, 0x7404},
+       {0x23734, 0x7401},
+       {0x23735, 0x73FD},
+       {0x23736, 0x7407},
+       {0x23737, 0x7400},
+       {0x23738, 0x73FA},
+       {0x23739, 0x73FC},
+       {0x2373A, 0x73FF},
+       {0x2373B, 0x740C},
+       {0x2373C, 0x740B},
+       {0x2373D, 0x73F4},
+       {0x2373E, 0x7408},
+       {0x2373F, 0x7564},
+       {0x23740, 0x7563},
+       {0x23741, 0x75CE},
+       {0x23742, 0x75D2},
+       {0x23743, 0x75CF},
+       {0x23744, 0x75CB},
+       {0x23745, 0x75CC},
+       {0x23746, 0x75D1},
+       {0x23747, 0x75D0},
+       {0x23748, 0x768F},
+       {0x23749, 0x7689},
+       {0x2374A, 0x76D3},
+       {0x2374B, 0x7739},
+       {0x2374C, 0x772F},
+       {0x2374D, 0x772D},
+       {0x2374E, 0x7731},
+       {0x2374F, 0x7732},
+       {0x23750, 0x7734},
+       {0x23751, 0x7733},
+       {0x23752, 0x773D},
+       {0x23753, 0x7725},
+       {0x23754, 0x773B},
+       {0x23755, 0x7735},
+       {0x23756, 0x7848},
+       {0x23757, 0x7852},
+       {0x23758, 0x7849},
+       {0x23759, 0x784D},
+       {0x2375A, 0x784A},
+       {0x2375B, 0x784C},
+       {0x2375C, 0x7826},
+       {0x2375D, 0x7845},
+       {0x2375E, 0x7850},
+       {0x2375F, 0x7964},
+       {0x23760, 0x7967},
+       {0x23761, 0x7969},
+       {0x23762, 0x796A},
+       {0x23763, 0x7963},
+       {0x23764, 0x796B},
+       {0x23765, 0x7961},
+       {0x23766, 0x79BB},
+       {0x23767, 0x79FA},
+       {0x23768, 0x79F8},
+       {0x23769, 0x79F6},
+       {0x2376A, 0x79F7},
+       {0x2376B, 0x7A8F},
+       {0x2376C, 0x7A94},
+       {0x2376D, 0x7A90},
+       {0x2376E, 0x7B35},
+       {0x2376F, 0x7B3B},
+       {0x23770, 0x7B34},
+       {0x23771, 0x7B25},
+       {0x23772, 0x7B30},
+       {0x23773, 0x7B22},
+       {0x23774, 0x7B24},
+       {0x23775, 0x7B33},
+       {0x23776, 0x7B18},
+       {0x23777, 0x7B2A},
+       {0x23778, 0x7B1D},
+       {0x23779, 0x7B31},
+       {0x2377A, 0x7B2B},
+       {0x2377B, 0x7B2D},
+       {0x2377C, 0x7B2F},
+       {0x2377D, 0x7B32},
+       {0x2377E, 0x7B38},
+       {0x23821, 0x7B1A},
+       {0x23822, 0x7B23},
+       {0x23823, 0x7C94},
+       {0x23824, 0x7C98},
+       {0x23825, 0x7C96},
+       {0x23826, 0x7CA3},
+       {0x23827, 0x7D35},
+       {0x23828, 0x7D3D},
+       {0x23829, 0x7D38},
+       {0x2382A, 0x7D36},
+       {0x2382B, 0x7D3A},
+       {0x2382C, 0x7D45},
+       {0x2382D, 0x7D2C},
+       {0x2382E, 0x7D29},
+       {0x2382F, 0x7D41},
+       {0x23830, 0x7D47},
+       {0x23831, 0x7D3E},
+       {0x23832, 0x7D3F},
+       {0x23833, 0x7D4A},
+       {0x23834, 0x7D3B},
+       {0x23835, 0x7D28},
+       {0x23836, 0x7F63},
+       {0x23837, 0x7F95},
+       {0x23838, 0x7F9C},
+       {0x23839, 0x7F9D},
+       {0x2383A, 0x7F9B},
+       {0x2383B, 0x7FCA},
+       {0x2383C, 0x7FCB},
+       {0x2383D, 0x7FCD},
+       {0x2383E, 0x7FD0},
+       {0x2383F, 0x7FD1},
+       {0x23840, 0x7FC7},
+       {0x23841, 0x7FCF},
+       {0x23842, 0x7FC9},
+       {0x23843, 0x801F},
+       {0x23844, 0x801E},
+       {0x23845, 0x801B},
+       {0x23846, 0x8047},
+       {0x23847, 0x8043},
+       {0x23848, 0x8048},
+       {0x23849, 0x8118},
+       {0x2384A, 0x8125},
+       {0x2384B, 0x8119},
+       {0x2384C, 0x811B},
+       {0x2384D, 0x812D},
+       {0x2384E, 0x811F},
+       {0x2384F, 0x812C},
+       {0x23850, 0x811E},
+       {0x23851, 0x8121},
+       {0x23852, 0x8115},
+       {0x23853, 0x8127},
+       {0x23854, 0x811D},
+       {0x23855, 0x8122},
+       {0x23856, 0x8211},
+       {0x23857, 0x8238},
+       {0x23858, 0x8233},
+       {0x23859, 0x823A},
+       {0x2385A, 0x8234},
+       {0x2385B, 0x8232},
+       {0x2385C, 0x8274},
+       {0x2385D, 0x8390},
+       {0x2385E, 0x83A3},
+       {0x2385F, 0x83A8},
+       {0x23860, 0x838D},
+       {0x23861, 0x837A},
+       {0x23862, 0x8373},
+       {0x23863, 0x83A4},
+       {0x23864, 0x8374},
+       {0x23865, 0x838F},
+       {0x23866, 0x8381},
+       {0x23867, 0x8395},
+       {0x23868, 0x8399},
+       {0x23869, 0x8375},
+       {0x2386A, 0x8394},
+       {0x2386B, 0x83A9},
+       {0x2386C, 0x837D},
+       {0x2386D, 0x8383},
+       {0x2386E, 0x838C},
+       {0x2386F, 0x839D},
+       {0x23870, 0x839B},
+       {0x23871, 0x83AA},
+       {0x23872, 0x838B},
+       {0x23873, 0x837E},
+       {0x23874, 0x83A5},
+       {0x23875, 0x83AF},
+       {0x23876, 0x8388},
+       {0x23877, 0x8397},
+       {0x23878, 0x83B0},
+       {0x23879, 0x837F},
+       {0x2387A, 0x83A6},
+       {0x2387B, 0x8387},
+       {0x2387C, 0x83AE},
+       {0x2387D, 0x8376},
+       {0x2387E, 0x8659},
+       {0x23921, 0x8656},
+       {0x23922, 0x86BF},
+       {0x23923, 0x86B7},
+       {0x23924, 0x86C2},
+       {0x23925, 0x86C1},
+       {0x23926, 0x86C5},
+       {0x23927, 0x86BA},
+       {0x23928, 0x86B0},
+       {0x23929, 0x86C8},
+       {0x2392A, 0x86B9},
+       {0x2392B, 0x86B3},
+       {0x2392C, 0x86B8},
+       {0x2392D, 0x86CC},
+       {0x2392E, 0x86B4},
+       {0x2392F, 0x86BB},
+       {0x23930, 0x86BC},
+       {0x23931, 0x86C3},
+       {0x23932, 0x86BD},
+       {0x23933, 0x86BE},
+       {0x23934, 0x8852},
+       {0x23935, 0x8889},
+       {0x23936, 0x8895},
+       {0x23937, 0x88A8},
+       {0x23938, 0x88A2},
+       {0x23939, 0x88AA},
+       {0x2393A, 0x889A},
+       {0x2393B, 0x8891},
+       {0x2393C, 0x88A1},
+       {0x2393D, 0x889F},
+       {0x2393E, 0x8898},
+       {0x2393F, 0x88A7},
+       {0x23940, 0x8899},
+       {0x23941, 0x889B},
+       {0x23942, 0x8897},
+       {0x23943, 0x88A4},
+       {0x23944, 0x88AC},
+       {0x23945, 0x888C},
+       {0x23946, 0x8893},
+       {0x23947, 0x888E},
+       {0x23948, 0x8982},
+       {0x23949, 0x89D6},
+       {0x2394A, 0x89D9},
+       {0x2394B, 0x89D5},
+       {0x2394C, 0x8A30},
+       {0x2394D, 0x8A27},
+       {0x2394E, 0x8A2C},
+       {0x2394F, 0x8A1E},
+       {0x23950, 0x8C39},
+       {0x23951, 0x8C3B},
+       {0x23952, 0x8C5C},
+       {0x23953, 0x8C5D},
+       {0x23954, 0x8C7D},
+       {0x23955, 0x8CA5},
+       {0x23956, 0x8D7D},
+       {0x23957, 0x8D7B},
+       {0x23958, 0x8D79},
+       {0x23959, 0x8DBC},
+       {0x2395A, 0x8DC2},
+       {0x2395B, 0x8DB9},
+       {0x2395C, 0x8DBF},
+       {0x2395D, 0x8DC1},
+       {0x2395E, 0x8ED8},
+       {0x2395F, 0x8EDE},
+       {0x23960, 0x8EDD},
+       {0x23961, 0x8EDC},
+       {0x23962, 0x8ED7},
+       {0x23963, 0x8EE0},
+       {0x23964, 0x8EE1},
+       {0x23965, 0x9024},
+       {0x23966, 0x900B},
+       {0x23967, 0x9011},
+       {0x23968, 0x901C},
+       {0x23969, 0x900C},
+       {0x2396A, 0x9021},
+       {0x2396B, 0x90EF},
+       {0x2396C, 0x90EA},
+       {0x2396D, 0x90F0},
+       {0x2396E, 0x90F4},
+       {0x2396F, 0x90F2},
+       {0x23970, 0x90F3},
+       {0x23971, 0x90D4},
+       {0x23972, 0x90EB},
+       {0x23973, 0x90EC},
+       {0x23974, 0x90E9},
+       {0x23975, 0x9156},
+       {0x23976, 0x9158},
+       {0x23977, 0x915A},
+       {0x23978, 0x9153},
+       {0x23979, 0x9155},
+       {0x2397A, 0x91EC},
+       {0x2397B, 0x91F4},
+       {0x2397C, 0x91F1},
+       {0x2397D, 0x91F3},
+       {0x2397E, 0x91F8},
+       {0x23A21, 0x91E4},
+       {0x23A22, 0x91F9},
+       {0x23A23, 0x91EA},
+       {0x23A24, 0x91EB},
+       {0x23A25, 0x91F7},
+       {0x23A26, 0x91E8},
+       {0x23A27, 0x91EE},
+       {0x23A28, 0x957A},
+       {0x23A29, 0x9586},
+       {0x23A2A, 0x9588},
+       {0x23A2B, 0x967C},
+       {0x23A2C, 0x966D},
+       {0x23A2D, 0x966B},
+       {0x23A2E, 0x9671},
+       {0x23A2F, 0x966F},
+       {0x23A30, 0x96BF},
+       {0x23A31, 0x976A},
+       {0x23A32, 0x9804},
+       {0x23A33, 0x98E5},
+       {0x23A34, 0x9997},
+       {0x23A35, 0x509B},
+       {0x23A36, 0x5095},
+       {0x23A37, 0x5094},
+       {0x23A38, 0x509E},
+       {0x23A39, 0x508B},
+       {0x23A3A, 0x50A3},
+       {0x23A3B, 0x5083},
+       {0x23A3C, 0x508C},
+       {0x23A3D, 0x508E},
+       {0x23A3E, 0x509D},
+       {0x23A3F, 0x5068},
+       {0x23A40, 0x509C},
+       {0x23A41, 0x5092},
+       {0x23A42, 0x5082},
+       {0x23A43, 0x5087},
+       {0x23A44, 0x515F},
+       {0x23A45, 0x51D4},
+       {0x23A46, 0x5312},
+       {0x23A47, 0x5311},
+       {0x23A48, 0x53A4},
+       {0x23A49, 0x53A7},
+       {0x23A4A, 0x5591},
+       {0x23A4B, 0x55A8},
+       {0x23A4C, 0x55A5},
+       {0x23A4D, 0x55AD},
+       {0x23A4E, 0x5577},
+       {0x23A4F, 0x5645},
+       {0x23A50, 0x55A2},
+       {0x23A51, 0x5593},
+       {0x23A52, 0x5588},
+       {0x23A53, 0x558F},
+       {0x23A54, 0x55B5},
+       {0x23A55, 0x5581},
+       {0x23A56, 0x55A3},
+       {0x23A57, 0x5592},
+       {0x23A58, 0x55A4},
+       {0x23A59, 0x557D},
+       {0x23A5A, 0x558C},
+       {0x23A5B, 0x55A6},
+       {0x23A5C, 0x557F},
+       {0x23A5D, 0x5595},
+       {0x23A5E, 0x55A1},
+       {0x23A5F, 0x558E},
+       {0x23A60, 0x570C},
+       {0x23A61, 0x5829},
+       {0x23A62, 0x5837},
+       {0x23A63, 0x5819},
+       {0x23A64, 0x581E},
+       {0x23A65, 0x5827},
+       {0x23A66, 0x5823},
+       {0x23A67, 0x5828},
+       {0x23A68, 0x57F5},
+       {0x23A69, 0x5848},
+       {0x23A6A, 0x5825},
+       {0x23A6B, 0x581C},
+       {0x23A6C, 0x581B},
+       {0x23A6D, 0x5833},
+       {0x23A6E, 0x583F},
+       {0x23A6F, 0x5836},
+       {0x23A70, 0x582E},
+       {0x23A71, 0x5839},
+       {0x23A72, 0x5838},
+       {0x23A73, 0x582D},
+       {0x23A74, 0x582C},
+       {0x23A75, 0x583B},
+       {0x23A76, 0x5961},
+       {0x23A77, 0x5AAF},
+       {0x23A78, 0x5A94},
+       {0x23A79, 0x5A9F},
+       {0x23A7A, 0x5A7A},
+       {0x23A7B, 0x5AA2},
+       {0x23A7C, 0x5A9E},
+       {0x23A7D, 0x5A78},
+       {0x23A7E, 0x5AA6},
+       {0x23B21, 0x5A7C},
+       {0x23B22, 0x5AA5},
+       {0x23B23, 0x5AAC},
+       {0x23B24, 0x5A95},
+       {0x23B25, 0x5AAE},
+       {0x23B26, 0x5A37},
+       {0x23B27, 0x5A84},
+       {0x23B28, 0x5A8A},
+       {0x23B29, 0x5A97},
+       {0x23B2A, 0x5A83},
+       {0x23B2B, 0x5A8B},
+       {0x23B2C, 0x5AA9},
+       {0x23B2D, 0x5A7B},
+       {0x23B2E, 0x5A7D},
+       {0x23B2F, 0x5A8C},
+       {0x23B30, 0x5A9C},
+       {0x23B31, 0x5A8F},
+       {0x23B32, 0x5A93},
+       {0x23B33, 0x5A9D},
+       {0x23B34, 0x5BEA},
+       {0x23B35, 0x5BCD},
+       {0x23B36, 0x5BCB},
+       {0x23B37, 0x5BD4},
+       {0x23B38, 0x5BD1},
+       {0x23B39, 0x5BCA},
+       {0x23B3A, 0x5BCE},
+       {0x23B3B, 0x5C0C},
+       {0x23B3C, 0x5C30},
+       {0x23B3D, 0x5D37},
+       {0x23B3E, 0x5D43},
+       {0x23B3F, 0x5D6B},
+       {0x23B40, 0x5D41},
+       {0x23B41, 0x5D4B},
+       {0x23B42, 0x5D3F},
+       {0x23B43, 0x5D35},
+       {0x23B44, 0x5D51},
+       {0x23B45, 0x5D4E},
+       {0x23B46, 0x5D55},
+       {0x23B47, 0x5D33},
+       {0x23B48, 0x5D3A},
+       {0x23B49, 0x5D52},
+       {0x23B4A, 0x5D3D},
+       {0x23B4B, 0x5D31},
+       {0x23B4C, 0x5D59},
+       {0x23B4D, 0x5D42},
+       {0x23B4E, 0x5D39},
+       {0x23B4F, 0x5D49},
+       {0x23B50, 0x5D38},
+       {0x23B51, 0x5D3C},
+       {0x23B52, 0x5D32},
+       {0x23B53, 0x5D36},
+       {0x23B54, 0x5D40},
+       {0x23B55, 0x5D45},
+       {0x23B56, 0x5E44},
+       {0x23B57, 0x5E41},
+       {0x23B58, 0x5F58},
+       {0x23B59, 0x5FA6},
+       {0x23B5A, 0x5FA5},
+       {0x23B5B, 0x5FAB},
+       {0x23B5C, 0x60C9},
+       {0x23B5D, 0x60B9},
+       {0x23B5E, 0x60CC},
+       {0x23B5F, 0x60E2},
+       {0x23B60, 0x60CE},
+       {0x23B61, 0x60C4},
+       {0x23B62, 0x6114},
+       {0x23B63, 0x60F2},
+       {0x23B64, 0x610A},
+       {0x23B65, 0x6116},
+       {0x23B66, 0x6105},
+       {0x23B67, 0x60F5},
+       {0x23B68, 0x6113},
+       {0x23B69, 0x60F8},
+       {0x23B6A, 0x60FC},
+       {0x23B6B, 0x60FE},
+       {0x23B6C, 0x60C1},
+       {0x23B6D, 0x6103},
+       {0x23B6E, 0x6118},
+       {0x23B6F, 0x611D},
+       {0x23B70, 0x6110},
+       {0x23B71, 0x60FF},
+       {0x23B72, 0x6104},
+       {0x23B73, 0x610B},
+       {0x23B74, 0x624A},
+       {0x23B75, 0x6394},
+       {0x23B76, 0x63B1},
+       {0x23B77, 0x63B0},
+       {0x23B78, 0x63CE},
+       {0x23B79, 0x63E5},
+       {0x23B7A, 0x63E8},
+       {0x23B7B, 0x63EF},
+       {0x23B7C, 0x63C3},
+       {0x23B7D, 0x649D},
+       {0x23B7E, 0x63F3},
+       {0x23C21, 0x63CA},
+       {0x23C22, 0x63E0},
+       {0x23C23, 0x63F6},
+       {0x23C24, 0x63D5},
+       {0x23C25, 0x63F2},
+       {0x23C26, 0x63F5},
+       {0x23C27, 0x6461},
+       {0x23C28, 0x63DF},
+       {0x23C29, 0x63BE},
+       {0x23C2A, 0x63DD},
+       {0x23C2B, 0x63DC},
+       {0x23C2C, 0x63C4},
+       {0x23C2D, 0x63D8},
+       {0x23C2E, 0x63D3},
+       {0x23C2F, 0x63C2},
+       {0x23C30, 0x63C7},
+       {0x23C31, 0x63CC},
+       {0x23C32, 0x63CB},
+       {0x23C33, 0x63C8},
+       {0x23C34, 0x63F0},
+       {0x23C35, 0x63D7},
+       {0x23C36, 0x63D9},
+       {0x23C37, 0x6532},
+       {0x23C38, 0x6567},
+       {0x23C39, 0x656A},
+       {0x23C3A, 0x6564},
+       {0x23C3B, 0x655C},
+       {0x23C3C, 0x6568},
+       {0x23C3D, 0x6565},
+       {0x23C3E, 0x658C},
+       {0x23C3F, 0x659D},
+       {0x23C40, 0x659E},
+       {0x23C41, 0x65AE},
+       {0x23C42, 0x65D0},
+       {0x23C43, 0x65D2},
+       {0x23C44, 0x667C},
+       {0x23C45, 0x666C},
+       {0x23C46, 0x667B},
+       {0x23C47, 0x6680},
+       {0x23C48, 0x6671},
+       {0x23C49, 0x6679},
+       {0x23C4A, 0x666A},
+       {0x23C4B, 0x6672},
+       {0x23C4C, 0x6701},
+       {0x23C4D, 0x690C},
+       {0x23C4E, 0x68D3},
+       {0x23C4F, 0x6904},
+       {0x23C50, 0x68DC},
+       {0x23C51, 0x692A},
+       {0x23C52, 0x68EC},
+       {0x23C53, 0x68EA},
+       {0x23C54, 0x68F1},
+       {0x23C55, 0x690F},
+       {0x23C56, 0x68D6},
+       {0x23C57, 0x68F7},
+       {0x23C58, 0x68EB},
+       {0x23C59, 0x68E4},
+       {0x23C5A, 0x68F6},
+       {0x23C5B, 0x6913},
+       {0x23C5C, 0x6910},
+       {0x23C5D, 0x68F3},
+       {0x23C5E, 0x68E1},
+       {0x23C5F, 0x6907},
+       {0x23C60, 0x68CC},
+       {0x23C61, 0x6908},
+       {0x23C62, 0x6970},
+       {0x23C63, 0x68B4},
+       {0x23C64, 0x6911},
+       {0x23C65, 0x68EF},
+       {0x23C66, 0x68C6},
+       {0x23C67, 0x6914},
+       {0x23C68, 0x68F8},
+       {0x23C69, 0x68D0},
+       {0x23C6A, 0x68FD},
+       {0x23C6B, 0x68FC},
+       {0x23C6C, 0x68E8},
+       {0x23C6D, 0x690B},
+       {0x23C6E, 0x690A},
+       {0x23C6F, 0x6917},
+       {0x23C70, 0x68CE},
+       {0x23C71, 0x68C8},
+       {0x23C72, 0x68DD},
+       {0x23C73, 0x68DE},
+       {0x23C74, 0x68E6},
+       {0x23C75, 0x68F4},
+       {0x23C76, 0x68D1},
+       {0x23C77, 0x6906},
+       {0x23C78, 0x68D4},
+       {0x23C79, 0x68E9},
+       {0x23C7A, 0x6915},
+       {0x23C7B, 0x6925},
+       {0x23C7C, 0x68C7},
+       {0x23C7D, 0x6B39},
+       {0x23C7E, 0x6B3B},
+       {0x23D21, 0x6B3F},
+       {0x23D22, 0x6B3C},
+       {0x23D23, 0x6B94},
+       {0x23D24, 0x6B97},
+       {0x23D25, 0x6B99},
+       {0x23D26, 0x6B95},
+       {0x23D27, 0x6BBD},
+       {0x23D28, 0x6BF0},
+       {0x23D29, 0x6BF2},
+       {0x23D2A, 0x6BF3},
+       {0x23D2B, 0x6C30},
+       {0x23D2C, 0x6DFC},
+       {0x23D2D, 0x6E46},
+       {0x23D2E, 0x6E47},
+       {0x23D2F, 0x6E1F},
+       {0x23D30, 0x6E49},
+       {0x23D31, 0x6E88},
+       {0x23D32, 0x6E3C},
+       {0x23D33, 0x6E3D},
+       {0x23D34, 0x6E45},
+       {0x23D35, 0x6E62},
+       {0x23D36, 0x6E2B},
+       {0x23D37, 0x6E3F},
+       {0x23D38, 0x6E41},
+       {0x23D39, 0x6E5D},
+       {0x23D3A, 0x6E73},
+       {0x23D3B, 0x6E1C},
+       {0x23D3C, 0x6E33},
+       {0x23D3D, 0x6E4B},
+       {0x23D3E, 0x6E40},
+       {0x23D3F, 0x6E51},
+       {0x23D40, 0x6E3B},
+       {0x23D41, 0x6E03},
+       {0x23D42, 0x6E2E},
+       {0x23D43, 0x6E5E},
+       {0x23D44, 0x6E68},
+       {0x23D45, 0x6E5C},
+       {0x23D46, 0x6E61},
+       {0x23D47, 0x6E31},
+       {0x23D48, 0x6E28},
+       {0x23D49, 0x6E60},
+       {0x23D4A, 0x6E71},
+       {0x23D4B, 0x6E6B},
+       {0x23D4C, 0x6E39},
+       {0x23D4D, 0x6E22},
+       {0x23D4E, 0x6E30},
+       {0x23D4F, 0x6E53},
+       {0x23D50, 0x6E65},
+       {0x23D51, 0x6E27},
+       {0x23D52, 0x6E78},
+       {0x23D53, 0x6E64},
+       {0x23D54, 0x6E77},
+       {0x23D55, 0x6E55},
+       {0x23D56, 0x6E79},
+       {0x23D57, 0x6E52},
+       {0x23D58, 0x6E66},
+       {0x23D59, 0x6E35},
+       {0x23D5A, 0x6E36},
+       {0x23D5B, 0x6E5A},
+       {0x23D5C, 0x7120},
+       {0x23D5D, 0x711E},
+       {0x23D5E, 0x712F},
+       {0x23D5F, 0x70FB},
+       {0x23D60, 0x712E},
+       {0x23D61, 0x7131},
+       {0x23D62, 0x7123},
+       {0x23D63, 0x7125},
+       {0x23D64, 0x7122},
+       {0x23D65, 0x7132},
+       {0x23D66, 0x711F},
+       {0x23D67, 0x7128},
+       {0x23D68, 0x713A},
+       {0x23D69, 0x711B},
+       {0x23D6A, 0x724B},
+       {0x23D6B, 0x725A},
+       {0x23D6C, 0x7288},
+       {0x23D6D, 0x7289},
+       {0x23D6E, 0x7286},
+       {0x23D6F, 0x7285},
+       {0x23D70, 0x728B},
+       {0x23D71, 0x7312},
+       {0x23D72, 0x730B},
+       {0x23D73, 0x7330},
+       {0x23D74, 0x7322},
+       {0x23D75, 0x7331},
+       {0x23D76, 0x7333},
+       {0x23D77, 0x7327},
+       {0x23D78, 0x7332},
+       {0x23D79, 0x732D},
+       {0x23D7A, 0x7326},
+       {0x23D7B, 0x7323},
+       {0x23D7C, 0x7335},
+       {0x23D7D, 0x730C},
+       {0x23D7E, 0x742E},
+       {0x23E21, 0x742C},
+       {0x23E22, 0x7430},
+       {0x23E23, 0x742B},
+       {0x23E24, 0x7416},
+       {0x23E25, 0x741A},
+       {0x23E26, 0x7421},
+       {0x23E27, 0x742D},
+       {0x23E28, 0x7431},
+       {0x23E29, 0x7424},
+       {0x23E2A, 0x7423},
+       {0x23E2B, 0x741D},
+       {0x23E2C, 0x7429},
+       {0x23E2D, 0x7420},
+       {0x23E2E, 0x7432},
+       {0x23E2F, 0x74FB},
+       {0x23E30, 0x752F},
+       {0x23E31, 0x756F},
+       {0x23E32, 0x756C},
+       {0x23E33, 0x75E7},
+       {0x23E34, 0x75DA},
+       {0x23E35, 0x75E1},
+       {0x23E36, 0x75E6},
+       {0x23E37, 0x75DD},
+       {0x23E38, 0x75DF},
+       {0x23E39, 0x75E4},
+       {0x23E3A, 0x75D7},
+       {0x23E3B, 0x7695},
+       {0x23E3C, 0x7692},
+       {0x23E3D, 0x76DA},
+       {0x23E3E, 0x7746},
+       {0x23E3F, 0x7747},
+       {0x23E40, 0x7744},
+       {0x23E41, 0x774D},
+       {0x23E42, 0x7745},
+       {0x23E43, 0x774A},
+       {0x23E44, 0x774E},
+       {0x23E45, 0x774B},
+       {0x23E46, 0x774C},
+       {0x23E47, 0x77DE},
+       {0x23E48, 0x77EC},
+       {0x23E49, 0x7860},
+       {0x23E4A, 0x7864},
+       {0x23E4B, 0x7865},
+       {0x23E4C, 0x785C},
+       {0x23E4D, 0x786D},
+       {0x23E4E, 0x7871},
+       {0x23E4F, 0x786A},
+       {0x23E50, 0x786E},
+       {0x23E51, 0x7870},
+       {0x23E52, 0x7869},
+       {0x23E53, 0x7868},
+       {0x23E54, 0x785E},
+       {0x23E55, 0x7862},
+       {0x23E56, 0x7974},
+       {0x23E57, 0x7973},
+       {0x23E58, 0x7972},
+       {0x23E59, 0x7970},
+       {0x23E5A, 0x7A02},
+       {0x23E5B, 0x7A0A},
+       {0x23E5C, 0x7A03},
+       {0x23E5D, 0x7A0C},
+       {0x23E5E, 0x7A04},
+       {0x23E5F, 0x7A99},
+       {0x23E60, 0x7AE6},
+       {0x23E61, 0x7AE4},
+       {0x23E62, 0x7B4A},
+       {0x23E63, 0x7B47},
+       {0x23E64, 0x7B44},
+       {0x23E65, 0x7B48},
+       {0x23E66, 0x7B4C},
+       {0x23E67, 0x7B4E},
+       {0x23E68, 0x7B40},
+       {0x23E69, 0x7B58},
+       {0x23E6A, 0x7B45},
+       {0x23E6B, 0x7CA2},
+       {0x23E6C, 0x7C9E},
+       {0x23E6D, 0x7CA8},
+       {0x23E6E, 0x7CA1},
+       {0x23E6F, 0x7D58},
+       {0x23E70, 0x7D6F},
+       {0x23E71, 0x7D63},
+       {0x23E72, 0x7D53},
+       {0x23E73, 0x7D56},
+       {0x23E74, 0x7D67},
+       {0x23E75, 0x7D6A},
+       {0x23E76, 0x7D4F},
+       {0x23E77, 0x7D6D},
+       {0x23E78, 0x7D5C},
+       {0x23E79, 0x7D6B},
+       {0x23E7A, 0x7D52},
+       {0x23E7B, 0x7D54},
+       {0x23E7C, 0x7D69},
+       {0x23E7D, 0x7D51},
+       {0x23E7E, 0x7D5F},
+       {0x23F21, 0x7D4E},
+       {0x23F22, 0x7F3E},
+       {0x23F23, 0x7F3F},
+       {0x23F24, 0x7F65},
+       {0x23F25, 0x7F66},
+       {0x23F26, 0x7FA2},
+       {0x23F27, 0x7FA0},
+       {0x23F28, 0x7FA1},
+       {0x23F29, 0x7FD7},
+       {0x23F2A, 0x8051},
+       {0x23F2B, 0x804F},
+       {0x23F2C, 0x8050},
+       {0x23F2D, 0x80FE},
+       {0x23F2E, 0x80D4},
+       {0x23F2F, 0x8143},
+       {0x23F30, 0x814A},
+       {0x23F31, 0x8152},
+       {0x23F32, 0x814F},
+       {0x23F33, 0x8147},
+       {0x23F34, 0x813D},
+       {0x23F35, 0x814D},
+       {0x23F36, 0x813A},
+       {0x23F37, 0x81E6},
+       {0x23F38, 0x81EE},
+       {0x23F39, 0x81F7},
+       {0x23F3A, 0x81F8},
+       {0x23F3B, 0x81F9},
+       {0x23F3C, 0x8204},
+       {0x23F3D, 0x823C},
+       {0x23F3E, 0x823D},
+       {0x23F3F, 0x823F},
+       {0x23F40, 0x8275},
+       {0x23F41, 0x833B},
+       {0x23F42, 0x83CF},
+       {0x23F43, 0x83F9},
+       {0x23F44, 0x8423},
+       {0x23F45, 0x83C0},
+       {0x23F46, 0x83E8},
+       {0x23F47, 0x8412},
+       {0x23F48, 0x83E7},
+       {0x23F49, 0x83E4},
+       {0x23F4A, 0x83FC},
+       {0x23F4B, 0x83F6},
+       {0x23F4C, 0x8410},
+       {0x23F4D, 0x83C6},
+       {0x23F4E, 0x83C8},
+       {0x23F4F, 0x83EB},
+       {0x23F50, 0x83E3},
+       {0x23F51, 0x83BF},
+       {0x23F52, 0x8401},
+       {0x23F53, 0x83DD},
+       {0x23F54, 0x83E5},
+       {0x23F55, 0x83D8},
+       {0x23F56, 0x83FF},
+       {0x23F57, 0x83E1},
+       {0x23F58, 0x83CB},
+       {0x23F59, 0x83CE},
+       {0x23F5A, 0x83D6},
+       {0x23F5B, 0x83F5},
+       {0x23F5C, 0x83C9},
+       {0x23F5D, 0x8409},
+       {0x23F5E, 0x840F},
+       {0x23F5F, 0x83DE},
+       {0x23F60, 0x8411},
+       {0x23F61, 0x8406},
+       {0x23F62, 0x83C2},
+       {0x23F63, 0x83F3},
+       {0x23F64, 0x83D5},
+       {0x23F65, 0x83FA},
+       {0x23F66, 0x83C7},
+       {0x23F67, 0x83D1},
+       {0x23F68, 0x83EA},
+       {0x23F69, 0x8413},
+       {0x23F6A, 0x839A},
+       {0x23F6B, 0x83C3},
+       {0x23F6C, 0x83EC},
+       {0x23F6D, 0x83EE},
+       {0x23F6E, 0x83C4},
+       {0x23F6F, 0x83FB},
+       {0x23F70, 0x83D7},
+       {0x23F71, 0x83E2},
+       {0x23F72, 0x841B},
+       {0x23F73, 0x83DB},
+       {0x23F74, 0x83FE},
+       {0x23F75, 0x86D8},
+       {0x23F76, 0x86E2},
+       {0x23F77, 0x86E6},
+       {0x23F78, 0x86D3},
+       {0x23F79, 0x86E3},
+       {0x23F7A, 0x86DA},
+       {0x23F7B, 0x86EA},
+       {0x23F7C, 0x86DD},
+       {0x23F7D, 0x86EB},
+       {0x23F7E, 0x86DC},
+       {0x24021, 0x86EC},
+       {0x24022, 0x86E9},
+       {0x24023, 0x86D7},
+       {0x24024, 0x86E8},
+       {0x24025, 0x86D1},
+       {0x24026, 0x8848},
+       {0x24027, 0x8856},
+       {0x24028, 0x8855},
+       {0x24029, 0x88BA},
+       {0x2402A, 0x88D7},
+       {0x2402B, 0x88B9},
+       {0x2402C, 0x88B8},
+       {0x2402D, 0x88C0},
+       {0x2402E, 0x88BE},
+       {0x2402F, 0x88B6},
+       {0x24030, 0x88BC},
+       {0x24031, 0x88B7},
+       {0x24032, 0x88BD},
+       {0x24033, 0x88B2},
+       {0x24034, 0x8901},
+       {0x24035, 0x88C9},
+       {0x24036, 0x8995},
+       {0x24037, 0x8998},
+       {0x24038, 0x8997},
+       {0x24039, 0x89DD},
+       {0x2403A, 0x89DA},
+       {0x2403B, 0x89DB},
+       {0x2403C, 0x8A4E},
+       {0x2403D, 0x8A4D},
+       {0x2403E, 0x8A39},
+       {0x2403F, 0x8A59},
+       {0x24040, 0x8A40},
+       {0x24041, 0x8A57},
+       {0x24042, 0x8A58},
+       {0x24043, 0x8A44},
+       {0x24044, 0x8A45},
+       {0x24045, 0x8A52},
+       {0x24046, 0x8A48},
+       {0x24047, 0x8A51},
+       {0x24048, 0x8A4A},
+       {0x24049, 0x8A4C},
+       {0x2404A, 0x8A4F},
+       {0x2404B, 0x8C5F},
+       {0x2404C, 0x8C81},
+       {0x2404D, 0x8C80},
+       {0x2404E, 0x8CBA},
+       {0x2404F, 0x8CBE},
+       {0x24050, 0x8CB0},
+       {0x24051, 0x8CB9},
+       {0x24052, 0x8CB5},
+       {0x24053, 0x8D84},
+       {0x24054, 0x8D80},
+       {0x24055, 0x8D89},
+       {0x24056, 0x8DD8},
+       {0x24057, 0x8DD3},
+       {0x24058, 0x8DCD},
+       {0x24059, 0x8DC7},
+       {0x2405A, 0x8DD6},
+       {0x2405B, 0x8DDC},
+       {0x2405C, 0x8DCF},
+       {0x2405D, 0x8DD5},
+       {0x2405E, 0x8DD9},
+       {0x2405F, 0x8DC8},
+       {0x24060, 0x8DD7},
+       {0x24061, 0x8DC5},
+       {0x24062, 0x8EEF},
+       {0x24063, 0x8EF7},
+       {0x24064, 0x8EFA},
+       {0x24065, 0x8EF9},
+       {0x24066, 0x8EE6},
+       {0x24067, 0x8EEE},
+       {0x24068, 0x8EE5},
+       {0x24069, 0x8EF5},
+       {0x2406A, 0x8EE7},
+       {0x2406B, 0x8EE8},
+       {0x2406C, 0x8EF6},
+       {0x2406D, 0x8EEB},
+       {0x2406E, 0x8EF1},
+       {0x2406F, 0x8EEC},
+       {0x24070, 0x8EF4},
+       {0x24071, 0x8EE9},
+       {0x24072, 0x902D},
+       {0x24073, 0x9034},
+       {0x24074, 0x902F},
+       {0x24075, 0x9106},
+       {0x24076, 0x912C},
+       {0x24077, 0x9104},
+       {0x24078, 0x90FF},
+       {0x24079, 0x90FC},
+       {0x2407A, 0x9108},
+       {0x2407B, 0x90F9},
+       {0x2407C, 0x90FB},
+       {0x2407D, 0x9101},
+       {0x2407E, 0x9100},
+       {0x24121, 0x9107},
+       {0x24122, 0x9105},
+       {0x24123, 0x9103},
+       {0x24124, 0x9161},
+       {0x24125, 0x9164},
+       {0x24126, 0x915F},
+       {0x24127, 0x9162},
+       {0x24128, 0x9160},
+       {0x24129, 0x9201},
+       {0x2412A, 0x920A},
+       {0x2412B, 0x9225},
+       {0x2412C, 0x9203},
+       {0x2412D, 0x921A},
+       {0x2412E, 0x9226},
+       {0x2412F, 0x920F},
+       {0x24130, 0x920C},
+       {0x24131, 0x9200},
+       {0x24132, 0x9212},
+       {0x24133, 0x91FF},
+       {0x24134, 0x91FD},
+       {0x24135, 0x9206},
+       {0x24136, 0x9204},
+       {0x24137, 0x9227},
+       {0x24138, 0x9202},
+       {0x24139, 0x921C},
+       {0x2413A, 0x9224},
+       {0x2413B, 0x9219},
+       {0x2413C, 0x9217},
+       {0x2413D, 0x9205},
+       {0x2413E, 0x9216},
+       {0x2413F, 0x957B},
+       {0x24140, 0x958D},
+       {0x24141, 0x958C},
+       {0x24142, 0x9590},
+       {0x24143, 0x9687},
+       {0x24144, 0x967E},
+       {0x24145, 0x9688},
+       {0x24146, 0x9689},
+       {0x24147, 0x9683},
+       {0x24148, 0x9680},
+       {0x24149, 0x96C2},
+       {0x2414A, 0x96C8},
+       {0x2414B, 0x96C3},
+       {0x2414C, 0x96F1},
+       {0x2414D, 0x96F0},
+       {0x2414E, 0x976C},
+       {0x2414F, 0x9770},
+       {0x24150, 0x976E},
+       {0x24151, 0x9807},
+       {0x24152, 0x98A9},
+       {0x24153, 0x98EB},
+       {0x24154, 0x9CE6},
+       {0x24155, 0x9EF9},
+       {0x24156, 0x4E83},
+       {0x24157, 0x4E84},
+       {0x24158, 0x4EB6},
+       {0x24159, 0x50BD},
+       {0x2415A, 0x50BF},
+       {0x2415B, 0x50C6},
+       {0x2415C, 0x50AE},
+       {0x2415D, 0x50C4},
+       {0x2415E, 0x50CA},
+       {0x2415F, 0x50B4},
+       {0x24160, 0x50C8},
+       {0x24161, 0x50C2},
+       {0x24162, 0x50B0},
+       {0x24163, 0x50C1},
+       {0x24164, 0x50BA},
+       {0x24165, 0x50B1},
+       {0x24166, 0x50CB},
+       {0x24167, 0x50C9},
+       {0x24168, 0x50B6},
+       {0x24169, 0x50B8},
+       {0x2416A, 0x51D7},
+       {0x2416B, 0x527A},
+       {0x2416C, 0x5278},
+       {0x2416D, 0x527B},
+       {0x2416E, 0x527C},
+       {0x2416F, 0x55C3},
+       {0x24170, 0x55DB},
+       {0x24171, 0x55CC},
+       {0x24172, 0x55D0},
+       {0x24173, 0x55CB},
+       {0x24174, 0x55CA},
+       {0x24175, 0x55DD},
+       {0x24176, 0x55C0},
+       {0x24177, 0x55D4},
+       {0x24178, 0x55C4},
+       {0x24179, 0x55E9},
+       {0x2417A, 0x55BF},
+       {0x2417B, 0x55D2},
+       {0x2417C, 0x558D},
+       {0x2417D, 0x55CF},
+       {0x2417E, 0x55D5},
+       {0x24221, 0x55E2},
+       {0x24222, 0x55D6},
+       {0x24223, 0x55C8},
+       {0x24224, 0x55F2},
+       {0x24225, 0x55CD},
+       {0x24226, 0x55D9},
+       {0x24227, 0x55C2},
+       {0x24228, 0x5714},
+       {0x24229, 0x5853},
+       {0x2422A, 0x5868},
+       {0x2422B, 0x5864},
+       {0x2422C, 0x584F},
+       {0x2422D, 0x584D},
+       {0x2422E, 0x5849},
+       {0x2422F, 0x586F},
+       {0x24230, 0x5855},
+       {0x24231, 0x584E},
+       {0x24232, 0x585D},
+       {0x24233, 0x5859},
+       {0x24234, 0x5865},
+       {0x24235, 0x585B},
+       {0x24236, 0x583D},
+       {0x24237, 0x5863},
+       {0x24238, 0x5871},
+       {0x24239, 0x58FC},
+       {0x2423A, 0x5AC7},
+       {0x2423B, 0x5AC4},
+       {0x2423C, 0x5ACB},
+       {0x2423D, 0x5ABA},
+       {0x2423E, 0x5AB8},
+       {0x2423F, 0x5AB1},
+       {0x24240, 0x5AB5},
+       {0x24241, 0x5AB0},
+       {0x24242, 0x5ABF},
+       {0x24243, 0x5AC8},
+       {0x24244, 0x5ABB},
+       {0x24245, 0x5AC6},
+       {0x24246, 0x5AB7},
+       {0x24247, 0x5AC0},
+       {0x24248, 0x5ACA},
+       {0x24249, 0x5AB4},
+       {0x2424A, 0x5AB6},
+       {0x2424B, 0x5ACD},
+       {0x2424C, 0x5AB9},
+       {0x2424D, 0x5A90},
+       {0x2424E, 0x5BD6},
+       {0x2424F, 0x5BD8},
+       {0x24250, 0x5BD9},
+       {0x24251, 0x5C1F},
+       {0x24252, 0x5C33},
+       {0x24253, 0x5D71},
+       {0x24254, 0x5D63},
+       {0x24255, 0x5D4A},
+       {0x24256, 0x5D65},
+       {0x24257, 0x5D72},
+       {0x24258, 0x5D6C},
+       {0x24259, 0x5D5E},
+       {0x2425A, 0x5D68},
+       {0x2425B, 0x5D67},
+       {0x2425C, 0x5D62},
+       {0x2425D, 0x5DF0},
+       {0x2425E, 0x5E4F},
+       {0x2425F, 0x5E4E},
+       {0x24260, 0x5E4A},
+       {0x24261, 0x5E4D},
+       {0x24262, 0x5E4B},
+       {0x24263, 0x5EC5},
+       {0x24264, 0x5ECC},
+       {0x24265, 0x5EC6},
+       {0x24266, 0x5ECB},
+       {0x24267, 0x5EC7},
+       {0x24268, 0x5F40},
+       {0x24269, 0x5FAF},
+       {0x2426A, 0x5FAD},
+       {0x2426B, 0x60F7},
+       {0x2426C, 0x6149},
+       {0x2426D, 0x614A},
+       {0x2426E, 0x612B},
+       {0x2426F, 0x6145},
+       {0x24270, 0x6136},
+       {0x24271, 0x6132},
+       {0x24272, 0x612E},
+       {0x24273, 0x6146},
+       {0x24274, 0x612F},
+       {0x24275, 0x614F},
+       {0x24276, 0x6129},
+       {0x24277, 0x6140},
+       {0x24278, 0x6220},
+       {0x24279, 0x9168},
+       {0x2427A, 0x6223},
+       {0x2427B, 0x6225},
+       {0x2427C, 0x6224},
+       {0x2427D, 0x63C5},
+       {0x2427E, 0x63F1},
+       {0x24321, 0x63EB},
+       {0x24322, 0x6410},
+       {0x24323, 0x6412},
+       {0x24324, 0x6409},
+       {0x24325, 0x6420},
+       {0x24326, 0x6424},
+       {0x24327, 0x6433},
+       {0x24328, 0x6443},
+       {0x24329, 0x641F},
+       {0x2432A, 0x6415},
+       {0x2432B, 0x6418},
+       {0x2432C, 0x6439},
+       {0x2432D, 0x6437},
+       {0x2432E, 0x6422},
+       {0x2432F, 0x6423},
+       {0x24330, 0x640C},
+       {0x24331, 0x6426},
+       {0x24332, 0x6430},
+       {0x24333, 0x6428},
+       {0x24334, 0x6441},
+       {0x24335, 0x6435},
+       {0x24336, 0x642F},
+       {0x24337, 0x640A},
+       {0x24338, 0x641A},
+       {0x24339, 0x6440},
+       {0x2433A, 0x6425},
+       {0x2433B, 0x6427},
+       {0x2433C, 0x640B},
+       {0x2433D, 0x63E7},
+       {0x2433E, 0x641B},
+       {0x2433F, 0x642E},
+       {0x24340, 0x6421},
+       {0x24341, 0x640E},
+       {0x24342, 0x656F},
+       {0x24343, 0x6592},
+       {0x24344, 0x65D3},
+       {0x24345, 0x6686},
+       {0x24346, 0x668C},
+       {0x24347, 0x6695},
+       {0x24348, 0x6690},
+       {0x24349, 0x668B},
+       {0x2434A, 0x668A},
+       {0x2434B, 0x6699},
+       {0x2434C, 0x6694},
+       {0x2434D, 0x6678},
+       {0x2434E, 0x6720},
+       {0x2434F, 0x6966},
+       {0x24350, 0x695F},
+       {0x24351, 0x6938},
+       {0x24352, 0x694E},
+       {0x24353, 0x6962},
+       {0x24354, 0x6971},
+       {0x24355, 0x693F},
+       {0x24356, 0x6945},
+       {0x24357, 0x696A},
+       {0x24358, 0x6939},
+       {0x24359, 0x6942},
+       {0x2435A, 0x6957},
+       {0x2435B, 0x6959},
+       {0x2435C, 0x697A},
+       {0x2435D, 0x6948},
+       {0x2435E, 0x6949},
+       {0x2435F, 0x6935},
+       {0x24360, 0x696C},
+       {0x24361, 0x6933},
+       {0x24362, 0x693D},
+       {0x24363, 0x6965},
+       {0x24364, 0x68F0},
+       {0x24365, 0x6978},
+       {0x24366, 0x6934},
+       {0x24367, 0x6969},
+       {0x24368, 0x6940},
+       {0x24369, 0x696F},
+       {0x2436A, 0x6944},
+       {0x2436B, 0x6976},
+       {0x2436C, 0x6958},
+       {0x2436D, 0x6941},
+       {0x2436E, 0x6974},
+       {0x2436F, 0x694C},
+       {0x24370, 0x693B},
+       {0x24371, 0x694B},
+       {0x24372, 0x6937},
+       {0x24373, 0x695C},
+       {0x24374, 0x694F},
+       {0x24375, 0x6951},
+       {0x24376, 0x6932},
+       {0x24377, 0x6952},
+       {0x24378, 0x692F},
+       {0x24379, 0x697B},
+       {0x2437A, 0x693C},
+       {0x2437B, 0x6B46},
+       {0x2437C, 0x6B45},
+       {0x2437D, 0x6B43},
+       {0x2437E, 0x6B42},
+       {0x24421, 0x6B48},
+       {0x24422, 0x6B41},
+       {0x24423, 0x6B9B},
+       {0x24424, 0x6BFB},
+       {0x24425, 0x6BFC},
+       {0x24426, 0x6BF9},
+       {0x24427, 0x6BF7},
+       {0x24428, 0x6BF8},
+       {0x24429, 0x6E9B},
+       {0x2442A, 0x6ED6},
+       {0x2442B, 0x6EC8},
+       {0x2442C, 0x6E8F},
+       {0x2442D, 0x6EC0},
+       {0x2442E, 0x6E9F},
+       {0x2442F, 0x6E93},
+       {0x24430, 0x6E94},
+       {0x24431, 0x6EA0},
+       {0x24432, 0x6EB1},
+       {0x24433, 0x6EB9},
+       {0x24434, 0x6EC6},
+       {0x24435, 0x6ED2},
+       {0x24436, 0x6EBD},
+       {0x24437, 0x6EC1},
+       {0x24438, 0x6E9E},
+       {0x24439, 0x6EC9},
+       {0x2443A, 0x6EB7},
+       {0x2443B, 0x6EB0},
+       {0x2443C, 0x6ECD},
+       {0x2443D, 0x6EA6},
+       {0x2443E, 0x6ECF},
+       {0x2443F, 0x6EB2},
+       {0x24440, 0x6EBE},
+       {0x24441, 0x6EC3},
+       {0x24442, 0x6EDC},
+       {0x24443, 0x6ED8},
+       {0x24444, 0x6E99},
+       {0x24445, 0x6E92},
+       {0x24446, 0x6E8E},
+       {0x24447, 0x6E8D},
+       {0x24448, 0x6EA4},
+       {0x24449, 0x6EA1},
+       {0x2444A, 0x6EBF},
+       {0x2444B, 0x6EB3},
+       {0x2444C, 0x6ED0},
+       {0x2444D, 0x6ECA},
+       {0x2444E, 0x6E97},
+       {0x2444F, 0x6EAE},
+       {0x24450, 0x6EA3},
+       {0x24451, 0x7147},
+       {0x24452, 0x7154},
+       {0x24453, 0x7152},
+       {0x24454, 0x7163},
+       {0x24455, 0x7160},
+       {0x24456, 0x7141},
+       {0x24457, 0x715D},
+       {0x24458, 0x7162},
+       {0x24459, 0x7172},
+       {0x2445A, 0x7178},
+       {0x2445B, 0x716A},
+       {0x2445C, 0x7161},
+       {0x2445D, 0x7142},
+       {0x2445E, 0x7158},
+       {0x2445F, 0x7143},
+       {0x24460, 0x714B},
+       {0x24461, 0x7170},
+       {0x24462, 0x715F},
+       {0x24463, 0x7150},
+       {0x24464, 0x7153},
+       {0x24465, 0x7144},
+       {0x24466, 0x714D},
+       {0x24467, 0x715A},
+       {0x24468, 0x724F},
+       {0x24469, 0x728D},
+       {0x2446A, 0x728C},
+       {0x2446B, 0x7291},
+       {0x2446C, 0x7290},
+       {0x2446D, 0x728E},
+       {0x2446E, 0x733C},
+       {0x2446F, 0x7342},
+       {0x24470, 0x733B},
+       {0x24471, 0x733A},
+       {0x24472, 0x7340},
+       {0x24473, 0x734A},
+       {0x24474, 0x7349},
+       {0x24475, 0x7444},
+       {0x24476, 0x744A},
+       {0x24477, 0x744B},
+       {0x24478, 0x7452},
+       {0x24479, 0x7451},
+       {0x2447A, 0x7457},
+       {0x2447B, 0x7440},
+       {0x2447C, 0x744F},
+       {0x2447D, 0x7450},
+       {0x2447E, 0x744E},
+       {0x24521, 0x7442},
+       {0x24522, 0x7446},
+       {0x24523, 0x744D},
+       {0x24524, 0x7454},
+       {0x24525, 0x74E1},
+       {0x24526, 0x74FF},
+       {0x24527, 0x74FE},
+       {0x24528, 0x74FD},
+       {0x24529, 0x751D},
+       {0x2452A, 0x7579},
+       {0x2452B, 0x7577},
+       {0x2452C, 0x6983},
+       {0x2452D, 0x75EF},
+       {0x2452E, 0x760F},
+       {0x2452F, 0x7603},
+       {0x24530, 0x75F7},
+       {0x24531, 0x75FE},
+       {0x24532, 0x75FC},
+       {0x24533, 0x75F9},
+       {0x24534, 0x75F8},
+       {0x24535, 0x7610},
+       {0x24536, 0x75FB},
+       {0x24537, 0x75F6},
+       {0x24538, 0x75ED},
+       {0x24539, 0x75F5},
+       {0x2453A, 0x75FD},
+       {0x2453B, 0x7699},
+       {0x2453C, 0x76B5},
+       {0x2453D, 0x76DD},
+       {0x2453E, 0x7755},
+       {0x2453F, 0x775F},
+       {0x24540, 0x7760},
+       {0x24541, 0x7752},
+       {0x24542, 0x7756},
+       {0x24543, 0x775A},
+       {0x24544, 0x7769},
+       {0x24545, 0x7767},
+       {0x24546, 0x7754},
+       {0x24547, 0x7759},
+       {0x24548, 0x776D},
+       {0x24549, 0x77E0},
+       {0x2454A, 0x7887},
+       {0x2454B, 0x789A},
+       {0x2454C, 0x7894},
+       {0x2454D, 0x788F},
+       {0x2454E, 0x7884},
+       {0x2454F, 0x7895},
+       {0x24550, 0x7885},
+       {0x24551, 0x7886},
+       {0x24552, 0x78A1},
+       {0x24553, 0x7883},
+       {0x24554, 0x7879},
+       {0x24555, 0x7899},
+       {0x24556, 0x7880},
+       {0x24557, 0x7896},
+       {0x24558, 0x787B},
+       {0x24559, 0x797C},
+       {0x2455A, 0x7982},
+       {0x2455B, 0x797D},
+       {0x2455C, 0x7979},
+       {0x2455D, 0x7A11},
+       {0x2455E, 0x7A18},
+       {0x2455F, 0x7A19},
+       {0x24560, 0x7A12},
+       {0x24561, 0x7A17},
+       {0x24562, 0x7A15},
+       {0x24563, 0x7A22},
+       {0x24564, 0x7A13},
+       {0x24565, 0x7A1B},
+       {0x24566, 0x7A10},
+       {0x24567, 0x7AA3},
+       {0x24568, 0x7AA2},
+       {0x24569, 0x7A9E},
+       {0x2456A, 0x7AEB},
+       {0x2456B, 0x7B66},
+       {0x2456C, 0x7B64},
+       {0x2456D, 0x7B6D},
+       {0x2456E, 0x7B74},
+       {0x2456F, 0x7B69},
+       {0x24570, 0x7B72},
+       {0x24571, 0x7B65},
+       {0x24572, 0x7B73},
+       {0x24573, 0x7B71},
+       {0x24574, 0x7B70},
+       {0x24575, 0x7B61},
+       {0x24576, 0x7B78},
+       {0x24577, 0x7B76},
+       {0x24578, 0x7B63},
+       {0x24579, 0x7CB2},
+       {0x2457A, 0x7CB4},
+       {0x2457B, 0x7CAF},
+       {0x2457C, 0x7D88},
+       {0x2457D, 0x7D86},
+       {0x2457E, 0x7D80},
+       {0x24621, 0x7D8D},
+       {0x24622, 0x7D7F},
+       {0x24623, 0x7D85},
+       {0x24624, 0x7D7A},
+       {0x24625, 0x7D8E},
+       {0x24626, 0x7D7B},
+       {0x24627, 0x7D83},
+       {0x24628, 0x7D7C},
+       {0x24629, 0x7D8C},
+       {0x2462A, 0x7D94},
+       {0x2462B, 0x7D84},
+       {0x2462C, 0x7D7D},
+       {0x2462D, 0x7D92},
+       {0x2462E, 0x7F6D},
+       {0x2462F, 0x7F6B},
+       {0x24630, 0x7F67},
+       {0x24631, 0x7F68},
+       {0x24632, 0x7F6C},
+       {0x24633, 0x7FA6},
+       {0x24634, 0x7FA5},
+       {0x24635, 0x7FA7},
+       {0x24636, 0x7FDB},
+       {0x24637, 0x7FDC},
+       {0x24638, 0x8021},
+       {0x24639, 0x8164},
+       {0x2463A, 0x8160},
+       {0x2463B, 0x8177},
+       {0x2463C, 0x815C},
+       {0x2463D, 0x8169},
+       {0x2463E, 0x815B},
+       {0x2463F, 0x8162},
+       {0x24640, 0x8172},
+       {0x24641, 0x6721},
+       {0x24642, 0x815E},
+       {0x24643, 0x8176},
+       {0x24644, 0x8167},
+       {0x24645, 0x816F},
+       {0x24646, 0x8144},
+       {0x24647, 0x8161},
+       {0x24648, 0x821D},
+       {0x24649, 0x8249},
+       {0x2464A, 0x8244},
+       {0x2464B, 0x8240},
+       {0x2464C, 0x8242},
+       {0x2464D, 0x8245},
+       {0x2464E, 0x84F1},
+       {0x2464F, 0x843F},
+       {0x24650, 0x8456},
+       {0x24651, 0x8476},
+       {0x24652, 0x8479},
+       {0x24653, 0x848F},
+       {0x24654, 0x848D},
+       {0x24655, 0x8465},
+       {0x24656, 0x8451},
+       {0x24657, 0x8440},
+       {0x24658, 0x8486},
+       {0x24659, 0x8467},
+       {0x2465A, 0x8430},
+       {0x2465B, 0x844D},
+       {0x2465C, 0x847D},
+       {0x2465D, 0x845A},
+       {0x2465E, 0x8459},
+       {0x2465F, 0x8474},
+       {0x24660, 0x8473},
+       {0x24661, 0x845D},
+       {0x24662, 0x8507},
+       {0x24663, 0x845E},
+       {0x24664, 0x8437},
+       {0x24665, 0x843A},
+       {0x24666, 0x8434},
+       {0x24667, 0x847A},
+       {0x24668, 0x8443},
+       {0x24669, 0x8478},
+       {0x2466A, 0x8432},
+       {0x2466B, 0x8445},
+       {0x2466C, 0x8429},
+       {0x2466D, 0x83D9},
+       {0x2466E, 0x844B},
+       {0x2466F, 0x842F},
+       {0x24670, 0x8442},
+       {0x24671, 0x842D},
+       {0x24672, 0x845F},
+       {0x24673, 0x8470},
+       {0x24674, 0x8439},
+       {0x24675, 0x844E},
+       {0x24676, 0x844C},
+       {0x24677, 0x8452},
+       {0x24678, 0x846F},
+       {0x24679, 0x84C5},
+       {0x2467A, 0x848E},
+       {0x2467B, 0x843B},
+       {0x2467C, 0x8447},
+       {0x2467D, 0x8436},
+       {0x2467E, 0x8433},
+       {0x24721, 0x8468},
+       {0x24722, 0x847E},
+       {0x24723, 0x8444},
+       {0x24724, 0x842B},
+       {0x24725, 0x8460},
+       {0x24726, 0x8454},
+       {0x24727, 0x846E},
+       {0x24728, 0x8450},
+       {0x24729, 0x870B},
+       {0x2472A, 0x8704},
+       {0x2472B, 0x86F7},
+       {0x2472C, 0x870C},
+       {0x2472D, 0x86FA},
+       {0x2472E, 0x86D6},
+       {0x2472F, 0x86F5},
+       {0x24730, 0x874D},
+       {0x24731, 0x86F8},
+       {0x24732, 0x870E},
+       {0x24733, 0x8709},
+       {0x24734, 0x8701},
+       {0x24735, 0x86F6},
+       {0x24736, 0x870D},
+       {0x24737, 0x8705},
+       {0x24738, 0x88D6},
+       {0x24739, 0x88CB},
+       {0x2473A, 0x88CD},
+       {0x2473B, 0x88CE},
+       {0x2473C, 0x88DE},
+       {0x2473D, 0x88DB},
+       {0x2473E, 0x88DA},
+       {0x2473F, 0x88CC},
+       {0x24740, 0x88D0},
+       {0x24741, 0x8985},
+       {0x24742, 0x899B},
+       {0x24743, 0x89DF},
+       {0x24744, 0x89E5},
+       {0x24745, 0x89E4},
+       {0x24746, 0x89E1},
+       {0x24747, 0x89E0},
+       {0x24748, 0x89E2},
+       {0x24749, 0x89DC},
+       {0x2474A, 0x89E6},
+       {0x2474B, 0x8A76},
+       {0x2474C, 0x8A86},
+       {0x2474D, 0x8A7F},
+       {0x2474E, 0x8A61},
+       {0x2474F, 0x8A3F},
+       {0x24750, 0x8A77},
+       {0x24751, 0x8A82},
+       {0x24752, 0x8A84},
+       {0x24753, 0x8A75},
+       {0x24754, 0x8A83},
+       {0x24755, 0x8A81},
+       {0x24756, 0x8A74},
+       {0x24757, 0x8A7A},
+       {0x24758, 0x8C3C},
+       {0x24759, 0x8C4B},
+       {0x2475A, 0x8C4A},
+       {0x2475B, 0x8C65},
+       {0x2475C, 0x8C64},
+       {0x2475D, 0x8C66},
+       {0x2475E, 0x8C86},
+       {0x2475F, 0x8C84},
+       {0x24760, 0x8C85},
+       {0x24761, 0x8CCC},
+       {0x24762, 0x8D68},
+       {0x24763, 0x8D69},
+       {0x24764, 0x8D91},
+       {0x24765, 0x8D8C},
+       {0x24766, 0x8D8E},
+       {0x24767, 0x8D8F},
+       {0x24768, 0x8D8D},
+       {0x24769, 0x8D93},
+       {0x2476A, 0x8D94},
+       {0x2476B, 0x8D90},
+       {0x2476C, 0x8D92},
+       {0x2476D, 0x8DF0},
+       {0x2476E, 0x8DE0},
+       {0x2476F, 0x8DEC},
+       {0x24770, 0x8DF1},
+       {0x24771, 0x8DEE},
+       {0x24772, 0x8DD0},
+       {0x24773, 0x8DE9},
+       {0x24774, 0x8DE3},
+       {0x24775, 0x8DE2},
+       {0x24776, 0x8DE7},
+       {0x24777, 0x8DF2},
+       {0x24778, 0x8DEB},
+       {0x24779, 0x8DF4},
+       {0x2477A, 0x8F06},
+       {0x2477B, 0x8EFF},
+       {0x2477C, 0x8F01},
+       {0x2477D, 0x8F00},
+       {0x2477E, 0x8F05},
+       {0x24821, 0x8F07},
+       {0x24822, 0x8F08},
+       {0x24823, 0x8F02},
+       {0x24824, 0x8F0B},
+       {0x24825, 0x9052},
+       {0x24826, 0x903F},
+       {0x24827, 0x9044},
+       {0x24828, 0x9049},
+       {0x24829, 0x903D},
+       {0x2482A, 0x9110},
+       {0x2482B, 0x910D},
+       {0x2482C, 0x910F},
+       {0x2482D, 0x9111},
+       {0x2482E, 0x9116},
+       {0x2482F, 0x9114},
+       {0x24830, 0x910B},
+       {0x24831, 0x910E},
+       {0x24832, 0x916E},
+       {0x24833, 0x916F},
+       {0x24834, 0x9248},
+       {0x24835, 0x9252},
+       {0x24836, 0x9230},
+       {0x24837, 0x923A},
+       {0x24838, 0x9266},
+       {0x24839, 0x9233},
+       {0x2483A, 0x9265},
+       {0x2483B, 0x925E},
+       {0x2483C, 0x9283},
+       {0x2483D, 0x922E},
+       {0x2483E, 0x924A},
+       {0x2483F, 0x9246},
+       {0x24840, 0x926D},
+       {0x24841, 0x926C},
+       {0x24842, 0x924F},
+       {0x24843, 0x9260},
+       {0x24844, 0x9267},
+       {0x24845, 0x926F},
+       {0x24846, 0x9236},
+       {0x24847, 0x9261},
+       {0x24848, 0x9270},
+       {0x24849, 0x9231},
+       {0x2484A, 0x9254},
+       {0x2484B, 0x9263},
+       {0x2484C, 0x9250},
+       {0x2484D, 0x9272},
+       {0x2484E, 0x924E},
+       {0x2484F, 0x9253},
+       {0x24850, 0x924C},
+       {0x24851, 0x9256},
+       {0x24852, 0x9232},
+       {0x24853, 0x959F},
+       {0x24854, 0x959C},
+       {0x24855, 0x959E},
+       {0x24856, 0x959B},
+       {0x24857, 0x9692},
+       {0x24858, 0x9693},
+       {0x24859, 0x9691},
+       {0x2485A, 0x9697},
+       {0x2485B, 0x96CE},
+       {0x2485C, 0x96FA},
+       {0x2485D, 0x96FD},
+       {0x2485E, 0x96F8},
+       {0x2485F, 0x96F5},
+       {0x24860, 0x9773},
+       {0x24861, 0x9777},
+       {0x24862, 0x9778},
+       {0x24863, 0x9772},
+       {0x24864, 0x980F},
+       {0x24865, 0x980D},
+       {0x24866, 0x980E},
+       {0x24867, 0x98AC},
+       {0x24868, 0x98F6},
+       {0x24869, 0x98F9},
+       {0x2486A, 0x99AF},
+       {0x2486B, 0x99B2},
+       {0x2486C, 0x99B0},
+       {0x2486D, 0x99B5},
+       {0x2486E, 0x9AAD},
+       {0x2486F, 0x9AAB},
+       {0x24870, 0x9B5B},
+       {0x24871, 0x9CEA},
+       {0x24872, 0x9CED},
+       {0x24873, 0x9CE7},
+       {0x24874, 0x9E80},
+       {0x24875, 0x9EFD},
+       {0x24876, 0x50E6},
+       {0x24877, 0x50D4},
+       {0x24878, 0x50D7},
+       {0x24879, 0x50E8},
+       {0x2487A, 0x50F3},
+       {0x2487B, 0x50DB},
+       {0x2487C, 0x50EA},
+       {0x2487D, 0x50DD},
+       {0x2487E, 0x50E4},
+       {0x24921, 0x50D3},
+       {0x24922, 0x50EC},
+       {0x24923, 0x50F0},
+       {0x24924, 0x50EF},
+       {0x24925, 0x50E3},
+       {0x24926, 0x50E0},
+       {0x24927, 0x51D8},
+       {0x24928, 0x5280},
+       {0x24929, 0x5281},
+       {0x2492A, 0x52E9},
+       {0x2492B, 0x52EB},
+       {0x2492C, 0x5330},
+       {0x2492D, 0x53AC},
+       {0x2492E, 0x5627},
+       {0x2492F, 0x5615},
+       {0x24930, 0x560C},
+       {0x24931, 0x5612},
+       {0x24932, 0x55FC},
+       {0x24933, 0x560F},
+       {0x24934, 0x561C},
+       {0x24935, 0x5601},
+       {0x24936, 0x5613},
+       {0x24937, 0x5602},
+       {0x24938, 0x55FA},
+       {0x24939, 0x561D},
+       {0x2493A, 0x5604},
+       {0x2493B, 0x55FF},
+       {0x2493C, 0x55F9},
+       {0x2493D, 0x5889},
+       {0x2493E, 0x587C},
+       {0x2493F, 0x5890},
+       {0x24940, 0x5898},
+       {0x24941, 0x5886},
+       {0x24942, 0x5881},
+       {0x24943, 0x587F},
+       {0x24944, 0x5874},
+       {0x24945, 0x588B},
+       {0x24946, 0x587A},
+       {0x24947, 0x5887},
+       {0x24948, 0x5891},
+       {0x24949, 0x588E},
+       {0x2494A, 0x5876},
+       {0x2494B, 0x5882},
+       {0x2494C, 0x5888},
+       {0x2494D, 0x587B},
+       {0x2494E, 0x5894},
+       {0x2494F, 0x588F},
+       {0x24950, 0x58FE},
+       {0x24951, 0x596B},
+       {0x24952, 0x5ADC},
+       {0x24953, 0x5AEE},
+       {0x24954, 0x5AE5},
+       {0x24955, 0x5AD5},
+       {0x24956, 0x5AEA},
+       {0x24957, 0x5ADA},
+       {0x24958, 0x5AED},
+       {0x24959, 0x5AEB},
+       {0x2495A, 0x5AF3},
+       {0x2495B, 0x5AE2},
+       {0x2495C, 0x5AE0},
+       {0x2495D, 0x5ADB},
+       {0x2495E, 0x5AEC},
+       {0x2495F, 0x5ADE},
+       {0x24960, 0x5ADD},
+       {0x24961, 0x5AD9},
+       {0x24962, 0x5AE8},
+       {0x24963, 0x5ADF},
+       {0x24964, 0x5B77},
+       {0x24965, 0x5BE0},
+       {0x24966, 0x5BE3},
+       {0x24967, 0x5C63},
+       {0x24968, 0x5D82},
+       {0x24969, 0x5D80},
+       {0x2496A, 0x5D7D},
+       {0x2496B, 0x5D86},
+       {0x2496C, 0x5D7A},
+       {0x2496D, 0x5D81},
+       {0x2496E, 0x5D77},
+       {0x2496F, 0x5D8A},
+       {0x24970, 0x5D89},
+       {0x24971, 0x5D88},
+       {0x24972, 0x5D7E},
+       {0x24973, 0x5D7C},
+       {0x24974, 0x5D8D},
+       {0x24975, 0x5D79},
+       {0x24976, 0x5D7F},
+       {0x24977, 0x5E58},
+       {0x24978, 0x5E59},
+       {0x24979, 0x5E53},
+       {0x2497A, 0x5ED8},
+       {0x2497B, 0x5ED1},
+       {0x2497C, 0x5ED7},
+       {0x2497D, 0x5ECE},
+       {0x2497E, 0x5EDC},
+       {0x24A21, 0x5ED5},
+       {0x24A22, 0x5ED9},
+       {0x24A23, 0x5ED2},
+       {0x24A24, 0x5ED4},
+       {0x24A25, 0x5F44},
+       {0x24A26, 0x5F43},
+       {0x24A27, 0x5F6F},
+       {0x24A28, 0x5FB6},
+       {0x24A29, 0x612C},
+       {0x24A2A, 0x6128},
+       {0x24A2B, 0x6141},
+       {0x24A2C, 0x615E},
+       {0x24A2D, 0x6171},
+       {0x24A2E, 0x6173},
+       {0x24A2F, 0x6152},
+       {0x24A30, 0x6153},
+       {0x24A31, 0x6172},
+       {0x24A32, 0x616C},
+       {0x24A33, 0x6180},
+       {0x24A34, 0x6174},
+       {0x24A35, 0x6154},
+       {0x24A36, 0x617A},
+       {0x24A37, 0x615B},
+       {0x24A38, 0x6165},
+       {0x24A39, 0x613B},
+       {0x24A3A, 0x616A},
+       {0x24A3B, 0x6161},
+       {0x24A3C, 0x6156},
+       {0x24A3D, 0x6229},
+       {0x24A3E, 0x6227},
+       {0x24A3F, 0x622B},
+       {0x24A40, 0x642B},
+       {0x24A41, 0x644D},
+       {0x24A42, 0x645B},
+       {0x24A43, 0x645D},
+       {0x24A44, 0x6474},
+       {0x24A45, 0x6476},
+       {0x24A46, 0x6472},
+       {0x24A47, 0x6473},
+       {0x24A48, 0x647D},
+       {0x24A49, 0x6475},
+       {0x24A4A, 0x6466},
+       {0x24A4B, 0x64A6},
+       {0x24A4C, 0x644E},
+       {0x24A4D, 0x6482},
+       {0x24A4E, 0x645E},
+       {0x24A4F, 0x645C},
+       {0x24A50, 0x644B},
+       {0x24A51, 0x6453},
+       {0x24A52, 0x6460},
+       {0x24A53, 0x6450},
+       {0x24A54, 0x647F},
+       {0x24A55, 0x643F},
+       {0x24A56, 0x646C},
+       {0x24A57, 0x646B},
+       {0x24A58, 0x6459},
+       {0x24A59, 0x6465},
+       {0x24A5A, 0x6477},
+       {0x24A5B, 0x6573},
+       {0x24A5C, 0x65A0},
+       {0x24A5D, 0x66A1},
+       {0x24A5E, 0x66A0},
+       {0x24A5F, 0x669F},
+       {0x24A60, 0x6705},
+       {0x24A61, 0x6704},
+       {0x24A62, 0x6722},
+       {0x24A63, 0x69B1},
+       {0x24A64, 0x69B6},
+       {0x24A65, 0x69C9},
+       {0x24A66, 0x69A0},
+       {0x24A67, 0x69CE},
+       {0x24A68, 0x6996},
+       {0x24A69, 0x69B0},
+       {0x24A6A, 0x69AC},
+       {0x24A6B, 0x69BC},
+       {0x24A6C, 0x6991},
+       {0x24A6D, 0x6999},
+       {0x24A6E, 0x698E},
+       {0x24A6F, 0x69A7},
+       {0x24A70, 0x698D},
+       {0x24A71, 0x69A9},
+       {0x24A72, 0x69BE},
+       {0x24A73, 0x69AF},
+       {0x24A74, 0x69BF},
+       {0x24A75, 0x69C4},
+       {0x24A76, 0x69BD},
+       {0x24A77, 0x69A4},
+       {0x24A78, 0x69D4},
+       {0x24A79, 0x69B9},
+       {0x24A7A, 0x69CA},
+       {0x24A7B, 0x699A},
+       {0x24A7C, 0x69CF},
+       {0x24A7D, 0x69B3},
+       {0x24A7E, 0x6993},
+       {0x24B21, 0x69AA},
+       {0x24B22, 0x69A1},
+       {0x24B23, 0x699E},
+       {0x24B24, 0x69D9},
+       {0x24B25, 0x6997},
+       {0x24B26, 0x6990},
+       {0x24B27, 0x69C2},
+       {0x24B28, 0x69B5},
+       {0x24B29, 0x69A5},
+       {0x24B2A, 0x69C6},
+       {0x24B2B, 0x6B4A},
+       {0x24B2C, 0x6B4D},
+       {0x24B2D, 0x6B4B},
+       {0x24B2E, 0x6B9E},
+       {0x24B2F, 0x6B9F},
+       {0x24B30, 0x6BA0},
+       {0x24B31, 0x6BC3},
+       {0x24B32, 0x6BC4},
+       {0x24B33, 0x6BFE},
+       {0x24B34, 0x6ECE},
+       {0x24B35, 0x6EF5},
+       {0x24B36, 0x6EF1},
+       {0x24B37, 0x6F03},
+       {0x24B38, 0x6F25},
+       {0x24B39, 0x6EF8},
+       {0x24B3A, 0x6F37},
+       {0x24B3B, 0x6EFB},
+       {0x24B3C, 0x6F2E},
+       {0x24B3D, 0x6F09},
+       {0x24B3E, 0x6F4E},
+       {0x24B3F, 0x6F19},
+       {0x24B40, 0x6F1A},
+       {0x24B41, 0x6F27},
+       {0x24B42, 0x6F18},
+       {0x24B43, 0x6F3B},
+       {0x24B44, 0x6F12},
+       {0x24B45, 0x6EED},
+       {0x24B46, 0x6F0A},
+       {0x24B47, 0x6F36},
+       {0x24B48, 0x6F73},
+       {0x24B49, 0x6EF9},
+       {0x24B4A, 0x6EEE},
+       {0x24B4B, 0x6F2D},
+       {0x24B4C, 0x6F40},
+       {0x24B4D, 0x6F30},
+       {0x24B4E, 0x6F3C},
+       {0x24B4F, 0x6F35},
+       {0x24B50, 0x6EEB},
+       {0x24B51, 0x6F07},
+       {0x24B52, 0x6F0E},
+       {0x24B53, 0x6F43},
+       {0x24B54, 0x6F05},
+       {0x24B55, 0x6EFD},
+       {0x24B56, 0x6EF6},
+       {0x24B57, 0x6F39},
+       {0x24B58, 0x6F1C},
+       {0x24B59, 0x6EFC},
+       {0x24B5A, 0x6F3A},
+       {0x24B5B, 0x6F1F},
+       {0x24B5C, 0x6F0D},
+       {0x24B5D, 0x6F1E},
+       {0x24B5E, 0x6F08},
+       {0x24B5F, 0x6F21},
+       {0x24B60, 0x7187},
+       {0x24B61, 0x7190},
+       {0x24B62, 0x7189},
+       {0x24B63, 0x7180},
+       {0x24B64, 0x7185},
+       {0x24B65, 0x7182},
+       {0x24B66, 0x718F},
+       {0x24B67, 0x717B},
+       {0x24B68, 0x7186},
+       {0x24B69, 0x7181},
+       {0x24B6A, 0x7197},
+       {0x24B6B, 0x7244},
+       {0x24B6C, 0x7253},
+       {0x24B6D, 0x7297},
+       {0x24B6E, 0x7295},
+       {0x24B6F, 0x7293},
+       {0x24B70, 0x7343},
+       {0x24B71, 0x734D},
+       {0x24B72, 0x7351},
+       {0x24B73, 0x734C},
+       {0x24B74, 0x7462},
+       {0x24B75, 0x7473},
+       {0x24B76, 0x7471},
+       {0x24B77, 0x7475},
+       {0x24B78, 0x7472},
+       {0x24B79, 0x7467},
+       {0x24B7A, 0x746E},
+       {0x24B7B, 0x7500},
+       {0x24B7C, 0x7502},
+       {0x24B7D, 0x7503},
+       {0x24B7E, 0x757D},
+       {0x24C21, 0x7590},
+       {0x24C22, 0x7616},
+       {0x24C23, 0x7608},
+       {0x24C24, 0x760C},
+       {0x24C25, 0x7615},
+       {0x24C26, 0x7611},
+       {0x24C27, 0x760A},
+       {0x24C28, 0x7614},
+       {0x24C29, 0x76B8},
+       {0x24C2A, 0x7781},
+       {0x24C2B, 0x777C},
+       {0x24C2C, 0x7785},
+       {0x24C2D, 0x7782},
+       {0x24C2E, 0x776E},
+       {0x24C2F, 0x7780},
+       {0x24C30, 0x776F},
+       {0x24C31, 0x777E},
+       {0x24C32, 0x7783},
+       {0x24C33, 0x78B2},
+       {0x24C34, 0x78AA},
+       {0x24C35, 0x78B4},
+       {0x24C36, 0x78AD},
+       {0x24C37, 0x78A8},
+       {0x24C38, 0x787E},
+       {0x24C39, 0x78AB},
+       {0x24C3A, 0x789E},
+       {0x24C3B, 0x78A5},
+       {0x24C3C, 0x78A0},
+       {0x24C3D, 0x78AC},
+       {0x24C3E, 0x78A2},
+       {0x24C3F, 0x78A4},
+       {0x24C40, 0x7998},
+       {0x24C41, 0x798A},
+       {0x24C42, 0x798B},
+       {0x24C43, 0x7996},
+       {0x24C44, 0x7995},
+       {0x24C45, 0x7994},
+       {0x24C46, 0x7993},
+       {0x24C47, 0x7997},
+       {0x24C48, 0x7988},
+       {0x24C49, 0x7992},
+       {0x24C4A, 0x7990},
+       {0x24C4B, 0x7A2B},
+       {0x24C4C, 0x7A4A},
+       {0x24C4D, 0x7A30},
+       {0x24C4E, 0x7A2F},
+       {0x24C4F, 0x7A28},
+       {0x24C50, 0x7A26},
+       {0x24C51, 0x7AA8},
+       {0x24C52, 0x7AAB},
+       {0x24C53, 0x7AAC},
+       {0x24C54, 0x7AEE},
+       {0x24C55, 0x7B88},
+       {0x24C56, 0x7B9C},
+       {0x24C57, 0x7B8A},
+       {0x24C58, 0x7B91},
+       {0x24C59, 0x7B90},
+       {0x24C5A, 0x7B96},
+       {0x24C5B, 0x7B8D},
+       {0x24C5C, 0x7B8C},
+       {0x24C5D, 0x7B9B},
+       {0x24C5E, 0x7B8E},
+       {0x24C5F, 0x7B85},
+       {0x24C60, 0x7B98},
+       {0x24C61, 0x5284},
+       {0x24C62, 0x7B99},
+       {0x24C63, 0x7BA4},
+       {0x24C64, 0x7B82},
+       {0x24C65, 0x7CBB},
+       {0x24C66, 0x7CBF},
+       {0x24C67, 0x7CBC},
+       {0x24C68, 0x7CBA},
+       {0x24C69, 0x7DA7},
+       {0x24C6A, 0x7DB7},
+       {0x24C6B, 0x7DC2},
+       {0x24C6C, 0x7DA3},
+       {0x24C6D, 0x7DAA},
+       {0x24C6E, 0x7DC1},
+       {0x24C6F, 0x7DC0},
+       {0x24C70, 0x7DC5},
+       {0x24C71, 0x7D9D},
+       {0x24C72, 0x7DCE},
+       {0x24C73, 0x7DC4},
+       {0x24C74, 0x7DC6},
+       {0x24C75, 0x7DCB},
+       {0x24C76, 0x7DCC},
+       {0x24C77, 0x7DAF},
+       {0x24C78, 0x7DB9},
+       {0x24C79, 0x7D96},
+       {0x24C7A, 0x7DBC},
+       {0x24C7B, 0x7D9F},
+       {0x24C7C, 0x7DA6},
+       {0x24C7D, 0x7DAE},
+       {0x24C7E, 0x7DA9},
+       {0x24D21, 0x7DA1},
+       {0x24D22, 0x7DC9},
+       {0x24D23, 0x7F73},
+       {0x24D24, 0x7FE2},
+       {0x24D25, 0x7FE3},
+       {0x24D26, 0x7FE5},
+       {0x24D27, 0x7FDE},
+       {0x24D28, 0x8024},
+       {0x24D29, 0x805D},
+       {0x24D2A, 0x805C},
+       {0x24D2B, 0x8189},
+       {0x24D2C, 0x8186},
+       {0x24D2D, 0x8183},
+       {0x24D2E, 0x8187},
+       {0x24D2F, 0x818D},
+       {0x24D30, 0x818C},
+       {0x24D31, 0x818B},
+       {0x24D32, 0x8215},
+       {0x24D33, 0x8497},
+       {0x24D34, 0x84A4},
+       {0x24D35, 0x84A1},
+       {0x24D36, 0x849F},
+       {0x24D37, 0x84BA},
+       {0x24D38, 0x84CE},
+       {0x24D39, 0x84C2},
+       {0x24D3A, 0x84AC},
+       {0x24D3B, 0x84AE},
+       {0x24D3C, 0x84AB},
+       {0x24D3D, 0x84B9},
+       {0x24D3E, 0x84B4},
+       {0x24D3F, 0x84C1},
+       {0x24D40, 0x84CD},
+       {0x24D41, 0x84AA},
+       {0x24D42, 0x849A},
+       {0x24D43, 0x84B1},
+       {0x24D44, 0x84D0},
+       {0x24D45, 0x849D},
+       {0x24D46, 0x84A7},
+       {0x24D47, 0x84BB},
+       {0x24D48, 0x84A2},
+       {0x24D49, 0x8494},
+       {0x24D4A, 0x84C7},
+       {0x24D4B, 0x84CC},
+       {0x24D4C, 0x849B},
+       {0x24D4D, 0x84A9},
+       {0x24D4E, 0x84AF},
+       {0x24D4F, 0x84A8},
+       {0x24D50, 0x84D6},
+       {0x24D51, 0x8498},
+       {0x24D52, 0x84B6},
+       {0x24D53, 0x84CF},
+       {0x24D54, 0x84A0},
+       {0x24D55, 0x84D7},
+       {0x24D56, 0x84D4},
+       {0x24D57, 0x84D2},
+       {0x24D58, 0x84DB},
+       {0x24D59, 0x84B0},
+       {0x24D5A, 0x8491},
+       {0x24D5B, 0x8661},
+       {0x24D5C, 0x8733},
+       {0x24D5D, 0x8723},
+       {0x24D5E, 0x8728},
+       {0x24D5F, 0x876B},
+       {0x24D60, 0x8740},
+       {0x24D61, 0x872E},
+       {0x24D62, 0x871E},
+       {0x24D63, 0x8721},
+       {0x24D64, 0x8719},
+       {0x24D65, 0x871B},
+       {0x24D66, 0x8743},
+       {0x24D67, 0x872C},
+       {0x24D68, 0x8741},
+       {0x24D69, 0x873E},
+       {0x24D6A, 0x8746},
+       {0x24D6B, 0x8720},
+       {0x24D6C, 0x8732},
+       {0x24D6D, 0x872A},
+       {0x24D6E, 0x872D},
+       {0x24D6F, 0x873C},
+       {0x24D70, 0x8712},
+       {0x24D71, 0x873A},
+       {0x24D72, 0x8731},
+       {0x24D73, 0x8735},
+       {0x24D74, 0x8742},
+       {0x24D75, 0x8726},
+       {0x24D76, 0x8727},
+       {0x24D77, 0x8738},
+       {0x24D78, 0x8724},
+       {0x24D79, 0x871A},
+       {0x24D7A, 0x8730},
+       {0x24D7B, 0x8711},
+       {0x24D7C, 0x88F7},
+       {0x24D7D, 0x88E7},
+       {0x24D7E, 0x88F1},
+       {0x24E21, 0x88F2},
+       {0x24E22, 0x88FA},
+       {0x24E23, 0x88FE},
+       {0x24E24, 0x88EE},
+       {0x24E25, 0x88FC},
+       {0x24E26, 0x88F6},
+       {0x24E27, 0x88FB},
+       {0x24E28, 0x88F0},
+       {0x24E29, 0x88EC},
+       {0x24E2A, 0x88EB},
+       {0x24E2B, 0x899D},
+       {0x24E2C, 0x89A1},
+       {0x24E2D, 0x899F},
+       {0x24E2E, 0x899E},
+       {0x24E2F, 0x89E9},
+       {0x24E30, 0x89EB},
+       {0x24E31, 0x89E8},
+       {0x24E32, 0x8AAB},
+       {0x24E33, 0x8A99},
+       {0x24E34, 0x8A8B},
+       {0x24E35, 0x8A92},
+       {0x24E36, 0x8A8F},
+       {0x24E37, 0x8A96},
+       {0x24E38, 0x8C3D},
+       {0x24E39, 0x8C68},
+       {0x24E3A, 0x8C69},
+       {0x24E3B, 0x8CD5},
+       {0x24E3C, 0x8CCF},
+       {0x24E3D, 0x8CD7},
+       {0x24E3E, 0x8D96},
+       {0x24E3F, 0x8E09},
+       {0x24E40, 0x8E02},
+       {0x24E41, 0x8DFF},
+       {0x24E42, 0x8E0D},
+       {0x24E43, 0x8DFD},
+       {0x24E44, 0x8E0A},
+       {0x24E45, 0x8E03},
+       {0x24E46, 0x8E07},
+       {0x24E47, 0x8E06},
+       {0x24E48, 0x8E05},
+       {0x24E49, 0x8DFE},
+       {0x24E4A, 0x8E00},
+       {0x24E4B, 0x8E04},
+       {0x24E4C, 0x8F10},
+       {0x24E4D, 0x8F11},
+       {0x24E4E, 0x8F0E},
+       {0x24E4F, 0x8F0D},
+       {0x24E50, 0x9123},
+       {0x24E51, 0x911C},
+       {0x24E52, 0x9120},
+       {0x24E53, 0x9122},
+       {0x24E54, 0x911F},
+       {0x24E55, 0x911D},
+       {0x24E56, 0x911A},
+       {0x24E57, 0x9124},
+       {0x24E58, 0x9121},
+       {0x24E59, 0x911B},
+       {0x24E5A, 0x917A},
+       {0x24E5B, 0x9172},
+       {0x24E5C, 0x9179},
+       {0x24E5D, 0x9173},
+       {0x24E5E, 0x92A5},
+       {0x24E5F, 0x92A4},
+       {0x24E60, 0x9276},
+       {0x24E61, 0x929B},
+       {0x24E62, 0x927A},
+       {0x24E63, 0x92A0},
+       {0x24E64, 0x9294},
+       {0x24E65, 0x92AA},
+       {0x24E66, 0x928D},
+       {0x24E67, 0x92A6},
+       {0x24E68, 0x929A},
+       {0x24E69, 0x92AB},
+       {0x24E6A, 0x9279},
+       {0x24E6B, 0x9297},
+       {0x24E6C, 0x927F},
+       {0x24E6D, 0x92A3},
+       {0x24E6E, 0x92EE},
+       {0x24E6F, 0x928E},
+       {0x24E70, 0x9282},
+       {0x24E71, 0x9295},
+       {0x24E72, 0x92A2},
+       {0x24E73, 0x927D},
+       {0x24E74, 0x9288},
+       {0x24E75, 0x92A1},
+       {0x24E76, 0x928A},
+       {0x24E77, 0x9286},
+       {0x24E78, 0x928C},
+       {0x24E79, 0x9299},
+       {0x24E7A, 0x92A7},
+       {0x24E7B, 0x927E},
+       {0x24E7C, 0x9287},
+       {0x24E7D, 0x92A9},
+       {0x24E7E, 0x929D},
+       {0x24F21, 0x928B},
+       {0x24F22, 0x922D},
+       {0x24F23, 0x969E},
+       {0x24F24, 0x96A1},
+       {0x24F25, 0x96FF},
+       {0x24F26, 0x9758},
+       {0x24F27, 0x977D},
+       {0x24F28, 0x977A},
+       {0x24F29, 0x977E},
+       {0x24F2A, 0x9783},
+       {0x24F2B, 0x9780},
+       {0x24F2C, 0x9782},
+       {0x24F2D, 0x977B},
+       {0x24F2E, 0x9784},
+       {0x24F2F, 0x9781},
+       {0x24F30, 0x977F},
+       {0x24F31, 0x97CE},
+       {0x24F32, 0x97CD},
+       {0x24F33, 0x9816},
+       {0x24F34, 0x98AD},
+       {0x24F35, 0x98AE},
+       {0x24F36, 0x9902},
+       {0x24F37, 0x9900},
+       {0x24F38, 0x9907},
+       {0x24F39, 0x999D},
+       {0x24F3A, 0x999C},
+       {0x24F3B, 0x99C3},
+       {0x24F3C, 0x99B9},
+       {0x24F3D, 0x99BB},
+       {0x24F3E, 0x99BA},
+       {0x24F3F, 0x99C2},
+       {0x24F40, 0x99BD},
+       {0x24F41, 0x99C7},
+       {0x24F42, 0x9AB1},
+       {0x24F43, 0x9AE3},
+       {0x24F44, 0x9AE7},
+       {0x24F45, 0x9B3E},
+       {0x24F46, 0x9B3F},
+       {0x24F47, 0x9B60},
+       {0x24F48, 0x9B61},
+       {0x24F49, 0x9B5F},
+       {0x24F4A, 0x9CF1},
+       {0x24F4B, 0x9CF2},
+       {0x24F4C, 0x9CF5},
+       {0x24F4D, 0x9EA7},
+       {0x24F4E, 0x50FF},
+       {0x24F4F, 0x5103},
+       {0x24F50, 0x5130},
+       {0x24F51, 0x50F8},
+       {0x24F52, 0x5106},
+       {0x24F53, 0x5107},
+       {0x24F54, 0x50F6},
+       {0x24F55, 0x50FE},
+       {0x24F56, 0x510B},
+       {0x24F57, 0x510C},
+       {0x24F58, 0x50FD},
+       {0x24F59, 0x510A},
+       {0x24F5A, 0x528B},
+       {0x24F5B, 0x528C},
+       {0x24F5C, 0x52F1},
+       {0x24F5D, 0x52EF},
+       {0x24F5E, 0x5648},
+       {0x24F5F, 0x5642},
+       {0x24F60, 0x564C},
+       {0x24F61, 0x5635},
+       {0x24F62, 0x5641},
+       {0x24F63, 0x564A},
+       {0x24F64, 0x5649},
+       {0x24F65, 0x5646},
+       {0x24F66, 0x5658},
+       {0x24F67, 0x565A},
+       {0x24F68, 0x5640},
+       {0x24F69, 0x5633},
+       {0x24F6A, 0x563D},
+       {0x24F6B, 0x562C},
+       {0x24F6C, 0x563E},
+       {0x24F6D, 0x5638},
+       {0x24F6E, 0x562A},
+       {0x24F6F, 0x563A},
+       {0x24F70, 0x571A},
+       {0x24F71, 0x58AB},
+       {0x24F72, 0x589D},
+       {0x24F73, 0x58B1},
+       {0x24F74, 0x58A0},
+       {0x24F75, 0x58A3},
+       {0x24F76, 0x58AF},
+       {0x24F77, 0x58AC},
+       {0x24F78, 0x58A5},
+       {0x24F79, 0x58A1},
+       {0x24F7A, 0x58FF},
+       {0x24F7B, 0x5AFF},
+       {0x24F7C, 0x5AF4},
+       {0x24F7D, 0x5AFD},
+       {0x24F7E, 0x5AF7},
+       {0x25021, 0x5AF6},
+       {0x25022, 0x5B03},
+       {0x25023, 0x5AF8},
+       {0x25024, 0x5B02},
+       {0x25025, 0x5AF9},
+       {0x25026, 0x5B01},
+       {0x25027, 0x5B07},
+       {0x25028, 0x5B05},
+       {0x25029, 0x5B0F},
+       {0x2502A, 0x5C67},
+       {0x2502B, 0x5D99},
+       {0x2502C, 0x5D97},
+       {0x2502D, 0x5D9F},
+       {0x2502E, 0x5D92},
+       {0x2502F, 0x5DA2},
+       {0x25030, 0x5D93},
+       {0x25031, 0x5D95},
+       {0x25032, 0x5DA0},
+       {0x25033, 0x5D9C},
+       {0x25034, 0x5DA1},
+       {0x25035, 0x5D9A},
+       {0x25036, 0x5D9E},
+       {0x25037, 0x5E69},
+       {0x25038, 0x5E5D},
+       {0x25039, 0x5E60},
+       {0x2503A, 0x5E5C},
+       {0x2503B, 0x7DF3},
+       {0x2503C, 0x5EDB},
+       {0x2503D, 0x5EDE},
+       {0x2503E, 0x5EE1},
+       {0x2503F, 0x5F49},
+       {0x25040, 0x5FB2},
+       {0x25041, 0x618B},
+       {0x25042, 0x6183},
+       {0x25043, 0x6179},
+       {0x25044, 0x61B1},
+       {0x25045, 0x61B0},
+       {0x25046, 0x61A2},
+       {0x25047, 0x6189},
+       {0x25048, 0x619B},
+       {0x25049, 0x6193},
+       {0x2504A, 0x61AF},
+       {0x2504B, 0x61AD},
+       {0x2504C, 0x619F},
+       {0x2504D, 0x6192},
+       {0x2504E, 0x61AA},
+       {0x2504F, 0x61A1},
+       {0x25050, 0x618D},
+       {0x25051, 0x6166},
+       {0x25052, 0x61B3},
+       {0x25053, 0x622D},
+       {0x25054, 0x646E},
+       {0x25055, 0x6470},
+       {0x25056, 0x6496},
+       {0x25057, 0x64A0},
+       {0x25058, 0x6485},
+       {0x25059, 0x6497},
+       {0x2505A, 0x649C},
+       {0x2505B, 0x648F},
+       {0x2505C, 0x648B},
+       {0x2505D, 0x648A},
+       {0x2505E, 0x648C},
+       {0x2505F, 0x64A3},
+       {0x25060, 0x649F},
+       {0x25061, 0x6468},
+       {0x25062, 0x64B1},
+       {0x25063, 0x6498},
+       {0x25064, 0x6576},
+       {0x25065, 0x657A},
+       {0x25066, 0x6579},
+       {0x25067, 0x657B},
+       {0x25068, 0x65B2},
+       {0x25069, 0x65B3},
+       {0x2506A, 0x66B5},
+       {0x2506B, 0x66B0},
+       {0x2506C, 0x66A9},
+       {0x2506D, 0x66B2},
+       {0x2506E, 0x66B7},
+       {0x2506F, 0x66AA},
+       {0x25070, 0x66AF},
+       {0x25071, 0x6A00},
+       {0x25072, 0x6A06},
+       {0x25073, 0x6A17},
+       {0x25074, 0x69E5},
+       {0x25075, 0x69F8},
+       {0x25076, 0x6A15},
+       {0x25077, 0x69F1},
+       {0x25078, 0x69E4},
+       {0x25079, 0x6A20},
+       {0x2507A, 0x69FF},
+       {0x2507B, 0x69EC},
+       {0x2507C, 0x69E2},
+       {0x2507D, 0x6A1B},
+       {0x2507E, 0x6A1D},
+       {0x25121, 0x69FE},
+       {0x25122, 0x6A27},
+       {0x25123, 0x69F2},
+       {0x25124, 0x69EE},
+       {0x25125, 0x6A14},
+       {0x25126, 0x69F7},
+       {0x25127, 0x69E7},
+       {0x25128, 0x6A40},
+       {0x25129, 0x6A08},
+       {0x2512A, 0x69E6},
+       {0x2512B, 0x69FB},
+       {0x2512C, 0x6A0D},
+       {0x2512D, 0x69FC},
+       {0x2512E, 0x69EB},
+       {0x2512F, 0x6A09},
+       {0x25130, 0x6A04},
+       {0x25131, 0x6A18},
+       {0x25132, 0x6A25},
+       {0x25133, 0x6A0F},
+       {0x25134, 0x69F6},
+       {0x25135, 0x6A26},
+       {0x25136, 0x6A07},
+       {0x25137, 0x69F4},
+       {0x25138, 0x6A16},
+       {0x25139, 0x6B51},
+       {0x2513A, 0x6BA5},
+       {0x2513B, 0x6BA3},
+       {0x2513C, 0x6BA2},
+       {0x2513D, 0x6BA6},
+       {0x2513E, 0x6C01},
+       {0x2513F, 0x6C00},
+       {0x25140, 0x6BFF},
+       {0x25141, 0x6C02},
+       {0x25142, 0x6F41},
+       {0x25143, 0x6F26},
+       {0x25144, 0x6F7E},
+       {0x25145, 0x6F87},
+       {0x25146, 0x6FC6},
+       {0x25147, 0x6F92},
+       {0x25148, 0x6F8D},
+       {0x25149, 0x6F89},
+       {0x2514A, 0x6F8C},
+       {0x2514B, 0x6F62},
+       {0x2514C, 0x6F4F},
+       {0x2514D, 0x6F85},
+       {0x2514E, 0x6F5A},
+       {0x2514F, 0x6F96},
+       {0x25150, 0x6F76},
+       {0x25151, 0x6F6C},
+       {0x25152, 0x6F82},
+       {0x25153, 0x6F55},
+       {0x25154, 0x6F72},
+       {0x25155, 0x6F52},
+       {0x25156, 0x6F50},
+       {0x25157, 0x6F57},
+       {0x25158, 0x6F94},
+       {0x25159, 0x6F93},
+       {0x2515A, 0x6F5D},
+       {0x2515B, 0x6F00},
+       {0x2515C, 0x6F61},
+       {0x2515D, 0x6F6B},
+       {0x2515E, 0x6F7D},
+       {0x2515F, 0x6F67},
+       {0x25160, 0x6F90},
+       {0x25161, 0x6F53},
+       {0x25162, 0x6F8B},
+       {0x25163, 0x6F69},
+       {0x25164, 0x6F7F},
+       {0x25165, 0x6F95},
+       {0x25166, 0x6F63},
+       {0x25167, 0x6F77},
+       {0x25168, 0x6F6A},
+       {0x25169, 0x6F7B},
+       {0x2516A, 0x71B2},
+       {0x2516B, 0x71AF},
+       {0x2516C, 0x719B},
+       {0x2516D, 0x71B0},
+       {0x2516E, 0x71A0},
+       {0x2516F, 0x719A},
+       {0x25170, 0x71A9},
+       {0x25171, 0x71B5},
+       {0x25172, 0x719D},
+       {0x25173, 0x71A5},
+       {0x25174, 0x719E},
+       {0x25175, 0x71A4},
+       {0x25176, 0x71A1},
+       {0x25177, 0x71AA},
+       {0x25178, 0x719C},
+       {0x25179, 0x71A7},
+       {0x2517A, 0x71B3},
+       {0x2517B, 0x7298},
+       {0x2517C, 0x729A},
+       {0x2517D, 0x7358},
+       {0x2517E, 0x7352},
+       {0x25221, 0x735E},
+       {0x25222, 0x735F},
+       {0x25223, 0x7360},
+       {0x25224, 0x735D},
+       {0x25225, 0x735B},
+       {0x25226, 0x7361},
+       {0x25227, 0x735A},
+       {0x25228, 0x7359},
+       {0x25229, 0x7362},
+       {0x2522A, 0x7487},
+       {0x2522B, 0x7489},
+       {0x2522C, 0x748A},
+       {0x2522D, 0x7486},
+       {0x2522E, 0x7481},
+       {0x2522F, 0x747D},
+       {0x25230, 0x7485},
+       {0x25231, 0x7488},
+       {0x25232, 0x747C},
+       {0x25233, 0x7479},
+       {0x25234, 0x7508},
+       {0x25235, 0x7507},
+       {0x25236, 0x757E},
+       {0x25237, 0x7625},
+       {0x25238, 0x761E},
+       {0x25239, 0x7619},
+       {0x2523A, 0x761D},
+       {0x2523B, 0x761C},
+       {0x2523C, 0x7623},
+       {0x2523D, 0x761A},
+       {0x2523E, 0x7628},
+       {0x2523F, 0x761B},
+       {0x25240, 0x769C},
+       {0x25241, 0x769D},
+       {0x25242, 0x769E},
+       {0x25243, 0x769B},
+       {0x25244, 0x778D},
+       {0x25245, 0x778F},
+       {0x25246, 0x7789},
+       {0x25247, 0x7788},
+       {0x25248, 0x78CD},
+       {0x25249, 0x78BB},
+       {0x2524A, 0x78CF},
+       {0x2524B, 0x78CC},
+       {0x2524C, 0x78D1},
+       {0x2524D, 0x78CE},
+       {0x2524E, 0x78D4},
+       {0x2524F, 0x78C8},
+       {0x25250, 0x78C3},
+       {0x25251, 0x78C4},
+       {0x25252, 0x78C9},
+       {0x25253, 0x799A},
+       {0x25254, 0x79A1},
+       {0x25255, 0x79A0},
+       {0x25256, 0x799C},
+       {0x25257, 0x79A2},
+       {0x25258, 0x799B},
+       {0x25259, 0x6B76},
+       {0x2525A, 0x7A39},
+       {0x2525B, 0x7AB2},
+       {0x2525C, 0x7AB4},
+       {0x2525D, 0x7AB3},
+       {0x2525E, 0x7BB7},
+       {0x2525F, 0x7BCB},
+       {0x25260, 0x7BBE},
+       {0x25261, 0x7BAC},
+       {0x25262, 0x7BCE},
+       {0x25263, 0x7BAF},
+       {0x25264, 0x7BB9},
+       {0x25265, 0x7BCA},
+       {0x25266, 0x7BB5},
+       {0x25267, 0x7CC5},
+       {0x25268, 0x7CC8},
+       {0x25269, 0x7CCC},
+       {0x2526A, 0x7CCB},
+       {0x2526B, 0x7DF7},
+       {0x2526C, 0x7DDB},
+       {0x2526D, 0x7DEA},
+       {0x2526E, 0x7DE7},
+       {0x2526F, 0x7DD7},
+       {0x25270, 0x7DE1},
+       {0x25271, 0x7E03},
+       {0x25272, 0x7DFA},
+       {0x25273, 0x7DE6},
+       {0x25274, 0x7DF6},
+       {0x25275, 0x7DF1},
+       {0x25276, 0x7DF0},
+       {0x25277, 0x7DEE},
+       {0x25278, 0x7DDF},
+       {0x25279, 0x7F76},
+       {0x2527A, 0x7FAC},
+       {0x2527B, 0x7FB0},
+       {0x2527C, 0x7FAD},
+       {0x2527D, 0x7FED},
+       {0x2527E, 0x7FEB},
+       {0x25321, 0x7FEA},
+       {0x25322, 0x7FEC},
+       {0x25323, 0x7FE6},
+       {0x25324, 0x7FE8},
+       {0x25325, 0x8064},
+       {0x25326, 0x8067},
+       {0x25327, 0x81A3},
+       {0x25328, 0x819F},
+       {0x25329, 0x819E},
+       {0x2532A, 0x8195},
+       {0x2532B, 0x81A2},
+       {0x2532C, 0x8199},
+       {0x2532D, 0x8197},
+       {0x2532E, 0x8216},
+       {0x2532F, 0x824F},
+       {0x25330, 0x8253},
+       {0x25331, 0x8252},
+       {0x25332, 0x8250},
+       {0x25333, 0x824E},
+       {0x25334, 0x8251},
+       {0x25335, 0x8524},
+       {0x25336, 0x853B},
+       {0x25337, 0x850F},
+       {0x25338, 0x8500},
+       {0x25339, 0x8529},
+       {0x2533A, 0x850E},
+       {0x2533B, 0x8509},
+       {0x2533C, 0x850D},
+       {0x2533D, 0x851F},
+       {0x2533E, 0x850A},
+       {0x2533F, 0x8527},
+       {0x25340, 0x851C},
+       {0x25341, 0x84FB},
+       {0x25342, 0x852B},
+       {0x25343, 0x84FA},
+       {0x25344, 0x8508},
+       {0x25345, 0x850C},
+       {0x25346, 0x84F4},
+       {0x25347, 0x852A},
+       {0x25348, 0x84F2},
+       {0x25349, 0x8515},
+       {0x2534A, 0x84F7},
+       {0x2534B, 0x84EB},
+       {0x2534C, 0x84F3},
+       {0x2534D, 0x84FC},
+       {0x2534E, 0x8512},
+       {0x2534F, 0x84EA},
+       {0x25350, 0x84E9},
+       {0x25351, 0x8516},
+       {0x25352, 0x84FE},
+       {0x25353, 0x8528},
+       {0x25354, 0x851D},
+       {0x25355, 0x852E},
+       {0x25356, 0x8502},
+       {0x25357, 0x84FD},
+       {0x25358, 0x851E},
+       {0x25359, 0x84F6},
+       {0x2535A, 0x8531},
+       {0x2535B, 0x8526},
+       {0x2535C, 0x84E7},
+       {0x2535D, 0x84E8},
+       {0x2535E, 0x84F0},
+       {0x2535F, 0x84EF},
+       {0x25360, 0x84F9},
+       {0x25361, 0x8518},
+       {0x25362, 0x8520},
+       {0x25363, 0x8530},
+       {0x25364, 0x850B},
+       {0x25365, 0x8519},
+       {0x25366, 0x852F},
+       {0x25367, 0x8662},
+       {0x25368, 0x8756},
+       {0x25369, 0x8763},
+       {0x2536A, 0x8764},
+       {0x2536B, 0x8777},
+       {0x2536C, 0x87E1},
+       {0x2536D, 0x8773},
+       {0x2536E, 0x8758},
+       {0x2536F, 0x8754},
+       {0x25370, 0x875B},
+       {0x25371, 0x8752},
+       {0x25372, 0x8761},
+       {0x25373, 0x875A},
+       {0x25374, 0x8751},
+       {0x25375, 0x875E},
+       {0x25376, 0x876D},
+       {0x25377, 0x876A},
+       {0x25378, 0x8750},
+       {0x25379, 0x874E},
+       {0x2537A, 0x875F},
+       {0x2537B, 0x875D},
+       {0x2537C, 0x876F},
+       {0x2537D, 0x876C},
+       {0x2537E, 0x877A},
+       {0x25421, 0x876E},
+       {0x25422, 0x875C},
+       {0x25423, 0x8765},
+       {0x25424, 0x874F},
+       {0x25425, 0x877B},
+       {0x25426, 0x8775},
+       {0x25427, 0x8762},
+       {0x25428, 0x8767},
+       {0x25429, 0x8769},
+       {0x2542A, 0x885A},
+       {0x2542B, 0x8905},
+       {0x2542C, 0x890C},
+       {0x2542D, 0x8914},
+       {0x2542E, 0x890B},
+       {0x2542F, 0x8917},
+       {0x25430, 0x8918},
+       {0x25431, 0x8919},
+       {0x25432, 0x8906},
+       {0x25433, 0x8916},
+       {0x25434, 0x8911},
+       {0x25435, 0x890E},
+       {0x25436, 0x8909},
+       {0x25437, 0x89A2},
+       {0x25438, 0x89A4},
+       {0x25439, 0x89A3},
+       {0x2543A, 0x89ED},
+       {0x2543B, 0x89F0},
+       {0x2543C, 0x89EC},
+       {0x2543D, 0x8ACF},
+       {0x2543E, 0x8AC6},
+       {0x2543F, 0x8AB8},
+       {0x25440, 0x8AD3},
+       {0x25441, 0x8AD1},
+       {0x25442, 0x8AD4},
+       {0x25443, 0x8AD5},
+       {0x25444, 0x8ABB},
+       {0x25445, 0x8AD7},
+       {0x25446, 0x8ABE},
+       {0x25447, 0x8AC0},
+       {0x25448, 0x8AC5},
+       {0x25449, 0x8AD8},
+       {0x2544A, 0x8AC3},
+       {0x2544B, 0x8ABA},
+       {0x2544C, 0x8ABD},
+       {0x2544D, 0x8AD9},
+       {0x2544E, 0x8C3E},
+       {0x2544F, 0x8C4D},
+       {0x25450, 0x8C8F},
+       {0x25451, 0x8CE5},
+       {0x25452, 0x8CDF},
+       {0x25453, 0x8CD9},
+       {0x25454, 0x8CE8},
+       {0x25455, 0x8CDA},
+       {0x25456, 0x8CDD},
+       {0x25457, 0x8CE7},
+       {0x25458, 0x8DA0},
+       {0x25459, 0x8D9C},
+       {0x2545A, 0x8DA1},
+       {0x2545B, 0x8D9B},
+       {0x2545C, 0x8E20},
+       {0x2545D, 0x8E23},
+       {0x2545E, 0x8E25},
+       {0x2545F, 0x8E24},
+       {0x25460, 0x8E2E},
+       {0x25461, 0x8E15},
+       {0x25462, 0x8E1B},
+       {0x25463, 0x8E16},
+       {0x25464, 0x8E11},
+       {0x25465, 0x8E19},
+       {0x25466, 0x8E26},
+       {0x25467, 0x8E27},
+       {0x25468, 0x8E14},
+       {0x25469, 0x8E12},
+       {0x2546A, 0x8E18},
+       {0x2546B, 0x8E13},
+       {0x2546C, 0x8E1C},
+       {0x2546D, 0x8E17},
+       {0x2546E, 0x8E1A},
+       {0x2546F, 0x8F2C},
+       {0x25470, 0x8F24},
+       {0x25471, 0x8F18},
+       {0x25472, 0x8F1A},
+       {0x25473, 0x8F20},
+       {0x25474, 0x8F23},
+       {0x25475, 0x8F16},
+       {0x25476, 0x8F17},
+       {0x25477, 0x9073},
+       {0x25478, 0x9070},
+       {0x25479, 0x906F},
+       {0x2547A, 0x9067},
+       {0x2547B, 0x906B},
+       {0x2547C, 0x912F},
+       {0x2547D, 0x912B},
+       {0x2547E, 0x9129},
+       {0x25521, 0x912A},
+       {0x25522, 0x9132},
+       {0x25523, 0x9126},
+       {0x25524, 0x912E},
+       {0x25525, 0x9185},
+       {0x25526, 0x9186},
+       {0x25527, 0x918A},
+       {0x25528, 0x9181},
+       {0x25529, 0x9182},
+       {0x2552A, 0x9184},
+       {0x2552B, 0x9180},
+       {0x2552C, 0x92D0},
+       {0x2552D, 0x92C3},
+       {0x2552E, 0x92C4},
+       {0x2552F, 0x92C0},
+       {0x25530, 0x92D9},
+       {0x25531, 0x92B6},
+       {0x25532, 0x92CF},
+       {0x25533, 0x92F1},
+       {0x25534, 0x92DF},
+       {0x25535, 0x92D8},
+       {0x25536, 0x92E9},
+       {0x25537, 0x92D7},
+       {0x25538, 0x92DD},
+       {0x25539, 0x92CC},
+       {0x2553A, 0x92EF},
+       {0x2553B, 0x92C2},
+       {0x2553C, 0x92E8},
+       {0x2553D, 0x92CA},
+       {0x2553E, 0x92C8},
+       {0x2553F, 0x92CE},
+       {0x25540, 0x92E6},
+       {0x25541, 0x92CD},
+       {0x25542, 0x92D5},
+       {0x25543, 0x92C9},
+       {0x25544, 0x92E0},
+       {0x25545, 0x92DE},
+       {0x25546, 0x92E7},
+       {0x25547, 0x92D1},
+       {0x25548, 0x92D3},
+       {0x25549, 0x92B5},
+       {0x2554A, 0x92E1},
+       {0x2554B, 0x9325},
+       {0x2554C, 0x92C6},
+       {0x2554D, 0x92B4},
+       {0x2554E, 0x957C},
+       {0x2554F, 0x95AC},
+       {0x25550, 0x95AB},
+       {0x25551, 0x95AE},
+       {0x25552, 0x95B0},
+       {0x25553, 0x96A4},
+       {0x25554, 0x96A2},
+       {0x25555, 0x96D3},
+       {0x25556, 0x9705},
+       {0x25557, 0x9708},
+       {0x25558, 0x9702},
+       {0x25559, 0x975A},
+       {0x2555A, 0x978A},
+       {0x2555B, 0x978E},
+       {0x2555C, 0x9788},
+       {0x2555D, 0x97D0},
+       {0x2555E, 0x97CF},
+       {0x2555F, 0x981E},
+       {0x25560, 0x981D},
+       {0x25561, 0x9826},
+       {0x25562, 0x9829},
+       {0x25563, 0x9828},
+       {0x25564, 0x9820},
+       {0x25565, 0x981B},
+       {0x25566, 0x9827},
+       {0x25567, 0x98B2},
+       {0x25568, 0x9908},
+       {0x25569, 0x98FA},
+       {0x2556A, 0x9911},
+       {0x2556B, 0x9914},
+       {0x2556C, 0x9916},
+       {0x2556D, 0x9917},
+       {0x2556E, 0x9915},
+       {0x2556F, 0x99DC},
+       {0x25570, 0x99CD},
+       {0x25571, 0x99CF},
+       {0x25572, 0x99D3},
+       {0x25573, 0x99D4},
+       {0x25574, 0x99CE},
+       {0x25575, 0x99C9},
+       {0x25576, 0x99D6},
+       {0x25577, 0x99D8},
+       {0x25578, 0x99CB},
+       {0x25579, 0x99D7},
+       {0x2557A, 0x99CC},
+       {0x2557B, 0x9AB3},
+       {0x2557C, 0x9AEC},
+       {0x2557D, 0x9AEB},
+       {0x2557E, 0x9AF3},
+       {0x25621, 0x9AF2},
+       {0x25622, 0x9AF1},
+       {0x25623, 0x9B46},
+       {0x25624, 0x9B43},
+       {0x25625, 0x9B67},
+       {0x25626, 0x9B74},
+       {0x25627, 0x9B71},
+       {0x25628, 0x9B66},
+       {0x25629, 0x9B76},
+       {0x2562A, 0x9B75},
+       {0x2562B, 0x9B70},
+       {0x2562C, 0x9B68},
+       {0x2562D, 0x9B64},
+       {0x2562E, 0x9B6C},
+       {0x2562F, 0x9CFC},
+       {0x25630, 0x9CFA},
+       {0x25631, 0x9CFD},
+       {0x25632, 0x9CFF},
+       {0x25633, 0x9CF7},
+       {0x25634, 0x9D07},
+       {0x25635, 0x9D00},
+       {0x25636, 0x9CF9},
+       {0x25637, 0x9CFB},
+       {0x25638, 0x9D08},
+       {0x25639, 0x9D05},
+       {0x2563A, 0x9D04},
+       {0x2563B, 0x9E83},
+       {0x2563C, 0x9ED3},
+       {0x2563D, 0x9F0F},
+       {0x2563E, 0x9F10},
+       {0x2563F, 0x511C},
+       {0x25640, 0x5113},
+       {0x25641, 0x5117},
+       {0x25642, 0x511A},
+       {0x25643, 0x5111},
+       {0x25644, 0x51DE},
+       {0x25645, 0x5334},
+       {0x25646, 0x53E1},
+       {0x25647, 0x5670},
+       {0x25648, 0x5660},
+       {0x25649, 0x566E},
+       {0x2564A, 0x5673},
+       {0x2564B, 0x5666},
+       {0x2564C, 0x5663},
+       {0x2564D, 0x566D},
+       {0x2564E, 0x5672},
+       {0x2564F, 0x565E},
+       {0x25650, 0x5677},
+       {0x25651, 0x571C},
+       {0x25652, 0x571B},
+       {0x25653, 0x58C8},
+       {0x25654, 0x58BD},
+       {0x25655, 0x58C9},
+       {0x25656, 0x58BF},
+       {0x25657, 0x58BA},
+       {0x25658, 0x58C2},
+       {0x25659, 0x58BC},
+       {0x2565A, 0x58C6},
+       {0x2565B, 0x5B17},
+       {0x2565C, 0x5B19},
+       {0x2565D, 0x5B1B},
+       {0x2565E, 0x5B21},
+       {0x2565F, 0x5B14},
+       {0x25660, 0x5B13},
+       {0x25661, 0x5B10},
+       {0x25662, 0x5B16},
+       {0x25663, 0x5B28},
+       {0x25664, 0x5B1A},
+       {0x25665, 0x5B20},
+       {0x25666, 0x5B1E},
+       {0x25667, 0x5BEF},
+       {0x25668, 0x5DAC},
+       {0x25669, 0x5DB1},
+       {0x2566A, 0x5DA9},
+       {0x2566B, 0x5DA7},
+       {0x2566C, 0x5DB5},
+       {0x2566D, 0x5DB0},
+       {0x2566E, 0x5DAE},
+       {0x2566F, 0x5DAA},
+       {0x25670, 0x5DA8},
+       {0x25671, 0x5DB2},
+       {0x25672, 0x5DAD},
+       {0x25673, 0x5DAF},
+       {0x25674, 0x5DB4},
+       {0x25675, 0x5E67},
+       {0x25676, 0x5E68},
+       {0x25677, 0x5E66},
+       {0x25678, 0x5E6F},
+       {0x25679, 0x5EE9},
+       {0x2567A, 0x5EE7},
+       {0x2567B, 0x5EE6},
+       {0x2567C, 0x5EE8},
+       {0x2567D, 0x5EE5},
+       {0x2567E, 0x5F4B},
+       {0x25721, 0x5FBC},
+       {0x25722, 0x5FBB},
+       {0x25723, 0x619D},
+       {0x25724, 0x61A8},
+       {0x25725, 0x6196},
+       {0x25726, 0x61C5},
+       {0x25727, 0x61B4},
+       {0x25728, 0x61C6},
+       {0x25729, 0x61C1},
+       {0x2572A, 0x61CC},
+       {0x2572B, 0x61BA},
+       {0x2572C, 0x61BF},
+       {0x2572D, 0x61B8},
+       {0x2572E, 0x618C},
+       {0x2572F, 0x64D7},
+       {0x25730, 0x64D6},
+       {0x25731, 0x64D0},
+       {0x25732, 0x64CF},
+       {0x25733, 0x64C9},
+       {0x25734, 0x64BD},
+       {0x25735, 0x6489},
+       {0x25736, 0x64C3},
+       {0x25737, 0x64DB},
+       {0x25738, 0x64F3},
+       {0x25739, 0x64D9},
+       {0x2573A, 0x6533},
+       {0x2573B, 0x657F},
+       {0x2573C, 0x657C},
+       {0x2573D, 0x65A2},
+       {0x2573E, 0x66C8},
+       {0x2573F, 0x66BE},
+       {0x25740, 0x66C0},
+       {0x25741, 0x66CA},
+       {0x25742, 0x66CB},
+       {0x25743, 0x66CF},
+       {0x25744, 0x66BD},
+       {0x25745, 0x66BB},
+       {0x25746, 0x66BA},
+       {0x25747, 0x66CC},
+       {0x25748, 0x6723},
+       {0x25749, 0x6A34},
+       {0x2574A, 0x6A66},
+       {0x2574B, 0x6A49},
+       {0x2574C, 0x6A67},
+       {0x2574D, 0x6A32},
+       {0x2574E, 0x6A68},
+       {0x2574F, 0x6A3E},
+       {0x25750, 0x6A5D},
+       {0x25751, 0x6A6D},
+       {0x25752, 0x6A76},
+       {0x25753, 0x6A5B},
+       {0x25754, 0x6A51},
+       {0x25755, 0x6A28},
+       {0x25756, 0x6A5A},
+       {0x25757, 0x6A3B},
+       {0x25758, 0x6A3F},
+       {0x25759, 0x6A41},
+       {0x2575A, 0x6A6A},
+       {0x2575B, 0x6A64},
+       {0x2575C, 0x6A50},
+       {0x2575D, 0x6A4F},
+       {0x2575E, 0x6A54},
+       {0x2575F, 0x6A6F},
+       {0x25760, 0x6A69},
+       {0x25761, 0x6A60},
+       {0x25762, 0x6A3C},
+       {0x25763, 0x6A5E},
+       {0x25764, 0x6A56},
+       {0x25765, 0x6A55},
+       {0x25766, 0x6A4D},
+       {0x25767, 0x6A4E},
+       {0x25768, 0x6A46},
+       {0x25769, 0x6B55},
+       {0x2576A, 0x6B54},
+       {0x2576B, 0x6B56},
+       {0x2576C, 0x6BA7},
+       {0x2576D, 0x6BAA},
+       {0x2576E, 0x6BAB},
+       {0x2576F, 0x6BC8},
+       {0x25770, 0x6BC7},
+       {0x25771, 0x6C04},
+       {0x25772, 0x6C03},
+       {0x25773, 0x6C06},
+       {0x25774, 0x6FAD},
+       {0x25775, 0x6FCB},
+       {0x25776, 0x6FA3},
+       {0x25777, 0x6FC7},
+       {0x25778, 0x6FBC},
+       {0x25779, 0x6FCE},
+       {0x2577A, 0x6FC8},
+       {0x2577B, 0x6F5E},
+       {0x2577C, 0x6FC4},
+       {0x2577D, 0x6FBD},
+       {0x2577E, 0x6F9E},
+       {0x25821, 0x6FCA},
+       {0x25822, 0x6FA8},
+       {0x25823, 0x7004},
+       {0x25824, 0x6FA5},
+       {0x25825, 0x6FAE},
+       {0x25826, 0x6FBA},
+       {0x25827, 0x6FAC},
+       {0x25828, 0x6FAA},
+       {0x25829, 0x6FCF},
+       {0x2582A, 0x6FBF},
+       {0x2582B, 0x6FB8},
+       {0x2582C, 0x6FA2},
+       {0x2582D, 0x6FC9},
+       {0x2582E, 0x6FAB},
+       {0x2582F, 0x6FCD},
+       {0x25830, 0x6FAF},
+       {0x25831, 0x6FB2},
+       {0x25832, 0x6FB0},
+       {0x25833, 0x71C5},
+       {0x25834, 0x71C2},
+       {0x25835, 0x71BF},
+       {0x25836, 0x71B8},
+       {0x25837, 0x71D6},
+       {0x25838, 0x71C0},
+       {0x25839, 0x71C1},
+       {0x2583A, 0x71CB},
+       {0x2583B, 0x71D4},
+       {0x2583C, 0x71CA},
+       {0x2583D, 0x71C7},
+       {0x2583E, 0x71CF},
+       {0x2583F, 0x71BD},
+       {0x25840, 0x71D8},
+       {0x25841, 0x71BC},
+       {0x25842, 0x71C6},
+       {0x25843, 0x71DA},
+       {0x25844, 0x71DB},
+       {0x25845, 0x729D},
+       {0x25846, 0x729E},
+       {0x25847, 0x7369},
+       {0x25848, 0x7366},
+       {0x25849, 0x7367},
+       {0x2584A, 0x736C},
+       {0x2584B, 0x7365},
+       {0x2584C, 0x736B},
+       {0x2584D, 0x736A},
+       {0x2584E, 0x747F},
+       {0x2584F, 0x749A},
+       {0x25850, 0x74A0},
+       {0x25851, 0x7494},
+       {0x25852, 0x7492},
+       {0x25853, 0x7495},
+       {0x25854, 0x74A1},
+       {0x25855, 0x750B},
+       {0x25856, 0x7580},
+       {0x25857, 0x762F},
+       {0x25858, 0x762D},
+       {0x25859, 0x7631},
+       {0x2585A, 0x763D},
+       {0x2585B, 0x7633},
+       {0x2585C, 0x763C},
+       {0x2585D, 0x7635},
+       {0x2585E, 0x7632},
+       {0x2585F, 0x7630},
+       {0x25860, 0x76BB},
+       {0x25861, 0x76E6},
+       {0x25862, 0x779A},
+       {0x25863, 0x779D},
+       {0x25864, 0x77A1},
+       {0x25865, 0x779C},
+       {0x25866, 0x779B},
+       {0x25867, 0x77A2},
+       {0x25868, 0x77A3},
+       {0x25869, 0x7795},
+       {0x2586A, 0x7799},
+       {0x2586B, 0x7797},
+       {0x2586C, 0x78DD},
+       {0x2586D, 0x78E9},
+       {0x2586E, 0x78E5},
+       {0x2586F, 0x78EA},
+       {0x25870, 0x78DE},
+       {0x25871, 0x78E3},
+       {0x25872, 0x78DB},
+       {0x25873, 0x78E1},
+       {0x25874, 0x78E2},
+       {0x25875, 0x78ED},
+       {0x25876, 0x78DF},
+       {0x25877, 0x78E0},
+       {0x25878, 0x79A4},
+       {0x25879, 0x7A44},
+       {0x2587A, 0x7A48},
+       {0x2587B, 0x7A47},
+       {0x2587C, 0x7AB6},
+       {0x2587D, 0x7AB8},
+       {0x2587E, 0x7AB5},
+       {0x25921, 0x7AB1},
+       {0x25922, 0x7AB7},
+       {0x25923, 0x7BDE},
+       {0x25924, 0x7BE3},
+       {0x25925, 0x7BE7},
+       {0x25926, 0x7BDD},
+       {0x25927, 0x7BD5},
+       {0x25928, 0x7BE5},
+       {0x25929, 0x7BDA},
+       {0x2592A, 0x7BE8},
+       {0x2592B, 0x7BF9},
+       {0x2592C, 0x7BD4},
+       {0x2592D, 0x7BEA},
+       {0x2592E, 0x7BE2},
+       {0x2592F, 0x7BDC},
+       {0x25930, 0x7BEB},
+       {0x25931, 0x7BD8},
+       {0x25932, 0x7BDF},
+       {0x25933, 0x7CD2},
+       {0x25934, 0x7CD4},
+       {0x25935, 0x7CD7},
+       {0x25936, 0x7CD0},
+       {0x25937, 0x7CD1},
+       {0x25938, 0x7E12},
+       {0x25939, 0x7E21},
+       {0x2593A, 0x7E17},
+       {0x2593B, 0x7E0C},
+       {0x2593C, 0x7E1F},
+       {0x2593D, 0x7E20},
+       {0x2593E, 0x7E13},
+       {0x2593F, 0x7E0E},
+       {0x25940, 0x7E1C},
+       {0x25941, 0x7E15},
+       {0x25942, 0x7E1A},
+       {0x25943, 0x7E22},
+       {0x25944, 0x7E0B},
+       {0x25945, 0x7E0F},
+       {0x25946, 0x7E16},
+       {0x25947, 0x7E0D},
+       {0x25948, 0x7E14},
+       {0x25949, 0x7E25},
+       {0x2594A, 0x7E24},
+       {0x2594B, 0x7F43},
+       {0x2594C, 0x7F7B},
+       {0x2594D, 0x7F7C},
+       {0x2594E, 0x7F7A},
+       {0x2594F, 0x7FB1},
+       {0x25950, 0x7FEF},
+       {0x25951, 0x802A},
+       {0x25952, 0x8029},
+       {0x25953, 0x806C},
+       {0x25954, 0x81B1},
+       {0x25955, 0x81A6},
+       {0x25956, 0x81AE},
+       {0x25957, 0x81B9},
+       {0x25958, 0x81B5},
+       {0x25959, 0x81AB},
+       {0x2595A, 0x81B0},
+       {0x2595B, 0x81AC},
+       {0x2595C, 0x81B4},
+       {0x2595D, 0x81B2},
+       {0x2595E, 0x81B7},
+       {0x2595F, 0x81A7},
+       {0x25960, 0x81F2},
+       {0x25961, 0x8255},
+       {0x25962, 0x8256},
+       {0x25963, 0x8257},
+       {0x25964, 0x8556},
+       {0x25965, 0x8545},
+       {0x25966, 0x856B},
+       {0x25967, 0x854D},
+       {0x25968, 0x8553},
+       {0x25969, 0x8561},
+       {0x2596A, 0x8558},
+       {0x2596B, 0x8540},
+       {0x2596C, 0x8546},
+       {0x2596D, 0x8564},
+       {0x2596E, 0x8541},
+       {0x2596F, 0x8562},
+       {0x25970, 0x8544},
+       {0x25971, 0x8551},
+       {0x25972, 0x8547},
+       {0x25973, 0x8563},
+       {0x25974, 0x853E},
+       {0x25975, 0x855B},
+       {0x25976, 0x8571},
+       {0x25977, 0x854E},
+       {0x25978, 0x856E},
+       {0x25979, 0x8575},
+       {0x2597A, 0x8555},
+       {0x2597B, 0x8567},
+       {0x2597C, 0x8560},
+       {0x2597D, 0x858C},
+       {0x2597E, 0x8566},
+       {0x25A21, 0x855D},
+       {0x25A22, 0x8554},
+       {0x25A23, 0x8565},
+       {0x25A24, 0x856C},
+       {0x25A25, 0x8663},
+       {0x25A26, 0x8665},
+       {0x25A27, 0x8664},
+       {0x25A28, 0x87A4},
+       {0x25A29, 0x879B},
+       {0x25A2A, 0x878F},
+       {0x25A2B, 0x8797},
+       {0x25A2C, 0x8793},
+       {0x25A2D, 0x8792},
+       {0x25A2E, 0x8788},
+       {0x25A2F, 0x8781},
+       {0x25A30, 0x8796},
+       {0x25A31, 0x8798},
+       {0x25A32, 0x8779},
+       {0x25A33, 0x8787},
+       {0x25A34, 0x87A3},
+       {0x25A35, 0x8785},
+       {0x25A36, 0x8790},
+       {0x25A37, 0x8791},
+       {0x25A38, 0x879D},
+       {0x25A39, 0x8784},
+       {0x25A3A, 0x8794},
+       {0x25A3B, 0x879C},
+       {0x25A3C, 0x879A},
+       {0x25A3D, 0x8789},
+       {0x25A3E, 0x891E},
+       {0x25A3F, 0x8926},
+       {0x25A40, 0x8930},
+       {0x25A41, 0x892D},
+       {0x25A42, 0x892E},
+       {0x25A43, 0x8927},
+       {0x25A44, 0x8931},
+       {0x25A45, 0x8922},
+       {0x25A46, 0x8929},
+       {0x25A47, 0x8923},
+       {0x25A48, 0x892F},
+       {0x25A49, 0x892C},
+       {0x25A4A, 0x891F},
+       {0x25A4B, 0x89F1},
+       {0x25A4C, 0x8AE0},
+       {0x25A4D, 0x8AE2},
+       {0x25A4E, 0x8AF2},
+       {0x25A4F, 0x8AF4},
+       {0x25A50, 0x8AF5},
+       {0x25A51, 0x8ADD},
+       {0x25A52, 0x8B14},
+       {0x25A53, 0x8AE4},
+       {0x25A54, 0x8ADF},
+       {0x25A55, 0x8AF0},
+       {0x25A56, 0x8AC8},
+       {0x25A57, 0x8ADE},
+       {0x25A58, 0x8AE1},
+       {0x25A59, 0x8AE8},
+       {0x25A5A, 0x8AFF},
+       {0x25A5B, 0x8AEF},
+       {0x25A5C, 0x8AFB},
+       {0x25A5D, 0x8C91},
+       {0x25A5E, 0x8C92},
+       {0x25A5F, 0x8C90},
+       {0x25A60, 0x8CF5},
+       {0x25A61, 0x8CEE},
+       {0x25A62, 0x8CF1},
+       {0x25A63, 0x8CF0},
+       {0x25A64, 0x8CF3},
+       {0x25A65, 0x8D6C},
+       {0x25A66, 0x8D6E},
+       {0x25A67, 0x8DA5},
+       {0x25A68, 0x8DA7},
+       {0x25A69, 0x8E33},
+       {0x25A6A, 0x8E3E},
+       {0x25A6B, 0x8E38},
+       {0x25A6C, 0x8E40},
+       {0x25A6D, 0x8E45},
+       {0x25A6E, 0x8E36},
+       {0x25A6F, 0x8E3C},
+       {0x25A70, 0x8E3D},
+       {0x25A71, 0x8E41},
+       {0x25A72, 0x8E30},
+       {0x25A73, 0x8E3F},
+       {0x25A74, 0x8EBD},
+       {0x25A75, 0x8F36},
+       {0x25A76, 0x8F2E},
+       {0x25A77, 0x8F35},
+       {0x25A78, 0x8F32},
+       {0x25A79, 0x8F39},
+       {0x25A7A, 0x8F37},
+       {0x25A7B, 0x8F34},
+       {0x25A7C, 0x9076},
+       {0x25A7D, 0x9079},
+       {0x25A7E, 0x907B},
+       {0x25B21, 0x9086},
+       {0x25B22, 0x90FA},
+       {0x25B23, 0x9133},
+       {0x25B24, 0x9135},
+       {0x25B25, 0x9136},
+       {0x25B26, 0x9193},
+       {0x25B27, 0x9190},
+       {0x25B28, 0x9191},
+       {0x25B29, 0x918D},
+       {0x25B2A, 0x918F},
+       {0x25B2B, 0x9327},
+       {0x25B2C, 0x931E},
+       {0x25B2D, 0x9308},
+       {0x25B2E, 0x931F},
+       {0x25B2F, 0x9306},
+       {0x25B30, 0x930F},
+       {0x25B31, 0x937A},
+       {0x25B32, 0x9338},
+       {0x25B33, 0x933C},
+       {0x25B34, 0x931B},
+       {0x25B35, 0x9323},
+       {0x25B36, 0x9312},
+       {0x25B37, 0x9301},
+       {0x25B38, 0x9346},
+       {0x25B39, 0x932D},
+       {0x25B3A, 0x930E},
+       {0x25B3B, 0x930D},
+       {0x25B3C, 0x92CB},
+       {0x25B3D, 0x931D},
+       {0x25B3E, 0x92FA},
+       {0x25B3F, 0x9313},
+       {0x25B40, 0x92F9},
+       {0x25B41, 0x92F7},
+       {0x25B42, 0x9334},
+       {0x25B43, 0x9302},
+       {0x25B44, 0x9324},
+       {0x25B45, 0x92FF},
+       {0x25B46, 0x9329},
+       {0x25B47, 0x9339},
+       {0x25B48, 0x9335},
+       {0x25B49, 0x932A},
+       {0x25B4A, 0x9314},
+       {0x25B4B, 0x930C},
+       {0x25B4C, 0x930B},
+       {0x25B4D, 0x92FE},
+       {0x25B4E, 0x9309},
+       {0x25B4F, 0x9300},
+       {0x25B50, 0x92FB},
+       {0x25B51, 0x9316},
+       {0x25B52, 0x95BC},
+       {0x25B53, 0x95CD},
+       {0x25B54, 0x95BE},
+       {0x25B55, 0x95B9},
+       {0x25B56, 0x95BA},
+       {0x25B57, 0x95B6},
+       {0x25B58, 0x95BF},
+       {0x25B59, 0x95B5},
+       {0x25B5A, 0x95BD},
+       {0x25B5B, 0x96A9},
+       {0x25B5C, 0x96D4},
+       {0x25B5D, 0x970B},
+       {0x25B5E, 0x9712},
+       {0x25B5F, 0x9710},
+       {0x25B60, 0x9799},
+       {0x25B61, 0x9797},
+       {0x25B62, 0x9794},
+       {0x25B63, 0x97F0},
+       {0x25B64, 0x97F8},
+       {0x25B65, 0x9835},
+       {0x25B66, 0x982F},
+       {0x25B67, 0x9832},
+       {0x25B68, 0x9924},
+       {0x25B69, 0x991F},
+       {0x25B6A, 0x9927},
+       {0x25B6B, 0x9929},
+       {0x25B6C, 0x999E},
+       {0x25B6D, 0x99EE},
+       {0x25B6E, 0x99EC},
+       {0x25B6F, 0x99E5},
+       {0x25B70, 0x99E4},
+       {0x25B71, 0x99F0},
+       {0x25B72, 0x99E3},
+       {0x25B73, 0x99EA},
+       {0x25B74, 0x99E9},
+       {0x25B75, 0x99E7},
+       {0x25B76, 0x9AB9},
+       {0x25B77, 0x9ABF},
+       {0x25B78, 0x9AB4},
+       {0x25B79, 0x9ABB},
+       {0x25B7A, 0x9AF6},
+       {0x25B7B, 0x9AFA},
+       {0x25B7C, 0x9AF9},
+       {0x25B7D, 0x9AF7},
+       {0x25B7E, 0x9B33},
+       {0x25C21, 0x9B80},
+       {0x25C22, 0x9B85},
+       {0x25C23, 0x9B87},
+       {0x25C24, 0x9B7C},
+       {0x25C25, 0x9B7E},
+       {0x25C26, 0x9B7B},
+       {0x25C27, 0x9B82},
+       {0x25C28, 0x9B93},
+       {0x25C29, 0x9B92},
+       {0x25C2A, 0x9B90},
+       {0x25C2B, 0x9B7A},
+       {0x25C2C, 0x9B95},
+       {0x25C2D, 0x9B7D},
+       {0x25C2E, 0x9B88},
+       {0x25C2F, 0x9D25},
+       {0x25C30, 0x9D17},
+       {0x25C31, 0x9D20},
+       {0x25C32, 0x9D1E},
+       {0x25C33, 0x9D14},
+       {0x25C34, 0x9D29},
+       {0x25C35, 0x9D1D},
+       {0x25C36, 0x9D18},
+       {0x25C37, 0x9D22},
+       {0x25C38, 0x9D10},
+       {0x25C39, 0x9D19},
+       {0x25C3A, 0x9D1F},
+       {0x25C3B, 0x9E88},
+       {0x25C3C, 0x9E86},
+       {0x25C3D, 0x9E87},
+       {0x25C3E, 0x9EAE},
+       {0x25C3F, 0x9EAD},
+       {0x25C40, 0x9ED5},
+       {0x25C41, 0x9ED6},
+       {0x25C42, 0x9EFA},
+       {0x25C43, 0x9F12},
+       {0x25C44, 0x9F3D},
+       {0x25C45, 0x5126},
+       {0x25C46, 0x5125},
+       {0x25C47, 0x5122},
+       {0x25C48, 0x5124},
+       {0x25C49, 0x5120},
+       {0x25C4A, 0x5129},
+       {0x25C4B, 0x52F4},
+       {0x25C4C, 0x5693},
+       {0x25C4D, 0x568C},
+       {0x25C4E, 0x568D},
+       {0x25C4F, 0x5686},
+       {0x25C50, 0x5684},
+       {0x25C51, 0x5683},
+       {0x25C52, 0x567E},
+       {0x25C53, 0x5682},
+       {0x25C54, 0x567F},
+       {0x25C55, 0x5681},
+       {0x25C56, 0x58D6},
+       {0x25C57, 0x58D4},
+       {0x25C58, 0x58CF},
+       {0x25C59, 0x58D2},
+       {0x25C5A, 0x5B2D},
+       {0x25C5B, 0x5B25},
+       {0x25C5C, 0x5B32},
+       {0x25C5D, 0x5B23},
+       {0x25C5E, 0x5B2C},
+       {0x25C5F, 0x5B27},
+       {0x25C60, 0x5B26},
+       {0x25C61, 0x5B2F},
+       {0x25C62, 0x5B2E},
+       {0x25C63, 0x5B7B},
+       {0x25C64, 0x5BF1},
+       {0x25C65, 0x5BF2},
+       {0x25C66, 0x5DB7},
+       {0x25C67, 0x5E6C},
+       {0x25C68, 0x5E6A},
+       {0x25C69, 0x5FBE},
+       {0x25C6A, 0x61C3},
+       {0x25C6B, 0x61B5},
+       {0x25C6C, 0x61BC},
+       {0x25C6D, 0x61E7},
+       {0x25C6E, 0x61E0},
+       {0x25C6F, 0x61E5},
+       {0x25C70, 0x61E4},
+       {0x25C71, 0x61E8},
+       {0x25C72, 0x61DE},
+       {0x25C73, 0x64EF},
+       {0x25C74, 0x64E9},
+       {0x25C75, 0x64E3},
+       {0x25C76, 0x64EB},
+       {0x25C77, 0x64E4},
+       {0x25C78, 0x64E8},
+       {0x25C79, 0x6581},
+       {0x25C7A, 0x6580},
+       {0x25C7B, 0x65B6},
+       {0x25C7C, 0x65DA},
+       {0x25C7D, 0x66D2},
+       {0x25C7E, 0x6A8D},
+       {0x25D21, 0x6A96},
+       {0x25D22, 0x6A81},
+       {0x25D23, 0x6AA5},
+       {0x25D24, 0x6A89},
+       {0x25D25, 0x6A9F},
+       {0x25D26, 0x6A9B},
+       {0x25D27, 0x6AA1},
+       {0x25D28, 0x6A9E},
+       {0x25D29, 0x6A87},
+       {0x25D2A, 0x6A93},
+       {0x25D2B, 0x6A8E},
+       {0x25D2C, 0x6A95},
+       {0x25D2D, 0x6A83},
+       {0x25D2E, 0x6AA8},
+       {0x25D2F, 0x6AA4},
+       {0x25D30, 0x6A91},
+       {0x25D31, 0x6A7F},
+       {0x25D32, 0x6AA6},
+       {0x25D33, 0x6A9A},
+       {0x25D34, 0x6A85},
+       {0x25D35, 0x6A8C},
+       {0x25D36, 0x6A92},
+       {0x25D37, 0x6B5B},
+       {0x25D38, 0x6BAD},
+       {0x25D39, 0x6C09},
+       {0x25D3A, 0x6FCC},
+       {0x25D3B, 0x6FA9},
+       {0x25D3C, 0x6FF4},
+       {0x25D3D, 0x6FD4},
+       {0x25D3E, 0x6FE3},
+       {0x25D3F, 0x6FDC},
+       {0x25D40, 0x6FED},
+       {0x25D41, 0x6FE7},
+       {0x25D42, 0x6FE6},
+       {0x25D43, 0x6FDE},
+       {0x25D44, 0x6FF2},
+       {0x25D45, 0x6FDD},
+       {0x25D46, 0x6FE2},
+       {0x25D47, 0x6FE8},
+       {0x25D48, 0x71E1},
+       {0x25D49, 0x71F1},
+       {0x25D4A, 0x71E8},
+       {0x25D4B, 0x71F2},
+       {0x25D4C, 0x71E4},
+       {0x25D4D, 0x71F0},
+       {0x25D4E, 0x71E2},
+       {0x25D4F, 0x7373},
+       {0x25D50, 0x736E},
+       {0x25D51, 0x736F},
+       {0x25D52, 0x7497},
+       {0x25D53, 0x74B2},
+       {0x25D54, 0x74AB},
+       {0x25D55, 0x7490},
+       {0x25D56, 0x74AA},
+       {0x25D57, 0x74AD},
+       {0x25D58, 0x74B1},
+       {0x25D59, 0x74A5},
+       {0x25D5A, 0x74AF},
+       {0x25D5B, 0x7510},
+       {0x25D5C, 0x7511},
+       {0x25D5D, 0x7512},
+       {0x25D5E, 0x750F},
+       {0x25D5F, 0x7584},
+       {0x25D60, 0x7643},
+       {0x25D61, 0x7648},
+       {0x25D62, 0x7649},
+       {0x25D63, 0x7647},
+       {0x25D64, 0x76A4},
+       {0x25D65, 0x76E9},
+       {0x25D66, 0x77B5},
+       {0x25D67, 0x77AB},
+       {0x25D68, 0x77B2},
+       {0x25D69, 0x77B7},
+       {0x25D6A, 0x77B6},
+       {0x25D6B, 0x77B4},
+       {0x25D6C, 0x77B1},
+       {0x25D6D, 0x77A8},
+       {0x25D6E, 0x77F0},
+       {0x25D6F, 0x78F3},
+       {0x25D70, 0x78FD},
+       {0x25D71, 0x7902},
+       {0x25D72, 0x78FB},
+       {0x25D73, 0x78FC},
+       {0x25D74, 0x78FF},
+       {0x25D75, 0x78F2},
+       {0x25D76, 0x7905},
+       {0x25D77, 0x78F9},
+       {0x25D78, 0x78FE},
+       {0x25D79, 0x7904},
+       {0x25D7A, 0x79AB},
+       {0x25D7B, 0x79A8},
+       {0x25D7C, 0x7A5C},
+       {0x25D7D, 0x7A5B},
+       {0x25D7E, 0x7A56},
+       {0x25E21, 0x7A58},
+       {0x25E22, 0x7A54},
+       {0x25E23, 0x7A5A},
+       {0x25E24, 0x7ABE},
+       {0x25E25, 0x7AC0},
+       {0x25E26, 0x7AC1},
+       {0x25E27, 0x7C05},
+       {0x25E28, 0x7C0F},
+       {0x25E29, 0x7BF2},
+       {0x25E2A, 0x7C00},
+       {0x25E2B, 0x7BFF},
+       {0x25E2C, 0x7BFB},
+       {0x25E2D, 0x7C0E},
+       {0x25E2E, 0x7BF4},
+       {0x25E2F, 0x7C0B},
+       {0x25E30, 0x7BF3},
+       {0x25E31, 0x7C02},
+       {0x25E32, 0x7C09},
+       {0x25E33, 0x7C03},
+       {0x25E34, 0x7C01},
+       {0x25E35, 0x7BF8},
+       {0x25E36, 0x7BFD},
+       {0x25E37, 0x7C06},
+       {0x25E38, 0x7BF0},
+       {0x25E39, 0x7BF1},
+       {0x25E3A, 0x7C10},
+       {0x25E3B, 0x7C0A},
+       {0x25E3C, 0x7CE8},
+       {0x25E3D, 0x7E2D},
+       {0x25E3E, 0x7E3C},
+       {0x25E3F, 0x7E42},
+       {0x25E40, 0x7E33},
+       {0x25E41, 0x9848},
+       {0x25E42, 0x7E38},
+       {0x25E43, 0x7E2A},
+       {0x25E44, 0x7E49},
+       {0x25E45, 0x7E40},
+       {0x25E46, 0x7E47},
+       {0x25E47, 0x7E29},
+       {0x25E48, 0x7E4C},
+       {0x25E49, 0x7E30},
+       {0x25E4A, 0x7E3B},
+       {0x25E4B, 0x7E36},
+       {0x25E4C, 0x7E44},
+       {0x25E4D, 0x7E3A},
+       {0x25E4E, 0x7F45},
+       {0x25E4F, 0x7F7F},
+       {0x25E50, 0x7F7E},
+       {0x25E51, 0x7F7D},
+       {0x25E52, 0x7FF4},
+       {0x25E53, 0x7FF2},
+       {0x25E54, 0x802C},
+       {0x25E55, 0x81BB},
+       {0x25E56, 0x81C4},
+       {0x25E57, 0x81CC},
+       {0x25E58, 0x81CA},
+       {0x25E59, 0x81C5},
+       {0x25E5A, 0x81C7},
+       {0x25E5B, 0x81BC},
+       {0x25E5C, 0x81E9},
+       {0x25E5D, 0x825B},
+       {0x25E5E, 0x825A},
+       {0x25E5F, 0x825C},
+       {0x25E60, 0x8583},
+       {0x25E61, 0x8580},
+       {0x25E62, 0x858F},
+       {0x25E63, 0x85A7},
+       {0x25E64, 0x8595},
+       {0x25E65, 0x85A0},
+       {0x25E66, 0x858B},
+       {0x25E67, 0x85A3},
+       {0x25E68, 0x857B},
+       {0x25E69, 0x85A4},
+       {0x25E6A, 0x859A},
+       {0x25E6B, 0x859E},
+       {0x25E6C, 0x8577},
+       {0x25E6D, 0x857C},
+       {0x25E6E, 0x8589},
+       {0x25E6F, 0x85A1},
+       {0x25E70, 0x857A},
+       {0x25E71, 0x8578},
+       {0x25E72, 0x8557},
+       {0x25E73, 0x858E},
+       {0x25E74, 0x8596},
+       {0x25E75, 0x8586},
+       {0x25E76, 0x858D},
+       {0x25E77, 0x8599},
+       {0x25E78, 0x859D},
+       {0x25E79, 0x8581},
+       {0x25E7A, 0x85A2},
+       {0x25E7B, 0x8582},
+       {0x25E7C, 0x8588},
+       {0x25E7D, 0x8585},
+       {0x25E7E, 0x8579},
+       {0x25F21, 0x8576},
+       {0x25F22, 0x8598},
+       {0x25F23, 0x8590},
+       {0x25F24, 0x859F},
+       {0x25F25, 0x8668},
+       {0x25F26, 0x87BE},
+       {0x25F27, 0x87AA},
+       {0x25F28, 0x87AD},
+       {0x25F29, 0x87C5},
+       {0x25F2A, 0x87B0},
+       {0x25F2B, 0x87AC},
+       {0x25F2C, 0x87B9},
+       {0x25F2D, 0x87B5},
+       {0x25F2E, 0x87BC},
+       {0x25F2F, 0x87AE},
+       {0x25F30, 0x87C9},
+       {0x25F31, 0x87C3},
+       {0x25F32, 0x87C2},
+       {0x25F33, 0x87CC},
+       {0x25F34, 0x87B7},
+       {0x25F35, 0x87AF},
+       {0x25F36, 0x87C4},
+       {0x25F37, 0x87CA},
+       {0x25F38, 0x87B4},
+       {0x25F39, 0x87B6},
+       {0x25F3A, 0x87BF},
+       {0x25F3B, 0x87B8},
+       {0x25F3C, 0x87BD},
+       {0x25F3D, 0x87DE},
+       {0x25F3E, 0x87B2},
+       {0x25F3F, 0x8935},
+       {0x25F40, 0x8933},
+       {0x25F41, 0x893C},
+       {0x25F42, 0x893E},
+       {0x25F43, 0x8941},
+       {0x25F44, 0x8952},
+       {0x25F45, 0x8937},
+       {0x25F46, 0x8942},
+       {0x25F47, 0x89AD},
+       {0x25F48, 0x89AF},
+       {0x25F49, 0x89AE},
+       {0x25F4A, 0x89F2},
+       {0x25F4B, 0x89F3},
+       {0x25F4C, 0x8B1E},
+       {0x25F4D, 0x8B18},
+       {0x25F4E, 0x8B16},
+       {0x25F4F, 0x8B11},
+       {0x25F50, 0x8B05},
+       {0x25F51, 0x8B0B},
+       {0x25F52, 0x8B22},
+       {0x25F53, 0x8B0F},
+       {0x25F54, 0x8B12},
+       {0x25F55, 0x8B15},
+       {0x25F56, 0x8B07},
+       {0x25F57, 0x8B0D},
+       {0x25F58, 0x8B08},
+       {0x25F59, 0x8B06},
+       {0x25F5A, 0x8B1C},
+       {0x25F5B, 0x8B13},
+       {0x25F5C, 0x8B1A},
+       {0x25F5D, 0x8C4F},
+       {0x25F5E, 0x8C70},
+       {0x25F5F, 0x8C72},
+       {0x25F60, 0x8C71},
+       {0x25F61, 0x8C6F},
+       {0x25F62, 0x8C95},
+       {0x25F63, 0x8C94},
+       {0x25F64, 0x8CF9},
+       {0x25F65, 0x8D6F},
+       {0x25F66, 0x8E4E},
+       {0x25F67, 0x8E4D},
+       {0x25F68, 0x8E53},
+       {0x25F69, 0x8E50},
+       {0x25F6A, 0x8E4C},
+       {0x25F6B, 0x8E47},
+       {0x25F6C, 0x8F43},
+       {0x25F6D, 0x8F40},
+       {0x25F6E, 0x9085},
+       {0x25F6F, 0x907E},
+       {0x25F70, 0x9138},
+       {0x25F71, 0x919A},
+       {0x25F72, 0x91A2},
+       {0x25F73, 0x919B},
+       {0x25F74, 0x9199},
+       {0x25F75, 0x919F},
+       {0x25F76, 0x91A1},
+       {0x25F77, 0x919D},
+       {0x25F78, 0x91A0},
+       {0x25F79, 0x93A1},
+       {0x25F7A, 0x9383},
+       {0x25F7B, 0x93AF},
+       {0x25F7C, 0x9364},
+       {0x25F7D, 0x9356},
+       {0x25F7E, 0x9347},
+       {0x26021, 0x937C},
+       {0x26022, 0x9358},
+       {0x26023, 0x935C},
+       {0x26024, 0x9376},
+       {0x26025, 0x9349},
+       {0x26026, 0x9350},
+       {0x26027, 0x9351},
+       {0x26028, 0x9360},
+       {0x26029, 0x936D},
+       {0x2602A, 0x938F},
+       {0x2602B, 0x934C},
+       {0x2602C, 0x936A},
+       {0x2602D, 0x9379},
+       {0x2602E, 0x9357},
+       {0x2602F, 0x9355},
+       {0x26030, 0x9352},
+       {0x26031, 0x934F},
+       {0x26032, 0x9371},
+       {0x26033, 0x9377},
+       {0x26034, 0x937B},
+       {0x26035, 0x9361},
+       {0x26036, 0x935E},
+       {0x26037, 0x9363},
+       {0x26038, 0x9367},
+       {0x26039, 0x934E},
+       {0x2603A, 0x9359},
+       {0x2603B, 0x95C7},
+       {0x2603C, 0x95C0},
+       {0x2603D, 0x95C9},
+       {0x2603E, 0x95C3},
+       {0x2603F, 0x95C5},
+       {0x26040, 0x95B7},
+       {0x26041, 0x96AE},
+       {0x26042, 0x96B0},
+       {0x26043, 0x96AC},
+       {0x26044, 0x9720},
+       {0x26045, 0x971F},
+       {0x26046, 0x9718},
+       {0x26047, 0x971D},
+       {0x26048, 0x9719},
+       {0x26049, 0x979A},
+       {0x2604A, 0x97A1},
+       {0x2604B, 0x979C},
+       {0x2604C, 0x979E},
+       {0x2604D, 0x979D},
+       {0x2604E, 0x97D5},
+       {0x2604F, 0x97D4},
+       {0x26050, 0x97F1},
+       {0x26051, 0x9841},
+       {0x26052, 0x9844},
+       {0x26053, 0x984A},
+       {0x26054, 0x9849},
+       {0x26055, 0x9845},
+       {0x26056, 0x9843},
+       {0x26057, 0x9925},
+       {0x26058, 0x992B},
+       {0x26059, 0x992C},
+       {0x2605A, 0x992A},
+       {0x2605B, 0x9933},
+       {0x2605C, 0x9932},
+       {0x2605D, 0x992F},
+       {0x2605E, 0x992D},
+       {0x2605F, 0x9931},
+       {0x26060, 0x9930},
+       {0x26061, 0x9998},
+       {0x26062, 0x99A3},
+       {0x26063, 0x99A1},
+       {0x26064, 0x9A02},
+       {0x26065, 0x99FA},
+       {0x26066, 0x99F4},
+       {0x26067, 0x99F7},
+       {0x26068, 0x99F9},
+       {0x26069, 0x99F8},
+       {0x2606A, 0x99F6},
+       {0x2606B, 0x99FB},
+       {0x2606C, 0x99FD},
+       {0x2606D, 0x99FE},
+       {0x2606E, 0x99FC},
+       {0x2606F, 0x9A03},
+       {0x26070, 0x9ABE},
+       {0x26071, 0x9AFE},
+       {0x26072, 0x9AFD},
+       {0x26073, 0x9B01},
+       {0x26074, 0x9AFC},
+       {0x26075, 0x9B48},
+       {0x26076, 0x9B9A},
+       {0x26077, 0x9BA8},
+       {0x26078, 0x9B9E},
+       {0x26079, 0x9B9B},
+       {0x2607A, 0x9BA6},
+       {0x2607B, 0x9BA1},
+       {0x2607C, 0x9BA5},
+       {0x2607D, 0x9BA4},
+       {0x2607E, 0x9B86},
+       {0x26121, 0x9BA2},
+       {0x26122, 0x9BA0},
+       {0x26123, 0x9BAF},
+       {0x26124, 0x9D33},
+       {0x26125, 0x9D41},
+       {0x26126, 0x9D67},
+       {0x26127, 0x9D36},
+       {0x26128, 0x9D2E},
+       {0x26129, 0x9D2F},
+       {0x2612A, 0x9D31},
+       {0x2612B, 0x9D38},
+       {0x2612C, 0x9D30},
+       {0x2612D, 0x9D45},
+       {0x2612E, 0x9D42},
+       {0x2612F, 0x9D43},
+       {0x26130, 0x9D3E},
+       {0x26131, 0x9D37},
+       {0x26132, 0x9D40},
+       {0x26133, 0x9D3D},
+       {0x26134, 0x7FF5},
+       {0x26135, 0x9D2D},
+       {0x26136, 0x9E8A},
+       {0x26137, 0x9E89},
+       {0x26138, 0x9E8D},
+       {0x26139, 0x9EB0},
+       {0x2613A, 0x9EC8},
+       {0x2613B, 0x9EDA},
+       {0x2613C, 0x9EFB},
+       {0x2613D, 0x9EFF},
+       {0x2613E, 0x9F24},
+       {0x2613F, 0x9F23},
+       {0x26140, 0x9F22},
+       {0x26141, 0x9F54},
+       {0x26142, 0x9FA0},
+       {0x26143, 0x5131},
+       {0x26144, 0x512D},
+       {0x26145, 0x512E},
+       {0x26146, 0x5698},
+       {0x26147, 0x569C},
+       {0x26148, 0x5697},
+       {0x26149, 0x569A},
+       {0x2614A, 0x569D},
+       {0x2614B, 0x5699},
+       {0x2614C, 0x5970},
+       {0x2614D, 0x5B3C},
+       {0x2614E, 0x5C69},
+       {0x2614F, 0x5C6A},
+       {0x26150, 0x5DC0},
+       {0x26151, 0x5E6D},
+       {0x26152, 0x5E6E},
+       {0x26153, 0x61D8},
+       {0x26154, 0x61DF},
+       {0x26155, 0x61ED},
+       {0x26156, 0x61EE},
+       {0x26157, 0x61F1},
+       {0x26158, 0x61EA},
+       {0x26159, 0x61F0},
+       {0x2615A, 0x61EB},
+       {0x2615B, 0x61D6},
+       {0x2615C, 0x61E9},
+       {0x2615D, 0x64FF},
+       {0x2615E, 0x6504},
+       {0x2615F, 0x64FD},
+       {0x26160, 0x64F8},
+       {0x26161, 0x6501},
+       {0x26162, 0x6503},
+       {0x26163, 0x64FC},
+       {0x26164, 0x6594},
+       {0x26165, 0x65DB},
+       {0x26166, 0x66DA},
+       {0x26167, 0x66DB},
+       {0x26168, 0x66D8},
+       {0x26169, 0x6AC5},
+       {0x2616A, 0x6AB9},
+       {0x2616B, 0x6ABD},
+       {0x2616C, 0x6AE1},
+       {0x2616D, 0x6AC6},
+       {0x2616E, 0x6ABA},
+       {0x2616F, 0x6AB6},
+       {0x26170, 0x6AB7},
+       {0x26171, 0x6AC7},
+       {0x26172, 0x6AB4},
+       {0x26173, 0x6AAD},
+       {0x26174, 0x6B5E},
+       {0x26175, 0x6BC9},
+       {0x26176, 0x6C0B},
+       {0x26177, 0x7007},
+       {0x26178, 0x700C},
+       {0x26179, 0x700D},
+       {0x2617A, 0x7001},
+       {0x2617B, 0x7005},
+       {0x2617C, 0x7014},
+       {0x2617D, 0x700E},
+       {0x2617E, 0x6FFF},
+       {0x26221, 0x7000},
+       {0x26222, 0x6FFB},
+       {0x26223, 0x7026},
+       {0x26224, 0x6FFC},
+       {0x26225, 0x6FF7},
+       {0x26226, 0x700A},
+       {0x26227, 0x7201},
+       {0x26228, 0x71FF},
+       {0x26229, 0x71F9},
+       {0x2622A, 0x7203},
+       {0x2622B, 0x71FD},
+       {0x2622C, 0x7376},
+       {0x2622D, 0x74B8},
+       {0x2622E, 0x74C0},
+       {0x2622F, 0x74B5},
+       {0x26230, 0x74C1},
+       {0x26231, 0x74BE},
+       {0x26232, 0x74B6},
+       {0x26233, 0x74BB},
+       {0x26234, 0x74C2},
+       {0x26235, 0x7514},
+       {0x26236, 0x7513},
+       {0x26237, 0x765C},
+       {0x26238, 0x7664},
+       {0x26239, 0x7659},
+       {0x2623A, 0x7650},
+       {0x2623B, 0x7653},
+       {0x2623C, 0x7657},
+       {0x2623D, 0x765A},
+       {0x2623E, 0x76A6},
+       {0x2623F, 0x76BD},
+       {0x26240, 0x76EC},
+       {0x26241, 0x77C2},
+       {0x26242, 0x77BA},
+       {0x26243, 0x790C},
+       {0x26244, 0x7913},
+       {0x26245, 0x7914},
+       {0x26246, 0x7909},
+       {0x26247, 0x7910},
+       {0x26248, 0x7912},
+       {0x26249, 0x7911},
+       {0x2624A, 0x79AD},
+       {0x2624B, 0x79AC},
+       {0x2624C, 0x7A5F},
+       {0x2624D, 0x7C1C},
+       {0x2624E, 0x7C29},
+       {0x2624F, 0x7C19},
+       {0x26250, 0x7C20},
+       {0x26251, 0x7C1F},
+       {0x26252, 0x7C2D},
+       {0x26253, 0x7C1D},
+       {0x26254, 0x7C26},
+       {0x26255, 0x7C28},
+       {0x26256, 0x7C22},
+       {0x26257, 0x7C25},
+       {0x26258, 0x7C30},
+       {0x26259, 0x7E5C},
+       {0x2625A, 0x7E50},
+       {0x2625B, 0x7E56},
+       {0x2625C, 0x7E63},
+       {0x2625D, 0x7E58},
+       {0x2625E, 0x7E62},
+       {0x2625F, 0x7E5F},
+       {0x26260, 0x7E51},
+       {0x26261, 0x7E60},
+       {0x26262, 0x7E57},
+       {0x26263, 0x7E53},
+       {0x26264, 0x7FB5},
+       {0x26265, 0x7FB3},
+       {0x26266, 0x7FF7},
+       {0x26267, 0x7FF8},
+       {0x26268, 0x8075},
+       {0x26269, 0x81D1},
+       {0x2626A, 0x81D2},
+       {0x2626B, 0x81D0},
+       {0x2626C, 0x825F},
+       {0x2626D, 0x825E},
+       {0x2626E, 0x85B4},
+       {0x2626F, 0x85C6},
+       {0x26270, 0x85C0},
+       {0x26271, 0x85C3},
+       {0x26272, 0x85C2},
+       {0x26273, 0x85B3},
+       {0x26274, 0x85B5},
+       {0x26275, 0x85BD},
+       {0x26276, 0x85C7},
+       {0x26277, 0x85C4},
+       {0x26278, 0x85BF},
+       {0x26279, 0x85CB},
+       {0x2627A, 0x85CE},
+       {0x2627B, 0x85C8},
+       {0x2627C, 0x85C5},
+       {0x2627D, 0x85B1},
+       {0x2627E, 0x85B6},
+       {0x26321, 0x85D2},
+       {0x26322, 0x8624},
+       {0x26323, 0x85B8},
+       {0x26324, 0x85B7},
+       {0x26325, 0x85BE},
+       {0x26326, 0x8669},
+       {0x26327, 0x87E7},
+       {0x26328, 0x87E6},
+       {0x26329, 0x87E2},
+       {0x2632A, 0x87DB},
+       {0x2632B, 0x87EB},
+       {0x2632C, 0x87EA},
+       {0x2632D, 0x87E5},
+       {0x2632E, 0x87DF},
+       {0x2632F, 0x87F3},
+       {0x26330, 0x87E4},
+       {0x26331, 0x87D4},
+       {0x26332, 0x87DC},
+       {0x26333, 0x87D3},
+       {0x26334, 0x87ED},
+       {0x26335, 0x87D8},
+       {0x26336, 0x87E3},
+       {0x26337, 0x87D7},
+       {0x26338, 0x87D9},
+       {0x26339, 0x8801},
+       {0x2633A, 0x87F4},
+       {0x2633B, 0x87E8},
+       {0x2633C, 0x87DD},
+       {0x2633D, 0x8953},
+       {0x2633E, 0x894B},
+       {0x2633F, 0x894F},
+       {0x26340, 0x894C},
+       {0x26341, 0x8946},
+       {0x26342, 0x8950},
+       {0x26343, 0x8951},
+       {0x26344, 0x8949},
+       {0x26345, 0x8B2A},
+       {0x26346, 0x8B27},
+       {0x26347, 0x8B23},
+       {0x26348, 0x8B33},
+       {0x26349, 0x8B30},
+       {0x2634A, 0x8B35},
+       {0x2634B, 0x8B47},
+       {0x2634C, 0x8B2F},
+       {0x2634D, 0x8B3C},
+       {0x2634E, 0x8B3E},
+       {0x2634F, 0x8B31},
+       {0x26350, 0x8B25},
+       {0x26351, 0x8B37},
+       {0x26352, 0x8B26},
+       {0x26353, 0x8B36},
+       {0x26354, 0x8B2E},
+       {0x26355, 0x8B24},
+       {0x26356, 0x8B3B},
+       {0x26357, 0x8B3D},
+       {0x26358, 0x8B3A},
+       {0x26359, 0x8C42},
+       {0x2635A, 0x8C75},
+       {0x2635B, 0x8C99},
+       {0x2635C, 0x8C98},
+       {0x2635D, 0x8C97},
+       {0x2635E, 0x8CFE},
+       {0x2635F, 0x8D04},
+       {0x26360, 0x8D02},
+       {0x26361, 0x8D00},
+       {0x26362, 0x8E5C},
+       {0x26363, 0x8E62},
+       {0x26364, 0x8E60},
+       {0x26365, 0x8E57},
+       {0x26366, 0x8E56},
+       {0x26367, 0x8E5E},
+       {0x26368, 0x8E65},
+       {0x26369, 0x8E67},
+       {0x2636A, 0x8E5B},
+       {0x2636B, 0x8E5A},
+       {0x2636C, 0x8E61},
+       {0x2636D, 0x8E5D},
+       {0x2636E, 0x8E69},
+       {0x2636F, 0x8E54},
+       {0x26370, 0x8F46},
+       {0x26371, 0x8F47},
+       {0x26372, 0x8F48},
+       {0x26373, 0x8F4B},
+       {0x26374, 0x9128},
+       {0x26375, 0x913A},
+       {0x26376, 0x913B},
+       {0x26377, 0x913E},
+       {0x26378, 0x91A8},
+       {0x26379, 0x91A5},
+       {0x2637A, 0x91A7},
+       {0x2637B, 0x91AF},
+       {0x2637C, 0x91AA},
+       {0x2637D, 0x93B5},
+       {0x2637E, 0x938C},
+       {0x26421, 0x9392},
+       {0x26422, 0x93B7},
+       {0x26423, 0x939B},
+       {0x26424, 0x939D},
+       {0x26425, 0x9389},
+       {0x26426, 0x93A7},
+       {0x26427, 0x938E},
+       {0x26428, 0x93AA},
+       {0x26429, 0x939E},
+       {0x2642A, 0x93A6},
+       {0x2642B, 0x9395},
+       {0x2642C, 0x9388},
+       {0x2642D, 0x9399},
+       {0x2642E, 0x939F},
+       {0x2642F, 0x9380},
+       {0x26430, 0x938D},
+       {0x26431, 0x93B1},
+       {0x26432, 0x9391},
+       {0x26433, 0x93B2},
+       {0x26434, 0x93A4},
+       {0x26435, 0x93A8},
+       {0x26436, 0x93B4},
+       {0x26437, 0x93A3},
+       {0x26438, 0x95D2},
+       {0x26439, 0x95D3},
+       {0x2643A, 0x95D1},
+       {0x2643B, 0x96B3},
+       {0x2643C, 0x96D7},
+       {0x2643D, 0x96DA},
+       {0x2643E, 0x5DC2},
+       {0x2643F, 0x96DF},
+       {0x26440, 0x96D8},
+       {0x26441, 0x96DD},
+       {0x26442, 0x9723},
+       {0x26443, 0x9722},
+       {0x26444, 0x9725},
+       {0x26445, 0x97AC},
+       {0x26446, 0x97AE},
+       {0x26447, 0x97A8},
+       {0x26448, 0x97AB},
+       {0x26449, 0x97A4},
+       {0x2644A, 0x97AA},
+       {0x2644B, 0x97A2},
+       {0x2644C, 0x97A5},
+       {0x2644D, 0x97D7},
+       {0x2644E, 0x97D9},
+       {0x2644F, 0x97D6},
+       {0x26450, 0x97D8},
+       {0x26451, 0x97FA},
+       {0x26452, 0x9850},
+       {0x26453, 0x9851},
+       {0x26454, 0x9852},
+       {0x26455, 0x98B8},
+       {0x26456, 0x9941},
+       {0x26457, 0x993C},
+       {0x26458, 0x993A},
+       {0x26459, 0x9A0F},
+       {0x2645A, 0x9A0B},
+       {0x2645B, 0x9A09},
+       {0x2645C, 0x9A0D},
+       {0x2645D, 0x9A04},
+       {0x2645E, 0x9A11},
+       {0x2645F, 0x9A0A},
+       {0x26460, 0x9A05},
+       {0x26461, 0x9A07},
+       {0x26462, 0x9A06},
+       {0x26463, 0x9AC0},
+       {0x26464, 0x9ADC},
+       {0x26465, 0x9B08},
+       {0x26466, 0x9B04},
+       {0x26467, 0x9B05},
+       {0x26468, 0x9B29},
+       {0x26469, 0x9B35},
+       {0x2646A, 0x9B4A},
+       {0x2646B, 0x9B4C},
+       {0x2646C, 0x9B4B},
+       {0x2646D, 0x9BC7},
+       {0x2646E, 0x9BC6},
+       {0x2646F, 0x9BC3},
+       {0x26470, 0x9BBF},
+       {0x26471, 0x9BC1},
+       {0x26472, 0x9BB5},
+       {0x26473, 0x9BB8},
+       {0x26474, 0x9BD3},
+       {0x26475, 0x9BB6},
+       {0x26476, 0x9BC4},
+       {0x26477, 0x9BB9},
+       {0x26478, 0x9BBD},
+       {0x26479, 0x9D5C},
+       {0x2647A, 0x9D53},
+       {0x2647B, 0x9D4F},
+       {0x2647C, 0x9D4A},
+       {0x2647D, 0x9D5B},
+       {0x2647E, 0x9D4B},
+       {0x26521, 0x9D59},
+       {0x26522, 0x9D56},
+       {0x26523, 0x9D4C},
+       {0x26524, 0x9D57},
+       {0x26525, 0x9D52},
+       {0x26526, 0x9D54},
+       {0x26527, 0x9D5F},
+       {0x26528, 0x9D58},
+       {0x26529, 0x9D5A},
+       {0x2652A, 0x9E8E},
+       {0x2652B, 0x9E8C},
+       {0x2652C, 0x9EDF},
+       {0x2652D, 0x9F01},
+       {0x2652E, 0x9F00},
+       {0x2652F, 0x9F16},
+       {0x26530, 0x9F25},
+       {0x26531, 0x9F2B},
+       {0x26532, 0x9F2A},
+       {0x26533, 0x9F29},
+       {0x26534, 0x9F28},
+       {0x26535, 0x9F4C},
+       {0x26536, 0x9F55},
+       {0x26537, 0x5134},
+       {0x26538, 0x5135},
+       {0x26539, 0x5296},
+       {0x2653A, 0x52F7},
+       {0x2653B, 0x53B4},
+       {0x2653C, 0x56AB},
+       {0x2653D, 0x56AD},
+       {0x2653E, 0x56A6},
+       {0x2653F, 0x56A7},
+       {0x26540, 0x56AA},
+       {0x26541, 0x56AC},
+       {0x26542, 0x58DA},
+       {0x26543, 0x58DD},
+       {0x26544, 0x58DB},
+       {0x26545, 0x5912},
+       {0x26546, 0x5B3D},
+       {0x26547, 0x5B3E},
+       {0x26548, 0x5B3F},
+       {0x26549, 0x5DC3},
+       {0x2654A, 0x5E70},
+       {0x2654B, 0x5FBF},
+       {0x2654C, 0x61FB},
+       {0x2654D, 0x6507},
+       {0x2654E, 0x6510},
+       {0x2654F, 0x650D},
+       {0x26550, 0x6509},
+       {0x26551, 0x650C},
+       {0x26552, 0x650E},
+       {0x26553, 0x6584},
+       {0x26554, 0x65DE},
+       {0x26555, 0x65DD},
+       {0x26556, 0x66DE},
+       {0x26557, 0x6AE7},
+       {0x26558, 0x6AE0},
+       {0x26559, 0x6ACC},
+       {0x2655A, 0x6AD1},
+       {0x2655B, 0x6AD9},
+       {0x2655C, 0x6ACB},
+       {0x2655D, 0x6ADF},
+       {0x2655E, 0x6ADC},
+       {0x2655F, 0x6AD0},
+       {0x26560, 0x6AEB},
+       {0x26561, 0x6ACF},
+       {0x26562, 0x6ACD},
+       {0x26563, 0x6ADE},
+       {0x26564, 0x6B60},
+       {0x26565, 0x6BB0},
+       {0x26566, 0x6C0C},
+       {0x26567, 0x7019},
+       {0x26568, 0x7027},
+       {0x26569, 0x7020},
+       {0x2656A, 0x7016},
+       {0x2656B, 0x702B},
+       {0x2656C, 0x7021},
+       {0x2656D, 0x7022},
+       {0x2656E, 0x7023},
+       {0x2656F, 0x7029},
+       {0x26570, 0x7017},
+       {0x26571, 0x7024},
+       {0x26572, 0x701C},
+       {0x26573, 0x720C},
+       {0x26574, 0x720A},
+       {0x26575, 0x7207},
+       {0x26576, 0x7202},
+       {0x26577, 0x7205},
+       {0x26578, 0x72A5},
+       {0x26579, 0x72A6},
+       {0x2657A, 0x72A4},
+       {0x2657B, 0x72A3},
+       {0x2657C, 0x72A1},
+       {0x2657D, 0x74CB},
+       {0x2657E, 0x74C5},
+       {0x26621, 0x74B7},
+       {0x26622, 0x74C3},
+       {0x26623, 0x7516},
+       {0x26624, 0x7660},
+       {0x26625, 0x77C9},
+       {0x26626, 0x77CA},
+       {0x26627, 0x77C4},
+       {0x26628, 0x77F1},
+       {0x26629, 0x791D},
+       {0x2662A, 0x791B},
+       {0x2662B, 0x7921},
+       {0x2662C, 0x791C},
+       {0x2662D, 0x7917},
+       {0x2662E, 0x791E},
+       {0x2662F, 0x79B0},
+       {0x26630, 0x7A67},
+       {0x26631, 0x7A68},
+       {0x26632, 0x7C33},
+       {0x26633, 0x7C3C},
+       {0x26634, 0x7C39},
+       {0x26635, 0x7C2C},
+       {0x26636, 0x7C3B},
+       {0x26637, 0x7CEC},
+       {0x26638, 0x7CEA},
+       {0x26639, 0x7E76},
+       {0x2663A, 0x7E75},
+       {0x2663B, 0x7E78},
+       {0x2663C, 0x7E70},
+       {0x2663D, 0x7E77},
+       {0x2663E, 0x7E6F},
+       {0x2663F, 0x7E7A},
+       {0x26640, 0x7E72},
+       {0x26641, 0x7E74},
+       {0x26642, 0x7E68},
+       {0x26643, 0x7F4B},
+       {0x26644, 0x7F4A},
+       {0x26645, 0x7F83},
+       {0x26646, 0x7F86},
+       {0x26647, 0x7FB7},
+       {0x26648, 0x7FFD},
+       {0x26649, 0x7FFE},
+       {0x2664A, 0x8078},
+       {0x2664B, 0x81D7},
+       {0x2664C, 0x81D5},
+       {0x2664D, 0x820B},
+       {0x2664E, 0x8264},
+       {0x2664F, 0x8261},
+       {0x26650, 0x8263},
+       {0x26651, 0x85EB},
+       {0x26652, 0x85F1},
+       {0x26653, 0x85ED},
+       {0x26654, 0x85D9},
+       {0x26655, 0x85E1},
+       {0x26656, 0x85E8},
+       {0x26657, 0x85DA},
+       {0x26658, 0x85D7},
+       {0x26659, 0x85EC},
+       {0x2665A, 0x85F2},
+       {0x2665B, 0x85F8},
+       {0x2665C, 0x85D8},
+       {0x2665D, 0x85DF},
+       {0x2665E, 0x85E3},
+       {0x2665F, 0x85DC},
+       {0x26660, 0x85D1},
+       {0x26661, 0x85F0},
+       {0x26662, 0x85E6},
+       {0x26663, 0x85EF},
+       {0x26664, 0x85DE},
+       {0x26665, 0x85E2},
+       {0x26666, 0x8800},
+       {0x26667, 0x87FA},
+       {0x26668, 0x8803},
+       {0x26669, 0x87F6},
+       {0x2666A, 0x87F7},
+       {0x2666B, 0x8809},
+       {0x2666C, 0x880C},
+       {0x2666D, 0x880B},
+       {0x2666E, 0x8806},
+       {0x2666F, 0x87FC},
+       {0x26670, 0x8808},
+       {0x26671, 0x87FF},
+       {0x26672, 0x880A},
+       {0x26673, 0x8802},
+       {0x26674, 0x8962},
+       {0x26675, 0x895A},
+       {0x26676, 0x895B},
+       {0x26677, 0x8957},
+       {0x26678, 0x8961},
+       {0x26679, 0x895C},
+       {0x2667A, 0x8958},
+       {0x2667B, 0x895D},
+       {0x2667C, 0x8959},
+       {0x2667D, 0x8988},
+       {0x2667E, 0x89B7},
+       {0x26721, 0x89B6},
+       {0x26722, 0x89F6},
+       {0x26723, 0x8B50},
+       {0x26724, 0x8B48},
+       {0x26725, 0x8B4A},
+       {0x26726, 0x8B40},
+       {0x26727, 0x8B53},
+       {0x26728, 0x8B56},
+       {0x26729, 0x8B54},
+       {0x2672A, 0x8B4B},
+       {0x2672B, 0x8B55},
+       {0x2672C, 0x8B51},
+       {0x2672D, 0x8B42},
+       {0x2672E, 0x8B52},
+       {0x2672F, 0x8B57},
+       {0x26730, 0x8C43},
+       {0x26731, 0x8C77},
+       {0x26732, 0x8C76},
+       {0x26733, 0x8C9A},
+       {0x26734, 0x8D06},
+       {0x26735, 0x8D07},
+       {0x26736, 0x8D09},
+       {0x26737, 0x8DAC},
+       {0x26738, 0x8DAA},
+       {0x26739, 0x8DAD},
+       {0x2673A, 0x8DAB},
+       {0x2673B, 0x8E6D},
+       {0x2673C, 0x8E78},
+       {0x2673D, 0x8E73},
+       {0x2673E, 0x8E6A},
+       {0x2673F, 0x8E6F},
+       {0x26740, 0x8E7B},
+       {0x26741, 0x8EC2},
+       {0x26742, 0x8F52},
+       {0x26743, 0x8F51},
+       {0x26744, 0x8F4F},
+       {0x26745, 0x8F50},
+       {0x26746, 0x8F53},
+       {0x26747, 0x8FB4},
+       {0x26748, 0x9140},
+       {0x26749, 0x913F},
+       {0x2674A, 0x91B0},
+       {0x2674B, 0x91AD},
+       {0x2674C, 0x93DE},
+       {0x2674D, 0x93C7},
+       {0x2674E, 0x93CF},
+       {0x2674F, 0x93C2},
+       {0x26750, 0x93DA},
+       {0x26751, 0x93D0},
+       {0x26752, 0x93F9},
+       {0x26753, 0x93EC},
+       {0x26754, 0x93CC},
+       {0x26755, 0x93D9},
+       {0x26756, 0x93A9},
+       {0x26757, 0x93E6},
+       {0x26758, 0x93CA},
+       {0x26759, 0x93D4},
+       {0x2675A, 0x93EE},
+       {0x2675B, 0x93E3},
+       {0x2675C, 0x93D5},
+       {0x2675D, 0x93C4},
+       {0x2675E, 0x93CE},
+       {0x2675F, 0x93C0},
+       {0x26760, 0x93D2},
+       {0x26761, 0x93A5},
+       {0x26762, 0x93E7},
+       {0x26763, 0x957D},
+       {0x26764, 0x95DA},
+       {0x26765, 0x95DB},
+       {0x26766, 0x96E1},
+       {0x26767, 0x9729},
+       {0x26768, 0x972B},
+       {0x26769, 0x972C},
+       {0x2676A, 0x9728},
+       {0x2676B, 0x9726},
+       {0x2676C, 0x97B3},
+       {0x2676D, 0x97B7},
+       {0x2676E, 0x97B6},
+       {0x2676F, 0x97DD},
+       {0x26770, 0x97DE},
+       {0x26771, 0x97DF},
+       {0x26772, 0x985C},
+       {0x26773, 0x9859},
+       {0x26774, 0x985D},
+       {0x26775, 0x9857},
+       {0x26776, 0x98BF},
+       {0x26777, 0x98BD},
+       {0x26778, 0x98BB},
+       {0x26779, 0x98BE},
+       {0x2677A, 0x9948},
+       {0x2677B, 0x9947},
+       {0x2677C, 0x9943},
+       {0x2677D, 0x99A6},
+       {0x2677E, 0x99A7},
+       {0x26821, 0x9A1A},
+       {0x26822, 0x9A15},
+       {0x26823, 0x9A25},
+       {0x26824, 0x9A1D},
+       {0x26825, 0x9A24},
+       {0x26826, 0x9A1B},
+       {0x26827, 0x9A22},
+       {0x26828, 0x9A20},
+       {0x26829, 0x9A27},
+       {0x2682A, 0x9A23},
+       {0x2682B, 0x9A1E},
+       {0x2682C, 0x9A1C},
+       {0x2682D, 0x9A14},
+       {0x2682E, 0x9AC2},
+       {0x2682F, 0x9B0B},
+       {0x26830, 0x9B0A},
+       {0x26831, 0x9B0E},
+       {0x26832, 0x9B0C},
+       {0x26833, 0x9B37},
+       {0x26834, 0x9BEA},
+       {0x26835, 0x9BEB},
+       {0x26836, 0x9BE0},
+       {0x26837, 0x9BDE},
+       {0x26838, 0x9BE4},
+       {0x26839, 0x9BE6},
+       {0x2683A, 0x9BE2},
+       {0x2683B, 0x9BF0},
+       {0x2683C, 0x9BD4},
+       {0x2683D, 0x9BD7},
+       {0x2683E, 0x9BEC},
+       {0x2683F, 0x9BDC},
+       {0x26840, 0x9BD9},
+       {0x26841, 0x9BE5},
+       {0x26842, 0x9BD5},
+       {0x26843, 0x9BE1},
+       {0x26844, 0x9BDA},
+       {0x26845, 0x9D77},
+       {0x26846, 0x9D81},
+       {0x26847, 0x9D8A},
+       {0x26848, 0x9D84},
+       {0x26849, 0x9D88},
+       {0x2684A, 0x9D71},
+       {0x2684B, 0x9D80},
+       {0x2684C, 0x9D78},
+       {0x2684D, 0x9D86},
+       {0x2684E, 0x9D8B},
+       {0x2684F, 0x9D8C},
+       {0x26850, 0x9D7D},
+       {0x26851, 0x9D6B},
+       {0x26852, 0x9D74},
+       {0x26853, 0x9D75},
+       {0x26854, 0x9D70},
+       {0x26855, 0x9D69},
+       {0x26856, 0x9D85},
+       {0x26857, 0x9D73},
+       {0x26858, 0x9D7B},
+       {0x26859, 0x9D82},
+       {0x2685A, 0x9D6F},
+       {0x2685B, 0x9D79},
+       {0x2685C, 0x9D7F},
+       {0x2685D, 0x9D87},
+       {0x2685E, 0x9D68},
+       {0x2685F, 0x9E94},
+       {0x26860, 0x9E91},
+       {0x26861, 0x9EC0},
+       {0x26862, 0x9EFC},
+       {0x26863, 0x9F2D},
+       {0x26864, 0x9F40},
+       {0x26865, 0x9F41},
+       {0x26866, 0x9F4D},
+       {0x26867, 0x9F56},
+       {0x26868, 0x9F57},
+       {0x26869, 0x9F58},
+       {0x2686A, 0x5337},
+       {0x2686B, 0x56B2},
+       {0x2686C, 0x56B5},
+       {0x2686D, 0x56B3},
+       {0x2686E, 0x58E3},
+       {0x2686F, 0x5B45},
+       {0x26870, 0x5DC6},
+       {0x26871, 0x5DC7},
+       {0x26872, 0x5EEE},
+       {0x26873, 0x5EEF},
+       {0x26874, 0x5FC0},
+       {0x26875, 0x5FC1},
+       {0x26876, 0x61F9},
+       {0x26877, 0x6517},
+       {0x26878, 0x6516},
+       {0x26879, 0x6515},
+       {0x2687A, 0x6513},
+       {0x2687B, 0x65DF},
+       {0x2687C, 0x66E8},
+       {0x2687D, 0x66E3},
+       {0x2687E, 0x66E4},
+       {0x26921, 0x6AF3},
+       {0x26922, 0x6AF0},
+       {0x26923, 0x6AEA},
+       {0x26924, 0x6AE8},
+       {0x26925, 0x6AF9},
+       {0x26926, 0x6AF1},
+       {0x26927, 0x6AEE},
+       {0x26928, 0x6AEF},
+       {0x26929, 0x703C},
+       {0x2692A, 0x7035},
+       {0x2692B, 0x702F},
+       {0x2692C, 0x7037},
+       {0x2692D, 0x7034},
+       {0x2692E, 0x7031},
+       {0x2692F, 0x7042},
+       {0x26930, 0x7038},
+       {0x26931, 0x703F},
+       {0x26932, 0x703A},
+       {0x26933, 0x7039},
+       {0x26934, 0x702A},
+       {0x26935, 0x7040},
+       {0x26936, 0x703B},
+       {0x26937, 0x7033},
+       {0x26938, 0x7041},
+       {0x26939, 0x7213},
+       {0x2693A, 0x7214},
+       {0x2693B, 0x72A8},
+       {0x2693C, 0x737D},
+       {0x2693D, 0x737C},
+       {0x2693E, 0x74BA},
+       {0x2693F, 0x76AB},
+       {0x26940, 0x76AA},
+       {0x26941, 0x76BE},
+       {0x26942, 0x76ED},
+       {0x26943, 0x77CC},
+       {0x26944, 0x77CE},
+       {0x26945, 0x77CF},
+       {0x26946, 0x77CD},
+       {0x26947, 0x77F2},
+       {0x26948, 0x7925},
+       {0x26949, 0x7923},
+       {0x2694A, 0x7927},
+       {0x2694B, 0x7928},
+       {0x2694C, 0x7924},
+       {0x2694D, 0x7929},
+       {0x2694E, 0x79B2},
+       {0x2694F, 0x7A6E},
+       {0x26950, 0x7A6C},
+       {0x26951, 0x7A6D},
+       {0x26952, 0x7AF7},
+       {0x26953, 0x7C49},
+       {0x26954, 0x7C48},
+       {0x26955, 0x7C4A},
+       {0x26956, 0x7C47},
+       {0x26957, 0x7C45},
+       {0x26958, 0x7CEE},
+       {0x26959, 0x7E7B},
+       {0x2695A, 0x7E7E},
+       {0x2695B, 0x7E81},
+       {0x2695C, 0x7E80},
+       {0x2695D, 0x7FBA},
+       {0x2695E, 0x7FFF},
+       {0x2695F, 0x8079},
+       {0x26960, 0x81DB},
+       {0x26961, 0x81D9},
+       {0x26962, 0x8268},
+       {0x26963, 0x8269},
+       {0x26964, 0x8622},
+       {0x26965, 0x85FF},
+       {0x26966, 0x8601},
+       {0x26967, 0x85FE},
+       {0x26968, 0x861B},
+       {0x26969, 0x8600},
+       {0x2696A, 0x85F6},
+       {0x2696B, 0x8604},
+       {0x2696C, 0x8609},
+       {0x2696D, 0x8605},
+       {0x2696E, 0x860C},
+       {0x2696F, 0x85FD},
+       {0x26970, 0x8819},
+       {0x26971, 0x8810},
+       {0x26972, 0x8811},
+       {0x26973, 0x8817},
+       {0x26974, 0x8813},
+       {0x26975, 0x8816},
+       {0x26976, 0x8963},
+       {0x26977, 0x8966},
+       {0x26978, 0x89B9},
+       {0x26979, 0x89F7},
+       {0x2697A, 0x8B60},
+       {0x2697B, 0x8B6A},
+       {0x2697C, 0x8B5D},
+       {0x2697D, 0x8B68},
+       {0x2697E, 0x8B63},
+       {0x26A21, 0x8B65},
+       {0x26A22, 0x8B67},
+       {0x26A23, 0x8B6D},
+       {0x26A24, 0x8DAE},
+       {0x26A25, 0x8E86},
+       {0x26A26, 0x8E88},
+       {0x26A27, 0x8E84},
+       {0x26A28, 0x8F59},
+       {0x26A29, 0x8F56},
+       {0x26A2A, 0x8F57},
+       {0x26A2B, 0x8F55},
+       {0x26A2C, 0x8F58},
+       {0x26A2D, 0x8F5A},
+       {0x26A2E, 0x908D},
+       {0x26A2F, 0x9143},
+       {0x26A30, 0x9141},
+       {0x26A31, 0x91B7},
+       {0x26A32, 0x91B5},
+       {0x26A33, 0x91B2},
+       {0x26A34, 0x91B3},
+       {0x26A35, 0x940B},
+       {0x26A36, 0x9413},
+       {0x26A37, 0x93FB},
+       {0x26A38, 0x9420},
+       {0x26A39, 0x940F},
+       {0x26A3A, 0x9414},
+       {0x26A3B, 0x93FE},
+       {0x26A3C, 0x9415},
+       {0x26A3D, 0x9410},
+       {0x26A3E, 0x9428},
+       {0x26A3F, 0x9419},
+       {0x26A40, 0x940D},
+       {0x26A41, 0x93F5},
+       {0x26A42, 0x9400},
+       {0x26A43, 0x93F7},
+       {0x26A44, 0x9407},
+       {0x26A45, 0x940E},
+       {0x26A46, 0x9416},
+       {0x26A47, 0x9412},
+       {0x26A48, 0x93FA},
+       {0x26A49, 0x9409},
+       {0x26A4A, 0x93F8},
+       {0x26A4B, 0x943C},
+       {0x26A4C, 0x940A},
+       {0x26A4D, 0x93FF},
+       {0x26A4E, 0x93FC},
+       {0x26A4F, 0x940C},
+       {0x26A50, 0x93F6},
+       {0x26A51, 0x9411},
+       {0x26A52, 0x9406},
+       {0x26A53, 0x95DE},
+       {0x26A54, 0x95E0},
+       {0x26A55, 0x95DF},
+       {0x26A56, 0x972E},
+       {0x26A57, 0x972F},
+       {0x26A58, 0x97B9},
+       {0x26A59, 0x97BB},
+       {0x26A5A, 0x97FD},
+       {0x26A5B, 0x97FE},
+       {0x26A5C, 0x9860},
+       {0x26A5D, 0x9862},
+       {0x26A5E, 0x9863},
+       {0x26A5F, 0x985F},
+       {0x26A60, 0x98C1},
+       {0x26A61, 0x98C2},
+       {0x26A62, 0x9950},
+       {0x26A63, 0x994E},
+       {0x26A64, 0x9959},
+       {0x26A65, 0x994C},
+       {0x26A66, 0x994B},
+       {0x26A67, 0x9953},
+       {0x26A68, 0x9A32},
+       {0x26A69, 0x9A34},
+       {0x26A6A, 0x9A31},
+       {0x26A6B, 0x9A2C},
+       {0x26A6C, 0x9A2A},
+       {0x26A6D, 0x9A36},
+       {0x26A6E, 0x9A29},
+       {0x26A6F, 0x9A2E},
+       {0x26A70, 0x9A38},
+       {0x26A71, 0x9A2D},
+       {0x26A72, 0x9AC7},
+       {0x26A73, 0x9ACA},
+       {0x26A74, 0x9AC6},
+       {0x26A75, 0x9B10},
+       {0x26A76, 0x9B12},
+       {0x26A77, 0x9B11},
+       {0x26A78, 0x9C0B},
+       {0x26A79, 0x9C08},
+       {0x26A7A, 0x9BF7},
+       {0x26A7B, 0x9C05},
+       {0x26A7C, 0x9C12},
+       {0x26A7D, 0x9BF8},
+       {0x26A7E, 0x9C40},
+       {0x26B21, 0x9C07},
+       {0x26B22, 0x9C0E},
+       {0x26B23, 0x9C06},
+       {0x26B24, 0x9C17},
+       {0x26B25, 0x9C14},
+       {0x26B26, 0x9C09},
+       {0x26B27, 0x9D9F},
+       {0x26B28, 0x9D99},
+       {0x26B29, 0x9DA4},
+       {0x26B2A, 0x9D9D},
+       {0x26B2B, 0x9D92},
+       {0x26B2C, 0x9D98},
+       {0x26B2D, 0x9D90},
+       {0x26B2E, 0x9D9B},
+       {0x26B2F, 0x9DA0},
+       {0x26B30, 0x9D94},
+       {0x26B31, 0x9D9C},
+       {0x26B32, 0x9DAA},
+       {0x26B33, 0x9D97},
+       {0x26B34, 0x9DA1},
+       {0x26B35, 0x9D9A},
+       {0x26B36, 0x9DA2},
+       {0x26B37, 0x9DA8},
+       {0x26B38, 0x9D9E},
+       {0x26B39, 0x9DA3},
+       {0x26B3A, 0x9DBF},
+       {0x26B3B, 0x9DA9},
+       {0x26B3C, 0x9D96},
+       {0x26B3D, 0x9DA6},
+       {0x26B3E, 0x9DA7},
+       {0x26B3F, 0x9E99},
+       {0x26B40, 0x9E9B},
+       {0x26B41, 0x9E9A},
+       {0x26B42, 0x9EE5},
+       {0x26B43, 0x9EE4},
+       {0x26B44, 0x9EE7},
+       {0x26B45, 0x9EE6},
+       {0x26B46, 0x9F30},
+       {0x26B47, 0x9F2E},
+       {0x26B48, 0x9F5B},
+       {0x26B49, 0x9F60},
+       {0x26B4A, 0x9F5E},
+       {0x26B4B, 0x9F5D},
+       {0x26B4C, 0x9F59},
+       {0x26B4D, 0x9F91},
+       {0x26B4E, 0x513A},
+       {0x26B4F, 0x5139},
+       {0x26B50, 0x5298},
+       {0x26B51, 0x5297},
+       {0x26B52, 0x56C3},
+       {0x26B53, 0x56BD},
+       {0x26B54, 0x56BE},
+       {0x26B55, 0x5B48},
+       {0x26B56, 0x5B47},
+       {0x26B57, 0x5DCB},
+       {0x26B58, 0x5DCF},
+       {0x26B59, 0x5EF1},
+       {0x26B5A, 0x61FD},
+       {0x26B5B, 0x651B},
+       {0x26B5C, 0x6B02},
+       {0x26B5D, 0x6AFC},
+       {0x26B5E, 0x6B03},
+       {0x26B5F, 0x6AF8},
+       {0x26B60, 0x6B00},
+       {0x26B61, 0x7043},
+       {0x26B62, 0x7044},
+       {0x26B63, 0x704A},
+       {0x26B64, 0x7048},
+       {0x26B65, 0x7049},
+       {0x26B66, 0x7045},
+       {0x26B67, 0x7046},
+       {0x26B68, 0x721D},
+       {0x26B69, 0x721A},
+       {0x26B6A, 0x7219},
+       {0x26B6B, 0x737E},
+       {0x26B6C, 0x7517},
+       {0x26B6D, 0x766A},
+       {0x26B6E, 0x77D0},
+       {0x26B6F, 0x792D},
+       {0x26B70, 0x7931},
+       {0x26B71, 0x792F},
+       {0x26B72, 0x7C54},
+       {0x26B73, 0x7C53},
+       {0x26B74, 0x7CF2},
+       {0x26B75, 0x7E8A},
+       {0x26B76, 0x7E87},
+       {0x26B77, 0x7E88},
+       {0x26B78, 0x7E8B},
+       {0x26B79, 0x7E86},
+       {0x26B7A, 0x7E8D},
+       {0x26B7B, 0x7F4D},
+       {0x26B7C, 0x7FBB},
+       {0x26B7D, 0x8030},
+       {0x26B7E, 0x81DD},
+       {0x26C21, 0x8618},
+       {0x26C22, 0x862A},
+       {0x26C23, 0x8626},
+       {0x26C24, 0x861F},
+       {0x26C25, 0x8623},
+       {0x26C26, 0x861C},
+       {0x26C27, 0x8619},
+       {0x26C28, 0x8627},
+       {0x26C29, 0x862E},
+       {0x26C2A, 0x8621},
+       {0x26C2B, 0x8620},
+       {0x26C2C, 0x8629},
+       {0x26C2D, 0x861E},
+       {0x26C2E, 0x8625},
+       {0x26C2F, 0x8829},
+       {0x26C30, 0x881D},
+       {0x26C31, 0x881B},
+       {0x26C32, 0x8820},
+       {0x26C33, 0x8824},
+       {0x26C34, 0x881C},
+       {0x26C35, 0x882B},
+       {0x26C36, 0x884A},
+       {0x26C37, 0x896D},
+       {0x26C38, 0x8969},
+       {0x26C39, 0x896E},
+       {0x26C3A, 0x896B},
+       {0x26C3B, 0x89FA},
+       {0x26C3C, 0x8B79},
+       {0x26C3D, 0x8B78},
+       {0x26C3E, 0x8B45},
+       {0x26C3F, 0x8B7A},
+       {0x26C40, 0x8B7B},
+       {0x26C41, 0x8D10},
+       {0x26C42, 0x8D14},
+       {0x26C43, 0x8DAF},
+       {0x26C44, 0x8E8E},
+       {0x26C45, 0x8E8C},
+       {0x26C46, 0x8F5E},
+       {0x26C47, 0x8F5B},
+       {0x26C48, 0x8F5D},
+       {0x26C49, 0x9146},
+       {0x26C4A, 0x9144},
+       {0x26C4B, 0x9145},
+       {0x26C4C, 0x91B9},
+       {0x26C4D, 0x943F},
+       {0x26C4E, 0x943B},
+       {0x26C4F, 0x9436},
+       {0x26C50, 0x9429},
+       {0x26C51, 0x943D},
+       {0x26C52, 0x9430},
+       {0x26C53, 0x9439},
+       {0x26C54, 0x942A},
+       {0x26C55, 0x9437},
+       {0x26C56, 0x942C},
+       {0x26C57, 0x9440},
+       {0x26C58, 0x9431},
+       {0x26C59, 0x95E5},
+       {0x26C5A, 0x95E4},
+       {0x26C5B, 0x95E3},
+       {0x26C5C, 0x9735},
+       {0x26C5D, 0x973A},
+       {0x26C5E, 0x97BF},
+       {0x26C5F, 0x97E1},
+       {0x26C60, 0x9864},
+       {0x26C61, 0x98C9},
+       {0x26C62, 0x98C6},
+       {0x26C63, 0x98C0},
+       {0x26C64, 0x9958},
+       {0x26C65, 0x9956},
+       {0x26C66, 0x9A39},
+       {0x26C67, 0x9A3D},
+       {0x26C68, 0x9A46},
+       {0x26C69, 0x9A44},
+       {0x26C6A, 0x9A42},
+       {0x26C6B, 0x9A41},
+       {0x26C6C, 0x9A3A},
+       {0x26C6D, 0x9A3F},
+       {0x26C6E, 0x9ACD},
+       {0x26C6F, 0x9B15},
+       {0x26C70, 0x9B17},
+       {0x26C71, 0x9B18},
+       {0x26C72, 0x9B16},
+       {0x26C73, 0x9B3A},
+       {0x26C74, 0x9B52},
+       {0x26C75, 0x9C2B},
+       {0x26C76, 0x9C1D},
+       {0x26C77, 0x9C1C},
+       {0x26C78, 0x9C2C},
+       {0x26C79, 0x9C23},
+       {0x26C7A, 0x9C28},
+       {0x26C7B, 0x9C29},
+       {0x26C7C, 0x9C24},
+       {0x26C7D, 0x9C21},
+       {0x26C7E, 0x9DB7},
+       {0x26D21, 0x9DB6},
+       {0x26D22, 0x9DBC},
+       {0x26D23, 0x9DC1},
+       {0x26D24, 0x9DC7},
+       {0x26D25, 0x9DCA},
+       {0x26D26, 0x9DCF},
+       {0x26D27, 0x9DBE},
+       {0x26D28, 0x9DC5},
+       {0x26D29, 0x9DC3},
+       {0x26D2A, 0x9DBB},
+       {0x26D2B, 0x9DB5},
+       {0x26D2C, 0x9DCE},
+       {0x26D2D, 0x9DB9},
+       {0x26D2E, 0x9DBA},
+       {0x26D2F, 0x9DAC},
+       {0x26D30, 0x9DC8},
+       {0x26D31, 0x9DB1},
+       {0x26D32, 0x9DAD},
+       {0x26D33, 0x9DCC},
+       {0x26D34, 0x9DB3},
+       {0x26D35, 0x9DCD},
+       {0x26D36, 0x9DB2},
+       {0x26D37, 0x9E7A},
+       {0x26D38, 0x9E9C},
+       {0x26D39, 0x9EEB},
+       {0x26D3A, 0x9EEE},
+       {0x26D3B, 0x9EED},
+       {0x26D3C, 0x9F1B},
+       {0x26D3D, 0x9F18},
+       {0x26D3E, 0x9F1A},
+       {0x26D3F, 0x9F31},
+       {0x26D40, 0x9F4E},
+       {0x26D41, 0x9F65},
+       {0x26D42, 0x9F64},
+       {0x26D43, 0x9F92},
+       {0x26D44, 0x4EB9},
+       {0x26D45, 0x56C6},
+       {0x26D46, 0x56C5},
+       {0x26D47, 0x56CB},
+       {0x26D48, 0x5971},
+       {0x26D49, 0x5B4B},
+       {0x26D4A, 0x5B4C},
+       {0x26D4B, 0x5DD5},
+       {0x26D4C, 0x5DD1},
+       {0x26D4D, 0x5EF2},
+       {0x26D4E, 0x6521},
+       {0x26D4F, 0x6520},
+       {0x26D50, 0x6526},
+       {0x26D51, 0x6522},
+       {0x26D52, 0x6B0B},
+       {0x26D53, 0x6B08},
+       {0x26D54, 0x6B09},
+       {0x26D55, 0x6C0D},
+       {0x26D56, 0x7055},
+       {0x26D57, 0x7056},
+       {0x26D58, 0x7057},
+       {0x26D59, 0x7052},
+       {0x26D5A, 0x721E},
+       {0x26D5B, 0x721F},
+       {0x26D5C, 0x72A9},
+       {0x26D5D, 0x737F},
+       {0x26D5E, 0x74D8},
+       {0x26D5F, 0x74D5},
+       {0x26D60, 0x74D9},
+       {0x26D61, 0x74D7},
+       {0x26D62, 0x766D},
+       {0x26D63, 0x76AD},
+       {0x26D64, 0x7935},
+       {0x26D65, 0x79B4},
+       {0x26D66, 0x7A70},
+       {0x26D67, 0x7A71},
+       {0x26D68, 0x7C57},
+       {0x26D69, 0x7C5C},
+       {0x26D6A, 0x7C59},
+       {0x26D6B, 0x7C5B},
+       {0x26D6C, 0x7C5A},
+       {0x26D6D, 0x7CF4},
+       {0x26D6E, 0x7CF1},
+       {0x26D6F, 0x7E91},
+       {0x26D70, 0x7F4F},
+       {0x26D71, 0x7F87},
+       {0x26D72, 0x81DE},
+       {0x26D73, 0x826B},
+       {0x26D74, 0x8634},
+       {0x26D75, 0x8635},
+       {0x26D76, 0x8633},
+       {0x26D77, 0x862C},
+       {0x26D78, 0x8632},
+       {0x26D79, 0x8636},
+       {0x26D7A, 0x882C},
+       {0x26D7B, 0x8828},
+       {0x26D7C, 0x8826},
+       {0x26D7D, 0x882A},
+       {0x26D7E, 0x8825},
+       {0x26E21, 0x8971},
+       {0x26E22, 0x89BF},
+       {0x26E23, 0x89BE},
+       {0x26E24, 0x89FB},
+       {0x26E25, 0x8B7E},
+       {0x26E26, 0x8B84},
+       {0x26E27, 0x8B82},
+       {0x26E28, 0x8B86},
+       {0x26E29, 0x8B85},
+       {0x26E2A, 0x8B7F},
+       {0x26E2B, 0x8D15},
+       {0x26E2C, 0x8E95},
+       {0x26E2D, 0x8E94},
+       {0x26E2E, 0x8E9A},
+       {0x26E2F, 0x8E92},
+       {0x26E30, 0x8E90},
+       {0x26E31, 0x8E96},
+       {0x26E32, 0x8E97},
+       {0x26E33, 0x8F60},
+       {0x26E34, 0x8F62},
+       {0x26E35, 0x9147},
+       {0x26E36, 0x944C},
+       {0x26E37, 0x9450},
+       {0x26E38, 0x944A},
+       {0x26E39, 0x944B},
+       {0x26E3A, 0x944F},
+       {0x26E3B, 0x9447},
+       {0x26E3C, 0x9445},
+       {0x26E3D, 0x9448},
+       {0x26E3E, 0x9449},
+       {0x26E3F, 0x9446},
+       {0x26E40, 0x973F},
+       {0x26E41, 0x97E3},
+       {0x26E42, 0x986A},
+       {0x26E43, 0x9869},
+       {0x26E44, 0x98CB},
+       {0x26E45, 0x9954},
+       {0x26E46, 0x995B},
+       {0x26E47, 0x9A4E},
+       {0x26E48, 0x9A53},
+       {0x26E49, 0x9A54},
+       {0x26E4A, 0x9A4C},
+       {0x26E4B, 0x9A4F},
+       {0x26E4C, 0x9A48},
+       {0x26E4D, 0x9A4A},
+       {0x26E4E, 0x9A49},
+       {0x26E4F, 0x9A52},
+       {0x26E50, 0x9A50},
+       {0x26E51, 0x9AD0},
+       {0x26E52, 0x9B19},
+       {0x26E53, 0x9B2B},
+       {0x26E54, 0x9B3B},
+       {0x26E55, 0x9B56},
+       {0x26E56, 0x9B55},
+       {0x26E57, 0x9C46},
+       {0x26E58, 0x9C48},
+       {0x26E59, 0x9C3F},
+       {0x26E5A, 0x9C44},
+       {0x26E5B, 0x9C39},
+       {0x26E5C, 0x9C33},
+       {0x26E5D, 0x9C41},
+       {0x26E5E, 0x9C3C},
+       {0x26E5F, 0x9C37},
+       {0x26E60, 0x9C34},
+       {0x26E61, 0x9C32},
+       {0x26E62, 0x9C3D},
+       {0x26E63, 0x9C36},
+       {0x26E64, 0x9DDB},
+       {0x26E65, 0x9DD2},
+       {0x26E66, 0x9DDE},
+       {0x26E67, 0x9DDA},
+       {0x26E68, 0x9DCB},
+       {0x26E69, 0x9DD0},
+       {0x26E6A, 0x9DDC},
+       {0x26E6B, 0x9DD1},
+       {0x26E6C, 0x9DDF},
+       {0x26E6D, 0x9DE9},
+       {0x26E6E, 0x9DD9},
+       {0x26E6F, 0x9DD8},
+       {0x26E70, 0x9DD6},
+       {0x26E71, 0x9DF5},
+       {0x26E72, 0x9DD5},
+       {0x26E73, 0x9DDD},
+       {0x26E74, 0x9EB6},
+       {0x26E75, 0x9EF0},
+       {0x26E76, 0x9F35},
+       {0x26E77, 0x9F33},
+       {0x26E78, 0x9F32},
+       {0x26E79, 0x9F42},
+       {0x26E7A, 0x9F6B},
+       {0x26E7B, 0x9F95},
+       {0x26E7C, 0x9FA2},
+       {0x26E7D, 0x513D},
+       {0x26E7E, 0x5299},
+       {0x26F21, 0x58E8},
+       {0x26F22, 0x58E7},
+       {0x26F23, 0x5972},
+       {0x26F24, 0x5B4D},
+       {0x26F25, 0x5DD8},
+       {0x26F26, 0x882F},
+       {0x26F27, 0x5F4F},
+       {0x26F28, 0x6201},
+       {0x26F29, 0x6203},
+       {0x26F2A, 0x6204},
+       {0x26F2B, 0x6529},
+       {0x26F2C, 0x6525},
+       {0x26F2D, 0x6596},
+       {0x26F2E, 0x66EB},
+       {0x26F2F, 0x6B11},
+       {0x26F30, 0x6B12},
+       {0x26F31, 0x6B0F},
+       {0x26F32, 0x6BCA},
+       {0x26F33, 0x705B},
+       {0x26F34, 0x705A},
+       {0x26F35, 0x7222},
+       {0x26F36, 0x7382},
+       {0x26F37, 0x7381},
+       {0x26F38, 0x7383},
+       {0x26F39, 0x7670},
+       {0x26F3A, 0x77D4},
+       {0x26F3B, 0x7C67},
+       {0x26F3C, 0x7C66},
+       {0x26F3D, 0x7E95},
+       {0x26F3E, 0x826C},
+       {0x26F3F, 0x863A},
+       {0x26F40, 0x8640},
+       {0x26F41, 0x8639},
+       {0x26F42, 0x863C},
+       {0x26F43, 0x8631},
+       {0x26F44, 0x863B},
+       {0x26F45, 0x863E},
+       {0x26F46, 0x8830},
+       {0x26F47, 0x8832},
+       {0x26F48, 0x882E},
+       {0x26F49, 0x8833},
+       {0x26F4A, 0x8976},
+       {0x26F4B, 0x8974},
+       {0x26F4C, 0x8973},
+       {0x26F4D, 0x89FE},
+       {0x26F4E, 0x8B8C},
+       {0x26F4F, 0x8B8E},
+       {0x26F50, 0x8B8B},
+       {0x26F51, 0x8B88},
+       {0x26F52, 0x8C45},
+       {0x26F53, 0x8D19},
+       {0x26F54, 0x8E98},
+       {0x26F55, 0x8F64},
+       {0x26F56, 0x8F63},
+       {0x26F57, 0x91BC},
+       {0x26F58, 0x9462},
+       {0x26F59, 0x9455},
+       {0x26F5A, 0x945D},
+       {0x26F5B, 0x9457},
+       {0x26F5C, 0x945E},
+       {0x26F5D, 0x97C4},
+       {0x26F5E, 0x97C5},
+       {0x26F5F, 0x9800},
+       {0x26F60, 0x9A56},
+       {0x26F61, 0x9A59},
+       {0x26F62, 0x9B1E},
+       {0x26F63, 0x9B1F},
+       {0x26F64, 0x9B20},
+       {0x26F65, 0x9C52},
+       {0x26F66, 0x9C58},
+       {0x26F67, 0x9C50},
+       {0x26F68, 0x9C4A},
+       {0x26F69, 0x9C4D},
+       {0x26F6A, 0x9C4B},
+       {0x26F6B, 0x9C55},
+       {0x26F6C, 0x9C59},
+       {0x26F6D, 0x9C4C},
+       {0x26F6E, 0x9C4E},
+       {0x26F6F, 0x9DFB},
+       {0x26F70, 0x9DF7},
+       {0x26F71, 0x9DEF},
+       {0x26F72, 0x9DE3},
+       {0x26F73, 0x9DEB},
+       {0x26F74, 0x9DF8},
+       {0x26F75, 0x9DE4},
+       {0x26F76, 0x9DF6},
+       {0x26F77, 0x9DE1},
+       {0x26F78, 0x9DEE},
+       {0x26F79, 0x9DE6},
+       {0x26F7A, 0x9DF2},
+       {0x26F7B, 0x9DF0},
+       {0x26F7C, 0x9DE2},
+       {0x26F7D, 0x9DEC},
+       {0x26F7E, 0x9DF4},
+       {0x27021, 0x9DF3},
+       {0x27022, 0x9DE8},
+       {0x27023, 0x9DED},
+       {0x27024, 0x9EC2},
+       {0x27025, 0x9ED0},
+       {0x27026, 0x9EF2},
+       {0x27027, 0x9EF3},
+       {0x27028, 0x9F06},
+       {0x27029, 0x9F1C},
+       {0x2702A, 0x9F38},
+       {0x2702B, 0x9F37},
+       {0x2702C, 0x9F36},
+       {0x2702D, 0x9F43},
+       {0x2702E, 0x9F4F},
+       {0x2702F, 0x9F71},
+       {0x27030, 0x9F70},
+       {0x27031, 0x9F6E},
+       {0x27032, 0x9F6F},
+       {0x27033, 0x56D3},
+       {0x27034, 0x56CD},
+       {0x27035, 0x5B4E},
+       {0x27036, 0x5C6D},
+       {0x27037, 0x652D},
+       {0x27038, 0x66ED},
+       {0x27039, 0x66EE},
+       {0x2703A, 0x6B13},
+       {0x2703B, 0x705F},
+       {0x2703C, 0x7061},
+       {0x2703D, 0x705D},
+       {0x2703E, 0x7060},
+       {0x2703F, 0x7223},
+       {0x27040, 0x74DB},
+       {0x27041, 0x74E5},
+       {0x27042, 0x77D5},
+       {0x27043, 0x7938},
+       {0x27044, 0x79B7},
+       {0x27045, 0x79B6},
+       {0x27046, 0x7C6A},
+       {0x27047, 0x7E97},
+       {0x27048, 0x7F89},
+       {0x27049, 0x826D},
+       {0x2704A, 0x8643},
+       {0x2704B, 0x8838},
+       {0x2704C, 0x8837},
+       {0x2704D, 0x8835},
+       {0x2704E, 0x884B},
+       {0x2704F, 0x8B94},
+       {0x27050, 0x8B95},
+       {0x27051, 0x8E9E},
+       {0x27052, 0x8E9F},
+       {0x27053, 0x8EA0},
+       {0x27054, 0x8E9D},
+       {0x27055, 0x91BE},
+       {0x27056, 0x91BD},
+       {0x27057, 0x91C2},
+       {0x27058, 0x946B},
+       {0x27059, 0x9468},
+       {0x2705A, 0x9469},
+       {0x2705B, 0x96E5},
+       {0x2705C, 0x9746},
+       {0x2705D, 0x9743},
+       {0x2705E, 0x9747},
+       {0x2705F, 0x97C7},
+       {0x27060, 0x97E5},
+       {0x27061, 0x9A5E},
+       {0x27062, 0x9AD5},
+       {0x27063, 0x9B59},
+       {0x27064, 0x9C63},
+       {0x27065, 0x9C67},
+       {0x27066, 0x9C66},
+       {0x27067, 0x9C62},
+       {0x27068, 0x9C5E},
+       {0x27069, 0x9C60},
+       {0x2706A, 0x9E02},
+       {0x2706B, 0x9DFE},
+       {0x2706C, 0x9E07},
+       {0x2706D, 0x9E03},
+       {0x2706E, 0x9E06},
+       {0x2706F, 0x9E05},
+       {0x27070, 0x9E00},
+       {0x27071, 0x9E01},
+       {0x27072, 0x9E09},
+       {0x27073, 0x9DFF},
+       {0x27074, 0x9DFD},
+       {0x27075, 0x9E04},
+       {0x27076, 0x9EA0},
+       {0x27077, 0x9F1E},
+       {0x27078, 0x9F46},
+       {0x27079, 0x9F74},
+       {0x2707A, 0x9F75},
+       {0x2707B, 0x9F76},
+       {0x2707C, 0x56D4},
+       {0x2707D, 0x652E},
+       {0x2707E, 0x65B8},
+       {0x27121, 0x6B18},
+       {0x27122, 0x6B19},
+       {0x27123, 0x6B17},
+       {0x27124, 0x6B1A},
+       {0x27125, 0x7062},
+       {0x27126, 0x7226},
+       {0x27127, 0x72AA},
+       {0x27128, 0x77D8},
+       {0x27129, 0x77D9},
+       {0x2712A, 0x7939},
+       {0x2712B, 0x7C69},
+       {0x2712C, 0x7C6B},
+       {0x2712D, 0x7CF6},
+       {0x2712E, 0x7E9A},
+       {0x2712F, 0x7E98},
+       {0x27130, 0x7E9B},
+       {0x27131, 0x7E99},
+       {0x27132, 0x81E0},
+       {0x27133, 0x81E1},
+       {0x27134, 0x8646},
+       {0x27135, 0x8647},
+       {0x27136, 0x8648},
+       {0x27137, 0x8979},
+       {0x27138, 0x897A},
+       {0x27139, 0x897C},
+       {0x2713A, 0x897B},
+       {0x2713B, 0x89FF},
+       {0x2713C, 0x8B98},
+       {0x2713D, 0x8B99},
+       {0x2713E, 0x8EA5},
+       {0x2713F, 0x8EA4},
+       {0x27140, 0x8EA3},
+       {0x27141, 0x946E},
+       {0x27142, 0x946D},
+       {0x27143, 0x946F},
+       {0x27144, 0x9471},
+       {0x27145, 0x9473},
+       {0x27146, 0x9749},
+       {0x27147, 0x9872},
+       {0x27148, 0x995F},
+       {0x27149, 0x9C68},
+       {0x2714A, 0x9C6E},
+       {0x2714B, 0x9C6D},
+       {0x2714C, 0x9E0B},
+       {0x2714D, 0x9E0D},
+       {0x2714E, 0x9E10},
+       {0x2714F, 0x9E0F},
+       {0x27150, 0x9E12},
+       {0x27151, 0x9E11},
+       {0x27152, 0x9EA1},
+       {0x27153, 0x9EF5},
+       {0x27154, 0x9F09},
+       {0x27155, 0x9F47},
+       {0x27156, 0x9F78},
+       {0x27157, 0x9F7B},
+       {0x27158, 0x9F7A},
+       {0x27159, 0x9F79},
+       {0x2715A, 0x571E},
+       {0x2715B, 0x7066},
+       {0x2715C, 0x7C6F},
+       {0x2715D, 0x883C},
+       {0x2715E, 0x8DB2},
+       {0x2715F, 0x8EA6},
+       {0x27160, 0x91C3},
+       {0x27161, 0x9474},
+       {0x27162, 0x9478},
+       {0x27163, 0x9476},
+       {0x27164, 0x9475},
+       {0x27165, 0x9A60},
+       {0x27166, 0x9B2E},
+       {0x27167, 0x9C74},
+       {0x27168, 0x9C73},
+       {0x27169, 0x9C71},
+       {0x2716A, 0x9C75},
+       {0x2716B, 0x9E14},
+       {0x2716C, 0x9E13},
+       {0x2716D, 0x9EF6},
+       {0x2716E, 0x9F0A},
+       {0x2716F, 0x9FA4},
+       {0x27170, 0x7068},
+       {0x27171, 0x7065},
+       {0x27172, 0x7CF7},
+       {0x27173, 0x866A},
+       {0x27174, 0x883E},
+       {0x27175, 0x883D},
+       {0x27176, 0x883F},
+       {0x27177, 0x8B9E},
+       {0x27178, 0x8C9C},
+       {0x27179, 0x8EA9},
+       {0x2717A, 0x8EC9},
+       {0x2717B, 0x974B},
+       {0x2717C, 0x9873},
+       {0x2717D, 0x9874},
+       {0x2717E, 0x98CC},
+       {0x27221, 0x9961},
+       {0x27222, 0x99AB},
+       {0x27223, 0x9A64},
+       {0x27224, 0x9A66},
+       {0x27225, 0x9A67},
+       {0x27226, 0x9B24},
+       {0x27227, 0x9E15},
+       {0x27228, 0x9E17},
+       {0x27229, 0x9F48},
+       {0x2722A, 0x6207},
+       {0x2722B, 0x6B1E},
+       {0x2722C, 0x7227},
+       {0x2722D, 0x864C},
+       {0x2722E, 0x8EA8},
+       {0x2722F, 0x9482},
+       {0x27230, 0x9480},
+       {0x27231, 0x9481},
+       {0x27232, 0x9A69},
+       {0x27233, 0x9A68},
+       {0x27234, 0x9E19},
+       {0x27235, 0x864B},
+       {0x27236, 0x8B9F},
+       {0x27237, 0x9483},
+       {0x27238, 0x9C79},
+       {0x27239, 0x9EB7},
+       {0x2723A, 0x7675},
+       {0x2723B, 0x9A6B},
+       {0x2723C, 0x9C7A},
+       {0x2723D, 0x9E1D},
+       {0x2723E, 0x7069},
+       {0x2723F, 0x706A},
+       {0x27240, 0x7229},
+       {0x27241, 0x9EA4},
+       {0x27242, 0x9F7E},
+       {0x27243, 0x9F49},
+       {0x27244, 0x9F98},
+       {0xE2121, 0x4E28},
+       {0xE2122, 0x4E36},
+       {0xE2123, 0x4E3F},
+       {0xE2124, 0x4E85},
+       {0xE2125, 0x4E05},
+       {0xE2126, 0x4E04},
+       {0xE2127, 0x5182},
+       {0xE2128, 0x5196},
+       {0xE2129, 0x5338},
+       {0xE212A, 0x5369},
+       {0xE212B, 0x53B6},
+       {0xE212C, 0x4E2A},
+       {0xE212D, 0x4E87},
+       {0xE212E, 0x4E49},
+       {0xE212F, 0x51E2},
+       {0xE2130, 0x4E46},
+       {0xE2131, 0x4E8F},
+       {0xE2132, 0x4EBC},
+       {0xE2133, 0x4EBE},
+       {0xE2134, 0x5166},
+       {0xE2135, 0x51E3},
+       {0xE2136, 0x5204},
+       {0xE2137, 0x529C},
+       {0xE2139, 0x5902},
+       {0xE213A, 0x590A},
+       {0xE213B, 0x5B80},
+       {0xE213C, 0x5DDB},
+       {0xE213D, 0x5E7A},
+       {0xE213E, 0x5E7F},
+       {0xE213F, 0x5EF4},
+       {0xE2140, 0x5F50},
+       {0xE2141, 0x5F51},
+       {0xE2142, 0x5F61},
+       {0xE2143, 0x961D},
+       {0xE2145, 0x4E63},
+       {0xE2146, 0x4E62},
+       {0xE2147, 0x4EA3},
+       {0xE2148, 0x5185},
+       {0xE2149, 0x4EC5},
+       {0xE214A, 0x4ECF},
+       {0xE214B, 0x4ECE},
+       {0xE214C, 0x4ECC},
+       {0xE214D, 0x5184},
+       {0xE214E, 0x5186},
+       {0xE2151, 0x51E4},
+       {0xE2152, 0x5205},
+       {0xE2153, 0x529E},
+       {0xE2154, 0x529D},
+       {0xE2155, 0x52FD},
+       {0xE2156, 0x5300},
+       {0xE2157, 0x533A},
+       {0xE2159, 0x5346},
+       {0xE215A, 0x535D},
+       {0xE215B, 0x5386},
+       {0xE215C, 0x53B7},
+       {0xE215E, 0x53CC},
+       {0xE2160, 0x53CE},
+       {0xE2161, 0x5721},
+       {0xE2163, 0x5E00},
+       {0xE2164, 0x5F0C},
+       {0xE2165, 0x6237},
+       {0xE2166, 0x6238},
+       {0xE2167, 0x6534},
+       {0xE2168, 0x6535},
+       {0xE2169, 0x65E0},
+       {0xE216B, 0x738D},
+       {0xE216C, 0x4E97},
+       {0xE216D, 0x4EE0},
+       {0xE2170, 0x4EE7},
+       {0xE2172, 0x4EE6},
+       {0xE2177, 0x56D8},
+       {0xE2178, 0x518B},
+       {0xE2179, 0x518C},
+       {0xE217A, 0x5199},
+       {0xE217B, 0x51E5},
+       {0xE217D, 0x520B},
+       {0xE2222, 0x5304},
+       {0xE2223, 0x5303},
+       {0xE2224, 0x5307},
+       {0xE2226, 0x531E},
+       {0xE2227, 0x535F},
+       {0xE2228, 0x536D},
+       {0xE2229, 0x5389},
+       {0xE222A, 0x53BA},
+       {0xE222B, 0x53D0},
+       {0xE222D, 0x53F6},
+       {0xE222E, 0x53F7},
+       {0xE222F, 0x53F9},
+       {0xE2231, 0x53F4},
+       {0xE2234, 0x5724},
+       {0xE2235, 0x5904},
+       {0xE2236, 0x5918},
+       {0xE2237, 0x5932},
+       {0xE2238, 0x5930},
+       {0xE2239, 0x5934},
+       {0xE223B, 0x5975},
+       {0xE223D, 0x5B82},
+       {0xE223E, 0x5BF9},
+       {0xE223F, 0x5C14},
+       {0xE2247, 0x5E81},
+       {0xE2248, 0x5E83},
+       {0xE2249, 0x5F0D},
+       {0xE224A, 0x5F52},
+       {0xE224C, 0x5FCA},
+       {0xE224D, 0x5FC7},
+       {0xE224E, 0x6239},
+       {0xE2250, 0x624F},
+       {0xE2251, 0x65E7},
+       {0xE2252, 0x672F},
+       {0xE2253, 0x6B7A},
+       {0xE2254, 0x6C39},
+       {0xE2257, 0x6C37},
+       {0xE2258, 0x6C44},
+       {0xE2259, 0x6C45},
+       {0xE225A, 0x738C},
+       {0xE225B, 0x7592},
+       {0xE225C, 0x7676},
+       {0xE225D, 0x9093},
+       {0xE225E, 0x9092},
+       {0xE2261, 0x4E21},
+       {0xE2262, 0x4E20},
+       {0xE2263, 0x4E22},
+       {0xE2264, 0x4E68},
+       {0xE2265, 0x4E89},
+       {0xE2266, 0x4E98},
+       {0xE2267, 0x4EF9},
+       {0xE2268, 0x4EEF},
+       {0xE226B, 0x4EF8},
+       {0xE226C, 0x4F06},
+       {0xE226D, 0x4F03},
+       {0xE226E, 0x4EFC},
+       {0xE226F, 0x4EEE},
+       {0xE2270, 0x4F16},
+       {0xE2272, 0x4F28},
+       {0xE2273, 0x4F1C},
+       {0xE2274, 0x4F07},
+       {0xE2275, 0x4F1A},
+       {0xE2276, 0x4EFA},
+       {0xE2277, 0x4F17},
+       {0xE2278, 0x514A},
+       {0xE227A, 0x5172},
+       {0xE227C, 0x51B4},
+       {0xE227D, 0x51B3},
+       {0xE227E, 0x51B2},
+       {0xE2322, 0x51E8},
+       {0xE2324, 0x5214},
+       {0xE2325, 0x520F},
+       {0xE2326, 0x5215},
+       {0xE2327, 0x5218},
+       {0xE2328, 0x52A8},
+       {0xE232A, 0x534B},
+       {0xE232B, 0x534F},
+       {0xE232D, 0x5350},
+       {0xE232F, 0x538B},
+       {0xE2331, 0x53BE},
+       {0xE2333, 0x53D2},
+       {0xE2334, 0x5416},
+       {0xE2335, 0x53FF},
+       {0xE2337, 0x5400},
+       {0xE2339, 0x5405},
+       {0xE233A, 0x5413},
+       {0xE233B, 0x5415},
+       {0xE233E, 0x56E3},
+       {0xE233F, 0x5735},
+       {0xE2340, 0x5736},
+       {0xE2341, 0x5731},
+       {0xE2342, 0x5732},
+       {0xE2343, 0x58EE},
+       {0xE2344, 0x5905},
+       {0xE2345, 0x4E54},
+       {0xE2347, 0x5936},
+       {0xE234B, 0x597A},
+       {0xE234D, 0x5986},
+       {0xE2350, 0x5B86},
+       {0xE2351, 0x5F53},
+       {0xE2352, 0x5C18},
+       {0xE2354, 0x5C3D},
+       {0xE2355, 0x5C78},
+       {0xE235A, 0x5C80},
+       {0xE235C, 0x5E08},
+       {0xE2361, 0x5EF5},
+       {0xE2362, 0x5F0E},
+       {0xE2366, 0x5FD3},
+       {0xE2367, 0x5FDA},
+       {0xE2369, 0x5FDB},
+       {0xE236B, 0x620F},
+       {0xE236C, 0x625D},
+       {0xE236D, 0x625F},
+       {0xE236E, 0x6267},
+       {0xE236F, 0x6257},
+       {0xE2370, 0x9F50},
+       {0xE2372, 0x65EB},
+       {0xE2373, 0x65EA},
+       {0xE2375, 0x6737},
+       {0xE2377, 0x6732},
+       {0xE2378, 0x6736},
+       {0xE2379, 0x6B22},
+       {0xE237A, 0x6BCE},
+       {0xE237C, 0x6C58},
+       {0xE237D, 0x6C51},
+       {0xE237E, 0x6C77},
+       {0xE2421, 0x6C3C},
+       {0xE2423, 0x6C5A},
+       {0xE2425, 0x6C53},
+       {0xE2426, 0x706F},
+       {0xE2427, 0x7072},
+       {0xE2428, 0x706E},
+       {0xE242B, 0x7073},
+       {0xE242C, 0x72B1},
+       {0xE242D, 0x72B2},
+       {0xE242F, 0x738F},
+       {0xE2433, 0x793C},
+       {0xE2435, 0x808D},
+       {0xE2436, 0x808E},
+       {0xE2438, 0x827B},
+       {0xE243A, 0x8D71},
+       {0xE243B, 0x8FB9},
+       {0xE243C, 0x9096},
+       {0xE243D, 0x909A},
+       {0xE243F, 0x4E24},
+       {0xE2440, 0x4E71},
+       {0xE2442, 0x4E9C},
+       {0xE2443, 0x4F45},
+       {0xE2444, 0x4F4A},
+       {0xE2445, 0x4F39},
+       {0xE2446, 0x4F37},
+       {0xE2448, 0x4F32},
+       {0xE2449, 0x4F42},
+       {0xE244B, 0x4F44},
+       {0xE244C, 0x4F4B},
+       {0xE244E, 0x4F40},
+       {0xE244F, 0x4F35},
+       {0xE2450, 0x4F31},
+       {0xE2451, 0x5151},
+       {0xE2453, 0x5150},
+       {0xE2454, 0x514E},
+       {0xE2457, 0x519D},
+       {0xE2459, 0x51B5},
+       {0xE245A, 0x51B8},
+       {0xE245B, 0x51EC},
+       {0xE245C, 0x5223},
+       {0xE245D, 0x5227},
+       {0xE245E, 0x5226},
+       {0xE245F, 0x521F},
+       {0xE2460, 0x522B},
+       {0xE2461, 0x5220},
+       {0xE2462, 0x52B4},
+       {0xE2463, 0x52B3},
+       {0xE2465, 0x5325},
+       {0xE2466, 0x533B},
+       {0xE2467, 0x5374},
+       {0xE246D, 0x544D},
+       {0xE2470, 0x543A},
+       {0xE2473, 0x5444},
+       {0xE2474, 0x544C},
+       {0xE2475, 0x5423},
+       {0xE2476, 0x541A},
+       {0xE2477, 0x5432},
+       {0xE2478, 0x544B},
+       {0xE2479, 0x5421},
+       {0xE247B, 0x5434},
+       {0xE247C, 0x5449},
+       {0xE247D, 0x5450},
+       {0xE247E, 0x5422},
+       {0xE2521, 0x543F},
+       {0xE2522, 0x5451},
+       {0xE2523, 0x545A},
+       {0xE2524, 0x542F},
+       {0xE2526, 0x56E9},
+       {0xE2527, 0x56F2},
+       {0xE2528, 0x56F3},
+       {0xE2529, 0x56EF},
+       {0xE252A, 0x56ED},
+       {0xE252B, 0x56EC},
+       {0xE252C, 0x56E6},
+       {0xE252D, 0x5748},
+       {0xE252F, 0x5744},
+       {0xE2530, 0x573F},
+       {0xE2531, 0x573C},
+       {0xE2532, 0x5753},
+       {0xE2533, 0x5756},
+       {0xE2535, 0x575F},
+       {0xE2536, 0x5743},
+       {0xE2537, 0x5758},
+       {0xE2538, 0x5757},
+       {0xE253C, 0x5746},
+       {0xE253E, 0x573D},
+       {0xE2540, 0x5742},
+       {0xE2541, 0x5754},
+       {0xE2542, 0x5755},
+       {0xE2543, 0x58F1},
+       {0xE2544, 0x58F2},
+       {0xE2545, 0x58F0},
+       {0xE2546, 0x590B},
+       {0xE2547, 0x9EA6},
+       {0xE2548, 0x56F1},
+       {0xE2549, 0x593D},
+       {0xE254B, 0x5994},
+       {0xE254C, 0x598C},
+       {0xE254E, 0x599C},
+       {0xE2551, 0x599F},
+       {0xE2553, 0x599B},
+       {0xE2555, 0x5989},
+       {0xE2556, 0x599A},
+       {0xE2558, 0x6588},
+       {0xE255A, 0x5B8D},
+       {0xE255C, 0x5BFE},
+       {0xE255D, 0x5BFF},
+       {0xE255E, 0x5BFD},
+       {0xE255F, 0x5C2B},
+       {0xE2561, 0x5C84},
+       {0xE2562, 0x5C8E},
+       {0xE2563, 0x5C9C},
+       {0xE2566, 0x5C85},
+       {0xE2567, 0x5DF5},
+       {0xE2568, 0x5E09},
+       {0xE256B, 0x5E0B},
+       {0xE256D, 0x5E92},
+       {0xE256E, 0x5E90},
+       {0xE256F, 0x5F03},
+       {0xE2571, 0x5F1E},
+       {0xE2572, 0x5F63},
+       {0xE2574, 0x5FE7},
+       {0xE2575, 0x5FFE},
+       {0xE2576, 0x5FE6},
+       {0xE2577, 0x5FDC},
+       {0xE2578, 0x5FCE},
+       {0xE257A, 0x5FFC},
+       {0xE257B, 0x5FDF},
+       {0xE257C, 0x5FEC},
+       {0xE257D, 0x5FF6},
+       {0xE2621, 0x5FF2},
+       {0xE2622, 0x5FF0},
+       {0xE2623, 0x5FF9},
+       {0xE2625, 0x6213},
+       {0xE2628, 0x623B},
+       {0xE2629, 0x623C},
+       {0xE262A, 0x6282},
+       {0xE262E, 0x6278},
+       {0xE262F, 0x628B},
+       {0xE2631, 0x629E},
+       {0xE2632, 0x62A5},
+       {0xE2633, 0x629B},
+       {0xE2634, 0x629C},
+       {0xE2635, 0x6299},
+       {0xE2636, 0x628D},
+       {0xE2637, 0x6285},
+       {0xE2638, 0x629D},
+       {0xE2639, 0x6275},
+       {0xE263D, 0x65F6},
+       {0xE2641, 0x66F5},
+       {0xE2642, 0x675B},
+       {0xE2644, 0x6754},
+       {0xE2645, 0x6752},
+       {0xE2647, 0x6758},
+       {0xE2648, 0x6744},
+       {0xE2649, 0x674A},
+       {0xE264A, 0x6761},
+       {0xE264C, 0x6C7F},
+       {0xE264D, 0x6C91},
+       {0xE264E, 0x6C9E},
+       {0xE2650, 0x6C6E},
+       {0xE2651, 0x6C7C},
+       {0xE2652, 0x6C9F},
+       {0xE2653, 0x6C75},
+       {0xE2655, 0x6C56},
+       {0xE2656, 0x6CA2},
+       {0xE2657, 0x6C79},
+       {0xE2659, 0x6CA1},
+       {0xE265B, 0x6CAA},
+       {0xE265C, 0x6CA0},
+       {0xE265E, 0x7079},
+       {0xE265F, 0x7077},
+       {0xE2660, 0x707E},
+       {0xE2662, 0x7075},
+       {0xE2663, 0x707B},
+       {0xE2664, 0x7264},
+       {0xE2666, 0x72BB},
+       {0xE2667, 0x72BC},
+       {0xE2668, 0x72C7},
+       {0xE2669, 0x72B9},
+       {0xE266A, 0x72BE},
+       {0xE266B, 0x72B6},
+       {0xE266E, 0x7398},
+       {0xE2673, 0x7593},
+       {0xE2674, 0x7680},
+       {0xE2676, 0x7683},
+       {0xE2677, 0x76C0},
+       {0xE2678, 0x76C1},
+       {0xE267B, 0x77F4},
+       {0xE267C, 0x77F5},
+       {0xE267E, 0x7ACC},
+       {0xE2721, 0x7ACD},
+       {0xE2722, 0x7CFA},
+       {0xE2723, 0x809F},
+       {0xE2724, 0x8091},
+       {0xE2725, 0x8097},
+       {0xE2726, 0x8094},
+       {0xE2728, 0x8286},
+       {0xE2729, 0x828C},
+       {0xE272B, 0x8295},
+       {0xE272D, 0x866C},
+       {0xE272F, 0x8FB5},
+       {0xE2730, 0x8FBE},
+       {0xE2731, 0x8FC7},
+       {0xE2733, 0x8FC1},
+       {0xE2734, 0x90A9},
+       {0xE2735, 0x90A4},
+       {0xE2739, 0x90A8},
+       {0xE273A, 0x9627},
+       {0xE273B, 0x9626},
+       {0xE273C, 0x962B},
+       {0xE273D, 0x9633},
+       {0xE273E, 0x9634},
+       {0xE273F, 0x9629},
+       {0xE2740, 0x4E3D},
+       {0xE2742, 0x4E9D},
+       {0xE2743, 0x4F93},
+       {0xE2744, 0x4F8A},
+       {0xE2747, 0x4F6D},
+       {0xE2748, 0x4F8E},
+       {0xE2749, 0x4FA0},
+       {0xE274A, 0x4FA2},
+       {0xE274B, 0x4FA1},
+       {0xE274C, 0x4F9F},
+       {0xE274D, 0x4FA3},
+       {0xE274F, 0x4F72},
+       {0xE2751, 0x4F8C},
+       {0xE2752, 0x5156},
+       {0xE2755, 0x5190},
+       {0xE2759, 0x51ED},
+       {0xE275A, 0x51FE},
+       {0xE275B, 0x522F},
+       {0xE275D, 0x523C},
+       {0xE275E, 0x5234},
+       {0xE275F, 0x5239},
+       {0xE2760, 0x52B9},
+       {0xE2761, 0x52B5},
+       {0xE2762, 0x52BF},
+       {0xE2763, 0x5355},
+       {0xE2765, 0x5376},
+       {0xE2766, 0x537A},
+       {0xE2767, 0x5393},
+       {0xE2769, 0x53C1},
+       {0xE276A, 0x53C2},
+       {0xE276B, 0x53D5},
+       {0xE276C, 0x5485},
+       {0xE276E, 0x545F},
+       {0xE276F, 0x5493},
+       {0xE2770, 0x5489},
+       {0xE2771, 0x5479},
+       {0xE2772, 0x9EFE},
+       {0xE2773, 0x548F},
+       {0xE2774, 0x5469},
+       {0xE2775, 0x546D},
+       {0xE2777, 0x5494},
+       {0xE2778, 0x546A},
+       {0xE2779, 0x548A},
+       {0xE277B, 0x56FD},
+       {0xE277C, 0x56FB},
+       {0xE277D, 0x56F8},
+       {0xE2821, 0x56FC},
+       {0xE2822, 0x56F6},
+       {0xE2823, 0x5765},
+       {0xE2824, 0x5781},
+       {0xE2825, 0x5763},
+       {0xE2826, 0x5767},
+       {0xE2828, 0x576E},
+       {0xE2829, 0x5778},
+       {0xE282A, 0x577F},
+       {0xE282D, 0x58F3},
+       {0xE282E, 0x594B},
+       {0xE282F, 0x594C},
+       {0xE2833, 0x59AD},
+       {0xE2835, 0x59C4},
+       {0xE2837, 0x59C2},
+       {0xE2838, 0x59B0},
+       {0xE283D, 0x59BF},
+       {0xE283F, 0x59C9},
+       {0xE2840, 0x59B8},
+       {0xE2841, 0x59AC},
+       {0xE2845, 0x59B7},
+       {0xE2846, 0x59D7},
+       {0xE2848, 0x5B60},
+       {0xE284A, 0x5B96},
+       {0xE284B, 0x5B9E},
+       {0xE284C, 0x5B94},
+       {0xE284D, 0x5B9F},
+       {0xE284E, 0x5B9D},
+       {0xE2850, 0x5C00},
+       {0xE2851, 0x5C19},
+       {0xE2854, 0x5C49},
+       {0xE2855, 0x5C4A},
+       {0xE2857, 0x5CBB},
+       {0xE2858, 0x5CC1},
+       {0xE285C, 0x5CB9},
+       {0xE285D, 0x5C9E},
+       {0xE285E, 0x5CB4},
+       {0xE285F, 0x5CBA},
+       {0xE2860, 0x5DF6},
+       {0xE2861, 0x5E13},
+       {0xE2862, 0x5E12},
+       {0xE2863, 0x5E77},
+       {0xE2865, 0x5E98},
+       {0xE2867, 0x5E99},
+       {0xE2868, 0x5E9D},
+       {0xE2869, 0x5EF8},
+       {0xE286B, 0x5EF9},
+       {0xE286D, 0x5F06},
+       {0xE286E, 0x5F21},
+       {0xE2870, 0x5F25},
+       {0xE2871, 0x5F55},
+       {0xE2875, 0x5F84},
+       {0xE2876, 0x5F83},
+       {0xE2877, 0x6030},
+       {0xE2878, 0x6007},
+       {0xE287A, 0x6036},
+       {0xE287E, 0x5FE9},
+       {0xE2921, 0x603D},
+       {0xE2922, 0x6008},
+       {0xE2925, 0x62BA},
+       {0xE2926, 0x62B2},
+       {0xE2928, 0x62B7},
+       {0xE2929, 0x62E4},
+       {0xE292A, 0x62A7},
+       {0xE292E, 0x62D5},
+       {0xE292F, 0x62E1},
+       {0xE2930, 0x62DD},
+       {0xE2931, 0x62A6},
+       {0xE2932, 0x62C1},
+       {0xE2933, 0x62C5},
+       {0xE2934, 0x62C0},
+       {0xE2935, 0x62DF},
+       {0xE2936, 0x62E0},
+       {0xE2937, 0x62DE},
+       {0xE2939, 0x6589},
+       {0xE293B, 0x65A6},
+       {0xE293C, 0x65BA},
+       {0xE293E, 0x65FF},
+       {0xE2940, 0x6617},
+       {0xE2941, 0x6618},
+       {0xE2942, 0x6601},
+       {0xE2943, 0x65FE},
+       {0xE2945, 0x670C},
+       {0xE2947, 0x676B},
+       {0xE2948, 0x6796},
+       {0xE2949, 0x6782},
+       {0xE294A, 0x678A},
+       {0xE294C, 0x67A3},
+       {0xE294E, 0x67A2},
+       {0xE294F, 0x678F},
+       {0xE2951, 0x67F9},
+       {0xE2952, 0x6780},
+       {0xE2953, 0x6B26},
+       {0xE2954, 0x6B27},
+       {0xE2955, 0x6B68},
+       {0xE2956, 0x6B69},
+       {0xE2958, 0x6B81},
+       {0xE2959, 0x6BB4},
+       {0xE295A, 0x6BD1},
+       {0xE295D, 0x6C1C},
+       {0xE2963, 0x6C97},
+       {0xE2964, 0x6C6C},
+       {0xE2965, 0x6CDF},
+       {0xE2967, 0x6CEA},
+       {0xE2969, 0x6CE4},
+       {0xE296A, 0x6CD8},
+       {0xE296B, 0x6CB2},
+       {0xE296C, 0x6CCE},
+       {0xE296D, 0x6CC8},
+       {0xE296F, 0x708B},
+       {0xE2970, 0x7088},
+       {0xE2971, 0x7090},
+       {0xE2972, 0x708F},
+       {0xE2974, 0x7087},
+       {0xE2975, 0x7089},
+       {0xE2976, 0x708D},
+       {0xE2977, 0x7081},
+       {0xE2979, 0x708C},
+       {0xE297C, 0x7240},
+       {0xE2A21, 0x7265},
+       {0xE2A22, 0x7266},
+       {0xE2A23, 0x7268},
+       {0xE2A26, 0x72CD},
+       {0xE2A27, 0x72D3},
+       {0xE2A28, 0x72DB},
+       {0xE2A2A, 0x72CF},
+       {0xE2A2B, 0x73A7},
+       {0xE2A2C, 0x73A3},
+       {0xE2A2D, 0x739E},
+       {0xE2A2F, 0x73AF},
+       {0xE2A32, 0x73AA},
+       {0xE2A33, 0x739C},
+       {0xE2A35, 0x7542},
+       {0xE2A36, 0x7544},
+       {0xE2A37, 0x753B},
+       {0xE2A38, 0x7541},
+       {0xE2A3A, 0x759B},
+       {0xE2A3B, 0x759E},
+       {0xE2A3D, 0x79C4},
+       {0xE2A3E, 0x79C3},
+       {0xE2A3F, 0x79C6},
+       {0xE2A42, 0x79C7},
+       {0xE2A44, 0x79CA},
+       {0xE2A47, 0x7ACF},
+       {0xE2A48, 0x7C76},
+       {0xE2A49, 0x7C74},
+       {0xE2A4A, 0x7CFF},
+       {0xE2A4B, 0x7CFC},
+       {0xE2A4E, 0x7F59},
+       {0xE2A4F, 0x80A8},
+       {0xE2A52, 0x80B0},
+       {0xE2A54, 0x80B3},
+       {0xE2A56, 0x80A4},
+       {0xE2A57, 0x80B6},
+       {0xE2A58, 0x80A7},
+       {0xE2A59, 0x80AC},
+       {0xE2A5B, 0x80A6},
+       {0xE2A5C, 0x5367},
+       {0xE2A5D, 0x820E},
+       {0xE2A5E, 0x82C4},
+       {0xE2A5F, 0x833E},
+       {0xE2A60, 0x829C},
+       {0xE2A66, 0x82AA},
+       {0xE2A68, 0x82C9},
+       {0xE2A6B, 0x82A6},
+       {0xE2A6C, 0x82B2},
+       {0xE2A70, 0x8FCC},
+       {0xE2A71, 0x8FD9},
+       {0xE2A72, 0x8FCA},
+       {0xE2A73, 0x8FD8},
+       {0xE2A74, 0x8FCF},
+       {0xE2A75, 0x90B7},
+       {0xE2A77, 0x90AD},
+       {0xE2A78, 0x90B9},
+       {0xE2A79, 0x9637},
+       {0xE2A7B, 0x9641},
+       {0xE2A7C, 0x963E},
+       {0xE2A7D, 0x96B6},
+       {0xE2A7E, 0x9751},
+       {0xE2B21, 0x9763},
+       {0xE2B22, 0x4E57},
+       {0xE2B23, 0x4E79},
+       {0xE2B24, 0x4EB2},
+       {0xE2B25, 0x4EB0},
+       {0xE2B26, 0x4EAF},
+       {0xE2B27, 0x4EB1},
+       {0xE2B28, 0x4FD2},
+       {0xE2B29, 0x4FD5},
+       {0xE2B2B, 0x4FBE},
+       {0xE2B2C, 0x4FB8},
+       {0xE2B2D, 0x4FB0},
+       {0xE2B2E, 0x4FB1},
+       {0xE2B2F, 0x4FC8},
+       {0xE2B32, 0x4FC6},
+       {0xE2B33, 0x4FCC},
+       {0xE2B34, 0x4FE5},
+       {0xE2B35, 0x4FE3},
+       {0xE2B36, 0x4FB4},
+       {0xE2B37, 0x516A},
+       {0xE2B39, 0x519F},
+       {0xE2B3B, 0x51C1},
+       {0xE2B3D, 0x51C2},
+       {0xE2B3E, 0x51C3},
+       {0xE2B3F, 0x5245},
+       {0xE2B40, 0x5248},
+       {0xE2B43, 0x524F},
+       {0xE2B46, 0x52C5},
+       {0xE2B47, 0x52CA},
+       {0xE2B48, 0x52C4},
+       {0xE2B49, 0x5327},
+       {0xE2B4A, 0x5358},
+       {0xE2B4B, 0x537D},
+       {0xE2B4D, 0x53DD},
+       {0xE2B4E, 0x53DC},
+       {0xE2B4F, 0x53DA},
+       {0xE2B50, 0x53D9},
+       {0xE2B51, 0x54B9},
+       {0xE2B53, 0x54D0},
+       {0xE2B54, 0x54B4},
+       {0xE2B55, 0x54CA},
+       {0xE2B57, 0x54A3},
+       {0xE2B58, 0x54DA},
+       {0xE2B59, 0x54A4},
+       {0xE2B5B, 0x54B2},
+       {0xE2B5C, 0x549E},
+       {0xE2B5D, 0x549F},
+       {0xE2B5E, 0x54B5},
+       {0xE2B61, 0x54CD},
+       {0xE2B63, 0x54CC},
+       {0xE2B65, 0x5700},
+       {0xE2B66, 0x57AC},
+       {0xE2B67, 0x5791},
+       {0xE2B68, 0x578E},
+       {0xE2B69, 0x578D},
+       {0xE2B6A, 0x5792},
+       {0xE2B6B, 0x57A1},
+       {0xE2B6C, 0x5790},
+       {0xE2B6D, 0x57A6},
+       {0xE2B6E, 0x57A8},
+       {0xE2B70, 0x579C},
+       {0xE2B71, 0x5796},
+       {0xE2B72, 0x57A7},
+       {0xE2B77, 0x58F5},
+       {0xE2B79, 0x5909},
+       {0xE2B7A, 0x5908},
+       {0xE2B7C, 0x5952},
+       {0xE2C21, 0x59DF},
+       {0xE2C23, 0x59EB},
+       {0xE2C24, 0x59EF},
+       {0xE2C25, 0x59F0},
+       {0xE2C26, 0x59D5},
+       {0xE2C27, 0x5A0D},
+       {0xE2C28, 0x5A04},
+       {0xE2C29, 0x59F9},
+       {0xE2C2A, 0x5A02},
+       {0xE2C2B, 0x59F8},
+       {0xE2C2C, 0x59E2},
+       {0xE2C2D, 0x59D9},
+       {0xE2C2E, 0x59E7},
+       {0xE2C2F, 0x5B6A},
+       {0xE2C32, 0x5BAB},
+       {0xE2C34, 0x5C1B},
+       {0xE2C35, 0x5C2F},
+       {0xE2C37, 0x663C},
+       {0xE2C3B, 0x5CD1},
+       {0xE2C3C, 0x5CDC},
+       {0xE2C3D, 0x5CE6},
+       {0xE2C3E, 0x5CE1},
+       {0xE2C3F, 0x5CCD},
+       {0xE2C41, 0x5CE2},
+       {0xE2C42, 0x5CDD},
+       {0xE2C43, 0x5CE5},
+       {0xE2C44, 0x5DFB},
+       {0xE2C45, 0x5DFA},
+       {0xE2C46, 0x5E1E},
+       {0xE2C48, 0x5EA1},
+       {0xE2C4B, 0x5EFC},
+       {0xE2C4C, 0x5EFB},
+       {0xE2C4D, 0x5F2F},
+       {0xE2C50, 0x5F66},
+       {0xE2C54, 0x605C},
+       {0xE2C56, 0x604E},
+       {0xE2C57, 0x6051},
+       {0xE2C5A, 0x6023},
+       {0xE2C5B, 0x6031},
+       {0xE2C5C, 0x607C},
+       {0xE2C5D, 0x6052},
+       {0xE2C5F, 0x6060},
+       {0xE2C60, 0x604A},
+       {0xE2C61, 0x6061},
+       {0xE2C63, 0x6218},
+       {0xE2C6B, 0x631F},
+       {0xE2C6C, 0x6317},
+       {0xE2C6D, 0x62EA},
+       {0xE2C6E, 0x6321},
+       {0xE2C6F, 0x6304},
+       {0xE2C70, 0x6305},
+       {0xE2C72, 0x6531},
+       {0xE2C73, 0x6544},
+       {0xE2C74, 0x6540},
+       {0xE2C76, 0x6542},
+       {0xE2C77, 0x65BE},
+       {0xE2C79, 0x6629},
+       {0xE2C7A, 0x661B},
+       {0xE2C7C, 0x6623},
+       {0xE2C7D, 0x662C},
+       {0xE2C7E, 0x661A},
+       {0xE2D21, 0x6630},
+       {0xE2D22, 0x663B},
+       {0xE2D23, 0x661E},
+       {0xE2D24, 0x6637},
+       {0xE2D25, 0x6638},
+       {0xE2D27, 0x670E},
+       {0xE2D2A, 0x67E8},
+       {0xE2D2B, 0x67D6},
+       {0xE2D2D, 0x67C7},
+       {0xE2D2E, 0x67BC},
+       {0xE2D2F, 0x6852},
+       {0xE2D30, 0x67BF},
+       {0xE2D31, 0x67D5},
+       {0xE2D32, 0x67FE},
+       {0xE2D33, 0x8363},
+       {0xE2D34, 0x67FB},
+       {0xE2D36, 0x67B1},
+       {0xE2D37, 0x6801},
+       {0xE2D38, 0x6805},
+       {0xE2D39, 0x6800},
+       {0xE2D3A, 0x67D7},
+       {0xE2D3C, 0x6B2A},
+       {0xE2D3D, 0x6B6B},
+       {0xE2D42, 0x6BE1},
+       {0xE2D45, 0x6D23},
+       {0xE2D46, 0x6CFF},
+       {0xE2D47, 0x6D14},
+       {0xE2D48, 0x6D05},
+       {0xE2D49, 0x6D13},
+       {0xE2D4A, 0x6D06},
+       {0xE2D4B, 0x6D21},
+       {0xE2D4D, 0x6D15},
+       {0xE2D4E, 0x6CAF},
+       {0xE2D4F, 0x6CF4},
+       {0xE2D50, 0x6D02},
+       {0xE2D51, 0x6D45},
+       {0xE2D53, 0x6D26},
+       {0xE2D55, 0x6D44},
+       {0xE2D57, 0x6D24},
+       {0xE2D58, 0x70A5},
+       {0xE2D5A, 0x70A3},
+       {0xE2D5C, 0x70A2},
+       {0xE2D5D, 0x70BB},
+       {0xE2D5E, 0x70A0},
+       {0xE2D5F, 0x70AA},
+       {0xE2D62, 0x70A8},
+       {0xE2D63, 0x70B6},
+       {0xE2D64, 0x70B2},
+       {0xE2D65, 0x70A7},
+       {0xE2D68, 0x70B9},
+       {0xE2D69, 0x722E},
+       {0xE2D6B, 0x723C},
+       {0xE2D6D, 0x726D},
+       {0xE2D70, 0x72E7},
+       {0xE2D71, 0x72ED},
+       {0xE2D73, 0x72EC},
+       {0xE2D74, 0x72E5},
+       {0xE2D75, 0x72E2},
+       {0xE2D77, 0x73C4},
+       {0xE2D78, 0x73BD},
+       {0xE2D79, 0x73CF},
+       {0xE2D7A, 0x73C9},
+       {0xE2D7B, 0x73C1},
+       {0xE2D7C, 0x73D0},
+       {0xE2D7E, 0x73CE},
+       {0xE2E21, 0x74ED},
+       {0xE2E22, 0x74EB},
+       {0xE2E24, 0x74EF},
+       {0xE2E25, 0x7549},
+       {0xE2E26, 0x7550},
+       {0xE2E27, 0x7546},
+       {0xE2E28, 0x754A},
+       {0xE2E2A, 0x754D},
+       {0xE2E2B, 0x75A6},
+       {0xE2E2F, 0x75A8},
+       {0xE2E32, 0x76C7},
+       {0xE2E33, 0x76FF},
+       {0xE2E35, 0x76FD},
+       {0xE2E36, 0x77E6},
+       {0xE2E37, 0x780A},
+       {0xE2E39, 0x7804},
+       {0xE2E3A, 0x780B},
+       {0xE2E3B, 0x7807},
+       {0xE2E3D, 0x7815},
+       {0xE2E3E, 0x7808},
+       {0xE2E40, 0x79D3},
+       {0xE2E41, 0x79D4},
+       {0xE2E42, 0x79D0},
+       {0xE2E43, 0x79D7},
+       {0xE2E44, 0x7A7C},
+       {0xE2E47, 0x7A7D},
+       {0xE2E48, 0x7A83},
+       {0xE2E49, 0x7A82},
+       {0xE2E4B, 0x7AD4},
+       {0xE2E4C, 0x7AD5},
+       {0xE2E4D, 0x7AD3},
+       {0xE2E4E, 0x7AD0},
+       {0xE2E4F, 0x7AD2},
+       {0xE2E50, 0x7AFE},
+       {0xE2E51, 0x7AFC},
+       {0xE2E52, 0x7C77},
+       {0xE2E53, 0x7C7C},
+       {0xE2E54, 0x7C7B},
+       {0xE2E5D, 0x7F8F},
+       {0xE2E5E, 0x80D3},
+       {0xE2E60, 0x80CB},
+       {0xE2E61, 0x80D2},
+       {0xE2E63, 0x8109},
+       {0xE2E64, 0x80E2},
+       {0xE2E65, 0x80DF},
+       {0xE2E66, 0x80C6},
+       {0xE2E68, 0x8224},
+       {0xE2E69, 0x82F7},
+       {0xE2E6A, 0x82D8},
+       {0xE2E6B, 0x82DD},
+       {0xE2E6E, 0x82F8},
+       {0xE2E6F, 0x82FC},
+       {0xE2E72, 0x82E9},
+       {0xE2E74, 0x82EE},
+       {0xE2E76, 0x82D0},
+       {0xE2E77, 0x830E},
+       {0xE2E78, 0x82E2},
+       {0xE2E79, 0x830B},
+       {0xE2E7A, 0x82FD},
+       {0xE2E7B, 0x5179},
+       {0xE2E7C, 0x8676},
+       {0xE2E7E, 0x8678},
+       {0xE2F23, 0x8675},
+       {0xE2F24, 0x867D},
+       {0xE2F26, 0x8842},
+       {0xE2F27, 0x8866},
+       {0xE2F29, 0x898C},
+       {0xE2F2A, 0x8A05},
+       {0xE2F2C, 0x8A06},
+       {0xE2F2E, 0x8C9F},
+       {0xE2F30, 0x8FF1},
+       {0xE2F31, 0x8FE7},
+       {0xE2F32, 0x8FE9},
+       {0xE2F33, 0x8FEF},
+       {0xE2F34, 0x90C2},
+       {0xE2F35, 0x90BC},
+       {0xE2F37, 0x90C6},
+       {0xE2F38, 0x90C0},
+       {0xE2F3B, 0x90CD},
+       {0xE2F3C, 0x90C9},
+       {0xE2F3E, 0x90C4},
+       {0xE2F40, 0x9581},
+       {0xE2F42, 0x9CEC},
+       {0xE2F43, 0x5032},
+       {0xE2F44, 0x4FF9},
+       {0xE2F45, 0x501D},
+       {0xE2F46, 0x4FFF},
+       {0xE2F47, 0x5004},
+       {0xE2F48, 0x4FF0},
+       {0xE2F49, 0x5003},
+       {0xE2F4B, 0x5002},
+       {0xE2F4C, 0x4FFC},
+       {0xE2F4D, 0x4FF2},
+       {0xE2F4E, 0x5024},
+       {0xE2F4F, 0x5008},
+       {0xE2F50, 0x5036},
+       {0xE2F51, 0x502E},
+       {0xE2F53, 0x5010},
+       {0xE2F54, 0x5038},
+       {0xE2F55, 0x5039},
+       {0xE2F56, 0x4FFD},
+       {0xE2F57, 0x5056},
+       {0xE2F58, 0x4FFB},
+       {0xE2F59, 0x51A3},
+       {0xE2F5A, 0x51A6},
+       {0xE2F5B, 0x51A1},
+       {0xE2F5E, 0x51C7},
+       {0xE2F5F, 0x51C9},
+       {0xE2F60, 0x5260},
+       {0xE2F61, 0x5264},
+       {0xE2F62, 0x5259},
+       {0xE2F63, 0x5265},
+       {0xE2F64, 0x5267},
+       {0xE2F65, 0x5257},
+       {0xE2F66, 0x5263},
+       {0xE2F68, 0x5253},
+       {0xE2F6A, 0x52CF},
+       {0xE2F6C, 0x52CE},
+       {0xE2F6D, 0x52D0},
+       {0xE2F6E, 0x52D1},
+       {0xE2F6F, 0x52CC},
+       {0xE2F73, 0x550D},
+       {0xE2F74, 0x54F4},
+       {0xE2F76, 0x5513},
+       {0xE2F77, 0x54EF},
+       {0xE2F78, 0x54F5},
+       {0xE2F79, 0x54F9},
+       {0xE2F7A, 0x5502},
+       {0xE2F7B, 0x5500},
+       {0xE2F7E, 0x5518},
+       {0xE3021, 0x54F0},
+       {0xE3022, 0x54F6},
+       {0xE3025, 0x5519},
+       {0xE3027, 0x5705},
+       {0xE3028, 0x57C9},
+       {0xE302A, 0x57B7},
+       {0xE302B, 0x57CD},
+       {0xE302F, 0x57BE},
+       {0xE3030, 0x57BB},
+       {0xE3032, 0x57DB},
+       {0xE3033, 0x57C8},
+       {0xE3034, 0x57C4},
+       {0xE3035, 0x57C5},
+       {0xE3036, 0x57D1},
+       {0xE3037, 0x57CA},
+       {0xE3038, 0x57C0},
+       {0xE303B, 0x5A21},
+       {0xE303C, 0x5A2A},
+       {0xE303E, 0x5A1D},
+       {0xE3040, 0x5A0B},
+       {0xE3045, 0x5A22},
+       {0xE3048, 0x5A24},
+       {0xE304A, 0x5A14},
+       {0xE304B, 0x5A31},
+       {0xE304D, 0x5A2F},
+       {0xE304E, 0x5A1A},
+       {0xE304F, 0x5A12},
+       {0xE3052, 0x5A26},
+       {0xE3055, 0x5BBC},
+       {0xE3056, 0x5BBB},
+       {0xE3057, 0x5BB7},
+       {0xE3058, 0x5C05},
+       {0xE3059, 0x5C06},
+       {0xE305A, 0x5C52},
+       {0xE305B, 0x5C53},
+       {0xE305E, 0x5CFA},
+       {0xE305F, 0x5CEB},
+       {0xE3061, 0x5CF3},
+       {0xE3062, 0x5CF5},
+       {0xE3063, 0x5CE9},
+       {0xE3064, 0x5CEF},
+       {0xE3066, 0x5E2A},
+       {0xE3067, 0x5E30},
+       {0xE3068, 0x5E2E},
+       {0xE3069, 0x5E2C},
+       {0xE306A, 0x5E2F},
+       {0xE306B, 0x5EAF},
+       {0xE306C, 0x5EA9},
+       {0xE306E, 0x5EFD},
+       {0xE306F, 0x5F32},
+       {0xE3070, 0x5F8E},
+       {0xE3071, 0x5F93},
+       {0xE3072, 0x5F8F},
+       {0xE3073, 0x604F},
+       {0xE3074, 0x6099},
+       {0xE3076, 0x607E},
+       {0xE3078, 0x6074},
+       {0xE3079, 0x604B},
+       {0xE307A, 0x6073},
+       {0xE307B, 0x6075},
+       {0xE307E, 0x6056},
+       {0xE3121, 0x60A9},
+       {0xE3122, 0x608B},
+       {0xE3123, 0x60A6},
+       {0xE3125, 0x6093},
+       {0xE3126, 0x60AE},
+       {0xE3127, 0x609E},
+       {0xE3128, 0x60A7},
+       {0xE3129, 0x6245},
+       {0xE312C, 0x632E},
+       {0xE312E, 0x6352},
+       {0xE312F, 0x6330},
+       {0xE3130, 0x635B},
+       {0xE3132, 0x6319},
+       {0xE3133, 0x631B},
+       {0xE3135, 0x6331},
+       {0xE3136, 0x635D},
+       {0xE3137, 0x6337},
+       {0xE3138, 0x6335},
+       {0xE3139, 0x6353},
+       {0xE313B, 0x635C},
+       {0xE313C, 0x633F},
+       {0xE313D, 0x654B},
+       {0xE3140, 0x658B},
+       {0xE3142, 0x659A},
+       {0xE3143, 0x6650},
+       {0xE3144, 0x6646},
+       {0xE3145, 0x664E},
+       {0xE3146, 0x6640},
+       {0xE3148, 0x664B},
+       {0xE3149, 0x6648},
+       {0xE314B, 0x6660},
+       {0xE314C, 0x6644},
+       {0xE314D, 0x664D},
+       {0xE314F, 0x6837},
+       {0xE3150, 0x6824},
+       {0xE3153, 0x681B},
+       {0xE3154, 0x6836},
+       {0xE3156, 0x682C},
+       {0xE3157, 0x6819},
+       {0xE3158, 0x6856},
+       {0xE3159, 0x6847},
+       {0xE315A, 0x683E},
+       {0xE315B, 0x681E},
+       {0xE315D, 0x6815},
+       {0xE315E, 0x6822},
+       {0xE315F, 0x6827},
+       {0xE3160, 0x6859},
+       {0xE3161, 0x6858},
+       {0xE3162, 0x6855},
+       {0xE3163, 0x6830},
+       {0xE3164, 0x6823},
+       {0xE3165, 0x6B2E},
+       {0xE3166, 0x6B2B},
+       {0xE3167, 0x6B30},
+       {0xE3168, 0x6B6C},
+       {0xE316A, 0x6B8B},
+       {0xE316C, 0x6BE9},
+       {0xE316D, 0x6BEA},
+       {0xE316E, 0x6BE5},
+       {0xE316F, 0x6D6B},
+       {0xE3172, 0x6D73},
+       {0xE3173, 0x6D57},
+       {0xE3176, 0x6D5D},
+       {0xE3177, 0x6D56},
+       {0xE3178, 0x6D8F},
+       {0xE3179, 0x6D5B},
+       {0xE317A, 0x6D1C},
+       {0xE317B, 0x6D9A},
+       {0xE317C, 0x6D9B},
+       {0xE317D, 0x6D99},
+       {0xE3221, 0x6D81},
+       {0xE3222, 0x6D71},
+       {0xE3225, 0x6D72},
+       {0xE3226, 0x6D5C},
+       {0xE3227, 0x6D96},
+       {0xE3228, 0x70C4},
+       {0xE3229, 0x70DB},
+       {0xE322A, 0x70CC},
+       {0xE322B, 0x70D0},
+       {0xE322C, 0x70E3},
+       {0xE322D, 0x70DF},
+       {0xE322F, 0x70D6},
+       {0xE3230, 0x70EE},
+       {0xE3231, 0x70D5},
+       {0xE3236, 0x727A},
+       {0xE3238, 0x72F5},
+       {0xE3239, 0x7302},
+       {0xE323C, 0x73E2},
+       {0xE323D, 0x73EC},
+       {0xE323E, 0x73D5},
+       {0xE323F, 0x73F9},
+       {0xE3240, 0x73DF},
+       {0xE3241, 0x73E6},
+       {0xE3246, 0x73E4},
+       {0xE3247, 0x73E1},
+       {0xE3248, 0x74F3},
+       {0xE324D, 0x7556},
+       {0xE324E, 0x7555},
+       {0xE324F, 0x7558},
+       {0xE3250, 0x7557},
+       {0xE3251, 0x755E},
+       {0xE3252, 0x75C3},
+       {0xE3255, 0x75B4},
+       {0xE3257, 0x75B1},
+       {0xE325A, 0x76CB},
+       {0xE325B, 0x76CC},
+       {0xE325C, 0x772A},
+       {0xE325E, 0x7716},
+       {0xE325F, 0x770F},
+       {0xE3262, 0x773F},
+       {0xE3263, 0x772B},
+       {0xE3264, 0x770E},
+       {0xE3265, 0x7724},
+       {0xE3267, 0x7721},
+       {0xE3268, 0x7718},
+       {0xE3269, 0x77DD},
+       {0xE326C, 0x7824},
+       {0xE326D, 0x7836},
+       {0xE326F, 0x7958},
+       {0xE3270, 0x7959},
+       {0xE3272, 0x7962},
+       {0xE3273, 0x79DA},
+       {0xE3274, 0x79D9},
+       {0xE3276, 0x79E1},
+       {0xE3277, 0x79E5},
+       {0xE3278, 0x79E8},
+       {0xE3279, 0x79DB},
+       {0xE327B, 0x79E2},
+       {0xE327C, 0x79F0},
+       {0xE3323, 0x7ADA},
+       {0xE3324, 0x7ADD},
+       {0xE3326, 0x7ADB},
+       {0xE3327, 0x7ADC},
+       {0xE332A, 0x7B0D},
+       {0xE332B, 0x7B0B},
+       {0xE332C, 0x7B14},
+       {0xE332D, 0x7C8E},
+       {0xE332E, 0x7C86},
+       {0xE3330, 0x7C87},
+       {0xE3331, 0x7C83},
+       {0xE3332, 0x7C8B},
+       {0xE3337, 0x7D24},
+       {0xE333B, 0x7D25},
+       {0xE333C, 0x7F62},
+       {0xE333D, 0x7F93},
+       {0xE333E, 0x7F99},
+       {0xE333F, 0x7F97},
+       {0xE3342, 0x7FC4},
+       {0xE3343, 0x7FC6},
+       {0xE3344, 0x800A},
+       {0xE3347, 0x8040},
+       {0xE3348, 0x803C},
+       {0xE3349, 0x803B},
+       {0xE334A, 0x80F6},
+       {0xE334B, 0x80FF},
+       {0xE334C, 0x80EE},
+       {0xE334D, 0x8104},
+       {0xE334E, 0x8103},
+       {0xE334F, 0x8107},
+       {0xE3352, 0x80F7},
+       {0xE3355, 0x822D},
+       {0xE3357, 0x8227},
+       {0xE3358, 0x8229},
+       {0xE3359, 0x831F},
+       {0xE335A, 0x8357},
+       {0xE335F, 0x8321},
+       {0xE3362, 0x8318},
+       {0xE3363, 0x8358},
+       {0xE3369, 0x8684},
+       {0xE336A, 0x869F},
+       {0xE336B, 0x869B},
+       {0xE336C, 0x8689},
+       {0xE336D, 0x86A6},
+       {0xE336E, 0x8692},
+       {0xE336F, 0x868F},
+       {0xE3370, 0x86A0},
+       {0xE3371, 0x884F},
+       {0xE3372, 0x8878},
+       {0xE3373, 0x887A},
+       {0xE3374, 0x886E},
+       {0xE3375, 0x887B},
+       {0xE3376, 0x8884},
+       {0xE3377, 0x8873},
+       {0xE337A, 0x8A0D},
+       {0xE337B, 0x8A0B},
+       {0xE337C, 0x8A19},
+       {0xE3425, 0x8FF9},
+       {0xE3426, 0x9009},
+       {0xE3427, 0x9008},
+       {0xE3429, 0x90DE},
+       {0xE342A, 0x9151},
+       {0xE342D, 0x91DB},
+       {0xE342E, 0x91DF},
+       {0xE342F, 0x91DE},
+       {0xE3430, 0x91D6},
+       {0xE3431, 0x91E0},
+       {0xE3432, 0x9585},
+       {0xE3433, 0x9660},
+       {0xE3434, 0x9659},
+       {0xE3436, 0x9656},
+       {0xE3439, 0x96BD},
+       {0xE343C, 0x5042},
+       {0xE343D, 0x5059},
+       {0xE343F, 0x5044},
+       {0xE3440, 0x5066},
+       {0xE3441, 0x5052},
+       {0xE3442, 0x5054},
+       {0xE3443, 0x5071},
+       {0xE3444, 0x5050},
+       {0xE3445, 0x507B},
+       {0xE3446, 0x507C},
+       {0xE3447, 0x5058},
+       {0xE344A, 0x5079},
+       {0xE344B, 0x506C},
+       {0xE344C, 0x5078},
+       {0xE344D, 0x51A8},
+       {0xE344E, 0x51D1},
+       {0xE344F, 0x51CF},
+       {0xE3450, 0x5268},
+       {0xE3451, 0x5276},
+       {0xE3452, 0x52D4},
+       {0xE3454, 0x53A0},
+       {0xE3455, 0x53C4},
+       {0xE3457, 0x5558},
+       {0xE3458, 0x554C},
+       {0xE3459, 0x5568},
+       {0xE345B, 0x5549},
+       {0xE345E, 0x555D},
+       {0xE345F, 0x5529},
+       {0xE3461, 0x5554},
+       {0xE3462, 0x5553},
+       {0xE3464, 0x555A},
+       {0xE3466, 0x553A},
+       {0xE3467, 0x553F},
+       {0xE3468, 0x552B},
+       {0xE3469, 0x57EA},
+       {0xE346B, 0x57EF},
+       {0xE346E, 0x57DD},
+       {0xE346F, 0x57FE},
+       {0xE3471, 0x57DE},
+       {0xE3472, 0x57E6},
+       {0xE3474, 0x57E8},
+       {0xE3475, 0x57FF},
+       {0xE3476, 0x5803},
+       {0xE3477, 0x58F7},
+       {0xE3478, 0x68A6},
+       {0xE3479, 0x591F},
+       {0xE347B, 0x595B},
+       {0xE347C, 0x595D},
+       {0xE347D, 0x595E},
+       {0xE3522, 0x5A2B},
+       {0xE3524, 0x5A3B},
+       {0xE3527, 0x5A61},
+       {0xE3528, 0x5A3A},
+       {0xE3529, 0x5A6E},
+       {0xE352A, 0x5A4B},
+       {0xE352B, 0x5A6B},
+       {0xE352E, 0x5A45},
+       {0xE352F, 0x5A4E},
+       {0xE3530, 0x5A68},
+       {0xE3531, 0x5A3D},
+       {0xE3532, 0x5A71},
+       {0xE3533, 0x5A3F},
+       {0xE3534, 0x5A6F},
+       {0xE3535, 0x5A75},
+       {0xE3537, 0x5A73},
+       {0xE3538, 0x5A2C},
+       {0xE3539, 0x5A59},
+       {0xE353A, 0x5A54},
+       {0xE353B, 0x5A4F},
+       {0xE353C, 0x5A63},
+       {0xE353F, 0x5BC8},
+       {0xE3541, 0x5BC3},
+       {0xE3543, 0x5C5B},
+       {0xE3544, 0x5C61},
+       {0xE3546, 0x5D21},
+       {0xE3547, 0x5D0A},
+       {0xE3548, 0x5D09},
+       {0xE354A, 0x5D2C},
+       {0xE354B, 0x5D08},
+       {0xE354E, 0x5D2A},
+       {0xE354F, 0x5D15},
+       {0xE3551, 0x5D10},
+       {0xE3552, 0x5D13},
+       {0xE3554, 0x5D2F},
+       {0xE3555, 0x5D18},
+       {0xE3557, 0x5DE3},
+       {0xE3558, 0x5E39},
+       {0xE3559, 0x5E35},
+       {0xE355A, 0x5E3A},
+       {0xE355B, 0x5E32},
+       {0xE3560, 0x5EBB},
+       {0xE3561, 0x5EBA},
+       {0xE3562, 0x5F34},
+       {0xE3563, 0x5F39},
+       {0xE3568, 0x6098},
+       {0xE356A, 0x60D0},
+       {0xE356E, 0x60D7},
+       {0xE356F, 0x60AA},
+       {0xE3571, 0x60A1},
+       {0xE3572, 0x60A4},
+       {0xE3574, 0x60EE},
+       {0xE3576, 0x60E7},
+       {0xE3579, 0x60DE},
+       {0xE357C, 0x637E},
+       {0xE357D, 0x638B},
+       {0xE3622, 0x6379},
+       {0xE3623, 0x6386},
+       {0xE3624, 0x6393},
+       {0xE3626, 0x6373},
+       {0xE3627, 0x636A},
+       {0xE3629, 0x636C},
+       {0xE362B, 0x637F},
+       {0xE362D, 0x63B2},
+       {0xE362E, 0x63BA},
+       {0xE3631, 0x6366},
+       {0xE3632, 0x6374},
+       {0xE3634, 0x655A},
+       {0xE3636, 0x654E},
+       {0xE3637, 0x654D},
+       {0xE3638, 0x658D},
+       {0xE3639, 0x658E},
+       {0xE363A, 0x65AD},
+       {0xE363C, 0x65C7},
+       {0xE363D, 0x65CA},
+       {0xE363F, 0x65C9},
+       {0xE3641, 0x65E3},
+       {0xE3642, 0x6657},
+       {0xE3644, 0x6663},
+       {0xE3645, 0x6667},
+       {0xE3646, 0x671A},
+       {0xE3647, 0x6719},
+       {0xE3648, 0x6716},
+       {0xE364B, 0x689E},
+       {0xE364C, 0x68B6},
+       {0xE364D, 0x6898},
+       {0xE364E, 0x6873},
+       {0xE3650, 0x689A},
+       {0xE3651, 0x688E},
+       {0xE3652, 0x68B7},
+       {0xE3653, 0x68DB},
+       {0xE3654, 0x68A5},
+       {0xE3655, 0x686C},
+       {0xE3656, 0x68C1},
+       {0xE3657, 0x6884},
+       {0xE365A, 0x6895},
+       {0xE365B, 0x687A},
+       {0xE365C, 0x6899},
+       {0xE365E, 0x68B8},
+       {0xE365F, 0x68B9},
+       {0xE3660, 0x6870},
+       {0xE3662, 0x6B35},
+       {0xE3664, 0x6B90},
+       {0xE3665, 0x6BBB},
+       {0xE3666, 0x6BED},
+       {0xE366A, 0x6DC1},
+       {0xE366B, 0x6DC3},
+       {0xE366C, 0x6DCE},
+       {0xE366F, 0x6DAD},
+       {0xE3670, 0x6E04},
+       {0xE3672, 0x6DB9},
+       {0xE3674, 0x6DE7},
+       {0xE3676, 0x6E08},
+       {0xE3677, 0x6E06},
+       {0xE3679, 0x6E0A},
+       {0xE367A, 0x6DB0},
+       {0xE367C, 0x6DF8},
+       {0xE367D, 0x6E0C},
+       {0xE3721, 0x6DB1},
+       {0xE3723, 0x6E02},
+       {0xE3724, 0x6E07},
+       {0xE3725, 0x6E09},
+       {0xE3726, 0x6E01},
+       {0xE3727, 0x6E17},
+       {0xE3728, 0x6DFF},
+       {0xE3729, 0x6E12},
+       {0xE372C, 0x7103},
+       {0xE372D, 0x7107},
+       {0xE372E, 0x7101},
+       {0xE372F, 0x70F5},
+       {0xE3730, 0x70F1},
+       {0xE3731, 0x7108},
+       {0xE3732, 0x70F2},
+       {0xE3733, 0x710F},
+       {0xE3735, 0x70FE},
+       {0xE3739, 0x731A},
+       {0xE373A, 0x7310},
+       {0xE373B, 0x730E},
+       {0xE373C, 0x7402},
+       {0xE373D, 0x73F3},
+       {0xE3740, 0x73FB},
+       {0xE3744, 0x751B},
+       {0xE3745, 0x7523},
+       {0xE3746, 0x7561},
+       {0xE3747, 0x7568},
+       {0xE3749, 0x7567},
+       {0xE374A, 0x75D3},
+       {0xE374D, 0x7690},
+       {0xE3750, 0x76D5},
+       {0xE3751, 0x76D7},
+       {0xE3752, 0x76D6},
+       {0xE3753, 0x7730},
+       {0xE3755, 0x7726},
+       {0xE3757, 0x7740},
+       {0xE3759, 0x771E},
+       {0xE375D, 0x7847},
+       {0xE375F, 0x784B},
+       {0xE3760, 0x7851},
+       {0xE3761, 0x784F},
+       {0xE3762, 0x7842},
+       {0xE3763, 0x7846},
+       {0xE3765, 0x796E},
+       {0xE3766, 0x796C},
+       {0xE3767, 0x79F2},
+       {0xE3769, 0x79F1},
+       {0xE376A, 0x79F5},
+       {0xE376B, 0x79F3},
+       {0xE376C, 0x79F9},
+       {0xE3770, 0x7A9A},
+       {0xE3771, 0x7A93},
+       {0xE3772, 0x7A91},
+       {0xE3773, 0x7AE1},
+       {0xE3776, 0x7B21},
+       {0xE3777, 0x7B1C},
+       {0xE3778, 0x7B16},
+       {0xE3779, 0x7B17},
+       {0xE377A, 0x7B36},
+       {0xE377B, 0x7B1F},
+       {0xE377D, 0x7C93},
+       {0xE377E, 0x7C99},
+       {0xE3821, 0x7C9A},
+       {0xE3822, 0x7C9C},
+       {0xE3824, 0x7D49},
+       {0xE3826, 0x7D34},
+       {0xE3827, 0x7D37},
+       {0xE3829, 0x7D2D},
+       {0xE382B, 0x7D4C},
+       {0xE382E, 0x7D48},
+       {0xE3831, 0x7F3B},
+       {0xE3836, 0x8008},
+       {0xE3837, 0x801A},
+       {0xE3839, 0x801D},
+       {0xE383B, 0x8049},
+       {0xE383C, 0x8045},
+       {0xE383D, 0x8044},
+       {0xE383E, 0x7C9B},
+       {0xE3841, 0x812A},
+       {0xE3842, 0x812E},
+       {0xE3845, 0x8131},
+       {0xE3847, 0x811A},
+       {0xE3848, 0x8134},
+       {0xE3849, 0x8117},
+       {0xE384D, 0x831D},
+       {0xE384E, 0x8371},
+       {0xE384F, 0x8384},
+       {0xE3850, 0x8380},
+       {0xE3851, 0x8372},
+       {0xE3852, 0x83A1},
+       {0xE3854, 0x8379},
+       {0xE3855, 0x8391},
+       {0xE3857, 0x839F},
+       {0xE3858, 0x83AD},
+       {0xE385B, 0x8323},
+       {0xE385D, 0x8385},
+       {0xE385E, 0x839C},
+       {0xE385F, 0x83B7},
+       {0xE3860, 0x8658},
+       {0xE3861, 0x865A},
+       {0xE3863, 0x8657},
+       {0xE3864, 0x86B2},
+       {0xE3866, 0x86AE},
+       {0xE386A, 0x8845},
+       {0xE386B, 0x889C},
+       {0xE386C, 0x8894},
+       {0xE386D, 0x88A3},
+       {0xE386E, 0x888F},
+       {0xE386F, 0x88A5},
+       {0xE3870, 0x88A9},
+       {0xE3871, 0x88A6},
+       {0xE3872, 0x888A},
+       {0xE3873, 0x88A0},
+       {0xE3874, 0x8890},
+       {0xE3875, 0x8992},
+       {0xE3876, 0x8991},
+       {0xE3877, 0x8994},
+       {0xE3879, 0x8A26},
+       {0xE387A, 0x8A32},
+       {0xE387B, 0x8A28},
+       {0xE387E, 0x8A1C},
+       {0xE3922, 0x8A2B},
+       {0xE3923, 0x8A20},
+       {0xE3925, 0x8A29},
+       {0xE3929, 0x8A21},
+       {0xE392A, 0x8C3A},
+       {0xE392C, 0x8C5B},
+       {0xE392D, 0x8C58},
+       {0xE392E, 0x8C7C},
+       {0xE3930, 0x8CA6},
+       {0xE3931, 0x8CAE},
+       {0xE3932, 0x8CAD},
+       {0xE3933, 0x8D65},
+       {0xE3935, 0x8D7E},
+       {0xE3937, 0x8D7C},
+       {0xE3938, 0x8D7F},
+       {0xE3939, 0x8D7A},
+       {0xE393A, 0x8DBD},
+       {0xE393D, 0x8DC0},
+       {0xE393E, 0x8DBB},
+       {0xE393F, 0x8EAD},
+       {0xE3940, 0x8EAF},
+       {0xE3941, 0x8ED6},
+       {0xE3947, 0x8ED9},
+       {0xE394A, 0x9012},
+       {0xE394B, 0x900E},
+       {0xE394C, 0x9025},
+       {0xE394E, 0x9013},
+       {0xE394F, 0x90EE},
+       {0xE3951, 0x90AB},
+       {0xE3952, 0x90F7},
+       {0xE3954, 0x9159},
+       {0xE3955, 0x9154},
+       {0xE3956, 0x91F2},
+       {0xE3957, 0x91F0},
+       {0xE3958, 0x91E5},
+       {0xE3959, 0x91F6},
+       {0xE395C, 0x9587},
+       {0xE395E, 0x965A},
+       {0xE3961, 0x966E},
+       {0xE3965, 0x9679},
+       {0xE3967, 0x98E1},
+       {0xE3968, 0x98E6},
+       {0xE396A, 0x9EC4},
+       {0xE396B, 0x9ED2},
+       {0xE396C, 0x4E80},
+       {0xE396E, 0x4E81},
+       {0xE396F, 0x508F},
+       {0xE3970, 0x5097},
+       {0xE3971, 0x5088},
+       {0xE3972, 0x5089},
+       {0xE3975, 0x5081},
+       {0xE3976, 0x5160},
+       {0xE3979, 0x5E42},
+       {0xE397A, 0x51D3},
+       {0xE397D, 0x51D2},
+       {0xE397E, 0x51D6},
+       {0xE3A21, 0x5273},
+       {0xE3A23, 0x5270},
+       {0xE3A27, 0x53A8},
+       {0xE3A28, 0x53A6},
+       {0xE3A29, 0x53C5},
+       {0xE3A2A, 0x5597},
+       {0xE3A2B, 0x55DE},
+       {0xE3A2E, 0x5596},
+       {0xE3A2F, 0x55B4},
+       {0xE3A31, 0x5585},
+       {0xE3A33, 0x559B},
+       {0xE3A34, 0x55A0},
+       {0xE3A36, 0x5559},
+       {0xE3A38, 0x5586},
+       {0xE3A3B, 0x55AF},
+       {0xE3A3C, 0x557A},
+       {0xE3A40, 0x559E},
+       {0xE3A42, 0x55A9},
+       {0xE3A43, 0x570F},
+       {0xE3A44, 0x570E},
+       {0xE3A45, 0x581A},
+       {0xE3A47, 0x581F},
+       {0xE3A49, 0x583C},
+       {0xE3A4A, 0x5818},
+       {0xE3A4B, 0x583E},
+       {0xE3A4C, 0x5826},
+       {0xE3A4E, 0x583A},
+       {0xE3A50, 0x5822},
+       {0xE3A52, 0x58FB},
+       {0xE3A53, 0x5963},
+       {0xE3A54, 0x5964},
+       {0xE3A56, 0x5AA8},
+       {0xE3A57, 0x5AA3},
+       {0xE3A58, 0x5A82},
+       {0xE3A59, 0x5A88},
+       {0xE3A5A, 0x5AA1},
+       {0xE3A5B, 0x5A85},
+       {0xE3A5C, 0x5A98},
+       {0xE3A5E, 0x5A99},
+       {0xE3A60, 0x5A89},
+       {0xE3A61, 0x5A81},
+       {0xE3A62, 0x5A96},
+       {0xE3A63, 0x5A80},
+       {0xE3A66, 0x5A91},
+       {0xE3A6B, 0x5ACF},
+       {0xE3A72, 0x5A87},
+       {0xE3A73, 0x5AA0},
+       {0xE3A75, 0x5A79},
+       {0xE3A77, 0x5A86},
+       {0xE3A78, 0x5AAB},
+       {0xE3A79, 0x5AAA},
+       {0xE3A7A, 0x5AA4},
+       {0xE3A7B, 0x5A8D},
+       {0xE3A7C, 0x5A7E},
+       {0xE3A7E, 0x5BD5},
+       {0xE3B24, 0x5C1E},
+       {0xE3B25, 0x5C5F},
+       {0xE3B26, 0x5C5E},
+       {0xE3B27, 0x5D44},
+       {0xE3B28, 0x5D3E},
+       {0xE3B2A, 0x5D48},
+       {0xE3B2B, 0x5D1C},
+       {0xE3B2D, 0x5D5B},
+       {0xE3B2E, 0x5D4D},
+       {0xE3B31, 0x5D57},
+       {0xE3B33, 0x5D53},
+       {0xE3B34, 0x5D4F},
+       {0xE3B36, 0x5D3B},
+       {0xE3B37, 0x5D46},
+       {0xE3B3A, 0x5E46},
+       {0xE3B3B, 0x5E47},
+       {0xE3B3D, 0x5E48},
+       {0xE3B3E, 0x5EC0},
+       {0xE3B3F, 0x5EBD},
+       {0xE3B40, 0x5EBF},
+       {0xE3B42, 0x5F11},
+       {0xE3B44, 0x5F3E},
+       {0xE3B45, 0x5F3B},
+       {0xE3B47, 0x5F3A},
+       {0xE3B4B, 0x5FA7},
+       {0xE3B4D, 0x60EA},
+       {0xE3B4F, 0x6107},
+       {0xE3B50, 0x6122},
+       {0xE3B51, 0x610C},
+       {0xE3B54, 0x60B3},
+       {0xE3B55, 0x60D6},
+       {0xE3B56, 0x60D2},
+       {0xE3B58, 0x60E3},
+       {0xE3B59, 0x60E5},
+       {0xE3B5A, 0x60E9},
+       {0xE3B5D, 0x6111},
+       {0xE3B5E, 0x60FD},
+       {0xE3B61, 0x611E},
+       {0xE3B62, 0x6120},
+       {0xE3B63, 0x6121},
+       {0xE3B64, 0x621E},
+       {0xE3B66, 0x63E2},
+       {0xE3B67, 0x63DE},
+       {0xE3B68, 0x63E6},
+       {0xE3B6D, 0x63F8},
+       {0xE3B6F, 0x63FE},
+       {0xE3B70, 0x63C1},
+       {0xE3B71, 0x63BF},
+       {0xE3B72, 0x63F7},
+       {0xE3B73, 0x63D1},
+       {0xE3B74, 0x655F},
+       {0xE3B75, 0x6560},
+       {0xE3B76, 0x6561},
+       {0xE3B79, 0x65D1},
+       {0xE3B7C, 0x667D},
+       {0xE3B7D, 0x666B},
+       {0xE3B7E, 0x667F},
+       {0xE3C23, 0x6673},
+       {0xE3C24, 0x6681},
+       {0xE3C25, 0x666D},
+       {0xE3C26, 0x6669},
+       {0xE3C29, 0x671E},
+       {0xE3C2A, 0x68ED},
+       {0xE3C2F, 0x6903},
+       {0xE3C31, 0x68FE},
+       {0xE3C32, 0x68E5},
+       {0xE3C33, 0x691E},
+       {0xE3C34, 0x6902},
+       {0xE3C37, 0x6909},
+       {0xE3C38, 0x68CA},
+       {0xE3C39, 0x6900},
+       {0xE3C3B, 0x6901},
+       {0xE3C3C, 0x6918},
+       {0xE3C3D, 0x68E2},
+       {0xE3C3E, 0x68CF},
+       {0xE3C40, 0x692E},
+       {0xE3C41, 0x68C5},
+       {0xE3C42, 0x68FF},
+       {0xE3C44, 0x691C},
+       {0xE3C45, 0x68C3},
+       {0xE3C47, 0x6B6F},
+       {0xE3C49, 0x6B6E},
+       {0xE3C4B, 0x6BBE},
+       {0xE3C4D, 0x6BF4},
+       {0xE3C4E, 0x6C2D},
+       {0xE3C50, 0x6DB6},
+       {0xE3C51, 0x6E75},
+       {0xE3C52, 0x6E1E},
+       {0xE3C54, 0x6E18},
+       {0xE3C56, 0x6E48},
+       {0xE3C58, 0x6E4F},
+       {0xE3C5A, 0x6E42},
+       {0xE3C5B, 0x6E6A},
+       {0xE3C5C, 0x6E70},
+       {0xE3C5D, 0x6DFE},
+       {0xE3C60, 0x6E6D},
+       {0xE3C62, 0x6E7B},
+       {0xE3C63, 0x6E7E},
+       {0xE3C64, 0x6E59},
+       {0xE3C66, 0x6E57},
+       {0xE3C68, 0x6E80},
+       {0xE3C69, 0x6E50},
+       {0xE3C6B, 0x6E29},
+       {0xE3C6C, 0x6E76},
+       {0xE3C6D, 0x6E2A},
+       {0xE3C6E, 0x6E4C},
+       {0xE3C6F, 0x712A},
+       {0xE3C71, 0x7135},
+       {0xE3C72, 0x712C},
+       {0xE3C73, 0x7137},
+       {0xE3C74, 0x711D},
+       {0xE3C77, 0x7138},
+       {0xE3C79, 0x7134},
+       {0xE3C7A, 0x712B},
+       {0xE3C7B, 0x7133},
+       {0xE3C7C, 0x7127},
+       {0xE3C7D, 0x7124},
+       {0xE3D21, 0x712D},
+       {0xE3D22, 0x7232},
+       {0xE3D23, 0x7283},
+       {0xE3D24, 0x7282},
+       {0xE3D25, 0x7287},
+       {0xE3D26, 0x7306},
+       {0xE3D27, 0x7324},
+       {0xE3D28, 0x7338},
+       {0xE3D29, 0x732A},
+       {0xE3D2A, 0x732C},
+       {0xE3D2B, 0x732B},
+       {0xE3D2D, 0x732F},
+       {0xE3D2E, 0x7328},
+       {0xE3D2F, 0x7417},
+       {0xE3D32, 0x7419},
+       {0xE3D33, 0x7438},
+       {0xE3D35, 0x741F},
+       {0xE3D36, 0x7414},
+       {0xE3D37, 0x743C},
+       {0xE3D38, 0x73F7},
+       {0xE3D39, 0x741C},
+       {0xE3D3A, 0x7415},
+       {0xE3D3B, 0x7418},
+       {0xE3D3C, 0x7439},
+       {0xE3D3D, 0x74F9},
+       {0xE3D3E, 0x7524},
+       {0xE3D42, 0x756E},
+       {0xE3D43, 0x756D},
+       {0xE3D44, 0x7571},
+       {0xE3D45, 0x758E},
+       {0xE3D47, 0x75E5},
+       {0xE3D4C, 0x7694},
+       {0xE3D4D, 0x76B3},
+       {0xE3D4F, 0x76D9},
+       {0xE3D51, 0x7748},
+       {0xE3D52, 0x7749},
+       {0xE3D53, 0x7743},
+       {0xE3D56, 0x7742},
+       {0xE3D57, 0x77DF},
+       {0xE3D59, 0x7863},
+       {0xE3D5A, 0x7876},
+       {0xE3D5C, 0x785F},
+       {0xE3D5D, 0x7866},
+       {0xE3D5E, 0x7966},
+       {0xE3D5F, 0x7971},
+       {0xE3D62, 0x7976},
+       {0xE3D63, 0x7984},
+       {0xE3D64, 0x7975},
+       {0xE3D65, 0x79FF},
+       {0xE3D66, 0x7A07},
+       {0xE3D68, 0x7A0E},
+       {0xE3D69, 0x7A09},
+       {0xE3D70, 0x7AE7},
+       {0xE3D71, 0x7AE2},
+       {0xE3D72, 0x7B55},
+       {0xE3D75, 0x7B43},
+       {0xE3D76, 0x7B57},
+       {0xE3D77, 0x7B6C},
+       {0xE3D78, 0x7B42},
+       {0xE3D79, 0x7B53},
+       {0xE3D7B, 0x7B41},
+       {0xE3D7E, 0x7CA7},
+       {0xE3E21, 0x7CA0},
+       {0xE3E22, 0x7CA6},
+       {0xE3E23, 0x7CA4},
+       {0xE3E24, 0x7D74},
+       {0xE3E26, 0x7D59},
+       {0xE3E28, 0x7D60},
+       {0xE3E29, 0x7D57},
+       {0xE3E2A, 0x7D6C},
+       {0xE3E2B, 0x7D7E},
+       {0xE3E2C, 0x7D64},
+       {0xE3E2E, 0x7D5A},
+       {0xE3E2F, 0x7D5D},
+       {0xE3E33, 0x7D76},
+       {0xE3E34, 0x7D4D},
+       {0xE3E35, 0x7D75},
+       {0xE3E37, 0x7FD3},
+       {0xE3E38, 0x7FD6},
+       {0xE3E3B, 0x8060},
+       {0xE3E3C, 0x804E},
+       {0xE3E3D, 0x8145},
+       {0xE3E3E, 0x813B},
+       {0xE3E40, 0x8148},
+       {0xE3E41, 0x8142},
+       {0xE3E42, 0x8149},
+       {0xE3E43, 0x8140},
+       {0xE3E44, 0x8114},
+       {0xE3E45, 0x8141},
+       {0xE3E47, 0x81EF},
+       {0xE3E48, 0x81F6},
+       {0xE3E49, 0x8203},
+       {0xE3E4B, 0x83ED},
+       {0xE3E4D, 0x83DA},
+       {0xE3E4E, 0x8418},
+       {0xE3E4F, 0x83D2},
+       {0xE3E50, 0x8408},
+       {0xE3E52, 0x8400},
+       {0xE3E56, 0x8417},
+       {0xE3E57, 0x8346},
+       {0xE3E58, 0x8414},
+       {0xE3E59, 0x83D3},
+       {0xE3E5A, 0x8405},
+       {0xE3E5B, 0x841F},
+       {0xE3E5C, 0x8402},
+       {0xE3E5D, 0x8416},
+       {0xE3E5E, 0x83CD},
+       {0xE3E5F, 0x83E6},
+       {0xE3E61, 0x865D},
+       {0xE3E62, 0x86D5},
+       {0xE3E63, 0x86E1},
+       {0xE3E68, 0x86EE},
+       {0xE3E69, 0x8847},
+       {0xE3E6A, 0x8846},
+       {0xE3E6D, 0x88BB},
+       {0xE3E6F, 0x88BF},
+       {0xE3E70, 0x88B4},
+       {0xE3E72, 0x88B5},
+       {0xE3E74, 0x899A},
+       {0xE3E75, 0x8A43},
+       {0xE3E78, 0x8A5A},
+       {0xE3E7C, 0x8A35},
+       {0xE3E7D, 0x8A38},
+       {0xE3E7E, 0x8A42},
+       {0xE3F21, 0x8A49},
+       {0xE3F22, 0x8A5D},
+       {0xE3F23, 0x8A4B},
+       {0xE3F24, 0x8A3D},
+       {0xE3F29, 0x8C60},
+       {0xE3F2A, 0x8C5E},
+       {0xE3F2B, 0x8C7F},
+       {0xE3F2C, 0x8C7E},
+       {0xE3F2D, 0x8C83},
+       {0xE3F2F, 0x8CB1},
+       {0xE3F30, 0x8D87},
+       {0xE3F33, 0x8D88},
+       {0xE3F34, 0x8D83},
+       {0xE3F37, 0x8D86},
+       {0xE3F38, 0x8D8B},
+       {0xE3F39, 0x8D82},
+       {0xE3F3A, 0x8DCA},
+       {0xE3F3B, 0x8DD2},
+       {0xE3F3E, 0x8DD4},
+       {0xE3F3F, 0x8DC9},
+       {0xE3F40, 0x8EB0},
+       {0xE3F44, 0x8EF2},
+       {0xE3F45, 0x8EE4},
+       {0xE3F46, 0x8EF3},
+       {0xE3F47, 0x8EEA},
+       {0xE3F49, 0x8EFD},
+       {0xE3F4B, 0x8F9D},
+       {0xE3F4C, 0x902B},
+       {0xE3F4D, 0x902A},
+       {0xE3F4F, 0x9028},
+       {0xE3F50, 0x9029},
+       {0xE3F51, 0x902C},
+       {0xE3F54, 0x903A},
+       {0xE3F55, 0x9030},
+       {0xE3F56, 0x9037},
+       {0xE3F57, 0x903B},
+       {0xE3F59, 0x910A},
+       {0xE3F5D, 0x91FE},
+       {0xE3F5E, 0x9220},
+       {0xE3F60, 0x920B},
+       {0xE3F62, 0x9218},
+       {0xE3F63, 0x9222},
+       {0xE3F65, 0x921B},
+       {0xE3F66, 0x9208},
+       {0xE3F68, 0x920E},
+       {0xE3F69, 0x9213},
+       {0xE3F6C, 0x9595},
+       {0xE3F70, 0x968C},
+       {0xE3F71, 0x967B},
+       {0xE3F72, 0x967F},
+       {0xE3F73, 0x9681},
+       {0xE3F75, 0x9682},
+       {0xE3F7B, 0x96EE},
+       {0xE3F7C, 0x96ED},
+       {0xE3F7E, 0x96EC},
+       {0xE4021, 0x975F},
+       {0xE4022, 0x976F},
+       {0xE4024, 0x976D},
+       {0xE402B, 0x98F0},
+       {0xE402F, 0x9AA9},
+       {0xE4032, 0x9AE0},
+       {0xE4033, 0x4EB7},
+       {0xE4036, 0x50CC},
+       {0xE4037, 0x50BC},
+       {0xE4039, 0x50AA},
+       {0xE403A, 0x50B9},
+       {0xE403C, 0x50AB},
+       {0xE403D, 0x50C3},
+       {0xE403E, 0x50CD},
+       {0xE403F, 0x517E},
+       {0xE4040, 0x527E},
+       {0xE4041, 0x5279},
+       {0xE4044, 0x52E1},
+       {0xE4045, 0x52E0},
+       {0xE4046, 0x52E7},
+       {0xE4047, 0x5380},
+       {0xE4048, 0x53AB},
+       {0xE4049, 0x53AA},
+       {0xE404A, 0x53A9},
+       {0xE404B, 0x53E0},
+       {0xE404C, 0x55EA},
+       {0xE404E, 0x55D7},
+       {0xE4051, 0x55C1},
+       {0xE4052, 0x5715},
+       {0xE4054, 0x586C},
+       {0xE4056, 0x585C},
+       {0xE4057, 0x5850},
+       {0xE4058, 0x5861},
+       {0xE4059, 0x586A},
+       {0xE405A, 0x5869},
+       {0xE405B, 0x5856},
+       {0xE405C, 0x5860},
+       {0xE405D, 0x5866},
+       {0xE405E, 0x585F},
+       {0xE405F, 0x5923},
+       {0xE4060, 0x5966},
+       {0xE4061, 0x5968},
+       {0xE4064, 0x5ACE},
+       {0xE4066, 0x5AC5},
+       {0xE4067, 0x5AC3},
+       {0xE406A, 0x5AD0},
+       {0xE4071, 0x5B74},
+       {0xE4072, 0x5B76},
+       {0xE4073, 0x5BDC},
+       {0xE4074, 0x5BD7},
+       {0xE4075, 0x5BDA},
+       {0xE4076, 0x5BDB},
+       {0xE4078, 0x5C20},
+       {0xE4079, 0x5D6D},
+       {0xE407A, 0x5D66},
+       {0xE407C, 0x5D64},
+       {0xE407D, 0x5D6E},
+       {0xE4121, 0x5D60},
+       {0xE4122, 0x5F42},
+       {0xE4123, 0x5F5A},
+       {0xE4124, 0x5F6E},
+       {0xE4127, 0x6130},
+       {0xE4128, 0x613A},
+       {0xE4129, 0x612A},
+       {0xE412A, 0x6143},
+       {0xE412B, 0x6119},
+       {0xE412C, 0x6131},
+       {0xE412E, 0x613D},
+       {0xE4132, 0x6408},
+       {0xE4133, 0x6432},
+       {0xE4134, 0x6438},
+       {0xE4136, 0x6431},
+       {0xE4138, 0x6419},
+       {0xE413A, 0x6411},
+       {0xE413D, 0x6429},
+       {0xE413E, 0x641D},
+       {0xE4142, 0x643C},
+       {0xE4144, 0x6446},
+       {0xE4145, 0x6447},
+       {0xE4148, 0x643A},
+       {0xE4149, 0x6407},
+       {0xE414B, 0x656B},
+       {0xE414D, 0x6570},
+       {0xE414E, 0x656D},
+       {0xE4150, 0x65E4},
+       {0xE4151, 0x6693},
+       {0xE4156, 0x668F},
+       {0xE4159, 0x6692},
+       {0xE415B, 0x668E},
+       {0xE415D, 0x6946},
+       {0xE4165, 0x6931},
+       {0xE4168, 0x693E},
+       {0xE416A, 0x697C},
+       {0xE416B, 0x6943},
+       {0xE416D, 0x6973},
+       {0xE416F, 0x6955},
+       {0xE4172, 0x6985},
+       {0xE4173, 0x694D},
+       {0xE4174, 0x6950},
+       {0xE4175, 0x6947},
+       {0xE4176, 0x6967},
+       {0xE4177, 0x6936},
+       {0xE4178, 0x6964},
+       {0xE4179, 0x6961},
+       {0xE417B, 0x697D},
+       {0xE417C, 0x6B44},
+       {0xE417D, 0x6B40},
+       {0xE417E, 0x6B71},
+       {0xE4221, 0x6B73},
+       {0xE4222, 0x6B9C},
+       {0xE4226, 0x6BC1},
+       {0xE4228, 0x6BFA},
+       {0xE4229, 0x6C31},
+       {0xE422A, 0x6C32},
+       {0xE422D, 0x6EB8},
+       {0xE422E, 0x6EA8},
+       {0xE4230, 0x6E91},
+       {0xE4231, 0x6EBB},
+       {0xE4233, 0x6E9A},
+       {0xE4236, 0x6EA9},
+       {0xE4239, 0x6EB5},
+       {0xE423A, 0x6E6C},
+       {0xE423B, 0x6EE8},
+       {0xE423D, 0x6EDD},
+       {0xE423E, 0x6EDA},
+       {0xE423F, 0x6EE6},
+       {0xE4240, 0x6EAC},
+       {0xE4244, 0x6ED9},
+       {0xE4245, 0x6EE3},
+       {0xE4246, 0x6EE9},
+       {0xE4247, 0x6EDB},
+       {0xE4249, 0x716F},
+       {0xE424C, 0x7148},
+       {0xE424E, 0x714A},
+       {0xE424F, 0x716B},
+       {0xE4251, 0x714F},
+       {0xE4252, 0x7157},
+       {0xE4253, 0x7174},
+       {0xE4257, 0x7145},
+       {0xE4258, 0x7151},
+       {0xE4259, 0x716D},
+       {0xE425B, 0x7251},
+       {0xE425C, 0x7250},
+       {0xE425D, 0x724E},
+       {0xE425F, 0x7341},
+       {0xE4261, 0x732E},
+       {0xE4262, 0x7346},
+       {0xE4264, 0x7427},
+       {0xE4266, 0x7448},
+       {0xE4267, 0x7453},
+       {0xE4268, 0x743D},
+       {0xE426A, 0x745D},
+       {0xE426B, 0x7456},
+       {0xE426D, 0x741E},
+       {0xE426E, 0x7447},
+       {0xE426F, 0x7443},
+       {0xE4270, 0x7458},
+       {0xE4271, 0x7449},
+       {0xE4273, 0x744C},
+       {0xE4274, 0x7445},
+       {0xE4275, 0x743E},
+       {0xE4277, 0x7501},
+       {0xE4278, 0x751E},
+       {0xE427B, 0x757A},
+       {0xE427C, 0x75EE},
+       {0xE427D, 0x7602},
+       {0xE427E, 0x7697},
+       {0xE4321, 0x7698},
+       {0xE4325, 0x775D},
+       {0xE4326, 0x7764},
+       {0xE4327, 0x7753},
+       {0xE4328, 0x7758},
+       {0xE4329, 0x7882},
+       {0xE432A, 0x7890},
+       {0xE432B, 0x788A},
+       {0xE432D, 0x787A},
+       {0xE432E, 0x787D},
+       {0xE4330, 0x788B},
+       {0xE4331, 0x7878},
+       {0xE4334, 0x788D},
+       {0xE4335, 0x7888},
+       {0xE4336, 0x7892},
+       {0xE4337, 0x7881},
+       {0xE4338, 0x797E},
+       {0xE4339, 0x7983},
+       {0xE433D, 0x7980},
+       {0xE4341, 0x7A0F},
+       {0xE4344, 0x7A1D},
+       {0xE4346, 0x7AA1},
+       {0xE4347, 0x7AA4},
+       {0xE4349, 0x7AE9},
+       {0xE434A, 0x7AEA},
+       {0xE434C, 0x7B62},
+       {0xE434D, 0x7B6B},
+       {0xE434F, 0x7B5E},
+       {0xE4351, 0x7B79},
+       {0xE4354, 0x7B6F},
+       {0xE4355, 0x7B68},
+       {0xE4358, 0x7CAE},
+       {0xE435C, 0x7CB0},
+       {0xE435E, 0x7D90},
+       {0xE4360, 0x7D8A},
+       {0xE4362, 0x7D8B},
+       {0xE4363, 0x7D99},
+       {0xE4364, 0x7D95},
+       {0xE4366, 0x7D87},
+       {0xE4367, 0x7D78},
+       {0xE4368, 0x7D97},
+       {0xE4369, 0x7D89},
+       {0xE436A, 0x7D98},
+       {0xE436E, 0x7FA3},
+       {0xE4372, 0x7FDD},
+       {0xE4373, 0x8057},
+       {0xE4375, 0x8163},
+       {0xE4376, 0x816A},
+       {0xE4377, 0x816C},
+       {0xE437B, 0x815D},
+       {0xE437C, 0x8175},
+       {0xE437E, 0x815F},
+       {0xE4422, 0x817D},
+       {0xE4423, 0x816D},
+       {0xE4426, 0x8241},
+       {0xE4427, 0x844F},
+       {0xE4428, 0x8484},
+       {0xE442A, 0x847F},
+       {0xE442C, 0x8448},
+       {0xE442D, 0x842A},
+       {0xE442E, 0x847B},
+       {0xE442F, 0x8472},
+       {0xE4430, 0x8464},
+       {0xE4431, 0x842E},
+       {0xE4432, 0x845C},
+       {0xE4433, 0x8453},
+       {0xE4435, 0x8441},
+       {0xE4436, 0x84C8},
+       {0xE4438, 0x8462},
+       {0xE4439, 0x8480},
+       {0xE443A, 0x843E},
+       {0xE443B, 0x8483},
+       {0xE443C, 0x8471},
+       {0xE443E, 0x844A},
+       {0xE443F, 0x8455},
+       {0xE4440, 0x8458},
+       {0xE4444, 0x86FC},
+       {0xE4445, 0x86FD},
+       {0xE4446, 0x8715},
+       {0xE4448, 0x8716},
+       {0xE4449, 0x86FF},
+       {0xE444D, 0x8858},
+       {0xE444E, 0x88CF},
+       {0xE444F, 0x88E0},
+       {0xE4454, 0x89E7},
+       {0xE4455, 0x8A6A},
+       {0xE4456, 0x8A80},
+       {0xE4458, 0x8A6F},
+       {0xE4459, 0x8A65},
+       {0xE445B, 0x8A78},
+       {0xE445C, 0x8A7D},
+       {0xE445D, 0x8A88},
+       {0xE4460, 0x8A64},
+       {0xE4461, 0x8A7E},
+       {0xE4463, 0x8A67},
+       {0xE4464, 0x8C63},
+       {0xE4465, 0x8C88},
+       {0xE4467, 0x8CCD},
+       {0xE4469, 0x8CC9},
+       {0xE446B, 0x8DED},
+       {0xE4473, 0x8EB1},
+       {0xE4476, 0x8F04},
+       {0xE4477, 0x8F9E},
+       {0xE4478, 0x8FA0},
+       {0xE4479, 0x9043},
+       {0xE447A, 0x9046},
+       {0xE447B, 0x9048},
+       {0xE447C, 0x9045},
+       {0xE447D, 0x9040},
+       {0xE447E, 0x904C},
+       {0xE4523, 0x910C},
+       {0xE4524, 0x9113},
+       {0xE4525, 0x9115},
+       {0xE4527, 0x916B},
+       {0xE4528, 0x9167},
+       {0xE4529, 0x925D},
+       {0xE452A, 0x9255},
+       {0xE452B, 0x9235},
+       {0xE452D, 0x9259},
+       {0xE452E, 0x922F},
+       {0xE452F, 0x923C},
+       {0xE4530, 0x928F},
+       {0xE4531, 0x925C},
+       {0xE4532, 0x926A},
+       {0xE4533, 0x9262},
+       {0xE4534, 0x925F},
+       {0xE4535, 0x926B},
+       {0xE4536, 0x926E},
+       {0xE4537, 0x923B},
+       {0xE4538, 0x9244},
+       {0xE4539, 0x9241},
+       {0xE453A, 0x959A},
+       {0xE453C, 0x9599},
+       {0xE4540, 0x968F},
+       {0xE4542, 0x9696},
+       {0xE4546, 0x96F4},
+       {0xE4547, 0x96FC},
+       {0xE4549, 0x9755},
+       {0xE454B, 0x9779},
+       {0xE454F, 0x97EE},
+       {0xE4550, 0x97F5},
+       {0xE4552, 0x980B},
+       {0xE4554, 0x98F3},
+       {0xE4557, 0x98F7},
+       {0xE4558, 0x98FF},
+       {0xE4559, 0x98F5},
+       {0xE455B, 0x98EC},
+       {0xE455C, 0x98F1},
+       {0xE455F, 0x999A},
+       {0xE4561, 0x9AE2},
+       {0xE4562, 0x9B3D},
+       {0xE4563, 0x9B5D},
+       {0xE4564, 0x9CE8},
+       {0xE4566, 0x9CEB},
+       {0xE4567, 0x9CEF},
+       {0xE4568, 0x9CEE},
+       {0xE4569, 0x9E81},
+       {0xE456A, 0x9F14},
+       {0xE456B, 0x50D0},
+       {0xE456C, 0x50D9},
+       {0xE456D, 0x50DC},
+       {0xE456E, 0x50D8},
+       {0xE4570, 0x50E1},
+       {0xE4571, 0x50EB},
+       {0xE4574, 0x50F4},
+       {0xE4575, 0x50E2},
+       {0xE4576, 0x50DE},
+       {0xE457A, 0x51F4},
+       {0xE457E, 0x52ED},
+       {0xE4621, 0x52EA},
+       {0xE4623, 0x5332},
+       {0xE4625, 0x53AE},
+       {0xE4626, 0x53B0},
+       {0xE4628, 0x55FB},
+       {0xE4629, 0x5603},
+       {0xE462A, 0x560B},
+       {0xE462C, 0x5607},
+       {0xE462E, 0x55F8},
+       {0xE4630, 0x5628},
+       {0xE4631, 0x561E},
+       {0xE4633, 0x5618},
+       {0xE4634, 0x5611},
+       {0xE4635, 0x5651},
+       {0xE4636, 0x5605},
+       {0xE4637, 0x5717},
+       {0xE4638, 0x5892},
+       {0xE463A, 0x588C},
+       {0xE463C, 0x5878},
+       {0xE463D, 0x5884},
+       {0xE463E, 0x5873},
+       {0xE463F, 0x58AD},
+       {0xE4640, 0x5897},
+       {0xE4641, 0x5895},
+       {0xE4642, 0x5877},
+       {0xE4643, 0x5872},
+       {0xE4644, 0x5896},
+       {0xE4645, 0x588D},
+       {0xE4646, 0x5910},
+       {0xE4648, 0x596C},
+       {0xE464A, 0x5AE7},
+       {0xE464C, 0x5AE4},
+       {0xE464F, 0x5AEF},
+       {0xE4650, 0x5626},
+       {0xE4653, 0x5AF0},
+       {0xE4654, 0x5D7B},
+       {0xE4656, 0x5D83},
+       {0xE4659, 0x5D8B},
+       {0xE465A, 0x5D8C},
+       {0xE465C, 0x5D78},
+       {0xE465D, 0x5E52},
+       {0xE4660, 0x5ED0},
+       {0xE4661, 0x5ECF},
+       {0xE4663, 0x5FB3},
+       {0xE4664, 0x5FB4},
+       {0xE4668, 0x617B},
+       {0xE466A, 0x616F},
+       {0xE466B, 0x6181},
+       {0xE466C, 0x613C},
+       {0xE466D, 0x6142},
+       {0xE466E, 0x6138},
+       {0xE466F, 0x6133},
+       {0xE4671, 0x6160},
+       {0xE4672, 0x6169},
+       {0xE4673, 0x617D},
+       {0xE4674, 0x6186},
+       {0xE4675, 0x622C},
+       {0xE4676, 0x6228},
+       {0xE4678, 0x644C},
+       {0xE467A, 0x6457},
+       {0xE467B, 0x647C},
+       {0xE467E, 0x6455},
+       {0xE4721, 0x6462},
+       {0xE4722, 0x6471},
+       {0xE4723, 0x646A},
+       {0xE4724, 0x6456},
+       {0xE4725, 0x643B},
+       {0xE4726, 0x6481},
+       {0xE4728, 0x644F},
+       {0xE4729, 0x647E},
+       {0xE472A, 0x6464},
+       {0xE4730, 0x6571},
+       {0xE4733, 0x66A5},
+       {0xE4734, 0x669A},
+       {0xE4735, 0x669C},
+       {0xE4737, 0x66A6},
+       {0xE4739, 0x66A4},
+       {0xE473A, 0x698F},
+       {0xE473B, 0x69C5},
+       {0xE473C, 0x69C8},
+       {0xE473D, 0x6992},
+       {0xE473E, 0x69B2},
+       {0xE4742, 0x69E3},
+       {0xE4743, 0x69C0},
+       {0xE4744, 0x69D6},
+       {0xE4745, 0x69D1},
+       {0xE4746, 0x699F},
+       {0xE4747, 0x69A2},
+       {0xE4748, 0x69D2},
+       {0xE474C, 0x69E1},
+       {0xE474D, 0x69D5},
+       {0xE474E, 0x699D},
+       {0xE4751, 0x6998},
+       {0xE4753, 0x6B74},
+       {0xE4754, 0x6BA1},
+       {0xE4756, 0x6EF0},
+       {0xE4757, 0x6EF3},
+       {0xE475A, 0x6F1B},
+       {0xE475B, 0x6F0C},
+       {0xE475C, 0x6F1D},
+       {0xE475D, 0x6F34},
+       {0xE475E, 0x6F28},
+       {0xE475F, 0x6F17},
+       {0xE4761, 0x6F44},
+       {0xE4762, 0x6F42},
+       {0xE4763, 0x6F04},
+       {0xE4764, 0x6F11},
+       {0xE4765, 0x6EFA},
+       {0xE4766, 0x6F4A},
+       {0xE4767, 0x7191},
+       {0xE4768, 0x718E},
+       {0xE476A, 0x718B},
+       {0xE476B, 0x718D},
+       {0xE476C, 0x717F},
+       {0xE476D, 0x718C},
+       {0xE476E, 0x717E},
+       {0xE476F, 0x717C},
+       {0xE4770, 0x7183},
+       {0xE4772, 0x7188},
+       {0xE4775, 0x7294},
+       {0xE4777, 0x7355},
+       {0xE4778, 0x7353},
+       {0xE4779, 0x734F},
+       {0xE477A, 0x7354},
+       {0xE477B, 0x746C},
+       {0xE477C, 0x7465},
+       {0xE477D, 0x7466},
+       {0xE477E, 0x7461},
+       {0xE4821, 0x746B},
+       {0xE4822, 0x7468},
+       {0xE4823, 0x7476},
+       {0xE4825, 0x7460},
+       {0xE4827, 0x7474},
+       {0xE4828, 0x7506},
+       {0xE4829, 0x760E},
+       {0xE482B, 0x7607},
+       {0xE482E, 0x76B9},
+       {0xE4830, 0x76B7},
+       {0xE4831, 0x76E2},
+       {0xE4833, 0x7774},
+       {0xE4834, 0x7777},
+       {0xE4835, 0x7776},
+       {0xE4836, 0x7775},
+       {0xE4838, 0x7778},
+       {0xE4839, 0x7771},
+       {0xE483B, 0x777A},
+       {0xE483C, 0x715B},
+       {0xE483D, 0x777B},
+       {0xE483E, 0x78A6},
+       {0xE483F, 0x78AE},
+       {0xE4840, 0x78B8},
+       {0xE4844, 0x78B1},
+       {0xE4845, 0x78AF},
+       {0xE4847, 0x7989},
+       {0xE4848, 0x7987},
+       {0xE484B, 0x7A29},
+       {0xE484D, 0x7A2A},
+       {0xE484F, 0x7A2D},
+       {0xE4850, 0x7A2C},
+       {0xE4852, 0x7A32},
+       {0xE4854, 0x7AEC},
+       {0xE4855, 0x7AF0},
+       {0xE4856, 0x7B81},
+       {0xE4857, 0x7B9E},
+       {0xE4858, 0x7B83},
+       {0xE485A, 0x7B92},
+       {0xE485C, 0x7BA3},
+       {0xE485D, 0x7B9F},
+       {0xE485E, 0x7B93},
+       {0xE4860, 0x7B86},
+       {0xE4861, 0x7CB8},
+       {0xE4862, 0x7CB7},
+       {0xE4868, 0x7DC8},
+       {0xE4869, 0x7DB6},
+       {0xE486B, 0x7DD1},
+       {0xE486D, 0x7DA8},
+       {0xE486E, 0x7DAB},
+       {0xE4870, 0x7DB3},
+       {0xE4871, 0x7DCD},
+       {0xE4873, 0x7DCF},
+       {0xE4874, 0x7DA4},
+       {0xE4877, 0x7F41},
+       {0xE4878, 0x7F6F},
+       {0xE4879, 0x7F71},
+       {0xE4922, 0x8023},
+       {0xE4923, 0x805B},
+       {0xE4925, 0x8061},
+       {0xE4926, 0x805F},
+       {0xE4927, 0x8181},
+       {0xE492A, 0x8184},
+       {0xE492B, 0x8213},
+       {0xE492D, 0x824A},
+       {0xE492E, 0x824C},
+       {0xE4932, 0x84BD},
+       {0xE4933, 0x8495},
+       {0xE4935, 0x8492},
+       {0xE4936, 0x84C3},
+       {0xE4938, 0x8496},
+       {0xE4939, 0x84A5},
+       {0xE493A, 0x84B5},
+       {0xE493B, 0x84B3},
+       {0xE493C, 0x84A3},
+       {0xE493D, 0x84E4},
+       {0xE493E, 0x84D8},
+       {0xE493F, 0x84D5},
+       {0xE4941, 0x84B7},
+       {0xE4942, 0x84AD},
+       {0xE4943, 0x84DA},
+       {0xE4944, 0x8493},
+       {0xE4945, 0x8736},
+       {0xE4949, 0x873D},
+       {0xE494A, 0x872B},
+       {0xE494B, 0x8747},
+       {0xE494C, 0x8739},
+       {0xE494E, 0x8745},
+       {0xE494F, 0x871D},
+       {0xE4951, 0x88FF},
+       {0xE4952, 0x88EA},
+       {0xE4954, 0x88F5},
+       {0xE4956, 0x8900},
+       {0xE4957, 0x88ED},
+       {0xE4958, 0x8903},
+       {0xE4959, 0x88E9},
+       {0xE495C, 0x89EA},
+       {0xE495E, 0x8A9B},
+       {0xE495F, 0x8A8E},
+       {0xE4960, 0x8AA2},
+       {0xE4962, 0x8A9C},
+       {0xE4963, 0x8A94},
+       {0xE4964, 0x8A90},
+       {0xE4965, 0x8AA9},
+       {0xE4966, 0x8AAC},
+       {0xE4968, 0x8A9F},
+       {0xE496B, 0x8A9D},
+       {0xE496D, 0x8C67},
+       {0xE4970, 0x8CD0},
+       {0xE4971, 0x8CD6},
+       {0xE4972, 0x8CD4},
+       {0xE4973, 0x8D98},
+       {0xE4974, 0x8D9A},
+       {0xE4975, 0x8D97},
+       {0xE4979, 0x8E0B},
+       {0xE497A, 0x8E08},
+       {0xE497B, 0x8E01},
+       {0xE497C, 0x8EB4},
+       {0xE497D, 0x8EB3},
+       {0xE4A21, 0x8FA1},
+       {0xE4A22, 0x8FA2},
+       {0xE4A24, 0x905A},
+       {0xE4A26, 0x9061},
+       {0xE4A27, 0x905F},
+       {0xE4A2A, 0x9125},
+       {0xE4A2B, 0x917B},
+       {0xE4A2C, 0x9176},
+       {0xE4A2D, 0x917C},
+       {0xE4A2F, 0x9289},
+       {0xE4A30, 0x92F6},
+       {0xE4A31, 0x92B1},
+       {0xE4A32, 0x92AD},
+       {0xE4A33, 0x9292},
+       {0xE4A34, 0x9281},
+       {0xE4A35, 0x9284},
+       {0xE4A37, 0x92AE},
+       {0xE4A38, 0x9290},
+       {0xE4A39, 0x929E},
+       {0xE4A3D, 0x95A2},
+       {0xE4A3E, 0x95A7},
+       {0xE4A44, 0x96A0},
+       {0xE4A45, 0x969D},
+       {0xE4A46, 0x969F},
+       {0xE4A47, 0x96D0},
+       {0xE4A49, 0x96D1},
+       {0xE4A4C, 0x9759},
+       {0xE4A4E, 0x9764},
+       {0xE4A52, 0x9819},
+       {0xE4A54, 0x9814},
+       {0xE4A55, 0x9815},
+       {0xE4A56, 0x981A},
+       {0xE4A5B, 0x9906},
+       {0xE4A5D, 0x98F8},
+       {0xE4A5E, 0x9901},
+       {0xE4A60, 0x99BE},
+       {0xE4A61, 0x99BC},
+       {0xE4A62, 0x99B7},
+       {0xE4A63, 0x99B6},
+       {0xE4A64, 0x99C0},
+       {0xE4A66, 0x99B8},
+       {0xE4A6A, 0x99C4},
+       {0xE4A6C, 0x99BF},
+       {0xE4A6E, 0x9ADA},
+       {0xE4A6F, 0x9AE4},
+       {0xE4A70, 0x9AE9},
+       {0xE4A71, 0x9AE8},
+       {0xE4A72, 0x9AEA},
+       {0xE4A73, 0x9AE5},
+       {0xE4A75, 0x9B26},
+       {0xE4A78, 0x9B40},
+       {0xE4B22, 0x9EBD},
+       {0xE4B27, 0x510E},
+       {0xE4B29, 0x50F7},
+       {0xE4B2B, 0x50FC},
+       {0xE4B2C, 0x510D},
+       {0xE4B2D, 0x5101},
+       {0xE4B2E, 0x51DA},
+       {0xE4B2F, 0x51D9},
+       {0xE4B30, 0x51DB},
+       {0xE4B31, 0x5286},
+       {0xE4B32, 0x528E},
+       {0xE4B33, 0x52EE},
+       {0xE4B34, 0x5333},
+       {0xE4B35, 0x53B1},
+       {0xE4B37, 0x5647},
+       {0xE4B38, 0x562D},
+       {0xE4B39, 0x5654},
+       {0xE4B3B, 0x564B},
+       {0xE4B3C, 0x5652},
+       {0xE4B3D, 0x5631},
+       {0xE4B3E, 0x5644},
+       {0xE4B3F, 0x5656},
+       {0xE4B40, 0x5650},
+       {0xE4B41, 0x562B},
+       {0xE4B43, 0x564D},
+       {0xE4B44, 0x5637},
+       {0xE4B45, 0x564F},
+       {0xE4B46, 0x58A2},
+       {0xE4B47, 0x58B7},
+       {0xE4B49, 0x58B2},
+       {0xE4B4B, 0x58AA},
+       {0xE4B4C, 0x58B5},
+       {0xE4B4D, 0x58B0},
+       {0xE4B4F, 0x58B4},
+       {0xE4B50, 0x58A4},
+       {0xE4B51, 0x58A7},
+       {0xE4B53, 0x5926},
+       {0xE4B54, 0x5AFE},
+       {0xE4B56, 0x5B04},
+       {0xE4B58, 0x5AFC},
+       {0xE4B5A, 0x5B06},
+       {0xE4B5B, 0x5B0A},
+       {0xE4B5C, 0x5AFA},
+       {0xE4B5D, 0x5B0D},
+       {0xE4B5E, 0x5B00},
+       {0xE4B5F, 0x5B0E},
+       {0xE4B63, 0x5D91},
+       {0xE4B65, 0x5D8F},
+       {0xE4B66, 0x5D90},
+       {0xE4B67, 0x5D98},
+       {0xE4B68, 0x5DA4},
+       {0xE4B69, 0x5D9B},
+       {0xE4B6A, 0x5DA3},
+       {0xE4B6B, 0x5D96},
+       {0xE4B6C, 0x5DE4},
+       {0xE4B6D, 0x5E5A},
+       {0xE4B70, 0x5E5E},
+       {0xE4B72, 0x5FB8},
+       {0xE4B73, 0x6157},
+       {0xE4B74, 0x615C},
+       {0xE4B75, 0x61A6},
+       {0xE4B76, 0x6195},
+       {0xE4B77, 0x6188},
+       {0xE4B79, 0x61A3},
+       {0xE4B7A, 0x618F},
+       {0xE4B7C, 0x6164},
+       {0xE4B7E, 0x6159},
+       {0xE4C21, 0x6178},
+       {0xE4C23, 0x6185},
+       {0xE4C24, 0x6187},
+       {0xE4C25, 0x619E},
+       {0xE4C28, 0x6198},
+       {0xE4C29, 0x619C},
+       {0xE4C2C, 0x622F},
+       {0xE4C2D, 0x6480},
+       {0xE4C2E, 0x649B},
+       {0xE4C2F, 0x648E},
+       {0xE4C30, 0x648D},
+       {0xE4C31, 0x6494},
+       {0xE4C32, 0x64C6},
+       {0xE4C34, 0x64A8},
+       {0xE4C35, 0x6483},
+       {0xE4C37, 0x64B9},
+       {0xE4C38, 0x6486},
+       {0xE4C39, 0x64B4},
+       {0xE4C3A, 0x64AF},
+       {0xE4C3B, 0x6491},
+       {0xE4C3D, 0x64AA},
+       {0xE4C3E, 0x64A1},
+       {0xE4C3F, 0x64A7},
+       {0xE4C40, 0x66B6},
+       {0xE4C41, 0x66B3},
+       {0xE4C43, 0x66BC},
+       {0xE4C44, 0x66AC},
+       {0xE4C46, 0x66AD},
+       {0xE4C47, 0x6A0E},
+       {0xE4C49, 0x6A1C},
+       {0xE4C4A, 0x6A1A},
+       {0xE4C4D, 0x6A0B},
+       {0xE4C4F, 0x69EF},
+       {0xE4C50, 0x6A0C},
+       {0xE4C51, 0x69F0},
+       {0xE4C52, 0x6A22},
+       {0xE4C54, 0x69D8},
+       {0xE4C56, 0x6A12},
+       {0xE4C57, 0x69FA},
+       {0xE4C59, 0x6A2A},
+       {0xE4C5B, 0x6A10},
+       {0xE4C5E, 0x6A29},
+       {0xE4C5F, 0x69F9},
+       {0xE4C60, 0x69EA},
+       {0xE4C61, 0x6A2C},
+       {0xE4C62, 0x6A24},
+       {0xE4C64, 0x69E9},
+       {0xE4C65, 0x6B52},
+       {0xE4C66, 0x6B4F},
+       {0xE4C67, 0x6B53},
+       {0xE4C6A, 0x6F10},
+       {0xE4C6B, 0x6F65},
+       {0xE4C6C, 0x6F75},
+       {0xE4C71, 0x6FD0},
+       {0xE4C73, 0x6F5C},
+       {0xE4C74, 0x6F3D},
+       {0xE4C75, 0x6F71},
+       {0xE4C77, 0x6F91},
+       {0xE4C78, 0x6F0B},
+       {0xE4C79, 0x6F79},
+       {0xE4C7A, 0x6F81},
+       {0xE4C7B, 0x6F8F},
+       {0xE4C7D, 0x6F59},
+       {0xE4C7E, 0x6F74},
+       {0xE4D22, 0x71AE},
+       {0xE4D24, 0x71A3},
+       {0xE4D25, 0x71AD},
+       {0xE4D28, 0x71AB},
+       {0xE4D29, 0x71A6},
+       {0xE4D2A, 0x71A2},
+       {0xE4D2C, 0x52F2},
+       {0xE4D2D, 0x7257},
+       {0xE4D2E, 0x7255},
+       {0xE4D2F, 0x7299},
+       {0xE4D30, 0x734B},
+       {0xE4D31, 0x747A},
+       {0xE4D35, 0x748C},
+       {0xE4D36, 0x7484},
+       {0xE4D39, 0x7482},
+       {0xE4D3A, 0x7493},
+       {0xE4D3B, 0x747B},
+       {0xE4D3D, 0x7509},
+       {0xE4D44, 0x778A},
+       {0xE4D46, 0x7790},
+       {0xE4D48, 0x78C6},
+       {0xE4D49, 0x78D3},
+       {0xE4D4A, 0x78C0},
+       {0xE4D4B, 0x78D2},
+       {0xE4D4C, 0x78C7},
+       {0xE4D4D, 0x78C2},
+       {0xE4D4F, 0x799F},
+       {0xE4D50, 0x799D},
+       {0xE4D51, 0x799E},
+       {0xE4D53, 0x7A41},
+       {0xE4D55, 0x7A38},
+       {0xE4D56, 0x7A3A},
+       {0xE4D57, 0x7A42},
+       {0xE4D5A, 0x7A3E},
+       {0xE4D5B, 0x7AB0},
+       {0xE4D5C, 0x7BAE},
+       {0xE4D5D, 0x7BB3},
+       {0xE4D60, 0x7BBF},
+       {0xE4D63, 0x7BCD},
+       {0xE4D65, 0x7BB2},
+       {0xE4D6D, 0x7CC4},
+       {0xE4D6E, 0x7CCD},
+       {0xE4D6F, 0x7CC2},
+       {0xE4D70, 0x7CC6},
+       {0xE4D71, 0x7CC3},
+       {0xE4D72, 0x7CC9},
+       {0xE4D73, 0x7CC7},
+       {0xE4D75, 0x7DF8},
+       {0xE4D77, 0x7DED},
+       {0xE4D78, 0x7DE2},
+       {0xE4D7C, 0x7DDC},
+       {0xE4D7D, 0x7E02},
+       {0xE4D7E, 0x7E01},
+       {0xE4E22, 0x7DD6},
+       {0xE4E24, 0x7DE4},
+       {0xE4E25, 0x7DFE},
+       {0xE4E27, 0x7E00},
+       {0xE4E28, 0x7DFC},
+       {0xE4E29, 0x7DFD},
+       {0xE4E2B, 0x7DF5},
+       {0xE4E2C, 0x7DFF},
+       {0xE4E2E, 0x7DEB},
+       {0xE4E2F, 0x7DE5},
+       {0xE4E30, 0x7F78},
+       {0xE4E31, 0x7FAE},
+       {0xE4E32, 0x7FE7},
+       {0xE4E34, 0x8065},
+       {0xE4E35, 0x806A},
+       {0xE4E36, 0x8066},
+       {0xE4E37, 0x8068},
+       {0xE4E38, 0x806B},
+       {0xE4E39, 0x8194},
+       {0xE4E3A, 0x81A1},
+       {0xE4E3B, 0x8192},
+       {0xE4E3C, 0x8196},
+       {0xE4E3D, 0x8193},
+       {0xE4E40, 0x8501},
+       {0xE4E42, 0x84F8},
+       {0xE4E44, 0x84F5},
+       {0xE4E46, 0x8504},
+       {0xE4E4B, 0x851B},
+       {0xE4E4C, 0x8503},
+       {0xE4E4D, 0x8533},
+       {0xE4E4E, 0x8534},
+       {0xE4E4F, 0x84ED},
+       {0xE4E52, 0x8535},
+       {0xE4E54, 0x8505},
+       {0xE4E59, 0x877D},
+       {0xE4E5D, 0x8771},
+       {0xE4E5F, 0x885C},
+       {0xE4E60, 0x88E6},
+       {0xE4E61, 0x890F},
+       {0xE4E62, 0x891B},
+       {0xE4E64, 0x89A9},
+       {0xE4E65, 0x89A5},
+       {0xE4E66, 0x89EE},
+       {0xE4E67, 0x8AB1},
+       {0xE4E69, 0x8ACC},
+       {0xE4E6A, 0x8ACE},
+       {0xE4E6C, 0x8AB7},
+       {0xE4E6E, 0x8AB5},
+       {0xE4E6F, 0x8AE9},
+       {0xE4E70, 0x8AB4},
+       {0xE4E72, 0x8AB3},
+       {0xE4E73, 0x8AC1},
+       {0xE4E74, 0x8AAF},
+       {0xE4E75, 0x8ACA},
+       {0xE4E76, 0x8AD0},
+       {0xE4E7A, 0x8C8E},
+       {0xE4E7D, 0x8CE9},
+       {0xE4E7E, 0x8CDB},
+       {0xE4F22, 0x8CEB},
+       {0xE4F23, 0x8DA4},
+       {0xE4F25, 0x8DA2},
+       {0xE4F26, 0x8D9D},
+       {0xE4F2B, 0x8E2A},
+       {0xE4F2C, 0x8E28},
+       {0xE4F2F, 0x8EB8},
+       {0xE4F30, 0x8EB6},
+       {0xE4F31, 0x8EB9},
+       {0xE4F32, 0x8EB7},
+       {0xE4F33, 0x8F22},
+       {0xE4F34, 0x8F2B},
+       {0xE4F35, 0x8F27},
+       {0xE4F36, 0x8F19},
+       {0xE4F37, 0x8FA4},
+       {0xE4F39, 0x8FB3},
+       {0xE4F3B, 0x9071},
+       {0xE4F3C, 0x906A},
+       {0xE4F3F, 0x9188},
+       {0xE4F40, 0x918C},
+       {0xE4F41, 0x92BF},
+       {0xE4F42, 0x92B8},
+       {0xE4F43, 0x92BE},
+       {0xE4F44, 0x92DC},
+       {0xE4F45, 0x92E5},
+       {0xE4F48, 0x92D4},
+       {0xE4F49, 0x92D6},
+       {0xE4F4B, 0x92DA},
+       {0xE4F4C, 0x92ED},
+       {0xE4F4D, 0x92F3},
+       {0xE4F4E, 0x92DB},
+       {0xE4F50, 0x92B9},
+       {0xE4F51, 0x92E2},
+       {0xE4F52, 0x92EB},
+       {0xE4F53, 0x95AF},
+       {0xE4F55, 0x95B2},
+       {0xE4F56, 0x95B3},
+       {0xE4F5A, 0x96A3},
+       {0xE4F5B, 0x96A5},
+       {0xE4F60, 0x970A},
+       {0xE4F62, 0x9787},
+       {0xE4F63, 0x9789},
+       {0xE4F64, 0x978C},
+       {0xE4F65, 0x97EF},
+       {0xE4F66, 0x982A},
+       {0xE4F67, 0x9822},
+       {0xE4F69, 0x981F},
+       {0xE4F6B, 0x9919},
+       {0xE4F6D, 0x99CA},
+       {0xE4F6E, 0x99DA},
+       {0xE4F72, 0x99DE},
+       {0xE4F73, 0x99C8},
+       {0xE4F74, 0x99E0},
+       {0xE4F76, 0x9AB6},
+       {0xE4F77, 0x9AB5},
+       {0xE4F79, 0x9AF4},
+       {0xE4F7B, 0x9B6B},
+       {0xE4F7C, 0x9B69},
+       {0xE4F7D, 0x9B72},
+       {0xE4F7E, 0x9B63},
+       {0xE5022, 0x9D0D},
+       {0xE5024, 0x9D01},
+       {0xE5025, 0x9D0C},
+       {0xE5027, 0x9CF8},
+       {0xE502A, 0x9CFE},
+       {0xE502B, 0x9D02},
+       {0xE502C, 0x9E84},
+       {0xE502E, 0x9EAB},
+       {0xE502F, 0x9EAA},
+       {0xE5030, 0x511D},
+       {0xE5031, 0x5116},
+       {0xE5033, 0x512B},
+       {0xE5034, 0x511E},
+       {0xE5035, 0x511B},
+       {0xE5036, 0x5290},
+       {0xE5037, 0x5294},
+       {0xE5038, 0x5314},
+       {0xE503B, 0x5667},
+       {0xE503D, 0x567B},
+       {0xE503F, 0x565F},
+       {0xE5040, 0x5661},
+       {0xE5048, 0x58C3},
+       {0xE5049, 0x58CA},
+       {0xE504A, 0x58BB},
+       {0xE504B, 0x58C0},
+       {0xE504C, 0x58C4},
+       {0xE504D, 0x5901},
+       {0xE504E, 0x5B1F},
+       {0xE504F, 0x5B18},
+       {0xE5050, 0x5B11},
+       {0xE5051, 0x5B15},
+       {0xE5053, 0x5B12},
+       {0xE5054, 0x5B1C},
+       {0xE5056, 0x5B22},
+       {0xE5057, 0x5B79},
+       {0xE5058, 0x5DA6},
+       {0xE505A, 0x5DB3},
+       {0xE505B, 0x5DAB},
+       {0xE505C, 0x5EEA},
+       {0xE505E, 0x5F5B},
+       {0xE5061, 0x61B7},
+       {0xE5062, 0x61CE},
+       {0xE5063, 0x61B9},
+       {0xE5064, 0x61BD},
+       {0xE5065, 0x61CF},
+       {0xE5066, 0x61C0},
+       {0xE5067, 0x6199},
+       {0xE5068, 0x6197},
+       {0xE506A, 0x61BB},
+       {0xE506B, 0x61D0},
+       {0xE506C, 0x61C4},
+       {0xE506D, 0x6231},
+       {0xE506F, 0x64D3},
+       {0xE5070, 0x64C0},
+       {0xE5075, 0x64DC},
+       {0xE5076, 0x64D1},
+       {0xE5077, 0x64C8},
+       {0xE5079, 0x64D5},
+       {0xE507A, 0x66C3},
+       {0xE507D, 0x66BF},
+       {0xE507E, 0x66C5},
+       {0xE5122, 0x66CD},
+       {0xE5123, 0x66C1},
+       {0xE5124, 0x6706},
+       {0xE5126, 0x6724},
+       {0xE5127, 0x6A63},
+       {0xE5128, 0x6A42},
+       {0xE5129, 0x6A52},
+       {0xE512B, 0x6A43},
+       {0xE512C, 0x6A33},
+       {0xE512E, 0x6A6C},
+       {0xE512F, 0x6A57},
+       {0xE5131, 0x6A4C},
+       {0xE5132, 0x6A6E},
+       {0xE5138, 0x6A37},
+       {0xE513A, 0x6A71},
+       {0xE513B, 0x6A4A},
+       {0xE513C, 0x6A36},
+       {0xE513E, 0x6A53},
+       {0xE5140, 0x6A45},
+       {0xE5141, 0x6A70},
+       {0xE5144, 0x6A5C},
+       {0xE5145, 0x6B58},
+       {0xE5146, 0x6B57},
+       {0xE514D, 0x6FBB},
+       {0xE5150, 0x6FBE},
+       {0xE5154, 0x6FB5},
+       {0xE5155, 0x6FD3},
+       {0xE5156, 0x6F9F},
+       {0xE5158, 0x6FB7},
+       {0xE5159, 0x6FF5},
+       {0xE515A, 0x71B7},
+       {0xE515C, 0x71BB},
+       {0xE515E, 0x71D1},
+       {0xE5160, 0x71BA},
+       {0xE5162, 0x71B6},
+       {0xE5163, 0x71CC},
+       {0xE5166, 0x71D3},
+       {0xE5167, 0x749B},
+       {0xE516A, 0x7496},
+       {0xE516B, 0x74A2},
+       {0xE516C, 0x749D},
+       {0xE516D, 0x750A},
+       {0xE516E, 0x750E},
+       {0xE5170, 0x7581},
+       {0xE5171, 0x762C},
+       {0xE5172, 0x7637},
+       {0xE5173, 0x7636},
+       {0xE5174, 0x763B},
+       {0xE5176, 0x76A1},
+       {0xE5179, 0x7798},
+       {0xE517B, 0x7796},
+       {0xE5221, 0x78D6},
+       {0xE5222, 0x78EB},
+       {0xE5224, 0x78DC},
+       {0xE5226, 0x79A5},
+       {0xE5227, 0x79A9},
+       {0xE5228, 0x9834},
+       {0xE5229, 0x7A53},
+       {0xE522A, 0x7A45},
+       {0xE522C, 0x7A4F},
+       {0xE522E, 0x7ABD},
+       {0xE522F, 0x7ABB},
+       {0xE5230, 0x7AF1},
+       {0xE5233, 0x7BEC},
+       {0xE5234, 0x7BED},
+       {0xE5237, 0x7CD3},
+       {0xE5239, 0x7CE1},
+       {0xE523B, 0x7E19},
+       {0xE523F, 0x7E27},
+       {0xE5240, 0x7E26},
+       {0xE5243, 0x806E},
+       {0xE5244, 0x81AF},
+       {0xE5247, 0x81AD},
+       {0xE5249, 0x81AA},
+       {0xE524A, 0x8218},
+       {0xE524F, 0x856F},
+       {0xE5250, 0x854C},
+       {0xE5252, 0x8542},
+       {0xE5254, 0x855C},
+       {0xE5255, 0x8570},
+       {0xE5256, 0x855F},
+       {0xE5258, 0x855A},
+       {0xE5259, 0x854B},
+       {0xE525A, 0x853F},
+       {0xE525B, 0x878A},
+       {0xE525D, 0x878B},
+       {0xE525E, 0x87A1},
+       {0xE525F, 0x878E},
+       {0xE5262, 0x8799},
+       {0xE5263, 0x885E},
+       {0xE5264, 0x885F},
+       {0xE5265, 0x8924},
+       {0xE5266, 0x89A7},
+       {0xE5267, 0x8AEA},
+       {0xE5268, 0x8AFD},
+       {0xE5269, 0x8AF9},
+       {0xE526A, 0x8AE3},
+       {0xE526B, 0x8AE5},
+       {0xE526E, 0x8AEC},
+       {0xE5273, 0x8CF2},
+       {0xE5275, 0x8CEF},
+       {0xE5277, 0x8DA6},
+       {0xE527B, 0x8E3B},
+       {0xE527C, 0x8E43},
+       {0xE527E, 0x8E32},
+       {0xE5321, 0x8F31},
+       {0xE5322, 0x8F30},
+       {0xE5324, 0x8F2D},
+       {0xE5325, 0x8F3C},
+       {0xE5326, 0x8FA7},
+       {0xE5327, 0x8FA5},
+       {0xE532B, 0x9137},
+       {0xE532C, 0x9195},
+       {0xE532D, 0x918E},
+       {0xE532F, 0x9196},
+       {0xE5331, 0x9345},
+       {0xE5332, 0x930A},
+       {0xE5335, 0x92FD},
+       {0xE5336, 0x9317},
+       {0xE5337, 0x931C},
+       {0xE5338, 0x9307},
+       {0xE5339, 0x9331},
+       {0xE533A, 0x9332},
+       {0xE533B, 0x932C},
+       {0xE533C, 0x9330},
+       {0xE533D, 0x9303},
+       {0xE533E, 0x9305},
+       {0xE5340, 0x95C2},
+       {0xE5342, 0x95B8},
+       {0xE5344, 0x95C1},
+       {0xE5348, 0x96AB},
+       {0xE5349, 0x96B7},
+       {0xE534C, 0x9715},
+       {0xE534D, 0x9714},
+       {0xE5350, 0x970C},
+       {0xE5351, 0x9717},
+       {0xE5353, 0x9793},
+       {0xE5355, 0x97D2},
+       {0xE5358, 0x9836},
+       {0xE5359, 0x9831},
+       {0xE535A, 0x9833},
+       {0xE535B, 0x983C},
+       {0xE535C, 0x982E},
+       {0xE535D, 0x983A},
+       {0xE535F, 0x983D},
+       {0xE5361, 0x98B5},
+       {0xE5362, 0x9922},
+       {0xE5363, 0x9923},
+       {0xE5364, 0x9920},
+       {0xE5365, 0x991C},
+       {0xE5366, 0x991D},
+       {0xE5368, 0x99A0},
+       {0xE536A, 0x99EF},
+       {0xE536B, 0x99E8},
+       {0xE536C, 0x99EB},
+       {0xE5370, 0x99E1},
+       {0xE5371, 0x99E6},
+       {0xE5374, 0x9AF8},
+       {0xE5375, 0x9AF5},
+       {0xE5378, 0x9B83},
+       {0xE5379, 0x9B94},
+       {0xE537A, 0x9B84},
+       {0xE537C, 0x9B8B},
+       {0xE537D, 0x9B8F},
+       {0xE5421, 0x9B8C},
+       {0xE5423, 0x9B89},
+       {0xE5425, 0x9B8E},
+       {0xE5429, 0x9D24},
+       {0xE542A, 0x9D0F},
+       {0xE542C, 0x9D13},
+       {0xE542D, 0x9D0A},
+       {0xE5432, 0x9D2A},
+       {0xE5433, 0x9D1A},
+       {0xE5435, 0x9D27},
+       {0xE5436, 0x9D16},
+       {0xE5437, 0x9D21},
+       {0xE5439, 0x9E85},
+       {0xE543A, 0x9EAC},
+       {0xE543B, 0x9EC6},
+       {0xE543C, 0x9EC5},
+       {0xE543D, 0x9ED7},
+       {0xE543E, 0x9F53},
+       {0xE5440, 0x5128},
+       {0xE5441, 0x5127},
+       {0xE5442, 0x51DF},
+       {0xE5444, 0x5335},
+       {0xE5445, 0x53B3},
+       {0xE5447, 0x568A},
+       {0xE5448, 0x567D},
+       {0xE5449, 0x5689},
+       {0xE544B, 0x58CD},
+       {0xE544C, 0x58D0},
+       {0xE544E, 0x5B2B},
+       {0xE544F, 0x5B33},
+       {0xE5450, 0x5B29},
+       {0xE5451, 0x5B35},
+       {0xE5452, 0x5B31},
+       {0xE5453, 0x5B37},
+       {0xE5454, 0x5C36},
+       {0xE5455, 0x5DBE},
+       {0xE5457, 0x5DB9},
+       {0xE5459, 0x5DBB},
+       {0xE545B, 0x61E2},
+       {0xE545C, 0x61DB},
+       {0xE545D, 0x61DD},
+       {0xE545E, 0x61DC},
+       {0xE545F, 0x61DA},
+       {0xE5461, 0x61D9},
+       {0xE5464, 0x64DF},
+       {0xE5467, 0x64E1},
+       {0xE5469, 0x64EE},
+       {0xE546B, 0x65B5},
+       {0xE546C, 0x66D4},
+       {0xE546D, 0x66D5},
+       {0xE546F, 0x66D0},
+       {0xE5470, 0x66D1},
+       {0xE5471, 0x66CE},
+       {0xE5472, 0x66D7},
+       {0xE5475, 0x6A7D},
+       {0xE5476, 0x6A8A},
+       {0xE5478, 0x6AA7},
+       {0xE547A, 0x6A99},
+       {0xE547B, 0x6A82},
+       {0xE547C, 0x6A88},
+       {0xE5521, 0x6A86},
+       {0xE5523, 0x6A98},
+       {0xE5524, 0x6A9D},
+       {0xE5527, 0x6A8F},
+       {0xE5529, 0x6AAA},
+       {0xE552B, 0x6B5D},
+       {0xE552D, 0x6C0A},
+       {0xE552F, 0x6FD7},
+       {0xE5530, 0x6FD6},
+       {0xE5531, 0x6FE5},
+       {0xE5535, 0x6FD9},
+       {0xE5536, 0x6FDA},
+       {0xE5537, 0x6FEA},
+       {0xE5539, 0x6FF6},
+       {0xE553C, 0x71E3},
+       {0xE553E, 0x71E9},
+       {0xE5540, 0x71EB},
+       {0xE5541, 0x71EF},
+       {0xE5542, 0x71F3},
+       {0xE5543, 0x71EA},
+       {0xE5549, 0x7371},
+       {0xE554B, 0x74AE},
+       {0xE554D, 0x74B3},
+       {0xE554F, 0x74AC},
+       {0xE5552, 0x7583},
+       {0xE5553, 0x7645},
+       {0xE5554, 0x764E},
+       {0xE5555, 0x7644},
+       {0xE5556, 0x76A3},
+       {0xE5557, 0x76A5},
+       {0xE5558, 0x77A6},
+       {0xE5559, 0x77A4},
+       {0xE555B, 0x77A9},
+       {0xE555C, 0x77AF},
+       {0xE5560, 0x78F0},
+       {0xE5561, 0x78F8},
+       {0xE5562, 0x78F1},
+       {0xE5564, 0x7A49},
+       {0xE5568, 0x7AC2},
+       {0xE5569, 0x7AF2},
+       {0xE556A, 0x7AF3},
+       {0xE556B, 0x7BFA},
+       {0xE556D, 0x7BF6},
+       {0xE556E, 0x7BFC},
+       {0xE556F, 0x7C18},
+       {0xE5570, 0x7C08},
+       {0xE5571, 0x7C12},
+       {0xE5574, 0x7CDB},
+       {0xE5575, 0x7CDA},
+       {0xE5579, 0x7E2C},
+       {0xE557A, 0x7E4D},
+       {0xE557D, 0x7F46},
+       {0xE557E, 0x7FF6},
+       {0xE5621, 0x802B},
+       {0xE5622, 0x8074},
+       {0xE5623, 0x81B8},
+       {0xE5624, 0x81C8},
+       {0xE5628, 0x8592},
+       {0xE5629, 0x8593},
+       {0xE562B, 0x857F},
+       {0xE562C, 0x85AB},
+       {0xE562D, 0x8597},
+       {0xE5630, 0x85AC},
+       {0xE5634, 0x87CE},
+       {0xE5636, 0x87CD},
+       {0xE5639, 0x87C1},
+       {0xE563A, 0x87B1},
+       {0xE563B, 0x87C7},
+       {0xE563D, 0x8940},
+       {0xE563F, 0x893F},
+       {0xE5640, 0x8939},
+       {0xE5642, 0x8943},
+       {0xE5646, 0x89AB},
+       {0xE5648, 0x8B1F},
+       {0xE5649, 0x8B09},
+       {0xE564A, 0x8B0C},
+       {0xE564D, 0x8C40},
+       {0xE564F, 0x8C96},
+       {0xE5651, 0x8CF6},
+       {0xE5652, 0x8CF7},
+       {0xE5654, 0x8E46},
+       {0xE5655, 0x8E4F},
+       {0xE5659, 0x8F3D},
+       {0xE565A, 0x8F41},
+       {0xE565B, 0x9366},
+       {0xE565C, 0x9378},
+       {0xE565D, 0x935D},
+       {0xE565E, 0x9369},
+       {0xE565F, 0x9374},
+       {0xE5660, 0x937D},
+       {0xE5661, 0x936E},
+       {0xE5662, 0x9372},
+       {0xE5663, 0x9373},
+       {0xE5664, 0x9362},
+       {0xE5665, 0x9348},
+       {0xE5666, 0x9353},
+       {0xE5667, 0x935F},
+       {0xE5668, 0x9368},
+       {0xE566A, 0x937F},
+       {0xE566B, 0x936B},
+       {0xE566D, 0x95C4},
+       {0xE566F, 0x96AF},
+       {0xE5670, 0x96AD},
+       {0xE5671, 0x96B2},
+       {0xE5674, 0x971A},
+       {0xE5675, 0x971B},
+       {0xE567A, 0x979B},
+       {0xE567B, 0x979F},
+       {0xE5726, 0x9840},
+       {0xE5728, 0x9847},
+       {0xE572A, 0x98B7},
+       {0xE5730, 0x99A2},
+       {0xE5733, 0x9A00},
+       {0xE5734, 0x99F3},
+       {0xE5737, 0x99F5},
+       {0xE573A, 0x9ABD},
+       {0xE573B, 0x9B00},
+       {0xE573C, 0x9B02},
+       {0xE573E, 0x9B34},
+       {0xE573F, 0x9B49},
+       {0xE5740, 0x9B9F},
+       {0xE5742, 0x9BA3},
+       {0xE5743, 0x9BCD},
+       {0xE5744, 0x9B99},
+       {0xE5745, 0x9B9D},
+       {0xE5748, 0x9D39},
+       {0xE574A, 0x9D44},
+       {0xE574D, 0x9D35},
+       {0xE5750, 0x9EAF},
+       {0xE5752, 0x512F},
+       {0xE5755, 0x9F8E},
+       {0xE5757, 0x569F},
+       {0xE5758, 0x569B},
+       {0xE5759, 0x569E},
+       {0xE575A, 0x5696},
+       {0xE575B, 0x5694},
+       {0xE575C, 0x56A0},
+       {0xE575E, 0x5B3B},
+       {0xE5761, 0x5B3A},
+       {0xE5762, 0x5DC1},
+       {0xE5763, 0x5F4D},
+       {0xE5764, 0x5F5D},
+       {0xE5765, 0x61F3},
+       {0xE576A, 0x64F6},
+       {0xE576B, 0x64E5},
+       {0xE576C, 0x64EA},
+       {0xE576D, 0x64E7},
+       {0xE576E, 0x6505},
+       {0xE5770, 0x64F9},
+       {0xE5774, 0x6AAB},
+       {0xE5775, 0x6AED},
+       {0xE5776, 0x6AB2},
+       {0xE5777, 0x6AB0},
+       {0xE5778, 0x6AB5},
+       {0xE5779, 0x6ABE},
+       {0xE577A, 0x6AC1},
+       {0xE577B, 0x6AC8},
+       {0xE577D, 0x6AC0},
+       {0xE577E, 0x6ABC},
+       {0xE5821, 0x6AB1},
+       {0xE5822, 0x6AC4},
+       {0xE5823, 0x6ABF},
+       {0xE5826, 0x7008},
+       {0xE5827, 0x7003},
+       {0xE5828, 0x6FFD},
+       {0xE5829, 0x7010},
+       {0xE582A, 0x7002},
+       {0xE582B, 0x7013},
+       {0xE582D, 0x71FA},
+       {0xE582E, 0x7200},
+       {0xE582F, 0x74B9},
+       {0xE5830, 0x74BC},
+       {0xE5832, 0x765B},
+       {0xE5833, 0x7651},
+       {0xE5834, 0x764F},
+       {0xE5835, 0x76EB},
+       {0xE5836, 0x77B8},
+       {0xE5838, 0x77B9},
+       {0xE5839, 0x77C1},
+       {0xE583A, 0x77C0},
+       {0xE583B, 0x77BE},
+       {0xE583C, 0x790B},
+       {0xE583E, 0x7907},
+       {0xE583F, 0x790A},
+       {0xE5840, 0x7908},
+       {0xE5842, 0x790D},
+       {0xE5843, 0x7906},
+       {0xE5844, 0x7915},
+       {0xE5845, 0x79AF},
+       {0xE5849, 0x7AF5},
+       {0xE584C, 0x7C2E},
+       {0xE584E, 0x7C1B},
+       {0xE5850, 0x7C1A},
+       {0xE5851, 0x7C24},
+       {0xE5854, 0x7CE6},
+       {0xE5855, 0x7CE3},
+       {0xE5858, 0x7E5D},
+       {0xE5859, 0x7E4F},
+       {0xE585A, 0x7E66},
+       {0xE585B, 0x7E5B},
+       {0xE585C, 0x7F47},
+       {0xE585D, 0x7FB4},
+       {0xE5861, 0x7FFA},
+       {0xE5862, 0x802E},
+       {0xE5865, 0x81CE},
+       {0xE5868, 0x8219},
+       {0xE586B, 0x85CC},
+       {0xE586C, 0x85B2},
+       {0xE586E, 0x85BB},
+       {0xE586F, 0x85C1},
+       {0xE5873, 0x87E9},
+       {0xE5874, 0x87EE},
+       {0xE5875, 0x87F0},
+       {0xE5876, 0x87D6},
+       {0xE5877, 0x880E},
+       {0xE5878, 0x87DA},
+       {0xE5879, 0x8948},
+       {0xE587A, 0x894A},
+       {0xE587B, 0x894E},
+       {0xE587C, 0x894D},
+       {0xE587D, 0x89B1},
+       {0xE587E, 0x89B0},
+       {0xE5921, 0x89B3},
+       {0xE5923, 0x8B38},
+       {0xE5924, 0x8B32},
+       {0xE5926, 0x8B2D},
+       {0xE5928, 0x8B34},
+       {0xE592A, 0x8B29},
+       {0xE592B, 0x8C74},
+       {0xE592E, 0x8D03},
+       {0xE5931, 0x8DA9},
+       {0xE5932, 0x8E58},
+       {0xE5935, 0x8EBF},
+       {0xE5936, 0x8EC1},
+       {0xE5937, 0x8F4A},
+       {0xE5938, 0x8FAC},
+       {0xE593A, 0x9089},
+       {0xE593B, 0x913D},
+       {0xE593C, 0x913C},
+       {0xE593D, 0x91A9},
+       {0xE593E, 0x93A0},
+       {0xE5940, 0x9390},
+       {0xE5942, 0x9393},
+       {0xE5943, 0x938B},
+       {0xE5944, 0x93AD},
+       {0xE5945, 0x93BB},
+       {0xE5946, 0x93B8},
+       {0xE5949, 0x939C},
+       {0xE594A, 0x95D8},
+       {0xE594B, 0x95D7},
+       {0xE594F, 0x975D},
+       {0xE5950, 0x97A9},
+       {0xE5951, 0x97DA},
+       {0xE5956, 0x9854},
+       {0xE5958, 0x9855},
+       {0xE5959, 0x984B},
+       {0xE595B, 0x983F},
+       {0xE595C, 0x98B9},
+       {0xE5961, 0x9938},
+       {0xE5962, 0x9936},
+       {0xE5963, 0x9940},
+       {0xE5965, 0x993B},
+       {0xE5966, 0x9939},
+       {0xE5967, 0x99A4},
+       {0xE596A, 0x9A08},
+       {0xE596B, 0x9A0C},
+       {0xE596D, 0x9A10},
+       {0xE596F, 0x9B07},
+       {0xE5971, 0x9BD2},
+       {0xE5973, 0x9BC2},
+       {0xE5974, 0x9BBB},
+       {0xE5975, 0x9BCC},
+       {0xE5976, 0x9BCB},
+       {0xE5979, 0x9D4D},
+       {0xE597A, 0x9D63},
+       {0xE597B, 0x9D4E},
+       {0xE597D, 0x9D50},
+       {0xE597E, 0x9D55},
+       {0xE5A22, 0x9D5E},
+       {0xE5A24, 0x9E90},
+       {0xE5A25, 0x9EB2},
+       {0xE5A26, 0x9EB1},
+       {0xE5A28, 0x9ECA},
+       {0xE5A29, 0x9F02},
+       {0xE5A2A, 0x9F27},
+       {0xE5A2B, 0x9F26},
+       {0xE5A2D, 0x56AF},
+       {0xE5A2E, 0x58E0},
+       {0xE5A2F, 0x58DC},
+       {0xE5A31, 0x5B39},
+       {0xE5A34, 0x5B7C},
+       {0xE5A35, 0x5BF3},
+       {0xE5A38, 0x5C6B},
+       {0xE5A39, 0x5DC4},
+       {0xE5A3A, 0x650B},
+       {0xE5A3B, 0x6508},
+       {0xE5A3C, 0x650A},
+       {0xE5A3F, 0x65DC},
+       {0xE5A42, 0x66E1},
+       {0xE5A43, 0x66DF},
+       {0xE5A44, 0x6ACE},
+       {0xE5A45, 0x6AD4},
+       {0xE5A46, 0x6AE3},
+       {0xE5A47, 0x6AD7},
+       {0xE5A48, 0x6AE2},
+       {0xE5A4D, 0x6AD8},
+       {0xE5A4E, 0x6AD5},
+       {0xE5A4F, 0x6AD2},
+       {0xE5A52, 0x701E},
+       {0xE5A53, 0x702C},
+       {0xE5A54, 0x7025},
+       {0xE5A55, 0x6FF3},
+       {0xE5A56, 0x7204},
+       {0xE5A57, 0x7208},
+       {0xE5A58, 0x7215},
+       {0xE5A5A, 0x74C4},
+       {0xE5A5B, 0x74C9},
+       {0xE5A5C, 0x74C7},
+       {0xE5A5D, 0x74C8},
+       {0xE5A5E, 0x76A9},
+       {0xE5A5F, 0x77C6},
+       {0xE5A60, 0x77C5},
+       {0xE5A61, 0x7918},
+       {0xE5A62, 0x791A},
+       {0xE5A63, 0x7920},
+       {0xE5A65, 0x7A66},
+       {0xE5A66, 0x7A64},
+       {0xE5A67, 0x7A6A},
+       {0xE5A6E, 0x7C35},
+       {0xE5A6F, 0x7C34},
+       {0xE5A72, 0x7E6C},
+       {0xE5A74, 0x7E6E},
+       {0xE5A75, 0x7E71},
+       {0xE5A77, 0x81D4},
+       {0xE5A78, 0x81D6},
+       {0xE5A79, 0x821A},
+       {0xE5A7A, 0x8262},
+       {0xE5A7B, 0x8265},
+       {0xE5A7C, 0x8276},
+       {0xE5A7D, 0x85DB},
+       {0xE5A7E, 0x85D6},
+       {0xE5B22, 0x85E7},
+       {0xE5B25, 0x85F4},
+       {0xE5B27, 0x87FD},
+       {0xE5B28, 0x87D5},
+       {0xE5B29, 0x8807},
+       {0xE5B2B, 0x880F},
+       {0xE5B2C, 0x87F8},
+       {0xE5B2F, 0x8987},
+       {0xE5B31, 0x89B5},
+       {0xE5B32, 0x89F5},
+       {0xE5B34, 0x8B3F},
+       {0xE5B35, 0x8B43},
+       {0xE5B36, 0x8B4C},
+       {0xE5B38, 0x8D0B},
+       {0xE5B39, 0x8E6B},
+       {0xE5B3A, 0x8E68},
+       {0xE5B3B, 0x8E70},
+       {0xE5B3C, 0x8E75},
+       {0xE5B3D, 0x8E77},
+       {0xE5B3F, 0x8EC3},
+       {0xE5B41, 0x93E9},
+       {0xE5B42, 0x93EA},
+       {0xE5B43, 0x93CB},
+       {0xE5B44, 0x93C5},
+       {0xE5B45, 0x93C6},
+       {0xE5B47, 0x93ED},
+       {0xE5B48, 0x93D3},
+       {0xE5B4A, 0x93E5},
+       {0xE5B4D, 0x93DB},
+       {0xE5B4E, 0x93EB},
+       {0xE5B4F, 0x93E0},
+       {0xE5B50, 0x93C1},
+       {0xE5B53, 0x95DD},
+       {0xE5B5D, 0x97B2},
+       {0xE5B5E, 0x97B4},
+       {0xE5B5F, 0x97B1},
+       {0xE5B60, 0x97B5},
+       {0xE5B61, 0x97F2},
+       {0xE5B65, 0x9856},
+       {0xE5B69, 0x9944},
+       {0xE5B6B, 0x9A26},
+       {0xE5B6C, 0x9A1F},
+       {0xE5B6D, 0x9A18},
+       {0xE5B6E, 0x9A21},
+       {0xE5B6F, 0x9A17},
+       {0xE5B71, 0x9B09},
+       {0xE5B74, 0x9BC5},
+       {0xE5B75, 0x9BDF},
+       {0xE5B77, 0x9BE3},
+       {0xE5B79, 0x9BE9},
+       {0xE5B7A, 0x9BEE},
+       {0xE5B7D, 0x9D66},
+       {0xE5B7E, 0x9D7A},
+       {0xE5C22, 0x9D6E},
+       {0xE5C23, 0x9D91},
+       {0xE5C24, 0x9D83},
+       {0xE5C25, 0x9D76},
+       {0xE5C26, 0x9D7E},
+       {0xE5C27, 0x9D6D},
+       {0xE5C29, 0x9E95},
+       {0xE5C2A, 0x9EE3},
+       {0xE5C2D, 0x9F03},
+       {0xE5C2E, 0x9F04},
+       {0xE5C30, 0x9F17},
+       {0xE5C32, 0x5136},
+       {0xE5C34, 0x5336},
+       {0xE5C36, 0x5B42},
+       {0xE5C39, 0x5B44},
+       {0xE5C3A, 0x5B46},
+       {0xE5C3B, 0x5B7E},
+       {0xE5C3C, 0x5DCA},
+       {0xE5C3D, 0x5DC8},
+       {0xE5C3E, 0x5DCC},
+       {0xE5C3F, 0x5EF0},
+       {0xE5C41, 0x6585},
+       {0xE5C42, 0x66E5},
+       {0xE5C43, 0x66E7},
+       {0xE5C47, 0x6AF4},
+       {0xE5C49, 0x6AE9},
+       {0xE5C4F, 0x703D},
+       {0xE5C51, 0x7036},
+       {0xE5C53, 0x7216},
+       {0xE5C55, 0x7212},
+       {0xE5C56, 0x720F},
+       {0xE5C57, 0x7217},
+       {0xE5C58, 0x7211},
+       {0xE5C59, 0x720B},
+       {0xE5C5C, 0x74CD},
+       {0xE5C5D, 0x74D0},
+       {0xE5C5E, 0x74CC},
+       {0xE5C5F, 0x74CE},
+       {0xE5C60, 0x74D1},
+       {0xE5C62, 0x7589},
+       {0xE5C64, 0x7A6F},
+       {0xE5C65, 0x7C4B},
+       {0xE5C66, 0x7C44},
+       {0xE5C6C, 0x7E7F},
+       {0xE5C6D, 0x8B71},
+       {0xE5C6F, 0x802F},
+       {0xE5C70, 0x807A},
+       {0xE5C71, 0x807B},
+       {0xE5C72, 0x807C},
+       {0xE5C76, 0x85FC},
+       {0xE5C77, 0x8610},
+       {0xE5C78, 0x8602},
+       {0xE5C7B, 0x85EE},
+       {0xE5C7C, 0x8603},
+       {0xE5C7E, 0x860D},
+       {0xE5D21, 0x8613},
+       {0xE5D22, 0x8608},
+       {0xE5D23, 0x860F},
+       {0xE5D24, 0x8818},
+       {0xE5D25, 0x8812},
+       {0xE5D28, 0x8967},
+       {0xE5D29, 0x8965},
+       {0xE5D2A, 0x89BB},
+       {0xE5D2B, 0x8B69},
+       {0xE5D2C, 0x8B62},
+       {0xE5D2E, 0x8B6E},
+       {0xE5D30, 0x8B61},
+       {0xE5D32, 0x8B64},
+       {0xE5D33, 0x8B4D},
+       {0xE5D34, 0x8C51},
+       {0xE5D37, 0x8E83},
+       {0xE5D38, 0x8EC6},
+       {0xE5D3A, 0x941F},
+       {0xE5D3C, 0x9404},
+       {0xE5D3D, 0x9417},
+       {0xE5D3E, 0x9408},
+       {0xE5D3F, 0x9405},
+       {0xE5D41, 0x93F3},
+       {0xE5D42, 0x941E},
+       {0xE5D43, 0x9402},
+       {0xE5D44, 0x941A},
+       {0xE5D45, 0x941B},
+       {0xE5D46, 0x9427},
+       {0xE5D47, 0x941C},
+       {0xE5D49, 0x96B5},
+       {0xE5D4C, 0x9733},
+       {0xE5D4E, 0x9734},
+       {0xE5D4F, 0x9731},
+       {0xE5D50, 0x97B8},
+       {0xE5D51, 0x97BA},
+       {0xE5D53, 0x97FC},
+       {0xE5D56, 0x98C3},
+       {0xE5D58, 0x994D},
+       {0xE5D5A, 0x9A2F},
+       {0xE5D5E, 0x9AC9},
+       {0xE5D60, 0x9AC8},
+       {0xE5D61, 0x9AC4},
+       {0xE5D62, 0x9B2A},
+       {0xE5D63, 0x9B38},
+       {0xE5D64, 0x9B50},
+       {0xE5D66, 0x9C0A},
+       {0xE5D67, 0x9BFB},
+       {0xE5D68, 0x9C04},
+       {0xE5D69, 0x9BFC},
+       {0xE5D6A, 0x9BFE},
+       {0xE5D6E, 0x9C02},
+       {0xE5D6F, 0x9BF6},
+       {0xE5D70, 0x9C1B},
+       {0xE5D71, 0x9BF9},
+       {0xE5D72, 0x9C15},
+       {0xE5D73, 0x9C10},
+       {0xE5D74, 0x9BFF},
+       {0xE5D75, 0x9C00},
+       {0xE5D76, 0x9C0C},
+       {0xE5D79, 0x9D95},
+       {0xE5D7A, 0x9DA5},
+       {0xE5E21, 0x9E98},
+       {0xE5E22, 0x9EC1},
+       {0xE5E24, 0x9F5A},
+       {0xE5E25, 0x5164},
+       {0xE5E26, 0x56BB},
+       {0xE5E28, 0x58E6},
+       {0xE5E29, 0x5B49},
+       {0xE5E2A, 0x5BF7},
+       {0xE5E2D, 0x5DD0},
+       {0xE5E2F, 0x5FC2},
+       {0xE5E31, 0x6511},
+       {0xE5E33, 0x6AFF},
+       {0xE5E34, 0x6AFE},
+       {0xE5E35, 0x6AFD},
+       {0xE5E37, 0x6B01},
+       {0xE5E3A, 0x704B},
+       {0xE5E3B, 0x704D},
+       {0xE5E3C, 0x7047},
+       {0xE5E3D, 0x74D3},
+       {0xE5E3E, 0x7668},
+       {0xE5E3F, 0x7667},
+       {0xE5E42, 0x77D1},
+       {0xE5E43, 0x7930},
+       {0xE5E44, 0x7932},
+       {0xE5E45, 0x792E},
+       {0xE5E47, 0x9F9D},
+       {0xE5E48, 0x7AC9},
+       {0xE5E49, 0x7AC8},
+       {0xE5E4B, 0x7C56},
+       {0xE5E4C, 0x7C51},
+       {0xE5E50, 0x7E85},
+       {0xE5E51, 0x7E89},
+       {0xE5E52, 0x7E8E},
+       {0xE5E53, 0x7E84},
+       {0xE5E55, 0x826A},
+       {0xE5E56, 0x862B},
+       {0xE5E57, 0x862F},
+       {0xE5E58, 0x8628},
+       {0xE5E5A, 0x8616},
+       {0xE5E5B, 0x8615},
+       {0xE5E5C, 0x861D},
+       {0xE5E5D, 0x881A},
+       {0xE5E61, 0x89BC},
+       {0xE5E62, 0x8B75},
+       {0xE5E63, 0x8B7C},
+       {0xE5E65, 0x8D11},
+       {0xE5E66, 0x8D12},
+       {0xE5E67, 0x8F5C},
+       {0xE5E68, 0x91BB},
+       {0xE5E6A, 0x93F4},
+       {0xE5E6D, 0x942D},
+       {0xE5E70, 0x96E4},
+       {0xE5E71, 0x9737},
+       {0xE5E72, 0x9736},
+       {0xE5E73, 0x9767},
+       {0xE5E74, 0x97BE},
+       {0xE5E75, 0x97BD},
+       {0xE5E76, 0x97E2},
+       {0xE5E77, 0x9868},
+       {0xE5E78, 0x9866},
+       {0xE5E79, 0x98C8},
+       {0xE5E7A, 0x98CA},
+       {0xE5E7B, 0x98C7},
+       {0xE5E7C, 0x98DC},
+       {0xE5E7E, 0x994F},
+       {0xE5F21, 0x99A9},
+       {0xE5F22, 0x9A3C},
+       {0xE5F24, 0x9A3B},
+       {0xE5F25, 0x9ACE},
+       {0xE5F27, 0x9B14},
+       {0xE5F28, 0x9B53},
+       {0xE5F2A, 0x9C2E},
+       {0xE5F2C, 0x9C1F},
+       {0xE5F31, 0x9DB0},
+       {0xE5F32, 0x9DBD},
+       {0xE5F35, 0x9DAE},
+       {0xE5F36, 0x9DC4},
+       {0xE5F37, 0x9E7B},
+       {0xE5F3A, 0x9E9E},
+       {0xE5F3C, 0x9F05},
+       {0xE5F3E, 0x9F69},
+       {0xE5F3F, 0x9FA1},
+       {0xE5F40, 0x56C7},
+       {0xE5F41, 0x571D},
+       {0xE5F42, 0x5B4A},
+       {0xE5F43, 0x5DD3},
+       {0xE5F45, 0x5F72},
+       {0xE5F46, 0x6202},
+       {0xE5F48, 0x6235},
+       {0xE5F49, 0x6527},
+       {0xE5F4A, 0x651E},
+       {0xE5F4B, 0x651F},
+       {0xE5F4E, 0x6B07},
+       {0xE5F4F, 0x6B06},
+       {0xE5F52, 0x7054},
+       {0xE5F53, 0x721C},
+       {0xE5F54, 0x7220},
+       {0xE5F55, 0x7AF8},
+       {0xE5F57, 0x7C5D},
+       {0xE5F58, 0x7C58},
+       {0xE5F5A, 0x7E92},
+       {0xE5F5B, 0x7F4E},
+       {0xE5F5F, 0x8827},
+       {0xE5F61, 0x8B81},
+       {0xE5F62, 0x8B83},
+       {0xE5F64, 0x8C44},
+       {0xE5F69, 0x9442},
+       {0xE5F6A, 0x944D},
+       {0xE5F6B, 0x9454},
+       {0xE5F6C, 0x944E},
+       {0xE5F6E, 0x9443},
+       {0xE5F71, 0x973C},
+       {0xE5F72, 0x9740},
+       {0xE5F73, 0x97C0},
+       {0xE5F78, 0x995A},
+       {0xE5F79, 0x9A51},
+       {0xE5F7B, 0x9ADD},
+       {0xE5F7E, 0x9C38},
+       {0xE6022, 0x9C45},
+       {0xE6023, 0x9C3A},
+       {0xE6025, 0x9C35},
+       {0xE6029, 0x9EF1},
+       {0xE602B, 0x9F93},
+       {0xE602C, 0x529A},
+       {0xE602F, 0x8641},
+       {0xE6030, 0x5DD7},
+       {0xE6032, 0x6528},
+       {0xE6036, 0x7053},
+       {0xE6037, 0x7059},
+       {0xE6039, 0x7221},
+       {0xE603B, 0x766F},
+       {0xE603C, 0x7937},
+       {0xE603D, 0x79B5},
+       {0xE603E, 0x7C62},
+       {0xE603F, 0x7C5E},
+       {0xE6040, 0x7CF5},
+       {0xE6043, 0x863D},
+       {0xE6045, 0x882D},
+       {0xE6046, 0x8989},
+       {0xE6047, 0x8B8D},
+       {0xE6048, 0x8B87},
+       {0xE6049, 0x8B90},
+       {0xE604A, 0x8D1A},
+       {0xE604B, 0x8E99},
+       {0xE604F, 0x945F},
+       {0xE6052, 0x9456},
+       {0xE6053, 0x9461},
+       {0xE6054, 0x945B},
+       {0xE6055, 0x945A},
+       {0xE6056, 0x945C},
+       {0xE6057, 0x9465},
+       {0xE6059, 0x9741},
+       {0xE605C, 0x986E},
+       {0xE605D, 0x986C},
+       {0xE605E, 0x986D},
+       {0xE6060, 0x99AA},
+       {0xE6061, 0x9A5C},
+       {0xE6062, 0x9A58},
+       {0xE6063, 0x9ADE},
+       {0xE6065, 0x9C4F},
+       {0xE6066, 0x9C51},
+       {0xE6068, 0x9C53},
+       {0xE606C, 0x9DFC},
+       {0xE606D, 0x9F39},
+       {0xE606F, 0x513E},
+       {0xE6071, 0x56D2},
+       {0xE6073, 0x5B4F},
+       {0xE6074, 0x6B14},
+       {0xE6076, 0x7A72},
+       {0xE6077, 0x7A73},
+       {0xE607B, 0x8B91},
+       {0xE607E, 0x91BF},
+       {0xE6122, 0x946C},
+       {0xE6125, 0x96E6},
+       {0xE6126, 0x9745},
+       {0xE6128, 0x97C8},
+       {0xE6129, 0x97E4},
+       {0xE612A, 0x995D},
+       {0xE612C, 0x9B21},
+       {0xE612E, 0x9B2C},
+       {0xE612F, 0x9B57},
+       {0xE6132, 0x9C5D},
+       {0xE6133, 0x9C61},
+       {0xE6134, 0x9C65},
+       {0xE6135, 0x9E08},
+       {0xE613B, 0x9F45},
+       {0xE613E, 0x6205},
+       {0xE613F, 0x66EF},
+       {0xE6140, 0x6B1B},
+       {0xE6141, 0x6B1D},
+       {0xE6142, 0x7225},
+       {0xE6143, 0x7224},
+       {0xE6144, 0x7C6D},
+       {0xE6146, 0x8642},
+       {0xE6147, 0x8649},
+       {0xE6149, 0x8978},
+       {0xE614A, 0x898A},
+       {0xE614B, 0x8B97},
+       {0xE614D, 0x8C9B},
+       {0xE614E, 0x8D1C},
+       {0xE6150, 0x8EA2},
+       {0xE6159, 0x9C6C},
+       {0xE615B, 0x9C6F},
+       {0xE615D, 0x9E0E},
+       {0xE615F, 0x9F08},
+       {0xE6160, 0x9F1D},
+       {0xE6161, 0x9FA3},
+       {0xE6164, 0x5F60},
+       {0xE6165, 0x6B1C},
+       {0xE6169, 0x7CF3},
+       {0xE616B, 0x8B9B},
+       {0xE616C, 0x8EA7},
+       {0xE616D, 0x91C4},
+       {0xE616F, 0x947A},
+       {0xE6172, 0x9A61},
+       {0xE6173, 0x9A63},
+       {0xE6174, 0x9AD7},
+       {0xE6175, 0x9C76},
+       {0xE6177, 0x9FA5},
+       {0xE6179, 0x7067},
+       {0xE617B, 0x72AB},
+       {0xE617C, 0x864A},
+       {0xE617D, 0x897D},
+       {0xE617E, 0x8B9D},
+       {0xE6221, 0x8C53},
+       {0xE6222, 0x8F65},
+       {0xE6223, 0x947B},
+       {0xE6225, 0x98CD},
+       {0xE6226, 0x98DD},
+       {0xE6228, 0x9B30},
+       {0xE6229, 0x9E16},
+       {0xE622F, 0x96E7},
+       {0xE6230, 0x9E18},
+       {0xE6231, 0x9EA2},
+       {0xE6233, 0x9F7C},
+       {0xE6235, 0x7E9E},
+       {0xE6236, 0x9484},
+       {0xE6238, 0x9E1C},
+       {0xE623A, 0x7C71},
+       {0xE623B, 0x97CA},
+       {0xE623F, 0x9EA3},
+       {0xE6241, 0x9C7B},
+       {0xE6242, 0x9F97},
+       {0xE6245, 0x9750},
+       {0xE6249, 0x5727},
+       {0xE624A, 0x5C13},
+       {0xE6251, 0x5FC8},
+       {0xE6257, 0x6765},
+       {0xE625A, 0x52BD},
+       {0xE625C, 0x5B66},
+       {0xE625E, 0x65F9},
+       {0xE625F, 0x6788},
+       {0xE6260, 0x6CE6},
+       {0xE6261, 0x6CCB},
+       {0xE6263, 0x4FBD},
+       {0xE6264, 0x5F8D},
+       {0xE6266, 0x6018},
+       {0xE6267, 0x6048},
+       {0xE6269, 0x6B29},
+       {0xE626A, 0x70A6},
+       {0xE626C, 0x7706},
+       {0xE6270, 0x5A10},
+       {0xE6271, 0x5CFC},
+       {0xE6272, 0x5CFE},
+       {0xE6279, 0x70C9},
+       {0xE6323, 0x9579},
+       {0xE6325, 0x96BA},
+       {0xE632D, 0x7B29},
+       {0xE632E, 0x8128},
+       {0xE6330, 0x8A2E},
+       {0xE6334, 0x9AD9},
+       {0xE6336, 0x582B},
+       {0xE6337, 0x5845},
+       {0xE6339, 0x63FA},
+       {0xE633D, 0x6E86},
+       {0xE6343, 0x5867},
+       {0xE6345, 0x5BDD},
+       {0xE6346, 0x656E},
+       {0xE634A, 0x8C87},
+       {0xE634C, 0x50D2},
+       {0xE634D, 0x50DF},
+       {0xE6352, 0x69BA},
+       {0xE6354, 0x6B9D},
+       {0xE6356, 0x8059},
+       {0xE6363, 0x6F8A},
+       {0xE6366, 0x7BC3},
+       {0xE6367, 0x7BC2},
+       {0xE636C, 0x90F6},
+       {0xE636E, 0x9823},
+       {0xE6374, 0x71CD},
+       {0xE6375, 0x7499},
+       {0xE637B, 0x9842},
+       {0xE6422, 0x7F84},
+       {0xE6428, 0x8D0E},
+       {0xE642A, 0x9861},
+       {0xE642D, 0x8B73},
+       {0xE642F, 0x9C27},
+       {0xE6431, 0x9458},
+       {0xE6432, 0x77D6},
+       {0xE6433, 0x9B2D},
+       {0xE6448, 0x4F66},
+       {0xE6449, 0x4F68},
+       {0xE644A, 0x4FE7},
+       {0xE644B, 0x503F},
+       {0xE644D, 0x50A6},
+       {0xE644E, 0x510F},
+       {0xE644F, 0x523E},
+       {0xE6450, 0x5324},
+       {0xE6451, 0x5365},
+       {0xE6452, 0x539B},
+       {0xE6453, 0x517F},
+       {0xE6454, 0x54CB},
+       {0xE6455, 0x5573},
+       {0xE6456, 0x5571},
+       {0xE6457, 0x556B},
+       {0xE6458, 0x55F4},
+       {0xE6459, 0x5622},
+       {0xE645A, 0x5620},
+       {0xE645B, 0x5692},
+       {0xE645C, 0x56BA},
+       {0xE645D, 0x5691},
+       {0xE645E, 0x56B0},
+       {0xE645F, 0x5759},
+       {0xE6460, 0x578A},
+       {0xE6461, 0x580F},
+       {0xE6462, 0x5812},
+       {0xE6463, 0x5813},
+       {0xE6464, 0x5847},
+       {0xE6465, 0x589B},
+       {0xE6466, 0x5900},
+       {0xE6467, 0x594D},
+       {0xE6468, 0x5AD1},
+       {0xE6469, 0x5AD3},
+       {0xE646A, 0x5B67},
+       {0xE646B, 0x5C57},
+       {0xE646C, 0x5C77},
+       {0xE646D, 0x5CD5},
+       {0xE646E, 0x5D75},
+       {0xE646F, 0x5D8E},
+       {0xE6470, 0x5DA5},
+       {0xE6471, 0x5DB6},
+       {0xE6472, 0x5DBF},
+       {0xE6473, 0x5E65},
+       {0xE6474, 0x5ECD},
+       {0xE6475, 0x5EED},
+       {0xE6476, 0x5F94},
+       {0xE6477, 0x5F9A},
+       {0xE6478, 0x5FBA},
+       {0xE6479, 0x6125},
+       {0xE647A, 0x6150},
+       {0xE647B, 0x62A3},
+       {0xE647C, 0x6360},
+       {0xE647D, 0x6364},
+       {0xE647E, 0x63B6},
+       {0xE6521, 0x6403},
+       {0xE6522, 0x64B6},
+       {0xE6523, 0x651A},
+       {0xE6524, 0x7A25},
+       {0xE6525, 0x5C21},
+       {0xE6526, 0x66E2},
+       {0xE6527, 0x6702},
+       {0xE6528, 0x67A4},
+       {0xE6529, 0x67AC},
+       {0xE652A, 0x6810},
+       {0xE652B, 0x6806},
+       {0xE652C, 0x685E},
+       {0xE652D, 0x685A},
+       {0xE652E, 0x692C},
+       {0xE652F, 0x6929},
+       {0xE6530, 0x6A2D},
+       {0xE6531, 0x6A77},
+       {0xE6532, 0x6A7A},
+       {0xE6533, 0x6ACA},
+       {0xE6534, 0x6AE6},
+       {0xE6535, 0x6AF5},
+       {0xE6536, 0x6B0D},
+       {0xE6537, 0x6B0E},
+       {0xE6538, 0x6BDC},
+       {0xE6539, 0x6BDD},
+       {0xE653A, 0x6BF6},
+       {0xE653B, 0x6C1E},
+       {0xE653C, 0x6C63},
+       {0xE653D, 0x6DA5},
+       {0xE653E, 0x6E0F},
+       {0xE653F, 0x6E8A},
+       {0xE6540, 0x6E84},
+       {0xE6541, 0x6E8B},
+       {0xE6542, 0x6E7C},
+       {0xE6543, 0x6F4C},
+       {0xE6544, 0x6F48},
+       {0xE6545, 0x6F49},
+       {0xE6546, 0x6F9D},
+       {0xE6547, 0x6F99},
+       {0xE6548, 0x6FF8},
+       {0xE6549, 0x702E},
+       {0xE654A, 0x702D},
+       {0xE654B, 0x705C},
+       {0xE654C, 0x79CC},
+       {0xE654D, 0x70BF},
+       {0xE654E, 0x70EA},
+       {0xE654F, 0x70E5},
+       {0xE6550, 0x7111},
+       {0xE6551, 0x7112},
+       {0xE6552, 0x713F},
+       {0xE6553, 0x7139},
+       {0xE6554, 0x713B},
+       {0xE6555, 0x713D},
+       {0xE6556, 0x7177},
+       {0xE6557, 0x7175},
+       {0xE6558, 0x7176},
+       {0xE6559, 0x7171},
+       {0xE655A, 0x7196},
+       {0xE655B, 0x7193},
+       {0xE655C, 0x71B4},
+       {0xE655D, 0x71DD},
+       {0xE655E, 0x71DE},
+       {0xE655F, 0x720E},
+       {0xE6560, 0x5911},
+       {0xE6561, 0x7218},
+       {0xE6562, 0x7347},
+       {0xE6563, 0x7348},
+       {0xE6564, 0x73EF},
+       {0xE6565, 0x7412},
+       {0xE6566, 0x743B},
+       {0xE6567, 0x74A4},
+       {0xE6568, 0x748D},
+       {0xE6569, 0x74B4},
+       {0xE656A, 0x7673},
+       {0xE656B, 0x7677},
+       {0xE656C, 0x76BC},
+       {0xE656D, 0x7819},
+       {0xE656E, 0x781B},
+       {0xE656F, 0x783D},
+       {0xE6570, 0x7853},
+       {0xE6571, 0x7854},
+       {0xE6572, 0x7858},
+       {0xE6573, 0x78B7},
+       {0xE6574, 0x78D8},
+       {0xE6575, 0x78EE},
+       {0xE6576, 0x7922},
+       {0xE6577, 0x794D},
+       {0xE6578, 0x7986},
+       {0xE6579, 0x7999},
+       {0xE657A, 0x79A3},
+       {0xE657B, 0x79BC},
+       {0xE657C, 0x7AA7},
+       {0xE657D, 0x7B37},
+       {0xE657E, 0x7B59},
+       {0xE6621, 0x7BD0},
+       {0xE6622, 0x7C2F},
+       {0xE6623, 0x7C32},
+       {0xE6624, 0x7C42},
+       {0xE6625, 0x7C4E},
+       {0xE6626, 0x7C68},
+       {0xE6627, 0x7CA9},
+       {0xE6628, 0x7CED},
+       {0xE6629, 0x7DD0},
+       {0xE662A, 0x7E07},
+       {0xE662B, 0x7DD3},
+       {0xE662C, 0x7E64},
+       {0xE662D, 0x7F40},
+       {0xE662F, 0x8041},
+       {0xE6630, 0x8063},
+       {0xE6631, 0x80BB},
+       {0xE6632, 0x6711},
+       {0xE6633, 0x6725},
+       {0xE6634, 0x8248},
+       {0xE6635, 0x8310},
+       {0xE6636, 0x8362},
+       {0xE6637, 0x8312},
+       {0xE6638, 0x8421},
+       {0xE6639, 0x841E},
+       {0xE663A, 0x84E2},
+       {0xE663B, 0x84DE},
+       {0xE663C, 0x84E1},
+       {0xE663D, 0x8573},
+       {0xE663E, 0x85D4},
+       {0xE663F, 0x85F5},
+       {0xE6640, 0x8637},
+       {0xE6641, 0x8645},
+       {0xE6642, 0x8672},
+       {0xE6643, 0x874A},
+       {0xE6644, 0x87A9},
+       {0xE6645, 0x87A5},
+       {0xE6646, 0x87F5},
+       {0xE6647, 0x8834},
+       {0xE6648, 0x8850},
+       {0xE6649, 0x8887},
+       {0xE664A, 0x8954},
+       {0xE664B, 0x8984},
+       {0xE664C, 0x8B03},
+       {0xE664D, 0x8C52},
+       {0xE664E, 0x8CD8},
+       {0xE664F, 0x8D0C},
+       {0xE6650, 0x8D18},
+       {0xE6651, 0x8DB0},
+       {0xE6652, 0x8EBC},
+       {0xE6653, 0x8ED5},
+       {0xE6654, 0x8FAA},
+       {0xE6655, 0x909C},
+       {0xE6657, 0x915C},
+       {0xE6658, 0x922B},
+       {0xE6659, 0x9221},
+       {0xE665A, 0x9273},
+       {0xE665B, 0x92F4},
+       {0xE665C, 0x92F5},
+       {0xE665D, 0x933F},
+       {0xE665E, 0x9342},
+       {0xE665F, 0x9386},
+       {0xE6660, 0x93BE},
+       {0xE6661, 0x93BC},
+       {0xE6662, 0x93BD},
+       {0xE6663, 0x93F1},
+       {0xE6664, 0x93F2},
+       {0xE6665, 0x93EF},
+       {0xE6666, 0x9422},
+       {0xE6667, 0x9423},
+       {0xE6668, 0x9424},
+       {0xE6669, 0x9467},
+       {0xE666A, 0x9466},
+       {0xE666B, 0x9597},
+       {0xE666C, 0x95CE},
+       {0xE666D, 0x95E7},
+       {0xE666E, 0x973B},
+       {0xE666F, 0x974D},
+       {0xE6670, 0x98E4},
+       {0xE6671, 0x9942},
+       {0xE6672, 0x9B1D},
+       {0xE6673, 0x9B98},
+       {0xE6675, 0x9D49},
+       {0xE6676, 0x6449},
+       {0xE6677, 0x5E71},
+       {0xE6678, 0x5E85},
+       {0xE6679, 0x61D3},
+       {0xE667A, 0x990E},
+       {0xE667B, 0x8002},
+       {0xE667C, 0x781E},
+       {0xE6721, 0x5528},
+       {0xE6722, 0x5572},
+       {0xE6723, 0x55BA},
+       {0xE6724, 0x55F0},
+       {0xE6725, 0x55EE},
+       {0xE6726, 0x56B8},
+       {0xE6727, 0x56B9},
+       {0xE6728, 0x56C4},
+       {0xE6729, 0x8053},
+       {0xE672A, 0x92B0},
diff --git a/vte/src/unitable.CP437 b/vte/src/unitable.CP437
new file mode 100644
index 0000000..81e8883
--- /dev/null
+++ b/vte/src/unitable.CP437
@@ -0,0 +1,129 @@
+       /* generated file -- do not edit */
+       {0x80, 0x00c7},
+       {0x81, 0x00fc},
+       {0x82, 0x00e9},
+       {0x83, 0x00e2},
+       {0x84, 0x00e4},
+       {0x85, 0x00e0},
+       {0x86, 0x00e5},
+       {0x87, 0x00e7},
+       {0x88, 0x00ea},
+       {0x89, 0x00eb},
+       {0x8a, 0x00e8},
+       {0x8b, 0x00ef},
+       {0x8c, 0x00ee},
+       {0x8d, 0x00ec},
+       {0x8e, 0x00c4},
+       {0x8f, 0x00c5},
+       {0x90, 0x00c9},
+       {0x91, 0x00e6},
+       {0x92, 0x00c6},
+       {0x93, 0x00f4},
+       {0x94, 0x00f6},
+       {0x95, 0x00f2},
+       {0x96, 0x00fb},
+       {0x97, 0x00f9},
+       {0x98, 0x00ff},
+       {0x99, 0x00d6},
+       {0x9a, 0x00dc},
+       {0x9b, 0x00a2},
+       {0x9c, 0x00a3},
+       {0x9d, 0x00a5},
+       {0x9e, 0x20a7},
+       {0x9f, 0x0192},
+       {0xa0, 0x00e1},
+       {0xa1, 0x00ed},
+       {0xa2, 0x00f3},
+       {0xa3, 0x00fa},
+       {0xa4, 0x00f1},
+       {0xa5, 0x00d1},
+       {0xa6, 0x00aa},
+       {0xa7, 0x00ba},
+       {0xa8, 0x00bf},
+       {0xa9, 0x2310},
+       {0xaa, 0x00ac},
+       {0xab, 0x00bd},
+       {0xac, 0x00bc},
+       {0xad, 0x00a1},
+       {0xae, 0x00ab},
+       {0xaf, 0x00bb},
+       {0xb0, 0x2591},
+       {0xb1, 0x2592},
+       {0xb2, 0x2593},
+       {0xb3, 0x2502},
+       {0xb4, 0x2524},
+       {0xb5, 0x2561},
+       {0xb6, 0x2562},
+       {0xb7, 0x2556},
+       {0xb8, 0x2555},
+       {0xb9, 0x2563},
+       {0xba, 0x2551},
+       {0xbb, 0x2557},
+       {0xbc, 0x255d},
+       {0xbd, 0x255c},
+       {0xbe, 0x255b},
+       {0xbf, 0x2510},
+       {0xc0, 0x2514},
+       {0xc1, 0x2534},
+       {0xc2, 0x252c},
+       {0xc3, 0x251c},
+       {0xc4, 0x2500},
+       {0xc5, 0x253c},
+       {0xc6, 0x255e},
+       {0xc7, 0x255f},
+       {0xc8, 0x255a},
+       {0xc9, 0x2554},
+       {0xca, 0x2569},
+       {0xcb, 0x2566},
+       {0xcc, 0x2560},
+       {0xcd, 0x2550},
+       {0xce, 0x256c},
+       {0xcf, 0x2567},
+       {0xd0, 0x2568},
+       {0xd1, 0x2564},
+       {0xd2, 0x2565},
+       {0xd3, 0x2559},
+       {0xd4, 0x2558},
+       {0xd5, 0x2552},
+       {0xd6, 0x2553},
+       {0xd7, 0x256b},
+       {0xd8, 0x256a},
+       {0xd9, 0x2518},
+       {0xda, 0x250c},
+       {0xdb, 0x2588},
+       {0xdc, 0x2584},
+       {0xdd, 0x258c},
+       {0xde, 0x2590},
+       {0xdf, 0x2580},
+       {0xe0, 0x03b1},
+       {0xe1, 0x00df},
+       {0xe2, 0x0393},
+       {0xe3, 0x03c0},
+       {0xe4, 0x03a3},
+       {0xe5, 0x03c3},
+       {0xe6, 0x00b5},
+       {0xe7, 0x03c4},
+       {0xe8, 0x03a6},
+       {0xe9, 0x0398},
+       {0xea, 0x03a9},
+       {0xeb, 0x03b4},
+       {0xec, 0x221e},
+       {0xed, 0x03c6},
+       {0xee, 0x03b5},
+       {0xef, 0x2229},
+       {0xf0, 0x2261},
+       {0xf1, 0x00b1},
+       {0xf2, 0x2265},
+       {0xf3, 0x2264},
+       {0xf4, 0x2320},
+       {0xf5, 0x2321},
+       {0xf6, 0x00f7},
+       {0xf7, 0x2248},
+       {0xf8, 0x00b0},
+       {0xf9, 0x2219},
+       {0xfa, 0x00b7},
+       {0xfb, 0x221a},
+       {0xfc, 0x207f},
+       {0xfd, 0x00b2},
+       {0xfe, 0x25a0},
+       {0xff, 0x00a0},
diff --git a/vte/src/unitable.GB12345 b/vte/src/unitable.GB12345
new file mode 100644
index 0000000..662299a
--- /dev/null
+++ b/vte/src/unitable.GB12345
@@ -0,0 +1,7549 @@
+       /* generated file -- do not edit */
+       {0x2121, 0x3000},
+       {0x2122, 0x3001},
+       {0x2123, 0x3002},
+       {0x2124, 0x30FB},
+       {0x2125, 0x02C9},
+       {0x2126, 0x02C7},
+       {0x2127, 0x00A8},
+       {0x2128, 0x3003},
+       {0x2129, 0x3005},
+       {0x212A, 0x2015},
+       {0x212B, 0xFF5E},
+       {0x212C, 0x2225},
+       {0x212D, 0x2026},
+       {0x212E, 0x2018},
+       {0x212F, 0x2019},
+       {0x2130, 0x201C},
+       {0x2131, 0x201D},
+       {0x2132, 0x3014},
+       {0x2133, 0x3015},
+       {0x2134, 0x3008},
+       {0x2135, 0x3009},
+       {0x2136, 0x300A},
+       {0x2137, 0x300B},
+       {0x2138, 0x300C},
+       {0x2139, 0x300D},
+       {0x213A, 0x300E},
+       {0x213B, 0x300F},
+       {0x213C, 0x3016},
+       {0x213D, 0x3017},
+       {0x213E, 0x3010},
+       {0x213F, 0x3011},
+       {0x2140, 0x00B1},
+       {0x2141, 0x00D7},
+       {0x2142, 0x00F7},
+       {0x2143, 0x2236},
+       {0x2144, 0x2227},
+       {0x2145, 0x2228},
+       {0x2146, 0x2211},
+       {0x2147, 0x220F},
+       {0x2148, 0x222A},
+       {0x2149, 0x2229},
+       {0x214A, 0x2208},
+       {0x214B, 0x2237},
+       {0x214C, 0x221A},
+       {0x214D, 0x22A5},
+       {0x214E, 0x2225},
+       {0x214F, 0x2220},
+       {0x2150, 0x2312},
+       {0x2151, 0x2299},
+       {0x2152, 0x222B},
+       {0x2153, 0x222E},
+       {0x2154, 0x2261},
+       {0x2155, 0x224C},
+       {0x2156, 0x2248},
+       {0x2157, 0x223D},
+       {0x2158, 0x221D},
+       {0x2159, 0x2260},
+       {0x215A, 0x226E},
+       {0x215B, 0x226F},
+       {0x215C, 0x2264},
+       {0x215D, 0x2265},
+       {0x215E, 0x221E},
+       {0x215F, 0x2235},
+       {0x2160, 0x2234},
+       {0x2161, 0x2642},
+       {0x2162, 0x2640},
+       {0x2163, 0x00B0},
+       {0x2164, 0x2032},
+       {0x2165, 0x2033},
+       {0x2166, 0x2103},
+       {0x2167, 0xFF04},
+       {0x2168, 0x00A4},
+       {0x2169, 0xFFE0},
+       {0x216A, 0xFFE1},
+       {0x216B, 0x2030},
+       {0x216C, 0x00A7},
+       {0x216D, 0x2116},
+       {0x216E, 0x2606},
+       {0x216F, 0x2605},
+       {0x2170, 0x25CB},
+       {0x2171, 0x25CF},
+       {0x2172, 0x25CE},
+       {0x2173, 0x25C7},
+       {0x2174, 0x25C6},
+       {0x2175, 0x25A1},
+       {0x2176, 0x25A0},
+       {0x2177, 0x25B3},
+       {0x2178, 0x25B2},
+       {0x2179, 0x203B},
+       {0x217A, 0x2192},
+       {0x217B, 0x2190},
+       {0x217C, 0x2191},
+       {0x217D, 0x2193},
+       {0x217E, 0x3013},
+       {0x2231, 0x2488},
+       {0x2232, 0x2489},
+       {0x2233, 0x248A},
+       {0x2234, 0x248B},
+       {0x2235, 0x248C},
+       {0x2236, 0x248D},
+       {0x2237, 0x248E},
+       {0x2238, 0x248F},
+       {0x2239, 0x2490},
+       {0x223A, 0x2491},
+       {0x223B, 0x2492},
+       {0x223C, 0x2493},
+       {0x223D, 0x2494},
+       {0x223E, 0x2495},
+       {0x223F, 0x2496},
+       {0x2240, 0x2497},
+       {0x2241, 0x2498},
+       {0x2242, 0x2499},
+       {0x2243, 0x249A},
+       {0x2244, 0x249B},
+       {0x2245, 0x2474},
+       {0x2246, 0x2475},
+       {0x2247, 0x2476},
+       {0x2248, 0x2477},
+       {0x2249, 0x2478},
+       {0x224A, 0x2479},
+       {0x224B, 0x247A},
+       {0x224C, 0x247B},
+       {0x224D, 0x247C},
+       {0x224E, 0x247D},
+       {0x224F, 0x247E},
+       {0x2250, 0x247F},
+       {0x2251, 0x2480},
+       {0x2252, 0x2481},
+       {0x2253, 0x2482},
+       {0x2254, 0x2483},
+       {0x2255, 0x2484},
+       {0x2256, 0x2485},
+       {0x2257, 0x2486},
+       {0x2258, 0x2487},
+       {0x2259, 0x2460},
+       {0x225A, 0x2461},
+       {0x225B, 0x2462},
+       {0x225C, 0x2463},
+       {0x225D, 0x2464},
+       {0x225E, 0x2465},
+       {0x225F, 0x2466},
+       {0x2260, 0x2467},
+       {0x2261, 0x2468},
+       {0x2262, 0x2469},
+       {0x2265, 0x3220},
+       {0x2266, 0x3221},
+       {0x2267, 0x3222},
+       {0x2268, 0x3223},
+       {0x2269, 0x3224},
+       {0x226A, 0x3225},
+       {0x226B, 0x3226},
+       {0x226C, 0x3227},
+       {0x226D, 0x3228},
+       {0x226E, 0x3229},
+       {0x2271, 0x2160},
+       {0x2272, 0x2161},
+       {0x2273, 0x2162},
+       {0x2274, 0x2163},
+       {0x2275, 0x2164},
+       {0x2276, 0x2165},
+       {0x2277, 0x2166},
+       {0x2278, 0x2167},
+       {0x2279, 0x2168},
+       {0x227A, 0x2169},
+       {0x227B, 0x216A},
+       {0x227C, 0x216B},
+       {0x2321, 0xFF01},
+       {0x2322, 0xFF02},
+       {0x2323, 0xFF03},
+       {0x2324, 0xFFE5},
+       {0x2325, 0xFF05},
+       {0x2326, 0xFF06},
+       {0x2327, 0xFF07},
+       {0x2328, 0xFF08},
+       {0x2329, 0xFF09},
+       {0x232A, 0xFF0A},
+       {0x232B, 0xFF0B},
+       {0x232C, 0xFF0C},
+       {0x232D, 0xFF0D},
+       {0x232E, 0xFF0E},
+       {0x232F, 0xFF0F},
+       {0x2330, 0xFF10},
+       {0x2331, 0xFF11},
+       {0x2332, 0xFF12},
+       {0x2333, 0xFF13},
+       {0x2334, 0xFF14},
+       {0x2335, 0xFF15},
+       {0x2336, 0xFF16},
+       {0x2337, 0xFF17},
+       {0x2338, 0xFF18},
+       {0x2339, 0xFF19},
+       {0x233A, 0xFF1A},
+       {0x233B, 0xFF1B},
+       {0x233C, 0xFF1C},
+       {0x233D, 0xFF1D},
+       {0x233E, 0xFF1E},
+       {0x233F, 0xFF1F},
+       {0x2340, 0xFF20},
+       {0x2341, 0xFF21},
+       {0x2342, 0xFF22},
+       {0x2343, 0xFF23},
+       {0x2344, 0xFF24},
+       {0x2345, 0xFF25},
+       {0x2346, 0xFF26},
+       {0x2347, 0xFF27},
+       {0x2348, 0xFF28},
+       {0x2349, 0xFF29},
+       {0x234A, 0xFF2A},
+       {0x234B, 0xFF2B},
+       {0x234C, 0xFF2C},
+       {0x234D, 0xFF2D},
+       {0x234E, 0xFF2E},
+       {0x234F, 0xFF2F},
+       {0x2350, 0xFF30},
+       {0x2351, 0xFF31},
+       {0x2352, 0xFF32},
+       {0x2353, 0xFF33},
+       {0x2354, 0xFF34},
+       {0x2355, 0xFF35},
+       {0x2356, 0xFF36},
+       {0x2357, 0xFF37},
+       {0x2358, 0xFF38},
+       {0x2359, 0xFF39},
+       {0x235A, 0xFF3A},
+       {0x235B, 0xFF3B},
+       {0x235C, 0xFF3C},
+       {0x235D, 0xFF3D},
+       {0x235E, 0xFF3E},
+       {0x235F, 0xFF3F},
+       {0x2360, 0xFF40},
+       {0x2361, 0xFF41},
+       {0x2362, 0xFF42},
+       {0x2363, 0xFF43},
+       {0x2364, 0xFF44},
+       {0x2365, 0xFF45},
+       {0x2366, 0xFF46},
+       {0x2367, 0xFF47},
+       {0x2368, 0xFF48},
+       {0x2369, 0xFF49},
+       {0x236A, 0xFF4A},
+       {0x236B, 0xFF4B},
+       {0x236C, 0xFF4C},
+       {0x236D, 0xFF4D},
+       {0x236E, 0xFF4E},
+       {0x236F, 0xFF4F},
+       {0x2370, 0xFF50},
+       {0x2371, 0xFF51},
+       {0x2372, 0xFF52},
+       {0x2373, 0xFF53},
+       {0x2374, 0xFF54},
+       {0x2375, 0xFF55},
+       {0x2376, 0xFF56},
+       {0x2377, 0xFF57},
+       {0x2378, 0xFF58},
+       {0x2379, 0xFF59},
+       {0x237A, 0xFF5A},
+       {0x237B, 0xFF5B},
+       {0x237C, 0xFF5C},
+       {0x237D, 0xFF5D},
+       {0x237E, 0xFFE3},
+       {0x2421, 0x3041},
+       {0x2422, 0x3042},
+       {0x2423, 0x3043},
+       {0x2424, 0x3044},
+       {0x2425, 0x3045},
+       {0x2426, 0x3046},
+       {0x2427, 0x3047},
+       {0x2428, 0x3048},
+       {0x2429, 0x3049},
+       {0x242A, 0x304A},
+       {0x242B, 0x304B},
+       {0x242C, 0x304C},
+       {0x242D, 0x304D},
+       {0x242E, 0x304E},
+       {0x242F, 0x304F},
+       {0x2430, 0x3050},
+       {0x2431, 0x3051},
+       {0x2432, 0x3052},
+       {0x2433, 0x3053},
+       {0x2434, 0x3054},
+       {0x2435, 0x3055},
+       {0x2436, 0x3056},
+       {0x2437, 0x3057},
+       {0x2438, 0x3058},
+       {0x2439, 0x3059},
+       {0x243A, 0x305A},
+       {0x243B, 0x305B},
+       {0x243C, 0x305C},
+       {0x243D, 0x305D},
+       {0x243E, 0x305E},
+       {0x243F, 0x305F},
+       {0x2440, 0x3060},
+       {0x2441, 0x3061},
+       {0x2442, 0x3062},
+       {0x2443, 0x3063},
+       {0x2444, 0x3064},
+       {0x2445, 0x3065},
+       {0x2446, 0x3066},
+       {0x2447, 0x3067},
+       {0x2448, 0x3068},
+       {0x2449, 0x3069},
+       {0x244A, 0x306A},
+       {0x244B, 0x306B},
+       {0x244C, 0x306C},
+       {0x244D, 0x306D},
+       {0x244E, 0x306E},
+       {0x244F, 0x306F},
+       {0x2450, 0x3070},
+       {0x2451, 0x3071},
+       {0x2452, 0x3072},
+       {0x2453, 0x3073},
+       {0x2454, 0x3074},
+       {0x2455, 0x3075},
+       {0x2456, 0x3076},
+       {0x2457, 0x3077},
+       {0x2458, 0x3078},
+       {0x2459, 0x3079},
+       {0x245A, 0x307A},
+       {0x245B, 0x307B},
+       {0x245C, 0x307C},
+       {0x245D, 0x307D},
+       {0x245E, 0x307E},
+       {0x245F, 0x307F},
+       {0x2460, 0x3080},
+       {0x2461, 0x3081},
+       {0x2462, 0x3082},
+       {0x2463, 0x3083},
+       {0x2464, 0x3084},
+       {0x2465, 0x3085},
+       {0x2466, 0x3086},
+       {0x2467, 0x3087},
+       {0x2468, 0x3088},
+       {0x2469, 0x3089},
+       {0x246A, 0x308A},
+       {0x246B, 0x308B},
+       {0x246C, 0x308C},
+       {0x246D, 0x308D},
+       {0x246E, 0x308E},
+       {0x246F, 0x308F},
+       {0x2470, 0x3090},
+       {0x2471, 0x3091},
+       {0x2472, 0x3092},
+       {0x2473, 0x3093},
+       {0x2521, 0x30A1},
+       {0x2522, 0x30A2},
+       {0x2523, 0x30A3},
+       {0x2524, 0x30A4},
+       {0x2525, 0x30A5},
+       {0x2526, 0x30A6},
+       {0x2527, 0x30A7},
+       {0x2528, 0x30A8},
+       {0x2529, 0x30A9},
+       {0x252A, 0x30AA},
+       {0x252B, 0x30AB},
+       {0x252C, 0x30AC},
+       {0x252D, 0x30AD},
+       {0x252E, 0x30AE},
+       {0x252F, 0x30AF},
+       {0x2530, 0x30B0},
+       {0x2531, 0x30B1},
+       {0x2532, 0x30B2},
+       {0x2533, 0x30B3},
+       {0x2534, 0x30B4},
+       {0x2535, 0x30B5},
+       {0x2536, 0x30B6},
+       {0x2537, 0x30B7},
+       {0x2538, 0x30B8},
+       {0x2539, 0x30B9},
+       {0x253A, 0x30BA},
+       {0x253B, 0x30BB},
+       {0x253C, 0x30BC},
+       {0x253D, 0x30BD},
+       {0x253E, 0x30BE},
+       {0x253F, 0x30BF},
+       {0x2540, 0x30C0},
+       {0x2541, 0x30C1},
+       {0x2542, 0x30C2},
+       {0x2543, 0x30C3},
+       {0x2544, 0x30C4},
+       {0x2545, 0x30C5},
+       {0x2546, 0x30C6},
+       {0x2547, 0x30C7},
+       {0x2548, 0x30C8},
+       {0x2549, 0x30C9},
+       {0x254A, 0x30CA},
+       {0x254B, 0x30CB},
+       {0x254C, 0x30CC},
+       {0x254D, 0x30CD},
+       {0x254E, 0x30CE},
+       {0x254F, 0x30CF},
+       {0x2550, 0x30D0},
+       {0x2551, 0x30D1},
+       {0x2552, 0x30D2},
+       {0x2553, 0x30D3},
+       {0x2554, 0x30D4},
+       {0x2555, 0x30D5},
+       {0x2556, 0x30D6},
+       {0x2557, 0x30D7},
+       {0x2558, 0x30D8},
+       {0x2559, 0x30D9},
+       {0x255A, 0x30DA},
+       {0x255B, 0x30DB},
+       {0x255C, 0x30DC},
+       {0x255D, 0x30DD},
+       {0x255E, 0x30DE},
+       {0x255F, 0x30DF},
+       {0x2560, 0x30E0},
+       {0x2561, 0x30E1},
+       {0x2562, 0x30E2},
+       {0x2563, 0x30E3},
+       {0x2564, 0x30E4},
+       {0x2565, 0x30E5},
+       {0x2566, 0x30E6},
+       {0x2567, 0x30E7},
+       {0x2568, 0x30E8},
+       {0x2569, 0x30E9},
+       {0x256A, 0x30EA},
+       {0x256B, 0x30EB},
+       {0x256C, 0x30EC},
+       {0x256D, 0x30ED},
+       {0x256E, 0x30EE},
+       {0x256F, 0x30EF},
+       {0x2570, 0x30F0},
+       {0x2571, 0x30F1},
+       {0x2572, 0x30F2},
+       {0x2573, 0x30F3},
+       {0x2574, 0x30F4},
+       {0x2575, 0x30F5},
+       {0x2576, 0x30F6},
+       {0x2621, 0x0391},
+       {0x2622, 0x0392},
+       {0x2623, 0x0393},
+       {0x2624, 0x0394},
+       {0x2625, 0x0395},
+       {0x2626, 0x0396},
+       {0x2627, 0x0397},
+       {0x2628, 0x0398},
+       {0x2629, 0x0399},
+       {0x262A, 0x039A},
+       {0x262B, 0x039B},
+       {0x262C, 0x039C},
+       {0x262D, 0x039D},
+       {0x262E, 0x039E},
+       {0x262F, 0x039F},
+       {0x2630, 0x03A0},
+       {0x2631, 0x03A1},
+       {0x2632, 0x03A3},
+       {0x2633, 0x03A4},
+       {0x2634, 0x03A5},
+       {0x2635, 0x03A6},
+       {0x2636, 0x03A7},
+       {0x2637, 0x03A8},
+       {0x2638, 0x03A9},
+       {0x2641, 0x03B1},
+       {0x2642, 0x03B2},
+       {0x2643, 0x03B3},
+       {0x2644, 0x03B4},
+       {0x2645, 0x03B5},
+       {0x2646, 0x03B6},
+       {0x2647, 0x03B7},
+       {0x2648, 0x03B8},
+       {0x2649, 0x03B9},
+       {0x264A, 0x03BA},
+       {0x264B, 0x03BB},
+       {0x264C, 0x03BC},
+       {0x264D, 0x03BD},
+       {0x264E, 0x03BE},
+       {0x264F, 0x03BF},
+       {0x2650, 0x03C0},
+       {0x2651, 0x03C1},
+       {0x2652, 0x03C3},
+       {0x2653, 0x03C4},
+       {0x2654, 0x03C5},
+       {0x2655, 0x03C6},
+       {0x2656, 0x03C7},
+       {0x2657, 0x03C8},
+       {0x2658, 0x03C9},
+       {0x2721, 0x0410},
+       {0x2722, 0x0411},
+       {0x2723, 0x0412},
+       {0x2724, 0x0413},
+       {0x2725, 0x0414},
+       {0x2726, 0x0415},
+       {0x2727, 0x0401},
+       {0x2728, 0x0416},
+       {0x2729, 0x0417},
+       {0x272A, 0x0418},
+       {0x272B, 0x0419},
+       {0x272C, 0x041A},
+       {0x272D, 0x041B},
+       {0x272E, 0x041C},
+       {0x272F, 0x041D},
+       {0x2730, 0x041E},
+       {0x2731, 0x041F},
+       {0x2732, 0x0420},
+       {0x2733, 0x0421},
+       {0x2734, 0x0422},
+       {0x2735, 0x0423},
+       {0x2736, 0x0424},
+       {0x2737, 0x0425},
+       {0x2738, 0x0426},
+       {0x2739, 0x0427},
+       {0x273A, 0x0428},
+       {0x273B, 0x0429},
+       {0x273C, 0x042A},
+       {0x273D, 0x042B},
+       {0x273E, 0x042C},
+       {0x273F, 0x042D},
+       {0x2740, 0x042E},
+       {0x2741, 0x042F},
+       {0x2751, 0x0430},
+       {0x2752, 0x0431},
+       {0x2753, 0x0432},
+       {0x2754, 0x0433},
+       {0x2755, 0x0434},
+       {0x2756, 0x0435},
+       {0x2757, 0x0451},
+       {0x2758, 0x0436},
+       {0x2759, 0x0437},
+       {0x275A, 0x0438},
+       {0x275B, 0x0439},
+       {0x275C, 0x043A},
+       {0x275D, 0x043B},
+       {0x275E, 0x043C},
+       {0x275F, 0x043D},
+       {0x2760, 0x043E},
+       {0x2761, 0x043F},
+       {0x2762, 0x0440},
+       {0x2763, 0x0441},
+       {0x2764, 0x0442},
+       {0x2765, 0x0443},
+       {0x2766, 0x0444},
+       {0x2767, 0x0445},
+       {0x2768, 0x0446},
+       {0x2769, 0x0447},
+       {0x276A, 0x0448},
+       {0x276B, 0x0449},
+       {0x276C, 0x044A},
+       {0x276D, 0x044B},
+       {0x276E, 0x044C},
+       {0x276F, 0x044D},
+       {0x2770, 0x044E},
+       {0x2771, 0x044F},
+       {0x2821, 0x0101},
+       {0x2822, 0x00E1},
+       {0x2823, 0x01CE},
+       {0x2824, 0x00E0},
+       {0x2825, 0x0113},
+       {0x2826, 0x00E9},
+       {0x2827, 0x011B},
+       {0x2828, 0x00E8},
+       {0x2829, 0x012B},
+       {0x282A, 0x00ED},
+       {0x282B, 0x01D0},
+       {0x282C, 0x00EC},
+       {0x282D, 0x014D},
+       {0x282E, 0x00F3},
+       {0x282F, 0x01D2},
+       {0x2830, 0x00F2},
+       {0x2831, 0x016B},
+       {0x2832, 0x00FA},
+       {0x2833, 0x01D4},
+       {0x2834, 0x00F9},
+       {0x2835, 0x01D6},
+       {0x2836, 0x01D8},
+       {0x2837, 0x01DA},
+       {0x2838, 0x01DC},
+       {0x2839, 0x00FC},
+       {0x283A, 0x00EA},
+       {0x2845, 0x3105},
+       {0x2846, 0x3106},
+       {0x2847, 0x3107},
+       {0x2848, 0x3108},
+       {0x2849, 0x3109},
+       {0x284A, 0x310A},
+       {0x284B, 0x310B},
+       {0x284C, 0x310C},
+       {0x284D, 0x310D},
+       {0x284E, 0x310E},
+       {0x284F, 0x310F},
+       {0x2850, 0x3110},
+       {0x2851, 0x3111},
+       {0x2852, 0x3112},
+       {0x2853, 0x3113},
+       {0x2854, 0x3114},
+       {0x2855, 0x3115},
+       {0x2856, 0x3116},
+       {0x2857, 0x3117},
+       {0x2858, 0x3118},
+       {0x2859, 0x3119},
+       {0x285A, 0x311A},
+       {0x285B, 0x311B},
+       {0x285C, 0x311C},
+       {0x285D, 0x311D},
+       {0x285E, 0x311E},
+       {0x285F, 0x311F},
+       {0x2860, 0x3120},
+       {0x2861, 0x3121},
+       {0x2862, 0x3122},
+       {0x2863, 0x3123},
+       {0x2864, 0x3124},
+       {0x2865, 0x3125},
+       {0x2866, 0x3126},
+       {0x2867, 0x3127},
+       {0x2868, 0x3128},
+       {0x2869, 0x3129},
+       {0x2924, 0x2500},
+       {0x2925, 0x2501},
+       {0x2926, 0x2502},
+       {0x2927, 0x2503},
+       {0x2928, 0x2504},
+       {0x2929, 0x2505},
+       {0x292A, 0x2506},
+       {0x292B, 0x2507},
+       {0x292C, 0x2508},
+       {0x292D, 0x2509},
+       {0x292E, 0x250A},
+       {0x292F, 0x250B},
+       {0x2930, 0x250C},
+       {0x2931, 0x250D},
+       {0x2932, 0x250E},
+       {0x2933, 0x250F},
+       {0x2934, 0x2510},
+       {0x2935, 0x2511},
+       {0x2936, 0x2512},
+       {0x2937, 0x2513},
+       {0x2938, 0x2514},
+       {0x2939, 0x2515},
+       {0x293A, 0x2516},
+       {0x293B, 0x2517},
+       {0x293C, 0x2518},
+       {0x293D, 0x2519},
+       {0x293E, 0x251A},
+       {0x293F, 0x251B},
+       {0x2940, 0x251C},
+       {0x2941, 0x251D},
+       {0x2942, 0x251E},
+       {0x2943, 0x251F},
+       {0x2944, 0x2520},
+       {0x2945, 0x2521},
+       {0x2946, 0x2522},
+       {0x2947, 0x2523},
+       {0x2948, 0x2524},
+       {0x2949, 0x2525},
+       {0x294A, 0x2526},
+       {0x294B, 0x2527},
+       {0x294C, 0x2528},
+       {0x294D, 0x2529},
+       {0x294E, 0x252A},
+       {0x294F, 0x252B},
+       {0x2950, 0x252C},
+       {0x2951, 0x252D},
+       {0x2952, 0x252E},
+       {0x2953, 0x252F},
+       {0x2954, 0x2530},
+       {0x2955, 0x2531},
+       {0x2956, 0x2532},
+       {0x2957, 0x2533},
+       {0x2958, 0x2534},
+       {0x2959, 0x2535},
+       {0x295A, 0x2536},
+       {0x295B, 0x2537},
+       {0x295C, 0x2538},
+       {0x295D, 0x2539},
+       {0x295E, 0x253A},
+       {0x295F, 0x253B},
+       {0x2960, 0x253C},
+       {0x2961, 0x253D},
+       {0x2962, 0x253E},
+       {0x2963, 0x253F},
+       {0x2964, 0x2540},
+       {0x2965, 0x2541},
+       {0x2966, 0x2542},
+       {0x2967, 0x2543},
+       {0x2968, 0x2544},
+       {0x2969, 0x2545},
+       {0x296A, 0x2546},
+       {0x296B, 0x2547},
+       {0x296C, 0x2548},
+       {0x296D, 0x2549},
+       {0x296E, 0x254A},
+       {0x296F, 0x254B},
+       {0x3021, 0x554A},
+       {0x3022, 0x963F},
+       {0x3023, 0x57C3},
+       {0x3024, 0x6328},
+       {0x3025, 0x54CE},
+       {0x3026, 0x5509},
+       {0x3027, 0x54C0},
+       {0x3028, 0x769A},
+       {0x3029, 0x764C},
+       {0x302A, 0x85F9},
+       {0x302B, 0x77EE},
+       {0x302C, 0x827E},
+       {0x302D, 0x7919},
+       {0x302E, 0x611B},
+       {0x302F, 0x9698},
+       {0x3030, 0x978D},
+       {0x3031, 0x6C28},
+       {0x3032, 0x5B89},
+       {0x3033, 0x4FFA},
+       {0x3034, 0x6309},
+       {0x3035, 0x6697},
+       {0x3036, 0x5CB8},
+       {0x3037, 0x80FA},
+       {0x3038, 0x6848},
+       {0x3039, 0x9AAF},
+       {0x303A, 0x6602},
+       {0x303B, 0x76CE},
+       {0x303C, 0x51F9},
+       {0x303D, 0x6556},
+       {0x303E, 0x71AC},
+       {0x303F, 0x7FF1},
+       {0x3040, 0x8956},
+       {0x3041, 0x50B2},
+       {0x3042, 0x5965},
+       {0x3043, 0x61CA},
+       {0x3044, 0x6FB3},
+       {0x3045, 0x82AD},
+       {0x3046, 0x634C},
+       {0x3047, 0x6252},
+       {0x3048, 0x53ED},
+       {0x3049, 0x5427},
+       {0x304A, 0x7B06},
+       {0x304B, 0x516B},
+       {0x304C, 0x75A4},
+       {0x304D, 0x5DF4},
+       {0x304E, 0x62D4},
+       {0x304F, 0x8DCB},
+       {0x3050, 0x9776},
+       {0x3051, 0x628A},
+       {0x3052, 0x8019},
+       {0x3053, 0x58E9},
+       {0x3054, 0x9738},
+       {0x3055, 0x7F77},
+       {0x3056, 0x7238},
+       {0x3057, 0x767D},
+       {0x3058, 0x67CF},
+       {0x3059, 0x767E},
+       {0x305A, 0x64FA},
+       {0x305B, 0x4F70},
+       {0x305C, 0x6557},
+       {0x305D, 0x62DC},
+       {0x305E, 0x7A17},
+       {0x305F, 0x6591},
+       {0x3060, 0x73ED},
+       {0x3061, 0x642C},
+       {0x3062, 0x6273},
+       {0x3063, 0x822C},
+       {0x3064, 0x9812},
+       {0x3065, 0x677F},
+       {0x3066, 0x7248},
+       {0x3067, 0x626E},
+       {0x3068, 0x62CC},
+       {0x3069, 0x4F34},
+       {0x306A, 0x74E3},
+       {0x306B, 0x534A},
+       {0x306C, 0x8FA6},
+       {0x306D, 0x7D46},
+       {0x306E, 0x90A6},
+       {0x306F, 0x5E6B},
+       {0x3070, 0x6886},
+       {0x3071, 0x699C},
+       {0x3072, 0x8180},
+       {0x3073, 0x7D81},
+       {0x3074, 0x68D2},
+       {0x3075, 0x78C5},
+       {0x3076, 0x868C},
+       {0x3077, 0x938A},
+       {0x3078, 0x508D},
+       {0x3079, 0x8B17},
+       {0x307A, 0x82DE},
+       {0x307B, 0x80DE},
+       {0x307C, 0x5305},
+       {0x307D, 0x8912},
+       {0x307E, 0x5265},
+       {0x3121, 0x8584},
+       {0x3122, 0x96F9},
+       {0x3123, 0x4FDD},
+       {0x3124, 0x5821},
+       {0x3125, 0x98FD},
+       {0x3126, 0x5BF6},
+       {0x3127, 0x62B1},
+       {0x3128, 0x5831},
+       {0x3129, 0x66B4},
+       {0x312A, 0x8C79},
+       {0x312B, 0x9B91},
+       {0x312C, 0x7206},
+       {0x312D, 0x676F},
+       {0x312E, 0x7891},
+       {0x312F, 0x60B2},
+       {0x3130, 0x5351},
+       {0x3131, 0x5317},
+       {0x3132, 0x8F29},
+       {0x3133, 0x80CC},
+       {0x3134, 0x8C9D},
+       {0x3135, 0x92C7},
+       {0x3136, 0x500D},
+       {0x3137, 0x72FD},
+       {0x3138, 0x5099},
+       {0x3139, 0x618A},
+       {0x313A, 0x7119},
+       {0x313B, 0x88AB},
+       {0x313C, 0x5954},
+       {0x313D, 0x82EF},
+       {0x313E, 0x672C},
+       {0x313F, 0x7B28},
+       {0x3140, 0x5D29},
+       {0x3141, 0x7DB3},
+       {0x3142, 0x752D},
+       {0x3143, 0x6CF5},
+       {0x3144, 0x8E66},
+       {0x3145, 0x8FF8},
+       {0x3146, 0x903C},
+       {0x3147, 0x9F3B},
+       {0x3148, 0x6BD4},
+       {0x3149, 0x9119},
+       {0x314A, 0x7B46},
+       {0x314B, 0x5F7C},
+       {0x314C, 0x78A7},
+       {0x314D, 0x84D6},
+       {0x314E, 0x853D},
+       {0x314F, 0x7562},
+       {0x3150, 0x6583},
+       {0x3151, 0x6BD6},
+       {0x3152, 0x5E63},
+       {0x3153, 0x5E87},
+       {0x3154, 0x75F9},
+       {0x3155, 0x9589},
+       {0x3156, 0x655D},
+       {0x3157, 0x5F0A},
+       {0x3158, 0x5FC5},
+       {0x3159, 0x8F9F},
+       {0x315A, 0x58C1},
+       {0x315B, 0x81C2},
+       {0x315C, 0x907F},
+       {0x315D, 0x965B},
+       {0x315E, 0x97AD},
+       {0x315F, 0x908A},
+       {0x3160, 0x7DE8},
+       {0x3161, 0x8CB6},
+       {0x3162, 0x6241},
+       {0x3163, 0x4FBF},
+       {0x3164, 0x8B8A},
+       {0x3165, 0x535E},
+       {0x3166, 0x8FA8},
+       {0x3167, 0x8FAF},
+       {0x3168, 0x8FAE},
+       {0x3169, 0x904D},
+       {0x316A, 0x6A19},
+       {0x316B, 0x5F6A},
+       {0x316C, 0x8198},
+       {0x316D, 0x8868},
+       {0x316E, 0x9C49},
+       {0x316F, 0x618B},
+       {0x3170, 0x522B},
+       {0x3171, 0x765F},
+       {0x3172, 0x5F6C},
+       {0x3173, 0x658C},
+       {0x3174, 0x7015},
+       {0x3175, 0x6FF1},
+       {0x3176, 0x8CD3},
+       {0x3177, 0x64EF},
+       {0x3178, 0x5175},
+       {0x3179, 0x51B0},
+       {0x317A, 0x67C4},
+       {0x317B, 0x4E19},
+       {0x317C, 0x79C9},
+       {0x317D, 0x9905},
+       {0x317E, 0x70B3},
+       {0x3221, 0x75C5},
+       {0x3222, 0x5E76},
+       {0x3223, 0x73BB},
+       {0x3224, 0x83E0},
+       {0x3225, 0x64AD},
+       {0x3226, 0x64A5},
+       {0x3227, 0x9262},
+       {0x3228, 0x6CE2},
+       {0x3229, 0x535A},
+       {0x322A, 0x52C3},
+       {0x322B, 0x640F},
+       {0x322C, 0x9251},
+       {0x322D, 0x7B94},
+       {0x322E, 0x4F2F},
+       {0x322F, 0x5E1B},
+       {0x3230, 0x8236},
+       {0x3231, 0x8116},
+       {0x3232, 0x818A},
+       {0x3233, 0x6E24},
+       {0x3234, 0x6CCA},
+       {0x3235, 0x99C1},
+       {0x3236, 0x6355},
+       {0x3237, 0x535C},
+       {0x3238, 0x54FA},
+       {0x3239, 0x88DC},
+       {0x323A, 0x57E0},
+       {0x323B, 0x4E0D},
+       {0x323C, 0x5E03},
+       {0x323D, 0x6B65},
+       {0x323E, 0x7C3F},
+       {0x323F, 0x90E8},
+       {0x3240, 0x6016},
+       {0x3241, 0x64E6},
+       {0x3242, 0x731C},
+       {0x3243, 0x88C1},
+       {0x3244, 0x6750},
+       {0x3245, 0x624D},
+       {0x3246, 0x8CA1},
+       {0x3247, 0x776C},
+       {0x3248, 0x8E29},
+       {0x3249, 0x91C7},
+       {0x324A, 0x5F69},
+       {0x324B, 0x83DC},
+       {0x324C, 0x8521},
+       {0x324D, 0x9910},
+       {0x324E, 0x53C3},
+       {0x324F, 0x8836},
+       {0x3250, 0x6B98},
+       {0x3251, 0x615A},
+       {0x3252, 0x6158},
+       {0x3253, 0x71E6},
+       {0x3254, 0x84BC},
+       {0x3255, 0x8259},
+       {0x3256, 0x5009},
+       {0x3257, 0x6EC4},
+       {0x3258, 0x85CF},
+       {0x3259, 0x64CD},
+       {0x325A, 0x7CD9},
+       {0x325B, 0x69FD},
+       {0x325C, 0x66F9},
+       {0x325D, 0x8349},
+       {0x325E, 0x53A0},
+       {0x325F, 0x7B56},
+       {0x3260, 0x5074},
+       {0x3261, 0x518C},
+       {0x3262, 0x6E2C},
+       {0x3263, 0x5C64},
+       {0x3264, 0x8E6D},
+       {0x3265, 0x63D2},
+       {0x3266, 0x53C9},
+       {0x3267, 0x832C},
+       {0x3268, 0x8336},
+       {0x3269, 0x67E5},
+       {0x326A, 0x78B4},
+       {0x326B, 0x643D},
+       {0x326C, 0x5BDF},
+       {0x326D, 0x5C94},
+       {0x326E, 0x5DEE},
+       {0x326F, 0x8A6B},
+       {0x3270, 0x62C6},
+       {0x3271, 0x67F4},
+       {0x3272, 0x8C7A},
+       {0x3273, 0x6519},
+       {0x3274, 0x647B},
+       {0x3275, 0x87EC},
+       {0x3276, 0x995E},
+       {0x3277, 0x8B92},
+       {0x3278, 0x7E8F},
+       {0x3279, 0x93DF},
+       {0x327A, 0x7523},
+       {0x327B, 0x95E1},
+       {0x327C, 0x986B},
+       {0x327D, 0x660C},
+       {0x327E, 0x7316},
+       {0x3321, 0x5834},
+       {0x3322, 0x5617},
+       {0x3323, 0x5E38},
+       {0x3324, 0x9577},
+       {0x3325, 0x511F},
+       {0x3326, 0x8178},
+       {0x3327, 0x5EE0},
+       {0x3328, 0x655E},
+       {0x3329, 0x66A2},
+       {0x332A, 0x5531},
+       {0x332B, 0x5021},
+       {0x332C, 0x8D85},
+       {0x332D, 0x6284},
+       {0x332E, 0x9214},
+       {0x332F, 0x671D},
+       {0x3330, 0x5632},
+       {0x3331, 0x6F6E},
+       {0x3332, 0x5DE2},
+       {0x3333, 0x5435},
+       {0x3334, 0x7092},
+       {0x3335, 0x8ECA},
+       {0x3336, 0x626F},
+       {0x3337, 0x64A4},
+       {0x3338, 0x63A3},
+       {0x3339, 0x5FB9},
+       {0x333A, 0x6F88},
+       {0x333B, 0x90F4},
+       {0x333C, 0x81E3},
+       {0x333D, 0x8FB0},
+       {0x333E, 0x5875},
+       {0x333F, 0x6668},
+       {0x3340, 0x5FF1},
+       {0x3341, 0x6C89},
+       {0x3342, 0x9673},
+       {0x3343, 0x8D81},
+       {0x3344, 0x896F},
+       {0x3345, 0x6491},
+       {0x3346, 0x7A31},
+       {0x3347, 0x57CE},
+       {0x3348, 0x6A59},
+       {0x3349, 0x6210},
+       {0x334A, 0x5448},
+       {0x334B, 0x4E58},
+       {0x334C, 0x7A0B},
+       {0x334D, 0x61F2},
+       {0x334E, 0x6F84},
+       {0x334F, 0x8AA0},
+       {0x3350, 0x627F},
+       {0x3351, 0x901E},
+       {0x3352, 0x9A01},
+       {0x3353, 0x79E4},
+       {0x3354, 0x5403},
+       {0x3355, 0x75F4},
+       {0x3356, 0x6301},
+       {0x3357, 0x5319},
+       {0x3358, 0x6C60},
+       {0x3359, 0x9072},
+       {0x335A, 0x5F1B},
+       {0x335B, 0x99B3},
+       {0x335C, 0x803B},
+       {0x335D, 0x9F52},
+       {0x335E, 0x4F88},
+       {0x335F, 0x5C3A},
+       {0x3360, 0x8D64},
+       {0x3361, 0x7FC5},
+       {0x3362, 0x65A5},
+       {0x3363, 0x71BE},
+       {0x3364, 0x5145},
+       {0x3365, 0x885D},
+       {0x3366, 0x87F2},
+       {0x3367, 0x5D07},
+       {0x3368, 0x5BF5},
+       {0x3369, 0x62BD},
+       {0x336A, 0x916C},
+       {0x336B, 0x7587},
+       {0x336C, 0x8E8A},
+       {0x336D, 0x7A20},
+       {0x336E, 0x6101},
+       {0x336F, 0x7C4C},
+       {0x3370, 0x4EC7},
+       {0x3371, 0x7DA2},
+       {0x3372, 0x7785},
+       {0x3373, 0x919C},
+       {0x3374, 0x81ED},
+       {0x3375, 0x521D},
+       {0x3376, 0x51FA},
+       {0x3377, 0x6A71},
+       {0x3378, 0x53A8},
+       {0x3379, 0x8E87},
+       {0x337A, 0x92E4},
+       {0x337B, 0x96DB},
+       {0x337C, 0x6EC1},
+       {0x337D, 0x9664},
+       {0x337E, 0x695A},
+       {0x3421, 0x790E},
+       {0x3422, 0x5132},
+       {0x3423, 0x77D7},
+       {0x3424, 0x6410},
+       {0x3425, 0x89F8},
+       {0x3426, 0x8655},
+       {0x3427, 0x63E3},
+       {0x3428, 0x5DDD},
+       {0x3429, 0x7A7F},
+       {0x342A, 0x693D},
+       {0x342B, 0x50B3},
+       {0x342C, 0x8239},
+       {0x342D, 0x5598},
+       {0x342E, 0x4E32},
+       {0x342F, 0x7621},
+       {0x3430, 0x7A97},
+       {0x3431, 0x5E62},
+       {0x3432, 0x5E8A},
+       {0x3433, 0x95D6},
+       {0x3434, 0x5275},
+       {0x3435, 0x5439},
+       {0x3436, 0x708A},
+       {0x3437, 0x6376},
+       {0x3438, 0x9318},
+       {0x3439, 0x5782},
+       {0x343A, 0x6625},
+       {0x343B, 0x693F},
+       {0x343C, 0x9187},
+       {0x343D, 0x5507},
+       {0x343E, 0x6DF3},
+       {0x343F, 0x7D14},
+       {0x3440, 0x8822},
+       {0x3441, 0x6233},
+       {0x3442, 0x7DBD},
+       {0x3443, 0x75B5},
+       {0x3444, 0x8328},
+       {0x3445, 0x78C1},
+       {0x3446, 0x96CC},
+       {0x3447, 0x8FAD},
+       {0x3448, 0x6148},
+       {0x3449, 0x74F7},
+       {0x344A, 0x8A5E},
+       {0x344B, 0x6B64},
+       {0x344C, 0x523A},
+       {0x344D, 0x8CDC},
+       {0x344E, 0x6B21},
+       {0x344F, 0x8070},
+       {0x3450, 0x8471},
+       {0x3451, 0x56F1},
+       {0x3452, 0x5306},
+       {0x3453, 0x5F9E},
+       {0x3454, 0x53E2},
+       {0x3455, 0x51D1},
+       {0x3456, 0x7C97},
+       {0x3457, 0x918B},
+       {0x3458, 0x7C07},
+       {0x3459, 0x4FC3},
+       {0x345A, 0x8EA5},
+       {0x345B, 0x7BE1},
+       {0x345C, 0x7AC4},
+       {0x345D, 0x6467},
+       {0x345E, 0x5D14},
+       {0x345F, 0x50AC},
+       {0x3460, 0x8106},
+       {0x3461, 0x7601},
+       {0x3462, 0x7CB9},
+       {0x3463, 0x6DEC},
+       {0x3464, 0x7FE0},
+       {0x3465, 0x6751},
+       {0x3466, 0x5B58},
+       {0x3467, 0x5BF8},
+       {0x3468, 0x78CB},
+       {0x3469, 0x64AE},
+       {0x346A, 0x6413},
+       {0x346B, 0x63AA},
+       {0x346C, 0x632B},
+       {0x346D, 0x932F},
+       {0x346E, 0x642D},
+       {0x346F, 0x9054},
+       {0x3470, 0x7B54},
+       {0x3471, 0x7629},
+       {0x3472, 0x6253},
+       {0x3473, 0x5927},
+       {0x3474, 0x5446},
+       {0x3475, 0x6B79},
+       {0x3476, 0x50A3},
+       {0x3477, 0x6234},
+       {0x3478, 0x5E36},
+       {0x3479, 0x6B86},
+       {0x347A, 0x4EE3},
+       {0x347B, 0x8CB8},
+       {0x347C, 0x888B},
+       {0x347D, 0x5F85},
+       {0x347E, 0x902E},
+       {0x3521, 0x6020},
+       {0x3522, 0x803D},
+       {0x3523, 0x64D4},
+       {0x3524, 0x4E39},
+       {0x3525, 0x55AE},
+       {0x3526, 0x9132},
+       {0x3527, 0x64A3},
+       {0x3528, 0x81BD},
+       {0x3529, 0x65E6},
+       {0x352A, 0x6C2E},
+       {0x352B, 0x4F46},
+       {0x352C, 0x619A},
+       {0x352D, 0x6DE1},
+       {0x352E, 0x8A95},
+       {0x352F, 0x5F48},
+       {0x3530, 0x86CB},
+       {0x3531, 0x7576},
+       {0x3532, 0x64CB},
+       {0x3533, 0x9EE8},
+       {0x3534, 0x8569},
+       {0x3535, 0x6A94},
+       {0x3536, 0x5200},
+       {0x3537, 0x6417},
+       {0x3538, 0x8E48},
+       {0x3539, 0x5012},
+       {0x353A, 0x5CF6},
+       {0x353B, 0x79B1},
+       {0x353C, 0x5C0E},
+       {0x353D, 0x5230},
+       {0x353E, 0x7A3B},
+       {0x353F, 0x60BC},
+       {0x3540, 0x9053},
+       {0x3541, 0x76D7},
+       {0x3542, 0x5FB7},
+       {0x3543, 0x5F97},
+       {0x3544, 0x7684},
+       {0x3545, 0x8E6C},
+       {0x3546, 0x71C8},
+       {0x3547, 0x767B},
+       {0x3548, 0x7B49},
+       {0x3549, 0x77AA},
+       {0x354A, 0x51F3},
+       {0x354B, 0x9127},
+       {0x354C, 0x5824},
+       {0x354D, 0x4F4E},
+       {0x354E, 0x6EF4},
+       {0x354F, 0x8FEA},
+       {0x3550, 0x6575},
+       {0x3551, 0x7B1B},
+       {0x3552, 0x72C4},
+       {0x3553, 0x6ECC},
+       {0x3554, 0x7FDF},
+       {0x3555, 0x5AE1},
+       {0x3556, 0x62B5},
+       {0x3557, 0x5E95},
+       {0x3558, 0x5730},
+       {0x3559, 0x8482},
+       {0x355A, 0x7B2C},
+       {0x355B, 0x5E1D},
+       {0x355C, 0x5F1F},
+       {0x355D, 0x905E},
+       {0x355E, 0x7DE0},
+       {0x355F, 0x985B},
+       {0x3560, 0x6382},
+       {0x3561, 0x6EC7},
+       {0x3562, 0x7898},
+       {0x3563, 0x9EDE},
+       {0x3564, 0x5178},
+       {0x3565, 0x975B},
+       {0x3566, 0x588A},
+       {0x3567, 0x96FB},
+       {0x3568, 0x4F43},
+       {0x3569, 0x7538},
+       {0x356A, 0x5E97},
+       {0x356B, 0x60E6},
+       {0x356C, 0x5960},
+       {0x356D, 0x6FB1},
+       {0x356E, 0x6BBF},
+       {0x356F, 0x7889},
+       {0x3570, 0x53FC},
+       {0x3571, 0x96D5},
+       {0x3572, 0x51CB},
+       {0x3573, 0x5201},
+       {0x3574, 0x6389},
+       {0x3575, 0x540A},
+       {0x3576, 0x91E3},
+       {0x3577, 0x8ABF},
+       {0x3578, 0x8DCC},
+       {0x3579, 0x7239},
+       {0x357A, 0x789F},
+       {0x357B, 0x8776},
+       {0x357C, 0x8FED},
+       {0x357D, 0x8ADC},
+       {0x357E, 0x758A},
+       {0x3621, 0x4E01},
+       {0x3622, 0x76EF},
+       {0x3623, 0x53EE},
+       {0x3624, 0x91D8},
+       {0x3625, 0x9802},
+       {0x3626, 0x9F0E},
+       {0x3627, 0x9320},
+       {0x3628, 0x5B9A},
+       {0x3629, 0x8A02},
+       {0x362A, 0x4E22},
+       {0x362B, 0x6771},
+       {0x362C, 0x51AC},
+       {0x362D, 0x8463},
+       {0x362E, 0x61C2},
+       {0x362F, 0x52D5},
+       {0x3630, 0x68DF},
+       {0x3631, 0x4F97},
+       {0x3632, 0x606B},
+       {0x3633, 0x51CD},
+       {0x3634, 0x6D1E},
+       {0x3635, 0x515C},
+       {0x3636, 0x6296},
+       {0x3637, 0x9B25},
+       {0x3638, 0x9661},
+       {0x3639, 0x8C46},
+       {0x363A, 0x9017},
+       {0x363B, 0x75D8},
+       {0x363C, 0x90FD},
+       {0x363D, 0x7763},
+       {0x363E, 0x6BD2},
+       {0x363F, 0x72A2},
+       {0x3640, 0x7368},
+       {0x3641, 0x8B80},
+       {0x3642, 0x5835},
+       {0x3643, 0x7779},
+       {0x3644, 0x8CED},
+       {0x3645, 0x675C},
+       {0x3646, 0x934D},
+       {0x3647, 0x809A},
+       {0x3648, 0x5EA6},
+       {0x3649, 0x6E21},
+       {0x364A, 0x5992},
+       {0x364B, 0x7AEF},
+       {0x364C, 0x77ED},
+       {0x364D, 0x935B},
+       {0x364E, 0x6BB5},
+       {0x364F, 0x65B7},
+       {0x3650, 0x7DDE},
+       {0x3651, 0x5806},
+       {0x3652, 0x5151},
+       {0x3653, 0x968A},
+       {0x3654, 0x5C0D},
+       {0x3655, 0x58A9},
+       {0x3656, 0x5678},
+       {0x3657, 0x8E72},
+       {0x3658, 0x6566},
+       {0x3659, 0x9813},
+       {0x365A, 0x56E4},
+       {0x365B, 0x920D},
+       {0x365C, 0x76FE},
+       {0x365D, 0x9041},
+       {0x365E, 0x6387},
+       {0x365F, 0x54C6},
+       {0x3660, 0x591A},
+       {0x3661, 0x596A},
+       {0x3662, 0x579B},
+       {0x3663, 0x8EB2},
+       {0x3664, 0x6735},
+       {0x3665, 0x8DFA},
+       {0x3666, 0x8235},
+       {0x3667, 0x5241},
+       {0x3668, 0x60F0},
+       {0x3669, 0x58AE},
+       {0x366A, 0x86FE},
+       {0x366B, 0x5CE8},
+       {0x366C, 0x9D5D},
+       {0x366D, 0x4FC4},
+       {0x366E, 0x984D},
+       {0x366F, 0x8A1B},
+       {0x3670, 0x5A25},
+       {0x3671, 0x60E1},
+       {0x3672, 0x5384},
+       {0x3673, 0x627C},
+       {0x3674, 0x904F},
+       {0x3675, 0x9102},
+       {0x3676, 0x9913},
+       {0x3677, 0x6069},
+       {0x3678, 0x800C},
+       {0x3679, 0x5152},
+       {0x367A, 0x8033},
+       {0x367B, 0x723E},
+       {0x367C, 0x990C},
+       {0x367D, 0x6D31},
+       {0x367E, 0x4E8C},
+       {0x3721, 0x8CB3},
+       {0x3722, 0x767C},
+       {0x3723, 0x7F70},
+       {0x3724, 0x7B4F},
+       {0x3725, 0x4F10},
+       {0x3726, 0x4E4F},
+       {0x3727, 0x95A5},
+       {0x3728, 0x6CD5},
+       {0x3729, 0x73D0},
+       {0x372A, 0x85E9},
+       {0x372B, 0x5E06},
+       {0x372C, 0x756A},
+       {0x372D, 0x7FFB},
+       {0x372E, 0x6A0A},
+       {0x372F, 0x792C},
+       {0x3730, 0x91E9},
+       {0x3731, 0x7E41},
+       {0x3732, 0x51E1},
+       {0x3733, 0x7169},
+       {0x3734, 0x53CD},
+       {0x3735, 0x8FD4},
+       {0x3736, 0x7BC4},
+       {0x3737, 0x8CA9},
+       {0x3738, 0x72AF},
+       {0x3739, 0x98EF},
+       {0x373A, 0x6CDB},
+       {0x373B, 0x574A},
+       {0x373C, 0x82B3},
+       {0x373D, 0x65B9},
+       {0x373E, 0x80AA},
+       {0x373F, 0x623F},
+       {0x3740, 0x9632},
+       {0x3741, 0x59A8},
+       {0x3742, 0x4EFF},
+       {0x3743, 0x8A2A},
+       {0x3744, 0x7D21},
+       {0x3745, 0x653E},
+       {0x3746, 0x83F2},
+       {0x3747, 0x975E},
+       {0x3748, 0x5561},
+       {0x3749, 0x98DB},
+       {0x374A, 0x80A5},
+       {0x374B, 0x532A},
+       {0x374C, 0x8AB9},
+       {0x374D, 0x5420},
+       {0x374E, 0x80BA},
+       {0x374F, 0x5EE2},
+       {0x3750, 0x6CB8},
+       {0x3751, 0x8CBB},
+       {0x3752, 0x82AC},
+       {0x3753, 0x915A},
+       {0x3754, 0x5429},
+       {0x3755, 0x6C1B},
+       {0x3756, 0x5206},
+       {0x3757, 0x7D1B},
+       {0x3758, 0x58B3},
+       {0x3759, 0x711A},
+       {0x375A, 0x6C7E},
+       {0x375B, 0x7C89},
+       {0x375C, 0x596E},
+       {0x375D, 0x4EFD},
+       {0x375E, 0x5FFF},
+       {0x375F, 0x61A4},
+       {0x3760, 0x7CDE},
+       {0x3761, 0x8C50},
+       {0x3762, 0x5C01},
+       {0x3763, 0x6953},
+       {0x3764, 0x8702},
+       {0x3765, 0x5CF0},
+       {0x3766, 0x92D2},
+       {0x3767, 0x98A8},
+       {0x3768, 0x760B},
+       {0x3769, 0x70FD},
+       {0x376A, 0x9022},
+       {0x376B, 0x99AE},
+       {0x376C, 0x7E2B},
+       {0x376D, 0x8AF7},
+       {0x376E, 0x5949},
+       {0x376F, 0x9CF3},
+       {0x3770, 0x4F5B},
+       {0x3771, 0x5426},
+       {0x3772, 0x592B},
+       {0x3773, 0x6577},
+       {0x3774, 0x819A},
+       {0x3775, 0x5B75},
+       {0x3776, 0x6276},
+       {0x3777, 0x62C2},
+       {0x3778, 0x8F3B},
+       {0x3779, 0x5E45},
+       {0x377A, 0x6C1F},
+       {0x377B, 0x7B26},
+       {0x377C, 0x4F0F},
+       {0x377D, 0x4FD8},
+       {0x377E, 0x670D},
+       {0x3821, 0x6D6E},
+       {0x3822, 0x6DAA},
+       {0x3823, 0x798F},
+       {0x3824, 0x88B1},
+       {0x3825, 0x5F17},
+       {0x3826, 0x752B},
+       {0x3827, 0x64AB},
+       {0x3828, 0x8F14},
+       {0x3829, 0x4FEF},
+       {0x382A, 0x91DC},
+       {0x382B, 0x65A7},
+       {0x382C, 0x812F},
+       {0x382D, 0x8151},
+       {0x382E, 0x5E9C},
+       {0x382F, 0x8150},
+       {0x3830, 0x8D74},
+       {0x3831, 0x526F},
+       {0x3832, 0x8986},
+       {0x3833, 0x8CE6},
+       {0x3834, 0x5FA9},
+       {0x3835, 0x5085},
+       {0x3836, 0x4ED8},
+       {0x3837, 0x961C},
+       {0x3838, 0x7236},
+       {0x3839, 0x8179},
+       {0x383A, 0x8CA0},
+       {0x383B, 0x5BCC},
+       {0x383C, 0x8A03},
+       {0x383D, 0x9644},
+       {0x383E, 0x5A66},
+       {0x383F, 0x7E1B},
+       {0x3840, 0x5490},
+       {0x3841, 0x5676},
+       {0x3842, 0x560E},
+       {0x3843, 0x8A72},
+       {0x3844, 0x6539},
+       {0x3845, 0x6982},
+       {0x3846, 0x9223},
+       {0x3847, 0x84CB},
+       {0x3848, 0x6E89},
+       {0x3849, 0x5E79},
+       {0x384A, 0x7518},
+       {0x384B, 0x6746},
+       {0x384C, 0x67D1},
+       {0x384D, 0x7AFF},
+       {0x384E, 0x809D},
+       {0x384F, 0x8D95},
+       {0x3850, 0x611F},
+       {0x3851, 0x79C6},
+       {0x3852, 0x6562},
+       {0x3853, 0x8D1B},
+       {0x3854, 0x5CA1},
+       {0x3855, 0x525B},
+       {0x3856, 0x92FC},
+       {0x3857, 0x7F38},
+       {0x3858, 0x809B},
+       {0x3859, 0x7DB1},
+       {0x385A, 0x5D17},
+       {0x385B, 0x6E2F},
+       {0x385C, 0x6760},
+       {0x385D, 0x7BD9},
+       {0x385E, 0x768B},
+       {0x385F, 0x9AD8},
+       {0x3860, 0x818F},
+       {0x3861, 0x7F94},
+       {0x3862, 0x7CD5},
+       {0x3863, 0x641E},
+       {0x3864, 0x93AC},
+       {0x3865, 0x7A3F},
+       {0x3866, 0x544A},
+       {0x3867, 0x54E5},
+       {0x3868, 0x6B4C},
+       {0x3869, 0x64F1},
+       {0x386A, 0x6208},
+       {0x386B, 0x9D3F},
+       {0x386C, 0x80F3},
+       {0x386D, 0x7599},
+       {0x386E, 0x5272},
+       {0x386F, 0x9769},
+       {0x3870, 0x845B},
+       {0x3871, 0x683C},
+       {0x3872, 0x86E4},
+       {0x3873, 0x95A3},
+       {0x3874, 0x9694},
+       {0x3875, 0x927B},
+       {0x3876, 0x500B},
+       {0x3877, 0x5404},
+       {0x3878, 0x7D66},
+       {0x3879, 0x6839},
+       {0x387A, 0x8DDF},
+       {0x387B, 0x8015},
+       {0x387C, 0x66F4},
+       {0x387D, 0x5E9A},
+       {0x387E, 0x7FB9},
+       {0x3921, 0x57C2},
+       {0x3922, 0x803F},
+       {0x3923, 0x6897},
+       {0x3924, 0x5DE5},
+       {0x3925, 0x653B},
+       {0x3926, 0x529F},
+       {0x3927, 0x606D},
+       {0x3928, 0x9F94},
+       {0x3929, 0x4F9B},
+       {0x392A, 0x8EAC},
+       {0x392B, 0x516C},
+       {0x392C, 0x5BAB},
+       {0x392D, 0x5F13},
+       {0x392E, 0x978F},
+       {0x392F, 0x6C5E},
+       {0x3930, 0x62F1},
+       {0x3931, 0x8CA2},
+       {0x3932, 0x5171},
+       {0x3933, 0x920E},
+       {0x3934, 0x52FE},
+       {0x3935, 0x6E9D},
+       {0x3936, 0x82DF},
+       {0x3937, 0x72D7},
+       {0x3938, 0x57A2},
+       {0x3939, 0x69CB},
+       {0x393A, 0x8CFC},
+       {0x393B, 0x591F},
+       {0x393C, 0x8F9C},
+       {0x393D, 0x83C7},
+       {0x393E, 0x5495},
+       {0x393F, 0x7B8D},
+       {0x3940, 0x4F30},
+       {0x3941, 0x6CBD},
+       {0x3942, 0x5B64},
+       {0x3943, 0x59D1},
+       {0x3944, 0x9F13},
+       {0x3945, 0x53E4},
+       {0x3946, 0x8831},
+       {0x3947, 0x9AA8},
+       {0x3948, 0x8C37},
+       {0x3949, 0x80A1},
+       {0x394A, 0x6545},
+       {0x394B, 0x9867},
+       {0x394C, 0x56FA},
+       {0x394D, 0x96C7},
+       {0x394E, 0x522E},
+       {0x394F, 0x74DC},
+       {0x3950, 0x526E},
+       {0x3951, 0x5BE1},
+       {0x3952, 0x6302},
+       {0x3953, 0x8902},
+       {0x3954, 0x4E56},
+       {0x3955, 0x62D0},
+       {0x3956, 0x602A},
+       {0x3957, 0x68FA},
+       {0x3958, 0x95DC},
+       {0x3959, 0x5B98},
+       {0x395A, 0x51A0},
+       {0x395B, 0x89C0},
+       {0x395C, 0x7BA1},
+       {0x395D, 0x9928},
+       {0x395E, 0x7F50},
+       {0x395F, 0x6163},
+       {0x3960, 0x704C},
+       {0x3961, 0x8CAB},
+       {0x3962, 0x5149},
+       {0x3963, 0x5EE3},
+       {0x3964, 0x901B},
+       {0x3965, 0x7470},
+       {0x3966, 0x898F},
+       {0x3967, 0x572D},
+       {0x3968, 0x7845},
+       {0x3969, 0x6B78},
+       {0x396A, 0x9F9C},
+       {0x396B, 0x95A8},
+       {0x396C, 0x8ECC},
+       {0x396D, 0x9B3C},
+       {0x396E, 0x8A6D},
+       {0x396F, 0x7678},
+       {0x3970, 0x6842},
+       {0x3971, 0x6AC3},
+       {0x3972, 0x8DEA},
+       {0x3973, 0x8CB4},
+       {0x3974, 0x528A},
+       {0x3975, 0x8F25},
+       {0x3976, 0x6EDA},
+       {0x3977, 0x68CD},
+       {0x3978, 0x934B},
+       {0x3979, 0x90ED},
+       {0x397A, 0x570B},
+       {0x397B, 0x679C},
+       {0x397C, 0x88F9},
+       {0x397D, 0x904E},
+       {0x397E, 0x54C8},
+       {0x3A21, 0x9AB8},
+       {0x3A22, 0x5B69},
+       {0x3A23, 0x6D77},
+       {0x3A24, 0x6C26},
+       {0x3A25, 0x4EA5},
+       {0x3A26, 0x5BB3},
+       {0x3A27, 0x99ED},
+       {0x3A28, 0x9163},
+       {0x3A29, 0x61A8},
+       {0x3A2A, 0x90AF},
+       {0x3A2B, 0x97D3},
+       {0x3A2C, 0x542B},
+       {0x3A2D, 0x6DB5},
+       {0x3A2E, 0x5BD2},
+       {0x3A2F, 0x51FD},
+       {0x3A30, 0x558A},
+       {0x3A31, 0x7F55},
+       {0x3A32, 0x7FF0},
+       {0x3A33, 0x64BC},
+       {0x3A34, 0x634D},
+       {0x3A35, 0x65F1},
+       {0x3A36, 0x61BE},
+       {0x3A37, 0x608D},
+       {0x3A38, 0x710A},
+       {0x3A39, 0x6C57},
+       {0x3A3A, 0x6F22},
+       {0x3A3B, 0x592F},
+       {0x3A3C, 0x676D},
+       {0x3A3D, 0x822A},
+       {0x3A3E, 0x58D5},
+       {0x3A3F, 0x568E},
+       {0x3A40, 0x8C6A},
+       {0x3A41, 0x6BEB},
+       {0x3A42, 0x90DD},
+       {0x3A43, 0x597D},
+       {0x3A44, 0x8017},
+       {0x3A45, 0x865F},
+       {0x3A46, 0x6D69},
+       {0x3A47, 0x5475},
+       {0x3A48, 0x559D},
+       {0x3A49, 0x8377},
+       {0x3A4A, 0x83CF},
+       {0x3A4B, 0x6838},
+       {0x3A4C, 0x79BE},
+       {0x3A4D, 0x548C},
+       {0x3A4E, 0x4F55},
+       {0x3A4F, 0x5408},
+       {0x3A50, 0x76D2},
+       {0x3A51, 0x8C89},
+       {0x3A52, 0x95A1},
+       {0x3A53, 0x6CB3},
+       {0x3A54, 0x6DB8},
+       {0x3A55, 0x8D6B},
+       {0x3A56, 0x8910},
+       {0x3A57, 0x9DB4},
+       {0x3A58, 0x8CC0},
+       {0x3A59, 0x563F},
+       {0x3A5A, 0x9ED1},
+       {0x3A5B, 0x75D5},
+       {0x3A5C, 0x5F88},
+       {0x3A5D, 0x72E0},
+       {0x3A5E, 0x6068},
+       {0x3A5F, 0x54FC},
+       {0x3A60, 0x4EA8},
+       {0x3A61, 0x6A2A},
+       {0x3A62, 0x8861},
+       {0x3A63, 0x6052},
+       {0x3A64, 0x8F5F},
+       {0x3A65, 0x54C4},
+       {0x3A66, 0x70D8},
+       {0x3A67, 0x8679},
+       {0x3A68, 0x9D3B},
+       {0x3A69, 0x6D2A},
+       {0x3A6A, 0x5B8F},
+       {0x3A6B, 0x5F18},
+       {0x3A6C, 0x7D05},
+       {0x3A6D, 0x5589},
+       {0x3A6E, 0x4FAF},
+       {0x3A6F, 0x7334},
+       {0x3A70, 0x543C},
+       {0x3A71, 0x539A},
+       {0x3A72, 0x5019},
+       {0x3A73, 0x5F8C},
+       {0x3A74, 0x547C},
+       {0x3A75, 0x4E4E},
+       {0x3A76, 0x5FFD},
+       {0x3A77, 0x745A},
+       {0x3A78, 0x58FA},
+       {0x3A79, 0x846B},
+       {0x3A7A, 0x80E1},
+       {0x3A7B, 0x8774},
+       {0x3A7C, 0x72D0},
+       {0x3A7D, 0x7CCA},
+       {0x3A7E, 0x6E56},
+       {0x3B21, 0x5F27},
+       {0x3B22, 0x864E},
+       {0x3B23, 0x552C},
+       {0x3B24, 0x8B77},
+       {0x3B25, 0x4E92},
+       {0x3B26, 0x6EEC},
+       {0x3B27, 0x6237},
+       {0x3B28, 0x82B1},
+       {0x3B29, 0x5629},
+       {0x3B2A, 0x83EF},
+       {0x3B2B, 0x733E},
+       {0x3B2C, 0x6ED1},
+       {0x3B2D, 0x756B},
+       {0x3B2E, 0x5283},
+       {0x3B2F, 0x5316},
+       {0x3B30, 0x8A71},
+       {0x3B31, 0x69D0},
+       {0x3B32, 0x5F8A},
+       {0x3B33, 0x61F7},
+       {0x3B34, 0x6DEE},
+       {0x3B35, 0x58DE},
+       {0x3B36, 0x6B61},
+       {0x3B37, 0x74B0},
+       {0x3B38, 0x6853},
+       {0x3B39, 0x9084},
+       {0x3B3A, 0x7DE9},
+       {0x3B3B, 0x63DB},
+       {0x3B3C, 0x60A3},
+       {0x3B3D, 0x559A},
+       {0x3B3E, 0x7613},
+       {0x3B3F, 0x8C62},
+       {0x3B40, 0x7165},
+       {0x3B41, 0x6E19},
+       {0x3B42, 0x5BA6},
+       {0x3B43, 0x5E7B},
+       {0x3B44, 0x8352},
+       {0x3B45, 0x614C},
+       {0x3B46, 0x9EC4},
+       {0x3B47, 0x78FA},
+       {0x3B48, 0x8757},
+       {0x3B49, 0x7C27},
+       {0x3B4A, 0x7687},
+       {0x3B4B, 0x51F0},
+       {0x3B4C, 0x60F6},
+       {0x3B4D, 0x714C},
+       {0x3B4E, 0x6643},
+       {0x3B4F, 0x5E4C},
+       {0x3B50, 0x604D},
+       {0x3B51, 0x8B0A},
+       {0x3B52, 0x7070},
+       {0x3B53, 0x63EE},
+       {0x3B54, 0x8F1D},
+       {0x3B55, 0x5FBD},
+       {0x3B56, 0x6062},
+       {0x3B57, 0x86D4},
+       {0x3B58, 0x56DE},
+       {0x3B59, 0x6BC1},
+       {0x3B5A, 0x6094},
+       {0x3B5B, 0x6167},
+       {0x3B5C, 0x5349},
+       {0x3B5D, 0x60E0},
+       {0x3B5E, 0x6666},
+       {0x3B5F, 0x8CC4},
+       {0x3B60, 0x7A62},
+       {0x3B61, 0x6703},
+       {0x3B62, 0x71F4},
+       {0x3B63, 0x532F},
+       {0x3B64, 0x8AF1},
+       {0x3B65, 0x8AA8},
+       {0x3B66, 0x7E6A},
+       {0x3B67, 0x8477},
+       {0x3B68, 0x660F},
+       {0x3B69, 0x5A5A},
+       {0x3B6A, 0x9B42},
+       {0x3B6B, 0x6E3E},
+       {0x3B6C, 0x6DF7},
+       {0x3B6D, 0x8C41},
+       {0x3B6E, 0x6D3B},
+       {0x3B6F, 0x4F19},
+       {0x3B70, 0x706B},
+       {0x3B71, 0x7372},
+       {0x3B72, 0x6216},
+       {0x3B73, 0x60D1},
+       {0x3B74, 0x970D},
+       {0x3B75, 0x8CA8},
+       {0x3B76, 0x798D},
+       {0x3B77, 0x64CA},
+       {0x3B78, 0x573E},
+       {0x3B79, 0x57FA},
+       {0x3B7A, 0x6A5F},
+       {0x3B7B, 0x7578},
+       {0x3B7C, 0x7A3D},
+       {0x3B7D, 0x7A4D},
+       {0x3B7E, 0x7B95},
+       {0x3C21, 0x808C},
+       {0x3C22, 0x9951},
+       {0x3C23, 0x8FF9},
+       {0x3C24, 0x6FC0},
+       {0x3C25, 0x8B4F},
+       {0x3C26, 0x9DC4},
+       {0x3C27, 0x59EC},
+       {0x3C28, 0x7E3E},
+       {0x3C29, 0x7DDD},
+       {0x3C2A, 0x5409},
+       {0x3C2B, 0x6975},
+       {0x3C2C, 0x68D8},
+       {0x3C2D, 0x8F2F},
+       {0x3C2E, 0x7C4D},
+       {0x3C2F, 0x96C6},
+       {0x3C30, 0x53CA},
+       {0x3C31, 0x6025},
+       {0x3C32, 0x75BE},
+       {0x3C33, 0x6C72},
+       {0x3C34, 0x5373},
+       {0x3C35, 0x5AC9},
+       {0x3C36, 0x7D1A},
+       {0x3C37, 0x64E0},
+       {0x3C38, 0x5E7E},
+       {0x3C39, 0x810A},
+       {0x3C3A, 0x5DF1},
+       {0x3C3B, 0x858A},
+       {0x3C3C, 0x6280},
+       {0x3C3D, 0x5180},
+       {0x3C3E, 0x5B63},
+       {0x3C3F, 0x4F0E},
+       {0x3C40, 0x796D},
+       {0x3C41, 0x5291},
+       {0x3C42, 0x60B8},
+       {0x3C43, 0x6FDF},
+       {0x3C44, 0x5BC4},
+       {0x3C45, 0x5BC2},
+       {0x3C46, 0x8A08},
+       {0x3C47, 0x8A18},
+       {0x3C48, 0x65E2},
+       {0x3C49, 0x5FCC},
+       {0x3C4A, 0x969B},
+       {0x3C4B, 0x5993},
+       {0x3C4C, 0x7E7C},
+       {0x3C4D, 0x7D00},
+       {0x3C4E, 0x5609},
+       {0x3C4F, 0x67B7},
+       {0x3C50, 0x593E},
+       {0x3C51, 0x4F73},
+       {0x3C52, 0x5BB6},
+       {0x3C53, 0x52A0},
+       {0x3C54, 0x83A2},
+       {0x3C55, 0x9830},
+       {0x3C56, 0x8CC8},
+       {0x3C57, 0x7532},
+       {0x3C58, 0x9240},
+       {0x3C59, 0x5047},
+       {0x3C5A, 0x7A3C},
+       {0x3C5B, 0x50F9},
+       {0x3C5C, 0x67B6},
+       {0x3C5D, 0x99D5},
+       {0x3C5E, 0x5AC1},
+       {0x3C5F, 0x6BB2},
+       {0x3C60, 0x76E3},
+       {0x3C61, 0x5805},
+       {0x3C62, 0x5C16},
+       {0x3C63, 0x7B8B},
+       {0x3C64, 0x9593},
+       {0x3C65, 0x714E},
+       {0x3C66, 0x517C},
+       {0x3C67, 0x80A9},
+       {0x3C68, 0x8271},
+       {0x3C69, 0x5978},
+       {0x3C6A, 0x7DD8},
+       {0x3C6B, 0x7E6D},
+       {0x3C6C, 0x6AA2},
+       {0x3C6D, 0x67EC},
+       {0x3C6E, 0x78B1},
+       {0x3C6F, 0x9E7C},
+       {0x3C70, 0x63C0},
+       {0x3C71, 0x64BF},
+       {0x3C72, 0x7C21},
+       {0x3C73, 0x5109},
+       {0x3C74, 0x526A},
+       {0x3C75, 0x51CF},
+       {0x3C76, 0x85A6},
+       {0x3C77, 0x6ABB},
+       {0x3C78, 0x9452},
+       {0x3C79, 0x8E10},
+       {0x3C7A, 0x8CE4},
+       {0x3C7B, 0x898B},
+       {0x3C7C, 0x9375},
+       {0x3C7D, 0x7BAD},
+       {0x3C7E, 0x4EF6},
+       {0x3D21, 0x5065},
+       {0x3D22, 0x8266},
+       {0x3D23, 0x528D},
+       {0x3D24, 0x991E},
+       {0x3D25, 0x6F38},
+       {0x3D26, 0x6FFA},
+       {0x3D27, 0x6F97},
+       {0x3D28, 0x5EFA},
+       {0x3D29, 0x50F5},
+       {0x3D2A, 0x59DC},
+       {0x3D2B, 0x5C07},
+       {0x3D2C, 0x6F3F},
+       {0x3D2D, 0x6C5F},
+       {0x3D2E, 0x7586},
+       {0x3D2F, 0x8523},
+       {0x3D30, 0x69F3},
+       {0x3D31, 0x596C},
+       {0x3D32, 0x8B1B},
+       {0x3D33, 0x5320},
+       {0x3D34, 0x91AC},
+       {0x3D35, 0x964D},
+       {0x3D36, 0x8549},
+       {0x3D37, 0x6912},
+       {0x3D38, 0x7901},
+       {0x3D39, 0x7126},
+       {0x3D3A, 0x81A0},
+       {0x3D3B, 0x4EA4},
+       {0x3D3C, 0x90CA},
+       {0x3D3D, 0x6F86},
+       {0x3D3E, 0x9A55},
+       {0x3D3F, 0x5B0C},
+       {0x3D40, 0x56BC},
+       {0x3D41, 0x652A},
+       {0x3D42, 0x9278},
+       {0x3D43, 0x77EF},
+       {0x3D44, 0x50E5},
+       {0x3D45, 0x811A},
+       {0x3D46, 0x72E1},
+       {0x3D47, 0x89D2},
+       {0x3D48, 0x9903},
+       {0x3D49, 0x7E73},
+       {0x3D4A, 0x7D5E},
+       {0x3D4B, 0x527F},
+       {0x3D4C, 0x6559},
+       {0x3D4D, 0x9175},
+       {0x3D4E, 0x8F4E},
+       {0x3D4F, 0x8F03},
+       {0x3D50, 0x53EB},
+       {0x3D51, 0x7A96},
+       {0x3D52, 0x63ED},
+       {0x3D53, 0x63A5},
+       {0x3D54, 0x7686},
+       {0x3D55, 0x79F8},
+       {0x3D56, 0x8857},
+       {0x3D57, 0x968E},
+       {0x3D58, 0x622A},
+       {0x3D59, 0x52AB},
+       {0x3D5A, 0x7BC0},
+       {0x3D5B, 0x6854},
+       {0x3D5C, 0x6770},
+       {0x3D5D, 0x6377},
+       {0x3D5E, 0x776B},
+       {0x3D5F, 0x7AED},
+       {0x3D60, 0x6F54},
+       {0x3D61, 0x7D50},
+       {0x3D62, 0x89E3},
+       {0x3D63, 0x59D0},
+       {0x3D64, 0x6212},
+       {0x3D65, 0x85C9},
+       {0x3D66, 0x82A5},
+       {0x3D67, 0x754C},
+       {0x3D68, 0x501F},
+       {0x3D69, 0x4ECB},
+       {0x3D6A, 0x75A5},
+       {0x3D6B, 0x8AA1},
+       {0x3D6C, 0x5C4A},
+       {0x3D6D, 0x5DFE},
+       {0x3D6E, 0x7B4B},
+       {0x3D6F, 0x65A4},
+       {0x3D70, 0x91D1},
+       {0x3D71, 0x4ECA},
+       {0x3D72, 0x6D25},
+       {0x3D73, 0x895F},
+       {0x3D74, 0x7DCA},
+       {0x3D75, 0x9326},
+       {0x3D76, 0x50C5},
+       {0x3D77, 0x8B39},
+       {0x3D78, 0x9032},
+       {0x3D79, 0x9773},
+       {0x3D7A, 0x6649},
+       {0x3D7B, 0x7981},
+       {0x3D7C, 0x8FD1},
+       {0x3D7D, 0x71FC},
+       {0x3D7E, 0x6D78},
+       {0x3E21, 0x76E1},
+       {0x3E22, 0x52C1},
+       {0x3E23, 0x8346},
+       {0x3E24, 0x5162},
+       {0x3E25, 0x8396},
+       {0x3E26, 0x775B},
+       {0x3E27, 0x6676},
+       {0x3E28, 0x9BE8},
+       {0x3E29, 0x4EAC},
+       {0x3E2A, 0x9A5A},
+       {0x3E2B, 0x7CBE},
+       {0x3E2C, 0x7CB3},
+       {0x3E2D, 0x7D93},
+       {0x3E2E, 0x4E95},
+       {0x3E2F, 0x8B66},
+       {0x3E30, 0x666F},
+       {0x3E31, 0x9838},
+       {0x3E32, 0x975C},
+       {0x3E33, 0x5883},
+       {0x3E34, 0x656C},
+       {0x3E35, 0x93E1},
+       {0x3E36, 0x5F91},
+       {0x3E37, 0x75D9},
+       {0x3E38, 0x9756},
+       {0x3E39, 0x7ADF},
+       {0x3E3A, 0x7AF6},
+       {0x3E3B, 0x51C8},
+       {0x3E3C, 0x70AF},
+       {0x3E3D, 0x7A98},
+       {0x3E3E, 0x63EA},
+       {0x3E3F, 0x7A76},
+       {0x3E40, 0x7CFE},
+       {0x3E41, 0x7396},
+       {0x3E42, 0x97ED},
+       {0x3E43, 0x4E45},
+       {0x3E44, 0x7078},
+       {0x3E45, 0x4E5D},
+       {0x3E46, 0x9152},
+       {0x3E47, 0x53A9},
+       {0x3E48, 0x6551},
+       {0x3E49, 0x820A},
+       {0x3E4A, 0x81FC},
+       {0x3E4B, 0x8205},
+       {0x3E4C, 0x548E},
+       {0x3E4D, 0x5C31},
+       {0x3E4E, 0x759A},
+       {0x3E4F, 0x97A0},
+       {0x3E50, 0x62D8},
+       {0x3E51, 0x72D9},
+       {0x3E52, 0x75BD},
+       {0x3E53, 0x5C45},
+       {0x3E54, 0x99D2},
+       {0x3E55, 0x83CA},
+       {0x3E56, 0x5C40},
+       {0x3E57, 0x5480},
+       {0x3E58, 0x77E9},
+       {0x3E59, 0x8209},
+       {0x3E5A, 0x6CAE},
+       {0x3E5B, 0x805A},
+       {0x3E5C, 0x62D2},
+       {0x3E5D, 0x64DA},
+       {0x3E5E, 0x5DE8},
+       {0x3E5F, 0x5177},
+       {0x3E60, 0x8DDD},
+       {0x3E61, 0x8E1E},
+       {0x3E62, 0x92F8},
+       {0x3E63, 0x4FF1},
+       {0x3E64, 0x53E5},
+       {0x3E65, 0x61FC},
+       {0x3E66, 0x70AC},
+       {0x3E67, 0x5287},
+       {0x3E68, 0x6350},
+       {0x3E69, 0x9D51},
+       {0x3E6A, 0x5A1F},
+       {0x3E6B, 0x5026},
+       {0x3E6C, 0x7737},
+       {0x3E6D, 0x5377},
+       {0x3E6E, 0x7D79},
+       {0x3E6F, 0x6485},
+       {0x3E70, 0x652B},
+       {0x3E71, 0x6289},
+       {0x3E72, 0x6398},
+       {0x3E73, 0x5014},
+       {0x3E74, 0x7235},
+       {0x3E75, 0x89BA},
+       {0x3E76, 0x51B3},
+       {0x3E77, 0x8A23},
+       {0x3E78, 0x7D76},
+       {0x3E79, 0x5747},
+       {0x3E7A, 0x83CC},
+       {0x3E7B, 0x921E},
+       {0x3E7C, 0x8ECD},
+       {0x3E7D, 0x541B},
+       {0x3E7E, 0x5CFB},
+       {0x3F21, 0x4FCA},
+       {0x3F22, 0x7AE3},
+       {0x3F23, 0x6D5A},
+       {0x3F24, 0x90E1},
+       {0x3F25, 0x99FF},
+       {0x3F26, 0x5580},
+       {0x3F27, 0x5496},
+       {0x3F28, 0x5361},
+       {0x3F29, 0x54AF},
+       {0x3F2A, 0x958B},
+       {0x3F2B, 0x63E9},
+       {0x3F2C, 0x6977},
+       {0x3F2D, 0x51F1},
+       {0x3F2E, 0x6168},
+       {0x3F2F, 0x520A},
+       {0x3F30, 0x582A},
+       {0x3F31, 0x52D8},
+       {0x3F32, 0x574E},
+       {0x3F33, 0x780D},
+       {0x3F34, 0x770B},
+       {0x3F35, 0x5EB7},
+       {0x3F36, 0x6177},
+       {0x3F37, 0x7CE0},
+       {0x3F38, 0x625B},
+       {0x3F39, 0x6297},
+       {0x3F3A, 0x4EA2},
+       {0x3F3B, 0x7095},
+       {0x3F3C, 0x8003},
+       {0x3F3D, 0x62F7},
+       {0x3F3E, 0x70E4},
+       {0x3F3F, 0x9760},
+       {0x3F40, 0x5777},
+       {0x3F41, 0x82DB},
+       {0x3F42, 0x67EF},
+       {0x3F43, 0x68F5},
+       {0x3F44, 0x78D5},
+       {0x3F45, 0x9846},
+       {0x3F46, 0x79D1},
+       {0x3F47, 0x6BBB},
+       {0x3F48, 0x54B3},
+       {0x3F49, 0x53EF},
+       {0x3F4A, 0x6E34},
+       {0x3F4B, 0x514B},
+       {0x3F4C, 0x523B},
+       {0x3F4D, 0x5BA2},
+       {0x3F4E, 0x8AB2},
+       {0x3F4F, 0x80AF},
+       {0x3F50, 0x5543},
+       {0x3F51, 0x58BE},
+       {0x3F52, 0x61C7},
+       {0x3F53, 0x5751},
+       {0x3F54, 0x542D},
+       {0x3F55, 0x7A7A},
+       {0x3F56, 0x6050},
+       {0x3F57, 0x5B54},
+       {0x3F58, 0x63A7},
+       {0x3F59, 0x6473},
+       {0x3F5A, 0x53E3},
+       {0x3F5B, 0x6263},
+       {0x3F5C, 0x5BC7},
+       {0x3F5D, 0x67AF},
+       {0x3F5E, 0x54ED},
+       {0x3F5F, 0x7A9F},
+       {0x3F60, 0x82E6},
+       {0x3F61, 0x9177},
+       {0x3F62, 0x5EAB},
+       {0x3F63, 0x8932},
+       {0x3F64, 0x8A87},
+       {0x3F65, 0x57AE},
+       {0x3F66, 0x630E},
+       {0x3F67, 0x8DE8},
+       {0x3F68, 0x80EF},
+       {0x3F69, 0x584A},
+       {0x3F6A, 0x7B77},
+       {0x3F6B, 0x5108},
+       {0x3F6C, 0x5FEB},
+       {0x3F6D, 0x5BEC},
+       {0x3F6E, 0x6B3E},
+       {0x3F6F, 0x5321},
+       {0x3F70, 0x7B50},
+       {0x3F71, 0x72C2},
+       {0x3F72, 0x6846},
+       {0x3F73, 0x7926},
+       {0x3F74, 0x7736},
+       {0x3F75, 0x66E0},
+       {0x3F76, 0x51B5},
+       {0x3F77, 0x8667},
+       {0x3F78, 0x76D4},
+       {0x3F79, 0x5DCB},
+       {0x3F7A, 0x7ABA},
+       {0x3F7B, 0x8475},
+       {0x3F7C, 0x594E},
+       {0x3F7D, 0x9B41},
+       {0x3F7E, 0x5080},
+       {0x4021, 0x994B},
+       {0x4022, 0x6127},
+       {0x4023, 0x6F70},
+       {0x4024, 0x5764},
+       {0x4025, 0x6606},
+       {0x4026, 0x6346},
+       {0x4027, 0x56F0},
+       {0x4028, 0x62EC},
+       {0x4029, 0x64F4},
+       {0x402A, 0x5ED3},
+       {0x402B, 0x95CA},
+       {0x402C, 0x5783},
+       {0x402D, 0x62C9},
+       {0x402E, 0x5587},
+       {0x402F, 0x881F},
+       {0x4030, 0x81D8},
+       {0x4031, 0x8FA3},
+       {0x4032, 0x5566},
+       {0x4033, 0x840A},
+       {0x4034, 0x4F86},
+       {0x4035, 0x8CF4},
+       {0x4036, 0x85CD},
+       {0x4037, 0x5A6A},
+       {0x4038, 0x6B04},
+       {0x4039, 0x6514},
+       {0x403A, 0x7C43},
+       {0x403B, 0x95CC},
+       {0x403C, 0x862D},
+       {0x403D, 0x703E},
+       {0x403E, 0x8B95},
+       {0x403F, 0x652C},
+       {0x4040, 0x89BD},
+       {0x4041, 0x61F6},
+       {0x4042, 0x7E9C},
+       {0x4043, 0x721B},
+       {0x4044, 0x6FEB},
+       {0x4045, 0x7405},
+       {0x4046, 0x6994},
+       {0x4047, 0x72FC},
+       {0x4048, 0x5ECA},
+       {0x4049, 0x90CE},
+       {0x404A, 0x6717},
+       {0x404B, 0x6D6A},
+       {0x404C, 0x6488},
+       {0x404D, 0x52DE},
+       {0x404E, 0x7262},
+       {0x404F, 0x8001},
+       {0x4050, 0x4F6C},
+       {0x4051, 0x59E5},
+       {0x4052, 0x916A},
+       {0x4053, 0x70D9},
+       {0x4054, 0x6F87},
+       {0x4055, 0x52D2},
+       {0x4056, 0x6A02},
+       {0x4057, 0x96F7},
+       {0x4058, 0x9433},
+       {0x4059, 0x857E},
+       {0x405A, 0x78CA},
+       {0x405B, 0x7D2F},
+       {0x405C, 0x5121},
+       {0x405D, 0x58D8},
+       {0x405E, 0x64C2},
+       {0x405F, 0x808B},
+       {0x4060, 0x985E},
+       {0x4061, 0x6CEA},
+       {0x4062, 0x68F1},
+       {0x4063, 0x695E},
+       {0x4064, 0x51B7},
+       {0x4065, 0x5398},
+       {0x4066, 0x68A8},
+       {0x4067, 0x7281},
+       {0x4068, 0x9ECE},
+       {0x4069, 0x7C6C},
+       {0x406A, 0x72F8},
+       {0x406B, 0x96E2},
+       {0x406C, 0x7055},
+       {0x406D, 0x7406},
+       {0x406E, 0x674E},
+       {0x406F, 0x88CF},
+       {0x4070, 0x9BC9},
+       {0x4071, 0x79AE},
+       {0x4072, 0x8389},
+       {0x4073, 0x8354},
+       {0x4074, 0x540F},
+       {0x4075, 0x6817},
+       {0x4076, 0x9E97},
+       {0x4077, 0x53B2},
+       {0x4078, 0x52F5},
+       {0x4079, 0x792B},
+       {0x407A, 0x6B77},
+       {0x407B, 0x5229},
+       {0x407C, 0x5088},
+       {0x407D, 0x4F8B},
+       {0x407E, 0x4FD0},
+       {0x4121, 0x75E2},
+       {0x4122, 0x7ACB},
+       {0x4123, 0x7C92},
+       {0x4124, 0x701D},
+       {0x4125, 0x96B8},
+       {0x4126, 0x529B},
+       {0x4127, 0x7483},
+       {0x4128, 0x54E9},
+       {0x4129, 0x5006},
+       {0x412A, 0x806F},
+       {0x412B, 0x84EE},
+       {0x412C, 0x9023},
+       {0x412D, 0x942E},
+       {0x412E, 0x5EC9},
+       {0x412F, 0x6190},
+       {0x4130, 0x6F23},
+       {0x4131, 0x7C3E},
+       {0x4132, 0x6582},
+       {0x4133, 0x81C9},
+       {0x4134, 0x93C8},
+       {0x4135, 0x6200},
+       {0x4136, 0x7149},
+       {0x4137, 0x7DF4},
+       {0x4138, 0x7CE7},
+       {0x4139, 0x51C9},
+       {0x413A, 0x6881},
+       {0x413B, 0x7CB1},
+       {0x413C, 0x826F},
+       {0x413D, 0x5169},
+       {0x413E, 0x8F1B},
+       {0x413F, 0x91CF},
+       {0x4140, 0x667E},
+       {0x4141, 0x4EAE},
+       {0x4142, 0x8AD2},
+       {0x4143, 0x64A9},
+       {0x4144, 0x804A},
+       {0x4145, 0x50DA},
+       {0x4146, 0x7642},
+       {0x4147, 0x71CE},
+       {0x4148, 0x5BE5},
+       {0x4149, 0x907C},
+       {0x414A, 0x6F66},
+       {0x414B, 0x4E86},
+       {0x414C, 0x6482},
+       {0x414D, 0x9410},
+       {0x414E, 0x5ED6},
+       {0x414F, 0x6599},
+       {0x4150, 0x5217},
+       {0x4151, 0x88C2},
+       {0x4152, 0x70C8},
+       {0x4153, 0x52A3},
+       {0x4154, 0x7375},
+       {0x4155, 0x7433},
+       {0x4156, 0x6797},
+       {0x4157, 0x78F7},
+       {0x4158, 0x9716},
+       {0x4159, 0x81E8},
+       {0x415A, 0x9130},
+       {0x415B, 0x9C57},
+       {0x415C, 0x6DCB},
+       {0x415D, 0x51DB},
+       {0x415E, 0x8CC3},
+       {0x415F, 0x541D},
+       {0x4160, 0x62CE},
+       {0x4161, 0x73B2},
+       {0x4162, 0x83F1},
+       {0x4163, 0x96F6},
+       {0x4164, 0x9F61},
+       {0x4165, 0x9234},
+       {0x4166, 0x4F36},
+       {0x4167, 0x7F9A},
+       {0x4168, 0x51CC},
+       {0x4169, 0x9748},
+       {0x416A, 0x9675},
+       {0x416B, 0x5DBA},
+       {0x416C, 0x9818},
+       {0x416D, 0x53E6},
+       {0x416E, 0x4EE4},
+       {0x416F, 0x6E9C},
+       {0x4170, 0x7409},
+       {0x4171, 0x69B4},
+       {0x4172, 0x786B},
+       {0x4173, 0x993E},
+       {0x4174, 0x7559},
+       {0x4175, 0x5289},
+       {0x4176, 0x7624},
+       {0x4177, 0x6D41},
+       {0x4178, 0x67F3},
+       {0x4179, 0x516D},
+       {0x417A, 0x9F8D},
+       {0x417B, 0x807E},
+       {0x417C, 0x56A8},
+       {0x417D, 0x7C60},
+       {0x417E, 0x7ABF},
+       {0x4221, 0x9686},
+       {0x4222, 0x58DF},
+       {0x4223, 0x650F},
+       {0x4224, 0x96B4},
+       {0x4225, 0x6A13},
+       {0x4226, 0x5A41},
+       {0x4227, 0x645F},
+       {0x4228, 0x7C0D},
+       {0x4229, 0x6F0F},
+       {0x422A, 0x964B},
+       {0x422B, 0x8606},
+       {0x422C, 0x76E7},
+       {0x422D, 0x9871},
+       {0x422E, 0x5EEC},
+       {0x422F, 0x7210},
+       {0x4230, 0x64C4},
+       {0x4231, 0x6EF7},
+       {0x4232, 0x865C},
+       {0x4233, 0x9B6F},
+       {0x4234, 0x9E93},
+       {0x4235, 0x788C},
+       {0x4236, 0x9732},
+       {0x4237, 0x8DEF},
+       {0x4238, 0x8CC2},
+       {0x4239, 0x9E7F},
+       {0x423A, 0x6F5E},
+       {0x423B, 0x7984},
+       {0x423C, 0x9332},
+       {0x423D, 0x9678},
+       {0x423E, 0x622E},
+       {0x423F, 0x9A62},
+       {0x4240, 0x5415},
+       {0x4241, 0x92C1},
+       {0x4242, 0x4FA3},
+       {0x4243, 0x65C5},
+       {0x4244, 0x5C65},
+       {0x4245, 0x5C62},
+       {0x4246, 0x7E37},
+       {0x4247, 0x616E},
+       {0x4248, 0x6C2F},
+       {0x4249, 0x5F8B},
+       {0x424A, 0x7387},
+       {0x424B, 0x6FFE},
+       {0x424C, 0x7DD1},
+       {0x424D, 0x5DD2},
+       {0x424E, 0x6523},
+       {0x424F, 0x5B7F},
+       {0x4250, 0x7064},
+       {0x4251, 0x5375},
+       {0x4252, 0x4E82},
+       {0x4253, 0x63A0},
+       {0x4254, 0x7565},
+       {0x4255, 0x6384},
+       {0x4256, 0x8F2A},
+       {0x4257, 0x502B},
+       {0x4258, 0x4F96},
+       {0x4259, 0x6DEA},
+       {0x425A, 0x7DB8},
+       {0x425B, 0x8AD6},
+       {0x425C, 0x863F},
+       {0x425D, 0x87BA},
+       {0x425E, 0x7F85},
+       {0x425F, 0x908F},
+       {0x4260, 0x947C},
+       {0x4261, 0x7C6E},
+       {0x4262, 0x9A3E},
+       {0x4263, 0x88F8},
+       {0x4264, 0x843D},
+       {0x4265, 0x6D1B},
+       {0x4266, 0x99F1},
+       {0x4267, 0x7D61},
+       {0x4268, 0x5ABD},
+       {0x4269, 0x9EBB},
+       {0x426A, 0x746A},
+       {0x426B, 0x78BC},
+       {0x426C, 0x879E},
+       {0x426D, 0x99AC},
+       {0x426E, 0x99E1},
+       {0x426F, 0x561B},
+       {0x4270, 0x55CE},
+       {0x4271, 0x57CB},
+       {0x4272, 0x8CB7},
+       {0x4273, 0x9EA5},
+       {0x4274, 0x8CE3},
+       {0x4275, 0x9081},
+       {0x4276, 0x8109},
+       {0x4277, 0x779E},
+       {0x4278, 0x9945},
+       {0x4279, 0x883B},
+       {0x427A, 0x6EFF},
+       {0x427B, 0x8513},
+       {0x427C, 0x66FC},
+       {0x427D, 0x6162},
+       {0x427E, 0x6F2B},
+       {0x4321, 0x8B3E},
+       {0x4322, 0x8292},
+       {0x4323, 0x832B},
+       {0x4324, 0x76F2},
+       {0x4325, 0x6C13},
+       {0x4326, 0x5FD9},
+       {0x4327, 0x83BD},
+       {0x4328, 0x732B},
+       {0x4329, 0x8305},
+       {0x432A, 0x9328},
+       {0x432B, 0x6BDB},
+       {0x432C, 0x77DB},
+       {0x432D, 0x925A},
+       {0x432E, 0x536F},
+       {0x432F, 0x8302},
+       {0x4330, 0x5192},
+       {0x4331, 0x5E3D},
+       {0x4332, 0x8C8C},
+       {0x4333, 0x8CBF},
+       {0x4334, 0x9EBD},
+       {0x4335, 0x73AB},
+       {0x4336, 0x679A},
+       {0x4337, 0x6885},
+       {0x4338, 0x9176},
+       {0x4339, 0x9709},
+       {0x433A, 0x7164},
+       {0x433B, 0x6CA1},
+       {0x433C, 0x7709},
+       {0x433D, 0x5A92},
+       {0x433E, 0x9382},
+       {0x433F, 0x6BCF},
+       {0x4340, 0x7F8E},
+       {0x4341, 0x6627},
+       {0x4342, 0x5BD0},
+       {0x4343, 0x59B9},
+       {0x4344, 0x5A9A},
+       {0x4345, 0x9580},
+       {0x4346, 0x60B6},
+       {0x4347, 0x5011},
+       {0x4348, 0x840C},
+       {0x4349, 0x8499},
+       {0x434A, 0x6AAC},
+       {0x434B, 0x76DF},
+       {0x434C, 0x9333},
+       {0x434D, 0x731B},
+       {0x434E, 0x5922},
+       {0x434F, 0x5B5F},
+       {0x4350, 0x772F},
+       {0x4351, 0x919A},
+       {0x4352, 0x9761},
+       {0x4353, 0x7CDC},
+       {0x4354, 0x8FF7},
+       {0x4355, 0x8B0E},
+       {0x4356, 0x5F4C},
+       {0x4357, 0x7C73},
+       {0x4358, 0x79D8},
+       {0x4359, 0x8993},
+       {0x435A, 0x6CCC},
+       {0x435B, 0x871C},
+       {0x435C, 0x5BC6},
+       {0x435D, 0x5E42},
+       {0x435E, 0x68C9},
+       {0x435F, 0x7720},
+       {0x4360, 0x7DBF},
+       {0x4361, 0x5195},
+       {0x4362, 0x514D},
+       {0x4363, 0x52C9},
+       {0x4364, 0x5A29},
+       {0x4365, 0x7DEC},
+       {0x4366, 0x9762},
+       {0x4367, 0x82D7},
+       {0x4368, 0x63CF},
+       {0x4369, 0x7784},
+       {0x436A, 0x85D0},
+       {0x436B, 0x79D2},
+       {0x436C, 0x6E3A},
+       {0x436D, 0x5EDF},
+       {0x436E, 0x5999},
+       {0x436F, 0x8511},
+       {0x4370, 0x6EC5},
+       {0x4371, 0x6C11},
+       {0x4372, 0x62BF},
+       {0x4373, 0x76BF},
+       {0x4374, 0x654F},
+       {0x4375, 0x61AB},
+       {0x4376, 0x95A9},
+       {0x4377, 0x660E},
+       {0x4378, 0x879F},
+       {0x4379, 0x9CF4},
+       {0x437A, 0x9298},
+       {0x437B, 0x540D},
+       {0x437C, 0x547D},
+       {0x437D, 0x8B2C},
+       {0x437E, 0x6478},
+       {0x4421, 0x6479},
+       {0x4422, 0x8611},
+       {0x4423, 0x6A21},
+       {0x4424, 0x819C},
+       {0x4425, 0x78E8},
+       {0x4426, 0x6469},
+       {0x4427, 0x9B54},
+       {0x4428, 0x62B9},
+       {0x4429, 0x672B},
+       {0x442A, 0x83AB},
+       {0x442B, 0x58A8},
+       {0x442C, 0x9ED8},
+       {0x442D, 0x6CAB},
+       {0x442E, 0x6F20},
+       {0x442F, 0x5BDE},
+       {0x4430, 0x964C},
+       {0x4431, 0x8B00},
+       {0x4432, 0x725F},
+       {0x4433, 0x67D0},
+       {0x4434, 0x62C7},
+       {0x4435, 0x7261},
+       {0x4436, 0x755D},
+       {0x4437, 0x59C6},
+       {0x4438, 0x6BCD},
+       {0x4439, 0x5893},
+       {0x443A, 0x66AE},
+       {0x443B, 0x5E55},
+       {0x443C, 0x52DF},
+       {0x443D, 0x6155},
+       {0x443E, 0x6728},
+       {0x443F, 0x76EE},
+       {0x4440, 0x7766},
+       {0x4441, 0x7267},
+       {0x4442, 0x7A46},
+       {0x4443, 0x62FF},
+       {0x4444, 0x54EA},
+       {0x4445, 0x5450},
+       {0x4446, 0x9209},
+       {0x4447, 0x90A3},
+       {0x4448, 0x5A1C},
+       {0x4449, 0x7D0D},
+       {0x444A, 0x6C16},
+       {0x444B, 0x4E43},
+       {0x444C, 0x5976},
+       {0x444D, 0x8010},
+       {0x444E, 0x5948},
+       {0x444F, 0x5357},
+       {0x4450, 0x7537},
+       {0x4451, 0x96E3},
+       {0x4452, 0x56CA},
+       {0x4453, 0x6493},
+       {0x4454, 0x8166},
+       {0x4455, 0x60F1},
+       {0x4456, 0x9B27},
+       {0x4457, 0x6DD6},
+       {0x4458, 0x5462},
+       {0x4459, 0x9912},
+       {0x445A, 0x5185},
+       {0x445B, 0x5AE9},
+       {0x445C, 0x80FD},
+       {0x445D, 0x59AE},
+       {0x445E, 0x9713},
+       {0x445F, 0x502A},
+       {0x4460, 0x6CE5},
+       {0x4461, 0x5C3C},
+       {0x4462, 0x64EC},
+       {0x4463, 0x4F60},
+       {0x4464, 0x533F},
+       {0x4465, 0x81A9},
+       {0x4466, 0x9006},
+       {0x4467, 0x6EBA},
+       {0x4468, 0x852B},
+       {0x4469, 0x62C8},
+       {0x446A, 0x5E74},
+       {0x446B, 0x78BE},
+       {0x446C, 0x6506},
+       {0x446D, 0x637B},
+       {0x446E, 0x5FF5},
+       {0x446F, 0x5A18},
+       {0x4470, 0x91C0},
+       {0x4471, 0x9CE5},
+       {0x4472, 0x5C3F},
+       {0x4473, 0x634F},
+       {0x4474, 0x8076},
+       {0x4475, 0x5B7D},
+       {0x4476, 0x5699},
+       {0x4477, 0x9477},
+       {0x4478, 0x93B3},
+       {0x4479, 0x6D85},
+       {0x447A, 0x60A8},
+       {0x447B, 0x6AB8},
+       {0x447C, 0x7370},
+       {0x447D, 0x51DD},
+       {0x447E, 0x5BE7},
+       {0x4521, 0x64F0},
+       {0x4522, 0x6FD8},
+       {0x4523, 0x725B},
+       {0x4524, 0x626D},
+       {0x4525, 0x9215},
+       {0x4526, 0x7D10},
+       {0x4527, 0x81BF},
+       {0x4528, 0x6FC3},
+       {0x4529, 0x8FB2},
+       {0x452A, 0x5F04},
+       {0x452B, 0x5974},
+       {0x452C, 0x52AA},
+       {0x452D, 0x6012},
+       {0x452E, 0x5973},
+       {0x452F, 0x6696},
+       {0x4530, 0x8650},
+       {0x4531, 0x7627},
+       {0x4532, 0x632A},
+       {0x4533, 0x61E6},
+       {0x4534, 0x7CEF},
+       {0x4535, 0x8AFE},
+       {0x4536, 0x54E6},
+       {0x4537, 0x6B50},
+       {0x4538, 0x9DD7},
+       {0x4539, 0x6BC6},
+       {0x453A, 0x85D5},
+       {0x453B, 0x5614},
+       {0x453C, 0x5076},
+       {0x453D, 0x6F1A},
+       {0x453E, 0x556A},
+       {0x453F, 0x8DB4},
+       {0x4540, 0x722C},
+       {0x4541, 0x5E15},
+       {0x4542, 0x6015},
+       {0x4543, 0x7436},
+       {0x4544, 0x62CD},
+       {0x4545, 0x6392},
+       {0x4546, 0x724C},
+       {0x4547, 0x5F98},
+       {0x4548, 0x6E43},
+       {0x4549, 0x6D3E},
+       {0x454A, 0x6500},
+       {0x454B, 0x6F58},
+       {0x454C, 0x76E4},
+       {0x454D, 0x78D0},
+       {0x454E, 0x76FC},
+       {0x454F, 0x7554},
+       {0x4550, 0x5224},
+       {0x4551, 0x53DB},
+       {0x4552, 0x4E53},
+       {0x4553, 0x9F90},
+       {0x4554, 0x65C1},
+       {0x4555, 0x802A},
+       {0x4556, 0x80D6},
+       {0x4557, 0x629B},
+       {0x4558, 0x5486},
+       {0x4559, 0x5228},
+       {0x455A, 0x70AE},
+       {0x455B, 0x888D},
+       {0x455C, 0x8DD1},
+       {0x455D, 0x6CE1},
+       {0x455E, 0x5478},
+       {0x455F, 0x80DA},
+       {0x4560, 0x57F9},
+       {0x4561, 0x88F4},
+       {0x4562, 0x8CE0},
+       {0x4563, 0x966A},
+       {0x4564, 0x914D},
+       {0x4565, 0x4F69},
+       {0x4566, 0x6C9B},
+       {0x4567, 0x5674},
+       {0x4568, 0x76C6},
+       {0x4569, 0x7830},
+       {0x456A, 0x62A8},
+       {0x456B, 0x70F9},
+       {0x456C, 0x6F8E},
+       {0x456D, 0x5F6D},
+       {0x456E, 0x84EC},
+       {0x456F, 0x68DA},
+       {0x4570, 0x787C},
+       {0x4571, 0x7BF7},
+       {0x4572, 0x81A8},
+       {0x4573, 0x670B},
+       {0x4574, 0x9D6C},
+       {0x4575, 0x6367},
+       {0x4576, 0x78B0},
+       {0x4577, 0x576F},
+       {0x4578, 0x7812},
+       {0x4579, 0x9739},
+       {0x457A, 0x6279},
+       {0x457B, 0x62AB},
+       {0x457C, 0x5288},
+       {0x457D, 0x7435},
+       {0x457E, 0x6BD7},
+       {0x4621, 0x5564},
+       {0x4622, 0x813E},
+       {0x4623, 0x75B2},
+       {0x4624, 0x76AE},
+       {0x4625, 0x5339},
+       {0x4626, 0x75DE},
+       {0x4627, 0x50FB},
+       {0x4628, 0x5C41},
+       {0x4629, 0x8B6C},
+       {0x462A, 0x7BC7},
+       {0x462B, 0x504F},
+       {0x462C, 0x7247},
+       {0x462D, 0x9A19},
+       {0x462E, 0x98C4},
+       {0x462F, 0x6F02},
+       {0x4630, 0x74E2},
+       {0x4631, 0x7968},
+       {0x4632, 0x6487},
+       {0x4633, 0x77A5},
+       {0x4634, 0x62FC},
+       {0x4635, 0x983B},
+       {0x4636, 0x8CA7},
+       {0x4637, 0x54C1},
+       {0x4638, 0x8058},
+       {0x4639, 0x4E52},
+       {0x463A, 0x576A},
+       {0x463B, 0x860B},
+       {0x463C, 0x840D},
+       {0x463D, 0x5E73},
+       {0x463E, 0x6191},
+       {0x463F, 0x74F6},
+       {0x4640, 0x8A55},
+       {0x4641, 0x5C4F},
+       {0x4642, 0x5761},
+       {0x4643, 0x6F51},
+       {0x4644, 0x9817},
+       {0x4645, 0x5A46},
+       {0x4646, 0x7834},
+       {0x4647, 0x9B44},
+       {0x4648, 0x8FEB},
+       {0x4649, 0x7C95},
+       {0x464A, 0x5256},
+       {0x464B, 0x64B2},
+       {0x464C, 0x92EA},
+       {0x464D, 0x50D5},
+       {0x464E, 0x8386},
+       {0x464F, 0x8461},
+       {0x4650, 0x83E9},
+       {0x4651, 0x84B2},
+       {0x4652, 0x57D4},
+       {0x4653, 0x6A38},
+       {0x4654, 0x5703},
+       {0x4655, 0x666E},
+       {0x4656, 0x6D66},
+       {0x4657, 0x8B5C},
+       {0x4658, 0x66DD},
+       {0x4659, 0x7011},
+       {0x465A, 0x671F},
+       {0x465B, 0x6B3A},
+       {0x465C, 0x68F2},
+       {0x465D, 0x621A},
+       {0x465E, 0x59BB},
+       {0x465F, 0x4E03},
+       {0x4660, 0x51C4},
+       {0x4661, 0x6F06},
+       {0x4662, 0x67D2},
+       {0x4663, 0x6C8F},
+       {0x4664, 0x5176},
+       {0x4665, 0x68CB},
+       {0x4666, 0x5947},
+       {0x4667, 0x6B67},
+       {0x4668, 0x7566},
+       {0x4669, 0x5D0E},
+       {0x466A, 0x81CD},
+       {0x466B, 0x9F4A},
+       {0x466C, 0x65D7},
+       {0x466D, 0x7948},
+       {0x466E, 0x7941},
+       {0x466F, 0x9A0E},
+       {0x4670, 0x8D77},
+       {0x4671, 0x8C48},
+       {0x4672, 0x4E5E},
+       {0x4673, 0x4F01},
+       {0x4674, 0x5553},
+       {0x4675, 0x5951},
+       {0x4676, 0x780C},
+       {0x4677, 0x5668},
+       {0x4678, 0x6C23},
+       {0x4679, 0x8FC4},
+       {0x467A, 0x68C4},
+       {0x467B, 0x6C7D},
+       {0x467C, 0x6CE3},
+       {0x467D, 0x8A16},
+       {0x467E, 0x6390},
+       {0x4721, 0x6070},
+       {0x4722, 0x6D3D},
+       {0x4723, 0x727D},
+       {0x4724, 0x6266},
+       {0x4725, 0x91FA},
+       {0x4726, 0x925B},
+       {0x4727, 0x5343},
+       {0x4728, 0x9077},
+       {0x4729, 0x7C3D},
+       {0x472A, 0x4EDF},
+       {0x472B, 0x8B19},
+       {0x472C, 0x4E7E},
+       {0x472D, 0x9ED4},
+       {0x472E, 0x9322},
+       {0x472F, 0x9257},
+       {0x4730, 0x524D},
+       {0x4731, 0x6F5B},
+       {0x4732, 0x9063},
+       {0x4733, 0x6DFA},
+       {0x4734, 0x8B74},
+       {0x4735, 0x5879},
+       {0x4736, 0x5D4C},
+       {0x4737, 0x6B20},
+       {0x4738, 0x6B49},
+       {0x4739, 0x69CD},
+       {0x473A, 0x55C6},
+       {0x473B, 0x8154},
+       {0x473C, 0x7F8C},
+       {0x473D, 0x58BB},
+       {0x473E, 0x8594},
+       {0x473F, 0x5F3A},
+       {0x4740, 0x6436},
+       {0x4741, 0x6A47},
+       {0x4742, 0x936C},
+       {0x4743, 0x6572},
+       {0x4744, 0x6084},
+       {0x4745, 0x6A4B},
+       {0x4746, 0x77A7},
+       {0x4747, 0x55AC},
+       {0x4748, 0x50D1},
+       {0x4749, 0x5DE7},
+       {0x474A, 0x9798},
+       {0x474B, 0x64AC},
+       {0x474C, 0x7FF9},
+       {0x474D, 0x5CED},
+       {0x474E, 0x4FCF},
+       {0x474F, 0x7AC5},
+       {0x4750, 0x5207},
+       {0x4751, 0x8304},
+       {0x4752, 0x4E14},
+       {0x4753, 0x602F},
+       {0x4754, 0x7ACA},
+       {0x4755, 0x6B3D},
+       {0x4756, 0x4FB5},
+       {0x4757, 0x89AA},
+       {0x4758, 0x79E6},
+       {0x4759, 0x7434},
+       {0x475A, 0x52E4},
+       {0x475B, 0x82B9},
+       {0x475C, 0x64D2},
+       {0x475D, 0x79BD},
+       {0x475E, 0x5BE2},
+       {0x475F, 0x6C81},
+       {0x4760, 0x9752},
+       {0x4761, 0x8F15},
+       {0x4762, 0x6C2B},
+       {0x4763, 0x50BE},
+       {0x4764, 0x537F},
+       {0x4765, 0x6E05},
+       {0x4766, 0x64CE},
+       {0x4767, 0x6674},
+       {0x4768, 0x6C30},
+       {0x4769, 0x60C5},
+       {0x476A, 0x9803},
+       {0x476B, 0x8ACB},
+       {0x476C, 0x6176},
+       {0x476D, 0x74CA},
+       {0x476E, 0x7AAE},
+       {0x476F, 0x79CB},
+       {0x4770, 0x4E18},
+       {0x4771, 0x90B1},
+       {0x4772, 0x7403},
+       {0x4773, 0x6C42},
+       {0x4774, 0x56DA},
+       {0x4775, 0x914B},
+       {0x4776, 0x6CC5},
+       {0x4777, 0x8DA8},
+       {0x4778, 0x5340},
+       {0x4779, 0x86C6},
+       {0x477A, 0x66F2},
+       {0x477B, 0x8EC0},
+       {0x477C, 0x5C48},
+       {0x477D, 0x9A45},
+       {0x477E, 0x6E20},
+       {0x4821, 0x53D6},
+       {0x4822, 0x5A36},
+       {0x4823, 0x9F72},
+       {0x4824, 0x8DA3},
+       {0x4825, 0x53BB},
+       {0x4826, 0x5708},
+       {0x4827, 0x9874},
+       {0x4828, 0x6B0A},
+       {0x4829, 0x919B},
+       {0x482A, 0x6CC9},
+       {0x482B, 0x5168},
+       {0x482C, 0x75CA},
+       {0x482D, 0x62F3},
+       {0x482E, 0x72AC},
+       {0x482F, 0x5238},
+       {0x4830, 0x52F8},
+       {0x4831, 0x7F3A},
+       {0x4832, 0x7094},
+       {0x4833, 0x7638},
+       {0x4834, 0x5374},
+       {0x4835, 0x9D72},
+       {0x4836, 0x69B7},
+       {0x4837, 0x78BA},
+       {0x4838, 0x96C0},
+       {0x4839, 0x88D9},
+       {0x483A, 0x7FA4},
+       {0x483B, 0x7136},
+       {0x483C, 0x71C3},
+       {0x483D, 0x5189},
+       {0x483E, 0x67D3},
+       {0x483F, 0x74E4},
+       {0x4840, 0x58E4},
+       {0x4841, 0x6518},
+       {0x4842, 0x56B7},
+       {0x4843, 0x8B93},
+       {0x4844, 0x9952},
+       {0x4845, 0x64FE},
+       {0x4846, 0x7E5E},
+       {0x4847, 0x60F9},
+       {0x4848, 0x71B1},
+       {0x4849, 0x58EC},
+       {0x484A, 0x4EC1},
+       {0x484B, 0x4EBA},
+       {0x484C, 0x5FCD},
+       {0x484D, 0x97CC},
+       {0x484E, 0x4EFB},
+       {0x484F, 0x8A8D},
+       {0x4850, 0x5203},
+       {0x4851, 0x598A},
+       {0x4852, 0x7D09},
+       {0x4853, 0x6254},
+       {0x4854, 0x4ECD},
+       {0x4855, 0x65E5},
+       {0x4856, 0x620E},
+       {0x4857, 0x8338},
+       {0x4858, 0x84C9},
+       {0x4859, 0x69AE},
+       {0x485A, 0x878D},
+       {0x485B, 0x7194},
+       {0x485C, 0x6EB6},
+       {0x485D, 0x5BB9},
+       {0x485E, 0x7D68},
+       {0x485F, 0x5197},
+       {0x4860, 0x63C9},
+       {0x4861, 0x67D4},
+       {0x4862, 0x8089},
+       {0x4863, 0x8339},
+       {0x4864, 0x8815},
+       {0x4865, 0x5112},
+       {0x4866, 0x5B7A},
+       {0x4867, 0x5982},
+       {0x4868, 0x8FB1},
+       {0x4869, 0x4E73},
+       {0x486A, 0x6C5D},
+       {0x486B, 0x5165},
+       {0x486C, 0x8925},
+       {0x486D, 0x8EDF},
+       {0x486E, 0x962E},
+       {0x486F, 0x854A},
+       {0x4870, 0x745E},
+       {0x4871, 0x92ED},
+       {0x4872, 0x958F},
+       {0x4873, 0x6F64},
+       {0x4874, 0x82E5},
+       {0x4875, 0x5F31},
+       {0x4876, 0x6492},
+       {0x4877, 0x7051},
+       {0x4878, 0x85A9},
+       {0x4879, 0x816E},
+       {0x487A, 0x9C13},
+       {0x487B, 0x585E},
+       {0x487C, 0x8CFD},
+       {0x487D, 0x4E09},
+       {0x487E, 0x53C1},
+       {0x4921, 0x5098},
+       {0x4922, 0x6563},
+       {0x4923, 0x6851},
+       {0x4924, 0x55D3},
+       {0x4925, 0x55AA},
+       {0x4926, 0x6414},
+       {0x4927, 0x9A37},
+       {0x4928, 0x6383},
+       {0x4929, 0x5AC2},
+       {0x492A, 0x745F},
+       {0x492B, 0x8272},
+       {0x492C, 0x6F80},
+       {0x492D, 0x68EE},
+       {0x492E, 0x50E7},
+       {0x492F, 0x838E},
+       {0x4930, 0x7802},
+       {0x4931, 0x6BBA},
+       {0x4932, 0x5239},
+       {0x4933, 0x6C99},
+       {0x4934, 0x7D17},
+       {0x4935, 0x50BB},
+       {0x4936, 0x5565},
+       {0x4937, 0x715E},
+       {0x4938, 0x7BE9},
+       {0x4939, 0x66EC},
+       {0x493A, 0x73CA},
+       {0x493B, 0x82EB},
+       {0x493C, 0x6749},
+       {0x493D, 0x5C71},
+       {0x493E, 0x5220},
+       {0x493F, 0x717D},
+       {0x4940, 0x886B},
+       {0x4941, 0x9583},
+       {0x4942, 0x965D},
+       {0x4943, 0x64C5},
+       {0x4944, 0x8D0D},
+       {0x4945, 0x81B3},
+       {0x4946, 0x5584},
+       {0x4947, 0x6C55},
+       {0x4948, 0x6247},
+       {0x4949, 0x7E55},
+       {0x494A, 0x5892},
+       {0x494B, 0x50B7},
+       {0x494C, 0x5546},
+       {0x494D, 0x8CDE},
+       {0x494E, 0x664C},
+       {0x494F, 0x4E0A},
+       {0x4950, 0x5C1A},
+       {0x4951, 0x88F3},
+       {0x4952, 0x68A2},
+       {0x4953, 0x634E},
+       {0x4954, 0x7A0D},
+       {0x4955, 0x71D2},
+       {0x4956, 0x828D},
+       {0x4957, 0x52FA},
+       {0x4958, 0x97F6},
+       {0x4959, 0x5C11},
+       {0x495A, 0x54E8},
+       {0x495B, 0x90B5},
+       {0x495C, 0x7D39},
+       {0x495D, 0x5962},
+       {0x495E, 0x8CD2},
+       {0x495F, 0x86C7},
+       {0x4960, 0x820C},
+       {0x4961, 0x6368},
+       {0x4962, 0x8D66},
+       {0x4963, 0x651D},
+       {0x4964, 0x5C04},
+       {0x4965, 0x61FE},
+       {0x4966, 0x6D89},
+       {0x4967, 0x793E},
+       {0x4968, 0x8A2D},
+       {0x4969, 0x7837},
+       {0x496A, 0x7533},
+       {0x496B, 0x547B},
+       {0x496C, 0x4F38},
+       {0x496D, 0x8EAB},
+       {0x496E, 0x6DF1},
+       {0x496F, 0x5A20},
+       {0x4970, 0x7D33},
+       {0x4971, 0x795E},
+       {0x4972, 0x6C88},
+       {0x4973, 0x5BE9},
+       {0x4974, 0x5B38},
+       {0x4975, 0x751A},
+       {0x4976, 0x814E},
+       {0x4977, 0x614E},
+       {0x4978, 0x6EF2},
+       {0x4979, 0x8072},
+       {0x497A, 0x751F},
+       {0x497B, 0x7525},
+       {0x497C, 0x7272},
+       {0x497D, 0x5347},
+       {0x497E, 0x7E69},
+       {0x4A21, 0x7701},
+       {0x4A22, 0x76DB},
+       {0x4A23, 0x5269},
+       {0x4A24, 0x52DD},
+       {0x4A25, 0x8056},
+       {0x4A26, 0x5E2B},
+       {0x4A27, 0x5931},
+       {0x4A28, 0x7345},
+       {0x4A29, 0x65BD},
+       {0x4A2A, 0x6FD5},
+       {0x4A2B, 0x8A69},
+       {0x4A2C, 0x5C38},
+       {0x4A2D, 0x8671},
+       {0x4A2E, 0x5341},
+       {0x4A2F, 0x77F3},
+       {0x4A30, 0x62FE},
+       {0x4A31, 0x6642},
+       {0x4A32, 0x4EC0},
+       {0x4A33, 0x98DF},
+       {0x4A34, 0x8755},
+       {0x4A35, 0x5BE6},
+       {0x4A36, 0x8B58},
+       {0x4A37, 0x53F2},
+       {0x4A38, 0x77E2},
+       {0x4A39, 0x4F7F},
+       {0x4A3A, 0x5C4E},
+       {0x4A3B, 0x99DB},
+       {0x4A3C, 0x59CB},
+       {0x4A3D, 0x5F0F},
+       {0x4A3E, 0x793A},
+       {0x4A3F, 0x58EB},
+       {0x4A40, 0x4E16},
+       {0x4A41, 0x67FF},
+       {0x4A42, 0x4E8B},
+       {0x4A43, 0x62ED},
+       {0x4A44, 0x8A93},
+       {0x4A45, 0x901D},
+       {0x4A46, 0x52E2},
+       {0x4A47, 0x662F},
+       {0x4A48, 0x55DC},
+       {0x4A49, 0x566C},
+       {0x4A4A, 0x9069},
+       {0x4A4B, 0x4ED5},
+       {0x4A4C, 0x4F8D},
+       {0x4A4D, 0x91CB},
+       {0x4A4E, 0x98FE},
+       {0x4A4F, 0x6C0F},
+       {0x4A50, 0x5E02},
+       {0x4A51, 0x6043},
+       {0x4A52, 0x5BA4},
+       {0x4A53, 0x8996},
+       {0x4A54, 0x8A66},
+       {0x4A55, 0x6536},
+       {0x4A56, 0x624B},
+       {0x4A57, 0x9996},
+       {0x4A58, 0x5B88},
+       {0x4A59, 0x58FD},
+       {0x4A5A, 0x6388},
+       {0x4A5B, 0x552E},
+       {0x4A5C, 0x53D7},
+       {0x4A5D, 0x7626},
+       {0x4A5E, 0x7378},
+       {0x4A5F, 0x852C},
+       {0x4A60, 0x6A1E},
+       {0x4A61, 0x68B3},
+       {0x4A62, 0x6B8A},
+       {0x4A63, 0x6292},
+       {0x4A64, 0x8F38},
+       {0x4A65, 0x53D4},
+       {0x4A66, 0x8212},
+       {0x4A67, 0x6DD1},
+       {0x4A68, 0x758F},
+       {0x4A69, 0x66F8},
+       {0x4A6A, 0x8D16},
+       {0x4A6B, 0x5B70},
+       {0x4A6C, 0x719F},
+       {0x4A6D, 0x85AF},
+       {0x4A6E, 0x6691},
+       {0x4A6F, 0x66D9},
+       {0x4A70, 0x7F72},
+       {0x4A71, 0x8700},
+       {0x4A72, 0x9ECD},
+       {0x4A73, 0x9F20},
+       {0x4A74, 0x5C6C},
+       {0x4A75, 0x8853},
+       {0x4A76, 0x8FF0},
+       {0x4A77, 0x6A39},
+       {0x4A78, 0x675F},
+       {0x4A79, 0x620D},
+       {0x4A7A, 0x7AEA},
+       {0x4A7B, 0x5885},
+       {0x4A7C, 0x5EB6},
+       {0x4A7D, 0x6578},
+       {0x4A7E, 0x6F31},
+       {0x4B21, 0x6055},
+       {0x4B22, 0x5237},
+       {0x4B23, 0x800D},
+       {0x4B24, 0x6454},
+       {0x4B25, 0x8870},
+       {0x4B26, 0x7529},
+       {0x4B27, 0x5E25},
+       {0x4B28, 0x6813},
+       {0x4B29, 0x62F4},
+       {0x4B2A, 0x971C},
+       {0x4B2B, 0x96D9},
+       {0x4B2C, 0x723D},
+       {0x4B2D, 0x8AB0},
+       {0x4B2E, 0x6C34},
+       {0x4B2F, 0x7761},
+       {0x4B30, 0x7A0E},
+       {0x4B31, 0x542E},
+       {0x4B32, 0x77AC},
+       {0x4B33, 0x9806},
+       {0x4B34, 0x821C},
+       {0x4B35, 0x8AAC},
+       {0x4B36, 0x78A9},
+       {0x4B37, 0x6714},
+       {0x4B38, 0x720D},
+       {0x4B39, 0x65AF},
+       {0x4B3A, 0x6495},
+       {0x4B3B, 0x5636},
+       {0x4B3C, 0x601D},
+       {0x4B3D, 0x79C1},
+       {0x4B3E, 0x53F8},
+       {0x4B3F, 0x7D72},
+       {0x4B40, 0x6B7B},
+       {0x4B41, 0x8086},
+       {0x4B42, 0x5BFA},
+       {0x4B43, 0x55E3},
+       {0x4B44, 0x56DB},
+       {0x4B45, 0x4F3A},
+       {0x4B46, 0x4F3C},
+       {0x4B47, 0x98FC},
+       {0x4B48, 0x5DF3},
+       {0x4B49, 0x9B06},
+       {0x4B4A, 0x8073},
+       {0x4B4B, 0x616B},
+       {0x4B4C, 0x980C},
+       {0x4B4D, 0x9001},
+       {0x4B4E, 0x5B8B},
+       {0x4B4F, 0x8A1F},
+       {0x4B50, 0x8AA6},
+       {0x4B51, 0x641C},
+       {0x4B52, 0x8258},
+       {0x4B53, 0x64FB},
+       {0x4B54, 0x55FD},
+       {0x4B55, 0x8607},
+       {0x4B56, 0x9165},
+       {0x4B57, 0x4FD7},
+       {0x4B58, 0x7D20},
+       {0x4B59, 0x901F},
+       {0x4B5A, 0x7C9F},
+       {0x4B5B, 0x50F3},
+       {0x4B5C, 0x5851},
+       {0x4B5D, 0x6EAF},
+       {0x4B5E, 0x5BBF},
+       {0x4B5F, 0x8A34},
+       {0x4B60, 0x8085},
+       {0x4B61, 0x9178},
+       {0x4B62, 0x849C},
+       {0x4B63, 0x7B97},
+       {0x4B64, 0x96D6},
+       {0x4B65, 0x968B},
+       {0x4B66, 0x96A8},
+       {0x4B67, 0x7D8F},
+       {0x4B68, 0x9AD3},
+       {0x4B69, 0x788E},
+       {0x4B6A, 0x6B72},
+       {0x4B6B, 0x7A57},
+       {0x4B6C, 0x9042},
+       {0x4B6D, 0x96A7},
+       {0x4B6E, 0x795F},
+       {0x4B6F, 0x5B6B},
+       {0x4B70, 0x640D},
+       {0x4B71, 0x7B0B},
+       {0x4B72, 0x84D1},
+       {0x4B73, 0x68AD},
+       {0x4B74, 0x5506},
+       {0x4B75, 0x7E2E},
+       {0x4B76, 0x7463},
+       {0x4B77, 0x7D22},
+       {0x4B78, 0x9396},
+       {0x4B79, 0x6240},
+       {0x4B7A, 0x584C},
+       {0x4B7B, 0x4ED6},
+       {0x4B7C, 0x5B83},
+       {0x4B7D, 0x5979},
+       {0x4B7E, 0x5854},
+       {0x4C21, 0x737A},
+       {0x4C22, 0x64BB},
+       {0x4C23, 0x8E4B},
+       {0x4C24, 0x8E0F},
+       {0x4C25, 0x80CE},
+       {0x4C26, 0x82D4},
+       {0x4C27, 0x62AC},
+       {0x4C28, 0x81FA},
+       {0x4C29, 0x6CF0},
+       {0x4C2A, 0x915E},
+       {0x4C2B, 0x592A},
+       {0x4C2C, 0x614B},
+       {0x4C2D, 0x6C70},
+       {0x4C2E, 0x574D},
+       {0x4C2F, 0x6524},
+       {0x4C30, 0x8CAA},
+       {0x4C31, 0x7671},
+       {0x4C32, 0x7058},
+       {0x4C33, 0x58C7},
+       {0x4C34, 0x6A80},
+       {0x4C35, 0x75F0},
+       {0x4C36, 0x6F6D},
+       {0x4C37, 0x8B5A},
+       {0x4C38, 0x8AC7},
+       {0x4C39, 0x5766},
+       {0x4C3A, 0x6BEF},
+       {0x4C3B, 0x8892},
+       {0x4C3C, 0x78B3},
+       {0x4C3D, 0x63A2},
+       {0x4C3E, 0x5606},
+       {0x4C3F, 0x70AD},
+       {0x4C40, 0x6E6F},
+       {0x4C41, 0x5858},
+       {0x4C42, 0x642A},
+       {0x4C43, 0x5802},
+       {0x4C44, 0x68E0},
+       {0x4C45, 0x819B},
+       {0x4C46, 0x5510},
+       {0x4C47, 0x7CD6},
+       {0x4C48, 0x5018},
+       {0x4C49, 0x8EBA},
+       {0x4C4A, 0x6DCC},
+       {0x4C4B, 0x8D9F},
+       {0x4C4C, 0x71D9},
+       {0x4C4D, 0x638F},
+       {0x4C4E, 0x6FE4},
+       {0x4C4F, 0x6ED4},
+       {0x4C50, 0x7E27},
+       {0x4C51, 0x8404},
+       {0x4C52, 0x6843},
+       {0x4C53, 0x9003},
+       {0x4C54, 0x6DD8},
+       {0x4C55, 0x9676},
+       {0x4C56, 0x8A0E},
+       {0x4C57, 0x5957},
+       {0x4C58, 0x7279},
+       {0x4C59, 0x85E4},
+       {0x4C5A, 0x9A30},
+       {0x4C5B, 0x75BC},
+       {0x4C5C, 0x8B04},
+       {0x4C5D, 0x68AF},
+       {0x4C5E, 0x5254},
+       {0x4C5F, 0x8E22},
+       {0x4C60, 0x92BB},
+       {0x4C61, 0x63D0},
+       {0x4C62, 0x984C},
+       {0x4C63, 0x8E44},
+       {0x4C64, 0x557C},
+       {0x4C65, 0x9AD4},
+       {0x4C66, 0x66FF},
+       {0x4C67, 0x568F},
+       {0x4C68, 0x60D5},
+       {0x4C69, 0x6D95},
+       {0x4C6A, 0x5243},
+       {0x4C6B, 0x5C49},
+       {0x4C6C, 0x5929},
+       {0x4C6D, 0x6DFB},
+       {0x4C6E, 0x586B},
+       {0x4C6F, 0x7530},
+       {0x4C70, 0x751C},
+       {0x4C71, 0x606C},
+       {0x4C72, 0x8214},
+       {0x4C73, 0x8146},
+       {0x4C74, 0x6311},
+       {0x4C75, 0x689D},
+       {0x4C76, 0x8FE2},
+       {0x4C77, 0x773A},
+       {0x4C78, 0x8DF3},
+       {0x4C79, 0x8CBC},
+       {0x4C7A, 0x9435},
+       {0x4C7B, 0x5E16},
+       {0x4C7C, 0x5EF3},
+       {0x4C7D, 0x807D},
+       {0x4C7E, 0x70F4},
+       {0x4D21, 0x6C40},
+       {0x4D22, 0x5EF7},
+       {0x4D23, 0x505C},
+       {0x4D24, 0x4EAD},
+       {0x4D25, 0x5EAD},
+       {0x4D26, 0x633A},
+       {0x4D27, 0x8247},
+       {0x4D28, 0x901A},
+       {0x4D29, 0x6850},
+       {0x4D2A, 0x916E},
+       {0x4D2B, 0x77B3},
+       {0x4D2C, 0x540C},
+       {0x4D2D, 0x9285},
+       {0x4D2E, 0x5F64},
+       {0x4D2F, 0x7AE5},
+       {0x4D30, 0x6876},
+       {0x4D31, 0x6345},
+       {0x4D32, 0x7B52},
+       {0x4D33, 0x7D71},
+       {0x4D34, 0x75DB},
+       {0x4D35, 0x5077},
+       {0x4D36, 0x6295},
+       {0x4D37, 0x982D},
+       {0x4D38, 0x900F},
+       {0x4D39, 0x51F8},
+       {0x4D3A, 0x79C3},
+       {0x4D3B, 0x7A81},
+       {0x4D3C, 0x5716},
+       {0x4D3D, 0x5F92},
+       {0x4D3E, 0x9014},
+       {0x4D3F, 0x5857},
+       {0x4D40, 0x5C60},
+       {0x4D41, 0x571F},
+       {0x4D42, 0x5410},
+       {0x4D43, 0x5154},
+       {0x4D44, 0x6E4D},
+       {0x4D45, 0x5718},
+       {0x4D46, 0x63A8},
+       {0x4D47, 0x983D},
+       {0x4D48, 0x817F},
+       {0x4D49, 0x8715},
+       {0x4D4A, 0x892A},
+       {0x4D4B, 0x9000},
+       {0x4D4C, 0x541E},
+       {0x4D4D, 0x5C6F},
+       {0x4D4E, 0x81C0},
+       {0x4D4F, 0x62D6},
+       {0x4D50, 0x6258},
+       {0x4D51, 0x8131},
+       {0x4D52, 0x9D15},
+       {0x4D53, 0x9640},
+       {0x4D54, 0x99B1},
+       {0x4D55, 0x99DD},
+       {0x4D56, 0x6A62},
+       {0x4D57, 0x59A5},
+       {0x4D58, 0x62D3},
+       {0x4D59, 0x553E},
+       {0x4D5A, 0x6316},
+       {0x4D5B, 0x54C7},
+       {0x4D5C, 0x86D9},
+       {0x4D5D, 0x7AAA},
+       {0x4D5E, 0x5A03},
+       {0x4D5F, 0x74E6},
+       {0x4D60, 0x896A},
+       {0x4D61, 0x6B6A},
+       {0x4D62, 0x5916},
+       {0x4D63, 0x8C4C},
+       {0x4D64, 0x5F4E},
+       {0x4D65, 0x7063},
+       {0x4D66, 0x73A9},
+       {0x4D67, 0x9811},
+       {0x4D68, 0x4E38},
+       {0x4D69, 0x70F7},
+       {0x4D6A, 0x5B8C},
+       {0x4D6B, 0x7897},
+       {0x4D6C, 0x633D},
+       {0x4D6D, 0x665A},
+       {0x4D6E, 0x7696},
+       {0x4D6F, 0x60CB},
+       {0x4D70, 0x5B9B},
+       {0x4D71, 0x5A49},
+       {0x4D72, 0x842C},
+       {0x4D73, 0x8155},
+       {0x4D74, 0x6C6A},
+       {0x4D75, 0x738B},
+       {0x4D76, 0x4EA1},
+       {0x4D77, 0x6789},
+       {0x4D78, 0x7DB2},
+       {0x4D79, 0x5F80},
+       {0x4D7A, 0x65FA},
+       {0x4D7B, 0x671B},
+       {0x4D7C, 0x5FD8},
+       {0x4D7D, 0x5984},
+       {0x4D7E, 0x5A01},
+       {0x4E21, 0x5DCD},
+       {0x4E22, 0x5FAE},
+       {0x4E23, 0x5371},
+       {0x4E24, 0x97CB},
+       {0x4E25, 0x9055},
+       {0x4E26, 0x6845},
+       {0x4E27, 0x570D},
+       {0x4E28, 0x552F},
+       {0x4E29, 0x60DF},
+       {0x4E2A, 0x7232},
+       {0x4E2B, 0x6FF0},
+       {0x4E2C, 0x7DAD},
+       {0x4E2D, 0x8466},
+       {0x4E2E, 0x840E},
+       {0x4E2F, 0x59D4},
+       {0x4E30, 0x5049},
+       {0x4E31, 0x50DE},
+       {0x4E32, 0x5C3E},
+       {0x4E33, 0x7DEF},
+       {0x4E34, 0x672A},
+       {0x4E35, 0x851A},
+       {0x4E36, 0x5473},
+       {0x4E37, 0x754F},
+       {0x4E38, 0x80C3},
+       {0x4E39, 0x5582},
+       {0x4E3A, 0x9B4F},
+       {0x4E3B, 0x4F4D},
+       {0x4E3C, 0x6E2D},
+       {0x4E3D, 0x8B02},
+       {0x4E3E, 0x5C09},
+       {0x4E3F, 0x6170},
+       {0x4E40, 0x885B},
+       {0x4E41, 0x761F},
+       {0x4E42, 0x6E29},
+       {0x4E43, 0x868A},
+       {0x4E44, 0x6587},
+       {0x4E45, 0x805E},
+       {0x4E46, 0x7D0B},
+       {0x4E47, 0x543B},
+       {0x4E48, 0x7A69},
+       {0x4E49, 0x7D0A},
+       {0x4E4A, 0x554F},
+       {0x4E4B, 0x55E1},
+       {0x4E4C, 0x7FC1},
+       {0x4E4D, 0x74EE},
+       {0x4E4E, 0x64BE},
+       {0x4E4F, 0x8778},
+       {0x4E50, 0x6E26},
+       {0x4E51, 0x7AA9},
+       {0x4E52, 0x6211},
+       {0x4E53, 0x65A1},
+       {0x4E54, 0x5367},
+       {0x4E55, 0x63E1},
+       {0x4E56, 0x6C83},
+       {0x4E57, 0x5DEB},
+       {0x4E58, 0x55DA},
+       {0x4E59, 0x93A2},
+       {0x4E5A, 0x70CF},
+       {0x4E5B, 0x6C61},
+       {0x4E5C, 0x8AA3},
+       {0x4E5D, 0x5C4B},
+       {0x4E5E, 0x7121},
+       {0x4E5F, 0x856A},
+       {0x4E60, 0x68A7},
+       {0x4E61, 0x543E},
+       {0x4E62, 0x5434},
+       {0x4E63, 0x6BCB},
+       {0x4E64, 0x6B66},
+       {0x4E65, 0x4E94},
+       {0x4E66, 0x6342},
+       {0x4E67, 0x5348},
+       {0x4E68, 0x821E},
+       {0x4E69, 0x4F0D},
+       {0x4E6A, 0x4FAE},
+       {0x4E6B, 0x5862},
+       {0x4E6C, 0x620A},
+       {0x4E6D, 0x9727},
+       {0x4E6E, 0x6664},
+       {0x4E6F, 0x7269},
+       {0x4E70, 0x52FF},
+       {0x4E71, 0x52D9},
+       {0x4E72, 0x609F},
+       {0x4E73, 0x8AA4},
+       {0x4E74, 0x6614},
+       {0x4E75, 0x7199},
+       {0x4E76, 0x6790},
+       {0x4E77, 0x897F},
+       {0x4E78, 0x7852},
+       {0x4E79, 0x77FD},
+       {0x4E7A, 0x6670},
+       {0x4E7B, 0x563B},
+       {0x4E7C, 0x5438},
+       {0x4E7D, 0x932B},
+       {0x4E7E, 0x72A7},
+       {0x4F21, 0x7A00},
+       {0x4F22, 0x606F},
+       {0x4F23, 0x5E0C},
+       {0x4F24, 0x6089},
+       {0x4F25, 0x819D},
+       {0x4F26, 0x5915},
+       {0x4F27, 0x60DC},
+       {0x4F28, 0x7184},
+       {0x4F29, 0x70EF},
+       {0x4F2A, 0x6EAA},
+       {0x4F2B, 0x6C50},
+       {0x4F2C, 0x7280},
+       {0x4F2D, 0x6A84},
+       {0x4F2E, 0x8972},
+       {0x4F2F, 0x5E2D},
+       {0x4F30, 0x7FD2},
+       {0x4F31, 0x5AB3},
+       {0x4F32, 0x559C},
+       {0x4F33, 0x9291},
+       {0x4F34, 0x6D17},
+       {0x4F35, 0x7CFB},
+       {0x4F36, 0x9699},
+       {0x4F37, 0x6232},
+       {0x4F38, 0x7D30},
+       {0x4F39, 0x778E},
+       {0x4F3A, 0x8766},
+       {0x4F3B, 0x5323},
+       {0x4F3C, 0x971E},
+       {0x4F3D, 0x8F44},
+       {0x4F3E, 0x6687},
+       {0x4F3F, 0x5CFD},
+       {0x4F40, 0x4FE0},
+       {0x4F41, 0x72F9},
+       {0x4F42, 0x4E0B},
+       {0x4F43, 0x53A6},
+       {0x4F44, 0x590F},
+       {0x4F45, 0x5687},
+       {0x4F46, 0x6380},
+       {0x4F47, 0x9341},
+       {0x4F48, 0x5148},
+       {0x4F49, 0x4ED9},
+       {0x4F4A, 0x9BAE},
+       {0x4F4B, 0x7E96},
+       {0x4F4C, 0x54B8},
+       {0x4F4D, 0x8CE2},
+       {0x4F4E, 0x929C},
+       {0x4F4F, 0x8237},
+       {0x4F50, 0x9591},
+       {0x4F51, 0x6D8E},
+       {0x4F52, 0x5F26},
+       {0x4F53, 0x5ACC},
+       {0x4F54, 0x986F},
+       {0x4F55, 0x96AA},
+       {0x4F56, 0x73FE},
+       {0x4F57, 0x737B},
+       {0x4F58, 0x7E23},
+       {0x4F59, 0x817A},
+       {0x4F5A, 0x9921},
+       {0x4F5B, 0x7FA1},
+       {0x4F5C, 0x61B2},
+       {0x4F5D, 0x9677},
+       {0x4F5E, 0x9650},
+       {0x4F5F, 0x7DAB},
+       {0x4F60, 0x76F8},
+       {0x4F61, 0x53A2},
+       {0x4F62, 0x9472},
+       {0x4F63, 0x9999},
+       {0x4F64, 0x7BB1},
+       {0x4F65, 0x8944},
+       {0x4F66, 0x6E58},
+       {0x4F67, 0x9109},
+       {0x4F68, 0x7FD4},
+       {0x4F69, 0x7965},
+       {0x4F6A, 0x8A73},
+       {0x4F6B, 0x60F3},
+       {0x4F6C, 0x97FF},
+       {0x4F6D, 0x4EAB},
+       {0x4F6E, 0x9805},
+       {0x4F6F, 0x5DF7},
+       {0x4F70, 0x6A61},
+       {0x4F71, 0x50CF},
+       {0x4F72, 0x5411},
+       {0x4F73, 0x8C61},
+       {0x4F74, 0x856D},
+       {0x4F75, 0x785D},
+       {0x4F76, 0x9704},
+       {0x4F77, 0x524A},
+       {0x4F78, 0x54EE},
+       {0x4F79, 0x56C2},
+       {0x4F7A, 0x92B7},
+       {0x4F7B, 0x6D88},
+       {0x4F7C, 0x5BB5},
+       {0x4F7D, 0x6DC6},
+       {0x4F7E, 0x66C9},
+       {0x5021, 0x5C0F},
+       {0x5022, 0x5B5D},
+       {0x5023, 0x6821},
+       {0x5024, 0x8096},
+       {0x5025, 0x562F},
+       {0x5026, 0x7B11},
+       {0x5027, 0x6548},
+       {0x5028, 0x6954},
+       {0x5029, 0x4E9B},
+       {0x502A, 0x6B47},
+       {0x502B, 0x874E},
+       {0x502C, 0x978B},
+       {0x502D, 0x5354},
+       {0x502E, 0x633E},
+       {0x502F, 0x643A},
+       {0x5030, 0x90AA},
+       {0x5031, 0x659C},
+       {0x5032, 0x8105},
+       {0x5033, 0x8AE7},
+       {0x5034, 0x5BEB},
+       {0x5035, 0x68B0},
+       {0x5036, 0x5378},
+       {0x5037, 0x87F9},
+       {0x5038, 0x61C8},
+       {0x5039, 0x6CC4},
+       {0x503A, 0x7009},
+       {0x503B, 0x8B1D},
+       {0x503C, 0x5C51},
+       {0x503D, 0x85AA},
+       {0x503E, 0x82AF},
+       {0x503F, 0x92C5},
+       {0x5040, 0x6B23},
+       {0x5041, 0x8F9B},
+       {0x5042, 0x65B0},
+       {0x5043, 0x5FFB},
+       {0x5044, 0x5FC3},
+       {0x5045, 0x4FE1},
+       {0x5046, 0x91C1},
+       {0x5047, 0x661F},
+       {0x5048, 0x8165},
+       {0x5049, 0x7329},
+       {0x504A, 0x60FA},
+       {0x504B, 0x8208},
+       {0x504C, 0x5211},
+       {0x504D, 0x578B},
+       {0x504E, 0x5F62},
+       {0x504F, 0x90A2},
+       {0x5050, 0x884C},
+       {0x5051, 0x9192},
+       {0x5052, 0x5E78},
+       {0x5053, 0x674F},
+       {0x5054, 0x6027},
+       {0x5055, 0x59D3},
+       {0x5056, 0x5144},
+       {0x5057, 0x51F6},
+       {0x5058, 0x80F8},
+       {0x5059, 0x5308},
+       {0x505A, 0x6C79},
+       {0x505B, 0x96C4},
+       {0x505C, 0x718A},
+       {0x505D, 0x4F11},
+       {0x505E, 0x4FEE},
+       {0x505F, 0x7F9E},
+       {0x5060, 0x673D},
+       {0x5061, 0x55C5},
+       {0x5062, 0x92B9},
+       {0x5063, 0x79C0},
+       {0x5064, 0x8896},
+       {0x5065, 0x7D89},
+       {0x5066, 0x589F},
+       {0x5067, 0x620C},
+       {0x5068, 0x9700},
+       {0x5069, 0x865A},
+       {0x506A, 0x5618},
+       {0x506B, 0x9808},
+       {0x506C, 0x5F90},
+       {0x506D, 0x8A31},
+       {0x506E, 0x84C4},
+       {0x506F, 0x9157},
+       {0x5070, 0x53D9},
+       {0x5071, 0x65ED},
+       {0x5072, 0x5E8F},
+       {0x5073, 0x755C},
+       {0x5074, 0x6064},
+       {0x5075, 0x7D6E},
+       {0x5076, 0x5A7F},
+       {0x5077, 0x7DD2},
+       {0x5078, 0x7E8C},
+       {0x5079, 0x8ED2},
+       {0x507A, 0x55A7},
+       {0x507B, 0x5BA3},
+       {0x507C, 0x61F8},
+       {0x507D, 0x65CB},
+       {0x507E, 0x7384},
+       {0x5121, 0x9078},
+       {0x5122, 0x766C},
+       {0x5123, 0x7729},
+       {0x5124, 0x7D62},
+       {0x5125, 0x9774},
+       {0x5126, 0x859B},
+       {0x5127, 0x5B78},
+       {0x5128, 0x7A74},
+       {0x5129, 0x96EA},
+       {0x512A, 0x8840},
+       {0x512B, 0x52DB},
+       {0x512C, 0x718F},
+       {0x512D, 0x5FAA},
+       {0x512E, 0x65EC},
+       {0x512F, 0x8A62},
+       {0x5130, 0x5C0B},
+       {0x5131, 0x99B4},
+       {0x5132, 0x5DE1},
+       {0x5133, 0x6B89},
+       {0x5134, 0x6C5B},
+       {0x5135, 0x8A13},
+       {0x5136, 0x8A0A},
+       {0x5137, 0x905C},
+       {0x5138, 0x8FC5},
+       {0x5139, 0x58D3},
+       {0x513A, 0x62BC},
+       {0x513B, 0x9D09},
+       {0x513C, 0x9D28},
+       {0x513D, 0x5440},
+       {0x513E, 0x4E2B},
+       {0x513F, 0x82BD},
+       {0x5140, 0x7259},
+       {0x5141, 0x869C},
+       {0x5142, 0x5D16},
+       {0x5143, 0x8859},
+       {0x5144, 0x6DAF},
+       {0x5145, 0x96C5},
+       {0x5146, 0x555E},
+       {0x5147, 0x4E9E},
+       {0x5148, 0x8A1D},
+       {0x5149, 0x7109},
+       {0x514A, 0x54BD},
+       {0x514B, 0x95B9},
+       {0x514C, 0x70DF},
+       {0x514D, 0x6DF9},
+       {0x514E, 0x9E7D},
+       {0x514F, 0x56B4},
+       {0x5150, 0x7814},
+       {0x5151, 0x8712},
+       {0x5152, 0x5CA9},
+       {0x5153, 0x5EF6},
+       {0x5154, 0x8A00},
+       {0x5155, 0x9854},
+       {0x5156, 0x95BB},
+       {0x5157, 0x708E},
+       {0x5158, 0x6CBF},
+       {0x5159, 0x5944},
+       {0x515A, 0x63A9},
+       {0x515B, 0x773C},
+       {0x515C, 0x884D},
+       {0x515D, 0x6F14},
+       {0x515E, 0x8277},
+       {0x515F, 0x5830},
+       {0x5160, 0x71D5},
+       {0x5161, 0x53AD},
+       {0x5162, 0x786F},
+       {0x5163, 0x96C1},
+       {0x5164, 0x5501},
+       {0x5165, 0x5F66},
+       {0x5166, 0x7130},
+       {0x5167, 0x5BB4},
+       {0x5168, 0x8AFA},
+       {0x5169, 0x9A57},
+       {0x516A, 0x6B83},
+       {0x516B, 0x592E},
+       {0x516C, 0x9D26},
+       {0x516D, 0x79E7},
+       {0x516E, 0x694A},
+       {0x516F, 0x63DA},
+       {0x5170, 0x4F6F},
+       {0x5171, 0x760D},
+       {0x5172, 0x7F8A},
+       {0x5173, 0x6D0B},
+       {0x5174, 0x967D},
+       {0x5175, 0x6C27},
+       {0x5176, 0x4EF0},
+       {0x5177, 0x7662},
+       {0x5178, 0x990A},
+       {0x5179, 0x6A23},
+       {0x517A, 0x6F3E},
+       {0x517B, 0x9080},
+       {0x517C, 0x8170},
+       {0x517D, 0x5996},
+       {0x517E, 0x7476},
+       {0x5221, 0x6447},
+       {0x5222, 0x582F},
+       {0x5223, 0x9065},
+       {0x5224, 0x7A91},
+       {0x5225, 0x8B21},
+       {0x5226, 0x59DA},
+       {0x5227, 0x54AC},
+       {0x5228, 0x8200},
+       {0x5229, 0x85E5},
+       {0x522A, 0x8981},
+       {0x522B, 0x8000},
+       {0x522C, 0x6930},
+       {0x522D, 0x564E},
+       {0x522E, 0x8036},
+       {0x522F, 0x723A},
+       {0x5230, 0x91CE},
+       {0x5231, 0x51B6},
+       {0x5232, 0x4E5F},
+       {0x5233, 0x9801},
+       {0x5234, 0x6396},
+       {0x5235, 0x696D},
+       {0x5236, 0x8449},
+       {0x5237, 0x66F3},
+       {0x5238, 0x814B},
+       {0x5239, 0x591C},
+       {0x523A, 0x6DB2},
+       {0x523B, 0x4E00},
+       {0x523C, 0x58F9},
+       {0x523D, 0x91AB},
+       {0x523E, 0x63D6},
+       {0x523F, 0x92A5},
+       {0x5240, 0x4F9D},
+       {0x5241, 0x4F0A},
+       {0x5242, 0x8863},
+       {0x5243, 0x9824},
+       {0x5244, 0x5937},
+       {0x5245, 0x907A},
+       {0x5246, 0x79FB},
+       {0x5247, 0x5100},
+       {0x5248, 0x80F0},
+       {0x5249, 0x7591},
+       {0x524A, 0x6C82},
+       {0x524B, 0x5B9C},
+       {0x524C, 0x59E8},
+       {0x524D, 0x5F5D},
+       {0x524E, 0x6905},
+       {0x524F, 0x87FB},
+       {0x5250, 0x501A},
+       {0x5251, 0x5DF2},
+       {0x5252, 0x4E59},
+       {0x5253, 0x77E3},
+       {0x5254, 0x4EE5},
+       {0x5255, 0x85DD},
+       {0x5256, 0x6291},
+       {0x5257, 0x6613},
+       {0x5258, 0x9091},
+       {0x5259, 0x5C79},
+       {0x525A, 0x5104},
+       {0x525B, 0x5F79},
+       {0x525C, 0x81C6},
+       {0x525D, 0x9038},
+       {0x525E, 0x8084},
+       {0x525F, 0x75AB},
+       {0x5260, 0x4EA6},
+       {0x5261, 0x88D4},
+       {0x5262, 0x610F},
+       {0x5263, 0x6BC5},
+       {0x5264, 0x61B6},
+       {0x5265, 0x7FA9},
+       {0x5266, 0x76CA},
+       {0x5267, 0x6EA2},
+       {0x5268, 0x8A63},
+       {0x5269, 0x8B70},
+       {0x526A, 0x8ABC},
+       {0x526B, 0x8B6F},
+       {0x526C, 0x5F02},
+       {0x526D, 0x7FFC},
+       {0x526E, 0x7FCC},
+       {0x526F, 0x7E79},
+       {0x5270, 0x8335},
+       {0x5271, 0x852D},
+       {0x5272, 0x56E0},
+       {0x5273, 0x6BB7},
+       {0x5274, 0x97F3},
+       {0x5275, 0x9670},
+       {0x5276, 0x59FB},
+       {0x5277, 0x541F},
+       {0x5278, 0x9280},
+       {0x5279, 0x6DEB},
+       {0x527A, 0x5BC5},
+       {0x527B, 0x98F2},
+       {0x527C, 0x5C39},
+       {0x527D, 0x5F15},
+       {0x527E, 0x96B1},
+       {0x5321, 0x5370},
+       {0x5322, 0x82F1},
+       {0x5323, 0x6AFB},
+       {0x5324, 0x5B30},
+       {0x5325, 0x9DF9},
+       {0x5326, 0x61C9},
+       {0x5327, 0x7E93},
+       {0x5328, 0x7469},
+       {0x5329, 0x87A2},
+       {0x532A, 0x71DF},
+       {0x532B, 0x7192},
+       {0x532C, 0x8805},
+       {0x532D, 0x8FCE},
+       {0x532E, 0x8D0F},
+       {0x532F, 0x76C8},
+       {0x5330, 0x5F71},
+       {0x5331, 0x7A4E},
+       {0x5332, 0x786C},
+       {0x5333, 0x6620},
+       {0x5334, 0x55B2},
+       {0x5335, 0x64C1},
+       {0x5336, 0x50AD},
+       {0x5337, 0x81C3},
+       {0x5338, 0x7670},
+       {0x5339, 0x5EB8},
+       {0x533A, 0x96CD},
+       {0x533B, 0x8E34},
+       {0x533C, 0x86F9},
+       {0x533D, 0x548F},
+       {0x533E, 0x6CF3},
+       {0x533F, 0x6D8C},
+       {0x5340, 0x6C38},
+       {0x5341, 0x607F},
+       {0x5342, 0x52C7},
+       {0x5343, 0x7528},
+       {0x5344, 0x5E7D},
+       {0x5345, 0x512A},
+       {0x5346, 0x60A0},
+       {0x5347, 0x6182},
+       {0x5348, 0x5C24},
+       {0x5349, 0x7531},
+       {0x534A, 0x90F5},
+       {0x534B, 0x923E},
+       {0x534C, 0x7336},
+       {0x534D, 0x6CB9},
+       {0x534E, 0x6E38},
+       {0x534F, 0x9149},
+       {0x5350, 0x6709},
+       {0x5351, 0x53CB},
+       {0x5352, 0x53F3},
+       {0x5353, 0x4F51},
+       {0x5354, 0x91C9},
+       {0x5355, 0x8A98},
+       {0x5356, 0x53C8},
+       {0x5357, 0x5E7C},
+       {0x5358, 0x8FC2},
+       {0x5359, 0x6DE4},
+       {0x535A, 0x4E8E},
+       {0x535B, 0x76C2},
+       {0x535C, 0x6986},
+       {0x535D, 0x865E},
+       {0x535E, 0x611A},
+       {0x535F, 0x8F3F},
+       {0x5360, 0x9918},
+       {0x5361, 0x4FDE},
+       {0x5362, 0x903E},
+       {0x5363, 0x9B5A},
+       {0x5364, 0x6109},
+       {0x5365, 0x6E1D},
+       {0x5366, 0x6F01},
+       {0x5367, 0x9685},
+       {0x5368, 0x4E88},
+       {0x5369, 0x5A31},
+       {0x536A, 0x96E8},
+       {0x536B, 0x8207},
+       {0x536C, 0x5DBC},
+       {0x536D, 0x79B9},
+       {0x536E, 0x5B87},
+       {0x536F, 0x8A9E},
+       {0x5370, 0x7FBD},
+       {0x5371, 0x7389},
+       {0x5372, 0x57DF},
+       {0x5373, 0x828B},
+       {0x5374, 0x9B31},
+       {0x5375, 0x5401},
+       {0x5376, 0x9047},
+       {0x5377, 0x55BB},
+       {0x5378, 0x5CEA},
+       {0x5379, 0x5FA1},
+       {0x537A, 0x6108},
+       {0x537B, 0x6B32},
+       {0x537C, 0x7344},
+       {0x537D, 0x80B2},
+       {0x537E, 0x8B7D},
+       {0x5421, 0x6D74},
+       {0x5422, 0x5BD3},
+       {0x5423, 0x88D5},
+       {0x5424, 0x9810},
+       {0x5425, 0x8C6B},
+       {0x5426, 0x99AD},
+       {0x5427, 0x9D1B},
+       {0x5428, 0x6DF5},
+       {0x5429, 0x51A4},
+       {0x542A, 0x5143},
+       {0x542B, 0x57A3},
+       {0x542C, 0x8881},
+       {0x542D, 0x539F},
+       {0x542E, 0x63F4},
+       {0x542F, 0x8F45},
+       {0x5430, 0x5712},
+       {0x5431, 0x54E1},
+       {0x5432, 0x5713},
+       {0x5433, 0x733F},
+       {0x5434, 0x6E90},
+       {0x5435, 0x7DE3},
+       {0x5436, 0x9060},
+       {0x5437, 0x82D1},
+       {0x5438, 0x9858},
+       {0x5439, 0x6028},
+       {0x543A, 0x9662},
+       {0x543B, 0x66F0},
+       {0x543C, 0x7D04},
+       {0x543D, 0x8D8A},
+       {0x543E, 0x8E8D},
+       {0x543F, 0x9470},
+       {0x5440, 0x5CB3},
+       {0x5441, 0x7CA4},
+       {0x5442, 0x6708},
+       {0x5443, 0x60A6},
+       {0x5444, 0x95B2},
+       {0x5445, 0x8018},
+       {0x5446, 0x96F2},
+       {0x5447, 0x9116},
+       {0x5448, 0x5300},
+       {0x5449, 0x9695},
+       {0x544A, 0x5141},
+       {0x544B, 0x904B},
+       {0x544C, 0x85F4},
+       {0x544D, 0x9196},
+       {0x544E, 0x6688},
+       {0x544F, 0x97F5},
+       {0x5450, 0x5B55},
+       {0x5451, 0x531D},
+       {0x5452, 0x7838},
+       {0x5453, 0x96DC},
+       {0x5454, 0x683D},
+       {0x5455, 0x54C9},
+       {0x5456, 0x707E},
+       {0x5457, 0x5BB0},
+       {0x5458, 0x8F09},
+       {0x5459, 0x518D},
+       {0x545A, 0x5728},
+       {0x545B, 0x54B1},
+       {0x545C, 0x6522},
+       {0x545D, 0x66AB},
+       {0x545E, 0x8D0A},
+       {0x545F, 0x8D1C},
+       {0x5460, 0x81DF},
+       {0x5461, 0x846C},
+       {0x5462, 0x906D},
+       {0x5463, 0x7CDF},
+       {0x5464, 0x947F},
+       {0x5465, 0x85FB},
+       {0x5466, 0x68D7},
+       {0x5467, 0x65E9},
+       {0x5468, 0x6FA1},
+       {0x5469, 0x86A4},
+       {0x546A, 0x8E81},
+       {0x546B, 0x566A},
+       {0x546C, 0x9020},
+       {0x546D, 0x7682},
+       {0x546E, 0x7AC8},
+       {0x546F, 0x71E5},
+       {0x5470, 0x8CAC},
+       {0x5471, 0x64C7},
+       {0x5472, 0x5247},
+       {0x5473, 0x6FA4},
+       {0x5474, 0x8CCA},
+       {0x5475, 0x600E},
+       {0x5476, 0x589E},
+       {0x5477, 0x618E},
+       {0x5478, 0x66FE},
+       {0x5479, 0x8D08},
+       {0x547A, 0x624E},
+       {0x547B, 0x55B3},
+       {0x547C, 0x6E23},
+       {0x547D, 0x672D},
+       {0x547E, 0x8ECB},
+       {0x5521, 0x9358},
+       {0x5522, 0x9598},
+       {0x5523, 0x7728},
+       {0x5524, 0x6805},
+       {0x5525, 0x69A8},
+       {0x5526, 0x548B},
+       {0x5527, 0x4E4D},
+       {0x5528, 0x70B8},
+       {0x5529, 0x8A50},
+       {0x552A, 0x6458},
+       {0x552B, 0x9F4B},
+       {0x552C, 0x5B85},
+       {0x552D, 0x7A84},
+       {0x552E, 0x50B5},
+       {0x552F, 0x5BE8},
+       {0x5530, 0x77BB},
+       {0x5531, 0x6C08},
+       {0x5532, 0x8A79},
+       {0x5533, 0x7C98},
+       {0x5534, 0x6CBE},
+       {0x5535, 0x76DE},
+       {0x5536, 0x65AC},
+       {0x5537, 0x8F3E},
+       {0x5538, 0x5D84},
+       {0x5539, 0x5C55},
+       {0x553A, 0x8638},
+       {0x553B, 0x68E7},
+       {0x553C, 0x5360},
+       {0x553D, 0x6230},
+       {0x553E, 0x7AD9},
+       {0x553F, 0x6E5B},
+       {0x5540, 0x7DBB},
+       {0x5541, 0x6A1F},
+       {0x5542, 0x7AE0},
+       {0x5543, 0x5F70},
+       {0x5544, 0x6F33},
+       {0x5545, 0x5F35},
+       {0x5546, 0x638C},
+       {0x5547, 0x6F32},
+       {0x5548, 0x6756},
+       {0x5549, 0x4E08},
+       {0x554A, 0x5E33},
+       {0x554B, 0x8CEC},
+       {0x554C, 0x4ED7},
+       {0x554D, 0x8139},
+       {0x554E, 0x7634},
+       {0x554F, 0x969C},
+       {0x5550, 0x62DB},
+       {0x5551, 0x662D},
+       {0x5552, 0x627E},
+       {0x5553, 0x6CBC},
+       {0x5554, 0x8D99},
+       {0x5555, 0x7167},
+       {0x5556, 0x7F69},
+       {0x5557, 0x5146},
+       {0x5558, 0x8087},
+       {0x5559, 0x53EC},
+       {0x555A, 0x906E},
+       {0x555B, 0x6298},
+       {0x555C, 0x54F2},
+       {0x555D, 0x87C4},
+       {0x555E, 0x8F4D},
+       {0x555F, 0x8005},
+       {0x5560, 0x937A},
+       {0x5561, 0x8517},
+       {0x5562, 0x9019},
+       {0x5563, 0x6D59},
+       {0x5564, 0x73CD},
+       {0x5565, 0x659F},
+       {0x5566, 0x771F},
+       {0x5567, 0x7504},
+       {0x5568, 0x7827},
+       {0x5569, 0x81FB},
+       {0x556A, 0x8C9E},
+       {0x556B, 0x91DD},
+       {0x556C, 0x5075},
+       {0x556D, 0x6795},
+       {0x556E, 0x75B9},
+       {0x556F, 0x8A3A},
+       {0x5570, 0x9707},
+       {0x5571, 0x632F},
+       {0x5572, 0x93AE},
+       {0x5573, 0x9663},
+       {0x5574, 0x84B8},
+       {0x5575, 0x6399},
+       {0x5576, 0x775C},
+       {0x5577, 0x5F81},
+       {0x5578, 0x7319},
+       {0x5579, 0x722D},
+       {0x557A, 0x6014},
+       {0x557B, 0x6574},
+       {0x557C, 0x62EF},
+       {0x557D, 0x6B63},
+       {0x557E, 0x653F},
+       {0x5621, 0x5E40},
+       {0x5622, 0x7665},
+       {0x5623, 0x912D},
+       {0x5624, 0x8B49},
+       {0x5625, 0x829D},
+       {0x5626, 0x679D},
+       {0x5627, 0x652F},
+       {0x5628, 0x5431},
+       {0x5629, 0x8718},
+       {0x562A, 0x77E5},
+       {0x562B, 0x80A2},
+       {0x562C, 0x8102},
+       {0x562D, 0x6C41},
+       {0x562E, 0x4E4B},
+       {0x562F, 0x7E54},
+       {0x5630, 0x8077},
+       {0x5631, 0x76F4},
+       {0x5632, 0x690D},
+       {0x5633, 0x6B96},
+       {0x5634, 0x57F7},
+       {0x5635, 0x503C},
+       {0x5636, 0x4F84},
+       {0x5637, 0x5740},
+       {0x5638, 0x6307},
+       {0x5639, 0x6B62},
+       {0x563A, 0x8DBE},
+       {0x563B, 0x8879},
+       {0x563C, 0x65E8},
+       {0x563D, 0x7D19},
+       {0x563E, 0x5FD7},
+       {0x563F, 0x646F},
+       {0x5640, 0x64F2},
+       {0x5641, 0x81F3},
+       {0x5642, 0x81F4},
+       {0x5643, 0x7F6E},
+       {0x5644, 0x5E5F},
+       {0x5645, 0x5CD9},
+       {0x5646, 0x5236},
+       {0x5647, 0x667A},
+       {0x5648, 0x79E9},
+       {0x5649, 0x7A1A},
+       {0x564A, 0x8CEA},
+       {0x564B, 0x7099},
+       {0x564C, 0x75D4},
+       {0x564D, 0x6EEF},
+       {0x564E, 0x6CBB},
+       {0x564F, 0x7A92},
+       {0x5650, 0x4E2D},
+       {0x5651, 0x76C5},
+       {0x5652, 0x5FE0},
+       {0x5653, 0x9418},
+       {0x5654, 0x8877},
+       {0x5655, 0x7D42},
+       {0x5656, 0x7A2E},
+       {0x5657, 0x816B},
+       {0x5658, 0x91CD},
+       {0x5659, 0x4EF2},
+       {0x565A, 0x8846},
+       {0x565B, 0x821F},
+       {0x565C, 0x5468},
+       {0x565D, 0x5DDE},
+       {0x565E, 0x6D32},
+       {0x565F, 0x8B05},
+       {0x5660, 0x7CA5},
+       {0x5661, 0x8EF8},
+       {0x5662, 0x8098},
+       {0x5663, 0x5E1A},
+       {0x5664, 0x5492},
+       {0x5665, 0x76BA},
+       {0x5666, 0x5B99},
+       {0x5667, 0x665D},
+       {0x5668, 0x9A5F},
+       {0x5669, 0x73E0},
+       {0x566A, 0x682A},
+       {0x566B, 0x86DB},
+       {0x566C, 0x6731},
+       {0x566D, 0x732A},
+       {0x566E, 0x8AF8},
+       {0x566F, 0x8A85},
+       {0x5670, 0x9010},
+       {0x5671, 0x7AF9},
+       {0x5672, 0x71ED},
+       {0x5673, 0x716E},
+       {0x5674, 0x62C4},
+       {0x5675, 0x77DA},
+       {0x5676, 0x56D1},
+       {0x5677, 0x4E3B},
+       {0x5678, 0x8457},
+       {0x5679, 0x67F1},
+       {0x567A, 0x52A9},
+       {0x567B, 0x86C0},
+       {0x567C, 0x8CAF},
+       {0x567D, 0x9444},
+       {0x567E, 0x7BC9},
+       {0x5721, 0x4F4F},
+       {0x5722, 0x6CE8},
+       {0x5723, 0x795D},
+       {0x5724, 0x99D0},
+       {0x5725, 0x6293},
+       {0x5726, 0x722A},
+       {0x5727, 0x62FD},
+       {0x5728, 0x5C08},
+       {0x5729, 0x78DA},
+       {0x572A, 0x8F49},
+       {0x572B, 0x64B0},
+       {0x572C, 0x8CFA},
+       {0x572D, 0x7BC6},
+       {0x572E, 0x6A01},
+       {0x572F, 0x838A},
+       {0x5730, 0x88DD},
+       {0x5731, 0x599D},
+       {0x5732, 0x649E},
+       {0x5733, 0x58EF},
+       {0x5734, 0x72C0},
+       {0x5735, 0x690E},
+       {0x5736, 0x9310},
+       {0x5737, 0x8FFD},
+       {0x5738, 0x8D05},
+       {0x5739, 0x589C},
+       {0x573A, 0x7DB4},
+       {0x573B, 0x8AC4},
+       {0x573C, 0x6E96},
+       {0x573D, 0x6349},
+       {0x573E, 0x62D9},
+       {0x573F, 0x5353},
+       {0x5740, 0x684C},
+       {0x5741, 0x7422},
+       {0x5742, 0x8301},
+       {0x5743, 0x914C},
+       {0x5744, 0x5544},
+       {0x5745, 0x7740},
+       {0x5746, 0x707C},
+       {0x5747, 0x6FC1},
+       {0x5748, 0x5179},
+       {0x5749, 0x54A8},
+       {0x574A, 0x8CC7},
+       {0x574B, 0x59FF},
+       {0x574C, 0x6ECB},
+       {0x574D, 0x6DC4},
+       {0x574E, 0x5B5C},
+       {0x574F, 0x7D2B},
+       {0x5750, 0x4ED4},
+       {0x5751, 0x7C7D},
+       {0x5752, 0x6ED3},
+       {0x5753, 0x5B50},
+       {0x5754, 0x81EA},
+       {0x5755, 0x6F2C},
+       {0x5756, 0x5B57},
+       {0x5757, 0x9B03},
+       {0x5758, 0x68D5},
+       {0x5759, 0x8E2A},
+       {0x575A, 0x5B97},
+       {0x575B, 0x7D9C},
+       {0x575C, 0x7E3D},
+       {0x575D, 0x7E31},
+       {0x575E, 0x9112},
+       {0x575F, 0x8D70},
+       {0x5760, 0x594F},
+       {0x5761, 0x63CD},
+       {0x5762, 0x79DF},
+       {0x5763, 0x8DB3},
+       {0x5764, 0x5352},
+       {0x5765, 0x65CF},
+       {0x5766, 0x7956},
+       {0x5767, 0x8A5B},
+       {0x5768, 0x963B},
+       {0x5769, 0x7D44},
+       {0x576A, 0x947D},
+       {0x576B, 0x7E82},
+       {0x576C, 0x5634},
+       {0x576D, 0x9189},
+       {0x576E, 0x6700},
+       {0x576F, 0x7F6A},
+       {0x5770, 0x5C0A},
+       {0x5771, 0x9075},
+       {0x5772, 0x6628},
+       {0x5773, 0x5DE6},
+       {0x5774, 0x4F50},
+       {0x5775, 0x67DE},
+       {0x5776, 0x505A},
+       {0x5777, 0x4F5C},
+       {0x5778, 0x5750},
+       {0x5779, 0x5EA7},
+       {0x5821, 0x4E8D},
+       {0x5822, 0x4E0C},
+       {0x5823, 0x5140},
+       {0x5824, 0x4E10},
+       {0x5825, 0x5EFF},
+       {0x5826, 0x5345},
+       {0x5827, 0x4E15},
+       {0x5828, 0x4E98},
+       {0x5829, 0x4E1E},
+       {0x582A, 0x9B32},
+       {0x582B, 0x5B6C},
+       {0x582C, 0x5669},
+       {0x582D, 0x4E28},
+       {0x582E, 0x79BA},
+       {0x582F, 0x4E3F},
+       {0x5830, 0x5315},
+       {0x5831, 0x4E47},
+       {0x5832, 0x592D},
+       {0x5833, 0x723B},
+       {0x5834, 0x536E},
+       {0x5835, 0x6C10},
+       {0x5836, 0x56DF},
+       {0x5837, 0x80E4},
+       {0x5838, 0x9997},
+       {0x5839, 0x6BD3},
+       {0x583A, 0x777E},
+       {0x583B, 0x9F17},
+       {0x583C, 0x4E36},
+       {0x583D, 0x4E9F},
+       {0x583E, 0x9F10},
+       {0x583F, 0x4E5C},
+       {0x5840, 0x4E69},
+       {0x5841, 0x4E93},
+       {0x5842, 0x8288},
+       {0x5843, 0x5B5B},
+       {0x5844, 0x55C7},
+       {0x5845, 0x560F},
+       {0x5846, 0x4EC4},
+       {0x5847, 0x5399},
+       {0x5848, 0x539D},
+       {0x5849, 0x53B4},
+       {0x584A, 0x53A5},
+       {0x584B, 0x53AE},
+       {0x584C, 0x9768},
+       {0x584D, 0x8D0B},
+       {0x584E, 0x531A},
+       {0x584F, 0x53F5},
+       {0x5850, 0x532D},
+       {0x5851, 0x5331},
+       {0x5852, 0x533E},
+       {0x5853, 0x8CFE},
+       {0x5854, 0x5366},
+       {0x5855, 0x5363},
+       {0x5856, 0x5202},
+       {0x5857, 0x5208},
+       {0x5858, 0x520E},
+       {0x5859, 0x5244},
+       {0x585A, 0x5233},
+       {0x585B, 0x528C},
+       {0x585C, 0x5274},
+       {0x585D, 0x524C},
+       {0x585E, 0x525E},
+       {0x585F, 0x5261},
+       {0x5860, 0x525C},
+       {0x5861, 0x84AF},
+       {0x5862, 0x527D},
+       {0x5863, 0x5282},
+       {0x5864, 0x5281},
+       {0x5865, 0x5290},
+       {0x5866, 0x5293},
+       {0x5867, 0x5182},
+       {0x5868, 0x7F54},
+       {0x5869, 0x4EBB},
+       {0x586A, 0x4EC3},
+       {0x586B, 0x4EC9},
+       {0x586C, 0x4EC2},
+       {0x586D, 0x4EE8},
+       {0x586E, 0x4EE1},
+       {0x586F, 0x4EEB},
+       {0x5870, 0x4EDE},
+       {0x5871, 0x50B4},
+       {0x5872, 0x4EF3},
+       {0x5873, 0x4F22},
+       {0x5874, 0x4F64},
+       {0x5875, 0x4EF5},
+       {0x5876, 0x5000},
+       {0x5877, 0x5096},
+       {0x5878, 0x4F09},
+       {0x5879, 0x4F47},
+       {0x587A, 0x4F5E},
+       {0x587B, 0x4F67},
+       {0x587C, 0x6538},
+       {0x587D, 0x4F5A},
+       {0x587E, 0x4F5D},
+       {0x5921, 0x4F5F},
+       {0x5922, 0x4F57},
+       {0x5923, 0x4F32},
+       {0x5924, 0x4F3D},
+       {0x5925, 0x4F76},
+       {0x5926, 0x4F74},
+       {0x5927, 0x4F91},
+       {0x5928, 0x4F89},
+       {0x5929, 0x4F83},
+       {0x592A, 0x4F8F},
+       {0x592B, 0x4F7E},
+       {0x592C, 0x4F7B},
+       {0x592D, 0x5115},
+       {0x592E, 0x4F7C},
+       {0x592F, 0x5102},
+       {0x5930, 0x4F94},
+       {0x5931, 0x5114},
+       {0x5932, 0x513C},
+       {0x5933, 0x5137},
+       {0x5934, 0x4FC5},
+       {0x5935, 0x4FDA},
+       {0x5936, 0x4FE3},
+       {0x5937, 0x4FDC},
+       {0x5938, 0x4FD1},
+       {0x5939, 0x4FDF},
+       {0x593A, 0x4FF8},
+       {0x593B, 0x5029},
+       {0x593C, 0x504C},
+       {0x593D, 0x4FF3},
+       {0x593E, 0x502C},
+       {0x593F, 0x500F},
+       {0x5940, 0x502E},
+       {0x5941, 0x502D},
+       {0x5942, 0x4FFE},
+       {0x5943, 0x501C},
+       {0x5944, 0x500C},
+       {0x5945, 0x5025},
+       {0x5946, 0x5028},
+       {0x5947, 0x50E8},
+       {0x5948, 0x5043},
+       {0x5949, 0x5055},
+       {0x594A, 0x5048},
+       {0x594B, 0x504E},
+       {0x594C, 0x506C},
+       {0x594D, 0x50C2},
+       {0x594E, 0x513B},
+       {0x594F, 0x5110},
+       {0x5950, 0x513A},
+       {0x5951, 0x50BA},
+       {0x5952, 0x50D6},
+       {0x5953, 0x5106},
+       {0x5954, 0x50ED},
+       {0x5955, 0x50EC},
+       {0x5956, 0x50E6},
+       {0x5957, 0x50EE},
+       {0x5958, 0x5107},
+       {0x5959, 0x510B},
+       {0x595A, 0x4EDD},
+       {0x595B, 0x6C3D},
+       {0x595C, 0x4F58},
+       {0x595D, 0x50C9},
+       {0x595E, 0x4FCE},
+       {0x595F, 0x9FA0},
+       {0x5960, 0x6C46},
+       {0x5961, 0x7CF4},
+       {0x5962, 0x516E},
+       {0x5963, 0x5DFD},
+       {0x5964, 0x9ECC},
+       {0x5965, 0x9998},
+       {0x5966, 0x56C5},
+       {0x5967, 0x5914},
+       {0x5968, 0x52F9},
+       {0x5969, 0x530D},
+       {0x596A, 0x8A07},
+       {0x596B, 0x5310},
+       {0x596C, 0x9CEC},
+       {0x596D, 0x5919},
+       {0x596E, 0x5155},
+       {0x596F, 0x4EA0},
+       {0x5970, 0x5156},
+       {0x5971, 0x4EB3},
+       {0x5972, 0x886E},
+       {0x5973, 0x88A4},
+       {0x5974, 0x893B},
+       {0x5975, 0x81E0},
+       {0x5976, 0x88D2},
+       {0x5977, 0x7980},
+       {0x5978, 0x5B34},
+       {0x5979, 0x8803},
+       {0x597A, 0x7FB8},
+       {0x597B, 0x51AB},
+       {0x597C, 0x51B1},
+       {0x597D, 0x51BD},
+       {0x597E, 0x51BC},
+       {0x5A21, 0x51C7},
+       {0x5A22, 0x5196},
+       {0x5A23, 0x51A2},
+       {0x5A24, 0x51A5},
+       {0x5A25, 0x8A01},
+       {0x5A26, 0x8A10},
+       {0x5A27, 0x8A0C},
+       {0x5A28, 0x8A15},
+       {0x5A29, 0x8B33},
+       {0x5A2A, 0x8A4E},
+       {0x5A2B, 0x8A25},
+       {0x5A2C, 0x8A41},
+       {0x5A2D, 0x8A36},
+       {0x5A2E, 0x8A46},
+       {0x5A2F, 0x8A54},
+       {0x5A30, 0x8A58},
+       {0x5A31, 0x8A52},
+       {0x5A32, 0x8A86},
+       {0x5A33, 0x8A84},
+       {0x5A34, 0x8A7F},
+       {0x5A35, 0x8A70},
+       {0x5A36, 0x8A7C},
+       {0x5A37, 0x8A75},
+       {0x5A38, 0x8A6C},
+       {0x5A39, 0x8A6E},
+       {0x5A3A, 0x8ACD},
+       {0x5A3B, 0x8AE2},
+       {0x5A3C, 0x8A61},
+       {0x5A3D, 0x8A9A},
+       {0x5A3E, 0x8AA5},
+       {0x5A3F, 0x8A91},
+       {0x5A40, 0x8A92},
+       {0x5A41, 0x8ACF},
+       {0x5A42, 0x8AD1},
+       {0x5A43, 0x8AC9},
+       {0x5A44, 0x8ADB},
+       {0x5A45, 0x8AD7},
+       {0x5A46, 0x8AC2},
+       {0x5A47, 0x8AB6},
+       {0x5A48, 0x8AF6},
+       {0x5A49, 0x8AEB},
+       {0x5A4A, 0x8B14},
+       {0x5A4B, 0x8B01},
+       {0x5A4C, 0x8AE4},
+       {0x5A4D, 0x8AED},
+       {0x5A4E, 0x8AFC},
+       {0x5A4F, 0x8AF3},
+       {0x5A50, 0x8AE6},
+       {0x5A51, 0x8AEE},
+       {0x5A52, 0x8ADE},
+       {0x5A53, 0x8B28},
+       {0x5A54, 0x8B9C},
+       {0x5A55, 0x8B16},
+       {0x5A56, 0x8B1A},
+       {0x5A57, 0x8B10},
+       {0x5A58, 0x8B2B},
+       {0x5A59, 0x8B2D},
+       {0x5A5A, 0x8B56},
+       {0x5A5B, 0x8B59},
+       {0x5A5C, 0x8B4E},
+       {0x5A5D, 0x8B9E},
+       {0x5A5E, 0x8B6B},
+       {0x5A5F, 0x8B96},
+       {0x5A60, 0x5369},
+       {0x5A61, 0x537A},
+       {0x5A62, 0x961D},
+       {0x5A63, 0x9622},
+       {0x5A64, 0x9621},
+       {0x5A65, 0x9631},
+       {0x5A66, 0x962A},
+       {0x5A67, 0x963D},
+       {0x5A68, 0x963C},
+       {0x5A69, 0x9642},
+       {0x5A6A, 0x9658},
+       {0x5A6B, 0x9654},
+       {0x5A6C, 0x965F},
+       {0x5A6D, 0x9689},
+       {0x5A6E, 0x966C},
+       {0x5A6F, 0x9672},
+       {0x5A70, 0x9674},
+       {0x5A71, 0x9688},
+       {0x5A72, 0x968D},
+       {0x5A73, 0x9697},
+       {0x5A74, 0x96B0},
+       {0x5A75, 0x9097},
+       {0x5A76, 0x909B},
+       {0x5A77, 0x913A},
+       {0x5A78, 0x9099},
+       {0x5A79, 0x9114},
+       {0x5A7A, 0x90A1},
+       {0x5A7B, 0x90B4},
+       {0x5A7C, 0x90B3},
+       {0x5A7D, 0x90B6},
+       {0x5A7E, 0x9134},
+       {0x5B21, 0x90B8},
+       {0x5B22, 0x90B0},
+       {0x5B23, 0x90DF},
+       {0x5B24, 0x90C5},
+       {0x5B25, 0x90BE},
+       {0x5B26, 0x9136},
+       {0x5B27, 0x90C4},
+       {0x5B28, 0x90C7},
+       {0x5B29, 0x9106},
+       {0x5B2A, 0x9148},
+       {0x5B2B, 0x90E2},
+       {0x5B2C, 0x90DC},
+       {0x5B2D, 0x90D7},
+       {0x5B2E, 0x90DB},
+       {0x5B2F, 0x90EB},
+       {0x5B30, 0x90EF},
+       {0x5B31, 0x90FE},
+       {0x5B32, 0x9104},
+       {0x5B33, 0x9122},
+       {0x5B34, 0x911E},
+       {0x5B35, 0x9123},
+       {0x5B36, 0x9131},
+       {0x5B37, 0x912F},
+       {0x5B38, 0x9139},
+       {0x5B39, 0x9143},
+       {0x5B3A, 0x9146},
+       {0x5B3B, 0x82BB},
+       {0x5B3C, 0x5950},
+       {0x5B3D, 0x52F1},
+       {0x5B3E, 0x52AC},
+       {0x5B3F, 0x52AD},
+       {0x5B40, 0x52BE},
+       {0x5B41, 0x54FF},
+       {0x5B42, 0x52D0},
+       {0x5B43, 0x52D6},
+       {0x5B44, 0x52F0},
+       {0x5B45, 0x53DF},
+       {0x5B46, 0x71EE},
+       {0x5B47, 0x77CD},
+       {0x5B48, 0x5EF4},
+       {0x5B49, 0x51F5},
+       {0x5B4A, 0x51FC},
+       {0x5B4B, 0x9B2F},
+       {0x5B4C, 0x53B6},
+       {0x5B4D, 0x5F01},
+       {0x5B4E, 0x755A},
+       {0x5B4F, 0x5DF0},
+       {0x5B50, 0x574C},
+       {0x5B51, 0x580A},
+       {0x5B52, 0x57A1},
+       {0x5B53, 0x587E},
+       {0x5B54, 0x58BC},
+       {0x5B55, 0x58C5},
+       {0x5B56, 0x58D1},
+       {0x5B57, 0x5729},
+       {0x5B58, 0x572C},
+       {0x5B59, 0x572A},
+       {0x5B5A, 0x5733},
+       {0x5B5B, 0x58D9},
+       {0x5B5C, 0x572E},
+       {0x5B5D, 0x572F},
+       {0x5B5E, 0x58E2},
+       {0x5B5F, 0x573B},
+       {0x5B60, 0x5742},
+       {0x5B61, 0x5769},
+       {0x5B62, 0x58E0},
+       {0x5B63, 0x576B},
+       {0x5B64, 0x58DA},
+       {0x5B65, 0x577C},
+       {0x5B66, 0x577B},
+       {0x5B67, 0x5768},
+       {0x5B68, 0x576D},
+       {0x5B69, 0x5776},
+       {0x5B6A, 0x5773},
+       {0x5B6B, 0x57E1},
+       {0x5B6C, 0x57A4},
+       {0x5B6D, 0x578C},
+       {0x5B6E, 0x584F},
+       {0x5B6F, 0x57CF},
+       {0x5B70, 0x57A7},
+       {0x5B71, 0x5816},
+       {0x5B72, 0x5793},
+       {0x5B73, 0x57A0},
+       {0x5B74, 0x57D5},
+       {0x5B75, 0x5852},
+       {0x5B76, 0x581D},
+       {0x5B77, 0x5864},
+       {0x5B78, 0x57D2},
+       {0x5B79, 0x57B8},
+       {0x5B7A, 0x57F4},
+       {0x5B7B, 0x57EF},
+       {0x5B7C, 0x57F8},
+       {0x5B7D, 0x57E4},
+       {0x5B7E, 0x57DD},
+       {0x5C21, 0x580B},
+       {0x5C22, 0x580D},
+       {0x5C23, 0x57FD},
+       {0x5C24, 0x57ED},
+       {0x5C25, 0x5800},
+       {0x5C26, 0x581E},
+       {0x5C27, 0x5819},
+       {0x5C28, 0x5844},
+       {0x5C29, 0x5820},
+       {0x5C2A, 0x5865},
+       {0x5C2B, 0x586C},
+       {0x5C2C, 0x5881},
+       {0x5C2D, 0x5889},
+       {0x5C2E, 0x589A},
+       {0x5C2F, 0x5880},
+       {0x5C30, 0x99A8},
+       {0x5C31, 0x9F19},
+       {0x5C32, 0x61FF},
+       {0x5C33, 0x8279},
+       {0x5C34, 0x827D},
+       {0x5C35, 0x827F},
+       {0x5C36, 0x828F},
+       {0x5C37, 0x828A},
+       {0x5C38, 0x82A8},
+       {0x5C39, 0x8284},
+       {0x5C3A, 0x828E},
+       {0x5C3B, 0x8291},
+       {0x5C3C, 0x858C},
+       {0x5C3D, 0x8299},
+       {0x5C3E, 0x82AB},
+       {0x5C3F, 0x8553},
+       {0x5C40, 0x82BE},
+       {0x5C41, 0x82B0},
+       {0x5C42, 0x85F6},
+       {0x5C43, 0x82CA},
+       {0x5C44, 0x82E3},
+       {0x5C45, 0x8298},
+       {0x5C46, 0x82B7},
+       {0x5C47, 0x82AE},
+       {0x5C48, 0x83A7},
+       {0x5C49, 0x8407},
+       {0x5C4A, 0x84EF},
+       {0x5C4B, 0x82A9},
+       {0x5C4C, 0x82B4},
+       {0x5C4D, 0x82A1},
+       {0x5C4E, 0x82AA},
+       {0x5C4F, 0x829F},
+       {0x5C50, 0x82C4},
+       {0x5C51, 0x82E7},
+       {0x5C52, 0x82A4},
+       {0x5C53, 0x82E1},
+       {0x5C54, 0x8309},
+       {0x5C55, 0x82F7},
+       {0x5C56, 0x82E4},
+       {0x5C57, 0x8622},
+       {0x5C58, 0x8307},
+       {0x5C59, 0x82DC},
+       {0x5C5A, 0x82F4},
+       {0x5C5B, 0x82D2},
+       {0x5C5C, 0x82D8},
+       {0x5C5D, 0x830C},
+       {0x5C5E, 0x82FB},
+       {0x5C5F, 0x82D3},
+       {0x5C60, 0x8526},
+       {0x5C61, 0x831A},
+       {0x5C62, 0x8306},
+       {0x5C63, 0x584B},
+       {0x5C64, 0x7162},
+       {0x5C65, 0x82E0},
+       {0x5C66, 0x82D5},
+       {0x5C67, 0x831C},
+       {0x5C68, 0x8351},
+       {0x5C69, 0x8558},
+       {0x5C6A, 0x84FD},
+       {0x5C6B, 0x8308},
+       {0x5C6C, 0x8392},
+       {0x5C6D, 0x833C},
+       {0x5C6E, 0x8334},
+       {0x5C6F, 0x8331},
+       {0x5C70, 0x839B},
+       {0x5C71, 0x854E},
+       {0x5C72, 0x832F},
+       {0x5C73, 0x834F},
+       {0x5C74, 0x8347},
+       {0x5C75, 0x8343},
+       {0x5C76, 0x8588},
+       {0x5C77, 0x8340},
+       {0x5C78, 0x8317},
+       {0x5C79, 0x85BA},
+       {0x5C7A, 0x832D},
+       {0x5C7B, 0x833A},
+       {0x5C7C, 0x8333},
+       {0x5C7D, 0x7296},
+       {0x5C7E, 0x6ECE},
+       {0x5D21, 0x8541},
+       {0x5D22, 0x831B},
+       {0x5D23, 0x85CE},
+       {0x5D24, 0x8552},
+       {0x5D25, 0x84C0},
+       {0x5D26, 0x8452},
+       {0x5D27, 0x8464},
+       {0x5D28, 0x83B0},
+       {0x5D29, 0x8378},
+       {0x5D2A, 0x8494},
+       {0x5D2B, 0x8435},
+       {0x5D2C, 0x83A0},
+       {0x5D2D, 0x83AA},
+       {0x5D2E, 0x8393},
+       {0x5D2F, 0x839C},
+       {0x5D30, 0x8385},
+       {0x5D31, 0x837C},
+       {0x5D32, 0x859F},
+       {0x5D33, 0x83A9},
+       {0x5D34, 0x837D},
+       {0x5D35, 0x8555},
+       {0x5D36, 0x837B},
+       {0x5D37, 0x8398},
+       {0x5D38, 0x839E},
+       {0x5D39, 0x83A8},
+       {0x5D3A, 0x9DAF},
+       {0x5D3B, 0x8493},
+       {0x5D3C, 0x83C1},
+       {0x5D3D, 0x8401},
+       {0x5D3E, 0x83E5},
+       {0x5D3F, 0x83D8},
+       {0x5D40, 0x5807},
+       {0x5D41, 0x8418},
+       {0x5D42, 0x840B},
+       {0x5D43, 0x83DD},
+       {0x5D44, 0x83FD},
+       {0x5D45, 0x83D6},
+       {0x5D46, 0x841C},
+       {0x5D47, 0x8438},
+       {0x5D48, 0x8411},
+       {0x5D49, 0x8406},
+       {0x5D4A, 0x83D4},
+       {0x5D4B, 0x83DF},
+       {0x5D4C, 0x840F},
+       {0x5D4D, 0x8403},
+       {0x5D4E, 0x83F8},
+       {0x5D4F, 0x83F9},
+       {0x5D50, 0x83EA},
+       {0x5D51, 0x83C5},
+       {0x5D52, 0x83C0},
+       {0x5D53, 0x7E08},
+       {0x5D54, 0x83F0},
+       {0x5D55, 0x83E1},
+       {0x5D56, 0x845C},
+       {0x5D57, 0x8451},
+       {0x5D58, 0x845A},
+       {0x5D59, 0x8459},
+       {0x5D5A, 0x8473},
+       {0x5D5B, 0x8546},
+       {0x5D5C, 0x8488},
+       {0x5D5D, 0x847A},
+       {0x5D5E, 0x8562},
+       {0x5D5F, 0x8478},
+       {0x5D60, 0x843C},
+       {0x5D61, 0x8446},
+       {0x5D62, 0x8469},
+       {0x5D63, 0x8476},
+       {0x5D64, 0x851E},
+       {0x5D65, 0x848E},
+       {0x5D66, 0x8431},
+       {0x5D67, 0x846D},
+       {0x5D68, 0x84C1},
+       {0x5D69, 0x84CD},
+       {0x5D6A, 0x84D0},
+       {0x5D6B, 0x9A40},
+       {0x5D6C, 0x84BD},
+       {0x5D6D, 0x84D3},
+       {0x5D6E, 0x84CA},
+       {0x5D6F, 0x84BF},
+       {0x5D70, 0x84BA},
+       {0x5D71, 0x863A},
+       {0x5D72, 0x84A1},
+       {0x5D73, 0x84B9},
+       {0x5D74, 0x84B4},
+       {0x5D75, 0x8497},
+       {0x5D76, 0x93A3},
+       {0x5D77, 0x8577},
+       {0x5D78, 0x850C},
+       {0x5D79, 0x750D},
+       {0x5D7A, 0x8538},
+       {0x5D7B, 0x84F0},
+       {0x5D7C, 0x861E},
+       {0x5D7D, 0x851F},
+       {0x5D7E, 0x85FA},
+       {0x5E21, 0x8556},
+       {0x5E22, 0x853B},
+       {0x5E23, 0x84FF},
+       {0x5E24, 0x84FC},
+       {0x5E25, 0x8559},
+       {0x5E26, 0x8548},
+       {0x5E27, 0x8568},
+       {0x5E28, 0x8564},
+       {0x5E29, 0x855E},
+       {0x5E2A, 0x857A},
+       {0x5E2B, 0x77A2},
+       {0x5E2C, 0x8543},
+       {0x5E2D, 0x8604},
+       {0x5E2E, 0x857B},
+       {0x5E2F, 0x85A4},
+       {0x5E30, 0x85A8},
+       {0x5E31, 0x8587},
+       {0x5E32, 0x858F},
+       {0x5E33, 0x8579},
+       {0x5E34, 0x85EA},
+       {0x5E35, 0x859C},
+       {0x5E36, 0x8585},
+       {0x5E37, 0x85B9},
+       {0x5E38, 0x85B7},
+       {0x5E39, 0x85B0},
+       {0x5E3A, 0x861A},
+       {0x5E3B, 0x85C1},
+       {0x5E3C, 0x85DC},
+       {0x5E3D, 0x85FF},
+       {0x5E3E, 0x8627},
+       {0x5E3F, 0x8605},
+       {0x5E40, 0x8629},
+       {0x5E41, 0x8616},
+       {0x5E42, 0x863C},
+       {0x5E43, 0x5EFE},
+       {0x5E44, 0x5F08},
+       {0x5E45, 0x593C},
+       {0x5E46, 0x5969},
+       {0x5E47, 0x8037},
+       {0x5E48, 0x5955},
+       {0x5E49, 0x595A},
+       {0x5E4A, 0x5958},
+       {0x5E4B, 0x530F},
+       {0x5E4C, 0x5C22},
+       {0x5E4D, 0x5C25},
+       {0x5E4E, 0x5C2C},
+       {0x5E4F, 0x5C37},
+       {0x5E50, 0x624C},
+       {0x5E51, 0x636B},
+       {0x5E52, 0x6476},
+       {0x5E53, 0x62BB},
+       {0x5E54, 0x62CA},
+       {0x5E55, 0x62DA},
+       {0x5E56, 0x62D7},
+       {0x5E57, 0x62EE},
+       {0x5E58, 0x649F},
+       {0x5E59, 0x62F6},
+       {0x5E5A, 0x6339},
+       {0x5E5B, 0x634B},
+       {0x5E5C, 0x6343},
+       {0x5E5D, 0x63AD},
+       {0x5E5E, 0x63F6},
+       {0x5E5F, 0x6371},
+       {0x5E60, 0x637A},
+       {0x5E61, 0x638E},
+       {0x5E62, 0x6451},
+       {0x5E63, 0x636D},
+       {0x5E64, 0x63AC},
+       {0x5E65, 0x638A},
+       {0x5E66, 0x6369},
+       {0x5E67, 0x63AE},
+       {0x5E68, 0x645C},
+       {0x5E69, 0x63F2},
+       {0x5E6A, 0x63F8},
+       {0x5E6B, 0x63E0},
+       {0x5E6C, 0x64B3},
+       {0x5E6D, 0x63C4},
+       {0x5E6E, 0x63DE},
+       {0x5E6F, 0x63CE},
+       {0x5E70, 0x6452},
+       {0x5E71, 0x63C6},
+       {0x5E72, 0x63BE},
+       {0x5E73, 0x6504},
+       {0x5E74, 0x6441},
+       {0x5E75, 0x640B},
+       {0x5E76, 0x641B},
+       {0x5E77, 0x6420},
+       {0x5E78, 0x640C},
+       {0x5E79, 0x6426},
+       {0x5E7A, 0x6421},
+       {0x5E7B, 0x645E},
+       {0x5E7C, 0x6516},
+       {0x5E7D, 0x646D},
+       {0x5E7E, 0x6496},
+       {0x5F21, 0x647A},
+       {0x5F22, 0x64F7},
+       {0x5F23, 0x64FC},
+       {0x5F24, 0x6499},
+       {0x5F25, 0x651B},
+       {0x5F26, 0x64C0},
+       {0x5F27, 0x64D0},
+       {0x5F28, 0x64D7},
+       {0x5F29, 0x64E4},
+       {0x5F2A, 0x64E2},
+       {0x5F2B, 0x6509},
+       {0x5F2C, 0x6525},
+       {0x5F2D, 0x652E},
+       {0x5F2E, 0x5F0B},
+       {0x5F2F, 0x5FD2},
+       {0x5F30, 0x7519},
+       {0x5F31, 0x5F11},
+       {0x5F32, 0x535F},
+       {0x5F33, 0x53F1},
+       {0x5F34, 0x5630},
+       {0x5F35, 0x53E9},
+       {0x5F36, 0x53E8},
+       {0x5F37, 0x53FB},
+       {0x5F38, 0x5412},
+       {0x5F39, 0x5416},
+       {0x5F3A, 0x5406},
+       {0x5F3B, 0x544B},
+       {0x5F3C, 0x5638},
+       {0x5F3D, 0x56C8},
+       {0x5F3E, 0x5454},
+       {0x5F3F, 0x56A6},
+       {0x5F40, 0x5443},
+       {0x5F41, 0x5421},
+       {0x5F42, 0x5504},
+       {0x5F43, 0x54BC},
+       {0x5F44, 0x5423},
+       {0x5F45, 0x5432},
+       {0x5F46, 0x5482},
+       {0x5F47, 0x5494},
+       {0x5F48, 0x5477},
+       {0x5F49, 0x5471},
+       {0x5F4A, 0x5464},
+       {0x5F4B, 0x549A},
+       {0x5F4C, 0x5680},
+       {0x5F4D, 0x5484},
+       {0x5F4E, 0x5476},
+       {0x5F4F, 0x5466},
+       {0x5F50, 0x565D},
+       {0x5F51, 0x54D0},
+       {0x5F52, 0x54AD},
+       {0x5F53, 0x54C2},
+       {0x5F54, 0x54B4},
+       {0x5F55, 0x5660},
+       {0x5F56, 0x54A7},
+       {0x5F57, 0x54A6},
+       {0x5F58, 0x5635},
+       {0x5F59, 0x55F6},
+       {0x5F5A, 0x5472},
+       {0x5F5B, 0x54A3},
+       {0x5F5C, 0x5666},
+       {0x5F5D, 0x54BB},
+       {0x5F5E, 0x54BF},
+       {0x5F5F, 0x54CC},
+       {0x5F60, 0x5672},
+       {0x5F61, 0x54DA},
+       {0x5F62, 0x568C},
+       {0x5F63, 0x54A9},
+       {0x5F64, 0x54AA},
+       {0x5F65, 0x54A4},
+       {0x5F66, 0x5665},
+       {0x5F67, 0x54CF},
+       {0x5F68, 0x54DE},
+       {0x5F69, 0x561C},
+       {0x5F6A, 0x54E7},
+       {0x5F6B, 0x562E},
+       {0x5F6C, 0x54FD},
+       {0x5F6D, 0x5514},
+       {0x5F6E, 0x54F3},
+       {0x5F6F, 0x55E9},
+       {0x5F70, 0x5523},
+       {0x5F71, 0x550F},
+       {0x5F72, 0x5511},
+       {0x5F73, 0x5527},
+       {0x5F74, 0x552A},
+       {0x5F75, 0x5616},
+       {0x5F76, 0x558F},
+       {0x5F77, 0x55B5},
+       {0x5F78, 0x5549},
+       {0x5F79, 0x56C0},
+       {0x5F7A, 0x5541},
+       {0x5F7B, 0x5555},
+       {0x5F7C, 0x553F},
+       {0x5F7D, 0x5550},
+       {0x5F7E, 0x553C},
+       {0x6021, 0x5537},
+       {0x6022, 0x5556},
+       {0x6023, 0x5575},
+       {0x6024, 0x5576},
+       {0x6025, 0x5577},
+       {0x6026, 0x5533},
+       {0x6027, 0x5530},
+       {0x6028, 0x555C},
+       {0x6029, 0x558B},
+       {0x602A, 0x55D2},
+       {0x602B, 0x5583},
+       {0x602C, 0x55B1},
+       {0x602D, 0x55B9},
+       {0x602E, 0x5588},
+       {0x602F, 0x5581},
+       {0x6030, 0x559F},
+       {0x6031, 0x557E},
+       {0x6032, 0x55D6},
+       {0x6033, 0x5591},
+       {0x6034, 0x557B},
+       {0x6035, 0x55DF},
+       {0x6036, 0x560D},
+       {0x6037, 0x56B3},
+       {0x6038, 0x5594},
+       {0x6039, 0x5599},
+       {0x603A, 0x55EA},
+       {0x603B, 0x55F7},
+       {0x603C, 0x55C9},
+       {0x603D, 0x561F},
+       {0x603E, 0x55D1},
+       {0x603F, 0x56C1},
+       {0x6040, 0x55EC},
+       {0x6041, 0x55D4},
+       {0x6042, 0x55E6},
+       {0x6043, 0x55DD},
+       {0x6044, 0x55C4},
+       {0x6045, 0x55EF},
+       {0x6046, 0x55E5},
+       {0x6047, 0x55F2},
+       {0x6048, 0x566F},
+       {0x6049, 0x55CC},
+       {0x604A, 0x55CD},
+       {0x604B, 0x55E8},
+       {0x604C, 0x55F5},
+       {0x604D, 0x55E4},
+       {0x604E, 0x8F61},
+       {0x604F, 0x561E},
+       {0x6050, 0x5608},
+       {0x6051, 0x560C},
+       {0x6052, 0x5601},
+       {0x6053, 0x56B6},
+       {0x6054, 0x5623},
+       {0x6055, 0x55FE},
+       {0x6056, 0x5600},
+       {0x6057, 0x5627},
+       {0x6058, 0x562D},
+       {0x6059, 0x5658},
+       {0x605A, 0x5639},
+       {0x605B, 0x5657},
+       {0x605C, 0x562C},
+       {0x605D, 0x564D},
+       {0x605E, 0x5662},
+       {0x605F, 0x5659},
+       {0x6060, 0x5695},
+       {0x6061, 0x564C},
+       {0x6062, 0x5654},
+       {0x6063, 0x5686},
+       {0x6064, 0x5664},
+       {0x6065, 0x5671},
+       {0x6066, 0x566B},
+       {0x6067, 0x567B},
+       {0x6068, 0x567C},
+       {0x6069, 0x5685},
+       {0x606A, 0x5693},
+       {0x606B, 0x56AF},
+       {0x606C, 0x56D4},
+       {0x606D, 0x56D7},
+       {0x606E, 0x56DD},
+       {0x606F, 0x56E1},
+       {0x6070, 0x5707},
+       {0x6071, 0x56EB},
+       {0x6072, 0x56F9},
+       {0x6073, 0x56FF},
+       {0x6074, 0x5704},
+       {0x6075, 0x570A},
+       {0x6076, 0x5709},
+       {0x6077, 0x571C},
+       {0x6078, 0x5E43},
+       {0x6079, 0x5E19},
+       {0x607A, 0x5E14},
+       {0x607B, 0x5E11},
+       {0x607C, 0x5E6C},
+       {0x607D, 0x5E58},
+       {0x607E, 0x5E57},
+       {0x6121, 0x5E37},
+       {0x6122, 0x5E44},
+       {0x6123, 0x5E54},
+       {0x6124, 0x5E5B},
+       {0x6125, 0x5E5E},
+       {0x6126, 0x5E61},
+       {0x6127, 0x5C8C},
+       {0x6128, 0x5C7A},
+       {0x6129, 0x5C8D},
+       {0x612A, 0x5C90},
+       {0x612B, 0x5D87},
+       {0x612C, 0x5C88},
+       {0x612D, 0x5CF4},
+       {0x612E, 0x5C99},
+       {0x612F, 0x5C91},
+       {0x6130, 0x5D50},
+       {0x6131, 0x5C9C},
+       {0x6132, 0x5CB5},
+       {0x6133, 0x5CA2},
+       {0x6134, 0x5D2C},
+       {0x6135, 0x5CAC},
+       {0x6136, 0x5CAB},
+       {0x6137, 0x5CB1},
+       {0x6138, 0x5CA3},
+       {0x6139, 0x5CC1},
+       {0x613A, 0x5CB7},
+       {0x613B, 0x5DA7},
+       {0x613C, 0x5CD2},
+       {0x613D, 0x5DA0},
+       {0x613E, 0x5CCB},
+       {0x613F, 0x5D22},
+       {0x6140, 0x5D97},
+       {0x6141, 0x5D0D},
+       {0x6142, 0x5D27},
+       {0x6143, 0x5D26},
+       {0x6144, 0x5D2E},
+       {0x6145, 0x5D24},
+       {0x6146, 0x5D1E},
+       {0x6147, 0x5D06},
+       {0x6148, 0x5D1B},
+       {0x6149, 0x5DB8},
+       {0x614A, 0x5D3E},
+       {0x614B, 0x5D34},
+       {0x614C, 0x5D3D},
+       {0x614D, 0x5D6C},
+       {0x614E, 0x5D5B},
+       {0x614F, 0x5D6F},
+       {0x6150, 0x5D81},
+       {0x6151, 0x5D6B},
+       {0x6152, 0x5D4B},
+       {0x6153, 0x5D4A},
+       {0x6154, 0x5D69},
+       {0x6155, 0x5D74},
+       {0x6156, 0x5D82},
+       {0x6157, 0x5D99},
+       {0x6158, 0x5D9D},
+       {0x6159, 0x8C73},
+       {0x615A, 0x5DB7},
+       {0x615B, 0x5DD4},
+       {0x615C, 0x5F73},
+       {0x615D, 0x5F77},
+       {0x615E, 0x5F82},
+       {0x615F, 0x5F87},
+       {0x6160, 0x5F89},
+       {0x6161, 0x540E},
+       {0x6162, 0x5FA0},
+       {0x6163, 0x5F99},
+       {0x6164, 0x5F9C},
+       {0x6165, 0x5FA8},
+       {0x6166, 0x5FAD},
+       {0x6167, 0x5FB5},
+       {0x6168, 0x5FBC},
+       {0x6169, 0x8862},
+       {0x616A, 0x5F61},
+       {0x616B, 0x72AD},
+       {0x616C, 0x72B0},
+       {0x616D, 0x72B4},
+       {0x616E, 0x7377},
+       {0x616F, 0x7341},
+       {0x6170, 0x72C3},
+       {0x6171, 0x72C1},
+       {0x6172, 0x72CE},
+       {0x6173, 0x72CD},
+       {0x6174, 0x72D2},
+       {0x6175, 0x72E8},
+       {0x6176, 0x736A},
+       {0x6177, 0x72E9},
+       {0x6178, 0x733B},
+       {0x6179, 0x72F4},
+       {0x617A, 0x72F7},
+       {0x617B, 0x7301},
+       {0x617C, 0x72F3},
+       {0x617D, 0x736B},
+       {0x617E, 0x72FA},
+       {0x6221, 0x72FB},
+       {0x6222, 0x7317},
+       {0x6223, 0x7313},
+       {0x6224, 0x7380},
+       {0x6225, 0x730A},
+       {0x6226, 0x731E},
+       {0x6227, 0x731D},
+       {0x6228, 0x737C},
+       {0x6229, 0x7322},
+       {0x622A, 0x7339},
+       {0x622B, 0x7325},
+       {0x622C, 0x732C},
+       {0x622D, 0x7338},
+       {0x622E, 0x7331},
+       {0x622F, 0x7350},
+       {0x6230, 0x734D},
+       {0x6231, 0x7357},
+       {0x6232, 0x7360},
+       {0x6233, 0x736C},
+       {0x6234, 0x736F},
+       {0x6235, 0x737E},
+       {0x6236, 0x821B},
+       {0x6237, 0x5925},
+       {0x6238, 0x98E7},
+       {0x6239, 0x5924},
+       {0x623A, 0x5902},
+       {0x623B, 0x98E0},
+       {0x623C, 0x9933},
+       {0x623D, 0x98E9},
+       {0x623E, 0x993C},
+       {0x623F, 0x98EA},
+       {0x6240, 0x98EB},
+       {0x6241, 0x98ED},
+       {0x6242, 0x98F4},
+       {0x6243, 0x9909},
+       {0x6244, 0x9911},
+       {0x6245, 0x4F59},
+       {0x6246, 0x991B},
+       {0x6247, 0x9937},
+       {0x6248, 0x993F},
+       {0x6249, 0x9943},
+       {0x624A, 0x9948},
+       {0x624B, 0x9949},
+       {0x624C, 0x994A},
+       {0x624D, 0x994C},
+       {0x624E, 0x9962},
+       {0x624F, 0x5E80},
+       {0x6250, 0x5EE1},
+       {0x6251, 0x5E8B},
+       {0x6252, 0x5E96},
+       {0x6253, 0x5EA5},
+       {0x6254, 0x5EA0},
+       {0x6255, 0x5EB9},
+       {0x6256, 0x5EB5},
+       {0x6257, 0x5EBE},
+       {0x6258, 0x5EB3},
+       {0x6259, 0x8CE1},
+       {0x625A, 0x5ED2},
+       {0x625B, 0x5ED1},
+       {0x625C, 0x5EDB},
+       {0x625D, 0x5EE8},
+       {0x625E, 0x5EEA},
+       {0x625F, 0x81BA},
+       {0x6260, 0x5FC4},
+       {0x6261, 0x5FC9},
+       {0x6262, 0x5FD6},
+       {0x6263, 0x61FA},
+       {0x6264, 0x61AE},
+       {0x6265, 0x5FEE},
+       {0x6266, 0x616A},
+       {0x6267, 0x5FE1},
+       {0x6268, 0x5FE4},
+       {0x6269, 0x613E},
+       {0x626A, 0x60B5},
+       {0x626B, 0x6134},
+       {0x626C, 0x5FEA},
+       {0x626D, 0x5FED},
+       {0x626E, 0x5FF8},
+       {0x626F, 0x6019},
+       {0x6270, 0x6035},
+       {0x6271, 0x6026},
+       {0x6272, 0x601B},
+       {0x6273, 0x600F},
+       {0x6274, 0x600D},
+       {0x6275, 0x6029},
+       {0x6276, 0x602B},
+       {0x6277, 0x600A},
+       {0x6278, 0x61CC},
+       {0x6279, 0x6021},
+       {0x627A, 0x615F},
+       {0x627B, 0x61E8},
+       {0x627C, 0x60FB},
+       {0x627D, 0x6137},
+       {0x627E, 0x6042},
+       {0x6321, 0x606A},
+       {0x6322, 0x60F2},
+       {0x6323, 0x6096},
+       {0x6324, 0x609A},
+       {0x6325, 0x6173},
+       {0x6326, 0x609D},
+       {0x6327, 0x6083},
+       {0x6328, 0x6092},
+       {0x6329, 0x608C},
+       {0x632A, 0x609B},
+       {0x632B, 0x611C},
+       {0x632C, 0x60BB},
+       {0x632D, 0x60B1},
+       {0x632E, 0x60DD},
+       {0x632F, 0x60D8},
+       {0x6330, 0x60C6},
+       {0x6331, 0x60DA},
+       {0x6332, 0x60B4},
+       {0x6333, 0x6120},
+       {0x6334, 0x6192},
+       {0x6335, 0x6115},
+       {0x6336, 0x6123},
+       {0x6337, 0x60F4},
+       {0x6338, 0x6100},
+       {0x6339, 0x610E},
+       {0x633A, 0x612B},
+       {0x633B, 0x614A},
+       {0x633C, 0x6175},
+       {0x633D, 0x61AC},
+       {0x633E, 0x6194},
+       {0x633F, 0x61A7},
+       {0x6340, 0x61B7},
+       {0x6341, 0x61D4},
+       {0x6342, 0x61F5},
+       {0x6343, 0x5FDD},
+       {0x6344, 0x96B3},
+       {0x6345, 0x9582},
+       {0x6346, 0x9586},
+       {0x6347, 0x95C8},
+       {0x6348, 0x958E},
+       {0x6349, 0x9594},
+       {0x634A, 0x958C},
+       {0x634B, 0x95E5},
+       {0x634C, 0x95AD},
+       {0x634D, 0x95AB},
+       {0x634E, 0x9B2E},
+       {0x634F, 0x95AC},
+       {0x6350, 0x95BE},
+       {0x6351, 0x95B6},
+       {0x6352, 0x9B29},
+       {0x6353, 0x95BF},
+       {0x6354, 0x95BD},
+       {0x6355, 0x95BC},
+       {0x6356, 0x95C3},
+       {0x6357, 0x95CB},
+       {0x6358, 0x95D4},
+       {0x6359, 0x95D0},
+       {0x635A, 0x95D5},
+       {0x635B, 0x95DE},
+       {0x635C, 0x4E2C},
+       {0x635D, 0x723F},
+       {0x635E, 0x6215},
+       {0x635F, 0x6C35},
+       {0x6360, 0x6C54},
+       {0x6361, 0x6C5C},
+       {0x6362, 0x6C4A},
+       {0x6363, 0x7043},
+       {0x6364, 0x6C85},
+       {0x6365, 0x6C90},
+       {0x6366, 0x6C94},
+       {0x6367, 0x6C8C},
+       {0x6368, 0x6C68},
+       {0x6369, 0x6C69},
+       {0x636A, 0x6C74},
+       {0x636B, 0x6C76},
+       {0x636C, 0x6C86},
+       {0x636D, 0x6F59},
+       {0x636E, 0x6CD0},
+       {0x636F, 0x6CD4},
+       {0x6370, 0x6CAD},
+       {0x6371, 0x7027},
+       {0x6372, 0x7018},
+       {0x6373, 0x6CF1},
+       {0x6374, 0x6CD7},
+       {0x6375, 0x6CB2},
+       {0x6376, 0x6CE0},
+       {0x6377, 0x6CD6},
+       {0x6378, 0x6FFC},
+       {0x6379, 0x6CEB},
+       {0x637A, 0x6CEE},
+       {0x637B, 0x6CB1},
+       {0x637C, 0x6CD3},
+       {0x637D, 0x6CEF},
+       {0x637E, 0x6D87},
+       {0x6421, 0x6D39},
+       {0x6422, 0x6D27},
+       {0x6423, 0x6D0C},
+       {0x6424, 0x6D79},
+       {0x6425, 0x6E5E},
+       {0x6426, 0x6D07},
+       {0x6427, 0x6D04},
+       {0x6428, 0x6D19},
+       {0x6429, 0x6D0E},
+       {0x642A, 0x6D2B},
+       {0x642B, 0x6FAE},
+       {0x642C, 0x6D2E},
+       {0x642D, 0x6D35},
+       {0x642E, 0x6D1A},
+       {0x642F, 0x700F},
+       {0x6430, 0x6EF8},
+       {0x6431, 0x6F6F},
+       {0x6432, 0x6D33},
+       {0x6433, 0x6D91},
+       {0x6434, 0x6D6F},
+       {0x6435, 0x6DF6},
+       {0x6436, 0x6F7F},
+       {0x6437, 0x6D5E},
+       {0x6438, 0x6D93},
+       {0x6439, 0x6D94},
+       {0x643A, 0x6D5C},
+       {0x643B, 0x6D60},
+       {0x643C, 0x6D7C},
+       {0x643D, 0x6D63},
+       {0x643E, 0x6E1A},
+       {0x643F, 0x6DC7},
+       {0x6440, 0x6DC5},
+       {0x6441, 0x6DDE},
+       {0x6442, 0x7006},
+       {0x6443, 0x6DBF},
+       {0x6444, 0x6DE0},
+       {0x6445, 0x6FA0},
+       {0x6446, 0x6DE6},
+       {0x6447, 0x6DDD},
+       {0x6448, 0x6DD9},
+       {0x6449, 0x700B},
+       {0x644A, 0x6DAB},
+       {0x644B, 0x6E0C},
+       {0x644C, 0x6DAE},
+       {0x644D, 0x6E2B},
+       {0x644E, 0x6E6E},
+       {0x644F, 0x6E4E},
+       {0x6450, 0x6E6B},
+       {0x6451, 0x6EB2},
+       {0x6452, 0x6E5F},
+       {0x6453, 0x6E86},
+       {0x6454, 0x6E53},
+       {0x6455, 0x6E54},
+       {0x6456, 0x6E32},
+       {0x6457, 0x6E25},
+       {0x6458, 0x6E44},
+       {0x6459, 0x7067},
+       {0x645A, 0x6EB1},
+       {0x645B, 0x6E98},
+       {0x645C, 0x7044},
+       {0x645D, 0x6F2D},
+       {0x645E, 0x7005},
+       {0x645F, 0x6EA5},
+       {0x6460, 0x6EA7},
+       {0x6461, 0x6EBD},
+       {0x6462, 0x6EBB},
+       {0x6463, 0x6EB7},
+       {0x6464, 0x6F77},
+       {0x6465, 0x6EB4},
+       {0x6466, 0x6ECF},
+       {0x6467, 0x6E8F},
+       {0x6468, 0x6EC2},
+       {0x6469, 0x6E9F},
+       {0x646A, 0x6F62},
+       {0x646B, 0x7020},
+       {0x646C, 0x701F},
+       {0x646D, 0x6F24},
+       {0x646E, 0x6F15},
+       {0x646F, 0x6EF9},
+       {0x6470, 0x6F2F},
+       {0x6471, 0x6F36},
+       {0x6472, 0x7032},
+       {0x6473, 0x6F74},
+       {0x6474, 0x6F2A},
+       {0x6475, 0x6F09},
+       {0x6476, 0x6F29},
+       {0x6477, 0x6F89},
+       {0x6478, 0x6F8D},
+       {0x6479, 0x6F8C},
+       {0x647A, 0x6F78},
+       {0x647B, 0x6F72},
+       {0x647C, 0x6F7C},
+       {0x647D, 0x6F7A},
+       {0x647E, 0x7028},
+       {0x6521, 0x6FC9},
+       {0x6522, 0x6FA7},
+       {0x6523, 0x6FB9},
+       {0x6524, 0x6FB6},
+       {0x6525, 0x6FC2},
+       {0x6526, 0x6FE1},
+       {0x6527, 0x6FEE},
+       {0x6528, 0x6FDE},
+       {0x6529, 0x6FE0},
+       {0x652A, 0x6FEF},
+       {0x652B, 0x701A},
+       {0x652C, 0x7023},
+       {0x652D, 0x701B},
+       {0x652E, 0x7039},
+       {0x652F, 0x7035},
+       {0x6530, 0x705D},
+       {0x6531, 0x705E},
+       {0x6532, 0x5B80},
+       {0x6533, 0x5B84},
+       {0x6534, 0x5B95},
+       {0x6535, 0x5B93},
+       {0x6536, 0x5BA5},
+       {0x6537, 0x5BB8},
+       {0x6538, 0x752F},
+       {0x6539, 0x9A2B},
+       {0x653A, 0x6434},
+       {0x653B, 0x5BE4},
+       {0x653C, 0x5BEE},
+       {0x653D, 0x8930},
+       {0x653E, 0x5BF0},
+       {0x653F, 0x8E47},
+       {0x6540, 0x8B07},
+       {0x6541, 0x8FB6},
+       {0x6542, 0x8FD3},
+       {0x6543, 0x8FD5},
+       {0x6544, 0x8FE5},
+       {0x6545, 0x8FEE},
+       {0x6546, 0x8FE4},
+       {0x6547, 0x9087},
+       {0x6548, 0x8FE6},
+       {0x6549, 0x9015},
+       {0x654A, 0x8FE8},
+       {0x654B, 0x9005},
+       {0x654C, 0x9004},
+       {0x654D, 0x900B},
+       {0x654E, 0x9090},
+       {0x654F, 0x9011},
+       {0x6550, 0x900D},
+       {0x6551, 0x9016},
+       {0x6552, 0x9021},
+       {0x6553, 0x9035},
+       {0x6554, 0x9036},
+       {0x6555, 0x902D},
+       {0x6556, 0x902F},
+       {0x6557, 0x9044},
+       {0x6558, 0x9051},
+       {0x6559, 0x9052},
+       {0x655A, 0x9050},
+       {0x655B, 0x9068},
+       {0x655C, 0x9058},
+       {0x655D, 0x9062},
+       {0x655E, 0x905B},
+       {0x655F, 0x66B9},
+       {0x6560, 0x9074},
+       {0x6561, 0x907D},
+       {0x6562, 0x9082},
+       {0x6563, 0x9088},
+       {0x6564, 0x9083},
+       {0x6565, 0x908B},
+       {0x6566, 0x5F50},
+       {0x6567, 0x5F57},
+       {0x6568, 0x5F56},
+       {0x6569, 0x5F58},
+       {0x656A, 0x5C3B},
+       {0x656B, 0x54AB},
+       {0x656C, 0x5C50},
+       {0x656D, 0x5C59},
+       {0x656E, 0x5B71},
+       {0x656F, 0x5C63},
+       {0x6570, 0x5C68},
+       {0x6571, 0x7FBC},
+       {0x6572, 0x5F33},
+       {0x6573, 0x5F29},
+       {0x6574, 0x5F2D},
+       {0x6575, 0x8274},
+       {0x6576, 0x5F3C},
+       {0x6577, 0x9B3B},
+       {0x6578, 0x5C6E},
+       {0x6579, 0x5981},
+       {0x657A, 0x5983},
+       {0x657B, 0x598D},
+       {0x657C, 0x5AF5},
+       {0x657D, 0x5AD7},
+       {0x657E, 0x59A3},
+       {0x6621, 0x5997},
+       {0x6622, 0x59CA},
+       {0x6623, 0x5B00},
+       {0x6624, 0x599E},
+       {0x6625, 0x59A4},
+       {0x6626, 0x59D2},
+       {0x6627, 0x59B2},
+       {0x6628, 0x59AF},
+       {0x6629, 0x59D7},
+       {0x662A, 0x59BE},
+       {0x662B, 0x5A6D},
+       {0x662C, 0x5B08},
+       {0x662D, 0x59DD},
+       {0x662E, 0x5B4C},
+       {0x662F, 0x59E3},
+       {0x6630, 0x59D8},
+       {0x6631, 0x59F9},
+       {0x6632, 0x5A0C},
+       {0x6633, 0x5A09},
+       {0x6634, 0x5AA7},
+       {0x6635, 0x5AFB},
+       {0x6636, 0x5A11},
+       {0x6637, 0x5A23},
+       {0x6638, 0x5A13},
+       {0x6639, 0x5A40},
+       {0x663A, 0x5A67},
+       {0x663B, 0x5A4A},
+       {0x663C, 0x5A55},
+       {0x663D, 0x5A3C},
+       {0x663E, 0x5A62},
+       {0x663F, 0x5B0B},
+       {0x6640, 0x80EC},
+       {0x6641, 0x5AAA},
+       {0x6642, 0x5A9B},
+       {0x6643, 0x5A77},
+       {0x6644, 0x5A7A},
+       {0x6645, 0x5ABE},
+       {0x6646, 0x5AEB},
+       {0x6647, 0x5AB2},
+       {0x6648, 0x5B21},
+       {0x6649, 0x5B2A},
+       {0x664A, 0x5AB8},
+       {0x664B, 0x5AE0},
+       {0x664C, 0x5AE3},
+       {0x664D, 0x5B19},
+       {0x664E, 0x5AD6},
+       {0x664F, 0x5AE6},
+       {0x6650, 0x5AD8},
+       {0x6651, 0x5ADC},
+       {0x6652, 0x5B09},
+       {0x6653, 0x5B17},
+       {0x6654, 0x5B16},
+       {0x6655, 0x5B32},
+       {0x6656, 0x5B37},
+       {0x6657, 0x5B40},
+       {0x6658, 0x5C15},
+       {0x6659, 0x5C1C},
+       {0x665A, 0x5B5A},
+       {0x665B, 0x5B65},
+       {0x665C, 0x5B73},
+       {0x665D, 0x5B51},
+       {0x665E, 0x5B53},
+       {0x665F, 0x5B62},
+       {0x6660, 0x99D4},
+       {0x6661, 0x99DF},
+       {0x6662, 0x99D9},
+       {0x6663, 0x9A36},
+       {0x6664, 0x9A5B},
+       {0x6665, 0x99D1},
+       {0x6666, 0x99D8},
+       {0x6667, 0x9A4D},
+       {0x6668, 0x9A4A},
+       {0x6669, 0x99E2},
+       {0x666A, 0x9A6A},
+       {0x666B, 0x9A0F},
+       {0x666C, 0x9A0D},
+       {0x666D, 0x9A05},
+       {0x666E, 0x9A42},
+       {0x666F, 0x9A2D},
+       {0x6670, 0x9A16},
+       {0x6671, 0x9A41},
+       {0x6672, 0x9A2E},
+       {0x6673, 0x9A38},
+       {0x6674, 0x9A43},
+       {0x6675, 0x9A44},
+       {0x6676, 0x9A4F},
+       {0x6677, 0x9A65},
+       {0x6678, 0x9A64},
+       {0x6679, 0x7CF9},
+       {0x667A, 0x7D06},
+       {0x667B, 0x7D02},
+       {0x667C, 0x7D07},
+       {0x667D, 0x7D08},
+       {0x667E, 0x7E8A},
+       {0x6721, 0x7D1C},
+       {0x6722, 0x7D15},
+       {0x6723, 0x7D13},
+       {0x6724, 0x7D3A},
+       {0x6725, 0x7D32},
+       {0x6726, 0x7D31},
+       {0x6727, 0x7E10},
+       {0x6728, 0x7D3C},
+       {0x6729, 0x7D40},
+       {0x672A, 0x7D3F},
+       {0x672B, 0x7D5D},
+       {0x672C, 0x7D4E},
+       {0x672D, 0x7D73},
+       {0x672E, 0x7D86},
+       {0x672F, 0x7D83},
+       {0x6730, 0x7D88},
+       {0x6731, 0x7DBE},
+       {0x6732, 0x7DBA},
+       {0x6733, 0x7DCB},
+       {0x6734, 0x7DD4},
+       {0x6735, 0x7DC4},
+       {0x6736, 0x7D9E},
+       {0x6737, 0x7DAC},
+       {0x6738, 0x7DB9},
+       {0x6739, 0x7DA3},
+       {0x673A, 0x7DB0},
+       {0x673B, 0x7DC7},
+       {0x673C, 0x7DD9},
+       {0x673D, 0x7DD7},
+       {0x673E, 0x7DF9},
+       {0x673F, 0x7DF2},
+       {0x6740, 0x7E62},
+       {0x6741, 0x7DE6},
+       {0x6742, 0x7DF6},
+       {0x6743, 0x7DF1},
+       {0x6744, 0x7E0B},
+       {0x6745, 0x7DE1},
+       {0x6746, 0x7E09},
+       {0x6747, 0x7E1D},
+       {0x6748, 0x7E1F},
+       {0x6749, 0x7E1E},
+       {0x674A, 0x7E2D},
+       {0x674B, 0x7E0A},
+       {0x674C, 0x7E11},
+       {0x674D, 0x7E7D},
+       {0x674E, 0x7E39},
+       {0x674F, 0x7E35},
+       {0x6750, 0x7E32},
+       {0x6751, 0x7E46},
+       {0x6752, 0x7E45},
+       {0x6753, 0x7E88},
+       {0x6754, 0x7E5A},
+       {0x6755, 0x7E52},
+       {0x6756, 0x7E6E},
+       {0x6757, 0x7E7E},
+       {0x6758, 0x7E70},
+       {0x6759, 0x7E6F},
+       {0x675A, 0x7E98},
+       {0x675B, 0x5E7A},
+       {0x675C, 0x757F},
+       {0x675D, 0x5DDB},
+       {0x675E, 0x753E},
+       {0x675F, 0x9095},
+       {0x6760, 0x738E},
+       {0x6761, 0x74A3},
+       {0x6762, 0x744B},
+       {0x6763, 0x73A2},
+       {0x6764, 0x739F},
+       {0x6765, 0x73CF},
+       {0x6766, 0x73C2},
+       {0x6767, 0x74CF},
+       {0x6768, 0x73B7},
+       {0x6769, 0x73B3},
+       {0x676A, 0x73C0},
+       {0x676B, 0x73C9},
+       {0x676C, 0x73C8},
+       {0x676D, 0x73E5},
+       {0x676E, 0x73D9},
+       {0x676F, 0x980A},
+       {0x6770, 0x740A},
+       {0x6771, 0x73E9},
+       {0x6772, 0x73E7},
+       {0x6773, 0x73DE},
+       {0x6774, 0x74BD},
+       {0x6775, 0x743F},
+       {0x6776, 0x7489},
+       {0x6777, 0x742A},
+       {0x6778, 0x745B},
+       {0x6779, 0x7426},
+       {0x677A, 0x7425},
+       {0x677B, 0x7428},
+       {0x677C, 0x7430},
+       {0x677D, 0x742E},
+       {0x677E, 0x742C},
+       {0x6821, 0x741B},
+       {0x6822, 0x741A},
+       {0x6823, 0x7441},
+       {0x6824, 0x745C},
+       {0x6825, 0x7457},
+       {0x6826, 0x7455},
+       {0x6827, 0x7459},
+       {0x6828, 0x74A6},
+       {0x6829, 0x746D},
+       {0x682A, 0x747E},
+       {0x682B, 0x749C},
+       {0x682C, 0x74D4},
+       {0x682D, 0x7480},
+       {0x682E, 0x7481},
+       {0x682F, 0x7487},
+       {0x6830, 0x748B},
+       {0x6831, 0x749E},
+       {0x6832, 0x74A8},
+       {0x6833, 0x74A9},
+       {0x6834, 0x7490},
+       {0x6835, 0x74A7},
+       {0x6836, 0x74DA},
+       {0x6837, 0x74BA},
+       {0x6838, 0x97D9},
+       {0x6839, 0x97DE},
+       {0x683A, 0x97DC},
+       {0x683B, 0x674C},
+       {0x683C, 0x6753},
+       {0x683D, 0x675E},
+       {0x683E, 0x6748},
+       {0x683F, 0x69AA},
+       {0x6840, 0x6AEA},
+       {0x6841, 0x6787},
+       {0x6842, 0x676A},
+       {0x6843, 0x6773},
+       {0x6844, 0x6798},
+       {0x6845, 0x6898},
+       {0x6846, 0x6775},
+       {0x6847, 0x68D6},
+       {0x6848, 0x6A05},
+       {0x6849, 0x689F},
+       {0x684A, 0x678B},
+       {0x684B, 0x6777},
+       {0x684C, 0x677C},
+       {0x684D, 0x67F0},
+       {0x684E, 0x6ADB},
+       {0x684F, 0x67D8},
+       {0x6850, 0x6AF3},
+       {0x6851, 0x67E9},
+       {0x6852, 0x67B0},
+       {0x6853, 0x6AE8},
+       {0x6854, 0x67D9},
+       {0x6855, 0x67B5},
+       {0x6856, 0x67DA},
+       {0x6857, 0x67B3},
+       {0x6858, 0x67DD},
+       {0x6859, 0x6800},
+       {0x685A, 0x67C3},
+       {0x685B, 0x67B8},
+       {0x685C, 0x67E2},
+       {0x685D, 0x6ADF},
+       {0x685E, 0x67C1},
+       {0x685F, 0x6A89},
+       {0x6860, 0x6832},
+       {0x6861, 0x6833},
+       {0x6862, 0x690F},
+       {0x6863, 0x6A48},
+       {0x6864, 0x684E},
+       {0x6865, 0x6968},
+       {0x6866, 0x6844},
+       {0x6867, 0x69BF},
+       {0x6868, 0x6883},
+       {0x6869, 0x681D},
+       {0x686A, 0x6855},
+       {0x686B, 0x6A3A},
+       {0x686C, 0x6841},
+       {0x686D, 0x6A9C},
+       {0x686E, 0x6840},
+       {0x686F, 0x6B12},
+       {0x6870, 0x684A},
+       {0x6871, 0x6849},
+       {0x6872, 0x6829},
+       {0x6873, 0x68B5},
+       {0x6874, 0x688F},
+       {0x6875, 0x6874},
+       {0x6876, 0x6877},
+       {0x6877, 0x6893},
+       {0x6878, 0x686B},
+       {0x6879, 0x6B1E},
+       {0x687A, 0x696E},
+       {0x687B, 0x68FC},
+       {0x687C, 0x6ADD},
+       {0x687D, 0x69E7},
+       {0x687E, 0x68F9},
+       {0x6921, 0x6B0F},
+       {0x6922, 0x68F0},
+       {0x6923, 0x690B},
+       {0x6924, 0x6901},
+       {0x6925, 0x6957},
+       {0x6926, 0x68E3},
+       {0x6927, 0x6910},
+       {0x6928, 0x6971},
+       {0x6929, 0x6939},
+       {0x692A, 0x6960},
+       {0x692B, 0x6942},
+       {0x692C, 0x695D},
+       {0x692D, 0x6B16},
+       {0x692E, 0x696B},
+       {0x692F, 0x6980},
+       {0x6930, 0x6998},
+       {0x6931, 0x6978},
+       {0x6932, 0x6934},
+       {0x6933, 0x69CC},
+       {0x6934, 0x6AEC},
+       {0x6935, 0x6ADA},
+       {0x6936, 0x69CE},
+       {0x6937, 0x6AF8},
+       {0x6938, 0x6966},
+       {0x6939, 0x6963},
+       {0x693A, 0x6979},
+       {0x693B, 0x699B},
+       {0x693C, 0x69A7},
+       {0x693D, 0x69BB},
+       {0x693E, 0x69AB},
+       {0x693F, 0x69AD},
+       {0x6940, 0x69D4},
+       {0x6941, 0x69B1},
+       {0x6942, 0x69C1},
+       {0x6943, 0x69CA},
+       {0x6944, 0x6AB3},
+       {0x6945, 0x6995},
+       {0x6946, 0x6AE7},
+       {0x6947, 0x698D},
+       {0x6948, 0x69FF},
+       {0x6949, 0x6AA3},
+       {0x694A, 0x69ED},
+       {0x694B, 0x6A17},
+       {0x694C, 0x6A18},
+       {0x694D, 0x6A65},
+       {0x694E, 0x69F2},
+       {0x694F, 0x6A44},
+       {0x6950, 0x6A3E},
+       {0x6951, 0x6AA0},
+       {0x6952, 0x6A50},
+       {0x6953, 0x6A5B},
+       {0x6954, 0x6A35},
+       {0x6955, 0x6A8E},
+       {0x6956, 0x6AD3},
+       {0x6957, 0x6A3D},
+       {0x6958, 0x6A28},
+       {0x6959, 0x6A58},
+       {0x695A, 0x6ADE},
+       {0x695B, 0x6A91},
+       {0x695C, 0x6A90},
+       {0x695D, 0x6AA9},
+       {0x695E, 0x6A97},
+       {0x695F, 0x6AAB},
+       {0x6960, 0x7337},
+       {0x6961, 0x7352},
+       {0x6962, 0x6B81},
+       {0x6963, 0x6B82},
+       {0x6964, 0x6BA4},
+       {0x6965, 0x6B84},
+       {0x6966, 0x6B9E},
+       {0x6967, 0x6BAE},
+       {0x6968, 0x6B8D},
+       {0x6969, 0x6BAB},
+       {0x696A, 0x6B9B},
+       {0x696B, 0x6BAF},
+       {0x696C, 0x6BAA},
+       {0x696D, 0x8ED4},
+       {0x696E, 0x8EDB},
+       {0x696F, 0x8EF2},
+       {0x6970, 0x8EFB},
+       {0x6971, 0x8F64},
+       {0x6972, 0x8EF9},
+       {0x6973, 0x8EFC},
+       {0x6974, 0x8EEB},
+       {0x6975, 0x8EE4},
+       {0x6976, 0x8F62},
+       {0x6977, 0x8EFA},
+       {0x6978, 0x8EFE},
+       {0x6979, 0x8F0A},
+       {0x697A, 0x8F07},
+       {0x697B, 0x8F05},
+       {0x697C, 0x8F12},
+       {0x697D, 0x8F26},
+       {0x697E, 0x8F1E},
+       {0x6A21, 0x8F1F},
+       {0x6A22, 0x8F1C},
+       {0x6A23, 0x8F33},
+       {0x6A24, 0x8F46},
+       {0x6A25, 0x8F54},
+       {0x6A26, 0x8ECE},
+       {0x6A27, 0x6214},
+       {0x6A28, 0x6227},
+       {0x6A29, 0x621B},
+       {0x6A2A, 0x621F},
+       {0x6A2B, 0x6222},
+       {0x6A2C, 0x6221},
+       {0x6A2D, 0x6225},
+       {0x6A2E, 0x6224},
+       {0x6A2F, 0x6229},
+       {0x6A30, 0x81E7},
+       {0x6A31, 0x750C},
+       {0x6A32, 0x74F4},
+       {0x6A33, 0x74FF},
+       {0x6A34, 0x750F},
+       {0x6A35, 0x7511},
+       {0x6A36, 0x7513},
+       {0x6A37, 0x6534},
+       {0x6A38, 0x65EE},
+       {0x6A39, 0x65EF},
+       {0x6A3A, 0x65F0},
+       {0x6A3B, 0x660A},
+       {0x6A3C, 0x66C7},
+       {0x6A3D, 0x6772},
+       {0x6A3E, 0x6603},
+       {0x6A3F, 0x6615},
+       {0x6A40, 0x6600},
+       {0x6A41, 0x7085},
+       {0x6A42, 0x66F7},
+       {0x6A43, 0x661D},
+       {0x6A44, 0x6634},
+       {0x6A45, 0x6631},
+       {0x6A46, 0x6636},
+       {0x6A47, 0x6635},
+       {0x6A48, 0x8006},
+       {0x6A49, 0x665F},
+       {0x6A4A, 0x66C4},
+       {0x6A4B, 0x6641},
+       {0x6A4C, 0x664F},
+       {0x6A4D, 0x6689},
+       {0x6A4E, 0x6661},
+       {0x6A4F, 0x6657},
+       {0x6A50, 0x6677},
+       {0x6A51, 0x6684},
+       {0x6A52, 0x668C},
+       {0x6A53, 0x66D6},
+       {0x6A54, 0x669D},
+       {0x6A55, 0x66BE},
+       {0x6A56, 0x66DB},
+       {0x6A57, 0x66DC},
+       {0x6A58, 0x66E6},
+       {0x6A59, 0x66E9},
+       {0x6A5A, 0x8CC1},
+       {0x6A5B, 0x8CB0},
+       {0x6A5C, 0x8CBA},
+       {0x6A5D, 0x8CBD},
+       {0x6A5E, 0x8D04},
+       {0x6A5F, 0x8CB2},
+       {0x6A60, 0x8CC5},
+       {0x6A61, 0x8D10},
+       {0x6A62, 0x8CD1},
+       {0x6A63, 0x8CDA},
+       {0x6A64, 0x8CD5},
+       {0x6A65, 0x8CEB},
+       {0x6A66, 0x8CE7},
+       {0x6A67, 0x8CFB},
+       {0x6A68, 0x8998},
+       {0x6A69, 0x89AC},
+       {0x6A6A, 0x89A1},
+       {0x6A6B, 0x89BF},
+       {0x6A6C, 0x89A6},
+       {0x6A6D, 0x89AF},
+       {0x6A6E, 0x89B2},
+       {0x6A6F, 0x89B7},
+       {0x6A70, 0x726E},
+       {0x6A71, 0x729F},
+       {0x6A72, 0x725D},
+       {0x6A73, 0x7266},
+       {0x6A74, 0x726F},
+       {0x6A75, 0x727E},
+       {0x6A76, 0x727F},
+       {0x6A77, 0x7284},
+       {0x6A78, 0x728B},
+       {0x6A79, 0x728D},
+       {0x6A7A, 0x728F},
+       {0x6A7B, 0x7292},
+       {0x6A7C, 0x6308},
+       {0x6A7D, 0x6332},
+       {0x6A7E, 0x63B0},
+       {0x6B21, 0x643F},
+       {0x6B22, 0x64D8},
+       {0x6B23, 0x8004},
+       {0x6B24, 0x6BEA},
+       {0x6B25, 0x6BF3},
+       {0x6B26, 0x6BFD},
+       {0x6B27, 0x6BFF},
+       {0x6B28, 0x6BF9},
+       {0x6B29, 0x6C05},
+       {0x6B2A, 0x6C0C},
+       {0x6B2B, 0x6C06},
+       {0x6B2C, 0x6C0D},
+       {0x6B2D, 0x6C15},
+       {0x6B2E, 0x6C18},
+       {0x6B2F, 0x6C19},
+       {0x6B30, 0x6C1A},
+       {0x6B31, 0x6C21},
+       {0x6B32, 0x6C2C},
+       {0x6B33, 0x6C24},
+       {0x6B34, 0x6C2A},
+       {0x6B35, 0x6C32},
+       {0x6B36, 0x6535},
+       {0x6B37, 0x6555},
+       {0x6B38, 0x656B},
+       {0x6B39, 0x7258},
+       {0x6B3A, 0x7252},
+       {0x6B3B, 0x7256},
+       {0x6B3C, 0x7230},
+       {0x6B3D, 0x8662},
+       {0x6B3E, 0x5216},
+       {0x6B3F, 0x809F},
+       {0x6B40, 0x809C},
+       {0x6B41, 0x8093},
+       {0x6B42, 0x80BC},
+       {0x6B43, 0x670A},
+       {0x6B44, 0x80BD},
+       {0x6B45, 0x80B1},
+       {0x6B46, 0x80AB},
+       {0x6B47, 0x80AD},
+       {0x6B48, 0x80B4},
+       {0x6B49, 0x80B7},
+       {0x6B4A, 0x6727},
+       {0x6B4B, 0x8156},
+       {0x6B4C, 0x80E9},
+       {0x6B4D, 0x81DA},
+       {0x6B4E, 0x80DB},
+       {0x6B4F, 0x80C2},
+       {0x6B50, 0x80C4},
+       {0x6B51, 0x80D9},
+       {0x6B52, 0x80CD},
+       {0x6B53, 0x80D7},
+       {0x6B54, 0x6710},
+       {0x6B55, 0x80DD},
+       {0x6B56, 0x811B},
+       {0x6B57, 0x80F1},
+       {0x6B58, 0x80F4},
+       {0x6B59, 0x80ED},
+       {0x6B5A, 0x81BE},
+       {0x6B5B, 0x810E},
+       {0x6B5C, 0x80F2},
+       {0x6B5D, 0x80FC},
+       {0x6B5E, 0x6715},
+       {0x6B5F, 0x8112},
+       {0x6B60, 0x8C5A},
+       {0x6B61, 0x8161},
+       {0x6B62, 0x811E},
+       {0x6B63, 0x812C},
+       {0x6B64, 0x8118},
+       {0x6B65, 0x8132},
+       {0x6B66, 0x8148},
+       {0x6B67, 0x814C},
+       {0x6B68, 0x8153},
+       {0x6B69, 0x8174},
+       {0x6B6A, 0x8159},
+       {0x6B6B, 0x815A},
+       {0x6B6C, 0x8171},
+       {0x6B6D, 0x8160},
+       {0x6B6E, 0x8169},
+       {0x6B6F, 0x817C},
+       {0x6B70, 0x817D},
+       {0x6B71, 0x816D},
+       {0x6B72, 0x8167},
+       {0x6B73, 0x584D},
+       {0x6B74, 0x5AB5},
+       {0x6B75, 0x8188},
+       {0x6B76, 0x8182},
+       {0x6B77, 0x81CF},
+       {0x6B78, 0x6ED5},
+       {0x6B79, 0x81A3},
+       {0x6B7A, 0x81AA},
+       {0x6B7B, 0x81CC},
+       {0x6B7C, 0x6726},
+       {0x6B7D, 0x81CA},
+       {0x6B7E, 0x81BB},
+       {0x6C21, 0x81C1},
+       {0x6C22, 0x81A6},
+       {0x6C23, 0x6B5F},
+       {0x6C24, 0x6B37},
+       {0x6C25, 0x6B39},
+       {0x6C26, 0x6B43},
+       {0x6C27, 0x6B46},
+       {0x6C28, 0x6B59},
+       {0x6C29, 0x98AE},
+       {0x6C2A, 0x98AF},
+       {0x6C2B, 0x98B6},
+       {0x6C2C, 0x98BC},
+       {0x6C2D, 0x98C6},
+       {0x6C2E, 0x98C8},
+       {0x6C2F, 0x6BB3},
+       {0x6C30, 0x5F40},
+       {0x6C31, 0x8F42},
+       {0x6C32, 0x89F3},
+       {0x6C33, 0x6590},
+       {0x6C34, 0x9F4F},
+       {0x6C35, 0x6595},
+       {0x6C36, 0x65BC},
+       {0x6C37, 0x65C6},
+       {0x6C38, 0x65C4},
+       {0x6C39, 0x65C3},
+       {0x6C3A, 0x65CC},
+       {0x6C3B, 0x65CE},
+       {0x6C3C, 0x65D2},
+       {0x6C3D, 0x65D6},
+       {0x6C3E, 0x716C},
+       {0x6C3F, 0x7152},
+       {0x6C40, 0x7096},
+       {0x6C41, 0x7197},
+       {0x6C42, 0x70BB},
+       {0x6C43, 0x70C0},
+       {0x6C44, 0x70B7},
+       {0x6C45, 0x70AB},
+       {0x6C46, 0x70B1},
+       {0x6C47, 0x71C1},
+       {0x6C48, 0x70CA},
+       {0x6C49, 0x7110},
+       {0x6C4A, 0x7113},
+       {0x6C4B, 0x71DC},
+       {0x6C4C, 0x712F},
+       {0x6C4D, 0x7131},
+       {0x6C4E, 0x7173},
+       {0x6C4F, 0x715C},
+       {0x6C50, 0x7168},
+       {0x6C51, 0x7145},
+       {0x6C52, 0x7172},
+       {0x6C53, 0x714A},
+       {0x6C54, 0x7178},
+       {0x6C55, 0x717A},
+       {0x6C56, 0x7198},
+       {0x6C57, 0x71B3},
+       {0x6C58, 0x71B5},
+       {0x6C59, 0x71A8},
+       {0x6C5A, 0x71A0},
+       {0x6C5B, 0x71E0},
+       {0x6C5C, 0x71D4},
+       {0x6C5D, 0x71E7},
+       {0x6C5E, 0x71F9},
+       {0x6C5F, 0x721D},
+       {0x6C60, 0x7228},
+       {0x6C61, 0x706C},
+       {0x6C62, 0x71FE},
+       {0x6C63, 0x7166},
+       {0x6C64, 0x71B9},
+       {0x6C65, 0x623E},
+       {0x6C66, 0x623D},
+       {0x6C67, 0x6243},
+       {0x6C68, 0x6248},
+       {0x6C69, 0x6249},
+       {0x6C6A, 0x793B},
+       {0x6C6B, 0x7940},
+       {0x6C6C, 0x7946},
+       {0x6C6D, 0x7949},
+       {0x6C6E, 0x795B},
+       {0x6C6F, 0x795C},
+       {0x6C70, 0x7953},
+       {0x6C71, 0x795A},
+       {0x6C72, 0x79B0},
+       {0x6C73, 0x7957},
+       {0x6C74, 0x7960},
+       {0x6C75, 0x798E},
+       {0x6C76, 0x7967},
+       {0x6C77, 0x797A},
+       {0x6C78, 0x79AA},
+       {0x6C79, 0x798A},
+       {0x6C7A, 0x799A},
+       {0x6C7B, 0x79A7},
+       {0x6C7C, 0x79B3},
+       {0x6C7D, 0x5FD1},
+       {0x6C7E, 0x5FD0},
+       {0x6D21, 0x61DF},
+       {0x6D22, 0x605D},
+       {0x6D23, 0x605A},
+       {0x6D24, 0x6067},
+       {0x6D25, 0x6041},
+       {0x6D26, 0x6059},
+       {0x6D27, 0x6063},
+       {0x6D28, 0x6164},
+       {0x6D29, 0x6106},
+       {0x6D2A, 0x610D},
+       {0x6D2B, 0x615D},
+       {0x6D2C, 0x61A9},
+       {0x6D2D, 0x619D},
+       {0x6D2E, 0x61CB},
+       {0x6D2F, 0x61E3},
+       {0x6D30, 0x6207},
+       {0x6D31, 0x8080},
+       {0x6D32, 0x807F},
+       {0x6D33, 0x6C93},
+       {0x6D34, 0x6FA9},
+       {0x6D35, 0x6DFC},
+       {0x6D36, 0x78EF},
+       {0x6D37, 0x77F8},
+       {0x6D38, 0x78AD},
+       {0x6D39, 0x7809},
+       {0x6D3A, 0x7868},
+       {0x6D3B, 0x7818},
+       {0x6D3C, 0x7811},
+       {0x6D3D, 0x65AB},
+       {0x6D3E, 0x782D},
+       {0x6D3F, 0x78B8},
+       {0x6D40, 0x781D},
+       {0x6D41, 0x7839},
+       {0x6D42, 0x792A},
+       {0x6D43, 0x7931},
+       {0x6D44, 0x781F},
+       {0x6D45, 0x783C},
+       {0x6D46, 0x7825},
+       {0x6D47, 0x782C},
+       {0x6D48, 0x7823},
+       {0x6D49, 0x7829},
+       {0x6D4A, 0x784E},
+       {0x6D4B, 0x786D},
+       {0x6D4C, 0x7864},
+       {0x6D4D, 0x78FD},
+       {0x6D4E, 0x7826},
+       {0x6D4F, 0x7850},
+       {0x6D50, 0x7847},
+       {0x6D51, 0x784C},
+       {0x6D52, 0x786A},
+       {0x6D53, 0x78E7},
+       {0x6D54, 0x7893},
+       {0x6D55, 0x789A},
+       {0x6D56, 0x7887},
+       {0x6D57, 0x78E3},
+       {0x6D58, 0x78A1},
+       {0x6D59, 0x78A3},
+       {0x6D5A, 0x78B2},
+       {0x6D5B, 0x78B9},
+       {0x6D5C, 0x78A5},
+       {0x6D5D, 0x78D4},
+       {0x6D5E, 0x78D9},
+       {0x6D5F, 0x78C9},
+       {0x6D60, 0x78EC},
+       {0x6D61, 0x78F2},
+       {0x6D62, 0x7905},
+       {0x6D63, 0x78F4},
+       {0x6D64, 0x7913},
+       {0x6D65, 0x7924},
+       {0x6D66, 0x791E},
+       {0x6D67, 0x7934},
+       {0x6D68, 0x9F95},
+       {0x6D69, 0x9EF9},
+       {0x6D6A, 0x9EFB},
+       {0x6D6B, 0x9EFC},
+       {0x6D6C, 0x76F1},
+       {0x6D6D, 0x7704},
+       {0x6D6E, 0x7798},
+       {0x6D6F, 0x76F9},
+       {0x6D70, 0x7707},
+       {0x6D71, 0x7708},
+       {0x6D72, 0x771A},
+       {0x6D73, 0x7722},
+       {0x6D74, 0x7719},
+       {0x6D75, 0x772D},
+       {0x6D76, 0x7726},
+       {0x6D77, 0x7735},
+       {0x6D78, 0x7738},
+       {0x6D79, 0x775E},
+       {0x6D7A, 0x77BC},
+       {0x6D7B, 0x7747},
+       {0x6D7C, 0x7743},
+       {0x6D7D, 0x775A},
+       {0x6D7E, 0x7768},
+       {0x6E21, 0x7762},
+       {0x6E22, 0x7765},
+       {0x6E23, 0x777F},
+       {0x6E24, 0x778D},
+       {0x6E25, 0x777D},
+       {0x6E26, 0x7780},
+       {0x6E27, 0x778C},
+       {0x6E28, 0x7791},
+       {0x6E29, 0x779F},
+       {0x6E2A, 0x77A0},
+       {0x6E2B, 0x77B0},
+       {0x6E2C, 0x77B5},
+       {0x6E2D, 0x77BD},
+       {0x6E2E, 0x753A},
+       {0x6E2F, 0x7540},
+       {0x6E30, 0x754E},
+       {0x6E31, 0x754B},
+       {0x6E32, 0x7548},
+       {0x6E33, 0x755B},
+       {0x6E34, 0x7572},
+       {0x6E35, 0x7579},
+       {0x6E36, 0x7583},
+       {0x6E37, 0x7F58},
+       {0x6E38, 0x7F61},
+       {0x6E39, 0x7F5F},
+       {0x6E3A, 0x8A48},
+       {0x6E3B, 0x7F68},
+       {0x6E3C, 0x7F86},
+       {0x6E3D, 0x7F71},
+       {0x6E3E, 0x7F79},
+       {0x6E3F, 0x7F88},
+       {0x6E40, 0x7F7E},
+       {0x6E41, 0x76CD},
+       {0x6E42, 0x76E5},
+       {0x6E43, 0x8832},
+       {0x6E44, 0x91D2},
+       {0x6E45, 0x91D3},
+       {0x6E46, 0x91D4},
+       {0x6E47, 0x91D9},
+       {0x6E48, 0x91D7},
+       {0x6E49, 0x91D5},
+       {0x6E4A, 0x91F7},
+       {0x6E4B, 0x91E7},
+       {0x6E4C, 0x91E4},
+       {0x6E4D, 0x9346},
+       {0x6E4E, 0x91F5},
+       {0x6E4F, 0x91F9},
+       {0x6E50, 0x9208},
+       {0x6E51, 0x9226},
+       {0x6E52, 0x9245},
+       {0x6E53, 0x9211},
+       {0x6E54, 0x9210},
+       {0x6E55, 0x9201},
+       {0x6E56, 0x9227},
+       {0x6E57, 0x9204},
+       {0x6E58, 0x9225},
+       {0x6E59, 0x9200},
+       {0x6E5A, 0x923A},
+       {0x6E5B, 0x9266},
+       {0x6E5C, 0x9237},
+       {0x6E5D, 0x9233},
+       {0x6E5E, 0x9255},
+       {0x6E5F, 0x923D},
+       {0x6E60, 0x9238},
+       {0x6E61, 0x925E},
+       {0x6E62, 0x926C},
+       {0x6E63, 0x926D},
+       {0x6E64, 0x923F},
+       {0x6E65, 0x9460},
+       {0x6E66, 0x9230},
+       {0x6E67, 0x9249},
+       {0x6E68, 0x9248},
+       {0x6E69, 0x924D},
+       {0x6E6A, 0x922E},
+       {0x6E6B, 0x9239},
+       {0x6E6C, 0x9438},
+       {0x6E6D, 0x92AC},
+       {0x6E6E, 0x92A0},
+       {0x6E6F, 0x927A},
+       {0x6E70, 0x92AA},
+       {0x6E71, 0x92EE},
+       {0x6E72, 0x92CF},
+       {0x6E73, 0x9403},
+       {0x6E74, 0x92E3},
+       {0x6E75, 0x943A},
+       {0x6E76, 0x92B1},
+       {0x6E77, 0x92A6},
+       {0x6E78, 0x93A7},
+       {0x6E79, 0x9296},
+       {0x6E7A, 0x92CC},
+       {0x6E7B, 0x92A9},
+       {0x6E7C, 0x93F5},
+       {0x6E7D, 0x9293},
+       {0x6E7E, 0x927F},
+       {0x6F21, 0x93A9},
+       {0x6F22, 0x929A},
+       {0x6F23, 0x931A},
+       {0x6F24, 0x92AB},
+       {0x6F25, 0x9283},
+       {0x6F26, 0x940B},
+       {0x6F27, 0x92A8},
+       {0x6F28, 0x92A3},
+       {0x6F29, 0x9412},
+       {0x6F2A, 0x9338},
+       {0x6F2B, 0x92F1},
+       {0x6F2C, 0x93D7},
+       {0x6F2D, 0x92E5},
+       {0x6F2E, 0x92F0},
+       {0x6F2F, 0x92EF},
+       {0x6F30, 0x92E8},
+       {0x6F31, 0x92BC},
+       {0x6F32, 0x92DD},
+       {0x6F33, 0x92F6},
+       {0x6F34, 0x9426},
+       {0x6F35, 0x9427},
+       {0x6F36, 0x92C3},
+       {0x6F37, 0x92DF},
+       {0x6F38, 0x92E6},
+       {0x6F39, 0x9312},
+       {0x6F3A, 0x9306},
+       {0x6F3B, 0x9369},
+       {0x6F3C, 0x931B},
+       {0x6F3D, 0x9340},
+       {0x6F3E, 0x9301},
+       {0x6F3F, 0x9315},
+       {0x6F40, 0x932E},
+       {0x6F41, 0x9343},
+       {0x6F42, 0x9307},
+       {0x6F43, 0x9308},
+       {0x6F44, 0x931F},
+       {0x6F45, 0x9319},
+       {0x6F46, 0x9365},
+       {0x6F47, 0x9347},
+       {0x6F48, 0x9376},
+       {0x6F49, 0x9354},
+       {0x6F4A, 0x9364},
+       {0x6F4B, 0x93AA},
+       {0x6F4C, 0x9370},
+       {0x6F4D, 0x9384},
+       {0x6F4E, 0x93E4},
+       {0x6F4F, 0x93D8},
+       {0x6F50, 0x9428},
+       {0x6F51, 0x9387},
+       {0x6F52, 0x93CC},
+       {0x6F53, 0x9398},
+       {0x6F54, 0x93B8},
+       {0x6F55, 0x93BF},
+       {0x6F56, 0x93A6},
+       {0x6F57, 0x93B0},
+       {0x6F58, 0x93B5},
+       {0x6F59, 0x944C},
+       {0x6F5A, 0x93E2},
+       {0x6F5B, 0x93DC},
+       {0x6F5C, 0x93DD},
+       {0x6F5D, 0x93CD},
+       {0x6F5E, 0x93DE},
+       {0x6F5F, 0x93C3},
+       {0x6F60, 0x93C7},
+       {0x6F61, 0x93D1},
+       {0x6F62, 0x9414},
+       {0x6F63, 0x941D},
+       {0x6F64, 0x93F7},
+       {0x6F65, 0x9465},
+       {0x6F66, 0x9413},
+       {0x6F67, 0x946D},
+       {0x6F68, 0x9420},
+       {0x6F69, 0x9479},
+       {0x6F6A, 0x93F9},
+       {0x6F6B, 0x9419},
+       {0x6F6C, 0x944A},
+       {0x6F6D, 0x9432},
+       {0x6F6E, 0x943F},
+       {0x6F6F, 0x9454},
+       {0x6F70, 0x9463},
+       {0x6F71, 0x937E},
+       {0x6F72, 0x77E7},
+       {0x6F73, 0x77EC},
+       {0x6F74, 0x96C9},
+       {0x6F75, 0x79D5},
+       {0x6F76, 0x79ED},
+       {0x6F77, 0x79E3},
+       {0x6F78, 0x79EB},
+       {0x6F79, 0x7A06},
+       {0x6F7A, 0x5D47},
+       {0x6F7B, 0x7A03},
+       {0x6F7C, 0x7A02},
+       {0x6F7D, 0x7A1E},
+       {0x6F7E, 0x7A14},
+       {0x7021, 0x7A39},
+       {0x7022, 0x7A37},
+       {0x7023, 0x7A61},
+       {0x7024, 0x9ECF},
+       {0x7025, 0x99A5},
+       {0x7026, 0x7A70},
+       {0x7027, 0x7688},
+       {0x7028, 0x768E},
+       {0x7029, 0x7693},
+       {0x702A, 0x7699},
+       {0x702B, 0x76A4},
+       {0x702C, 0x74DE},
+       {0x702D, 0x74E0},
+       {0x702E, 0x752C},
+       {0x702F, 0x9CE9},
+       {0x7030, 0x9CF6},
+       {0x7031, 0x9D07},
+       {0x7032, 0x9D06},
+       {0x7033, 0x9D23},
+       {0x7034, 0x9D87},
+       {0x7035, 0x9E15},
+       {0x7036, 0x9D1D},
+       {0x7037, 0x9D1F},
+       {0x7038, 0x9DE5},
+       {0x7039, 0x9D2F},
+       {0x703A, 0x9DD9},
+       {0x703B, 0x9D30},
+       {0x703C, 0x9D42},
+       {0x703D, 0x9E1E},
+       {0x703E, 0x9D53},
+       {0x703F, 0x9E1D},
+       {0x7040, 0x9D60},
+       {0x7041, 0x9D52},
+       {0x7042, 0x9DF3},
+       {0x7043, 0x9D5C},
+       {0x7044, 0x9D61},
+       {0x7045, 0x9D93},
+       {0x7046, 0x9D6A},
+       {0x7047, 0x9D6F},
+       {0x7048, 0x9D89},
+       {0x7049, 0x9D98},
+       {0x704A, 0x9D9A},
+       {0x704B, 0x9DC0},
+       {0x704C, 0x9DA5},
+       {0x704D, 0x9DA9},
+       {0x704E, 0x9DC2},
+       {0x704F, 0x9DBC},
+       {0x7050, 0x9E1A},
+       {0x7051, 0x9DD3},
+       {0x7052, 0x9DDA},
+       {0x7053, 0x9DEF},
+       {0x7054, 0x9DE6},
+       {0x7055, 0x9DF2},
+       {0x7056, 0x9DF8},
+       {0x7057, 0x9E0C},
+       {0x7058, 0x9DFA},
+       {0x7059, 0x9E1B},
+       {0x705A, 0x7592},
+       {0x705B, 0x7594},
+       {0x705C, 0x7664},
+       {0x705D, 0x7658},
+       {0x705E, 0x759D},
+       {0x705F, 0x7667},
+       {0x7060, 0x75A3},
+       {0x7061, 0x75B3},
+       {0x7062, 0x75B4},
+       {0x7063, 0x75B8},
+       {0x7064, 0x75C4},
+       {0x7065, 0x75B1},
+       {0x7066, 0x75B0},
+       {0x7067, 0x75C3},
+       {0x7068, 0x75C2},
+       {0x7069, 0x7602},
+       {0x706A, 0x75CD},
+       {0x706B, 0x75E3},
+       {0x706C, 0x7646},
+       {0x706D, 0x75E6},
+       {0x706E, 0x75E4},
+       {0x706F, 0x7647},
+       {0x7070, 0x75E7},
+       {0x7071, 0x7603},
+       {0x7072, 0x75F1},
+       {0x7073, 0x75FC},
+       {0x7074, 0x75FF},
+       {0x7075, 0x7610},
+       {0x7076, 0x7600},
+       {0x7077, 0x7649},
+       {0x7078, 0x760C},
+       {0x7079, 0x761E},
+       {0x707A, 0x760A},
+       {0x707B, 0x7625},
+       {0x707C, 0x763B},
+       {0x707D, 0x7615},
+       {0x707E, 0x7619},
+       {0x7121, 0x761B},
+       {0x7122, 0x763C},
+       {0x7123, 0x7622},
+       {0x7124, 0x7620},
+       {0x7125, 0x7640},
+       {0x7126, 0x762D},
+       {0x7127, 0x7630},
+       {0x7128, 0x766D},
+       {0x7129, 0x7635},
+       {0x712A, 0x7643},
+       {0x712B, 0x766E},
+       {0x712C, 0x7633},
+       {0x712D, 0x764D},
+       {0x712E, 0x7669},
+       {0x712F, 0x7654},
+       {0x7130, 0x765C},
+       {0x7131, 0x7656},
+       {0x7132, 0x7672},
+       {0x7133, 0x766F},
+       {0x7134, 0x7FCA},
+       {0x7135, 0x7AE6},
+       {0x7136, 0x7A78},
+       {0x7137, 0x7A79},
+       {0x7138, 0x7A80},
+       {0x7139, 0x7A86},
+       {0x713A, 0x7A88},
+       {0x713B, 0x7A95},
+       {0x713C, 0x7AC7},
+       {0x713D, 0x7AA0},
+       {0x713E, 0x7AAC},
+       {0x713F, 0x7AA8},
+       {0x7140, 0x7AB6},
+       {0x7141, 0x7AB3},
+       {0x7142, 0x8864},
+       {0x7143, 0x8869},
+       {0x7144, 0x8872},
+       {0x7145, 0x887D},
+       {0x7146, 0x887F},
+       {0x7147, 0x8882},
+       {0x7148, 0x88A2},
+       {0x7149, 0x8960},
+       {0x714A, 0x88B7},
+       {0x714B, 0x88BC},
+       {0x714C, 0x88C9},
+       {0x714D, 0x8933},
+       {0x714E, 0x88CE},
+       {0x714F, 0x895D},
+       {0x7150, 0x8947},
+       {0x7151, 0x88F1},
+       {0x7152, 0x891A},
+       {0x7153, 0x88FC},
+       {0x7154, 0x88E8},
+       {0x7155, 0x88FE},
+       {0x7156, 0x88F0},
+       {0x7157, 0x8921},
+       {0x7158, 0x8919},
+       {0x7159, 0x8913},
+       {0x715A, 0x8938},
+       {0x715B, 0x890A},
+       {0x715C, 0x8964},
+       {0x715D, 0x892B},
+       {0x715E, 0x8936},
+       {0x715F, 0x8941},
+       {0x7160, 0x8966},
+       {0x7161, 0x897B},
+       {0x7162, 0x758B},
+       {0x7163, 0x80E5},
+       {0x7164, 0x76B8},
+       {0x7165, 0x76B4},
+       {0x7166, 0x77DC},
+       {0x7167, 0x8012},
+       {0x7168, 0x8014},
+       {0x7169, 0x8016},
+       {0x716A, 0x801C},
+       {0x716B, 0x8020},
+       {0x716C, 0x802E},
+       {0x716D, 0x8025},
+       {0x716E, 0x8026},
+       {0x716F, 0x802C},
+       {0x7170, 0x8029},
+       {0x7171, 0x8028},
+       {0x7172, 0x8031},
+       {0x7173, 0x800B},
+       {0x7174, 0x8035},
+       {0x7175, 0x8043},
+       {0x7176, 0x8046},
+       {0x7177, 0x8079},
+       {0x7178, 0x8052},
+       {0x7179, 0x8075},
+       {0x717A, 0x8071},
+       {0x717B, 0x8983},
+       {0x717C, 0x9807},
+       {0x717D, 0x980E},
+       {0x717E, 0x980F},
+       {0x7221, 0x9821},
+       {0x7222, 0x981C},
+       {0x7223, 0x6F41},
+       {0x7224, 0x9826},
+       {0x7225, 0x9837},
+       {0x7226, 0x984E},
+       {0x7227, 0x9853},
+       {0x7228, 0x9873},
+       {0x7229, 0x9862},
+       {0x722A, 0x9859},
+       {0x722B, 0x9865},
+       {0x722C, 0x986C},
+       {0x722D, 0x9870},
+       {0x722E, 0x864D},
+       {0x722F, 0x8654},
+       {0x7230, 0x866C},
+       {0x7231, 0x87E3},
+       {0x7232, 0x8806},
+       {0x7233, 0x867A},
+       {0x7234, 0x867C},
+       {0x7235, 0x867B},
+       {0x7236, 0x86A8},
+       {0x7237, 0x868D},
+       {0x7238, 0x868B},
+       {0x7239, 0x8706},
+       {0x723A, 0x869D},
+       {0x723B, 0x86A7},
+       {0x723C, 0x86A3},
+       {0x723D, 0x86AA},
+       {0x723E, 0x8693},
+       {0x723F, 0x86A9},
+       {0x7240, 0x86B6},
+       {0x7241, 0x86C4},
+       {0x7242, 0x86B5},
+       {0x7243, 0x8823},
+       {0x7244, 0x86B0},
+       {0x7245, 0x86BA},
+       {0x7246, 0x86B1},
+       {0x7247, 0x86AF},
+       {0x7248, 0x86C9},
+       {0x7249, 0x87F6},
+       {0x724A, 0x86B4},
+       {0x724B, 0x86E9},
+       {0x724C, 0x86FA},
+       {0x724D, 0x87EF},
+       {0x724E, 0x86ED},
+       {0x724F, 0x8784},
+       {0x7250, 0x86D0},
+       {0x7251, 0x8713},
+       {0x7252, 0x86DE},
+       {0x7253, 0x8810},
+       {0x7254, 0x86DF},
+       {0x7255, 0x86D8},
+       {0x7256, 0x86D1},
+       {0x7257, 0x8703},
+       {0x7258, 0x8707},
+       {0x7259, 0x86F8},
+       {0x725A, 0x8708},
+       {0x725B, 0x870A},
+       {0x725C, 0x870D},
+       {0x725D, 0x8709},
+       {0x725E, 0x8723},
+       {0x725F, 0x873B},
+       {0x7260, 0x871E},
+       {0x7261, 0x8725},
+       {0x7262, 0x872E},
+       {0x7263, 0x871A},
+       {0x7264, 0x873E},
+       {0x7265, 0x87C8},
+       {0x7266, 0x8734},
+       {0x7267, 0x8731},
+       {0x7268, 0x8729},
+       {0x7269, 0x8737},
+       {0x726A, 0x873F},
+       {0x726B, 0x8782},
+       {0x726C, 0x8722},
+       {0x726D, 0x877D},
+       {0x726E, 0x8811},
+       {0x726F, 0x877B},
+       {0x7270, 0x8760},
+       {0x7271, 0x8770},
+       {0x7272, 0x874C},
+       {0x7273, 0x876E},
+       {0x7274, 0x878B},
+       {0x7275, 0x8753},
+       {0x7276, 0x8763},
+       {0x7277, 0x87BB},
+       {0x7278, 0x8764},
+       {0x7279, 0x8759},
+       {0x727A, 0x8765},
+       {0x727B, 0x8793},
+       {0x727C, 0x87AF},
+       {0x727D, 0x87CE},
+       {0x727E, 0x87D2},
+       {0x7321, 0x87C6},
+       {0x7322, 0x8788},
+       {0x7323, 0x8785},
+       {0x7324, 0x87AD},
+       {0x7325, 0x8797},
+       {0x7326, 0x8783},
+       {0x7327, 0x87AB},
+       {0x7328, 0x87E5},
+       {0x7329, 0x87AC},
+       {0x732A, 0x87B5},
+       {0x732B, 0x87B3},
+       {0x732C, 0x87CB},
+       {0x732D, 0x87D3},
+       {0x732E, 0x87BD},
+       {0x732F, 0x87D1},
+       {0x7330, 0x87C0},
+       {0x7331, 0x87CA},
+       {0x7332, 0x87DB},
+       {0x7333, 0x87EA},
+       {0x7334, 0x87E0},
+       {0x7335, 0x87EE},
+       {0x7336, 0x8816},
+       {0x7337, 0x8813},
+       {0x7338, 0x87FE},
+       {0x7339, 0x880A},
+       {0x733A, 0x881B},
+       {0x733B, 0x8821},
+       {0x733C, 0x8839},
+       {0x733D, 0x883C},
+       {0x733E, 0x7F36},
+       {0x733F, 0x7F4C},
+       {0x7340, 0x7F44},
+       {0x7341, 0x7F45},
+       {0x7342, 0x8210},
+       {0x7343, 0x7AFA},
+       {0x7344, 0x7AFD},
+       {0x7345, 0x7B08},
+       {0x7346, 0x7BE4},
+       {0x7347, 0x7B04},
+       {0x7348, 0x7B67},
+       {0x7349, 0x7B0A},
+       {0x734A, 0x7B2B},
+       {0x734B, 0x7B0F},
+       {0x734C, 0x7B47},
+       {0x734D, 0x7B38},
+       {0x734E, 0x7B2A},
+       {0x734F, 0x7B19},
+       {0x7350, 0x7B2E},
+       {0x7351, 0x7B31},
+       {0x7352, 0x7B20},
+       {0x7353, 0x7B25},
+       {0x7354, 0x7B24},
+       {0x7355, 0x7B33},
+       {0x7356, 0x7C69},
+       {0x7357, 0x7B1E},
+       {0x7358, 0x7B58},
+       {0x7359, 0x7BF3},
+       {0x735A, 0x7B45},
+       {0x735B, 0x7B75},
+       {0x735C, 0x7B4C},
+       {0x735D, 0x7B8F},
+       {0x735E, 0x7B60},
+       {0x735F, 0x7B6E},
+       {0x7360, 0x7B7B},
+       {0x7361, 0x7B62},
+       {0x7362, 0x7B72},
+       {0x7363, 0x7B71},
+       {0x7364, 0x7B90},
+       {0x7365, 0x7C00},
+       {0x7366, 0x7BCB},
+       {0x7367, 0x7BB8},
+       {0x7368, 0x7BAC},
+       {0x7369, 0x7B9D},
+       {0x736A, 0x7C5C},
+       {0x736B, 0x7B85},
+       {0x736C, 0x7C1E},
+       {0x736D, 0x7B9C},
+       {0x736E, 0x7BA2},
+       {0x736F, 0x7C2B},
+       {0x7370, 0x7BB4},
+       {0x7371, 0x7C23},
+       {0x7372, 0x7BC1},
+       {0x7373, 0x7BCC},
+       {0x7374, 0x7BDD},
+       {0x7375, 0x7BDA},
+       {0x7376, 0x7BE5},
+       {0x7377, 0x7BE6},
+       {0x7378, 0x7BEA},
+       {0x7379, 0x7C0C},
+       {0x737A, 0x7BFE},
+       {0x737B, 0x7BFC},
+       {0x737C, 0x7C0F},
+       {0x737D, 0x7C6A},
+       {0x737E, 0x7C0B},
+       {0x7421, 0x7C1F},
+       {0x7422, 0x7C2A},
+       {0x7423, 0x7C26},
+       {0x7424, 0x7C38},
+       {0x7425, 0x7C5F},
+       {0x7426, 0x7C40},
+       {0x7427, 0x81FE},
+       {0x7428, 0x8201},
+       {0x7429, 0x8202},
+       {0x742A, 0x8204},
+       {0x742B, 0x81EC},
+       {0x742C, 0x8844},
+       {0x742D, 0x8221},
+       {0x742E, 0x8222},
+       {0x742F, 0x8264},
+       {0x7430, 0x822D},
+       {0x7431, 0x822F},
+       {0x7432, 0x8228},
+       {0x7433, 0x822B},
+       {0x7434, 0x8238},
+       {0x7435, 0x826B},
+       {0x7436, 0x8233},
+       {0x7437, 0x8234},
+       {0x7438, 0x823E},
+       {0x7439, 0x8244},
+       {0x743A, 0x8249},
+       {0x743B, 0x824B},
+       {0x743C, 0x824F},
+       {0x743D, 0x825A},
+       {0x743E, 0x825F},
+       {0x743F, 0x8268},
+       {0x7440, 0x887E},
+       {0x7441, 0x88CA},
+       {0x7442, 0x8888},
+       {0x7443, 0x88D8},
+       {0x7444, 0x88DF},
+       {0x7445, 0x895E},
+       {0x7446, 0x7F9D},
+       {0x7447, 0x7FA5},
+       {0x7448, 0x7FA7},
+       {0x7449, 0x7FAF},
+       {0x744A, 0x7FB0},
+       {0x744B, 0x7FB2},
+       {0x744C, 0x7C7C},
+       {0x744D, 0x6549},
+       {0x744E, 0x7C91},
+       {0x744F, 0x7CF2},
+       {0x7450, 0x7CF6},
+       {0x7451, 0x7C9E},
+       {0x7452, 0x7CA2},
+       {0x7453, 0x7CB2},
+       {0x7454, 0x7CBC},
+       {0x7455, 0x7CBD},
+       {0x7456, 0x7CDD},
+       {0x7457, 0x7CC7},
+       {0x7458, 0x7CCC},
+       {0x7459, 0x7CCD},
+       {0x745A, 0x7CC8},
+       {0x745B, 0x7CC5},
+       {0x745C, 0x7CD7},
+       {0x745D, 0x7CE8},
+       {0x745E, 0x826E},
+       {0x745F, 0x66A8},
+       {0x7460, 0x7FBF},
+       {0x7461, 0x7FCE},
+       {0x7462, 0x7FD5},
+       {0x7463, 0x7FE5},
+       {0x7464, 0x7FE1},
+       {0x7465, 0x7FE6},
+       {0x7466, 0x7FE9},
+       {0x7467, 0x7FEE},
+       {0x7468, 0x7FF3},
+       {0x7469, 0x7CF8},
+       {0x746A, 0x7E36},
+       {0x746B, 0x7DA6},
+       {0x746C, 0x7DAE},
+       {0x746D, 0x7E47},
+       {0x746E, 0x7E9B},
+       {0x746F, 0x9EA9},
+       {0x7470, 0x9EB4},
+       {0x7471, 0x8D73},
+       {0x7472, 0x8D84},
+       {0x7473, 0x8D94},
+       {0x7474, 0x8D91},
+       {0x7475, 0x8DB2},
+       {0x7476, 0x8D67},
+       {0x7477, 0x8D6D},
+       {0x7478, 0x8C47},
+       {0x7479, 0x8C49},
+       {0x747A, 0x914A},
+       {0x747B, 0x9150},
+       {0x747C, 0x914E},
+       {0x747D, 0x914F},
+       {0x747E, 0x9164},
+       {0x7521, 0x9162},
+       {0x7522, 0x9161},
+       {0x7523, 0x9170},
+       {0x7524, 0x9169},
+       {0x7525, 0x916F},
+       {0x7526, 0x91C5},
+       {0x7527, 0x91C3},
+       {0x7528, 0x9172},
+       {0x7529, 0x9174},
+       {0x752A, 0x9179},
+       {0x752B, 0x918C},
+       {0x752C, 0x9185},
+       {0x752D, 0x9190},
+       {0x752E, 0x918D},
+       {0x752F, 0x9191},
+       {0x7530, 0x91A2},
+       {0x7531, 0x91A3},
+       {0x7532, 0x91AA},
+       {0x7533, 0x91AD},
+       {0x7534, 0x91AE},
+       {0x7535, 0x91AF},
+       {0x7536, 0x91B5},
+       {0x7537, 0x91B4},
+       {0x7538, 0x91BA},
+       {0x7539, 0x8C55},
+       {0x753A, 0x9E7A},
+       {0x753B, 0x8E89},
+       {0x753C, 0x8DEB},
+       {0x753D, 0x8E05},
+       {0x753E, 0x8E59},
+       {0x753F, 0x8E69},
+       {0x7540, 0x8DB5},
+       {0x7541, 0x8DBF},
+       {0x7542, 0x8DBC},
+       {0x7543, 0x8DBA},
+       {0x7544, 0x8E4C},
+       {0x7545, 0x8DD6},
+       {0x7546, 0x8DD7},
+       {0x7547, 0x8DDA},
+       {0x7548, 0x8E92},
+       {0x7549, 0x8DCE},
+       {0x754A, 0x8DCF},
+       {0x754B, 0x8DDB},
+       {0x754C, 0x8DC6},
+       {0x754D, 0x8DEC},
+       {0x754E, 0x8E7A},
+       {0x754F, 0x8E55},
+       {0x7550, 0x8DE3},
+       {0x7551, 0x8E9A},
+       {0x7552, 0x8E8B},
+       {0x7553, 0x8DE4},
+       {0x7554, 0x8E09},
+       {0x7555, 0x8DFD},
+       {0x7556, 0x8E14},
+       {0x7557, 0x8E1D},
+       {0x7558, 0x8E1F},
+       {0x7559, 0x8E93},
+       {0x755A, 0x8E2E},
+       {0x755B, 0x8E23},
+       {0x755C, 0x8E91},
+       {0x755D, 0x8E3A},
+       {0x755E, 0x8E40},
+       {0x755F, 0x8E39},
+       {0x7560, 0x8E35},
+       {0x7561, 0x8E3D},
+       {0x7562, 0x8E31},
+       {0x7563, 0x8E49},
+       {0x7564, 0x8E41},
+       {0x7565, 0x8E42},
+       {0x7566, 0x8EA1},
+       {0x7567, 0x8E63},
+       {0x7568, 0x8E4A},
+       {0x7569, 0x8E70},
+       {0x756A, 0x8E76},
+       {0x756B, 0x8E7C},
+       {0x756C, 0x8E6F},
+       {0x756D, 0x8E74},
+       {0x756E, 0x8E85},
+       {0x756F, 0x8EAA},
+       {0x7570, 0x8E94},
+       {0x7571, 0x8E90},
+       {0x7572, 0x8EA6},
+       {0x7573, 0x8E9E},
+       {0x7574, 0x8C78},
+       {0x7575, 0x8C82},
+       {0x7576, 0x8C8A},
+       {0x7577, 0x8C85},
+       {0x7578, 0x8C98},
+       {0x7579, 0x8C94},
+       {0x757A, 0x659B},
+       {0x757B, 0x89D6},
+       {0x757C, 0x89F4},
+       {0x757D, 0x89DA},
+       {0x757E, 0x89DC},
+       {0x7621, 0x89E5},
+       {0x7622, 0x89EB},
+       {0x7623, 0x89F6},
+       {0x7624, 0x8A3E},
+       {0x7625, 0x8B26},
+       {0x7626, 0x975A},
+       {0x7627, 0x96E9},
+       {0x7628, 0x9742},
+       {0x7629, 0x96EF},
+       {0x762A, 0x9706},
+       {0x762B, 0x973D},
+       {0x762C, 0x9708},
+       {0x762D, 0x970F},
+       {0x762E, 0x970E},
+       {0x762F, 0x972A},
+       {0x7630, 0x9744},
+       {0x7631, 0x9730},
+       {0x7632, 0x973E},
+       {0x7633, 0x9F54},
+       {0x7634, 0x9F5F},
+       {0x7635, 0x9F59},
+       {0x7636, 0x9F60},
+       {0x7637, 0x9F5C},
+       {0x7638, 0x9F66},
+       {0x7639, 0x9F6C},
+       {0x763A, 0x9F6A},
+       {0x763B, 0x9F77},
+       {0x763C, 0x9EFD},
+       {0x763D, 0x9EFF},
+       {0x763E, 0x9F09},
+       {0x763F, 0x96B9},
+       {0x7640, 0x96BC},
+       {0x7641, 0x96BD},
+       {0x7642, 0x96CE},
+       {0x7643, 0x96D2},
+       {0x7644, 0x77BF},
+       {0x7645, 0x8B8E},
+       {0x7646, 0x928E},
+       {0x7647, 0x947E},
+       {0x7648, 0x92C8},
+       {0x7649, 0x93E8},
+       {0x764A, 0x936A},
+       {0x764B, 0x93CA},
+       {0x764C, 0x938F},
+       {0x764D, 0x943E},
+       {0x764E, 0x946B},
+       {0x764F, 0x9B77},
+       {0x7650, 0x9B74},
+       {0x7651, 0x9B81},
+       {0x7652, 0x9B83},
+       {0x7653, 0x9B8E},
+       {0x7654, 0x9C78},
+       {0x7655, 0x7A4C},
+       {0x7656, 0x9B92},
+       {0x7657, 0x9C5F},
+       {0x7658, 0x9B90},
+       {0x7659, 0x9BAD},
+       {0x765A, 0x9B9A},
+       {0x765B, 0x9BAA},
+       {0x765C, 0x9B9E},
+       {0x765D, 0x9C6D},
+       {0x765E, 0x9BAB},
+       {0x765F, 0x9B9D},
+       {0x7660, 0x9C58},
+       {0x7661, 0x9BC1},
+       {0x7662, 0x9C7A},
+       {0x7663, 0x9C31},
+       {0x7664, 0x9C39},
+       {0x7665, 0x9C23},
+       {0x7666, 0x9C37},
+       {0x7667, 0x9BC0},
+       {0x7668, 0x9BCA},
+       {0x7669, 0x9BC7},
+       {0x766A, 0x9BFD},
+       {0x766B, 0x9BD6},
+       {0x766C, 0x9BEA},
+       {0x766D, 0x9BEB},
+       {0x766E, 0x9BE1},
+       {0x766F, 0x9BE4},
+       {0x7670, 0x9BE7},
+       {0x7671, 0x9BDD},
+       {0x7672, 0x9BE2},
+       {0x7673, 0x9BF0},
+       {0x7674, 0x9BDB},
+       {0x7675, 0x9BF4},
+       {0x7676, 0x9BD4},
+       {0x7677, 0x9C5D},
+       {0x7678, 0x9C08},
+       {0x7679, 0x9C10},
+       {0x767A, 0x9C0D},
+       {0x767B, 0x9C12},
+       {0x767C, 0x9C09},
+       {0x767D, 0x9BFF},
+       {0x767E, 0x9C20},
+       {0x7721, 0x9C32},
+       {0x7722, 0x9C2D},
+       {0x7723, 0x9C28},
+       {0x7724, 0x9C25},
+       {0x7725, 0x9C29},
+       {0x7726, 0x9C33},
+       {0x7727, 0x9C3E},
+       {0x7728, 0x9C48},
+       {0x7729, 0x9C3B},
+       {0x772A, 0x9C35},
+       {0x772B, 0x9C45},
+       {0x772C, 0x9C56},
+       {0x772D, 0x9C54},
+       {0x772E, 0x9C52},
+       {0x772F, 0x9C67},
+       {0x7730, 0x977C},
+       {0x7731, 0x9785},
+       {0x7732, 0x97C3},
+       {0x7733, 0x97BD},
+       {0x7734, 0x9794},
+       {0x7735, 0x97C9},
+       {0x7736, 0x97AB},
+       {0x7737, 0x97A3},
+       {0x7738, 0x97B2},
+       {0x7739, 0x97B4},
+       {0x773A, 0x9AB1},
+       {0x773B, 0x9AB0},
+       {0x773C, 0x9AB7},
+       {0x773D, 0x9DBB},
+       {0x773E, 0x9AB6},
+       {0x773F, 0x9ABA},
+       {0x7740, 0x9ABC},
+       {0x7741, 0x9AC1},
+       {0x7742, 0x9AC0},
+       {0x7743, 0x9ACF},
+       {0x7744, 0x9AC2},
+       {0x7745, 0x9AD6},
+       {0x7746, 0x9AD5},
+       {0x7747, 0x9AD1},
+       {0x7748, 0x9B45},
+       {0x7749, 0x9B43},
+       {0x774A, 0x9B58},
+       {0x774B, 0x9B4E},
+       {0x774C, 0x9B48},
+       {0x774D, 0x9B4D},
+       {0x774E, 0x9B51},
+       {0x774F, 0x9957},
+       {0x7750, 0x995C},
+       {0x7751, 0x992E},
+       {0x7752, 0x9955},
+       {0x7753, 0x9954},
+       {0x7754, 0x9ADF},
+       {0x7755, 0x9AE1},
+       {0x7756, 0x9AE6},
+       {0x7757, 0x9AEF},
+       {0x7758, 0x9AEB},
+       {0x7759, 0x9AFB},
+       {0x775A, 0x9AED},
+       {0x775B, 0x9AF9},
+       {0x775C, 0x9B08},
+       {0x775D, 0x9B0F},
+       {0x775E, 0x9B22},
+       {0x775F, 0x9B1F},
+       {0x7760, 0x9B23},
+       {0x7761, 0x4E48},
+       {0x7762, 0x9EBE},
+       {0x7763, 0x7E3B},
+       {0x7764, 0x9E82},
+       {0x7765, 0x9E87},
+       {0x7766, 0x9E88},
+       {0x7767, 0x9E8B},
+       {0x7768, 0x9E92},
+       {0x7769, 0x93D6},
+       {0x776A, 0x9E9D},
+       {0x776B, 0x9E9F},
+       {0x776C, 0x9EDB},
+       {0x776D, 0x9EDC},
+       {0x776E, 0x9EDD},
+       {0x776F, 0x9EE0},
+       {0x7770, 0x9EDF},
+       {0x7771, 0x9EE2},
+       {0x7772, 0x9EF7},
+       {0x7773, 0x9EE7},
+       {0x7774, 0x9EE5},
+       {0x7775, 0x9EF2},
+       {0x7776, 0x9EEF},
+       {0x7777, 0x9F22},
+       {0x7778, 0x9F2C},
+       {0x7779, 0x9F2F},
+       {0x777A, 0x9F39},
+       {0x777B, 0x9F37},
+       {0x777C, 0x9F3D},
+       {0x777D, 0x9F3E},
+       {0x777E, 0x9F44},
+       {0x7821, 0x896C},
+       {0x7822, 0x95C6},
+       {0x7823, 0x9336},
+       {0x7824, 0x5F46},
+       {0x7825, 0x8514},
+       {0x7826, 0x7E94},
+       {0x7827, 0x5382},
+       {0x7828, 0x51B2},
+       {0x7829, 0x4E11},
+       {0x782A, 0x9F63},
+       {0x782B, 0x5679},
+       {0x782C, 0x515A},
+       {0x782D, 0x6DC0},
+       {0x782E, 0x9F15},
+       {0x782F, 0x6597},
+       {0x7830, 0x5641},
+       {0x7831, 0x9AEE},
+       {0x7832, 0x8303},
+       {0x7833, 0x4E30},
+       {0x7834, 0x8907},
+       {0x7835, 0x5E72},
+       {0x7836, 0x7A40},
+       {0x7837, 0x98B3},
+       {0x7838, 0x5E7F},
+       {0x7839, 0x95A4},
+       {0x783A, 0x9B0D},
+       {0x783B, 0x5212},
+       {0x783C, 0x8FF4},
+       {0x783D, 0x5F59},
+       {0x783E, 0x7A6B},
+       {0x783F, 0x98E2},
+       {0x7840, 0x51E0},
+       {0x7841, 0x50A2},
+       {0x7842, 0x4EF7},
+       {0x7843, 0x8350},
+       {0x7844, 0x8591},
+       {0x7845, 0x5118},
+       {0x7846, 0x636E},
+       {0x7847, 0x6372},
+       {0x7848, 0x524B},
+       {0x7849, 0x5938},
+       {0x784A, 0x774F},
+       {0x784B, 0x8721},
+       {0x784C, 0x814A},
+       {0x784D, 0x7E8D},
+       {0x784E, 0x91CC},
+       {0x784F, 0x66C6},
+       {0x7850, 0x5E18},
+       {0x7851, 0x77AD},
+       {0x7852, 0x9E75},
+       {0x7853, 0x56C9},
+       {0x7854, 0x9EF4},
+       {0x7855, 0x6FDB},
+       {0x7856, 0x61DE},
+       {0x7857, 0x77C7},
+       {0x7858, 0x7030},
+       {0x7859, 0x9EB5},
+       {0x785A, 0x884A},
+       {0x785B, 0x95E2},
+       {0x785C, 0x82F9},
+       {0x785D, 0x51ED},
+       {0x785E, 0x6251},
+       {0x785F, 0x4EC6},
+       {0x7860, 0x6734},
+       {0x7861, 0x97C6},
+       {0x7862, 0x7C64},
+       {0x7863, 0x7E34},
+       {0x7864, 0x97A6},
+       {0x7865, 0x9EAF},
+       {0x7866, 0x786E},
+       {0x7867, 0x820D},
+       {0x7868, 0x672F},
+       {0x7869, 0x677E},
+       {0x786A, 0x56CC},
+       {0x786B, 0x53F0},
+       {0x786C, 0x98B1},
+       {0x786D, 0x6AAF},
+       {0x786E, 0x7F4E},
+       {0x786F, 0x6D82},
+       {0x7870, 0x7CF0},
+       {0x7871, 0x4E07},
+       {0x7872, 0x4FC2},
+       {0x7873, 0x7E6B},
+       {0x7874, 0x9E79},
+       {0x7875, 0x56AE},
+       {0x7876, 0x9B1A},
+       {0x7877, 0x846F},
+       {0x7878, 0x53F6},
+       {0x7879, 0x90C1},
+       {0x787A, 0x79A6},
+       {0x787B, 0x7C72},
+       {0x787C, 0x613F},
+       {0x787D, 0x4E91},
+       {0x787E, 0x9AD2},
+       {0x7921, 0x75C7},
+       {0x7922, 0x96BB},
+       {0x7923, 0x53EA},
+       {0x7924, 0x7DFB},
+       {0x7925, 0x88FD},
+       {0x7926, 0x79CD},
+       {0x7927, 0x7843},
+       {0x7928, 0x7B51},
+       {0x7929, 0x51C6},
diff --git a/vte/src/unitable.GB2312 b/vte/src/unitable.GB2312
new file mode 100644
index 0000000..2a18d39
--- /dev/null
+++ b/vte/src/unitable.GB2312
@@ -0,0 +1,7446 @@
+       /* generated file -- do not edit */
+       {0x2121, 0x3000},
+       {0x2122, 0x3001},
+       {0x2123, 0x3002},
+       {0x2124, 0x30FB},
+       {0x2125, 0x02C9},
+       {0x2126, 0x02C7},
+       {0x2127, 0x00A8},
+       {0x2128, 0x3003},
+       {0x2129, 0x3005},
+       {0x212A, 0x2015},
+       {0x212B, 0xFF5E},
+       {0x212C, 0x2016},
+       {0x212D, 0x2026},
+       {0x212E, 0x2018},
+       {0x212F, 0x2019},
+       {0x2130, 0x201C},
+       {0x2131, 0x201D},
+       {0x2132, 0x3014},
+       {0x2133, 0x3015},
+       {0x2134, 0x3008},
+       {0x2135, 0x3009},
+       {0x2136, 0x300A},
+       {0x2137, 0x300B},
+       {0x2138, 0x300C},
+       {0x2139, 0x300D},
+       {0x213A, 0x300E},
+       {0x213B, 0x300F},
+       {0x213C, 0x3016},
+       {0x213D, 0x3017},
+       {0x213E, 0x3010},
+       {0x213F, 0x3011},
+       {0x2140, 0x00B1},
+       {0x2141, 0x00D7},
+       {0x2142, 0x00F7},
+       {0x2143, 0x2236},
+       {0x2144, 0x2227},
+       {0x2145, 0x2228},
+       {0x2146, 0x2211},
+       {0x2147, 0x220F},
+       {0x2148, 0x222A},
+       {0x2149, 0x2229},
+       {0x214A, 0x2208},
+       {0x214B, 0x2237},
+       {0x214C, 0x221A},
+       {0x214D, 0x22A5},
+       {0x214E, 0x2225},
+       {0x214F, 0x2220},
+       {0x2150, 0x2312},
+       {0x2151, 0x2299},
+       {0x2152, 0x222B},
+       {0x2153, 0x222E},
+       {0x2154, 0x2261},
+       {0x2155, 0x224C},
+       {0x2156, 0x2248},
+       {0x2157, 0x223D},
+       {0x2158, 0x221D},
+       {0x2159, 0x2260},
+       {0x215A, 0x226E},
+       {0x215B, 0x226F},
+       {0x215C, 0x2264},
+       {0x215D, 0x2265},
+       {0x215E, 0x221E},
+       {0x215F, 0x2235},
+       {0x2160, 0x2234},
+       {0x2161, 0x2642},
+       {0x2162, 0x2640},
+       {0x2163, 0x00B0},
+       {0x2164, 0x2032},
+       {0x2165, 0x2033},
+       {0x2166, 0x2103},
+       {0x2167, 0xFF04},
+       {0x2168, 0x00A4},
+       {0x2169, 0xFFE0},
+       {0x216A, 0xFFE1},
+       {0x216B, 0x2030},
+       {0x216C, 0x00A7},
+       {0x216D, 0x2116},
+       {0x216E, 0x2606},
+       {0x216F, 0x2605},
+       {0x2170, 0x25CB},
+       {0x2171, 0x25CF},
+       {0x2172, 0x25CE},
+       {0x2173, 0x25C7},
+       {0x2174, 0x25C6},
+       {0x2175, 0x25A1},
+       {0x2176, 0x25A0},
+       {0x2177, 0x25B3},
+       {0x2178, 0x25B2},
+       {0x2179, 0x203B},
+       {0x217A, 0x2192},
+       {0x217B, 0x2190},
+       {0x217C, 0x2191},
+       {0x217D, 0x2193},
+       {0x217E, 0x3013},
+       {0x2231, 0x2488},
+       {0x2232, 0x2489},
+       {0x2233, 0x248A},
+       {0x2234, 0x248B},
+       {0x2235, 0x248C},
+       {0x2236, 0x248D},
+       {0x2237, 0x248E},
+       {0x2238, 0x248F},
+       {0x2239, 0x2490},
+       {0x223A, 0x2491},
+       {0x223B, 0x2492},
+       {0x223C, 0x2493},
+       {0x223D, 0x2494},
+       {0x223E, 0x2495},
+       {0x223F, 0x2496},
+       {0x2240, 0x2497},
+       {0x2241, 0x2498},
+       {0x2242, 0x2499},
+       {0x2243, 0x249A},
+       {0x2244, 0x249B},
+       {0x2245, 0x2474},
+       {0x2246, 0x2475},
+       {0x2247, 0x2476},
+       {0x2248, 0x2477},
+       {0x2249, 0x2478},
+       {0x224A, 0x2479},
+       {0x224B, 0x247A},
+       {0x224C, 0x247B},
+       {0x224D, 0x247C},
+       {0x224E, 0x247D},
+       {0x224F, 0x247E},
+       {0x2250, 0x247F},
+       {0x2251, 0x2480},
+       {0x2252, 0x2481},
+       {0x2253, 0x2482},
+       {0x2254, 0x2483},
+       {0x2255, 0x2484},
+       {0x2256, 0x2485},
+       {0x2257, 0x2486},
+       {0x2258, 0x2487},
+       {0x2259, 0x2460},
+       {0x225A, 0x2461},
+       {0x225B, 0x2462},
+       {0x225C, 0x2463},
+       {0x225D, 0x2464},
+       {0x225E, 0x2465},
+       {0x225F, 0x2466},
+       {0x2260, 0x2467},
+       {0x2261, 0x2468},
+       {0x2262, 0x2469},
+       {0x2265, 0x3220},
+       {0x2266, 0x3221},
+       {0x2267, 0x3222},
+       {0x2268, 0x3223},
+       {0x2269, 0x3224},
+       {0x226A, 0x3225},
+       {0x226B, 0x3226},
+       {0x226C, 0x3227},
+       {0x226D, 0x3228},
+       {0x226E, 0x3229},
+       {0x2271, 0x2160},
+       {0x2272, 0x2161},
+       {0x2273, 0x2162},
+       {0x2274, 0x2163},
+       {0x2275, 0x2164},
+       {0x2276, 0x2165},
+       {0x2277, 0x2166},
+       {0x2278, 0x2167},
+       {0x2279, 0x2168},
+       {0x227A, 0x2169},
+       {0x227B, 0x216A},
+       {0x227C, 0x216B},
+       {0x2321, 0xFF01},
+       {0x2322, 0xFF02},
+       {0x2323, 0xFF03},
+       {0x2324, 0xFFE5},
+       {0x2325, 0xFF05},
+       {0x2326, 0xFF06},
+       {0x2327, 0xFF07},
+       {0x2328, 0xFF08},
+       {0x2329, 0xFF09},
+       {0x232A, 0xFF0A},
+       {0x232B, 0xFF0B},
+       {0x232C, 0xFF0C},
+       {0x232D, 0xFF0D},
+       {0x232E, 0xFF0E},
+       {0x232F, 0xFF0F},
+       {0x2330, 0xFF10},
+       {0x2331, 0xFF11},
+       {0x2332, 0xFF12},
+       {0x2333, 0xFF13},
+       {0x2334, 0xFF14},
+       {0x2335, 0xFF15},
+       {0x2336, 0xFF16},
+       {0x2337, 0xFF17},
+       {0x2338, 0xFF18},
+       {0x2339, 0xFF19},
+       {0x233A, 0xFF1A},
+       {0x233B, 0xFF1B},
+       {0x233C, 0xFF1C},
+       {0x233D, 0xFF1D},
+       {0x233E, 0xFF1E},
+       {0x233F, 0xFF1F},
+       {0x2340, 0xFF20},
+       {0x2341, 0xFF21},
+       {0x2342, 0xFF22},
+       {0x2343, 0xFF23},
+       {0x2344, 0xFF24},
+       {0x2345, 0xFF25},
+       {0x2346, 0xFF26},
+       {0x2347, 0xFF27},
+       {0x2348, 0xFF28},
+       {0x2349, 0xFF29},
+       {0x234A, 0xFF2A},
+       {0x234B, 0xFF2B},
+       {0x234C, 0xFF2C},
+       {0x234D, 0xFF2D},
+       {0x234E, 0xFF2E},
+       {0x234F, 0xFF2F},
+       {0x2350, 0xFF30},
+       {0x2351, 0xFF31},
+       {0x2352, 0xFF32},
+       {0x2353, 0xFF33},
+       {0x2354, 0xFF34},
+       {0x2355, 0xFF35},
+       {0x2356, 0xFF36},
+       {0x2357, 0xFF37},
+       {0x2358, 0xFF38},
+       {0x2359, 0xFF39},
+       {0x235A, 0xFF3A},
+       {0x235B, 0xFF3B},
+       {0x235C, 0xFF3C},
+       {0x235D, 0xFF3D},
+       {0x235E, 0xFF3E},
+       {0x235F, 0xFF3F},
+       {0x2360, 0xFF40},
+       {0x2361, 0xFF41},
+       {0x2362, 0xFF42},
+       {0x2363, 0xFF43},
+       {0x2364, 0xFF44},
+       {0x2365, 0xFF45},
+       {0x2366, 0xFF46},
+       {0x2367, 0xFF47},
+       {0x2368, 0xFF48},
+       {0x2369, 0xFF49},
+       {0x236A, 0xFF4A},
+       {0x236B, 0xFF4B},
+       {0x236C, 0xFF4C},
+       {0x236D, 0xFF4D},
+       {0x236E, 0xFF4E},
+       {0x236F, 0xFF4F},
+       {0x2370, 0xFF50},
+       {0x2371, 0xFF51},
+       {0x2372, 0xFF52},
+       {0x2373, 0xFF53},
+       {0x2374, 0xFF54},
+       {0x2375, 0xFF55},
+       {0x2376, 0xFF56},
+       {0x2377, 0xFF57},
+       {0x2378, 0xFF58},
+       {0x2379, 0xFF59},
+       {0x237A, 0xFF5A},
+       {0x237B, 0xFF5B},
+       {0x237C, 0xFF5C},
+       {0x237D, 0xFF5D},
+       {0x237E, 0xFFE3},
+       {0x2421, 0x3041},
+       {0x2422, 0x3042},
+       {0x2423, 0x3043},
+       {0x2424, 0x3044},
+       {0x2425, 0x3045},
+       {0x2426, 0x3046},
+       {0x2427, 0x3047},
+       {0x2428, 0x3048},
+       {0x2429, 0x3049},
+       {0x242A, 0x304A},
+       {0x242B, 0x304B},
+       {0x242C, 0x304C},
+       {0x242D, 0x304D},
+       {0x242E, 0x304E},
+       {0x242F, 0x304F},
+       {0x2430, 0x3050},
+       {0x2431, 0x3051},
+       {0x2432, 0x3052},
+       {0x2433, 0x3053},
+       {0x2434, 0x3054},
+       {0x2435, 0x3055},
+       {0x2436, 0x3056},
+       {0x2437, 0x3057},
+       {0x2438, 0x3058},
+       {0x2439, 0x3059},
+       {0x243A, 0x305A},
+       {0x243B, 0x305B},
+       {0x243C, 0x305C},
+       {0x243D, 0x305D},
+       {0x243E, 0x305E},
+       {0x243F, 0x305F},
+       {0x2440, 0x3060},
+       {0x2441, 0x3061},
+       {0x2442, 0x3062},
+       {0x2443, 0x3063},
+       {0x2444, 0x3064},
+       {0x2445, 0x3065},
+       {0x2446, 0x3066},
+       {0x2447, 0x3067},
+       {0x2448, 0x3068},
+       {0x2449, 0x3069},
+       {0x244A, 0x306A},
+       {0x244B, 0x306B},
+       {0x244C, 0x306C},
+       {0x244D, 0x306D},
+       {0x244E, 0x306E},
+       {0x244F, 0x306F},
+       {0x2450, 0x3070},
+       {0x2451, 0x3071},
+       {0x2452, 0x3072},
+       {0x2453, 0x3073},
+       {0x2454, 0x3074},
+       {0x2455, 0x3075},
+       {0x2456, 0x3076},
+       {0x2457, 0x3077},
+       {0x2458, 0x3078},
+       {0x2459, 0x3079},
+       {0x245A, 0x307A},
+       {0x245B, 0x307B},
+       {0x245C, 0x307C},
+       {0x245D, 0x307D},
+       {0x245E, 0x307E},
+       {0x245F, 0x307F},
+       {0x2460, 0x3080},
+       {0x2461, 0x3081},
+       {0x2462, 0x3082},
+       {0x2463, 0x3083},
+       {0x2464, 0x3084},
+       {0x2465, 0x3085},
+       {0x2466, 0x3086},
+       {0x2467, 0x3087},
+       {0x2468, 0x3088},
+       {0x2469, 0x3089},
+       {0x246A, 0x308A},
+       {0x246B, 0x308B},
+       {0x246C, 0x308C},
+       {0x246D, 0x308D},
+       {0x246E, 0x308E},
+       {0x246F, 0x308F},
+       {0x2470, 0x3090},
+       {0x2471, 0x3091},
+       {0x2472, 0x3092},
+       {0x2473, 0x3093},
+       {0x2521, 0x30A1},
+       {0x2522, 0x30A2},
+       {0x2523, 0x30A3},
+       {0x2524, 0x30A4},
+       {0x2525, 0x30A5},
+       {0x2526, 0x30A6},
+       {0x2527, 0x30A7},
+       {0x2528, 0x30A8},
+       {0x2529, 0x30A9},
+       {0x252A, 0x30AA},
+       {0x252B, 0x30AB},
+       {0x252C, 0x30AC},
+       {0x252D, 0x30AD},
+       {0x252E, 0x30AE},
+       {0x252F, 0x30AF},
+       {0x2530, 0x30B0},
+       {0x2531, 0x30B1},
+       {0x2532, 0x30B2},
+       {0x2533, 0x30B3},
+       {0x2534, 0x30B4},
+       {0x2535, 0x30B5},
+       {0x2536, 0x30B6},
+       {0x2537, 0x30B7},
+       {0x2538, 0x30B8},
+       {0x2539, 0x30B9},
+       {0x253A, 0x30BA},
+       {0x253B, 0x30BB},
+       {0x253C, 0x30BC},
+       {0x253D, 0x30BD},
+       {0x253E, 0x30BE},
+       {0x253F, 0x30BF},
+       {0x2540, 0x30C0},
+       {0x2541, 0x30C1},
+       {0x2542, 0x30C2},
+       {0x2543, 0x30C3},
+       {0x2544, 0x30C4},
+       {0x2545, 0x30C5},
+       {0x2546, 0x30C6},
+       {0x2547, 0x30C7},
+       {0x2548, 0x30C8},
+       {0x2549, 0x30C9},
+       {0x254A, 0x30CA},
+       {0x254B, 0x30CB},
+       {0x254C, 0x30CC},
+       {0x254D, 0x30CD},
+       {0x254E, 0x30CE},
+       {0x254F, 0x30CF},
+       {0x2550, 0x30D0},
+       {0x2551, 0x30D1},
+       {0x2552, 0x30D2},
+       {0x2553, 0x30D3},
+       {0x2554, 0x30D4},
+       {0x2555, 0x30D5},
+       {0x2556, 0x30D6},
+       {0x2557, 0x30D7},
+       {0x2558, 0x30D8},
+       {0x2559, 0x30D9},
+       {0x255A, 0x30DA},
+       {0x255B, 0x30DB},
+       {0x255C, 0x30DC},
+       {0x255D, 0x30DD},
+       {0x255E, 0x30DE},
+       {0x255F, 0x30DF},
+       {0x2560, 0x30E0},
+       {0x2561, 0x30E1},
+       {0x2562, 0x30E2},
+       {0x2563, 0x30E3},
+       {0x2564, 0x30E4},
+       {0x2565, 0x30E5},
+       {0x2566, 0x30E6},
+       {0x2567, 0x30E7},
+       {0x2568, 0x30E8},
+       {0x2569, 0x30E9},
+       {0x256A, 0x30EA},
+       {0x256B, 0x30EB},
+       {0x256C, 0x30EC},
+       {0x256D, 0x30ED},
+       {0x256E, 0x30EE},
+       {0x256F, 0x30EF},
+       {0x2570, 0x30F0},
+       {0x2571, 0x30F1},
+       {0x2572, 0x30F2},
+       {0x2573, 0x30F3},
+       {0x2574, 0x30F4},
+       {0x2575, 0x30F5},
+       {0x2576, 0x30F6},
+       {0x2621, 0x0391},
+       {0x2622, 0x0392},
+       {0x2623, 0x0393},
+       {0x2624, 0x0394},
+       {0x2625, 0x0395},
+       {0x2626, 0x0396},
+       {0x2627, 0x0397},
+       {0x2628, 0x0398},
+       {0x2629, 0x0399},
+       {0x262A, 0x039A},
+       {0x262B, 0x039B},
+       {0x262C, 0x039C},
+       {0x262D, 0x039D},
+       {0x262E, 0x039E},
+       {0x262F, 0x039F},
+       {0x2630, 0x03A0},
+       {0x2631, 0x03A1},
+       {0x2632, 0x03A3},
+       {0x2633, 0x03A4},
+       {0x2634, 0x03A5},
+       {0x2635, 0x03A6},
+       {0x2636, 0x03A7},
+       {0x2637, 0x03A8},
+       {0x2638, 0x03A9},
+       {0x2641, 0x03B1},
+       {0x2642, 0x03B2},
+       {0x2643, 0x03B3},
+       {0x2644, 0x03B4},
+       {0x2645, 0x03B5},
+       {0x2646, 0x03B6},
+       {0x2647, 0x03B7},
+       {0x2648, 0x03B8},
+       {0x2649, 0x03B9},
+       {0x264A, 0x03BA},
+       {0x264B, 0x03BB},
+       {0x264C, 0x03BC},
+       {0x264D, 0x03BD},
+       {0x264E, 0x03BE},
+       {0x264F, 0x03BF},
+       {0x2650, 0x03C0},
+       {0x2651, 0x03C1},
+       {0x2652, 0x03C3},
+       {0x2653, 0x03C4},
+       {0x2654, 0x03C5},
+       {0x2655, 0x03C6},
+       {0x2656, 0x03C7},
+       {0x2657, 0x03C8},
+       {0x2658, 0x03C9},
+       {0x2721, 0x0410},
+       {0x2722, 0x0411},
+       {0x2723, 0x0412},
+       {0x2724, 0x0413},
+       {0x2725, 0x0414},
+       {0x2726, 0x0415},
+       {0x2727, 0x0401},
+       {0x2728, 0x0416},
+       {0x2729, 0x0417},
+       {0x272A, 0x0418},
+       {0x272B, 0x0419},
+       {0x272C, 0x041A},
+       {0x272D, 0x041B},
+       {0x272E, 0x041C},
+       {0x272F, 0x041D},
+       {0x2730, 0x041E},
+       {0x2731, 0x041F},
+       {0x2732, 0x0420},
+       {0x2733, 0x0421},
+       {0x2734, 0x0422},
+       {0x2735, 0x0423},
+       {0x2736, 0x0424},
+       {0x2737, 0x0425},
+       {0x2738, 0x0426},
+       {0x2739, 0x0427},
+       {0x273A, 0x0428},
+       {0x273B, 0x0429},
+       {0x273C, 0x042A},
+       {0x273D, 0x042B},
+       {0x273E, 0x042C},
+       {0x273F, 0x042D},
+       {0x2740, 0x042E},
+       {0x2741, 0x042F},
+       {0x2751, 0x0430},
+       {0x2752, 0x0431},
+       {0x2753, 0x0432},
+       {0x2754, 0x0433},
+       {0x2755, 0x0434},
+       {0x2756, 0x0435},
+       {0x2757, 0x0451},
+       {0x2758, 0x0436},
+       {0x2759, 0x0437},
+       {0x275A, 0x0438},
+       {0x275B, 0x0439},
+       {0x275C, 0x043A},
+       {0x275D, 0x043B},
+       {0x275E, 0x043C},
+       {0x275F, 0x043D},
+       {0x2760, 0x043E},
+       {0x2761, 0x043F},
+       {0x2762, 0x0440},
+       {0x2763, 0x0441},
+       {0x2764, 0x0442},
+       {0x2765, 0x0443},
+       {0x2766, 0x0444},
+       {0x2767, 0x0445},
+       {0x2768, 0x0446},
+       {0x2769, 0x0447},
+       {0x276A, 0x0448},
+       {0x276B, 0x0449},
+       {0x276C, 0x044A},
+       {0x276D, 0x044B},
+       {0x276E, 0x044C},
+       {0x276F, 0x044D},
+       {0x2770, 0x044E},
+       {0x2771, 0x044F},
+       {0x2821, 0x0101},
+       {0x2822, 0x00E1},
+       {0x2823, 0x01CE},
+       {0x2824, 0x00E0},
+       {0x2825, 0x0113},
+       {0x2826, 0x00E9},
+       {0x2827, 0x011B},
+       {0x2828, 0x00E8},
+       {0x2829, 0x012B},
+       {0x282A, 0x00ED},
+       {0x282B, 0x01D0},
+       {0x282C, 0x00EC},
+       {0x282D, 0x014D},
+       {0x282E, 0x00F3},
+       {0x282F, 0x01D2},
+       {0x2830, 0x00F2},
+       {0x2831, 0x016B},
+       {0x2832, 0x00FA},
+       {0x2833, 0x01D4},
+       {0x2834, 0x00F9},
+       {0x2835, 0x01D6},
+       {0x2836, 0x01D8},
+       {0x2837, 0x01DA},
+       {0x2838, 0x01DC},
+       {0x2839, 0x00FC},
+       {0x283A, 0x00EA},
+       {0x2845, 0x3105},
+       {0x2846, 0x3106},
+       {0x2847, 0x3107},
+       {0x2848, 0x3108},
+       {0x2849, 0x3109},
+       {0x284A, 0x310A},
+       {0x284B, 0x310B},
+       {0x284C, 0x310C},
+       {0x284D, 0x310D},
+       {0x284E, 0x310E},
+       {0x284F, 0x310F},
+       {0x2850, 0x3110},
+       {0x2851, 0x3111},
+       {0x2852, 0x3112},
+       {0x2853, 0x3113},
+       {0x2854, 0x3114},
+       {0x2855, 0x3115},
+       {0x2856, 0x3116},
+       {0x2857, 0x3117},
+       {0x2858, 0x3118},
+       {0x2859, 0x3119},
+       {0x285A, 0x311A},
+       {0x285B, 0x311B},
+       {0x285C, 0x311C},
+       {0x285D, 0x311D},
+       {0x285E, 0x311E},
+       {0x285F, 0x311F},
+       {0x2860, 0x3120},
+       {0x2861, 0x3121},
+       {0x2862, 0x3122},
+       {0x2863, 0x3123},
+       {0x2864, 0x3124},
+       {0x2865, 0x3125},
+       {0x2866, 0x3126},
+       {0x2867, 0x3127},
+       {0x2868, 0x3128},
+       {0x2869, 0x3129},
+       {0x2924, 0x2500},
+       {0x2925, 0x2501},
+       {0x2926, 0x2502},
+       {0x2927, 0x2503},
+       {0x2928, 0x2504},
+       {0x2929, 0x2505},
+       {0x292A, 0x2506},
+       {0x292B, 0x2507},
+       {0x292C, 0x2508},
+       {0x292D, 0x2509},
+       {0x292E, 0x250A},
+       {0x292F, 0x250B},
+       {0x2930, 0x250C},
+       {0x2931, 0x250D},
+       {0x2932, 0x250E},
+       {0x2933, 0x250F},
+       {0x2934, 0x2510},
+       {0x2935, 0x2511},
+       {0x2936, 0x2512},
+       {0x2937, 0x2513},
+       {0x2938, 0x2514},
+       {0x2939, 0x2515},
+       {0x293A, 0x2516},
+       {0x293B, 0x2517},
+       {0x293C, 0x2518},
+       {0x293D, 0x2519},
+       {0x293E, 0x251A},
+       {0x293F, 0x251B},
+       {0x2940, 0x251C},
+       {0x2941, 0x251D},
+       {0x2942, 0x251E},
+       {0x2943, 0x251F},
+       {0x2944, 0x2520},
+       {0x2945, 0x2521},
+       {0x2946, 0x2522},
+       {0x2947, 0x2523},
+       {0x2948, 0x2524},
+       {0x2949, 0x2525},
+       {0x294A, 0x2526},
+       {0x294B, 0x2527},
+       {0x294C, 0x2528},
+       {0x294D, 0x2529},
+       {0x294E, 0x252A},
+       {0x294F, 0x252B},
+       {0x2950, 0x252C},
+       {0x2951, 0x252D},
+       {0x2952, 0x252E},
+       {0x2953, 0x252F},
+       {0x2954, 0x2530},
+       {0x2955, 0x2531},
+       {0x2956, 0x2532},
+       {0x2957, 0x2533},
+       {0x2958, 0x2534},
+       {0x2959, 0x2535},
+       {0x295A, 0x2536},
+       {0x295B, 0x2537},
+       {0x295C, 0x2538},
+       {0x295D, 0x2539},
+       {0x295E, 0x253A},
+       {0x295F, 0x253B},
+       {0x2960, 0x253C},
+       {0x2961, 0x253D},
+       {0x2962, 0x253E},
+       {0x2963, 0x253F},
+       {0x2964, 0x2540},
+       {0x2965, 0x2541},
+       {0x2966, 0x2542},
+       {0x2967, 0x2543},
+       {0x2968, 0x2544},
+       {0x2969, 0x2545},
+       {0x296A, 0x2546},
+       {0x296B, 0x2547},
+       {0x296C, 0x2548},
+       {0x296D, 0x2549},
+       {0x296E, 0x254A},
+       {0x296F, 0x254B},
+       {0x3021, 0x554A},
+       {0x3022, 0x963F},
+       {0x3023, 0x57C3},
+       {0x3024, 0x6328},
+       {0x3025, 0x54CE},
+       {0x3026, 0x5509},
+       {0x3027, 0x54C0},
+       {0x3028, 0x7691},
+       {0x3029, 0x764C},
+       {0x302A, 0x853C},
+       {0x302B, 0x77EE},
+       {0x302C, 0x827E},
+       {0x302D, 0x788D},
+       {0x302E, 0x7231},
+       {0x302F, 0x9698},
+       {0x3030, 0x978D},
+       {0x3031, 0x6C28},
+       {0x3032, 0x5B89},
+       {0x3033, 0x4FFA},
+       {0x3034, 0x6309},
+       {0x3035, 0x6697},
+       {0x3036, 0x5CB8},
+       {0x3037, 0x80FA},
+       {0x3038, 0x6848},
+       {0x3039, 0x80AE},
+       {0x303A, 0x6602},
+       {0x303B, 0x76CE},
+       {0x303C, 0x51F9},
+       {0x303D, 0x6556},
+       {0x303E, 0x71AC},
+       {0x303F, 0x7FF1},
+       {0x3040, 0x8884},
+       {0x3041, 0x50B2},
+       {0x3042, 0x5965},
+       {0x3043, 0x61CA},
+       {0x3044, 0x6FB3},
+       {0x3045, 0x82AD},
+       {0x3046, 0x634C},
+       {0x3047, 0x6252},
+       {0x3048, 0x53ED},
+       {0x3049, 0x5427},
+       {0x304A, 0x7B06},
+       {0x304B, 0x516B},
+       {0x304C, 0x75A4},
+       {0x304D, 0x5DF4},
+       {0x304E, 0x62D4},
+       {0x304F, 0x8DCB},
+       {0x3050, 0x9776},
+       {0x3051, 0x628A},
+       {0x3052, 0x8019},
+       {0x3053, 0x575D},
+       {0x3054, 0x9738},
+       {0x3055, 0x7F62},
+       {0x3056, 0x7238},
+       {0x3057, 0x767D},
+       {0x3058, 0x67CF},
+       {0x3059, 0x767E},
+       {0x305A, 0x6446},
+       {0x305B, 0x4F70},
+       {0x305C, 0x8D25},
+       {0x305D, 0x62DC},
+       {0x305E, 0x7A17},
+       {0x305F, 0x6591},
+       {0x3060, 0x73ED},
+       {0x3061, 0x642C},
+       {0x3062, 0x6273},
+       {0x3063, 0x822C},
+       {0x3064, 0x9881},
+       {0x3065, 0x677F},
+       {0x3066, 0x7248},
+       {0x3067, 0x626E},
+       {0x3068, 0x62CC},
+       {0x3069, 0x4F34},
+       {0x306A, 0x74E3},
+       {0x306B, 0x534A},
+       {0x306C, 0x529E},
+       {0x306D, 0x7ECA},
+       {0x306E, 0x90A6},
+       {0x306F, 0x5E2E},
+       {0x3070, 0x6886},
+       {0x3071, 0x699C},
+       {0x3072, 0x8180},
+       {0x3073, 0x7ED1},
+       {0x3074, 0x68D2},
+       {0x3075, 0x78C5},
+       {0x3076, 0x868C},
+       {0x3077, 0x9551},
+       {0x3078, 0x508D},
+       {0x3079, 0x8C24},
+       {0x307A, 0x82DE},
+       {0x307B, 0x80DE},
+       {0x307C, 0x5305},
+       {0x307D, 0x8912},
+       {0x307E, 0x5265},
+       {0x3121, 0x8584},
+       {0x3122, 0x96F9},
+       {0x3123, 0x4FDD},
+       {0x3124, 0x5821},
+       {0x3125, 0x9971},
+       {0x3126, 0x5B9D},
+       {0x3127, 0x62B1},
+       {0x3128, 0x62A5},
+       {0x3129, 0x66B4},
+       {0x312A, 0x8C79},
+       {0x312B, 0x9C8D},
+       {0x312C, 0x7206},
+       {0x312D, 0x676F},
+       {0x312E, 0x7891},
+       {0x312F, 0x60B2},
+       {0x3130, 0x5351},
+       {0x3131, 0x5317},
+       {0x3132, 0x8F88},
+       {0x3133, 0x80CC},
+       {0x3134, 0x8D1D},
+       {0x3135, 0x94A1},
+       {0x3136, 0x500D},
+       {0x3137, 0x72C8},
+       {0x3138, 0x5907},
+       {0x3139, 0x60EB},
+       {0x313A, 0x7119},
+       {0x313B, 0x88AB},
+       {0x313C, 0x5954},
+       {0x313D, 0x82EF},
+       {0x313E, 0x672C},
+       {0x313F, 0x7B28},
+       {0x3140, 0x5D29},
+       {0x3141, 0x7EF7},
+       {0x3142, 0x752D},
+       {0x3143, 0x6CF5},
+       {0x3144, 0x8E66},
+       {0x3145, 0x8FF8},
+       {0x3146, 0x903C},
+       {0x3147, 0x9F3B},
+       {0x3148, 0x6BD4},
+       {0x3149, 0x9119},
+       {0x314A, 0x7B14},
+       {0x314B, 0x5F7C},
+       {0x314C, 0x78A7},
+       {0x314D, 0x84D6},
+       {0x314E, 0x853D},
+       {0x314F, 0x6BD5},
+       {0x3150, 0x6BD9},
+       {0x3151, 0x6BD6},
+       {0x3152, 0x5E01},
+       {0x3153, 0x5E87},
+       {0x3154, 0x75F9},
+       {0x3155, 0x95ED},
+       {0x3156, 0x655D},
+       {0x3157, 0x5F0A},
+       {0x3158, 0x5FC5},
+       {0x3159, 0x8F9F},
+       {0x315A, 0x58C1},
+       {0x315B, 0x81C2},
+       {0x315C, 0x907F},
+       {0x315D, 0x965B},
+       {0x315E, 0x97AD},
+       {0x315F, 0x8FB9},
+       {0x3160, 0x7F16},
+       {0x3161, 0x8D2C},
+       {0x3162, 0x6241},
+       {0x3163, 0x4FBF},
+       {0x3164, 0x53D8},
+       {0x3165, 0x535E},
+       {0x3166, 0x8FA8},
+       {0x3167, 0x8FA9},
+       {0x3168, 0x8FAB},
+       {0x3169, 0x904D},
+       {0x316A, 0x6807},
+       {0x316B, 0x5F6A},
+       {0x316C, 0x8198},
+       {0x316D, 0x8868},
+       {0x316E, 0x9CD6},
+       {0x316F, 0x618B},
+       {0x3170, 0x522B},
+       {0x3171, 0x762A},
+       {0x3172, 0x5F6C},
+       {0x3173, 0x658C},
+       {0x3174, 0x6FD2},
+       {0x3175, 0x6EE8},
+       {0x3176, 0x5BBE},
+       {0x3177, 0x6448},
+       {0x3178, 0x5175},
+       {0x3179, 0x51B0},
+       {0x317A, 0x67C4},
+       {0x317B, 0x4E19},
+       {0x317C, 0x79C9},
+       {0x317D, 0x997C},
+       {0x317E, 0x70B3},
+       {0x3221, 0x75C5},
+       {0x3222, 0x5E76},
+       {0x3223, 0x73BB},
+       {0x3224, 0x83E0},
+       {0x3225, 0x64AD},
+       {0x3226, 0x62E8},
+       {0x3227, 0x94B5},
+       {0x3228, 0x6CE2},
+       {0x3229, 0x535A},
+       {0x322A, 0x52C3},
+       {0x322B, 0x640F},
+       {0x322C, 0x94C2},
+       {0x322D, 0x7B94},
+       {0x322E, 0x4F2F},
+       {0x322F, 0x5E1B},
+       {0x3230, 0x8236},
+       {0x3231, 0x8116},
+       {0x3232, 0x818A},
+       {0x3233, 0x6E24},
+       {0x3234, 0x6CCA},
+       {0x3235, 0x9A73},
+       {0x3236, 0x6355},
+       {0x3237, 0x535C},
+       {0x3238, 0x54FA},
+       {0x3239, 0x8865},
+       {0x323A, 0x57E0},
+       {0x323B, 0x4E0D},
+       {0x323C, 0x5E03},
+       {0x323D, 0x6B65},
+       {0x323E, 0x7C3F},
+       {0x323F, 0x90E8},
+       {0x3240, 0x6016},
+       {0x3241, 0x64E6},
+       {0x3242, 0x731C},
+       {0x3243, 0x88C1},
+       {0x3244, 0x6750},
+       {0x3245, 0x624D},
+       {0x3246, 0x8D22},
+       {0x3247, 0x776C},
+       {0x3248, 0x8E29},
+       {0x3249, 0x91C7},
+       {0x324A, 0x5F69},
+       {0x324B, 0x83DC},
+       {0x324C, 0x8521},
+       {0x324D, 0x9910},
+       {0x324E, 0x53C2},
+       {0x324F, 0x8695},
+       {0x3250, 0x6B8B},
+       {0x3251, 0x60ED},
+       {0x3252, 0x60E8},
+       {0x3253, 0x707F},
+       {0x3254, 0x82CD},
+       {0x3255, 0x8231},
+       {0x3256, 0x4ED3},
+       {0x3257, 0x6CA7},
+       {0x3258, 0x85CF},
+       {0x3259, 0x64CD},
+       {0x325A, 0x7CD9},
+       {0x325B, 0x69FD},
+       {0x325C, 0x66F9},
+       {0x325D, 0x8349},
+       {0x325E, 0x5395},
+       {0x325F, 0x7B56},
+       {0x3260, 0x4FA7},
+       {0x3261, 0x518C},
+       {0x3262, 0x6D4B},
+       {0x3263, 0x5C42},
+       {0x3264, 0x8E6D},
+       {0x3265, 0x63D2},
+       {0x3266, 0x53C9},
+       {0x3267, 0x832C},
+       {0x3268, 0x8336},
+       {0x3269, 0x67E5},
+       {0x326A, 0x78B4},
+       {0x326B, 0x643D},
+       {0x326C, 0x5BDF},
+       {0x326D, 0x5C94},
+       {0x326E, 0x5DEE},
+       {0x326F, 0x8BE7},
+       {0x3270, 0x62C6},
+       {0x3271, 0x67F4},
+       {0x3272, 0x8C7A},
+       {0x3273, 0x6400},
+       {0x3274, 0x63BA},
+       {0x3275, 0x8749},
+       {0x3276, 0x998B},
+       {0x3277, 0x8C17},
+       {0x3278, 0x7F20},
+       {0x3279, 0x94F2},
+       {0x327A, 0x4EA7},
+       {0x327B, 0x9610},
+       {0x327C, 0x98A4},
+       {0x327D, 0x660C},
+       {0x327E, 0x7316},
+       {0x3321, 0x573A},
+       {0x3322, 0x5C1D},
+       {0x3323, 0x5E38},
+       {0x3324, 0x957F},
+       {0x3325, 0x507F},
+       {0x3326, 0x80A0},
+       {0x3327, 0x5382},
+       {0x3328, 0x655E},
+       {0x3329, 0x7545},
+       {0x332A, 0x5531},
+       {0x332B, 0x5021},
+       {0x332C, 0x8D85},
+       {0x332D, 0x6284},
+       {0x332E, 0x949E},
+       {0x332F, 0x671D},
+       {0x3330, 0x5632},
+       {0x3331, 0x6F6E},
+       {0x3332, 0x5DE2},
+       {0x3333, 0x5435},
+       {0x3334, 0x7092},
+       {0x3335, 0x8F66},
+       {0x3336, 0x626F},
+       {0x3337, 0x64A4},
+       {0x3338, 0x63A3},
+       {0x3339, 0x5F7B},
+       {0x333A, 0x6F88},
+       {0x333B, 0x90F4},
+       {0x333C, 0x81E3},
+       {0x333D, 0x8FB0},
+       {0x333E, 0x5C18},
+       {0x333F, 0x6668},
+       {0x3340, 0x5FF1},
+       {0x3341, 0x6C89},
+       {0x3342, 0x9648},
+       {0x3343, 0x8D81},
+       {0x3344, 0x886C},
+       {0x3345, 0x6491},
+       {0x3346, 0x79F0},
+       {0x3347, 0x57CE},
+       {0x3348, 0x6A59},
+       {0x3349, 0x6210},
+       {0x334A, 0x5448},
+       {0x334B, 0x4E58},
+       {0x334C, 0x7A0B},
+       {0x334D, 0x60E9},
+       {0x334E, 0x6F84},
+       {0x334F, 0x8BDA},
+       {0x3350, 0x627F},
+       {0x3351, 0x901E},
+       {0x3352, 0x9A8B},
+       {0x3353, 0x79E4},
+       {0x3354, 0x5403},
+       {0x3355, 0x75F4},
+       {0x3356, 0x6301},
+       {0x3357, 0x5319},
+       {0x3358, 0x6C60},
+       {0x3359, 0x8FDF},
+       {0x335A, 0x5F1B},
+       {0x335B, 0x9A70},
+       {0x335C, 0x803B},
+       {0x335D, 0x9F7F},
+       {0x335E, 0x4F88},
+       {0x335F, 0x5C3A},
+       {0x3360, 0x8D64},
+       {0x3361, 0x7FC5},
+       {0x3362, 0x65A5},
+       {0x3363, 0x70BD},
+       {0x3364, 0x5145},
+       {0x3365, 0x51B2},
+       {0x3366, 0x866B},
+       {0x3367, 0x5D07},
+       {0x3368, 0x5BA0},
+       {0x3369, 0x62BD},
+       {0x336A, 0x916C},
+       {0x336B, 0x7574},
+       {0x336C, 0x8E0C},
+       {0x336D, 0x7A20},
+       {0x336E, 0x6101},
+       {0x336F, 0x7B79},
+       {0x3370, 0x4EC7},
+       {0x3371, 0x7EF8},
+       {0x3372, 0x7785},
+       {0x3373, 0x4E11},
+       {0x3374, 0x81ED},
+       {0x3375, 0x521D},
+       {0x3376, 0x51FA},
+       {0x3377, 0x6A71},
+       {0x3378, 0x53A8},
+       {0x3379, 0x8E87},
+       {0x337A, 0x9504},
+       {0x337B, 0x96CF},
+       {0x337C, 0x6EC1},
+       {0x337D, 0x9664},
+       {0x337E, 0x695A},
+       {0x3421, 0x7840},
+       {0x3422, 0x50A8},
+       {0x3423, 0x77D7},
+       {0x3424, 0x6410},
+       {0x3425, 0x89E6},
+       {0x3426, 0x5904},
+       {0x3427, 0x63E3},
+       {0x3428, 0x5DDD},
+       {0x3429, 0x7A7F},
+       {0x342A, 0x693D},
+       {0x342B, 0x4F20},
+       {0x342C, 0x8239},
+       {0x342D, 0x5598},
+       {0x342E, 0x4E32},
+       {0x342F, 0x75AE},
+       {0x3430, 0x7A97},
+       {0x3431, 0x5E62},
+       {0x3432, 0x5E8A},
+       {0x3433, 0x95EF},
+       {0x3434, 0x521B},
+       {0x3435, 0x5439},
+       {0x3436, 0x708A},
+       {0x3437, 0x6376},
+       {0x3438, 0x9524},
+       {0x3439, 0x5782},
+       {0x343A, 0x6625},
+       {0x343B, 0x693F},
+       {0x343C, 0x9187},
+       {0x343D, 0x5507},
+       {0x343E, 0x6DF3},
+       {0x343F, 0x7EAF},
+       {0x3440, 0x8822},
+       {0x3441, 0x6233},
+       {0x3442, 0x7EF0},
+       {0x3443, 0x75B5},
+       {0x3444, 0x8328},
+       {0x3445, 0x78C1},
+       {0x3446, 0x96CC},
+       {0x3447, 0x8F9E},
+       {0x3448, 0x6148},
+       {0x3449, 0x74F7},
+       {0x344A, 0x8BCD},
+       {0x344B, 0x6B64},
+       {0x344C, 0x523A},
+       {0x344D, 0x8D50},
+       {0x344E, 0x6B21},
+       {0x344F, 0x806A},
+       {0x3450, 0x8471},
+       {0x3451, 0x56F1},
+       {0x3452, 0x5306},
+       {0x3453, 0x4ECE},
+       {0x3454, 0x4E1B},
+       {0x3455, 0x51D1},
+       {0x3456, 0x7C97},
+       {0x3457, 0x918B},
+       {0x3458, 0x7C07},
+       {0x3459, 0x4FC3},
+       {0x345A, 0x8E7F},
+       {0x345B, 0x7BE1},
+       {0x345C, 0x7A9C},
+       {0x345D, 0x6467},
+       {0x345E, 0x5D14},
+       {0x345F, 0x50AC},
+       {0x3460, 0x8106},
+       {0x3461, 0x7601},
+       {0x3462, 0x7CB9},
+       {0x3463, 0x6DEC},
+       {0x3464, 0x7FE0},
+       {0x3465, 0x6751},
+       {0x3466, 0x5B58},
+       {0x3467, 0x5BF8},
+       {0x3468, 0x78CB},
+       {0x3469, 0x64AE},
+       {0x346A, 0x6413},
+       {0x346B, 0x63AA},
+       {0x346C, 0x632B},
+       {0x346D, 0x9519},
+       {0x346E, 0x642D},
+       {0x346F, 0x8FBE},
+       {0x3470, 0x7B54},
+       {0x3471, 0x7629},
+       {0x3472, 0x6253},
+       {0x3473, 0x5927},
+       {0x3474, 0x5446},
+       {0x3475, 0x6B79},
+       {0x3476, 0x50A3},
+       {0x3477, 0x6234},
+       {0x3478, 0x5E26},
+       {0x3479, 0x6B86},
+       {0x347A, 0x4EE3},
+       {0x347B, 0x8D37},
+       {0x347C, 0x888B},
+       {0x347D, 0x5F85},
+       {0x347E, 0x902E},
+       {0x3521, 0x6020},
+       {0x3522, 0x803D},
+       {0x3523, 0x62C5},
+       {0x3524, 0x4E39},
+       {0x3525, 0x5355},
+       {0x3526, 0x90F8},
+       {0x3527, 0x63B8},
+       {0x3528, 0x80C6},
+       {0x3529, 0x65E6},
+       {0x352A, 0x6C2E},
+       {0x352B, 0x4F46},
+       {0x352C, 0x60EE},
+       {0x352D, 0x6DE1},
+       {0x352E, 0x8BDE},
+       {0x352F, 0x5F39},
+       {0x3530, 0x86CB},
+       {0x3531, 0x5F53},
+       {0x3532, 0x6321},
+       {0x3533, 0x515A},
+       {0x3534, 0x8361},
+       {0x3535, 0x6863},
+       {0x3536, 0x5200},
+       {0x3537, 0x6363},
+       {0x3538, 0x8E48},
+       {0x3539, 0x5012},
+       {0x353A, 0x5C9B},
+       {0x353B, 0x7977},
+       {0x353C, 0x5BFC},
+       {0x353D, 0x5230},
+       {0x353E, 0x7A3B},
+       {0x353F, 0x60BC},
+       {0x3540, 0x9053},
+       {0x3541, 0x76D7},
+       {0x3542, 0x5FB7},
+       {0x3543, 0x5F97},
+       {0x3544, 0x7684},
+       {0x3545, 0x8E6C},
+       {0x3546, 0x706F},
+       {0x3547, 0x767B},
+       {0x3548, 0x7B49},
+       {0x3549, 0x77AA},
+       {0x354A, 0x51F3},
+       {0x354B, 0x9093},
+       {0x354C, 0x5824},
+       {0x354D, 0x4F4E},
+       {0x354E, 0x6EF4},
+       {0x354F, 0x8FEA},
+       {0x3550, 0x654C},
+       {0x3551, 0x7B1B},
+       {0x3552, 0x72C4},
+       {0x3553, 0x6DA4},
+       {0x3554, 0x7FDF},
+       {0x3555, 0x5AE1},
+       {0x3556, 0x62B5},
+       {0x3557, 0x5E95},
+       {0x3558, 0x5730},
+       {0x3559, 0x8482},
+       {0x355A, 0x7B2C},
+       {0x355B, 0x5E1D},
+       {0x355C, 0x5F1F},
+       {0x355D, 0x9012},
+       {0x355E, 0x7F14},
+       {0x355F, 0x98A0},
+       {0x3560, 0x6382},
+       {0x3561, 0x6EC7},
+       {0x3562, 0x7898},
+       {0x3563, 0x70B9},
+       {0x3564, 0x5178},
+       {0x3565, 0x975B},
+       {0x3566, 0x57AB},
+       {0x3567, 0x7535},
+       {0x3568, 0x4F43},
+       {0x3569, 0x7538},
+       {0x356A, 0x5E97},
+       {0x356B, 0x60E6},
+       {0x356C, 0x5960},
+       {0x356D, 0x6DC0},
+       {0x356E, 0x6BBF},
+       {0x356F, 0x7889},
+       {0x3570, 0x53FC},
+       {0x3571, 0x96D5},
+       {0x3572, 0x51CB},
+       {0x3573, 0x5201},
+       {0x3574, 0x6389},
+       {0x3575, 0x540A},
+       {0x3576, 0x9493},
+       {0x3577, 0x8C03},
+       {0x3578, 0x8DCC},
+       {0x3579, 0x7239},
+       {0x357A, 0x789F},
+       {0x357B, 0x8776},
+       {0x357C, 0x8FED},
+       {0x357D, 0x8C0D},
+       {0x357E, 0x53E0},
+       {0x3621, 0x4E01},
+       {0x3622, 0x76EF},
+       {0x3623, 0x53EE},
+       {0x3624, 0x9489},
+       {0x3625, 0x9876},
+       {0x3626, 0x9F0E},
+       {0x3627, 0x952D},
+       {0x3628, 0x5B9A},
+       {0x3629, 0x8BA2},
+       {0x362A, 0x4E22},
+       {0x362B, 0x4E1C},
+       {0x362C, 0x51AC},
+       {0x362D, 0x8463},
+       {0x362E, 0x61C2},
+       {0x362F, 0x52A8},
+       {0x3630, 0x680B},
+       {0x3631, 0x4F97},
+       {0x3632, 0x606B},
+       {0x3633, 0x51BB},
+       {0x3634, 0x6D1E},
+       {0x3635, 0x515C},
+       {0x3636, 0x6296},
+       {0x3637, 0x6597},
+       {0x3638, 0x9661},
+       {0x3639, 0x8C46},
+       {0x363A, 0x9017},
+       {0x363B, 0x75D8},
+       {0x363C, 0x90FD},
+       {0x363D, 0x7763},
+       {0x363E, 0x6BD2},
+       {0x363F, 0x728A},
+       {0x3640, 0x72EC},
+       {0x3641, 0x8BFB},
+       {0x3642, 0x5835},
+       {0x3643, 0x7779},
+       {0x3644, 0x8D4C},
+       {0x3645, 0x675C},
+       {0x3646, 0x9540},
+       {0x3647, 0x809A},
+       {0x3648, 0x5EA6},
+       {0x3649, 0x6E21},
+       {0x364A, 0x5992},
+       {0x364B, 0x7AEF},
+       {0x364C, 0x77ED},
+       {0x364D, 0x953B},
+       {0x364E, 0x6BB5},
+       {0x364F, 0x65AD},
+       {0x3650, 0x7F0E},
+       {0x3651, 0x5806},
+       {0x3652, 0x5151},
+       {0x3653, 0x961F},
+       {0x3654, 0x5BF9},
+       {0x3655, 0x58A9},
+       {0x3656, 0x5428},
+       {0x3657, 0x8E72},
+       {0x3658, 0x6566},
+       {0x3659, 0x987F},
+       {0x365A, 0x56E4},
+       {0x365B, 0x949D},
+       {0x365C, 0x76FE},
+       {0x365D, 0x9041},
+       {0x365E, 0x6387},
+       {0x365F, 0x54C6},
+       {0x3660, 0x591A},
+       {0x3661, 0x593A},
+       {0x3662, 0x579B},
+       {0x3663, 0x8EB2},
+       {0x3664, 0x6735},
+       {0x3665, 0x8DFA},
+       {0x3666, 0x8235},
+       {0x3667, 0x5241},
+       {0x3668, 0x60F0},
+       {0x3669, 0x5815},
+       {0x366A, 0x86FE},
+       {0x366B, 0x5CE8},
+       {0x366C, 0x9E45},
+       {0x366D, 0x4FC4},
+       {0x366E, 0x989D},
+       {0x366F, 0x8BB9},
+       {0x3670, 0x5A25},
+       {0x3671, 0x6076},
+       {0x3672, 0x5384},
+       {0x3673, 0x627C},
+       {0x3674, 0x904F},
+       {0x3675, 0x9102},
+       {0x3676, 0x997F},
+       {0x3677, 0x6069},
+       {0x3678, 0x800C},
+       {0x3679, 0x513F},
+       {0x367A, 0x8033},
+       {0x367B, 0x5C14},
+       {0x367C, 0x9975},
+       {0x367D, 0x6D31},
+       {0x367E, 0x4E8C},
+       {0x3721, 0x8D30},
+       {0x3722, 0x53D1},
+       {0x3723, 0x7F5A},
+       {0x3724, 0x7B4F},
+       {0x3725, 0x4F10},
+       {0x3726, 0x4E4F},
+       {0x3727, 0x9600},
+       {0x3728, 0x6CD5},
+       {0x3729, 0x73D0},
+       {0x372A, 0x85E9},
+       {0x372B, 0x5E06},
+       {0x372C, 0x756A},
+       {0x372D, 0x7FFB},
+       {0x372E, 0x6A0A},
+       {0x372F, 0x77FE},
+       {0x3730, 0x9492},
+       {0x3731, 0x7E41},
+       {0x3732, 0x51E1},
+       {0x3733, 0x70E6},
+       {0x3734, 0x53CD},
+       {0x3735, 0x8FD4},
+       {0x3736, 0x8303},
+       {0x3737, 0x8D29},
+       {0x3738, 0x72AF},
+       {0x3739, 0x996D},
+       {0x373A, 0x6CDB},
+       {0x373B, 0x574A},
+       {0x373C, 0x82B3},
+       {0x373D, 0x65B9},
+       {0x373E, 0x80AA},
+       {0x373F, 0x623F},
+       {0x3740, 0x9632},
+       {0x3741, 0x59A8},
+       {0x3742, 0x4EFF},
+       {0x3743, 0x8BBF},
+       {0x3744, 0x7EBA},
+       {0x3745, 0x653E},
+       {0x3746, 0x83F2},
+       {0x3747, 0x975E},
+       {0x3748, 0x5561},
+       {0x3749, 0x98DE},
+       {0x374A, 0x80A5},
+       {0x374B, 0x532A},
+       {0x374C, 0x8BFD},
+       {0x374D, 0x5420},
+       {0x374E, 0x80BA},
+       {0x374F, 0x5E9F},
+       {0x3750, 0x6CB8},
+       {0x3751, 0x8D39},
+       {0x3752, 0x82AC},
+       {0x3753, 0x915A},
+       {0x3754, 0x5429},
+       {0x3755, 0x6C1B},
+       {0x3756, 0x5206},
+       {0x3757, 0x7EB7},
+       {0x3758, 0x575F},
+       {0x3759, 0x711A},
+       {0x375A, 0x6C7E},
+       {0x375B, 0x7C89},
+       {0x375C, 0x594B},
+       {0x375D, 0x4EFD},
+       {0x375E, 0x5FFF},
+       {0x375F, 0x6124},
+       {0x3760, 0x7CAA},
+       {0x3761, 0x4E30},
+       {0x3762, 0x5C01},
+       {0x3763, 0x67AB},
+       {0x3764, 0x8702},
+       {0x3765, 0x5CF0},
+       {0x3766, 0x950B},
+       {0x3767, 0x98CE},
+       {0x3768, 0x75AF},
+       {0x3769, 0x70FD},
+       {0x376A, 0x9022},
+       {0x376B, 0x51AF},
+       {0x376C, 0x7F1D},
+       {0x376D, 0x8BBD},
+       {0x376E, 0x5949},
+       {0x376F, 0x51E4},
+       {0x3770, 0x4F5B},
+       {0x3771, 0x5426},
+       {0x3772, 0x592B},
+       {0x3773, 0x6577},
+       {0x3774, 0x80A4},
+       {0x3775, 0x5B75},
+       {0x3776, 0x6276},
+       {0x3777, 0x62C2},
+       {0x3778, 0x8F90},
+       {0x3779, 0x5E45},
+       {0x377A, 0x6C1F},
+       {0x377B, 0x7B26},
+       {0x377C, 0x4F0F},
+       {0x377D, 0x4FD8},
+       {0x377E, 0x670D},
+       {0x3821, 0x6D6E},
+       {0x3822, 0x6DAA},
+       {0x3823, 0x798F},
+       {0x3824, 0x88B1},
+       {0x3825, 0x5F17},
+       {0x3826, 0x752B},
+       {0x3827, 0x629A},
+       {0x3828, 0x8F85},
+       {0x3829, 0x4FEF},
+       {0x382A, 0x91DC},
+       {0x382B, 0x65A7},
+       {0x382C, 0x812F},
+       {0x382D, 0x8151},
+       {0x382E, 0x5E9C},
+       {0x382F, 0x8150},
+       {0x3830, 0x8D74},
+       {0x3831, 0x526F},
+       {0x3832, 0x8986},
+       {0x3833, 0x8D4B},
+       {0x3834, 0x590D},
+       {0x3835, 0x5085},
+       {0x3836, 0x4ED8},
+       {0x3837, 0x961C},
+       {0x3838, 0x7236},
+       {0x3839, 0x8179},
+       {0x383A, 0x8D1F},
+       {0x383B, 0x5BCC},
+       {0x383C, 0x8BA3},
+       {0x383D, 0x9644},
+       {0x383E, 0x5987},
+       {0x383F, 0x7F1A},
+       {0x3840, 0x5490},
+       {0x3841, 0x5676},
+       {0x3842, 0x560E},
+       {0x3843, 0x8BE5},
+       {0x3844, 0x6539},
+       {0x3845, 0x6982},
+       {0x3846, 0x9499},
+       {0x3847, 0x76D6},
+       {0x3848, 0x6E89},
+       {0x3849, 0x5E72},
+       {0x384A, 0x7518},
+       {0x384B, 0x6746},
+       {0x384C, 0x67D1},
+       {0x384D, 0x7AFF},
+       {0x384E, 0x809D},
+       {0x384F, 0x8D76},
+       {0x3850, 0x611F},
+       {0x3851, 0x79C6},
+       {0x3852, 0x6562},
+       {0x3853, 0x8D63},
+       {0x3854, 0x5188},
+       {0x3855, 0x521A},
+       {0x3856, 0x94A2},
+       {0x3857, 0x7F38},
+       {0x3858, 0x809B},
+       {0x3859, 0x7EB2},
+       {0x385A, 0x5C97},
+       {0x385B, 0x6E2F},
+       {0x385C, 0x6760},
+       {0x385D, 0x7BD9},
+       {0x385E, 0x768B},
+       {0x385F, 0x9AD8},
+       {0x3860, 0x818F},
+       {0x3861, 0x7F94},
+       {0x3862, 0x7CD5},
+       {0x3863, 0x641E},
+       {0x3864, 0x9550},
+       {0x3865, 0x7A3F},
+       {0x3866, 0x544A},
+       {0x3867, 0x54E5},
+       {0x3868, 0x6B4C},
+       {0x3869, 0x6401},
+       {0x386A, 0x6208},
+       {0x386B, 0x9E3D},
+       {0x386C, 0x80F3},
+       {0x386D, 0x7599},
+       {0x386E, 0x5272},
+       {0x386F, 0x9769},
+       {0x3870, 0x845B},
+       {0x3871, 0x683C},
+       {0x3872, 0x86E4},
+       {0x3873, 0x9601},
+       {0x3874, 0x9694},
+       {0x3875, 0x94EC},
+       {0x3876, 0x4E2A},
+       {0x3877, 0x5404},
+       {0x3878, 0x7ED9},
+       {0x3879, 0x6839},
+       {0x387A, 0x8DDF},
+       {0x387B, 0x8015},
+       {0x387C, 0x66F4},
+       {0x387D, 0x5E9A},
+       {0x387E, 0x7FB9},
+       {0x3921, 0x57C2},
+       {0x3922, 0x803F},
+       {0x3923, 0x6897},
+       {0x3924, 0x5DE5},
+       {0x3925, 0x653B},
+       {0x3926, 0x529F},
+       {0x3927, 0x606D},
+       {0x3928, 0x9F9A},
+       {0x3929, 0x4F9B},
+       {0x392A, 0x8EAC},
+       {0x392B, 0x516C},
+       {0x392C, 0x5BAB},
+       {0x392D, 0x5F13},
+       {0x392E, 0x5DE9},
+       {0x392F, 0x6C5E},
+       {0x3930, 0x62F1},
+       {0x3931, 0x8D21},
+       {0x3932, 0x5171},
+       {0x3933, 0x94A9},
+       {0x3934, 0x52FE},
+       {0x3935, 0x6C9F},
+       {0x3936, 0x82DF},
+       {0x3937, 0x72D7},
+       {0x3938, 0x57A2},
+       {0x3939, 0x6784},
+       {0x393A, 0x8D2D},
+       {0x393B, 0x591F},
+       {0x393C, 0x8F9C},
+       {0x393D, 0x83C7},
+       {0x393E, 0x5495},
+       {0x393F, 0x7B8D},
+       {0x3940, 0x4F30},
+       {0x3941, 0x6CBD},
+       {0x3942, 0x5B64},
+       {0x3943, 0x59D1},
+       {0x3944, 0x9F13},
+       {0x3945, 0x53E4},
+       {0x3946, 0x86CA},
+       {0x3947, 0x9AA8},
+       {0x3948, 0x8C37},
+       {0x3949, 0x80A1},
+       {0x394A, 0x6545},
+       {0x394B, 0x987E},
+       {0x394C, 0x56FA},
+       {0x394D, 0x96C7},
+       {0x394E, 0x522E},
+       {0x394F, 0x74DC},
+       {0x3950, 0x5250},
+       {0x3951, 0x5BE1},
+       {0x3952, 0x6302},
+       {0x3953, 0x8902},
+       {0x3954, 0x4E56},
+       {0x3955, 0x62D0},
+       {0x3956, 0x602A},
+       {0x3957, 0x68FA},
+       {0x3958, 0x5173},
+       {0x3959, 0x5B98},
+       {0x395A, 0x51A0},
+       {0x395B, 0x89C2},
+       {0x395C, 0x7BA1},
+       {0x395D, 0x9986},
+       {0x395E, 0x7F50},
+       {0x395F, 0x60EF},
+       {0x3960, 0x704C},
+       {0x3961, 0x8D2F},
+       {0x3962, 0x5149},
+       {0x3963, 0x5E7F},
+       {0x3964, 0x901B},
+       {0x3965, 0x7470},
+       {0x3966, 0x89C4},
+       {0x3967, 0x572D},
+       {0x3968, 0x7845},
+       {0x3969, 0x5F52},
+       {0x396A, 0x9F9F},
+       {0x396B, 0x95FA},
+       {0x396C, 0x8F68},
+       {0x396D, 0x9B3C},
+       {0x396E, 0x8BE1},
+       {0x396F, 0x7678},
+       {0x3970, 0x6842},
+       {0x3971, 0x67DC},
+       {0x3972, 0x8DEA},
+       {0x3973, 0x8D35},
+       {0x3974, 0x523D},
+       {0x3975, 0x8F8A},
+       {0x3976, 0x6EDA},
+       {0x3977, 0x68CD},
+       {0x3978, 0x9505},
+       {0x3979, 0x90ED},
+       {0x397A, 0x56FD},
+       {0x397B, 0x679C},
+       {0x397C, 0x88F9},
+       {0x397D, 0x8FC7},
+       {0x397E, 0x54C8},
+       {0x3A21, 0x9AB8},
+       {0x3A22, 0x5B69},
+       {0x3A23, 0x6D77},
+       {0x3A24, 0x6C26},
+       {0x3A25, 0x4EA5},
+       {0x3A26, 0x5BB3},
+       {0x3A27, 0x9A87},
+       {0x3A28, 0x9163},
+       {0x3A29, 0x61A8},
+       {0x3A2A, 0x90AF},
+       {0x3A2B, 0x97E9},
+       {0x3A2C, 0x542B},
+       {0x3A2D, 0x6DB5},
+       {0x3A2E, 0x5BD2},
+       {0x3A2F, 0x51FD},
+       {0x3A30, 0x558A},
+       {0x3A31, 0x7F55},
+       {0x3A32, 0x7FF0},
+       {0x3A33, 0x64BC},
+       {0x3A34, 0x634D},
+       {0x3A35, 0x65F1},
+       {0x3A36, 0x61BE},
+       {0x3A37, 0x608D},
+       {0x3A38, 0x710A},
+       {0x3A39, 0x6C57},
+       {0x3A3A, 0x6C49},
+       {0x3A3B, 0x592F},
+       {0x3A3C, 0x676D},
+       {0x3A3D, 0x822A},
+       {0x3A3E, 0x58D5},
+       {0x3A3F, 0x568E},
+       {0x3A40, 0x8C6A},
+       {0x3A41, 0x6BEB},
+       {0x3A42, 0x90DD},
+       {0x3A43, 0x597D},
+       {0x3A44, 0x8017},
+       {0x3A45, 0x53F7},
+       {0x3A46, 0x6D69},
+       {0x3A47, 0x5475},
+       {0x3A48, 0x559D},
+       {0x3A49, 0x8377},
+       {0x3A4A, 0x83CF},
+       {0x3A4B, 0x6838},
+       {0x3A4C, 0x79BE},
+       {0x3A4D, 0x548C},
+       {0x3A4E, 0x4F55},
+       {0x3A4F, 0x5408},
+       {0x3A50, 0x76D2},
+       {0x3A51, 0x8C89},
+       {0x3A52, 0x9602},
+       {0x3A53, 0x6CB3},
+       {0x3A54, 0x6DB8},
+       {0x3A55, 0x8D6B},
+       {0x3A56, 0x8910},
+       {0x3A57, 0x9E64},
+       {0x3A58, 0x8D3A},
+       {0x3A59, 0x563F},
+       {0x3A5A, 0x9ED1},
+       {0x3A5B, 0x75D5},
+       {0x3A5C, 0x5F88},
+       {0x3A5D, 0x72E0},
+       {0x3A5E, 0x6068},
+       {0x3A5F, 0x54FC},
+       {0x3A60, 0x4EA8},
+       {0x3A61, 0x6A2A},
+       {0x3A62, 0x8861},
+       {0x3A63, 0x6052},
+       {0x3A64, 0x8F70},
+       {0x3A65, 0x54C4},
+       {0x3A66, 0x70D8},
+       {0x3A67, 0x8679},
+       {0x3A68, 0x9E3F},
+       {0x3A69, 0x6D2A},
+       {0x3A6A, 0x5B8F},
+       {0x3A6B, 0x5F18},
+       {0x3A6C, 0x7EA2},
+       {0x3A6D, 0x5589},
+       {0x3A6E, 0x4FAF},
+       {0x3A6F, 0x7334},
+       {0x3A70, 0x543C},
+       {0x3A71, 0x539A},
+       {0x3A72, 0x5019},
+       {0x3A73, 0x540E},
+       {0x3A74, 0x547C},
+       {0x3A75, 0x4E4E},
+       {0x3A76, 0x5FFD},
+       {0x3A77, 0x745A},
+       {0x3A78, 0x58F6},
+       {0x3A79, 0x846B},
+       {0x3A7A, 0x80E1},
+       {0x3A7B, 0x8774},
+       {0x3A7C, 0x72D0},
+       {0x3A7D, 0x7CCA},
+       {0x3A7E, 0x6E56},
+       {0x3B21, 0x5F27},
+       {0x3B22, 0x864E},
+       {0x3B23, 0x552C},
+       {0x3B24, 0x62A4},
+       {0x3B25, 0x4E92},
+       {0x3B26, 0x6CAA},
+       {0x3B27, 0x6237},
+       {0x3B28, 0x82B1},
+       {0x3B29, 0x54D7},
+       {0x3B2A, 0x534E},
+       {0x3B2B, 0x733E},
+       {0x3B2C, 0x6ED1},
+       {0x3B2D, 0x753B},
+       {0x3B2E, 0x5212},
+       {0x3B2F, 0x5316},
+       {0x3B30, 0x8BDD},
+       {0x3B31, 0x69D0},
+       {0x3B32, 0x5F8A},
+       {0x3B33, 0x6000},
+       {0x3B34, 0x6DEE},
+       {0x3B35, 0x574F},
+       {0x3B36, 0x6B22},
+       {0x3B37, 0x73AF},
+       {0x3B38, 0x6853},
+       {0x3B39, 0x8FD8},
+       {0x3B3A, 0x7F13},
+       {0x3B3B, 0x6362},
+       {0x3B3C, 0x60A3},
+       {0x3B3D, 0x5524},
+       {0x3B3E, 0x75EA},
+       {0x3B3F, 0x8C62},
+       {0x3B40, 0x7115},
+       {0x3B41, 0x6DA3},
+       {0x3B42, 0x5BA6},
+       {0x3B43, 0x5E7B},
+       {0x3B44, 0x8352},
+       {0x3B45, 0x614C},
+       {0x3B46, 0x9EC4},
+       {0x3B47, 0x78FA},
+       {0x3B48, 0x8757},
+       {0x3B49, 0x7C27},
+       {0x3B4A, 0x7687},
+       {0x3B4B, 0x51F0},
+       {0x3B4C, 0x60F6},
+       {0x3B4D, 0x714C},
+       {0x3B4E, 0x6643},
+       {0x3B4F, 0x5E4C},
+       {0x3B50, 0x604D},
+       {0x3B51, 0x8C0E},
+       {0x3B52, 0x7070},
+       {0x3B53, 0x6325},
+       {0x3B54, 0x8F89},
+       {0x3B55, 0x5FBD},
+       {0x3B56, 0x6062},
+       {0x3B57, 0x86D4},
+       {0x3B58, 0x56DE},
+       {0x3B59, 0x6BC1},
+       {0x3B5A, 0x6094},
+       {0x3B5B, 0x6167},
+       {0x3B5C, 0x5349},
+       {0x3B5D, 0x60E0},
+       {0x3B5E, 0x6666},
+       {0x3B5F, 0x8D3F},
+       {0x3B60, 0x79FD},
+       {0x3B61, 0x4F1A},
+       {0x3B62, 0x70E9},
+       {0x3B63, 0x6C47},
+       {0x3B64, 0x8BB3},
+       {0x3B65, 0x8BF2},
+       {0x3B66, 0x7ED8},
+       {0x3B67, 0x8364},
+       {0x3B68, 0x660F},
+       {0x3B69, 0x5A5A},
+       {0x3B6A, 0x9B42},
+       {0x3B6B, 0x6D51},
+       {0x3B6C, 0x6DF7},
+       {0x3B6D, 0x8C41},
+       {0x3B6E, 0x6D3B},
+       {0x3B6F, 0x4F19},
+       {0x3B70, 0x706B},
+       {0x3B71, 0x83B7},
+       {0x3B72, 0x6216},
+       {0x3B73, 0x60D1},
+       {0x3B74, 0x970D},
+       {0x3B75, 0x8D27},
+       {0x3B76, 0x7978},
+       {0x3B77, 0x51FB},
+       {0x3B78, 0x573E},
+       {0x3B79, 0x57FA},
+       {0x3B7A, 0x673A},
+       {0x3B7B, 0x7578},
+       {0x3B7C, 0x7A3D},
+       {0x3B7D, 0x79EF},
+       {0x3B7E, 0x7B95},
+       {0x3C21, 0x808C},
+       {0x3C22, 0x9965},
+       {0x3C23, 0x8FF9},
+       {0x3C24, 0x6FC0},
+       {0x3C25, 0x8BA5},
+       {0x3C26, 0x9E21},
+       {0x3C27, 0x59EC},
+       {0x3C28, 0x7EE9},
+       {0x3C29, 0x7F09},
+       {0x3C2A, 0x5409},
+       {0x3C2B, 0x6781},
+       {0x3C2C, 0x68D8},
+       {0x3C2D, 0x8F91},
+       {0x3C2E, 0x7C4D},
+       {0x3C2F, 0x96C6},
+       {0x3C30, 0x53CA},
+       {0x3C31, 0x6025},
+       {0x3C32, 0x75BE},
+       {0x3C33, 0x6C72},
+       {0x3C34, 0x5373},
+       {0x3C35, 0x5AC9},
+       {0x3C36, 0x7EA7},
+       {0x3C37, 0x6324},
+       {0x3C38, 0x51E0},
+       {0x3C39, 0x810A},
+       {0x3C3A, 0x5DF1},
+       {0x3C3B, 0x84DF},
+       {0x3C3C, 0x6280},
+       {0x3C3D, 0x5180},
+       {0x3C3E, 0x5B63},
+       {0x3C3F, 0x4F0E},
+       {0x3C40, 0x796D},
+       {0x3C41, 0x5242},
+       {0x3C42, 0x60B8},
+       {0x3C43, 0x6D4E},
+       {0x3C44, 0x5BC4},
+       {0x3C45, 0x5BC2},
+       {0x3C46, 0x8BA1},
+       {0x3C47, 0x8BB0},
+       {0x3C48, 0x65E2},
+       {0x3C49, 0x5FCC},
+       {0x3C4A, 0x9645},
+       {0x3C4B, 0x5993},
+       {0x3C4C, 0x7EE7},
+       {0x3C4D, 0x7EAA},
+       {0x3C4E, 0x5609},
+       {0x3C4F, 0x67B7},
+       {0x3C50, 0x5939},
+       {0x3C51, 0x4F73},
+       {0x3C52, 0x5BB6},
+       {0x3C53, 0x52A0},
+       {0x3C54, 0x835A},
+       {0x3C55, 0x988A},
+       {0x3C56, 0x8D3E},
+       {0x3C57, 0x7532},
+       {0x3C58, 0x94BE},
+       {0x3C59, 0x5047},
+       {0x3C5A, 0x7A3C},
+       {0x3C5B, 0x4EF7},
+       {0x3C5C, 0x67B6},
+       {0x3C5D, 0x9A7E},
+       {0x3C5E, 0x5AC1},
+       {0x3C5F, 0x6B7C},
+       {0x3C60, 0x76D1},
+       {0x3C61, 0x575A},
+       {0x3C62, 0x5C16},
+       {0x3C63, 0x7B3A},
+       {0x3C64, 0x95F4},
+       {0x3C65, 0x714E},
+       {0x3C66, 0x517C},
+       {0x3C67, 0x80A9},
+       {0x3C68, 0x8270},
+       {0x3C69, 0x5978},
+       {0x3C6A, 0x7F04},
+       {0x3C6B, 0x8327},
+       {0x3C6C, 0x68C0},
+       {0x3C6D, 0x67EC},
+       {0x3C6E, 0x78B1},
+       {0x3C6F, 0x7877},
+       {0x3C70, 0x62E3},
+       {0x3C71, 0x6361},
+       {0x3C72, 0x7B80},
+       {0x3C73, 0x4FED},
+       {0x3C74, 0x526A},
+       {0x3C75, 0x51CF},
+       {0x3C76, 0x8350},
+       {0x3C77, 0x69DB},
+       {0x3C78, 0x9274},
+       {0x3C79, 0x8DF5},
+       {0x3C7A, 0x8D31},
+       {0x3C7B, 0x89C1},
+       {0x3C7C, 0x952E},
+       {0x3C7D, 0x7BAD},
+       {0x3C7E, 0x4EF6},
+       {0x3D21, 0x5065},
+       {0x3D22, 0x8230},
+       {0x3D23, 0x5251},
+       {0x3D24, 0x996F},
+       {0x3D25, 0x6E10},
+       {0x3D26, 0x6E85},
+       {0x3D27, 0x6DA7},
+       {0x3D28, 0x5EFA},
+       {0x3D29, 0x50F5},
+       {0x3D2A, 0x59DC},
+       {0x3D2B, 0x5C06},
+       {0x3D2C, 0x6D46},
+       {0x3D2D, 0x6C5F},
+       {0x3D2E, 0x7586},
+       {0x3D2F, 0x848B},
+       {0x3D30, 0x6868},
+       {0x3D31, 0x5956},
+       {0x3D32, 0x8BB2},
+       {0x3D33, 0x5320},
+       {0x3D34, 0x9171},
+       {0x3D35, 0x964D},
+       {0x3D36, 0x8549},
+       {0x3D37, 0x6912},
+       {0x3D38, 0x7901},
+       {0x3D39, 0x7126},
+       {0x3D3A, 0x80F6},
+       {0x3D3B, 0x4EA4},
+       {0x3D3C, 0x90CA},
+       {0x3D3D, 0x6D47},
+       {0x3D3E, 0x9A84},
+       {0x3D3F, 0x5A07},
+       {0x3D40, 0x56BC},
+       {0x3D41, 0x6405},
+       {0x3D42, 0x94F0},
+       {0x3D43, 0x77EB},
+       {0x3D44, 0x4FA5},
+       {0x3D45, 0x811A},
+       {0x3D46, 0x72E1},
+       {0x3D47, 0x89D2},
+       {0x3D48, 0x997A},
+       {0x3D49, 0x7F34},
+       {0x3D4A, 0x7EDE},
+       {0x3D4B, 0x527F},
+       {0x3D4C, 0x6559},
+       {0x3D4D, 0x9175},
+       {0x3D4E, 0x8F7F},
+       {0x3D4F, 0x8F83},
+       {0x3D50, 0x53EB},
+       {0x3D51, 0x7A96},
+       {0x3D52, 0x63ED},
+       {0x3D53, 0x63A5},
+       {0x3D54, 0x7686},
+       {0x3D55, 0x79F8},
+       {0x3D56, 0x8857},
+       {0x3D57, 0x9636},
+       {0x3D58, 0x622A},
+       {0x3D59, 0x52AB},
+       {0x3D5A, 0x8282},
+       {0x3D5B, 0x6854},
+       {0x3D5C, 0x6770},
+       {0x3D5D, 0x6377},
+       {0x3D5E, 0x776B},
+       {0x3D5F, 0x7AED},
+       {0x3D60, 0x6D01},
+       {0x3D61, 0x7ED3},
+       {0x3D62, 0x89E3},
+       {0x3D63, 0x59D0},
+       {0x3D64, 0x6212},
+       {0x3D65, 0x85C9},
+       {0x3D66, 0x82A5},
+       {0x3D67, 0x754C},
+       {0x3D68, 0x501F},
+       {0x3D69, 0x4ECB},
+       {0x3D6A, 0x75A5},
+       {0x3D6B, 0x8BEB},
+       {0x3D6C, 0x5C4A},
+       {0x3D6D, 0x5DFE},
+       {0x3D6E, 0x7B4B},
+       {0x3D6F, 0x65A4},
+       {0x3D70, 0x91D1},
+       {0x3D71, 0x4ECA},
+       {0x3D72, 0x6D25},
+       {0x3D73, 0x895F},
+       {0x3D74, 0x7D27},
+       {0x3D75, 0x9526},
+       {0x3D76, 0x4EC5},
+       {0x3D77, 0x8C28},
+       {0x3D78, 0x8FDB},
+       {0x3D79, 0x9773},
+       {0x3D7A, 0x664B},
+       {0x3D7B, 0x7981},
+       {0x3D7C, 0x8FD1},
+       {0x3D7D, 0x70EC},
+       {0x3D7E, 0x6D78},
+       {0x3E21, 0x5C3D},
+       {0x3E22, 0x52B2},
+       {0x3E23, 0x8346},
+       {0x3E24, 0x5162},
+       {0x3E25, 0x830E},
+       {0x3E26, 0x775B},
+       {0x3E27, 0x6676},
+       {0x3E28, 0x9CB8},
+       {0x3E29, 0x4EAC},
+       {0x3E2A, 0x60CA},
+       {0x3E2B, 0x7CBE},
+       {0x3E2C, 0x7CB3},
+       {0x3E2D, 0x7ECF},
+       {0x3E2E, 0x4E95},
+       {0x3E2F, 0x8B66},
+       {0x3E30, 0x666F},
+       {0x3E31, 0x9888},
+       {0x3E32, 0x9759},
+       {0x3E33, 0x5883},
+       {0x3E34, 0x656C},
+       {0x3E35, 0x955C},
+       {0x3E36, 0x5F84},
+       {0x3E37, 0x75C9},
+       {0x3E38, 0x9756},
+       {0x3E39, 0x7ADF},
+       {0x3E3A, 0x7ADE},
+       {0x3E3B, 0x51C0},
+       {0x3E3C, 0x70AF},
+       {0x3E3D, 0x7A98},
+       {0x3E3E, 0x63EA},
+       {0x3E3F, 0x7A76},
+       {0x3E40, 0x7EA0},
+       {0x3E41, 0x7396},
+       {0x3E42, 0x97ED},
+       {0x3E43, 0x4E45},
+       {0x3E44, 0x7078},
+       {0x3E45, 0x4E5D},
+       {0x3E46, 0x9152},
+       {0x3E47, 0x53A9},
+       {0x3E48, 0x6551},
+       {0x3E49, 0x65E7},
+       {0x3E4A, 0x81FC},
+       {0x3E4B, 0x8205},
+       {0x3E4C, 0x548E},
+       {0x3E4D, 0x5C31},
+       {0x3E4E, 0x759A},
+       {0x3E4F, 0x97A0},
+       {0x3E50, 0x62D8},
+       {0x3E51, 0x72D9},
+       {0x3E52, 0x75BD},
+       {0x3E53, 0x5C45},
+       {0x3E54, 0x9A79},
+       {0x3E55, 0x83CA},
+       {0x3E56, 0x5C40},
+       {0x3E57, 0x5480},
+       {0x3E58, 0x77E9},
+       {0x3E59, 0x4E3E},
+       {0x3E5A, 0x6CAE},
+       {0x3E5B, 0x805A},
+       {0x3E5C, 0x62D2},
+       {0x3E5D, 0x636E},
+       {0x3E5E, 0x5DE8},
+       {0x3E5F, 0x5177},
+       {0x3E60, 0x8DDD},
+       {0x3E61, 0x8E1E},
+       {0x3E62, 0x952F},
+       {0x3E63, 0x4FF1},
+       {0x3E64, 0x53E5},
+       {0x3E65, 0x60E7},
+       {0x3E66, 0x70AC},
+       {0x3E67, 0x5267},
+       {0x3E68, 0x6350},
+       {0x3E69, 0x9E43},
+       {0x3E6A, 0x5A1F},
+       {0x3E6B, 0x5026},
+       {0x3E6C, 0x7737},
+       {0x3E6D, 0x5377},
+       {0x3E6E, 0x7EE2},
+       {0x3E6F, 0x6485},
+       {0x3E70, 0x652B},
+       {0x3E71, 0x6289},
+       {0x3E72, 0x6398},
+       {0x3E73, 0x5014},
+       {0x3E74, 0x7235},
+       {0x3E75, 0x89C9},
+       {0x3E76, 0x51B3},
+       {0x3E77, 0x8BC0},
+       {0x3E78, 0x7EDD},
+       {0x3E79, 0x5747},
+       {0x3E7A, 0x83CC},
+       {0x3E7B, 0x94A7},
+       {0x3E7C, 0x519B},
+       {0x3E7D, 0x541B},
+       {0x3E7E, 0x5CFB},
+       {0x3F21, 0x4FCA},
+       {0x3F22, 0x7AE3},
+       {0x3F23, 0x6D5A},
+       {0x3F24, 0x90E1},
+       {0x3F25, 0x9A8F},
+       {0x3F26, 0x5580},
+       {0x3F27, 0x5496},
+       {0x3F28, 0x5361},
+       {0x3F29, 0x54AF},
+       {0x3F2A, 0x5F00},
+       {0x3F2B, 0x63E9},
+       {0x3F2C, 0x6977},
+       {0x3F2D, 0x51EF},
+       {0x3F2E, 0x6168},
+       {0x3F2F, 0x520A},
+       {0x3F30, 0x582A},
+       {0x3F31, 0x52D8},
+       {0x3F32, 0x574E},
+       {0x3F33, 0x780D},
+       {0x3F34, 0x770B},
+       {0x3F35, 0x5EB7},
+       {0x3F36, 0x6177},
+       {0x3F37, 0x7CE0},
+       {0x3F38, 0x625B},
+       {0x3F39, 0x6297},
+       {0x3F3A, 0x4EA2},
+       {0x3F3B, 0x7095},
+       {0x3F3C, 0x8003},
+       {0x3F3D, 0x62F7},
+       {0x3F3E, 0x70E4},
+       {0x3F3F, 0x9760},
+       {0x3F40, 0x5777},
+       {0x3F41, 0x82DB},
+       {0x3F42, 0x67EF},
+       {0x3F43, 0x68F5},
+       {0x3F44, 0x78D5},
+       {0x3F45, 0x9897},
+       {0x3F46, 0x79D1},
+       {0x3F47, 0x58F3},
+       {0x3F48, 0x54B3},
+       {0x3F49, 0x53EF},
+       {0x3F4A, 0x6E34},
+       {0x3F4B, 0x514B},
+       {0x3F4C, 0x523B},
+       {0x3F4D, 0x5BA2},
+       {0x3F4E, 0x8BFE},
+       {0x3F4F, 0x80AF},
+       {0x3F50, 0x5543},
+       {0x3F51, 0x57A6},
+       {0x3F52, 0x6073},
+       {0x3F53, 0x5751},
+       {0x3F54, 0x542D},
+       {0x3F55, 0x7A7A},
+       {0x3F56, 0x6050},
+       {0x3F57, 0x5B54},
+       {0x3F58, 0x63A7},
+       {0x3F59, 0x62A0},
+       {0x3F5A, 0x53E3},
+       {0x3F5B, 0x6263},
+       {0x3F5C, 0x5BC7},
+       {0x3F5D, 0x67AF},
+       {0x3F5E, 0x54ED},
+       {0x3F5F, 0x7A9F},
+       {0x3F60, 0x82E6},
+       {0x3F61, 0x9177},
+       {0x3F62, 0x5E93},
+       {0x3F63, 0x88E4},
+       {0x3F64, 0x5938},
+       {0x3F65, 0x57AE},
+       {0x3F66, 0x630E},
+       {0x3F67, 0x8DE8},
+       {0x3F68, 0x80EF},
+       {0x3F69, 0x5757},
+       {0x3F6A, 0x7B77},
+       {0x3F6B, 0x4FA9},
+       {0x3F6C, 0x5FEB},
+       {0x3F6D, 0x5BBD},
+       {0x3F6E, 0x6B3E},
+       {0x3F6F, 0x5321},
+       {0x3F70, 0x7B50},
+       {0x3F71, 0x72C2},
+       {0x3F72, 0x6846},
+       {0x3F73, 0x77FF},
+       {0x3F74, 0x7736},
+       {0x3F75, 0x65F7},
+       {0x3F76, 0x51B5},
+       {0x3F77, 0x4E8F},
+       {0x3F78, 0x76D4},
+       {0x3F79, 0x5CBF},
+       {0x3F7A, 0x7AA5},
+       {0x3F7B, 0x8475},
+       {0x3F7C, 0x594E},
+       {0x3F7D, 0x9B41},
+       {0x3F7E, 0x5080},
+       {0x4021, 0x9988},
+       {0x4022, 0x6127},
+       {0x4023, 0x6E83},
+       {0x4024, 0x5764},
+       {0x4025, 0x6606},
+       {0x4026, 0x6346},
+       {0x4027, 0x56F0},
+       {0x4028, 0x62EC},
+       {0x4029, 0x6269},
+       {0x402A, 0x5ED3},
+       {0x402B, 0x9614},
+       {0x402C, 0x5783},
+       {0x402D, 0x62C9},
+       {0x402E, 0x5587},
+       {0x402F, 0x8721},
+       {0x4030, 0x814A},
+       {0x4031, 0x8FA3},
+       {0x4032, 0x5566},
+       {0x4033, 0x83B1},
+       {0x4034, 0x6765},
+       {0x4035, 0x8D56},
+       {0x4036, 0x84DD},
+       {0x4037, 0x5A6A},
+       {0x4038, 0x680F},
+       {0x4039, 0x62E6},
+       {0x403A, 0x7BEE},
+       {0x403B, 0x9611},
+       {0x403C, 0x5170},
+       {0x403D, 0x6F9C},
+       {0x403E, 0x8C30},
+       {0x403F, 0x63FD},
+       {0x4040, 0x89C8},
+       {0x4041, 0x61D2},
+       {0x4042, 0x7F06},
+       {0x4043, 0x70C2},
+       {0x4044, 0x6EE5},
+       {0x4045, 0x7405},
+       {0x4046, 0x6994},
+       {0x4047, 0x72FC},
+       {0x4048, 0x5ECA},
+       {0x4049, 0x90CE},
+       {0x404A, 0x6717},
+       {0x404B, 0x6D6A},
+       {0x404C, 0x635E},
+       {0x404D, 0x52B3},
+       {0x404E, 0x7262},
+       {0x404F, 0x8001},
+       {0x4050, 0x4F6C},
+       {0x4051, 0x59E5},
+       {0x4052, 0x916A},
+       {0x4053, 0x70D9},
+       {0x4054, 0x6D9D},
+       {0x4055, 0x52D2},
+       {0x4056, 0x4E50},
+       {0x4057, 0x96F7},
+       {0x4058, 0x956D},
+       {0x4059, 0x857E},
+       {0x405A, 0x78CA},
+       {0x405B, 0x7D2F},
+       {0x405C, 0x5121},
+       {0x405D, 0x5792},
+       {0x405E, 0x64C2},
+       {0x405F, 0x808B},
+       {0x4060, 0x7C7B},
+       {0x4061, 0x6CEA},
+       {0x4062, 0x68F1},
+       {0x4063, 0x695E},
+       {0x4064, 0x51B7},
+       {0x4065, 0x5398},
+       {0x4066, 0x68A8},
+       {0x4067, 0x7281},
+       {0x4068, 0x9ECE},
+       {0x4069, 0x7BF1},
+       {0x406A, 0x72F8},
+       {0x406B, 0x79BB},
+       {0x406C, 0x6F13},
+       {0x406D, 0x7406},
+       {0x406E, 0x674E},
+       {0x406F, 0x91CC},
+       {0x4070, 0x9CA4},
+       {0x4071, 0x793C},
+       {0x4072, 0x8389},
+       {0x4073, 0x8354},
+       {0x4074, 0x540F},
+       {0x4075, 0x6817},
+       {0x4076, 0x4E3D},
+       {0x4077, 0x5389},
+       {0x4078, 0x52B1},
+       {0x4079, 0x783E},
+       {0x407A, 0x5386},
+       {0x407B, 0x5229},
+       {0x407C, 0x5088},
+       {0x407D, 0x4F8B},
+       {0x407E, 0x4FD0},
+       {0x4121, 0x75E2},
+       {0x4122, 0x7ACB},
+       {0x4123, 0x7C92},
+       {0x4124, 0x6CA5},
+       {0x4125, 0x96B6},
+       {0x4126, 0x529B},
+       {0x4127, 0x7483},
+       {0x4128, 0x54E9},
+       {0x4129, 0x4FE9},
+       {0x412A, 0x8054},
+       {0x412B, 0x83B2},
+       {0x412C, 0x8FDE},
+       {0x412D, 0x9570},
+       {0x412E, 0x5EC9},
+       {0x412F, 0x601C},
+       {0x4130, 0x6D9F},
+       {0x4131, 0x5E18},
+       {0x4132, 0x655B},
+       {0x4133, 0x8138},
+       {0x4134, 0x94FE},
+       {0x4135, 0x604B},
+       {0x4136, 0x70BC},
+       {0x4137, 0x7EC3},
+       {0x4138, 0x7CAE},
+       {0x4139, 0x51C9},
+       {0x413A, 0x6881},
+       {0x413B, 0x7CB1},
+       {0x413C, 0x826F},
+       {0x413D, 0x4E24},
+       {0x413E, 0x8F86},
+       {0x413F, 0x91CF},
+       {0x4140, 0x667E},
+       {0x4141, 0x4EAE},
+       {0x4142, 0x8C05},
+       {0x4143, 0x64A9},
+       {0x4144, 0x804A},
+       {0x4145, 0x50DA},
+       {0x4146, 0x7597},
+       {0x4147, 0x71CE},
+       {0x4148, 0x5BE5},
+       {0x4149, 0x8FBD},
+       {0x414A, 0x6F66},
+       {0x414B, 0x4E86},
+       {0x414C, 0x6482},
+       {0x414D, 0x9563},
+       {0x414E, 0x5ED6},
+       {0x414F, 0x6599},
+       {0x4150, 0x5217},
+       {0x4151, 0x88C2},
+       {0x4152, 0x70C8},
+       {0x4153, 0x52A3},
+       {0x4154, 0x730E},
+       {0x4155, 0x7433},
+       {0x4156, 0x6797},
+       {0x4157, 0x78F7},
+       {0x4158, 0x9716},
+       {0x4159, 0x4E34},
+       {0x415A, 0x90BB},
+       {0x415B, 0x9CDE},
+       {0x415C, 0x6DCB},
+       {0x415D, 0x51DB},
+       {0x415E, 0x8D41},
+       {0x415F, 0x541D},
+       {0x4160, 0x62CE},
+       {0x4161, 0x73B2},
+       {0x4162, 0x83F1},
+       {0x4163, 0x96F6},
+       {0x4164, 0x9F84},
+       {0x4165, 0x94C3},
+       {0x4166, 0x4F36},
+       {0x4167, 0x7F9A},
+       {0x4168, 0x51CC},
+       {0x4169, 0x7075},
+       {0x416A, 0x9675},
+       {0x416B, 0x5CAD},
+       {0x416C, 0x9886},
+       {0x416D, 0x53E6},
+       {0x416E, 0x4EE4},
+       {0x416F, 0x6E9C},
+       {0x4170, 0x7409},
+       {0x4171, 0x69B4},
+       {0x4172, 0x786B},
+       {0x4173, 0x998F},
+       {0x4174, 0x7559},
+       {0x4175, 0x5218},
+       {0x4176, 0x7624},
+       {0x4177, 0x6D41},
+       {0x4178, 0x67F3},
+       {0x4179, 0x516D},
+       {0x417A, 0x9F99},
+       {0x417B, 0x804B},
+       {0x417C, 0x5499},
+       {0x417D, 0x7B3C},
+       {0x417E, 0x7ABF},
+       {0x4221, 0x9686},
+       {0x4222, 0x5784},
+       {0x4223, 0x62E2},
+       {0x4224, 0x9647},
+       {0x4225, 0x697C},
+       {0x4226, 0x5A04},
+       {0x4227, 0x6402},
+       {0x4228, 0x7BD3},
+       {0x4229, 0x6F0F},
+       {0x422A, 0x964B},
+       {0x422B, 0x82A6},
+       {0x422C, 0x5362},
+       {0x422D, 0x9885},
+       {0x422E, 0x5E90},
+       {0x422F, 0x7089},
+       {0x4230, 0x63B3},
+       {0x4231, 0x5364},
+       {0x4232, 0x864F},
+       {0x4233, 0x9C81},
+       {0x4234, 0x9E93},
+       {0x4235, 0x788C},
+       {0x4236, 0x9732},
+       {0x4237, 0x8DEF},
+       {0x4238, 0x8D42},
+       {0x4239, 0x9E7F},
+       {0x423A, 0x6F5E},
+       {0x423B, 0x7984},
+       {0x423C, 0x5F55},
+       {0x423D, 0x9646},
+       {0x423E, 0x622E},
+       {0x423F, 0x9A74},
+       {0x4240, 0x5415},
+       {0x4241, 0x94DD},
+       {0x4242, 0x4FA3},
+       {0x4243, 0x65C5},
+       {0x4244, 0x5C65},
+       {0x4245, 0x5C61},
+       {0x4246, 0x7F15},
+       {0x4247, 0x8651},
+       {0x4248, 0x6C2F},
+       {0x4249, 0x5F8B},
+       {0x424A, 0x7387},
+       {0x424B, 0x6EE4},
+       {0x424C, 0x7EFF},
+       {0x424D, 0x5CE6},
+       {0x424E, 0x631B},
+       {0x424F, 0x5B6A},
+       {0x4250, 0x6EE6},
+       {0x4251, 0x5375},
+       {0x4252, 0x4E71},
+       {0x4253, 0x63A0},
+       {0x4254, 0x7565},
+       {0x4255, 0x62A1},
+       {0x4256, 0x8F6E},
+       {0x4257, 0x4F26},
+       {0x4258, 0x4ED1},
+       {0x4259, 0x6CA6},
+       {0x425A, 0x7EB6},
+       {0x425B, 0x8BBA},
+       {0x425C, 0x841D},
+       {0x425D, 0x87BA},
+       {0x425E, 0x7F57},
+       {0x425F, 0x903B},
+       {0x4260, 0x9523},
+       {0x4261, 0x7BA9},
+       {0x4262, 0x9AA1},
+       {0x4263, 0x88F8},
+       {0x4264, 0x843D},
+       {0x4265, 0x6D1B},
+       {0x4266, 0x9A86},
+       {0x4267, 0x7EDC},
+       {0x4268, 0x5988},
+       {0x4269, 0x9EBB},
+       {0x426A, 0x739B},
+       {0x426B, 0x7801},
+       {0x426C, 0x8682},
+       {0x426D, 0x9A6C},
+       {0x426E, 0x9A82},
+       {0x426F, 0x561B},
+       {0x4270, 0x5417},
+       {0x4271, 0x57CB},
+       {0x4272, 0x4E70},
+       {0x4273, 0x9EA6},
+       {0x4274, 0x5356},
+       {0x4275, 0x8FC8},
+       {0x4276, 0x8109},
+       {0x4277, 0x7792},
+       {0x4278, 0x9992},
+       {0x4279, 0x86EE},
+       {0x427A, 0x6EE1},
+       {0x427B, 0x8513},
+       {0x427C, 0x66FC},
+       {0x427D, 0x6162},
+       {0x427E, 0x6F2B},
+       {0x4321, 0x8C29},
+       {0x4322, 0x8292},
+       {0x4323, 0x832B},
+       {0x4324, 0x76F2},
+       {0x4325, 0x6C13},
+       {0x4326, 0x5FD9},
+       {0x4327, 0x83BD},
+       {0x4328, 0x732B},
+       {0x4329, 0x8305},
+       {0x432A, 0x951A},
+       {0x432B, 0x6BDB},
+       {0x432C, 0x77DB},
+       {0x432D, 0x94C6},
+       {0x432E, 0x536F},
+       {0x432F, 0x8302},
+       {0x4330, 0x5192},
+       {0x4331, 0x5E3D},
+       {0x4332, 0x8C8C},
+       {0x4333, 0x8D38},
+       {0x4334, 0x4E48},
+       {0x4335, 0x73AB},
+       {0x4336, 0x679A},
+       {0x4337, 0x6885},
+       {0x4338, 0x9176},
+       {0x4339, 0x9709},
+       {0x433A, 0x7164},
+       {0x433B, 0x6CA1},
+       {0x433C, 0x7709},
+       {0x433D, 0x5A92},
+       {0x433E, 0x9541},
+       {0x433F, 0x6BCF},
+       {0x4340, 0x7F8E},
+       {0x4341, 0x6627},
+       {0x4342, 0x5BD0},
+       {0x4343, 0x59B9},
+       {0x4344, 0x5A9A},
+       {0x4345, 0x95E8},
+       {0x4346, 0x95F7},
+       {0x4347, 0x4EEC},
+       {0x4348, 0x840C},
+       {0x4349, 0x8499},
+       {0x434A, 0x6AAC},
+       {0x434B, 0x76DF},
+       {0x434C, 0x9530},
+       {0x434D, 0x731B},
+       {0x434E, 0x68A6},
+       {0x434F, 0x5B5F},
+       {0x4350, 0x772F},
+       {0x4351, 0x919A},
+       {0x4352, 0x9761},
+       {0x4353, 0x7CDC},
+       {0x4354, 0x8FF7},
+       {0x4355, 0x8C1C},
+       {0x4356, 0x5F25},
+       {0x4357, 0x7C73},
+       {0x4358, 0x79D8},
+       {0x4359, 0x89C5},
+       {0x435A, 0x6CCC},
+       {0x435B, 0x871C},
+       {0x435C, 0x5BC6},
+       {0x435D, 0x5E42},
+       {0x435E, 0x68C9},
+       {0x435F, 0x7720},
+       {0x4360, 0x7EF5},
+       {0x4361, 0x5195},
+       {0x4362, 0x514D},
+       {0x4363, 0x52C9},
+       {0x4364, 0x5A29},
+       {0x4365, 0x7F05},
+       {0x4366, 0x9762},
+       {0x4367, 0x82D7},
+       {0x4368, 0x63CF},
+       {0x4369, 0x7784},
+       {0x436A, 0x85D0},
+       {0x436B, 0x79D2},
+       {0x436C, 0x6E3A},
+       {0x436D, 0x5E99},
+       {0x436E, 0x5999},
+       {0x436F, 0x8511},
+       {0x4370, 0x706D},
+       {0x4371, 0x6C11},
+       {0x4372, 0x62BF},
+       {0x4373, 0x76BF},
+       {0x4374, 0x654F},
+       {0x4375, 0x60AF},
+       {0x4376, 0x95FD},
+       {0x4377, 0x660E},
+       {0x4378, 0x879F},
+       {0x4379, 0x9E23},
+       {0x437A, 0x94ED},
+       {0x437B, 0x540D},
+       {0x437C, 0x547D},
+       {0x437D, 0x8C2C},
+       {0x437E, 0x6478},
+       {0x4421, 0x6479},
+       {0x4422, 0x8611},
+       {0x4423, 0x6A21},
+       {0x4424, 0x819C},
+       {0x4425, 0x78E8},
+       {0x4426, 0x6469},
+       {0x4427, 0x9B54},
+       {0x4428, 0x62B9},
+       {0x4429, 0x672B},
+       {0x442A, 0x83AB},
+       {0x442B, 0x58A8},
+       {0x442C, 0x9ED8},
+       {0x442D, 0x6CAB},
+       {0x442E, 0x6F20},
+       {0x442F, 0x5BDE},
+       {0x4430, 0x964C},
+       {0x4431, 0x8C0B},
+       {0x4432, 0x725F},
+       {0x4433, 0x67D0},
+       {0x4434, 0x62C7},
+       {0x4435, 0x7261},
+       {0x4436, 0x4EA9},
+       {0x4437, 0x59C6},
+       {0x4438, 0x6BCD},
+       {0x4439, 0x5893},
+       {0x443A, 0x66AE},
+       {0x443B, 0x5E55},
+       {0x443C, 0x52DF},
+       {0x443D, 0x6155},
+       {0x443E, 0x6728},
+       {0x443F, 0x76EE},
+       {0x4440, 0x7766},
+       {0x4441, 0x7267},
+       {0x4442, 0x7A46},
+       {0x4443, 0x62FF},
+       {0x4444, 0x54EA},
+       {0x4445, 0x5450},
+       {0x4446, 0x94A0},
+       {0x4447, 0x90A3},
+       {0x4448, 0x5A1C},
+       {0x4449, 0x7EB3},
+       {0x444A, 0x6C16},
+       {0x444B, 0x4E43},
+       {0x444C, 0x5976},
+       {0x444D, 0x8010},
+       {0x444E, 0x5948},
+       {0x444F, 0x5357},
+       {0x4450, 0x7537},
+       {0x4451, 0x96BE},
+       {0x4452, 0x56CA},
+       {0x4453, 0x6320},
+       {0x4454, 0x8111},
+       {0x4455, 0x607C},
+       {0x4456, 0x95F9},
+       {0x4457, 0x6DD6},
+       {0x4458, 0x5462},
+       {0x4459, 0x9981},
+       {0x445A, 0x5185},
+       {0x445B, 0x5AE9},
+       {0x445C, 0x80FD},
+       {0x445D, 0x59AE},
+       {0x445E, 0x9713},
+       {0x445F, 0x502A},
+       {0x4460, 0x6CE5},
+       {0x4461, 0x5C3C},
+       {0x4462, 0x62DF},
+       {0x4463, 0x4F60},
+       {0x4464, 0x533F},
+       {0x4465, 0x817B},
+       {0x4466, 0x9006},
+       {0x4467, 0x6EBA},
+       {0x4468, 0x852B},
+       {0x4469, 0x62C8},
+       {0x446A, 0x5E74},
+       {0x446B, 0x78BE},
+       {0x446C, 0x64B5},
+       {0x446D, 0x637B},
+       {0x446E, 0x5FF5},
+       {0x446F, 0x5A18},
+       {0x4470, 0x917F},
+       {0x4471, 0x9E1F},
+       {0x4472, 0x5C3F},
+       {0x4473, 0x634F},
+       {0x4474, 0x8042},
+       {0x4475, 0x5B7D},
+       {0x4476, 0x556E},
+       {0x4477, 0x954A},
+       {0x4478, 0x954D},
+       {0x4479, 0x6D85},
+       {0x447A, 0x60A8},
+       {0x447B, 0x67E0},
+       {0x447C, 0x72DE},
+       {0x447D, 0x51DD},
+       {0x447E, 0x5B81},
+       {0x4521, 0x62E7},
+       {0x4522, 0x6CDE},
+       {0x4523, 0x725B},
+       {0x4524, 0x626D},
+       {0x4525, 0x94AE},
+       {0x4526, 0x7EBD},
+       {0x4527, 0x8113},
+       {0x4528, 0x6D53},
+       {0x4529, 0x519C},
+       {0x452A, 0x5F04},
+       {0x452B, 0x5974},
+       {0x452C, 0x52AA},
+       {0x452D, 0x6012},
+       {0x452E, 0x5973},
+       {0x452F, 0x6696},
+       {0x4530, 0x8650},
+       {0x4531, 0x759F},
+       {0x4532, 0x632A},
+       {0x4533, 0x61E6},
+       {0x4534, 0x7CEF},
+       {0x4535, 0x8BFA},
+       {0x4536, 0x54E6},
+       {0x4537, 0x6B27},
+       {0x4538, 0x9E25},
+       {0x4539, 0x6BB4},
+       {0x453A, 0x85D5},
+       {0x453B, 0x5455},
+       {0x453C, 0x5076},
+       {0x453D, 0x6CA4},
+       {0x453E, 0x556A},
+       {0x453F, 0x8DB4},
+       {0x4540, 0x722C},
+       {0x4541, 0x5E15},
+       {0x4542, 0x6015},
+       {0x4543, 0x7436},
+       {0x4544, 0x62CD},
+       {0x4545, 0x6392},
+       {0x4546, 0x724C},
+       {0x4547, 0x5F98},
+       {0x4548, 0x6E43},
+       {0x4549, 0x6D3E},
+       {0x454A, 0x6500},
+       {0x454B, 0x6F58},
+       {0x454C, 0x76D8},
+       {0x454D, 0x78D0},
+       {0x454E, 0x76FC},
+       {0x454F, 0x7554},
+       {0x4550, 0x5224},
+       {0x4551, 0x53DB},
+       {0x4552, 0x4E53},
+       {0x4553, 0x5E9E},
+       {0x4554, 0x65C1},
+       {0x4555, 0x802A},
+       {0x4556, 0x80D6},
+       {0x4557, 0x629B},
+       {0x4558, 0x5486},
+       {0x4559, 0x5228},
+       {0x455A, 0x70AE},
+       {0x455B, 0x888D},
+       {0x455C, 0x8DD1},
+       {0x455D, 0x6CE1},
+       {0x455E, 0x5478},
+       {0x455F, 0x80DA},
+       {0x4560, 0x57F9},
+       {0x4561, 0x88F4},
+       {0x4562, 0x8D54},
+       {0x4563, 0x966A},
+       {0x4564, 0x914D},
+       {0x4565, 0x4F69},
+       {0x4566, 0x6C9B},
+       {0x4567, 0x55B7},
+       {0x4568, 0x76C6},
+       {0x4569, 0x7830},
+       {0x456A, 0x62A8},
+       {0x456B, 0x70F9},
+       {0x456C, 0x6F8E},
+       {0x456D, 0x5F6D},
+       {0x456E, 0x84EC},
+       {0x456F, 0x68DA},
+       {0x4570, 0x787C},
+       {0x4571, 0x7BF7},
+       {0x4572, 0x81A8},
+       {0x4573, 0x670B},
+       {0x4574, 0x9E4F},
+       {0x4575, 0x6367},
+       {0x4576, 0x78B0},
+       {0x4577, 0x576F},
+       {0x4578, 0x7812},
+       {0x4579, 0x9739},
+       {0x457A, 0x6279},
+       {0x457B, 0x62AB},
+       {0x457C, 0x5288},
+       {0x457D, 0x7435},
+       {0x457E, 0x6BD7},
+       {0x4621, 0x5564},
+       {0x4622, 0x813E},
+       {0x4623, 0x75B2},
+       {0x4624, 0x76AE},
+       {0x4625, 0x5339},
+       {0x4626, 0x75DE},
+       {0x4627, 0x50FB},
+       {0x4628, 0x5C41},
+       {0x4629, 0x8B6C},
+       {0x462A, 0x7BC7},
+       {0x462B, 0x504F},
+       {0x462C, 0x7247},
+       {0x462D, 0x9A97},
+       {0x462E, 0x98D8},
+       {0x462F, 0x6F02},
+       {0x4630, 0x74E2},
+       {0x4631, 0x7968},
+       {0x4632, 0x6487},
+       {0x4633, 0x77A5},
+       {0x4634, 0x62FC},
+       {0x4635, 0x9891},
+       {0x4636, 0x8D2B},
+       {0x4637, 0x54C1},
+       {0x4638, 0x8058},
+       {0x4639, 0x4E52},
+       {0x463A, 0x576A},
+       {0x463B, 0x82F9},
+       {0x463C, 0x840D},
+       {0x463D, 0x5E73},
+       {0x463E, 0x51ED},
+       {0x463F, 0x74F6},
+       {0x4640, 0x8BC4},
+       {0x4641, 0x5C4F},
+       {0x4642, 0x5761},
+       {0x4643, 0x6CFC},
+       {0x4644, 0x9887},
+       {0x4645, 0x5A46},
+       {0x4646, 0x7834},
+       {0x4647, 0x9B44},
+       {0x4648, 0x8FEB},
+       {0x4649, 0x7C95},
+       {0x464A, 0x5256},
+       {0x464B, 0x6251},
+       {0x464C, 0x94FA},
+       {0x464D, 0x4EC6},
+       {0x464E, 0x8386},
+       {0x464F, 0x8461},
+       {0x4650, 0x83E9},
+       {0x4651, 0x84B2},
+       {0x4652, 0x57D4},
+       {0x4653, 0x6734},
+       {0x4654, 0x5703},
+       {0x4655, 0x666E},
+       {0x4656, 0x6D66},
+       {0x4657, 0x8C31},
+       {0x4658, 0x66DD},
+       {0x4659, 0x7011},
+       {0x465A, 0x671F},
+       {0x465B, 0x6B3A},
+       {0x465C, 0x6816},
+       {0x465D, 0x621A},
+       {0x465E, 0x59BB},
+       {0x465F, 0x4E03},
+       {0x4660, 0x51C4},
+       {0x4661, 0x6F06},
+       {0x4662, 0x67D2},
+       {0x4663, 0x6C8F},
+       {0x4664, 0x5176},
+       {0x4665, 0x68CB},
+       {0x4666, 0x5947},
+       {0x4667, 0x6B67},
+       {0x4668, 0x7566},
+       {0x4669, 0x5D0E},
+       {0x466A, 0x8110},
+       {0x466B, 0x9F50},
+       {0x466C, 0x65D7},
+       {0x466D, 0x7948},
+       {0x466E, 0x7941},
+       {0x466F, 0x9A91},
+       {0x4670, 0x8D77},
+       {0x4671, 0x5C82},
+       {0x4672, 0x4E5E},
+       {0x4673, 0x4F01},
+       {0x4674, 0x542F},
+       {0x4675, 0x5951},
+       {0x4676, 0x780C},
+       {0x4677, 0x5668},
+       {0x4678, 0x6C14},
+       {0x4679, 0x8FC4},
+       {0x467A, 0x5F03},
+       {0x467B, 0x6C7D},
+       {0x467C, 0x6CE3},
+       {0x467D, 0x8BAB},
+       {0x467E, 0x6390},
+       {0x4721, 0x6070},
+       {0x4722, 0x6D3D},
+       {0x4723, 0x7275},
+       {0x4724, 0x6266},
+       {0x4725, 0x948E},
+       {0x4726, 0x94C5},
+       {0x4727, 0x5343},
+       {0x4728, 0x8FC1},
+       {0x4729, 0x7B7E},
+       {0x472A, 0x4EDF},
+       {0x472B, 0x8C26},
+       {0x472C, 0x4E7E},
+       {0x472D, 0x9ED4},
+       {0x472E, 0x94B1},
+       {0x472F, 0x94B3},
+       {0x4730, 0x524D},
+       {0x4731, 0x6F5C},
+       {0x4732, 0x9063},
+       {0x4733, 0x6D45},
+       {0x4734, 0x8C34},
+       {0x4735, 0x5811},
+       {0x4736, 0x5D4C},
+       {0x4737, 0x6B20},
+       {0x4738, 0x6B49},
+       {0x4739, 0x67AA},
+       {0x473A, 0x545B},
+       {0x473B, 0x8154},
+       {0x473C, 0x7F8C},
+       {0x473D, 0x5899},
+       {0x473E, 0x8537},
+       {0x473F, 0x5F3A},
+       {0x4740, 0x62A2},
+       {0x4741, 0x6A47},
+       {0x4742, 0x9539},
+       {0x4743, 0x6572},
+       {0x4744, 0x6084},
+       {0x4745, 0x6865},
+       {0x4746, 0x77A7},
+       {0x4747, 0x4E54},
+       {0x4748, 0x4FA8},
+       {0x4749, 0x5DE7},
+       {0x474A, 0x9798},
+       {0x474B, 0x64AC},
+       {0x474C, 0x7FD8},
+       {0x474D, 0x5CED},
+       {0x474E, 0x4FCF},
+       {0x474F, 0x7A8D},
+       {0x4750, 0x5207},
+       {0x4751, 0x8304},
+       {0x4752, 0x4E14},
+       {0x4753, 0x602F},
+       {0x4754, 0x7A83},
+       {0x4755, 0x94A6},
+       {0x4756, 0x4FB5},
+       {0x4757, 0x4EB2},
+       {0x4758, 0x79E6},
+       {0x4759, 0x7434},
+       {0x475A, 0x52E4},
+       {0x475B, 0x82B9},
+       {0x475C, 0x64D2},
+       {0x475D, 0x79BD},
+       {0x475E, 0x5BDD},
+       {0x475F, 0x6C81},
+       {0x4760, 0x9752},
+       {0x4761, 0x8F7B},
+       {0x4762, 0x6C22},
+       {0x4763, 0x503E},
+       {0x4764, 0x537F},
+       {0x4765, 0x6E05},
+       {0x4766, 0x64CE},
+       {0x4767, 0x6674},
+       {0x4768, 0x6C30},
+       {0x4769, 0x60C5},
+       {0x476A, 0x9877},
+       {0x476B, 0x8BF7},
+       {0x476C, 0x5E86},
+       {0x476D, 0x743C},
+       {0x476E, 0x7A77},
+       {0x476F, 0x79CB},
+       {0x4770, 0x4E18},
+       {0x4771, 0x90B1},
+       {0x4772, 0x7403},
+       {0x4773, 0x6C42},
+       {0x4774, 0x56DA},
+       {0x4775, 0x914B},
+       {0x4776, 0x6CC5},
+       {0x4777, 0x8D8B},
+       {0x4778, 0x533A},
+       {0x4779, 0x86C6},
+       {0x477A, 0x66F2},
+       {0x477B, 0x8EAF},
+       {0x477C, 0x5C48},
+       {0x477D, 0x9A71},
+       {0x477E, 0x6E20},
+       {0x4821, 0x53D6},
+       {0x4822, 0x5A36},
+       {0x4823, 0x9F8B},
+       {0x4824, 0x8DA3},
+       {0x4825, 0x53BB},
+       {0x4826, 0x5708},
+       {0x4827, 0x98A7},
+       {0x4828, 0x6743},
+       {0x4829, 0x919B},
+       {0x482A, 0x6CC9},
+       {0x482B, 0x5168},
+       {0x482C, 0x75CA},
+       {0x482D, 0x62F3},
+       {0x482E, 0x72AC},
+       {0x482F, 0x5238},
+       {0x4830, 0x529D},
+       {0x4831, 0x7F3A},
+       {0x4832, 0x7094},
+       {0x4833, 0x7638},
+       {0x4834, 0x5374},
+       {0x4835, 0x9E4A},
+       {0x4836, 0x69B7},
+       {0x4837, 0x786E},
+       {0x4838, 0x96C0},
+       {0x4839, 0x88D9},
+       {0x483A, 0x7FA4},
+       {0x483B, 0x7136},
+       {0x483C, 0x71C3},
+       {0x483D, 0x5189},
+       {0x483E, 0x67D3},
+       {0x483F, 0x74E4},
+       {0x4840, 0x58E4},
+       {0x4841, 0x6518},
+       {0x4842, 0x56B7},
+       {0x4843, 0x8BA9},
+       {0x4844, 0x9976},
+       {0x4845, 0x6270},
+       {0x4846, 0x7ED5},
+       {0x4847, 0x60F9},
+       {0x4848, 0x70ED},
+       {0x4849, 0x58EC},
+       {0x484A, 0x4EC1},
+       {0x484B, 0x4EBA},
+       {0x484C, 0x5FCD},
+       {0x484D, 0x97E7},
+       {0x484E, 0x4EFB},
+       {0x484F, 0x8BA4},
+       {0x4850, 0x5203},
+       {0x4851, 0x598A},
+       {0x4852, 0x7EAB},
+       {0x4853, 0x6254},
+       {0x4854, 0x4ECD},
+       {0x4855, 0x65E5},
+       {0x4856, 0x620E},
+       {0x4857, 0x8338},
+       {0x4858, 0x84C9},
+       {0x4859, 0x8363},
+       {0x485A, 0x878D},
+       {0x485B, 0x7194},
+       {0x485C, 0x6EB6},
+       {0x485D, 0x5BB9},
+       {0x485E, 0x7ED2},
+       {0x485F, 0x5197},
+       {0x4860, 0x63C9},
+       {0x4861, 0x67D4},
+       {0x4862, 0x8089},
+       {0x4863, 0x8339},
+       {0x4864, 0x8815},
+       {0x4865, 0x5112},
+       {0x4866, 0x5B7A},
+       {0x4867, 0x5982},
+       {0x4868, 0x8FB1},
+       {0x4869, 0x4E73},
+       {0x486A, 0x6C5D},
+       {0x486B, 0x5165},
+       {0x486C, 0x8925},
+       {0x486D, 0x8F6F},
+       {0x486E, 0x962E},
+       {0x486F, 0x854A},
+       {0x4870, 0x745E},
+       {0x4871, 0x9510},
+       {0x4872, 0x95F0},
+       {0x4873, 0x6DA6},
+       {0x4874, 0x82E5},
+       {0x4875, 0x5F31},
+       {0x4876, 0x6492},
+       {0x4877, 0x6D12},
+       {0x4878, 0x8428},
+       {0x4879, 0x816E},
+       {0x487A, 0x9CC3},
+       {0x487B, 0x585E},
+       {0x487C, 0x8D5B},
+       {0x487D, 0x4E09},
+       {0x487E, 0x53C1},
+       {0x4921, 0x4F1E},
+       {0x4922, 0x6563},
+       {0x4923, 0x6851},
+       {0x4924, 0x55D3},
+       {0x4925, 0x4E27},
+       {0x4926, 0x6414},
+       {0x4927, 0x9A9A},
+       {0x4928, 0x626B},
+       {0x4929, 0x5AC2},
+       {0x492A, 0x745F},
+       {0x492B, 0x8272},
+       {0x492C, 0x6DA9},
+       {0x492D, 0x68EE},
+       {0x492E, 0x50E7},
+       {0x492F, 0x838E},
+       {0x4930, 0x7802},
+       {0x4931, 0x6740},
+       {0x4932, 0x5239},
+       {0x4933, 0x6C99},
+       {0x4934, 0x7EB1},
+       {0x4935, 0x50BB},
+       {0x4936, 0x5565},
+       {0x4937, 0x715E},
+       {0x4938, 0x7B5B},
+       {0x4939, 0x6652},
+       {0x493A, 0x73CA},
+       {0x493B, 0x82EB},
+       {0x493C, 0x6749},
+       {0x493D, 0x5C71},
+       {0x493E, 0x5220},
+       {0x493F, 0x717D},
+       {0x4940, 0x886B},
+       {0x4941, 0x95EA},
+       {0x4942, 0x9655},
+       {0x4943, 0x64C5},
+       {0x4944, 0x8D61},
+       {0x4945, 0x81B3},
+       {0x4946, 0x5584},
+       {0x4947, 0x6C55},
+       {0x4948, 0x6247},
+       {0x4949, 0x7F2E},
+       {0x494A, 0x5892},
+       {0x494B, 0x4F24},
+       {0x494C, 0x5546},
+       {0x494D, 0x8D4F},
+       {0x494E, 0x664C},
+       {0x494F, 0x4E0A},
+       {0x4950, 0x5C1A},
+       {0x4951, 0x88F3},
+       {0x4952, 0x68A2},
+       {0x4953, 0x634E},
+       {0x4954, 0x7A0D},
+       {0x4955, 0x70E7},
+       {0x4956, 0x828D},
+       {0x4957, 0x52FA},
+       {0x4958, 0x97F6},
+       {0x4959, 0x5C11},
+       {0x495A, 0x54E8},
+       {0x495B, 0x90B5},
+       {0x495C, 0x7ECD},
+       {0x495D, 0x5962},
+       {0x495E, 0x8D4A},
+       {0x495F, 0x86C7},
+       {0x4960, 0x820C},
+       {0x4961, 0x820D},
+       {0x4962, 0x8D66},
+       {0x4963, 0x6444},
+       {0x4964, 0x5C04},
+       {0x4965, 0x6151},
+       {0x4966, 0x6D89},
+       {0x4967, 0x793E},
+       {0x4968, 0x8BBE},
+       {0x4969, 0x7837},
+       {0x496A, 0x7533},
+       {0x496B, 0x547B},
+       {0x496C, 0x4F38},
+       {0x496D, 0x8EAB},
+       {0x496E, 0x6DF1},
+       {0x496F, 0x5A20},
+       {0x4970, 0x7EC5},
+       {0x4971, 0x795E},
+       {0x4972, 0x6C88},
+       {0x4973, 0x5BA1},
+       {0x4974, 0x5A76},
+       {0x4975, 0x751A},
+       {0x4976, 0x80BE},
+       {0x4977, 0x614E},
+       {0x4978, 0x6E17},
+       {0x4979, 0x58F0},
+       {0x497A, 0x751F},
+       {0x497B, 0x7525},
+       {0x497C, 0x7272},
+       {0x497D, 0x5347},
+       {0x497E, 0x7EF3},
+       {0x4A21, 0x7701},
+       {0x4A22, 0x76DB},
+       {0x4A23, 0x5269},
+       {0x4A24, 0x80DC},
+       {0x4A25, 0x5723},
+       {0x4A26, 0x5E08},
+       {0x4A27, 0x5931},
+       {0x4A28, 0x72EE},
+       {0x4A29, 0x65BD},
+       {0x4A2A, 0x6E7F},
+       {0x4A2B, 0x8BD7},
+       {0x4A2C, 0x5C38},
+       {0x4A2D, 0x8671},
+       {0x4A2E, 0x5341},
+       {0x4A2F, 0x77F3},
+       {0x4A30, 0x62FE},
+       {0x4A31, 0x65F6},
+       {0x4A32, 0x4EC0},
+       {0x4A33, 0x98DF},
+       {0x4A34, 0x8680},
+       {0x4A35, 0x5B9E},
+       {0x4A36, 0x8BC6},
+       {0x4A37, 0x53F2},
+       {0x4A38, 0x77E2},
+       {0x4A39, 0x4F7F},
+       {0x4A3A, 0x5C4E},
+       {0x4A3B, 0x9A76},
+       {0x4A3C, 0x59CB},
+       {0x4A3D, 0x5F0F},
+       {0x4A3E, 0x793A},
+       {0x4A3F, 0x58EB},
+       {0x4A40, 0x4E16},
+       {0x4A41, 0x67FF},
+       {0x4A42, 0x4E8B},
+       {0x4A43, 0x62ED},
+       {0x4A44, 0x8A93},
+       {0x4A45, 0x901D},
+       {0x4A46, 0x52BF},
+       {0x4A47, 0x662F},
+       {0x4A48, 0x55DC},
+       {0x4A49, 0x566C},
+       {0x4A4A, 0x9002},
+       {0x4A4B, 0x4ED5},
+       {0x4A4C, 0x4F8D},
+       {0x4A4D, 0x91CA},
+       {0x4A4E, 0x9970},
+       {0x4A4F, 0x6C0F},
+       {0x4A50, 0x5E02},
+       {0x4A51, 0x6043},
+       {0x4A52, 0x5BA4},
+       {0x4A53, 0x89C6},
+       {0x4A54, 0x8BD5},
+       {0x4A55, 0x6536},
+       {0x4A56, 0x624B},
+       {0x4A57, 0x9996},
+       {0x4A58, 0x5B88},
+       {0x4A59, 0x5BFF},
+       {0x4A5A, 0x6388},
+       {0x4A5B, 0x552E},
+       {0x4A5C, 0x53D7},
+       {0x4A5D, 0x7626},
+       {0x4A5E, 0x517D},
+       {0x4A5F, 0x852C},
+       {0x4A60, 0x67A2},
+       {0x4A61, 0x68B3},
+       {0x4A62, 0x6B8A},
+       {0x4A63, 0x6292},
+       {0x4A64, 0x8F93},
+       {0x4A65, 0x53D4},
+       {0x4A66, 0x8212},
+       {0x4A67, 0x6DD1},
+       {0x4A68, 0x758F},
+       {0x4A69, 0x4E66},
+       {0x4A6A, 0x8D4E},
+       {0x4A6B, 0x5B70},
+       {0x4A6C, 0x719F},
+       {0x4A6D, 0x85AF},
+       {0x4A6E, 0x6691},
+       {0x4A6F, 0x66D9},
+       {0x4A70, 0x7F72},
+       {0x4A71, 0x8700},
+       {0x4A72, 0x9ECD},
+       {0x4A73, 0x9F20},
+       {0x4A74, 0x5C5E},
+       {0x4A75, 0x672F},
+       {0x4A76, 0x8FF0},
+       {0x4A77, 0x6811},
+       {0x4A78, 0x675F},
+       {0x4A79, 0x620D},
+       {0x4A7A, 0x7AD6},
+       {0x4A7B, 0x5885},
+       {0x4A7C, 0x5EB6},
+       {0x4A7D, 0x6570},
+       {0x4A7E, 0x6F31},
+       {0x4B21, 0x6055},
+       {0x4B22, 0x5237},
+       {0x4B23, 0x800D},
+       {0x4B24, 0x6454},
+       {0x4B25, 0x8870},
+       {0x4B26, 0x7529},
+       {0x4B27, 0x5E05},
+       {0x4B28, 0x6813},
+       {0x4B29, 0x62F4},
+       {0x4B2A, 0x971C},
+       {0x4B2B, 0x53CC},
+       {0x4B2C, 0x723D},
+       {0x4B2D, 0x8C01},
+       {0x4B2E, 0x6C34},
+       {0x4B2F, 0x7761},
+       {0x4B30, 0x7A0E},
+       {0x4B31, 0x542E},
+       {0x4B32, 0x77AC},
+       {0x4B33, 0x987A},
+       {0x4B34, 0x821C},
+       {0x4B35, 0x8BF4},
+       {0x4B36, 0x7855},
+       {0x4B37, 0x6714},
+       {0x4B38, 0x70C1},
+       {0x4B39, 0x65AF},
+       {0x4B3A, 0x6495},
+       {0x4B3B, 0x5636},
+       {0x4B3C, 0x601D},
+       {0x4B3D, 0x79C1},
+       {0x4B3E, 0x53F8},
+       {0x4B3F, 0x4E1D},
+       {0x4B40, 0x6B7B},
+       {0x4B41, 0x8086},
+       {0x4B42, 0x5BFA},
+       {0x4B43, 0x55E3},
+       {0x4B44, 0x56DB},
+       {0x4B45, 0x4F3A},
+       {0x4B46, 0x4F3C},
+       {0x4B47, 0x9972},
+       {0x4B48, 0x5DF3},
+       {0x4B49, 0x677E},
+       {0x4B4A, 0x8038},
+       {0x4B4B, 0x6002},
+       {0x4B4C, 0x9882},
+       {0x4B4D, 0x9001},
+       {0x4B4E, 0x5B8B},
+       {0x4B4F, 0x8BBC},
+       {0x4B50, 0x8BF5},
+       {0x4B51, 0x641C},
+       {0x4B52, 0x8258},
+       {0x4B53, 0x64DE},
+       {0x4B54, 0x55FD},
+       {0x4B55, 0x82CF},
+       {0x4B56, 0x9165},
+       {0x4B57, 0x4FD7},
+       {0x4B58, 0x7D20},
+       {0x4B59, 0x901F},
+       {0x4B5A, 0x7C9F},
+       {0x4B5B, 0x50F3},
+       {0x4B5C, 0x5851},
+       {0x4B5D, 0x6EAF},
+       {0x4B5E, 0x5BBF},
+       {0x4B5F, 0x8BC9},
+       {0x4B60, 0x8083},
+       {0x4B61, 0x9178},
+       {0x4B62, 0x849C},
+       {0x4B63, 0x7B97},
+       {0x4B64, 0x867D},
+       {0x4B65, 0x968B},
+       {0x4B66, 0x968F},
+       {0x4B67, 0x7EE5},
+       {0x4B68, 0x9AD3},
+       {0x4B69, 0x788E},
+       {0x4B6A, 0x5C81},
+       {0x4B6B, 0x7A57},
+       {0x4B6C, 0x9042},
+       {0x4B6D, 0x96A7},
+       {0x4B6E, 0x795F},
+       {0x4B6F, 0x5B59},
+       {0x4B70, 0x635F},
+       {0x4B71, 0x7B0B},
+       {0x4B72, 0x84D1},
+       {0x4B73, 0x68AD},
+       {0x4B74, 0x5506},
+       {0x4B75, 0x7F29},
+       {0x4B76, 0x7410},
+       {0x4B77, 0x7D22},
+       {0x4B78, 0x9501},
+       {0x4B79, 0x6240},
+       {0x4B7A, 0x584C},
+       {0x4B7B, 0x4ED6},
+       {0x4B7C, 0x5B83},
+       {0x4B7D, 0x5979},
+       {0x4B7E, 0x5854},
+       {0x4C21, 0x736D},
+       {0x4C22, 0x631E},
+       {0x4C23, 0x8E4B},
+       {0x4C24, 0x8E0F},
+       {0x4C25, 0x80CE},
+       {0x4C26, 0x82D4},
+       {0x4C27, 0x62AC},
+       {0x4C28, 0x53F0},
+       {0x4C29, 0x6CF0},
+       {0x4C2A, 0x915E},
+       {0x4C2B, 0x592A},
+       {0x4C2C, 0x6001},
+       {0x4C2D, 0x6C70},
+       {0x4C2E, 0x574D},
+       {0x4C2F, 0x644A},
+       {0x4C30, 0x8D2A},
+       {0x4C31, 0x762B},
+       {0x4C32, 0x6EE9},
+       {0x4C33, 0x575B},
+       {0x4C34, 0x6A80},
+       {0x4C35, 0x75F0},
+       {0x4C36, 0x6F6D},
+       {0x4C37, 0x8C2D},
+       {0x4C38, 0x8C08},
+       {0x4C39, 0x5766},
+       {0x4C3A, 0x6BEF},
+       {0x4C3B, 0x8892},
+       {0x4C3C, 0x78B3},
+       {0x4C3D, 0x63A2},
+       {0x4C3E, 0x53F9},
+       {0x4C3F, 0x70AD},
+       {0x4C40, 0x6C64},
+       {0x4C41, 0x5858},
+       {0x4C42, 0x642A},
+       {0x4C43, 0x5802},
+       {0x4C44, 0x68E0},
+       {0x4C45, 0x819B},
+       {0x4C46, 0x5510},
+       {0x4C47, 0x7CD6},
+       {0x4C48, 0x5018},
+       {0x4C49, 0x8EBA},
+       {0x4C4A, 0x6DCC},
+       {0x4C4B, 0x8D9F},
+       {0x4C4C, 0x70EB},
+       {0x4C4D, 0x638F},
+       {0x4C4E, 0x6D9B},
+       {0x4C4F, 0x6ED4},
+       {0x4C50, 0x7EE6},
+       {0x4C51, 0x8404},
+       {0x4C52, 0x6843},
+       {0x4C53, 0x9003},
+       {0x4C54, 0x6DD8},
+       {0x4C55, 0x9676},
+       {0x4C56, 0x8BA8},
+       {0x4C57, 0x5957},
+       {0x4C58, 0x7279},
+       {0x4C59, 0x85E4},
+       {0x4C5A, 0x817E},
+       {0x4C5B, 0x75BC},
+       {0x4C5C, 0x8A8A},
+       {0x4C5D, 0x68AF},
+       {0x4C5E, 0x5254},
+       {0x4C5F, 0x8E22},
+       {0x4C60, 0x9511},
+       {0x4C61, 0x63D0},
+       {0x4C62, 0x9898},
+       {0x4C63, 0x8E44},
+       {0x4C64, 0x557C},
+       {0x4C65, 0x4F53},
+       {0x4C66, 0x66FF},
+       {0x4C67, 0x568F},
+       {0x4C68, 0x60D5},
+       {0x4C69, 0x6D95},
+       {0x4C6A, 0x5243},
+       {0x4C6B, 0x5C49},
+       {0x4C6C, 0x5929},
+       {0x4C6D, 0x6DFB},
+       {0x4C6E, 0x586B},
+       {0x4C6F, 0x7530},
+       {0x4C70, 0x751C},
+       {0x4C71, 0x606C},
+       {0x4C72, 0x8214},
+       {0x4C73, 0x8146},
+       {0x4C74, 0x6311},
+       {0x4C75, 0x6761},
+       {0x4C76, 0x8FE2},
+       {0x4C77, 0x773A},
+       {0x4C78, 0x8DF3},
+       {0x4C79, 0x8D34},
+       {0x4C7A, 0x94C1},
+       {0x4C7B, 0x5E16},
+       {0x4C7C, 0x5385},
+       {0x4C7D, 0x542C},
+       {0x4C7E, 0x70C3},
+       {0x4D21, 0x6C40},
+       {0x4D22, 0x5EF7},
+       {0x4D23, 0x505C},
+       {0x4D24, 0x4EAD},
+       {0x4D25, 0x5EAD},
+       {0x4D26, 0x633A},
+       {0x4D27, 0x8247},
+       {0x4D28, 0x901A},
+       {0x4D29, 0x6850},
+       {0x4D2A, 0x916E},
+       {0x4D2B, 0x77B3},
+       {0x4D2C, 0x540C},
+       {0x4D2D, 0x94DC},
+       {0x4D2E, 0x5F64},
+       {0x4D2F, 0x7AE5},
+       {0x4D30, 0x6876},
+       {0x4D31, 0x6345},
+       {0x4D32, 0x7B52},
+       {0x4D33, 0x7EDF},
+       {0x4D34, 0x75DB},
+       {0x4D35, 0x5077},
+       {0x4D36, 0x6295},
+       {0x4D37, 0x5934},
+       {0x4D38, 0x900F},
+       {0x4D39, 0x51F8},
+       {0x4D3A, 0x79C3},
+       {0x4D3B, 0x7A81},
+       {0x4D3C, 0x56FE},
+       {0x4D3D, 0x5F92},
+       {0x4D3E, 0x9014},
+       {0x4D3F, 0x6D82},
+       {0x4D40, 0x5C60},
+       {0x4D41, 0x571F},
+       {0x4D42, 0x5410},
+       {0x4D43, 0x5154},
+       {0x4D44, 0x6E4D},
+       {0x4D45, 0x56E2},
+       {0x4D46, 0x63A8},
+       {0x4D47, 0x9893},
+       {0x4D48, 0x817F},
+       {0x4D49, 0x8715},
+       {0x4D4A, 0x892A},
+       {0x4D4B, 0x9000},
+       {0x4D4C, 0x541E},
+       {0x4D4D, 0x5C6F},
+       {0x4D4E, 0x81C0},
+       {0x4D4F, 0x62D6},
+       {0x4D50, 0x6258},
+       {0x4D51, 0x8131},
+       {0x4D52, 0x9E35},
+       {0x4D53, 0x9640},
+       {0x4D54, 0x9A6E},
+       {0x4D55, 0x9A7C},
+       {0x4D56, 0x692D},
+       {0x4D57, 0x59A5},
+       {0x4D58, 0x62D3},
+       {0x4D59, 0x553E},
+       {0x4D5A, 0x6316},
+       {0x4D5B, 0x54C7},
+       {0x4D5C, 0x86D9},
+       {0x4D5D, 0x6D3C},
+       {0x4D5E, 0x5A03},
+       {0x4D5F, 0x74E6},
+       {0x4D60, 0x889C},
+       {0x4D61, 0x6B6A},
+       {0x4D62, 0x5916},
+       {0x4D63, 0x8C4C},
+       {0x4D64, 0x5F2F},
+       {0x4D65, 0x6E7E},
+       {0x4D66, 0x73A9},
+       {0x4D67, 0x987D},
+       {0x4D68, 0x4E38},
+       {0x4D69, 0x70F7},
+       {0x4D6A, 0x5B8C},
+       {0x4D6B, 0x7897},
+       {0x4D6C, 0x633D},
+       {0x4D6D, 0x665A},
+       {0x4D6E, 0x7696},
+       {0x4D6F, 0x60CB},
+       {0x4D70, 0x5B9B},
+       {0x4D71, 0x5A49},
+       {0x4D72, 0x4E07},
+       {0x4D73, 0x8155},
+       {0x4D74, 0x6C6A},
+       {0x4D75, 0x738B},
+       {0x4D76, 0x4EA1},
+       {0x4D77, 0x6789},
+       {0x4D78, 0x7F51},
+       {0x4D79, 0x5F80},
+       {0x4D7A, 0x65FA},
+       {0x4D7B, 0x671B},
+       {0x4D7C, 0x5FD8},
+       {0x4D7D, 0x5984},
+       {0x4D7E, 0x5A01},
+       {0x4E21, 0x5DCD},
+       {0x4E22, 0x5FAE},
+       {0x4E23, 0x5371},
+       {0x4E24, 0x97E6},
+       {0x4E25, 0x8FDD},
+       {0x4E26, 0x6845},
+       {0x4E27, 0x56F4},
+       {0x4E28, 0x552F},
+       {0x4E29, 0x60DF},
+       {0x4E2A, 0x4E3A},
+       {0x4E2B, 0x6F4D},
+       {0x4E2C, 0x7EF4},
+       {0x4E2D, 0x82C7},
+       {0x4E2E, 0x840E},
+       {0x4E2F, 0x59D4},
+       {0x4E30, 0x4F1F},
+       {0x4E31, 0x4F2A},
+       {0x4E32, 0x5C3E},
+       {0x4E33, 0x7EAC},
+       {0x4E34, 0x672A},
+       {0x4E35, 0x851A},
+       {0x4E36, 0x5473},
+       {0x4E37, 0x754F},
+       {0x4E38, 0x80C3},
+       {0x4E39, 0x5582},
+       {0x4E3A, 0x9B4F},
+       {0x4E3B, 0x4F4D},
+       {0x4E3C, 0x6E2D},
+       {0x4E3D, 0x8C13},
+       {0x4E3E, 0x5C09},
+       {0x4E3F, 0x6170},
+       {0x4E40, 0x536B},
+       {0x4E41, 0x761F},
+       {0x4E42, 0x6E29},
+       {0x4E43, 0x868A},
+       {0x4E44, 0x6587},
+       {0x4E45, 0x95FB},
+       {0x4E46, 0x7EB9},
+       {0x4E47, 0x543B},
+       {0x4E48, 0x7A33},
+       {0x4E49, 0x7D0A},
+       {0x4E4A, 0x95EE},
+       {0x4E4B, 0x55E1},
+       {0x4E4C, 0x7FC1},
+       {0x4E4D, 0x74EE},
+       {0x4E4E, 0x631D},
+       {0x4E4F, 0x8717},
+       {0x4E50, 0x6DA1},
+       {0x4E51, 0x7A9D},
+       {0x4E52, 0x6211},
+       {0x4E53, 0x65A1},
+       {0x4E54, 0x5367},
+       {0x4E55, 0x63E1},
+       {0x4E56, 0x6C83},
+       {0x4E57, 0x5DEB},
+       {0x4E58, 0x545C},
+       {0x4E59, 0x94A8},
+       {0x4E5A, 0x4E4C},
+       {0x4E5B, 0x6C61},
+       {0x4E5C, 0x8BEC},
+       {0x4E5D, 0x5C4B},
+       {0x4E5E, 0x65E0},
+       {0x4E5F, 0x829C},
+       {0x4E60, 0x68A7},
+       {0x4E61, 0x543E},
+       {0x4E62, 0x5434},
+       {0x4E63, 0x6BCB},
+       {0x4E64, 0x6B66},
+       {0x4E65, 0x4E94},
+       {0x4E66, 0x6342},
+       {0x4E67, 0x5348},
+       {0x4E68, 0x821E},
+       {0x4E69, 0x4F0D},
+       {0x4E6A, 0x4FAE},
+       {0x4E6B, 0x575E},
+       {0x4E6C, 0x620A},
+       {0x4E6D, 0x96FE},
+       {0x4E6E, 0x6664},
+       {0x4E6F, 0x7269},
+       {0x4E70, 0x52FF},
+       {0x4E71, 0x52A1},
+       {0x4E72, 0x609F},
+       {0x4E73, 0x8BEF},
+       {0x4E74, 0x6614},
+       {0x4E75, 0x7199},
+       {0x4E76, 0x6790},
+       {0x4E77, 0x897F},
+       {0x4E78, 0x7852},
+       {0x4E79, 0x77FD},
+       {0x4E7A, 0x6670},
+       {0x4E7B, 0x563B},
+       {0x4E7C, 0x5438},
+       {0x4E7D, 0x9521},
+       {0x4E7E, 0x727A},
+       {0x4F21, 0x7A00},
+       {0x4F22, 0x606F},
+       {0x4F23, 0x5E0C},
+       {0x4F24, 0x6089},
+       {0x4F25, 0x819D},
+       {0x4F26, 0x5915},
+       {0x4F27, 0x60DC},
+       {0x4F28, 0x7184},
+       {0x4F29, 0x70EF},
+       {0x4F2A, 0x6EAA},
+       {0x4F2B, 0x6C50},
+       {0x4F2C, 0x7280},
+       {0x4F2D, 0x6A84},
+       {0x4F2E, 0x88AD},
+       {0x4F2F, 0x5E2D},
+       {0x4F30, 0x4E60},
+       {0x4F31, 0x5AB3},
+       {0x4F32, 0x559C},
+       {0x4F33, 0x94E3},
+       {0x4F34, 0x6D17},
+       {0x4F35, 0x7CFB},
+       {0x4F36, 0x9699},
+       {0x4F37, 0x620F},
+       {0x4F38, 0x7EC6},
+       {0x4F39, 0x778E},
+       {0x4F3A, 0x867E},
+       {0x4F3B, 0x5323},
+       {0x4F3C, 0x971E},
+       {0x4F3D, 0x8F96},
+       {0x4F3E, 0x6687},
+       {0x4F3F, 0x5CE1},
+       {0x4F40, 0x4FA0},
+       {0x4F41, 0x72ED},
+       {0x4F42, 0x4E0B},
+       {0x4F43, 0x53A6},
+       {0x4F44, 0x590F},
+       {0x4F45, 0x5413},
+       {0x4F46, 0x6380},
+       {0x4F47, 0x9528},
+       {0x4F48, 0x5148},
+       {0x4F49, 0x4ED9},
+       {0x4F4A, 0x9C9C},
+       {0x4F4B, 0x7EA4},
+       {0x4F4C, 0x54B8},
+       {0x4F4D, 0x8D24},
+       {0x4F4E, 0x8854},
+       {0x4F4F, 0x8237},
+       {0x4F50, 0x95F2},
+       {0x4F51, 0x6D8E},
+       {0x4F52, 0x5F26},
+       {0x4F53, 0x5ACC},
+       {0x4F54, 0x663E},
+       {0x4F55, 0x9669},
+       {0x4F56, 0x73B0},
+       {0x4F57, 0x732E},
+       {0x4F58, 0x53BF},
+       {0x4F59, 0x817A},
+       {0x4F5A, 0x9985},
+       {0x4F5B, 0x7FA1},
+       {0x4F5C, 0x5BAA},
+       {0x4F5D, 0x9677},
+       {0x4F5E, 0x9650},
+       {0x4F5F, 0x7EBF},
+       {0x4F60, 0x76F8},
+       {0x4F61, 0x53A2},
+       {0x4F62, 0x9576},
+       {0x4F63, 0x9999},
+       {0x4F64, 0x7BB1},
+       {0x4F65, 0x8944},
+       {0x4F66, 0x6E58},
+       {0x4F67, 0x4E61},
+       {0x4F68, 0x7FD4},
+       {0x4F69, 0x7965},
+       {0x4F6A, 0x8BE6},
+       {0x4F6B, 0x60F3},
+       {0x4F6C, 0x54CD},
+       {0x4F6D, 0x4EAB},
+       {0x4F6E, 0x9879},
+       {0x4F6F, 0x5DF7},
+       {0x4F70, 0x6A61},
+       {0x4F71, 0x50CF},
+       {0x4F72, 0x5411},
+       {0x4F73, 0x8C61},
+       {0x4F74, 0x8427},
+       {0x4F75, 0x785D},
+       {0x4F76, 0x9704},
+       {0x4F77, 0x524A},
+       {0x4F78, 0x54EE},
+       {0x4F79, 0x56A3},
+       {0x4F7A, 0x9500},
+       {0x4F7B, 0x6D88},
+       {0x4F7C, 0x5BB5},
+       {0x4F7D, 0x6DC6},
+       {0x4F7E, 0x6653},
+       {0x5021, 0x5C0F},
+       {0x5022, 0x5B5D},
+       {0x5023, 0x6821},
+       {0x5024, 0x8096},
+       {0x5025, 0x5578},
+       {0x5026, 0x7B11},
+       {0x5027, 0x6548},
+       {0x5028, 0x6954},
+       {0x5029, 0x4E9B},
+       {0x502A, 0x6B47},
+       {0x502B, 0x874E},
+       {0x502C, 0x978B},
+       {0x502D, 0x534F},
+       {0x502E, 0x631F},
+       {0x502F, 0x643A},
+       {0x5030, 0x90AA},
+       {0x5031, 0x659C},
+       {0x5032, 0x80C1},
+       {0x5033, 0x8C10},
+       {0x5034, 0x5199},
+       {0x5035, 0x68B0},
+       {0x5036, 0x5378},
+       {0x5037, 0x87F9},
+       {0x5038, 0x61C8},
+       {0x5039, 0x6CC4},
+       {0x503A, 0x6CFB},
+       {0x503B, 0x8C22},
+       {0x503C, 0x5C51},
+       {0x503D, 0x85AA},
+       {0x503E, 0x82AF},
+       {0x503F, 0x950C},
+       {0x5040, 0x6B23},
+       {0x5041, 0x8F9B},
+       {0x5042, 0x65B0},
+       {0x5043, 0x5FFB},
+       {0x5044, 0x5FC3},
+       {0x5045, 0x4FE1},
+       {0x5046, 0x8845},
+       {0x5047, 0x661F},
+       {0x5048, 0x8165},
+       {0x5049, 0x7329},
+       {0x504A, 0x60FA},
+       {0x504B, 0x5174},
+       {0x504C, 0x5211},
+       {0x504D, 0x578B},
+       {0x504E, 0x5F62},
+       {0x504F, 0x90A2},
+       {0x5050, 0x884C},
+       {0x5051, 0x9192},
+       {0x5052, 0x5E78},
+       {0x5053, 0x674F},
+       {0x5054, 0x6027},
+       {0x5055, 0x59D3},
+       {0x5056, 0x5144},
+       {0x5057, 0x51F6},
+       {0x5058, 0x80F8},
+       {0x5059, 0x5308},
+       {0x505A, 0x6C79},
+       {0x505B, 0x96C4},
+       {0x505C, 0x718A},
+       {0x505D, 0x4F11},
+       {0x505E, 0x4FEE},
+       {0x505F, 0x7F9E},
+       {0x5060, 0x673D},
+       {0x5061, 0x55C5},
+       {0x5062, 0x9508},
+       {0x5063, 0x79C0},
+       {0x5064, 0x8896},
+       {0x5065, 0x7EE3},
+       {0x5066, 0x589F},
+       {0x5067, 0x620C},
+       {0x5068, 0x9700},
+       {0x5069, 0x865A},
+       {0x506A, 0x5618},
+       {0x506B, 0x987B},
+       {0x506C, 0x5F90},
+       {0x506D, 0x8BB8},
+       {0x506E, 0x84C4},
+       {0x506F, 0x9157},
+       {0x5070, 0x53D9},
+       {0x5071, 0x65ED},
+       {0x5072, 0x5E8F},
+       {0x5073, 0x755C},
+       {0x5074, 0x6064},
+       {0x5075, 0x7D6E},
+       {0x5076, 0x5A7F},
+       {0x5077, 0x7EEA},
+       {0x5078, 0x7EED},
+       {0x5079, 0x8F69},
+       {0x507A, 0x55A7},
+       {0x507B, 0x5BA3},
+       {0x507C, 0x60AC},
+       {0x507D, 0x65CB},
+       {0x507E, 0x7384},
+       {0x5121, 0x9009},
+       {0x5122, 0x7663},
+       {0x5123, 0x7729},
+       {0x5124, 0x7EDA},
+       {0x5125, 0x9774},
+       {0x5126, 0x859B},
+       {0x5127, 0x5B66},
+       {0x5128, 0x7A74},
+       {0x5129, 0x96EA},
+       {0x512A, 0x8840},
+       {0x512B, 0x52CB},
+       {0x512C, 0x718F},
+       {0x512D, 0x5FAA},
+       {0x512E, 0x65EC},
+       {0x512F, 0x8BE2},
+       {0x5130, 0x5BFB},
+       {0x5131, 0x9A6F},
+       {0x5132, 0x5DE1},
+       {0x5133, 0x6B89},
+       {0x5134, 0x6C5B},
+       {0x5135, 0x8BAD},
+       {0x5136, 0x8BAF},
+       {0x5137, 0x900A},
+       {0x5138, 0x8FC5},
+       {0x5139, 0x538B},
+       {0x513A, 0x62BC},
+       {0x513B, 0x9E26},
+       {0x513C, 0x9E2D},
+       {0x513D, 0x5440},
+       {0x513E, 0x4E2B},
+       {0x513F, 0x82BD},
+       {0x5140, 0x7259},
+       {0x5141, 0x869C},
+       {0x5142, 0x5D16},
+       {0x5143, 0x8859},
+       {0x5144, 0x6DAF},
+       {0x5145, 0x96C5},
+       {0x5146, 0x54D1},
+       {0x5147, 0x4E9A},
+       {0x5148, 0x8BB6},
+       {0x5149, 0x7109},
+       {0x514A, 0x54BD},
+       {0x514B, 0x9609},
+       {0x514C, 0x70DF},
+       {0x514D, 0x6DF9},
+       {0x514E, 0x76D0},
+       {0x514F, 0x4E25},
+       {0x5150, 0x7814},
+       {0x5151, 0x8712},
+       {0x5152, 0x5CA9},
+       {0x5153, 0x5EF6},
+       {0x5154, 0x8A00},
+       {0x5155, 0x989C},
+       {0x5156, 0x960E},
+       {0x5157, 0x708E},
+       {0x5158, 0x6CBF},
+       {0x5159, 0x5944},
+       {0x515A, 0x63A9},
+       {0x515B, 0x773C},
+       {0x515C, 0x884D},
+       {0x515D, 0x6F14},
+       {0x515E, 0x8273},
+       {0x515F, 0x5830},
+       {0x5160, 0x71D5},
+       {0x5161, 0x538C},
+       {0x5162, 0x781A},
+       {0x5163, 0x96C1},
+       {0x5164, 0x5501},
+       {0x5165, 0x5F66},
+       {0x5166, 0x7130},
+       {0x5167, 0x5BB4},
+       {0x5168, 0x8C1A},
+       {0x5169, 0x9A8C},
+       {0x516A, 0x6B83},
+       {0x516B, 0x592E},
+       {0x516C, 0x9E2F},
+       {0x516D, 0x79E7},
+       {0x516E, 0x6768},
+       {0x516F, 0x626C},
+       {0x5170, 0x4F6F},
+       {0x5171, 0x75A1},
+       {0x5172, 0x7F8A},
+       {0x5173, 0x6D0B},
+       {0x5174, 0x9633},
+       {0x5175, 0x6C27},
+       {0x5176, 0x4EF0},
+       {0x5177, 0x75D2},
+       {0x5178, 0x517B},
+       {0x5179, 0x6837},
+       {0x517A, 0x6F3E},
+       {0x517B, 0x9080},
+       {0x517C, 0x8170},
+       {0x517D, 0x5996},
+       {0x517E, 0x7476},
+       {0x5221, 0x6447},
+       {0x5222, 0x5C27},
+       {0x5223, 0x9065},
+       {0x5224, 0x7A91},
+       {0x5225, 0x8C23},
+       {0x5226, 0x59DA},
+       {0x5227, 0x54AC},
+       {0x5228, 0x8200},
+       {0x5229, 0x836F},
+       {0x522A, 0x8981},
+       {0x522B, 0x8000},
+       {0x522C, 0x6930},
+       {0x522D, 0x564E},
+       {0x522E, 0x8036},
+       {0x522F, 0x7237},
+       {0x5230, 0x91CE},
+       {0x5231, 0x51B6},
+       {0x5232, 0x4E5F},
+       {0x5233, 0x9875},
+       {0x5234, 0x6396},
+       {0x5235, 0x4E1A},
+       {0x5236, 0x53F6},
+       {0x5237, 0x66F3},
+       {0x5238, 0x814B},
+       {0x5239, 0x591C},
+       {0x523A, 0x6DB2},
+       {0x523B, 0x4E00},
+       {0x523C, 0x58F9},
+       {0x523D, 0x533B},
+       {0x523E, 0x63D6},
+       {0x523F, 0x94F1},
+       {0x5240, 0x4F9D},
+       {0x5241, 0x4F0A},
+       {0x5242, 0x8863},
+       {0x5243, 0x9890},
+       {0x5244, 0x5937},
+       {0x5245, 0x9057},
+       {0x5246, 0x79FB},
+       {0x5247, 0x4EEA},
+       {0x5248, 0x80F0},
+       {0x5249, 0x7591},
+       {0x524A, 0x6C82},
+       {0x524B, 0x5B9C},
+       {0x524C, 0x59E8},
+       {0x524D, 0x5F5D},
+       {0x524E, 0x6905},
+       {0x524F, 0x8681},
+       {0x5250, 0x501A},
+       {0x5251, 0x5DF2},
+       {0x5252, 0x4E59},
+       {0x5253, 0x77E3},
+       {0x5254, 0x4EE5},
+       {0x5255, 0x827A},
+       {0x5256, 0x6291},
+       {0x5257, 0x6613},
+       {0x5258, 0x9091},
+       {0x5259, 0x5C79},
+       {0x525A, 0x4EBF},
+       {0x525B, 0x5F79},
+       {0x525C, 0x81C6},
+       {0x525D, 0x9038},
+       {0x525E, 0x8084},
+       {0x525F, 0x75AB},
+       {0x5260, 0x4EA6},
+       {0x5261, 0x88D4},
+       {0x5262, 0x610F},
+       {0x5263, 0x6BC5},
+       {0x5264, 0x5FC6},
+       {0x5265, 0x4E49},
+       {0x5266, 0x76CA},
+       {0x5267, 0x6EA2},
+       {0x5268, 0x8BE3},
+       {0x5269, 0x8BAE},
+       {0x526A, 0x8C0A},
+       {0x526B, 0x8BD1},
+       {0x526C, 0x5F02},
+       {0x526D, 0x7FFC},
+       {0x526E, 0x7FCC},
+       {0x526F, 0x7ECE},
+       {0x5270, 0x8335},
+       {0x5271, 0x836B},
+       {0x5272, 0x56E0},
+       {0x5273, 0x6BB7},
+       {0x5274, 0x97F3},
+       {0x5275, 0x9634},
+       {0x5276, 0x59FB},
+       {0x5277, 0x541F},
+       {0x5278, 0x94F6},
+       {0x5279, 0x6DEB},
+       {0x527A, 0x5BC5},
+       {0x527B, 0x996E},
+       {0x527C, 0x5C39},
+       {0x527D, 0x5F15},
+       {0x527E, 0x9690},
+       {0x5321, 0x5370},
+       {0x5322, 0x82F1},
+       {0x5323, 0x6A31},
+       {0x5324, 0x5A74},
+       {0x5325, 0x9E70},
+       {0x5326, 0x5E94},
+       {0x5327, 0x7F28},
+       {0x5328, 0x83B9},
+       {0x5329, 0x8424},
+       {0x532A, 0x8425},
+       {0x532B, 0x8367},
+       {0x532C, 0x8747},
+       {0x532D, 0x8FCE},
+       {0x532E, 0x8D62},
+       {0x532F, 0x76C8},
+       {0x5330, 0x5F71},
+       {0x5331, 0x9896},
+       {0x5332, 0x786C},
+       {0x5333, 0x6620},
+       {0x5334, 0x54DF},
+       {0x5335, 0x62E5},
+       {0x5336, 0x4F63},
+       {0x5337, 0x81C3},
+       {0x5338, 0x75C8},
+       {0x5339, 0x5EB8},
+       {0x533A, 0x96CD},
+       {0x533B, 0x8E0A},
+       {0x533C, 0x86F9},
+       {0x533D, 0x548F},
+       {0x533E, 0x6CF3},
+       {0x533F, 0x6D8C},
+       {0x5340, 0x6C38},
+       {0x5341, 0x607F},
+       {0x5342, 0x52C7},
+       {0x5343, 0x7528},
+       {0x5344, 0x5E7D},
+       {0x5345, 0x4F18},
+       {0x5346, 0x60A0},
+       {0x5347, 0x5FE7},
+       {0x5348, 0x5C24},
+       {0x5349, 0x7531},
+       {0x534A, 0x90AE},
+       {0x534B, 0x94C0},
+       {0x534C, 0x72B9},
+       {0x534D, 0x6CB9},
+       {0x534E, 0x6E38},
+       {0x534F, 0x9149},
+       {0x5350, 0x6709},
+       {0x5351, 0x53CB},
+       {0x5352, 0x53F3},
+       {0x5353, 0x4F51},
+       {0x5354, 0x91C9},
+       {0x5355, 0x8BF1},
+       {0x5356, 0x53C8},
+       {0x5357, 0x5E7C},
+       {0x5358, 0x8FC2},
+       {0x5359, 0x6DE4},
+       {0x535A, 0x4E8E},
+       {0x535B, 0x76C2},
+       {0x535C, 0x6986},
+       {0x535D, 0x865E},
+       {0x535E, 0x611A},
+       {0x535F, 0x8206},
+       {0x5360, 0x4F59},
+       {0x5361, 0x4FDE},
+       {0x5362, 0x903E},
+       {0x5363, 0x9C7C},
+       {0x5364, 0x6109},
+       {0x5365, 0x6E1D},
+       {0x5366, 0x6E14},
+       {0x5367, 0x9685},
+       {0x5368, 0x4E88},
+       {0x5369, 0x5A31},
+       {0x536A, 0x96E8},
+       {0x536B, 0x4E0E},
+       {0x536C, 0x5C7F},
+       {0x536D, 0x79B9},
+       {0x536E, 0x5B87},
+       {0x536F, 0x8BED},
+       {0x5370, 0x7FBD},
+       {0x5371, 0x7389},
+       {0x5372, 0x57DF},
+       {0x5373, 0x828B},
+       {0x5374, 0x90C1},
+       {0x5375, 0x5401},
+       {0x5376, 0x9047},
+       {0x5377, 0x55BB},
+       {0x5378, 0x5CEA},
+       {0x5379, 0x5FA1},
+       {0x537A, 0x6108},
+       {0x537B, 0x6B32},
+       {0x537C, 0x72F1},
+       {0x537D, 0x80B2},
+       {0x537E, 0x8A89},
+       {0x5421, 0x6D74},
+       {0x5422, 0x5BD3},
+       {0x5423, 0x88D5},
+       {0x5424, 0x9884},
+       {0x5425, 0x8C6B},
+       {0x5426, 0x9A6D},
+       {0x5427, 0x9E33},
+       {0x5428, 0x6E0A},
+       {0x5429, 0x51A4},
+       {0x542A, 0x5143},
+       {0x542B, 0x57A3},
+       {0x542C, 0x8881},
+       {0x542D, 0x539F},
+       {0x542E, 0x63F4},
+       {0x542F, 0x8F95},
+       {0x5430, 0x56ED},
+       {0x5431, 0x5458},
+       {0x5432, 0x5706},
+       {0x5433, 0x733F},
+       {0x5434, 0x6E90},
+       {0x5435, 0x7F18},
+       {0x5436, 0x8FDC},
+       {0x5437, 0x82D1},
+       {0x5438, 0x613F},
+       {0x5439, 0x6028},
+       {0x543A, 0x9662},
+       {0x543B, 0x66F0},
+       {0x543C, 0x7EA6},
+       {0x543D, 0x8D8A},
+       {0x543E, 0x8DC3},
+       {0x543F, 0x94A5},
+       {0x5440, 0x5CB3},
+       {0x5441, 0x7CA4},
+       {0x5442, 0x6708},
+       {0x5443, 0x60A6},
+       {0x5444, 0x9605},
+       {0x5445, 0x8018},
+       {0x5446, 0x4E91},
+       {0x5447, 0x90E7},
+       {0x5448, 0x5300},
+       {0x5449, 0x9668},
+       {0x544A, 0x5141},
+       {0x544B, 0x8FD0},
+       {0x544C, 0x8574},
+       {0x544D, 0x915D},
+       {0x544E, 0x6655},
+       {0x544F, 0x97F5},
+       {0x5450, 0x5B55},
+       {0x5451, 0x531D},
+       {0x5452, 0x7838},
+       {0x5453, 0x6742},
+       {0x5454, 0x683D},
+       {0x5455, 0x54C9},
+       {0x5456, 0x707E},
+       {0x5457, 0x5BB0},
+       {0x5458, 0x8F7D},
+       {0x5459, 0x518D},
+       {0x545A, 0x5728},
+       {0x545B, 0x54B1},
+       {0x545C, 0x6512},
+       {0x545D, 0x6682},
+       {0x545E, 0x8D5E},
+       {0x545F, 0x8D43},
+       {0x5460, 0x810F},
+       {0x5461, 0x846C},
+       {0x5462, 0x906D},
+       {0x5463, 0x7CDF},
+       {0x5464, 0x51FF},
+       {0x5465, 0x85FB},
+       {0x5466, 0x67A3},
+       {0x5467, 0x65E9},
+       {0x5468, 0x6FA1},
+       {0x5469, 0x86A4},
+       {0x546A, 0x8E81},
+       {0x546B, 0x566A},
+       {0x546C, 0x9020},
+       {0x546D, 0x7682},
+       {0x546E, 0x7076},
+       {0x546F, 0x71E5},
+       {0x5470, 0x8D23},
+       {0x5471, 0x62E9},
+       {0x5472, 0x5219},
+       {0x5473, 0x6CFD},
+       {0x5474, 0x8D3C},
+       {0x5475, 0x600E},
+       {0x5476, 0x589E},
+       {0x5477, 0x618E},
+       {0x5478, 0x66FE},
+       {0x5479, 0x8D60},
+       {0x547A, 0x624E},
+       {0x547B, 0x55B3},
+       {0x547C, 0x6E23},
+       {0x547D, 0x672D},
+       {0x547E, 0x8F67},
+       {0x5521, 0x94E1},
+       {0x5522, 0x95F8},
+       {0x5523, 0x7728},
+       {0x5524, 0x6805},
+       {0x5525, 0x69A8},
+       {0x5526, 0x548B},
+       {0x5527, 0x4E4D},
+       {0x5528, 0x70B8},
+       {0x5529, 0x8BC8},
+       {0x552A, 0x6458},
+       {0x552B, 0x658B},
+       {0x552C, 0x5B85},
+       {0x552D, 0x7A84},
+       {0x552E, 0x503A},
+       {0x552F, 0x5BE8},
+       {0x5530, 0x77BB},
+       {0x5531, 0x6BE1},
+       {0x5532, 0x8A79},
+       {0x5533, 0x7C98},
+       {0x5534, 0x6CBE},
+       {0x5535, 0x76CF},
+       {0x5536, 0x65A9},
+       {0x5537, 0x8F97},
+       {0x5538, 0x5D2D},
+       {0x5539, 0x5C55},
+       {0x553A, 0x8638},
+       {0x553B, 0x6808},
+       {0x553C, 0x5360},
+       {0x553D, 0x6218},
+       {0x553E, 0x7AD9},
+       {0x553F, 0x6E5B},
+       {0x5540, 0x7EFD},
+       {0x5541, 0x6A1F},
+       {0x5542, 0x7AE0},
+       {0x5543, 0x5F70},
+       {0x5544, 0x6F33},
+       {0x5545, 0x5F20},
+       {0x5546, 0x638C},
+       {0x5547, 0x6DA8},
+       {0x5548, 0x6756},
+       {0x5549, 0x4E08},
+       {0x554A, 0x5E10},
+       {0x554B, 0x8D26},
+       {0x554C, 0x4ED7},
+       {0x554D, 0x80C0},
+       {0x554E, 0x7634},
+       {0x554F, 0x969C},
+       {0x5550, 0x62DB},
+       {0x5551, 0x662D},
+       {0x5552, 0x627E},
+       {0x5553, 0x6CBC},
+       {0x5554, 0x8D75},
+       {0x5555, 0x7167},
+       {0x5556, 0x7F69},
+       {0x5557, 0x5146},
+       {0x5558, 0x8087},
+       {0x5559, 0x53EC},
+       {0x555A, 0x906E},
+       {0x555B, 0x6298},
+       {0x555C, 0x54F2},
+       {0x555D, 0x86F0},
+       {0x555E, 0x8F99},
+       {0x555F, 0x8005},
+       {0x5560, 0x9517},
+       {0x5561, 0x8517},
+       {0x5562, 0x8FD9},
+       {0x5563, 0x6D59},
+       {0x5564, 0x73CD},
+       {0x5565, 0x659F},
+       {0x5566, 0x771F},
+       {0x5567, 0x7504},
+       {0x5568, 0x7827},
+       {0x5569, 0x81FB},
+       {0x556A, 0x8D1E},
+       {0x556B, 0x9488},
+       {0x556C, 0x4FA6},
+       {0x556D, 0x6795},
+       {0x556E, 0x75B9},
+       {0x556F, 0x8BCA},
+       {0x5570, 0x9707},
+       {0x5571, 0x632F},
+       {0x5572, 0x9547},
+       {0x5573, 0x9635},
+       {0x5574, 0x84B8},
+       {0x5575, 0x6323},
+       {0x5576, 0x7741},
+       {0x5577, 0x5F81},
+       {0x5578, 0x72F0},
+       {0x5579, 0x4E89},
+       {0x557A, 0x6014},
+       {0x557B, 0x6574},
+       {0x557C, 0x62EF},
+       {0x557D, 0x6B63},
+       {0x557E, 0x653F},
+       {0x5621, 0x5E27},
+       {0x5622, 0x75C7},
+       {0x5623, 0x90D1},
+       {0x5624, 0x8BC1},
+       {0x5625, 0x829D},
+       {0x5626, 0x679D},
+       {0x5627, 0x652F},
+       {0x5628, 0x5431},
+       {0x5629, 0x8718},
+       {0x562A, 0x77E5},
+       {0x562B, 0x80A2},
+       {0x562C, 0x8102},
+       {0x562D, 0x6C41},
+       {0x562E, 0x4E4B},
+       {0x562F, 0x7EC7},
+       {0x5630, 0x804C},
+       {0x5631, 0x76F4},
+       {0x5632, 0x690D},
+       {0x5633, 0x6B96},
+       {0x5634, 0x6267},
+       {0x5635, 0x503C},
+       {0x5636, 0x4F84},
+       {0x5637, 0x5740},
+       {0x5638, 0x6307},
+       {0x5639, 0x6B62},
+       {0x563A, 0x8DBE},
+       {0x563B, 0x53EA},
+       {0x563C, 0x65E8},
+       {0x563D, 0x7EB8},
+       {0x563E, 0x5FD7},
+       {0x563F, 0x631A},
+       {0x5640, 0x63B7},
+       {0x5641, 0x81F3},
+       {0x5642, 0x81F4},
+       {0x5643, 0x7F6E},
+       {0x5644, 0x5E1C},
+       {0x5645, 0x5CD9},
+       {0x5646, 0x5236},
+       {0x5647, 0x667A},
+       {0x5648, 0x79E9},
+       {0x5649, 0x7A1A},
+       {0x564A, 0x8D28},
+       {0x564B, 0x7099},
+       {0x564C, 0x75D4},
+       {0x564D, 0x6EDE},
+       {0x564E, 0x6CBB},
+       {0x564F, 0x7A92},
+       {0x5650, 0x4E2D},
+       {0x5651, 0x76C5},
+       {0x5652, 0x5FE0},
+       {0x5653, 0x949F},
+       {0x5654, 0x8877},
+       {0x5655, 0x7EC8},
+       {0x5656, 0x79CD},
+       {0x5657, 0x80BF},
+       {0x5658, 0x91CD},
+       {0x5659, 0x4EF2},
+       {0x565A, 0x4F17},
+       {0x565B, 0x821F},
+       {0x565C, 0x5468},
+       {0x565D, 0x5DDE},
+       {0x565E, 0x6D32},
+       {0x565F, 0x8BCC},
+       {0x5660, 0x7CA5},
+       {0x5661, 0x8F74},
+       {0x5662, 0x8098},
+       {0x5663, 0x5E1A},
+       {0x5664, 0x5492},
+       {0x5665, 0x76B1},
+       {0x5666, 0x5B99},
+       {0x5667, 0x663C},
+       {0x5668, 0x9AA4},
+       {0x5669, 0x73E0},
+       {0x566A, 0x682A},
+       {0x566B, 0x86DB},
+       {0x566C, 0x6731},
+       {0x566D, 0x732A},
+       {0x566E, 0x8BF8},
+       {0x566F, 0x8BDB},
+       {0x5670, 0x9010},
+       {0x5671, 0x7AF9},
+       {0x5672, 0x70DB},
+       {0x5673, 0x716E},
+       {0x5674, 0x62C4},
+       {0x5675, 0x77A9},
+       {0x5676, 0x5631},
+       {0x5677, 0x4E3B},
+       {0x5678, 0x8457},
+       {0x5679, 0x67F1},
+       {0x567A, 0x52A9},
+       {0x567B, 0x86C0},
+       {0x567C, 0x8D2E},
+       {0x567D, 0x94F8},
+       {0x567E, 0x7B51},
+       {0x5721, 0x4F4F},
+       {0x5722, 0x6CE8},
+       {0x5723, 0x795D},
+       {0x5724, 0x9A7B},
+       {0x5725, 0x6293},
+       {0x5726, 0x722A},
+       {0x5727, 0x62FD},
+       {0x5728, 0x4E13},
+       {0x5729, 0x7816},
+       {0x572A, 0x8F6C},
+       {0x572B, 0x64B0},
+       {0x572C, 0x8D5A},
+       {0x572D, 0x7BC6},
+       {0x572E, 0x6869},
+       {0x572F, 0x5E84},
+       {0x5730, 0x88C5},
+       {0x5731, 0x5986},
+       {0x5732, 0x649E},
+       {0x5733, 0x58EE},
+       {0x5734, 0x72B6},
+       {0x5735, 0x690E},
+       {0x5736, 0x9525},
+       {0x5737, 0x8FFD},
+       {0x5738, 0x8D58},
+       {0x5739, 0x5760},
+       {0x573A, 0x7F00},
+       {0x573B, 0x8C06},
+       {0x573C, 0x51C6},
+       {0x573D, 0x6349},
+       {0x573E, 0x62D9},
+       {0x573F, 0x5353},
+       {0x5740, 0x684C},
+       {0x5741, 0x7422},
+       {0x5742, 0x8301},
+       {0x5743, 0x914C},
+       {0x5744, 0x5544},
+       {0x5745, 0x7740},
+       {0x5746, 0x707C},
+       {0x5747, 0x6D4A},
+       {0x5748, 0x5179},
+       {0x5749, 0x54A8},
+       {0x574A, 0x8D44},
+       {0x574B, 0x59FF},
+       {0x574C, 0x6ECB},
+       {0x574D, 0x6DC4},
+       {0x574E, 0x5B5C},
+       {0x574F, 0x7D2B},
+       {0x5750, 0x4ED4},
+       {0x5751, 0x7C7D},
+       {0x5752, 0x6ED3},
+       {0x5753, 0x5B50},
+       {0x5754, 0x81EA},
+       {0x5755, 0x6E0D},
+       {0x5756, 0x5B57},
+       {0x5757, 0x9B03},
+       {0x5758, 0x68D5},
+       {0x5759, 0x8E2A},
+       {0x575A, 0x5B97},
+       {0x575B, 0x7EFC},
+       {0x575C, 0x603B},
+       {0x575D, 0x7EB5},
+       {0x575E, 0x90B9},
+       {0x575F, 0x8D70},
+       {0x5760, 0x594F},
+       {0x5761, 0x63CD},
+       {0x5762, 0x79DF},
+       {0x5763, 0x8DB3},
+       {0x5764, 0x5352},
+       {0x5765, 0x65CF},
+       {0x5766, 0x7956},
+       {0x5767, 0x8BC5},
+       {0x5768, 0x963B},
+       {0x5769, 0x7EC4},
+       {0x576A, 0x94BB},
+       {0x576B, 0x7E82},
+       {0x576C, 0x5634},
+       {0x576D, 0x9189},
+       {0x576E, 0x6700},
+       {0x576F, 0x7F6A},
+       {0x5770, 0x5C0A},
+       {0x5771, 0x9075},
+       {0x5772, 0x6628},
+       {0x5773, 0x5DE6},
+       {0x5774, 0x4F50},
+       {0x5775, 0x67DE},
+       {0x5776, 0x505A},
+       {0x5777, 0x4F5C},
+       {0x5778, 0x5750},
+       {0x5779, 0x5EA7},
+       {0x5821, 0x4E8D},
+       {0x5822, 0x4E0C},
+       {0x5823, 0x5140},
+       {0x5824, 0x4E10},
+       {0x5825, 0x5EFF},
+       {0x5826, 0x5345},
+       {0x5827, 0x4E15},
+       {0x5828, 0x4E98},
+       {0x5829, 0x4E1E},
+       {0x582A, 0x9B32},
+       {0x582B, 0x5B6C},
+       {0x582C, 0x5669},
+       {0x582D, 0x4E28},
+       {0x582E, 0x79BA},
+       {0x582F, 0x4E3F},
+       {0x5830, 0x5315},
+       {0x5831, 0x4E47},
+       {0x5832, 0x592D},
+       {0x5833, 0x723B},
+       {0x5834, 0x536E},
+       {0x5835, 0x6C10},
+       {0x5836, 0x56DF},
+       {0x5837, 0x80E4},
+       {0x5838, 0x9997},
+       {0x5839, 0x6BD3},
+       {0x583A, 0x777E},
+       {0x583B, 0x9F17},
+       {0x583C, 0x4E36},
+       {0x583D, 0x4E9F},
+       {0x583E, 0x9F10},
+       {0x583F, 0x4E5C},
+       {0x5840, 0x4E69},
+       {0x5841, 0x4E93},
+       {0x5842, 0x8288},
+       {0x5843, 0x5B5B},
+       {0x5844, 0x556C},
+       {0x5845, 0x560F},
+       {0x5846, 0x4EC4},
+       {0x5847, 0x538D},
+       {0x5848, 0x539D},
+       {0x5849, 0x53A3},
+       {0x584A, 0x53A5},
+       {0x584B, 0x53AE},
+       {0x584C, 0x9765},
+       {0x584D, 0x8D5D},
+       {0x584E, 0x531A},
+       {0x584F, 0x53F5},
+       {0x5850, 0x5326},
+       {0x5851, 0x532E},
+       {0x5852, 0x533E},
+       {0x5853, 0x8D5C},
+       {0x5854, 0x5366},
+       {0x5855, 0x5363},
+       {0x5856, 0x5202},
+       {0x5857, 0x5208},
+       {0x5858, 0x520E},
+       {0x5859, 0x522D},
+       {0x585A, 0x5233},
+       {0x585B, 0x523F},
+       {0x585C, 0x5240},
+       {0x585D, 0x524C},
+       {0x585E, 0x525E},
+       {0x585F, 0x5261},
+       {0x5860, 0x525C},
+       {0x5861, 0x84AF},
+       {0x5862, 0x527D},
+       {0x5863, 0x5282},
+       {0x5864, 0x5281},
+       {0x5865, 0x5290},
+       {0x5866, 0x5293},
+       {0x5867, 0x5182},
+       {0x5868, 0x7F54},
+       {0x5869, 0x4EBB},
+       {0x586A, 0x4EC3},
+       {0x586B, 0x4EC9},
+       {0x586C, 0x4EC2},
+       {0x586D, 0x4EE8},
+       {0x586E, 0x4EE1},
+       {0x586F, 0x4EEB},
+       {0x5870, 0x4EDE},
+       {0x5871, 0x4F1B},
+       {0x5872, 0x4EF3},
+       {0x5873, 0x4F22},
+       {0x5874, 0x4F64},
+       {0x5875, 0x4EF5},
+       {0x5876, 0x4F25},
+       {0x5877, 0x4F27},
+       {0x5878, 0x4F09},
+       {0x5879, 0x4F2B},
+       {0x587A, 0x4F5E},
+       {0x587B, 0x4F67},
+       {0x587C, 0x6538},
+       {0x587D, 0x4F5A},
+       {0x587E, 0x4F5D},
+       {0x5921, 0x4F5F},
+       {0x5922, 0x4F57},
+       {0x5923, 0x4F32},
+       {0x5924, 0x4F3D},
+       {0x5925, 0x4F76},
+       {0x5926, 0x4F74},
+       {0x5927, 0x4F91},
+       {0x5928, 0x4F89},
+       {0x5929, 0x4F83},
+       {0x592A, 0x4F8F},
+       {0x592B, 0x4F7E},
+       {0x592C, 0x4F7B},
+       {0x592D, 0x4FAA},
+       {0x592E, 0x4F7C},
+       {0x592F, 0x4FAC},
+       {0x5930, 0x4F94},
+       {0x5931, 0x4FE6},
+       {0x5932, 0x4FE8},
+       {0x5933, 0x4FEA},
+       {0x5934, 0x4FC5},
+       {0x5935, 0x4FDA},
+       {0x5936, 0x4FE3},
+       {0x5937, 0x4FDC},
+       {0x5938, 0x4FD1},
+       {0x5939, 0x4FDF},
+       {0x593A, 0x4FF8},
+       {0x593B, 0x5029},
+       {0x593C, 0x504C},
+       {0x593D, 0x4FF3},
+       {0x593E, 0x502C},
+       {0x593F, 0x500F},
+       {0x5940, 0x502E},
+       {0x5941, 0x502D},
+       {0x5942, 0x4FFE},
+       {0x5943, 0x501C},
+       {0x5944, 0x500C},
+       {0x5945, 0x5025},
+       {0x5946, 0x5028},
+       {0x5947, 0x507E},
+       {0x5948, 0x5043},
+       {0x5949, 0x5055},
+       {0x594A, 0x5048},
+       {0x594B, 0x504E},
+       {0x594C, 0x506C},
+       {0x594D, 0x507B},
+       {0x594E, 0x50A5},
+       {0x594F, 0x50A7},
+       {0x5950, 0x50A9},
+       {0x5951, 0x50BA},
+       {0x5952, 0x50D6},
+       {0x5953, 0x5106},
+       {0x5954, 0x50ED},
+       {0x5955, 0x50EC},
+       {0x5956, 0x50E6},
+       {0x5957, 0x50EE},
+       {0x5958, 0x5107},
+       {0x5959, 0x510B},
+       {0x595A, 0x4EDD},
+       {0x595B, 0x6C3D},
+       {0x595C, 0x4F58},
+       {0x595D, 0x4F65},
+       {0x595E, 0x4FCE},
+       {0x595F, 0x9FA0},
+       {0x5960, 0x6C46},
+       {0x5961, 0x7C74},
+       {0x5962, 0x516E},
+       {0x5963, 0x5DFD},
+       {0x5964, 0x9EC9},
+       {0x5965, 0x9998},
+       {0x5966, 0x5181},
+       {0x5967, 0x5914},
+       {0x5968, 0x52F9},
+       {0x5969, 0x530D},
+       {0x596A, 0x8A07},
+       {0x596B, 0x5310},
+       {0x596C, 0x51EB},
+       {0x596D, 0x5919},
+       {0x596E, 0x5155},
+       {0x596F, 0x4EA0},
+       {0x5970, 0x5156},
+       {0x5971, 0x4EB3},
+       {0x5972, 0x886E},
+       {0x5973, 0x88A4},
+       {0x5974, 0x4EB5},
+       {0x5975, 0x8114},
+       {0x5976, 0x88D2},
+       {0x5977, 0x7980},
+       {0x5978, 0x5B34},
+       {0x5979, 0x8803},
+       {0x597A, 0x7FB8},
+       {0x597B, 0x51AB},
+       {0x597C, 0x51B1},
+       {0x597D, 0x51BD},
+       {0x597E, 0x51BC},
+       {0x5A21, 0x51C7},
+       {0x5A22, 0x5196},
+       {0x5A23, 0x51A2},
+       {0x5A24, 0x51A5},
+       {0x5A25, 0x8BA0},
+       {0x5A26, 0x8BA6},
+       {0x5A27, 0x8BA7},
+       {0x5A28, 0x8BAA},
+       {0x5A29, 0x8BB4},
+       {0x5A2A, 0x8BB5},
+       {0x5A2B, 0x8BB7},
+       {0x5A2C, 0x8BC2},
+       {0x5A2D, 0x8BC3},
+       {0x5A2E, 0x8BCB},
+       {0x5A2F, 0x8BCF},
+       {0x5A30, 0x8BCE},
+       {0x5A31, 0x8BD2},
+       {0x5A32, 0x8BD3},
+       {0x5A33, 0x8BD4},
+       {0x5A34, 0x8BD6},
+       {0x5A35, 0x8BD8},
+       {0x5A36, 0x8BD9},
+       {0x5A37, 0x8BDC},
+       {0x5A38, 0x8BDF},
+       {0x5A39, 0x8BE0},
+       {0x5A3A, 0x8BE4},
+       {0x5A3B, 0x8BE8},
+       {0x5A3C, 0x8BE9},
+       {0x5A3D, 0x8BEE},
+       {0x5A3E, 0x8BF0},
+       {0x5A3F, 0x8BF3},
+       {0x5A40, 0x8BF6},
+       {0x5A41, 0x8BF9},
+       {0x5A42, 0x8BFC},
+       {0x5A43, 0x8BFF},
+       {0x5A44, 0x8C00},
+       {0x5A45, 0x8C02},
+       {0x5A46, 0x8C04},
+       {0x5A47, 0x8C07},
+       {0x5A48, 0x8C0C},
+       {0x5A49, 0x8C0F},
+       {0x5A4A, 0x8C11},
+       {0x5A4B, 0x8C12},
+       {0x5A4C, 0x8C14},
+       {0x5A4D, 0x8C15},
+       {0x5A4E, 0x8C16},
+       {0x5A4F, 0x8C19},
+       {0x5A50, 0x8C1B},
+       {0x5A51, 0x8C18},
+       {0x5A52, 0x8C1D},
+       {0x5A53, 0x8C1F},
+       {0x5A54, 0x8C20},
+       {0x5A55, 0x8C21},
+       {0x5A56, 0x8C25},
+       {0x5A57, 0x8C27},
+       {0x5A58, 0x8C2A},
+       {0x5A59, 0x8C2B},
+       {0x5A5A, 0x8C2E},
+       {0x5A5B, 0x8C2F},
+       {0x5A5C, 0x8C32},
+       {0x5A5D, 0x8C33},
+       {0x5A5E, 0x8C35},
+       {0x5A5F, 0x8C36},
+       {0x5A60, 0x5369},
+       {0x5A61, 0x537A},
+       {0x5A62, 0x961D},
+       {0x5A63, 0x9622},
+       {0x5A64, 0x9621},
+       {0x5A65, 0x9631},
+       {0x5A66, 0x962A},
+       {0x5A67, 0x963D},
+       {0x5A68, 0x963C},
+       {0x5A69, 0x9642},
+       {0x5A6A, 0x9649},
+       {0x5A6B, 0x9654},
+       {0x5A6C, 0x965F},
+       {0x5A6D, 0x9667},
+       {0x5A6E, 0x966C},
+       {0x5A6F, 0x9672},
+       {0x5A70, 0x9674},
+       {0x5A71, 0x9688},
+       {0x5A72, 0x968D},
+       {0x5A73, 0x9697},
+       {0x5A74, 0x96B0},
+       {0x5A75, 0x9097},
+       {0x5A76, 0x909B},
+       {0x5A77, 0x909D},
+       {0x5A78, 0x9099},
+       {0x5A79, 0x90AC},
+       {0x5A7A, 0x90A1},
+       {0x5A7B, 0x90B4},
+       {0x5A7C, 0x90B3},
+       {0x5A7D, 0x90B6},
+       {0x5A7E, 0x90BA},
+       {0x5B21, 0x90B8},
+       {0x5B22, 0x90B0},
+       {0x5B23, 0x90CF},
+       {0x5B24, 0x90C5},
+       {0x5B25, 0x90BE},
+       {0x5B26, 0x90D0},
+       {0x5B27, 0x90C4},
+       {0x5B28, 0x90C7},
+       {0x5B29, 0x90D3},
+       {0x5B2A, 0x90E6},
+       {0x5B2B, 0x90E2},
+       {0x5B2C, 0x90DC},
+       {0x5B2D, 0x90D7},
+       {0x5B2E, 0x90DB},
+       {0x5B2F, 0x90EB},
+       {0x5B30, 0x90EF},
+       {0x5B31, 0x90FE},
+       {0x5B32, 0x9104},
+       {0x5B33, 0x9122},
+       {0x5B34, 0x911E},
+       {0x5B35, 0x9123},
+       {0x5B36, 0x9131},
+       {0x5B37, 0x912F},
+       {0x5B38, 0x9139},
+       {0x5B39, 0x9143},
+       {0x5B3A, 0x9146},
+       {0x5B3B, 0x520D},
+       {0x5B3C, 0x5942},
+       {0x5B3D, 0x52A2},
+       {0x5B3E, 0x52AC},
+       {0x5B3F, 0x52AD},
+       {0x5B40, 0x52BE},
+       {0x5B41, 0x54FF},
+       {0x5B42, 0x52D0},
+       {0x5B43, 0x52D6},
+       {0x5B44, 0x52F0},
+       {0x5B45, 0x53DF},
+       {0x5B46, 0x71EE},
+       {0x5B47, 0x77CD},
+       {0x5B48, 0x5EF4},
+       {0x5B49, 0x51F5},
+       {0x5B4A, 0x51FC},
+       {0x5B4B, 0x9B2F},
+       {0x5B4C, 0x53B6},
+       {0x5B4D, 0x5F01},
+       {0x5B4E, 0x755A},
+       {0x5B4F, 0x5DEF},
+       {0x5B50, 0x574C},
+       {0x5B51, 0x57A9},
+       {0x5B52, 0x57A1},
+       {0x5B53, 0x587E},
+       {0x5B54, 0x58BC},
+       {0x5B55, 0x58C5},
+       {0x5B56, 0x58D1},
+       {0x5B57, 0x5729},
+       {0x5B58, 0x572C},
+       {0x5B59, 0x572A},
+       {0x5B5A, 0x5733},
+       {0x5B5B, 0x5739},
+       {0x5B5C, 0x572E},
+       {0x5B5D, 0x572F},
+       {0x5B5E, 0x575C},
+       {0x5B5F, 0x573B},
+       {0x5B60, 0x5742},
+       {0x5B61, 0x5769},
+       {0x5B62, 0x5785},
+       {0x5B63, 0x576B},
+       {0x5B64, 0x5786},
+       {0x5B65, 0x577C},
+       {0x5B66, 0x577B},
+       {0x5B67, 0x5768},
+       {0x5B68, 0x576D},
+       {0x5B69, 0x5776},
+       {0x5B6A, 0x5773},
+       {0x5B6B, 0x57AD},
+       {0x5B6C, 0x57A4},
+       {0x5B6D, 0x578C},
+       {0x5B6E, 0x57B2},
+       {0x5B6F, 0x57CF},
+       {0x5B70, 0x57A7},
+       {0x5B71, 0x57B4},
+       {0x5B72, 0x5793},
+       {0x5B73, 0x57A0},
+       {0x5B74, 0x57D5},
+       {0x5B75, 0x57D8},
+       {0x5B76, 0x57DA},
+       {0x5B77, 0x57D9},
+       {0x5B78, 0x57D2},
+       {0x5B79, 0x57B8},
+       {0x5B7A, 0x57F4},
+       {0x5B7B, 0x57EF},
+       {0x5B7C, 0x57F8},
+       {0x5B7D, 0x57E4},
+       {0x5B7E, 0x57DD},
+       {0x5C21, 0x580B},
+       {0x5C22, 0x580D},
+       {0x5C23, 0x57FD},
+       {0x5C24, 0x57ED},
+       {0x5C25, 0x5800},
+       {0x5C26, 0x581E},
+       {0x5C27, 0x5819},
+       {0x5C28, 0x5844},
+       {0x5C29, 0x5820},
+       {0x5C2A, 0x5865},
+       {0x5C2B, 0x586C},
+       {0x5C2C, 0x5881},
+       {0x5C2D, 0x5889},
+       {0x5C2E, 0x589A},
+       {0x5C2F, 0x5880},
+       {0x5C30, 0x99A8},
+       {0x5C31, 0x9F19},
+       {0x5C32, 0x61FF},
+       {0x5C33, 0x8279},
+       {0x5C34, 0x827D},
+       {0x5C35, 0x827F},
+       {0x5C36, 0x828F},
+       {0x5C37, 0x828A},
+       {0x5C38, 0x82A8},
+       {0x5C39, 0x8284},
+       {0x5C3A, 0x828E},
+       {0x5C3B, 0x8291},
+       {0x5C3C, 0x8297},
+       {0x5C3D, 0x8299},
+       {0x5C3E, 0x82AB},
+       {0x5C3F, 0x82B8},
+       {0x5C40, 0x82BE},
+       {0x5C41, 0x82B0},
+       {0x5C42, 0x82C8},
+       {0x5C43, 0x82CA},
+       {0x5C44, 0x82E3},
+       {0x5C45, 0x8298},
+       {0x5C46, 0x82B7},
+       {0x5C47, 0x82AE},
+       {0x5C48, 0x82CB},
+       {0x5C49, 0x82CC},
+       {0x5C4A, 0x82C1},
+       {0x5C4B, 0x82A9},
+       {0x5C4C, 0x82B4},
+       {0x5C4D, 0x82A1},
+       {0x5C4E, 0x82AA},
+       {0x5C4F, 0x829F},
+       {0x5C50, 0x82C4},
+       {0x5C51, 0x82CE},
+       {0x5C52, 0x82A4},
+       {0x5C53, 0x82E1},
+       {0x5C54, 0x8309},
+       {0x5C55, 0x82F7},
+       {0x5C56, 0x82E4},
+       {0x5C57, 0x830F},
+       {0x5C58, 0x8307},
+       {0x5C59, 0x82DC},
+       {0x5C5A, 0x82F4},
+       {0x5C5B, 0x82D2},
+       {0x5C5C, 0x82D8},
+       {0x5C5D, 0x830C},
+       {0x5C5E, 0x82FB},
+       {0x5C5F, 0x82D3},
+       {0x5C60, 0x8311},
+       {0x5C61, 0x831A},
+       {0x5C62, 0x8306},
+       {0x5C63, 0x8314},
+       {0x5C64, 0x8315},
+       {0x5C65, 0x82E0},
+       {0x5C66, 0x82D5},
+       {0x5C67, 0x831C},
+       {0x5C68, 0x8351},
+       {0x5C69, 0x835B},
+       {0x5C6A, 0x835C},
+       {0x5C6B, 0x8308},
+       {0x5C6C, 0x8392},
+       {0x5C6D, 0x833C},
+       {0x5C6E, 0x8334},
+       {0x5C6F, 0x8331},
+       {0x5C70, 0x839B},
+       {0x5C71, 0x835E},
+       {0x5C72, 0x832F},
+       {0x5C73, 0x834F},
+       {0x5C74, 0x8347},
+       {0x5C75, 0x8343},
+       {0x5C76, 0x835F},
+       {0x5C77, 0x8340},
+       {0x5C78, 0x8317},
+       {0x5C79, 0x8360},
+       {0x5C7A, 0x832D},
+       {0x5C7B, 0x833A},
+       {0x5C7C, 0x8333},
+       {0x5C7D, 0x8366},
+       {0x5C7E, 0x8365},
+       {0x5D21, 0x8368},
+       {0x5D22, 0x831B},
+       {0x5D23, 0x8369},
+       {0x5D24, 0x836C},
+       {0x5D25, 0x836A},
+       {0x5D26, 0x836D},
+       {0x5D27, 0x836E},
+       {0x5D28, 0x83B0},
+       {0x5D29, 0x8378},
+       {0x5D2A, 0x83B3},
+       {0x5D2B, 0x83B4},
+       {0x5D2C, 0x83A0},
+       {0x5D2D, 0x83AA},
+       {0x5D2E, 0x8393},
+       {0x5D2F, 0x839C},
+       {0x5D30, 0x8385},
+       {0x5D31, 0x837C},
+       {0x5D32, 0x83B6},
+       {0x5D33, 0x83A9},
+       {0x5D34, 0x837D},
+       {0x5D35, 0x83B8},
+       {0x5D36, 0x837B},
+       {0x5D37, 0x8398},
+       {0x5D38, 0x839E},
+       {0x5D39, 0x83A8},
+       {0x5D3A, 0x83BA},
+       {0x5D3B, 0x83BC},
+       {0x5D3C, 0x83C1},
+       {0x5D3D, 0x8401},
+       {0x5D3E, 0x83E5},
+       {0x5D3F, 0x83D8},
+       {0x5D40, 0x5807},
+       {0x5D41, 0x8418},
+       {0x5D42, 0x840B},
+       {0x5D43, 0x83DD},
+       {0x5D44, 0x83FD},
+       {0x5D45, 0x83D6},
+       {0x5D46, 0x841C},
+       {0x5D47, 0x8438},
+       {0x5D48, 0x8411},
+       {0x5D49, 0x8406},
+       {0x5D4A, 0x83D4},
+       {0x5D4B, 0x83DF},
+       {0x5D4C, 0x840F},
+       {0x5D4D, 0x8403},
+       {0x5D4E, 0x83F8},
+       {0x5D4F, 0x83F9},
+       {0x5D50, 0x83EA},
+       {0x5D51, 0x83C5},
+       {0x5D52, 0x83C0},
+       {0x5D53, 0x8426},
+       {0x5D54, 0x83F0},
+       {0x5D55, 0x83E1},
+       {0x5D56, 0x845C},
+       {0x5D57, 0x8451},
+       {0x5D58, 0x845A},
+       {0x5D59, 0x8459},
+       {0x5D5A, 0x8473},
+       {0x5D5B, 0x8487},
+       {0x5D5C, 0x8488},
+       {0x5D5D, 0x847A},
+       {0x5D5E, 0x8489},
+       {0x5D5F, 0x8478},
+       {0x5D60, 0x843C},
+       {0x5D61, 0x8446},
+       {0x5D62, 0x8469},
+       {0x5D63, 0x8476},
+       {0x5D64, 0x848C},
+       {0x5D65, 0x848E},
+       {0x5D66, 0x8431},
+       {0x5D67, 0x846D},
+       {0x5D68, 0x84C1},
+       {0x5D69, 0x84CD},
+       {0x5D6A, 0x84D0},
+       {0x5D6B, 0x84E6},
+       {0x5D6C, 0x84BD},
+       {0x5D6D, 0x84D3},
+       {0x5D6E, 0x84CA},
+       {0x5D6F, 0x84BF},
+       {0x5D70, 0x84BA},
+       {0x5D71, 0x84E0},
+       {0x5D72, 0x84A1},
+       {0x5D73, 0x84B9},
+       {0x5D74, 0x84B4},
+       {0x5D75, 0x8497},
+       {0x5D76, 0x84E5},
+       {0x5D77, 0x84E3},
+       {0x5D78, 0x850C},
+       {0x5D79, 0x750D},
+       {0x5D7A, 0x8538},
+       {0x5D7B, 0x84F0},
+       {0x5D7C, 0x8539},
+       {0x5D7D, 0x851F},
+       {0x5D7E, 0x853A},
+       {0x5E21, 0x8556},
+       {0x5E22, 0x853B},
+       {0x5E23, 0x84FF},
+       {0x5E24, 0x84FC},
+       {0x5E25, 0x8559},
+       {0x5E26, 0x8548},
+       {0x5E27, 0x8568},
+       {0x5E28, 0x8564},
+       {0x5E29, 0x855E},
+       {0x5E2A, 0x857A},
+       {0x5E2B, 0x77A2},
+       {0x5E2C, 0x8543},
+       {0x5E2D, 0x8572},
+       {0x5E2E, 0x857B},
+       {0x5E2F, 0x85A4},
+       {0x5E30, 0x85A8},
+       {0x5E31, 0x8587},
+       {0x5E32, 0x858F},
+       {0x5E33, 0x8579},
+       {0x5E34, 0x85AE},
+       {0x5E35, 0x859C},
+       {0x5E36, 0x8585},
+       {0x5E37, 0x85B9},
+       {0x5E38, 0x85B7},
+       {0x5E39, 0x85B0},
+       {0x5E3A, 0x85D3},
+       {0x5E3B, 0x85C1},
+       {0x5E3C, 0x85DC},
+       {0x5E3D, 0x85FF},
+       {0x5E3E, 0x8627},
+       {0x5E3F, 0x8605},
+       {0x5E40, 0x8629},
+       {0x5E41, 0x8616},
+       {0x5E42, 0x863C},
+       {0x5E43, 0x5EFE},
+       {0x5E44, 0x5F08},
+       {0x5E45, 0x593C},
+       {0x5E46, 0x5941},
+       {0x5E47, 0x8037},
+       {0x5E48, 0x5955},
+       {0x5E49, 0x595A},
+       {0x5E4A, 0x5958},
+       {0x5E4B, 0x530F},
+       {0x5E4C, 0x5C22},
+       {0x5E4D, 0x5C25},
+       {0x5E4E, 0x5C2C},
+       {0x5E4F, 0x5C34},
+       {0x5E50, 0x624C},
+       {0x5E51, 0x626A},
+       {0x5E52, 0x629F},
+       {0x5E53, 0x62BB},
+       {0x5E54, 0x62CA},
+       {0x5E55, 0x62DA},
+       {0x5E56, 0x62D7},
+       {0x5E57, 0x62EE},
+       {0x5E58, 0x6322},
+       {0x5E59, 0x62F6},
+       {0x5E5A, 0x6339},
+       {0x5E5B, 0x634B},
+       {0x5E5C, 0x6343},
+       {0x5E5D, 0x63AD},
+       {0x5E5E, 0x63F6},
+       {0x5E5F, 0x6371},
+       {0x5E60, 0x637A},
+       {0x5E61, 0x638E},
+       {0x5E62, 0x63B4},
+       {0x5E63, 0x636D},
+       {0x5E64, 0x63AC},
+       {0x5E65, 0x638A},
+       {0x5E66, 0x6369},
+       {0x5E67, 0x63AE},
+       {0x5E68, 0x63BC},
+       {0x5E69, 0x63F2},
+       {0x5E6A, 0x63F8},
+       {0x5E6B, 0x63E0},
+       {0x5E6C, 0x63FF},
+       {0x5E6D, 0x63C4},
+       {0x5E6E, 0x63DE},
+       {0x5E6F, 0x63CE},
+       {0x5E70, 0x6452},
+       {0x5E71, 0x63C6},
+       {0x5E72, 0x63BE},
+       {0x5E73, 0x6445},
+       {0x5E74, 0x6441},
+       {0x5E75, 0x640B},
+       {0x5E76, 0x641B},
+       {0x5E77, 0x6420},
+       {0x5E78, 0x640C},
+       {0x5E79, 0x6426},
+       {0x5E7A, 0x6421},
+       {0x5E7B, 0x645E},
+       {0x5E7C, 0x6484},
+       {0x5E7D, 0x646D},
+       {0x5E7E, 0x6496},
+       {0x5F21, 0x647A},
+       {0x5F22, 0x64B7},
+       {0x5F23, 0x64B8},
+       {0x5F24, 0x6499},
+       {0x5F25, 0x64BA},
+       {0x5F26, 0x64C0},
+       {0x5F27, 0x64D0},
+       {0x5F28, 0x64D7},
+       {0x5F29, 0x64E4},
+       {0x5F2A, 0x64E2},
+       {0x5F2B, 0x6509},
+       {0x5F2C, 0x6525},
+       {0x5F2D, 0x652E},
+       {0x5F2E, 0x5F0B},
+       {0x5F2F, 0x5FD2},
+       {0x5F30, 0x7519},
+       {0x5F31, 0x5F11},
+       {0x5F32, 0x535F},
+       {0x5F33, 0x53F1},
+       {0x5F34, 0x53FD},
+       {0x5F35, 0x53E9},
+       {0x5F36, 0x53E8},
+       {0x5F37, 0x53FB},
+       {0x5F38, 0x5412},
+       {0x5F39, 0x5416},
+       {0x5F3A, 0x5406},
+       {0x5F3B, 0x544B},
+       {0x5F3C, 0x5452},
+       {0x5F3D, 0x5453},
+       {0x5F3E, 0x5454},
+       {0x5F3F, 0x5456},
+       {0x5F40, 0x5443},
+       {0x5F41, 0x5421},
+       {0x5F42, 0x5457},
+       {0x5F43, 0x5459},
+       {0x5F44, 0x5423},
+       {0x5F45, 0x5432},
+       {0x5F46, 0x5482},
+       {0x5F47, 0x5494},
+       {0x5F48, 0x5477},
+       {0x5F49, 0x5471},
+       {0x5F4A, 0x5464},
+       {0x5F4B, 0x549A},
+       {0x5F4C, 0x549B},
+       {0x5F4D, 0x5484},
+       {0x5F4E, 0x5476},
+       {0x5F4F, 0x5466},
+       {0x5F50, 0x549D},
+       {0x5F51, 0x54D0},
+       {0x5F52, 0x54AD},
+       {0x5F53, 0x54C2},
+       {0x5F54, 0x54B4},
+       {0x5F55, 0x54D2},
+       {0x5F56, 0x54A7},
+       {0x5F57, 0x54A6},
+       {0x5F58, 0x54D3},
+       {0x5F59, 0x54D4},
+       {0x5F5A, 0x5472},
+       {0x5F5B, 0x54A3},
+       {0x5F5C, 0x54D5},
+       {0x5F5D, 0x54BB},
+       {0x5F5E, 0x54BF},
+       {0x5F5F, 0x54CC},
+       {0x5F60, 0x54D9},
+       {0x5F61, 0x54DA},
+       {0x5F62, 0x54DC},
+       {0x5F63, 0x54A9},
+       {0x5F64, 0x54AA},
+       {0x5F65, 0x54A4},
+       {0x5F66, 0x54DD},
+       {0x5F67, 0x54CF},
+       {0x5F68, 0x54DE},
+       {0x5F69, 0x551B},
+       {0x5F6A, 0x54E7},
+       {0x5F6B, 0x5520},
+       {0x5F6C, 0x54FD},
+       {0x5F6D, 0x5514},
+       {0x5F6E, 0x54F3},
+       {0x5F6F, 0x5522},
+       {0x5F70, 0x5523},
+       {0x5F71, 0x550F},
+       {0x5F72, 0x5511},
+       {0x5F73, 0x5527},
+       {0x5F74, 0x552A},
+       {0x5F75, 0x5567},
+       {0x5F76, 0x558F},
+       {0x5F77, 0x55B5},
+       {0x5F78, 0x5549},
+       {0x5F79, 0x556D},
+       {0x5F7A, 0x5541},
+       {0x5F7B, 0x5555},
+       {0x5F7C, 0x553F},
+       {0x5F7D, 0x5550},
+       {0x5F7E, 0x553C},
+       {0x6021, 0x5537},
+       {0x6022, 0x5556},
+       {0x6023, 0x5575},
+       {0x6024, 0x5576},
+       {0x6025, 0x5577},
+       {0x6026, 0x5533},
+       {0x6027, 0x5530},
+       {0x6028, 0x555C},
+       {0x6029, 0x558B},
+       {0x602A, 0x55D2},
+       {0x602B, 0x5583},
+       {0x602C, 0x55B1},
+       {0x602D, 0x55B9},
+       {0x602E, 0x5588},
+       {0x602F, 0x5581},
+       {0x6030, 0x559F},
+       {0x6031, 0x557E},
+       {0x6032, 0x55D6},
+       {0x6033, 0x5591},
+       {0x6034, 0x557B},
+       {0x6035, 0x55DF},
+       {0x6036, 0x55BD},
+       {0x6037, 0x55BE},
+       {0x6038, 0x5594},
+       {0x6039, 0x5599},
+       {0x603A, 0x55EA},
+       {0x603B, 0x55F7},
+       {0x603C, 0x55C9},
+       {0x603D, 0x561F},
+       {0x603E, 0x55D1},
+       {0x603F, 0x55EB},
+       {0x6040, 0x55EC},
+       {0x6041, 0x55D4},
+       {0x6042, 0x55E6},
+       {0x6043, 0x55DD},
+       {0x6044, 0x55C4},
+       {0x6045, 0x55EF},
+       {0x6046, 0x55E5},
+       {0x6047, 0x55F2},
+       {0x6048, 0x55F3},
+       {0x6049, 0x55CC},
+       {0x604A, 0x55CD},
+       {0x604B, 0x55E8},
+       {0x604C, 0x55F5},
+       {0x604D, 0x55E4},
+       {0x604E, 0x8F94},
+       {0x604F, 0x561E},
+       {0x6050, 0x5608},
+       {0x6051, 0x560C},
+       {0x6052, 0x5601},
+       {0x6053, 0x5624},
+       {0x6054, 0x5623},
+       {0x6055, 0x55FE},
+       {0x6056, 0x5600},
+       {0x6057, 0x5627},
+       {0x6058, 0x562D},
+       {0x6059, 0x5658},
+       {0x605A, 0x5639},
+       {0x605B, 0x5657},
+       {0x605C, 0x562C},
+       {0x605D, 0x564D},
+       {0x605E, 0x5662},
+       {0x605F, 0x5659},
+       {0x6060, 0x565C},
+       {0x6061, 0x564C},
+       {0x6062, 0x5654},
+       {0x6063, 0x5686},
+       {0x6064, 0x5664},
+       {0x6065, 0x5671},
+       {0x6066, 0x566B},
+       {0x6067, 0x567B},
+       {0x6068, 0x567C},
+       {0x6069, 0x5685},
+       {0x606A, 0x5693},
+       {0x606B, 0x56AF},
+       {0x606C, 0x56D4},
+       {0x606D, 0x56D7},
+       {0x606E, 0x56DD},
+       {0x606F, 0x56E1},
+       {0x6070, 0x56F5},
+       {0x6071, 0x56EB},
+       {0x6072, 0x56F9},
+       {0x6073, 0x56FF},
+       {0x6074, 0x5704},
+       {0x6075, 0x570A},
+       {0x6076, 0x5709},
+       {0x6077, 0x571C},
+       {0x6078, 0x5E0F},
+       {0x6079, 0x5E19},
+       {0x607A, 0x5E14},
+       {0x607B, 0x5E11},
+       {0x607C, 0x5E31},
+       {0x607D, 0x5E3B},
+       {0x607E, 0x5E3C},
+       {0x6121, 0x5E37},
+       {0x6122, 0x5E44},
+       {0x6123, 0x5E54},
+       {0x6124, 0x5E5B},
+       {0x6125, 0x5E5E},
+       {0x6126, 0x5E61},
+       {0x6127, 0x5C8C},
+       {0x6128, 0x5C7A},
+       {0x6129, 0x5C8D},
+       {0x612A, 0x5C90},
+       {0x612B, 0x5C96},
+       {0x612C, 0x5C88},
+       {0x612D, 0x5C98},
+       {0x612E, 0x5C99},
+       {0x612F, 0x5C91},
+       {0x6130, 0x5C9A},
+       {0x6131, 0x5C9C},
+       {0x6132, 0x5CB5},
+       {0x6133, 0x5CA2},
+       {0x6134, 0x5CBD},
+       {0x6135, 0x5CAC},
+       {0x6136, 0x5CAB},
+       {0x6137, 0x5CB1},
+       {0x6138, 0x5CA3},
+       {0x6139, 0x5CC1},
+       {0x613A, 0x5CB7},
+       {0x613B, 0x5CC4},
+       {0x613C, 0x5CD2},
+       {0x613D, 0x5CE4},
+       {0x613E, 0x5CCB},
+       {0x613F, 0x5CE5},
+       {0x6140, 0x5D02},
+       {0x6141, 0x5D03},
+       {0x6142, 0x5D27},
+       {0x6143, 0x5D26},
+       {0x6144, 0x5D2E},
+       {0x6145, 0x5D24},
+       {0x6146, 0x5D1E},
+       {0x6147, 0x5D06},
+       {0x6148, 0x5D1B},
+       {0x6149, 0x5D58},
+       {0x614A, 0x5D3E},
+       {0x614B, 0x5D34},
+       {0x614C, 0x5D3D},
+       {0x614D, 0x5D6C},
+       {0x614E, 0x5D5B},
+       {0x614F, 0x5D6F},
+       {0x6150, 0x5D5D},
+       {0x6151, 0x5D6B},
+       {0x6152, 0x5D4B},
+       {0x6153, 0x5D4A},
+       {0x6154, 0x5D69},
+       {0x6155, 0x5D74},
+       {0x6156, 0x5D82},
+       {0x6157, 0x5D99},
+       {0x6158, 0x5D9D},
+       {0x6159, 0x8C73},
+       {0x615A, 0x5DB7},
+       {0x615B, 0x5DC5},
+       {0x615C, 0x5F73},
+       {0x615D, 0x5F77},
+       {0x615E, 0x5F82},
+       {0x615F, 0x5F87},
+       {0x6160, 0x5F89},
+       {0x6161, 0x5F8C},
+       {0x6162, 0x5F95},
+       {0x6163, 0x5F99},
+       {0x6164, 0x5F9C},
+       {0x6165, 0x5FA8},
+       {0x6166, 0x5FAD},
+       {0x6167, 0x5FB5},
+       {0x6168, 0x5FBC},
+       {0x6169, 0x8862},
+       {0x616A, 0x5F61},
+       {0x616B, 0x72AD},
+       {0x616C, 0x72B0},
+       {0x616D, 0x72B4},
+       {0x616E, 0x72B7},
+       {0x616F, 0x72B8},
+       {0x6170, 0x72C3},
+       {0x6171, 0x72C1},
+       {0x6172, 0x72CE},
+       {0x6173, 0x72CD},
+       {0x6174, 0x72D2},
+       {0x6175, 0x72E8},
+       {0x6176, 0x72EF},
+       {0x6177, 0x72E9},
+       {0x6178, 0x72F2},
+       {0x6179, 0x72F4},
+       {0x617A, 0x72F7},
+       {0x617B, 0x7301},
+       {0x617C, 0x72F3},
+       {0x617D, 0x7303},
+       {0x617E, 0x72FA},
+       {0x6221, 0x72FB},
+       {0x6222, 0x7317},
+       {0x6223, 0x7313},
+       {0x6224, 0x7321},
+       {0x6225, 0x730A},
+       {0x6226, 0x731E},
+       {0x6227, 0x731D},
+       {0x6228, 0x7315},
+       {0x6229, 0x7322},
+       {0x622A, 0x7339},
+       {0x622B, 0x7325},
+       {0x622C, 0x732C},
+       {0x622D, 0x7338},
+       {0x622E, 0x7331},
+       {0x622F, 0x7350},
+       {0x6230, 0x734D},
+       {0x6231, 0x7357},
+       {0x6232, 0x7360},
+       {0x6233, 0x736C},
+       {0x6234, 0x736F},
+       {0x6235, 0x737E},
+       {0x6236, 0x821B},
+       {0x6237, 0x5925},
+       {0x6238, 0x98E7},
+       {0x6239, 0x5924},
+       {0x623A, 0x5902},
+       {0x623B, 0x9963},
+       {0x623C, 0x9967},
+       {0x623D, 0x9968},
+       {0x623E, 0x9969},
+       {0x623F, 0x996A},
+       {0x6240, 0x996B},
+       {0x6241, 0x996C},
+       {0x6242, 0x9974},
+       {0x6243, 0x9977},
+       {0x6244, 0x997D},
+       {0x6245, 0x9980},
+       {0x6246, 0x9984},
+       {0x6247, 0x9987},
+       {0x6248, 0x998A},
+       {0x6249, 0x998D},
+       {0x624A, 0x9990},
+       {0x624B, 0x9991},
+       {0x624C, 0x9993},
+       {0x624D, 0x9994},
+       {0x624E, 0x9995},
+       {0x624F, 0x5E80},
+       {0x6250, 0x5E91},
+       {0x6251, 0x5E8B},
+       {0x6252, 0x5E96},
+       {0x6253, 0x5EA5},
+       {0x6254, 0x5EA0},
+       {0x6255, 0x5EB9},
+       {0x6256, 0x5EB5},
+       {0x6257, 0x5EBE},
+       {0x6258, 0x5EB3},
+       {0x6259, 0x8D53},
+       {0x625A, 0x5ED2},
+       {0x625B, 0x5ED1},
+       {0x625C, 0x5EDB},
+       {0x625D, 0x5EE8},
+       {0x625E, 0x5EEA},
+       {0x625F, 0x81BA},
+       {0x6260, 0x5FC4},
+       {0x6261, 0x5FC9},
+       {0x6262, 0x5FD6},
+       {0x6263, 0x5FCF},
+       {0x6264, 0x6003},
+       {0x6265, 0x5FEE},
+       {0x6266, 0x6004},
+       {0x6267, 0x5FE1},
+       {0x6268, 0x5FE4},
+       {0x6269, 0x5FFE},
+       {0x626A, 0x6005},
+       {0x626B, 0x6006},
+       {0x626C, 0x5FEA},
+       {0x626D, 0x5FED},
+       {0x626E, 0x5FF8},
+       {0x626F, 0x6019},
+       {0x6270, 0x6035},
+       {0x6271, 0x6026},
+       {0x6272, 0x601B},
+       {0x6273, 0x600F},
+       {0x6274, 0x600D},
+       {0x6275, 0x6029},
+       {0x6276, 0x602B},
+       {0x6277, 0x600A},
+       {0x6278, 0x603F},
+       {0x6279, 0x6021},
+       {0x627A, 0x6078},
+       {0x627B, 0x6079},
+       {0x627C, 0x607B},
+       {0x627D, 0x607A},
+       {0x627E, 0x6042},
+       {0x6321, 0x606A},
+       {0x6322, 0x607D},
+       {0x6323, 0x6096},
+       {0x6324, 0x609A},
+       {0x6325, 0x60AD},
+       {0x6326, 0x609D},
+       {0x6327, 0x6083},
+       {0x6328, 0x6092},
+       {0x6329, 0x608C},
+       {0x632A, 0x609B},
+       {0x632B, 0x60EC},
+       {0x632C, 0x60BB},
+       {0x632D, 0x60B1},
+       {0x632E, 0x60DD},
+       {0x632F, 0x60D8},
+       {0x6330, 0x60C6},
+       {0x6331, 0x60DA},
+       {0x6332, 0x60B4},
+       {0x6333, 0x6120},
+       {0x6334, 0x6126},
+       {0x6335, 0x6115},
+       {0x6336, 0x6123},
+       {0x6337, 0x60F4},
+       {0x6338, 0x6100},
+       {0x6339, 0x610E},
+       {0x633A, 0x612B},
+       {0x633B, 0x614A},
+       {0x633C, 0x6175},
+       {0x633D, 0x61AC},
+       {0x633E, 0x6194},
+       {0x633F, 0x61A7},
+       {0x6340, 0x61B7},
+       {0x6341, 0x61D4},
+       {0x6342, 0x61F5},
+       {0x6343, 0x5FDD},
+       {0x6344, 0x96B3},
+       {0x6345, 0x95E9},
+       {0x6346, 0x95EB},
+       {0x6347, 0x95F1},
+       {0x6348, 0x95F3},
+       {0x6349, 0x95F5},
+       {0x634A, 0x95F6},
+       {0x634B, 0x95FC},
+       {0x634C, 0x95FE},
+       {0x634D, 0x9603},
+       {0x634E, 0x9604},
+       {0x634F, 0x9606},
+       {0x6350, 0x9608},
+       {0x6351, 0x960A},
+       {0x6352, 0x960B},
+       {0x6353, 0x960C},
+       {0x6354, 0x960D},
+       {0x6355, 0x960F},
+       {0x6356, 0x9612},
+       {0x6357, 0x9615},
+       {0x6358, 0x9616},
+       {0x6359, 0x9617},
+       {0x635A, 0x9619},
+       {0x635B, 0x961A},
+       {0x635C, 0x4E2C},
+       {0x635D, 0x723F},
+       {0x635E, 0x6215},
+       {0x635F, 0x6C35},
+       {0x6360, 0x6C54},
+       {0x6361, 0x6C5C},
+       {0x6362, 0x6C4A},
+       {0x6363, 0x6CA3},
+       {0x6364, 0x6C85},
+       {0x6365, 0x6C90},
+       {0x6366, 0x6C94},
+       {0x6367, 0x6C8C},
+       {0x6368, 0x6C68},
+       {0x6369, 0x6C69},
+       {0x636A, 0x6C74},
+       {0x636B, 0x6C76},
+       {0x636C, 0x6C86},
+       {0x636D, 0x6CA9},
+       {0x636E, 0x6CD0},
+       {0x636F, 0x6CD4},
+       {0x6370, 0x6CAD},
+       {0x6371, 0x6CF7},
+       {0x6372, 0x6CF8},
+       {0x6373, 0x6CF1},
+       {0x6374, 0x6CD7},
+       {0x6375, 0x6CB2},
+       {0x6376, 0x6CE0},
+       {0x6377, 0x6CD6},
+       {0x6378, 0x6CFA},
+       {0x6379, 0x6CEB},
+       {0x637A, 0x6CEE},
+       {0x637B, 0x6CB1},
+       {0x637C, 0x6CD3},
+       {0x637D, 0x6CEF},
+       {0x637E, 0x6CFE},
+       {0x6421, 0x6D39},
+       {0x6422, 0x6D27},
+       {0x6423, 0x6D0C},
+       {0x6424, 0x6D43},
+       {0x6425, 0x6D48},
+       {0x6426, 0x6D07},
+       {0x6427, 0x6D04},
+       {0x6428, 0x6D19},
+       {0x6429, 0x6D0E},
+       {0x642A, 0x6D2B},
+       {0x642B, 0x6D4D},
+       {0x642C, 0x6D2E},
+       {0x642D, 0x6D35},
+       {0x642E, 0x6D1A},
+       {0x642F, 0x6D4F},
+       {0x6430, 0x6D52},
+       {0x6431, 0x6D54},
+       {0x6432, 0x6D33},
+       {0x6433, 0x6D91},
+       {0x6434, 0x6D6F},
+       {0x6435, 0x6D9E},
+       {0x6436, 0x6DA0},
+       {0x6437, 0x6D5E},
+       {0x6438, 0x6D93},
+       {0x6439, 0x6D94},
+       {0x643A, 0x6D5C},
+       {0x643B, 0x6D60},
+       {0x643C, 0x6D7C},
+       {0x643D, 0x6D63},
+       {0x643E, 0x6E1A},
+       {0x643F, 0x6DC7},
+       {0x6440, 0x6DC5},
+       {0x6441, 0x6DDE},
+       {0x6442, 0x6E0E},
+       {0x6443, 0x6DBF},
+       {0x6444, 0x6DE0},
+       {0x6445, 0x6E11},
+       {0x6446, 0x6DE6},
+       {0x6447, 0x6DDD},
+       {0x6448, 0x6DD9},
+       {0x6449, 0x6E16},
+       {0x644A, 0x6DAB},
+       {0x644B, 0x6E0C},
+       {0x644C, 0x6DAE},
+       {0x644D, 0x6E2B},
+       {0x644E, 0x6E6E},
+       {0x644F, 0x6E4E},
+       {0x6450, 0x6E6B},
+       {0x6451, 0x6EB2},
+       {0x6452, 0x6E5F},
+       {0x6453, 0x6E86},
+       {0x6454, 0x6E53},
+       {0x6455, 0x6E54},
+       {0x6456, 0x6E32},
+       {0x6457, 0x6E25},
+       {0x6458, 0x6E44},
+       {0x6459, 0x6EDF},
+       {0x645A, 0x6EB1},
+       {0x645B, 0x6E98},
+       {0x645C, 0x6EE0},
+       {0x645D, 0x6F2D},
+       {0x645E, 0x6EE2},
+       {0x645F, 0x6EA5},
+       {0x6460, 0x6EA7},
+       {0x6461, 0x6EBD},
+       {0x6462, 0x6EBB},
+       {0x6463, 0x6EB7},
+       {0x6464, 0x6ED7},
+       {0x6465, 0x6EB4},
+       {0x6466, 0x6ECF},
+       {0x6467, 0x6E8F},
+       {0x6468, 0x6EC2},
+       {0x6469, 0x6E9F},
+       {0x646A, 0x6F62},
+       {0x646B, 0x6F46},
+       {0x646C, 0x6F47},
+       {0x646D, 0x6F24},
+       {0x646E, 0x6F15},
+       {0x646F, 0x6EF9},
+       {0x6470, 0x6F2F},
+       {0x6471, 0x6F36},
+       {0x6472, 0x6F4B},
+       {0x6473, 0x6F74},
+       {0x6474, 0x6F2A},
+       {0x6475, 0x6F09},
+       {0x6476, 0x6F29},
+       {0x6477, 0x6F89},
+       {0x6478, 0x6F8D},
+       {0x6479, 0x6F8C},
+       {0x647A, 0x6F78},
+       {0x647B, 0x6F72},
+       {0x647C, 0x6F7C},
+       {0x647D, 0x6F7A},
+       {0x647E, 0x6FD1},
+       {0x6521, 0x6FC9},
+       {0x6522, 0x6FA7},
+       {0x6523, 0x6FB9},
+       {0x6524, 0x6FB6},
+       {0x6525, 0x6FC2},
+       {0x6526, 0x6FE1},
+       {0x6527, 0x6FEE},
+       {0x6528, 0x6FDE},
+       {0x6529, 0x6FE0},
+       {0x652A, 0x6FEF},
+       {0x652B, 0x701A},
+       {0x652C, 0x7023},
+       {0x652D, 0x701B},
+       {0x652E, 0x7039},
+       {0x652F, 0x7035},
+       {0x6530, 0x704F},
+       {0x6531, 0x705E},
+       {0x6532, 0x5B80},
+       {0x6533, 0x5B84},
+       {0x6534, 0x5B95},
+       {0x6535, 0x5B93},
+       {0x6536, 0x5BA5},
+       {0x6537, 0x5BB8},
+       {0x6538, 0x752F},
+       {0x6539, 0x9A9E},
+       {0x653A, 0x6434},
+       {0x653B, 0x5BE4},
+       {0x653C, 0x5BEE},
+       {0x653D, 0x8930},
+       {0x653E, 0x5BF0},
+       {0x653F, 0x8E47},
+       {0x6540, 0x8B07},
+       {0x6541, 0x8FB6},
+       {0x6542, 0x8FD3},
+       {0x6543, 0x8FD5},
+       {0x6544, 0x8FE5},
+       {0x6545, 0x8FEE},
+       {0x6546, 0x8FE4},
+       {0x6547, 0x8FE9},
+       {0x6548, 0x8FE6},
+       {0x6549, 0x8FF3},
+       {0x654A, 0x8FE8},
+       {0x654B, 0x9005},
+       {0x654C, 0x9004},
+       {0x654D, 0x900B},
+       {0x654E, 0x9026},
+       {0x654F, 0x9011},
+       {0x6550, 0x900D},
+       {0x6551, 0x9016},
+       {0x6552, 0x9021},
+       {0x6553, 0x9035},
+       {0x6554, 0x9036},
+       {0x6555, 0x902D},
+       {0x6556, 0x902F},
+       {0x6557, 0x9044},
+       {0x6558, 0x9051},
+       {0x6559, 0x9052},
+       {0x655A, 0x9050},
+       {0x655B, 0x9068},
+       {0x655C, 0x9058},
+       {0x655D, 0x9062},
+       {0x655E, 0x905B},
+       {0x655F, 0x66B9},
+       {0x6560, 0x9074},
+       {0x6561, 0x907D},
+       {0x6562, 0x9082},
+       {0x6563, 0x9088},
+       {0x6564, 0x9083},
+       {0x6565, 0x908B},
+       {0x6566, 0x5F50},
+       {0x6567, 0x5F57},
+       {0x6568, 0x5F56},
+       {0x6569, 0x5F58},
+       {0x656A, 0x5C3B},
+       {0x656B, 0x54AB},
+       {0x656C, 0x5C50},
+       {0x656D, 0x5C59},
+       {0x656E, 0x5B71},
+       {0x656F, 0x5C63},
+       {0x6570, 0x5C66},
+       {0x6571, 0x7FBC},
+       {0x6572, 0x5F2A},
+       {0x6573, 0x5F29},
+       {0x6574, 0x5F2D},
+       {0x6575, 0x8274},
+       {0x6576, 0x5F3C},
+       {0x6577, 0x9B3B},
+       {0x6578, 0x5C6E},
+       {0x6579, 0x5981},
+       {0x657A, 0x5983},
+       {0x657B, 0x598D},
+       {0x657C, 0x59A9},
+       {0x657D, 0x59AA},
+       {0x657E, 0x59A3},
+       {0x6621, 0x5997},
+       {0x6622, 0x59CA},
+       {0x6623, 0x59AB},
+       {0x6624, 0x599E},
+       {0x6625, 0x59A4},
+       {0x6626, 0x59D2},
+       {0x6627, 0x59B2},
+       {0x6628, 0x59AF},
+       {0x6629, 0x59D7},
+       {0x662A, 0x59BE},
+       {0x662B, 0x5A05},
+       {0x662C, 0x5A06},
+       {0x662D, 0x59DD},
+       {0x662E, 0x5A08},
+       {0x662F, 0x59E3},
+       {0x6630, 0x59D8},
+       {0x6631, 0x59F9},
+       {0x6632, 0x5A0C},
+       {0x6633, 0x5A09},
+       {0x6634, 0x5A32},
+       {0x6635, 0x5A34},
+       {0x6636, 0x5A11},
+       {0x6637, 0x5A23},
+       {0x6638, 0x5A13},
+       {0x6639, 0x5A40},
+       {0x663A, 0x5A67},
+       {0x663B, 0x5A4A},
+       {0x663C, 0x5A55},
+       {0x663D, 0x5A3C},
+       {0x663E, 0x5A62},
+       {0x663F, 0x5A75},
+       {0x6640, 0x80EC},
+       {0x6641, 0x5AAA},
+       {0x6642, 0x5A9B},
+       {0x6643, 0x5A77},
+       {0x6644, 0x5A7A},
+       {0x6645, 0x5ABE},
+       {0x6646, 0x5AEB},
+       {0x6647, 0x5AB2},
+       {0x6648, 0x5AD2},
+       {0x6649, 0x5AD4},
+       {0x664A, 0x5AB8},
+       {0x664B, 0x5AE0},
+       {0x664C, 0x5AE3},
+       {0x664D, 0x5AF1},
+       {0x664E, 0x5AD6},
+       {0x664F, 0x5AE6},
+       {0x6650, 0x5AD8},
+       {0x6651, 0x5ADC},
+       {0x6652, 0x5B09},
+       {0x6653, 0x5B17},
+       {0x6654, 0x5B16},
+       {0x6655, 0x5B32},
+       {0x6656, 0x5B37},
+       {0x6657, 0x5B40},
+       {0x6658, 0x5C15},
+       {0x6659, 0x5C1C},
+       {0x665A, 0x5B5A},
+       {0x665B, 0x5B65},
+       {0x665C, 0x5B73},
+       {0x665D, 0x5B51},
+       {0x665E, 0x5B53},
+       {0x665F, 0x5B62},
+       {0x6660, 0x9A75},
+       {0x6661, 0x9A77},
+       {0x6662, 0x9A78},
+       {0x6663, 0x9A7A},
+       {0x6664, 0x9A7F},
+       {0x6665, 0x9A7D},
+       {0x6666, 0x9A80},
+       {0x6667, 0x9A81},
+       {0x6668, 0x9A85},
+       {0x6669, 0x9A88},
+       {0x666A, 0x9A8A},
+       {0x666B, 0x9A90},
+       {0x666C, 0x9A92},
+       {0x666D, 0x9A93},
+       {0x666E, 0x9A96},
+       {0x666F, 0x9A98},
+       {0x6670, 0x9A9B},
+       {0x6671, 0x9A9C},
+       {0x6672, 0x9A9D},
+       {0x6673, 0x9A9F},
+       {0x6674, 0x9AA0},
+       {0x6675, 0x9AA2},
+       {0x6676, 0x9AA3},
+       {0x6677, 0x9AA5},
+       {0x6678, 0x9AA7},
+       {0x6679, 0x7E9F},
+       {0x667A, 0x7EA1},
+       {0x667B, 0x7EA3},
+       {0x667C, 0x7EA5},
+       {0x667D, 0x7EA8},
+       {0x667E, 0x7EA9},
+       {0x6721, 0x7EAD},
+       {0x6722, 0x7EB0},
+       {0x6723, 0x7EBE},
+       {0x6724, 0x7EC0},
+       {0x6725, 0x7EC1},
+       {0x6726, 0x7EC2},
+       {0x6727, 0x7EC9},
+       {0x6728, 0x7ECB},
+       {0x6729, 0x7ECC},
+       {0x672A, 0x7ED0},
+       {0x672B, 0x7ED4},
+       {0x672C, 0x7ED7},
+       {0x672D, 0x7EDB},
+       {0x672E, 0x7EE0},
+       {0x672F, 0x7EE1},
+       {0x6730, 0x7EE8},
+       {0x6731, 0x7EEB},
+       {0x6732, 0x7EEE},
+       {0x6733, 0x7EEF},
+       {0x6734, 0x7EF1},
+       {0x6735, 0x7EF2},
+       {0x6736, 0x7F0D},
+       {0x6737, 0x7EF6},
+       {0x6738, 0x7EFA},
+       {0x6739, 0x7EFB},
+       {0x673A, 0x7EFE},
+       {0x673B, 0x7F01},
+       {0x673C, 0x7F02},
+       {0x673D, 0x7F03},
+       {0x673E, 0x7F07},
+       {0x673F, 0x7F08},
+       {0x6740, 0x7F0B},
+       {0x6741, 0x7F0C},
+       {0x6742, 0x7F0F},
+       {0x6743, 0x7F11},
+       {0x6744, 0x7F12},
+       {0x6745, 0x7F17},
+       {0x6746, 0x7F19},
+       {0x6747, 0x7F1C},
+       {0x6748, 0x7F1B},
+       {0x6749, 0x7F1F},
+       {0x674A, 0x7F21},
+       {0x674B, 0x7F22},
+       {0x674C, 0x7F23},
+       {0x674D, 0x7F24},
+       {0x674E, 0x7F25},
+       {0x674F, 0x7F26},
+       {0x6750, 0x7F27},
+       {0x6751, 0x7F2A},
+       {0x6752, 0x7F2B},
+       {0x6753, 0x7F2C},
+       {0x6754, 0x7F2D},
+       {0x6755, 0x7F2F},
+       {0x6756, 0x7F30},
+       {0x6757, 0x7F31},
+       {0x6758, 0x7F32},
+       {0x6759, 0x7F33},
+       {0x675A, 0x7F35},
+       {0x675B, 0x5E7A},
+       {0x675C, 0x757F},
+       {0x675D, 0x5DDB},
+       {0x675E, 0x753E},
+       {0x675F, 0x9095},
+       {0x6760, 0x738E},
+       {0x6761, 0x7391},
+       {0x6762, 0x73AE},
+       {0x6763, 0x73A2},
+       {0x6764, 0x739F},
+       {0x6765, 0x73CF},
+       {0x6766, 0x73C2},
+       {0x6767, 0x73D1},
+       {0x6768, 0x73B7},
+       {0x6769, 0x73B3},
+       {0x676A, 0x73C0},
+       {0x676B, 0x73C9},
+       {0x676C, 0x73C8},
+       {0x676D, 0x73E5},
+       {0x676E, 0x73D9},
+       {0x676F, 0x987C},
+       {0x6770, 0x740A},
+       {0x6771, 0x73E9},
+       {0x6772, 0x73E7},
+       {0x6773, 0x73DE},
+       {0x6774, 0x73BA},
+       {0x6775, 0x73F2},
+       {0x6776, 0x740F},
+       {0x6777, 0x742A},
+       {0x6778, 0x745B},
+       {0x6779, 0x7426},
+       {0x677A, 0x7425},
+       {0x677B, 0x7428},
+       {0x677C, 0x7430},
+       {0x677D, 0x742E},
+       {0x677E, 0x742C},
+       {0x6821, 0x741B},
+       {0x6822, 0x741A},
+       {0x6823, 0x7441},
+       {0x6824, 0x745C},
+       {0x6825, 0x7457},
+       {0x6826, 0x7455},
+       {0x6827, 0x7459},
+       {0x6828, 0x7477},
+       {0x6829, 0x746D},
+       {0x682A, 0x747E},
+       {0x682B, 0x749C},
+       {0x682C, 0x748E},
+       {0x682D, 0x7480},
+       {0x682E, 0x7481},
+       {0x682F, 0x7487},
+       {0x6830, 0x748B},
+       {0x6831, 0x749E},
+       {0x6832, 0x74A8},
+       {0x6833, 0x74A9},
+       {0x6834, 0x7490},
+       {0x6835, 0x74A7},
+       {0x6836, 0x74D2},
+       {0x6837, 0x74BA},
+       {0x6838, 0x97EA},
+       {0x6839, 0x97EB},
+       {0x683A, 0x97EC},
+       {0x683B, 0x674C},
+       {0x683C, 0x6753},
+       {0x683D, 0x675E},
+       {0x683E, 0x6748},
+       {0x683F, 0x6769},
+       {0x6840, 0x67A5},
+       {0x6841, 0x6787},
+       {0x6842, 0x676A},
+       {0x6843, 0x6773},
+       {0x6844, 0x6798},
+       {0x6845, 0x67A7},
+       {0x6846, 0x6775},
+       {0x6847, 0x67A8},
+       {0x6848, 0x679E},
+       {0x6849, 0x67AD},
+       {0x684A, 0x678B},
+       {0x684B, 0x6777},
+       {0x684C, 0x677C},
+       {0x684D, 0x67F0},
+       {0x684E, 0x6809},
+       {0x684F, 0x67D8},
+       {0x6850, 0x680A},
+       {0x6851, 0x67E9},
+       {0x6852, 0x67B0},
+       {0x6853, 0x680C},
+       {0x6854, 0x67D9},
+       {0x6855, 0x67B5},
+       {0x6856, 0x67DA},
+       {0x6857, 0x67B3},
+       {0x6858, 0x67DD},
+       {0x6859, 0x6800},
+       {0x685A, 0x67C3},
+       {0x685B, 0x67B8},
+       {0x685C, 0x67E2},
+       {0x685D, 0x680E},
+       {0x685E, 0x67C1},
+       {0x685F, 0x67FD},
+       {0x6860, 0x6832},
+       {0x6861, 0x6833},
+       {0x6862, 0x6860},
+       {0x6863, 0x6861},
+       {0x6864, 0x684E},
+       {0x6865, 0x6862},
+       {0x6866, 0x6844},
+       {0x6867, 0x6864},
+       {0x6868, 0x6883},
+       {0x6869, 0x681D},
+       {0x686A, 0x6855},
+       {0x686B, 0x6866},
+       {0x686C, 0x6841},
+       {0x686D, 0x6867},
+       {0x686E, 0x6840},
+       {0x686F, 0x683E},
+       {0x6870, 0x684A},
+       {0x6871, 0x6849},
+       {0x6872, 0x6829},
+       {0x6873, 0x68B5},
+       {0x6874, 0x688F},
+       {0x6875, 0x6874},
+       {0x6876, 0x6877},
+       {0x6877, 0x6893},
+       {0x6878, 0x686B},
+       {0x6879, 0x68C2},
+       {0x687A, 0x696E},
+       {0x687B, 0x68FC},
+       {0x687C, 0x691F},
+       {0x687D, 0x6920},
+       {0x687E, 0x68F9},
+       {0x6921, 0x6924},
+       {0x6922, 0x68F0},
+       {0x6923, 0x690B},
+       {0x6924, 0x6901},
+       {0x6925, 0x6957},
+       {0x6926, 0x68E3},
+       {0x6927, 0x6910},
+       {0x6928, 0x6971},
+       {0x6929, 0x6939},
+       {0x692A, 0x6960},
+       {0x692B, 0x6942},
+       {0x692C, 0x695D},
+       {0x692D, 0x6984},
+       {0x692E, 0x696B},
+       {0x692F, 0x6980},
+       {0x6930, 0x6998},
+       {0x6931, 0x6978},
+       {0x6932, 0x6934},
+       {0x6933, 0x69CC},
+       {0x6934, 0x6987},
+       {0x6935, 0x6988},
+       {0x6936, 0x69CE},
+       {0x6937, 0x6989},
+       {0x6938, 0x6966},
+       {0x6939, 0x6963},
+       {0x693A, 0x6979},
+       {0x693B, 0x699B},
+       {0x693C, 0x69A7},
+       {0x693D, 0x69BB},
+       {0x693E, 0x69AB},
+       {0x693F, 0x69AD},
+       {0x6940, 0x69D4},
+       {0x6941, 0x69B1},
+       {0x6942, 0x69C1},
+       {0x6943, 0x69CA},
+       {0x6944, 0x69DF},
+       {0x6945, 0x6995},
+       {0x6946, 0x69E0},
+       {0x6947, 0x698D},
+       {0x6948, 0x69FF},
+       {0x6949, 0x6A2F},
+       {0x694A, 0x69ED},
+       {0x694B, 0x6A17},
+       {0x694C, 0x6A18},
+       {0x694D, 0x6A65},
+       {0x694E, 0x69F2},
+       {0x694F, 0x6A44},
+       {0x6950, 0x6A3E},
+       {0x6951, 0x6AA0},
+       {0x6952, 0x6A50},
+       {0x6953, 0x6A5B},
+       {0x6954, 0x6A35},
+       {0x6955, 0x6A8E},
+       {0x6956, 0x6A79},
+       {0x6957, 0x6A3D},
+       {0x6958, 0x6A28},
+       {0x6959, 0x6A58},
+       {0x695A, 0x6A7C},
+       {0x695B, 0x6A91},
+       {0x695C, 0x6A90},
+       {0x695D, 0x6AA9},
+       {0x695E, 0x6A97},
+       {0x695F, 0x6AAB},
+       {0x6960, 0x7337},
+       {0x6961, 0x7352},
+       {0x6962, 0x6B81},
+       {0x6963, 0x6B82},
+       {0x6964, 0x6B87},
+       {0x6965, 0x6B84},
+       {0x6966, 0x6B92},
+       {0x6967, 0x6B93},
+       {0x6968, 0x6B8D},
+       {0x6969, 0x6B9A},
+       {0x696A, 0x6B9B},
+       {0x696B, 0x6BA1},
+       {0x696C, 0x6BAA},
+       {0x696D, 0x8F6B},
+       {0x696E, 0x8F6D},
+       {0x696F, 0x8F71},
+       {0x6970, 0x8F72},
+       {0x6971, 0x8F73},
+       {0x6972, 0x8F75},
+       {0x6973, 0x8F76},
+       {0x6974, 0x8F78},
+       {0x6975, 0x8F77},
+       {0x6976, 0x8F79},
+       {0x6977, 0x8F7A},
+       {0x6978, 0x8F7C},
+       {0x6979, 0x8F7E},
+       {0x697A, 0x8F81},
+       {0x697B, 0x8F82},
+       {0x697C, 0x8F84},
+       {0x697D, 0x8F87},
+       {0x697E, 0x8F8B},
+       {0x6A21, 0x8F8D},
+       {0x6A22, 0x8F8E},
+       {0x6A23, 0x8F8F},
+       {0x6A24, 0x8F98},
+       {0x6A25, 0x8F9A},
+       {0x6A26, 0x8ECE},
+       {0x6A27, 0x620B},
+       {0x6A28, 0x6217},
+       {0x6A29, 0x621B},
+       {0x6A2A, 0x621F},
+       {0x6A2B, 0x6222},
+       {0x6A2C, 0x6221},
+       {0x6A2D, 0x6225},
+       {0x6A2E, 0x6224},
+       {0x6A2F, 0x622C},
+       {0x6A30, 0x81E7},
+       {0x6A31, 0x74EF},
+       {0x6A32, 0x74F4},
+       {0x6A33, 0x74FF},
+       {0x6A34, 0x750F},
+       {0x6A35, 0x7511},
+       {0x6A36, 0x7513},
+       {0x6A37, 0x6534},
+       {0x6A38, 0x65EE},
+       {0x6A39, 0x65EF},
+       {0x6A3A, 0x65F0},
+       {0x6A3B, 0x660A},
+       {0x6A3C, 0x6619},
+       {0x6A3D, 0x6772},
+       {0x6A3E, 0x6603},
+       {0x6A3F, 0x6615},
+       {0x6A40, 0x6600},
+       {0x6A41, 0x7085},
+       {0x6A42, 0x66F7},
+       {0x6A43, 0x661D},
+       {0x6A44, 0x6634},
+       {0x6A45, 0x6631},
+       {0x6A46, 0x6636},
+       {0x6A47, 0x6635},
+       {0x6A48, 0x8006},
+       {0x6A49, 0x665F},
+       {0x6A4A, 0x6654},
+       {0x6A4B, 0x6641},
+       {0x6A4C, 0x664F},
+       {0x6A4D, 0x6656},
+       {0x6A4E, 0x6661},
+       {0x6A4F, 0x6657},
+       {0x6A50, 0x6677},
+       {0x6A51, 0x6684},
+       {0x6A52, 0x668C},
+       {0x6A53, 0x66A7},
+       {0x6A54, 0x669D},
+       {0x6A55, 0x66BE},
+       {0x6A56, 0x66DB},
+       {0x6A57, 0x66DC},
+       {0x6A58, 0x66E6},
+       {0x6A59, 0x66E9},
+       {0x6A5A, 0x8D32},
+       {0x6A5B, 0x8D33},
+       {0x6A5C, 0x8D36},
+       {0x6A5D, 0x8D3B},
+       {0x6A5E, 0x8D3D},
+       {0x6A5F, 0x8D40},
+       {0x6A60, 0x8D45},
+       {0x6A61, 0x8D46},
+       {0x6A62, 0x8D48},
+       {0x6A63, 0x8D49},
+       {0x6A64, 0x8D47},
+       {0x6A65, 0x8D4D},
+       {0x6A66, 0x8D55},
+       {0x6A67, 0x8D59},
+       {0x6A68, 0x89C7},
+       {0x6A69, 0x89CA},
+       {0x6A6A, 0x89CB},
+       {0x6A6B, 0x89CC},
+       {0x6A6C, 0x89CE},
+       {0x6A6D, 0x89CF},
+       {0x6A6E, 0x89D0},
+       {0x6A6F, 0x89D1},
+       {0x6A70, 0x726E},
+       {0x6A71, 0x729F},
+       {0x6A72, 0x725D},
+       {0x6A73, 0x7266},
+       {0x6A74, 0x726F},
+       {0x6A75, 0x727E},
+       {0x6A76, 0x727F},
+       {0x6A77, 0x7284},
+       {0x6A78, 0x728B},
+       {0x6A79, 0x728D},
+       {0x6A7A, 0x728F},
+       {0x6A7B, 0x7292},
+       {0x6A7C, 0x6308},
+       {0x6A7D, 0x6332},
+       {0x6A7E, 0x63B0},
+       {0x6B21, 0x643F},
+       {0x6B22, 0x64D8},
+       {0x6B23, 0x8004},
+       {0x6B24, 0x6BEA},
+       {0x6B25, 0x6BF3},
+       {0x6B26, 0x6BFD},
+       {0x6B27, 0x6BF5},
+       {0x6B28, 0x6BF9},
+       {0x6B29, 0x6C05},
+       {0x6B2A, 0x6C07},
+       {0x6B2B, 0x6C06},
+       {0x6B2C, 0x6C0D},
+       {0x6B2D, 0x6C15},
+       {0x6B2E, 0x6C18},
+       {0x6B2F, 0x6C19},
+       {0x6B30, 0x6C1A},
+       {0x6B31, 0x6C21},
+       {0x6B32, 0x6C29},
+       {0x6B33, 0x6C24},
+       {0x6B34, 0x6C2A},
+       {0x6B35, 0x6C32},
+       {0x6B36, 0x6535},
+       {0x6B37, 0x6555},
+       {0x6B38, 0x656B},
+       {0x6B39, 0x724D},
+       {0x6B3A, 0x7252},
+       {0x6B3B, 0x7256},
+       {0x6B3C, 0x7230},
+       {0x6B3D, 0x8662},
+       {0x6B3E, 0x5216},
+       {0x6B3F, 0x809F},
+       {0x6B40, 0x809C},
+       {0x6B41, 0x8093},
+       {0x6B42, 0x80BC},
+       {0x6B43, 0x670A},
+       {0x6B44, 0x80BD},
+       {0x6B45, 0x80B1},
+       {0x6B46, 0x80AB},
+       {0x6B47, 0x80AD},
+       {0x6B48, 0x80B4},
+       {0x6B49, 0x80B7},
+       {0x6B4A, 0x80E7},
+       {0x6B4B, 0x80E8},
+       {0x6B4C, 0x80E9},
+       {0x6B4D, 0x80EA},
+       {0x6B4E, 0x80DB},
+       {0x6B4F, 0x80C2},
+       {0x6B50, 0x80C4},
+       {0x6B51, 0x80D9},
+       {0x6B52, 0x80CD},
+       {0x6B53, 0x80D7},
+       {0x6B54, 0x6710},
+       {0x6B55, 0x80DD},
+       {0x6B56, 0x80EB},
+       {0x6B57, 0x80F1},
+       {0x6B58, 0x80F4},
+       {0x6B59, 0x80ED},
+       {0x6B5A, 0x810D},
+       {0x6B5B, 0x810E},
+       {0x6B5C, 0x80F2},
+       {0x6B5D, 0x80FC},
+       {0x6B5E, 0x6715},
+       {0x6B5F, 0x8112},
+       {0x6B60, 0x8C5A},
+       {0x6B61, 0x8136},
+       {0x6B62, 0x811E},
+       {0x6B63, 0x812C},
+       {0x6B64, 0x8118},
+       {0x6B65, 0x8132},
+       {0x6B66, 0x8148},
+       {0x6B67, 0x814C},
+       {0x6B68, 0x8153},
+       {0x6B69, 0x8174},
+       {0x6B6A, 0x8159},
+       {0x6B6B, 0x815A},
+       {0x6B6C, 0x8171},
+       {0x6B6D, 0x8160},
+       {0x6B6E, 0x8169},
+       {0x6B6F, 0x817C},
+       {0x6B70, 0x817D},
+       {0x6B71, 0x816D},
+       {0x6B72, 0x8167},
+       {0x6B73, 0x584D},
+       {0x6B74, 0x5AB5},
+       {0x6B75, 0x8188},
+       {0x6B76, 0x8182},
+       {0x6B77, 0x8191},
+       {0x6B78, 0x6ED5},
+       {0x6B79, 0x81A3},
+       {0x6B7A, 0x81AA},
+       {0x6B7B, 0x81CC},
+       {0x6B7C, 0x6726},
+       {0x6B7D, 0x81CA},
+       {0x6B7E, 0x81BB},
+       {0x6C21, 0x81C1},
+       {0x6C22, 0x81A6},
+       {0x6C23, 0x6B24},
+       {0x6C24, 0x6B37},
+       {0x6C25, 0x6B39},
+       {0x6C26, 0x6B43},
+       {0x6C27, 0x6B46},
+       {0x6C28, 0x6B59},
+       {0x6C29, 0x98D1},
+       {0x6C2A, 0x98D2},
+       {0x6C2B, 0x98D3},
+       {0x6C2C, 0x98D5},
+       {0x6C2D, 0x98D9},
+       {0x6C2E, 0x98DA},
+       {0x6C2F, 0x6BB3},
+       {0x6C30, 0x5F40},
+       {0x6C31, 0x6BC2},
+       {0x6C32, 0x89F3},
+       {0x6C33, 0x6590},
+       {0x6C34, 0x9F51},
+       {0x6C35, 0x6593},
+       {0x6C36, 0x65BC},
+       {0x6C37, 0x65C6},
+       {0x6C38, 0x65C4},
+       {0x6C39, 0x65C3},
+       {0x6C3A, 0x65CC},
+       {0x6C3B, 0x65CE},
+       {0x6C3C, 0x65D2},
+       {0x6C3D, 0x65D6},
+       {0x6C3E, 0x7080},
+       {0x6C3F, 0x709C},
+       {0x6C40, 0x7096},
+       {0x6C41, 0x709D},
+       {0x6C42, 0x70BB},
+       {0x6C43, 0x70C0},
+       {0x6C44, 0x70B7},
+       {0x6C45, 0x70AB},
+       {0x6C46, 0x70B1},
+       {0x6C47, 0x70E8},
+       {0x6C48, 0x70CA},
+       {0x6C49, 0x7110},
+       {0x6C4A, 0x7113},
+       {0x6C4B, 0x7116},
+       {0x6C4C, 0x712F},
+       {0x6C4D, 0x7131},
+       {0x6C4E, 0x7173},
+       {0x6C4F, 0x715C},
+       {0x6C50, 0x7168},
+       {0x6C51, 0x7145},
+       {0x6C52, 0x7172},
+       {0x6C53, 0x714A},
+       {0x6C54, 0x7178},
+       {0x6C55, 0x717A},
+       {0x6C56, 0x7198},
+       {0x6C57, 0x71B3},
+       {0x6C58, 0x71B5},
+       {0x6C59, 0x71A8},
+       {0x6C5A, 0x71A0},
+       {0x6C5B, 0x71E0},
+       {0x6C5C, 0x71D4},
+       {0x6C5D, 0x71E7},
+       {0x6C5E, 0x71F9},
+       {0x6C5F, 0x721D},
+       {0x6C60, 0x7228},
+       {0x6C61, 0x706C},
+       {0x6C62, 0x7118},
+       {0x6C63, 0x7166},
+       {0x6C64, 0x71B9},
+       {0x6C65, 0x623E},
+       {0x6C66, 0x623D},
+       {0x6C67, 0x6243},
+       {0x6C68, 0x6248},
+       {0x6C69, 0x6249},
+       {0x6C6A, 0x793B},
+       {0x6C6B, 0x7940},
+       {0x6C6C, 0x7946},
+       {0x6C6D, 0x7949},
+       {0x6C6E, 0x795B},
+       {0x6C6F, 0x795C},
+       {0x6C70, 0x7953},
+       {0x6C71, 0x795A},
+       {0x6C72, 0x7962},
+       {0x6C73, 0x7957},
+       {0x6C74, 0x7960},
+       {0x6C75, 0x796F},
+       {0x6C76, 0x7967},
+       {0x6C77, 0x797A},
+       {0x6C78, 0x7985},
+       {0x6C79, 0x798A},
+       {0x6C7A, 0x799A},
+       {0x6C7B, 0x79A7},
+       {0x6C7C, 0x79B3},
+       {0x6C7D, 0x5FD1},
+       {0x6C7E, 0x5FD0},
+       {0x6D21, 0x603C},
+       {0x6D22, 0x605D},
+       {0x6D23, 0x605A},
+       {0x6D24, 0x6067},
+       {0x6D25, 0x6041},
+       {0x6D26, 0x6059},
+       {0x6D27, 0x6063},
+       {0x6D28, 0x60AB},
+       {0x6D29, 0x6106},
+       {0x6D2A, 0x610D},
+       {0x6D2B, 0x615D},
+       {0x6D2C, 0x61A9},
+       {0x6D2D, 0x619D},
+       {0x6D2E, 0x61CB},
+       {0x6D2F, 0x61D1},
+       {0x6D30, 0x6206},
+       {0x6D31, 0x8080},
+       {0x6D32, 0x807F},
+       {0x6D33, 0x6C93},
+       {0x6D34, 0x6CF6},
+       {0x6D35, 0x6DFC},
+       {0x6D36, 0x77F6},
+       {0x6D37, 0x77F8},
+       {0x6D38, 0x7800},
+       {0x6D39, 0x7809},
+       {0x6D3A, 0x7817},
+       {0x6D3B, 0x7818},
+       {0x6D3C, 0x7811},
+       {0x6D3D, 0x65AB},
+       {0x6D3E, 0x782D},
+       {0x6D3F, 0x781C},
+       {0x6D40, 0x781D},
+       {0x6D41, 0x7839},
+       {0x6D42, 0x783A},
+       {0x6D43, 0x783B},
+       {0x6D44, 0x781F},
+       {0x6D45, 0x783C},
+       {0x6D46, 0x7825},
+       {0x6D47, 0x782C},
+       {0x6D48, 0x7823},
+       {0x6D49, 0x7829},
+       {0x6D4A, 0x784E},
+       {0x6D4B, 0x786D},
+       {0x6D4C, 0x7856},
+       {0x6D4D, 0x7857},
+       {0x6D4E, 0x7826},
+       {0x6D4F, 0x7850},
+       {0x6D50, 0x7847},
+       {0x6D51, 0x784C},
+       {0x6D52, 0x786A},
+       {0x6D53, 0x789B},
+       {0x6D54, 0x7893},
+       {0x6D55, 0x789A},
+       {0x6D56, 0x7887},
+       {0x6D57, 0x789C},
+       {0x6D58, 0x78A1},
+       {0x6D59, 0x78A3},
+       {0x6D5A, 0x78B2},
+       {0x6D5B, 0x78B9},
+       {0x6D5C, 0x78A5},
+       {0x6D5D, 0x78D4},
+       {0x6D5E, 0x78D9},
+       {0x6D5F, 0x78C9},
+       {0x6D60, 0x78EC},
+       {0x6D61, 0x78F2},
+       {0x6D62, 0x7905},
+       {0x6D63, 0x78F4},
+       {0x6D64, 0x7913},
+       {0x6D65, 0x7924},
+       {0x6D66, 0x791E},
+       {0x6D67, 0x7934},
+       {0x6D68, 0x9F9B},
+       {0x6D69, 0x9EF9},
+       {0x6D6A, 0x9EFB},
+       {0x6D6B, 0x9EFC},
+       {0x6D6C, 0x76F1},
+       {0x6D6D, 0x7704},
+       {0x6D6E, 0x770D},
+       {0x6D6F, 0x76F9},
+       {0x6D70, 0x7707},
+       {0x6D71, 0x7708},
+       {0x6D72, 0x771A},
+       {0x6D73, 0x7722},
+       {0x6D74, 0x7719},
+       {0x6D75, 0x772D},
+       {0x6D76, 0x7726},
+       {0x6D77, 0x7735},
+       {0x6D78, 0x7738},
+       {0x6D79, 0x7750},
+       {0x6D7A, 0x7751},
+       {0x6D7B, 0x7747},
+       {0x6D7C, 0x7743},
+       {0x6D7D, 0x775A},
+       {0x6D7E, 0x7768},
+       {0x6E21, 0x7762},
+       {0x6E22, 0x7765},
+       {0x6E23, 0x777F},
+       {0x6E24, 0x778D},
+       {0x6E25, 0x777D},
+       {0x6E26, 0x7780},
+       {0x6E27, 0x778C},
+       {0x6E28, 0x7791},
+       {0x6E29, 0x779F},
+       {0x6E2A, 0x77A0},
+       {0x6E2B, 0x77B0},
+       {0x6E2C, 0x77B5},
+       {0x6E2D, 0x77BD},
+       {0x6E2E, 0x753A},
+       {0x6E2F, 0x7540},
+       {0x6E30, 0x754E},
+       {0x6E31, 0x754B},
+       {0x6E32, 0x7548},
+       {0x6E33, 0x755B},
+       {0x6E34, 0x7572},
+       {0x6E35, 0x7579},
+       {0x6E36, 0x7583},
+       {0x6E37, 0x7F58},
+       {0x6E38, 0x7F61},
+       {0x6E39, 0x7F5F},
+       {0x6E3A, 0x8A48},
+       {0x6E3B, 0x7F68},
+       {0x6E3C, 0x7F74},
+       {0x6E3D, 0x7F71},
+       {0x6E3E, 0x7F79},
+       {0x6E3F, 0x7F81},
+       {0x6E40, 0x7F7E},
+       {0x6E41, 0x76CD},
+       {0x6E42, 0x76E5},
+       {0x6E43, 0x8832},
+       {0x6E44, 0x9485},
+       {0x6E45, 0x9486},
+       {0x6E46, 0x9487},
+       {0x6E47, 0x948B},
+       {0x6E48, 0x948A},
+       {0x6E49, 0x948C},
+       {0x6E4A, 0x948D},
+       {0x6E4B, 0x948F},
+       {0x6E4C, 0x9490},
+       {0x6E4D, 0x9494},
+       {0x6E4E, 0x9497},
+       {0x6E4F, 0x9495},
+       {0x6E50, 0x949A},
+       {0x6E51, 0x949B},
+       {0x6E52, 0x949C},
+       {0x6E53, 0x94A3},
+       {0x6E54, 0x94A4},
+       {0x6E55, 0x94AB},
+       {0x6E56, 0x94AA},
+       {0x6E57, 0x94AD},
+       {0x6E58, 0x94AC},
+       {0x6E59, 0x94AF},
+       {0x6E5A, 0x94B0},
+       {0x6E5B, 0x94B2},
+       {0x6E5C, 0x94B4},
+       {0x6E5D, 0x94B6},
+       {0x6E5E, 0x94B7},
+       {0x6E5F, 0x94B8},
+       {0x6E60, 0x94B9},
+       {0x6E61, 0x94BA},
+       {0x6E62, 0x94BC},
+       {0x6E63, 0x94BD},
+       {0x6E64, 0x94BF},
+       {0x6E65, 0x94C4},
+       {0x6E66, 0x94C8},
+       {0x6E67, 0x94C9},
+       {0x6E68, 0x94CA},
+       {0x6E69, 0x94CB},
+       {0x6E6A, 0x94CC},
+       {0x6E6B, 0x94CD},
+       {0x6E6C, 0x94CE},
+       {0x6E6D, 0x94D0},
+       {0x6E6E, 0x94D1},
+       {0x6E6F, 0x94D2},
+       {0x6E70, 0x94D5},
+       {0x6E71, 0x94D6},
+       {0x6E72, 0x94D7},
+       {0x6E73, 0x94D9},
+       {0x6E74, 0x94D8},
+       {0x6E75, 0x94DB},
+       {0x6E76, 0x94DE},
+       {0x6E77, 0x94DF},
+       {0x6E78, 0x94E0},
+       {0x6E79, 0x94E2},
+       {0x6E7A, 0x94E4},
+       {0x6E7B, 0x94E5},
+       {0x6E7C, 0x94E7},
+       {0x6E7D, 0x94E8},
+       {0x6E7E, 0x94EA},
+       {0x6F21, 0x94E9},
+       {0x6F22, 0x94EB},
+       {0x6F23, 0x94EE},
+       {0x6F24, 0x94EF},
+       {0x6F25, 0x94F3},
+       {0x6F26, 0x94F4},
+       {0x6F27, 0x94F5},
+       {0x6F28, 0x94F7},
+       {0x6F29, 0x94F9},
+       {0x6F2A, 0x94FC},
+       {0x6F2B, 0x94FD},
+       {0x6F2C, 0x94FF},
+       {0x6F2D, 0x9503},
+       {0x6F2E, 0x9502},
+       {0x6F2F, 0x9506},
+       {0x6F30, 0x9507},
+       {0x6F31, 0x9509},
+       {0x6F32, 0x950A},
+       {0x6F33, 0x950D},
+       {0x6F34, 0x950E},
+       {0x6F35, 0x950F},
+       {0x6F36, 0x9512},
+       {0x6F37, 0x9513},
+       {0x6F38, 0x9514},
+       {0x6F39, 0x9515},
+       {0x6F3A, 0x9516},
+       {0x6F3B, 0x9518},
+       {0x6F3C, 0x951B},
+       {0x6F3D, 0x951D},
+       {0x6F3E, 0x951E},
+       {0x6F3F, 0x951F},
+       {0x6F40, 0x9522},
+       {0x6F41, 0x952A},
+       {0x6F42, 0x952B},
+       {0x6F43, 0x9529},
+       {0x6F44, 0x952C},
+       {0x6F45, 0x9531},
+       {0x6F46, 0x9532},
+       {0x6F47, 0x9534},
+       {0x6F48, 0x9536},
+       {0x6F49, 0x9537},
+       {0x6F4A, 0x9538},
+       {0x6F4B, 0x953C},
+       {0x6F4C, 0x953E},
+       {0x6F4D, 0x953F},
+       {0x6F4E, 0x9542},
+       {0x6F4F, 0x9535},
+       {0x6F50, 0x9544},
+       {0x6F51, 0x9545},
+       {0x6F52, 0x9546},
+       {0x6F53, 0x9549},
+       {0x6F54, 0x954C},
+       {0x6F55, 0x954E},
+       {0x6F56, 0x954F},
+       {0x6F57, 0x9552},
+       {0x6F58, 0x9553},
+       {0x6F59, 0x9554},
+       {0x6F5A, 0x9556},
+       {0x6F5B, 0x9557},
+       {0x6F5C, 0x9558},
+       {0x6F5D, 0x9559},
+       {0x6F5E, 0x955B},
+       {0x6F5F, 0x955E},
+       {0x6F60, 0x955F},
+       {0x6F61, 0x955D},
+       {0x6F62, 0x9561},
+       {0x6F63, 0x9562},
+       {0x6F64, 0x9564},
+       {0x6F65, 0x9565},
+       {0x6F66, 0x9566},
+       {0x6F67, 0x9567},
+       {0x6F68, 0x9568},
+       {0x6F69, 0x9569},
+       {0x6F6A, 0x956A},
+       {0x6F6B, 0x956B},
+       {0x6F6C, 0x956C},
+       {0x6F6D, 0x956F},
+       {0x6F6E, 0x9571},
+       {0x6F6F, 0x9572},
+       {0x6F70, 0x9573},
+       {0x6F71, 0x953A},
+       {0x6F72, 0x77E7},
+       {0x6F73, 0x77EC},
+       {0x6F74, 0x96C9},
+       {0x6F75, 0x79D5},
+       {0x6F76, 0x79ED},
+       {0x6F77, 0x79E3},
+       {0x6F78, 0x79EB},
+       {0x6F79, 0x7A06},
+       {0x6F7A, 0x5D47},
+       {0x6F7B, 0x7A03},
+       {0x6F7C, 0x7A02},
+       {0x6F7D, 0x7A1E},
+       {0x6F7E, 0x7A14},
+       {0x7021, 0x7A39},
+       {0x7022, 0x7A37},
+       {0x7023, 0x7A51},
+       {0x7024, 0x9ECF},
+       {0x7025, 0x99A5},
+       {0x7026, 0x7A70},
+       {0x7027, 0x7688},
+       {0x7028, 0x768E},
+       {0x7029, 0x7693},
+       {0x702A, 0x7699},
+       {0x702B, 0x76A4},
+       {0x702C, 0x74DE},
+       {0x702D, 0x74E0},
+       {0x702E, 0x752C},
+       {0x702F, 0x9E20},
+       {0x7030, 0x9E22},
+       {0x7031, 0x9E28},
+       {0x7032, 0x9E29},
+       {0x7033, 0x9E2A},
+       {0x7034, 0x9E2B},
+       {0x7035, 0x9E2C},
+       {0x7036, 0x9E32},
+       {0x7037, 0x9E31},
+       {0x7038, 0x9E36},
+       {0x7039, 0x9E38},
+       {0x703A, 0x9E37},
+       {0x703B, 0x9E39},
+       {0x703C, 0x9E3A},
+       {0x703D, 0x9E3E},
+       {0x703E, 0x9E41},
+       {0x703F, 0x9E42},
+       {0x7040, 0x9E44},
+       {0x7041, 0x9E46},
+       {0x7042, 0x9E47},
+       {0x7043, 0x9E48},
+       {0x7044, 0x9E49},
+       {0x7045, 0x9E4B},
+       {0x7046, 0x9E4C},
+       {0x7047, 0x9E4E},
+       {0x7048, 0x9E51},
+       {0x7049, 0x9E55},
+       {0x704A, 0x9E57},
+       {0x704B, 0x9E5A},
+       {0x704C, 0x9E5B},
+       {0x704D, 0x9E5C},
+       {0x704E, 0x9E5E},
+       {0x704F, 0x9E63},
+       {0x7050, 0x9E66},
+       {0x7051, 0x9E67},
+       {0x7052, 0x9E68},
+       {0x7053, 0x9E69},
+       {0x7054, 0x9E6A},
+       {0x7055, 0x9E6B},
+       {0x7056, 0x9E6C},
+       {0x7057, 0x9E71},
+       {0x7058, 0x9E6D},
+       {0x7059, 0x9E73},
+       {0x705A, 0x7592},
+       {0x705B, 0x7594},
+       {0x705C, 0x7596},
+       {0x705D, 0x75A0},
+       {0x705E, 0x759D},
+       {0x705F, 0x75AC},
+       {0x7060, 0x75A3},
+       {0x7061, 0x75B3},
+       {0x7062, 0x75B4},
+       {0x7063, 0x75B8},
+       {0x7064, 0x75C4},
+       {0x7065, 0x75B1},
+       {0x7066, 0x75B0},
+       {0x7067, 0x75C3},
+       {0x7068, 0x75C2},
+       {0x7069, 0x75D6},
+       {0x706A, 0x75CD},
+       {0x706B, 0x75E3},
+       {0x706C, 0x75E8},
+       {0x706D, 0x75E6},
+       {0x706E, 0x75E4},
+       {0x706F, 0x75EB},
+       {0x7070, 0x75E7},
+       {0x7071, 0x7603},
+       {0x7072, 0x75F1},
+       {0x7073, 0x75FC},
+       {0x7074, 0x75FF},
+       {0x7075, 0x7610},
+       {0x7076, 0x7600},
+       {0x7077, 0x7605},
+       {0x7078, 0x760C},
+       {0x7079, 0x7617},
+       {0x707A, 0x760A},
+       {0x707B, 0x7625},
+       {0x707C, 0x7618},
+       {0x707D, 0x7615},
+       {0x707E, 0x7619},
+       {0x7121, 0x761B},
+       {0x7122, 0x763C},
+       {0x7123, 0x7622},
+       {0x7124, 0x7620},
+       {0x7125, 0x7640},
+       {0x7126, 0x762D},
+       {0x7127, 0x7630},
+       {0x7128, 0x763F},
+       {0x7129, 0x7635},
+       {0x712A, 0x7643},
+       {0x712B, 0x763E},
+       {0x712C, 0x7633},
+       {0x712D, 0x764D},
+       {0x712E, 0x765E},
+       {0x712F, 0x7654},
+       {0x7130, 0x765C},
+       {0x7131, 0x7656},
+       {0x7132, 0x766B},
+       {0x7133, 0x766F},
+       {0x7134, 0x7FCA},
+       {0x7135, 0x7AE6},
+       {0x7136, 0x7A78},
+       {0x7137, 0x7A79},
+       {0x7138, 0x7A80},
+       {0x7139, 0x7A86},
+       {0x713A, 0x7A88},
+       {0x713B, 0x7A95},
+       {0x713C, 0x7AA6},
+       {0x713D, 0x7AA0},
+       {0x713E, 0x7AAC},
+       {0x713F, 0x7AA8},
+       {0x7140, 0x7AAD},
+       {0x7141, 0x7AB3},
+       {0x7142, 0x8864},
+       {0x7143, 0x8869},
+       {0x7144, 0x8872},
+       {0x7145, 0x887D},
+       {0x7146, 0x887F},
+       {0x7147, 0x8882},
+       {0x7148, 0x88A2},
+       {0x7149, 0x88C6},
+       {0x714A, 0x88B7},
+       {0x714B, 0x88BC},
+       {0x714C, 0x88C9},
+       {0x714D, 0x88E2},
+       {0x714E, 0x88CE},
+       {0x714F, 0x88E3},
+       {0x7150, 0x88E5},
+       {0x7151, 0x88F1},
+       {0x7152, 0x891A},
+       {0x7153, 0x88FC},
+       {0x7154, 0x88E8},
+       {0x7155, 0x88FE},
+       {0x7156, 0x88F0},
+       {0x7157, 0x8921},
+       {0x7158, 0x8919},
+       {0x7159, 0x8913},
+       {0x715A, 0x891B},
+       {0x715B, 0x890A},
+       {0x715C, 0x8934},
+       {0x715D, 0x892B},
+       {0x715E, 0x8936},
+       {0x715F, 0x8941},
+       {0x7160, 0x8966},
+       {0x7161, 0x897B},
+       {0x7162, 0x758B},
+       {0x7163, 0x80E5},
+       {0x7164, 0x76B2},
+       {0x7165, 0x76B4},
+       {0x7166, 0x77DC},
+       {0x7167, 0x8012},
+       {0x7168, 0x8014},
+       {0x7169, 0x8016},
+       {0x716A, 0x801C},
+       {0x716B, 0x8020},
+       {0x716C, 0x8022},
+       {0x716D, 0x8025},
+       {0x716E, 0x8026},
+       {0x716F, 0x8027},
+       {0x7170, 0x8029},
+       {0x7171, 0x8028},
+       {0x7172, 0x8031},
+       {0x7173, 0x800B},
+       {0x7174, 0x8035},
+       {0x7175, 0x8043},
+       {0x7176, 0x8046},
+       {0x7177, 0x804D},
+       {0x7178, 0x8052},
+       {0x7179, 0x8069},
+       {0x717A, 0x8071},
+       {0x717B, 0x8983},
+       {0x717C, 0x9878},
+       {0x717D, 0x9880},
+       {0x717E, 0x9883},
+       {0x7221, 0x9889},
+       {0x7222, 0x988C},
+       {0x7223, 0x988D},
+       {0x7224, 0x988F},
+       {0x7225, 0x9894},
+       {0x7226, 0x989A},
+       {0x7227, 0x989B},
+       {0x7228, 0x989E},
+       {0x7229, 0x989F},
+       {0x722A, 0x98A1},
+       {0x722B, 0x98A2},
+       {0x722C, 0x98A5},
+       {0x722D, 0x98A6},
+       {0x722E, 0x864D},
+       {0x722F, 0x8654},
+       {0x7230, 0x866C},
+       {0x7231, 0x866E},
+       {0x7232, 0x867F},
+       {0x7233, 0x867A},
+       {0x7234, 0x867C},
+       {0x7235, 0x867B},
+       {0x7236, 0x86A8},
+       {0x7237, 0x868D},
+       {0x7238, 0x868B},
+       {0x7239, 0x86AC},
+       {0x723A, 0x869D},
+       {0x723B, 0x86A7},
+       {0x723C, 0x86A3},
+       {0x723D, 0x86AA},
+       {0x723E, 0x8693},
+       {0x723F, 0x86A9},
+       {0x7240, 0x86B6},
+       {0x7241, 0x86C4},
+       {0x7242, 0x86B5},
+       {0x7243, 0x86CE},
+       {0x7244, 0x86B0},
+       {0x7245, 0x86BA},
+       {0x7246, 0x86B1},
+       {0x7247, 0x86AF},
+       {0x7248, 0x86C9},
+       {0x7249, 0x86CF},
+       {0x724A, 0x86B4},
+       {0x724B, 0x86E9},
+       {0x724C, 0x86F1},
+       {0x724D, 0x86F2},
+       {0x724E, 0x86ED},
+       {0x724F, 0x86F3},
+       {0x7250, 0x86D0},
+       {0x7251, 0x8713},
+       {0x7252, 0x86DE},
+       {0x7253, 0x86F4},
+       {0x7254, 0x86DF},
+       {0x7255, 0x86D8},
+       {0x7256, 0x86D1},
+       {0x7257, 0x8703},
+       {0x7258, 0x8707},
+       {0x7259, 0x86F8},
+       {0x725A, 0x8708},
+       {0x725B, 0x870A},
+       {0x725C, 0x870D},
+       {0x725D, 0x8709},
+       {0x725E, 0x8723},
+       {0x725F, 0x873B},
+       {0x7260, 0x871E},
+       {0x7261, 0x8725},
+       {0x7262, 0x872E},
+       {0x7263, 0x871A},
+       {0x7264, 0x873E},
+       {0x7265, 0x8748},
+       {0x7266, 0x8734},
+       {0x7267, 0x8731},
+       {0x7268, 0x8729},
+       {0x7269, 0x8737},
+       {0x726A, 0x873F},
+       {0x726B, 0x8782},
+       {0x726C, 0x8722},
+       {0x726D, 0x877D},
+       {0x726E, 0x877E},
+       {0x726F, 0x877B},
+       {0x7270, 0x8760},
+       {0x7271, 0x8770},
+       {0x7272, 0x874C},
+       {0x7273, 0x876E},
+       {0x7274, 0x878B},
+       {0x7275, 0x8753},
+       {0x7276, 0x8763},
+       {0x7277, 0x877C},
+       {0x7278, 0x8764},
+       {0x7279, 0x8759},
+       {0x727A, 0x8765},
+       {0x727B, 0x8793},
+       {0x727C, 0x87AF},
+       {0x727D, 0x87A8},
+       {0x727E, 0x87D2},
+       {0x7321, 0x87C6},
+       {0x7322, 0x8788},
+       {0x7323, 0x8785},
+       {0x7324, 0x87AD},
+       {0x7325, 0x8797},
+       {0x7326, 0x8783},
+       {0x7327, 0x87AB},
+       {0x7328, 0x87E5},
+       {0x7329, 0x87AC},
+       {0x732A, 0x87B5},
+       {0x732B, 0x87B3},
+       {0x732C, 0x87CB},
+       {0x732D, 0x87D3},
+       {0x732E, 0x87BD},
+       {0x732F, 0x87D1},
+       {0x7330, 0x87C0},
+       {0x7331, 0x87CA},
+       {0x7332, 0x87DB},
+       {0x7333, 0x87EA},
+       {0x7334, 0x87E0},
+       {0x7335, 0x87EE},
+       {0x7336, 0x8816},
+       {0x7337, 0x8813},
+       {0x7338, 0x87FE},
+       {0x7339, 0x880A},
+       {0x733A, 0x881B},
+       {0x733B, 0x8821},
+       {0x733C, 0x8839},
+       {0x733D, 0x883C},
+       {0x733E, 0x7F36},
+       {0x733F, 0x7F42},
+       {0x7340, 0x7F44},
+       {0x7341, 0x7F45},
+       {0x7342, 0x8210},
+       {0x7343, 0x7AFA},
+       {0x7344, 0x7AFD},
+       {0x7345, 0x7B08},
+       {0x7346, 0x7B03},
+       {0x7347, 0x7B04},
+       {0x7348, 0x7B15},
+       {0x7349, 0x7B0A},
+       {0x734A, 0x7B2B},
+       {0x734B, 0x7B0F},
+       {0x734C, 0x7B47},
+       {0x734D, 0x7B38},
+       {0x734E, 0x7B2A},
+       {0x734F, 0x7B19},
+       {0x7350, 0x7B2E},
+       {0x7351, 0x7B31},
+       {0x7352, 0x7B20},
+       {0x7353, 0x7B25},
+       {0x7354, 0x7B24},
+       {0x7355, 0x7B33},
+       {0x7356, 0x7B3E},
+       {0x7357, 0x7B1E},
+       {0x7358, 0x7B58},
+       {0x7359, 0x7B5A},
+       {0x735A, 0x7B45},
+       {0x735B, 0x7B75},
+       {0x735C, 0x7B4C},
+       {0x735D, 0x7B5D},
+       {0x735E, 0x7B60},
+       {0x735F, 0x7B6E},
+       {0x7360, 0x7B7B},
+       {0x7361, 0x7B62},
+       {0x7362, 0x7B72},
+       {0x7363, 0x7B71},
+       {0x7364, 0x7B90},
+       {0x7365, 0x7BA6},
+       {0x7366, 0x7BA7},
+       {0x7367, 0x7BB8},
+       {0x7368, 0x7BAC},
+       {0x7369, 0x7B9D},
+       {0x736A, 0x7BA8},
+       {0x736B, 0x7B85},
+       {0x736C, 0x7BAA},
+       {0x736D, 0x7B9C},
+       {0x736E, 0x7BA2},
+       {0x736F, 0x7BAB},
+       {0x7370, 0x7BB4},
+       {0x7371, 0x7BD1},
+       {0x7372, 0x7BC1},
+       {0x7373, 0x7BCC},
+       {0x7374, 0x7BDD},
+       {0x7375, 0x7BDA},
+       {0x7376, 0x7BE5},
+       {0x7377, 0x7BE6},
+       {0x7378, 0x7BEA},
+       {0x7379, 0x7C0C},
+       {0x737A, 0x7BFE},
+       {0x737B, 0x7BFC},
+       {0x737C, 0x7C0F},
+       {0x737D, 0x7C16},
+       {0x737E, 0x7C0B},
+       {0x7421, 0x7C1F},
+       {0x7422, 0x7C2A},
+       {0x7423, 0x7C26},
+       {0x7424, 0x7C38},
+       {0x7425, 0x7C41},
+       {0x7426, 0x7C40},
+       {0x7427, 0x81FE},
+       {0x7428, 0x8201},
+       {0x7429, 0x8202},
+       {0x742A, 0x8204},
+       {0x742B, 0x81EC},
+       {0x742C, 0x8844},
+       {0x742D, 0x8221},
+       {0x742E, 0x8222},
+       {0x742F, 0x8223},
+       {0x7430, 0x822D},
+       {0x7431, 0x822F},
+       {0x7432, 0x8228},
+       {0x7433, 0x822B},
+       {0x7434, 0x8238},
+       {0x7435, 0x823B},
+       {0x7436, 0x8233},
+       {0x7437, 0x8234},
+       {0x7438, 0x823E},
+       {0x7439, 0x8244},
+       {0x743A, 0x8249},
+       {0x743B, 0x824B},
+       {0x743C, 0x824F},
+       {0x743D, 0x825A},
+       {0x743E, 0x825F},
+       {0x743F, 0x8268},
+       {0x7440, 0x887E},
+       {0x7441, 0x8885},
+       {0x7442, 0x8888},
+       {0x7443, 0x88D8},
+       {0x7444, 0x88DF},
+       {0x7445, 0x895E},
+       {0x7446, 0x7F9D},
+       {0x7447, 0x7F9F},
+       {0x7448, 0x7FA7},
+       {0x7449, 0x7FAF},
+       {0x744A, 0x7FB0},
+       {0x744B, 0x7FB2},
+       {0x744C, 0x7C7C},
+       {0x744D, 0x6549},
+       {0x744E, 0x7C91},
+       {0x744F, 0x7C9D},
+       {0x7450, 0x7C9C},
+       {0x7451, 0x7C9E},
+       {0x7452, 0x7CA2},
+       {0x7453, 0x7CB2},
+       {0x7454, 0x7CBC},
+       {0x7455, 0x7CBD},
+       {0x7456, 0x7CC1},
+       {0x7457, 0x7CC7},
+       {0x7458, 0x7CCC},
+       {0x7459, 0x7CCD},
+       {0x745A, 0x7CC8},
+       {0x745B, 0x7CC5},
+       {0x745C, 0x7CD7},
+       {0x745D, 0x7CE8},
+       {0x745E, 0x826E},
+       {0x745F, 0x66A8},
+       {0x7460, 0x7FBF},
+       {0x7461, 0x7FCE},
+       {0x7462, 0x7FD5},
+       {0x7463, 0x7FE5},
+       {0x7464, 0x7FE1},
+       {0x7465, 0x7FE6},
+       {0x7466, 0x7FE9},
+       {0x7467, 0x7FEE},
+       {0x7468, 0x7FF3},
+       {0x7469, 0x7CF8},
+       {0x746A, 0x7D77},
+       {0x746B, 0x7DA6},
+       {0x746C, 0x7DAE},
+       {0x746D, 0x7E47},
+       {0x746E, 0x7E9B},
+       {0x746F, 0x9EB8},
+       {0x7470, 0x9EB4},
+       {0x7471, 0x8D73},
+       {0x7472, 0x8D84},
+       {0x7473, 0x8D94},
+       {0x7474, 0x8D91},
+       {0x7475, 0x8DB1},
+       {0x7476, 0x8D67},
+       {0x7477, 0x8D6D},
+       {0x7478, 0x8C47},
+       {0x7479, 0x8C49},
+       {0x747A, 0x914A},
+       {0x747B, 0x9150},
+       {0x747C, 0x914E},
+       {0x747D, 0x914F},
+       {0x747E, 0x9164},
+       {0x7521, 0x9162},
+       {0x7522, 0x9161},
+       {0x7523, 0x9170},
+       {0x7524, 0x9169},
+       {0x7525, 0x916F},
+       {0x7526, 0x917D},
+       {0x7527, 0x917E},
+       {0x7528, 0x9172},
+       {0x7529, 0x9174},
+       {0x752A, 0x9179},
+       {0x752B, 0x918C},
+       {0x752C, 0x9185},
+       {0x752D, 0x9190},
+       {0x752E, 0x918D},
+       {0x752F, 0x9191},
+       {0x7530, 0x91A2},
+       {0x7531, 0x91A3},
+       {0x7532, 0x91AA},
+       {0x7533, 0x91AD},
+       {0x7534, 0x91AE},
+       {0x7535, 0x91AF},
+       {0x7536, 0x91B5},
+       {0x7537, 0x91B4},
+       {0x7538, 0x91BA},
+       {0x7539, 0x8C55},
+       {0x753A, 0x9E7E},
+       {0x753B, 0x8DB8},
+       {0x753C, 0x8DEB},
+       {0x753D, 0x8E05},
+       {0x753E, 0x8E59},
+       {0x753F, 0x8E69},
+       {0x7540, 0x8DB5},
+       {0x7541, 0x8DBF},
+       {0x7542, 0x8DBC},
+       {0x7543, 0x8DBA},
+       {0x7544, 0x8DC4},
+       {0x7545, 0x8DD6},
+       {0x7546, 0x8DD7},
+       {0x7547, 0x8DDA},
+       {0x7548, 0x8DDE},
+       {0x7549, 0x8DCE},
+       {0x754A, 0x8DCF},
+       {0x754B, 0x8DDB},
+       {0x754C, 0x8DC6},
+       {0x754D, 0x8DEC},
+       {0x754E, 0x8DF7},
+       {0x754F, 0x8DF8},
+       {0x7550, 0x8DE3},
+       {0x7551, 0x8DF9},
+       {0x7552, 0x8DFB},
+       {0x7553, 0x8DE4},
+       {0x7554, 0x8E09},
+       {0x7555, 0x8DFD},
+       {0x7556, 0x8E14},
+       {0x7557, 0x8E1D},
+       {0x7558, 0x8E1F},
+       {0x7559, 0x8E2C},
+       {0x755A, 0x8E2E},
+       {0x755B, 0x8E23},
+       {0x755C, 0x8E2F},
+       {0x755D, 0x8E3A},
+       {0x755E, 0x8E40},
+       {0x755F, 0x8E39},
+       {0x7560, 0x8E35},
+       {0x7561, 0x8E3D},
+       {0x7562, 0x8E31},
+       {0x7563, 0x8E49},
+       {0x7564, 0x8E41},
+       {0x7565, 0x8E42},
+       {0x7566, 0x8E51},
+       {0x7567, 0x8E52},
+       {0x7568, 0x8E4A},
+       {0x7569, 0x8E70},
+       {0x756A, 0x8E76},
+       {0x756B, 0x8E7C},
+       {0x756C, 0x8E6F},
+       {0x756D, 0x8E74},
+       {0x756E, 0x8E85},
+       {0x756F, 0x8E8F},
+       {0x7570, 0x8E94},
+       {0x7571, 0x8E90},
+       {0x7572, 0x8E9C},
+       {0x7573, 0x8E9E},
+       {0x7574, 0x8C78},
+       {0x7575, 0x8C82},
+       {0x7576, 0x8C8A},
+       {0x7577, 0x8C85},
+       {0x7578, 0x8C98},
+       {0x7579, 0x8C94},
+       {0x757A, 0x659B},
+       {0x757B, 0x89D6},
+       {0x757C, 0x89DE},
+       {0x757D, 0x89DA},
+       {0x757E, 0x89DC},
+       {0x7621, 0x89E5},
+       {0x7622, 0x89EB},
+       {0x7623, 0x89EF},
+       {0x7624, 0x8A3E},
+       {0x7625, 0x8B26},
+       {0x7626, 0x9753},
+       {0x7627, 0x96E9},
+       {0x7628, 0x96F3},
+       {0x7629, 0x96EF},
+       {0x762A, 0x9706},
+       {0x762B, 0x9701},
+       {0x762C, 0x9708},
+       {0x762D, 0x970F},
+       {0x762E, 0x970E},
+       {0x762F, 0x972A},
+       {0x7630, 0x972D},
+       {0x7631, 0x9730},
+       {0x7632, 0x973E},
+       {0x7633, 0x9F80},
+       {0x7634, 0x9F83},
+       {0x7635, 0x9F85},
+       {0x7636, 0x9F86},
+       {0x7637, 0x9F87},
+       {0x7638, 0x9F88},
+       {0x7639, 0x9F89},
+       {0x763A, 0x9F8A},
+       {0x763B, 0x9F8C},
+       {0x763C, 0x9EFE},
+       {0x763D, 0x9F0B},
+       {0x763E, 0x9F0D},
+       {0x763F, 0x96B9},
+       {0x7640, 0x96BC},
+       {0x7641, 0x96BD},
+       {0x7642, 0x96CE},
+       {0x7643, 0x96D2},
+       {0x7644, 0x77BF},
+       {0x7645, 0x96E0},
+       {0x7646, 0x928E},
+       {0x7647, 0x92AE},
+       {0x7648, 0x92C8},
+       {0x7649, 0x933E},
+       {0x764A, 0x936A},
+       {0x764B, 0x93CA},
+       {0x764C, 0x938F},
+       {0x764D, 0x943E},
+       {0x764E, 0x946B},
+       {0x764F, 0x9C7F},
+       {0x7650, 0x9C82},
+       {0x7651, 0x9C85},
+       {0x7652, 0x9C86},
+       {0x7653, 0x9C87},
+       {0x7654, 0x9C88},
+       {0x7655, 0x7A23},
+       {0x7656, 0x9C8B},
+       {0x7657, 0x9C8E},
+       {0x7658, 0x9C90},
+       {0x7659, 0x9C91},
+       {0x765A, 0x9C92},
+       {0x765B, 0x9C94},
+       {0x765C, 0x9C95},
+       {0x765D, 0x9C9A},
+       {0x765E, 0x9C9B},
+       {0x765F, 0x9C9E},
+       {0x7660, 0x9C9F},
+       {0x7661, 0x9CA0},
+       {0x7662, 0x9CA1},
+       {0x7663, 0x9CA2},
+       {0x7664, 0x9CA3},
+       {0x7665, 0x9CA5},
+       {0x7666, 0x9CA6},
+       {0x7667, 0x9CA7},
+       {0x7668, 0x9CA8},
+       {0x7669, 0x9CA9},
+       {0x766A, 0x9CAB},
+       {0x766B, 0x9CAD},
+       {0x766C, 0x9CAE},
+       {0x766D, 0x9CB0},
+       {0x766E, 0x9CB1},
+       {0x766F, 0x9CB2},
+       {0x7670, 0x9CB3},
+       {0x7671, 0x9CB4},
+       {0x7672, 0x9CB5},
+       {0x7673, 0x9CB6},
+       {0x7674, 0x9CB7},
+       {0x7675, 0x9CBA},
+       {0x7676, 0x9CBB},
+       {0x7677, 0x9CBC},
+       {0x7678, 0x9CBD},
+       {0x7679, 0x9CC4},
+       {0x767A, 0x9CC5},
+       {0x767B, 0x9CC6},
+       {0x767C, 0x9CC7},
+       {0x767D, 0x9CCA},
+       {0x767E, 0x9CCB},
+       {0x7721, 0x9CCC},
+       {0x7722, 0x9CCD},
+       {0x7723, 0x9CCE},
+       {0x7724, 0x9CCF},
+       {0x7725, 0x9CD0},
+       {0x7726, 0x9CD3},
+       {0x7727, 0x9CD4},
+       {0x7728, 0x9CD5},
+       {0x7729, 0x9CD7},
+       {0x772A, 0x9CD8},
+       {0x772B, 0x9CD9},
+       {0x772C, 0x9CDC},
+       {0x772D, 0x9CDD},
+       {0x772E, 0x9CDF},
+       {0x772F, 0x9CE2},
+       {0x7730, 0x977C},
+       {0x7731, 0x9785},
+       {0x7732, 0x9791},
+       {0x7733, 0x9792},
+       {0x7734, 0x9794},
+       {0x7735, 0x97AF},
+       {0x7736, 0x97AB},
+       {0x7737, 0x97A3},
+       {0x7738, 0x97B2},
+       {0x7739, 0x97B4},
+       {0x773A, 0x9AB1},
+       {0x773B, 0x9AB0},
+       {0x773C, 0x9AB7},
+       {0x773D, 0x9E58},
+       {0x773E, 0x9AB6},
+       {0x773F, 0x9ABA},
+       {0x7740, 0x9ABC},
+       {0x7741, 0x9AC1},
+       {0x7742, 0x9AC0},
+       {0x7743, 0x9AC5},
+       {0x7744, 0x9AC2},
+       {0x7745, 0x9ACB},
+       {0x7746, 0x9ACC},
+       {0x7747, 0x9AD1},
+       {0x7748, 0x9B45},
+       {0x7749, 0x9B43},
+       {0x774A, 0x9B47},
+       {0x774B, 0x9B49},
+       {0x774C, 0x9B48},
+       {0x774D, 0x9B4D},
+       {0x774E, 0x9B51},
+       {0x774F, 0x98E8},
+       {0x7750, 0x990D},
+       {0x7751, 0x992E},
+       {0x7752, 0x9955},
+       {0x7753, 0x9954},
+       {0x7754, 0x9ADF},
+       {0x7755, 0x9AE1},
+       {0x7756, 0x9AE6},
+       {0x7757, 0x9AEF},
+       {0x7758, 0x9AEB},
+       {0x7759, 0x9AFB},
+       {0x775A, 0x9AED},
+       {0x775B, 0x9AF9},
+       {0x775C, 0x9B08},
+       {0x775D, 0x9B0F},
+       {0x775E, 0x9B13},
+       {0x775F, 0x9B1F},
+       {0x7760, 0x9B23},
+       {0x7761, 0x9EBD},
+       {0x7762, 0x9EBE},
+       {0x7763, 0x7E3B},
+       {0x7764, 0x9E82},
+       {0x7765, 0x9E87},
+       {0x7766, 0x9E88},
+       {0x7767, 0x9E8B},
+       {0x7768, 0x9E92},
+       {0x7769, 0x93D6},
+       {0x776A, 0x9E9D},
+       {0x776B, 0x9E9F},
+       {0x776C, 0x9EDB},
+       {0x776D, 0x9EDC},
+       {0x776E, 0x9EDD},
+       {0x776F, 0x9EE0},
+       {0x7770, 0x9EDF},
+       {0x7771, 0x9EE2},
+       {0x7772, 0x9EE9},
+       {0x7773, 0x9EE7},
+       {0x7774, 0x9EE5},
+       {0x7775, 0x9EEA},
+       {0x7776, 0x9EEF},
+       {0x7777, 0x9F22},
+       {0x7778, 0x9F2C},
+       {0x7779, 0x9F2F},
+       {0x777A, 0x9F39},
+       {0x777B, 0x9F37},
+       {0x777C, 0x9F3D},
+       {0x777D, 0x9F3E},
+       {0x777E, 0x9F44},
diff --git a/vte/src/unitable.JIS0201 b/vte/src/unitable.JIS0201
new file mode 100644
index 0000000..48c9b3a
--- /dev/null
+++ b/vte/src/unitable.JIS0201
@@ -0,0 +1,66 @@
+       /* generated file -- do not edit */
+       {0x5C, 0x00A5},
+       {0x7E, 0x203E},
+       {0xA1, 0xFF61},
+       {0xA2, 0xFF62},
+       {0xA3, 0xFF63},
+       {0xA4, 0xFF64},
+       {0xA5, 0xFF65},
+       {0xA6, 0xFF66},
+       {0xA7, 0xFF67},
+       {0xA8, 0xFF68},
+       {0xA9, 0xFF69},
+       {0xAA, 0xFF6A},
+       {0xAB, 0xFF6B},
+       {0xAC, 0xFF6C},
+       {0xAD, 0xFF6D},
+       {0xAE, 0xFF6E},
+       {0xAF, 0xFF6F},
+       {0xB0, 0xFF70},
+       {0xB1, 0xFF71},
+       {0xB2, 0xFF72},
+       {0xB3, 0xFF73},
+       {0xB4, 0xFF74},
+       {0xB5, 0xFF75},
+       {0xB6, 0xFF76},
+       {0xB7, 0xFF77},
+       {0xB8, 0xFF78},
+       {0xB9, 0xFF79},
+       {0xBA, 0xFF7A},
+       {0xBB, 0xFF7B},
+       {0xBC, 0xFF7C},
+       {0xBD, 0xFF7D},
+       {0xBE, 0xFF7E},
+       {0xBF, 0xFF7F},
+       {0xC0, 0xFF80},
+       {0xC1, 0xFF81},
+       {0xC2, 0xFF82},
+       {0xC3, 0xFF83},
+       {0xC4, 0xFF84},
+       {0xC5, 0xFF85},
+       {0xC6, 0xFF86},
+       {0xC7, 0xFF87},
+       {0xC8, 0xFF88},
+       {0xC9, 0xFF89},
+       {0xCA, 0xFF8A},
+       {0xCB, 0xFF8B},
+       {0xCC, 0xFF8C},
+       {0xCD, 0xFF8D},
+       {0xCE, 0xFF8E},
+       {0xCF, 0xFF8F},
+       {0xD0, 0xFF90},
+       {0xD1, 0xFF91},
+       {0xD2, 0xFF92},
+       {0xD3, 0xFF93},
+       {0xD4, 0xFF94},
+       {0xD5, 0xFF95},
+       {0xD6, 0xFF96},
+       {0xD7, 0xFF97},
+       {0xD8, 0xFF98},
+       {0xD9, 0xFF99},
+       {0xDA, 0xFF9A},
+       {0xDB, 0xFF9B},
+       {0xDC, 0xFF9C},
+       {0xDD, 0xFF9D},
+       {0xDE, 0xFF9E},
+       {0xDF, 0xFF9F},
diff --git a/vte/src/unitable.JIS0208 b/vte/src/unitable.JIS0208
new file mode 100644
index 0000000..80dbdd0
--- /dev/null
+++ b/vte/src/unitable.JIS0208
@@ -0,0 +1,6879 @@
+       /* generated file -- do not edit */
+       {0x2121, 0x3000},
+       {0x2122, 0x3001},
+       {0x2123, 0x3002},
+       {0x2124, 0xFF0C},
+       {0x2125, 0xFF0E},
+       {0x2126, 0x30FB},
+       {0x2127, 0xFF1A},
+       {0x2128, 0xFF1B},
+       {0x2129, 0xFF1F},
+       {0x212A, 0xFF01},
+       {0x212B, 0x309B},
+       {0x212C, 0x309C},
+       {0x212D, 0x00B4},
+       {0x212E, 0xFF40},
+       {0x212F, 0x00A8},
+       {0x2130, 0xFF3E},
+       {0x2131, 0xFFE3},
+       {0x2132, 0xFF3F},
+       {0x2133, 0x30FD},
+       {0x2134, 0x30FE},
+       {0x2135, 0x309D},
+       {0x2136, 0x309E},
+       {0x2137, 0x3003},
+       {0x2138, 0x4EDD},
+       {0x2139, 0x3005},
+       {0x213A, 0x3006},
+       {0x213B, 0x3007},
+       {0x213C, 0x30FC},
+       {0x213D, 0x2015},
+       {0x213E, 0x2010},
+       {0x213F, 0xFF0F},
+       {0x2140, 0x005C},
+       {0x2141, 0x301C},
+       {0x2142, 0x2016},
+       {0x2143, 0xFF5C},
+       {0x2144, 0x2026},
+       {0x2145, 0x2025},
+       {0x2146, 0x2018},
+       {0x2147, 0x2019},
+       {0x2148, 0x201C},
+       {0x2149, 0x201D},
+       {0x214A, 0xFF08},
+       {0x214B, 0xFF09},
+       {0x214C, 0x3014},
+       {0x214D, 0x3015},
+       {0x214E, 0xFF3B},
+       {0x214F, 0xFF3D},
+       {0x2150, 0xFF5B},
+       {0x2151, 0xFF5D},
+       {0x2152, 0x3008},
+       {0x2153, 0x3009},
+       {0x2154, 0x300A},
+       {0x2155, 0x300B},
+       {0x2156, 0x300C},
+       {0x2157, 0x300D},
+       {0x2158, 0x300E},
+       {0x2159, 0x300F},
+       {0x215A, 0x3010},
+       {0x215B, 0x3011},
+       {0x215C, 0xFF0B},
+       {0x215D, 0x2212},
+       {0x215E, 0x00B1},
+       {0x215F, 0x00D7},
+       {0x2160, 0x00F7},
+       {0x2161, 0xFF1D},
+       {0x2162, 0x2260},
+       {0x2163, 0xFF1C},
+       {0x2164, 0xFF1E},
+       {0x2165, 0x2266},
+       {0x2166, 0x2267},
+       {0x2167, 0x221E},
+       {0x2168, 0x2234},
+       {0x2169, 0x2642},
+       {0x216A, 0x2640},
+       {0x216B, 0x00B0},
+       {0x216C, 0x2032},
+       {0x216D, 0x2033},
+       {0x216E, 0x2103},
+       {0x216F, 0xFFE5},
+       {0x2170, 0xFF04},
+       {0x2171, 0x00A2},
+       {0x2172, 0x00A3},
+       {0x2173, 0xFF05},
+       {0x2174, 0xFF03},
+       {0x2175, 0xFF06},
+       {0x2176, 0xFF0A},
+       {0x2177, 0xFF20},
+       {0x2178, 0x00A7},
+       {0x2179, 0x2606},
+       {0x217A, 0x2605},
+       {0x217B, 0x25CB},
+       {0x217C, 0x25CF},
+       {0x217D, 0x25CE},
+       {0x217E, 0x25C7},
+       {0x2221, 0x25C6},
+       {0x2222, 0x25A1},
+       {0x2223, 0x25A0},
+       {0x2224, 0x25B3},
+       {0x2225, 0x25B2},
+       {0x2226, 0x25BD},
+       {0x2227, 0x25BC},
+       {0x2228, 0x203B},
+       {0x2229, 0x3012},
+       {0x222A, 0x2192},
+       {0x222B, 0x2190},
+       {0x222C, 0x2191},
+       {0x222D, 0x2193},
+       {0x222E, 0x3013},
+       {0x223A, 0x2208},
+       {0x223B, 0x220B},
+       {0x223C, 0x2286},
+       {0x223D, 0x2287},
+       {0x223E, 0x2282},
+       {0x223F, 0x2283},
+       {0x2240, 0x222A},
+       {0x2241, 0x2229},
+       {0x224A, 0x2227},
+       {0x224B, 0x2228},
+       {0x224C, 0x00AC},
+       {0x224D, 0x21D2},
+       {0x224E, 0x21D4},
+       {0x224F, 0x2200},
+       {0x2250, 0x2203},
+       {0x225C, 0x2220},
+       {0x225D, 0x22A5},
+       {0x225E, 0x2312},
+       {0x225F, 0x2202},
+       {0x2260, 0x2207},
+       {0x2262, 0x2252},
+       {0x2263, 0x226A},
+       {0x2264, 0x226B},
+       {0x2265, 0x221A},
+       {0x2266, 0x223D},
+       {0x2267, 0x221D},
+       {0x2268, 0x2235},
+       {0x2269, 0x222B},
+       {0x226A, 0x222C},
+       {0x2272, 0x212B},
+       {0x2273, 0x2030},
+       {0x2274, 0x266F},
+       {0x2275, 0x266D},
+       {0x2276, 0x266A},
+       {0x2277, 0x2020},
+       {0x2278, 0x2021},
+       {0x2279, 0x00B6},
+       {0x227E, 0x25EF},
+       {0x2330, 0xFF10},
+       {0x2331, 0xFF11},
+       {0x2332, 0xFF12},
+       {0x2333, 0xFF13},
+       {0x2334, 0xFF14},
+       {0x2335, 0xFF15},
+       {0x2336, 0xFF16},
+       {0x2337, 0xFF17},
+       {0x2338, 0xFF18},
+       {0x2339, 0xFF19},
+       {0x2341, 0xFF21},
+       {0x2342, 0xFF22},
+       {0x2343, 0xFF23},
+       {0x2344, 0xFF24},
+       {0x2345, 0xFF25},
+       {0x2346, 0xFF26},
+       {0x2347, 0xFF27},
+       {0x2348, 0xFF28},
+       {0x2349, 0xFF29},
+       {0x234A, 0xFF2A},
+       {0x234B, 0xFF2B},
+       {0x234C, 0xFF2C},
+       {0x234D, 0xFF2D},
+       {0x234E, 0xFF2E},
+       {0x234F, 0xFF2F},
+       {0x2350, 0xFF30},
+       {0x2351, 0xFF31},
+       {0x2352, 0xFF32},
+       {0x2353, 0xFF33},
+       {0x2354, 0xFF34},
+       {0x2355, 0xFF35},
+       {0x2356, 0xFF36},
+       {0x2357, 0xFF37},
+       {0x2358, 0xFF38},
+       {0x2359, 0xFF39},
+       {0x235A, 0xFF3A},
+       {0x2361, 0xFF41},
+       {0x2362, 0xFF42},
+       {0x2363, 0xFF43},
+       {0x2364, 0xFF44},
+       {0x2365, 0xFF45},
+       {0x2366, 0xFF46},
+       {0x2367, 0xFF47},
+       {0x2368, 0xFF48},
+       {0x2369, 0xFF49},
+       {0x236A, 0xFF4A},
+       {0x236B, 0xFF4B},
+       {0x236C, 0xFF4C},
+       {0x236D, 0xFF4D},
+       {0x236E, 0xFF4E},
+       {0x236F, 0xFF4F},
+       {0x2370, 0xFF50},
+       {0x2371, 0xFF51},
+       {0x2372, 0xFF52},
+       {0x2373, 0xFF53},
+       {0x2374, 0xFF54},
+       {0x2375, 0xFF55},
+       {0x2376, 0xFF56},
+       {0x2377, 0xFF57},
+       {0x2378, 0xFF58},
+       {0x2379, 0xFF59},
+       {0x237A, 0xFF5A},
+       {0x2421, 0x3041},
+       {0x2422, 0x3042},
+       {0x2423, 0x3043},
+       {0x2424, 0x3044},
+       {0x2425, 0x3045},
+       {0x2426, 0x3046},
+       {0x2427, 0x3047},
+       {0x2428, 0x3048},
+       {0x2429, 0x3049},
+       {0x242A, 0x304A},
+       {0x242B, 0x304B},
+       {0x242C, 0x304C},
+       {0x242D, 0x304D},
+       {0x242E, 0x304E},
+       {0x242F, 0x304F},
+       {0x2430, 0x3050},
+       {0x2431, 0x3051},
+       {0x2432, 0x3052},
+       {0x2433, 0x3053},
+       {0x2434, 0x3054},
+       {0x2435, 0x3055},
+       {0x2436, 0x3056},
+       {0x2437, 0x3057},
+       {0x2438, 0x3058},
+       {0x2439, 0x3059},
+       {0x243A, 0x305A},
+       {0x243B, 0x305B},
+       {0x243C, 0x305C},
+       {0x243D, 0x305D},
+       {0x243E, 0x305E},
+       {0x243F, 0x305F},
+       {0x2440, 0x3060},
+       {0x2441, 0x3061},
+       {0x2442, 0x3062},
+       {0x2443, 0x3063},
+       {0x2444, 0x3064},
+       {0x2445, 0x3065},
+       {0x2446, 0x3066},
+       {0x2447, 0x3067},
+       {0x2448, 0x3068},
+       {0x2449, 0x3069},
+       {0x244A, 0x306A},
+       {0x244B, 0x306B},
+       {0x244C, 0x306C},
+       {0x244D, 0x306D},
+       {0x244E, 0x306E},
+       {0x244F, 0x306F},
+       {0x2450, 0x3070},
+       {0x2451, 0x3071},
+       {0x2452, 0x3072},
+       {0x2453, 0x3073},
+       {0x2454, 0x3074},
+       {0x2455, 0x3075},
+       {0x2456, 0x3076},
+       {0x2457, 0x3077},
+       {0x2458, 0x3078},
+       {0x2459, 0x3079},
+       {0x245A, 0x307A},
+       {0x245B, 0x307B},
+       {0x245C, 0x307C},
+       {0x245D, 0x307D},
+       {0x245E, 0x307E},
+       {0x245F, 0x307F},
+       {0x2460, 0x3080},
+       {0x2461, 0x3081},
+       {0x2462, 0x3082},
+       {0x2463, 0x3083},
+       {0x2464, 0x3084},
+       {0x2465, 0x3085},
+       {0x2466, 0x3086},
+       {0x2467, 0x3087},
+       {0x2468, 0x3088},
+       {0x2469, 0x3089},
+       {0x246A, 0x308A},
+       {0x246B, 0x308B},
+       {0x246C, 0x308C},
+       {0x246D, 0x308D},
+       {0x246E, 0x308E},
+       {0x246F, 0x308F},
+       {0x2470, 0x3090},
+       {0x2471, 0x3091},
+       {0x2472, 0x3092},
+       {0x2473, 0x3093},
+       {0x2521, 0x30A1},
+       {0x2522, 0x30A2},
+       {0x2523, 0x30A3},
+       {0x2524, 0x30A4},
+       {0x2525, 0x30A5},
+       {0x2526, 0x30A6},
+       {0x2527, 0x30A7},
+       {0x2528, 0x30A8},
+       {0x2529, 0x30A9},
+       {0x252A, 0x30AA},
+       {0x252B, 0x30AB},
+       {0x252C, 0x30AC},
+       {0x252D, 0x30AD},
+       {0x252E, 0x30AE},
+       {0x252F, 0x30AF},
+       {0x2530, 0x30B0},
+       {0x2531, 0x30B1},
+       {0x2532, 0x30B2},
+       {0x2533, 0x30B3},
+       {0x2534, 0x30B4},
+       {0x2535, 0x30B5},
+       {0x2536, 0x30B6},
+       {0x2537, 0x30B7},
+       {0x2538, 0x30B8},
+       {0x2539, 0x30B9},
+       {0x253A, 0x30BA},
+       {0x253B, 0x30BB},
+       {0x253C, 0x30BC},
+       {0x253D, 0x30BD},
+       {0x253E, 0x30BE},
+       {0x253F, 0x30BF},
+       {0x2540, 0x30C0},
+       {0x2541, 0x30C1},
+       {0x2542, 0x30C2},
+       {0x2543, 0x30C3},
+       {0x2544, 0x30C4},
+       {0x2545, 0x30C5},
+       {0x2546, 0x30C6},
+       {0x2547, 0x30C7},
+       {0x2548, 0x30C8},
+       {0x2549, 0x30C9},
+       {0x254A, 0x30CA},
+       {0x254B, 0x30CB},
+       {0x254C, 0x30CC},
+       {0x254D, 0x30CD},
+       {0x254E, 0x30CE},
+       {0x254F, 0x30CF},
+       {0x2550, 0x30D0},
+       {0x2551, 0x30D1},
+       {0x2552, 0x30D2},
+       {0x2553, 0x30D3},
+       {0x2554, 0x30D4},
+       {0x2555, 0x30D5},
+       {0x2556, 0x30D6},
+       {0x2557, 0x30D7},
+       {0x2558, 0x30D8},
+       {0x2559, 0x30D9},
+       {0x255A, 0x30DA},
+       {0x255B, 0x30DB},
+       {0x255C, 0x30DC},
+       {0x255D, 0x30DD},
+       {0x255E, 0x30DE},
+       {0x255F, 0x30DF},
+       {0x2560, 0x30E0},
+       {0x2561, 0x30E1},
+       {0x2562, 0x30E2},
+       {0x2563, 0x30E3},
+       {0x2564, 0x30E4},
+       {0x2565, 0x30E5},
+       {0x2566, 0x30E6},
+       {0x2567, 0x30E7},
+       {0x2568, 0x30E8},
+       {0x2569, 0x30E9},
+       {0x256A, 0x30EA},
+       {0x256B, 0x30EB},
+       {0x256C, 0x30EC},
+       {0x256D, 0x30ED},
+       {0x256E, 0x30EE},
+       {0x256F, 0x30EF},
+       {0x2570, 0x30F0},
+       {0x2571, 0x30F1},
+       {0x2572, 0x30F2},
+       {0x2573, 0x30F3},
+       {0x2574, 0x30F4},
+       {0x2575, 0x30F5},
+       {0x2576, 0x30F6},
+       {0x2621, 0x0391},
+       {0x2622, 0x0392},
+       {0x2623, 0x0393},
+       {0x2624, 0x0394},
+       {0x2625, 0x0395},
+       {0x2626, 0x0396},
+       {0x2627, 0x0397},
+       {0x2628, 0x0398},
+       {0x2629, 0x0399},
+       {0x262A, 0x039A},
+       {0x262B, 0x039B},
+       {0x262C, 0x039C},
+       {0x262D, 0x039D},
+       {0x262E, 0x039E},
+       {0x262F, 0x039F},
+       {0x2630, 0x03A0},
+       {0x2631, 0x03A1},
+       {0x2632, 0x03A3},
+       {0x2633, 0x03A4},
+       {0x2634, 0x03A5},
+       {0x2635, 0x03A6},
+       {0x2636, 0x03A7},
+       {0x2637, 0x03A8},
+       {0x2638, 0x03A9},
+       {0x2641, 0x03B1},
+       {0x2642, 0x03B2},
+       {0x2643, 0x03B3},
+       {0x2644, 0x03B4},
+       {0x2645, 0x03B5},
+       {0x2646, 0x03B6},
+       {0x2647, 0x03B7},
+       {0x2648, 0x03B8},
+       {0x2649, 0x03B9},
+       {0x264A, 0x03BA},
+       {0x264B, 0x03BB},
+       {0x264C, 0x03BC},
+       {0x264D, 0x03BD},
+       {0x264E, 0x03BE},
+       {0x264F, 0x03BF},
+       {0x2650, 0x03C0},
+       {0x2651, 0x03C1},
+       {0x2652, 0x03C3},
+       {0x2653, 0x03C4},
+       {0x2654, 0x03C5},
+       {0x2655, 0x03C6},
+       {0x2656, 0x03C7},
+       {0x2657, 0x03C8},
+       {0x2658, 0x03C9},
+       {0x2721, 0x0410},
+       {0x2722, 0x0411},
+       {0x2723, 0x0412},
+       {0x2724, 0x0413},
+       {0x2725, 0x0414},
+       {0x2726, 0x0415},
+       {0x2727, 0x0401},
+       {0x2728, 0x0416},
+       {0x2729, 0x0417},
+       {0x272A, 0x0418},
+       {0x272B, 0x0419},
+       {0x272C, 0x041A},
+       {0x272D, 0x041B},
+       {0x272E, 0x041C},
+       {0x272F, 0x041D},
+       {0x2730, 0x041E},
+       {0x2731, 0x041F},
+       {0x2732, 0x0420},
+       {0x2733, 0x0421},
+       {0x2734, 0x0422},
+       {0x2735, 0x0423},
+       {0x2736, 0x0424},
+       {0x2737, 0x0425},
+       {0x2738, 0x0426},
+       {0x2739, 0x0427},
+       {0x273A, 0x0428},
+       {0x273B, 0x0429},
+       {0x273C, 0x042A},
+       {0x273D, 0x042B},
+       {0x273E, 0x042C},
+       {0x273F, 0x042D},
+       {0x2740, 0x042E},
+       {0x2741, 0x042F},
+       {0x2751, 0x0430},
+       {0x2752, 0x0431},
+       {0x2753, 0x0432},
+       {0x2754, 0x0433},
+       {0x2755, 0x0434},
+       {0x2756, 0x0435},
+       {0x2757, 0x0451},
+       {0x2758, 0x0436},
+       {0x2759, 0x0437},
+       {0x275A, 0x0438},
+       {0x275B, 0x0439},
+       {0x275C, 0x043A},
+       {0x275D, 0x043B},
+       {0x275E, 0x043C},
+       {0x275F, 0x043D},
+       {0x2760, 0x043E},
+       {0x2761, 0x043F},
+       {0x2762, 0x0440},
+       {0x2763, 0x0441},
+       {0x2764, 0x0442},
+       {0x2765, 0x0443},
+       {0x2766, 0x0444},
+       {0x2767, 0x0445},
+       {0x2768, 0x0446},
+       {0x2769, 0x0447},
+       {0x276A, 0x0448},
+       {0x276B, 0x0449},
+       {0x276C, 0x044A},
+       {0x276D, 0x044B},
+       {0x276E, 0x044C},
+       {0x276F, 0x044D},
+       {0x2770, 0x044E},
+       {0x2771, 0x044F},
+       {0x2821, 0x2500},
+       {0x2822, 0x2502},
+       {0x2823, 0x250C},
+       {0x2824, 0x2510},
+       {0x2825, 0x2518},
+       {0x2826, 0x2514},
+       {0x2827, 0x251C},
+       {0x2828, 0x252C},
+       {0x2829, 0x2524},
+       {0x282A, 0x2534},
+       {0x282B, 0x253C},
+       {0x282C, 0x2501},
+       {0x282D, 0x2503},
+       {0x282E, 0x250F},
+       {0x282F, 0x2513},
+       {0x2830, 0x251B},
+       {0x2831, 0x2517},
+       {0x2832, 0x2523},
+       {0x2833, 0x2533},
+       {0x2834, 0x252B},
+       {0x2835, 0x253B},
+       {0x2836, 0x254B},
+       {0x2837, 0x2520},
+       {0x2838, 0x252F},
+       {0x2839, 0x2528},
+       {0x283A, 0x2537},
+       {0x283B, 0x253F},
+       {0x283C, 0x251D},
+       {0x283D, 0x2530},
+       {0x283E, 0x2525},
+       {0x283F, 0x2538},
+       {0x2840, 0x2542},
+       {0x3021, 0x4E9C},
+       {0x3022, 0x5516},
+       {0x3023, 0x5A03},
+       {0x3024, 0x963F},
+       {0x3025, 0x54C0},
+       {0x3026, 0x611B},
+       {0x3027, 0x6328},
+       {0x3028, 0x59F6},
+       {0x3029, 0x9022},
+       {0x302A, 0x8475},
+       {0x302B, 0x831C},
+       {0x302C, 0x7A50},
+       {0x302D, 0x60AA},
+       {0x302E, 0x63E1},
+       {0x302F, 0x6E25},
+       {0x3030, 0x65ED},
+       {0x3031, 0x8466},
+       {0x3032, 0x82A6},
+       {0x3033, 0x9BF5},
+       {0x3034, 0x6893},
+       {0x3035, 0x5727},
+       {0x3036, 0x65A1},
+       {0x3037, 0x6271},
+       {0x3038, 0x5B9B},
+       {0x3039, 0x59D0},
+       {0x303A, 0x867B},
+       {0x303B, 0x98F4},
+       {0x303C, 0x7D62},
+       {0x303D, 0x7DBE},
+       {0x303E, 0x9B8E},
+       {0x303F, 0x6216},
+       {0x3040, 0x7C9F},
+       {0x3041, 0x88B7},
+       {0x3042, 0x5B89},
+       {0x3043, 0x5EB5},
+       {0x3044, 0x6309},
+       {0x3045, 0x6697},
+       {0x3046, 0x6848},
+       {0x3047, 0x95C7},
+       {0x3048, 0x978D},
+       {0x3049, 0x674F},
+       {0x304A, 0x4EE5},
+       {0x304B, 0x4F0A},
+       {0x304C, 0x4F4D},
+       {0x304D, 0x4F9D},
+       {0x304E, 0x5049},
+       {0x304F, 0x56F2},
+       {0x3050, 0x5937},
+       {0x3051, 0x59D4},
+       {0x3052, 0x5A01},
+       {0x3053, 0x5C09},
+       {0x3054, 0x60DF},
+       {0x3055, 0x610F},
+       {0x3056, 0x6170},
+       {0x3057, 0x6613},
+       {0x3058, 0x6905},
+       {0x3059, 0x70BA},
+       {0x305A, 0x754F},
+       {0x305B, 0x7570},
+       {0x305C, 0x79FB},
+       {0x305D, 0x7DAD},
+       {0x305E, 0x7DEF},
+       {0x305F, 0x80C3},
+       {0x3060, 0x840E},
+       {0x3061, 0x8863},
+       {0x3062, 0x8B02},
+       {0x3063, 0x9055},
+       {0x3064, 0x907A},
+       {0x3065, 0x533B},
+       {0x3066, 0x4E95},
+       {0x3067, 0x4EA5},
+       {0x3068, 0x57DF},
+       {0x3069, 0x80B2},
+       {0x306A, 0x90C1},
+       {0x306B, 0x78EF},
+       {0x306C, 0x4E00},
+       {0x306D, 0x58F1},
+       {0x306E, 0x6EA2},
+       {0x306F, 0x9038},
+       {0x3070, 0x7A32},
+       {0x3071, 0x8328},
+       {0x3072, 0x828B},
+       {0x3073, 0x9C2F},
+       {0x3074, 0x5141},
+       {0x3075, 0x5370},
+       {0x3076, 0x54BD},
+       {0x3077, 0x54E1},
+       {0x3078, 0x56E0},
+       {0x3079, 0x59FB},
+       {0x307A, 0x5F15},
+       {0x307B, 0x98F2},
+       {0x307C, 0x6DEB},
+       {0x307D, 0x80E4},
+       {0x307E, 0x852D},
+       {0x3121, 0x9662},
+       {0x3122, 0x9670},
+       {0x3123, 0x96A0},
+       {0x3124, 0x97FB},
+       {0x3125, 0x540B},
+       {0x3126, 0x53F3},
+       {0x3127, 0x5B87},
+       {0x3128, 0x70CF},
+       {0x3129, 0x7FBD},
+       {0x312A, 0x8FC2},
+       {0x312B, 0x96E8},
+       {0x312C, 0x536F},
+       {0x312D, 0x9D5C},
+       {0x312E, 0x7ABA},
+       {0x312F, 0x4E11},
+       {0x3130, 0x7893},
+       {0x3131, 0x81FC},
+       {0x3132, 0x6E26},
+       {0x3133, 0x5618},
+       {0x3134, 0x5504},
+       {0x3135, 0x6B1D},
+       {0x3136, 0x851A},
+       {0x3137, 0x9C3B},
+       {0x3138, 0x59E5},
+       {0x3139, 0x53A9},
+       {0x313A, 0x6D66},
+       {0x313B, 0x74DC},
+       {0x313C, 0x958F},
+       {0x313D, 0x5642},
+       {0x313E, 0x4E91},
+       {0x313F, 0x904B},
+       {0x3140, 0x96F2},
+       {0x3141, 0x834F},
+       {0x3142, 0x990C},
+       {0x3143, 0x53E1},
+       {0x3144, 0x55B6},
+       {0x3145, 0x5B30},
+       {0x3146, 0x5F71},
+       {0x3147, 0x6620},
+       {0x3148, 0x66F3},
+       {0x3149, 0x6804},
+       {0x314A, 0x6C38},
+       {0x314B, 0x6CF3},
+       {0x314C, 0x6D29},
+       {0x314D, 0x745B},
+       {0x314E, 0x76C8},
+       {0x314F, 0x7A4E},
+       {0x3150, 0x9834},
+       {0x3151, 0x82F1},
+       {0x3152, 0x885B},
+       {0x3153, 0x8A60},
+       {0x3154, 0x92ED},
+       {0x3155, 0x6DB2},
+       {0x3156, 0x75AB},
+       {0x3157, 0x76CA},
+       {0x3158, 0x99C5},
+       {0x3159, 0x60A6},
+       {0x315A, 0x8B01},
+       {0x315B, 0x8D8A},
+       {0x315C, 0x95B2},
+       {0x315D, 0x698E},
+       {0x315E, 0x53AD},
+       {0x315F, 0x5186},
+       {0x3160, 0x5712},
+       {0x3161, 0x5830},
+       {0x3162, 0x5944},
+       {0x3163, 0x5BB4},
+       {0x3164, 0x5EF6},
+       {0x3165, 0x6028},
+       {0x3166, 0x63A9},
+       {0x3167, 0x63F4},
+       {0x3168, 0x6CBF},
+       {0x3169, 0x6F14},
+       {0x316A, 0x708E},
+       {0x316B, 0x7114},
+       {0x316C, 0x7159},
+       {0x316D, 0x71D5},
+       {0x316E, 0x733F},
+       {0x316F, 0x7E01},
+       {0x3170, 0x8276},
+       {0x3171, 0x82D1},
+       {0x3172, 0x8597},
+       {0x3173, 0x9060},
+       {0x3174, 0x925B},
+       {0x3175, 0x9D1B},
+       {0x3176, 0x5869},
+       {0x3177, 0x65BC},
+       {0x3178, 0x6C5A},
+       {0x3179, 0x7525},
+       {0x317A, 0x51F9},
+       {0x317B, 0x592E},
+       {0x317C, 0x5965},
+       {0x317D, 0x5F80},
+       {0x317E, 0x5FDC},
+       {0x3221, 0x62BC},
+       {0x3222, 0x65FA},
+       {0x3223, 0x6A2A},
+       {0x3224, 0x6B27},
+       {0x3225, 0x6BB4},
+       {0x3226, 0x738B},
+       {0x3227, 0x7FC1},
+       {0x3228, 0x8956},
+       {0x3229, 0x9D2C},
+       {0x322A, 0x9D0E},
+       {0x322B, 0x9EC4},
+       {0x322C, 0x5CA1},
+       {0x322D, 0x6C96},
+       {0x322E, 0x837B},
+       {0x322F, 0x5104},
+       {0x3230, 0x5C4B},
+       {0x3231, 0x61B6},
+       {0x3232, 0x81C6},
+       {0x3233, 0x6876},
+       {0x3234, 0x7261},
+       {0x3235, 0x4E59},
+       {0x3236, 0x4FFA},
+       {0x3237, 0x5378},
+       {0x3238, 0x6069},
+       {0x3239, 0x6E29},
+       {0x323A, 0x7A4F},
+       {0x323B, 0x97F3},
+       {0x323C, 0x4E0B},
+       {0x323D, 0x5316},
+       {0x323E, 0x4EEE},
+       {0x323F, 0x4F55},
+       {0x3240, 0x4F3D},
+       {0x3241, 0x4FA1},
+       {0x3242, 0x4F73},
+       {0x3243, 0x52A0},
+       {0x3244, 0x53EF},
+       {0x3245, 0x5609},
+       {0x3246, 0x590F},
+       {0x3247, 0x5AC1},
+       {0x3248, 0x5BB6},
+       {0x3249, 0x5BE1},
+       {0x324A, 0x79D1},
+       {0x324B, 0x6687},
+       {0x324C, 0x679C},
+       {0x324D, 0x67B6},
+       {0x324E, 0x6B4C},
+       {0x324F, 0x6CB3},
+       {0x3250, 0x706B},
+       {0x3251, 0x73C2},
+       {0x3252, 0x798D},
+       {0x3253, 0x79BE},
+       {0x3254, 0x7A3C},
+       {0x3255, 0x7B87},
+       {0x3256, 0x82B1},
+       {0x3257, 0x82DB},
+       {0x3258, 0x8304},
+       {0x3259, 0x8377},
+       {0x325A, 0x83EF},
+       {0x325B, 0x83D3},
+       {0x325C, 0x8766},
+       {0x325D, 0x8AB2},
+       {0x325E, 0x5629},
+       {0x325F, 0x8CA8},
+       {0x3260, 0x8FE6},
+       {0x3261, 0x904E},
+       {0x3262, 0x971E},
+       {0x3263, 0x868A},
+       {0x3264, 0x4FC4},
+       {0x3265, 0x5CE8},
+       {0x3266, 0x6211},
+       {0x3267, 0x7259},
+       {0x3268, 0x753B},
+       {0x3269, 0x81E5},
+       {0x326A, 0x82BD},
+       {0x326B, 0x86FE},
+       {0x326C, 0x8CC0},
+       {0x326D, 0x96C5},
+       {0x326E, 0x9913},
+       {0x326F, 0x99D5},
+       {0x3270, 0x4ECB},
+       {0x3271, 0x4F1A},
+       {0x3272, 0x89E3},
+       {0x3273, 0x56DE},
+       {0x3274, 0x584A},
+       {0x3275, 0x58CA},
+       {0x3276, 0x5EFB},
+       {0x3277, 0x5FEB},
+       {0x3278, 0x602A},
+       {0x3279, 0x6094},
+       {0x327A, 0x6062},
+       {0x327B, 0x61D0},
+       {0x327C, 0x6212},
+       {0x327D, 0x62D0},
+       {0x327E, 0x6539},
+       {0x3321, 0x9B41},
+       {0x3322, 0x6666},
+       {0x3323, 0x68B0},
+       {0x3324, 0x6D77},
+       {0x3325, 0x7070},
+       {0x3326, 0x754C},
+       {0x3327, 0x7686},
+       {0x3328, 0x7D75},
+       {0x3329, 0x82A5},
+       {0x332A, 0x87F9},
+       {0x332B, 0x958B},
+       {0x332C, 0x968E},
+       {0x332D, 0x8C9D},
+       {0x332E, 0x51F1},
+       {0x332F, 0x52BE},
+       {0x3330, 0x5916},
+       {0x3331, 0x54B3},
+       {0x3332, 0x5BB3},
+       {0x3333, 0x5D16},
+       {0x3334, 0x6168},
+       {0x3335, 0x6982},
+       {0x3336, 0x6DAF},
+       {0x3337, 0x788D},
+       {0x3338, 0x84CB},
+       {0x3339, 0x8857},
+       {0x333A, 0x8A72},
+       {0x333B, 0x93A7},
+       {0x333C, 0x9AB8},
+       {0x333D, 0x6D6C},
+       {0x333E, 0x99A8},
+       {0x333F, 0x86D9},
+       {0x3340, 0x57A3},
+       {0x3341, 0x67FF},
+       {0x3342, 0x86CE},
+       {0x3343, 0x920E},
+       {0x3344, 0x5283},
+       {0x3345, 0x5687},
+       {0x3346, 0x5404},
+       {0x3347, 0x5ED3},
+       {0x3348, 0x62E1},
+       {0x3349, 0x64B9},
+       {0x334A, 0x683C},
+       {0x334B, 0x6838},
+       {0x334C, 0x6BBB},
+       {0x334D, 0x7372},
+       {0x334E, 0x78BA},
+       {0x334F, 0x7A6B},
+       {0x3350, 0x899A},
+       {0x3351, 0x89D2},
+       {0x3352, 0x8D6B},
+       {0x3353, 0x8F03},
+       {0x3354, 0x90ED},
+       {0x3355, 0x95A3},
+       {0x3356, 0x9694},
+       {0x3357, 0x9769},
+       {0x3358, 0x5B66},
+       {0x3359, 0x5CB3},
+       {0x335A, 0x697D},
+       {0x335B, 0x984D},
+       {0x335C, 0x984E},
+       {0x335D, 0x639B},
+       {0x335E, 0x7B20},
+       {0x335F, 0x6A2B},
+       {0x3360, 0x6A7F},
+       {0x3361, 0x68B6},
+       {0x3362, 0x9C0D},
+       {0x3363, 0x6F5F},
+       {0x3364, 0x5272},
+       {0x3365, 0x559D},
+       {0x3366, 0x6070},
+       {0x3367, 0x62EC},
+       {0x3368, 0x6D3B},
+       {0x3369, 0x6E07},
+       {0x336A, 0x6ED1},
+       {0x336B, 0x845B},
+       {0x336C, 0x8910},
+       {0x336D, 0x8F44},
+       {0x336E, 0x4E14},
+       {0x336F, 0x9C39},
+       {0x3370, 0x53F6},
+       {0x3371, 0x691B},
+       {0x3372, 0x6A3A},
+       {0x3373, 0x9784},
+       {0x3374, 0x682A},
+       {0x3375, 0x515C},
+       {0x3376, 0x7AC3},
+       {0x3377, 0x84B2},
+       {0x3378, 0x91DC},
+       {0x3379, 0x938C},
+       {0x337A, 0x565B},
+       {0x337B, 0x9D28},
+       {0x337C, 0x6822},
+       {0x337D, 0x8305},
+       {0x337E, 0x8431},
+       {0x3421, 0x7CA5},
+       {0x3422, 0x5208},
+       {0x3423, 0x82C5},
+       {0x3424, 0x74E6},
+       {0x3425, 0x4E7E},
+       {0x3426, 0x4F83},
+       {0x3427, 0x51A0},
+       {0x3428, 0x5BD2},
+       {0x3429, 0x520A},
+       {0x342A, 0x52D8},
+       {0x342B, 0x52E7},
+       {0x342C, 0x5DFB},
+       {0x342D, 0x559A},
+       {0x342E, 0x582A},
+       {0x342F, 0x59E6},
+       {0x3430, 0x5B8C},
+       {0x3431, 0x5B98},
+       {0x3432, 0x5BDB},
+       {0x3433, 0x5E72},
+       {0x3434, 0x5E79},
+       {0x3435, 0x60A3},
+       {0x3436, 0x611F},
+       {0x3437, 0x6163},
+       {0x3438, 0x61BE},
+       {0x3439, 0x63DB},
+       {0x343A, 0x6562},
+       {0x343B, 0x67D1},
+       {0x343C, 0x6853},
+       {0x343D, 0x68FA},
+       {0x343E, 0x6B3E},
+       {0x343F, 0x6B53},
+       {0x3440, 0x6C57},
+       {0x3441, 0x6F22},
+       {0x3442, 0x6F97},
+       {0x3443, 0x6F45},
+       {0x3444, 0x74B0},
+       {0x3445, 0x7518},
+       {0x3446, 0x76E3},
+       {0x3447, 0x770B},
+       {0x3448, 0x7AFF},
+       {0x3449, 0x7BA1},
+       {0x344A, 0x7C21},
+       {0x344B, 0x7DE9},
+       {0x344C, 0x7F36},
+       {0x344D, 0x7FF0},
+       {0x344E, 0x809D},
+       {0x344F, 0x8266},
+       {0x3450, 0x839E},
+       {0x3451, 0x89B3},
+       {0x3452, 0x8ACC},
+       {0x3453, 0x8CAB},
+       {0x3454, 0x9084},
+       {0x3455, 0x9451},
+       {0x3456, 0x9593},
+       {0x3457, 0x9591},
+       {0x3458, 0x95A2},
+       {0x3459, 0x9665},
+       {0x345A, 0x97D3},
+       {0x345B, 0x9928},
+       {0x345C, 0x8218},
+       {0x345D, 0x4E38},
+       {0x345E, 0x542B},
+       {0x345F, 0x5CB8},
+       {0x3460, 0x5DCC},
+       {0x3461, 0x73A9},
+       {0x3462, 0x764C},
+       {0x3463, 0x773C},
+       {0x3464, 0x5CA9},
+       {0x3465, 0x7FEB},
+       {0x3466, 0x8D0B},
+       {0x3467, 0x96C1},
+       {0x3468, 0x9811},
+       {0x3469, 0x9854},
+       {0x346A, 0x9858},
+       {0x346B, 0x4F01},
+       {0x346C, 0x4F0E},
+       {0x346D, 0x5371},
+       {0x346E, 0x559C},
+       {0x346F, 0x5668},
+       {0x3470, 0x57FA},
+       {0x3471, 0x5947},
+       {0x3472, 0x5B09},
+       {0x3473, 0x5BC4},
+       {0x3474, 0x5C90},
+       {0x3475, 0x5E0C},
+       {0x3476, 0x5E7E},
+       {0x3477, 0x5FCC},
+       {0x3478, 0x63EE},
+       {0x3479, 0x673A},
+       {0x347A, 0x65D7},
+       {0x347B, 0x65E2},
+       {0x347C, 0x671F},
+       {0x347D, 0x68CB},
+       {0x347E, 0x68C4},
+       {0x3521, 0x6A5F},
+       {0x3522, 0x5E30},
+       {0x3523, 0x6BC5},
+       {0x3524, 0x6C17},
+       {0x3525, 0x6C7D},
+       {0x3526, 0x757F},
+       {0x3527, 0x7948},
+       {0x3528, 0x5B63},
+       {0x3529, 0x7A00},
+       {0x352A, 0x7D00},
+       {0x352B, 0x5FBD},
+       {0x352C, 0x898F},
+       {0x352D, 0x8A18},
+       {0x352E, 0x8CB4},
+       {0x352F, 0x8D77},
+       {0x3530, 0x8ECC},
+       {0x3531, 0x8F1D},
+       {0x3532, 0x98E2},
+       {0x3533, 0x9A0E},
+       {0x3534, 0x9B3C},
+       {0x3535, 0x4E80},
+       {0x3536, 0x507D},
+       {0x3537, 0x5100},
+       {0x3538, 0x5993},
+       {0x3539, 0x5B9C},
+       {0x353A, 0x622F},
+       {0x353B, 0x6280},
+       {0x353C, 0x64EC},
+       {0x353D, 0x6B3A},
+       {0x353E, 0x72A0},
+       {0x353F, 0x7591},
+       {0x3540, 0x7947},
+       {0x3541, 0x7FA9},
+       {0x3542, 0x87FB},
+       {0x3543, 0x8ABC},
+       {0x3544, 0x8B70},
+       {0x3545, 0x63AC},
+       {0x3546, 0x83CA},
+       {0x3547, 0x97A0},
+       {0x3548, 0x5409},
+       {0x3549, 0x5403},
+       {0x354A, 0x55AB},
+       {0x354B, 0x6854},
+       {0x354C, 0x6A58},
+       {0x354D, 0x8A70},
+       {0x354E, 0x7827},
+       {0x354F, 0x6775},
+       {0x3550, 0x9ECD},
+       {0x3551, 0x5374},
+       {0x3552, 0x5BA2},
+       {0x3553, 0x811A},
+       {0x3554, 0x8650},
+       {0x3555, 0x9006},
+       {0x3556, 0x4E18},
+       {0x3557, 0x4E45},
+       {0x3558, 0x4EC7},
+       {0x3559, 0x4F11},
+       {0x355A, 0x53CA},
+       {0x355B, 0x5438},
+       {0x355C, 0x5BAE},
+       {0x355D, 0x5F13},
+       {0x355E, 0x6025},
+       {0x355F, 0x6551},
+       {0x3560, 0x673D},
+       {0x3561, 0x6C42},
+       {0x3562, 0x6C72},
+       {0x3563, 0x6CE3},
+       {0x3564, 0x7078},
+       {0x3565, 0x7403},
+       {0x3566, 0x7A76},
+       {0x3567, 0x7AAE},
+       {0x3568, 0x7B08},
+       {0x3569, 0x7D1A},
+       {0x356A, 0x7CFE},
+       {0x356B, 0x7D66},
+       {0x356C, 0x65E7},
+       {0x356D, 0x725B},
+       {0x356E, 0x53BB},
+       {0x356F, 0x5C45},
+       {0x3570, 0x5DE8},
+       {0x3571, 0x62D2},
+       {0x3572, 0x62E0},
+       {0x3573, 0x6319},
+       {0x3574, 0x6E20},
+       {0x3575, 0x865A},
+       {0x3576, 0x8A31},
+       {0x3577, 0x8DDD},
+       {0x3578, 0x92F8},
+       {0x3579, 0x6F01},
+       {0x357A, 0x79A6},
+       {0x357B, 0x9B5A},
+       {0x357C, 0x4EA8},
+       {0x357D, 0x4EAB},
+       {0x357E, 0x4EAC},
+       {0x3621, 0x4F9B},
+       {0x3622, 0x4FA0},
+       {0x3623, 0x50D1},
+       {0x3624, 0x5147},
+       {0x3625, 0x7AF6},
+       {0x3626, 0x5171},
+       {0x3627, 0x51F6},
+       {0x3628, 0x5354},
+       {0x3629, 0x5321},
+       {0x362A, 0x537F},
+       {0x362B, 0x53EB},
+       {0x362C, 0x55AC},
+       {0x362D, 0x5883},
+       {0x362E, 0x5CE1},
+       {0x362F, 0x5F37},
+       {0x3630, 0x5F4A},
+       {0x3631, 0x602F},
+       {0x3632, 0x6050},
+       {0x3633, 0x606D},
+       {0x3634, 0x631F},
+       {0x3635, 0x6559},
+       {0x3636, 0x6A4B},
+       {0x3637, 0x6CC1},
+       {0x3638, 0x72C2},
+       {0x3639, 0x72ED},
+       {0x363A, 0x77EF},
+       {0x363B, 0x80F8},
+       {0x363C, 0x8105},
+       {0x363D, 0x8208},
+       {0x363E, 0x854E},
+       {0x363F, 0x90F7},
+       {0x3640, 0x93E1},
+       {0x3641, 0x97FF},
+       {0x3642, 0x9957},
+       {0x3643, 0x9A5A},
+       {0x3644, 0x4EF0},
+       {0x3645, 0x51DD},
+       {0x3646, 0x5C2D},
+       {0x3647, 0x6681},
+       {0x3648, 0x696D},
+       {0x3649, 0x5C40},
+       {0x364A, 0x66F2},
+       {0x364B, 0x6975},
+       {0x364C, 0x7389},
+       {0x364D, 0x6850},
+       {0x364E, 0x7C81},
+       {0x364F, 0x50C5},
+       {0x3650, 0x52E4},
+       {0x3651, 0x5747},
+       {0x3652, 0x5DFE},
+       {0x3653, 0x9326},
+       {0x3654, 0x65A4},
+       {0x3655, 0x6B23},
+       {0x3656, 0x6B3D},
+       {0x3657, 0x7434},
+       {0x3658, 0x7981},
+       {0x3659, 0x79BD},
+       {0x365A, 0x7B4B},
+       {0x365B, 0x7DCA},
+       {0x365C, 0x82B9},
+       {0x365D, 0x83CC},
+       {0x365E, 0x887F},
+       {0x365F, 0x895F},
+       {0x3660, 0x8B39},
+       {0x3661, 0x8FD1},
+       {0x3662, 0x91D1},
+       {0x3663, 0x541F},
+       {0x3664, 0x9280},
+       {0x3665, 0x4E5D},
+       {0x3666, 0x5036},
+       {0x3667, 0x53E5},
+       {0x3668, 0x533A},
+       {0x3669, 0x72D7},
+       {0x366A, 0x7396},
+       {0x366B, 0x77E9},
+       {0x366C, 0x82E6},
+       {0x366D, 0x8EAF},
+       {0x366E, 0x99C6},
+       {0x366F, 0x99C8},
+       {0x3670, 0x99D2},
+       {0x3671, 0x5177},
+       {0x3672, 0x611A},
+       {0x3673, 0x865E},
+       {0x3674, 0x55B0},
+       {0x3675, 0x7A7A},
+       {0x3676, 0x5076},
+       {0x3677, 0x5BD3},
+       {0x3678, 0x9047},
+       {0x3679, 0x9685},
+       {0x367A, 0x4E32},
+       {0x367B, 0x6ADB},
+       {0x367C, 0x91E7},
+       {0x367D, 0x5C51},
+       {0x367E, 0x5C48},
+       {0x3721, 0x6398},
+       {0x3722, 0x7A9F},
+       {0x3723, 0x6C93},
+       {0x3724, 0x9774},
+       {0x3725, 0x8F61},
+       {0x3726, 0x7AAA},
+       {0x3727, 0x718A},
+       {0x3728, 0x9688},
+       {0x3729, 0x7C82},
+       {0x372A, 0x6817},
+       {0x372B, 0x7E70},
+       {0x372C, 0x6851},
+       {0x372D, 0x936C},
+       {0x372E, 0x52F2},
+       {0x372F, 0x541B},
+       {0x3730, 0x85AB},
+       {0x3731, 0x8A13},
+       {0x3732, 0x7FA4},
+       {0x3733, 0x8ECD},
+       {0x3734, 0x90E1},
+       {0x3735, 0x5366},
+       {0x3736, 0x8888},
+       {0x3737, 0x7941},
+       {0x3738, 0x4FC2},
+       {0x3739, 0x50BE},
+       {0x373A, 0x5211},
+       {0x373B, 0x5144},
+       {0x373C, 0x5553},
+       {0x373D, 0x572D},
+       {0x373E, 0x73EA},
+       {0x373F, 0x578B},
+       {0x3740, 0x5951},
+       {0x3741, 0x5F62},
+       {0x3742, 0x5F84},
+       {0x3743, 0x6075},
+       {0x3744, 0x6176},
+       {0x3745, 0x6167},
+       {0x3746, 0x61A9},
+       {0x3747, 0x63B2},
+       {0x3748, 0x643A},
+       {0x3749, 0x656C},
+       {0x374A, 0x666F},
+       {0x374B, 0x6842},
+       {0x374C, 0x6E13},
+       {0x374D, 0x7566},
+       {0x374E, 0x7A3D},
+       {0x374F, 0x7CFB},
+       {0x3750, 0x7D4C},
+       {0x3751, 0x7D99},
+       {0x3752, 0x7E4B},
+       {0x3753, 0x7F6B},
+       {0x3754, 0x830E},
+       {0x3755, 0x834A},
+       {0x3756, 0x86CD},
+       {0x3757, 0x8A08},
+       {0x3758, 0x8A63},
+       {0x3759, 0x8B66},
+       {0x375A, 0x8EFD},
+       {0x375B, 0x981A},
+       {0x375C, 0x9D8F},
+       {0x375D, 0x82B8},
+       {0x375E, 0x8FCE},
+       {0x375F, 0x9BE8},
+       {0x3760, 0x5287},
+       {0x3761, 0x621F},
+       {0x3762, 0x6483},
+       {0x3763, 0x6FC0},
+       {0x3764, 0x9699},
+       {0x3765, 0x6841},
+       {0x3766, 0x5091},
+       {0x3767, 0x6B20},
+       {0x3768, 0x6C7A},
+       {0x3769, 0x6F54},
+       {0x376A, 0x7A74},
+       {0x376B, 0x7D50},
+       {0x376C, 0x8840},
+       {0x376D, 0x8A23},
+       {0x376E, 0x6708},
+       {0x376F, 0x4EF6},
+       {0x3770, 0x5039},
+       {0x3771, 0x5026},
+       {0x3772, 0x5065},
+       {0x3773, 0x517C},
+       {0x3774, 0x5238},
+       {0x3775, 0x5263},
+       {0x3776, 0x55A7},
+       {0x3777, 0x570F},
+       {0x3778, 0x5805},
+       {0x3779, 0x5ACC},
+       {0x377A, 0x5EFA},
+       {0x377B, 0x61B2},
+       {0x377C, 0x61F8},
+       {0x377D, 0x62F3},
+       {0x377E, 0x6372},
+       {0x3821, 0x691C},
+       {0x3822, 0x6A29},
+       {0x3823, 0x727D},
+       {0x3824, 0x72AC},
+       {0x3825, 0x732E},
+       {0x3826, 0x7814},
+       {0x3827, 0x786F},
+       {0x3828, 0x7D79},
+       {0x3829, 0x770C},
+       {0x382A, 0x80A9},
+       {0x382B, 0x898B},
+       {0x382C, 0x8B19},
+       {0x382D, 0x8CE2},
+       {0x382E, 0x8ED2},
+       {0x382F, 0x9063},
+       {0x3830, 0x9375},
+       {0x3831, 0x967A},
+       {0x3832, 0x9855},
+       {0x3833, 0x9A13},
+       {0x3834, 0x9E78},
+       {0x3835, 0x5143},
+       {0x3836, 0x539F},
+       {0x3837, 0x53B3},
+       {0x3838, 0x5E7B},
+       {0x3839, 0x5F26},
+       {0x383A, 0x6E1B},
+       {0x383B, 0x6E90},
+       {0x383C, 0x7384},
+       {0x383D, 0x73FE},
+       {0x383E, 0x7D43},
+       {0x383F, 0x8237},
+       {0x3840, 0x8A00},
+       {0x3841, 0x8AFA},
+       {0x3842, 0x9650},
+       {0x3843, 0x4E4E},
+       {0x3844, 0x500B},
+       {0x3845, 0x53E4},
+       {0x3846, 0x547C},
+       {0x3847, 0x56FA},
+       {0x3848, 0x59D1},
+       {0x3849, 0x5B64},
+       {0x384A, 0x5DF1},
+       {0x384B, 0x5EAB},
+       {0x384C, 0x5F27},
+       {0x384D, 0x6238},
+       {0x384E, 0x6545},
+       {0x384F, 0x67AF},
+       {0x3850, 0x6E56},
+       {0x3851, 0x72D0},
+       {0x3852, 0x7CCA},
+       {0x3853, 0x88B4},
+       {0x3854, 0x80A1},
+       {0x3855, 0x80E1},
+       {0x3856, 0x83F0},
+       {0x3857, 0x864E},
+       {0x3858, 0x8A87},
+       {0x3859, 0x8DE8},
+       {0x385A, 0x9237},
+       {0x385B, 0x96C7},
+       {0x385C, 0x9867},
+       {0x385D, 0x9F13},
+       {0x385E, 0x4E94},
+       {0x385F, 0x4E92},
+       {0x3860, 0x4F0D},
+       {0x3861, 0x5348},
+       {0x3862, 0x5449},
+       {0x3863, 0x543E},
+       {0x3864, 0x5A2F},
+       {0x3865, 0x5F8C},
+       {0x3866, 0x5FA1},
+       {0x3867, 0x609F},
+       {0x3868, 0x68A7},
+       {0x3869, 0x6A8E},
+       {0x386A, 0x745A},
+       {0x386B, 0x7881},
+       {0x386C, 0x8A9E},
+       {0x386D, 0x8AA4},
+       {0x386E, 0x8B77},
+       {0x386F, 0x9190},
+       {0x3870, 0x4E5E},
+       {0x3871, 0x9BC9},
+       {0x3872, 0x4EA4},
+       {0x3873, 0x4F7C},
+       {0x3874, 0x4FAF},
+       {0x3875, 0x5019},
+       {0x3876, 0x5016},
+       {0x3877, 0x5149},
+       {0x3878, 0x516C},
+       {0x3879, 0x529F},
+       {0x387A, 0x52B9},
+       {0x387B, 0x52FE},
+       {0x387C, 0x539A},
+       {0x387D, 0x53E3},
+       {0x387E, 0x5411},
+       {0x3921, 0x540E},
+       {0x3922, 0x5589},
+       {0x3923, 0x5751},
+       {0x3924, 0x57A2},
+       {0x3925, 0x597D},
+       {0x3926, 0x5B54},
+       {0x3927, 0x5B5D},
+       {0x3928, 0x5B8F},
+       {0x3929, 0x5DE5},
+       {0x392A, 0x5DE7},
+       {0x392B, 0x5DF7},
+       {0x392C, 0x5E78},
+       {0x392D, 0x5E83},
+       {0x392E, 0x5E9A},
+       {0x392F, 0x5EB7},
+       {0x3930, 0x5F18},
+       {0x3931, 0x6052},
+       {0x3932, 0x614C},
+       {0x3933, 0x6297},
+       {0x3934, 0x62D8},
+       {0x3935, 0x63A7},
+       {0x3936, 0x653B},
+       {0x3937, 0x6602},
+       {0x3938, 0x6643},
+       {0x3939, 0x66F4},
+       {0x393A, 0x676D},
+       {0x393B, 0x6821},
+       {0x393C, 0x6897},
+       {0x393D, 0x69CB},
+       {0x393E, 0x6C5F},
+       {0x393F, 0x6D2A},
+       {0x3940, 0x6D69},
+       {0x3941, 0x6E2F},
+       {0x3942, 0x6E9D},
+       {0x3943, 0x7532},
+       {0x3944, 0x7687},
+       {0x3945, 0x786C},
+       {0x3946, 0x7A3F},
+       {0x3947, 0x7CE0},
+       {0x3948, 0x7D05},
+       {0x3949, 0x7D18},
+       {0x394A, 0x7D5E},
+       {0x394B, 0x7DB1},
+       {0x394C, 0x8015},
+       {0x394D, 0x8003},
+       {0x394E, 0x80AF},
+       {0x394F, 0x80B1},
+       {0x3950, 0x8154},
+       {0x3951, 0x818F},
+       {0x3952, 0x822A},
+       {0x3953, 0x8352},
+       {0x3954, 0x884C},
+       {0x3955, 0x8861},
+       {0x3956, 0x8B1B},
+       {0x3957, 0x8CA2},
+       {0x3958, 0x8CFC},
+       {0x3959, 0x90CA},
+       {0x395A, 0x9175},
+       {0x395B, 0x9271},
+       {0x395C, 0x783F},
+       {0x395D, 0x92FC},
+       {0x395E, 0x95A4},
+       {0x395F, 0x964D},
+       {0x3960, 0x9805},
+       {0x3961, 0x9999},
+       {0x3962, 0x9AD8},
+       {0x3963, 0x9D3B},
+       {0x3964, 0x525B},
+       {0x3965, 0x52AB},
+       {0x3966, 0x53F7},
+       {0x3967, 0x5408},
+       {0x3968, 0x58D5},
+       {0x3969, 0x62F7},
+       {0x396A, 0x6FE0},
+       {0x396B, 0x8C6A},
+       {0x396C, 0x8F5F},
+       {0x396D, 0x9EB9},
+       {0x396E, 0x514B},
+       {0x396F, 0x523B},
+       {0x3970, 0x544A},
+       {0x3971, 0x56FD},
+       {0x3972, 0x7A40},
+       {0x3973, 0x9177},
+       {0x3974, 0x9D60},
+       {0x3975, 0x9ED2},
+       {0x3976, 0x7344},
+       {0x3977, 0x6F09},
+       {0x3978, 0x8170},
+       {0x3979, 0x7511},
+       {0x397A, 0x5FFD},
+       {0x397B, 0x60DA},
+       {0x397C, 0x9AA8},
+       {0x397D, 0x72DB},
+       {0x397E, 0x8FBC},
+       {0x3A21, 0x6B64},
+       {0x3A22, 0x9803},
+       {0x3A23, 0x4ECA},
+       {0x3A24, 0x56F0},
+       {0x3A25, 0x5764},
+       {0x3A26, 0x58BE},
+       {0x3A27, 0x5A5A},
+       {0x3A28, 0x6068},
+       {0x3A29, 0x61C7},
+       {0x3A2A, 0x660F},
+       {0x3A2B, 0x6606},
+       {0x3A2C, 0x6839},
+       {0x3A2D, 0x68B1},
+       {0x3A2E, 0x6DF7},
+       {0x3A2F, 0x75D5},
+       {0x3A30, 0x7D3A},
+       {0x3A31, 0x826E},
+       {0x3A32, 0x9B42},
+       {0x3A33, 0x4E9B},
+       {0x3A34, 0x4F50},
+       {0x3A35, 0x53C9},
+       {0x3A36, 0x5506},
+       {0x3A37, 0x5D6F},
+       {0x3A38, 0x5DE6},
+       {0x3A39, 0x5DEE},
+       {0x3A3A, 0x67FB},
+       {0x3A3B, 0x6C99},
+       {0x3A3C, 0x7473},
+       {0x3A3D, 0x7802},
+       {0x3A3E, 0x8A50},
+       {0x3A3F, 0x9396},
+       {0x3A40, 0x88DF},
+       {0x3A41, 0x5750},
+       {0x3A42, 0x5EA7},
+       {0x3A43, 0x632B},
+       {0x3A44, 0x50B5},
+       {0x3A45, 0x50AC},
+       {0x3A46, 0x518D},
+       {0x3A47, 0x6700},
+       {0x3A48, 0x54C9},
+       {0x3A49, 0x585E},
+       {0x3A4A, 0x59BB},
+       {0x3A4B, 0x5BB0},
+       {0x3A4C, 0x5F69},
+       {0x3A4D, 0x624D},
+       {0x3A4E, 0x63A1},
+       {0x3A4F, 0x683D},
+       {0x3A50, 0x6B73},
+       {0x3A51, 0x6E08},
+       {0x3A52, 0x707D},
+       {0x3A53, 0x91C7},
+       {0x3A54, 0x7280},
+       {0x3A55, 0x7815},
+       {0x3A56, 0x7826},
+       {0x3A57, 0x796D},
+       {0x3A58, 0x658E},
+       {0x3A59, 0x7D30},
+       {0x3A5A, 0x83DC},
+       {0x3A5B, 0x88C1},
+       {0x3A5C, 0x8F09},
+       {0x3A5D, 0x969B},
+       {0x3A5E, 0x5264},
+       {0x3A5F, 0x5728},
+       {0x3A60, 0x6750},
+       {0x3A61, 0x7F6A},
+       {0x3A62, 0x8CA1},
+       {0x3A63, 0x51B4},
+       {0x3A64, 0x5742},
+       {0x3A65, 0x962A},
+       {0x3A66, 0x583A},
+       {0x3A67, 0x698A},
+       {0x3A68, 0x80B4},
+       {0x3A69, 0x54B2},
+       {0x3A6A, 0x5D0E},
+       {0x3A6B, 0x57FC},
+       {0x3A6C, 0x7895},
+       {0x3A6D, 0x9DFA},
+       {0x3A6E, 0x4F5C},
+       {0x3A6F, 0x524A},
+       {0x3A70, 0x548B},
+       {0x3A71, 0x643E},
+       {0x3A72, 0x6628},
+       {0x3A73, 0x6714},
+       {0x3A74, 0x67F5},
+       {0x3A75, 0x7A84},
+       {0x3A76, 0x7B56},
+       {0x3A77, 0x7D22},
+       {0x3A78, 0x932F},
+       {0x3A79, 0x685C},
+       {0x3A7A, 0x9BAD},
+       {0x3A7B, 0x7B39},
+       {0x3A7C, 0x5319},
+       {0x3A7D, 0x518A},
+       {0x3A7E, 0x5237},
+       {0x3B21, 0x5BDF},
+       {0x3B22, 0x62F6},
+       {0x3B23, 0x64AE},
+       {0x3B24, 0x64E6},
+       {0x3B25, 0x672D},
+       {0x3B26, 0x6BBA},
+       {0x3B27, 0x85A9},
+       {0x3B28, 0x96D1},
+       {0x3B29, 0x7690},
+       {0x3B2A, 0x9BD6},
+       {0x3B2B, 0x634C},
+       {0x3B2C, 0x9306},
+       {0x3B2D, 0x9BAB},
+       {0x3B2E, 0x76BF},
+       {0x3B2F, 0x6652},
+       {0x3B30, 0x4E09},
+       {0x3B31, 0x5098},
+       {0x3B32, 0x53C2},
+       {0x3B33, 0x5C71},
+       {0x3B34, 0x60E8},
+       {0x3B35, 0x6492},
+       {0x3B36, 0x6563},
+       {0x3B37, 0x685F},
+       {0x3B38, 0x71E6},
+       {0x3B39, 0x73CA},
+       {0x3B3A, 0x7523},
+       {0x3B3B, 0x7B97},
+       {0x3B3C, 0x7E82},
+       {0x3B3D, 0x8695},
+       {0x3B3E, 0x8B83},
+       {0x3B3F, 0x8CDB},
+       {0x3B40, 0x9178},
+       {0x3B41, 0x9910},
+       {0x3B42, 0x65AC},
+       {0x3B43, 0x66AB},
+       {0x3B44, 0x6B8B},
+       {0x3B45, 0x4ED5},
+       {0x3B46, 0x4ED4},
+       {0x3B47, 0x4F3A},
+       {0x3B48, 0x4F7F},
+       {0x3B49, 0x523A},
+       {0x3B4A, 0x53F8},
+       {0x3B4B, 0x53F2},
+       {0x3B4C, 0x55E3},
+       {0x3B4D, 0x56DB},
+       {0x3B4E, 0x58EB},
+       {0x3B4F, 0x59CB},
+       {0x3B50, 0x59C9},
+       {0x3B51, 0x59FF},
+       {0x3B52, 0x5B50},
+       {0x3B53, 0x5C4D},
+       {0x3B54, 0x5E02},
+       {0x3B55, 0x5E2B},
+       {0x3B56, 0x5FD7},
+       {0x3B57, 0x601D},
+       {0x3B58, 0x6307},
+       {0x3B59, 0x652F},
+       {0x3B5A, 0x5B5C},
+       {0x3B5B, 0x65AF},
+       {0x3B5C, 0x65BD},
+       {0x3B5D, 0x65E8},
+       {0x3B5E, 0x679D},
+       {0x3B5F, 0x6B62},
+       {0x3B60, 0x6B7B},
+       {0x3B61, 0x6C0F},
+       {0x3B62, 0x7345},
+       {0x3B63, 0x7949},
+       {0x3B64, 0x79C1},
+       {0x3B65, 0x7CF8},
+       {0x3B66, 0x7D19},
+       {0x3B67, 0x7D2B},
+       {0x3B68, 0x80A2},
+       {0x3B69, 0x8102},
+       {0x3B6A, 0x81F3},
+       {0x3B6B, 0x8996},
+       {0x3B6C, 0x8A5E},
+       {0x3B6D, 0x8A69},
+       {0x3B6E, 0x8A66},
+       {0x3B6F, 0x8A8C},
+       {0x3B70, 0x8AEE},
+       {0x3B71, 0x8CC7},
+       {0x3B72, 0x8CDC},
+       {0x3B73, 0x96CC},
+       {0x3B74, 0x98FC},
+       {0x3B75, 0x6B6F},
+       {0x3B76, 0x4E8B},
+       {0x3B77, 0x4F3C},
+       {0x3B78, 0x4F8D},
+       {0x3B79, 0x5150},
+       {0x3B7A, 0x5B57},
+       {0x3B7B, 0x5BFA},
+       {0x3B7C, 0x6148},
+       {0x3B7D, 0x6301},
+       {0x3B7E, 0x6642},
+       {0x3C21, 0x6B21},
+       {0x3C22, 0x6ECB},
+       {0x3C23, 0x6CBB},
+       {0x3C24, 0x723E},
+       {0x3C25, 0x74BD},
+       {0x3C26, 0x75D4},
+       {0x3C27, 0x78C1},
+       {0x3C28, 0x793A},
+       {0x3C29, 0x800C},
+       {0x3C2A, 0x8033},
+       {0x3C2B, 0x81EA},
+       {0x3C2C, 0x8494},
+       {0x3C2D, 0x8F9E},
+       {0x3C2E, 0x6C50},
+       {0x3C2F, 0x9E7F},
+       {0x3C30, 0x5F0F},
+       {0x3C31, 0x8B58},
+       {0x3C32, 0x9D2B},
+       {0x3C33, 0x7AFA},
+       {0x3C34, 0x8EF8},
+       {0x3C35, 0x5B8D},
+       {0x3C36, 0x96EB},
+       {0x3C37, 0x4E03},
+       {0x3C38, 0x53F1},
+       {0x3C39, 0x57F7},
+       {0x3C3A, 0x5931},
+       {0x3C3B, 0x5AC9},
+       {0x3C3C, 0x5BA4},
+       {0x3C3D, 0x6089},
+       {0x3C3E, 0x6E7F},
+       {0x3C3F, 0x6F06},
+       {0x3C40, 0x75BE},
+       {0x3C41, 0x8CEA},
+       {0x3C42, 0x5B9F},
+       {0x3C43, 0x8500},
+       {0x3C44, 0x7BE0},
+       {0x3C45, 0x5072},
+       {0x3C46, 0x67F4},
+       {0x3C47, 0x829D},
+       {0x3C48, 0x5C61},
+       {0x3C49, 0x854A},
+       {0x3C4A, 0x7E1E},
+       {0x3C4B, 0x820E},
+       {0x3C4C, 0x5199},
+       {0x3C4D, 0x5C04},
+       {0x3C4E, 0x6368},
+       {0x3C4F, 0x8D66},
+       {0x3C50, 0x659C},
+       {0x3C51, 0x716E},
+       {0x3C52, 0x793E},
+       {0x3C53, 0x7D17},
+       {0x3C54, 0x8005},
+       {0x3C55, 0x8B1D},
+       {0x3C56, 0x8ECA},
+       {0x3C57, 0x906E},
+       {0x3C58, 0x86C7},
+       {0x3C59, 0x90AA},
+       {0x3C5A, 0x501F},
+       {0x3C5B, 0x52FA},
+       {0x3C5C, 0x5C3A},
+       {0x3C5D, 0x6753},
+       {0x3C5E, 0x707C},
+       {0x3C5F, 0x7235},
+       {0x3C60, 0x914C},
+       {0x3C61, 0x91C8},
+       {0x3C62, 0x932B},
+       {0x3C63, 0x82E5},
+       {0x3C64, 0x5BC2},
+       {0x3C65, 0x5F31},
+       {0x3C66, 0x60F9},
+       {0x3C67, 0x4E3B},
+       {0x3C68, 0x53D6},
+       {0x3C69, 0x5B88},
+       {0x3C6A, 0x624B},
+       {0x3C6B, 0x6731},
+       {0x3C6C, 0x6B8A},
+       {0x3C6D, 0x72E9},
+       {0x3C6E, 0x73E0},
+       {0x3C6F, 0x7A2E},
+       {0x3C70, 0x816B},
+       {0x3C71, 0x8DA3},
+       {0x3C72, 0x9152},
+       {0x3C73, 0x9996},
+       {0x3C74, 0x5112},
+       {0x3C75, 0x53D7},
+       {0x3C76, 0x546A},
+       {0x3C77, 0x5BFF},
+       {0x3C78, 0x6388},
+       {0x3C79, 0x6A39},
+       {0x3C7A, 0x7DAC},
+       {0x3C7B, 0x9700},
+       {0x3C7C, 0x56DA},
+       {0x3C7D, 0x53CE},
+       {0x3C7E, 0x5468},
+       {0x3D21, 0x5B97},
+       {0x3D22, 0x5C31},
+       {0x3D23, 0x5DDE},
+       {0x3D24, 0x4FEE},
+       {0x3D25, 0x6101},
+       {0x3D26, 0x62FE},
+       {0x3D27, 0x6D32},
+       {0x3D28, 0x79C0},
+       {0x3D29, 0x79CB},
+       {0x3D2A, 0x7D42},
+       {0x3D2B, 0x7E4D},
+       {0x3D2C, 0x7FD2},
+       {0x3D2D, 0x81ED},
+       {0x3D2E, 0x821F},
+       {0x3D2F, 0x8490},
+       {0x3D30, 0x8846},
+       {0x3D31, 0x8972},
+       {0x3D32, 0x8B90},
+       {0x3D33, 0x8E74},
+       {0x3D34, 0x8F2F},
+       {0x3D35, 0x9031},
+       {0x3D36, 0x914B},
+       {0x3D37, 0x916C},
+       {0x3D38, 0x96C6},
+       {0x3D39, 0x919C},
+       {0x3D3A, 0x4EC0},
+       {0x3D3B, 0x4F4F},
+       {0x3D3C, 0x5145},
+       {0x3D3D, 0x5341},
+       {0x3D3E, 0x5F93},
+       {0x3D3F, 0x620E},
+       {0x3D40, 0x67D4},
+       {0x3D41, 0x6C41},
+       {0x3D42, 0x6E0B},
+       {0x3D43, 0x7363},
+       {0x3D44, 0x7E26},
+       {0x3D45, 0x91CD},
+       {0x3D46, 0x9283},
+       {0x3D47, 0x53D4},
+       {0x3D48, 0x5919},
+       {0x3D49, 0x5BBF},
+       {0x3D4A, 0x6DD1},
+       {0x3D4B, 0x795D},
+       {0x3D4C, 0x7E2E},
+       {0x3D4D, 0x7C9B},
+       {0x3D4E, 0x587E},
+       {0x3D4F, 0x719F},
+       {0x3D50, 0x51FA},
+       {0x3D51, 0x8853},
+       {0x3D52, 0x8FF0},
+       {0x3D53, 0x4FCA},
+       {0x3D54, 0x5CFB},
+       {0x3D55, 0x6625},
+       {0x3D56, 0x77AC},
+       {0x3D57, 0x7AE3},
+       {0x3D58, 0x821C},
+       {0x3D59, 0x99FF},
+       {0x3D5A, 0x51C6},
+       {0x3D5B, 0x5FAA},
+       {0x3D5C, 0x65EC},
+       {0x3D5D, 0x696F},
+       {0x3D5E, 0x6B89},
+       {0x3D5F, 0x6DF3},
+       {0x3D60, 0x6E96},
+       {0x3D61, 0x6F64},
+       {0x3D62, 0x76FE},
+       {0x3D63, 0x7D14},
+       {0x3D64, 0x5DE1},
+       {0x3D65, 0x9075},
+       {0x3D66, 0x9187},
+       {0x3D67, 0x9806},
+       {0x3D68, 0x51E6},
+       {0x3D69, 0x521D},
+       {0x3D6A, 0x6240},
+       {0x3D6B, 0x6691},
+       {0x3D6C, 0x66D9},
+       {0x3D6D, 0x6E1A},
+       {0x3D6E, 0x5EB6},
+       {0x3D6F, 0x7DD2},
+       {0x3D70, 0x7F72},
+       {0x3D71, 0x66F8},
+       {0x3D72, 0x85AF},
+       {0x3D73, 0x85F7},
+       {0x3D74, 0x8AF8},
+       {0x3D75, 0x52A9},
+       {0x3D76, 0x53D9},
+       {0x3D77, 0x5973},
+       {0x3D78, 0x5E8F},
+       {0x3D79, 0x5F90},
+       {0x3D7A, 0x6055},
+       {0x3D7B, 0x92E4},
+       {0x3D7C, 0x9664},
+       {0x3D7D, 0x50B7},
+       {0x3D7E, 0x511F},
+       {0x3E21, 0x52DD},
+       {0x3E22, 0x5320},
+       {0x3E23, 0x5347},
+       {0x3E24, 0x53EC},
+       {0x3E25, 0x54E8},
+       {0x3E26, 0x5546},
+       {0x3E27, 0x5531},
+       {0x3E28, 0x5617},
+       {0x3E29, 0x5968},
+       {0x3E2A, 0x59BE},
+       {0x3E2B, 0x5A3C},
+       {0x3E2C, 0x5BB5},
+       {0x3E2D, 0x5C06},
+       {0x3E2E, 0x5C0F},
+       {0x3E2F, 0x5C11},
+       {0x3E30, 0x5C1A},
+       {0x3E31, 0x5E84},
+       {0x3E32, 0x5E8A},
+       {0x3E33, 0x5EE0},
+       {0x3E34, 0x5F70},
+       {0x3E35, 0x627F},
+       {0x3E36, 0x6284},
+       {0x3E37, 0x62DB},
+       {0x3E38, 0x638C},
+       {0x3E39, 0x6377},
+       {0x3E3A, 0x6607},
+       {0x3E3B, 0x660C},
+       {0x3E3C, 0x662D},
+       {0x3E3D, 0x6676},
+       {0x3E3E, 0x677E},
+       {0x3E3F, 0x68A2},
+       {0x3E40, 0x6A1F},
+       {0x3E41, 0x6A35},
+       {0x3E42, 0x6CBC},
+       {0x3E43, 0x6D88},
+       {0x3E44, 0x6E09},
+       {0x3E45, 0x6E58},
+       {0x3E46, 0x713C},
+       {0x3E47, 0x7126},
+       {0x3E48, 0x7167},
+       {0x3E49, 0x75C7},
+       {0x3E4A, 0x7701},
+       {0x3E4B, 0x785D},
+       {0x3E4C, 0x7901},
+       {0x3E4D, 0x7965},
+       {0x3E4E, 0x79F0},
+       {0x3E4F, 0x7AE0},
+       {0x3E50, 0x7B11},
+       {0x3E51, 0x7CA7},
+       {0x3E52, 0x7D39},
+       {0x3E53, 0x8096},
+       {0x3E54, 0x83D6},
+       {0x3E55, 0x848B},
+       {0x3E56, 0x8549},
+       {0x3E57, 0x885D},
+       {0x3E58, 0x88F3},
+       {0x3E59, 0x8A1F},
+       {0x3E5A, 0x8A3C},
+       {0x3E5B, 0x8A54},
+       {0x3E5C, 0x8A73},
+       {0x3E5D, 0x8C61},
+       {0x3E5E, 0x8CDE},
+       {0x3E5F, 0x91A4},
+       {0x3E60, 0x9266},
+       {0x3E61, 0x937E},
+       {0x3E62, 0x9418},
+       {0x3E63, 0x969C},
+       {0x3E64, 0x9798},
+       {0x3E65, 0x4E0A},
+       {0x3E66, 0x4E08},
+       {0x3E67, 0x4E1E},
+       {0x3E68, 0x4E57},
+       {0x3E69, 0x5197},
+       {0x3E6A, 0x5270},
+       {0x3E6B, 0x57CE},
+       {0x3E6C, 0x5834},
+       {0x3E6D, 0x58CC},
+       {0x3E6E, 0x5B22},
+       {0x3E6F, 0x5E38},
+       {0x3E70, 0x60C5},
+       {0x3E71, 0x64FE},
+       {0x3E72, 0x6761},
+       {0x3E73, 0x6756},
+       {0x3E74, 0x6D44},
+       {0x3E75, 0x72B6},
+       {0x3E76, 0x7573},
+       {0x3E77, 0x7A63},
+       {0x3E78, 0x84B8},
+       {0x3E79, 0x8B72},
+       {0x3E7A, 0x91B8},
+       {0x3E7B, 0x9320},
+       {0x3E7C, 0x5631},
+       {0x3E7D, 0x57F4},
+       {0x3E7E, 0x98FE},
+       {0x3F21, 0x62ED},
+       {0x3F22, 0x690D},
+       {0x3F23, 0x6B96},
+       {0x3F24, 0x71ED},
+       {0x3F25, 0x7E54},
+       {0x3F26, 0x8077},
+       {0x3F27, 0x8272},
+       {0x3F28, 0x89E6},
+       {0x3F29, 0x98DF},
+       {0x3F2A, 0x8755},
+       {0x3F2B, 0x8FB1},
+       {0x3F2C, 0x5C3B},
+       {0x3F2D, 0x4F38},
+       {0x3F2E, 0x4FE1},
+       {0x3F2F, 0x4FB5},
+       {0x3F30, 0x5507},
+       {0x3F31, 0x5A20},
+       {0x3F32, 0x5BDD},
+       {0x3F33, 0x5BE9},
+       {0x3F34, 0x5FC3},
+       {0x3F35, 0x614E},
+       {0x3F36, 0x632F},
+       {0x3F37, 0x65B0},
+       {0x3F38, 0x664B},
+       {0x3F39, 0x68EE},
+       {0x3F3A, 0x699B},
+       {0x3F3B, 0x6D78},
+       {0x3F3C, 0x6DF1},
+       {0x3F3D, 0x7533},
+       {0x3F3E, 0x75B9},
+       {0x3F3F, 0x771F},
+       {0x3F40, 0x795E},
+       {0x3F41, 0x79E6},
+       {0x3F42, 0x7D33},
+       {0x3F43, 0x81E3},
+       {0x3F44, 0x82AF},
+       {0x3F45, 0x85AA},
+       {0x3F46, 0x89AA},
+       {0x3F47, 0x8A3A},
+       {0x3F48, 0x8EAB},
+       {0x3F49, 0x8F9B},
+       {0x3F4A, 0x9032},
+       {0x3F4B, 0x91DD},
+       {0x3F4C, 0x9707},
+       {0x3F4D, 0x4EBA},
+       {0x3F4E, 0x4EC1},
+       {0x3F4F, 0x5203},
+       {0x3F50, 0x5875},
+       {0x3F51, 0x58EC},
+       {0x3F52, 0x5C0B},
+       {0x3F53, 0x751A},
+       {0x3F54, 0x5C3D},
+       {0x3F55, 0x814E},
+       {0x3F56, 0x8A0A},
+       {0x3F57, 0x8FC5},
+       {0x3F58, 0x9663},
+       {0x3F59, 0x976D},
+       {0x3F5A, 0x7B25},
+       {0x3F5B, 0x8ACF},
+       {0x3F5C, 0x9808},
+       {0x3F5D, 0x9162},
+       {0x3F5E, 0x56F3},
+       {0x3F5F, 0x53A8},
+       {0x3F60, 0x9017},
+       {0x3F61, 0x5439},
+       {0x3F62, 0x5782},
+       {0x3F63, 0x5E25},
+       {0x3F64, 0x63A8},
+       {0x3F65, 0x6C34},
+       {0x3F66, 0x708A},
+       {0x3F67, 0x7761},
+       {0x3F68, 0x7C8B},
+       {0x3F69, 0x7FE0},
+       {0x3F6A, 0x8870},
+       {0x3F6B, 0x9042},
+       {0x3F6C, 0x9154},
+       {0x3F6D, 0x9310},
+       {0x3F6E, 0x9318},
+       {0x3F6F, 0x968F},
+       {0x3F70, 0x745E},
+       {0x3F71, 0x9AC4},
+       {0x3F72, 0x5D07},
+       {0x3F73, 0x5D69},
+       {0x3F74, 0x6570},
+       {0x3F75, 0x67A2},
+       {0x3F76, 0x8DA8},
+       {0x3F77, 0x96DB},
+       {0x3F78, 0x636E},
+       {0x3F79, 0x6749},
+       {0x3F7A, 0x6919},
+       {0x3F7B, 0x83C5},
+       {0x3F7C, 0x9817},
+       {0x3F7D, 0x96C0},
+       {0x3F7E, 0x88FE},
+       {0x4021, 0x6F84},
+       {0x4022, 0x647A},
+       {0x4023, 0x5BF8},
+       {0x4024, 0x4E16},
+       {0x4025, 0x702C},
+       {0x4026, 0x755D},
+       {0x4027, 0x662F},
+       {0x4028, 0x51C4},
+       {0x4029, 0x5236},
+       {0x402A, 0x52E2},
+       {0x402B, 0x59D3},
+       {0x402C, 0x5F81},
+       {0x402D, 0x6027},
+       {0x402E, 0x6210},
+       {0x402F, 0x653F},
+       {0x4030, 0x6574},
+       {0x4031, 0x661F},
+       {0x4032, 0x6674},
+       {0x4033, 0x68F2},
+       {0x4034, 0x6816},
+       {0x4035, 0x6B63},
+       {0x4036, 0x6E05},
+       {0x4037, 0x7272},
+       {0x4038, 0x751F},
+       {0x4039, 0x76DB},
+       {0x403A, 0x7CBE},
+       {0x403B, 0x8056},
+       {0x403C, 0x58F0},
+       {0x403D, 0x88FD},
+       {0x403E, 0x897F},
+       {0x403F, 0x8AA0},
+       {0x4040, 0x8A93},
+       {0x4041, 0x8ACB},
+       {0x4042, 0x901D},
+       {0x4043, 0x9192},
+       {0x4044, 0x9752},
+       {0x4045, 0x9759},
+       {0x4046, 0x6589},
+       {0x4047, 0x7A0E},
+       {0x4048, 0x8106},
+       {0x4049, 0x96BB},
+       {0x404A, 0x5E2D},
+       {0x404B, 0x60DC},
+       {0x404C, 0x621A},
+       {0x404D, 0x65A5},
+       {0x404E, 0x6614},
+       {0x404F, 0x6790},
+       {0x4050, 0x77F3},
+       {0x4051, 0x7A4D},
+       {0x4052, 0x7C4D},
+       {0x4053, 0x7E3E},
+       {0x4054, 0x810A},
+       {0x4055, 0x8CAC},
+       {0x4056, 0x8D64},
+       {0x4057, 0x8DE1},
+       {0x4058, 0x8E5F},
+       {0x4059, 0x78A9},
+       {0x405A, 0x5207},
+       {0x405B, 0x62D9},
+       {0x405C, 0x63A5},
+       {0x405D, 0x6442},
+       {0x405E, 0x6298},
+       {0x405F, 0x8A2D},
+       {0x4060, 0x7A83},
+       {0x4061, 0x7BC0},
+       {0x4062, 0x8AAC},
+       {0x4063, 0x96EA},
+       {0x4064, 0x7D76},
+       {0x4065, 0x820C},
+       {0x4066, 0x8749},
+       {0x4067, 0x4ED9},
+       {0x4068, 0x5148},
+       {0x4069, 0x5343},
+       {0x406A, 0x5360},
+       {0x406B, 0x5BA3},
+       {0x406C, 0x5C02},
+       {0x406D, 0x5C16},
+       {0x406E, 0x5DDD},
+       {0x406F, 0x6226},
+       {0x4070, 0x6247},
+       {0x4071, 0x64B0},
+       {0x4072, 0x6813},
+       {0x4073, 0x6834},
+       {0x4074, 0x6CC9},
+       {0x4075, 0x6D45},
+       {0x4076, 0x6D17},
+       {0x4077, 0x67D3},
+       {0x4078, 0x6F5C},
+       {0x4079, 0x714E},
+       {0x407A, 0x717D},
+       {0x407B, 0x65CB},
+       {0x407C, 0x7A7F},
+       {0x407D, 0x7BAD},
+       {0x407E, 0x7DDA},
+       {0x4121, 0x7E4A},
+       {0x4122, 0x7FA8},
+       {0x4123, 0x817A},
+       {0x4124, 0x821B},
+       {0x4125, 0x8239},
+       {0x4126, 0x85A6},
+       {0x4127, 0x8A6E},
+       {0x4128, 0x8CCE},
+       {0x4129, 0x8DF5},
+       {0x412A, 0x9078},
+       {0x412B, 0x9077},
+       {0x412C, 0x92AD},
+       {0x412D, 0x9291},
+       {0x412E, 0x9583},
+       {0x412F, 0x9BAE},
+       {0x4130, 0x524D},
+       {0x4131, 0x5584},
+       {0x4132, 0x6F38},
+       {0x4133, 0x7136},
+       {0x4134, 0x5168},
+       {0x4135, 0x7985},
+       {0x4136, 0x7E55},
+       {0x4137, 0x81B3},
+       {0x4138, 0x7CCE},
+       {0x4139, 0x564C},
+       {0x413A, 0x5851},
+       {0x413B, 0x5CA8},
+       {0x413C, 0x63AA},
+       {0x413D, 0x66FE},
+       {0x413E, 0x66FD},
+       {0x413F, 0x695A},
+       {0x4140, 0x72D9},
+       {0x4141, 0x758F},
+       {0x4142, 0x758E},
+       {0x4143, 0x790E},
+       {0x4144, 0x7956},
+       {0x4145, 0x79DF},
+       {0x4146, 0x7C97},
+       {0x4147, 0x7D20},
+       {0x4148, 0x7D44},
+       {0x4149, 0x8607},
+       {0x414A, 0x8A34},
+       {0x414B, 0x963B},
+       {0x414C, 0x9061},
+       {0x414D, 0x9F20},
+       {0x414E, 0x50E7},
+       {0x414F, 0x5275},
+       {0x4150, 0x53CC},
+       {0x4151, 0x53E2},
+       {0x4152, 0x5009},
+       {0x4153, 0x55AA},
+       {0x4154, 0x58EE},
+       {0x4155, 0x594F},
+       {0x4156, 0x723D},
+       {0x4157, 0x5B8B},
+       {0x4158, 0x5C64},
+       {0x4159, 0x531D},
+       {0x415A, 0x60E3},
+       {0x415B, 0x60F3},
+       {0x415C, 0x635C},
+       {0x415D, 0x6383},
+       {0x415E, 0x633F},
+       {0x415F, 0x63BB},
+       {0x4160, 0x64CD},
+       {0x4161, 0x65E9},
+       {0x4162, 0x66F9},
+       {0x4163, 0x5DE3},
+       {0x4164, 0x69CD},
+       {0x4165, 0x69FD},
+       {0x4166, 0x6F15},
+       {0x4167, 0x71E5},
+       {0x4168, 0x4E89},
+       {0x4169, 0x75E9},
+       {0x416A, 0x76F8},
+       {0x416B, 0x7A93},
+       {0x416C, 0x7CDF},
+       {0x416D, 0x7DCF},
+       {0x416E, 0x7D9C},
+       {0x416F, 0x8061},
+       {0x4170, 0x8349},
+       {0x4171, 0x8358},
+       {0x4172, 0x846C},
+       {0x4173, 0x84BC},
+       {0x4174, 0x85FB},
+       {0x4175, 0x88C5},
+       {0x4176, 0x8D70},
+       {0x4177, 0x9001},
+       {0x4178, 0x906D},
+       {0x4179, 0x9397},
+       {0x417A, 0x971C},
+       {0x417B, 0x9A12},
+       {0x417C, 0x50CF},
+       {0x417D, 0x5897},
+       {0x417E, 0x618E},
+       {0x4221, 0x81D3},
+       {0x4222, 0x8535},
+       {0x4223, 0x8D08},
+       {0x4224, 0x9020},
+       {0x4225, 0x4FC3},
+       {0x4226, 0x5074},
+       {0x4227, 0x5247},
+       {0x4228, 0x5373},
+       {0x4229, 0x606F},
+       {0x422A, 0x6349},
+       {0x422B, 0x675F},
+       {0x422C, 0x6E2C},
+       {0x422D, 0x8DB3},
+       {0x422E, 0x901F},
+       {0x422F, 0x4FD7},
+       {0x4230, 0x5C5E},
+       {0x4231, 0x8CCA},
+       {0x4232, 0x65CF},
+       {0x4233, 0x7D9A},
+       {0x4234, 0x5352},
+       {0x4235, 0x8896},
+       {0x4236, 0x5176},
+       {0x4237, 0x63C3},
+       {0x4238, 0x5B58},
+       {0x4239, 0x5B6B},
+       {0x423A, 0x5C0A},
+       {0x423B, 0x640D},
+       {0x423C, 0x6751},
+       {0x423D, 0x905C},
+       {0x423E, 0x4ED6},
+       {0x423F, 0x591A},
+       {0x4240, 0x592A},
+       {0x4241, 0x6C70},
+       {0x4242, 0x8A51},
+       {0x4243, 0x553E},
+       {0x4244, 0x5815},
+       {0x4245, 0x59A5},
+       {0x4246, 0x60F0},
+       {0x4247, 0x6253},
+       {0x4248, 0x67C1},
+       {0x4249, 0x8235},
+       {0x424A, 0x6955},
+       {0x424B, 0x9640},
+       {0x424C, 0x99C4},
+       {0x424D, 0x9A28},
+       {0x424E, 0x4F53},
+       {0x424F, 0x5806},
+       {0x4250, 0x5BFE},
+       {0x4251, 0x8010},
+       {0x4252, 0x5CB1},
+       {0x4253, 0x5E2F},
+       {0x4254, 0x5F85},
+       {0x4255, 0x6020},
+       {0x4256, 0x614B},
+       {0x4257, 0x6234},
+       {0x4258, 0x66FF},
+       {0x4259, 0x6CF0},
+       {0x425A, 0x6EDE},
+       {0x425B, 0x80CE},
+       {0x425C, 0x817F},
+       {0x425D, 0x82D4},
+       {0x425E, 0x888B},
+       {0x425F, 0x8CB8},
+       {0x4260, 0x9000},
+       {0x4261, 0x902E},
+       {0x4262, 0x968A},
+       {0x4263, 0x9EDB},
+       {0x4264, 0x9BDB},
+       {0x4265, 0x4EE3},
+       {0x4266, 0x53F0},
+       {0x4267, 0x5927},
+       {0x4268, 0x7B2C},
+       {0x4269, 0x918D},
+       {0x426A, 0x984C},
+       {0x426B, 0x9DF9},
+       {0x426C, 0x6EDD},
+       {0x426D, 0x7027},
+       {0x426E, 0x5353},
+       {0x426F, 0x5544},
+       {0x4270, 0x5B85},
+       {0x4271, 0x6258},
+       {0x4272, 0x629E},
+       {0x4273, 0x62D3},
+       {0x4274, 0x6CA2},
+       {0x4275, 0x6FEF},
+       {0x4276, 0x7422},
+       {0x4277, 0x8A17},
+       {0x4278, 0x9438},
+       {0x4279, 0x6FC1},
+       {0x427A, 0x8AFE},
+       {0x427B, 0x8338},
+       {0x427C, 0x51E7},
+       {0x427D, 0x86F8},
+       {0x427E, 0x53EA},
+       {0x4321, 0x53E9},
+       {0x4322, 0x4F46},
+       {0x4323, 0x9054},
+       {0x4324, 0x8FB0},
+       {0x4325, 0x596A},
+       {0x4326, 0x8131},
+       {0x4327, 0x5DFD},
+       {0x4328, 0x7AEA},
+       {0x4329, 0x8FBF},
+       {0x432A, 0x68DA},
+       {0x432B, 0x8C37},
+       {0x432C, 0x72F8},
+       {0x432D, 0x9C48},
+       {0x432E, 0x6A3D},
+       {0x432F, 0x8AB0},
+       {0x4330, 0x4E39},
+       {0x4331, 0x5358},
+       {0x4332, 0x5606},
+       {0x4333, 0x5766},
+       {0x4334, 0x62C5},
+       {0x4335, 0x63A2},
+       {0x4336, 0x65E6},
+       {0x4337, 0x6B4E},
+       {0x4338, 0x6DE1},
+       {0x4339, 0x6E5B},
+       {0x433A, 0x70AD},
+       {0x433B, 0x77ED},
+       {0x433C, 0x7AEF},
+       {0x433D, 0x7BAA},
+       {0x433E, 0x7DBB},
+       {0x433F, 0x803D},
+       {0x4340, 0x80C6},
+       {0x4341, 0x86CB},
+       {0x4342, 0x8A95},
+       {0x4343, 0x935B},
+       {0x4344, 0x56E3},
+       {0x4345, 0x58C7},
+       {0x4346, 0x5F3E},
+       {0x4347, 0x65AD},
+       {0x4348, 0x6696},
+       {0x4349, 0x6A80},
+       {0x434A, 0x6BB5},
+       {0x434B, 0x7537},
+       {0x434C, 0x8AC7},
+       {0x434D, 0x5024},
+       {0x434E, 0x77E5},
+       {0x434F, 0x5730},
+       {0x4350, 0x5F1B},
+       {0x4351, 0x6065},
+       {0x4352, 0x667A},
+       {0x4353, 0x6C60},
+       {0x4354, 0x75F4},
+       {0x4355, 0x7A1A},
+       {0x4356, 0x7F6E},
+       {0x4357, 0x81F4},
+       {0x4358, 0x8718},
+       {0x4359, 0x9045},
+       {0x435A, 0x99B3},
+       {0x435B, 0x7BC9},
+       {0x435C, 0x755C},
+       {0x435D, 0x7AF9},
+       {0x435E, 0x7B51},
+       {0x435F, 0x84C4},
+       {0x4360, 0x9010},
+       {0x4361, 0x79E9},
+       {0x4362, 0x7A92},
+       {0x4363, 0x8336},
+       {0x4364, 0x5AE1},
+       {0x4365, 0x7740},
+       {0x4366, 0x4E2D},
+       {0x4367, 0x4EF2},
+       {0x4368, 0x5B99},
+       {0x4369, 0x5FE0},
+       {0x436A, 0x62BD},
+       {0x436B, 0x663C},
+       {0x436C, 0x67F1},
+       {0x436D, 0x6CE8},
+       {0x436E, 0x866B},
+       {0x436F, 0x8877},
+       {0x4370, 0x8A3B},
+       {0x4371, 0x914E},
+       {0x4372, 0x92F3},
+       {0x4373, 0x99D0},
+       {0x4374, 0x6A17},
+       {0x4375, 0x7026},
+       {0x4376, 0x732A},
+       {0x4377, 0x82E7},
+       {0x4378, 0x8457},
+       {0x4379, 0x8CAF},
+       {0x437A, 0x4E01},
+       {0x437B, 0x5146},
+       {0x437C, 0x51CB},
+       {0x437D, 0x558B},
+       {0x437E, 0x5BF5},
+       {0x4421, 0x5E16},
+       {0x4422, 0x5E33},
+       {0x4423, 0x5E81},
+       {0x4424, 0x5F14},
+       {0x4425, 0x5F35},
+       {0x4426, 0x5F6B},
+       {0x4427, 0x5FB4},
+       {0x4428, 0x61F2},
+       {0x4429, 0x6311},
+       {0x442A, 0x66A2},
+       {0x442B, 0x671D},
+       {0x442C, 0x6F6E},
+       {0x442D, 0x7252},
+       {0x442E, 0x753A},
+       {0x442F, 0x773A},
+       {0x4430, 0x8074},
+       {0x4431, 0x8139},
+       {0x4432, 0x8178},
+       {0x4433, 0x8776},
+       {0x4434, 0x8ABF},
+       {0x4435, 0x8ADC},
+       {0x4436, 0x8D85},
+       {0x4437, 0x8DF3},
+       {0x4438, 0x929A},
+       {0x4439, 0x9577},
+       {0x443A, 0x9802},
+       {0x443B, 0x9CE5},
+       {0x443C, 0x52C5},
+       {0x443D, 0x6357},
+       {0x443E, 0x76F4},
+       {0x443F, 0x6715},
+       {0x4440, 0x6C88},
+       {0x4441, 0x73CD},
+       {0x4442, 0x8CC3},
+       {0x4443, 0x93AE},
+       {0x4444, 0x9673},
+       {0x4445, 0x6D25},
+       {0x4446, 0x589C},
+       {0x4447, 0x690E},
+       {0x4448, 0x69CC},
+       {0x4449, 0x8FFD},
+       {0x444A, 0x939A},
+       {0x444B, 0x75DB},
+       {0x444C, 0x901A},
+       {0x444D, 0x585A},
+       {0x444E, 0x6802},
+       {0x444F, 0x63B4},
+       {0x4450, 0x69FB},
+       {0x4451, 0x4F43},
+       {0x4452, 0x6F2C},
+       {0x4453, 0x67D8},
+       {0x4454, 0x8FBB},
+       {0x4455, 0x8526},
+       {0x4456, 0x7DB4},
+       {0x4457, 0x9354},
+       {0x4458, 0x693F},
+       {0x4459, 0x6F70},
+       {0x445A, 0x576A},
+       {0x445B, 0x58F7},
+       {0x445C, 0x5B2C},
+       {0x445D, 0x7D2C},
+       {0x445E, 0x722A},
+       {0x445F, 0x540A},
+       {0x4460, 0x91E3},
+       {0x4461, 0x9DB4},
+       {0x4462, 0x4EAD},
+       {0x4463, 0x4F4E},
+       {0x4464, 0x505C},
+       {0x4465, 0x5075},
+       {0x4466, 0x5243},
+       {0x4467, 0x8C9E},
+       {0x4468, 0x5448},
+       {0x4469, 0x5824},
+       {0x446A, 0x5B9A},
+       {0x446B, 0x5E1D},
+       {0x446C, 0x5E95},
+       {0x446D, 0x5EAD},
+       {0x446E, 0x5EF7},
+       {0x446F, 0x5F1F},
+       {0x4470, 0x608C},
+       {0x4471, 0x62B5},
+       {0x4472, 0x633A},
+       {0x4473, 0x63D0},
+       {0x4474, 0x68AF},
+       {0x4475, 0x6C40},
+       {0x4476, 0x7887},
+       {0x4477, 0x798E},
+       {0x4478, 0x7A0B},
+       {0x4479, 0x7DE0},
+       {0x447A, 0x8247},
+       {0x447B, 0x8A02},
+       {0x447C, 0x8AE6},
+       {0x447D, 0x8E44},
+       {0x447E, 0x9013},
+       {0x4521, 0x90B8},
+       {0x4522, 0x912D},
+       {0x4523, 0x91D8},
+       {0x4524, 0x9F0E},
+       {0x4525, 0x6CE5},
+       {0x4526, 0x6458},
+       {0x4527, 0x64E2},
+       {0x4528, 0x6575},
+       {0x4529, 0x6EF4},
+       {0x452A, 0x7684},
+       {0x452B, 0x7B1B},
+       {0x452C, 0x9069},
+       {0x452D, 0x93D1},
+       {0x452E, 0x6EBA},
+       {0x452F, 0x54F2},
+       {0x4530, 0x5FB9},
+       {0x4531, 0x64A4},
+       {0x4532, 0x8F4D},
+       {0x4533, 0x8FED},
+       {0x4534, 0x9244},
+       {0x4535, 0x5178},
+       {0x4536, 0x586B},
+       {0x4537, 0x5929},
+       {0x4538, 0x5C55},
+       {0x4539, 0x5E97},
+       {0x453A, 0x6DFB},
+       {0x453B, 0x7E8F},
+       {0x453C, 0x751C},
+       {0x453D, 0x8CBC},
+       {0x453E, 0x8EE2},
+       {0x453F, 0x985B},
+       {0x4540, 0x70B9},
+       {0x4541, 0x4F1D},
+       {0x4542, 0x6BBF},
+       {0x4543, 0x6FB1},
+       {0x4544, 0x7530},
+       {0x4545, 0x96FB},
+       {0x4546, 0x514E},
+       {0x4547, 0x5410},
+       {0x4548, 0x5835},
+       {0x4549, 0x5857},
+       {0x454A, 0x59AC},
+       {0x454B, 0x5C60},
+       {0x454C, 0x5F92},
+       {0x454D, 0x6597},
+       {0x454E, 0x675C},
+       {0x454F, 0x6E21},
+       {0x4550, 0x767B},
+       {0x4551, 0x83DF},
+       {0x4552, 0x8CED},
+       {0x4553, 0x9014},
+       {0x4554, 0x90FD},
+       {0x4555, 0x934D},
+       {0x4556, 0x7825},
+       {0x4557, 0x783A},
+       {0x4558, 0x52AA},
+       {0x4559, 0x5EA6},
+       {0x455A, 0x571F},
+       {0x455B, 0x5974},
+       {0x455C, 0x6012},
+       {0x455D, 0x5012},
+       {0x455E, 0x515A},
+       {0x455F, 0x51AC},
+       {0x4560, 0x51CD},
+       {0x4561, 0x5200},
+       {0x4562, 0x5510},
+       {0x4563, 0x5854},
+       {0x4564, 0x5858},
+       {0x4565, 0x5957},
+       {0x4566, 0x5B95},
+       {0x4567, 0x5CF6},
+       {0x4568, 0x5D8B},
+       {0x4569, 0x60BC},
+       {0x456A, 0x6295},
+       {0x456B, 0x642D},
+       {0x456C, 0x6771},
+       {0x456D, 0x6843},
+       {0x456E, 0x68BC},
+       {0x456F, 0x68DF},
+       {0x4570, 0x76D7},
+       {0x4571, 0x6DD8},
+       {0x4572, 0x6E6F},
+       {0x4573, 0x6D9B},
+       {0x4574, 0x706F},
+       {0x4575, 0x71C8},
+       {0x4576, 0x5F53},
+       {0x4577, 0x75D8},
+       {0x4578, 0x7977},
+       {0x4579, 0x7B49},
+       {0x457A, 0x7B54},
+       {0x457B, 0x7B52},
+       {0x457C, 0x7CD6},
+       {0x457D, 0x7D71},
+       {0x457E, 0x5230},
+       {0x4621, 0x8463},
+       {0x4622, 0x8569},
+       {0x4623, 0x85E4},
+       {0x4624, 0x8A0E},
+       {0x4625, 0x8B04},
+       {0x4626, 0x8C46},
+       {0x4627, 0x8E0F},
+       {0x4628, 0x9003},
+       {0x4629, 0x900F},
+       {0x462A, 0x9419},
+       {0x462B, 0x9676},
+       {0x462C, 0x982D},
+       {0x462D, 0x9A30},
+       {0x462E, 0x95D8},
+       {0x462F, 0x50CD},
+       {0x4630, 0x52D5},
+       {0x4631, 0x540C},
+       {0x4632, 0x5802},
+       {0x4633, 0x5C0E},
+       {0x4634, 0x61A7},
+       {0x4635, 0x649E},
+       {0x4636, 0x6D1E},
+       {0x4637, 0x77B3},
+       {0x4638, 0x7AE5},
+       {0x4639, 0x80F4},
+       {0x463A, 0x8404},
+       {0x463B, 0x9053},
+       {0x463C, 0x9285},
+       {0x463D, 0x5CE0},
+       {0x463E, 0x9D07},
+       {0x463F, 0x533F},
+       {0x4640, 0x5F97},
+       {0x4641, 0x5FB3},
+       {0x4642, 0x6D9C},
+       {0x4643, 0x7279},
+       {0x4644, 0x7763},
+       {0x4645, 0x79BF},
+       {0x4646, 0x7BE4},
+       {0x4647, 0x6BD2},
+       {0x4648, 0x72EC},
+       {0x4649, 0x8AAD},
+       {0x464A, 0x6803},
+       {0x464B, 0x6A61},
+       {0x464C, 0x51F8},
+       {0x464D, 0x7A81},
+       {0x464E, 0x6934},
+       {0x464F, 0x5C4A},
+       {0x4650, 0x9CF6},
+       {0x4651, 0x82EB},
+       {0x4652, 0x5BC5},
+       {0x4653, 0x9149},
+       {0x4654, 0x701E},
+       {0x4655, 0x5678},
+       {0x4656, 0x5C6F},
+       {0x4657, 0x60C7},
+       {0x4658, 0x6566},
+       {0x4659, 0x6C8C},
+       {0x465A, 0x8C5A},
+       {0x465B, 0x9041},
+       {0x465C, 0x9813},
+       {0x465D, 0x5451},
+       {0x465E, 0x66C7},
+       {0x465F, 0x920D},
+       {0x4660, 0x5948},
+       {0x4661, 0x90A3},
+       {0x4662, 0x5185},
+       {0x4663, 0x4E4D},
+       {0x4664, 0x51EA},
+       {0x4665, 0x8599},
+       {0x4666, 0x8B0E},
+       {0x4667, 0x7058},
+       {0x4668, 0x637A},
+       {0x4669, 0x934B},
+       {0x466A, 0x6962},
+       {0x466B, 0x99B4},
+       {0x466C, 0x7E04},
+       {0x466D, 0x7577},
+       {0x466E, 0x5357},
+       {0x466F, 0x6960},
+       {0x4670, 0x8EDF},
+       {0x4671, 0x96E3},
+       {0x4672, 0x6C5D},
+       {0x4673, 0x4E8C},
+       {0x4674, 0x5C3C},
+       {0x4675, 0x5F10},
+       {0x4676, 0x8FE9},
+       {0x4677, 0x5302},
+       {0x4678, 0x8CD1},
+       {0x4679, 0x8089},
+       {0x467A, 0x8679},
+       {0x467B, 0x5EFF},
+       {0x467C, 0x65E5},
+       {0x467D, 0x4E73},
+       {0x467E, 0x5165},
+       {0x4721, 0x5982},
+       {0x4722, 0x5C3F},
+       {0x4723, 0x97EE},
+       {0x4724, 0x4EFB},
+       {0x4725, 0x598A},
+       {0x4726, 0x5FCD},
+       {0x4727, 0x8A8D},
+       {0x4728, 0x6FE1},
+       {0x4729, 0x79B0},
+       {0x472A, 0x7962},
+       {0x472B, 0x5BE7},
+       {0x472C, 0x8471},
+       {0x472D, 0x732B},
+       {0x472E, 0x71B1},
+       {0x472F, 0x5E74},
+       {0x4730, 0x5FF5},
+       {0x4731, 0x637B},
+       {0x4732, 0x649A},
+       {0x4733, 0x71C3},
+       {0x4734, 0x7C98},
+       {0x4735, 0x4E43},
+       {0x4736, 0x5EFC},
+       {0x4737, 0x4E4B},
+       {0x4738, 0x57DC},
+       {0x4739, 0x56A2},
+       {0x473A, 0x60A9},
+       {0x473B, 0x6FC3},
+       {0x473C, 0x7D0D},
+       {0x473D, 0x80FD},
+       {0x473E, 0x8133},
+       {0x473F, 0x81BF},
+       {0x4740, 0x8FB2},
+       {0x4741, 0x8997},
+       {0x4742, 0x86A4},
+       {0x4743, 0x5DF4},
+       {0x4744, 0x628A},
+       {0x4745, 0x64AD},
+       {0x4746, 0x8987},
+       {0x4747, 0x6777},
+       {0x4748, 0x6CE2},
+       {0x4749, 0x6D3E},
+       {0x474A, 0x7436},
+       {0x474B, 0x7834},
+       {0x474C, 0x5A46},
+       {0x474D, 0x7F75},
+       {0x474E, 0x82AD},
+       {0x474F, 0x99AC},
+       {0x4750, 0x4FF3},
+       {0x4751, 0x5EC3},
+       {0x4752, 0x62DD},
+       {0x4753, 0x6392},
+       {0x4754, 0x6557},
+       {0x4755, 0x676F},
+       {0x4756, 0x76C3},
+       {0x4757, 0x724C},
+       {0x4758, 0x80CC},
+       {0x4759, 0x80BA},
+       {0x475A, 0x8F29},
+       {0x475B, 0x914D},
+       {0x475C, 0x500D},
+       {0x475D, 0x57F9},
+       {0x475E, 0x5A92},
+       {0x475F, 0x6885},
+       {0x4760, 0x6973},
+       {0x4761, 0x7164},
+       {0x4762, 0x72FD},
+       {0x4763, 0x8CB7},
+       {0x4764, 0x58F2},
+       {0x4765, 0x8CE0},
+       {0x4766, 0x966A},
+       {0x4767, 0x9019},
+       {0x4768, 0x877F},
+       {0x4769, 0x79E4},
+       {0x476A, 0x77E7},
+       {0x476B, 0x8429},
+       {0x476C, 0x4F2F},
+       {0x476D, 0x5265},
+       {0x476E, 0x535A},
+       {0x476F, 0x62CD},
+       {0x4770, 0x67CF},
+       {0x4771, 0x6CCA},
+       {0x4772, 0x767D},
+       {0x4773, 0x7B94},
+       {0x4774, 0x7C95},
+       {0x4775, 0x8236},
+       {0x4776, 0x8584},
+       {0x4777, 0x8FEB},
+       {0x4778, 0x66DD},
+       {0x4779, 0x6F20},
+       {0x477A, 0x7206},
+       {0x477B, 0x7E1B},
+       {0x477C, 0x83AB},
+       {0x477D, 0x99C1},
+       {0x477E, 0x9EA6},
+       {0x4821, 0x51FD},
+       {0x4822, 0x7BB1},
+       {0x4823, 0x7872},
+       {0x4824, 0x7BB8},
+       {0x4825, 0x8087},
+       {0x4826, 0x7B48},
+       {0x4827, 0x6AE8},
+       {0x4828, 0x5E61},
+       {0x4829, 0x808C},
+       {0x482A, 0x7551},
+       {0x482B, 0x7560},
+       {0x482C, 0x516B},
+       {0x482D, 0x9262},
+       {0x482E, 0x6E8C},
+       {0x482F, 0x767A},
+       {0x4830, 0x9197},
+       {0x4831, 0x9AEA},
+       {0x4832, 0x4F10},
+       {0x4833, 0x7F70},
+       {0x4834, 0x629C},
+       {0x4835, 0x7B4F},
+       {0x4836, 0x95A5},
+       {0x4837, 0x9CE9},
+       {0x4838, 0x567A},
+       {0x4839, 0x5859},
+       {0x483A, 0x86E4},
+       {0x483B, 0x96BC},
+       {0x483C, 0x4F34},
+       {0x483D, 0x5224},
+       {0x483E, 0x534A},
+       {0x483F, 0x53CD},
+       {0x4840, 0x53DB},
+       {0x4841, 0x5E06},
+       {0x4842, 0x642C},
+       {0x4843, 0x6591},
+       {0x4844, 0x677F},
+       {0x4845, 0x6C3E},
+       {0x4846, 0x6C4E},
+       {0x4847, 0x7248},
+       {0x4848, 0x72AF},
+       {0x4849, 0x73ED},
+       {0x484A, 0x7554},
+       {0x484B, 0x7E41},
+       {0x484C, 0x822C},
+       {0x484D, 0x85E9},
+       {0x484E, 0x8CA9},
+       {0x484F, 0x7BC4},
+       {0x4850, 0x91C6},
+       {0x4851, 0x7169},
+       {0x4852, 0x9812},
+       {0x4853, 0x98EF},
+       {0x4854, 0x633D},
+       {0x4855, 0x6669},
+       {0x4856, 0x756A},
+       {0x4857, 0x76E4},
+       {0x4858, 0x78D0},
+       {0x4859, 0x8543},
+       {0x485A, 0x86EE},
+       {0x485B, 0x532A},
+       {0x485C, 0x5351},
+       {0x485D, 0x5426},
+       {0x485E, 0x5983},
+       {0x485F, 0x5E87},
+       {0x4860, 0x5F7C},
+       {0x4861, 0x60B2},
+       {0x4862, 0x6249},
+       {0x4863, 0x6279},
+       {0x4864, 0x62AB},
+       {0x4865, 0x6590},
+       {0x4866, 0x6BD4},
+       {0x4867, 0x6CCC},
+       {0x4868, 0x75B2},
+       {0x4869, 0x76AE},
+       {0x486A, 0x7891},
+       {0x486B, 0x79D8},
+       {0x486C, 0x7DCB},
+       {0x486D, 0x7F77},
+       {0x486E, 0x80A5},
+       {0x486F, 0x88AB},
+       {0x4870, 0x8AB9},
+       {0x4871, 0x8CBB},
+       {0x4872, 0x907F},
+       {0x4873, 0x975E},
+       {0x4874, 0x98DB},
+       {0x4875, 0x6A0B},
+       {0x4876, 0x7C38},
+       {0x4877, 0x5099},
+       {0x4878, 0x5C3E},
+       {0x4879, 0x5FAE},
+       {0x487A, 0x6787},
+       {0x487B, 0x6BD8},
+       {0x487C, 0x7435},
+       {0x487D, 0x7709},
+       {0x487E, 0x7F8E},
+       {0x4921, 0x9F3B},
+       {0x4922, 0x67CA},
+       {0x4923, 0x7A17},
+       {0x4924, 0x5339},
+       {0x4925, 0x758B},
+       {0x4926, 0x9AED},
+       {0x4927, 0x5F66},
+       {0x4928, 0x819D},
+       {0x4929, 0x83F1},
+       {0x492A, 0x8098},
+       {0x492B, 0x5F3C},
+       {0x492C, 0x5FC5},
+       {0x492D, 0x7562},
+       {0x492E, 0x7B46},
+       {0x492F, 0x903C},
+       {0x4930, 0x6867},
+       {0x4931, 0x59EB},
+       {0x4932, 0x5A9B},
+       {0x4933, 0x7D10},
+       {0x4934, 0x767E},
+       {0x4935, 0x8B2C},
+       {0x4936, 0x4FF5},
+       {0x4937, 0x5F6A},
+       {0x4938, 0x6A19},
+       {0x4939, 0x6C37},
+       {0x493A, 0x6F02},
+       {0x493B, 0x74E2},
+       {0x493C, 0x7968},
+       {0x493D, 0x8868},
+       {0x493E, 0x8A55},
+       {0x493F, 0x8C79},
+       {0x4940, 0x5EDF},
+       {0x4941, 0x63CF},
+       {0x4942, 0x75C5},
+       {0x4943, 0x79D2},
+       {0x4944, 0x82D7},
+       {0x4945, 0x9328},
+       {0x4946, 0x92F2},
+       {0x4947, 0x849C},
+       {0x4948, 0x86ED},
+       {0x4949, 0x9C2D},
+       {0x494A, 0x54C1},
+       {0x494B, 0x5F6C},
+       {0x494C, 0x658C},
+       {0x494D, 0x6D5C},
+       {0x494E, 0x7015},
+       {0x494F, 0x8CA7},
+       {0x4950, 0x8CD3},
+       {0x4951, 0x983B},
+       {0x4952, 0x654F},
+       {0x4953, 0x74F6},
+       {0x4954, 0x4E0D},
+       {0x4955, 0x4ED8},
+       {0x4956, 0x57E0},
+       {0x4957, 0x592B},
+       {0x4958, 0x5A66},
+       {0x4959, 0x5BCC},
+       {0x495A, 0x51A8},
+       {0x495B, 0x5E03},
+       {0x495C, 0x5E9C},
+       {0x495D, 0x6016},
+       {0x495E, 0x6276},
+       {0x495F, 0x6577},
+       {0x4960, 0x65A7},
+       {0x4961, 0x666E},
+       {0x4962, 0x6D6E},
+       {0x4963, 0x7236},
+       {0x4964, 0x7B26},
+       {0x4965, 0x8150},
+       {0x4966, 0x819A},
+       {0x4967, 0x8299},
+       {0x4968, 0x8B5C},
+       {0x4969, 0x8CA0},
+       {0x496A, 0x8CE6},
+       {0x496B, 0x8D74},
+       {0x496C, 0x961C},
+       {0x496D, 0x9644},
+       {0x496E, 0x4FAE},
+       {0x496F, 0x64AB},
+       {0x4970, 0x6B66},
+       {0x4971, 0x821E},
+       {0x4972, 0x8461},
+       {0x4973, 0x856A},
+       {0x4974, 0x90E8},
+       {0x4975, 0x5C01},
+       {0x4976, 0x6953},
+       {0x4977, 0x98A8},
+       {0x4978, 0x847A},
+       {0x4979, 0x8557},
+       {0x497A, 0x4F0F},
+       {0x497B, 0x526F},
+       {0x497C, 0x5FA9},
+       {0x497D, 0x5E45},
+       {0x497E, 0x670D},
+       {0x4A21, 0x798F},
+       {0x4A22, 0x8179},
+       {0x4A23, 0x8907},
+       {0x4A24, 0x8986},
+       {0x4A25, 0x6DF5},
+       {0x4A26, 0x5F17},
+       {0x4A27, 0x6255},
+       {0x4A28, 0x6CB8},
+       {0x4A29, 0x4ECF},
+       {0x4A2A, 0x7269},
+       {0x4A2B, 0x9B92},
+       {0x4A2C, 0x5206},
+       {0x4A2D, 0x543B},
+       {0x4A2E, 0x5674},
+       {0x4A2F, 0x58B3},
+       {0x4A30, 0x61A4},
+       {0x4A31, 0x626E},
+       {0x4A32, 0x711A},
+       {0x4A33, 0x596E},
+       {0x4A34, 0x7C89},
+       {0x4A35, 0x7CDE},
+       {0x4A36, 0x7D1B},
+       {0x4A37, 0x96F0},
+       {0x4A38, 0x6587},
+       {0x4A39, 0x805E},
+       {0x4A3A, 0x4E19},
+       {0x4A3B, 0x4F75},
+       {0x4A3C, 0x5175},
+       {0x4A3D, 0x5840},
+       {0x4A3E, 0x5E63},
+       {0x4A3F, 0x5E73},
+       {0x4A40, 0x5F0A},
+       {0x4A41, 0x67C4},
+       {0x4A42, 0x4E26},
+       {0x4A43, 0x853D},
+       {0x4A44, 0x9589},
+       {0x4A45, 0x965B},
+       {0x4A46, 0x7C73},
+       {0x4A47, 0x9801},
+       {0x4A48, 0x50FB},
+       {0x4A49, 0x58C1},
+       {0x4A4A, 0x7656},
+       {0x4A4B, 0x78A7},
+       {0x4A4C, 0x5225},
+       {0x4A4D, 0x77A5},
+       {0x4A4E, 0x8511},
+       {0x4A4F, 0x7B86},
+       {0x4A50, 0x504F},
+       {0x4A51, 0x5909},
+       {0x4A52, 0x7247},
+       {0x4A53, 0x7BC7},
+       {0x4A54, 0x7DE8},
+       {0x4A55, 0x8FBA},
+       {0x4A56, 0x8FD4},
+       {0x4A57, 0x904D},
+       {0x4A58, 0x4FBF},
+       {0x4A59, 0x52C9},
+       {0x4A5A, 0x5A29},
+       {0x4A5B, 0x5F01},
+       {0x4A5C, 0x97AD},
+       {0x4A5D, 0x4FDD},
+       {0x4A5E, 0x8217},
+       {0x4A5F, 0x92EA},
+       {0x4A60, 0x5703},
+       {0x4A61, 0x6355},
+       {0x4A62, 0x6B69},
+       {0x4A63, 0x752B},
+       {0x4A64, 0x88DC},
+       {0x4A65, 0x8F14},
+       {0x4A66, 0x7A42},
+       {0x4A67, 0x52DF},
+       {0x4A68, 0x5893},
+       {0x4A69, 0x6155},
+       {0x4A6A, 0x620A},
+       {0x4A6B, 0x66AE},
+       {0x4A6C, 0x6BCD},
+       {0x4A6D, 0x7C3F},
+       {0x4A6E, 0x83E9},
+       {0x4A6F, 0x5023},
+       {0x4A70, 0x4FF8},
+       {0x4A71, 0x5305},
+       {0x4A72, 0x5446},
+       {0x4A73, 0x5831},
+       {0x4A74, 0x5949},
+       {0x4A75, 0x5B9D},
+       {0x4A76, 0x5CF0},
+       {0x4A77, 0x5CEF},
+       {0x4A78, 0x5D29},
+       {0x4A79, 0x5E96},
+       {0x4A7A, 0x62B1},
+       {0x4A7B, 0x6367},
+       {0x4A7C, 0x653E},
+       {0x4A7D, 0x65B9},
+       {0x4A7E, 0x670B},
+       {0x4B21, 0x6CD5},
+       {0x4B22, 0x6CE1},
+       {0x4B23, 0x70F9},
+       {0x4B24, 0x7832},
+       {0x4B25, 0x7E2B},
+       {0x4B26, 0x80DE},
+       {0x4B27, 0x82B3},
+       {0x4B28, 0x840C},
+       {0x4B29, 0x84EC},
+       {0x4B2A, 0x8702},
+       {0x4B2B, 0x8912},
+       {0x4B2C, 0x8A2A},
+       {0x4B2D, 0x8C4A},
+       {0x4B2E, 0x90A6},
+       {0x4B2F, 0x92D2},
+       {0x4B30, 0x98FD},
+       {0x4B31, 0x9CF3},
+       {0x4B32, 0x9D6C},
+       {0x4B33, 0x4E4F},
+       {0x4B34, 0x4EA1},
+       {0x4B35, 0x508D},
+       {0x4B36, 0x5256},
+       {0x4B37, 0x574A},
+       {0x4B38, 0x59A8},
+       {0x4B39, 0x5E3D},
+       {0x4B3A, 0x5FD8},
+       {0x4B3B, 0x5FD9},
+       {0x4B3C, 0x623F},
+       {0x4B3D, 0x66B4},
+       {0x4B3E, 0x671B},
+       {0x4B3F, 0x67D0},
+       {0x4B40, 0x68D2},
+       {0x4B41, 0x5192},
+       {0x4B42, 0x7D21},
+       {0x4B43, 0x80AA},
+       {0x4B44, 0x81A8},
+       {0x4B45, 0x8B00},
+       {0x4B46, 0x8C8C},
+       {0x4B47, 0x8CBF},
+       {0x4B48, 0x927E},
+       {0x4B49, 0x9632},
+       {0x4B4A, 0x5420},
+       {0x4B4B, 0x982C},
+       {0x4B4C, 0x5317},
+       {0x4B4D, 0x50D5},
+       {0x4B4E, 0x535C},
+       {0x4B4F, 0x58A8},
+       {0x4B50, 0x64B2},
+       {0x4B51, 0x6734},
+       {0x4B52, 0x7267},
+       {0x4B53, 0x7766},
+       {0x4B54, 0x7A46},
+       {0x4B55, 0x91E6},
+       {0x4B56, 0x52C3},
+       {0x4B57, 0x6CA1},
+       {0x4B58, 0x6B86},
+       {0x4B59, 0x5800},
+       {0x4B5A, 0x5E4C},
+       {0x4B5B, 0x5954},
+       {0x4B5C, 0x672C},
+       {0x4B5D, 0x7FFB},
+       {0x4B5E, 0x51E1},
+       {0x4B5F, 0x76C6},
+       {0x4B60, 0x6469},
+       {0x4B61, 0x78E8},
+       {0x4B62, 0x9B54},
+       {0x4B63, 0x9EBB},
+       {0x4B64, 0x57CB},
+       {0x4B65, 0x59B9},
+       {0x4B66, 0x6627},
+       {0x4B67, 0x679A},
+       {0x4B68, 0x6BCE},
+       {0x4B69, 0x54E9},
+       {0x4B6A, 0x69D9},
+       {0x4B6B, 0x5E55},
+       {0x4B6C, 0x819C},
+       {0x4B6D, 0x6795},
+       {0x4B6E, 0x9BAA},
+       {0x4B6F, 0x67FE},
+       {0x4B70, 0x9C52},
+       {0x4B71, 0x685D},
+       {0x4B72, 0x4EA6},
+       {0x4B73, 0x4FE3},
+       {0x4B74, 0x53C8},
+       {0x4B75, 0x62B9},
+       {0x4B76, 0x672B},
+       {0x4B77, 0x6CAB},
+       {0x4B78, 0x8FC4},
+       {0x4B79, 0x4FAD},
+       {0x4B7A, 0x7E6D},
+       {0x4B7B, 0x9EBF},
+       {0x4B7C, 0x4E07},
+       {0x4B7D, 0x6162},
+       {0x4B7E, 0x6E80},
+       {0x4C21, 0x6F2B},
+       {0x4C22, 0x8513},
+       {0x4C23, 0x5473},
+       {0x4C24, 0x672A},
+       {0x4C25, 0x9B45},
+       {0x4C26, 0x5DF3},
+       {0x4C27, 0x7B95},
+       {0x4C28, 0x5CAC},
+       {0x4C29, 0x5BC6},
+       {0x4C2A, 0x871C},
+       {0x4C2B, 0x6E4A},
+       {0x4C2C, 0x84D1},
+       {0x4C2D, 0x7A14},
+       {0x4C2E, 0x8108},
+       {0x4C2F, 0x5999},
+       {0x4C30, 0x7C8D},
+       {0x4C31, 0x6C11},
+       {0x4C32, 0x7720},
+       {0x4C33, 0x52D9},
+       {0x4C34, 0x5922},
+       {0x4C35, 0x7121},
+       {0x4C36, 0x725F},
+       {0x4C37, 0x77DB},
+       {0x4C38, 0x9727},
+       {0x4C39, 0x9D61},
+       {0x4C3A, 0x690B},
+       {0x4C3B, 0x5A7F},
+       {0x4C3C, 0x5A18},
+       {0x4C3D, 0x51A5},
+       {0x4C3E, 0x540D},
+       {0x4C3F, 0x547D},
+       {0x4C40, 0x660E},
+       {0x4C41, 0x76DF},
+       {0x4C42, 0x8FF7},
+       {0x4C43, 0x9298},
+       {0x4C44, 0x9CF4},
+       {0x4C45, 0x59EA},
+       {0x4C46, 0x725D},
+       {0x4C47, 0x6EC5},
+       {0x4C48, 0x514D},
+       {0x4C49, 0x68C9},
+       {0x4C4A, 0x7DBF},
+       {0x4C4B, 0x7DEC},
+       {0x4C4C, 0x9762},
+       {0x4C4D, 0x9EBA},
+       {0x4C4E, 0x6478},
+       {0x4C4F, 0x6A21},
+       {0x4C50, 0x8302},
+       {0x4C51, 0x5984},
+       {0x4C52, 0x5B5F},
+       {0x4C53, 0x6BDB},
+       {0x4C54, 0x731B},
+       {0x4C55, 0x76F2},
+       {0x4C56, 0x7DB2},
+       {0x4C57, 0x8017},
+       {0x4C58, 0x8499},
+       {0x4C59, 0x5132},
+       {0x4C5A, 0x6728},
+       {0x4C5B, 0x9ED9},
+       {0x4C5C, 0x76EE},
+       {0x4C5D, 0x6762},
+       {0x4C5E, 0x52FF},
+       {0x4C5F, 0x9905},
+       {0x4C60, 0x5C24},
+       {0x4C61, 0x623B},
+       {0x4C62, 0x7C7E},
+       {0x4C63, 0x8CB0},
+       {0x4C64, 0x554F},
+       {0x4C65, 0x60B6},
+       {0x4C66, 0x7D0B},
+       {0x4C67, 0x9580},
+       {0x4C68, 0x5301},
+       {0x4C69, 0x4E5F},
+       {0x4C6A, 0x51B6},
+       {0x4C6B, 0x591C},
+       {0x4C6C, 0x723A},
+       {0x4C6D, 0x8036},
+       {0x4C6E, 0x91CE},
+       {0x4C6F, 0x5F25},
+       {0x4C70, 0x77E2},
+       {0x4C71, 0x5384},
+       {0x4C72, 0x5F79},
+       {0x4C73, 0x7D04},
+       {0x4C74, 0x85AC},
+       {0x4C75, 0x8A33},
+       {0x4C76, 0x8E8D},
+       {0x4C77, 0x9756},
+       {0x4C78, 0x67F3},
+       {0x4C79, 0x85AE},
+       {0x4C7A, 0x9453},
+       {0x4C7B, 0x6109},
+       {0x4C7C, 0x6108},
+       {0x4C7D, 0x6CB9},
+       {0x4C7E, 0x7652},
+       {0x4D21, 0x8AED},
+       {0x4D22, 0x8F38},
+       {0x4D23, 0x552F},
+       {0x4D24, 0x4F51},
+       {0x4D25, 0x512A},
+       {0x4D26, 0x52C7},
+       {0x4D27, 0x53CB},
+       {0x4D28, 0x5BA5},
+       {0x4D29, 0x5E7D},
+       {0x4D2A, 0x60A0},
+       {0x4D2B, 0x6182},
+       {0x4D2C, 0x63D6},
+       {0x4D2D, 0x6709},
+       {0x4D2E, 0x67DA},
+       {0x4D2F, 0x6E67},
+       {0x4D30, 0x6D8C},
+       {0x4D31, 0x7336},
+       {0x4D32, 0x7337},
+       {0x4D33, 0x7531},
+       {0x4D34, 0x7950},
+       {0x4D35, 0x88D5},
+       {0x4D36, 0x8A98},
+       {0x4D37, 0x904A},
+       {0x4D38, 0x9091},
+       {0x4D39, 0x90F5},
+       {0x4D3A, 0x96C4},
+       {0x4D3B, 0x878D},
+       {0x4D3C, 0x5915},
+       {0x4D3D, 0x4E88},
+       {0x4D3E, 0x4F59},
+       {0x4D3F, 0x4E0E},
+       {0x4D40, 0x8A89},
+       {0x4D41, 0x8F3F},
+       {0x4D42, 0x9810},
+       {0x4D43, 0x50AD},
+       {0x4D44, 0x5E7C},
+       {0x4D45, 0x5996},
+       {0x4D46, 0x5BB9},
+       {0x4D47, 0x5EB8},
+       {0x4D48, 0x63DA},
+       {0x4D49, 0x63FA},
+       {0x4D4A, 0x64C1},
+       {0x4D4B, 0x66DC},
+       {0x4D4C, 0x694A},
+       {0x4D4D, 0x69D8},
+       {0x4D4E, 0x6D0B},
+       {0x4D4F, 0x6EB6},
+       {0x4D50, 0x7194},
+       {0x4D51, 0x7528},
+       {0x4D52, 0x7AAF},
+       {0x4D53, 0x7F8A},
+       {0x4D54, 0x8000},
+       {0x4D55, 0x8449},
+       {0x4D56, 0x84C9},
+       {0x4D57, 0x8981},
+       {0x4D58, 0x8B21},
+       {0x4D59, 0x8E0A},
+       {0x4D5A, 0x9065},
+       {0x4D5B, 0x967D},
+       {0x4D5C, 0x990A},
+       {0x4D5D, 0x617E},
+       {0x4D5E, 0x6291},
+       {0x4D5F, 0x6B32},
+       {0x4D60, 0x6C83},
+       {0x4D61, 0x6D74},
+       {0x4D62, 0x7FCC},
+       {0x4D63, 0x7FFC},
+       {0x4D64, 0x6DC0},
+       {0x4D65, 0x7F85},
+       {0x4D66, 0x87BA},
+       {0x4D67, 0x88F8},
+       {0x4D68, 0x6765},
+       {0x4D69, 0x83B1},
+       {0x4D6A, 0x983C},
+       {0x4D6B, 0x96F7},
+       {0x4D6C, 0x6D1B},
+       {0x4D6D, 0x7D61},
+       {0x4D6E, 0x843D},
+       {0x4D6F, 0x916A},
+       {0x4D70, 0x4E71},
+       {0x4D71, 0x5375},
+       {0x4D72, 0x5D50},
+       {0x4D73, 0x6B04},
+       {0x4D74, 0x6FEB},
+       {0x4D75, 0x85CD},
+       {0x4D76, 0x862D},
+       {0x4D77, 0x89A7},
+       {0x4D78, 0x5229},
+       {0x4D79, 0x540F},
+       {0x4D7A, 0x5C65},
+       {0x4D7B, 0x674E},
+       {0x4D7C, 0x68A8},
+       {0x4D7D, 0x7406},
+       {0x4D7E, 0x7483},
+       {0x4E21, 0x75E2},
+       {0x4E22, 0x88CF},
+       {0x4E23, 0x88E1},
+       {0x4E24, 0x91CC},
+       {0x4E25, 0x96E2},
+       {0x4E26, 0x9678},
+       {0x4E27, 0x5F8B},
+       {0x4E28, 0x7387},
+       {0x4E29, 0x7ACB},
+       {0x4E2A, 0x844E},
+       {0x4E2B, 0x63A0},
+       {0x4E2C, 0x7565},
+       {0x4E2D, 0x5289},
+       {0x4E2E, 0x6D41},
+       {0x4E2F, 0x6E9C},
+       {0x4E30, 0x7409},
+       {0x4E31, 0x7559},
+       {0x4E32, 0x786B},
+       {0x4E33, 0x7C92},
+       {0x4E34, 0x9686},
+       {0x4E35, 0x7ADC},
+       {0x4E36, 0x9F8D},
+       {0x4E37, 0x4FB6},
+       {0x4E38, 0x616E},
+       {0x4E39, 0x65C5},
+       {0x4E3A, 0x865C},
+       {0x4E3B, 0x4E86},
+       {0x4E3C, 0x4EAE},
+       {0x4E3D, 0x50DA},
+       {0x4E3E, 0x4E21},
+       {0x4E3F, 0x51CC},
+       {0x4E40, 0x5BEE},
+       {0x4E41, 0x6599},
+       {0x4E42, 0x6881},
+       {0x4E43, 0x6DBC},
+       {0x4E44, 0x731F},
+       {0x4E45, 0x7642},
+       {0x4E46, 0x77AD},
+       {0x4E47, 0x7A1C},
+       {0x4E48, 0x7CE7},
+       {0x4E49, 0x826F},
+       {0x4E4A, 0x8AD2},
+       {0x4E4B, 0x907C},
+       {0x4E4C, 0x91CF},
+       {0x4E4D, 0x9675},
+       {0x4E4E, 0x9818},
+       {0x4E4F, 0x529B},
+       {0x4E50, 0x7DD1},
+       {0x4E51, 0x502B},
+       {0x4E52, 0x5398},
+       {0x4E53, 0x6797},
+       {0x4E54, 0x6DCB},
+       {0x4E55, 0x71D0},
+       {0x4E56, 0x7433},
+       {0x4E57, 0x81E8},
+       {0x4E58, 0x8F2A},
+       {0x4E59, 0x96A3},
+       {0x4E5A, 0x9C57},
+       {0x4E5B, 0x9E9F},
+       {0x4E5C, 0x7460},
+       {0x4E5D, 0x5841},
+       {0x4E5E, 0x6D99},
+       {0x4E5F, 0x7D2F},
+       {0x4E60, 0x985E},
+       {0x4E61, 0x4EE4},
+       {0x4E62, 0x4F36},
+       {0x4E63, 0x4F8B},
+       {0x4E64, 0x51B7},
+       {0x4E65, 0x52B1},
+       {0x4E66, 0x5DBA},
+       {0x4E67, 0x601C},
+       {0x4E68, 0x73B2},
+       {0x4E69, 0x793C},
+       {0x4E6A, 0x82D3},
+       {0x4E6B, 0x9234},
+       {0x4E6C, 0x96B7},
+       {0x4E6D, 0x96F6},
+       {0x4E6E, 0x970A},
+       {0x4E6F, 0x9E97},
+       {0x4E70, 0x9F62},
+       {0x4E71, 0x66A6},
+       {0x4E72, 0x6B74},
+       {0x4E73, 0x5217},
+       {0x4E74, 0x52A3},
+       {0x4E75, 0x70C8},
+       {0x4E76, 0x88C2},
+       {0x4E77, 0x5EC9},
+       {0x4E78, 0x604B},
+       {0x4E79, 0x6190},
+       {0x4E7A, 0x6F23},
+       {0x4E7B, 0x7149},
+       {0x4E7C, 0x7C3E},
+       {0x4E7D, 0x7DF4},
+       {0x4E7E, 0x806F},
+       {0x4F21, 0x84EE},
+       {0x4F22, 0x9023},
+       {0x4F23, 0x932C},
+       {0x4F24, 0x5442},
+       {0x4F25, 0x9B6F},
+       {0x4F26, 0x6AD3},
+       {0x4F27, 0x7089},
+       {0x4F28, 0x8CC2},
+       {0x4F29, 0x8DEF},
+       {0x4F2A, 0x9732},
+       {0x4F2B, 0x52B4},
+       {0x4F2C, 0x5A41},
+       {0x4F2D, 0x5ECA},
+       {0x4F2E, 0x5F04},
+       {0x4F2F, 0x6717},
+       {0x4F30, 0x697C},
+       {0x4F31, 0x6994},
+       {0x4F32, 0x6D6A},
+       {0x4F33, 0x6F0F},
+       {0x4F34, 0x7262},
+       {0x4F35, 0x72FC},
+       {0x4F36, 0x7BED},
+       {0x4F37, 0x8001},
+       {0x4F38, 0x807E},
+       {0x4F39, 0x874B},
+       {0x4F3A, 0x90CE},
+       {0x4F3B, 0x516D},
+       {0x4F3C, 0x9E93},
+       {0x4F3D, 0x7984},
+       {0x4F3E, 0x808B},
+       {0x4F3F, 0x9332},
+       {0x4F40, 0x8AD6},
+       {0x4F41, 0x502D},
+       {0x4F42, 0x548C},
+       {0x4F43, 0x8A71},
+       {0x4F44, 0x6B6A},
+       {0x4F45, 0x8CC4},
+       {0x4F46, 0x8107},
+       {0x4F47, 0x60D1},
+       {0x4F48, 0x67A0},
+       {0x4F49, 0x9DF2},
+       {0x4F4A, 0x4E99},
+       {0x4F4B, 0x4E98},
+       {0x4F4C, 0x9C10},
+       {0x4F4D, 0x8A6B},
+       {0x4F4E, 0x85C1},
+       {0x4F4F, 0x8568},
+       {0x4F50, 0x6900},
+       {0x4F51, 0x6E7E},
+       {0x4F52, 0x7897},
+       {0x4F53, 0x8155},
+       {0x5021, 0x5F0C},
+       {0x5022, 0x4E10},
+       {0x5023, 0x4E15},
+       {0x5024, 0x4E2A},
+       {0x5025, 0x4E31},
+       {0x5026, 0x4E36},
+       {0x5027, 0x4E3C},
+       {0x5028, 0x4E3F},
+       {0x5029, 0x4E42},
+       {0x502A, 0x4E56},
+       {0x502B, 0x4E58},
+       {0x502C, 0x4E82},
+       {0x502D, 0x4E85},
+       {0x502E, 0x8C6B},
+       {0x502F, 0x4E8A},
+       {0x5030, 0x8212},
+       {0x5031, 0x5F0D},
+       {0x5032, 0x4E8E},
+       {0x5033, 0x4E9E},
+       {0x5034, 0x4E9F},
+       {0x5035, 0x4EA0},
+       {0x5036, 0x4EA2},
+       {0x5037, 0x4EB0},
+       {0x5038, 0x4EB3},
+       {0x5039, 0x4EB6},
+       {0x503A, 0x4ECE},
+       {0x503B, 0x4ECD},
+       {0x503C, 0x4EC4},
+       {0x503D, 0x4EC6},
+       {0x503E, 0x4EC2},
+       {0x503F, 0x4ED7},
+       {0x5040, 0x4EDE},
+       {0x5041, 0x4EED},
+       {0x5042, 0x4EDF},
+       {0x5043, 0x4EF7},
+       {0x5044, 0x4F09},
+       {0x5045, 0x4F5A},
+       {0x5046, 0x4F30},
+       {0x5047, 0x4F5B},
+       {0x5048, 0x4F5D},
+       {0x5049, 0x4F57},
+       {0x504A, 0x4F47},
+       {0x504B, 0x4F76},
+       {0x504C, 0x4F88},
+       {0x504D, 0x4F8F},
+       {0x504E, 0x4F98},
+       {0x504F, 0x4F7B},
+       {0x5050, 0x4F69},
+       {0x5051, 0x4F70},
+       {0x5052, 0x4F91},
+       {0x5053, 0x4F6F},
+       {0x5054, 0x4F86},
+       {0x5055, 0x4F96},
+       {0x5056, 0x5118},
+       {0x5057, 0x4FD4},
+       {0x5058, 0x4FDF},
+       {0x5059, 0x4FCE},
+       {0x505A, 0x4FD8},
+       {0x505B, 0x4FDB},
+       {0x505C, 0x4FD1},
+       {0x505D, 0x4FDA},
+       {0x505E, 0x4FD0},
+       {0x505F, 0x4FE4},
+       {0x5060, 0x4FE5},
+       {0x5061, 0x501A},
+       {0x5062, 0x5028},
+       {0x5063, 0x5014},
+       {0x5064, 0x502A},
+       {0x5065, 0x5025},
+       {0x5066, 0x5005},
+       {0x5067, 0x4F1C},
+       {0x5068, 0x4FF6},
+       {0x5069, 0x5021},
+       {0x506A, 0x5029},
+       {0x506B, 0x502C},
+       {0x506C, 0x4FFE},
+       {0x506D, 0x4FEF},
+       {0x506E, 0x5011},
+       {0x506F, 0x5006},
+       {0x5070, 0x5043},
+       {0x5071, 0x5047},
+       {0x5072, 0x6703},
+       {0x5073, 0x5055},
+       {0x5074, 0x5050},
+       {0x5075, 0x5048},
+       {0x5076, 0x505A},
+       {0x5077, 0x5056},
+       {0x5078, 0x506C},
+       {0x5079, 0x5078},
+       {0x507A, 0x5080},
+       {0x507B, 0x509A},
+       {0x507C, 0x5085},
+       {0x507D, 0x50B4},
+       {0x507E, 0x50B2},
+       {0x5121, 0x50C9},
+       {0x5122, 0x50CA},
+       {0x5123, 0x50B3},
+       {0x5124, 0x50C2},
+       {0x5125, 0x50D6},
+       {0x5126, 0x50DE},
+       {0x5127, 0x50E5},
+       {0x5128, 0x50ED},
+       {0x5129, 0x50E3},
+       {0x512A, 0x50EE},
+       {0x512B, 0x50F9},
+       {0x512C, 0x50F5},
+       {0x512D, 0x5109},
+       {0x512E, 0x5101},
+       {0x512F, 0x5102},
+       {0x5130, 0x5116},
+       {0x5131, 0x5115},
+       {0x5132, 0x5114},
+       {0x5133, 0x511A},
+       {0x5134, 0x5121},
+       {0x5135, 0x513A},
+       {0x5136, 0x5137},
+       {0x5137, 0x513C},
+       {0x5138, 0x513B},
+       {0x5139, 0x513F},
+       {0x513A, 0x5140},
+       {0x513B, 0x5152},
+       {0x513C, 0x514C},
+       {0x513D, 0x5154},
+       {0x513E, 0x5162},
+       {0x513F, 0x7AF8},
+       {0x5140, 0x5169},
+       {0x5141, 0x516A},
+       {0x5142, 0x516E},
+       {0x5143, 0x5180},
+       {0x5144, 0x5182},
+       {0x5145, 0x56D8},
+       {0x5146, 0x518C},
+       {0x5147, 0x5189},
+       {0x5148, 0x518F},
+       {0x5149, 0x5191},
+       {0x514A, 0x5193},
+       {0x514B, 0x5195},
+       {0x514C, 0x5196},
+       {0x514D, 0x51A4},
+       {0x514E, 0x51A6},
+       {0x514F, 0x51A2},
+       {0x5150, 0x51A9},
+       {0x5151, 0x51AA},
+       {0x5152, 0x51AB},
+       {0x5153, 0x51B3},
+       {0x5154, 0x51B1},
+       {0x5155, 0x51B2},
+       {0x5156, 0x51B0},
+       {0x5157, 0x51B5},
+       {0x5158, 0x51BD},
+       {0x5159, 0x51C5},
+       {0x515A, 0x51C9},
+       {0x515B, 0x51DB},
+       {0x515C, 0x51E0},
+       {0x515D, 0x8655},
+       {0x515E, 0x51E9},
+       {0x515F, 0x51ED},
+       {0x5160, 0x51F0},
+       {0x5161, 0x51F5},
+       {0x5162, 0x51FE},
+       {0x5163, 0x5204},
+       {0x5164, 0x520B},
+       {0x5165, 0x5214},
+       {0x5166, 0x520E},
+       {0x5167, 0x5227},
+       {0x5168, 0x522A},
+       {0x5169, 0x522E},
+       {0x516A, 0x5233},
+       {0x516B, 0x5239},
+       {0x516C, 0x524F},
+       {0x516D, 0x5244},
+       {0x516E, 0x524B},
+       {0x516F, 0x524C},
+       {0x5170, 0x525E},
+       {0x5171, 0x5254},
+       {0x5172, 0x526A},
+       {0x5173, 0x5274},
+       {0x5174, 0x5269},
+       {0x5175, 0x5273},
+       {0x5176, 0x527F},
+       {0x5177, 0x527D},
+       {0x5178, 0x528D},
+       {0x5179, 0x5294},
+       {0x517A, 0x5292},
+       {0x517B, 0x5271},
+       {0x517C, 0x5288},
+       {0x517D, 0x5291},
+       {0x517E, 0x8FA8},
+       {0x5221, 0x8FA7},
+       {0x5222, 0x52AC},
+       {0x5223, 0x52AD},
+       {0x5224, 0x52BC},
+       {0x5225, 0x52B5},
+       {0x5226, 0x52C1},
+       {0x5227, 0x52CD},
+       {0x5228, 0x52D7},
+       {0x5229, 0x52DE},
+       {0x522A, 0x52E3},
+       {0x522B, 0x52E6},
+       {0x522C, 0x98ED},
+       {0x522D, 0x52E0},
+       {0x522E, 0x52F3},
+       {0x522F, 0x52F5},
+       {0x5230, 0x52F8},
+       {0x5231, 0x52F9},
+       {0x5232, 0x5306},
+       {0x5233, 0x5308},
+       {0x5234, 0x7538},
+       {0x5235, 0x530D},
+       {0x5236, 0x5310},
+       {0x5237, 0x530F},
+       {0x5238, 0x5315},
+       {0x5239, 0x531A},
+       {0x523A, 0x5323},
+       {0x523B, 0x532F},
+       {0x523C, 0x5331},
+       {0x523D, 0x5333},
+       {0x523E, 0x5338},
+       {0x523F, 0x5340},
+       {0x5240, 0x5346},
+       {0x5241, 0x5345},
+       {0x5242, 0x4E17},
+       {0x5243, 0x5349},
+       {0x5244, 0x534D},
+       {0x5245, 0x51D6},
+       {0x5246, 0x535E},
+       {0x5247, 0x5369},
+       {0x5248, 0x536E},
+       {0x5249, 0x5918},
+       {0x524A, 0x537B},
+       {0x524B, 0x5377},
+       {0x524C, 0x5382},
+       {0x524D, 0x5396},
+       {0x524E, 0x53A0},
+       {0x524F, 0x53A6},
+       {0x5250, 0x53A5},
+       {0x5251, 0x53AE},
+       {0x5252, 0x53B0},
+       {0x5253, 0x53B6},
+       {0x5254, 0x53C3},
+       {0x5255, 0x7C12},
+       {0x5256, 0x96D9},
+       {0x5257, 0x53DF},
+       {0x5258, 0x66FC},
+       {0x5259, 0x71EE},
+       {0x525A, 0x53EE},
+       {0x525B, 0x53E8},
+       {0x525C, 0x53ED},
+       {0x525D, 0x53FA},
+       {0x525E, 0x5401},
+       {0x525F, 0x543D},
+       {0x5260, 0x5440},
+       {0x5261, 0x542C},
+       {0x5262, 0x542D},
+       {0x5263, 0x543C},
+       {0x5264, 0x542E},
+       {0x5265, 0x5436},
+       {0x5266, 0x5429},
+       {0x5267, 0x541D},
+       {0x5268, 0x544E},
+       {0x5269, 0x548F},
+       {0x526A, 0x5475},
+       {0x526B, 0x548E},
+       {0x526C, 0x545F},
+       {0x526D, 0x5471},
+       {0x526E, 0x5477},
+       {0x526F, 0x5470},
+       {0x5270, 0x5492},
+       {0x5271, 0x547B},
+       {0x5272, 0x5480},
+       {0x5273, 0x5476},
+       {0x5274, 0x5484},
+       {0x5275, 0x5490},
+       {0x5276, 0x5486},
+       {0x5277, 0x54C7},
+       {0x5278, 0x54A2},
+       {0x5279, 0x54B8},
+       {0x527A, 0x54A5},
+       {0x527B, 0x54AC},
+       {0x527C, 0x54C4},
+       {0x527D, 0x54C8},
+       {0x527E, 0x54A8},
+       {0x5321, 0x54AB},
+       {0x5322, 0x54C2},
+       {0x5323, 0x54A4},
+       {0x5324, 0x54BE},
+       {0x5325, 0x54BC},
+       {0x5326, 0x54D8},
+       {0x5327, 0x54E5},
+       {0x5328, 0x54E6},
+       {0x5329, 0x550F},
+       {0x532A, 0x5514},
+       {0x532B, 0x54FD},
+       {0x532C, 0x54EE},
+       {0x532D, 0x54ED},
+       {0x532E, 0x54FA},
+       {0x532F, 0x54E2},
+       {0x5330, 0x5539},
+       {0x5331, 0x5540},
+       {0x5332, 0x5563},
+       {0x5333, 0x554C},
+       {0x5334, 0x552E},
+       {0x5335, 0x555C},
+       {0x5336, 0x5545},
+       {0x5337, 0x5556},
+       {0x5338, 0x5557},
+       {0x5339, 0x5538},
+       {0x533A, 0x5533},
+       {0x533B, 0x555D},
+       {0x533C, 0x5599},
+       {0x533D, 0x5580},
+       {0x533E, 0x54AF},
+       {0x533F, 0x558A},
+       {0x5340, 0x559F},
+       {0x5341, 0x557B},
+       {0x5342, 0x557E},
+       {0x5343, 0x5598},
+       {0x5344, 0x559E},
+       {0x5345, 0x55AE},
+       {0x5346, 0x557C},
+       {0x5347, 0x5583},
+       {0x5348, 0x55A9},
+       {0x5349, 0x5587},
+       {0x534A, 0x55A8},
+       {0x534B, 0x55DA},
+       {0x534C, 0x55C5},
+       {0x534D, 0x55DF},
+       {0x534E, 0x55C4},
+       {0x534F, 0x55DC},
+       {0x5350, 0x55E4},
+       {0x5351, 0x55D4},
+       {0x5352, 0x5614},
+       {0x5353, 0x55F7},
+       {0x5354, 0x5616},
+       {0x5355, 0x55FE},
+       {0x5356, 0x55FD},
+       {0x5357, 0x561B},
+       {0x5358, 0x55F9},
+       {0x5359, 0x564E},
+       {0x535A, 0x5650},
+       {0x535B, 0x71DF},
+       {0x535C, 0x5634},
+       {0x535D, 0x5636},
+       {0x535E, 0x5632},
+       {0x535F, 0x5638},
+       {0x5360, 0x566B},
+       {0x5361, 0x5664},
+       {0x5362, 0x562F},
+       {0x5363, 0x566C},
+       {0x5364, 0x566A},
+       {0x5365, 0x5686},
+       {0x5366, 0x5680},
+       {0x5367, 0x568A},
+       {0x5368, 0x56A0},
+       {0x5369, 0x5694},
+       {0x536A, 0x568F},
+       {0x536B, 0x56A5},
+       {0x536C, 0x56AE},
+       {0x536D, 0x56B6},
+       {0x536E, 0x56B4},
+       {0x536F, 0x56C2},
+       {0x5370, 0x56BC},
+       {0x5371, 0x56C1},
+       {0x5372, 0x56C3},
+       {0x5373, 0x56C0},
+       {0x5374, 0x56C8},
+       {0x5375, 0x56CE},
+       {0x5376, 0x56D1},
+       {0x5377, 0x56D3},
+       {0x5378, 0x56D7},
+       {0x5379, 0x56EE},
+       {0x537A, 0x56F9},
+       {0x537B, 0x5700},
+       {0x537C, 0x56FF},
+       {0x537D, 0x5704},
+       {0x537E, 0x5709},
+       {0x5421, 0x5708},
+       {0x5422, 0x570B},
+       {0x5423, 0x570D},
+       {0x5424, 0x5713},
+       {0x5425, 0x5718},
+       {0x5426, 0x5716},
+       {0x5427, 0x55C7},
+       {0x5428, 0x571C},
+       {0x5429, 0x5726},
+       {0x542A, 0x5737},
+       {0x542B, 0x5738},
+       {0x542C, 0x574E},
+       {0x542D, 0x573B},
+       {0x542E, 0x5740},
+       {0x542F, 0x574F},
+       {0x5430, 0x5769},
+       {0x5431, 0x57C0},
+       {0x5432, 0x5788},
+       {0x5433, 0x5761},
+       {0x5434, 0x577F},
+       {0x5435, 0x5789},
+       {0x5436, 0x5793},
+       {0x5437, 0x57A0},
+       {0x5438, 0x57B3},
+       {0x5439, 0x57A4},
+       {0x543A, 0x57AA},
+       {0x543B, 0x57B0},
+       {0x543C, 0x57C3},
+       {0x543D, 0x57C6},
+       {0x543E, 0x57D4},
+       {0x543F, 0x57D2},
+       {0x5440, 0x57D3},
+       {0x5441, 0x580A},
+       {0x5442, 0x57D6},
+       {0x5443, 0x57E3},
+       {0x5444, 0x580B},
+       {0x5445, 0x5819},
+       {0x5446, 0x581D},
+       {0x5447, 0x5872},
+       {0x5448, 0x5821},
+       {0x5449, 0x5862},
+       {0x544A, 0x584B},
+       {0x544B, 0x5870},
+       {0x544C, 0x6BC0},
+       {0x544D, 0x5852},
+       {0x544E, 0x583D},
+       {0x544F, 0x5879},
+       {0x5450, 0x5885},
+       {0x5451, 0x58B9},
+       {0x5452, 0x589F},
+       {0x5453, 0x58AB},
+       {0x5454, 0x58BA},
+       {0x5455, 0x58DE},
+       {0x5456, 0x58BB},
+       {0x5457, 0x58B8},
+       {0x5458, 0x58AE},
+       {0x5459, 0x58C5},
+       {0x545A, 0x58D3},
+       {0x545B, 0x58D1},
+       {0x545C, 0x58D7},
+       {0x545D, 0x58D9},
+       {0x545E, 0x58D8},
+       {0x545F, 0x58E5},
+       {0x5460, 0x58DC},
+       {0x5461, 0x58E4},
+       {0x5462, 0x58DF},
+       {0x5463, 0x58EF},
+       {0x5464, 0x58FA},
+       {0x5465, 0x58F9},
+       {0x5466, 0x58FB},
+       {0x5467, 0x58FC},
+       {0x5468, 0x58FD},
+       {0x5469, 0x5902},
+       {0x546A, 0x590A},
+       {0x546B, 0x5910},
+       {0x546C, 0x591B},
+       {0x546D, 0x68A6},
+       {0x546E, 0x5925},
+       {0x546F, 0x592C},
+       {0x5470, 0x592D},
+       {0x5471, 0x5932},
+       {0x5472, 0x5938},
+       {0x5473, 0x593E},
+       {0x5474, 0x7AD2},
+       {0x5475, 0x5955},
+       {0x5476, 0x5950},
+       {0x5477, 0x594E},
+       {0x5478, 0x595A},
+       {0x5479, 0x5958},
+       {0x547A, 0x5962},
+       {0x547B, 0x5960},
+       {0x547C, 0x5967},
+       {0x547D, 0x596C},
+       {0x547E, 0x5969},
+       {0x5521, 0x5978},
+       {0x5522, 0x5981},
+       {0x5523, 0x599D},
+       {0x5524, 0x4F5E},
+       {0x5525, 0x4FAB},
+       {0x5526, 0x59A3},
+       {0x5527, 0x59B2},
+       {0x5528, 0x59C6},
+       {0x5529, 0x59E8},
+       {0x552A, 0x59DC},
+       {0x552B, 0x598D},
+       {0x552C, 0x59D9},
+       {0x552D, 0x59DA},
+       {0x552E, 0x5A25},
+       {0x552F, 0x5A1F},
+       {0x5530, 0x5A11},
+       {0x5531, 0x5A1C},
+       {0x5532, 0x5A09},
+       {0x5533, 0x5A1A},
+       {0x5534, 0x5A40},
+       {0x5535, 0x5A6C},
+       {0x5536, 0x5A49},
+       {0x5537, 0x5A35},
+       {0x5538, 0x5A36},
+       {0x5539, 0x5A62},
+       {0x553A, 0x5A6A},
+       {0x553B, 0x5A9A},
+       {0x553C, 0x5ABC},
+       {0x553D, 0x5ABE},
+       {0x553E, 0x5ACB},
+       {0x553F, 0x5AC2},
+       {0x5540, 0x5ABD},
+       {0x5541, 0x5AE3},
+       {0x5542, 0x5AD7},
+       {0x5543, 0x5AE6},
+       {0x5544, 0x5AE9},
+       {0x5545, 0x5AD6},
+       {0x5546, 0x5AFA},
+       {0x5547, 0x5AFB},
+       {0x5548, 0x5B0C},
+       {0x5549, 0x5B0B},
+       {0x554A, 0x5B16},
+       {0x554B, 0x5B32},
+       {0x554C, 0x5AD0},
+       {0x554D, 0x5B2A},
+       {0x554E, 0x5B36},
+       {0x554F, 0x5B3E},
+       {0x5550, 0x5B43},
+       {0x5551, 0x5B45},
+       {0x5552, 0x5B40},
+       {0x5553, 0x5B51},
+       {0x5554, 0x5B55},
+       {0x5555, 0x5B5A},
+       {0x5556, 0x5B5B},
+       {0x5557, 0x5B65},
+       {0x5558, 0x5B69},
+       {0x5559, 0x5B70},
+       {0x555A, 0x5B73},
+       {0x555B, 0x5B75},
+       {0x555C, 0x5B78},
+       {0x555D, 0x6588},
+       {0x555E, 0x5B7A},
+       {0x555F, 0x5B80},
+       {0x5560, 0x5B83},
+       {0x5561, 0x5BA6},
+       {0x5562, 0x5BB8},
+       {0x5563, 0x5BC3},
+       {0x5564, 0x5BC7},
+       {0x5565, 0x5BC9},
+       {0x5566, 0x5BD4},
+       {0x5567, 0x5BD0},
+       {0x5568, 0x5BE4},
+       {0x5569, 0x5BE6},
+       {0x556A, 0x5BE2},
+       {0x556B, 0x5BDE},
+       {0x556C, 0x5BE5},
+       {0x556D, 0x5BEB},
+       {0x556E, 0x5BF0},
+       {0x556F, 0x5BF6},
+       {0x5570, 0x5BF3},
+       {0x5571, 0x5C05},
+       {0x5572, 0x5C07},
+       {0x5573, 0x5C08},
+       {0x5574, 0x5C0D},
+       {0x5575, 0x5C13},
+       {0x5576, 0x5C20},
+       {0x5577, 0x5C22},
+       {0x5578, 0x5C28},
+       {0x5579, 0x5C38},
+       {0x557A, 0x5C39},
+       {0x557B, 0x5C41},
+       {0x557C, 0x5C46},
+       {0x557D, 0x5C4E},
+       {0x557E, 0x5C53},
+       {0x5621, 0x5C50},
+       {0x5622, 0x5C4F},
+       {0x5623, 0x5B71},
+       {0x5624, 0x5C6C},
+       {0x5625, 0x5C6E},
+       {0x5626, 0x4E62},
+       {0x5627, 0x5C76},
+       {0x5628, 0x5C79},
+       {0x5629, 0x5C8C},
+       {0x562A, 0x5C91},
+       {0x562B, 0x5C94},
+       {0x562C, 0x599B},
+       {0x562D, 0x5CAB},
+       {0x562E, 0x5CBB},
+       {0x562F, 0x5CB6},
+       {0x5630, 0x5CBC},
+       {0x5631, 0x5CB7},
+       {0x5632, 0x5CC5},
+       {0x5633, 0x5CBE},
+       {0x5634, 0x5CC7},
+       {0x5635, 0x5CD9},
+       {0x5636, 0x5CE9},
+       {0x5637, 0x5CFD},
+       {0x5638, 0x5CFA},
+       {0x5639, 0x5CED},
+       {0x563A, 0x5D8C},
+       {0x563B, 0x5CEA},
+       {0x563C, 0x5D0B},
+       {0x563D, 0x5D15},
+       {0x563E, 0x5D17},
+       {0x563F, 0x5D5C},
+       {0x5640, 0x5D1F},
+       {0x5641, 0x5D1B},
+       {0x5642, 0x5D11},
+       {0x5643, 0x5D14},
+       {0x5644, 0x5D22},
+       {0x5645, 0x5D1A},
+       {0x5646, 0x5D19},
+       {0x5647, 0x5D18},
+       {0x5648, 0x5D4C},
+       {0x5649, 0x5D52},
+       {0x564A, 0x5D4E},
+       {0x564B, 0x5D4B},
+       {0x564C, 0x5D6C},
+       {0x564D, 0x5D73},
+       {0x564E, 0x5D76},
+       {0x564F, 0x5D87},
+       {0x5650, 0x5D84},
+       {0x5651, 0x5D82},
+       {0x5652, 0x5DA2},
+       {0x5653, 0x5D9D},
+       {0x5654, 0x5DAC},
+       {0x5655, 0x5DAE},
+       {0x5656, 0x5DBD},
+       {0x5657, 0x5D90},
+       {0x5658, 0x5DB7},
+       {0x5659, 0x5DBC},
+       {0x565A, 0x5DC9},
+       {0x565B, 0x5DCD},
+       {0x565C, 0x5DD3},
+       {0x565D, 0x5DD2},
+       {0x565E, 0x5DD6},
+       {0x565F, 0x5DDB},
+       {0x5660, 0x5DEB},
+       {0x5661, 0x5DF2},
+       {0x5662, 0x5DF5},
+       {0x5663, 0x5E0B},
+       {0x5664, 0x5E1A},
+       {0x5665, 0x5E19},
+       {0x5666, 0x5E11},
+       {0x5667, 0x5E1B},
+       {0x5668, 0x5E36},
+       {0x5669, 0x5E37},
+       {0x566A, 0x5E44},
+       {0x566B, 0x5E43},
+       {0x566C, 0x5E40},
+       {0x566D, 0x5E4E},
+       {0x566E, 0x5E57},
+       {0x566F, 0x5E54},
+       {0x5670, 0x5E5F},
+       {0x5671, 0x5E62},
+       {0x5672, 0x5E64},
+       {0x5673, 0x5E47},
+       {0x5674, 0x5E75},
+       {0x5675, 0x5E76},
+       {0x5676, 0x5E7A},
+       {0x5677, 0x9EBC},
+       {0x5678, 0x5E7F},
+       {0x5679, 0x5EA0},
+       {0x567A, 0x5EC1},
+       {0x567B, 0x5EC2},
+       {0x567C, 0x5EC8},
+       {0x567D, 0x5ED0},
+       {0x567E, 0x5ECF},
+       {0x5721, 0x5ED6},
+       {0x5722, 0x5EE3},
+       {0x5723, 0x5EDD},
+       {0x5724, 0x5EDA},
+       {0x5725, 0x5EDB},
+       {0x5726, 0x5EE2},
+       {0x5727, 0x5EE1},
+       {0x5728, 0x5EE8},
+       {0x5729, 0x5EE9},
+       {0x572A, 0x5EEC},
+       {0x572B, 0x5EF1},
+       {0x572C, 0x5EF3},
+       {0x572D, 0x5EF0},
+       {0x572E, 0x5EF4},
+       {0x572F, 0x5EF8},
+       {0x5730, 0x5EFE},
+       {0x5731, 0x5F03},
+       {0x5732, 0x5F09},
+       {0x5733, 0x5F5D},
+       {0x5734, 0x5F5C},
+       {0x5735, 0x5F0B},
+       {0x5736, 0x5F11},
+       {0x5737, 0x5F16},
+       {0x5738, 0x5F29},
+       {0x5739, 0x5F2D},
+       {0x573A, 0x5F38},
+       {0x573B, 0x5F41},
+       {0x573C, 0x5F48},
+       {0x573D, 0x5F4C},
+       {0x573E, 0x5F4E},
+       {0x573F, 0x5F2F},
+       {0x5740, 0x5F51},
+       {0x5741, 0x5F56},
+       {0x5742, 0x5F57},
+       {0x5743, 0x5F59},
+       {0x5744, 0x5F61},
+       {0x5745, 0x5F6D},
+       {0x5746, 0x5F73},
+       {0x5747, 0x5F77},
+       {0x5748, 0x5F83},
+       {0x5749, 0x5F82},
+       {0x574A, 0x5F7F},
+       {0x574B, 0x5F8A},
+       {0x574C, 0x5F88},
+       {0x574D, 0x5F91},
+       {0x574E, 0x5F87},
+       {0x574F, 0x5F9E},
+       {0x5750, 0x5F99},
+       {0x5751, 0x5F98},
+       {0x5752, 0x5FA0},
+       {0x5753, 0x5FA8},
+       {0x5754, 0x5FAD},
+       {0x5755, 0x5FBC},
+       {0x5756, 0x5FD6},
+       {0x5757, 0x5FFB},
+       {0x5758, 0x5FE4},
+       {0x5759, 0x5FF8},
+       {0x575A, 0x5FF1},
+       {0x575B, 0x5FDD},
+       {0x575C, 0x60B3},
+       {0x575D, 0x5FFF},
+       {0x575E, 0x6021},
+       {0x575F, 0x6060},
+       {0x5760, 0x6019},
+       {0x5761, 0x6010},
+       {0x5762, 0x6029},
+       {0x5763, 0x600E},
+       {0x5764, 0x6031},
+       {0x5765, 0x601B},
+       {0x5766, 0x6015},
+       {0x5767, 0x602B},
+       {0x5768, 0x6026},
+       {0x5769, 0x600F},
+       {0x576A, 0x603A},
+       {0x576B, 0x605A},
+       {0x576C, 0x6041},
+       {0x576D, 0x606A},
+       {0x576E, 0x6077},
+       {0x576F, 0x605F},
+       {0x5770, 0x604A},
+       {0x5771, 0x6046},
+       {0x5772, 0x604D},
+       {0x5773, 0x6063},
+       {0x5774, 0x6043},
+       {0x5775, 0x6064},
+       {0x5776, 0x6042},
+       {0x5777, 0x606C},
+       {0x5778, 0x606B},
+       {0x5779, 0x6059},
+       {0x577A, 0x6081},
+       {0x577B, 0x608D},
+       {0x577C, 0x60E7},
+       {0x577D, 0x6083},
+       {0x577E, 0x609A},
+       {0x5821, 0x6084},
+       {0x5822, 0x609B},
+       {0x5823, 0x6096},
+       {0x5824, 0x6097},
+       {0x5825, 0x6092},
+       {0x5826, 0x60A7},
+       {0x5827, 0x608B},
+       {0x5828, 0x60E1},
+       {0x5829, 0x60B8},
+       {0x582A, 0x60E0},
+       {0x582B, 0x60D3},
+       {0x582C, 0x60B4},
+       {0x582D, 0x5FF0},
+       {0x582E, 0x60BD},
+       {0x582F, 0x60C6},
+       {0x5830, 0x60B5},
+       {0x5831, 0x60D8},
+       {0x5832, 0x614D},
+       {0x5833, 0x6115},
+       {0x5834, 0x6106},
+       {0x5835, 0x60F6},
+       {0x5836, 0x60F7},
+       {0x5837, 0x6100},
+       {0x5838, 0x60F4},
+       {0x5839, 0x60FA},
+       {0x583A, 0x6103},
+       {0x583B, 0x6121},
+       {0x583C, 0x60FB},
+       {0x583D, 0x60F1},
+       {0x583E, 0x610D},
+       {0x583F, 0x610E},
+       {0x5840, 0x6147},
+       {0x5841, 0x613E},
+       {0x5842, 0x6128},
+       {0x5843, 0x6127},
+       {0x5844, 0x614A},
+       {0x5845, 0x613F},
+       {0x5846, 0x613C},
+       {0x5847, 0x612C},
+       {0x5848, 0x6134},
+       {0x5849, 0x613D},
+       {0x584A, 0x6142},
+       {0x584B, 0x6144},
+       {0x584C, 0x6173},
+       {0x584D, 0x6177},
+       {0x584E, 0x6158},
+       {0x584F, 0x6159},
+       {0x5850, 0x615A},
+       {0x5851, 0x616B},
+       {0x5852, 0x6174},
+       {0x5853, 0x616F},
+       {0x5854, 0x6165},
+       {0x5855, 0x6171},
+       {0x5856, 0x615F},
+       {0x5857, 0x615D},
+       {0x5858, 0x6153},
+       {0x5859, 0x6175},
+       {0x585A, 0x6199},
+       {0x585B, 0x6196},
+       {0x585C, 0x6187},
+       {0x585D, 0x61AC},
+       {0x585E, 0x6194},
+       {0x585F, 0x619A},
+       {0x5860, 0x618A},
+       {0x5861, 0x6191},
+       {0x5862, 0x61AB},
+       {0x5863, 0x61AE},
+       {0x5864, 0x61CC},
+       {0x5865, 0x61CA},
+       {0x5866, 0x61C9},
+       {0x5867, 0x61F7},
+       {0x5868, 0x61C8},
+       {0x5869, 0x61C3},
+       {0x586A, 0x61C6},
+       {0x586B, 0x61BA},
+       {0x586C, 0x61CB},
+       {0x586D, 0x7F79},
+       {0x586E, 0x61CD},
+       {0x586F, 0x61E6},
+       {0x5870, 0x61E3},
+       {0x5871, 0x61F6},
+       {0x5872, 0x61FA},
+       {0x5873, 0x61F4},
+       {0x5874, 0x61FF},
+       {0x5875, 0x61FD},
+       {0x5876, 0x61FC},
+       {0x5877, 0x61FE},
+       {0x5878, 0x6200},
+       {0x5879, 0x6208},
+       {0x587A, 0x6209},
+       {0x587B, 0x620D},
+       {0x587C, 0x620C},
+       {0x587D, 0x6214},
+       {0x587E, 0x621B},
+       {0x5921, 0x621E},
+       {0x5922, 0x6221},
+       {0x5923, 0x622A},
+       {0x5924, 0x622E},
+       {0x5925, 0x6230},
+       {0x5926, 0x6232},
+       {0x5927, 0x6233},
+       {0x5928, 0x6241},
+       {0x5929, 0x624E},
+       {0x592A, 0x625E},
+       {0x592B, 0x6263},
+       {0x592C, 0x625B},
+       {0x592D, 0x6260},
+       {0x592E, 0x6268},
+       {0x592F, 0x627C},
+       {0x5930, 0x6282},
+       {0x5931, 0x6289},
+       {0x5932, 0x627E},
+       {0x5933, 0x6292},
+       {0x5934, 0x6293},
+       {0x5935, 0x6296},
+       {0x5936, 0x62D4},
+       {0x5937, 0x6283},
+       {0x5938, 0x6294},
+       {0x5939, 0x62D7},
+       {0x593A, 0x62D1},
+       {0x593B, 0x62BB},
+       {0x593C, 0x62CF},
+       {0x593D, 0x62FF},
+       {0x593E, 0x62C6},
+       {0x593F, 0x64D4},
+       {0x5940, 0x62C8},
+       {0x5941, 0x62DC},
+       {0x5942, 0x62CC},
+       {0x5943, 0x62CA},
+       {0x5944, 0x62C2},
+       {0x5945, 0x62C7},
+       {0x5946, 0x629B},
+       {0x5947, 0x62C9},
+       {0x5948, 0x630C},
+       {0x5949, 0x62EE},
+       {0x594A, 0x62F1},
+       {0x594B, 0x6327},
+       {0x594C, 0x6302},
+       {0x594D, 0x6308},
+       {0x594E, 0x62EF},
+       {0x594F, 0x62F5},
+       {0x5950, 0x6350},
+       {0x5951, 0x633E},
+       {0x5952, 0x634D},
+       {0x5953, 0x641C},
+       {0x5954, 0x634F},
+       {0x5955, 0x6396},
+       {0x5956, 0x638E},
+       {0x5957, 0x6380},
+       {0x5958, 0x63AB},
+       {0x5959, 0x6376},
+       {0x595A, 0x63A3},
+       {0x595B, 0x638F},
+       {0x595C, 0x6389},
+       {0x595D, 0x639F},
+       {0x595E, 0x63B5},
+       {0x595F, 0x636B},
+       {0x5960, 0x6369},
+       {0x5961, 0x63BE},
+       {0x5962, 0x63E9},
+       {0x5963, 0x63C0},
+       {0x5964, 0x63C6},
+       {0x5965, 0x63E3},
+       {0x5966, 0x63C9},
+       {0x5967, 0x63D2},
+       {0x5968, 0x63F6},
+       {0x5969, 0x63C4},
+       {0x596A, 0x6416},
+       {0x596B, 0x6434},
+       {0x596C, 0x6406},
+       {0x596D, 0x6413},
+       {0x596E, 0x6426},
+       {0x596F, 0x6436},
+       {0x5970, 0x651D},
+       {0x5971, 0x6417},
+       {0x5972, 0x6428},
+       {0x5973, 0x640F},
+       {0x5974, 0x6467},
+       {0x5975, 0x646F},
+       {0x5976, 0x6476},
+       {0x5977, 0x644E},
+       {0x5978, 0x652A},
+       {0x5979, 0x6495},
+       {0x597A, 0x6493},
+       {0x597B, 0x64A5},
+       {0x597C, 0x64A9},
+       {0x597D, 0x6488},
+       {0x597E, 0x64BC},
+       {0x5A21, 0x64DA},
+       {0x5A22, 0x64D2},
+       {0x5A23, 0x64C5},
+       {0x5A24, 0x64C7},
+       {0x5A25, 0x64BB},
+       {0x5A26, 0x64D8},
+       {0x5A27, 0x64C2},
+       {0x5A28, 0x64F1},
+       {0x5A29, 0x64E7},
+       {0x5A2A, 0x8209},
+       {0x5A2B, 0x64E0},
+       {0x5A2C, 0x64E1},
+       {0x5A2D, 0x62AC},
+       {0x5A2E, 0x64E3},
+       {0x5A2F, 0x64EF},
+       {0x5A30, 0x652C},
+       {0x5A31, 0x64F6},
+       {0x5A32, 0x64F4},
+       {0x5A33, 0x64F2},
+       {0x5A34, 0x64FA},
+       {0x5A35, 0x6500},
+       {0x5A36, 0x64FD},
+       {0x5A37, 0x6518},
+       {0x5A38, 0x651C},
+       {0x5A39, 0x6505},
+       {0x5A3A, 0x6524},
+       {0x5A3B, 0x6523},
+       {0x5A3C, 0x652B},
+       {0x5A3D, 0x6534},
+       {0x5A3E, 0x6535},
+       {0x5A3F, 0x6537},
+       {0x5A40, 0x6536},
+       {0x5A41, 0x6538},
+       {0x5A42, 0x754B},
+       {0x5A43, 0x6548},
+       {0x5A44, 0x6556},
+       {0x5A45, 0x6555},
+       {0x5A46, 0x654D},
+       {0x5A47, 0x6558},
+       {0x5A48, 0x655E},
+       {0x5A49, 0x655D},
+       {0x5A4A, 0x6572},
+       {0x5A4B, 0x6578},
+       {0x5A4C, 0x6582},
+       {0x5A4D, 0x6583},
+       {0x5A4E, 0x8B8A},
+       {0x5A4F, 0x659B},
+       {0x5A50, 0x659F},
+       {0x5A51, 0x65AB},
+       {0x5A52, 0x65B7},
+       {0x5A53, 0x65C3},
+       {0x5A54, 0x65C6},
+       {0x5A55, 0x65C1},
+       {0x5A56, 0x65C4},
+       {0x5A57, 0x65CC},
+       {0x5A58, 0x65D2},
+       {0x5A59, 0x65DB},
+       {0x5A5A, 0x65D9},
+       {0x5A5B, 0x65E0},
+       {0x5A5C, 0x65E1},
+       {0x5A5D, 0x65F1},
+       {0x5A5E, 0x6772},
+       {0x5A5F, 0x660A},
+       {0x5A60, 0x6603},
+       {0x5A61, 0x65FB},
+       {0x5A62, 0x6773},
+       {0x5A63, 0x6635},
+       {0x5A64, 0x6636},
+       {0x5A65, 0x6634},
+       {0x5A66, 0x661C},
+       {0x5A67, 0x664F},
+       {0x5A68, 0x6644},
+       {0x5A69, 0x6649},
+       {0x5A6A, 0x6641},
+       {0x5A6B, 0x665E},
+       {0x5A6C, 0x665D},
+       {0x5A6D, 0x6664},
+       {0x5A6E, 0x6667},
+       {0x5A6F, 0x6668},
+       {0x5A70, 0x665F},
+       {0x5A71, 0x6662},
+       {0x5A72, 0x6670},
+       {0x5A73, 0x6683},
+       {0x5A74, 0x6688},
+       {0x5A75, 0x668E},
+       {0x5A76, 0x6689},
+       {0x5A77, 0x6684},
+       {0x5A78, 0x6698},
+       {0x5A79, 0x669D},
+       {0x5A7A, 0x66C1},
+       {0x5A7B, 0x66B9},
+       {0x5A7C, 0x66C9},
+       {0x5A7D, 0x66BE},
+       {0x5A7E, 0x66BC},
+       {0x5B21, 0x66C4},
+       {0x5B22, 0x66B8},
+       {0x5B23, 0x66D6},
+       {0x5B24, 0x66DA},
+       {0x5B25, 0x66E0},
+       {0x5B26, 0x663F},
+       {0x5B27, 0x66E6},
+       {0x5B28, 0x66E9},
+       {0x5B29, 0x66F0},
+       {0x5B2A, 0x66F5},
+       {0x5B2B, 0x66F7},
+       {0x5B2C, 0x670F},
+       {0x5B2D, 0x6716},
+       {0x5B2E, 0x671E},
+       {0x5B2F, 0x6726},
+       {0x5B30, 0x6727},
+       {0x5B31, 0x9738},
+       {0x5B32, 0x672E},
+       {0x5B33, 0x673F},
+       {0x5B34, 0x6736},
+       {0x5B35, 0x6741},
+       {0x5B36, 0x6738},
+       {0x5B37, 0x6737},
+       {0x5B38, 0x6746},
+       {0x5B39, 0x675E},
+       {0x5B3A, 0x6760},
+       {0x5B3B, 0x6759},
+       {0x5B3C, 0x6763},
+       {0x5B3D, 0x6764},
+       {0x5B3E, 0x6789},
+       {0x5B3F, 0x6770},
+       {0x5B40, 0x67A9},
+       {0x5B41, 0x677C},
+       {0x5B42, 0x676A},
+       {0x5B43, 0x678C},
+       {0x5B44, 0x678B},
+       {0x5B45, 0x67A6},
+       {0x5B46, 0x67A1},
+       {0x5B47, 0x6785},
+       {0x5B48, 0x67B7},
+       {0x5B49, 0x67EF},
+       {0x5B4A, 0x67B4},
+       {0x5B4B, 0x67EC},
+       {0x5B4C, 0x67B3},
+       {0x5B4D, 0x67E9},
+       {0x5B4E, 0x67B8},
+       {0x5B4F, 0x67E4},
+       {0x5B50, 0x67DE},
+       {0x5B51, 0x67DD},
+       {0x5B52, 0x67E2},
+       {0x5B53, 0x67EE},
+       {0x5B54, 0x67B9},
+       {0x5B55, 0x67CE},
+       {0x5B56, 0x67C6},
+       {0x5B57, 0x67E7},
+       {0x5B58, 0x6A9C},
+       {0x5B59, 0x681E},
+       {0x5B5A, 0x6846},
+       {0x5B5B, 0x6829},
+       {0x5B5C, 0x6840},
+       {0x5B5D, 0x684D},
+       {0x5B5E, 0x6832},
+       {0x5B5F, 0x684E},
+       {0x5B60, 0x68B3},
+       {0x5B61, 0x682B},
+       {0x5B62, 0x6859},
+       {0x5B63, 0x6863},
+       {0x5B64, 0x6877},
+       {0x5B65, 0x687F},
+       {0x5B66, 0x689F},
+       {0x5B67, 0x688F},
+       {0x5B68, 0x68AD},
+       {0x5B69, 0x6894},
+       {0x5B6A, 0x689D},
+       {0x5B6B, 0x689B},
+       {0x5B6C, 0x6883},
+       {0x5B6D, 0x6AAE},
+       {0x5B6E, 0x68B9},
+       {0x5B6F, 0x6874},
+       {0x5B70, 0x68B5},
+       {0x5B71, 0x68A0},
+       {0x5B72, 0x68BA},
+       {0x5B73, 0x690F},
+       {0x5B74, 0x688D},
+       {0x5B75, 0x687E},
+       {0x5B76, 0x6901},
+       {0x5B77, 0x68CA},
+       {0x5B78, 0x6908},
+       {0x5B79, 0x68D8},
+       {0x5B7A, 0x6922},
+       {0x5B7B, 0x6926},
+       {0x5B7C, 0x68E1},
+       {0x5B7D, 0x690C},
+       {0x5B7E, 0x68CD},
+       {0x5C21, 0x68D4},
+       {0x5C22, 0x68E7},
+       {0x5C23, 0x68D5},
+       {0x5C24, 0x6936},
+       {0x5C25, 0x6912},
+       {0x5C26, 0x6904},
+       {0x5C27, 0x68D7},
+       {0x5C28, 0x68E3},
+       {0x5C29, 0x6925},
+       {0x5C2A, 0x68F9},
+       {0x5C2B, 0x68E0},
+       {0x5C2C, 0x68EF},
+       {0x5C2D, 0x6928},
+       {0x5C2E, 0x692A},
+       {0x5C2F, 0x691A},
+       {0x5C30, 0x6923},
+       {0x5C31, 0x6921},
+       {0x5C32, 0x68C6},
+       {0x5C33, 0x6979},
+       {0x5C34, 0x6977},
+       {0x5C35, 0x695C},
+       {0x5C36, 0x6978},
+       {0x5C37, 0x696B},
+       {0x5C38, 0x6954},
+       {0x5C39, 0x697E},
+       {0x5C3A, 0x696E},
+       {0x5C3B, 0x6939},
+       {0x5C3C, 0x6974},
+       {0x5C3D, 0x693D},
+       {0x5C3E, 0x6959},
+       {0x5C3F, 0x6930},
+       {0x5C40, 0x6961},
+       {0x5C41, 0x695E},
+       {0x5C42, 0x695D},
+       {0x5C43, 0x6981},
+       {0x5C44, 0x696A},
+       {0x5C45, 0x69B2},
+       {0x5C46, 0x69AE},
+       {0x5C47, 0x69D0},
+       {0x5C48, 0x69BF},
+       {0x5C49, 0x69C1},
+       {0x5C4A, 0x69D3},
+       {0x5C4B, 0x69BE},
+       {0x5C4C, 0x69CE},
+       {0x5C4D, 0x5BE8},
+       {0x5C4E, 0x69CA},
+       {0x5C4F, 0x69DD},
+       {0x5C50, 0x69BB},
+       {0x5C51, 0x69C3},
+       {0x5C52, 0x69A7},
+       {0x5C53, 0x6A2E},
+       {0x5C54, 0x6991},
+       {0x5C55, 0x69A0},
+       {0x5C56, 0x699C},
+       {0x5C57, 0x6995},
+       {0x5C58, 0x69B4},
+       {0x5C59, 0x69DE},
+       {0x5C5A, 0x69E8},
+       {0x5C5B, 0x6A02},
+       {0x5C5C, 0x6A1B},
+       {0x5C5D, 0x69FF},
+       {0x5C5E, 0x6B0A},
+       {0x5C5F, 0x69F9},
+       {0x5C60, 0x69F2},
+       {0x5C61, 0x69E7},
+       {0x5C62, 0x6A05},
+       {0x5C63, 0x69B1},
+       {0x5C64, 0x6A1E},
+       {0x5C65, 0x69ED},
+       {0x5C66, 0x6A14},
+       {0x5C67, 0x69EB},
+       {0x5C68, 0x6A0A},
+       {0x5C69, 0x6A12},
+       {0x5C6A, 0x6AC1},
+       {0x5C6B, 0x6A23},
+       {0x5C6C, 0x6A13},
+       {0x5C6D, 0x6A44},
+       {0x5C6E, 0x6A0C},
+       {0x5C6F, 0x6A72},
+       {0x5C70, 0x6A36},
+       {0x5C71, 0x6A78},
+       {0x5C72, 0x6A47},
+       {0x5C73, 0x6A62},
+       {0x5C74, 0x6A59},
+       {0x5C75, 0x6A66},
+       {0x5C76, 0x6A48},
+       {0x5C77, 0x6A38},
+       {0x5C78, 0x6A22},
+       {0x5C79, 0x6A90},
+       {0x5C7A, 0x6A8D},
+       {0x5C7B, 0x6AA0},
+       {0x5C7C, 0x6A84},
+       {0x5C7D, 0x6AA2},
+       {0x5C7E, 0x6AA3},
+       {0x5D21, 0x6A97},
+       {0x5D22, 0x8617},
+       {0x5D23, 0x6ABB},
+       {0x5D24, 0x6AC3},
+       {0x5D25, 0x6AC2},
+       {0x5D26, 0x6AB8},
+       {0x5D27, 0x6AB3},
+       {0x5D28, 0x6AAC},
+       {0x5D29, 0x6ADE},
+       {0x5D2A, 0x6AD1},
+       {0x5D2B, 0x6ADF},
+       {0x5D2C, 0x6AAA},
+       {0x5D2D, 0x6ADA},
+       {0x5D2E, 0x6AEA},
+       {0x5D2F, 0x6AFB},
+       {0x5D30, 0x6B05},
+       {0x5D31, 0x8616},
+       {0x5D32, 0x6AFA},
+       {0x5D33, 0x6B12},
+       {0x5D34, 0x6B16},
+       {0x5D35, 0x9B31},
+       {0x5D36, 0x6B1F},
+       {0x5D37, 0x6B38},
+       {0x5D38, 0x6B37},
+       {0x5D39, 0x76DC},
+       {0x5D3A, 0x6B39},
+       {0x5D3B, 0x98EE},
+       {0x5D3C, 0x6B47},
+       {0x5D3D, 0x6B43},
+       {0x5D3E, 0x6B49},
+       {0x5D3F, 0x6B50},
+       {0x5D40, 0x6B59},
+       {0x5D41, 0x6B54},
+       {0x5D42, 0x6B5B},
+       {0x5D43, 0x6B5F},
+       {0x5D44, 0x6B61},
+       {0x5D45, 0x6B78},
+       {0x5D46, 0x6B79},
+       {0x5D47, 0x6B7F},
+       {0x5D48, 0x6B80},
+       {0x5D49, 0x6B84},
+       {0x5D4A, 0x6B83},
+       {0x5D4B, 0x6B8D},
+       {0x5D4C, 0x6B98},
+       {0x5D4D, 0x6B95},
+       {0x5D4E, 0x6B9E},
+       {0x5D4F, 0x6BA4},
+       {0x5D50, 0x6BAA},
+       {0x5D51, 0x6BAB},
+       {0x5D52, 0x6BAF},
+       {0x5D53, 0x6BB2},
+       {0x5D54, 0x6BB1},
+       {0x5D55, 0x6BB3},
+       {0x5D56, 0x6BB7},
+       {0x5D57, 0x6BBC},
+       {0x5D58, 0x6BC6},
+       {0x5D59, 0x6BCB},
+       {0x5D5A, 0x6BD3},
+       {0x5D5B, 0x6BDF},
+       {0x5D5C, 0x6BEC},
+       {0x5D5D, 0x6BEB},
+       {0x5D5E, 0x6BF3},
+       {0x5D5F, 0x6BEF},
+       {0x5D60, 0x9EBE},
+       {0x5D61, 0x6C08},
+       {0x5D62, 0x6C13},
+       {0x5D63, 0x6C14},
+       {0x5D64, 0x6C1B},
+       {0x5D65, 0x6C24},
+       {0x5D66, 0x6C23},
+       {0x5D67, 0x6C5E},
+       {0x5D68, 0x6C55},
+       {0x5D69, 0x6C62},
+       {0x5D6A, 0x6C6A},
+       {0x5D6B, 0x6C82},
+       {0x5D6C, 0x6C8D},
+       {0x5D6D, 0x6C9A},
+       {0x5D6E, 0x6C81},
+       {0x5D6F, 0x6C9B},
+       {0x5D70, 0x6C7E},
+       {0x5D71, 0x6C68},
+       {0x5D72, 0x6C73},
+       {0x5D73, 0x6C92},
+       {0x5D74, 0x6C90},
+       {0x5D75, 0x6CC4},
+       {0x5D76, 0x6CF1},
+       {0x5D77, 0x6CD3},
+       {0x5D78, 0x6CBD},
+       {0x5D79, 0x6CD7},
+       {0x5D7A, 0x6CC5},
+       {0x5D7B, 0x6CDD},
+       {0x5D7C, 0x6CAE},
+       {0x5D7D, 0x6CB1},
+       {0x5D7E, 0x6CBE},
+       {0x5E21, 0x6CBA},
+       {0x5E22, 0x6CDB},
+       {0x5E23, 0x6CEF},
+       {0x5E24, 0x6CD9},
+       {0x5E25, 0x6CEA},
+       {0x5E26, 0x6D1F},
+       {0x5E27, 0x884D},
+       {0x5E28, 0x6D36},
+       {0x5E29, 0x6D2B},
+       {0x5E2A, 0x6D3D},
+       {0x5E2B, 0x6D38},
+       {0x5E2C, 0x6D19},
+       {0x5E2D, 0x6D35},
+       {0x5E2E, 0x6D33},
+       {0x5E2F, 0x6D12},
+       {0x5E30, 0x6D0C},
+       {0x5E31, 0x6D63},
+       {0x5E32, 0x6D93},
+       {0x5E33, 0x6D64},
+       {0x5E34, 0x6D5A},
+       {0x5E35, 0x6D79},
+       {0x5E36, 0x6D59},
+       {0x5E37, 0x6D8E},
+       {0x5E38, 0x6D95},
+       {0x5E39, 0x6FE4},
+       {0x5E3A, 0x6D85},
+       {0x5E3B, 0x6DF9},
+       {0x5E3C, 0x6E15},
+       {0x5E3D, 0x6E0A},
+       {0x5E3E, 0x6DB5},
+       {0x5E3F, 0x6DC7},
+       {0x5E40, 0x6DE6},
+       {0x5E41, 0x6DB8},
+       {0x5E42, 0x6DC6},
+       {0x5E43, 0x6DEC},
+       {0x5E44, 0x6DDE},
+       {0x5E45, 0x6DCC},
+       {0x5E46, 0x6DE8},
+       {0x5E47, 0x6DD2},
+       {0x5E48, 0x6DC5},
+       {0x5E49, 0x6DFA},
+       {0x5E4A, 0x6DD9},
+       {0x5E4B, 0x6DE4},
+       {0x5E4C, 0x6DD5},
+       {0x5E4D, 0x6DEA},
+       {0x5E4E, 0x6DEE},
+       {0x5E4F, 0x6E2D},
+       {0x5E50, 0x6E6E},
+       {0x5E51, 0x6E2E},
+       {0x5E52, 0x6E19},
+       {0x5E53, 0x6E72},
+       {0x5E54, 0x6E5F},
+       {0x5E55, 0x6E3E},
+       {0x5E56, 0x6E23},
+       {0x5E57, 0x6E6B},
+       {0x5E58, 0x6E2B},
+       {0x5E59, 0x6E76},
+       {0x5E5A, 0x6E4D},
+       {0x5E5B, 0x6E1F},
+       {0x5E5C, 0x6E43},
+       {0x5E5D, 0x6E3A},
+       {0x5E5E, 0x6E4E},
+       {0x5E5F, 0x6E24},
+       {0x5E60, 0x6EFF},
+       {0x5E61, 0x6E1D},
+       {0x5E62, 0x6E38},
+       {0x5E63, 0x6E82},
+       {0x5E64, 0x6EAA},
+       {0x5E65, 0x6E98},
+       {0x5E66, 0x6EC9},
+       {0x5E67, 0x6EB7},
+       {0x5E68, 0x6ED3},
+       {0x5E69, 0x6EBD},
+       {0x5E6A, 0x6EAF},
+       {0x5E6B, 0x6EC4},
+       {0x5E6C, 0x6EB2},
+       {0x5E6D, 0x6ED4},
+       {0x5E6E, 0x6ED5},
+       {0x5E6F, 0x6E8F},
+       {0x5E70, 0x6EA5},
+       {0x5E71, 0x6EC2},
+       {0x5E72, 0x6E9F},
+       {0x5E73, 0x6F41},
+       {0x5E74, 0x6F11},
+       {0x5E75, 0x704C},
+       {0x5E76, 0x6EEC},
+       {0x5E77, 0x6EF8},
+       {0x5E78, 0x6EFE},
+       {0x5E79, 0x6F3F},
+       {0x5E7A, 0x6EF2},
+       {0x5E7B, 0x6F31},
+       {0x5E7C, 0x6EEF},
+       {0x5E7D, 0x6F32},
+       {0x5E7E, 0x6ECC},
+       {0x5F21, 0x6F3E},
+       {0x5F22, 0x6F13},
+       {0x5F23, 0x6EF7},
+       {0x5F24, 0x6F86},
+       {0x5F25, 0x6F7A},
+       {0x5F26, 0x6F78},
+       {0x5F27, 0x6F81},
+       {0x5F28, 0x6F80},
+       {0x5F29, 0x6F6F},
+       {0x5F2A, 0x6F5B},
+       {0x5F2B, 0x6FF3},
+       {0x5F2C, 0x6F6D},
+       {0x5F2D, 0x6F82},
+       {0x5F2E, 0x6F7C},
+       {0x5F2F, 0x6F58},
+       {0x5F30, 0x6F8E},
+       {0x5F31, 0x6F91},
+       {0x5F32, 0x6FC2},
+       {0x5F33, 0x6F66},
+       {0x5F34, 0x6FB3},
+       {0x5F35, 0x6FA3},
+       {0x5F36, 0x6FA1},
+       {0x5F37, 0x6FA4},
+       {0x5F38, 0x6FB9},
+       {0x5F39, 0x6FC6},
+       {0x5F3A, 0x6FAA},
+       {0x5F3B, 0x6FDF},
+       {0x5F3C, 0x6FD5},
+       {0x5F3D, 0x6FEC},
+       {0x5F3E, 0x6FD4},
+       {0x5F3F, 0x6FD8},
+       {0x5F40, 0x6FF1},
+       {0x5F41, 0x6FEE},
+       {0x5F42, 0x6FDB},
+       {0x5F43, 0x7009},
+       {0x5F44, 0x700B},
+       {0x5F45, 0x6FFA},
+       {0x5F46, 0x7011},
+       {0x5F47, 0x7001},
+       {0x5F48, 0x700F},
+       {0x5F49, 0x6FFE},
+       {0x5F4A, 0x701B},
+       {0x5F4B, 0x701A},
+       {0x5F4C, 0x6F74},
+       {0x5F4D, 0x701D},
+       {0x5F4E, 0x7018},
+       {0x5F4F, 0x701F},
+       {0x5F50, 0x7030},
+       {0x5F51, 0x703E},
+       {0x5F52, 0x7032},
+       {0x5F53, 0x7051},
+       {0x5F54, 0x7063},
+       {0x5F55, 0x7099},
+       {0x5F56, 0x7092},
+       {0x5F57, 0x70AF},
+       {0x5F58, 0x70F1},
+       {0x5F59, 0x70AC},
+       {0x5F5A, 0x70B8},
+       {0x5F5B, 0x70B3},
+       {0x5F5C, 0x70AE},
+       {0x5F5D, 0x70DF},
+       {0x5F5E, 0x70CB},
+       {0x5F5F, 0x70DD},
+       {0x5F60, 0x70D9},
+       {0x5F61, 0x7109},
+       {0x5F62, 0x70FD},
+       {0x5F63, 0x711C},
+       {0x5F64, 0x7119},
+       {0x5F65, 0x7165},
+       {0x5F66, 0x7155},
+       {0x5F67, 0x7188},
+       {0x5F68, 0x7166},
+       {0x5F69, 0x7162},
+       {0x5F6A, 0x714C},
+       {0x5F6B, 0x7156},
+       {0x5F6C, 0x716C},
+       {0x5F6D, 0x718F},
+       {0x5F6E, 0x71FB},
+       {0x5F6F, 0x7184},
+       {0x5F70, 0x7195},
+       {0x5F71, 0x71A8},
+       {0x5F72, 0x71AC},
+       {0x5F73, 0x71D7},
+       {0x5F74, 0x71B9},
+       {0x5F75, 0x71BE},
+       {0x5F76, 0x71D2},
+       {0x5F77, 0x71C9},
+       {0x5F78, 0x71D4},
+       {0x5F79, 0x71CE},
+       {0x5F7A, 0x71E0},
+       {0x5F7B, 0x71EC},
+       {0x5F7C, 0x71E7},
+       {0x5F7D, 0x71F5},
+       {0x5F7E, 0x71FC},
+       {0x6021, 0x71F9},
+       {0x6022, 0x71FF},
+       {0x6023, 0x720D},
+       {0x6024, 0x7210},
+       {0x6025, 0x721B},
+       {0x6026, 0x7228},
+       {0x6027, 0x722D},
+       {0x6028, 0x722C},
+       {0x6029, 0x7230},
+       {0x602A, 0x7232},
+       {0x602B, 0x723B},
+       {0x602C, 0x723C},
+       {0x602D, 0x723F},
+       {0x602E, 0x7240},
+       {0x602F, 0x7246},
+       {0x6030, 0x724B},
+       {0x6031, 0x7258},
+       {0x6032, 0x7274},
+       {0x6033, 0x727E},
+       {0x6034, 0x7282},
+       {0x6035, 0x7281},
+       {0x6036, 0x7287},
+       {0x6037, 0x7292},
+       {0x6038, 0x7296},
+       {0x6039, 0x72A2},
+       {0x603A, 0x72A7},
+       {0x603B, 0x72B9},
+       {0x603C, 0x72B2},
+       {0x603D, 0x72C3},
+       {0x603E, 0x72C6},
+       {0x603F, 0x72C4},
+       {0x6040, 0x72CE},
+       {0x6041, 0x72D2},
+       {0x6042, 0x72E2},
+       {0x6043, 0x72E0},
+       {0x6044, 0x72E1},
+       {0x6045, 0x72F9},
+       {0x6046, 0x72F7},
+       {0x6047, 0x500F},
+       {0x6048, 0x7317},
+       {0x6049, 0x730A},
+       {0x604A, 0x731C},
+       {0x604B, 0x7316},
+       {0x604C, 0x731D},
+       {0x604D, 0x7334},
+       {0x604E, 0x732F},
+       {0x604F, 0x7329},
+       {0x6050, 0x7325},
+       {0x6051, 0x733E},
+       {0x6052, 0x734E},
+       {0x6053, 0x734F},
+       {0x6054, 0x9ED8},
+       {0x6055, 0x7357},
+       {0x6056, 0x736A},
+       {0x6057, 0x7368},
+       {0x6058, 0x7370},
+       {0x6059, 0x7378},
+       {0x605A, 0x7375},
+       {0x605B, 0x737B},
+       {0x605C, 0x737A},
+       {0x605D, 0x73C8},
+       {0x605E, 0x73B3},
+       {0x605F, 0x73CE},
+       {0x6060, 0x73BB},
+       {0x6061, 0x73C0},
+       {0x6062, 0x73E5},
+       {0x6063, 0x73EE},
+       {0x6064, 0x73DE},
+       {0x6065, 0x74A2},
+       {0x6066, 0x7405},
+       {0x6067, 0x746F},
+       {0x6068, 0x7425},
+       {0x6069, 0x73F8},
+       {0x606A, 0x7432},
+       {0x606B, 0x743A},
+       {0x606C, 0x7455},
+       {0x606D, 0x743F},
+       {0x606E, 0x745F},
+       {0x606F, 0x7459},
+       {0x6070, 0x7441},
+       {0x6071, 0x745C},
+       {0x6072, 0x7469},
+       {0x6073, 0x7470},
+       {0x6074, 0x7463},
+       {0x6075, 0x746A},
+       {0x6076, 0x7476},
+       {0x6077, 0x747E},
+       {0x6078, 0x748B},
+       {0x6079, 0x749E},
+       {0x607A, 0x74A7},
+       {0x607B, 0x74CA},
+       {0x607C, 0x74CF},
+       {0x607D, 0x74D4},
+       {0x607E, 0x73F1},
+       {0x6121, 0x74E0},
+       {0x6122, 0x74E3},
+       {0x6123, 0x74E7},
+       {0x6124, 0x74E9},
+       {0x6125, 0x74EE},
+       {0x6126, 0x74F2},
+       {0x6127, 0x74F0},
+       {0x6128, 0x74F1},
+       {0x6129, 0x74F8},
+       {0x612A, 0x74F7},
+       {0x612B, 0x7504},
+       {0x612C, 0x7503},
+       {0x612D, 0x7505},
+       {0x612E, 0x750C},
+       {0x612F, 0x750E},
+       {0x6130, 0x750D},
+       {0x6131, 0x7515},
+       {0x6132, 0x7513},
+       {0x6133, 0x751E},
+       {0x6134, 0x7526},
+       {0x6135, 0x752C},
+       {0x6136, 0x753C},
+       {0x6137, 0x7544},
+       {0x6138, 0x754D},
+       {0x6139, 0x754A},
+       {0x613A, 0x7549},
+       {0x613B, 0x755B},
+       {0x613C, 0x7546},
+       {0x613D, 0x755A},
+       {0x613E, 0x7569},
+       {0x613F, 0x7564},
+       {0x6140, 0x7567},
+       {0x6141, 0x756B},
+       {0x6142, 0x756D},
+       {0x6143, 0x7578},
+       {0x6144, 0x7576},
+       {0x6145, 0x7586},
+       {0x6146, 0x7587},
+       {0x6147, 0x7574},
+       {0x6148, 0x758A},
+       {0x6149, 0x7589},
+       {0x614A, 0x7582},
+       {0x614B, 0x7594},
+       {0x614C, 0x759A},
+       {0x614D, 0x759D},
+       {0x614E, 0x75A5},
+       {0x614F, 0x75A3},
+       {0x6150, 0x75C2},
+       {0x6151, 0x75B3},
+       {0x6152, 0x75C3},
+       {0x6153, 0x75B5},
+       {0x6154, 0x75BD},
+       {0x6155, 0x75B8},
+       {0x6156, 0x75BC},
+       {0x6157, 0x75B1},
+       {0x6158, 0x75CD},
+       {0x6159, 0x75CA},
+       {0x615A, 0x75D2},
+       {0x615B, 0x75D9},
+       {0x615C, 0x75E3},
+       {0x615D, 0x75DE},
+       {0x615E, 0x75FE},
+       {0x615F, 0x75FF},
+       {0x6160, 0x75FC},
+       {0x6161, 0x7601},
+       {0x6162, 0x75F0},
+       {0x6163, 0x75FA},
+       {0x6164, 0x75F2},
+       {0x6165, 0x75F3},
+       {0x6166, 0x760B},
+       {0x6167, 0x760D},
+       {0x6168, 0x7609},
+       {0x6169, 0x761F},
+       {0x616A, 0x7627},
+       {0x616B, 0x7620},
+       {0x616C, 0x7621},
+       {0x616D, 0x7622},
+       {0x616E, 0x7624},
+       {0x616F, 0x7634},
+       {0x6170, 0x7630},
+       {0x6171, 0x763B},
+       {0x6172, 0x7647},
+       {0x6173, 0x7648},
+       {0x6174, 0x7646},
+       {0x6175, 0x765C},
+       {0x6176, 0x7658},
+       {0x6177, 0x7661},
+       {0x6178, 0x7662},
+       {0x6179, 0x7668},
+       {0x617A, 0x7669},
+       {0x617B, 0x766A},
+       {0x617C, 0x7667},
+       {0x617D, 0x766C},
+       {0x617E, 0x7670},
+       {0x6221, 0x7672},
+       {0x6222, 0x7676},
+       {0x6223, 0x7678},
+       {0x6224, 0x767C},
+       {0x6225, 0x7680},
+       {0x6226, 0x7683},
+       {0x6227, 0x7688},
+       {0x6228, 0x768B},
+       {0x6229, 0x768E},
+       {0x622A, 0x7696},
+       {0x622B, 0x7693},
+       {0x622C, 0x7699},
+       {0x622D, 0x769A},
+       {0x622E, 0x76B0},
+       {0x622F, 0x76B4},
+       {0x6230, 0x76B8},
+       {0x6231, 0x76B9},
+       {0x6232, 0x76BA},
+       {0x6233, 0x76C2},
+       {0x6234, 0x76CD},
+       {0x6235, 0x76D6},
+       {0x6236, 0x76D2},
+       {0x6237, 0x76DE},
+       {0x6238, 0x76E1},
+       {0x6239, 0x76E5},
+       {0x623A, 0x76E7},
+       {0x623B, 0x76EA},
+       {0x623C, 0x862F},
+       {0x623D, 0x76FB},
+       {0x623E, 0x7708},
+       {0x623F, 0x7707},
+       {0x6240, 0x7704},
+       {0x6241, 0x7729},
+       {0x6242, 0x7724},
+       {0x6243, 0x771E},
+       {0x6244, 0x7725},
+       {0x6245, 0x7726},
+       {0x6246, 0x771B},
+       {0x6247, 0x7737},
+       {0x6248, 0x7738},
+       {0x6249, 0x7747},
+       {0x624A, 0x775A},
+       {0x624B, 0x7768},
+       {0x624C, 0x776B},
+       {0x624D, 0x775B},
+       {0x624E, 0x7765},
+       {0x624F, 0x777F},
+       {0x6250, 0x777E},
+       {0x6251, 0x7779},
+       {0x6252, 0x778E},
+       {0x6253, 0x778B},
+       {0x6254, 0x7791},
+       {0x6255, 0x77A0},
+       {0x6256, 0x779E},
+       {0x6257, 0x77B0},
+       {0x6258, 0x77B6},
+       {0x6259, 0x77B9},
+       {0x625A, 0x77BF},
+       {0x625B, 0x77BC},
+       {0x625C, 0x77BD},
+       {0x625D, 0x77BB},
+       {0x625E, 0x77C7},
+       {0x625F, 0x77CD},
+       {0x6260, 0x77D7},
+       {0x6261, 0x77DA},
+       {0x6262, 0x77DC},
+       {0x6263, 0x77E3},
+       {0x6264, 0x77EE},
+       {0x6265, 0x77FC},
+       {0x6266, 0x780C},
+       {0x6267, 0x7812},
+       {0x6268, 0x7926},
+       {0x6269, 0x7820},
+       {0x626A, 0x792A},
+       {0x626B, 0x7845},
+       {0x626C, 0x788E},
+       {0x626D, 0x7874},
+       {0x626E, 0x7886},
+       {0x626F, 0x787C},
+       {0x6270, 0x789A},
+       {0x6271, 0x788C},
+       {0x6272, 0x78A3},
+       {0x6273, 0x78B5},
+       {0x6274, 0x78AA},
+       {0x6275, 0x78AF},
+       {0x6276, 0x78D1},
+       {0x6277, 0x78C6},
+       {0x6278, 0x78CB},
+       {0x6279, 0x78D4},
+       {0x627A, 0x78BE},
+       {0x627B, 0x78BC},
+       {0x627C, 0x78C5},
+       {0x627D, 0x78CA},
+       {0x627E, 0x78EC},
+       {0x6321, 0x78E7},
+       {0x6322, 0x78DA},
+       {0x6323, 0x78FD},
+       {0x6324, 0x78F4},
+       {0x6325, 0x7907},
+       {0x6326, 0x7912},
+       {0x6327, 0x7911},
+       {0x6328, 0x7919},
+       {0x6329, 0x792C},
+       {0x632A, 0x792B},
+       {0x632B, 0x7940},
+       {0x632C, 0x7960},
+       {0x632D, 0x7957},
+       {0x632E, 0x795F},
+       {0x632F, 0x795A},
+       {0x6330, 0x7955},
+       {0x6331, 0x7953},
+       {0x6332, 0x797A},
+       {0x6333, 0x797F},
+       {0x6334, 0x798A},
+       {0x6335, 0x799D},
+       {0x6336, 0x79A7},
+       {0x6337, 0x9F4B},
+       {0x6338, 0x79AA},
+       {0x6339, 0x79AE},
+       {0x633A, 0x79B3},
+       {0x633B, 0x79B9},
+       {0x633C, 0x79BA},
+       {0x633D, 0x79C9},
+       {0x633E, 0x79D5},
+       {0x633F, 0x79E7},
+       {0x6340, 0x79EC},
+       {0x6341, 0x79E1},
+       {0x6342, 0x79E3},
+       {0x6343, 0x7A08},
+       {0x6344, 0x7A0D},
+       {0x6345, 0x7A18},
+       {0x6346, 0x7A19},
+       {0x6347, 0x7A20},
+       {0x6348, 0x7A1F},
+       {0x6349, 0x7980},
+       {0x634A, 0x7A31},
+       {0x634B, 0x7A3B},
+       {0x634C, 0x7A3E},
+       {0x634D, 0x7A37},
+       {0x634E, 0x7A43},
+       {0x634F, 0x7A57},
+       {0x6350, 0x7A49},
+       {0x6351, 0x7A61},
+       {0x6352, 0x7A62},
+       {0x6353, 0x7A69},
+       {0x6354, 0x9F9D},
+       {0x6355, 0x7A70},
+       {0x6356, 0x7A79},
+       {0x6357, 0x7A7D},
+       {0x6358, 0x7A88},
+       {0x6359, 0x7A97},
+       {0x635A, 0x7A95},
+       {0x635B, 0x7A98},
+       {0x635C, 0x7A96},
+       {0x635D, 0x7AA9},
+       {0x635E, 0x7AC8},
+       {0x635F, 0x7AB0},
+       {0x6360, 0x7AB6},
+       {0x6361, 0x7AC5},
+       {0x6362, 0x7AC4},
+       {0x6363, 0x7ABF},
+       {0x6364, 0x9083},
+       {0x6365, 0x7AC7},
+       {0x6366, 0x7ACA},
+       {0x6367, 0x7ACD},
+       {0x6368, 0x7ACF},
+       {0x6369, 0x7AD5},
+       {0x636A, 0x7AD3},
+       {0x636B, 0x7AD9},
+       {0x636C, 0x7ADA},
+       {0x636D, 0x7ADD},
+       {0x636E, 0x7AE1},
+       {0x636F, 0x7AE2},
+       {0x6370, 0x7AE6},
+       {0x6371, 0x7AED},
+       {0x6372, 0x7AF0},
+       {0x6373, 0x7B02},
+       {0x6374, 0x7B0F},
+       {0x6375, 0x7B0A},
+       {0x6376, 0x7B06},
+       {0x6377, 0x7B33},
+       {0x6378, 0x7B18},
+       {0x6379, 0x7B19},
+       {0x637A, 0x7B1E},
+       {0x637B, 0x7B35},
+       {0x637C, 0x7B28},
+       {0x637D, 0x7B36},
+       {0x637E, 0x7B50},
+       {0x6421, 0x7B7A},
+       {0x6422, 0x7B04},
+       {0x6423, 0x7B4D},
+       {0x6424, 0x7B0B},
+       {0x6425, 0x7B4C},
+       {0x6426, 0x7B45},
+       {0x6427, 0x7B75},
+       {0x6428, 0x7B65},
+       {0x6429, 0x7B74},
+       {0x642A, 0x7B67},
+       {0x642B, 0x7B70},
+       {0x642C, 0x7B71},
+       {0x642D, 0x7B6C},
+       {0x642E, 0x7B6E},
+       {0x642F, 0x7B9D},
+       {0x6430, 0x7B98},
+       {0x6431, 0x7B9F},
+       {0x6432, 0x7B8D},
+       {0x6433, 0x7B9C},
+       {0x6434, 0x7B9A},
+       {0x6435, 0x7B8B},
+       {0x6436, 0x7B92},
+       {0x6437, 0x7B8F},
+       {0x6438, 0x7B5D},
+       {0x6439, 0x7B99},
+       {0x643A, 0x7BCB},
+       {0x643B, 0x7BC1},
+       {0x643C, 0x7BCC},
+       {0x643D, 0x7BCF},
+       {0x643E, 0x7BB4},
+       {0x643F, 0x7BC6},
+       {0x6440, 0x7BDD},
+       {0x6441, 0x7BE9},
+       {0x6442, 0x7C11},
+       {0x6443, 0x7C14},
+       {0x6444, 0x7BE6},
+       {0x6445, 0x7BE5},
+       {0x6446, 0x7C60},
+       {0x6447, 0x7C00},
+       {0x6448, 0x7C07},
+       {0x6449, 0x7C13},
+       {0x644A, 0x7BF3},
+       {0x644B, 0x7BF7},
+       {0x644C, 0x7C17},
+       {0x644D, 0x7C0D},
+       {0x644E, 0x7BF6},
+       {0x644F, 0x7C23},
+       {0x6450, 0x7C27},
+       {0x6451, 0x7C2A},
+       {0x6452, 0x7C1F},
+       {0x6453, 0x7C37},
+       {0x6454, 0x7C2B},
+       {0x6455, 0x7C3D},
+       {0x6456, 0x7C4C},
+       {0x6457, 0x7C43},
+       {0x6458, 0x7C54},
+       {0x6459, 0x7C4F},
+       {0x645A, 0x7C40},
+       {0x645B, 0x7C50},
+       {0x645C, 0x7C58},
+       {0x645D, 0x7C5F},
+       {0x645E, 0x7C64},
+       {0x645F, 0x7C56},
+       {0x6460, 0x7C65},
+       {0x6461, 0x7C6C},
+       {0x6462, 0x7C75},
+       {0x6463, 0x7C83},
+       {0x6464, 0x7C90},
+       {0x6465, 0x7CA4},
+       {0x6466, 0x7CAD},
+       {0x6467, 0x7CA2},
+       {0x6468, 0x7CAB},
+       {0x6469, 0x7CA1},
+       {0x646A, 0x7CA8},
+       {0x646B, 0x7CB3},
+       {0x646C, 0x7CB2},
+       {0x646D, 0x7CB1},
+       {0x646E, 0x7CAE},
+       {0x646F, 0x7CB9},
+       {0x6470, 0x7CBD},
+       {0x6471, 0x7CC0},
+       {0x6472, 0x7CC5},
+       {0x6473, 0x7CC2},
+       {0x6474, 0x7CD8},
+       {0x6475, 0x7CD2},
+       {0x6476, 0x7CDC},
+       {0x6477, 0x7CE2},
+       {0x6478, 0x9B3B},
+       {0x6479, 0x7CEF},
+       {0x647A, 0x7CF2},
+       {0x647B, 0x7CF4},
+       {0x647C, 0x7CF6},
+       {0x647D, 0x7CFA},
+       {0x647E, 0x7D06},
+       {0x6521, 0x7D02},
+       {0x6522, 0x7D1C},
+       {0x6523, 0x7D15},
+       {0x6524, 0x7D0A},
+       {0x6525, 0x7D45},
+       {0x6526, 0x7D4B},
+       {0x6527, 0x7D2E},
+       {0x6528, 0x7D32},
+       {0x6529, 0x7D3F},
+       {0x652A, 0x7D35},
+       {0x652B, 0x7D46},
+       {0x652C, 0x7D73},
+       {0x652D, 0x7D56},
+       {0x652E, 0x7D4E},
+       {0x652F, 0x7D72},
+       {0x6530, 0x7D68},
+       {0x6531, 0x7D6E},
+       {0x6532, 0x7D4F},
+       {0x6533, 0x7D63},
+       {0x6534, 0x7D93},
+       {0x6535, 0x7D89},
+       {0x6536, 0x7D5B},
+       {0x6537, 0x7D8F},
+       {0x6538, 0x7D7D},
+       {0x6539, 0x7D9B},
+       {0x653A, 0x7DBA},
+       {0x653B, 0x7DAE},
+       {0x653C, 0x7DA3},
+       {0x653D, 0x7DB5},
+       {0x653E, 0x7DC7},
+       {0x653F, 0x7DBD},
+       {0x6540, 0x7DAB},
+       {0x6541, 0x7E3D},
+       {0x6542, 0x7DA2},
+       {0x6543, 0x7DAF},
+       {0x6544, 0x7DDC},
+       {0x6545, 0x7DB8},
+       {0x6546, 0x7D9F},
+       {0x6547, 0x7DB0},
+       {0x6548, 0x7DD8},
+       {0x6549, 0x7DDD},
+       {0x654A, 0x7DE4},
+       {0x654B, 0x7DDE},
+       {0x654C, 0x7DFB},
+       {0x654D, 0x7DF2},
+       {0x654E, 0x7DE1},
+       {0x654F, 0x7E05},
+       {0x6550, 0x7E0A},
+       {0x6551, 0x7E23},
+       {0x6552, 0x7E21},
+       {0x6553, 0x7E12},
+       {0x6554, 0x7E31},
+       {0x6555, 0x7E1F},
+       {0x6556, 0x7E09},
+       {0x6557, 0x7E0B},
+       {0x6558, 0x7E22},
+       {0x6559, 0x7E46},
+       {0x655A, 0x7E66},
+       {0x655B, 0x7E3B},
+       {0x655C, 0x7E35},
+       {0x655D, 0x7E39},
+       {0x655E, 0x7E43},
+       {0x655F, 0x7E37},
+       {0x6560, 0x7E32},
+       {0x6561, 0x7E3A},
+       {0x6562, 0x7E67},
+       {0x6563, 0x7E5D},
+       {0x6564, 0x7E56},
+       {0x6565, 0x7E5E},
+       {0x6566, 0x7E59},
+       {0x6567, 0x7E5A},
+       {0x6568, 0x7E79},
+       {0x6569, 0x7E6A},
+       {0x656A, 0x7E69},
+       {0x656B, 0x7E7C},
+       {0x656C, 0x7E7B},
+       {0x656D, 0x7E83},
+       {0x656E, 0x7DD5},
+       {0x656F, 0x7E7D},
+       {0x6570, 0x8FAE},
+       {0x6571, 0x7E7F},
+       {0x6572, 0x7E88},
+       {0x6573, 0x7E89},
+       {0x6574, 0x7E8C},
+       {0x6575, 0x7E92},
+       {0x6576, 0x7E90},
+       {0x6577, 0x7E93},
+       {0x6578, 0x7E94},
+       {0x6579, 0x7E96},
+       {0x657A, 0x7E8E},
+       {0x657B, 0x7E9B},
+       {0x657C, 0x7E9C},
+       {0x657D, 0x7F38},
+       {0x657E, 0x7F3A},
+       {0x6621, 0x7F45},
+       {0x6622, 0x7F4C},
+       {0x6623, 0x7F4D},
+       {0x6624, 0x7F4E},
+       {0x6625, 0x7F50},
+       {0x6626, 0x7F51},
+       {0x6627, 0x7F55},
+       {0x6628, 0x7F54},
+       {0x6629, 0x7F58},
+       {0x662A, 0x7F5F},
+       {0x662B, 0x7F60},
+       {0x662C, 0x7F68},
+       {0x662D, 0x7F69},
+       {0x662E, 0x7F67},
+       {0x662F, 0x7F78},
+       {0x6630, 0x7F82},
+       {0x6631, 0x7F86},
+       {0x6632, 0x7F83},
+       {0x6633, 0x7F88},
+       {0x6634, 0x7F87},
+       {0x6635, 0x7F8C},
+       {0x6636, 0x7F94},
+       {0x6637, 0x7F9E},
+       {0x6638, 0x7F9D},
+       {0x6639, 0x7F9A},
+       {0x663A, 0x7FA3},
+       {0x663B, 0x7FAF},
+       {0x663C, 0x7FB2},
+       {0x663D, 0x7FB9},
+       {0x663E, 0x7FAE},
+       {0x663F, 0x7FB6},
+       {0x6640, 0x7FB8},
+       {0x6641, 0x8B71},
+       {0x6642, 0x7FC5},
+       {0x6643, 0x7FC6},
+       {0x6644, 0x7FCA},
+       {0x6645, 0x7FD5},
+       {0x6646, 0x7FD4},
+       {0x6647, 0x7FE1},
+       {0x6648, 0x7FE6},
+       {0x6649, 0x7FE9},
+       {0x664A, 0x7FF3},
+       {0x664B, 0x7FF9},
+       {0x664C, 0x98DC},
+       {0x664D, 0x8006},
+       {0x664E, 0x8004},
+       {0x664F, 0x800B},
+       {0x6650, 0x8012},
+       {0x6651, 0x8018},
+       {0x6652, 0x8019},
+       {0x6653, 0x801C},
+       {0x6654, 0x8021},
+       {0x6655, 0x8028},
+       {0x6656, 0x803F},
+       {0x6657, 0x803B},
+       {0x6658, 0x804A},
+       {0x6659, 0x8046},
+       {0x665A, 0x8052},
+       {0x665B, 0x8058},
+       {0x665C, 0x805A},
+       {0x665D, 0x805F},
+       {0x665E, 0x8062},
+       {0x665F, 0x8068},
+       {0x6660, 0x8073},
+       {0x6661, 0x8072},
+       {0x6662, 0x8070},
+       {0x6663, 0x8076},
+       {0x6664, 0x8079},
+       {0x6665, 0x807D},
+       {0x6666, 0x807F},
+       {0x6667, 0x8084},
+       {0x6668, 0x8086},
+       {0x6669, 0x8085},
+       {0x666A, 0x809B},
+       {0x666B, 0x8093},
+       {0x666C, 0x809A},
+       {0x666D, 0x80AD},
+       {0x666E, 0x5190},
+       {0x666F, 0x80AC},
+       {0x6670, 0x80DB},
+       {0x6671, 0x80E5},
+       {0x6672, 0x80D9},
+       {0x6673, 0x80DD},
+       {0x6674, 0x80C4},
+       {0x6675, 0x80DA},
+       {0x6676, 0x80D6},
+       {0x6677, 0x8109},
+       {0x6678, 0x80EF},
+       {0x6679, 0x80F1},
+       {0x667A, 0x811B},
+       {0x667B, 0x8129},
+       {0x667C, 0x8123},
+       {0x667D, 0x812F},
+       {0x667E, 0x814B},
+       {0x6721, 0x968B},
+       {0x6722, 0x8146},
+       {0x6723, 0x813E},
+       {0x6724, 0x8153},
+       {0x6725, 0x8151},
+       {0x6726, 0x80FC},
+       {0x6727, 0x8171},
+       {0x6728, 0x816E},
+       {0x6729, 0x8165},
+       {0x672A, 0x8166},
+       {0x672B, 0x8174},
+       {0x672C, 0x8183},
+       {0x672D, 0x8188},
+       {0x672E, 0x818A},
+       {0x672F, 0x8180},
+       {0x6730, 0x8182},
+       {0x6731, 0x81A0},
+       {0x6732, 0x8195},
+       {0x6733, 0x81A4},
+       {0x6734, 0x81A3},
+       {0x6735, 0x815F},
+       {0x6736, 0x8193},
+       {0x6737, 0x81A9},
+       {0x6738, 0x81B0},
+       {0x6739, 0x81B5},
+       {0x673A, 0x81BE},
+       {0x673B, 0x81B8},
+       {0x673C, 0x81BD},
+       {0x673D, 0x81C0},
+       {0x673E, 0x81C2},
+       {0x673F, 0x81BA},
+       {0x6740, 0x81C9},
+       {0x6741, 0x81CD},
+       {0x6742, 0x81D1},
+       {0x6743, 0x81D9},
+       {0x6744, 0x81D8},
+       {0x6745, 0x81C8},
+       {0x6746, 0x81DA},
+       {0x6747, 0x81DF},
+       {0x6748, 0x81E0},
+       {0x6749, 0x81E7},
+       {0x674A, 0x81FA},
+       {0x674B, 0x81FB},
+       {0x674C, 0x81FE},
+       {0x674D, 0x8201},
+       {0x674E, 0x8202},
+       {0x674F, 0x8205},
+       {0x6750, 0x8207},
+       {0x6751, 0x820A},
+       {0x6752, 0x820D},
+       {0x6753, 0x8210},
+       {0x6754, 0x8216},
+       {0x6755, 0x8229},
+       {0x6756, 0x822B},
+       {0x6757, 0x8238},
+       {0x6758, 0x8233},
+       {0x6759, 0x8240},
+       {0x675A, 0x8259},
+       {0x675B, 0x8258},
+       {0x675C, 0x825D},
+       {0x675D, 0x825A},
+       {0x675E, 0x825F},
+       {0x675F, 0x8264},
+       {0x6760, 0x8262},
+       {0x6761, 0x8268},
+       {0x6762, 0x826A},
+       {0x6763, 0x826B},
+       {0x6764, 0x822E},
+       {0x6765, 0x8271},
+       {0x6766, 0x8277},
+       {0x6767, 0x8278},
+       {0x6768, 0x827E},
+       {0x6769, 0x828D},
+       {0x676A, 0x8292},
+       {0x676B, 0x82AB},
+       {0x676C, 0x829F},
+       {0x676D, 0x82BB},
+       {0x676E, 0x82AC},
+       {0x676F, 0x82E1},
+       {0x6770, 0x82E3},
+       {0x6771, 0x82DF},
+       {0x6772, 0x82D2},
+       {0x6773, 0x82F4},
+       {0x6774, 0x82F3},
+       {0x6775, 0x82FA},
+       {0x6776, 0x8393},
+       {0x6777, 0x8303},
+       {0x6778, 0x82FB},
+       {0x6779, 0x82F9},
+       {0x677A, 0x82DE},
+       {0x677B, 0x8306},
+       {0x677C, 0x82DC},
+       {0x677D, 0x8309},
+       {0x677E, 0x82D9},
+       {0x6821, 0x8335},
+       {0x6822, 0x8334},
+       {0x6823, 0x8316},
+       {0x6824, 0x8332},
+       {0x6825, 0x8331},
+       {0x6826, 0x8340},
+       {0x6827, 0x8339},
+       {0x6828, 0x8350},
+       {0x6829, 0x8345},
+       {0x682A, 0x832F},
+       {0x682B, 0x832B},
+       {0x682C, 0x8317},
+       {0x682D, 0x8318},
+       {0x682E, 0x8385},
+       {0x682F, 0x839A},
+       {0x6830, 0x83AA},
+       {0x6831, 0x839F},
+       {0x6832, 0x83A2},
+       {0x6833, 0x8396},
+       {0x6834, 0x8323},
+       {0x6835, 0x838E},
+       {0x6836, 0x8387},
+       {0x6837, 0x838A},
+       {0x6838, 0x837C},
+       {0x6839, 0x83B5},
+       {0x683A, 0x8373},
+       {0x683B, 0x8375},
+       {0x683C, 0x83A0},
+       {0x683D, 0x8389},
+       {0x683E, 0x83A8},
+       {0x683F, 0x83F4},
+       {0x6840, 0x8413},
+       {0x6841, 0x83EB},
+       {0x6842, 0x83CE},
+       {0x6843, 0x83FD},
+       {0x6844, 0x8403},
+       {0x6845, 0x83D8},
+       {0x6846, 0x840B},
+       {0x6847, 0x83C1},
+       {0x6848, 0x83F7},
+       {0x6849, 0x8407},
+       {0x684A, 0x83E0},
+       {0x684B, 0x83F2},
+       {0x684C, 0x840D},
+       {0x684D, 0x8422},
+       {0x684E, 0x8420},
+       {0x684F, 0x83BD},
+       {0x6850, 0x8438},
+       {0x6851, 0x8506},
+       {0x6852, 0x83FB},
+       {0x6853, 0x846D},
+       {0x6854, 0x842A},
+       {0x6855, 0x843C},
+       {0x6856, 0x855A},
+       {0x6857, 0x8484},
+       {0x6858, 0x8477},
+       {0x6859, 0x846B},
+       {0x685A, 0x84AD},
+       {0x685B, 0x846E},
+       {0x685C, 0x8482},
+       {0x685D, 0x8469},
+       {0x685E, 0x8446},
+       {0x685F, 0x842C},
+       {0x6860, 0x846F},
+       {0x6861, 0x8479},
+       {0x6862, 0x8435},
+       {0x6863, 0x84CA},
+       {0x6864, 0x8462},
+       {0x6865, 0x84B9},
+       {0x6866, 0x84BF},
+       {0x6867, 0x849F},
+       {0x6868, 0x84D9},
+       {0x6869, 0x84CD},
+       {0x686A, 0x84BB},
+       {0x686B, 0x84DA},
+       {0x686C, 0x84D0},
+       {0x686D, 0x84C1},
+       {0x686E, 0x84C6},
+       {0x686F, 0x84D6},
+       {0x6870, 0x84A1},
+       {0x6871, 0x8521},
+       {0x6872, 0x84FF},
+       {0x6873, 0x84F4},
+       {0x6874, 0x8517},
+       {0x6875, 0x8518},
+       {0x6876, 0x852C},
+       {0x6877, 0x851F},
+       {0x6878, 0x8515},
+       {0x6879, 0x8514},
+       {0x687A, 0x84FC},
+       {0x687B, 0x8540},
+       {0x687C, 0x8563},
+       {0x687D, 0x8558},
+       {0x687E, 0x8548},
+       {0x6921, 0x8541},
+       {0x6922, 0x8602},
+       {0x6923, 0x854B},
+       {0x6924, 0x8555},
+       {0x6925, 0x8580},
+       {0x6926, 0x85A4},
+       {0x6927, 0x8588},
+       {0x6928, 0x8591},
+       {0x6929, 0x858A},
+       {0x692A, 0x85A8},
+       {0x692B, 0x856D},
+       {0x692C, 0x8594},
+       {0x692D, 0x859B},
+       {0x692E, 0x85EA},
+       {0x692F, 0x8587},
+       {0x6930, 0x859C},
+       {0x6931, 0x8577},
+       {0x6932, 0x857E},
+       {0x6933, 0x8590},
+       {0x6934, 0x85C9},
+       {0x6935, 0x85BA},
+       {0x6936, 0x85CF},
+       {0x6937, 0x85B9},
+       {0x6938, 0x85D0},
+       {0x6939, 0x85D5},
+       {0x693A, 0x85DD},
+       {0x693B, 0x85E5},
+       {0x693C, 0x85DC},
+       {0x693D, 0x85F9},
+       {0x693E, 0x860A},
+       {0x693F, 0x8613},
+       {0x6940, 0x860B},
+       {0x6941, 0x85FE},
+       {0x6942, 0x85FA},
+       {0x6943, 0x8606},
+       {0x6944, 0x8622},
+       {0x6945, 0x861A},
+       {0x6946, 0x8630},
+       {0x6947, 0x863F},
+       {0x6948, 0x864D},
+       {0x6949, 0x4E55},
+       {0x694A, 0x8654},
+       {0x694B, 0x865F},
+       {0x694C, 0x8667},
+       {0x694D, 0x8671},
+       {0x694E, 0x8693},
+       {0x694F, 0x86A3},
+       {0x6950, 0x86A9},
+       {0x6951, 0x86AA},
+       {0x6952, 0x868B},
+       {0x6953, 0x868C},
+       {0x6954, 0x86B6},
+       {0x6955, 0x86AF},
+       {0x6956, 0x86C4},
+       {0x6957, 0x86C6},
+       {0x6958, 0x86B0},
+       {0x6959, 0x86C9},
+       {0x695A, 0x8823},
+       {0x695B, 0x86AB},
+       {0x695C, 0x86D4},
+       {0x695D, 0x86DE},
+       {0x695E, 0x86E9},
+       {0x695F, 0x86EC},
+       {0x6960, 0x86DF},
+       {0x6961, 0x86DB},
+       {0x6962, 0x86EF},
+       {0x6963, 0x8712},
+       {0x6964, 0x8706},
+       {0x6965, 0x8708},
+       {0x6966, 0x8700},
+       {0x6967, 0x8703},
+       {0x6968, 0x86FB},
+       {0x6969, 0x8711},
+       {0x696A, 0x8709},
+       {0x696B, 0x870D},
+       {0x696C, 0x86F9},
+       {0x696D, 0x870A},
+       {0x696E, 0x8734},
+       {0x696F, 0x873F},
+       {0x6970, 0x8737},
+       {0x6971, 0x873B},
+       {0x6972, 0x8725},
+       {0x6973, 0x8729},
+       {0x6974, 0x871A},
+       {0x6975, 0x8760},
+       {0x6976, 0x875F},
+       {0x6977, 0x8778},
+       {0x6978, 0x874C},
+       {0x6979, 0x874E},
+       {0x697A, 0x8774},
+       {0x697B, 0x8757},
+       {0x697C, 0x8768},
+       {0x697D, 0x876E},
+       {0x697E, 0x8759},
+       {0x6A21, 0x8753},
+       {0x6A22, 0x8763},
+       {0x6A23, 0x876A},
+       {0x6A24, 0x8805},
+       {0x6A25, 0x87A2},
+       {0x6A26, 0x879F},
+       {0x6A27, 0x8782},
+       {0x6A28, 0x87AF},
+       {0x6A29, 0x87CB},
+       {0x6A2A, 0x87BD},
+       {0x6A2B, 0x87C0},
+       {0x6A2C, 0x87D0},
+       {0x6A2D, 0x96D6},
+       {0x6A2E, 0x87AB},
+       {0x6A2F, 0x87C4},
+       {0x6A30, 0x87B3},
+       {0x6A31, 0x87C7},
+       {0x6A32, 0x87C6},
+       {0x6A33, 0x87BB},
+       {0x6A34, 0x87EF},
+       {0x6A35, 0x87F2},
+       {0x6A36, 0x87E0},
+       {0x6A37, 0x880F},
+       {0x6A38, 0x880D},
+       {0x6A39, 0x87FE},
+       {0x6A3A, 0x87F6},
+       {0x6A3B, 0x87F7},
+       {0x6A3C, 0x880E},
+       {0x6A3D, 0x87D2},
+       {0x6A3E, 0x8811},
+       {0x6A3F, 0x8816},
+       {0x6A40, 0x8815},
+       {0x6A41, 0x8822},
+       {0x6A42, 0x8821},
+       {0x6A43, 0x8831},
+       {0x6A44, 0x8836},
+       {0x6A45, 0x8839},
+       {0x6A46, 0x8827},
+       {0x6A47, 0x883B},
+       {0x6A48, 0x8844},
+       {0x6A49, 0x8842},
+       {0x6A4A, 0x8852},
+       {0x6A4B, 0x8859},
+       {0x6A4C, 0x885E},
+       {0x6A4D, 0x8862},
+       {0x6A4E, 0x886B},
+       {0x6A4F, 0x8881},
+       {0x6A50, 0x887E},
+       {0x6A51, 0x889E},
+       {0x6A52, 0x8875},
+       {0x6A53, 0x887D},
+       {0x6A54, 0x88B5},
+       {0x6A55, 0x8872},
+       {0x6A56, 0x8882},
+       {0x6A57, 0x8897},
+       {0x6A58, 0x8892},
+       {0x6A59, 0x88AE},
+       {0x6A5A, 0x8899},
+       {0x6A5B, 0x88A2},
+       {0x6A5C, 0x888D},
+       {0x6A5D, 0x88A4},
+       {0x6A5E, 0x88B0},
+       {0x6A5F, 0x88BF},
+       {0x6A60, 0x88B1},
+       {0x6A61, 0x88C3},
+       {0x6A62, 0x88C4},
+       {0x6A63, 0x88D4},
+       {0x6A64, 0x88D8},
+       {0x6A65, 0x88D9},
+       {0x6A66, 0x88DD},
+       {0x6A67, 0x88F9},
+       {0x6A68, 0x8902},
+       {0x6A69, 0x88FC},
+       {0x6A6A, 0x88F4},
+       {0x6A6B, 0x88E8},
+       {0x6A6C, 0x88F2},
+       {0x6A6D, 0x8904},
+       {0x6A6E, 0x890C},
+       {0x6A6F, 0x890A},
+       {0x6A70, 0x8913},
+       {0x6A71, 0x8943},
+       {0x6A72, 0x891E},
+       {0x6A73, 0x8925},
+       {0x6A74, 0x892A},
+       {0x6A75, 0x892B},
+       {0x6A76, 0x8941},
+       {0x6A77, 0x8944},
+       {0x6A78, 0x893B},
+       {0x6A79, 0x8936},
+       {0x6A7A, 0x8938},
+       {0x6A7B, 0x894C},
+       {0x6A7C, 0x891D},
+       {0x6A7D, 0x8960},
+       {0x6A7E, 0x895E},
+       {0x6B21, 0x8966},
+       {0x6B22, 0x8964},
+       {0x6B23, 0x896D},
+       {0x6B24, 0x896A},
+       {0x6B25, 0x896F},
+       {0x6B26, 0x8974},
+       {0x6B27, 0x8977},
+       {0x6B28, 0x897E},
+       {0x6B29, 0x8983},
+       {0x6B2A, 0x8988},
+       {0x6B2B, 0x898A},
+       {0x6B2C, 0x8993},
+       {0x6B2D, 0x8998},
+       {0x6B2E, 0x89A1},
+       {0x6B2F, 0x89A9},
+       {0x6B30, 0x89A6},
+       {0x6B31, 0x89AC},
+       {0x6B32, 0x89AF},
+       {0x6B33, 0x89B2},
+       {0x6B34, 0x89BA},
+       {0x6B35, 0x89BD},
+       {0x6B36, 0x89BF},
+       {0x6B37, 0x89C0},
+       {0x6B38, 0x89DA},
+       {0x6B39, 0x89DC},
+       {0x6B3A, 0x89DD},
+       {0x6B3B, 0x89E7},
+       {0x6B3C, 0x89F4},
+       {0x6B3D, 0x89F8},
+       {0x6B3E, 0x8A03},
+       {0x6B3F, 0x8A16},
+       {0x6B40, 0x8A10},
+       {0x6B41, 0x8A0C},
+       {0x6B42, 0x8A1B},
+       {0x6B43, 0x8A1D},
+       {0x6B44, 0x8A25},
+       {0x6B45, 0x8A36},
+       {0x6B46, 0x8A41},
+       {0x6B47, 0x8A5B},
+       {0x6B48, 0x8A52},
+       {0x6B49, 0x8A46},
+       {0x6B4A, 0x8A48},
+       {0x6B4B, 0x8A7C},
+       {0x6B4C, 0x8A6D},
+       {0x6B4D, 0x8A6C},
+       {0x6B4E, 0x8A62},
+       {0x6B4F, 0x8A85},
+       {0x6B50, 0x8A82},
+       {0x6B51, 0x8A84},
+       {0x6B52, 0x8AA8},
+       {0x6B53, 0x8AA1},
+       {0x6B54, 0x8A91},
+       {0x6B55, 0x8AA5},
+       {0x6B56, 0x8AA6},
+       {0x6B57, 0x8A9A},
+       {0x6B58, 0x8AA3},
+       {0x6B59, 0x8AC4},
+       {0x6B5A, 0x8ACD},
+       {0x6B5B, 0x8AC2},
+       {0x6B5C, 0x8ADA},
+       {0x6B5D, 0x8AEB},
+       {0x6B5E, 0x8AF3},
+       {0x6B5F, 0x8AE7},
+       {0x6B60, 0x8AE4},
+       {0x6B61, 0x8AF1},
+       {0x6B62, 0x8B14},
+       {0x6B63, 0x8AE0},
+       {0x6B64, 0x8AE2},
+       {0x6B65, 0x8AF7},
+       {0x6B66, 0x8ADE},
+       {0x6B67, 0x8ADB},
+       {0x6B68, 0x8B0C},
+       {0x6B69, 0x8B07},
+       {0x6B6A, 0x8B1A},
+       {0x6B6B, 0x8AE1},
+       {0x6B6C, 0x8B16},
+       {0x6B6D, 0x8B10},
+       {0x6B6E, 0x8B17},
+       {0x6B6F, 0x8B20},
+       {0x6B70, 0x8B33},
+       {0x6B71, 0x97AB},
+       {0x6B72, 0x8B26},
+       {0x6B73, 0x8B2B},
+       {0x6B74, 0x8B3E},
+       {0x6B75, 0x8B28},
+       {0x6B76, 0x8B41},
+       {0x6B77, 0x8B4C},
+       {0x6B78, 0x8B4F},
+       {0x6B79, 0x8B4E},
+       {0x6B7A, 0x8B49},
+       {0x6B7B, 0x8B56},
+       {0x6B7C, 0x8B5B},
+       {0x6B7D, 0x8B5A},
+       {0x6B7E, 0x8B6B},
+       {0x6C21, 0x8B5F},
+       {0x6C22, 0x8B6C},
+       {0x6C23, 0x8B6F},
+       {0x6C24, 0x8B74},
+       {0x6C25, 0x8B7D},
+       {0x6C26, 0x8B80},
+       {0x6C27, 0x8B8C},
+       {0x6C28, 0x8B8E},
+       {0x6C29, 0x8B92},
+       {0x6C2A, 0x8B93},
+       {0x6C2B, 0x8B96},
+       {0x6C2C, 0x8B99},
+       {0x6C2D, 0x8B9A},
+       {0x6C2E, 0x8C3A},
+       {0x6C2F, 0x8C41},
+       {0x6C30, 0x8C3F},
+       {0x6C31, 0x8C48},
+       {0x6C32, 0x8C4C},
+       {0x6C33, 0x8C4E},
+       {0x6C34, 0x8C50},
+       {0x6C35, 0x8C55},
+       {0x6C36, 0x8C62},
+       {0x6C37, 0x8C6C},
+       {0x6C38, 0x8C78},
+       {0x6C39, 0x8C7A},
+       {0x6C3A, 0x8C82},
+       {0x6C3B, 0x8C89},
+       {0x6C3C, 0x8C85},
+       {0x6C3D, 0x8C8A},
+       {0x6C3E, 0x8C8D},
+       {0x6C3F, 0x8C8E},
+       {0x6C40, 0x8C94},
+       {0x6C41, 0x8C7C},
+       {0x6C42, 0x8C98},
+       {0x6C43, 0x621D},
+       {0x6C44, 0x8CAD},
+       {0x6C45, 0x8CAA},
+       {0x6C46, 0x8CBD},
+       {0x6C47, 0x8CB2},
+       {0x6C48, 0x8CB3},
+       {0x6C49, 0x8CAE},
+       {0x6C4A, 0x8CB6},
+       {0x6C4B, 0x8CC8},
+       {0x6C4C, 0x8CC1},
+       {0x6C4D, 0x8CE4},
+       {0x6C4E, 0x8CE3},
+       {0x6C4F, 0x8CDA},
+       {0x6C50, 0x8CFD},
+       {0x6C51, 0x8CFA},
+       {0x6C52, 0x8CFB},
+       {0x6C53, 0x8D04},
+       {0x6C54, 0x8D05},
+       {0x6C55, 0x8D0A},
+       {0x6C56, 0x8D07},
+       {0x6C57, 0x8D0F},
+       {0x6C58, 0x8D0D},
+       {0x6C59, 0x8D10},
+       {0x6C5A, 0x9F4E},
+       {0x6C5B, 0x8D13},
+       {0x6C5C, 0x8CCD},
+       {0x6C5D, 0x8D14},
+       {0x6C5E, 0x8D16},
+       {0x6C5F, 0x8D67},
+       {0x6C60, 0x8D6D},
+       {0x6C61, 0x8D71},
+       {0x6C62, 0x8D73},
+       {0x6C63, 0x8D81},
+       {0x6C64, 0x8D99},
+       {0x6C65, 0x8DC2},
+       {0x6C66, 0x8DBE},
+       {0x6C67, 0x8DBA},
+       {0x6C68, 0x8DCF},
+       {0x6C69, 0x8DDA},
+       {0x6C6A, 0x8DD6},
+       {0x6C6B, 0x8DCC},
+       {0x6C6C, 0x8DDB},
+       {0x6C6D, 0x8DCB},
+       {0x6C6E, 0x8DEA},
+       {0x6C6F, 0x8DEB},
+       {0x6C70, 0x8DDF},
+       {0x6C71, 0x8DE3},
+       {0x6C72, 0x8DFC},
+       {0x6C73, 0x8E08},
+       {0x6C74, 0x8E09},
+       {0x6C75, 0x8DFF},
+       {0x6C76, 0x8E1D},
+       {0x6C77, 0x8E1E},
+       {0x6C78, 0x8E10},
+       {0x6C79, 0x8E1F},
+       {0x6C7A, 0x8E42},
+       {0x6C7B, 0x8E35},
+       {0x6C7C, 0x8E30},
+       {0x6C7D, 0x8E34},
+       {0x6C7E, 0x8E4A},
+       {0x6D21, 0x8E47},
+       {0x6D22, 0x8E49},
+       {0x6D23, 0x8E4C},
+       {0x6D24, 0x8E50},
+       {0x6D25, 0x8E48},
+       {0x6D26, 0x8E59},
+       {0x6D27, 0x8E64},
+       {0x6D28, 0x8E60},
+       {0x6D29, 0x8E2A},
+       {0x6D2A, 0x8E63},
+       {0x6D2B, 0x8E55},
+       {0x6D2C, 0x8E76},
+       {0x6D2D, 0x8E72},
+       {0x6D2E, 0x8E7C},
+       {0x6D2F, 0x8E81},
+       {0x6D30, 0x8E87},
+       {0x6D31, 0x8E85},
+       {0x6D32, 0x8E84},
+       {0x6D33, 0x8E8B},
+       {0x6D34, 0x8E8A},
+       {0x6D35, 0x8E93},
+       {0x6D36, 0x8E91},
+       {0x6D37, 0x8E94},
+       {0x6D38, 0x8E99},
+       {0x6D39, 0x8EAA},
+       {0x6D3A, 0x8EA1},
+       {0x6D3B, 0x8EAC},
+       {0x6D3C, 0x8EB0},
+       {0x6D3D, 0x8EC6},
+       {0x6D3E, 0x8EB1},
+       {0x6D3F, 0x8EBE},
+       {0x6D40, 0x8EC5},
+       {0x6D41, 0x8EC8},
+       {0x6D42, 0x8ECB},
+       {0x6D43, 0x8EDB},
+       {0x6D44, 0x8EE3},
+       {0x6D45, 0x8EFC},
+       {0x6D46, 0x8EFB},
+       {0x6D47, 0x8EEB},
+       {0x6D48, 0x8EFE},
+       {0x6D49, 0x8F0A},
+       {0x6D4A, 0x8F05},
+       {0x6D4B, 0x8F15},
+       {0x6D4C, 0x8F12},
+       {0x6D4D, 0x8F19},
+       {0x6D4E, 0x8F13},
+       {0x6D4F, 0x8F1C},
+       {0x6D50, 0x8F1F},
+       {0x6D51, 0x8F1B},
+       {0x6D52, 0x8F0C},
+       {0x6D53, 0x8F26},
+       {0x6D54, 0x8F33},
+       {0x6D55, 0x8F3B},
+       {0x6D56, 0x8F39},
+       {0x6D57, 0x8F45},
+       {0x6D58, 0x8F42},
+       {0x6D59, 0x8F3E},
+       {0x6D5A, 0x8F4C},
+       {0x6D5B, 0x8F49},
+       {0x6D5C, 0x8F46},
+       {0x6D5D, 0x8F4E},
+       {0x6D5E, 0x8F57},
+       {0x6D5F, 0x8F5C},
+       {0x6D60, 0x8F62},
+       {0x6D61, 0x8F63},
+       {0x6D62, 0x8F64},
+       {0x6D63, 0x8F9C},
+       {0x6D64, 0x8F9F},
+       {0x6D65, 0x8FA3},
+       {0x6D66, 0x8FAD},
+       {0x6D67, 0x8FAF},
+       {0x6D68, 0x8FB7},
+       {0x6D69, 0x8FDA},
+       {0x6D6A, 0x8FE5},
+       {0x6D6B, 0x8FE2},
+       {0x6D6C, 0x8FEA},
+       {0x6D6D, 0x8FEF},
+       {0x6D6E, 0x9087},
+       {0x6D6F, 0x8FF4},
+       {0x6D70, 0x9005},
+       {0x6D71, 0x8FF9},
+       {0x6D72, 0x8FFA},
+       {0x6D73, 0x9011},
+       {0x6D74, 0x9015},
+       {0x6D75, 0x9021},
+       {0x6D76, 0x900D},
+       {0x6D77, 0x901E},
+       {0x6D78, 0x9016},
+       {0x6D79, 0x900B},
+       {0x6D7A, 0x9027},
+       {0x6D7B, 0x9036},
+       {0x6D7C, 0x9035},
+       {0x6D7D, 0x9039},
+       {0x6D7E, 0x8FF8},
+       {0x6E21, 0x904F},
+       {0x6E22, 0x9050},
+       {0x6E23, 0x9051},
+       {0x6E24, 0x9052},
+       {0x6E25, 0x900E},
+       {0x6E26, 0x9049},
+       {0x6E27, 0x903E},
+       {0x6E28, 0x9056},
+       {0x6E29, 0x9058},
+       {0x6E2A, 0x905E},
+       {0x6E2B, 0x9068},
+       {0x6E2C, 0x906F},
+       {0x6E2D, 0x9076},
+       {0x6E2E, 0x96A8},
+       {0x6E2F, 0x9072},
+       {0x6E30, 0x9082},
+       {0x6E31, 0x907D},
+       {0x6E32, 0x9081},
+       {0x6E33, 0x9080},
+       {0x6E34, 0x908A},
+       {0x6E35, 0x9089},
+       {0x6E36, 0x908F},
+       {0x6E37, 0x90A8},
+       {0x6E38, 0x90AF},
+       {0x6E39, 0x90B1},
+       {0x6E3A, 0x90B5},
+       {0x6E3B, 0x90E2},
+       {0x6E3C, 0x90E4},
+       {0x6E3D, 0x6248},
+       {0x6E3E, 0x90DB},
+       {0x6E3F, 0x9102},
+       {0x6E40, 0x9112},
+       {0x6E41, 0x9119},
+       {0x6E42, 0x9132},
+       {0x6E43, 0x9130},
+       {0x6E44, 0x914A},
+       {0x6E45, 0x9156},
+       {0x6E46, 0x9158},
+       {0x6E47, 0x9163},
+       {0x6E48, 0x9165},
+       {0x6E49, 0x9169},
+       {0x6E4A, 0x9173},
+       {0x6E4B, 0x9172},
+       {0x6E4C, 0x918B},
+       {0x6E4D, 0x9189},
+       {0x6E4E, 0x9182},
+       {0x6E4F, 0x91A2},
+       {0x6E50, 0x91AB},
+       {0x6E51, 0x91AF},
+       {0x6E52, 0x91AA},
+       {0x6E53, 0x91B5},
+       {0x6E54, 0x91B4},
+       {0x6E55, 0x91BA},
+       {0x6E56, 0x91C0},
+       {0x6E57, 0x91C1},
+       {0x6E58, 0x91C9},
+       {0x6E59, 0x91CB},
+       {0x6E5A, 0x91D0},
+       {0x6E5B, 0x91D6},
+       {0x6E5C, 0x91DF},
+       {0x6E5D, 0x91E1},
+       {0x6E5E, 0x91DB},
+       {0x6E5F, 0x91FC},
+       {0x6E60, 0x91F5},
+       {0x6E61, 0x91F6},
+       {0x6E62, 0x921E},
+       {0x6E63, 0x91FF},
+       {0x6E64, 0x9214},
+       {0x6E65, 0x922C},
+       {0x6E66, 0x9215},
+       {0x6E67, 0x9211},
+       {0x6E68, 0x925E},
+       {0x6E69, 0x9257},
+       {0x6E6A, 0x9245},
+       {0x6E6B, 0x9249},
+       {0x6E6C, 0x9264},
+       {0x6E6D, 0x9248},
+       {0x6E6E, 0x9295},
+       {0x6E6F, 0x923F},
+       {0x6E70, 0x924B},
+       {0x6E71, 0x9250},
+       {0x6E72, 0x929C},
+       {0x6E73, 0x9296},
+       {0x6E74, 0x9293},
+       {0x6E75, 0x929B},
+       {0x6E76, 0x925A},
+       {0x6E77, 0x92CF},
+       {0x6E78, 0x92B9},
+       {0x6E79, 0x92B7},
+       {0x6E7A, 0x92E9},
+       {0x6E7B, 0x930F},
+       {0x6E7C, 0x92FA},
+       {0x6E7D, 0x9344},
+       {0x6E7E, 0x932E},
+       {0x6F21, 0x9319},
+       {0x6F22, 0x9322},
+       {0x6F23, 0x931A},
+       {0x6F24, 0x9323},
+       {0x6F25, 0x933A},
+       {0x6F26, 0x9335},
+       {0x6F27, 0x933B},
+       {0x6F28, 0x935C},
+       {0x6F29, 0x9360},
+       {0x6F2A, 0x937C},
+       {0x6F2B, 0x936E},
+       {0x6F2C, 0x9356},
+       {0x6F2D, 0x93B0},
+       {0x6F2E, 0x93AC},
+       {0x6F2F, 0x93AD},
+       {0x6F30, 0x9394},
+       {0x6F31, 0x93B9},
+       {0x6F32, 0x93D6},
+       {0x6F33, 0x93D7},
+       {0x6F34, 0x93E8},
+       {0x6F35, 0x93E5},
+       {0x6F36, 0x93D8},
+       {0x6F37, 0x93C3},
+       {0x6F38, 0x93DD},
+       {0x6F39, 0x93D0},
+       {0x6F3A, 0x93C8},
+       {0x6F3B, 0x93E4},
+       {0x6F3C, 0x941A},
+       {0x6F3D, 0x9414},
+       {0x6F3E, 0x9413},
+       {0x6F3F, 0x9403},
+       {0x6F40, 0x9407},
+       {0x6F41, 0x9410},
+       {0x6F42, 0x9436},
+       {0x6F43, 0x942B},
+       {0x6F44, 0x9435},
+       {0x6F45, 0x9421},
+       {0x6F46, 0x943A},
+       {0x6F47, 0x9441},
+       {0x6F48, 0x9452},
+       {0x6F49, 0x9444},
+       {0x6F4A, 0x945B},
+       {0x6F4B, 0x9460},
+       {0x6F4C, 0x9462},
+       {0x6F4D, 0x945E},
+       {0x6F4E, 0x946A},
+       {0x6F4F, 0x9229},
+       {0x6F50, 0x9470},
+       {0x6F51, 0x9475},
+       {0x6F52, 0x9477},
+       {0x6F53, 0x947D},
+       {0x6F54, 0x945A},
+       {0x6F55, 0x947C},
+       {0x6F56, 0x947E},
+       {0x6F57, 0x9481},
+       {0x6F58, 0x947F},
+       {0x6F59, 0x9582},
+       {0x6F5A, 0x9587},
+       {0x6F5B, 0x958A},
+       {0x6F5C, 0x9594},
+       {0x6F5D, 0x9596},
+       {0x6F5E, 0x9598},
+       {0x6F5F, 0x9599},
+       {0x6F60, 0x95A0},
+       {0x6F61, 0x95A8},
+       {0x6F62, 0x95A7},
+       {0x6F63, 0x95AD},
+       {0x6F64, 0x95BC},
+       {0x6F65, 0x95BB},
+       {0x6F66, 0x95B9},
+       {0x6F67, 0x95BE},
+       {0x6F68, 0x95CA},
+       {0x6F69, 0x6FF6},
+       {0x6F6A, 0x95C3},
+       {0x6F6B, 0x95CD},
+       {0x6F6C, 0x95CC},
+       {0x6F6D, 0x95D5},
+       {0x6F6E, 0x95D4},
+       {0x6F6F, 0x95D6},
+       {0x6F70, 0x95DC},
+       {0x6F71, 0x95E1},
+       {0x6F72, 0x95E5},
+       {0x6F73, 0x95E2},
+       {0x6F74, 0x9621},
+       {0x6F75, 0x9628},
+       {0x6F76, 0x962E},
+       {0x6F77, 0x962F},
+       {0x6F78, 0x9642},
+       {0x6F79, 0x964C},
+       {0x6F7A, 0x964F},
+       {0x6F7B, 0x964B},
+       {0x6F7C, 0x9677},
+       {0x6F7D, 0x965C},
+       {0x6F7E, 0x965E},
+       {0x7021, 0x965D},
+       {0x7022, 0x965F},
+       {0x7023, 0x9666},
+       {0x7024, 0x9672},
+       {0x7025, 0x966C},
+       {0x7026, 0x968D},
+       {0x7027, 0x9698},
+       {0x7028, 0x9695},
+       {0x7029, 0x9697},
+       {0x702A, 0x96AA},
+       {0x702B, 0x96A7},
+       {0x702C, 0x96B1},
+       {0x702D, 0x96B2},
+       {0x702E, 0x96B0},
+       {0x702F, 0x96B4},
+       {0x7030, 0x96B6},
+       {0x7031, 0x96B8},
+       {0x7032, 0x96B9},
+       {0x7033, 0x96CE},
+       {0x7034, 0x96CB},
+       {0x7035, 0x96C9},
+       {0x7036, 0x96CD},
+       {0x7037, 0x894D},
+       {0x7038, 0x96DC},
+       {0x7039, 0x970D},
+       {0x703A, 0x96D5},
+       {0x703B, 0x96F9},
+       {0x703C, 0x9704},
+       {0x703D, 0x9706},
+       {0x703E, 0x9708},
+       {0x703F, 0x9713},
+       {0x7040, 0x970E},
+       {0x7041, 0x9711},
+       {0x7042, 0x970F},
+       {0x7043, 0x9716},
+       {0x7044, 0x9719},
+       {0x7045, 0x9724},
+       {0x7046, 0x972A},
+       {0x7047, 0x9730},
+       {0x7048, 0x9739},
+       {0x7049, 0x973D},
+       {0x704A, 0x973E},
+       {0x704B, 0x9744},
+       {0x704C, 0x9746},
+       {0x704D, 0x9748},
+       {0x704E, 0x9742},
+       {0x704F, 0x9749},
+       {0x7050, 0x975C},
+       {0x7051, 0x9760},
+       {0x7052, 0x9764},
+       {0x7053, 0x9766},
+       {0x7054, 0x9768},
+       {0x7055, 0x52D2},
+       {0x7056, 0x976B},
+       {0x7057, 0x9771},
+       {0x7058, 0x9779},
+       {0x7059, 0x9785},
+       {0x705A, 0x977C},
+       {0x705B, 0x9781},
+       {0x705C, 0x977A},
+       {0x705D, 0x9786},
+       {0x705E, 0x978B},
+       {0x705F, 0x978F},
+       {0x7060, 0x9790},
+       {0x7061, 0x979C},
+       {0x7062, 0x97A8},
+       {0x7063, 0x97A6},
+       {0x7064, 0x97A3},
+       {0x7065, 0x97B3},
+       {0x7066, 0x97B4},
+       {0x7067, 0x97C3},
+       {0x7068, 0x97C6},
+       {0x7069, 0x97C8},
+       {0x706A, 0x97CB},
+       {0x706B, 0x97DC},
+       {0x706C, 0x97ED},
+       {0x706D, 0x9F4F},
+       {0x706E, 0x97F2},
+       {0x706F, 0x7ADF},
+       {0x7070, 0x97F6},
+       {0x7071, 0x97F5},
+       {0x7072, 0x980F},
+       {0x7073, 0x980C},
+       {0x7074, 0x9838},
+       {0x7075, 0x9824},
+       {0x7076, 0x9821},
+       {0x7077, 0x9837},
+       {0x7078, 0x983D},
+       {0x7079, 0x9846},
+       {0x707A, 0x984F},
+       {0x707B, 0x984B},
+       {0x707C, 0x986B},
+       {0x707D, 0x986F},
+       {0x707E, 0x9870},
+       {0x7121, 0x9871},
+       {0x7122, 0x9874},
+       {0x7123, 0x9873},
+       {0x7124, 0x98AA},
+       {0x7125, 0x98AF},
+       {0x7126, 0x98B1},
+       {0x7127, 0x98B6},
+       {0x7128, 0x98C4},
+       {0x7129, 0x98C3},
+       {0x712A, 0x98C6},
+       {0x712B, 0x98E9},
+       {0x712C, 0x98EB},
+       {0x712D, 0x9903},
+       {0x712E, 0x9909},
+       {0x712F, 0x9912},
+       {0x7130, 0x9914},
+       {0x7131, 0x9918},
+       {0x7132, 0x9921},
+       {0x7133, 0x991D},
+       {0x7134, 0x991E},
+       {0x7135, 0x9924},
+       {0x7136, 0x9920},
+       {0x7137, 0x992C},
+       {0x7138, 0x992E},
+       {0x7139, 0x993D},
+       {0x713A, 0x993E},
+       {0x713B, 0x9942},
+       {0x713C, 0x9949},
+       {0x713D, 0x9945},
+       {0x713E, 0x9950},
+       {0x713F, 0x994B},
+       {0x7140, 0x9951},
+       {0x7141, 0x9952},
+       {0x7142, 0x994C},
+       {0x7143, 0x9955},
+       {0x7144, 0x9997},
+       {0x7145, 0x9998},
+       {0x7146, 0x99A5},
+       {0x7147, 0x99AD},
+       {0x7148, 0x99AE},
+       {0x7149, 0x99BC},
+       {0x714A, 0x99DF},
+       {0x714B, 0x99DB},
+       {0x714C, 0x99DD},
+       {0x714D, 0x99D8},
+       {0x714E, 0x99D1},
+       {0x714F, 0x99ED},
+       {0x7150, 0x99EE},
+       {0x7151, 0x99F1},
+       {0x7152, 0x99F2},
+       {0x7153, 0x99FB},
+       {0x7154, 0x99F8},
+       {0x7155, 0x9A01},
+       {0x7156, 0x9A0F},
+       {0x7157, 0x9A05},
+       {0x7158, 0x99E2},
+       {0x7159, 0x9A19},
+       {0x715A, 0x9A2B},
+       {0x715B, 0x9A37},
+       {0x715C, 0x9A45},
+       {0x715D, 0x9A42},
+       {0x715E, 0x9A40},
+       {0x715F, 0x9A43},
+       {0x7160, 0x9A3E},
+       {0x7161, 0x9A55},
+       {0x7162, 0x9A4D},
+       {0x7163, 0x9A5B},
+       {0x7164, 0x9A57},
+       {0x7165, 0x9A5F},
+       {0x7166, 0x9A62},
+       {0x7167, 0x9A65},
+       {0x7168, 0x9A64},
+       {0x7169, 0x9A69},
+       {0x716A, 0x9A6B},
+       {0x716B, 0x9A6A},
+       {0x716C, 0x9AAD},
+       {0x716D, 0x9AB0},
+       {0x716E, 0x9ABC},
+       {0x716F, 0x9AC0},
+       {0x7170, 0x9ACF},
+       {0x7171, 0x9AD1},
+       {0x7172, 0x9AD3},
+       {0x7173, 0x9AD4},
+       {0x7174, 0x9ADE},
+       {0x7175, 0x9ADF},
+       {0x7176, 0x9AE2},
+       {0x7177, 0x9AE3},
+       {0x7178, 0x9AE6},
+       {0x7179, 0x9AEF},
+       {0x717A, 0x9AEB},
+       {0x717B, 0x9AEE},
+       {0x717C, 0x9AF4},
+       {0x717D, 0x9AF1},
+       {0x717E, 0x9AF7},
+       {0x7221, 0x9AFB},
+       {0x7222, 0x9B06},
+       {0x7223, 0x9B18},
+       {0x7224, 0x9B1A},
+       {0x7225, 0x9B1F},
+       {0x7226, 0x9B22},
+       {0x7227, 0x9B23},
+       {0x7228, 0x9B25},
+       {0x7229, 0x9B27},
+       {0x722A, 0x9B28},
+       {0x722B, 0x9B29},
+       {0x722C, 0x9B2A},
+       {0x722D, 0x9B2E},
+       {0x722E, 0x9B2F},
+       {0x722F, 0x9B32},
+       {0x7230, 0x9B44},
+       {0x7231, 0x9B43},
+       {0x7232, 0x9B4F},
+       {0x7233, 0x9B4D},
+       {0x7234, 0x9B4E},
+       {0x7235, 0x9B51},
+       {0x7236, 0x9B58},
+       {0x7237, 0x9B74},
+       {0x7238, 0x9B93},
+       {0x7239, 0x9B83},
+       {0x723A, 0x9B91},
+       {0x723B, 0x9B96},
+       {0x723C, 0x9B97},
+       {0x723D, 0x9B9F},
+       {0x723E, 0x9BA0},
+       {0x723F, 0x9BA8},
+       {0x7240, 0x9BB4},
+       {0x7241, 0x9BC0},
+       {0x7242, 0x9BCA},
+       {0x7243, 0x9BB9},
+       {0x7244, 0x9BC6},
+       {0x7245, 0x9BCF},
+       {0x7246, 0x9BD1},
+       {0x7247, 0x9BD2},
+       {0x7248, 0x9BE3},
+       {0x7249, 0x9BE2},
+       {0x724A, 0x9BE4},
+       {0x724B, 0x9BD4},
+       {0x724C, 0x9BE1},
+       {0x724D, 0x9C3A},
+       {0x724E, 0x9BF2},
+       {0x724F, 0x9BF1},
+       {0x7250, 0x9BF0},
+       {0x7251, 0x9C15},
+       {0x7252, 0x9C14},
+       {0x7253, 0x9C09},
+       {0x7254, 0x9C13},
+       {0x7255, 0x9C0C},
+       {0x7256, 0x9C06},
+       {0x7257, 0x9C08},
+       {0x7258, 0x9C12},
+       {0x7259, 0x9C0A},
+       {0x725A, 0x9C04},
+       {0x725B, 0x9C2E},
+       {0x725C, 0x9C1B},
+       {0x725D, 0x9C25},
+       {0x725E, 0x9C24},
+       {0x725F, 0x9C21},
+       {0x7260, 0x9C30},
+       {0x7261, 0x9C47},
+       {0x7262, 0x9C32},
+       {0x7263, 0x9C46},
+       {0x7264, 0x9C3E},
+       {0x7265, 0x9C5A},
+       {0x7266, 0x9C60},
+       {0x7267, 0x9C67},
+       {0x7268, 0x9C76},
+       {0x7269, 0x9C78},
+       {0x726A, 0x9CE7},
+       {0x726B, 0x9CEC},
+       {0x726C, 0x9CF0},
+       {0x726D, 0x9D09},
+       {0x726E, 0x9D08},
+       {0x726F, 0x9CEB},
+       {0x7270, 0x9D03},
+       {0x7271, 0x9D06},
+       {0x7272, 0x9D2A},
+       {0x7273, 0x9D26},
+       {0x7274, 0x9DAF},
+       {0x7275, 0x9D23},
+       {0x7276, 0x9D1F},
+       {0x7277, 0x9D44},
+       {0x7278, 0x9D15},
+       {0x7279, 0x9D12},
+       {0x727A, 0x9D41},
+       {0x727B, 0x9D3F},
+       {0x727C, 0x9D3E},
+       {0x727D, 0x9D46},
+       {0x727E, 0x9D48},
+       {0x7321, 0x9D5D},
+       {0x7322, 0x9D5E},
+       {0x7323, 0x9D64},
+       {0x7324, 0x9D51},
+       {0x7325, 0x9D50},
+       {0x7326, 0x9D59},
+       {0x7327, 0x9D72},
+       {0x7328, 0x9D89},
+       {0x7329, 0x9D87},
+       {0x732A, 0x9DAB},
+       {0x732B, 0x9D6F},
+       {0x732C, 0x9D7A},
+       {0x732D, 0x9D9A},
+       {0x732E, 0x9DA4},
+       {0x732F, 0x9DA9},
+       {0x7330, 0x9DB2},
+       {0x7331, 0x9DC4},
+       {0x7332, 0x9DC1},
+       {0x7333, 0x9DBB},
+       {0x7334, 0x9DB8},
+       {0x7335, 0x9DBA},
+       {0x7336, 0x9DC6},
+       {0x7337, 0x9DCF},
+       {0x7338, 0x9DC2},
+       {0x7339, 0x9DD9},
+       {0x733A, 0x9DD3},
+       {0x733B, 0x9DF8},
+       {0x733C, 0x9DE6},
+       {0x733D, 0x9DED},
+       {0x733E, 0x9DEF},
+       {0x733F, 0x9DFD},
+       {0x7340, 0x9E1A},
+       {0x7341, 0x9E1B},
+       {0x7342, 0x9E1E},
+       {0x7343, 0x9E75},
+       {0x7344, 0x9E79},
+       {0x7345, 0x9E7D},
+       {0x7346, 0x9E81},
+       {0x7347, 0x9E88},
+       {0x7348, 0x9E8B},
+       {0x7349, 0x9E8C},
+       {0x734A, 0x9E92},
+       {0x734B, 0x9E95},
+       {0x734C, 0x9E91},
+       {0x734D, 0x9E9D},
+       {0x734E, 0x9EA5},
+       {0x734F, 0x9EA9},
+       {0x7350, 0x9EB8},
+       {0x7351, 0x9EAA},
+       {0x7352, 0x9EAD},
+       {0x7353, 0x9761},
+       {0x7354, 0x9ECC},
+       {0x7355, 0x9ECE},
+       {0x7356, 0x9ECF},
+       {0x7357, 0x9ED0},
+       {0x7358, 0x9ED4},
+       {0x7359, 0x9EDC},
+       {0x735A, 0x9EDE},
+       {0x735B, 0x9EDD},
+       {0x735C, 0x9EE0},
+       {0x735D, 0x9EE5},
+       {0x735E, 0x9EE8},
+       {0x735F, 0x9EEF},
+       {0x7360, 0x9EF4},
+       {0x7361, 0x9EF6},
+       {0x7362, 0x9EF7},
+       {0x7363, 0x9EF9},
+       {0x7364, 0x9EFB},
+       {0x7365, 0x9EFC},
+       {0x7366, 0x9EFD},
+       {0x7367, 0x9F07},
+       {0x7368, 0x9F08},
+       {0x7369, 0x76B7},
+       {0x736A, 0x9F15},
+       {0x736B, 0x9F21},
+       {0x736C, 0x9F2C},
+       {0x736D, 0x9F3E},
+       {0x736E, 0x9F4A},
+       {0x736F, 0x9F52},
+       {0x7370, 0x9F54},
+       {0x7371, 0x9F63},
+       {0x7372, 0x9F5F},
+       {0x7373, 0x9F60},
+       {0x7374, 0x9F61},
+       {0x7375, 0x9F66},
+       {0x7376, 0x9F67},
+       {0x7377, 0x9F6C},
+       {0x7378, 0x9F6A},
+       {0x7379, 0x9F77},
+       {0x737A, 0x9F72},
+       {0x737B, 0x9F76},
+       {0x737C, 0x9F95},
+       {0x737D, 0x9F9C},
+       {0x737E, 0x9FA0},
+       {0x7421, 0x582F},
+       {0x7422, 0x69C7},
+       {0x7423, 0x9059},
+       {0x7424, 0x7464},
+       {0x7425, 0x51DC},
+       {0x7426, 0x7199},
diff --git a/vte/src/unitable.JIS0212 b/vte/src/unitable.JIS0212
new file mode 100644
index 0000000..b4e26d0
--- /dev/null
+++ b/vte/src/unitable.JIS0212
@@ -0,0 +1,6068 @@
+       /* generated file -- do not edit */
+       {0x222F, 0x02D8},
+       {0x2230, 0x02C7},
+       {0x2231, 0x00B8},
+       {0x2232, 0x02D9},
+       {0x2233, 0x02DD},
+       {0x2234, 0x00AF},
+       {0x2235, 0x02DB},
+       {0x2236, 0x02DA},
+       {0x2237, 0x007E},
+       {0x2238, 0x0384},
+       {0x2239, 0x0385},
+       {0x2242, 0x00A1},
+       {0x2243, 0x00A6},
+       {0x2244, 0x00BF},
+       {0x226B, 0x00BA},
+       {0x226C, 0x00AA},
+       {0x226D, 0x00A9},
+       {0x226E, 0x00AE},
+       {0x226F, 0x2122},
+       {0x2270, 0x00A4},
+       {0x2271, 0x2116},
+       {0x2661, 0x0386},
+       {0x2662, 0x0388},
+       {0x2663, 0x0389},
+       {0x2664, 0x038A},
+       {0x2665, 0x03AA},
+       {0x2667, 0x038C},
+       {0x2669, 0x038E},
+       {0x266A, 0x03AB},
+       {0x266C, 0x038F},
+       {0x2671, 0x03AC},
+       {0x2672, 0x03AD},
+       {0x2673, 0x03AE},
+       {0x2674, 0x03AF},
+       {0x2675, 0x03CA},
+       {0x2676, 0x0390},
+       {0x2677, 0x03CC},
+       {0x2678, 0x03C2},
+       {0x2679, 0x03CD},
+       {0x267A, 0x03CB},
+       {0x267B, 0x03B0},
+       {0x267C, 0x03CE},
+       {0x2742, 0x0402},
+       {0x2743, 0x0403},
+       {0x2744, 0x0404},
+       {0x2745, 0x0405},
+       {0x2746, 0x0406},
+       {0x2747, 0x0407},
+       {0x2748, 0x0408},
+       {0x2749, 0x0409},
+       {0x274A, 0x040A},
+       {0x274B, 0x040B},
+       {0x274C, 0x040C},
+       {0x274D, 0x040E},
+       {0x274E, 0x040F},
+       {0x2772, 0x0452},
+       {0x2773, 0x0453},
+       {0x2774, 0x0454},
+       {0x2775, 0x0455},
+       {0x2776, 0x0456},
+       {0x2777, 0x0457},
+       {0x2778, 0x0458},
+       {0x2779, 0x0459},
+       {0x277A, 0x045A},
+       {0x277B, 0x045B},
+       {0x277C, 0x045C},
+       {0x277D, 0x045E},
+       {0x277E, 0x045F},
+       {0x2921, 0x00C6},
+       {0x2922, 0x0110},
+       {0x2924, 0x0126},
+       {0x2926, 0x0132},
+       {0x2928, 0x0141},
+       {0x2929, 0x013F},
+       {0x292B, 0x014A},
+       {0x292C, 0x00D8},
+       {0x292D, 0x0152},
+       {0x292F, 0x0166},
+       {0x2930, 0x00DE},
+       {0x2941, 0x00E6},
+       {0x2942, 0x0111},
+       {0x2943, 0x00F0},
+       {0x2944, 0x0127},
+       {0x2945, 0x0131},
+       {0x2946, 0x0133},
+       {0x2947, 0x0138},
+       {0x2948, 0x0142},
+       {0x2949, 0x0140},
+       {0x294A, 0x0149},
+       {0x294B, 0x014B},
+       {0x294C, 0x00F8},
+       {0x294D, 0x0153},
+       {0x294E, 0x00DF},
+       {0x294F, 0x0167},
+       {0x2950, 0x00FE},
+       {0x2A21, 0x00C1},
+       {0x2A22, 0x00C0},
+       {0x2A23, 0x00C4},
+       {0x2A24, 0x00C2},
+       {0x2A25, 0x0102},
+       {0x2A26, 0x01CD},
+       {0x2A27, 0x0100},
+       {0x2A28, 0x0104},
+       {0x2A29, 0x00C5},
+       {0x2A2A, 0x00C3},
+       {0x2A2B, 0x0106},
+       {0x2A2C, 0x0108},
+       {0x2A2D, 0x010C},
+       {0x2A2E, 0x00C7},
+       {0x2A2F, 0x010A},
+       {0x2A30, 0x010E},
+       {0x2A31, 0x00C9},
+       {0x2A32, 0x00C8},
+       {0x2A33, 0x00CB},
+       {0x2A34, 0x00CA},
+       {0x2A35, 0x011A},
+       {0x2A36, 0x0116},
+       {0x2A37, 0x0112},
+       {0x2A38, 0x0118},
+       {0x2A3A, 0x011C},
+       {0x2A3B, 0x011E},
+       {0x2A3C, 0x0122},
+       {0x2A3D, 0x0120},
+       {0x2A3E, 0x0124},
+       {0x2A3F, 0x00CD},
+       {0x2A40, 0x00CC},
+       {0x2A41, 0x00CF},
+       {0x2A42, 0x00CE},
+       {0x2A43, 0x01CF},
+       {0x2A44, 0x0130},
+       {0x2A45, 0x012A},
+       {0x2A46, 0x012E},
+       {0x2A47, 0x0128},
+       {0x2A48, 0x0134},
+       {0x2A49, 0x0136},
+       {0x2A4A, 0x0139},
+       {0x2A4B, 0x013D},
+       {0x2A4C, 0x013B},
+       {0x2A4D, 0x0143},
+       {0x2A4E, 0x0147},
+       {0x2A4F, 0x0145},
+       {0x2A50, 0x00D1},
+       {0x2A51, 0x00D3},
+       {0x2A52, 0x00D2},
+       {0x2A53, 0x00D6},
+       {0x2A54, 0x00D4},
+       {0x2A55, 0x01D1},
+       {0x2A56, 0x0150},
+       {0x2A57, 0x014C},
+       {0x2A58, 0x00D5},
+       {0x2A59, 0x0154},
+       {0x2A5A, 0x0158},
+       {0x2A5B, 0x0156},
+       {0x2A5C, 0x015A},
+       {0x2A5D, 0x015C},
+       {0x2A5E, 0x0160},
+       {0x2A5F, 0x015E},
+       {0x2A60, 0x0164},
+       {0x2A61, 0x0162},
+       {0x2A62, 0x00DA},
+       {0x2A63, 0x00D9},
+       {0x2A64, 0x00DC},
+       {0x2A65, 0x00DB},
+       {0x2A66, 0x016C},
+       {0x2A67, 0x01D3},
+       {0x2A68, 0x0170},
+       {0x2A69, 0x016A},
+       {0x2A6A, 0x0172},
+       {0x2A6B, 0x016E},
+       {0x2A6C, 0x0168},
+       {0x2A6D, 0x01D7},
+       {0x2A6E, 0x01DB},
+       {0x2A6F, 0x01D9},
+       {0x2A70, 0x01D5},
+       {0x2A71, 0x0174},
+       {0x2A72, 0x00DD},
+       {0x2A73, 0x0178},
+       {0x2A74, 0x0176},
+       {0x2A75, 0x0179},
+       {0x2A76, 0x017D},
+       {0x2A77, 0x017B},
+       {0x2B21, 0x00E1},
+       {0x2B22, 0x00E0},
+       {0x2B23, 0x00E4},
+       {0x2B24, 0x00E2},
+       {0x2B25, 0x0103},
+       {0x2B26, 0x01CE},
+       {0x2B27, 0x0101},
+       {0x2B28, 0x0105},
+       {0x2B29, 0x00E5},
+       {0x2B2A, 0x00E3},
+       {0x2B2B, 0x0107},
+       {0x2B2C, 0x0109},
+       {0x2B2D, 0x010D},
+       {0x2B2E, 0x00E7},
+       {0x2B2F, 0x010B},
+       {0x2B30, 0x010F},
+       {0x2B31, 0x00E9},
+       {0x2B32, 0x00E8},
+       {0x2B33, 0x00EB},
+       {0x2B34, 0x00EA},
+       {0x2B35, 0x011B},
+       {0x2B36, 0x0117},
+       {0x2B37, 0x0113},
+       {0x2B38, 0x0119},
+       {0x2B39, 0x01F5},
+       {0x2B3A, 0x011D},
+       {0x2B3B, 0x011F},
+       {0x2B3D, 0x0121},
+       {0x2B3E, 0x0125},
+       {0x2B3F, 0x00ED},
+       {0x2B40, 0x00EC},
+       {0x2B41, 0x00EF},
+       {0x2B42, 0x00EE},
+       {0x2B43, 0x01D0},
+       {0x2B45, 0x012B},
+       {0x2B46, 0x012F},
+       {0x2B47, 0x0129},
+       {0x2B48, 0x0135},
+       {0x2B49, 0x0137},
+       {0x2B4A, 0x013A},
+       {0x2B4B, 0x013E},
+       {0x2B4C, 0x013C},
+       {0x2B4D, 0x0144},
+       {0x2B4E, 0x0148},
+       {0x2B4F, 0x0146},
+       {0x2B50, 0x00F1},
+       {0x2B51, 0x00F3},
+       {0x2B52, 0x00F2},
+       {0x2B53, 0x00F6},
+       {0x2B54, 0x00F4},
+       {0x2B55, 0x01D2},
+       {0x2B56, 0x0151},
+       {0x2B57, 0x014D},
+       {0x2B58, 0x00F5},
+       {0x2B59, 0x0155},
+       {0x2B5A, 0x0159},
+       {0x2B5B, 0x0157},
+       {0x2B5C, 0x015B},
+       {0x2B5D, 0x015D},
+       {0x2B5E, 0x0161},
+       {0x2B5F, 0x015F},
+       {0x2B60, 0x0165},
+       {0x2B61, 0x0163},
+       {0x2B62, 0x00FA},
+       {0x2B63, 0x00F9},
+       {0x2B64, 0x00FC},
+       {0x2B65, 0x00FB},
+       {0x2B66, 0x016D},
+       {0x2B67, 0x01D4},
+       {0x2B68, 0x0171},
+       {0x2B69, 0x016B},
+       {0x2B6A, 0x0173},
+       {0x2B6B, 0x016F},
+       {0x2B6C, 0x0169},
+       {0x2B6D, 0x01D8},
+       {0x2B6E, 0x01DC},
+       {0x2B6F, 0x01DA},
+       {0x2B70, 0x01D6},
+       {0x2B71, 0x0175},
+       {0x2B72, 0x00FD},
+       {0x2B73, 0x00FF},
+       {0x2B74, 0x0177},
+       {0x2B75, 0x017A},
+       {0x2B76, 0x017E},
+       {0x2B77, 0x017C},
+       {0x3021, 0x4E02},
+       {0x3022, 0x4E04},
+       {0x3023, 0x4E05},
+       {0x3024, 0x4E0C},
+       {0x3025, 0x4E12},
+       {0x3026, 0x4E1F},
+       {0x3027, 0x4E23},
+       {0x3028, 0x4E24},
+       {0x3029, 0x4E28},
+       {0x302A, 0x4E2B},
+       {0x302B, 0x4E2E},
+       {0x302C, 0x4E2F},
+       {0x302D, 0x4E30},
+       {0x302E, 0x4E35},
+       {0x302F, 0x4E40},
+       {0x3030, 0x4E41},
+       {0x3031, 0x4E44},
+       {0x3032, 0x4E47},
+       {0x3033, 0x4E51},
+       {0x3034, 0x4E5A},
+       {0x3035, 0x4E5C},
+       {0x3036, 0x4E63},
+       {0x3037, 0x4E68},
+       {0x3038, 0x4E69},
+       {0x3039, 0x4E74},
+       {0x303A, 0x4E75},
+       {0x303B, 0x4E79},
+       {0x303C, 0x4E7F},
+       {0x303D, 0x4E8D},
+       {0x303E, 0x4E96},
+       {0x303F, 0x4E97},
+       {0x3040, 0x4E9D},
+       {0x3041, 0x4EAF},
+       {0x3042, 0x4EB9},
+       {0x3043, 0x4EC3},
+       {0x3044, 0x4ED0},
+       {0x3045, 0x4EDA},
+       {0x3046, 0x4EDB},
+       {0x3047, 0x4EE0},
+       {0x3048, 0x4EE1},
+       {0x3049, 0x4EE2},
+       {0x304A, 0x4EE8},
+       {0x304B, 0x4EEF},
+       {0x304C, 0x4EF1},
+       {0x304D, 0x4EF3},
+       {0x304E, 0x4EF5},
+       {0x304F, 0x4EFD},
+       {0x3050, 0x4EFE},
+       {0x3051, 0x4EFF},
+       {0x3052, 0x4F00},
+       {0x3053, 0x4F02},
+       {0x3054, 0x4F03},
+       {0x3055, 0x4F08},
+       {0x3056, 0x4F0B},
+       {0x3057, 0x4F0C},
+       {0x3058, 0x4F12},
+       {0x3059, 0x4F15},
+       {0x305A, 0x4F16},
+       {0x305B, 0x4F17},
+       {0x305C, 0x4F19},
+       {0x305D, 0x4F2E},
+       {0x305E, 0x4F31},
+       {0x305F, 0x4F60},
+       {0x3060, 0x4F33},
+       {0x3061, 0x4F35},
+       {0x3062, 0x4F37},
+       {0x3063, 0x4F39},
+       {0x3064, 0x4F3B},
+       {0x3065, 0x4F3E},
+       {0x3066, 0x4F40},
+       {0x3067, 0x4F42},
+       {0x3068, 0x4F48},
+       {0x3069, 0x4F49},
+       {0x306A, 0x4F4B},
+       {0x306B, 0x4F4C},
+       {0x306C, 0x4F52},
+       {0x306D, 0x4F54},
+       {0x306E, 0x4F56},
+       {0x306F, 0x4F58},
+       {0x3070, 0x4F5F},
+       {0x3071, 0x4F63},
+       {0x3072, 0x4F6A},
+       {0x3073, 0x4F6C},
+       {0x3074, 0x4F6E},
+       {0x3075, 0x4F71},
+       {0x3076, 0x4F77},
+       {0x3077, 0x4F78},
+       {0x3078, 0x4F79},
+       {0x3079, 0x4F7A},
+       {0x307A, 0x4F7D},
+       {0x307B, 0x4F7E},
+       {0x307C, 0x4F81},
+       {0x307D, 0x4F82},
+       {0x307E, 0x4F84},
+       {0x3121, 0x4F85},
+       {0x3122, 0x4F89},
+       {0x3123, 0x4F8A},
+       {0x3124, 0x4F8C},
+       {0x3125, 0x4F8E},
+       {0x3126, 0x4F90},
+       {0x3127, 0x4F92},
+       {0x3128, 0x4F93},
+       {0x3129, 0x4F94},
+       {0x312A, 0x4F97},
+       {0x312B, 0x4F99},
+       {0x312C, 0x4F9A},
+       {0x312D, 0x4F9E},
+       {0x312E, 0x4F9F},
+       {0x312F, 0x4FB2},
+       {0x3130, 0x4FB7},
+       {0x3131, 0x4FB9},
+       {0x3132, 0x4FBB},
+       {0x3133, 0x4FBC},
+       {0x3134, 0x4FBD},
+       {0x3135, 0x4FBE},
+       {0x3136, 0x4FC0},
+       {0x3137, 0x4FC1},
+       {0x3138, 0x4FC5},
+       {0x3139, 0x4FC6},
+       {0x313A, 0x4FC8},
+       {0x313B, 0x4FC9},
+       {0x313C, 0x4FCB},
+       {0x313D, 0x4FCC},
+       {0x313E, 0x4FCD},
+       {0x313F, 0x4FCF},
+       {0x3140, 0x4FD2},
+       {0x3141, 0x4FDC},
+       {0x3142, 0x4FE0},
+       {0x3143, 0x4FE2},
+       {0x3144, 0x4FF0},
+       {0x3145, 0x4FF2},
+       {0x3146, 0x4FFC},
+       {0x3147, 0x4FFD},
+       {0x3148, 0x4FFF},
+       {0x3149, 0x5000},
+       {0x314A, 0x5001},
+       {0x314B, 0x5004},
+       {0x314C, 0x5007},
+       {0x314D, 0x500A},
+       {0x314E, 0x500C},
+       {0x314F, 0x500E},
+       {0x3150, 0x5010},
+       {0x3151, 0x5013},
+       {0x3152, 0x5017},
+       {0x3153, 0x5018},
+       {0x3154, 0x501B},
+       {0x3155, 0x501C},
+       {0x3156, 0x501D},
+       {0x3157, 0x501E},
+       {0x3158, 0x5022},
+       {0x3159, 0x5027},
+       {0x315A, 0x502E},
+       {0x315B, 0x5030},
+       {0x315C, 0x5032},
+       {0x315D, 0x5033},
+       {0x315E, 0x5035},
+       {0x315F, 0x5040},
+       {0x3160, 0x5041},
+       {0x3161, 0x5042},
+       {0x3162, 0x5045},
+       {0x3163, 0x5046},
+       {0x3164, 0x504A},
+       {0x3165, 0x504C},
+       {0x3166, 0x504E},
+       {0x3167, 0x5051},
+       {0x3168, 0x5052},
+       {0x3169, 0x5053},
+       {0x316A, 0x5057},
+       {0x316B, 0x5059},
+       {0x316C, 0x505F},
+       {0x316D, 0x5060},
+       {0x316E, 0x5062},
+       {0x316F, 0x5063},
+       {0x3170, 0x5066},
+       {0x3171, 0x5067},
+       {0x3172, 0x506A},
+       {0x3173, 0x506D},
+       {0x3174, 0x5070},
+       {0x3175, 0x5071},
+       {0x3176, 0x503B},
+       {0x3177, 0x5081},
+       {0x3178, 0x5083},
+       {0x3179, 0x5084},
+       {0x317A, 0x5086},
+       {0x317B, 0x508A},
+       {0x317C, 0x508E},
+       {0x317D, 0x508F},
+       {0x317E, 0x5090},
+       {0x3221, 0x5092},
+       {0x3222, 0x5093},
+       {0x3223, 0x5094},
+       {0x3224, 0x5096},
+       {0x3225, 0x509B},
+       {0x3226, 0x509C},
+       {0x3227, 0x509E},
+       {0x3228, 0x509F},
+       {0x3229, 0x50A0},
+       {0x322A, 0x50A1},
+       {0x322B, 0x50A2},
+       {0x322C, 0x50AA},
+       {0x322D, 0x50AF},
+       {0x322E, 0x50B0},
+       {0x322F, 0x50B9},
+       {0x3230, 0x50BA},
+       {0x3231, 0x50BD},
+       {0x3232, 0x50C0},
+       {0x3233, 0x50C3},
+       {0x3234, 0x50C4},
+       {0x3235, 0x50C7},
+       {0x3236, 0x50CC},
+       {0x3237, 0x50CE},
+       {0x3238, 0x50D0},
+       {0x3239, 0x50D3},
+       {0x323A, 0x50D4},
+       {0x323B, 0x50D8},
+       {0x323C, 0x50DC},
+       {0x323D, 0x50DD},
+       {0x323E, 0x50DF},
+       {0x323F, 0x50E2},
+       {0x3240, 0x50E4},
+       {0x3241, 0x50E6},
+       {0x3242, 0x50E8},
+       {0x3243, 0x50E9},
+       {0x3244, 0x50EF},
+       {0x3245, 0x50F1},
+       {0x3246, 0x50F6},
+       {0x3247, 0x50FA},
+       {0x3248, 0x50FE},
+       {0x3249, 0x5103},
+       {0x324A, 0x5106},
+       {0x324B, 0x5107},
+       {0x324C, 0x5108},
+       {0x324D, 0x510B},
+       {0x324E, 0x510C},
+       {0x324F, 0x510D},
+       {0x3250, 0x510E},
+       {0x3251, 0x50F2},
+       {0x3252, 0x5110},
+       {0x3253, 0x5117},
+       {0x3254, 0x5119},
+       {0x3255, 0x511B},
+       {0x3256, 0x511C},
+       {0x3257, 0x511D},
+       {0x3258, 0x511E},
+       {0x3259, 0x5123},
+       {0x325A, 0x5127},
+       {0x325B, 0x5128},
+       {0x325C, 0x512C},
+       {0x325D, 0x512D},
+       {0x325E, 0x512F},
+       {0x325F, 0x5131},
+       {0x3260, 0x5133},
+       {0x3261, 0x5134},
+       {0x3262, 0x5135},
+       {0x3263, 0x5138},
+       {0x3264, 0x5139},
+       {0x3265, 0x5142},
+       {0x3266, 0x514A},
+       {0x3267, 0x514F},
+       {0x3268, 0x5153},
+       {0x3269, 0x5155},
+       {0x326A, 0x5157},
+       {0x326B, 0x5158},
+       {0x326C, 0x515F},
+       {0x326D, 0x5164},
+       {0x326E, 0x5166},
+       {0x326F, 0x517E},
+       {0x3270, 0x5183},
+       {0x3271, 0x5184},
+       {0x3272, 0x518B},
+       {0x3273, 0x518E},
+       {0x3274, 0x5198},
+       {0x3275, 0x519D},
+       {0x3276, 0x51A1},
+       {0x3277, 0x51A3},
+       {0x3278, 0x51AD},
+       {0x3279, 0x51B8},
+       {0x327A, 0x51BA},
+       {0x327B, 0x51BC},
+       {0x327C, 0x51BE},
+       {0x327D, 0x51BF},
+       {0x327E, 0x51C2},
+       {0x3321, 0x51C8},
+       {0x3322, 0x51CF},
+       {0x3323, 0x51D1},
+       {0x3324, 0x51D2},
+       {0x3325, 0x51D3},
+       {0x3326, 0x51D5},
+       {0x3327, 0x51D8},
+       {0x3328, 0x51DE},
+       {0x3329, 0x51E2},
+       {0x332A, 0x51E5},
+       {0x332B, 0x51EE},
+       {0x332C, 0x51F2},
+       {0x332D, 0x51F3},
+       {0x332E, 0x51F4},
+       {0x332F, 0x51F7},
+       {0x3330, 0x5201},
+       {0x3331, 0x5202},
+       {0x3332, 0x5205},
+       {0x3333, 0x5212},
+       {0x3334, 0x5213},
+       {0x3335, 0x5215},
+       {0x3336, 0x5216},
+       {0x3337, 0x5218},
+       {0x3338, 0x5222},
+       {0x3339, 0x5228},
+       {0x333A, 0x5231},
+       {0x333B, 0x5232},
+       {0x333C, 0x5235},
+       {0x333D, 0x523C},
+       {0x333E, 0x5245},
+       {0x333F, 0x5249},
+       {0x3340, 0x5255},
+       {0x3341, 0x5257},
+       {0x3342, 0x5258},
+       {0x3343, 0x525A},
+       {0x3344, 0x525C},
+       {0x3345, 0x525F},
+       {0x3346, 0x5260},
+       {0x3347, 0x5261},
+       {0x3348, 0x5266},
+       {0x3349, 0x526E},
+       {0x334A, 0x5277},
+       {0x334B, 0x5278},
+       {0x334C, 0x5279},
+       {0x334D, 0x5280},
+       {0x334E, 0x5282},
+       {0x334F, 0x5285},
+       {0x3350, 0x528A},
+       {0x3351, 0x528C},
+       {0x3352, 0x5293},
+       {0x3353, 0x5295},
+       {0x3354, 0x5296},
+       {0x3355, 0x5297},
+       {0x3356, 0x5298},
+       {0x3357, 0x529A},
+       {0x3358, 0x529C},
+       {0x3359, 0x52A4},
+       {0x335A, 0x52A5},
+       {0x335B, 0x52A6},
+       {0x335C, 0x52A7},
+       {0x335D, 0x52AF},
+       {0x335E, 0x52B0},
+       {0x335F, 0x52B6},
+       {0x3360, 0x52B7},
+       {0x3361, 0x52B8},
+       {0x3362, 0x52BA},
+       {0x3363, 0x52BB},
+       {0x3364, 0x52BD},
+       {0x3365, 0x52C0},
+       {0x3366, 0x52C4},
+       {0x3367, 0x52C6},
+       {0x3368, 0x52C8},
+       {0x3369, 0x52CC},
+       {0x336A, 0x52CF},
+       {0x336B, 0x52D1},
+       {0x336C, 0x52D4},
+       {0x336D, 0x52D6},
+       {0x336E, 0x52DB},
+       {0x336F, 0x52DC},
+       {0x3370, 0x52E1},
+       {0x3371, 0x52E5},
+       {0x3372, 0x52E8},
+       {0x3373, 0x52E9},
+       {0x3374, 0x52EA},
+       {0x3375, 0x52EC},
+       {0x3376, 0x52F0},
+       {0x3377, 0x52F1},
+       {0x3378, 0x52F4},
+       {0x3379, 0x52F6},
+       {0x337A, 0x52F7},
+       {0x337B, 0x5300},
+       {0x337C, 0x5303},
+       {0x337D, 0x530A},
+       {0x337E, 0x530B},
+       {0x3421, 0x530C},
+       {0x3422, 0x5311},
+       {0x3423, 0x5313},
+       {0x3424, 0x5318},
+       {0x3425, 0x531B},
+       {0x3426, 0x531C},
+       {0x3427, 0x531E},
+       {0x3428, 0x531F},
+       {0x3429, 0x5325},
+       {0x342A, 0x5327},
+       {0x342B, 0x5328},
+       {0x342C, 0x5329},
+       {0x342D, 0x532B},
+       {0x342E, 0x532C},
+       {0x342F, 0x532D},
+       {0x3430, 0x5330},
+       {0x3431, 0x5332},
+       {0x3432, 0x5335},
+       {0x3433, 0x533C},
+       {0x3434, 0x533D},
+       {0x3435, 0x533E},
+       {0x3436, 0x5342},
+       {0x3437, 0x534C},
+       {0x3438, 0x534B},
+       {0x3439, 0x5359},
+       {0x343A, 0x535B},
+       {0x343B, 0x5361},
+       {0x343C, 0x5363},
+       {0x343D, 0x5365},
+       {0x343E, 0x536C},
+       {0x343F, 0x536D},
+       {0x3440, 0x5372},
+       {0x3441, 0x5379},
+       {0x3442, 0x537E},
+       {0x3443, 0x5383},
+       {0x3444, 0x5387},
+       {0x3445, 0x5388},
+       {0x3446, 0x538E},
+       {0x3447, 0x5393},
+       {0x3448, 0x5394},
+       {0x3449, 0x5399},
+       {0x344A, 0x539D},
+       {0x344B, 0x53A1},
+       {0x344C, 0x53A4},
+       {0x344D, 0x53AA},
+       {0x344E, 0x53AB},
+       {0x344F, 0x53AF},
+       {0x3450, 0x53B2},
+       {0x3451, 0x53B4},
+       {0x3452, 0x53B5},
+       {0x3453, 0x53B7},
+       {0x3454, 0x53B8},
+       {0x3455, 0x53BA},
+       {0x3456, 0x53BD},
+       {0x3457, 0x53C0},
+       {0x3458, 0x53C5},
+       {0x3459, 0x53CF},
+       {0x345A, 0x53D2},
+       {0x345B, 0x53D3},
+       {0x345C, 0x53D5},
+       {0x345D, 0x53DA},
+       {0x345E, 0x53DD},
+       {0x345F, 0x53DE},
+       {0x3460, 0x53E0},
+       {0x3461, 0x53E6},
+       {0x3462, 0x53E7},
+       {0x3463, 0x53F5},
+       {0x3464, 0x5402},
+       {0x3465, 0x5413},
+       {0x3466, 0x541A},
+       {0x3467, 0x5421},
+       {0x3468, 0x5427},
+       {0x3469, 0x5428},
+       {0x346A, 0x542A},
+       {0x346B, 0x542F},
+       {0x346C, 0x5431},
+       {0x346D, 0x5434},
+       {0x346E, 0x5435},
+       {0x346F, 0x5443},
+       {0x3470, 0x5444},
+       {0x3471, 0x5447},
+       {0x3472, 0x544D},
+       {0x3473, 0x544F},
+       {0x3474, 0x545E},
+       {0x3475, 0x5462},
+       {0x3476, 0x5464},
+       {0x3477, 0x5466},
+       {0x3478, 0x5467},
+       {0x3479, 0x5469},
+       {0x347A, 0x546B},
+       {0x347B, 0x546D},
+       {0x347C, 0x546E},
+       {0x347D, 0x5474},
+       {0x347E, 0x547F},
+       {0x3521, 0x5481},
+       {0x3522, 0x5483},
+       {0x3523, 0x5485},
+       {0x3524, 0x5488},
+       {0x3525, 0x5489},
+       {0x3526, 0x548D},
+       {0x3527, 0x5491},
+       {0x3528, 0x5495},
+       {0x3529, 0x5496},
+       {0x352A, 0x549C},
+       {0x352B, 0x549F},
+       {0x352C, 0x54A1},
+       {0x352D, 0x54A6},
+       {0x352E, 0x54A7},
+       {0x352F, 0x54A9},
+       {0x3530, 0x54AA},
+       {0x3531, 0x54AD},
+       {0x3532, 0x54AE},
+       {0x3533, 0x54B1},
+       {0x3534, 0x54B7},
+       {0x3535, 0x54B9},
+       {0x3536, 0x54BA},
+       {0x3537, 0x54BB},
+       {0x3538, 0x54BF},
+       {0x3539, 0x54C6},
+       {0x353A, 0x54CA},
+       {0x353B, 0x54CD},
+       {0x353C, 0x54CE},
+       {0x353D, 0x54E0},
+       {0x353E, 0x54EA},
+       {0x353F, 0x54EC},
+       {0x3540, 0x54EF},
+       {0x3541, 0x54F6},
+       {0x3542, 0x54FC},
+       {0x3543, 0x54FE},
+       {0x3544, 0x54FF},
+       {0x3545, 0x5500},
+       {0x3546, 0x5501},
+       {0x3547, 0x5505},
+       {0x3548, 0x5508},
+       {0x3549, 0x5509},
+       {0x354A, 0x550C},
+       {0x354B, 0x550D},
+       {0x354C, 0x550E},
+       {0x354D, 0x5515},
+       {0x354E, 0x552A},
+       {0x354F, 0x552B},
+       {0x3550, 0x5532},
+       {0x3551, 0x5535},
+       {0x3552, 0x5536},
+       {0x3553, 0x553B},
+       {0x3554, 0x553C},
+       {0x3555, 0x553D},
+       {0x3556, 0x5541},
+       {0x3557, 0x5547},
+       {0x3558, 0x5549},
+       {0x3559, 0x554A},
+       {0x355A, 0x554D},
+       {0x355B, 0x5550},
+       {0x355C, 0x5551},
+       {0x355D, 0x5558},
+       {0x355E, 0x555A},
+       {0x355F, 0x555B},
+       {0x3560, 0x555E},
+       {0x3561, 0x5560},
+       {0x3562, 0x5561},
+       {0x3563, 0x5564},
+       {0x3564, 0x5566},
+       {0x3565, 0x557F},
+       {0x3566, 0x5581},
+       {0x3567, 0x5582},
+       {0x3568, 0x5586},
+       {0x3569, 0x5588},
+       {0x356A, 0x558E},
+       {0x356B, 0x558F},
+       {0x356C, 0x5591},
+       {0x356D, 0x5592},
+       {0x356E, 0x5593},
+       {0x356F, 0x5594},
+       {0x3570, 0x5597},
+       {0x3571, 0x55A3},
+       {0x3572, 0x55A4},
+       {0x3573, 0x55AD},
+       {0x3574, 0x55B2},
+       {0x3575, 0x55BF},
+       {0x3576, 0x55C1},
+       {0x3577, 0x55C3},
+       {0x3578, 0x55C6},
+       {0x3579, 0x55C9},
+       {0x357A, 0x55CB},
+       {0x357B, 0x55CC},
+       {0x357C, 0x55CE},
+       {0x357D, 0x55D1},
+       {0x357E, 0x55D2},
+       {0x3621, 0x55D3},
+       {0x3622, 0x55D7},
+       {0x3623, 0x55D8},
+       {0x3624, 0x55DB},
+       {0x3625, 0x55DE},
+       {0x3626, 0x55E2},
+       {0x3627, 0x55E9},
+       {0x3628, 0x55F6},
+       {0x3629, 0x55FF},
+       {0x362A, 0x5605},
+       {0x362B, 0x5608},
+       {0x362C, 0x560A},
+       {0x362D, 0x560D},
+       {0x362E, 0x560E},
+       {0x362F, 0x560F},
+       {0x3630, 0x5610},
+       {0x3631, 0x5611},
+       {0x3632, 0x5612},
+       {0x3633, 0x5619},
+       {0x3634, 0x562C},
+       {0x3635, 0x5630},
+       {0x3636, 0x5633},
+       {0x3637, 0x5635},
+       {0x3638, 0x5637},
+       {0x3639, 0x5639},
+       {0x363A, 0x563B},
+       {0x363B, 0x563C},
+       {0x363C, 0x563D},
+       {0x363D, 0x563F},
+       {0x363E, 0x5640},
+       {0x363F, 0x5641},
+       {0x3640, 0x5643},
+       {0x3641, 0x5644},
+       {0x3642, 0x5646},
+       {0x3643, 0x5649},
+       {0x3644, 0x564B},
+       {0x3645, 0x564D},
+       {0x3646, 0x564F},
+       {0x3647, 0x5654},
+       {0x3648, 0x565E},
+       {0x3649, 0x5660},
+       {0x364A, 0x5661},
+       {0x364B, 0x5662},
+       {0x364C, 0x5663},
+       {0x364D, 0x5666},
+       {0x364E, 0x5669},
+       {0x364F, 0x566D},
+       {0x3650, 0x566F},
+       {0x3651, 0x5671},
+       {0x3652, 0x5672},
+       {0x3653, 0x5675},
+       {0x3654, 0x5684},
+       {0x3655, 0x5685},
+       {0x3656, 0x5688},
+       {0x3657, 0x568B},
+       {0x3658, 0x568C},
+       {0x3659, 0x5695},
+       {0x365A, 0x5699},
+       {0x365B, 0x569A},
+       {0x365C, 0x569D},
+       {0x365D, 0x569E},
+       {0x365E, 0x569F},
+       {0x365F, 0x56A6},
+       {0x3660, 0x56A7},
+       {0x3661, 0x56A8},
+       {0x3662, 0x56A9},
+       {0x3663, 0x56AB},
+       {0x3664, 0x56AC},
+       {0x3665, 0x56AD},
+       {0x3666, 0x56B1},
+       {0x3667, 0x56B3},
+       {0x3668, 0x56B7},
+       {0x3669, 0x56BE},
+       {0x366A, 0x56C5},
+       {0x366B, 0x56C9},
+       {0x366C, 0x56CA},
+       {0x366D, 0x56CB},
+       {0x366E, 0x56CF},
+       {0x366F, 0x56D0},
+       {0x3670, 0x56CC},
+       {0x3671, 0x56CD},
+       {0x3672, 0x56D9},
+       {0x3673, 0x56DC},
+       {0x3674, 0x56DD},
+       {0x3675, 0x56DF},
+       {0x3676, 0x56E1},
+       {0x3677, 0x56E4},
+       {0x3678, 0x56E5},
+       {0x3679, 0x56E6},
+       {0x367A, 0x56E7},
+       {0x367B, 0x56E8},
+       {0x367C, 0x56F1},
+       {0x367D, 0x56EB},
+       {0x367E, 0x56ED},
+       {0x3721, 0x56F6},
+       {0x3722, 0x56F7},
+       {0x3723, 0x5701},
+       {0x3724, 0x5702},
+       {0x3725, 0x5707},
+       {0x3726, 0x570A},
+       {0x3727, 0x570C},
+       {0x3728, 0x5711},
+       {0x3729, 0x5715},
+       {0x372A, 0x571A},
+       {0x372B, 0x571B},
+       {0x372C, 0x571D},
+       {0x372D, 0x5720},
+       {0x372E, 0x5722},
+       {0x372F, 0x5723},
+       {0x3730, 0x5724},
+       {0x3731, 0x5725},
+       {0x3732, 0x5729},
+       {0x3733, 0x572A},
+       {0x3734, 0x572C},
+       {0x3735, 0x572E},
+       {0x3736, 0x572F},
+       {0x3737, 0x5733},
+       {0x3738, 0x5734},
+       {0x3739, 0x573D},
+       {0x373A, 0x573E},
+       {0x373B, 0x573F},
+       {0x373C, 0x5745},
+       {0x373D, 0x5746},
+       {0x373E, 0x574C},
+       {0x373F, 0x574D},
+       {0x3740, 0x5752},
+       {0x3741, 0x5762},
+       {0x3742, 0x5765},
+       {0x3743, 0x5767},
+       {0x3744, 0x5768},
+       {0x3745, 0x576B},
+       {0x3746, 0x576D},
+       {0x3747, 0x576E},
+       {0x3748, 0x576F},
+       {0x3749, 0x5770},
+       {0x374A, 0x5771},
+       {0x374B, 0x5773},
+       {0x374C, 0x5774},
+       {0x374D, 0x5775},
+       {0x374E, 0x5777},
+       {0x374F, 0x5779},
+       {0x3750, 0x577A},
+       {0x3751, 0x577B},
+       {0x3752, 0x577C},
+       {0x3753, 0x577E},
+       {0x3754, 0x5781},
+       {0x3755, 0x5783},
+       {0x3756, 0x578C},
+       {0x3757, 0x5794},
+       {0x3758, 0x5797},
+       {0x3759, 0x5799},
+       {0x375A, 0x579A},
+       {0x375B, 0x579C},
+       {0x375C, 0x579D},
+       {0x375D, 0x579E},
+       {0x375E, 0x579F},
+       {0x375F, 0x57A1},
+       {0x3760, 0x5795},
+       {0x3761, 0x57A7},
+       {0x3762, 0x57A8},
+       {0x3763, 0x57A9},
+       {0x3764, 0x57AC},
+       {0x3765, 0x57B8},
+       {0x3766, 0x57BD},
+       {0x3767, 0x57C7},
+       {0x3768, 0x57C8},
+       {0x3769, 0x57CC},
+       {0x376A, 0x57CF},
+       {0x376B, 0x57D5},
+       {0x376C, 0x57DD},
+       {0x376D, 0x57DE},
+       {0x376E, 0x57E4},
+       {0x376F, 0x57E6},
+       {0x3770, 0x57E7},
+       {0x3771, 0x57E9},
+       {0x3772, 0x57ED},
+       {0x3773, 0x57F0},
+       {0x3774, 0x57F5},
+       {0x3775, 0x57F6},
+       {0x3776, 0x57F8},
+       {0x3777, 0x57FD},
+       {0x3778, 0x57FE},
+       {0x3779, 0x57FF},
+       {0x377A, 0x5803},
+       {0x377B, 0x5804},
+       {0x377C, 0x5808},
+       {0x377D, 0x5809},
+       {0x377E, 0x57E1},
+       {0x3821, 0x580C},
+       {0x3822, 0x580D},
+       {0x3823, 0x581B},
+       {0x3824, 0x581E},
+       {0x3825, 0x581F},
+       {0x3826, 0x5820},
+       {0x3827, 0x5826},
+       {0x3828, 0x5827},
+       {0x3829, 0x582D},
+       {0x382A, 0x5832},
+       {0x382B, 0x5839},
+       {0x382C, 0x583F},
+       {0x382D, 0x5849},
+       {0x382E, 0x584C},
+       {0x382F, 0x584D},
+       {0x3830, 0x584F},
+       {0x3831, 0x5850},
+       {0x3832, 0x5855},
+       {0x3833, 0x585F},
+       {0x3834, 0x5861},
+       {0x3835, 0x5864},
+       {0x3836, 0x5867},
+       {0x3837, 0x5868},
+       {0x3838, 0x5878},
+       {0x3839, 0x587C},
+       {0x383A, 0x587F},
+       {0x383B, 0x5880},
+       {0x383C, 0x5881},
+       {0x383D, 0x5887},
+       {0x383E, 0x5888},
+       {0x383F, 0x5889},
+       {0x3840, 0x588A},
+       {0x3841, 0x588C},
+       {0x3842, 0x588D},
+       {0x3843, 0x588F},
+       {0x3844, 0x5890},
+       {0x3845, 0x5894},
+       {0x3846, 0x5896},
+       {0x3847, 0x589D},
+       {0x3848, 0x58A0},
+       {0x3849, 0x58A1},
+       {0x384A, 0x58A2},
+       {0x384B, 0x58A6},
+       {0x384C, 0x58A9},
+       {0x384D, 0x58B1},
+       {0x384E, 0x58B2},
+       {0x384F, 0x58C4},
+       {0x3850, 0x58BC},
+       {0x3851, 0x58C2},
+       {0x3852, 0x58C8},
+       {0x3853, 0x58CD},
+       {0x3854, 0x58CE},
+       {0x3855, 0x58D0},
+       {0x3856, 0x58D2},
+       {0x3857, 0x58D4},
+       {0x3858, 0x58D6},
+       {0x3859, 0x58DA},
+       {0x385A, 0x58DD},
+       {0x385B, 0x58E1},
+       {0x385C, 0x58E2},
+       {0x385D, 0x58E9},
+       {0x385E, 0x58F3},
+       {0x385F, 0x5905},
+       {0x3860, 0x5906},
+       {0x3861, 0x590B},
+       {0x3862, 0x590C},
+       {0x3863, 0x5912},
+       {0x3864, 0x5913},
+       {0x3865, 0x5914},
+       {0x3866, 0x8641},
+       {0x3867, 0x591D},
+       {0x3868, 0x5921},
+       {0x3869, 0x5923},
+       {0x386A, 0x5924},
+       {0x386B, 0x5928},
+       {0x386C, 0x592F},
+       {0x386D, 0x5930},
+       {0x386E, 0x5933},
+       {0x386F, 0x5935},
+       {0x3870, 0x5936},
+       {0x3871, 0x593F},
+       {0x3872, 0x5943},
+       {0x3873, 0x5946},
+       {0x3874, 0x5952},
+       {0x3875, 0x5953},
+       {0x3876, 0x5959},
+       {0x3877, 0x595B},
+       {0x3878, 0x595D},
+       {0x3879, 0x595E},
+       {0x387A, 0x595F},
+       {0x387B, 0x5961},
+       {0x387C, 0x5963},
+       {0x387D, 0x596B},
+       {0x387E, 0x596D},
+       {0x3921, 0x596F},
+       {0x3922, 0x5972},
+       {0x3923, 0x5975},
+       {0x3924, 0x5976},
+       {0x3925, 0x5979},
+       {0x3926, 0x597B},
+       {0x3927, 0x597C},
+       {0x3928, 0x598B},
+       {0x3929, 0x598C},
+       {0x392A, 0x598E},
+       {0x392B, 0x5992},
+       {0x392C, 0x5995},
+       {0x392D, 0x5997},
+       {0x392E, 0x599F},
+       {0x392F, 0x59A4},
+       {0x3930, 0x59A7},
+       {0x3931, 0x59AD},
+       {0x3932, 0x59AE},
+       {0x3933, 0x59AF},
+       {0x3934, 0x59B0},
+       {0x3935, 0x59B3},
+       {0x3936, 0x59B7},
+       {0x3937, 0x59BA},
+       {0x3938, 0x59BC},
+       {0x3939, 0x59C1},
+       {0x393A, 0x59C3},
+       {0x393B, 0x59C4},
+       {0x393C, 0x59C8},
+       {0x393D, 0x59CA},
+       {0x393E, 0x59CD},
+       {0x393F, 0x59D2},
+       {0x3940, 0x59DD},
+       {0x3941, 0x59DE},
+       {0x3942, 0x59DF},
+       {0x3943, 0x59E3},
+       {0x3944, 0x59E4},
+       {0x3945, 0x59E7},
+       {0x3946, 0x59EE},
+       {0x3947, 0x59EF},
+       {0x3948, 0x59F1},
+       {0x3949, 0x59F2},
+       {0x394A, 0x59F4},
+       {0x394B, 0x59F7},
+       {0x394C, 0x5A00},
+       {0x394D, 0x5A04},
+       {0x394E, 0x5A0C},
+       {0x394F, 0x5A0D},
+       {0x3950, 0x5A0E},
+       {0x3951, 0x5A12},
+       {0x3952, 0x5A13},
+       {0x3953, 0x5A1E},
+       {0x3954, 0x5A23},
+       {0x3955, 0x5A24},
+       {0x3956, 0x5A27},
+       {0x3957, 0x5A28},
+       {0x3958, 0x5A2A},
+       {0x3959, 0x5A2D},
+       {0x395A, 0x5A30},
+       {0x395B, 0x5A44},
+       {0x395C, 0x5A45},
+       {0x395D, 0x5A47},
+       {0x395E, 0x5A48},
+       {0x395F, 0x5A4C},
+       {0x3960, 0x5A50},
+       {0x3961, 0x5A55},
+       {0x3962, 0x5A5E},
+       {0x3963, 0x5A63},
+       {0x3964, 0x5A65},
+       {0x3965, 0x5A67},
+       {0x3966, 0x5A6D},
+       {0x3967, 0x5A77},
+       {0x3968, 0x5A7A},
+       {0x3969, 0x5A7B},
+       {0x396A, 0x5A7E},
+       {0x396B, 0x5A8B},
+       {0x396C, 0x5A90},
+       {0x396D, 0x5A93},
+       {0x396E, 0x5A96},
+       {0x396F, 0x5A99},
+       {0x3970, 0x5A9C},
+       {0x3971, 0x5A9E},
+       {0x3972, 0x5A9F},
+       {0x3973, 0x5AA0},
+       {0x3974, 0x5AA2},
+       {0x3975, 0x5AA7},
+       {0x3976, 0x5AAC},
+       {0x3977, 0x5AB1},
+       {0x3978, 0x5AB2},
+       {0x3979, 0x5AB3},
+       {0x397A, 0x5AB5},
+       {0x397B, 0x5AB8},
+       {0x397C, 0x5ABA},
+       {0x397D, 0x5ABB},
+       {0x397E, 0x5ABF},
+       {0x3A21, 0x5AC4},
+       {0x3A22, 0x5AC6},
+       {0x3A23, 0x5AC8},
+       {0x3A24, 0x5ACF},
+       {0x3A25, 0x5ADA},
+       {0x3A26, 0x5ADC},
+       {0x3A27, 0x5AE0},
+       {0x3A28, 0x5AE5},
+       {0x3A29, 0x5AEA},
+       {0x3A2A, 0x5AEE},
+       {0x3A2B, 0x5AF5},
+       {0x3A2C, 0x5AF6},
+       {0x3A2D, 0x5AFD},
+       {0x3A2E, 0x5B00},
+       {0x3A2F, 0x5B01},
+       {0x3A30, 0x5B08},
+       {0x3A31, 0x5B17},
+       {0x3A32, 0x5B34},
+       {0x3A33, 0x5B19},
+       {0x3A34, 0x5B1B},
+       {0x3A35, 0x5B1D},
+       {0x3A36, 0x5B21},
+       {0x3A37, 0x5B25},
+       {0x3A38, 0x5B2D},
+       {0x3A39, 0x5B38},
+       {0x3A3A, 0x5B41},
+       {0x3A3B, 0x5B4B},
+       {0x3A3C, 0x5B4C},
+       {0x3A3D, 0x5B52},
+       {0x3A3E, 0x5B56},
+       {0x3A3F, 0x5B5E},
+       {0x3A40, 0x5B68},
+       {0x3A41, 0x5B6E},
+       {0x3A42, 0x5B6F},
+       {0x3A43, 0x5B7C},
+       {0x3A44, 0x5B7D},
+       {0x3A45, 0x5B7E},
+       {0x3A46, 0x5B7F},
+       {0x3A47, 0x5B81},
+       {0x3A48, 0x5B84},
+       {0x3A49, 0x5B86},
+       {0x3A4A, 0x5B8A},
+       {0x3A4B, 0x5B8E},
+       {0x3A4C, 0x5B90},
+       {0x3A4D, 0x5B91},
+       {0x3A4E, 0x5B93},
+       {0x3A4F, 0x5B94},
+       {0x3A50, 0x5B96},
+       {0x3A51, 0x5BA8},
+       {0x3A52, 0x5BA9},
+       {0x3A53, 0x5BAC},
+       {0x3A54, 0x5BAD},
+       {0x3A55, 0x5BAF},
+       {0x3A56, 0x5BB1},
+       {0x3A57, 0x5BB2},
+       {0x3A58, 0x5BB7},
+       {0x3A59, 0x5BBA},
+       {0x3A5A, 0x5BBC},
+       {0x3A5B, 0x5BC0},
+       {0x3A5C, 0x5BC1},
+       {0x3A5D, 0x5BCD},
+       {0x3A5E, 0x5BCF},
+       {0x3A5F, 0x5BD6},
+       {0x3A60, 0x5BD7},
+       {0x3A61, 0x5BD8},
+       {0x3A62, 0x5BD9},
+       {0x3A63, 0x5BDA},
+       {0x3A64, 0x5BE0},
+       {0x3A65, 0x5BEF},
+       {0x3A66, 0x5BF1},
+       {0x3A67, 0x5BF4},
+       {0x3A68, 0x5BFD},
+       {0x3A69, 0x5C0C},
+       {0x3A6A, 0x5C17},
+       {0x3A6B, 0x5C1E},
+       {0x3A6C, 0x5C1F},
+       {0x3A6D, 0x5C23},
+       {0x3A6E, 0x5C26},
+       {0x3A6F, 0x5C29},
+       {0x3A70, 0x5C2B},
+       {0x3A71, 0x5C2C},
+       {0x3A72, 0x5C2E},
+       {0x3A73, 0x5C30},
+       {0x3A74, 0x5C32},
+       {0x3A75, 0x5C35},
+       {0x3A76, 0x5C36},
+       {0x3A77, 0x5C59},
+       {0x3A78, 0x5C5A},
+       {0x3A79, 0x5C5C},
+       {0x3A7A, 0x5C62},
+       {0x3A7B, 0x5C63},
+       {0x3A7C, 0x5C67},
+       {0x3A7D, 0x5C68},
+       {0x3A7E, 0x5C69},
+       {0x3B21, 0x5C6D},
+       {0x3B22, 0x5C70},
+       {0x3B23, 0x5C74},
+       {0x3B24, 0x5C75},
+       {0x3B25, 0x5C7A},
+       {0x3B26, 0x5C7B},
+       {0x3B27, 0x5C7C},
+       {0x3B28, 0x5C7D},
+       {0x3B29, 0x5C87},
+       {0x3B2A, 0x5C88},
+       {0x3B2B, 0x5C8A},
+       {0x3B2C, 0x5C8F},
+       {0x3B2D, 0x5C92},
+       {0x3B2E, 0x5C9D},
+       {0x3B2F, 0x5C9F},
+       {0x3B30, 0x5CA0},
+       {0x3B31, 0x5CA2},
+       {0x3B32, 0x5CA3},
+       {0x3B33, 0x5CA6},
+       {0x3B34, 0x5CAA},
+       {0x3B35, 0x5CB2},
+       {0x3B36, 0x5CB4},
+       {0x3B37, 0x5CB5},
+       {0x3B38, 0x5CBA},
+       {0x3B39, 0x5CC9},
+       {0x3B3A, 0x5CCB},
+       {0x3B3B, 0x5CD2},
+       {0x3B3C, 0x5CDD},
+       {0x3B3D, 0x5CD7},
+       {0x3B3E, 0x5CEE},
+       {0x3B3F, 0x5CF1},
+       {0x3B40, 0x5CF2},
+       {0x3B41, 0x5CF4},
+       {0x3B42, 0x5D01},
+       {0x3B43, 0x5D06},
+       {0x3B44, 0x5D0D},
+       {0x3B45, 0x5D12},
+       {0x3B46, 0x5D2B},
+       {0x3B47, 0x5D23},
+       {0x3B48, 0x5D24},
+       {0x3B49, 0x5D26},
+       {0x3B4A, 0x5D27},
+       {0x3B4B, 0x5D31},
+       {0x3B4C, 0x5D34},
+       {0x3B4D, 0x5D39},
+       {0x3B4E, 0x5D3D},
+       {0x3B4F, 0x5D3F},
+       {0x3B50, 0x5D42},
+       {0x3B51, 0x5D43},
+       {0x3B52, 0x5D46},
+       {0x3B53, 0x5D48},
+       {0x3B54, 0x5D55},
+       {0x3B55, 0x5D51},
+       {0x3B56, 0x5D59},
+       {0x3B57, 0x5D4A},
+       {0x3B58, 0x5D5F},
+       {0x3B59, 0x5D60},
+       {0x3B5A, 0x5D61},
+       {0x3B5B, 0x5D62},
+       {0x3B5C, 0x5D64},
+       {0x3B5D, 0x5D6A},
+       {0x3B5E, 0x5D6D},
+       {0x3B5F, 0x5D70},
+       {0x3B60, 0x5D79},
+       {0x3B61, 0x5D7A},
+       {0x3B62, 0x5D7E},
+       {0x3B63, 0x5D7F},
+       {0x3B64, 0x5D81},
+       {0x3B65, 0x5D83},
+       {0x3B66, 0x5D88},
+       {0x3B67, 0x5D8A},
+       {0x3B68, 0x5D92},
+       {0x3B69, 0x5D93},
+       {0x3B6A, 0x5D94},
+       {0x3B6B, 0x5D95},
+       {0x3B6C, 0x5D99},
+       {0x3B6D, 0x5D9B},
+       {0x3B6E, 0x5D9F},
+       {0x3B6F, 0x5DA0},
+       {0x3B70, 0x5DA7},
+       {0x3B71, 0x5DAB},
+       {0x3B72, 0x5DB0},
+       {0x3B73, 0x5DB4},
+       {0x3B74, 0x5DB8},
+       {0x3B75, 0x5DB9},
+       {0x3B76, 0x5DC3},
+       {0x3B77, 0x5DC7},
+       {0x3B78, 0x5DCB},
+       {0x3B79, 0x5DD0},
+       {0x3B7A, 0x5DCE},
+       {0x3B7B, 0x5DD8},
+       {0x3B7C, 0x5DD9},
+       {0x3B7D, 0x5DE0},
+       {0x3B7E, 0x5DE4},
+       {0x3C21, 0x5DE9},
+       {0x3C22, 0x5DF8},
+       {0x3C23, 0x5DF9},
+       {0x3C24, 0x5E00},
+       {0x3C25, 0x5E07},
+       {0x3C26, 0x5E0D},
+       {0x3C27, 0x5E12},
+       {0x3C28, 0x5E14},
+       {0x3C29, 0x5E15},
+       {0x3C2A, 0x5E18},
+       {0x3C2B, 0x5E1F},
+       {0x3C2C, 0x5E20},
+       {0x3C2D, 0x5E2E},
+       {0x3C2E, 0x5E28},
+       {0x3C2F, 0x5E32},
+       {0x3C30, 0x5E35},
+       {0x3C31, 0x5E3E},
+       {0x3C32, 0x5E4B},
+       {0x3C33, 0x5E50},
+       {0x3C34, 0x5E49},
+       {0x3C35, 0x5E51},
+       {0x3C36, 0x5E56},
+       {0x3C37, 0x5E58},
+       {0x3C38, 0x5E5B},
+       {0x3C39, 0x5E5C},
+       {0x3C3A, 0x5E5E},
+       {0x3C3B, 0x5E68},
+       {0x3C3C, 0x5E6A},
+       {0x3C3D, 0x5E6B},
+       {0x3C3E, 0x5E6C},
+       {0x3C3F, 0x5E6D},
+       {0x3C40, 0x5E6E},
+       {0x3C41, 0x5E70},
+       {0x3C42, 0x5E80},
+       {0x3C43, 0x5E8B},
+       {0x3C44, 0x5E8E},
+       {0x3C45, 0x5EA2},
+       {0x3C46, 0x5EA4},
+       {0x3C47, 0x5EA5},
+       {0x3C48, 0x5EA8},
+       {0x3C49, 0x5EAA},
+       {0x3C4A, 0x5EAC},
+       {0x3C4B, 0x5EB1},
+       {0x3C4C, 0x5EB3},
+       {0x3C4D, 0x5EBD},
+       {0x3C4E, 0x5EBE},
+       {0x3C4F, 0x5EBF},
+       {0x3C50, 0x5EC6},
+       {0x3C51, 0x5ECC},
+       {0x3C52, 0x5ECB},
+       {0x3C53, 0x5ECE},
+       {0x3C54, 0x5ED1},
+       {0x3C55, 0x5ED2},
+       {0x3C56, 0x5ED4},
+       {0x3C57, 0x5ED5},
+       {0x3C58, 0x5EDC},
+       {0x3C59, 0x5EDE},
+       {0x3C5A, 0x5EE5},
+       {0x3C5B, 0x5EEB},
+       {0x3C5C, 0x5F02},
+       {0x3C5D, 0x5F06},
+       {0x3C5E, 0x5F07},
+       {0x3C5F, 0x5F08},
+       {0x3C60, 0x5F0E},
+       {0x3C61, 0x5F19},
+       {0x3C62, 0x5F1C},
+       {0x3C63, 0x5F1D},
+       {0x3C64, 0x5F21},
+       {0x3C65, 0x5F22},
+       {0x3C66, 0x5F23},
+       {0x3C67, 0x5F24},
+       {0x3C68, 0x5F28},
+       {0x3C69, 0x5F2B},
+       {0x3C6A, 0x5F2C},
+       {0x3C6B, 0x5F2E},
+       {0x3C6C, 0x5F30},
+       {0x3C6D, 0x5F34},
+       {0x3C6E, 0x5F36},
+       {0x3C6F, 0x5F3B},
+       {0x3C70, 0x5F3D},
+       {0x3C71, 0x5F3F},
+       {0x3C72, 0x5F40},
+       {0x3C73, 0x5F44},
+       {0x3C74, 0x5F45},
+       {0x3C75, 0x5F47},
+       {0x3C76, 0x5F4D},
+       {0x3C77, 0x5F50},
+       {0x3C78, 0x5F54},
+       {0x3C79, 0x5F58},
+       {0x3C7A, 0x5F5B},
+       {0x3C7B, 0x5F60},
+       {0x3C7C, 0x5F63},
+       {0x3C7D, 0x5F64},
+       {0x3C7E, 0x5F67},
+       {0x3D21, 0x5F6F},
+       {0x3D22, 0x5F72},
+       {0x3D23, 0x5F74},
+       {0x3D24, 0x5F75},
+       {0x3D25, 0x5F78},
+       {0x3D26, 0x5F7A},
+       {0x3D27, 0x5F7D},
+       {0x3D28, 0x5F7E},
+       {0x3D29, 0x5F89},
+       {0x3D2A, 0x5F8D},
+       {0x3D2B, 0x5F8F},
+       {0x3D2C, 0x5F96},
+       {0x3D2D, 0x5F9C},
+       {0x3D2E, 0x5F9D},
+       {0x3D2F, 0x5FA2},
+       {0x3D30, 0x5FA7},
+       {0x3D31, 0x5FAB},
+       {0x3D32, 0x5FA4},
+       {0x3D33, 0x5FAC},
+       {0x3D34, 0x5FAF},
+       {0x3D35, 0x5FB0},
+       {0x3D36, 0x5FB1},
+       {0x3D37, 0x5FB8},
+       {0x3D38, 0x5FC4},
+       {0x3D39, 0x5FC7},
+       {0x3D3A, 0x5FC8},
+       {0x3D3B, 0x5FC9},
+       {0x3D3C, 0x5FCB},
+       {0x3D3D, 0x5FD0},
+       {0x3D3E, 0x5FD1},
+       {0x3D3F, 0x5FD2},
+       {0x3D40, 0x5FD3},
+       {0x3D41, 0x5FD4},
+       {0x3D42, 0x5FDE},
+       {0x3D43, 0x5FE1},
+       {0x3D44, 0x5FE2},
+       {0x3D45, 0x5FE8},
+       {0x3D46, 0x5FE9},
+       {0x3D47, 0x5FEA},
+       {0x3D48, 0x5FEC},
+       {0x3D49, 0x5FED},
+       {0x3D4A, 0x5FEE},
+       {0x3D4B, 0x5FEF},
+       {0x3D4C, 0x5FF2},
+       {0x3D4D, 0x5FF3},
+       {0x3D4E, 0x5FF6},
+       {0x3D4F, 0x5FFA},
+       {0x3D50, 0x5FFC},
+       {0x3D51, 0x6007},
+       {0x3D52, 0x600A},
+       {0x3D53, 0x600D},
+       {0x3D54, 0x6013},
+       {0x3D55, 0x6014},
+       {0x3D56, 0x6017},
+       {0x3D57, 0x6018},
+       {0x3D58, 0x601A},
+       {0x3D59, 0x601F},
+       {0x3D5A, 0x6024},
+       {0x3D5B, 0x602D},
+       {0x3D5C, 0x6033},
+       {0x3D5D, 0x6035},
+       {0x3D5E, 0x6040},
+       {0x3D5F, 0x6047},
+       {0x3D60, 0x6048},
+       {0x3D61, 0x6049},
+       {0x3D62, 0x604C},
+       {0x3D63, 0x6051},
+       {0x3D64, 0x6054},
+       {0x3D65, 0x6056},
+       {0x3D66, 0x6057},
+       {0x3D67, 0x605D},
+       {0x3D68, 0x6061},
+       {0x3D69, 0x6067},
+       {0x3D6A, 0x6071},
+       {0x3D6B, 0x607E},
+       {0x3D6C, 0x607F},
+       {0x3D6D, 0x6082},
+       {0x3D6E, 0x6086},
+       {0x3D6F, 0x6088},
+       {0x3D70, 0x608A},
+       {0x3D71, 0x608E},
+       {0x3D72, 0x6091},
+       {0x3D73, 0x6093},
+       {0x3D74, 0x6095},
+       {0x3D75, 0x6098},
+       {0x3D76, 0x609D},
+       {0x3D77, 0x609E},
+       {0x3D78, 0x60A2},
+       {0x3D79, 0x60A4},
+       {0x3D7A, 0x60A5},
+       {0x3D7B, 0x60A8},
+       {0x3D7C, 0x60B0},
+       {0x3D7D, 0x60B1},
+       {0x3D7E, 0x60B7},
+       {0x3E21, 0x60BB},
+       {0x3E22, 0x60BE},
+       {0x3E23, 0x60C2},
+       {0x3E24, 0x60C4},
+       {0x3E25, 0x60C8},
+       {0x3E26, 0x60C9},
+       {0x3E27, 0x60CA},
+       {0x3E28, 0x60CB},
+       {0x3E29, 0x60CE},
+       {0x3E2A, 0x60CF},
+       {0x3E2B, 0x60D4},
+       {0x3E2C, 0x60D5},
+       {0x3E2D, 0x60D9},
+       {0x3E2E, 0x60DB},
+       {0x3E2F, 0x60DD},
+       {0x3E30, 0x60DE},
+       {0x3E31, 0x60E2},
+       {0x3E32, 0x60E5},
+       {0x3E33, 0x60F2},
+       {0x3E34, 0x60F5},
+       {0x3E35, 0x60F8},
+       {0x3E36, 0x60FC},
+       {0x3E37, 0x60FD},
+       {0x3E38, 0x6102},
+       {0x3E39, 0x6107},
+       {0x3E3A, 0x610A},
+       {0x3E3B, 0x610C},
+       {0x3E3C, 0x6110},
+       {0x3E3D, 0x6111},
+       {0x3E3E, 0x6112},
+       {0x3E3F, 0x6113},
+       {0x3E40, 0x6114},
+       {0x3E41, 0x6116},
+       {0x3E42, 0x6117},
+       {0x3E43, 0x6119},
+       {0x3E44, 0x611C},
+       {0x3E45, 0x611E},
+       {0x3E46, 0x6122},
+       {0x3E47, 0x612A},
+       {0x3E48, 0x612B},
+       {0x3E49, 0x6130},
+       {0x3E4A, 0x6131},
+       {0x3E4B, 0x6135},
+       {0x3E4C, 0x6136},
+       {0x3E4D, 0x6137},
+       {0x3E4E, 0x6139},
+       {0x3E4F, 0x6141},
+       {0x3E50, 0x6145},
+       {0x3E51, 0x6146},
+       {0x3E52, 0x6149},
+       {0x3E53, 0x615E},
+       {0x3E54, 0x6160},
+       {0x3E55, 0x616C},
+       {0x3E56, 0x6172},
+       {0x3E57, 0x6178},
+       {0x3E58, 0x617B},
+       {0x3E59, 0x617C},
+       {0x3E5A, 0x617F},
+       {0x3E5B, 0x6180},
+       {0x3E5C, 0x6181},
+       {0x3E5D, 0x6183},
+       {0x3E5E, 0x6184},
+       {0x3E5F, 0x618B},
+       {0x3E60, 0x618D},
+       {0x3E61, 0x6192},
+       {0x3E62, 0x6193},
+       {0x3E63, 0x6197},
+       {0x3E64, 0x6198},
+       {0x3E65, 0x619C},
+       {0x3E66, 0x619D},
+       {0x3E67, 0x619F},
+       {0x3E68, 0x61A0},
+       {0x3E69, 0x61A5},
+       {0x3E6A, 0x61A8},
+       {0x3E6B, 0x61AA},
+       {0x3E6C, 0x61AD},
+       {0x3E6D, 0x61B8},
+       {0x3E6E, 0x61B9},
+       {0x3E6F, 0x61BC},
+       {0x3E70, 0x61C0},
+       {0x3E71, 0x61C1},
+       {0x3E72, 0x61C2},
+       {0x3E73, 0x61CE},
+       {0x3E74, 0x61CF},
+       {0x3E75, 0x61D5},
+       {0x3E76, 0x61DC},
+       {0x3E77, 0x61DD},
+       {0x3E78, 0x61DE},
+       {0x3E79, 0x61DF},
+       {0x3E7A, 0x61E1},
+       {0x3E7B, 0x61E2},
+       {0x3E7C, 0x61E7},
+       {0x3E7D, 0x61E9},
+       {0x3E7E, 0x61E5},
+       {0x3F21, 0x61EC},
+       {0x3F22, 0x61ED},
+       {0x3F23, 0x61EF},
+       {0x3F24, 0x6201},
+       {0x3F25, 0x6203},
+       {0x3F26, 0x6204},
+       {0x3F27, 0x6207},
+       {0x3F28, 0x6213},
+       {0x3F29, 0x6215},
+       {0x3F2A, 0x621C},
+       {0x3F2B, 0x6220},
+       {0x3F2C, 0x6222},
+       {0x3F2D, 0x6223},
+       {0x3F2E, 0x6227},
+       {0x3F2F, 0x6229},
+       {0x3F30, 0x622B},
+       {0x3F31, 0x6239},
+       {0x3F32, 0x623D},
+       {0x3F33, 0x6242},
+       {0x3F34, 0x6243},
+       {0x3F35, 0x6244},
+       {0x3F36, 0x6246},
+       {0x3F37, 0x624C},
+       {0x3F38, 0x6250},
+       {0x3F39, 0x6251},
+       {0x3F3A, 0x6252},
+       {0x3F3B, 0x6254},
+       {0x3F3C, 0x6256},
+       {0x3F3D, 0x625A},
+       {0x3F3E, 0x625C},
+       {0x3F3F, 0x6264},
+       {0x3F40, 0x626D},
+       {0x3F41, 0x626F},
+       {0x3F42, 0x6273},
+       {0x3F43, 0x627A},
+       {0x3F44, 0x627D},
+       {0x3F45, 0x628D},
+       {0x3F46, 0x628E},
+       {0x3F47, 0x628F},
+       {0x3F48, 0x6290},
+       {0x3F49, 0x62A6},
+       {0x3F4A, 0x62A8},
+       {0x3F4B, 0x62B3},
+       {0x3F4C, 0x62B6},
+       {0x3F4D, 0x62B7},
+       {0x3F4E, 0x62BA},
+       {0x3F4F, 0x62BE},
+       {0x3F50, 0x62BF},
+       {0x3F51, 0x62C4},
+       {0x3F52, 0x62CE},
+       {0x3F53, 0x62D5},
+       {0x3F54, 0x62D6},
+       {0x3F55, 0x62DA},
+       {0x3F56, 0x62EA},
+       {0x3F57, 0x62F2},
+       {0x3F58, 0x62F4},
+       {0x3F59, 0x62FC},
+       {0x3F5A, 0x62FD},
+       {0x3F5B, 0x6303},
+       {0x3F5C, 0x6304},
+       {0x3F5D, 0x630A},
+       {0x3F5E, 0x630B},
+       {0x3F5F, 0x630D},
+       {0x3F60, 0x6310},
+       {0x3F61, 0x6313},
+       {0x3F62, 0x6316},
+       {0x3F63, 0x6318},
+       {0x3F64, 0x6329},
+       {0x3F65, 0x632A},
+       {0x3F66, 0x632D},
+       {0x3F67, 0x6335},
+       {0x3F68, 0x6336},
+       {0x3F69, 0x6339},
+       {0x3F6A, 0x633C},
+       {0x3F6B, 0x6341},
+       {0x3F6C, 0x6342},
+       {0x3F6D, 0x6343},
+       {0x3F6E, 0x6344},
+       {0x3F6F, 0x6346},
+       {0x3F70, 0x634A},
+       {0x3F71, 0x634B},
+       {0x3F72, 0x634E},
+       {0x3F73, 0x6352},
+       {0x3F74, 0x6353},
+       {0x3F75, 0x6354},
+       {0x3F76, 0x6358},
+       {0x3F77, 0x635B},
+       {0x3F78, 0x6365},
+       {0x3F79, 0x6366},
+       {0x3F7A, 0x636C},
+       {0x3F7B, 0x636D},
+       {0x3F7C, 0x6371},
+       {0x3F7D, 0x6374},
+       {0x3F7E, 0x6375},
+       {0x4021, 0x6378},
+       {0x4022, 0x637C},
+       {0x4023, 0x637D},
+       {0x4024, 0x637F},
+       {0x4025, 0x6382},
+       {0x4026, 0x6384},
+       {0x4027, 0x6387},
+       {0x4028, 0x638A},
+       {0x4029, 0x6390},
+       {0x402A, 0x6394},
+       {0x402B, 0x6395},
+       {0x402C, 0x6399},
+       {0x402D, 0x639A},
+       {0x402E, 0x639E},
+       {0x402F, 0x63A4},
+       {0x4030, 0x63A6},
+       {0x4031, 0x63AD},
+       {0x4032, 0x63AE},
+       {0x4033, 0x63AF},
+       {0x4034, 0x63BD},
+       {0x4035, 0x63C1},
+       {0x4036, 0x63C5},
+       {0x4037, 0x63C8},
+       {0x4038, 0x63CE},
+       {0x4039, 0x63D1},
+       {0x403A, 0x63D3},
+       {0x403B, 0x63D4},
+       {0x403C, 0x63D5},
+       {0x403D, 0x63DC},
+       {0x403E, 0x63E0},
+       {0x403F, 0x63E5},
+       {0x4040, 0x63EA},
+       {0x4041, 0x63EC},
+       {0x4042, 0x63F2},
+       {0x4043, 0x63F3},
+       {0x4044, 0x63F5},
+       {0x4045, 0x63F8},
+       {0x4046, 0x63F9},
+       {0x4047, 0x6409},
+       {0x4048, 0x640A},
+       {0x4049, 0x6410},
+       {0x404A, 0x6412},
+       {0x404B, 0x6414},
+       {0x404C, 0x6418},
+       {0x404D, 0x641E},
+       {0x404E, 0x6420},
+       {0x404F, 0x6422},
+       {0x4050, 0x6424},
+       {0x4051, 0x6425},
+       {0x4052, 0x6429},
+       {0x4053, 0x642A},
+       {0x4054, 0x642F},
+       {0x4055, 0x6430},
+       {0x4056, 0x6435},
+       {0x4057, 0x643D},
+       {0x4058, 0x643F},
+       {0x4059, 0x644B},
+       {0x405A, 0x644F},
+       {0x405B, 0x6451},
+       {0x405C, 0x6452},
+       {0x405D, 0x6453},
+       {0x405E, 0x6454},
+       {0x405F, 0x645A},
+       {0x4060, 0x645B},
+       {0x4061, 0x645C},
+       {0x4062, 0x645D},
+       {0x4063, 0x645F},
+       {0x4064, 0x6460},
+       {0x4065, 0x6461},
+       {0x4066, 0x6463},
+       {0x4067, 0x646D},
+       {0x4068, 0x6473},
+       {0x4069, 0x6474},
+       {0x406A, 0x647B},
+       {0x406B, 0x647D},
+       {0x406C, 0x6485},
+       {0x406D, 0x6487},
+       {0x406E, 0x648F},
+       {0x406F, 0x6490},
+       {0x4070, 0x6491},
+       {0x4071, 0x6498},
+       {0x4072, 0x6499},
+       {0x4073, 0x649B},
+       {0x4074, 0x649D},
+       {0x4075, 0x649F},
+       {0x4076, 0x64A1},
+       {0x4077, 0x64A3},
+       {0x4078, 0x64A6},
+       {0x4079, 0x64A8},
+       {0x407A, 0x64AC},
+       {0x407B, 0x64B3},
+       {0x407C, 0x64BD},
+       {0x407D, 0x64BE},
+       {0x407E, 0x64BF},
+       {0x4121, 0x64C4},
+       {0x4122, 0x64C9},
+       {0x4123, 0x64CA},
+       {0x4124, 0x64CB},
+       {0x4125, 0x64CC},
+       {0x4126, 0x64CE},
+       {0x4127, 0x64D0},
+       {0x4128, 0x64D1},
+       {0x4129, 0x64D5},
+       {0x412A, 0x64D7},
+       {0x412B, 0x64E4},
+       {0x412C, 0x64E5},
+       {0x412D, 0x64E9},
+       {0x412E, 0x64EA},
+       {0x412F, 0x64ED},
+       {0x4130, 0x64F0},
+       {0x4131, 0x64F5},
+       {0x4132, 0x64F7},
+       {0x4133, 0x64FB},
+       {0x4134, 0x64FF},
+       {0x4135, 0x6501},
+       {0x4136, 0x6504},
+       {0x4137, 0x6508},
+       {0x4138, 0x6509},
+       {0x4139, 0x650A},
+       {0x413A, 0x650F},
+       {0x413B, 0x6513},
+       {0x413C, 0x6514},
+       {0x413D, 0x6516},
+       {0x413E, 0x6519},
+       {0x413F, 0x651B},
+       {0x4140, 0x651E},
+       {0x4141, 0x651F},
+       {0x4142, 0x6522},
+       {0x4143, 0x6526},
+       {0x4144, 0x6529},
+       {0x4145, 0x652E},
+       {0x4146, 0x6531},
+       {0x4147, 0x653A},
+       {0x4148, 0x653C},
+       {0x4149, 0x653D},
+       {0x414A, 0x6543},
+       {0x414B, 0x6547},
+       {0x414C, 0x6549},
+       {0x414D, 0x6550},
+       {0x414E, 0x6552},
+       {0x414F, 0x6554},
+       {0x4150, 0x655F},
+       {0x4151, 0x6560},
+       {0x4152, 0x6567},
+       {0x4153, 0x656B},
+       {0x4154, 0x657A},
+       {0x4155, 0x657D},
+       {0x4156, 0x6581},
+       {0x4157, 0x6585},
+       {0x4158, 0x658A},
+       {0x4159, 0x6592},
+       {0x415A, 0x6595},
+       {0x415B, 0x6598},
+       {0x415C, 0x659D},
+       {0x415D, 0x65A0},
+       {0x415E, 0x65A3},
+       {0x415F, 0x65A6},
+       {0x4160, 0x65AE},
+       {0x4161, 0x65B2},
+       {0x4162, 0x65B3},
+       {0x4163, 0x65B4},
+       {0x4164, 0x65BF},
+       {0x4165, 0x65C2},
+       {0x4166, 0x65C8},
+       {0x4167, 0x65C9},
+       {0x4168, 0x65CE},
+       {0x4169, 0x65D0},
+       {0x416A, 0x65D4},
+       {0x416B, 0x65D6},
+       {0x416C, 0x65D8},
+       {0x416D, 0x65DF},
+       {0x416E, 0x65F0},
+       {0x416F, 0x65F2},
+       {0x4170, 0x65F4},
+       {0x4171, 0x65F5},
+       {0x4172, 0x65F9},
+       {0x4173, 0x65FE},
+       {0x4174, 0x65FF},
+       {0x4175, 0x6600},
+       {0x4176, 0x6604},
+       {0x4177, 0x6608},
+       {0x4178, 0x6609},
+       {0x4179, 0x660D},
+       {0x417A, 0x6611},
+       {0x417B, 0x6612},
+       {0x417C, 0x6615},
+       {0x417D, 0x6616},
+       {0x417E, 0x661D},
+       {0x4221, 0x661E},
+       {0x4222, 0x6621},
+       {0x4223, 0x6622},
+       {0x4224, 0x6623},
+       {0x4225, 0x6624},
+       {0x4226, 0x6626},
+       {0x4227, 0x6629},
+       {0x4228, 0x662A},
+       {0x4229, 0x662B},
+       {0x422A, 0x662C},
+       {0x422B, 0x662E},
+       {0x422C, 0x6630},
+       {0x422D, 0x6631},
+       {0x422E, 0x6633},
+       {0x422F, 0x6639},
+       {0x4230, 0x6637},
+       {0x4231, 0x6640},
+       {0x4232, 0x6645},
+       {0x4233, 0x6646},
+       {0x4234, 0x664A},
+       {0x4235, 0x664C},
+       {0x4236, 0x6651},
+       {0x4237, 0x664E},
+       {0x4238, 0x6657},
+       {0x4239, 0x6658},
+       {0x423A, 0x6659},
+       {0x423B, 0x665B},
+       {0x423C, 0x665C},
+       {0x423D, 0x6660},
+       {0x423E, 0x6661},
+       {0x423F, 0x66FB},
+       {0x4240, 0x666A},
+       {0x4241, 0x666B},
+       {0x4242, 0x666C},
+       {0x4243, 0x667E},
+       {0x4244, 0x6673},
+       {0x4245, 0x6675},
+       {0x4246, 0x667F},
+       {0x4247, 0x6677},
+       {0x4248, 0x6678},
+       {0x4249, 0x6679},
+       {0x424A, 0x667B},
+       {0x424B, 0x6680},
+       {0x424C, 0x667C},
+       {0x424D, 0x668B},
+       {0x424E, 0x668C},
+       {0x424F, 0x668D},
+       {0x4250, 0x6690},
+       {0x4251, 0x6692},
+       {0x4252, 0x6699},
+       {0x4253, 0x669A},
+       {0x4254, 0x669B},
+       {0x4255, 0x669C},
+       {0x4256, 0x669F},
+       {0x4257, 0x66A0},
+       {0x4258, 0x66A4},
+       {0x4259, 0x66AD},
+       {0x425A, 0x66B1},
+       {0x425B, 0x66B2},
+       {0x425C, 0x66B5},
+       {0x425D, 0x66BB},
+       {0x425E, 0x66BF},
+       {0x425F, 0x66C0},
+       {0x4260, 0x66C2},
+       {0x4261, 0x66C3},
+       {0x4262, 0x66C8},
+       {0x4263, 0x66CC},
+       {0x4264, 0x66CE},
+       {0x4265, 0x66CF},
+       {0x4266, 0x66D4},
+       {0x4267, 0x66DB},
+       {0x4268, 0x66DF},
+       {0x4269, 0x66E8},
+       {0x426A, 0x66EB},
+       {0x426B, 0x66EC},
+       {0x426C, 0x66EE},
+       {0x426D, 0x66FA},
+       {0x426E, 0x6705},
+       {0x426F, 0x6707},
+       {0x4270, 0x670E},
+       {0x4271, 0x6713},
+       {0x4272, 0x6719},
+       {0x4273, 0x671C},
+       {0x4274, 0x6720},
+       {0x4275, 0x6722},
+       {0x4276, 0x6733},
+       {0x4277, 0x673E},
+       {0x4278, 0x6745},
+       {0x4279, 0x6747},
+       {0x427A, 0x6748},
+       {0x427B, 0x674C},
+       {0x427C, 0x6754},
+       {0x427D, 0x6755},
+       {0x427E, 0x675D},
+       {0x4321, 0x6766},
+       {0x4322, 0x676C},
+       {0x4323, 0x676E},
+       {0x4324, 0x6774},
+       {0x4325, 0x6776},
+       {0x4326, 0x677B},
+       {0x4327, 0x6781},
+       {0x4328, 0x6784},
+       {0x4329, 0x678E},
+       {0x432A, 0x678F},
+       {0x432B, 0x6791},
+       {0x432C, 0x6793},
+       {0x432D, 0x6796},
+       {0x432E, 0x6798},
+       {0x432F, 0x6799},
+       {0x4330, 0x679B},
+       {0x4331, 0x67B0},
+       {0x4332, 0x67B1},
+       {0x4333, 0x67B2},
+       {0x4334, 0x67B5},
+       {0x4335, 0x67BB},
+       {0x4336, 0x67BC},
+       {0x4337, 0x67BD},
+       {0x4338, 0x67F9},
+       {0x4339, 0x67C0},
+       {0x433A, 0x67C2},
+       {0x433B, 0x67C3},
+       {0x433C, 0x67C5},
+       {0x433D, 0x67C8},
+       {0x433E, 0x67C9},
+       {0x433F, 0x67D2},
+       {0x4340, 0x67D7},
+       {0x4341, 0x67D9},
+       {0x4342, 0x67DC},
+       {0x4343, 0x67E1},
+       {0x4344, 0x67E6},
+       {0x4345, 0x67F0},
+       {0x4346, 0x67F2},
+       {0x4347, 0x67F6},
+       {0x4348, 0x67F7},
+       {0x4349, 0x6852},
+       {0x434A, 0x6814},
+       {0x434B, 0x6819},
+       {0x434C, 0x681D},
+       {0x434D, 0x681F},
+       {0x434E, 0x6828},
+       {0x434F, 0x6827},
+       {0x4350, 0x682C},
+       {0x4351, 0x682D},
+       {0x4352, 0x682F},
+       {0x4353, 0x6830},
+       {0x4354, 0x6831},
+       {0x4355, 0x6833},
+       {0x4356, 0x683B},
+       {0x4357, 0x683F},
+       {0x4358, 0x6844},
+       {0x4359, 0x6845},
+       {0x435A, 0x684A},
+       {0x435B, 0x684C},
+       {0x435C, 0x6855},
+       {0x435D, 0x6857},
+       {0x435E, 0x6858},
+       {0x435F, 0x685B},
+       {0x4360, 0x686B},
+       {0x4361, 0x686E},
+       {0x4362, 0x686F},
+       {0x4363, 0x6870},
+       {0x4364, 0x6871},
+       {0x4365, 0x6872},
+       {0x4366, 0x6875},
+       {0x4367, 0x6879},
+       {0x4368, 0x687A},
+       {0x4369, 0x687B},
+       {0x436A, 0x687C},
+       {0x436B, 0x6882},
+       {0x436C, 0x6884},
+       {0x436D, 0x6886},
+       {0x436E, 0x6888},
+       {0x436F, 0x6896},
+       {0x4370, 0x6898},
+       {0x4371, 0x689A},
+       {0x4372, 0x689C},
+       {0x4373, 0x68A1},
+       {0x4374, 0x68A3},
+       {0x4375, 0x68A5},
+       {0x4376, 0x68A9},
+       {0x4377, 0x68AA},
+       {0x4378, 0x68AE},
+       {0x4379, 0x68B2},
+       {0x437A, 0x68BB},
+       {0x437B, 0x68C5},
+       {0x437C, 0x68C8},
+       {0x437D, 0x68CC},
+       {0x437E, 0x68CF},
+       {0x4421, 0x68D0},
+       {0x4422, 0x68D1},
+       {0x4423, 0x68D3},
+       {0x4424, 0x68D6},
+       {0x4425, 0x68D9},
+       {0x4426, 0x68DC},
+       {0x4427, 0x68DD},
+       {0x4428, 0x68E5},
+       {0x4429, 0x68E8},
+       {0x442A, 0x68EA},
+       {0x442B, 0x68EB},
+       {0x442C, 0x68EC},
+       {0x442D, 0x68ED},
+       {0x442E, 0x68F0},
+       {0x442F, 0x68F1},
+       {0x4430, 0x68F5},
+       {0x4431, 0x68F6},
+       {0x4432, 0x68FB},
+       {0x4433, 0x68FC},
+       {0x4434, 0x68FD},
+       {0x4435, 0x6906},
+       {0x4436, 0x6909},
+       {0x4437, 0x690A},
+       {0x4438, 0x6910},
+       {0x4439, 0x6911},
+       {0x443A, 0x6913},
+       {0x443B, 0x6916},
+       {0x443C, 0x6917},
+       {0x443D, 0x6931},
+       {0x443E, 0x6933},
+       {0x443F, 0x6935},
+       {0x4440, 0x6938},
+       {0x4441, 0x693B},
+       {0x4442, 0x6942},
+       {0x4443, 0x6945},
+       {0x4444, 0x6949},
+       {0x4445, 0x694E},
+       {0x4446, 0x6957},
+       {0x4447, 0x695B},
+       {0x4448, 0x6963},
+       {0x4449, 0x6964},
+       {0x444A, 0x6965},
+       {0x444B, 0x6966},
+       {0x444C, 0x6968},
+       {0x444D, 0x6969},
+       {0x444E, 0x696C},
+       {0x444F, 0x6970},
+       {0x4450, 0x6971},
+       {0x4451, 0x6972},
+       {0x4452, 0x697A},
+       {0x4453, 0x697B},
+       {0x4454, 0x697F},
+       {0x4455, 0x6980},
+       {0x4456, 0x698D},
+       {0x4457, 0x6992},
+       {0x4458, 0x6996},
+       {0x4459, 0x6998},
+       {0x445A, 0x69A1},
+       {0x445B, 0x69A5},
+       {0x445C, 0x69A6},
+       {0x445D, 0x69A8},
+       {0x445E, 0x69AB},
+       {0x445F, 0x69AD},
+       {0x4460, 0x69AF},
+       {0x4461, 0x69B7},
+       {0x4462, 0x69B8},
+       {0x4463, 0x69BA},
+       {0x4464, 0x69BC},
+       {0x4465, 0x69C5},
+       {0x4466, 0x69C8},
+       {0x4467, 0x69D1},
+       {0x4468, 0x69D6},
+       {0x4469, 0x69D7},
+       {0x446A, 0x69E2},
+       {0x446B, 0x69E5},
+       {0x446C, 0x69EE},
+       {0x446D, 0x69EF},
+       {0x446E, 0x69F1},
+       {0x446F, 0x69F3},
+       {0x4470, 0x69F5},
+       {0x4471, 0x69FE},
+       {0x4472, 0x6A00},
+       {0x4473, 0x6A01},
+       {0x4474, 0x6A03},
+       {0x4475, 0x6A0F},
+       {0x4476, 0x6A11},
+       {0x4477, 0x6A15},
+       {0x4478, 0x6A1A},
+       {0x4479, 0x6A1D},
+       {0x447A, 0x6A20},
+       {0x447B, 0x6A24},
+       {0x447C, 0x6A28},
+       {0x447D, 0x6A30},
+       {0x447E, 0x6A32},
+       {0x4521, 0x6A34},
+       {0x4522, 0x6A37},
+       {0x4523, 0x6A3B},
+       {0x4524, 0x6A3E},
+       {0x4525, 0x6A3F},
+       {0x4526, 0x6A45},
+       {0x4527, 0x6A46},
+       {0x4528, 0x6A49},
+       {0x4529, 0x6A4A},
+       {0x452A, 0x6A4E},
+       {0x452B, 0x6A50},
+       {0x452C, 0x6A51},
+       {0x452D, 0x6A52},
+       {0x452E, 0x6A55},
+       {0x452F, 0x6A56},
+       {0x4530, 0x6A5B},
+       {0x4531, 0x6A64},
+       {0x4532, 0x6A67},
+       {0x4533, 0x6A6A},
+       {0x4534, 0x6A71},
+       {0x4535, 0x6A73},
+       {0x4536, 0x6A7E},
+       {0x4537, 0x6A81},
+       {0x4538, 0x6A83},
+       {0x4539, 0x6A86},
+       {0x453A, 0x6A87},
+       {0x453B, 0x6A89},
+       {0x453C, 0x6A8B},
+       {0x453D, 0x6A91},
+       {0x453E, 0x6A9B},
+       {0x453F, 0x6A9D},
+       {0x4540, 0x6A9E},
+       {0x4541, 0x6A9F},
+       {0x4542, 0x6AA5},
+       {0x4543, 0x6AAB},
+       {0x4544, 0x6AAF},
+       {0x4545, 0x6AB0},
+       {0x4546, 0x6AB1},
+       {0x4547, 0x6AB4},
+       {0x4548, 0x6ABD},
+       {0x4549, 0x6ABE},
+       {0x454A, 0x6ABF},
+       {0x454B, 0x6AC6},
+       {0x454C, 0x6AC9},
+       {0x454D, 0x6AC8},
+       {0x454E, 0x6ACC},
+       {0x454F, 0x6AD0},
+       {0x4550, 0x6AD4},
+       {0x4551, 0x6AD5},
+       {0x4552, 0x6AD6},
+       {0x4553, 0x6ADC},
+       {0x4554, 0x6ADD},
+       {0x4555, 0x6AE4},
+       {0x4556, 0x6AE7},
+       {0x4557, 0x6AEC},
+       {0x4558, 0x6AF0},
+       {0x4559, 0x6AF1},
+       {0x455A, 0x6AF2},
+       {0x455B, 0x6AFC},
+       {0x455C, 0x6AFD},
+       {0x455D, 0x6B02},
+       {0x455E, 0x6B03},
+       {0x455F, 0x6B06},
+       {0x4560, 0x6B07},
+       {0x4561, 0x6B09},
+       {0x4562, 0x6B0F},
+       {0x4563, 0x6B10},
+       {0x4564, 0x6B11},
+       {0x4565, 0x6B17},
+       {0x4566, 0x6B1B},
+       {0x4567, 0x6B1E},
+       {0x4568, 0x6B24},
+       {0x4569, 0x6B28},
+       {0x456A, 0x6B2B},
+       {0x456B, 0x6B2C},
+       {0x456C, 0x6B2F},
+       {0x456D, 0x6B35},
+       {0x456E, 0x6B36},
+       {0x456F, 0x6B3B},
+       {0x4570, 0x6B3F},
+       {0x4571, 0x6B46},
+       {0x4572, 0x6B4A},
+       {0x4573, 0x6B4D},
+       {0x4574, 0x6B52},
+       {0x4575, 0x6B56},
+       {0x4576, 0x6B58},
+       {0x4577, 0x6B5D},
+       {0x4578, 0x6B60},
+       {0x4579, 0x6B67},
+       {0x457A, 0x6B6B},
+       {0x457B, 0x6B6E},
+       {0x457C, 0x6B70},
+       {0x457D, 0x6B75},
+       {0x457E, 0x6B7D},
+       {0x4621, 0x6B7E},
+       {0x4622, 0x6B82},
+       {0x4623, 0x6B85},
+       {0x4624, 0x6B97},
+       {0x4625, 0x6B9B},
+       {0x4626, 0x6B9F},
+       {0x4627, 0x6BA0},
+       {0x4628, 0x6BA2},
+       {0x4629, 0x6BA3},
+       {0x462A, 0x6BA8},
+       {0x462B, 0x6BA9},
+       {0x462C, 0x6BAC},
+       {0x462D, 0x6BAD},
+       {0x462E, 0x6BAE},
+       {0x462F, 0x6BB0},
+       {0x4630, 0x6BB8},
+       {0x4631, 0x6BB9},
+       {0x4632, 0x6BBD},
+       {0x4633, 0x6BBE},
+       {0x4634, 0x6BC3},
+       {0x4635, 0x6BC4},
+       {0x4636, 0x6BC9},
+       {0x4637, 0x6BCC},
+       {0x4638, 0x6BD6},
+       {0x4639, 0x6BDA},
+       {0x463A, 0x6BE1},
+       {0x463B, 0x6BE3},
+       {0x463C, 0x6BE6},
+       {0x463D, 0x6BE7},
+       {0x463E, 0x6BEE},
+       {0x463F, 0x6BF1},
+       {0x4640, 0x6BF7},
+       {0x4641, 0x6BF9},
+       {0x4642, 0x6BFF},
+       {0x4643, 0x6C02},
+       {0x4644, 0x6C04},
+       {0x4645, 0x6C05},
+       {0x4646, 0x6C09},
+       {0x4647, 0x6C0D},
+       {0x4648, 0x6C0E},
+       {0x4649, 0x6C10},
+       {0x464A, 0x6C12},
+       {0x464B, 0x6C19},
+       {0x464C, 0x6C1F},
+       {0x464D, 0x6C26},
+       {0x464E, 0x6C27},
+       {0x464F, 0x6C28},
+       {0x4650, 0x6C2C},
+       {0x4651, 0x6C2E},
+       {0x4652, 0x6C33},
+       {0x4653, 0x6C35},
+       {0x4654, 0x6C36},
+       {0x4655, 0x6C3A},
+       {0x4656, 0x6C3B},
+       {0x4657, 0x6C3F},
+       {0x4658, 0x6C4A},
+       {0x4659, 0x6C4B},
+       {0x465A, 0x6C4D},
+       {0x465B, 0x6C4F},
+       {0x465C, 0x6C52},
+       {0x465D, 0x6C54},
+       {0x465E, 0x6C59},
+       {0x465F, 0x6C5B},
+       {0x4660, 0x6C5C},
+       {0x4661, 0x6C6B},
+       {0x4662, 0x6C6D},
+       {0x4663, 0x6C6F},
+       {0x4664, 0x6C74},
+       {0x4665, 0x6C76},
+       {0x4666, 0x6C78},
+       {0x4667, 0x6C79},
+       {0x4668, 0x6C7B},
+       {0x4669, 0x6C85},
+       {0x466A, 0x6C86},
+       {0x466B, 0x6C87},
+       {0x466C, 0x6C89},
+       {0x466D, 0x6C94},
+       {0x466E, 0x6C95},
+       {0x466F, 0x6C97},
+       {0x4670, 0x6C98},
+       {0x4671, 0x6C9C},
+       {0x4672, 0x6C9F},
+       {0x4673, 0x6CB0},
+       {0x4674, 0x6CB2},
+       {0x4675, 0x6CB4},
+       {0x4676, 0x6CC2},
+       {0x4677, 0x6CC6},
+       {0x4678, 0x6CCD},
+       {0x4679, 0x6CCF},
+       {0x467A, 0x6CD0},
+       {0x467B, 0x6CD1},
+       {0x467C, 0x6CD2},
+       {0x467D, 0x6CD4},
+       {0x467E, 0x6CD6},
+       {0x4721, 0x6CDA},
+       {0x4722, 0x6CDC},
+       {0x4723, 0x6CE0},
+       {0x4724, 0x6CE7},
+       {0x4725, 0x6CE9},
+       {0x4726, 0x6CEB},
+       {0x4727, 0x6CEC},
+       {0x4728, 0x6CEE},
+       {0x4729, 0x6CF2},
+       {0x472A, 0x6CF4},
+       {0x472B, 0x6D04},
+       {0x472C, 0x6D07},
+       {0x472D, 0x6D0A},
+       {0x472E, 0x6D0E},
+       {0x472F, 0x6D0F},
+       {0x4730, 0x6D11},
+       {0x4731, 0x6D13},
+       {0x4732, 0x6D1A},
+       {0x4733, 0x6D26},
+       {0x4734, 0x6D27},
+       {0x4735, 0x6D28},
+       {0x4736, 0x6C67},
+       {0x4737, 0x6D2E},
+       {0x4738, 0x6D2F},
+       {0x4739, 0x6D31},
+       {0x473A, 0x6D39},
+       {0x473B, 0x6D3C},
+       {0x473C, 0x6D3F},
+       {0x473D, 0x6D57},
+       {0x473E, 0x6D5E},
+       {0x473F, 0x6D5F},
+       {0x4740, 0x6D61},
+       {0x4741, 0x6D65},
+       {0x4742, 0x6D67},
+       {0x4743, 0x6D6F},
+       {0x4744, 0x6D70},
+       {0x4745, 0x6D7C},
+       {0x4746, 0x6D82},
+       {0x4747, 0x6D87},
+       {0x4748, 0x6D91},
+       {0x4749, 0x6D92},
+       {0x474A, 0x6D94},
+       {0x474B, 0x6D96},
+       {0x474C, 0x6D97},
+       {0x474D, 0x6D98},
+       {0x474E, 0x6DAA},
+       {0x474F, 0x6DAC},
+       {0x4750, 0x6DB4},
+       {0x4751, 0x6DB7},
+       {0x4752, 0x6DB9},
+       {0x4753, 0x6DBD},
+       {0x4754, 0x6DBF},
+       {0x4755, 0x6DC4},
+       {0x4756, 0x6DC8},
+       {0x4757, 0x6DCA},
+       {0x4758, 0x6DCE},
+       {0x4759, 0x6DCF},
+       {0x475A, 0x6DD6},
+       {0x475B, 0x6DDB},
+       {0x475C, 0x6DDD},
+       {0x475D, 0x6DDF},
+       {0x475E, 0x6DE0},
+       {0x475F, 0x6DE2},
+       {0x4760, 0x6DE5},
+       {0x4761, 0x6DE9},
+       {0x4762, 0x6DEF},
+       {0x4763, 0x6DF0},
+       {0x4764, 0x6DF4},
+       {0x4765, 0x6DF6},
+       {0x4766, 0x6DFC},
+       {0x4767, 0x6E00},
+       {0x4768, 0x6E04},
+       {0x4769, 0x6E1E},
+       {0x476A, 0x6E22},
+       {0x476B, 0x6E27},
+       {0x476C, 0x6E32},
+       {0x476D, 0x6E36},
+       {0x476E, 0x6E39},
+       {0x476F, 0x6E3B},
+       {0x4770, 0x6E3C},
+       {0x4771, 0x6E44},
+       {0x4772, 0x6E45},
+       {0x4773, 0x6E48},
+       {0x4774, 0x6E49},
+       {0x4775, 0x6E4B},
+       {0x4776, 0x6E4F},
+       {0x4777, 0x6E51},
+       {0x4778, 0x6E52},
+       {0x4779, 0x6E53},
+       {0x477A, 0x6E54},
+       {0x477B, 0x6E57},
+       {0x477C, 0x6E5C},
+       {0x477D, 0x6E5D},
+       {0x477E, 0x6E5E},
+       {0x4821, 0x6E62},
+       {0x4822, 0x6E63},
+       {0x4823, 0x6E68},
+       {0x4824, 0x6E73},
+       {0x4825, 0x6E7B},
+       {0x4826, 0x6E7D},
+       {0x4827, 0x6E8D},
+       {0x4828, 0x6E93},
+       {0x4829, 0x6E99},
+       {0x482A, 0x6EA0},
+       {0x482B, 0x6EA7},
+       {0x482C, 0x6EAD},
+       {0x482D, 0x6EAE},
+       {0x482E, 0x6EB1},
+       {0x482F, 0x6EB3},
+       {0x4830, 0x6EBB},
+       {0x4831, 0x6EBF},
+       {0x4832, 0x6EC0},
+       {0x4833, 0x6EC1},
+       {0x4834, 0x6EC3},
+       {0x4835, 0x6EC7},
+       {0x4836, 0x6EC8},
+       {0x4837, 0x6ECA},
+       {0x4838, 0x6ECD},
+       {0x4839, 0x6ECE},
+       {0x483A, 0x6ECF},
+       {0x483B, 0x6EEB},
+       {0x483C, 0x6EED},
+       {0x483D, 0x6EEE},
+       {0x483E, 0x6EF9},
+       {0x483F, 0x6EFB},
+       {0x4840, 0x6EFD},
+       {0x4841, 0x6F04},
+       {0x4842, 0x6F08},
+       {0x4843, 0x6F0A},
+       {0x4844, 0x6F0C},
+       {0x4845, 0x6F0D},
+       {0x4846, 0x6F16},
+       {0x4847, 0x6F18},
+       {0x4848, 0x6F1A},
+       {0x4849, 0x6F1B},
+       {0x484A, 0x6F26},
+       {0x484B, 0x6F29},
+       {0x484C, 0x6F2A},
+       {0x484D, 0x6F2F},
+       {0x484E, 0x6F30},
+       {0x484F, 0x6F33},
+       {0x4850, 0x6F36},
+       {0x4851, 0x6F3B},
+       {0x4852, 0x6F3C},
+       {0x4853, 0x6F2D},
+       {0x4854, 0x6F4F},
+       {0x4855, 0x6F51},
+       {0x4856, 0x6F52},
+       {0x4857, 0x6F53},
+       {0x4858, 0x6F57},
+       {0x4859, 0x6F59},
+       {0x485A, 0x6F5A},
+       {0x485B, 0x6F5D},
+       {0x485C, 0x6F5E},
+       {0x485D, 0x6F61},
+       {0x485E, 0x6F62},
+       {0x485F, 0x6F68},
+       {0x4860, 0x6F6C},
+       {0x4861, 0x6F7D},
+       {0x4862, 0x6F7E},
+       {0x4863, 0x6F83},
+       {0x4864, 0x6F87},
+       {0x4865, 0x6F88},
+       {0x4866, 0x6F8B},
+       {0x4867, 0x6F8C},
+       {0x4868, 0x6F8D},
+       {0x4869, 0x6F90},
+       {0x486A, 0x6F92},
+       {0x486B, 0x6F93},
+       {0x486C, 0x6F94},
+       {0x486D, 0x6F96},
+       {0x486E, 0x6F9A},
+       {0x486F, 0x6F9F},
+       {0x4870, 0x6FA0},
+       {0x4871, 0x6FA5},
+       {0x4872, 0x6FA6},
+       {0x4873, 0x6FA7},
+       {0x4874, 0x6FA8},
+       {0x4875, 0x6FAE},
+       {0x4876, 0x6FAF},
+       {0x4877, 0x6FB0},
+       {0x4878, 0x6FB5},
+       {0x4879, 0x6FB6},
+       {0x487A, 0x6FBC},
+       {0x487B, 0x6FC5},
+       {0x487C, 0x6FC7},
+       {0x487D, 0x6FC8},
+       {0x487E, 0x6FCA},
+       {0x4921, 0x6FDA},
+       {0x4922, 0x6FDE},
+       {0x4923, 0x6FE8},
+       {0x4924, 0x6FE9},
+       {0x4925, 0x6FF0},
+       {0x4926, 0x6FF5},
+       {0x4927, 0x6FF9},
+       {0x4928, 0x6FFC},
+       {0x4929, 0x6FFD},
+       {0x492A, 0x7000},
+       {0x492B, 0x7005},
+       {0x492C, 0x7006},
+       {0x492D, 0x7007},
+       {0x492E, 0x700D},
+       {0x492F, 0x7017},
+       {0x4930, 0x7020},
+       {0x4931, 0x7023},
+       {0x4932, 0x702F},
+       {0x4933, 0x7034},
+       {0x4934, 0x7037},
+       {0x4935, 0x7039},
+       {0x4936, 0x703C},
+       {0x4937, 0x7043},
+       {0x4938, 0x7044},
+       {0x4939, 0x7048},
+       {0x493A, 0x7049},
+       {0x493B, 0x704A},
+       {0x493C, 0x704B},
+       {0x493D, 0x7054},
+       {0x493E, 0x7055},
+       {0x493F, 0x705D},
+       {0x4940, 0x705E},
+       {0x4941, 0x704E},
+       {0x4942, 0x7064},
+       {0x4943, 0x7065},
+       {0x4944, 0x706C},
+       {0x4945, 0x706E},
+       {0x4946, 0x7075},
+       {0x4947, 0x7076},
+       {0x4948, 0x707E},
+       {0x4949, 0x7081},
+       {0x494A, 0x7085},
+       {0x494B, 0x7086},
+       {0x494C, 0x7094},
+       {0x494D, 0x7095},
+       {0x494E, 0x7096},
+       {0x494F, 0x7097},
+       {0x4950, 0x7098},
+       {0x4951, 0x709B},
+       {0x4952, 0x70A4},
+       {0x4953, 0x70AB},
+       {0x4954, 0x70B0},
+       {0x4955, 0x70B1},
+       {0x4956, 0x70B4},
+       {0x4957, 0x70B7},
+       {0x4958, 0x70CA},
+       {0x4959, 0x70D1},
+       {0x495A, 0x70D3},
+       {0x495B, 0x70D4},
+       {0x495C, 0x70D5},
+       {0x495D, 0x70D6},
+       {0x495E, 0x70D8},
+       {0x495F, 0x70DC},
+       {0x4960, 0x70E4},
+       {0x4961, 0x70FA},
+       {0x4962, 0x7103},
+       {0x4963, 0x7104},
+       {0x4964, 0x7105},
+       {0x4965, 0x7106},
+       {0x4966, 0x7107},
+       {0x4967, 0x710B},
+       {0x4968, 0x710C},
+       {0x4969, 0x710F},
+       {0x496A, 0x711E},
+       {0x496B, 0x7120},
+       {0x496C, 0x712B},
+       {0x496D, 0x712D},
+       {0x496E, 0x712F},
+       {0x496F, 0x7130},
+       {0x4970, 0x7131},
+       {0x4971, 0x7138},
+       {0x4972, 0x7141},
+       {0x4973, 0x7145},
+       {0x4974, 0x7146},
+       {0x4975, 0x7147},
+       {0x4976, 0x714A},
+       {0x4977, 0x714B},
+       {0x4978, 0x7150},
+       {0x4979, 0x7152},
+       {0x497A, 0x7157},
+       {0x497B, 0x715A},
+       {0x497C, 0x715C},
+       {0x497D, 0x715E},
+       {0x497E, 0x7160},
+       {0x4A21, 0x7168},
+       {0x4A22, 0x7179},
+       {0x4A23, 0x7180},
+       {0x4A24, 0x7185},
+       {0x4A25, 0x7187},
+       {0x4A26, 0x718C},
+       {0x4A27, 0x7192},
+       {0x4A28, 0x719A},
+       {0x4A29, 0x719B},
+       {0x4A2A, 0x71A0},
+       {0x4A2B, 0x71A2},
+       {0x4A2C, 0x71AF},
+       {0x4A2D, 0x71B0},
+       {0x4A2E, 0x71B2},
+       {0x4A2F, 0x71B3},
+       {0x4A30, 0x71BA},
+       {0x4A31, 0x71BF},
+       {0x4A32, 0x71C0},
+       {0x4A33, 0x71C1},
+       {0x4A34, 0x71C4},
+       {0x4A35, 0x71CB},
+       {0x4A36, 0x71CC},
+       {0x4A37, 0x71D3},
+       {0x4A38, 0x71D6},
+       {0x4A39, 0x71D9},
+       {0x4A3A, 0x71DA},
+       {0x4A3B, 0x71DC},
+       {0x4A3C, 0x71F8},
+       {0x4A3D, 0x71FE},
+       {0x4A3E, 0x7200},
+       {0x4A3F, 0x7207},
+       {0x4A40, 0x7208},
+       {0x4A41, 0x7209},
+       {0x4A42, 0x7213},
+       {0x4A43, 0x7217},
+       {0x4A44, 0x721A},
+       {0x4A45, 0x721D},
+       {0x4A46, 0x721F},
+       {0x4A47, 0x7224},
+       {0x4A48, 0x722B},
+       {0x4A49, 0x722F},
+       {0x4A4A, 0x7234},
+       {0x4A4B, 0x7238},
+       {0x4A4C, 0x7239},
+       {0x4A4D, 0x7241},
+       {0x4A4E, 0x7242},
+       {0x4A4F, 0x7243},
+       {0x4A50, 0x7245},
+       {0x4A51, 0x724E},
+       {0x4A52, 0x724F},
+       {0x4A53, 0x7250},
+       {0x4A54, 0x7253},
+       {0x4A55, 0x7255},
+       {0x4A56, 0x7256},
+       {0x4A57, 0x725A},
+       {0x4A58, 0x725C},
+       {0x4A59, 0x725E},
+       {0x4A5A, 0x7260},
+       {0x4A5B, 0x7263},
+       {0x4A5C, 0x7268},
+       {0x4A5D, 0x726B},
+       {0x4A5E, 0x726E},
+       {0x4A5F, 0x726F},
+       {0x4A60, 0x7271},
+       {0x4A61, 0x7277},
+       {0x4A62, 0x7278},
+       {0x4A63, 0x727B},
+       {0x4A64, 0x727C},
+       {0x4A65, 0x727F},
+       {0x4A66, 0x7284},
+       {0x4A67, 0x7289},
+       {0x4A68, 0x728D},
+       {0x4A69, 0x728E},
+       {0x4A6A, 0x7293},
+       {0x4A6B, 0x729B},
+       {0x4A6C, 0x72A8},
+       {0x4A6D, 0x72AD},
+       {0x4A6E, 0x72AE},
+       {0x4A6F, 0x72B1},
+       {0x4A70, 0x72B4},
+       {0x4A71, 0x72BE},
+       {0x4A72, 0x72C1},
+       {0x4A73, 0x72C7},
+       {0x4A74, 0x72C9},
+       {0x4A75, 0x72CC},
+       {0x4A76, 0x72D5},
+       {0x4A77, 0x72D6},
+       {0x4A78, 0x72D8},
+       {0x4A79, 0x72DF},
+       {0x4A7A, 0x72E5},
+       {0x4A7B, 0x72F3},
+       {0x4A7C, 0x72F4},
+       {0x4A7D, 0x72FA},
+       {0x4A7E, 0x72FB},
+       {0x4B21, 0x72FE},
+       {0x4B22, 0x7302},
+       {0x4B23, 0x7304},
+       {0x4B24, 0x7305},
+       {0x4B25, 0x7307},
+       {0x4B26, 0x730B},
+       {0x4B27, 0x730D},
+       {0x4B28, 0x7312},
+       {0x4B29, 0x7313},
+       {0x4B2A, 0x7318},
+       {0x4B2B, 0x7319},
+       {0x4B2C, 0x731E},
+       {0x4B2D, 0x7322},
+       {0x4B2E, 0x7324},
+       {0x4B2F, 0x7327},
+       {0x4B30, 0x7328},
+       {0x4B31, 0x732C},
+       {0x4B32, 0x7331},
+       {0x4B33, 0x7332},
+       {0x4B34, 0x7335},
+       {0x4B35, 0x733A},
+       {0x4B36, 0x733B},
+       {0x4B37, 0x733D},
+       {0x4B38, 0x7343},
+       {0x4B39, 0x734D},
+       {0x4B3A, 0x7350},
+       {0x4B3B, 0x7352},
+       {0x4B3C, 0x7356},
+       {0x4B3D, 0x7358},
+       {0x4B3E, 0x735D},
+       {0x4B3F, 0x735E},
+       {0x4B40, 0x735F},
+       {0x4B41, 0x7360},
+       {0x4B42, 0x7366},
+       {0x4B43, 0x7367},
+       {0x4B44, 0x7369},
+       {0x4B45, 0x736B},
+       {0x4B46, 0x736C},
+       {0x4B47, 0x736E},
+       {0x4B48, 0x736F},
+       {0x4B49, 0x7371},
+       {0x4B4A, 0x7377},
+       {0x4B4B, 0x7379},
+       {0x4B4C, 0x737C},
+       {0x4B4D, 0x7380},
+       {0x4B4E, 0x7381},
+       {0x4B4F, 0x7383},
+       {0x4B50, 0x7385},
+       {0x4B51, 0x7386},
+       {0x4B52, 0x738E},
+       {0x4B53, 0x7390},
+       {0x4B54, 0x7393},
+       {0x4B55, 0x7395},
+       {0x4B56, 0x7397},
+       {0x4B57, 0x7398},
+       {0x4B58, 0x739C},
+       {0x4B59, 0x739E},
+       {0x4B5A, 0x739F},
+       {0x4B5B, 0x73A0},
+       {0x4B5C, 0x73A2},
+       {0x4B5D, 0x73A5},
+       {0x4B5E, 0x73A6},
+       {0x4B5F, 0x73AA},
+       {0x4B60, 0x73AB},
+       {0x4B61, 0x73AD},
+       {0x4B62, 0x73B5},
+       {0x4B63, 0x73B7},
+       {0x4B64, 0x73B9},
+       {0x4B65, 0x73BC},
+       {0x4B66, 0x73BD},
+       {0x4B67, 0x73BF},
+       {0x4B68, 0x73C5},
+       {0x4B69, 0x73C6},
+       {0x4B6A, 0x73C9},
+       {0x4B6B, 0x73CB},
+       {0x4B6C, 0x73CC},
+       {0x4B6D, 0x73CF},
+       {0x4B6E, 0x73D2},
+       {0x4B6F, 0x73D3},
+       {0x4B70, 0x73D6},
+       {0x4B71, 0x73D9},
+       {0x4B72, 0x73DD},
+       {0x4B73, 0x73E1},
+       {0x4B74, 0x73E3},
+       {0x4B75, 0x73E6},
+       {0x4B76, 0x73E7},
+       {0x4B77, 0x73E9},
+       {0x4B78, 0x73F4},
+       {0x4B79, 0x73F5},
+       {0x4B7A, 0x73F7},
+       {0x4B7B, 0x73F9},
+       {0x4B7C, 0x73FA},
+       {0x4B7D, 0x73FB},
+       {0x4B7E, 0x73FD},
+       {0x4C21, 0x73FF},
+       {0x4C22, 0x7400},
+       {0x4C23, 0x7401},
+       {0x4C24, 0x7404},
+       {0x4C25, 0x7407},
+       {0x4C26, 0x740A},
+       {0x4C27, 0x7411},
+       {0x4C28, 0x741A},
+       {0x4C29, 0x741B},
+       {0x4C2A, 0x7424},
+       {0x4C2B, 0x7426},
+       {0x4C2C, 0x7428},
+       {0x4C2D, 0x7429},
+       {0x4C2E, 0x742A},
+       {0x4C2F, 0x742B},
+       {0x4C30, 0x742C},
+       {0x4C31, 0x742D},
+       {0x4C32, 0x742E},
+       {0x4C33, 0x742F},
+       {0x4C34, 0x7430},
+       {0x4C35, 0x7431},
+       {0x4C36, 0x7439},
+       {0x4C37, 0x7440},
+       {0x4C38, 0x7443},
+       {0x4C39, 0x7444},
+       {0x4C3A, 0x7446},
+       {0x4C3B, 0x7447},
+       {0x4C3C, 0x744B},
+       {0x4C3D, 0x744D},
+       {0x4C3E, 0x7451},
+       {0x4C3F, 0x7452},
+       {0x4C40, 0x7457},
+       {0x4C41, 0x745D},
+       {0x4C42, 0x7462},
+       {0x4C43, 0x7466},
+       {0x4C44, 0x7467},
+       {0x4C45, 0x7468},
+       {0x4C46, 0x746B},
+       {0x4C47, 0x746D},
+       {0x4C48, 0x746E},
+       {0x4C49, 0x7471},
+       {0x4C4A, 0x7472},
+       {0x4C4B, 0x7480},
+       {0x4C4C, 0x7481},
+       {0x4C4D, 0x7485},
+       {0x4C4E, 0x7486},
+       {0x4C4F, 0x7487},
+       {0x4C50, 0x7489},
+       {0x4C51, 0x748F},
+       {0x4C52, 0x7490},
+       {0x4C53, 0x7491},
+       {0x4C54, 0x7492},
+       {0x4C55, 0x7498},
+       {0x4C56, 0x7499},
+       {0x4C57, 0x749A},
+       {0x4C58, 0x749C},
+       {0x4C59, 0x749F},
+       {0x4C5A, 0x74A0},
+       {0x4C5B, 0x74A1},
+       {0x4C5C, 0x74A3},
+       {0x4C5D, 0x74A6},
+       {0x4C5E, 0x74A8},
+       {0x4C5F, 0x74A9},
+       {0x4C60, 0x74AA},
+       {0x4C61, 0x74AB},
+       {0x4C62, 0x74AE},
+       {0x4C63, 0x74AF},
+       {0x4C64, 0x74B1},
+       {0x4C65, 0x74B2},
+       {0x4C66, 0x74B5},
+       {0x4C67, 0x74B9},
+       {0x4C68, 0x74BB},
+       {0x4C69, 0x74BF},
+       {0x4C6A, 0x74C8},
+       {0x4C6B, 0x74C9},
+       {0x4C6C, 0x74CC},
+       {0x4C6D, 0x74D0},
+       {0x4C6E, 0x74D3},
+       {0x4C6F, 0x74D8},
+       {0x4C70, 0x74DA},
+       {0x4C71, 0x74DB},
+       {0x4C72, 0x74DE},
+       {0x4C73, 0x74DF},
+       {0x4C74, 0x74E4},
+       {0x4C75, 0x74E8},
+       {0x4C76, 0x74EA},
+       {0x4C77, 0x74EB},
+       {0x4C78, 0x74EF},
+       {0x4C79, 0x74F4},
+       {0x4C7A, 0x74FA},
+       {0x4C7B, 0x74FB},
+       {0x4C7C, 0x74FC},
+       {0x4C7D, 0x74FF},
+       {0x4C7E, 0x7506},
+       {0x4D21, 0x7512},
+       {0x4D22, 0x7516},
+       {0x4D23, 0x7517},
+       {0x4D24, 0x7520},
+       {0x4D25, 0x7521},
+       {0x4D26, 0x7524},
+       {0x4D27, 0x7527},
+       {0x4D28, 0x7529},
+       {0x4D29, 0x752A},
+       {0x4D2A, 0x752F},
+       {0x4D2B, 0x7536},
+       {0x4D2C, 0x7539},
+       {0x4D2D, 0x753D},
+       {0x4D2E, 0x753E},
+       {0x4D2F, 0x753F},
+       {0x4D30, 0x7540},
+       {0x4D31, 0x7543},
+       {0x4D32, 0x7547},
+       {0x4D33, 0x7548},
+       {0x4D34, 0x754E},
+       {0x4D35, 0x7550},
+       {0x4D36, 0x7552},
+       {0x4D37, 0x7557},
+       {0x4D38, 0x755E},
+       {0x4D39, 0x755F},
+       {0x4D3A, 0x7561},
+       {0x4D3B, 0x756F},
+       {0x4D3C, 0x7571},
+       {0x4D3D, 0x7579},
+       {0x4D3E, 0x757A},
+       {0x4D3F, 0x757B},
+       {0x4D40, 0x757C},
+       {0x4D41, 0x757D},
+       {0x4D42, 0x757E},
+       {0x4D43, 0x7581},
+       {0x4D44, 0x7585},
+       {0x4D45, 0x7590},
+       {0x4D46, 0x7592},
+       {0x4D47, 0x7593},
+       {0x4D48, 0x7595},
+       {0x4D49, 0x7599},
+       {0x4D4A, 0x759C},
+       {0x4D4B, 0x75A2},
+       {0x4D4C, 0x75A4},
+       {0x4D4D, 0x75B4},
+       {0x4D4E, 0x75BA},
+       {0x4D4F, 0x75BF},
+       {0x4D50, 0x75C0},
+       {0x4D51, 0x75C1},
+       {0x4D52, 0x75C4},
+       {0x4D53, 0x75C6},
+       {0x4D54, 0x75CC},
+       {0x4D55, 0x75CE},
+       {0x4D56, 0x75CF},
+       {0x4D57, 0x75D7},
+       {0x4D58, 0x75DC},
+       {0x4D59, 0x75DF},
+       {0x4D5A, 0x75E0},
+       {0x4D5B, 0x75E1},
+       {0x4D5C, 0x75E4},
+       {0x4D5D, 0x75E7},
+       {0x4D5E, 0x75EC},
+       {0x4D5F, 0x75EE},
+       {0x4D60, 0x75EF},
+       {0x4D61, 0x75F1},
+       {0x4D62, 0x75F9},
+       {0x4D63, 0x7600},
+       {0x4D64, 0x7602},
+       {0x4D65, 0x7603},
+       {0x4D66, 0x7604},
+       {0x4D67, 0x7607},
+       {0x4D68, 0x7608},
+       {0x4D69, 0x760A},
+       {0x4D6A, 0x760C},
+       {0x4D6B, 0x760F},
+       {0x4D6C, 0x7612},
+       {0x4D6D, 0x7613},
+       {0x4D6E, 0x7615},
+       {0x4D6F, 0x7616},
+       {0x4D70, 0x7619},
+       {0x4D71, 0x761B},
+       {0x4D72, 0x761C},
+       {0x4D73, 0x761D},
+       {0x4D74, 0x761E},
+       {0x4D75, 0x7623},
+       {0x4D76, 0x7625},
+       {0x4D77, 0x7626},
+       {0x4D78, 0x7629},
+       {0x4D79, 0x762D},
+       {0x4D7A, 0x7632},
+       {0x4D7B, 0x7633},
+       {0x4D7C, 0x7635},
+       {0x4D7D, 0x7638},
+       {0x4D7E, 0x7639},
+       {0x4E21, 0x763A},
+       {0x4E22, 0x763C},
+       {0x4E23, 0x764A},
+       {0x4E24, 0x7640},
+       {0x4E25, 0x7641},
+       {0x4E26, 0x7643},
+       {0x4E27, 0x7644},
+       {0x4E28, 0x7645},
+       {0x4E29, 0x7649},
+       {0x4E2A, 0x764B},
+       {0x4E2B, 0x7655},
+       {0x4E2C, 0x7659},
+       {0x4E2D, 0x765F},
+       {0x4E2E, 0x7664},
+       {0x4E2F, 0x7665},
+       {0x4E30, 0x766D},
+       {0x4E31, 0x766E},
+       {0x4E32, 0x766F},
+       {0x4E33, 0x7671},
+       {0x4E34, 0x7674},
+       {0x4E35, 0x7681},
+       {0x4E36, 0x7685},
+       {0x4E37, 0x768C},
+       {0x4E38, 0x768D},
+       {0x4E39, 0x7695},
+       {0x4E3A, 0x769B},
+       {0x4E3B, 0x769C},
+       {0x4E3C, 0x769D},
+       {0x4E3D, 0x769F},
+       {0x4E3E, 0x76A0},
+       {0x4E3F, 0x76A2},
+       {0x4E40, 0x76A3},
+       {0x4E41, 0x76A4},
+       {0x4E42, 0x76A5},
+       {0x4E43, 0x76A6},
+       {0x4E44, 0x76A7},
+       {0x4E45, 0x76A8},
+       {0x4E46, 0x76AA},
+       {0x4E47, 0x76AD},
+       {0x4E48, 0x76BD},
+       {0x4E49, 0x76C1},
+       {0x4E4A, 0x76C5},
+       {0x4E4B, 0x76C9},
+       {0x4E4C, 0x76CB},
+       {0x4E4D, 0x76CC},
+       {0x4E4E, 0x76CE},
+       {0x4E4F, 0x76D4},
+       {0x4E50, 0x76D9},
+       {0x4E51, 0x76E0},
+       {0x4E52, 0x76E6},
+       {0x4E53, 0x76E8},
+       {0x4E54, 0x76EC},
+       {0x4E55, 0x76F0},
+       {0x4E56, 0x76F1},
+       {0x4E57, 0x76F6},
+       {0x4E58, 0x76F9},
+       {0x4E59, 0x76FC},
+       {0x4E5A, 0x7700},
+       {0x4E5B, 0x7706},
+       {0x4E5C, 0x770A},
+       {0x4E5D, 0x770E},
+       {0x4E5E, 0x7712},
+       {0x4E5F, 0x7714},
+       {0x4E60, 0x7715},
+       {0x4E61, 0x7717},
+       {0x4E62, 0x7719},
+       {0x4E63, 0x771A},
+       {0x4E64, 0x771C},
+       {0x4E65, 0x7722},
+       {0x4E66, 0x7728},
+       {0x4E67, 0x772D},
+       {0x4E68, 0x772E},
+       {0x4E69, 0x772F},
+       {0x4E6A, 0x7734},
+       {0x4E6B, 0x7735},
+       {0x4E6C, 0x7736},
+       {0x4E6D, 0x7739},
+       {0x4E6E, 0x773D},
+       {0x4E6F, 0x773E},
+       {0x4E70, 0x7742},
+       {0x4E71, 0x7745},
+       {0x4E72, 0x7746},
+       {0x4E73, 0x774A},
+       {0x4E74, 0x774D},
+       {0x4E75, 0x774E},
+       {0x4E76, 0x774F},
+       {0x4E77, 0x7752},
+       {0x4E78, 0x7756},
+       {0x4E79, 0x7757},
+       {0x4E7A, 0x775C},
+       {0x4E7B, 0x775E},
+       {0x4E7C, 0x775F},
+       {0x4E7D, 0x7760},
+       {0x4E7E, 0x7762},
+       {0x4F21, 0x7764},
+       {0x4F22, 0x7767},
+       {0x4F23, 0x776A},
+       {0x4F24, 0x776C},
+       {0x4F25, 0x7770},
+       {0x4F26, 0x7772},
+       {0x4F27, 0x7773},
+       {0x4F28, 0x7774},
+       {0x4F29, 0x777A},
+       {0x4F2A, 0x777D},
+       {0x4F2B, 0x7780},
+       {0x4F2C, 0x7784},
+       {0x4F2D, 0x778C},
+       {0x4F2E, 0x778D},
+       {0x4F2F, 0x7794},
+       {0x4F30, 0x7795},
+       {0x4F31, 0x7796},
+       {0x4F32, 0x779A},
+       {0x4F33, 0x779F},
+       {0x4F34, 0x77A2},
+       {0x4F35, 0x77A7},
+       {0x4F36, 0x77AA},
+       {0x4F37, 0x77AE},
+       {0x4F38, 0x77AF},
+       {0x4F39, 0x77B1},
+       {0x4F3A, 0x77B5},
+       {0x4F3B, 0x77BE},
+       {0x4F3C, 0x77C3},
+       {0x4F3D, 0x77C9},
+       {0x4F3E, 0x77D1},
+       {0x4F3F, 0x77D2},
+       {0x4F40, 0x77D5},
+       {0x4F41, 0x77D9},
+       {0x4F42, 0x77DE},
+       {0x4F43, 0x77DF},
+       {0x4F44, 0x77E0},
+       {0x4F45, 0x77E4},
+       {0x4F46, 0x77E6},
+       {0x4F47, 0x77EA},
+       {0x4F48, 0x77EC},
+       {0x4F49, 0x77F0},
+       {0x4F4A, 0x77F1},
+       {0x4F4B, 0x77F4},
+       {0x4F4C, 0x77F8},
+       {0x4F4D, 0x77FB},
+       {0x4F4E, 0x7805},
+       {0x4F4F, 0x7806},
+       {0x4F50, 0x7809},
+       {0x4F51, 0x780D},
+       {0x4F52, 0x780E},
+       {0x4F53, 0x7811},
+       {0x4F54, 0x781D},
+       {0x4F55, 0x7821},
+       {0x4F56, 0x7822},
+       {0x4F57, 0x7823},
+       {0x4F58, 0x782D},
+       {0x4F59, 0x782E},
+       {0x4F5A, 0x7830},
+       {0x4F5B, 0x7835},
+       {0x4F5C, 0x7837},
+       {0x4F5D, 0x7843},
+       {0x4F5E, 0x7844},
+       {0x4F5F, 0x7847},
+       {0x4F60, 0x7848},
+       {0x4F61, 0x784C},
+       {0x4F62, 0x784E},
+       {0x4F63, 0x7852},
+       {0x4F64, 0x785C},
+       {0x4F65, 0x785E},
+       {0x4F66, 0x7860},
+       {0x4F67, 0x7861},
+       {0x4F68, 0x7863},
+       {0x4F69, 0x7864},
+       {0x4F6A, 0x7868},
+       {0x4F6B, 0x786A},
+       {0x4F6C, 0x786E},
+       {0x4F6D, 0x787A},
+       {0x4F6E, 0x787E},
+       {0x4F6F, 0x788A},
+       {0x4F70, 0x788F},
+       {0x4F71, 0x7894},
+       {0x4F72, 0x7898},
+       {0x4F73, 0x78A1},
+       {0x4F74, 0x789D},
+       {0x4F75, 0x789E},
+       {0x4F76, 0x789F},
+       {0x4F77, 0x78A4},
+       {0x4F78, 0x78A8},
+       {0x4F79, 0x78AC},
+       {0x4F7A, 0x78AD},
+       {0x4F7B, 0x78B0},
+       {0x4F7C, 0x78B1},
+       {0x4F7D, 0x78B2},
+       {0x4F7E, 0x78B3},
+       {0x5021, 0x78BB},
+       {0x5022, 0x78BD},
+       {0x5023, 0x78BF},
+       {0x5024, 0x78C7},
+       {0x5025, 0x78C8},
+       {0x5026, 0x78C9},
+       {0x5027, 0x78CC},
+       {0x5028, 0x78CE},
+       {0x5029, 0x78D2},
+       {0x502A, 0x78D3},
+       {0x502B, 0x78D5},
+       {0x502C, 0x78D6},
+       {0x502D, 0x78E4},
+       {0x502E, 0x78DB},
+       {0x502F, 0x78DF},
+       {0x5030, 0x78E0},
+       {0x5031, 0x78E1},
+       {0x5032, 0x78E6},
+       {0x5033, 0x78EA},
+       {0x5034, 0x78F2},
+       {0x5035, 0x78F3},
+       {0x5036, 0x7900},
+       {0x5037, 0x78F6},
+       {0x5038, 0x78F7},
+       {0x5039, 0x78FA},
+       {0x503A, 0x78FB},
+       {0x503B, 0x78FF},
+       {0x503C, 0x7906},
+       {0x503D, 0x790C},
+       {0x503E, 0x7910},
+       {0x503F, 0x791A},
+       {0x5040, 0x791C},
+       {0x5041, 0x791E},
+       {0x5042, 0x791F},
+       {0x5043, 0x7920},
+       {0x5044, 0x7925},
+       {0x5045, 0x7927},
+       {0x5046, 0x7929},
+       {0x5047, 0x792D},
+       {0x5048, 0x7931},
+       {0x5049, 0x7934},
+       {0x504A, 0x7935},
+       {0x504B, 0x793B},
+       {0x504C, 0x793D},
+       {0x504D, 0x793F},
+       {0x504E, 0x7944},
+       {0x504F, 0x7945},
+       {0x5050, 0x7946},
+       {0x5051, 0x794A},
+       {0x5052, 0x794B},
+       {0x5053, 0x794F},
+       {0x5054, 0x7951},
+       {0x5055, 0x7954},
+       {0x5056, 0x7958},
+       {0x5057, 0x795B},
+       {0x5058, 0x795C},
+       {0x5059, 0x7967},
+       {0x505A, 0x7969},
+       {0x505B, 0x796B},
+       {0x505C, 0x7972},
+       {0x505D, 0x7979},
+       {0x505E, 0x797B},
+       {0x505F, 0x797C},
+       {0x5060, 0x797E},
+       {0x5061, 0x798B},
+       {0x5062, 0x798C},
+       {0x5063, 0x7991},
+       {0x5064, 0x7993},
+       {0x5065, 0x7994},
+       {0x5066, 0x7995},
+       {0x5067, 0x7996},
+       {0x5068, 0x7998},
+       {0x5069, 0x799B},
+       {0x506A, 0x799C},
+       {0x506B, 0x79A1},
+       {0x506C, 0x79A8},
+       {0x506D, 0x79A9},
+       {0x506E, 0x79AB},
+       {0x506F, 0x79AF},
+       {0x5070, 0x79B1},
+       {0x5071, 0x79B4},
+       {0x5072, 0x79B8},
+       {0x5073, 0x79BB},
+       {0x5074, 0x79C2},
+       {0x5075, 0x79C4},
+       {0x5076, 0x79C7},
+       {0x5077, 0x79C8},
+       {0x5078, 0x79CA},
+       {0x5079, 0x79CF},
+       {0x507A, 0x79D4},
+       {0x507B, 0x79D6},
+       {0x507C, 0x79DA},
+       {0x507D, 0x79DD},
+       {0x507E, 0x79DE},
+       {0x5121, 0x79E0},
+       {0x5122, 0x79E2},
+       {0x5123, 0x79E5},
+       {0x5124, 0x79EA},
+       {0x5125, 0x79EB},
+       {0x5126, 0x79ED},
+       {0x5127, 0x79F1},
+       {0x5128, 0x79F8},
+       {0x5129, 0x79FC},
+       {0x512A, 0x7A02},
+       {0x512B, 0x7A03},
+       {0x512C, 0x7A07},
+       {0x512D, 0x7A09},
+       {0x512E, 0x7A0A},
+       {0x512F, 0x7A0C},
+       {0x5130, 0x7A11},
+       {0x5131, 0x7A15},
+       {0x5132, 0x7A1B},
+       {0x5133, 0x7A1E},
+       {0x5134, 0x7A21},
+       {0x5135, 0x7A27},
+       {0x5136, 0x7A2B},
+       {0x5137, 0x7A2D},
+       {0x5138, 0x7A2F},
+       {0x5139, 0x7A30},
+       {0x513A, 0x7A34},
+       {0x513B, 0x7A35},
+       {0x513C, 0x7A38},
+       {0x513D, 0x7A39},
+       {0x513E, 0x7A3A},
+       {0x513F, 0x7A44},
+       {0x5140, 0x7A45},
+       {0x5141, 0x7A47},
+       {0x5142, 0x7A48},
+       {0x5143, 0x7A4C},
+       {0x5144, 0x7A55},
+       {0x5145, 0x7A56},
+       {0x5146, 0x7A59},
+       {0x5147, 0x7A5C},
+       {0x5148, 0x7A5D},
+       {0x5149, 0x7A5F},
+       {0x514A, 0x7A60},
+       {0x514B, 0x7A65},
+       {0x514C, 0x7A67},
+       {0x514D, 0x7A6A},
+       {0x514E, 0x7A6D},
+       {0x514F, 0x7A75},
+       {0x5150, 0x7A78},
+       {0x5151, 0x7A7E},
+       {0x5152, 0x7A80},
+       {0x5153, 0x7A82},
+       {0x5154, 0x7A85},
+       {0x5155, 0x7A86},
+       {0x5156, 0x7A8A},
+       {0x5157, 0x7A8B},
+       {0x5158, 0x7A90},
+       {0x5159, 0x7A91},
+       {0x515A, 0x7A94},
+       {0x515B, 0x7A9E},
+       {0x515C, 0x7AA0},
+       {0x515D, 0x7AA3},
+       {0x515E, 0x7AAC},
+       {0x515F, 0x7AB3},
+       {0x5160, 0x7AB5},
+       {0x5161, 0x7AB9},
+       {0x5162, 0x7ABB},
+       {0x5163, 0x7ABC},
+       {0x5164, 0x7AC6},
+       {0x5165, 0x7AC9},
+       {0x5166, 0x7ACC},
+       {0x5167, 0x7ACE},
+       {0x5168, 0x7AD1},
+       {0x5169, 0x7ADB},
+       {0x516A, 0x7AE8},
+       {0x516B, 0x7AE9},
+       {0x516C, 0x7AEB},
+       {0x516D, 0x7AEC},
+       {0x516E, 0x7AF1},
+       {0x516F, 0x7AF4},
+       {0x5170, 0x7AFB},
+       {0x5171, 0x7AFD},
+       {0x5172, 0x7AFE},
+       {0x5173, 0x7B07},
+       {0x5174, 0x7B14},
+       {0x5175, 0x7B1F},
+       {0x5176, 0x7B23},
+       {0x5177, 0x7B27},
+       {0x5178, 0x7B29},
+       {0x5179, 0x7B2A},
+       {0x517A, 0x7B2B},
+       {0x517B, 0x7B2D},
+       {0x517C, 0x7B2E},
+       {0x517D, 0x7B2F},
+       {0x517E, 0x7B30},
+       {0x5221, 0x7B31},
+       {0x5222, 0x7B34},
+       {0x5223, 0x7B3D},
+       {0x5224, 0x7B3F},
+       {0x5225, 0x7B40},
+       {0x5226, 0x7B41},
+       {0x5227, 0x7B47},
+       {0x5228, 0x7B4E},
+       {0x5229, 0x7B55},
+       {0x522A, 0x7B60},
+       {0x522B, 0x7B64},
+       {0x522C, 0x7B66},
+       {0x522D, 0x7B69},
+       {0x522E, 0x7B6A},
+       {0x522F, 0x7B6D},
+       {0x5230, 0x7B6F},
+       {0x5231, 0x7B72},
+       {0x5232, 0x7B73},
+       {0x5233, 0x7B77},
+       {0x5234, 0x7B84},
+       {0x5235, 0x7B89},
+       {0x5236, 0x7B8E},
+       {0x5237, 0x7B90},
+       {0x5238, 0x7B91},
+       {0x5239, 0x7B96},
+       {0x523A, 0x7B9B},
+       {0x523B, 0x7B9E},
+       {0x523C, 0x7BA0},
+       {0x523D, 0x7BA5},
+       {0x523E, 0x7BAC},
+       {0x523F, 0x7BAF},
+       {0x5240, 0x7BB0},
+       {0x5241, 0x7BB2},
+       {0x5242, 0x7BB5},
+       {0x5243, 0x7BB6},
+       {0x5244, 0x7BBA},
+       {0x5245, 0x7BBB},
+       {0x5246, 0x7BBC},
+       {0x5247, 0x7BBD},
+       {0x5248, 0x7BC2},
+       {0x5249, 0x7BC5},
+       {0x524A, 0x7BC8},
+       {0x524B, 0x7BCA},
+       {0x524C, 0x7BD4},
+       {0x524D, 0x7BD6},
+       {0x524E, 0x7BD7},
+       {0x524F, 0x7BD9},
+       {0x5250, 0x7BDA},
+       {0x5251, 0x7BDB},
+       {0x5252, 0x7BE8},
+       {0x5253, 0x7BEA},
+       {0x5254, 0x7BF2},
+       {0x5255, 0x7BF4},
+       {0x5256, 0x7BF5},
+       {0x5257, 0x7BF8},
+       {0x5258, 0x7BF9},
+       {0x5259, 0x7BFA},
+       {0x525A, 0x7BFC},
+       {0x525B, 0x7BFE},
+       {0x525C, 0x7C01},
+       {0x525D, 0x7C02},
+       {0x525E, 0x7C03},
+       {0x525F, 0x7C04},
+       {0x5260, 0x7C06},
+       {0x5261, 0x7C09},
+       {0x5262, 0x7C0B},
+       {0x5263, 0x7C0C},
+       {0x5264, 0x7C0E},
+       {0x5265, 0x7C0F},
+       {0x5266, 0x7C19},
+       {0x5267, 0x7C1B},
+       {0x5268, 0x7C20},
+       {0x5269, 0x7C25},
+       {0x526A, 0x7C26},
+       {0x526B, 0x7C28},
+       {0x526C, 0x7C2C},
+       {0x526D, 0x7C31},
+       {0x526E, 0x7C33},
+       {0x526F, 0x7C34},
+       {0x5270, 0x7C36},
+       {0x5271, 0x7C39},
+       {0x5272, 0x7C3A},
+       {0x5273, 0x7C46},
+       {0x5274, 0x7C4A},
+       {0x5275, 0x7C55},
+       {0x5276, 0x7C51},
+       {0x5277, 0x7C52},
+       {0x5278, 0x7C53},
+       {0x5279, 0x7C59},
+       {0x527A, 0x7C5A},
+       {0x527B, 0x7C5B},
+       {0x527C, 0x7C5C},
+       {0x527D, 0x7C5D},
+       {0x527E, 0x7C5E},
+       {0x5321, 0x7C61},
+       {0x5322, 0x7C63},
+       {0x5323, 0x7C67},
+       {0x5324, 0x7C69},
+       {0x5325, 0x7C6D},
+       {0x5326, 0x7C6E},
+       {0x5327, 0x7C70},
+       {0x5328, 0x7C72},
+       {0x5329, 0x7C79},
+       {0x532A, 0x7C7C},
+       {0x532B, 0x7C7D},
+       {0x532C, 0x7C86},
+       {0x532D, 0x7C87},
+       {0x532E, 0x7C8F},
+       {0x532F, 0x7C94},
+       {0x5330, 0x7C9E},
+       {0x5331, 0x7CA0},
+       {0x5332, 0x7CA6},
+       {0x5333, 0x7CB0},
+       {0x5334, 0x7CB6},
+       {0x5335, 0x7CB7},
+       {0x5336, 0x7CBA},
+       {0x5337, 0x7CBB},
+       {0x5338, 0x7CBC},
+       {0x5339, 0x7CBF},
+       {0x533A, 0x7CC4},
+       {0x533B, 0x7CC7},
+       {0x533C, 0x7CC8},
+       {0x533D, 0x7CC9},
+       {0x533E, 0x7CCD},
+       {0x533F, 0x7CCF},
+       {0x5340, 0x7CD3},
+       {0x5341, 0x7CD4},
+       {0x5342, 0x7CD5},
+       {0x5343, 0x7CD7},
+       {0x5344, 0x7CD9},
+       {0x5345, 0x7CDA},
+       {0x5346, 0x7CDD},
+       {0x5347, 0x7CE6},
+       {0x5348, 0x7CE9},
+       {0x5349, 0x7CEB},
+       {0x534A, 0x7CF5},
+       {0x534B, 0x7D03},
+       {0x534C, 0x7D07},
+       {0x534D, 0x7D08},
+       {0x534E, 0x7D09},
+       {0x534F, 0x7D0F},
+       {0x5350, 0x7D11},
+       {0x5351, 0x7D12},
+       {0x5352, 0x7D13},
+       {0x5353, 0x7D16},
+       {0x5354, 0x7D1D},
+       {0x5355, 0x7D1E},
+       {0x5356, 0x7D23},
+       {0x5357, 0x7D26},
+       {0x5358, 0x7D2A},
+       {0x5359, 0x7D2D},
+       {0x535A, 0x7D31},
+       {0x535B, 0x7D3C},
+       {0x535C, 0x7D3D},
+       {0x535D, 0x7D3E},
+       {0x535E, 0x7D40},
+       {0x535F, 0x7D41},
+       {0x5360, 0x7D47},
+       {0x5361, 0x7D48},
+       {0x5362, 0x7D4D},
+       {0x5363, 0x7D51},
+       {0x5364, 0x7D53},
+       {0x5365, 0x7D57},
+       {0x5366, 0x7D59},
+       {0x5367, 0x7D5A},
+       {0x5368, 0x7D5C},
+       {0x5369, 0x7D5D},
+       {0x536A, 0x7D65},
+       {0x536B, 0x7D67},
+       {0x536C, 0x7D6A},
+       {0x536D, 0x7D70},
+       {0x536E, 0x7D78},
+       {0x536F, 0x7D7A},
+       {0x5370, 0x7D7B},
+       {0x5371, 0x7D7F},
+       {0x5372, 0x7D81},
+       {0x5373, 0x7D82},
+       {0x5374, 0x7D83},
+       {0x5375, 0x7D85},
+       {0x5376, 0x7D86},
+       {0x5377, 0x7D88},
+       {0x5378, 0x7D8B},
+       {0x5379, 0x7D8C},
+       {0x537A, 0x7D8D},
+       {0x537B, 0x7D91},
+       {0x537C, 0x7D96},
+       {0x537D, 0x7D97},
+       {0x537E, 0x7D9D},
+       {0x5421, 0x7D9E},
+       {0x5422, 0x7DA6},
+       {0x5423, 0x7DA7},
+       {0x5424, 0x7DAA},
+       {0x5425, 0x7DB3},
+       {0x5426, 0x7DB6},
+       {0x5427, 0x7DB7},
+       {0x5428, 0x7DB9},
+       {0x5429, 0x7DC2},
+       {0x542A, 0x7DC3},
+       {0x542B, 0x7DC4},
+       {0x542C, 0x7DC5},
+       {0x542D, 0x7DC6},
+       {0x542E, 0x7DCC},
+       {0x542F, 0x7DCD},
+       {0x5430, 0x7DCE},
+       {0x5431, 0x7DD7},
+       {0x5432, 0x7DD9},
+       {0x5433, 0x7E00},
+       {0x5434, 0x7DE2},
+       {0x5435, 0x7DE5},
+       {0x5436, 0x7DE6},
+       {0x5437, 0x7DEA},
+       {0x5438, 0x7DEB},
+       {0x5439, 0x7DED},
+       {0x543A, 0x7DF1},
+       {0x543B, 0x7DF5},
+       {0x543C, 0x7DF6},
+       {0x543D, 0x7DF9},
+       {0x543E, 0x7DFA},
+       {0x543F, 0x7E08},
+       {0x5440, 0x7E10},
+       {0x5441, 0x7E11},
+       {0x5442, 0x7E15},
+       {0x5443, 0x7E17},
+       {0x5444, 0x7E1C},
+       {0x5445, 0x7E1D},
+       {0x5446, 0x7E20},
+       {0x5447, 0x7E27},
+       {0x5448, 0x7E28},
+       {0x5449, 0x7E2C},
+       {0x544A, 0x7E2D},
+       {0x544B, 0x7E2F},
+       {0x544C, 0x7E33},
+       {0x544D, 0x7E36},
+       {0x544E, 0x7E3F},
+       {0x544F, 0x7E44},
+       {0x5450, 0x7E45},
+       {0x5451, 0x7E47},
+       {0x5452, 0x7E4E},
+       {0x5453, 0x7E50},
+       {0x5454, 0x7E52},
+       {0x5455, 0x7E58},
+       {0x5456, 0x7E5F},
+       {0x5457, 0x7E61},
+       {0x5458, 0x7E62},
+       {0x5459, 0x7E65},
+       {0x545A, 0x7E6B},
+       {0x545B, 0x7E6E},
+       {0x545C, 0x7E6F},
+       {0x545D, 0x7E73},
+       {0x545E, 0x7E78},
+       {0x545F, 0x7E7E},
+       {0x5460, 0x7E81},
+       {0x5461, 0x7E86},
+       {0x5462, 0x7E87},
+       {0x5463, 0x7E8A},
+       {0x5464, 0x7E8D},
+       {0x5465, 0x7E91},
+       {0x5466, 0x7E95},
+       {0x5467, 0x7E98},
+       {0x5468, 0x7E9A},
+       {0x5469, 0x7E9D},
+       {0x546A, 0x7E9E},
+       {0x546B, 0x7F3C},
+       {0x546C, 0x7F3B},
+       {0x546D, 0x7F3D},
+       {0x546E, 0x7F3E},
+       {0x546F, 0x7F3F},
+       {0x5470, 0x7F43},
+       {0x5471, 0x7F44},
+       {0x5472, 0x7F47},
+       {0x5473, 0x7F4F},
+       {0x5474, 0x7F52},
+       {0x5475, 0x7F53},
+       {0x5476, 0x7F5B},
+       {0x5477, 0x7F5C},
+       {0x5478, 0x7F5D},
+       {0x5479, 0x7F61},
+       {0x547A, 0x7F63},
+       {0x547B, 0x7F64},
+       {0x547C, 0x7F65},
+       {0x547D, 0x7F66},
+       {0x547E, 0x7F6D},
+       {0x5521, 0x7F71},
+       {0x5522, 0x7F7D},
+       {0x5523, 0x7F7E},
+       {0x5524, 0x7F7F},
+       {0x5525, 0x7F80},
+       {0x5526, 0x7F8B},
+       {0x5527, 0x7F8D},
+       {0x5528, 0x7F8F},
+       {0x5529, 0x7F90},
+       {0x552A, 0x7F91},
+       {0x552B, 0x7F96},
+       {0x552C, 0x7F97},
+       {0x552D, 0x7F9C},
+       {0x552E, 0x7FA1},
+       {0x552F, 0x7FA2},
+       {0x5530, 0x7FA6},
+       {0x5531, 0x7FAA},
+       {0x5532, 0x7FAD},
+       {0x5533, 0x7FB4},
+       {0x5534, 0x7FBC},
+       {0x5535, 0x7FBF},
+       {0x5536, 0x7FC0},
+       {0x5537, 0x7FC3},
+       {0x5538, 0x7FC8},
+       {0x5539, 0x7FCE},
+       {0x553A, 0x7FCF},
+       {0x553B, 0x7FDB},
+       {0x553C, 0x7FDF},
+       {0x553D, 0x7FE3},
+       {0x553E, 0x7FE5},
+       {0x553F, 0x7FE8},
+       {0x5540, 0x7FEC},
+       {0x5541, 0x7FEE},
+       {0x5542, 0x7FEF},
+       {0x5543, 0x7FF2},
+       {0x5544, 0x7FFA},
+       {0x5545, 0x7FFD},
+       {0x5546, 0x7FFE},
+       {0x5547, 0x7FFF},
+       {0x5548, 0x8007},
+       {0x5549, 0x8008},
+       {0x554A, 0x800A},
+       {0x554B, 0x800D},
+       {0x554C, 0x800E},
+       {0x554D, 0x800F},
+       {0x554E, 0x8011},
+       {0x554F, 0x8013},
+       {0x5550, 0x8014},
+       {0x5551, 0x8016},
+       {0x5552, 0x801D},
+       {0x5553, 0x801E},
+       {0x5554, 0x801F},
+       {0x5555, 0x8020},
+       {0x5556, 0x8024},
+       {0x5557, 0x8026},
+       {0x5558, 0x802C},
+       {0x5559, 0x802E},
+       {0x555A, 0x8030},
+       {0x555B, 0x8034},
+       {0x555C, 0x8035},
+       {0x555D, 0x8037},
+       {0x555E, 0x8039},
+       {0x555F, 0x803A},
+       {0x5560, 0x803C},
+       {0x5561, 0x803E},
+       {0x5562, 0x8040},
+       {0x5563, 0x8044},
+       {0x5564, 0x8060},
+       {0x5565, 0x8064},
+       {0x5566, 0x8066},
+       {0x5567, 0x806D},
+       {0x5568, 0x8071},
+       {0x5569, 0x8075},
+       {0x556A, 0x8081},
+       {0x556B, 0x8088},
+       {0x556C, 0x808E},
+       {0x556D, 0x809C},
+       {0x556E, 0x809E},
+       {0x556F, 0x80A6},
+       {0x5570, 0x80A7},
+       {0x5571, 0x80AB},
+       {0x5572, 0x80B8},
+       {0x5573, 0x80B9},
+       {0x5574, 0x80C8},
+       {0x5575, 0x80CD},
+       {0x5576, 0x80CF},
+       {0x5577, 0x80D2},
+       {0x5578, 0x80D4},
+       {0x5579, 0x80D5},
+       {0x557A, 0x80D7},
+       {0x557B, 0x80D8},
+       {0x557C, 0x80E0},
+       {0x557D, 0x80ED},
+       {0x557E, 0x80EE},
+       {0x5621, 0x80F0},
+       {0x5622, 0x80F2},
+       {0x5623, 0x80F3},
+       {0x5624, 0x80F6},
+       {0x5625, 0x80F9},
+       {0x5626, 0x80FA},
+       {0x5627, 0x80FE},
+       {0x5628, 0x8103},
+       {0x5629, 0x810B},
+       {0x562A, 0x8116},
+       {0x562B, 0x8117},
+       {0x562C, 0x8118},
+       {0x562D, 0x811C},
+       {0x562E, 0x811E},
+       {0x562F, 0x8120},
+       {0x5630, 0x8124},
+       {0x5631, 0x8127},
+       {0x5632, 0x812C},
+       {0x5633, 0x8130},
+       {0x5634, 0x8135},
+       {0x5635, 0x813A},
+       {0x5636, 0x813C},
+       {0x5637, 0x8145},
+       {0x5638, 0x8147},
+       {0x5639, 0x814A},
+       {0x563A, 0x814C},
+       {0x563B, 0x8152},
+       {0x563C, 0x8157},
+       {0x563D, 0x8160},
+       {0x563E, 0x8161},
+       {0x563F, 0x8167},
+       {0x5640, 0x8168},
+       {0x5641, 0x8169},
+       {0x5642, 0x816D},
+       {0x5643, 0x816F},
+       {0x5644, 0x8177},
+       {0x5645, 0x8181},
+       {0x5646, 0x8190},
+       {0x5647, 0x8184},
+       {0x5648, 0x8185},
+       {0x5649, 0x8186},
+       {0x564A, 0x818B},
+       {0x564B, 0x818E},
+       {0x564C, 0x8196},
+       {0x564D, 0x8198},
+       {0x564E, 0x819B},
+       {0x564F, 0x819E},
+       {0x5650, 0x81A2},
+       {0x5651, 0x81AE},
+       {0x5652, 0x81B2},
+       {0x5653, 0x81B4},
+       {0x5654, 0x81BB},
+       {0x5655, 0x81CB},
+       {0x5656, 0x81C3},
+       {0x5657, 0x81C5},
+       {0x5658, 0x81CA},
+       {0x5659, 0x81CE},
+       {0x565A, 0x81CF},
+       {0x565B, 0x81D5},
+       {0x565C, 0x81D7},
+       {0x565D, 0x81DB},
+       {0x565E, 0x81DD},
+       {0x565F, 0x81DE},
+       {0x5660, 0x81E1},
+       {0x5661, 0x81E4},
+       {0x5662, 0x81EB},
+       {0x5663, 0x81EC},
+       {0x5664, 0x81F0},
+       {0x5665, 0x81F1},
+       {0x5666, 0x81F2},
+       {0x5667, 0x81F5},
+       {0x5668, 0x81F6},
+       {0x5669, 0x81F8},
+       {0x566A, 0x81F9},
+       {0x566B, 0x81FD},
+       {0x566C, 0x81FF},
+       {0x566D, 0x8200},
+       {0x566E, 0x8203},
+       {0x566F, 0x820F},
+       {0x5670, 0x8213},
+       {0x5671, 0x8214},
+       {0x5672, 0x8219},
+       {0x5673, 0x821A},
+       {0x5674, 0x821D},
+       {0x5675, 0x8221},
+       {0x5676, 0x8222},
+       {0x5677, 0x8228},
+       {0x5678, 0x8232},
+       {0x5679, 0x8234},
+       {0x567A, 0x823A},
+       {0x567B, 0x8243},
+       {0x567C, 0x8244},
+       {0x567D, 0x8245},
+       {0x567E, 0x8246},
+       {0x5721, 0x824B},
+       {0x5722, 0x824E},
+       {0x5723, 0x824F},
+       {0x5724, 0x8251},
+       {0x5725, 0x8256},
+       {0x5726, 0x825C},
+       {0x5727, 0x8260},
+       {0x5728, 0x8263},
+       {0x5729, 0x8267},
+       {0x572A, 0x826D},
+       {0x572B, 0x8274},
+       {0x572C, 0x827B},
+       {0x572D, 0x827D},
+       {0x572E, 0x827F},
+       {0x572F, 0x8280},
+       {0x5730, 0x8281},
+       {0x5731, 0x8283},
+       {0x5732, 0x8284},
+       {0x5733, 0x8287},
+       {0x5734, 0x8289},
+       {0x5735, 0x828A},
+       {0x5736, 0x828E},
+       {0x5737, 0x8291},
+       {0x5738, 0x8294},
+       {0x5739, 0x8296},
+       {0x573A, 0x8298},
+       {0x573B, 0x829A},
+       {0x573C, 0x829B},
+       {0x573D, 0x82A0},
+       {0x573E, 0x82A1},
+       {0x573F, 0x82A3},
+       {0x5740, 0x82A4},
+       {0x5741, 0x82A7},
+       {0x5742, 0x82A8},
+       {0x5743, 0x82A9},
+       {0x5744, 0x82AA},
+       {0x5745, 0x82AE},
+       {0x5746, 0x82B0},
+       {0x5747, 0x82B2},
+       {0x5748, 0x82B4},
+       {0x5749, 0x82B7},
+       {0x574A, 0x82BA},
+       {0x574B, 0x82BC},
+       {0x574C, 0x82BE},
+       {0x574D, 0x82BF},
+       {0x574E, 0x82C6},
+       {0x574F, 0x82D0},
+       {0x5750, 0x82D5},
+       {0x5751, 0x82DA},
+       {0x5752, 0x82E0},
+       {0x5753, 0x82E2},
+       {0x5754, 0x82E4},
+       {0x5755, 0x82E8},
+       {0x5756, 0x82EA},
+       {0x5757, 0x82ED},
+       {0x5758, 0x82EF},
+       {0x5759, 0x82F6},
+       {0x575A, 0x82F7},
+       {0x575B, 0x82FD},
+       {0x575C, 0x82FE},
+       {0x575D, 0x8300},
+       {0x575E, 0x8301},
+       {0x575F, 0x8307},
+       {0x5760, 0x8308},
+       {0x5761, 0x830A},
+       {0x5762, 0x830B},
+       {0x5763, 0x8354},
+       {0x5764, 0x831B},
+       {0x5765, 0x831D},
+       {0x5766, 0x831E},
+       {0x5767, 0x831F},
+       {0x5768, 0x8321},
+       {0x5769, 0x8322},
+       {0x576A, 0x832C},
+       {0x576B, 0x832D},
+       {0x576C, 0x832E},
+       {0x576D, 0x8330},
+       {0x576E, 0x8333},
+       {0x576F, 0x8337},
+       {0x5770, 0x833A},
+       {0x5771, 0x833C},
+       {0x5772, 0x833D},
+       {0x5773, 0x8342},
+       {0x5774, 0x8343},
+       {0x5775, 0x8344},
+       {0x5776, 0x8347},
+       {0x5777, 0x834D},
+       {0x5778, 0x834E},
+       {0x5779, 0x8351},
+       {0x577A, 0x8355},
+       {0x577B, 0x8356},
+       {0x577C, 0x8357},
+       {0x577D, 0x8370},
+       {0x577E, 0x8378},
+       {0x5821, 0x837D},
+       {0x5822, 0x837F},
+       {0x5823, 0x8380},
+       {0x5824, 0x8382},
+       {0x5825, 0x8384},
+       {0x5826, 0x8386},
+       {0x5827, 0x838D},
+       {0x5828, 0x8392},
+       {0x5829, 0x8394},
+       {0x582A, 0x8395},
+       {0x582B, 0x8398},
+       {0x582C, 0x8399},
+       {0x582D, 0x839B},
+       {0x582E, 0x839C},
+       {0x582F, 0x839D},
+       {0x5830, 0x83A6},
+       {0x5831, 0x83A7},
+       {0x5832, 0x83A9},
+       {0x5833, 0x83AC},
+       {0x5834, 0x83BE},
+       {0x5835, 0x83BF},
+       {0x5836, 0x83C0},
+       {0x5837, 0x83C7},
+       {0x5838, 0x83C9},
+       {0x5839, 0x83CF},
+       {0x583A, 0x83D0},
+       {0x583B, 0x83D1},
+       {0x583C, 0x83D4},
+       {0x583D, 0x83DD},
+       {0x583E, 0x8353},
+       {0x583F, 0x83E8},
+       {0x5840, 0x83EA},
+       {0x5841, 0x83F6},
+       {0x5842, 0x83F8},
+       {0x5843, 0x83F9},
+       {0x5844, 0x83FC},
+       {0x5845, 0x8401},
+       {0x5846, 0x8406},
+       {0x5847, 0x840A},
+       {0x5848, 0x840F},
+       {0x5849, 0x8411},
+       {0x584A, 0x8415},
+       {0x584B, 0x8419},
+       {0x584C, 0x83AD},
+       {0x584D, 0x842F},
+       {0x584E, 0x8439},
+       {0x584F, 0x8445},
+       {0x5850, 0x8447},
+       {0x5851, 0x8448},
+       {0x5852, 0x844A},
+       {0x5853, 0x844D},
+       {0x5854, 0x844F},
+       {0x5855, 0x8451},
+       {0x5856, 0x8452},
+       {0x5857, 0x8456},
+       {0x5858, 0x8458},
+       {0x5859, 0x8459},
+       {0x585A, 0x845A},
+       {0x585B, 0x845C},
+       {0x585C, 0x8460},
+       {0x585D, 0x8464},
+       {0x585E, 0x8465},
+       {0x585F, 0x8467},
+       {0x5860, 0x846A},
+       {0x5861, 0x8470},
+       {0x5862, 0x8473},
+       {0x5863, 0x8474},
+       {0x5864, 0x8476},
+       {0x5865, 0x8478},
+       {0x5866, 0x847C},
+       {0x5867, 0x847D},
+       {0x5868, 0x8481},
+       {0x5869, 0x8485},
+       {0x586A, 0x8492},
+       {0x586B, 0x8493},
+       {0x586C, 0x8495},
+       {0x586D, 0x849E},
+       {0x586E, 0x84A6},
+       {0x586F, 0x84A8},
+       {0x5870, 0x84A9},
+       {0x5871, 0x84AA},
+       {0x5872, 0x84AF},
+       {0x5873, 0x84B1},
+       {0x5874, 0x84B4},
+       {0x5875, 0x84BA},
+       {0x5876, 0x84BD},
+       {0x5877, 0x84BE},
+       {0x5878, 0x84C0},
+       {0x5879, 0x84C2},
+       {0x587A, 0x84C7},
+       {0x587B, 0x84C8},
+       {0x587C, 0x84CC},
+       {0x587D, 0x84CF},
+       {0x587E, 0x84D3},
+       {0x5921, 0x84DC},
+       {0x5922, 0x84E7},
+       {0x5923, 0x84EA},
+       {0x5924, 0x84EF},
+       {0x5925, 0x84F0},
+       {0x5926, 0x84F1},
+       {0x5927, 0x84F2},
+       {0x5928, 0x84F7},
+       {0x5929, 0x8532},
+       {0x592A, 0x84FA},
+       {0x592B, 0x84FB},
+       {0x592C, 0x84FD},
+       {0x592D, 0x8502},
+       {0x592E, 0x8503},
+       {0x592F, 0x8507},
+       {0x5930, 0x850C},
+       {0x5931, 0x850E},
+       {0x5932, 0x8510},
+       {0x5933, 0x851C},
+       {0x5934, 0x851E},
+       {0x5935, 0x8522},
+       {0x5936, 0x8523},
+       {0x5937, 0x8524},
+       {0x5938, 0x8525},
+       {0x5939, 0x8527},
+       {0x593A, 0x852A},
+       {0x593B, 0x852B},
+       {0x593C, 0x852F},
+       {0x593D, 0x8533},
+       {0x593E, 0x8534},
+       {0x593F, 0x8536},
+       {0x5940, 0x853F},
+       {0x5941, 0x8546},
+       {0x5942, 0x854F},
+       {0x5943, 0x8550},
+       {0x5944, 0x8551},
+       {0x5945, 0x8552},
+       {0x5946, 0x8553},
+       {0x5947, 0x8556},
+       {0x5948, 0x8559},
+       {0x5949, 0x855C},
+       {0x594A, 0x855D},
+       {0x594B, 0x855E},
+       {0x594C, 0x855F},
+       {0x594D, 0x8560},
+       {0x594E, 0x8561},
+       {0x594F, 0x8562},
+       {0x5950, 0x8564},
+       {0x5951, 0x856B},
+       {0x5952, 0x856F},
+       {0x5953, 0x8579},
+       {0x5954, 0x857A},
+       {0x5955, 0x857B},
+       {0x5956, 0x857D},
+       {0x5957, 0x857F},
+       {0x5958, 0x8581},
+       {0x5959, 0x8585},
+       {0x595A, 0x8586},
+       {0x595B, 0x8589},
+       {0x595C, 0x858B},
+       {0x595D, 0x858C},
+       {0x595E, 0x858F},
+       {0x595F, 0x8593},
+       {0x5960, 0x8598},
+       {0x5961, 0x859D},
+       {0x5962, 0x859F},
+       {0x5963, 0x85A0},
+       {0x5964, 0x85A2},
+       {0x5965, 0x85A5},
+       {0x5966, 0x85A7},
+       {0x5967, 0x85B4},
+       {0x5968, 0x85B6},
+       {0x5969, 0x85B7},
+       {0x596A, 0x85B8},
+       {0x596B, 0x85BC},
+       {0x596C, 0x85BD},
+       {0x596D, 0x85BE},
+       {0x596E, 0x85BF},
+       {0x596F, 0x85C2},
+       {0x5970, 0x85C7},
+       {0x5971, 0x85CA},
+       {0x5972, 0x85CB},
+       {0x5973, 0x85CE},
+       {0x5974, 0x85AD},
+       {0x5975, 0x85D8},
+       {0x5976, 0x85DA},
+       {0x5977, 0x85DF},
+       {0x5978, 0x85E0},
+       {0x5979, 0x85E6},
+       {0x597A, 0x85E8},
+       {0x597B, 0x85ED},
+       {0x597C, 0x85F3},
+       {0x597D, 0x85F6},
+       {0x597E, 0x85FC},
+       {0x5A21, 0x85FF},
+       {0x5A22, 0x8600},
+       {0x5A23, 0x8604},
+       {0x5A24, 0x8605},
+       {0x5A25, 0x860D},
+       {0x5A26, 0x860E},
+       {0x5A27, 0x8610},
+       {0x5A28, 0x8611},
+       {0x5A29, 0x8612},
+       {0x5A2A, 0x8618},
+       {0x5A2B, 0x8619},
+       {0x5A2C, 0x861B},
+       {0x5A2D, 0x861E},
+       {0x5A2E, 0x8621},
+       {0x5A2F, 0x8627},
+       {0x5A30, 0x8629},
+       {0x5A31, 0x8636},
+       {0x5A32, 0x8638},
+       {0x5A33, 0x863A},
+       {0x5A34, 0x863C},
+       {0x5A35, 0x863D},
+       {0x5A36, 0x8640},
+       {0x5A37, 0x8642},
+       {0x5A38, 0x8646},
+       {0x5A39, 0x8652},
+       {0x5A3A, 0x8653},
+       {0x5A3B, 0x8656},
+       {0x5A3C, 0x8657},
+       {0x5A3D, 0x8658},
+       {0x5A3E, 0x8659},
+       {0x5A3F, 0x865D},
+       {0x5A40, 0x8660},
+       {0x5A41, 0x8661},
+       {0x5A42, 0x8662},
+       {0x5A43, 0x8663},
+       {0x5A44, 0x8664},
+       {0x5A45, 0x8669},
+       {0x5A46, 0x866C},
+       {0x5A47, 0x866F},
+       {0x5A48, 0x8675},
+       {0x5A49, 0x8676},
+       {0x5A4A, 0x8677},
+       {0x5A4B, 0x867A},
+       {0x5A4C, 0x868D},
+       {0x5A4D, 0x8691},
+       {0x5A4E, 0x8696},
+       {0x5A4F, 0x8698},
+       {0x5A50, 0x869A},
+       {0x5A51, 0x869C},
+       {0x5A52, 0x86A1},
+       {0x5A53, 0x86A6},
+       {0x5A54, 0x86A7},
+       {0x5A55, 0x86A8},
+       {0x5A56, 0x86AD},
+       {0x5A57, 0x86B1},
+       {0x5A58, 0x86B3},
+       {0x5A59, 0x86B4},
+       {0x5A5A, 0x86B5},
+       {0x5A5B, 0x86B7},
+       {0x5A5C, 0x86B8},
+       {0x5A5D, 0x86B9},
+       {0x5A5E, 0x86BF},
+       {0x5A5F, 0x86C0},
+       {0x5A60, 0x86C1},
+       {0x5A61, 0x86C3},
+       {0x5A62, 0x86C5},
+       {0x5A63, 0x86D1},
+       {0x5A64, 0x86D2},
+       {0x5A65, 0x86D5},
+       {0x5A66, 0x86D7},
+       {0x5A67, 0x86DA},
+       {0x5A68, 0x86DC},
+       {0x5A69, 0x86E0},
+       {0x5A6A, 0x86E3},
+       {0x5A6B, 0x86E5},
+       {0x5A6C, 0x86E7},
+       {0x5A6D, 0x8688},
+       {0x5A6E, 0x86FA},
+       {0x5A6F, 0x86FC},
+       {0x5A70, 0x86FD},
+       {0x5A71, 0x8704},
+       {0x5A72, 0x8705},
+       {0x5A73, 0x8707},
+       {0x5A74, 0x870B},
+       {0x5A75, 0x870E},
+       {0x5A76, 0x870F},
+       {0x5A77, 0x8710},
+       {0x5A78, 0x8713},
+       {0x5A79, 0x8714},
+       {0x5A7A, 0x8719},
+       {0x5A7B, 0x871E},
+       {0x5A7C, 0x871F},
+       {0x5A7D, 0x8721},
+       {0x5A7E, 0x8723},
+       {0x5B21, 0x8728},
+       {0x5B22, 0x872E},
+       {0x5B23, 0x872F},
+       {0x5B24, 0x8731},
+       {0x5B25, 0x8732},
+       {0x5B26, 0x8739},
+       {0x5B27, 0x873A},
+       {0x5B28, 0x873C},
+       {0x5B29, 0x873D},
+       {0x5B2A, 0x873E},
+       {0x5B2B, 0x8740},
+       {0x5B2C, 0x8743},
+       {0x5B2D, 0x8745},
+       {0x5B2E, 0x874D},
+       {0x5B2F, 0x8758},
+       {0x5B30, 0x875D},
+       {0x5B31, 0x8761},
+       {0x5B32, 0x8764},
+       {0x5B33, 0x8765},
+       {0x5B34, 0x876F},
+       {0x5B35, 0x8771},
+       {0x5B36, 0x8772},
+       {0x5B37, 0x877B},
+       {0x5B38, 0x8783},
+       {0x5B39, 0x8784},
+       {0x5B3A, 0x8785},
+       {0x5B3B, 0x8786},
+       {0x5B3C, 0x8787},
+       {0x5B3D, 0x8788},
+       {0x5B3E, 0x8789},
+       {0x5B3F, 0x878B},
+       {0x5B40, 0x878C},
+       {0x5B41, 0x8790},
+       {0x5B42, 0x8793},
+       {0x5B43, 0x8795},
+       {0x5B44, 0x8797},
+       {0x5B45, 0x8798},
+       {0x5B46, 0x8799},
+       {0x5B47, 0x879E},
+       {0x5B48, 0x87A0},
+       {0x5B49, 0x87A3},
+       {0x5B4A, 0x87A7},
+       {0x5B4B, 0x87AC},
+       {0x5B4C, 0x87AD},
+       {0x5B4D, 0x87AE},
+       {0x5B4E, 0x87B1},
+       {0x5B4F, 0x87B5},
+       {0x5B50, 0x87BE},
+       {0x5B51, 0x87BF},
+       {0x5B52, 0x87C1},
+       {0x5B53, 0x87C8},
+       {0x5B54, 0x87C9},
+       {0x5B55, 0x87CA},
+       {0x5B56, 0x87CE},
+       {0x5B57, 0x87D5},
+       {0x5B58, 0x87D6},
+       {0x5B59, 0x87D9},
+       {0x5B5A, 0x87DA},
+       {0x5B5B, 0x87DC},
+       {0x5B5C, 0x87DF},
+       {0x5B5D, 0x87E2},
+       {0x5B5E, 0x87E3},
+       {0x5B5F, 0x87E4},
+       {0x5B60, 0x87EA},
+       {0x5B61, 0x87EB},
+       {0x5B62, 0x87ED},
+       {0x5B63, 0x87F1},
+       {0x5B64, 0x87F3},
+       {0x5B65, 0x87F8},
+       {0x5B66, 0x87FA},
+       {0x5B67, 0x87FF},
+       {0x5B68, 0x8801},
+       {0x5B69, 0x8803},
+       {0x5B6A, 0x8806},
+       {0x5B6B, 0x8809},
+       {0x5B6C, 0x880A},
+       {0x5B6D, 0x880B},
+       {0x5B6E, 0x8810},
+       {0x5B6F, 0x8819},
+       {0x5B70, 0x8812},
+       {0x5B71, 0x8813},
+       {0x5B72, 0x8814},
+       {0x5B73, 0x8818},
+       {0x5B74, 0x881A},
+       {0x5B75, 0x881B},
+       {0x5B76, 0x881C},
+       {0x5B77, 0x881E},
+       {0x5B78, 0x881F},
+       {0x5B79, 0x8828},
+       {0x5B7A, 0x882D},
+       {0x5B7B, 0x882E},
+       {0x5B7C, 0x8830},
+       {0x5B7D, 0x8832},
+       {0x5B7E, 0x8835},
+       {0x5C21, 0x883A},
+       {0x5C22, 0x883C},
+       {0x5C23, 0x8841},
+       {0x5C24, 0x8843},
+       {0x5C25, 0x8845},
+       {0x5C26, 0x8848},
+       {0x5C27, 0x8849},
+       {0x5C28, 0x884A},
+       {0x5C29, 0x884B},
+       {0x5C2A, 0x884E},
+       {0x5C2B, 0x8851},
+       {0x5C2C, 0x8855},
+       {0x5C2D, 0x8856},
+       {0x5C2E, 0x8858},
+       {0x5C2F, 0x885A},
+       {0x5C30, 0x885C},
+       {0x5C31, 0x885F},
+       {0x5C32, 0x8860},
+       {0x5C33, 0x8864},
+       {0x5C34, 0x8869},
+       {0x5C35, 0x8871},
+       {0x5C36, 0x8879},
+       {0x5C37, 0x887B},
+       {0x5C38, 0x8880},
+       {0x5C39, 0x8898},
+       {0x5C3A, 0x889A},
+       {0x5C3B, 0x889B},
+       {0x5C3C, 0x889C},
+       {0x5C3D, 0x889F},
+       {0x5C3E, 0x88A0},
+       {0x5C3F, 0x88A8},
+       {0x5C40, 0x88AA},
+       {0x5C41, 0x88BA},
+       {0x5C42, 0x88BD},
+       {0x5C43, 0x88BE},
+       {0x5C44, 0x88C0},
+       {0x5C45, 0x88CA},
+       {0x5C46, 0x88CB},
+       {0x5C47, 0x88CC},
+       {0x5C48, 0x88CD},
+       {0x5C49, 0x88CE},
+       {0x5C4A, 0x88D1},
+       {0x5C4B, 0x88D2},
+       {0x5C4C, 0x88D3},
+       {0x5C4D, 0x88DB},
+       {0x5C4E, 0x88DE},
+       {0x5C4F, 0x88E7},
+       {0x5C50, 0x88EF},
+       {0x5C51, 0x88F0},
+       {0x5C52, 0x88F1},
+       {0x5C53, 0x88F5},
+       {0x5C54, 0x88F7},
+       {0x5C55, 0x8901},
+       {0x5C56, 0x8906},
+       {0x5C57, 0x890D},
+       {0x5C58, 0x890E},
+       {0x5C59, 0x890F},
+       {0x5C5A, 0x8915},
+       {0x5C5B, 0x8916},
+       {0x5C5C, 0x8918},
+       {0x5C5D, 0x8919},
+       {0x5C5E, 0x891A},
+       {0x5C5F, 0x891C},
+       {0x5C60, 0x8920},
+       {0x5C61, 0x8926},
+       {0x5C62, 0x8927},
+       {0x5C63, 0x8928},
+       {0x5C64, 0x8930},
+       {0x5C65, 0x8931},
+       {0x5C66, 0x8932},
+       {0x5C67, 0x8935},
+       {0x5C68, 0x8939},
+       {0x5C69, 0x893A},
+       {0x5C6A, 0x893E},
+       {0x5C6B, 0x8940},
+       {0x5C6C, 0x8942},
+       {0x5C6D, 0x8945},
+       {0x5C6E, 0x8946},
+       {0x5C6F, 0x8949},
+       {0x5C70, 0x894F},
+       {0x5C71, 0x8952},
+       {0x5C72, 0x8957},
+       {0x5C73, 0x895A},
+       {0x5C74, 0x895B},
+       {0x5C75, 0x895C},
+       {0x5C76, 0x8961},
+       {0x5C77, 0x8962},
+       {0x5C78, 0x8963},
+       {0x5C79, 0x896B},
+       {0x5C7A, 0x896E},
+       {0x5C7B, 0x8970},
+       {0x5C7C, 0x8973},
+       {0x5C7D, 0x8975},
+       {0x5C7E, 0x897A},
+       {0x5D21, 0x897B},
+       {0x5D22, 0x897C},
+       {0x5D23, 0x897D},
+       {0x5D24, 0x8989},
+       {0x5D25, 0x898D},
+       {0x5D26, 0x8990},
+       {0x5D27, 0x8994},
+       {0x5D28, 0x8995},
+       {0x5D29, 0x899B},
+       {0x5D2A, 0x899C},
+       {0x5D2B, 0x899F},
+       {0x5D2C, 0x89A0},
+       {0x5D2D, 0x89A5},
+       {0x5D2E, 0x89B0},
+       {0x5D2F, 0x89B4},
+       {0x5D30, 0x89B5},
+       {0x5D31, 0x89B6},
+       {0x5D32, 0x89B7},
+       {0x5D33, 0x89BC},
+       {0x5D34, 0x89D4},
+       {0x5D35, 0x89D5},
+       {0x5D36, 0x89D6},
+       {0x5D37, 0x89D7},
+       {0x5D38, 0x89D8},
+       {0x5D39, 0x89E5},
+       {0x5D3A, 0x89E9},
+       {0x5D3B, 0x89EB},
+       {0x5D3C, 0x89ED},
+       {0x5D3D, 0x89F1},
+       {0x5D3E, 0x89F3},
+       {0x5D3F, 0x89F6},
+       {0x5D40, 0x89F9},
+       {0x5D41, 0x89FD},
+       {0x5D42, 0x89FF},
+       {0x5D43, 0x8A04},
+       {0x5D44, 0x8A05},
+       {0x5D45, 0x8A07},
+       {0x5D46, 0x8A0F},
+       {0x5D47, 0x8A11},
+       {0x5D48, 0x8A12},
+       {0x5D49, 0x8A14},
+       {0x5D4A, 0x8A15},
+       {0x5D4B, 0x8A1E},
+       {0x5D4C, 0x8A20},
+       {0x5D4D, 0x8A22},
+       {0x5D4E, 0x8A24},
+       {0x5D4F, 0x8A26},
+       {0x5D50, 0x8A2B},
+       {0x5D51, 0x8A2C},
+       {0x5D52, 0x8A2F},
+       {0x5D53, 0x8A35},
+       {0x5D54, 0x8A37},
+       {0x5D55, 0x8A3D},
+       {0x5D56, 0x8A3E},
+       {0x5D57, 0x8A40},
+       {0x5D58, 0x8A43},
+       {0x5D59, 0x8A45},
+       {0x5D5A, 0x8A47},
+       {0x5D5B, 0x8A49},
+       {0x5D5C, 0x8A4D},
+       {0x5D5D, 0x8A4E},
+       {0x5D5E, 0x8A53},
+       {0x5D5F, 0x8A56},
+       {0x5D60, 0x8A57},
+       {0x5D61, 0x8A58},
+       {0x5D62, 0x8A5C},
+       {0x5D63, 0x8A5D},
+       {0x5D64, 0x8A61},
+       {0x5D65, 0x8A65},
+       {0x5D66, 0x8A67},
+       {0x5D67, 0x8A75},
+       {0x5D68, 0x8A76},
+       {0x5D69, 0x8A77},
+       {0x5D6A, 0x8A79},
+       {0x5D6B, 0x8A7A},
+       {0x5D6C, 0x8A7B},
+       {0x5D6D, 0x8A7E},
+       {0x5D6E, 0x8A7F},
+       {0x5D6F, 0x8A80},
+       {0x5D70, 0x8A83},
+       {0x5D71, 0x8A86},
+       {0x5D72, 0x8A8B},
+       {0x5D73, 0x8A8F},
+       {0x5D74, 0x8A90},
+       {0x5D75, 0x8A92},
+       {0x5D76, 0x8A96},
+       {0x5D77, 0x8A97},
+       {0x5D78, 0x8A99},
+       {0x5D79, 0x8A9F},
+       {0x5D7A, 0x8AA7},
+       {0x5D7B, 0x8AA9},
+       {0x5D7C, 0x8AAE},
+       {0x5D7D, 0x8AAF},
+       {0x5D7E, 0x8AB3},
+       {0x5E21, 0x8AB6},
+       {0x5E22, 0x8AB7},
+       {0x5E23, 0x8ABB},
+       {0x5E24, 0x8ABE},
+       {0x5E25, 0x8AC3},
+       {0x5E26, 0x8AC6},
+       {0x5E27, 0x8AC8},
+       {0x5E28, 0x8AC9},
+       {0x5E29, 0x8ACA},
+       {0x5E2A, 0x8AD1},
+       {0x5E2B, 0x8AD3},
+       {0x5E2C, 0x8AD4},
+       {0x5E2D, 0x8AD5},
+       {0x5E2E, 0x8AD7},
+       {0x5E2F, 0x8ADD},
+       {0x5E30, 0x8ADF},
+       {0x5E31, 0x8AEC},
+       {0x5E32, 0x8AF0},
+       {0x5E33, 0x8AF4},
+       {0x5E34, 0x8AF5},
+       {0x5E35, 0x8AF6},
+       {0x5E36, 0x8AFC},
+       {0x5E37, 0x8AFF},
+       {0x5E38, 0x8B05},
+       {0x5E39, 0x8B06},
+       {0x5E3A, 0x8B0B},
+       {0x5E3B, 0x8B11},
+       {0x5E3C, 0x8B1C},
+       {0x5E3D, 0x8B1E},
+       {0x5E3E, 0x8B1F},
+       {0x5E3F, 0x8B0A},
+       {0x5E40, 0x8B2D},
+       {0x5E41, 0x8B30},
+       {0x5E42, 0x8B37},
+       {0x5E43, 0x8B3C},
+       {0x5E44, 0x8B42},
+       {0x5E45, 0x8B43},
+       {0x5E46, 0x8B44},
+       {0x5E47, 0x8B45},
+       {0x5E48, 0x8B46},
+       {0x5E49, 0x8B48},
+       {0x5E4A, 0x8B52},
+       {0x5E4B, 0x8B53},
+       {0x5E4C, 0x8B54},
+       {0x5E4D, 0x8B59},
+       {0x5E4E, 0x8B4D},
+       {0x5E4F, 0x8B5E},
+       {0x5E50, 0x8B63},
+       {0x5E51, 0x8B6D},
+       {0x5E52, 0x8B76},
+       {0x5E53, 0x8B78},
+       {0x5E54, 0x8B79},
+       {0x5E55, 0x8B7C},
+       {0x5E56, 0x8B7E},
+       {0x5E57, 0x8B81},
+       {0x5E58, 0x8B84},
+       {0x5E59, 0x8B85},
+       {0x5E5A, 0x8B8B},
+       {0x5E5B, 0x8B8D},
+       {0x5E5C, 0x8B8F},
+       {0x5E5D, 0x8B94},
+       {0x5E5E, 0x8B95},
+       {0x5E5F, 0x8B9C},
+       {0x5E60, 0x8B9E},
+       {0x5E61, 0x8B9F},
+       {0x5E62, 0x8C38},
+       {0x5E63, 0x8C39},
+       {0x5E64, 0x8C3D},
+       {0x5E65, 0x8C3E},
+       {0x5E66, 0x8C45},
+       {0x5E67, 0x8C47},
+       {0x5E68, 0x8C49},
+       {0x5E69, 0x8C4B},
+       {0x5E6A, 0x8C4F},
+       {0x5E6B, 0x8C51},
+       {0x5E6C, 0x8C53},
+       {0x5E6D, 0x8C54},
+       {0x5E6E, 0x8C57},
+       {0x5E6F, 0x8C58},
+       {0x5E70, 0x8C5B},
+       {0x5E71, 0x8C5D},
+       {0x5E72, 0x8C59},
+       {0x5E73, 0x8C63},
+       {0x5E74, 0x8C64},
+       {0x5E75, 0x8C66},
+       {0x5E76, 0x8C68},
+       {0x5E77, 0x8C69},
+       {0x5E78, 0x8C6D},
+       {0x5E79, 0x8C73},
+       {0x5E7A, 0x8C75},
+       {0x5E7B, 0x8C76},
+       {0x5E7C, 0x8C7B},
+       {0x5E7D, 0x8C7E},
+       {0x5E7E, 0x8C86},
+       {0x5F21, 0x8C87},
+       {0x5F22, 0x8C8B},
+       {0x5F23, 0x8C90},
+       {0x5F24, 0x8C92},
+       {0x5F25, 0x8C93},
+       {0x5F26, 0x8C99},
+       {0x5F27, 0x8C9B},
+       {0x5F28, 0x8C9C},
+       {0x5F29, 0x8CA4},
+       {0x5F2A, 0x8CB9},
+       {0x5F2B, 0x8CBA},
+       {0x5F2C, 0x8CC5},
+       {0x5F2D, 0x8CC6},
+       {0x5F2E, 0x8CC9},
+       {0x5F2F, 0x8CCB},
+       {0x5F30, 0x8CCF},
+       {0x5F31, 0x8CD6},
+       {0x5F32, 0x8CD5},
+       {0x5F33, 0x8CD9},
+       {0x5F34, 0x8CDD},
+       {0x5F35, 0x8CE1},
+       {0x5F36, 0x8CE8},
+       {0x5F37, 0x8CEC},
+       {0x5F38, 0x8CEF},
+       {0x5F39, 0x8CF0},
+       {0x5F3A, 0x8CF2},
+       {0x5F3B, 0x8CF5},
+       {0x5F3C, 0x8CF7},
+       {0x5F3D, 0x8CF8},
+       {0x5F3E, 0x8CFE},
+       {0x5F3F, 0x8CFF},
+       {0x5F40, 0x8D01},
+       {0x5F41, 0x8D03},
+       {0x5F42, 0x8D09},
+       {0x5F43, 0x8D12},
+       {0x5F44, 0x8D17},
+       {0x5F45, 0x8D1B},
+       {0x5F46, 0x8D65},
+       {0x5F47, 0x8D69},
+       {0x5F48, 0x8D6C},
+       {0x5F49, 0x8D6E},
+       {0x5F4A, 0x8D7F},
+       {0x5F4B, 0x8D82},
+       {0x5F4C, 0x8D84},
+       {0x5F4D, 0x8D88},
+       {0x5F4E, 0x8D8D},
+       {0x5F4F, 0x8D90},
+       {0x5F50, 0x8D91},
+       {0x5F51, 0x8D95},
+       {0x5F52, 0x8D9E},
+       {0x5F53, 0x8D9F},
+       {0x5F54, 0x8DA0},
+       {0x5F55, 0x8DA6},
+       {0x5F56, 0x8DAB},
+       {0x5F57, 0x8DAC},
+       {0x5F58, 0x8DAF},
+       {0x5F59, 0x8DB2},
+       {0x5F5A, 0x8DB5},
+       {0x5F5B, 0x8DB7},
+       {0x5F5C, 0x8DB9},
+       {0x5F5D, 0x8DBB},
+       {0x5F5E, 0x8DC0},
+       {0x5F5F, 0x8DC5},
+       {0x5F60, 0x8DC6},
+       {0x5F61, 0x8DC7},
+       {0x5F62, 0x8DC8},
+       {0x5F63, 0x8DCA},
+       {0x5F64, 0x8DCE},
+       {0x5F65, 0x8DD1},
+       {0x5F66, 0x8DD4},
+       {0x5F67, 0x8DD5},
+       {0x5F68, 0x8DD7},
+       {0x5F69, 0x8DD9},
+       {0x5F6A, 0x8DE4},
+       {0x5F6B, 0x8DE5},
+       {0x5F6C, 0x8DE7},
+       {0x5F6D, 0x8DEC},
+       {0x5F6E, 0x8DF0},
+       {0x5F6F, 0x8DBC},
+       {0x5F70, 0x8DF1},
+       {0x5F71, 0x8DF2},
+       {0x5F72, 0x8DF4},
+       {0x5F73, 0x8DFD},
+       {0x5F74, 0x8E01},
+       {0x5F75, 0x8E04},
+       {0x5F76, 0x8E05},
+       {0x5F77, 0x8E06},
+       {0x5F78, 0x8E0B},
+       {0x5F79, 0x8E11},
+       {0x5F7A, 0x8E14},
+       {0x5F7B, 0x8E16},
+       {0x5F7C, 0x8E20},
+       {0x5F7D, 0x8E21},
+       {0x5F7E, 0x8E22},
+       {0x6021, 0x8E23},
+       {0x6022, 0x8E26},
+       {0x6023, 0x8E27},
+       {0x6024, 0x8E31},
+       {0x6025, 0x8E33},
+       {0x6026, 0x8E36},
+       {0x6027, 0x8E37},
+       {0x6028, 0x8E38},
+       {0x6029, 0x8E39},
+       {0x602A, 0x8E3D},
+       {0x602B, 0x8E40},
+       {0x602C, 0x8E41},
+       {0x602D, 0x8E4B},
+       {0x602E, 0x8E4D},
+       {0x602F, 0x8E4E},
+       {0x6030, 0x8E4F},
+       {0x6031, 0x8E54},
+       {0x6032, 0x8E5B},
+       {0x6033, 0x8E5C},
+       {0x6034, 0x8E5D},
+       {0x6035, 0x8E5E},
+       {0x6036, 0x8E61},
+       {0x6037, 0x8E62},
+       {0x6038, 0x8E69},
+       {0x6039, 0x8E6C},
+       {0x603A, 0x8E6D},
+       {0x603B, 0x8E6F},
+       {0x603C, 0x8E70},
+       {0x603D, 0x8E71},
+       {0x603E, 0x8E79},
+       {0x603F, 0x8E7A},
+       {0x6040, 0x8E7B},
+       {0x6041, 0x8E82},
+       {0x6042, 0x8E83},
+       {0x6043, 0x8E89},
+       {0x6044, 0x8E90},
+       {0x6045, 0x8E92},
+       {0x6046, 0x8E95},
+       {0x6047, 0x8E9A},
+       {0x6048, 0x8E9B},
+       {0x6049, 0x8E9D},
+       {0x604A, 0x8E9E},
+       {0x604B, 0x8EA2},
+       {0x604C, 0x8EA7},
+       {0x604D, 0x8EA9},
+       {0x604E, 0x8EAD},
+       {0x604F, 0x8EAE},
+       {0x6050, 0x8EB3},
+       {0x6051, 0x8EB5},
+       {0x6052, 0x8EBA},
+       {0x6053, 0x8EBB},
+       {0x6054, 0x8EC0},
+       {0x6055, 0x8EC1},
+       {0x6056, 0x8EC3},
+       {0x6057, 0x8EC4},
+       {0x6058, 0x8EC7},
+       {0x6059, 0x8ECF},
+       {0x605A, 0x8ED1},
+       {0x605B, 0x8ED4},
+       {0x605C, 0x8EDC},
+       {0x605D, 0x8EE8},
+       {0x605E, 0x8EEE},
+       {0x605F, 0x8EF0},
+       {0x6060, 0x8EF1},
+       {0x6061, 0x8EF7},
+       {0x6062, 0x8EF9},
+       {0x6063, 0x8EFA},
+       {0x6064, 0x8EED},
+       {0x6065, 0x8F00},
+       {0x6066, 0x8F02},
+       {0x6067, 0x8F07},
+       {0x6068, 0x8F08},
+       {0x6069, 0x8F0F},
+       {0x606A, 0x8F10},
+       {0x606B, 0x8F16},
+       {0x606C, 0x8F17},
+       {0x606D, 0x8F18},
+       {0x606E, 0x8F1E},
+       {0x606F, 0x8F20},
+       {0x6070, 0x8F21},
+       {0x6071, 0x8F23},
+       {0x6072, 0x8F25},
+       {0x6073, 0x8F27},
+       {0x6074, 0x8F28},
+       {0x6075, 0x8F2C},
+       {0x6076, 0x8F2D},
+       {0x6077, 0x8F2E},
+       {0x6078, 0x8F34},
+       {0x6079, 0x8F35},
+       {0x607A, 0x8F36},
+       {0x607B, 0x8F37},
+       {0x607C, 0x8F3A},
+       {0x607D, 0x8F40},
+       {0x607E, 0x8F41},
+       {0x6121, 0x8F43},
+       {0x6122, 0x8F47},
+       {0x6123, 0x8F4F},
+       {0x6124, 0x8F51},
+       {0x6125, 0x8F52},
+       {0x6126, 0x8F53},
+       {0x6127, 0x8F54},
+       {0x6128, 0x8F55},
+       {0x6129, 0x8F58},
+       {0x612A, 0x8F5D},
+       {0x612B, 0x8F5E},
+       {0x612C, 0x8F65},
+       {0x612D, 0x8F9D},
+       {0x612E, 0x8FA0},
+       {0x612F, 0x8FA1},
+       {0x6130, 0x8FA4},
+       {0x6131, 0x8FA5},
+       {0x6132, 0x8FA6},
+       {0x6133, 0x8FB5},
+       {0x6134, 0x8FB6},
+       {0x6135, 0x8FB8},
+       {0x6136, 0x8FBE},
+       {0x6137, 0x8FC0},
+       {0x6138, 0x8FC1},
+       {0x6139, 0x8FC6},
+       {0x613A, 0x8FCA},
+       {0x613B, 0x8FCB},
+       {0x613C, 0x8FCD},
+       {0x613D, 0x8FD0},
+       {0x613E, 0x8FD2},
+       {0x613F, 0x8FD3},
+       {0x6140, 0x8FD5},
+       {0x6141, 0x8FE0},
+       {0x6142, 0x8FE3},
+       {0x6143, 0x8FE4},
+       {0x6144, 0x8FE8},
+       {0x6145, 0x8FEE},
+       {0x6146, 0x8FF1},
+       {0x6147, 0x8FF5},
+       {0x6148, 0x8FF6},
+       {0x6149, 0x8FFB},
+       {0x614A, 0x8FFE},
+       {0x614B, 0x9002},
+       {0x614C, 0x9004},
+       {0x614D, 0x9008},
+       {0x614E, 0x900C},
+       {0x614F, 0x9018},
+       {0x6150, 0x901B},
+       {0x6151, 0x9028},
+       {0x6152, 0x9029},
+       {0x6153, 0x902F},
+       {0x6154, 0x902A},
+       {0x6155, 0x902C},
+       {0x6156, 0x902D},
+       {0x6157, 0x9033},
+       {0x6158, 0x9034},
+       {0x6159, 0x9037},
+       {0x615A, 0x903F},
+       {0x615B, 0x9043},
+       {0x615C, 0x9044},
+       {0x615D, 0x904C},
+       {0x615E, 0x905B},
+       {0x615F, 0x905D},
+       {0x6160, 0x9062},
+       {0x6161, 0x9066},
+       {0x6162, 0x9067},
+       {0x6163, 0x906C},
+       {0x6164, 0x9070},
+       {0x6165, 0x9074},
+       {0x6166, 0x9079},
+       {0x6167, 0x9085},
+       {0x6168, 0x9088},
+       {0x6169, 0x908B},
+       {0x616A, 0x908C},
+       {0x616B, 0x908E},
+       {0x616C, 0x9090},
+       {0x616D, 0x9095},
+       {0x616E, 0x9097},
+       {0x616F, 0x9098},
+       {0x6170, 0x9099},
+       {0x6171, 0x909B},
+       {0x6172, 0x90A0},
+       {0x6173, 0x90A1},
+       {0x6174, 0x90A2},
+       {0x6175, 0x90A5},
+       {0x6176, 0x90B0},
+       {0x6177, 0x90B2},
+       {0x6178, 0x90B3},
+       {0x6179, 0x90B4},
+       {0x617A, 0x90B6},
+       {0x617B, 0x90BD},
+       {0x617C, 0x90CC},
+       {0x617D, 0x90BE},
+       {0x617E, 0x90C3},
+       {0x6221, 0x90C4},
+       {0x6222, 0x90C5},
+       {0x6223, 0x90C7},
+       {0x6224, 0x90C8},
+       {0x6225, 0x90D5},
+       {0x6226, 0x90D7},
+       {0x6227, 0x90D8},
+       {0x6228, 0x90D9},
+       {0x6229, 0x90DC},
+       {0x622A, 0x90DD},
+       {0x622B, 0x90DF},
+       {0x622C, 0x90E5},
+       {0x622D, 0x90D2},
+       {0x622E, 0x90F6},
+       {0x622F, 0x90EB},
+       {0x6230, 0x90EF},
+       {0x6231, 0x90F0},
+       {0x6232, 0x90F4},
+       {0x6233, 0x90FE},
+       {0x6234, 0x90FF},
+       {0x6235, 0x9100},
+       {0x6236, 0x9104},
+       {0x6237, 0x9105},
+       {0x6238, 0x9106},
+       {0x6239, 0x9108},
+       {0x623A, 0x910D},
+       {0x623B, 0x9110},
+       {0x623C, 0x9114},
+       {0x623D, 0x9116},
+       {0x623E, 0x9117},
+       {0x623F, 0x9118},
+       {0x6240, 0x911A},
+       {0x6241, 0x911C},
+       {0x6242, 0x911E},
+       {0x6243, 0x9120},
+       {0x6244, 0x9125},
+       {0x6245, 0x9122},
+       {0x6246, 0x9123},
+       {0x6247, 0x9127},
+       {0x6248, 0x9129},
+       {0x6249, 0x912E},
+       {0x624A, 0x912F},
+       {0x624B, 0x9131},
+       {0x624C, 0x9134},
+       {0x624D, 0x9136},
+       {0x624E, 0x9137},
+       {0x624F, 0x9139},
+       {0x6250, 0x913A},
+       {0x6251, 0x913C},
+       {0x6252, 0x913D},
+       {0x6253, 0x9143},
+       {0x6254, 0x9147},
+       {0x6255, 0x9148},
+       {0x6256, 0x914F},
+       {0x6257, 0x9153},
+       {0x6258, 0x9157},
+       {0x6259, 0x9159},
+       {0x625A, 0x915A},
+       {0x625B, 0x915B},
+       {0x625C, 0x9161},
+       {0x625D, 0x9164},
+       {0x625E, 0x9167},
+       {0x625F, 0x916D},
+       {0x6260, 0x9174},
+       {0x6261, 0x9179},
+       {0x6262, 0x917A},
+       {0x6263, 0x917B},
+       {0x6264, 0x9181},
+       {0x6265, 0x9183},
+       {0x6266, 0x9185},
+       {0x6267, 0x9186},
+       {0x6268, 0x918A},
+       {0x6269, 0x918E},
+       {0x626A, 0x9191},
+       {0x626B, 0x9193},
+       {0x626C, 0x9194},
+       {0x626D, 0x9195},
+       {0x626E, 0x9198},
+       {0x626F, 0x919E},
+       {0x6270, 0x91A1},
+       {0x6271, 0x91A6},
+       {0x6272, 0x91A8},
+       {0x6273, 0x91AC},
+       {0x6274, 0x91AD},
+       {0x6275, 0x91AE},
+       {0x6276, 0x91B0},
+       {0x6277, 0x91B1},
+       {0x6278, 0x91B2},
+       {0x6279, 0x91B3},
+       {0x627A, 0x91B6},
+       {0x627B, 0x91BB},
+       {0x627C, 0x91BC},
+       {0x627D, 0x91BD},
+       {0x627E, 0x91BF},
+       {0x6321, 0x91C2},
+       {0x6322, 0x91C3},
+       {0x6323, 0x91C5},
+       {0x6324, 0x91D3},
+       {0x6325, 0x91D4},
+       {0x6326, 0x91D7},
+       {0x6327, 0x91D9},
+       {0x6328, 0x91DA},
+       {0x6329, 0x91DE},
+       {0x632A, 0x91E4},
+       {0x632B, 0x91E5},
+       {0x632C, 0x91E9},
+       {0x632D, 0x91EA},
+       {0x632E, 0x91EC},
+       {0x632F, 0x91ED},
+       {0x6330, 0x91EE},
+       {0x6331, 0x91EF},
+       {0x6332, 0x91F0},
+       {0x6333, 0x91F1},
+       {0x6334, 0x91F7},
+       {0x6335, 0x91F9},
+       {0x6336, 0x91FB},
+       {0x6337, 0x91FD},
+       {0x6338, 0x9200},
+       {0x6339, 0x9201},
+       {0x633A, 0x9204},
+       {0x633B, 0x9205},
+       {0x633C, 0x9206},
+       {0x633D, 0x9207},
+       {0x633E, 0x9209},
+       {0x633F, 0x920A},
+       {0x6340, 0x920C},
+       {0x6341, 0x9210},
+       {0x6342, 0x9212},
+       {0x6343, 0x9213},
+       {0x6344, 0x9216},
+       {0x6345, 0x9218},
+       {0x6346, 0x921C},
+       {0x6347, 0x921D},
+       {0x6348, 0x9223},
+       {0x6349, 0x9224},
+       {0x634A, 0x9225},
+       {0x634B, 0x9226},
+       {0x634C, 0x9228},
+       {0x634D, 0x922E},
+       {0x634E, 0x922F},
+       {0x634F, 0x9230},
+       {0x6350, 0x9233},
+       {0x6351, 0x9235},
+       {0x6352, 0x9236},
+       {0x6353, 0x9238},
+       {0x6354, 0x9239},
+       {0x6355, 0x923A},
+       {0x6356, 0x923C},
+       {0x6357, 0x923E},
+       {0x6358, 0x9240},
+       {0x6359, 0x9242},
+       {0x635A, 0x9243},
+       {0x635B, 0x9246},
+       {0x635C, 0x9247},
+       {0x635D, 0x924A},
+       {0x635E, 0x924D},
+       {0x635F, 0x924E},
+       {0x6360, 0x924F},
+       {0x6361, 0x9251},
+       {0x6362, 0x9258},
+       {0x6363, 0x9259},
+       {0x6364, 0x925C},
+       {0x6365, 0x925D},
+       {0x6366, 0x9260},
+       {0x6367, 0x9261},
+       {0x6368, 0x9265},
+       {0x6369, 0x9267},
+       {0x636A, 0x9268},
+       {0x636B, 0x9269},
+       {0x636C, 0x926E},
+       {0x636D, 0x926F},
+       {0x636E, 0x9270},
+       {0x636F, 0x9275},
+       {0x6370, 0x9276},
+       {0x6371, 0x9277},
+       {0x6372, 0x9278},
+       {0x6373, 0x9279},
+       {0x6374, 0x927B},
+       {0x6375, 0x927C},
+       {0x6376, 0x927D},
+       {0x6377, 0x927F},
+       {0x6378, 0x9288},
+       {0x6379, 0x9289},
+       {0x637A, 0x928A},
+       {0x637B, 0x928D},
+       {0x637C, 0x928E},
+       {0x637D, 0x9292},
+       {0x637E, 0x9297},
+       {0x6421, 0x9299},
+       {0x6422, 0x929F},
+       {0x6423, 0x92A0},
+       {0x6424, 0x92A4},
+       {0x6425, 0x92A5},
+       {0x6426, 0x92A7},
+       {0x6427, 0x92A8},
+       {0x6428, 0x92AB},
+       {0x6429, 0x92AF},
+       {0x642A, 0x92B2},
+       {0x642B, 0x92B6},
+       {0x642C, 0x92B8},
+       {0x642D, 0x92BA},
+       {0x642E, 0x92BB},
+       {0x642F, 0x92BC},
+       {0x6430, 0x92BD},
+       {0x6431, 0x92BF},
+       {0x6432, 0x92C0},
+       {0x6433, 0x92C1},
+       {0x6434, 0x92C2},
+       {0x6435, 0x92C3},
+       {0x6436, 0x92C5},
+       {0x6437, 0x92C6},
+       {0x6438, 0x92C7},
+       {0x6439, 0x92C8},
+       {0x643A, 0x92CB},
+       {0x643B, 0x92CC},
+       {0x643C, 0x92CD},
+       {0x643D, 0x92CE},
+       {0x643E, 0x92D0},
+       {0x643F, 0x92D3},
+       {0x6440, 0x92D5},
+       {0x6441, 0x92D7},
+       {0x6442, 0x92D8},
+       {0x6443, 0x92D9},
+       {0x6444, 0x92DC},
+       {0x6445, 0x92DD},
+       {0x6446, 0x92DF},
+       {0x6447, 0x92E0},
+       {0x6448, 0x92E1},
+       {0x6449, 0x92E3},
+       {0x644A, 0x92E5},
+       {0x644B, 0x92E7},
+       {0x644C, 0x92E8},
+       {0x644D, 0x92EC},
+       {0x644E, 0x92EE},
+       {0x644F, 0x92F0},
+       {0x6450, 0x92F9},
+       {0x6451, 0x92FB},
+       {0x6452, 0x92FF},
+       {0x6453, 0x9300},
+       {0x6454, 0x9302},
+       {0x6455, 0x9308},
+       {0x6456, 0x930D},
+       {0x6457, 0x9311},
+       {0x6458, 0x9314},
+       {0x6459, 0x9315},
+       {0x645A, 0x931C},
+       {0x645B, 0x931D},
+       {0x645C, 0x931E},
+       {0x645D, 0x931F},
+       {0x645E, 0x9321},
+       {0x645F, 0x9324},
+       {0x6460, 0x9325},
+       {0x6461, 0x9327},
+       {0x6462, 0x9329},
+       {0x6463, 0x932A},
+       {0x6464, 0x9333},
+       {0x6465, 0x9334},
+       {0x6466, 0x9336},
+       {0x6467, 0x9337},
+       {0x6468, 0x9347},
+       {0x6469, 0x9348},
+       {0x646A, 0x9349},
+       {0x646B, 0x9350},
+       {0x646C, 0x9351},
+       {0x646D, 0x9352},
+       {0x646E, 0x9355},
+       {0x646F, 0x9357},
+       {0x6470, 0x9358},
+       {0x6471, 0x935A},
+       {0x6472, 0x935E},
+       {0x6473, 0x9364},
+       {0x6474, 0x9365},
+       {0x6475, 0x9367},
+       {0x6476, 0x9369},
+       {0x6477, 0x936A},
+       {0x6478, 0x936D},
+       {0x6479, 0x936F},
+       {0x647A, 0x9370},
+       {0x647B, 0x9371},
+       {0x647C, 0x9373},
+       {0x647D, 0x9374},
+       {0x647E, 0x9376},
+       {0x6521, 0x937A},
+       {0x6522, 0x937D},
+       {0x6523, 0x937F},
+       {0x6524, 0x9380},
+       {0x6525, 0x9381},
+       {0x6526, 0x9382},
+       {0x6527, 0x9388},
+       {0x6528, 0x938A},
+       {0x6529, 0x938B},
+       {0x652A, 0x938D},
+       {0x652B, 0x938F},
+       {0x652C, 0x9392},
+       {0x652D, 0x9395},
+       {0x652E, 0x9398},
+       {0x652F, 0x939B},
+       {0x6530, 0x939E},
+       {0x6531, 0x93A1},
+       {0x6532, 0x93A3},
+       {0x6533, 0x93A4},
+       {0x6534, 0x93A6},
+       {0x6535, 0x93A8},
+       {0x6536, 0x93AB},
+       {0x6537, 0x93B4},
+       {0x6538, 0x93B5},
+       {0x6539, 0x93B6},
+       {0x653A, 0x93BA},
+       {0x653B, 0x93A9},
+       {0x653C, 0x93C1},
+       {0x653D, 0x93C4},
+       {0x653E, 0x93C5},
+       {0x653F, 0x93C6},
+       {0x6540, 0x93C7},
+       {0x6541, 0x93C9},
+       {0x6542, 0x93CA},
+       {0x6543, 0x93CB},
+       {0x6544, 0x93CC},
+       {0x6545, 0x93CD},
+       {0x6546, 0x93D3},
+       {0x6547, 0x93D9},
+       {0x6548, 0x93DC},
+       {0x6549, 0x93DE},
+       {0x654A, 0x93DF},
+       {0x654B, 0x93E2},
+       {0x654C, 0x93E6},
+       {0x654D, 0x93E7},
+       {0x654E, 0x93F9},
+       {0x654F, 0x93F7},
+       {0x6550, 0x93F8},
+       {0x6551, 0x93FA},
+       {0x6552, 0x93FB},
+       {0x6553, 0x93FD},
+       {0x6554, 0x9401},
+       {0x6555, 0x9402},
+       {0x6556, 0x9404},
+       {0x6557, 0x9408},
+       {0x6558, 0x9409},
+       {0x6559, 0x940D},
+       {0x655A, 0x940E},
+       {0x655B, 0x940F},
+       {0x655C, 0x9415},
+       {0x655D, 0x9416},
+       {0x655E, 0x9417},
+       {0x655F, 0x941F},
+       {0x6560, 0x942E},
+       {0x6561, 0x942F},
+       {0x6562, 0x9431},
+       {0x6563, 0x9432},
+       {0x6564, 0x9433},
+       {0x6565, 0x9434},
+       {0x6566, 0x943B},
+       {0x6567, 0x943F},
+       {0x6568, 0x943D},
+       {0x6569, 0x9443},
+       {0x656A, 0x9445},
+       {0x656B, 0x9448},
+       {0x656C, 0x944A},
+       {0x656D, 0x944C},
+       {0x656E, 0x9455},
+       {0x656F, 0x9459},
+       {0x6570, 0x945C},
+       {0x6571, 0x945F},
+       {0x6572, 0x9461},
+       {0x6573, 0x9463},
+       {0x6574, 0x9468},
+       {0x6575, 0x946B},
+       {0x6576, 0x946D},
+       {0x6577, 0x946E},
+       {0x6578, 0x946F},
+       {0x6579, 0x9471},
+       {0x657A, 0x9472},
+       {0x657B, 0x9484},
+       {0x657C, 0x9483},
+       {0x657D, 0x9578},
+       {0x657E, 0x9579},
+       {0x6621, 0x957E},
+       {0x6622, 0x9584},
+       {0x6623, 0x9588},
+       {0x6624, 0x958C},
+       {0x6625, 0x958D},
+       {0x6626, 0x958E},
+       {0x6627, 0x959D},
+       {0x6628, 0x959E},
+       {0x6629, 0x959F},
+       {0x662A, 0x95A1},
+       {0x662B, 0x95A6},
+       {0x662C, 0x95A9},
+       {0x662D, 0x95AB},
+       {0x662E, 0x95AC},
+       {0x662F, 0x95B4},
+       {0x6630, 0x95B6},
+       {0x6631, 0x95BA},
+       {0x6632, 0x95BD},
+       {0x6633, 0x95BF},
+       {0x6634, 0x95C6},
+       {0x6635, 0x95C8},
+       {0x6636, 0x95C9},
+       {0x6637, 0x95CB},
+       {0x6638, 0x95D0},
+       {0x6639, 0x95D1},
+       {0x663A, 0x95D2},
+       {0x663B, 0x95D3},
+       {0x663C, 0x95D9},
+       {0x663D, 0x95DA},
+       {0x663E, 0x95DD},
+       {0x663F, 0x95DE},
+       {0x6640, 0x95DF},
+       {0x6641, 0x95E0},
+       {0x6642, 0x95E4},
+       {0x6643, 0x95E6},
+       {0x6644, 0x961D},
+       {0x6645, 0x961E},
+       {0x6646, 0x9622},
+       {0x6647, 0x9624},
+       {0x6648, 0x9625},
+       {0x6649, 0x9626},
+       {0x664A, 0x962C},
+       {0x664B, 0x9631},
+       {0x664C, 0x9633},
+       {0x664D, 0x9637},
+       {0x664E, 0x9638},
+       {0x664F, 0x9639},
+       {0x6650, 0x963A},
+       {0x6651, 0x963C},
+       {0x6652, 0x963D},
+       {0x6653, 0x9641},
+       {0x6654, 0x9652},
+       {0x6655, 0x9654},
+       {0x6656, 0x9656},
+       {0x6657, 0x9657},
+       {0x6658, 0x9658},
+       {0x6659, 0x9661},
+       {0x665A, 0x966E},
+       {0x665B, 0x9674},
+       {0x665C, 0x967B},
+       {0x665D, 0x967C},
+       {0x665E, 0x967E},
+       {0x665F, 0x967F},
+       {0x6660, 0x9681},
+       {0x6661, 0x9682},
+       {0x6662, 0x9683},
+       {0x6663, 0x9684},
+       {0x6664, 0x9689},
+       {0x6665, 0x9691},
+       {0x6666, 0x9696},
+       {0x6667, 0x969A},
+       {0x6668, 0x969D},
+       {0x6669, 0x969F},
+       {0x666A, 0x96A4},
+       {0x666B, 0x96A5},
+       {0x666C, 0x96A6},
+       {0x666D, 0x96A9},
+       {0x666E, 0x96AE},
+       {0x666F, 0x96AF},
+       {0x6670, 0x96B3},
+       {0x6671, 0x96BA},
+       {0x6672, 0x96CA},
+       {0x6673, 0x96D2},
+       {0x6674, 0x5DB2},
+       {0x6675, 0x96D8},
+       {0x6676, 0x96DA},
+       {0x6677, 0x96DD},
+       {0x6678, 0x96DE},
+       {0x6679, 0x96DF},
+       {0x667A, 0x96E9},
+       {0x667B, 0x96EF},
+       {0x667C, 0x96F1},
+       {0x667D, 0x96FA},
+       {0x667E, 0x9702},
+       {0x6721, 0x9703},
+       {0x6722, 0x9705},
+       {0x6723, 0x9709},
+       {0x6724, 0x971A},
+       {0x6725, 0x971B},
+       {0x6726, 0x971D},
+       {0x6727, 0x9721},
+       {0x6728, 0x9722},
+       {0x6729, 0x9723},
+       {0x672A, 0x9728},
+       {0x672B, 0x9731},
+       {0x672C, 0x9733},
+       {0x672D, 0x9741},
+       {0x672E, 0x9743},
+       {0x672F, 0x974A},
+       {0x6730, 0x974E},
+       {0x6731, 0x974F},
+       {0x6732, 0x9755},
+       {0x6733, 0x9757},
+       {0x6734, 0x9758},
+       {0x6735, 0x975A},
+       {0x6736, 0x975B},
+       {0x6737, 0x9763},
+       {0x6738, 0x9767},
+       {0x6739, 0x976A},
+       {0x673A, 0x976E},
+       {0x673B, 0x9773},
+       {0x673C, 0x9776},
+       {0x673D, 0x9777},
+       {0x673E, 0x9778},
+       {0x673F, 0x977B},
+       {0x6740, 0x977D},
+       {0x6741, 0x977F},
+       {0x6742, 0x9780},
+       {0x6743, 0x9789},
+       {0x6744, 0x9795},
+       {0x6745, 0x9796},
+       {0x6746, 0x9797},
+       {0x6747, 0x9799},
+       {0x6748, 0x979A},
+       {0x6749, 0x979E},
+       {0x674A, 0x979F},
+       {0x674B, 0x97A2},
+       {0x674C, 0x97AC},
+       {0x674D, 0x97AE},
+       {0x674E, 0x97B1},
+       {0x674F, 0x97B2},
+       {0x6750, 0x97B5},
+       {0x6751, 0x97B6},
+       {0x6752, 0x97B8},
+       {0x6753, 0x97B9},
+       {0x6754, 0x97BA},
+       {0x6755, 0x97BC},
+       {0x6756, 0x97BE},
+       {0x6757, 0x97BF},
+       {0x6758, 0x97C1},
+       {0x6759, 0x97C4},
+       {0x675A, 0x97C5},
+       {0x675B, 0x97C7},
+       {0x675C, 0x97C9},
+       {0x675D, 0x97CA},
+       {0x675E, 0x97CC},
+       {0x675F, 0x97CD},
+       {0x6760, 0x97CE},
+       {0x6761, 0x97D0},
+       {0x6762, 0x97D1},
+       {0x6763, 0x97D4},
+       {0x6764, 0x97D7},
+       {0x6765, 0x97D8},
+       {0x6766, 0x97D9},
+       {0x6767, 0x97DD},
+       {0x6768, 0x97DE},
+       {0x6769, 0x97E0},
+       {0x676A, 0x97DB},
+       {0x676B, 0x97E1},
+       {0x676C, 0x97E4},
+       {0x676D, 0x97EF},
+       {0x676E, 0x97F1},
+       {0x676F, 0x97F4},
+       {0x6770, 0x97F7},
+       {0x6771, 0x97F8},
+       {0x6772, 0x97FA},
+       {0x6773, 0x9807},
+       {0x6774, 0x980A},
+       {0x6775, 0x9819},
+       {0x6776, 0x980D},
+       {0x6777, 0x980E},
+       {0x6778, 0x9814},
+       {0x6779, 0x9816},
+       {0x677A, 0x981C},
+       {0x677B, 0x981E},
+       {0x677C, 0x9820},
+       {0x677D, 0x9823},
+       {0x677E, 0x9826},
+       {0x6821, 0x982B},
+       {0x6822, 0x982E},
+       {0x6823, 0x982F},
+       {0x6824, 0x9830},
+       {0x6825, 0x9832},
+       {0x6826, 0x9833},
+       {0x6827, 0x9835},
+       {0x6828, 0x9825},
+       {0x6829, 0x983E},
+       {0x682A, 0x9844},
+       {0x682B, 0x9847},
+       {0x682C, 0x984A},
+       {0x682D, 0x9851},
+       {0x682E, 0x9852},
+       {0x682F, 0x9853},
+       {0x6830, 0x9856},
+       {0x6831, 0x9857},
+       {0x6832, 0x9859},
+       {0x6833, 0x985A},
+       {0x6834, 0x9862},
+       {0x6835, 0x9863},
+       {0x6836, 0x9865},
+       {0x6837, 0x9866},
+       {0x6838, 0x986A},
+       {0x6839, 0x986C},
+       {0x683A, 0x98AB},
+       {0x683B, 0x98AD},
+       {0x683C, 0x98AE},
+       {0x683D, 0x98B0},
+       {0x683E, 0x98B4},
+       {0x683F, 0x98B7},
+       {0x6840, 0x98B8},
+       {0x6841, 0x98BA},
+       {0x6842, 0x98BB},
+       {0x6843, 0x98BF},
+       {0x6844, 0x98C2},
+       {0x6845, 0x98C5},
+       {0x6846, 0x98C8},
+       {0x6847, 0x98CC},
+       {0x6848, 0x98E1},
+       {0x6849, 0x98E3},
+       {0x684A, 0x98E5},
+       {0x684B, 0x98E6},
+       {0x684C, 0x98E7},
+       {0x684D, 0x98EA},
+       {0x684E, 0x98F3},
+       {0x684F, 0x98F6},
+       {0x6850, 0x9902},
+       {0x6851, 0x9907},
+       {0x6852, 0x9908},
+       {0x6853, 0x9911},
+       {0x6854, 0x9915},
+       {0x6855, 0x9916},
+       {0x6856, 0x9917},
+       {0x6857, 0x991A},
+       {0x6858, 0x991B},
+       {0x6859, 0x991C},
+       {0x685A, 0x991F},
+       {0x685B, 0x9922},
+       {0x685C, 0x9926},
+       {0x685D, 0x9927},
+       {0x685E, 0x992B},
+       {0x685F, 0x9931},
+       {0x6860, 0x9932},
+       {0x6861, 0x9933},
+       {0x6862, 0x9934},
+       {0x6863, 0x9935},
+       {0x6864, 0x9939},
+       {0x6865, 0x993A},
+       {0x6866, 0x993B},
+       {0x6867, 0x993C},
+       {0x6868, 0x9940},
+       {0x6869, 0x9941},
+       {0x686A, 0x9946},
+       {0x686B, 0x9947},
+       {0x686C, 0x9948},
+       {0x686D, 0x994D},
+       {0x686E, 0x994E},
+       {0x686F, 0x9954},
+       {0x6870, 0x9958},
+       {0x6871, 0x9959},
+       {0x6872, 0x995B},
+       {0x6873, 0x995C},
+       {0x6874, 0x995E},
+       {0x6875, 0x995F},
+       {0x6876, 0x9960},
+       {0x6877, 0x999B},
+       {0x6878, 0x999D},
+       {0x6879, 0x999F},
+       {0x687A, 0x99A6},
+       {0x687B, 0x99B0},
+       {0x687C, 0x99B1},
+       {0x687D, 0x99B2},
+       {0x687E, 0x99B5},
+       {0x6921, 0x99B9},
+       {0x6922, 0x99BA},
+       {0x6923, 0x99BD},
+       {0x6924, 0x99BF},
+       {0x6925, 0x99C3},
+       {0x6926, 0x99C9},
+       {0x6927, 0x99D3},
+       {0x6928, 0x99D4},
+       {0x6929, 0x99D9},
+       {0x692A, 0x99DA},
+       {0x692B, 0x99DC},
+       {0x692C, 0x99DE},
+       {0x692D, 0x99E7},
+       {0x692E, 0x99EA},
+       {0x692F, 0x99EB},
+       {0x6930, 0x99EC},
+       {0x6931, 0x99F0},
+       {0x6932, 0x99F4},
+       {0x6933, 0x99F5},
+       {0x6934, 0x99F9},
+       {0x6935, 0x99FD},
+       {0x6936, 0x99FE},
+       {0x6937, 0x9A02},
+       {0x6938, 0x9A03},
+       {0x6939, 0x9A04},
+       {0x693A, 0x9A0B},
+       {0x693B, 0x9A0C},
+       {0x693C, 0x9A10},
+       {0x693D, 0x9A11},
+       {0x693E, 0x9A16},
+       {0x693F, 0x9A1E},
+       {0x6940, 0x9A20},
+       {0x6941, 0x9A22},
+       {0x6942, 0x9A23},
+       {0x6943, 0x9A24},
+       {0x6944, 0x9A27},
+       {0x6945, 0x9A2D},
+       {0x6946, 0x9A2E},
+       {0x6947, 0x9A33},
+       {0x6948, 0x9A35},
+       {0x6949, 0x9A36},
+       {0x694A, 0x9A38},
+       {0x694B, 0x9A47},
+       {0x694C, 0x9A41},
+       {0x694D, 0x9A44},
+       {0x694E, 0x9A4A},
+       {0x694F, 0x9A4B},
+       {0x6950, 0x9A4C},
+       {0x6951, 0x9A4E},
+       {0x6952, 0x9A51},
+       {0x6953, 0x9A54},
+       {0x6954, 0x9A56},
+       {0x6955, 0x9A5D},
+       {0x6956, 0x9AAA},
+       {0x6957, 0x9AAC},
+       {0x6958, 0x9AAE},
+       {0x6959, 0x9AAF},
+       {0x695A, 0x9AB2},
+       {0x695B, 0x9AB4},
+       {0x695C, 0x9AB5},
+       {0x695D, 0x9AB6},
+       {0x695E, 0x9AB9},
+       {0x695F, 0x9ABB},
+       {0x6960, 0x9ABE},
+       {0x6961, 0x9ABF},
+       {0x6962, 0x9AC1},
+       {0x6963, 0x9AC3},
+       {0x6964, 0x9AC6},
+       {0x6965, 0x9AC8},
+       {0x6966, 0x9ACE},
+       {0x6967, 0x9AD0},
+       {0x6968, 0x9AD2},
+       {0x6969, 0x9AD5},
+       {0x696A, 0x9AD6},
+       {0x696B, 0x9AD7},
+       {0x696C, 0x9ADB},
+       {0x696D, 0x9ADC},
+       {0x696E, 0x9AE0},
+       {0x696F, 0x9AE4},
+       {0x6970, 0x9AE5},
+       {0x6971, 0x9AE7},
+       {0x6972, 0x9AE9},
+       {0x6973, 0x9AEC},
+       {0x6974, 0x9AF2},
+       {0x6975, 0x9AF3},
+       {0x6976, 0x9AF5},
+       {0x6977, 0x9AF9},
+       {0x6978, 0x9AFA},
+       {0x6979, 0x9AFD},
+       {0x697A, 0x9AFF},
+       {0x697B, 0x9B00},
+       {0x697C, 0x9B01},
+       {0x697D, 0x9B02},
+       {0x697E, 0x9B03},
+       {0x6A21, 0x9B04},
+       {0x6A22, 0x9B05},
+       {0x6A23, 0x9B08},
+       {0x6A24, 0x9B09},
+       {0x6A25, 0x9B0B},
+       {0x6A26, 0x9B0C},
+       {0x6A27, 0x9B0D},
+       {0x6A28, 0x9B0E},
+       {0x6A29, 0x9B10},
+       {0x6A2A, 0x9B12},
+       {0x6A2B, 0x9B16},
+       {0x6A2C, 0x9B19},
+       {0x6A2D, 0x9B1B},
+       {0x6A2E, 0x9B1C},
+       {0x6A2F, 0x9B20},
+       {0x6A30, 0x9B26},
+       {0x6A31, 0x9B2B},
+       {0x6A32, 0x9B2D},
+       {0x6A33, 0x9B33},
+       {0x6A34, 0x9B34},
+       {0x6A35, 0x9B35},
+       {0x6A36, 0x9B37},
+       {0x6A37, 0x9B39},
+       {0x6A38, 0x9B3A},
+       {0x6A39, 0x9B3D},
+       {0x6A3A, 0x9B48},
+       {0x6A3B, 0x9B4B},
+       {0x6A3C, 0x9B4C},
+       {0x6A3D, 0x9B55},
+       {0x6A3E, 0x9B56},
+       {0x6A3F, 0x9B57},
+       {0x6A40, 0x9B5B},
+       {0x6A41, 0x9B5E},
+       {0x6A42, 0x9B61},
+       {0x6A43, 0x9B63},
+       {0x6A44, 0x9B65},
+       {0x6A45, 0x9B66},
+       {0x6A46, 0x9B68},
+       {0x6A47, 0x9B6A},
+       {0x6A48, 0x9B6B},
+       {0x6A49, 0x9B6C},
+       {0x6A4A, 0x9B6D},
+       {0x6A4B, 0x9B6E},
+       {0x6A4C, 0x9B73},
+       {0x6A4D, 0x9B75},
+       {0x6A4E, 0x9B77},
+       {0x6A4F, 0x9B78},
+       {0x6A50, 0x9B79},
+       {0x6A51, 0x9B7F},
+       {0x6A52, 0x9B80},
+       {0x6A53, 0x9B84},
+       {0x6A54, 0x9B85},
+       {0x6A55, 0x9B86},
+       {0x6A56, 0x9B87},
+       {0x6A57, 0x9B89},
+       {0x6A58, 0x9B8A},
+       {0x6A59, 0x9B8B},
+       {0x6A5A, 0x9B8D},
+       {0x6A5B, 0x9B8F},
+       {0x6A5C, 0x9B90},
+       {0x6A5D, 0x9B94},
+       {0x6A5E, 0x9B9A},
+       {0x6A5F, 0x9B9D},
+       {0x6A60, 0x9B9E},
+       {0x6A61, 0x9BA6},
+       {0x6A62, 0x9BA7},
+       {0x6A63, 0x9BA9},
+       {0x6A64, 0x9BAC},
+       {0x6A65, 0x9BB0},
+       {0x6A66, 0x9BB1},
+       {0x6A67, 0x9BB2},
+       {0x6A68, 0x9BB7},
+       {0x6A69, 0x9BB8},
+       {0x6A6A, 0x9BBB},
+       {0x6A6B, 0x9BBC},
+       {0x6A6C, 0x9BBE},
+       {0x6A6D, 0x9BBF},
+       {0x6A6E, 0x9BC1},
+       {0x6A6F, 0x9BC7},
+       {0x6A70, 0x9BC8},
+       {0x6A71, 0x9BCE},
+       {0x6A72, 0x9BD0},
+       {0x6A73, 0x9BD7},
+       {0x6A74, 0x9BD8},
+       {0x6A75, 0x9BDD},
+       {0x6A76, 0x9BDF},
+       {0x6A77, 0x9BE5},
+       {0x6A78, 0x9BE7},
+       {0x6A79, 0x9BEA},
+       {0x6A7A, 0x9BEB},
+       {0x6A7B, 0x9BEF},
+       {0x6A7C, 0x9BF3},
+       {0x6A7D, 0x9BF7},
+       {0x6A7E, 0x9BF8},
+       {0x6B21, 0x9BF9},
+       {0x6B22, 0x9BFA},
+       {0x6B23, 0x9BFD},
+       {0x6B24, 0x9BFF},
+       {0x6B25, 0x9C00},
+       {0x6B26, 0x9C02},
+       {0x6B27, 0x9C0B},
+       {0x6B28, 0x9C0F},
+       {0x6B29, 0x9C11},
+       {0x6B2A, 0x9C16},
+       {0x6B2B, 0x9C18},
+       {0x6B2C, 0x9C19},
+       {0x6B2D, 0x9C1A},
+       {0x6B2E, 0x9C1C},
+       {0x6B2F, 0x9C1E},
+       {0x6B30, 0x9C22},
+       {0x6B31, 0x9C23},
+       {0x6B32, 0x9C26},
+       {0x6B33, 0x9C27},
+       {0x6B34, 0x9C28},
+       {0x6B35, 0x9C29},
+       {0x6B36, 0x9C2A},
+       {0x6B37, 0x9C31},
+       {0x6B38, 0x9C35},
+       {0x6B39, 0x9C36},
+       {0x6B3A, 0x9C37},
+       {0x6B3B, 0x9C3D},
+       {0x6B3C, 0x9C41},
+       {0x6B3D, 0x9C43},
+       {0x6B3E, 0x9C44},
+       {0x6B3F, 0x9C45},
+       {0x6B40, 0x9C49},
+       {0x6B41, 0x9C4A},
+       {0x6B42, 0x9C4E},
+       {0x6B43, 0x9C4F},
+       {0x6B44, 0x9C50},
+       {0x6B45, 0x9C53},
+       {0x6B46, 0x9C54},
+       {0x6B47, 0x9C56},
+       {0x6B48, 0x9C58},
+       {0x6B49, 0x9C5B},
+       {0x6B4A, 0x9C5D},
+       {0x6B4B, 0x9C5E},
+       {0x6B4C, 0x9C5F},
+       {0x6B4D, 0x9C63},
+       {0x6B4E, 0x9C69},
+       {0x6B4F, 0x9C6A},
+       {0x6B50, 0x9C5C},
+       {0x6B51, 0x9C6B},
+       {0x6B52, 0x9C68},
+       {0x6B53, 0x9C6E},
+       {0x6B54, 0x9C70},
+       {0x6B55, 0x9C72},
+       {0x6B56, 0x9C75},
+       {0x6B57, 0x9C77},
+       {0x6B58, 0x9C7B},
+       {0x6B59, 0x9CE6},
+       {0x6B5A, 0x9CF2},
+       {0x6B5B, 0x9CF7},
+       {0x6B5C, 0x9CF9},
+       {0x6B5D, 0x9D0B},
+       {0x6B5E, 0x9D02},
+       {0x6B5F, 0x9D11},
+       {0x6B60, 0x9D17},
+       {0x6B61, 0x9D18},
+       {0x6B62, 0x9D1C},
+       {0x6B63, 0x9D1D},
+       {0x6B64, 0x9D1E},
+       {0x6B65, 0x9D2F},
+       {0x6B66, 0x9D30},
+       {0x6B67, 0x9D32},
+       {0x6B68, 0x9D33},
+       {0x6B69, 0x9D34},
+       {0x6B6A, 0x9D3A},
+       {0x6B6B, 0x9D3C},
+       {0x6B6C, 0x9D45},
+       {0x6B6D, 0x9D3D},
+       {0x6B6E, 0x9D42},
+       {0x6B6F, 0x9D43},
+       {0x6B70, 0x9D47},
+       {0x6B71, 0x9D4A},
+       {0x6B72, 0x9D53},
+       {0x6B73, 0x9D54},
+       {0x6B74, 0x9D5F},
+       {0x6B75, 0x9D63},
+       {0x6B76, 0x9D62},
+       {0x6B77, 0x9D65},
+       {0x6B78, 0x9D69},
+       {0x6B79, 0x9D6A},
+       {0x6B7A, 0x9D6B},
+       {0x6B7B, 0x9D70},
+       {0x6B7C, 0x9D76},
+       {0x6B7D, 0x9D77},
+       {0x6B7E, 0x9D7B},
+       {0x6C21, 0x9D7C},
+       {0x6C22, 0x9D7E},
+       {0x6C23, 0x9D83},
+       {0x6C24, 0x9D84},
+       {0x6C25, 0x9D86},
+       {0x6C26, 0x9D8A},
+       {0x6C27, 0x9D8D},
+       {0x6C28, 0x9D8E},
+       {0x6C29, 0x9D92},
+       {0x6C2A, 0x9D93},
+       {0x6C2B, 0x9D95},
+       {0x6C2C, 0x9D96},
+       {0x6C2D, 0x9D97},
+       {0x6C2E, 0x9D98},
+       {0x6C2F, 0x9DA1},
+       {0x6C30, 0x9DAA},
+       {0x6C31, 0x9DAC},
+       {0x6C32, 0x9DAE},
+       {0x6C33, 0x9DB1},
+       {0x6C34, 0x9DB5},
+       {0x6C35, 0x9DB9},
+       {0x6C36, 0x9DBC},
+       {0x6C37, 0x9DBF},
+       {0x6C38, 0x9DC3},
+       {0x6C39, 0x9DC7},
+       {0x6C3A, 0x9DC9},
+       {0x6C3B, 0x9DCA},
+       {0x6C3C, 0x9DD4},
+       {0x6C3D, 0x9DD5},
+       {0x6C3E, 0x9DD6},
+       {0x6C3F, 0x9DD7},
+       {0x6C40, 0x9DDA},
+       {0x6C41, 0x9DDE},
+       {0x6C42, 0x9DDF},
+       {0x6C43, 0x9DE0},
+       {0x6C44, 0x9DE5},
+       {0x6C45, 0x9DE7},
+       {0x6C46, 0x9DE9},
+       {0x6C47, 0x9DEB},
+       {0x6C48, 0x9DEE},
+       {0x6C49, 0x9DF0},
+       {0x6C4A, 0x9DF3},
+       {0x6C4B, 0x9DF4},
+       {0x6C4C, 0x9DFE},
+       {0x6C4D, 0x9E0A},
+       {0x6C4E, 0x9E02},
+       {0x6C4F, 0x9E07},
+       {0x6C50, 0x9E0E},
+       {0x6C51, 0x9E10},
+       {0x6C52, 0x9E11},
+       {0x6C53, 0x9E12},
+       {0x6C54, 0x9E15},
+       {0x6C55, 0x9E16},
+       {0x6C56, 0x9E19},
+       {0x6C57, 0x9E1C},
+       {0x6C58, 0x9E1D},
+       {0x6C59, 0x9E7A},
+       {0x6C5A, 0x9E7B},
+       {0x6C5B, 0x9E7C},
+       {0x6C5C, 0x9E80},
+       {0x6C5D, 0x9E82},
+       {0x6C5E, 0x9E83},
+       {0x6C5F, 0x9E84},
+       {0x6C60, 0x9E85},
+       {0x6C61, 0x9E87},
+       {0x6C62, 0x9E8E},
+       {0x6C63, 0x9E8F},
+       {0x6C64, 0x9E96},
+       {0x6C65, 0x9E98},
+       {0x6C66, 0x9E9B},
+       {0x6C67, 0x9E9E},
+       {0x6C68, 0x9EA4},
+       {0x6C69, 0x9EA8},
+       {0x6C6A, 0x9EAC},
+       {0x6C6B, 0x9EAE},
+       {0x6C6C, 0x9EAF},
+       {0x6C6D, 0x9EB0},
+       {0x6C6E, 0x9EB3},
+       {0x6C6F, 0x9EB4},
+       {0x6C70, 0x9EB5},
+       {0x6C71, 0x9EC6},
+       {0x6C72, 0x9EC8},
+       {0x6C73, 0x9ECB},
+       {0x6C74, 0x9ED5},
+       {0x6C75, 0x9EDF},
+       {0x6C76, 0x9EE4},
+       {0x6C77, 0x9EE7},
+       {0x6C78, 0x9EEC},
+       {0x6C79, 0x9EED},
+       {0x6C7A, 0x9EEE},
+       {0x6C7B, 0x9EF0},
+       {0x6C7C, 0x9EF1},
+       {0x6C7D, 0x9EF2},
+       {0x6C7E, 0x9EF5},
+       {0x6D21, 0x9EF8},
+       {0x6D22, 0x9EFF},
+       {0x6D23, 0x9F02},
+       {0x6D24, 0x9F03},
+       {0x6D25, 0x9F09},
+       {0x6D26, 0x9F0F},
+       {0x6D27, 0x9F10},
+       {0x6D28, 0x9F11},
+       {0x6D29, 0x9F12},
+       {0x6D2A, 0x9F14},
+       {0x6D2B, 0x9F16},
+       {0x6D2C, 0x9F17},
+       {0x6D2D, 0x9F19},
+       {0x6D2E, 0x9F1A},
+       {0x6D2F, 0x9F1B},
+       {0x6D30, 0x9F1F},
+       {0x6D31, 0x9F22},
+       {0x6D32, 0x9F26},
+       {0x6D33, 0x9F2A},
+       {0x6D34, 0x9F2B},
+       {0x6D35, 0x9F2F},
+       {0x6D36, 0x9F31},
+       {0x6D37, 0x9F32},
+       {0x6D38, 0x9F34},
+       {0x6D39, 0x9F37},
+       {0x6D3A, 0x9F39},
+       {0x6D3B, 0x9F3A},
+       {0x6D3C, 0x9F3C},
+       {0x6D3D, 0x9F3D},
+       {0x6D3E, 0x9F3F},
+       {0x6D3F, 0x9F41},
+       {0x6D40, 0x9F43},
+       {0x6D41, 0x9F44},
+       {0x6D42, 0x9F45},
+       {0x6D43, 0x9F46},
+       {0x6D44, 0x9F47},
+       {0x6D45, 0x9F53},
+       {0x6D46, 0x9F55},
+       {0x6D47, 0x9F56},
+       {0x6D48, 0x9F57},
+       {0x6D49, 0x9F58},
+       {0x6D4A, 0x9F5A},
+       {0x6D4B, 0x9F5D},
+       {0x6D4C, 0x9F5E},
+       {0x6D4D, 0x9F68},
+       {0x6D4E, 0x9F69},
+       {0x6D4F, 0x9F6D},
+       {0x6D50, 0x9F6E},
+       {0x6D51, 0x9F6F},
+       {0x6D52, 0x9F70},
+       {0x6D53, 0x9F71},
+       {0x6D54, 0x9F73},
+       {0x6D55, 0x9F75},
+       {0x6D56, 0x9F7A},
+       {0x6D57, 0x9F7D},
+       {0x6D58, 0x9F8F},
+       {0x6D59, 0x9F90},
+       {0x6D5A, 0x9F91},
+       {0x6D5B, 0x9F92},
+       {0x6D5C, 0x9F94},
+       {0x6D5D, 0x9F96},
+       {0x6D5E, 0x9F97},
+       {0x6D5F, 0x9F9E},
+       {0x6D60, 0x9FA1},
+       {0x6D61, 0x9FA2},
+       {0x6D62, 0x9FA3},
+       {0x6D63, 0x9FA5},
diff --git a/vte/src/unitable.KSX1001 b/vte/src/unitable.KSX1001
new file mode 100644
index 0000000..d5ce3e3
--- /dev/null
+++ b/vte/src/unitable.KSX1001
@@ -0,0 +1,8227 @@
+       /* generated file -- do not edit */
+       {0x2121, 0x3000},
+       {0x2122, 0x3001},
+       {0x2123, 0x3002},
+       {0x2124, 0x00B7},
+       {0x2125, 0x2025},
+       {0x2126, 0x2026},
+       {0x2127, 0x00A8},
+       {0x2128, 0x3003},
+       {0x2129, 0x00AD},
+       {0x212A, 0x2015},
+       {0x212B, 0x2225},
+       {0x212C, 0xFF3C},
+       {0x212D, 0x223C},
+       {0x212E, 0x2018},
+       {0x212F, 0x2019},
+       {0x2130, 0x201C},
+       {0x2131, 0x201D},
+       {0x2132, 0x3014},
+       {0x2133, 0x3015},
+       {0x2134, 0x3008},
+       {0x2135, 0x3009},
+       {0x2136, 0x300A},
+       {0x2137, 0x300B},
+       {0x2138, 0x300C},
+       {0x2139, 0x300D},
+       {0x213A, 0x300E},
+       {0x213B, 0x300F},
+       {0x213C, 0x3010},
+       {0x213D, 0x3011},
+       {0x213E, 0x00B1},
+       {0x213F, 0x00D7},
+       {0x2140, 0x00F7},
+       {0x2141, 0x2260},
+       {0x2142, 0x2264},
+       {0x2143, 0x2265},
+       {0x2144, 0x221E},
+       {0x2145, 0x2234},
+       {0x2146, 0x00B0},
+       {0x2147, 0x2032},
+       {0x2148, 0x2033},
+       {0x2149, 0x2103},
+       {0x214A, 0x212B},
+       {0x214B, 0xFFE0},
+       {0x214C, 0xFFE1},
+       {0x214D, 0xFFE5},
+       {0x214E, 0x2642},
+       {0x214F, 0x2640},
+       {0x2150, 0x2220},
+       {0x2151, 0x22A5},
+       {0x2152, 0x2312},
+       {0x2153, 0x2202},
+       {0x2154, 0x2207},
+       {0x2155, 0x2261},
+       {0x2156, 0x2252},
+       {0x2157, 0x00A7},
+       {0x2158, 0x203B},
+       {0x2159, 0x2606},
+       {0x215A, 0x2605},
+       {0x215B, 0x25CB},
+       {0x215C, 0x25CF},
+       {0x215D, 0x25CE},
+       {0x215E, 0x25C7},
+       {0x215F, 0x25C6},
+       {0x2160, 0x25A1},
+       {0x2161, 0x25A0},
+       {0x2162, 0x25B3},
+       {0x2163, 0x25B2},
+       {0x2164, 0x25BD},
+       {0x2165, 0x25BC},
+       {0x2166, 0x2192},
+       {0x2167, 0x2190},
+       {0x2168, 0x2191},
+       {0x2169, 0x2193},
+       {0x216A, 0x2194},
+       {0x216B, 0x3013},
+       {0x216C, 0x226A},
+       {0x216D, 0x226B},
+       {0x216E, 0x221A},
+       {0x216F, 0x223D},
+       {0x2170, 0x221D},
+       {0x2171, 0x2235},
+       {0x2172, 0x222B},
+       {0x2173, 0x222C},
+       {0x2174, 0x2208},
+       {0x2175, 0x220B},
+       {0x2176, 0x2286},
+       {0x2177, 0x2287},
+       {0x2178, 0x2282},
+       {0x2179, 0x2283},
+       {0x217A, 0x222A},
+       {0x217B, 0x2229},
+       {0x217C, 0x2227},
+       {0x217D, 0x2228},
+       {0x217E, 0xFFE2},
+       {0x2221, 0x21D2},
+       {0x2222, 0x21D4},
+       {0x2223, 0x2200},
+       {0x2224, 0x2203},
+       {0x2225, 0x00B4},
+       {0x2226, 0xFF5E},
+       {0x2227, 0x02C7},
+       {0x2228, 0x02D8},
+       {0x2229, 0x02DD},
+       {0x222A, 0x02DA},
+       {0x222B, 0x02D9},
+       {0x222C, 0x00B8},
+       {0x222D, 0x02DB},
+       {0x222E, 0x00A1},
+       {0x222F, 0x00BF},
+       {0x2230, 0x02D0},
+       {0x2231, 0x222E},
+       {0x2232, 0x2211},
+       {0x2233, 0x220F},
+       {0x2234, 0x00A4},
+       {0x2235, 0x2109},
+       {0x2236, 0x2030},
+       {0x2237, 0x25C1},
+       {0x2238, 0x25C0},
+       {0x2239, 0x25B7},
+       {0x223A, 0x25B6},
+       {0x223B, 0x2664},
+       {0x223C, 0x2660},
+       {0x223D, 0x2661},
+       {0x223E, 0x2665},
+       {0x223F, 0x2667},
+       {0x2240, 0x2663},
+       {0x2241, 0x2299},
+       {0x2242, 0x25C8},
+       {0x2243, 0x25A3},
+       {0x2244, 0x25D0},
+       {0x2245, 0x25D1},
+       {0x2246, 0x2592},
+       {0x2247, 0x25A4},
+       {0x2248, 0x25A5},
+       {0x2249, 0x25A8},
+       {0x224A, 0x25A7},
+       {0x224B, 0x25A6},
+       {0x224C, 0x25A9},
+       {0x224D, 0x2668},
+       {0x224E, 0x260F},
+       {0x224F, 0x260E},
+       {0x2250, 0x261C},
+       {0x2251, 0x261E},
+       {0x2252, 0x00B6},
+       {0x2253, 0x2020},
+       {0x2254, 0x2021},
+       {0x2255, 0x2195},
+       {0x2256, 0x2197},
+       {0x2257, 0x2199},
+       {0x2258, 0x2196},
+       {0x2259, 0x2198},
+       {0x225A, 0x266D},
+       {0x225B, 0x2669},
+       {0x225C, 0x266A},
+       {0x225D, 0x266C},
+       {0x225E, 0x327F},
+       {0x225F, 0x321C},
+       {0x2260, 0x2116},
+       {0x2261, 0x33C7},
+       {0x2262, 0x2122},
+       {0x2263, 0x33C2},
+       {0x2264, 0x33D8},
+       {0x2265, 0x2121},
+       {0x2321, 0xFF01},
+       {0x2322, 0xFF02},
+       {0x2323, 0xFF03},
+       {0x2324, 0xFF04},
+       {0x2325, 0xFF05},
+       {0x2326, 0xFF06},
+       {0x2327, 0xFF07},
+       {0x2328, 0xFF08},
+       {0x2329, 0xFF09},
+       {0x232A, 0xFF0A},
+       {0x232B, 0xFF0B},
+       {0x232C, 0xFF0C},
+       {0x232D, 0xFF0D},
+       {0x232E, 0xFF0E},
+       {0x232F, 0xFF0F},
+       {0x2330, 0xFF10},
+       {0x2331, 0xFF11},
+       {0x2332, 0xFF12},
+       {0x2333, 0xFF13},
+       {0x2334, 0xFF14},
+       {0x2335, 0xFF15},
+       {0x2336, 0xFF16},
+       {0x2337, 0xFF17},
+       {0x2338, 0xFF18},
+       {0x2339, 0xFF19},
+       {0x233A, 0xFF1A},
+       {0x233B, 0xFF1B},
+       {0x233C, 0xFF1C},
+       {0x233D, 0xFF1D},
+       {0x233E, 0xFF1E},
+       {0x233F, 0xFF1F},
+       {0x2340, 0xFF20},
+       {0x2341, 0xFF21},
+       {0x2342, 0xFF22},
+       {0x2343, 0xFF23},
+       {0x2344, 0xFF24},
+       {0x2345, 0xFF25},
+       {0x2346, 0xFF26},
+       {0x2347, 0xFF27},
+       {0x2348, 0xFF28},
+       {0x2349, 0xFF29},
+       {0x234A, 0xFF2A},
+       {0x234B, 0xFF2B},
+       {0x234C, 0xFF2C},
+       {0x234D, 0xFF2D},
+       {0x234E, 0xFF2E},
+       {0x234F, 0xFF2F},
+       {0x2350, 0xFF30},
+       {0x2351, 0xFF31},
+       {0x2352, 0xFF32},
+       {0x2353, 0xFF33},
+       {0x2354, 0xFF34},
+       {0x2355, 0xFF35},
+       {0x2356, 0xFF36},
+       {0x2357, 0xFF37},
+       {0x2358, 0xFF38},
+       {0x2359, 0xFF39},
+       {0x235A, 0xFF3A},
+       {0x235B, 0xFF3B},
+       {0x235C, 0xFFE6},
+       {0x235D, 0xFF3D},
+       {0x235E, 0xFF3E},
+       {0x235F, 0xFF3F},
+       {0x2360, 0xFF40},
+       {0x2361, 0xFF41},
+       {0x2362, 0xFF42},
+       {0x2363, 0xFF43},
+       {0x2364, 0xFF44},
+       {0x2365, 0xFF45},
+       {0x2366, 0xFF46},
+       {0x2367, 0xFF47},
+       {0x2368, 0xFF48},
+       {0x2369, 0xFF49},
+       {0x236A, 0xFF4A},
+       {0x236B, 0xFF4B},
+       {0x236C, 0xFF4C},
+       {0x236D, 0xFF4D},
+       {0x236E, 0xFF4E},
+       {0x236F, 0xFF4F},
+       {0x2370, 0xFF50},
+       {0x2371, 0xFF51},
+       {0x2372, 0xFF52},
+       {0x2373, 0xFF53},
+       {0x2374, 0xFF54},
+       {0x2375, 0xFF55},
+       {0x2376, 0xFF56},
+       {0x2377, 0xFF57},
+       {0x2378, 0xFF58},
+       {0x2379, 0xFF59},
+       {0x237A, 0xFF5A},
+       {0x237B, 0xFF5B},
+       {0x237C, 0xFF5C},
+       {0x237D, 0xFF5D},
+       {0x237E, 0xFFE3},
+       {0x2421, 0x3131},
+       {0x2422, 0x3132},
+       {0x2423, 0x3133},
+       {0x2424, 0x3134},
+       {0x2425, 0x3135},
+       {0x2426, 0x3136},
+       {0x2427, 0x3137},
+       {0x2428, 0x3138},
+       {0x2429, 0x3139},
+       {0x242A, 0x313A},
+       {0x242B, 0x313B},
+       {0x242C, 0x313C},
+       {0x242D, 0x313D},
+       {0x242E, 0x313E},
+       {0x242F, 0x313F},
+       {0x2430, 0x3140},
+       {0x2431, 0x3141},
+       {0x2432, 0x3142},
+       {0x2433, 0x3143},
+       {0x2434, 0x3144},
+       {0x2435, 0x3145},
+       {0x2436, 0x3146},
+       {0x2437, 0x3147},
+       {0x2438, 0x3148},
+       {0x2439, 0x3149},
+       {0x243A, 0x314A},
+       {0x243B, 0x314B},
+       {0x243C, 0x314C},
+       {0x243D, 0x314D},
+       {0x243E, 0x314E},
+       {0x243F, 0x314F},
+       {0x2440, 0x3150},
+       {0x2441, 0x3151},
+       {0x2442, 0x3152},
+       {0x2443, 0x3153},
+       {0x2444, 0x3154},
+       {0x2445, 0x3155},
+       {0x2446, 0x3156},
+       {0x2447, 0x3157},
+       {0x2448, 0x3158},
+       {0x2449, 0x3159},
+       {0x244A, 0x315A},
+       {0x244B, 0x315B},
+       {0x244C, 0x315C},
+       {0x244D, 0x315D},
+       {0x244E, 0x315E},
+       {0x244F, 0x315F},
+       {0x2450, 0x3160},
+       {0x2451, 0x3161},
+       {0x2452, 0x3162},
+       {0x2453, 0x3163},
+       {0x2454, 0x3164},
+       {0x2455, 0x3165},
+       {0x2456, 0x3166},
+       {0x2457, 0x3167},
+       {0x2458, 0x3168},
+       {0x2459, 0x3169},
+       {0x245A, 0x316A},
+       {0x245B, 0x316B},
+       {0x245C, 0x316C},
+       {0x245D, 0x316D},
+       {0x245E, 0x316E},
+       {0x245F, 0x316F},
+       {0x2460, 0x3170},
+       {0x2461, 0x3171},
+       {0x2462, 0x3172},
+       {0x2463, 0x3173},
+       {0x2464, 0x3174},
+       {0x2465, 0x3175},
+       {0x2466, 0x3176},
+       {0x2467, 0x3177},
+       {0x2468, 0x3178},
+       {0x2469, 0x3179},
+       {0x246A, 0x317A},
+       {0x246B, 0x317B},
+       {0x246C, 0x317C},
+       {0x246D, 0x317D},
+       {0x246E, 0x317E},
+       {0x246F, 0x317F},
+       {0x2470, 0x3180},
+       {0x2471, 0x3181},
+       {0x2472, 0x3182},
+       {0x2473, 0x3183},
+       {0x2474, 0x3184},
+       {0x2475, 0x3185},
+       {0x2476, 0x3186},
+       {0x2477, 0x3187},
+       {0x2478, 0x3188},
+       {0x2479, 0x3189},
+       {0x247A, 0x318A},
+       {0x247B, 0x318B},
+       {0x247C, 0x318C},
+       {0x247D, 0x318D},
+       {0x247E, 0x318E},
+       {0x2521, 0x2170},
+       {0x2522, 0x2171},
+       {0x2523, 0x2172},
+       {0x2524, 0x2173},
+       {0x2525, 0x2174},
+       {0x2526, 0x2175},
+       {0x2527, 0x2176},
+       {0x2528, 0x2177},
+       {0x2529, 0x2178},
+       {0x252A, 0x2179},
+       {0x2530, 0x2160},
+       {0x2531, 0x2161},
+       {0x2532, 0x2162},
+       {0x2533, 0x2163},
+       {0x2534, 0x2164},
+       {0x2535, 0x2165},
+       {0x2536, 0x2166},
+       {0x2537, 0x2167},
+       {0x2538, 0x2168},
+       {0x2539, 0x2169},
+       {0x2541, 0x0391},
+       {0x2542, 0x0392},
+       {0x2543, 0x0393},
+       {0x2544, 0x0394},
+       {0x2545, 0x0395},
+       {0x2546, 0x0396},
+       {0x2547, 0x0397},
+       {0x2548, 0x0398},
+       {0x2549, 0x0399},
+       {0x254A, 0x039A},
+       {0x254B, 0x039B},
+       {0x254C, 0x039C},
+       {0x254D, 0x039D},
+       {0x254E, 0x039E},
+       {0x254F, 0x039F},
+       {0x2550, 0x03A0},
+       {0x2551, 0x03A1},
+       {0x2552, 0x03A3},
+       {0x2553, 0x03A4},
+       {0x2554, 0x03A5},
+       {0x2555, 0x03A6},
+       {0x2556, 0x03A7},
+       {0x2557, 0x03A8},
+       {0x2558, 0x03A9},
+       {0x2561, 0x03B1},
+       {0x2562, 0x03B2},
+       {0x2563, 0x03B3},
+       {0x2564, 0x03B4},
+       {0x2565, 0x03B5},
+       {0x2566, 0x03B6},
+       {0x2567, 0x03B7},
+       {0x2568, 0x03B8},
+       {0x2569, 0x03B9},
+       {0x256A, 0x03BA},
+       {0x256B, 0x03BB},
+       {0x256C, 0x03BC},
+       {0x256D, 0x03BD},
+       {0x256E, 0x03BE},
+       {0x256F, 0x03BF},
+       {0x2570, 0x03C0},
+       {0x2571, 0x03C1},
+       {0x2572, 0x03C3},
+       {0x2573, 0x03C4},
+       {0x2574, 0x03C5},
+       {0x2575, 0x03C6},
+       {0x2576, 0x03C7},
+       {0x2577, 0x03C8},
+       {0x2578, 0x03C9},
+       {0x2621, 0x2500},
+       {0x2622, 0x2502},
+       {0x2623, 0x250C},
+       {0x2624, 0x2510},
+       {0x2625, 0x2518},
+       {0x2626, 0x2514},
+       {0x2627, 0x251C},
+       {0x2628, 0x252C},
+       {0x2629, 0x2524},
+       {0x262A, 0x2534},
+       {0x262B, 0x253C},
+       {0x262C, 0x2501},
+       {0x262D, 0x2503},
+       {0x262E, 0x250F},
+       {0x262F, 0x2513},
+       {0x2630, 0x251B},
+       {0x2631, 0x2517},
+       {0x2632, 0x2523},
+       {0x2633, 0x2533},
+       {0x2634, 0x252B},
+       {0x2635, 0x253B},
+       {0x2636, 0x254B},
+       {0x2637, 0x2520},
+       {0x2638, 0x252F},
+       {0x2639, 0x2528},
+       {0x263A, 0x2537},
+       {0x263B, 0x253F},
+       {0x263C, 0x251D},
+       {0x263D, 0x2530},
+       {0x263E, 0x2525},
+       {0x263F, 0x2538},
+       {0x2640, 0x2542},
+       {0x2641, 0x2512},
+       {0x2642, 0x2511},
+       {0x2643, 0x251A},
+       {0x2644, 0x2519},
+       {0x2645, 0x2516},
+       {0x2646, 0x2515},
+       {0x2647, 0x250E},
+       {0x2648, 0x250D},
+       {0x2649, 0x251E},
+       {0x264A, 0x251F},
+       {0x264B, 0x2521},
+       {0x264C, 0x2522},
+       {0x264D, 0x2526},
+       {0x264E, 0x2527},
+       {0x264F, 0x2529},
+       {0x2650, 0x252A},
+       {0x2651, 0x252D},
+       {0x2652, 0x252E},
+       {0x2653, 0x2531},
+       {0x2654, 0x2532},
+       {0x2655, 0x2535},
+       {0x2656, 0x2536},
+       {0x2657, 0x2539},
+       {0x2658, 0x253A},
+       {0x2659, 0x253D},
+       {0x265A, 0x253E},
+       {0x265B, 0x2540},
+       {0x265C, 0x2541},
+       {0x265D, 0x2543},
+       {0x265E, 0x2544},
+       {0x265F, 0x2545},
+       {0x2660, 0x2546},
+       {0x2661, 0x2547},
+       {0x2662, 0x2548},
+       {0x2663, 0x2549},
+       {0x2664, 0x254A},
+       {0x2721, 0x3395},
+       {0x2722, 0x3396},
+       {0x2723, 0x3397},
+       {0x2724, 0x2113},
+       {0x2725, 0x3398},
+       {0x2726, 0x33C4},
+       {0x2727, 0x33A3},
+       {0x2728, 0x33A4},
+       {0x2729, 0x33A5},
+       {0x272A, 0x33A6},
+       {0x272B, 0x3399},
+       {0x272C, 0x339A},
+       {0x272D, 0x339B},
+       {0x272E, 0x339C},
+       {0x272F, 0x339D},
+       {0x2730, 0x339E},
+       {0x2731, 0x339F},
+       {0x2732, 0x33A0},
+       {0x2733, 0x33A1},
+       {0x2734, 0x33A2},
+       {0x2735, 0x33CA},
+       {0x2736, 0x338D},
+       {0x2737, 0x338E},
+       {0x2738, 0x338F},
+       {0x2739, 0x33CF},
+       {0x273A, 0x3388},
+       {0x273B, 0x3389},
+       {0x273C, 0x33C8},
+       {0x273D, 0x33A7},
+       {0x273E, 0x33A8},
+       {0x273F, 0x33B0},
+       {0x2740, 0x33B1},
+       {0x2741, 0x33B2},
+       {0x2742, 0x33B3},
+       {0x2743, 0x33B4},
+       {0x2744, 0x33B5},
+       {0x2745, 0x33B6},
+       {0x2746, 0x33B7},
+       {0x2747, 0x33B8},
+       {0x2748, 0x33B9},
+       {0x2749, 0x3380},
+       {0x274A, 0x3381},
+       {0x274B, 0x3382},
+       {0x274C, 0x3383},
+       {0x274D, 0x3384},
+       {0x274E, 0x33BA},
+       {0x274F, 0x33BB},
+       {0x2750, 0x33BC},
+       {0x2751, 0x33BD},
+       {0x2752, 0x33BE},
+       {0x2753, 0x33BF},
+       {0x2754, 0x3390},
+       {0x2755, 0x3391},
+       {0x2756, 0x3392},
+       {0x2757, 0x3393},
+       {0x2758, 0x3394},
+       {0x2759, 0x2126},
+       {0x275A, 0x33C0},
+       {0x275B, 0x33C1},
+       {0x275C, 0x338A},
+       {0x275D, 0x338B},
+       {0x275E, 0x338C},
+       {0x275F, 0x33D6},
+       {0x2760, 0x33C5},
+       {0x2761, 0x33AD},
+       {0x2762, 0x33AE},
+       {0x2763, 0x33AF},
+       {0x2764, 0x33DB},
+       {0x2765, 0x33A9},
+       {0x2766, 0x33AA},
+       {0x2767, 0x33AB},
+       {0x2768, 0x33AC},
+       {0x2769, 0x33DD},
+       {0x276A, 0x33D0},
+       {0x276B, 0x33D3},
+       {0x276C, 0x33C3},
+       {0x276D, 0x33C9},
+       {0x276E, 0x33DC},
+       {0x276F, 0x33C6},
+       {0x2821, 0x00C6},
+       {0x2822, 0x00D0},
+       {0x2823, 0x00AA},
+       {0x2824, 0x0126},
+       {0x2826, 0x0132},
+       {0x2828, 0x013F},
+       {0x2829, 0x0141},
+       {0x282A, 0x00D8},
+       {0x282B, 0x0152},
+       {0x282C, 0x00BA},
+       {0x282D, 0x00DE},
+       {0x282E, 0x0166},
+       {0x282F, 0x014A},
+       {0x2831, 0x3260},
+       {0x2832, 0x3261},
+       {0x2833, 0x3262},
+       {0x2834, 0x3263},
+       {0x2835, 0x3264},
+       {0x2836, 0x3265},
+       {0x2837, 0x3266},
+       {0x2838, 0x3267},
+       {0x2839, 0x3268},
+       {0x283A, 0x3269},
+       {0x283B, 0x326A},
+       {0x283C, 0x326B},
+       {0x283D, 0x326C},
+       {0x283E, 0x326D},
+       {0x283F, 0x326E},
+       {0x2840, 0x326F},
+       {0x2841, 0x3270},
+       {0x2842, 0x3271},
+       {0x2843, 0x3272},
+       {0x2844, 0x3273},
+       {0x2845, 0x3274},
+       {0x2846, 0x3275},
+       {0x2847, 0x3276},
+       {0x2848, 0x3277},
+       {0x2849, 0x3278},
+       {0x284A, 0x3279},
+       {0x284B, 0x327A},
+       {0x284C, 0x327B},
+       {0x284D, 0x24D0},
+       {0x284E, 0x24D1},
+       {0x284F, 0x24D2},
+       {0x2850, 0x24D3},
+       {0x2851, 0x24D4},
+       {0x2852, 0x24D5},
+       {0x2853, 0x24D6},
+       {0x2854, 0x24D7},
+       {0x2855, 0x24D8},
+       {0x2856, 0x24D9},
+       {0x2857, 0x24DA},
+       {0x2858, 0x24DB},
+       {0x2859, 0x24DC},
+       {0x285A, 0x24DD},
+       {0x285B, 0x24DE},
+       {0x285C, 0x24DF},
+       {0x285D, 0x24E0},
+       {0x285E, 0x24E1},
+       {0x285F, 0x24E2},
+       {0x2860, 0x24E3},
+       {0x2861, 0x24E4},
+       {0x2862, 0x24E5},
+       {0x2863, 0x24E6},
+       {0x2864, 0x24E7},
+       {0x2865, 0x24E8},
+       {0x2866, 0x24E9},
+       {0x2867, 0x2460},
+       {0x2868, 0x2461},
+       {0x2869, 0x2462},
+       {0x286A, 0x2463},
+       {0x286B, 0x2464},
+       {0x286C, 0x2465},
+       {0x286D, 0x2466},
+       {0x286E, 0x2467},
+       {0x286F, 0x2468},
+       {0x2870, 0x2469},
+       {0x2871, 0x246A},
+       {0x2872, 0x246B},
+       {0x2873, 0x246C},
+       {0x2874, 0x246D},
+       {0x2875, 0x246E},
+       {0x2876, 0x00BD},
+       {0x2877, 0x2153},
+       {0x2878, 0x2154},
+       {0x2879, 0x00BC},
+       {0x287A, 0x00BE},
+       {0x287B, 0x215B},
+       {0x287C, 0x215C},
+       {0x287D, 0x215D},
+       {0x287E, 0x215E},
+       {0x2921, 0x00E6},
+       {0x2922, 0x0111},
+       {0x2923, 0x00F0},
+       {0x2924, 0x0127},
+       {0x2925, 0x0131},
+       {0x2926, 0x0133},
+       {0x2927, 0x0138},
+       {0x2928, 0x0140},
+       {0x2929, 0x0142},
+       {0x292A, 0x00F8},
+       {0x292B, 0x0153},
+       {0x292C, 0x00DF},
+       {0x292D, 0x00FE},
+       {0x292E, 0x0167},
+       {0x292F, 0x014B},
+       {0x2930, 0x0149},
+       {0x2931, 0x3200},
+       {0x2932, 0x3201},
+       {0x2933, 0x3202},
+       {0x2934, 0x3203},
+       {0x2935, 0x3204},
+       {0x2936, 0x3205},
+       {0x2937, 0x3206},
+       {0x2938, 0x3207},
+       {0x2939, 0x3208},
+       {0x293A, 0x3209},
+       {0x293B, 0x320A},
+       {0x293C, 0x320B},
+       {0x293D, 0x320C},
+       {0x293E, 0x320D},
+       {0x293F, 0x320E},
+       {0x2940, 0x320F},
+       {0x2941, 0x3210},
+       {0x2942, 0x3211},
+       {0x2943, 0x3212},
+       {0x2944, 0x3213},
+       {0x2945, 0x3214},
+       {0x2946, 0x3215},
+       {0x2947, 0x3216},
+       {0x2948, 0x3217},
+       {0x2949, 0x3218},
+       {0x294A, 0x3219},
+       {0x294B, 0x321A},
+       {0x294C, 0x321B},
+       {0x294D, 0x249C},
+       {0x294E, 0x249D},
+       {0x294F, 0x249E},
+       {0x2950, 0x249F},
+       {0x2951, 0x24A0},
+       {0x2952, 0x24A1},
+       {0x2953, 0x24A2},
+       {0x2954, 0x24A3},
+       {0x2955, 0x24A4},
+       {0x2956, 0x24A5},
+       {0x2957, 0x24A6},
+       {0x2958, 0x24A7},
+       {0x2959, 0x24A8},
+       {0x295A, 0x24A9},
+       {0x295B, 0x24AA},
+       {0x295C, 0x24AB},
+       {0x295D, 0x24AC},
+       {0x295E, 0x24AD},
+       {0x295F, 0x24AE},
+       {0x2960, 0x24AF},
+       {0x2961, 0x24B0},
+       {0x2962, 0x24B1},
+       {0x2963, 0x24B2},
+       {0x2964, 0x24B3},
+       {0x2965, 0x24B4},
+       {0x2966, 0x24B5},
+       {0x2967, 0x2474},
+       {0x2968, 0x2475},
+       {0x2969, 0x2476},
+       {0x296A, 0x2477},
+       {0x296B, 0x2478},
+       {0x296C, 0x2479},
+       {0x296D, 0x247A},
+       {0x296E, 0x247B},
+       {0x296F, 0x247C},
+       {0x2970, 0x247D},
+       {0x2971, 0x247E},
+       {0x2972, 0x247F},
+       {0x2973, 0x2480},
+       {0x2974, 0x2481},
+       {0x2975, 0x2482},
+       {0x2976, 0x00B9},
+       {0x2977, 0x00B2},
+       {0x2978, 0x00B3},
+       {0x2979, 0x2074},
+       {0x297A, 0x207F},
+       {0x297B, 0x2081},
+       {0x297C, 0x2082},
+       {0x297D, 0x2083},
+       {0x297E, 0x2084},
+       {0x2A21, 0x3041},
+       {0x2A22, 0x3042},
+       {0x2A23, 0x3043},
+       {0x2A24, 0x3044},
+       {0x2A25, 0x3045},
+       {0x2A26, 0x3046},
+       {0x2A27, 0x3047},
+       {0x2A28, 0x3048},
+       {0x2A29, 0x3049},
+       {0x2A2A, 0x304A},
+       {0x2A2B, 0x304B},
+       {0x2A2C, 0x304C},
+       {0x2A2D, 0x304D},
+       {0x2A2E, 0x304E},
+       {0x2A2F, 0x304F},
+       {0x2A30, 0x3050},
+       {0x2A31, 0x3051},
+       {0x2A32, 0x3052},
+       {0x2A33, 0x3053},
+       {0x2A34, 0x3054},
+       {0x2A35, 0x3055},
+       {0x2A36, 0x3056},
+       {0x2A37, 0x3057},
+       {0x2A38, 0x3058},
+       {0x2A39, 0x3059},
+       {0x2A3A, 0x305A},
+       {0x2A3B, 0x305B},
+       {0x2A3C, 0x305C},
+       {0x2A3D, 0x305D},
+       {0x2A3E, 0x305E},
+       {0x2A3F, 0x305F},
+       {0x2A40, 0x3060},
+       {0x2A41, 0x3061},
+       {0x2A42, 0x3062},
+       {0x2A43, 0x3063},
+       {0x2A44, 0x3064},
+       {0x2A45, 0x3065},
+       {0x2A46, 0x3066},
+       {0x2A47, 0x3067},
+       {0x2A48, 0x3068},
+       {0x2A49, 0x3069},
+       {0x2A4A, 0x306A},
+       {0x2A4B, 0x306B},
+       {0x2A4C, 0x306C},
+       {0x2A4D, 0x306D},
+       {0x2A4E, 0x306E},
+       {0x2A4F, 0x306F},
+       {0x2A50, 0x3070},
+       {0x2A51, 0x3071},
+       {0x2A52, 0x3072},
+       {0x2A53, 0x3073},
+       {0x2A54, 0x3074},
+       {0x2A55, 0x3075},
+       {0x2A56, 0x3076},
+       {0x2A57, 0x3077},
+       {0x2A58, 0x3078},
+       {0x2A59, 0x3079},
+       {0x2A5A, 0x307A},
+       {0x2A5B, 0x307B},
+       {0x2A5C, 0x307C},
+       {0x2A5D, 0x307D},
+       {0x2A5E, 0x307E},
+       {0x2A5F, 0x307F},
+       {0x2A60, 0x3080},
+       {0x2A61, 0x3081},
+       {0x2A62, 0x3082},
+       {0x2A63, 0x3083},
+       {0x2A64, 0x3084},
+       {0x2A65, 0x3085},
+       {0x2A66, 0x3086},
+       {0x2A67, 0x3087},
+       {0x2A68, 0x3088},
+       {0x2A69, 0x3089},
+       {0x2A6A, 0x308A},
+       {0x2A6B, 0x308B},
+       {0x2A6C, 0x308C},
+       {0x2A6D, 0x308D},
+       {0x2A6E, 0x308E},
+       {0x2A6F, 0x308F},
+       {0x2A70, 0x3090},
+       {0x2A71, 0x3091},
+       {0x2A72, 0x3092},
+       {0x2A73, 0x3093},
+       {0x2B21, 0x30A1},
+       {0x2B22, 0x30A2},
+       {0x2B23, 0x30A3},
+       {0x2B24, 0x30A4},
+       {0x2B25, 0x30A5},
+       {0x2B26, 0x30A6},
+       {0x2B27, 0x30A7},
+       {0x2B28, 0x30A8},
+       {0x2B29, 0x30A9},
+       {0x2B2A, 0x30AA},
+       {0x2B2B, 0x30AB},
+       {0x2B2C, 0x30AC},
+       {0x2B2D, 0x30AD},
+       {0x2B2E, 0x30AE},
+       {0x2B2F, 0x30AF},
+       {0x2B30, 0x30B0},
+       {0x2B31, 0x30B1},
+       {0x2B32, 0x30B2},
+       {0x2B33, 0x30B3},
+       {0x2B34, 0x30B4},
+       {0x2B35, 0x30B5},
+       {0x2B36, 0x30B6},
+       {0x2B37, 0x30B7},
+       {0x2B38, 0x30B8},
+       {0x2B39, 0x30B9},
+       {0x2B3A, 0x30BA},
+       {0x2B3B, 0x30BB},
+       {0x2B3C, 0x30BC},
+       {0x2B3D, 0x30BD},
+       {0x2B3E, 0x30BE},
+       {0x2B3F, 0x30BF},
+       {0x2B40, 0x30C0},
+       {0x2B41, 0x30C1},
+       {0x2B42, 0x30C2},
+       {0x2B43, 0x30C3},
+       {0x2B44, 0x30C4},
+       {0x2B45, 0x30C5},
+       {0x2B46, 0x30C6},
+       {0x2B47, 0x30C7},
+       {0x2B48, 0x30C8},
+       {0x2B49, 0x30C9},
+       {0x2B4A, 0x30CA},
+       {0x2B4B, 0x30CB},
+       {0x2B4C, 0x30CC},
+       {0x2B4D, 0x30CD},
+       {0x2B4E, 0x30CE},
+       {0x2B4F, 0x30CF},
+       {0x2B50, 0x30D0},
+       {0x2B51, 0x30D1},
+       {0x2B52, 0x30D2},
+       {0x2B53, 0x30D3},
+       {0x2B54, 0x30D4},
+       {0x2B55, 0x30D5},
+       {0x2B56, 0x30D6},
+       {0x2B57, 0x30D7},
+       {0x2B58, 0x30D8},
+       {0x2B59, 0x30D9},
+       {0x2B5A, 0x30DA},
+       {0x2B5B, 0x30DB},
+       {0x2B5C, 0x30DC},
+       {0x2B5D, 0x30DD},
+       {0x2B5E, 0x30DE},
+       {0x2B5F, 0x30DF},
+       {0x2B60, 0x30E0},
+       {0x2B61, 0x30E1},
+       {0x2B62, 0x30E2},
+       {0x2B63, 0x30E3},
+       {0x2B64, 0x30E4},
+       {0x2B65, 0x30E5},
+       {0x2B66, 0x30E6},
+       {0x2B67, 0x30E7},
+       {0x2B68, 0x30E8},
+       {0x2B69, 0x30E9},
+       {0x2B6A, 0x30EA},
+       {0x2B6B, 0x30EB},
+       {0x2B6C, 0x30EC},
+       {0x2B6D, 0x30ED},
+       {0x2B6E, 0x30EE},
+       {0x2B6F, 0x30EF},
+       {0x2B70, 0x30F0},
+       {0x2B71, 0x30F1},
+       {0x2B72, 0x30F2},
+       {0x2B73, 0x30F3},
+       {0x2B74, 0x30F4},
+       {0x2B75, 0x30F5},
+       {0x2B76, 0x30F6},
+       {0x2C21, 0x0410},
+       {0x2C22, 0x0411},
+       {0x2C23, 0x0412},
+       {0x2C24, 0x0413},
+       {0x2C25, 0x0414},
+       {0x2C26, 0x0415},
+       {0x2C27, 0x0401},
+       {0x2C28, 0x0416},
+       {0x2C29, 0x0417},
+       {0x2C2A, 0x0418},
+       {0x2C2B, 0x0419},
+       {0x2C2C, 0x041A},
+       {0x2C2D, 0x041B},
+       {0x2C2E, 0x041C},
+       {0x2C2F, 0x041D},
+       {0x2C30, 0x041E},
+       {0x2C31, 0x041F},
+       {0x2C32, 0x0420},
+       {0x2C33, 0x0421},
+       {0x2C34, 0x0422},
+       {0x2C35, 0x0423},
+       {0x2C36, 0x0424},
+       {0x2C37, 0x0425},
+       {0x2C38, 0x0426},
+       {0x2C39, 0x0427},
+       {0x2C3A, 0x0428},
+       {0x2C3B, 0x0429},
+       {0x2C3C, 0x042A},
+       {0x2C3D, 0x042B},
+       {0x2C3E, 0x042C},
+       {0x2C3F, 0x042D},
+       {0x2C40, 0x042E},
+       {0x2C41, 0x042F},
+       {0x2C51, 0x0430},
+       {0x2C52, 0x0431},
+       {0x2C53, 0x0432},
+       {0x2C54, 0x0433},
+       {0x2C55, 0x0434},
+       {0x2C56, 0x0435},
+       {0x2C57, 0x0451},
+       {0x2C58, 0x0436},
+       {0x2C59, 0x0437},
+       {0x2C5A, 0x0438},
+       {0x2C5B, 0x0439},
+       {0x2C5C, 0x043A},
+       {0x2C5D, 0x043B},
+       {0x2C5E, 0x043C},
+       {0x2C5F, 0x043D},
+       {0x2C60, 0x043E},
+       {0x2C61, 0x043F},
+       {0x2C62, 0x0440},
+       {0x2C63, 0x0441},
+       {0x2C64, 0x0442},
+       {0x2C65, 0x0443},
+       {0x2C66, 0x0444},
+       {0x2C67, 0x0445},
+       {0x2C68, 0x0446},
+       {0x2C69, 0x0447},
+       {0x2C6A, 0x0448},
+       {0x2C6B, 0x0449},
+       {0x2C6C, 0x044A},
+       {0x2C6D, 0x044B},
+       {0x2C6E, 0x044C},
+       {0x2C6F, 0x044D},
+       {0x2C70, 0x044E},
+       {0x2C71, 0x044F},
+       {0x3021, 0xAC00},
+       {0x3022, 0xAC01},
+       {0x3023, 0xAC04},
+       {0x3024, 0xAC07},
+       {0x3025, 0xAC08},
+       {0x3026, 0xAC09},
+       {0x3027, 0xAC0A},
+       {0x3028, 0xAC10},
+       {0x3029, 0xAC11},
+       {0x302A, 0xAC12},
+       {0x302B, 0xAC13},
+       {0x302C, 0xAC14},
+       {0x302D, 0xAC15},
+       {0x302E, 0xAC16},
+       {0x302F, 0xAC17},
+       {0x3030, 0xAC19},
+       {0x3031, 0xAC1A},
+       {0x3032, 0xAC1B},
+       {0x3033, 0xAC1C},
+       {0x3034, 0xAC1D},
+       {0x3035, 0xAC20},
+       {0x3036, 0xAC24},
+       {0x3037, 0xAC2C},
+       {0x3038, 0xAC2D},
+       {0x3039, 0xAC2F},
+       {0x303A, 0xAC30},
+       {0x303B, 0xAC31},
+       {0x303C, 0xAC38},
+       {0x303D, 0xAC39},
+       {0x303E, 0xAC3C},
+       {0x303F, 0xAC40},
+       {0x3040, 0xAC4B},
+       {0x3041, 0xAC4D},
+       {0x3042, 0xAC54},
+       {0x3043, 0xAC58},
+       {0x3044, 0xAC5C},
+       {0x3045, 0xAC70},
+       {0x3046, 0xAC71},
+       {0x3047, 0xAC74},
+       {0x3048, 0xAC77},
+       {0x3049, 0xAC78},
+       {0x304A, 0xAC7A},
+       {0x304B, 0xAC80},
+       {0x304C, 0xAC81},
+       {0x304D, 0xAC83},
+       {0x304E, 0xAC84},
+       {0x304F, 0xAC85},
+       {0x3050, 0xAC86},
+       {0x3051, 0xAC89},
+       {0x3052, 0xAC8A},
+       {0x3053, 0xAC8B},
+       {0x3054, 0xAC8C},
+       {0x3055, 0xAC90},
+       {0x3056, 0xAC94},
+       {0x3057, 0xAC9C},
+       {0x3058, 0xAC9D},
+       {0x3059, 0xAC9F},
+       {0x305A, 0xACA0},
+       {0x305B, 0xACA1},
+       {0x305C, 0xACA8},
+       {0x305D, 0xACA9},
+       {0x305E, 0xACAA},
+       {0x305F, 0xACAC},
+       {0x3060, 0xACAF},
+       {0x3061, 0xACB0},
+       {0x3062, 0xACB8},
+       {0x3063, 0xACB9},
+       {0x3064, 0xACBB},
+       {0x3065, 0xACBC},
+       {0x3066, 0xACBD},
+       {0x3067, 0xACC1},
+       {0x3068, 0xACC4},
+       {0x3069, 0xACC8},
+       {0x306A, 0xACCC},
+       {0x306B, 0xACD5},
+       {0x306C, 0xACD7},
+       {0x306D, 0xACE0},
+       {0x306E, 0xACE1},
+       {0x306F, 0xACE4},
+       {0x3070, 0xACE7},
+       {0x3071, 0xACE8},
+       {0x3072, 0xACEA},
+       {0x3073, 0xACEC},
+       {0x3074, 0xACEF},
+       {0x3075, 0xACF0},
+       {0x3076, 0xACF1},
+       {0x3077, 0xACF3},
+       {0x3078, 0xACF5},
+       {0x3079, 0xACF6},
+       {0x307A, 0xACFC},
+       {0x307B, 0xACFD},
+       {0x307C, 0xAD00},
+       {0x307D, 0xAD04},
+       {0x307E, 0xAD06},
+       {0x3121, 0xAD0C},
+       {0x3122, 0xAD0D},
+       {0x3123, 0xAD0F},
+       {0x3124, 0xAD11},
+       {0x3125, 0xAD18},
+       {0x3126, 0xAD1C},
+       {0x3127, 0xAD20},
+       {0x3128, 0xAD29},
+       {0x3129, 0xAD2C},
+       {0x312A, 0xAD2D},
+       {0x312B, 0xAD34},
+       {0x312C, 0xAD35},
+       {0x312D, 0xAD38},
+       {0x312E, 0xAD3C},
+       {0x312F, 0xAD44},
+       {0x3130, 0xAD45},
+       {0x3131, 0xAD47},
+       {0x3132, 0xAD49},
+       {0x3133, 0xAD50},
+       {0x3134, 0xAD54},
+       {0x3135, 0xAD58},
+       {0x3136, 0xAD61},
+       {0x3137, 0xAD63},
+       {0x3138, 0xAD6C},
+       {0x3139, 0xAD6D},
+       {0x313A, 0xAD70},
+       {0x313B, 0xAD73},
+       {0x313C, 0xAD74},
+       {0x313D, 0xAD75},
+       {0x313E, 0xAD76},
+       {0x313F, 0xAD7B},
+       {0x3140, 0xAD7C},
+       {0x3141, 0xAD7D},
+       {0x3142, 0xAD7F},
+       {0x3143, 0xAD81},
+       {0x3144, 0xAD82},
+       {0x3145, 0xAD88},
+       {0x3146, 0xAD89},
+       {0x3147, 0xAD8C},
+       {0x3148, 0xAD90},
+       {0x3149, 0xAD9C},
+       {0x314A, 0xAD9D},
+       {0x314B, 0xADA4},
+       {0x314C, 0xADB7},
+       {0x314D, 0xADC0},
+       {0x314E, 0xADC1},
+       {0x314F, 0xADC4},
+       {0x3150, 0xADC8},
+       {0x3151, 0xADD0},
+       {0x3152, 0xADD1},
+       {0x3153, 0xADD3},
+       {0x3154, 0xADDC},
+       {0x3155, 0xADE0},
+       {0x3156, 0xADE4},
+       {0x3157, 0xADF8},
+       {0x3158, 0xADF9},
+       {0x3159, 0xADFC},
+       {0x315A, 0xADFF},
+       {0x315B, 0xAE00},
+       {0x315C, 0xAE01},
+       {0x315D, 0xAE08},
+       {0x315E, 0xAE09},
+       {0x315F, 0xAE0B},
+       {0x3160, 0xAE0D},
+       {0x3161, 0xAE14},
+       {0x3162, 0xAE30},
+       {0x3163, 0xAE31},
+       {0x3164, 0xAE34},
+       {0x3165, 0xAE37},
+       {0x3166, 0xAE38},
+       {0x3167, 0xAE3A},
+       {0x3168, 0xAE40},
+       {0x3169, 0xAE41},
+       {0x316A, 0xAE43},
+       {0x316B, 0xAE45},
+       {0x316C, 0xAE46},
+       {0x316D, 0xAE4A},
+       {0x316E, 0xAE4C},
+       {0x316F, 0xAE4D},
+       {0x3170, 0xAE4E},
+       {0x3171, 0xAE50},
+       {0x3172, 0xAE54},
+       {0x3173, 0xAE56},
+       {0x3174, 0xAE5C},
+       {0x3175, 0xAE5D},
+       {0x3176, 0xAE5F},
+       {0x3177, 0xAE60},
+       {0x3178, 0xAE61},
+       {0x3179, 0xAE65},
+       {0x317A, 0xAE68},
+       {0x317B, 0xAE69},
+       {0x317C, 0xAE6C},
+       {0x317D, 0xAE70},
+       {0x317E, 0xAE78},
+       {0x3221, 0xAE79},
+       {0x3222, 0xAE7B},
+       {0x3223, 0xAE7C},
+       {0x3224, 0xAE7D},
+       {0x3225, 0xAE84},
+       {0x3226, 0xAE85},
+       {0x3227, 0xAE8C},
+       {0x3228, 0xAEBC},
+       {0x3229, 0xAEBD},
+       {0x322A, 0xAEBE},
+       {0x322B, 0xAEC0},
+       {0x322C, 0xAEC4},
+       {0x322D, 0xAECC},
+       {0x322E, 0xAECD},
+       {0x322F, 0xAECF},
+       {0x3230, 0xAED0},
+       {0x3231, 0xAED1},
+       {0x3232, 0xAED8},
+       {0x3233, 0xAED9},
+       {0x3234, 0xAEDC},
+       {0x3235, 0xAEE8},
+       {0x3236, 0xAEEB},
+       {0x3237, 0xAEED},
+       {0x3238, 0xAEF4},
+       {0x3239, 0xAEF8},
+       {0x323A, 0xAEFC},
+       {0x323B, 0xAF07},
+       {0x323C, 0xAF08},
+       {0x323D, 0xAF0D},
+       {0x323E, 0xAF10},
+       {0x323F, 0xAF2C},
+       {0x3240, 0xAF2D},
+       {0x3241, 0xAF30},
+       {0x3242, 0xAF32},
+       {0x3243, 0xAF34},
+       {0x3244, 0xAF3C},
+       {0x3245, 0xAF3D},
+       {0x3246, 0xAF3F},
+       {0x3247, 0xAF41},
+       {0x3248, 0xAF42},
+       {0x3249, 0xAF43},
+       {0x324A, 0xAF48},
+       {0x324B, 0xAF49},
+       {0x324C, 0xAF50},
+       {0x324D, 0xAF5C},
+       {0x324E, 0xAF5D},
+       {0x324F, 0xAF64},
+       {0x3250, 0xAF65},
+       {0x3251, 0xAF79},
+       {0x3252, 0xAF80},
+       {0x3253, 0xAF84},
+       {0x3254, 0xAF88},
+       {0x3255, 0xAF90},
+       {0x3256, 0xAF91},
+       {0x3257, 0xAF95},
+       {0x3258, 0xAF9C},
+       {0x3259, 0xAFB8},
+       {0x325A, 0xAFB9},
+       {0x325B, 0xAFBC},
+       {0x325C, 0xAFC0},
+       {0x325D, 0xAFC7},
+       {0x325E, 0xAFC8},
+       {0x325F, 0xAFC9},
+       {0x3260, 0xAFCB},
+       {0x3261, 0xAFCD},
+       {0x3262, 0xAFCE},
+       {0x3263, 0xAFD4},
+       {0x3264, 0xAFDC},
+       {0x3265, 0xAFE8},
+       {0x3266, 0xAFE9},
+       {0x3267, 0xAFF0},
+       {0x3268, 0xAFF1},
+       {0x3269, 0xAFF4},
+       {0x326A, 0xAFF8},
+       {0x326B, 0xB000},
+       {0x326C, 0xB001},
+       {0x326D, 0xB004},
+       {0x326E, 0xB00C},
+       {0x326F, 0xB010},
+       {0x3270, 0xB014},
+       {0x3271, 0xB01C},
+       {0x3272, 0xB01D},
+       {0x3273, 0xB028},
+       {0x3274, 0xB044},
+       {0x3275, 0xB045},
+       {0x3276, 0xB048},
+       {0x3277, 0xB04A},
+       {0x3278, 0xB04C},
+       {0x3279, 0xB04E},
+       {0x327A, 0xB053},
+       {0x327B, 0xB054},
+       {0x327C, 0xB055},
+       {0x327D, 0xB057},
+       {0x327E, 0xB059},
+       {0x3321, 0xB05D},
+       {0x3322, 0xB07C},
+       {0x3323, 0xB07D},
+       {0x3324, 0xB080},
+       {0x3325, 0xB084},
+       {0x3326, 0xB08C},
+       {0x3327, 0xB08D},
+       {0x3328, 0xB08F},
+       {0x3329, 0xB091},
+       {0x332A, 0xB098},
+       {0x332B, 0xB099},
+       {0x332C, 0xB09A},
+       {0x332D, 0xB09C},
+       {0x332E, 0xB09F},
+       {0x332F, 0xB0A0},
+       {0x3330, 0xB0A1},
+       {0x3331, 0xB0A2},
+       {0x3332, 0xB0A8},
+       {0x3333, 0xB0A9},
+       {0x3334, 0xB0AB},
+       {0x3335, 0xB0AC},
+       {0x3336, 0xB0AD},
+       {0x3337, 0xB0AE},
+       {0x3338, 0xB0AF},
+       {0x3339, 0xB0B1},
+       {0x333A, 0xB0B3},
+       {0x333B, 0xB0B4},
+       {0x333C, 0xB0B5},
+       {0x333D, 0xB0B8},
+       {0x333E, 0xB0BC},
+       {0x333F, 0xB0C4},
+       {0x3340, 0xB0C5},
+       {0x3341, 0xB0C7},
+       {0x3342, 0xB0C8},
+       {0x3343, 0xB0C9},
+       {0x3344, 0xB0D0},
+       {0x3345, 0xB0D1},
+       {0x3346, 0xB0D4},
+       {0x3347, 0xB0D8},
+       {0x3348, 0xB0E0},
+       {0x3349, 0xB0E5},
+       {0x334A, 0xB108},
+       {0x334B, 0xB109},
+       {0x334C, 0xB10B},
+       {0x334D, 0xB10C},
+       {0x334E, 0xB110},
+       {0x334F, 0xB112},
+       {0x3350, 0xB113},
+       {0x3351, 0xB118},
+       {0x3352, 0xB119},
+       {0x3353, 0xB11B},
+       {0x3354, 0xB11C},
+       {0x3355, 0xB11D},
+       {0x3356, 0xB123},
+       {0x3357, 0xB124},
+       {0x3358, 0xB125},
+       {0x3359, 0xB128},
+       {0x335A, 0xB12C},
+       {0x335B, 0xB134},
+       {0x335C, 0xB135},
+       {0x335D, 0xB137},
+       {0x335E, 0xB138},
+       {0x335F, 0xB139},
+       {0x3360, 0xB140},
+       {0x3361, 0xB141},
+       {0x3362, 0xB144},
+       {0x3363, 0xB148},
+       {0x3364, 0xB150},
+       {0x3365, 0xB151},
+       {0x3366, 0xB154},
+       {0x3367, 0xB155},
+       {0x3368, 0xB158},
+       {0x3369, 0xB15C},
+       {0x336A, 0xB160},
+       {0x336B, 0xB178},
+       {0x336C, 0xB179},
+       {0x336D, 0xB17C},
+       {0x336E, 0xB180},
+       {0x336F, 0xB182},
+       {0x3370, 0xB188},
+       {0x3371, 0xB189},
+       {0x3372, 0xB18B},
+       {0x3373, 0xB18D},
+       {0x3374, 0xB192},
+       {0x3375, 0xB193},
+       {0x3376, 0xB194},
+       {0x3377, 0xB198},
+       {0x3378, 0xB19C},
+       {0x3379, 0xB1A8},
+       {0x337A, 0xB1CC},
+       {0x337B, 0xB1D0},
+       {0x337C, 0xB1D4},
+       {0x337D, 0xB1DC},
+       {0x337E, 0xB1DD},
+       {0x3421, 0xB1DF},
+       {0x3422, 0xB1E8},
+       {0x3423, 0xB1E9},
+       {0x3424, 0xB1EC},
+       {0x3425, 0xB1F0},
+       {0x3426, 0xB1F9},
+       {0x3427, 0xB1FB},
+       {0x3428, 0xB1FD},
+       {0x3429, 0xB204},
+       {0x342A, 0xB205},
+       {0x342B, 0xB208},
+       {0x342C, 0xB20B},
+       {0x342D, 0xB20C},
+       {0x342E, 0xB214},
+       {0x342F, 0xB215},
+       {0x3430, 0xB217},
+       {0x3431, 0xB219},
+       {0x3432, 0xB220},
+       {0x3433, 0xB234},
+       {0x3434, 0xB23C},
+       {0x3435, 0xB258},
+       {0x3436, 0xB25C},
+       {0x3437, 0xB260},
+       {0x3438, 0xB268},
+       {0x3439, 0xB269},
+       {0x343A, 0xB274},
+       {0x343B, 0xB275},
+       {0x343C, 0xB27C},
+       {0x343D, 0xB284},
+       {0x343E, 0xB285},
+       {0x343F, 0xB289},
+       {0x3440, 0xB290},
+       {0x3441, 0xB291},
+       {0x3442, 0xB294},
+       {0x3443, 0xB298},
+       {0x3444, 0xB299},
+       {0x3445, 0xB29A},
+       {0x3446, 0xB2A0},
+       {0x3447, 0xB2A1},
+       {0x3448, 0xB2A3},
+       {0x3449, 0xB2A5},
+       {0x344A, 0xB2A6},
+       {0x344B, 0xB2AA},
+       {0x344C, 0xB2AC},
+       {0x344D, 0xB2B0},
+       {0x344E, 0xB2B4},
+       {0x344F, 0xB2C8},
+       {0x3450, 0xB2C9},
+       {0x3451, 0xB2CC},
+       {0x3452, 0xB2D0},
+       {0x3453, 0xB2D2},
+       {0x3454, 0xB2D8},
+       {0x3455, 0xB2D9},
+       {0x3456, 0xB2DB},
+       {0x3457, 0xB2DD},
+       {0x3458, 0xB2E2},
+       {0x3459, 0xB2E4},
+       {0x345A, 0xB2E5},
+       {0x345B, 0xB2E6},
+       {0x345C, 0xB2E8},
+       {0x345D, 0xB2EB},
+       {0x345E, 0xB2EC},
+       {0x345F, 0xB2ED},
+       {0x3460, 0xB2EE},
+       {0x3461, 0xB2EF},
+       {0x3462, 0xB2F3},
+       {0x3463, 0xB2F4},
+       {0x3464, 0xB2F5},
+       {0x3465, 0xB2F7},
+       {0x3466, 0xB2F8},
+       {0x3467, 0xB2F9},
+       {0x3468, 0xB2FA},
+       {0x3469, 0xB2FB},
+       {0x346A, 0xB2FF},
+       {0x346B, 0xB300},
+       {0x346C, 0xB301},
+       {0x346D, 0xB304},
+       {0x346E, 0xB308},
+       {0x346F, 0xB310},
+       {0x3470, 0xB311},
+       {0x3471, 0xB313},
+       {0x3472, 0xB314},
+       {0x3473, 0xB315},
+       {0x3474, 0xB31C},
+       {0x3475, 0xB354},
+       {0x3476, 0xB355},
+       {0x3477, 0xB356},
+       {0x3478, 0xB358},
+       {0x3479, 0xB35B},
+       {0x347A, 0xB35C},
+       {0x347B, 0xB35E},
+       {0x347C, 0xB35F},
+       {0x347D, 0xB364},
+       {0x347E, 0xB365},
+       {0x3521, 0xB367},
+       {0x3522, 0xB369},
+       {0x3523, 0xB36B},
+       {0x3524, 0xB36E},
+       {0x3525, 0xB370},
+       {0x3526, 0xB371},
+       {0x3527, 0xB374},
+       {0x3528, 0xB378},
+       {0x3529, 0xB380},
+       {0x352A, 0xB381},
+       {0x352B, 0xB383},
+       {0x352C, 0xB384},
+       {0x352D, 0xB385},
+       {0x352E, 0xB38C},
+       {0x352F, 0xB390},
+       {0x3530, 0xB394},
+       {0x3531, 0xB3A0},
+       {0x3532, 0xB3A1},
+       {0x3533, 0xB3A8},
+       {0x3534, 0xB3AC},
+       {0x3535, 0xB3C4},
+       {0x3536, 0xB3C5},
+       {0x3537, 0xB3C8},
+       {0x3538, 0xB3CB},
+       {0x3539, 0xB3CC},
+       {0x353A, 0xB3CE},
+       {0x353B, 0xB3D0},
+       {0x353C, 0xB3D4},
+       {0x353D, 0xB3D5},
+       {0x353E, 0xB3D7},
+       {0x353F, 0xB3D9},
+       {0x3540, 0xB3DB},
+       {0x3541, 0xB3DD},
+       {0x3542, 0xB3E0},
+       {0x3543, 0xB3E4},
+       {0x3544, 0xB3E8},
+       {0x3545, 0xB3FC},
+       {0x3546, 0xB410},
+       {0x3547, 0xB418},
+       {0x3548, 0xB41C},
+       {0x3549, 0xB420},
+       {0x354A, 0xB428},
+       {0x354B, 0xB429},
+       {0x354C, 0xB42B},
+       {0x354D, 0xB434},
+       {0x354E, 0xB450},
+       {0x354F, 0xB451},
+       {0x3550, 0xB454},
+       {0x3551, 0xB458},
+       {0x3552, 0xB460},
+       {0x3553, 0xB461},
+       {0x3554, 0xB463},
+       {0x3555, 0xB465},
+       {0x3556, 0xB46C},
+       {0x3557, 0xB480},
+       {0x3558, 0xB488},
+       {0x3559, 0xB49D},
+       {0x355A, 0xB4A4},
+       {0x355B, 0xB4A8},
+       {0x355C, 0xB4AC},
+       {0x355D, 0xB4B5},
+       {0x355E, 0xB4B7},
+       {0x355F, 0xB4B9},
+       {0x3560, 0xB4C0},
+       {0x3561, 0xB4C4},
+       {0x3562, 0xB4C8},
+       {0x3563, 0xB4D0},
+       {0x3564, 0xB4D5},
+       {0x3565, 0xB4DC},
+       {0x3566, 0xB4DD},
+       {0x3567, 0xB4E0},
+       {0x3568, 0xB4E3},
+       {0x3569, 0xB4E4},
+       {0x356A, 0xB4E6},
+       {0x356B, 0xB4EC},
+       {0x356C, 0xB4ED},
+       {0x356D, 0xB4EF},
+       {0x356E, 0xB4F1},
+       {0x356F, 0xB4F8},
+       {0x3570, 0xB514},
+       {0x3571, 0xB515},
+       {0x3572, 0xB518},
+       {0x3573, 0xB51B},
+       {0x3574, 0xB51C},
+       {0x3575, 0xB524},
+       {0x3576, 0xB525},
+       {0x3577, 0xB527},
+       {0x3578, 0xB528},
+       {0x3579, 0xB529},
+       {0x357A, 0xB52A},
+       {0x357B, 0xB530},
+       {0x357C, 0xB531},
+       {0x357D, 0xB534},
+       {0x357E, 0xB538},
+       {0x3621, 0xB540},
+       {0x3622, 0xB541},
+       {0x3623, 0xB543},
+       {0x3624, 0xB544},
+       {0x3625, 0xB545},
+       {0x3626, 0xB54B},
+       {0x3627, 0xB54C},
+       {0x3628, 0xB54D},
+       {0x3629, 0xB550},
+       {0x362A, 0xB554},
+       {0x362B, 0xB55C},
+       {0x362C, 0xB55D},
+       {0x362D, 0xB55F},
+       {0x362E, 0xB560},
+       {0x362F, 0xB561},
+       {0x3630, 0xB5A0},
+       {0x3631, 0xB5A1},
+       {0x3632, 0xB5A4},
+       {0x3633, 0xB5A8},
+       {0x3634, 0xB5AA},
+       {0x3635, 0xB5AB},
+       {0x3636, 0xB5B0},
+       {0x3637, 0xB5B1},
+       {0x3638, 0xB5B3},
+       {0x3639, 0xB5B4},
+       {0x363A, 0xB5B5},
+       {0x363B, 0xB5BB},
+       {0x363C, 0xB5BC},
+       {0x363D, 0xB5BD},
+       {0x363E, 0xB5C0},
+       {0x363F, 0xB5C4},
+       {0x3640, 0xB5CC},
+       {0x3641, 0xB5CD},
+       {0x3642, 0xB5CF},
+       {0x3643, 0xB5D0},
+       {0x3644, 0xB5D1},
+       {0x3645, 0xB5D8},
+       {0x3646, 0xB5EC},
+       {0x3647, 0xB610},
+       {0x3648, 0xB611},
+       {0x3649, 0xB614},
+       {0x364A, 0xB618},
+       {0x364B, 0xB625},
+       {0x364C, 0xB62C},
+       {0x364D, 0xB634},
+       {0x364E, 0xB648},
+       {0x364F, 0xB664},
+       {0x3650, 0xB668},
+       {0x3651, 0xB69C},
+       {0x3652, 0xB69D},
+       {0x3653, 0xB6A0},
+       {0x3654, 0xB6A4},
+       {0x3655, 0xB6AB},
+       {0x3656, 0xB6AC},
+       {0x3657, 0xB6B1},
+       {0x3658, 0xB6D4},
+       {0x3659, 0xB6F0},
+       {0x365A, 0xB6F4},
+       {0x365B, 0xB6F8},
+       {0x365C, 0xB700},
+       {0x365D, 0xB701},
+       {0x365E, 0xB705},
+       {0x365F, 0xB728},
+       {0x3660, 0xB729},
+       {0x3661, 0xB72C},
+       {0x3662, 0xB72F},
+       {0x3663, 0xB730},
+       {0x3664, 0xB738},
+       {0x3665, 0xB739},
+       {0x3666, 0xB73B},
+       {0x3667, 0xB744},
+       {0x3668, 0xB748},
+       {0x3669, 0xB74C},
+       {0x366A, 0xB754},
+       {0x366B, 0xB755},
+       {0x366C, 0xB760},
+       {0x366D, 0xB764},
+       {0x366E, 0xB768},
+       {0x366F, 0xB770},
+       {0x3670, 0xB771},
+       {0x3671, 0xB773},
+       {0x3672, 0xB775},
+       {0x3673, 0xB77C},
+       {0x3674, 0xB77D},
+       {0x3675, 0xB780},
+       {0x3676, 0xB784},
+       {0x3677, 0xB78C},
+       {0x3678, 0xB78D},
+       {0x3679, 0xB78F},
+       {0x367A, 0xB790},
+       {0x367B, 0xB791},
+       {0x367C, 0xB792},
+       {0x367D, 0xB796},
+       {0x367E, 0xB797},
+       {0x3721, 0xB798},
+       {0x3722, 0xB799},
+       {0x3723, 0xB79C},
+       {0x3724, 0xB7A0},
+       {0x3725, 0xB7A8},
+       {0x3726, 0xB7A9},
+       {0x3727, 0xB7AB},
+       {0x3728, 0xB7AC},
+       {0x3729, 0xB7AD},
+       {0x372A, 0xB7B4},
+       {0x372B, 0xB7B5},
+       {0x372C, 0xB7B8},
+       {0x372D, 0xB7C7},
+       {0x372E, 0xB7C9},
+       {0x372F, 0xB7EC},
+       {0x3730, 0xB7ED},
+       {0x3731, 0xB7F0},
+       {0x3732, 0xB7F4},
+       {0x3733, 0xB7FC},
+       {0x3734, 0xB7FD},
+       {0x3735, 0xB7FF},
+       {0x3736, 0xB800},
+       {0x3737, 0xB801},
+       {0x3738, 0xB807},
+       {0x3739, 0xB808},
+       {0x373A, 0xB809},
+       {0x373B, 0xB80C},
+       {0x373C, 0xB810},
+       {0x373D, 0xB818},
+       {0x373E, 0xB819},
+       {0x373F, 0xB81B},
+       {0x3740, 0xB81D},
+       {0x3741, 0xB824},
+       {0x3742, 0xB825},
+       {0x3743, 0xB828},
+       {0x3744, 0xB82C},
+       {0x3745, 0xB834},
+       {0x3746, 0xB835},
+       {0x3747, 0xB837},
+       {0x3748, 0xB838},
+       {0x3749, 0xB839},
+       {0x374A, 0xB840},
+       {0x374B, 0xB844},
+       {0x374C, 0xB851},
+       {0x374D, 0xB853},
+       {0x374E, 0xB85C},
+       {0x374F, 0xB85D},
+       {0x3750, 0xB860},
+       {0x3751, 0xB864},
+       {0x3752, 0xB86C},
+       {0x3753, 0xB86D},
+       {0x3754, 0xB86F},
+       {0x3755, 0xB871},
+       {0x3756, 0xB878},
+       {0x3757, 0xB87C},
+       {0x3758, 0xB88D},
+       {0x3759, 0xB8A8},
+       {0x375A, 0xB8B0},
+       {0x375B, 0xB8B4},
+       {0x375C, 0xB8B8},
+       {0x375D, 0xB8C0},
+       {0x375E, 0xB8C1},
+       {0x375F, 0xB8C3},
+       {0x3760, 0xB8C5},
+       {0x3761, 0xB8CC},
+       {0x3762, 0xB8D0},
+       {0x3763, 0xB8D4},
+       {0x3764, 0xB8DD},
+       {0x3765, 0xB8DF},
+       {0x3766, 0xB8E1},
+       {0x3767, 0xB8E8},
+       {0x3768, 0xB8E9},
+       {0x3769, 0xB8EC},
+       {0x376A, 0xB8F0},
+       {0x376B, 0xB8F8},
+       {0x376C, 0xB8F9},
+       {0x376D, 0xB8FB},
+       {0x376E, 0xB8FD},
+       {0x376F, 0xB904},
+       {0x3770, 0xB918},
+       {0x3771, 0xB920},
+       {0x3772, 0xB93C},
+       {0x3773, 0xB93D},
+       {0x3774, 0xB940},
+       {0x3775, 0xB944},
+       {0x3776, 0xB94C},
+       {0x3777, 0xB94F},
+       {0x3778, 0xB951},
+       {0x3779, 0xB958},
+       {0x377A, 0xB959},
+       {0x377B, 0xB95C},
+       {0x377C, 0xB960},
+       {0x377D, 0xB968},
+       {0x377E, 0xB969},
+       {0x3821, 0xB96B},
+       {0x3822, 0xB96D},
+       {0x3823, 0xB974},
+       {0x3824, 0xB975},
+       {0x3825, 0xB978},
+       {0x3826, 0xB97C},
+       {0x3827, 0xB984},
+       {0x3828, 0xB985},
+       {0x3829, 0xB987},
+       {0x382A, 0xB989},
+       {0x382B, 0xB98A},
+       {0x382C, 0xB98D},
+       {0x382D, 0xB98E},
+       {0x382E, 0xB9AC},
+       {0x382F, 0xB9AD},
+       {0x3830, 0xB9B0},
+       {0x3831, 0xB9B4},
+       {0x3832, 0xB9BC},
+       {0x3833, 0xB9BD},
+       {0x3834, 0xB9BF},
+       {0x3835, 0xB9C1},
+       {0x3836, 0xB9C8},
+       {0x3837, 0xB9C9},
+       {0x3838, 0xB9CC},
+       {0x3839, 0xB9CE},
+       {0x383A, 0xB9CF},
+       {0x383B, 0xB9D0},
+       {0x383C, 0xB9D1},
+       {0x383D, 0xB9D2},
+       {0x383E, 0xB9D8},
+       {0x383F, 0xB9D9},
+       {0x3840, 0xB9DB},
+       {0x3841, 0xB9DD},
+       {0x3842, 0xB9DE},
+       {0x3843, 0xB9E1},
+       {0x3844, 0xB9E3},
+       {0x3845, 0xB9E4},
+       {0x3846, 0xB9E5},
+       {0x3847, 0xB9E8},
+       {0x3848, 0xB9EC},
+       {0x3849, 0xB9F4},
+       {0x384A, 0xB9F5},
+       {0x384B, 0xB9F7},
+       {0x384C, 0xB9F8},
+       {0x384D, 0xB9F9},
+       {0x384E, 0xB9FA},
+       {0x384F, 0xBA00},
+       {0x3850, 0xBA01},
+       {0x3851, 0xBA08},
+       {0x3852, 0xBA15},
+       {0x3853, 0xBA38},
+       {0x3854, 0xBA39},
+       {0x3855, 0xBA3C},
+       {0x3856, 0xBA40},
+       {0x3857, 0xBA42},
+       {0x3858, 0xBA48},
+       {0x3859, 0xBA49},
+       {0x385A, 0xBA4B},
+       {0x385B, 0xBA4D},
+       {0x385C, 0xBA4E},
+       {0x385D, 0xBA53},
+       {0x385E, 0xBA54},
+       {0x385F, 0xBA55},
+       {0x3860, 0xBA58},
+       {0x3861, 0xBA5C},
+       {0x3862, 0xBA64},
+       {0x3863, 0xBA65},
+       {0x3864, 0xBA67},
+       {0x3865, 0xBA68},
+       {0x3866, 0xBA69},
+       {0x3867, 0xBA70},
+       {0x3868, 0xBA71},
+       {0x3869, 0xBA74},
+       {0x386A, 0xBA78},
+       {0x386B, 0xBA83},
+       {0x386C, 0xBA84},
+       {0x386D, 0xBA85},
+       {0x386E, 0xBA87},
+       {0x386F, 0xBA8C},
+       {0x3870, 0xBAA8},
+       {0x3871, 0xBAA9},
+       {0x3872, 0xBAAB},
+       {0x3873, 0xBAAC},
+       {0x3874, 0xBAB0},
+       {0x3875, 0xBAB2},
+       {0x3876, 0xBAB8},
+       {0x3877, 0xBAB9},
+       {0x3878, 0xBABB},
+       {0x3879, 0xBABD},
+       {0x387A, 0xBAC4},
+       {0x387B, 0xBAC8},
+       {0x387C, 0xBAD8},
+       {0x387D, 0xBAD9},
+       {0x387E, 0xBAFC},
+       {0x3921, 0xBB00},
+       {0x3922, 0xBB04},
+       {0x3923, 0xBB0D},
+       {0x3924, 0xBB0F},
+       {0x3925, 0xBB11},
+       {0x3926, 0xBB18},
+       {0x3927, 0xBB1C},
+       {0x3928, 0xBB20},
+       {0x3929, 0xBB29},
+       {0x392A, 0xBB2B},
+       {0x392B, 0xBB34},
+       {0x392C, 0xBB35},
+       {0x392D, 0xBB36},
+       {0x392E, 0xBB38},
+       {0x392F, 0xBB3B},
+       {0x3930, 0xBB3C},
+       {0x3931, 0xBB3D},
+       {0x3932, 0xBB3E},
+       {0x3933, 0xBB44},
+       {0x3934, 0xBB45},
+       {0x3935, 0xBB47},
+       {0x3936, 0xBB49},
+       {0x3937, 0xBB4D},
+       {0x3938, 0xBB4F},
+       {0x3939, 0xBB50},
+       {0x393A, 0xBB54},
+       {0x393B, 0xBB58},
+       {0x393C, 0xBB61},
+       {0x393D, 0xBB63},
+       {0x393E, 0xBB6C},
+       {0x393F, 0xBB88},
+       {0x3940, 0xBB8C},
+       {0x3941, 0xBB90},
+       {0x3942, 0xBBA4},
+       {0x3943, 0xBBA8},
+       {0x3944, 0xBBAC},
+       {0x3945, 0xBBB4},
+       {0x3946, 0xBBB7},
+       {0x3947, 0xBBC0},
+       {0x3948, 0xBBC4},
+       {0x3949, 0xBBC8},
+       {0x394A, 0xBBD0},
+       {0x394B, 0xBBD3},
+       {0x394C, 0xBBF8},
+       {0x394D, 0xBBF9},
+       {0x394E, 0xBBFC},
+       {0x394F, 0xBBFF},
+       {0x3950, 0xBC00},
+       {0x3951, 0xBC02},
+       {0x3952, 0xBC08},
+       {0x3953, 0xBC09},
+       {0x3954, 0xBC0B},
+       {0x3955, 0xBC0C},
+       {0x3956, 0xBC0D},
+       {0x3957, 0xBC0F},
+       {0x3958, 0xBC11},
+       {0x3959, 0xBC14},
+       {0x395A, 0xBC15},
+       {0x395B, 0xBC16},
+       {0x395C, 0xBC17},
+       {0x395D, 0xBC18},
+       {0x395E, 0xBC1B},
+       {0x395F, 0xBC1C},
+       {0x3960, 0xBC1D},
+       {0x3961, 0xBC1E},
+       {0x3962, 0xBC1F},
+       {0x3963, 0xBC24},
+       {0x3964, 0xBC25},
+       {0x3965, 0xBC27},
+       {0x3966, 0xBC29},
+       {0x3967, 0xBC2D},
+       {0x3968, 0xBC30},
+       {0x3969, 0xBC31},
+       {0x396A, 0xBC34},
+       {0x396B, 0xBC38},
+       {0x396C, 0xBC40},
+       {0x396D, 0xBC41},
+       {0x396E, 0xBC43},
+       {0x396F, 0xBC44},
+       {0x3970, 0xBC45},
+       {0x3971, 0xBC49},
+       {0x3972, 0xBC4C},
+       {0x3973, 0xBC4D},
+       {0x3974, 0xBC50},
+       {0x3975, 0xBC5D},
+       {0x3976, 0xBC84},
+       {0x3977, 0xBC85},
+       {0x3978, 0xBC88},
+       {0x3979, 0xBC8B},
+       {0x397A, 0xBC8C},
+       {0x397B, 0xBC8E},
+       {0x397C, 0xBC94},
+       {0x397D, 0xBC95},
+       {0x397E, 0xBC97},
+       {0x3A21, 0xBC99},
+       {0x3A22, 0xBC9A},
+       {0x3A23, 0xBCA0},
+       {0x3A24, 0xBCA1},
+       {0x3A25, 0xBCA4},
+       {0x3A26, 0xBCA7},
+       {0x3A27, 0xBCA8},
+       {0x3A28, 0xBCB0},
+       {0x3A29, 0xBCB1},
+       {0x3A2A, 0xBCB3},
+       {0x3A2B, 0xBCB4},
+       {0x3A2C, 0xBCB5},
+       {0x3A2D, 0xBCBC},
+       {0x3A2E, 0xBCBD},
+       {0x3A2F, 0xBCC0},
+       {0x3A30, 0xBCC4},
+       {0x3A31, 0xBCCD},
+       {0x3A32, 0xBCCF},
+       {0x3A33, 0xBCD0},
+       {0x3A34, 0xBCD1},
+       {0x3A35, 0xBCD5},
+       {0x3A36, 0xBCD8},
+       {0x3A37, 0xBCDC},
+       {0x3A38, 0xBCF4},
+       {0x3A39, 0xBCF5},
+       {0x3A3A, 0xBCF6},
+       {0x3A3B, 0xBCF8},
+       {0x3A3C, 0xBCFC},
+       {0x3A3D, 0xBD04},
+       {0x3A3E, 0xBD05},
+       {0x3A3F, 0xBD07},
+       {0x3A40, 0xBD09},
+       {0x3A41, 0xBD10},
+       {0x3A42, 0xBD14},
+       {0x3A43, 0xBD24},
+       {0x3A44, 0xBD2C},
+       {0x3A45, 0xBD40},
+       {0x3A46, 0xBD48},
+       {0x3A47, 0xBD49},
+       {0x3A48, 0xBD4C},
+       {0x3A49, 0xBD50},
+       {0x3A4A, 0xBD58},
+       {0x3A4B, 0xBD59},
+       {0x3A4C, 0xBD64},
+       {0x3A4D, 0xBD68},
+       {0x3A4E, 0xBD80},
+       {0x3A4F, 0xBD81},
+       {0x3A50, 0xBD84},
+       {0x3A51, 0xBD87},
+       {0x3A52, 0xBD88},
+       {0x3A53, 0xBD89},
+       {0x3A54, 0xBD8A},
+       {0x3A55, 0xBD90},
+       {0x3A56, 0xBD91},
+       {0x3A57, 0xBD93},
+       {0x3A58, 0xBD95},
+       {0x3A59, 0xBD99},
+       {0x3A5A, 0xBD9A},
+       {0x3A5B, 0xBD9C},
+       {0x3A5C, 0xBDA4},
+       {0x3A5D, 0xBDB0},
+       {0x3A5E, 0xBDB8},
+       {0x3A5F, 0xBDD4},
+       {0x3A60, 0xBDD5},
+       {0x3A61, 0xBDD8},
+       {0x3A62, 0xBDDC},
+       {0x3A63, 0xBDE9},
+       {0x3A64, 0xBDF0},
+       {0x3A65, 0xBDF4},
+       {0x3A66, 0xBDF8},
+       {0x3A67, 0xBE00},
+       {0x3A68, 0xBE03},
+       {0x3A69, 0xBE05},
+       {0x3A6A, 0xBE0C},
+       {0x3A6B, 0xBE0D},
+       {0x3A6C, 0xBE10},
+       {0x3A6D, 0xBE14},
+       {0x3A6E, 0xBE1C},
+       {0x3A6F, 0xBE1D},
+       {0x3A70, 0xBE1F},
+       {0x3A71, 0xBE44},
+       {0x3A72, 0xBE45},
+       {0x3A73, 0xBE48},
+       {0x3A74, 0xBE4C},
+       {0x3A75, 0xBE4E},
+       {0x3A76, 0xBE54},
+       {0x3A77, 0xBE55},
+       {0x3A78, 0xBE57},
+       {0x3A79, 0xBE59},
+       {0x3A7A, 0xBE5A},
+       {0x3A7B, 0xBE5B},
+       {0x3A7C, 0xBE60},
+       {0x3A7D, 0xBE61},
+       {0x3A7E, 0xBE64},
+       {0x3B21, 0xBE68},
+       {0x3B22, 0xBE6A},
+       {0x3B23, 0xBE70},
+       {0x3B24, 0xBE71},
+       {0x3B25, 0xBE73},
+       {0x3B26, 0xBE74},
+       {0x3B27, 0xBE75},
+       {0x3B28, 0xBE7B},
+       {0x3B29, 0xBE7C},
+       {0x3B2A, 0xBE7D},
+       {0x3B2B, 0xBE80},
+       {0x3B2C, 0xBE84},
+       {0x3B2D, 0xBE8C},
+       {0x3B2E, 0xBE8D},
+       {0x3B2F, 0xBE8F},
+       {0x3B30, 0xBE90},
+       {0x3B31, 0xBE91},
+       {0x3B32, 0xBE98},
+       {0x3B33, 0xBE99},
+       {0x3B34, 0xBEA8},
+       {0x3B35, 0xBED0},
+       {0x3B36, 0xBED1},
+       {0x3B37, 0xBED4},
+       {0x3B38, 0xBED7},
+       {0x3B39, 0xBED8},
+       {0x3B3A, 0xBEE0},
+       {0x3B3B, 0xBEE3},
+       {0x3B3C, 0xBEE4},
+       {0x3B3D, 0xBEE5},
+       {0x3B3E, 0xBEEC},
+       {0x3B3F, 0xBF01},
+       {0x3B40, 0xBF08},
+       {0x3B41, 0xBF09},
+       {0x3B42, 0xBF18},
+       {0x3B43, 0xBF19},
+       {0x3B44, 0xBF1B},
+       {0x3B45, 0xBF1C},
+       {0x3B46, 0xBF1D},
+       {0x3B47, 0xBF40},
+       {0x3B48, 0xBF41},
+       {0x3B49, 0xBF44},
+       {0x3B4A, 0xBF48},
+       {0x3B4B, 0xBF50},
+       {0x3B4C, 0xBF51},
+       {0x3B4D, 0xBF55},
+       {0x3B4E, 0xBF94},
+       {0x3B4F, 0xBFB0},
+       {0x3B50, 0xBFC5},
+       {0x3B51, 0xBFCC},
+       {0x3B52, 0xBFCD},
+       {0x3B53, 0xBFD0},
+       {0x3B54, 0xBFD4},
+       {0x3B55, 0xBFDC},
+       {0x3B56, 0xBFDF},
+       {0x3B57, 0xBFE1},
+       {0x3B58, 0xC03C},
+       {0x3B59, 0xC051},
+       {0x3B5A, 0xC058},
+       {0x3B5B, 0xC05C},
+       {0x3B5C, 0xC060},
+       {0x3B5D, 0xC068},
+       {0x3B5E, 0xC069},
+       {0x3B5F, 0xC090},
+       {0x3B60, 0xC091},
+       {0x3B61, 0xC094},
+       {0x3B62, 0xC098},
+       {0x3B63, 0xC0A0},
+       {0x3B64, 0xC0A1},
+       {0x3B65, 0xC0A3},
+       {0x3B66, 0xC0A5},
+       {0x3B67, 0xC0AC},
+       {0x3B68, 0xC0AD},
+       {0x3B69, 0xC0AF},
+       {0x3B6A, 0xC0B0},
+       {0x3B6B, 0xC0B3},
+       {0x3B6C, 0xC0B4},
+       {0x3B6D, 0xC0B5},
+       {0x3B6E, 0xC0B6},
+       {0x3B6F, 0xC0BC},
+       {0x3B70, 0xC0BD},
+       {0x3B71, 0xC0BF},
+       {0x3B72, 0xC0C0},
+       {0x3B73, 0xC0C1},
+       {0x3B74, 0xC0C5},
+       {0x3B75, 0xC0C8},
+       {0x3B76, 0xC0C9},
+       {0x3B77, 0xC0CC},
+       {0x3B78, 0xC0D0},
+       {0x3B79, 0xC0D8},
+       {0x3B7A, 0xC0D9},
+       {0x3B7B, 0xC0DB},
+       {0x3B7C, 0xC0DC},
+       {0x3B7D, 0xC0DD},
+       {0x3B7E, 0xC0E4},
+       {0x3C21, 0xC0E5},
+       {0x3C22, 0xC0E8},
+       {0x3C23, 0xC0EC},
+       {0x3C24, 0xC0F4},
+       {0x3C25, 0xC0F5},
+       {0x3C26, 0xC0F7},
+       {0x3C27, 0xC0F9},
+       {0x3C28, 0xC100},
+       {0x3C29, 0xC104},
+       {0x3C2A, 0xC108},
+       {0x3C2B, 0xC110},
+       {0x3C2C, 0xC115},
+       {0x3C2D, 0xC11C},
+       {0x3C2E, 0xC11D},
+       {0x3C2F, 0xC11E},
+       {0x3C30, 0xC11F},
+       {0x3C31, 0xC120},
+       {0x3C32, 0xC123},
+       {0x3C33, 0xC124},
+       {0x3C34, 0xC126},
+       {0x3C35, 0xC127},
+       {0x3C36, 0xC12C},
+       {0x3C37, 0xC12D},
+       {0x3C38, 0xC12F},
+       {0x3C39, 0xC130},
+       {0x3C3A, 0xC131},
+       {0x3C3B, 0xC136},
+       {0x3C3C, 0xC138},
+       {0x3C3D, 0xC139},
+       {0x3C3E, 0xC13C},
+       {0x3C3F, 0xC140},
+       {0x3C40, 0xC148},
+       {0x3C41, 0xC149},
+       {0x3C42, 0xC14B},
+       {0x3C43, 0xC14C},
+       {0x3C44, 0xC14D},
+       {0x3C45, 0xC154},
+       {0x3C46, 0xC155},
+       {0x3C47, 0xC158},
+       {0x3C48, 0xC15C},
+       {0x3C49, 0xC164},
+       {0x3C4A, 0xC165},
+       {0x3C4B, 0xC167},
+       {0x3C4C, 0xC168},
+       {0x3C4D, 0xC169},
+       {0x3C4E, 0xC170},
+       {0x3C4F, 0xC174},
+       {0x3C50, 0xC178},
+       {0x3C51, 0xC185},
+       {0x3C52, 0xC18C},
+       {0x3C53, 0xC18D},
+       {0x3C54, 0xC18E},
+       {0x3C55, 0xC190},
+       {0x3C56, 0xC194},
+       {0x3C57, 0xC196},
+       {0x3C58, 0xC19C},
+       {0x3C59, 0xC19D},
+       {0x3C5A, 0xC19F},
+       {0x3C5B, 0xC1A1},
+       {0x3C5C, 0xC1A5},
+       {0x3C5D, 0xC1A8},
+       {0x3C5E, 0xC1A9},
+       {0x3C5F, 0xC1AC},
+       {0x3C60, 0xC1B0},
+       {0x3C61, 0xC1BD},
+       {0x3C62, 0xC1C4},
+       {0x3C63, 0xC1C8},
+       {0x3C64, 0xC1CC},
+       {0x3C65, 0xC1D4},
+       {0x3C66, 0xC1D7},
+       {0x3C67, 0xC1D8},
+       {0x3C68, 0xC1E0},
+       {0x3C69, 0xC1E4},
+       {0x3C6A, 0xC1E8},
+       {0x3C6B, 0xC1F0},
+       {0x3C6C, 0xC1F1},
+       {0x3C6D, 0xC1F3},
+       {0x3C6E, 0xC1FC},
+       {0x3C6F, 0xC1FD},
+       {0x3C70, 0xC200},
+       {0x3C71, 0xC204},
+       {0x3C72, 0xC20C},
+       {0x3C73, 0xC20D},
+       {0x3C74, 0xC20F},
+       {0x3C75, 0xC211},
+       {0x3C76, 0xC218},
+       {0x3C77, 0xC219},
+       {0x3C78, 0xC21C},
+       {0x3C79, 0xC21F},
+       {0x3C7A, 0xC220},
+       {0x3C7B, 0xC228},
+       {0x3C7C, 0xC229},
+       {0x3C7D, 0xC22B},
+       {0x3C7E, 0xC22D},
+       {0x3D21, 0xC22F},
+       {0x3D22, 0xC231},
+       {0x3D23, 0xC232},
+       {0x3D24, 0xC234},
+       {0x3D25, 0xC248},
+       {0x3D26, 0xC250},
+       {0x3D27, 0xC251},
+       {0x3D28, 0xC254},
+       {0x3D29, 0xC258},
+       {0x3D2A, 0xC260},
+       {0x3D2B, 0xC265},
+       {0x3D2C, 0xC26C},
+       {0x3D2D, 0xC26D},
+       {0x3D2E, 0xC270},
+       {0x3D2F, 0xC274},
+       {0x3D30, 0xC27C},
+       {0x3D31, 0xC27D},
+       {0x3D32, 0xC27F},
+       {0x3D33, 0xC281},
+       {0x3D34, 0xC288},
+       {0x3D35, 0xC289},
+       {0x3D36, 0xC290},
+       {0x3D37, 0xC298},
+       {0x3D38, 0xC29B},
+       {0x3D39, 0xC29D},
+       {0x3D3A, 0xC2A4},
+       {0x3D3B, 0xC2A5},
+       {0x3D3C, 0xC2A8},
+       {0x3D3D, 0xC2AC},
+       {0x3D3E, 0xC2AD},
+       {0x3D3F, 0xC2B4},
+       {0x3D40, 0xC2B5},
+       {0x3D41, 0xC2B7},
+       {0x3D42, 0xC2B9},
+       {0x3D43, 0xC2DC},
+       {0x3D44, 0xC2DD},
+       {0x3D45, 0xC2E0},
+       {0x3D46, 0xC2E3},
+       {0x3D47, 0xC2E4},
+       {0x3D48, 0xC2EB},
+       {0x3D49, 0xC2EC},
+       {0x3D4A, 0xC2ED},
+       {0x3D4B, 0xC2EF},
+       {0x3D4C, 0xC2F1},
+       {0x3D4D, 0xC2F6},
+       {0x3D4E, 0xC2F8},
+       {0x3D4F, 0xC2F9},
+       {0x3D50, 0xC2FB},
+       {0x3D51, 0xC2FC},
+       {0x3D52, 0xC300},
+       {0x3D53, 0xC308},
+       {0x3D54, 0xC309},
+       {0x3D55, 0xC30C},
+       {0x3D56, 0xC30D},
+       {0x3D57, 0xC313},
+       {0x3D58, 0xC314},
+       {0x3D59, 0xC315},
+       {0x3D5A, 0xC318},
+       {0x3D5B, 0xC31C},
+       {0x3D5C, 0xC324},
+       {0x3D5D, 0xC325},
+       {0x3D5E, 0xC328},
+       {0x3D5F, 0xC329},
+       {0x3D60, 0xC345},
+       {0x3D61, 0xC368},
+       {0x3D62, 0xC369},
+       {0x3D63, 0xC36C},
+       {0x3D64, 0xC370},
+       {0x3D65, 0xC372},
+       {0x3D66, 0xC378},
+       {0x3D67, 0xC379},
+       {0x3D68, 0xC37C},
+       {0x3D69, 0xC37D},
+       {0x3D6A, 0xC384},
+       {0x3D6B, 0xC388},
+       {0x3D6C, 0xC38C},
+       {0x3D6D, 0xC3C0},
+       {0x3D6E, 0xC3D8},
+       {0x3D6F, 0xC3D9},
+       {0x3D70, 0xC3DC},
+       {0x3D71, 0xC3DF},
+       {0x3D72, 0xC3E0},
+       {0x3D73, 0xC3E2},
+       {0x3D74, 0xC3E8},
+       {0x3D75, 0xC3E9},
+       {0x3D76, 0xC3ED},
+       {0x3D77, 0xC3F4},
+       {0x3D78, 0xC3F5},
+       {0x3D79, 0xC3F8},
+       {0x3D7A, 0xC408},
+       {0x3D7B, 0xC410},
+       {0x3D7C, 0xC424},
+       {0x3D7D, 0xC42C},
+       {0x3D7E, 0xC430},
+       {0x3E21, 0xC434},
+       {0x3E22, 0xC43C},
+       {0x3E23, 0xC43D},
+       {0x3E24, 0xC448},
+       {0x3E25, 0xC464},
+       {0x3E26, 0xC465},
+       {0x3E27, 0xC468},
+       {0x3E28, 0xC46C},
+       {0x3E29, 0xC474},
+       {0x3E2A, 0xC475},
+       {0x3E2B, 0xC479},
+       {0x3E2C, 0xC480},
+       {0x3E2D, 0xC494},
+       {0x3E2E, 0xC49C},
+       {0x3E2F, 0xC4B8},
+       {0x3E30, 0xC4BC},
+       {0x3E31, 0xC4E9},
+       {0x3E32, 0xC4F0},
+       {0x3E33, 0xC4F1},
+       {0x3E34, 0xC4F4},
+       {0x3E35, 0xC4F8},
+       {0x3E36, 0xC4FA},
+       {0x3E37, 0xC4FF},
+       {0x3E38, 0xC500},
+       {0x3E39, 0xC501},
+       {0x3E3A, 0xC50C},
+       {0x3E3B, 0xC510},
+       {0x3E3C, 0xC514},
+       {0x3E3D, 0xC51C},
+       {0x3E3E, 0xC528},
+       {0x3E3F, 0xC529},
+       {0x3E40, 0xC52C},
+       {0x3E41, 0xC530},
+       {0x3E42, 0xC538},
+       {0x3E43, 0xC539},
+       {0x3E44, 0xC53B},
+       {0x3E45, 0xC53D},
+       {0x3E46, 0xC544},
+       {0x3E47, 0xC545},
+       {0x3E48, 0xC548},
+       {0x3E49, 0xC549},
+       {0x3E4A, 0xC54A},
+       {0x3E4B, 0xC54C},
+       {0x3E4C, 0xC54D},
+       {0x3E4D, 0xC54E},
+       {0x3E4E, 0xC553},
+       {0x3E4F, 0xC554},
+       {0x3E50, 0xC555},
+       {0x3E51, 0xC557},
+       {0x3E52, 0xC558},
+       {0x3E53, 0xC559},
+       {0x3E54, 0xC55D},
+       {0x3E55, 0xC55E},
+       {0x3E56, 0xC560},
+       {0x3E57, 0xC561},
+       {0x3E58, 0xC564},
+       {0x3E59, 0xC568},
+       {0x3E5A, 0xC570},
+       {0x3E5B, 0xC571},
+       {0x3E5C, 0xC573},
+       {0x3E5D, 0xC574},
+       {0x3E5E, 0xC575},
+       {0x3E5F, 0xC57C},
+       {0x3E60, 0xC57D},
+       {0x3E61, 0xC580},
+       {0x3E62, 0xC584},
+       {0x3E63, 0xC587},
+       {0x3E64, 0xC58C},
+       {0x3E65, 0xC58D},
+       {0x3E66, 0xC58F},
+       {0x3E67, 0xC591},
+       {0x3E68, 0xC595},
+       {0x3E69, 0xC597},
+       {0x3E6A, 0xC598},
+       {0x3E6B, 0xC59C},
+       {0x3E6C, 0xC5A0},
+       {0x3E6D, 0xC5A9},
+       {0x3E6E, 0xC5B4},
+       {0x3E6F, 0xC5B5},
+       {0x3E70, 0xC5B8},
+       {0x3E71, 0xC5B9},
+       {0x3E72, 0xC5BB},
+       {0x3E73, 0xC5BC},
+       {0x3E74, 0xC5BD},
+       {0x3E75, 0xC5BE},
+       {0x3E76, 0xC5C4},
+       {0x3E77, 0xC5C5},
+       {0x3E78, 0xC5C6},
+       {0x3E79, 0xC5C7},
+       {0x3E7A, 0xC5C8},
+       {0x3E7B, 0xC5C9},
+       {0x3E7C, 0xC5CA},
+       {0x3E7D, 0xC5CC},
+       {0x3E7E, 0xC5CE},
+       {0x3F21, 0xC5D0},
+       {0x3F22, 0xC5D1},
+       {0x3F23, 0xC5D4},
+       {0x3F24, 0xC5D8},
+       {0x3F25, 0xC5E0},
+       {0x3F26, 0xC5E1},
+       {0x3F27, 0xC5E3},
+       {0x3F28, 0xC5E5},
+       {0x3F29, 0xC5EC},
+       {0x3F2A, 0xC5ED},
+       {0x3F2B, 0xC5EE},
+       {0x3F2C, 0xC5F0},
+       {0x3F2D, 0xC5F4},
+       {0x3F2E, 0xC5F6},
+       {0x3F2F, 0xC5F7},
+       {0x3F30, 0xC5FC},
+       {0x3F31, 0xC5FD},
+       {0x3F32, 0xC5FE},
+       {0x3F33, 0xC5FF},
+       {0x3F34, 0xC600},
+       {0x3F35, 0xC601},
+       {0x3F36, 0xC605},
+       {0x3F37, 0xC606},
+       {0x3F38, 0xC607},
+       {0x3F39, 0xC608},
+       {0x3F3A, 0xC60C},
+       {0x3F3B, 0xC610},
+       {0x3F3C, 0xC618},
+       {0x3F3D, 0xC619},
+       {0x3F3E, 0xC61B},
+       {0x3F3F, 0xC61C},
+       {0x3F40, 0xC624},
+       {0x3F41, 0xC625},
+       {0x3F42, 0xC628},
+       {0x3F43, 0xC62C},
+       {0x3F44, 0xC62D},
+       {0x3F45, 0xC62E},
+       {0x3F46, 0xC630},
+       {0x3F47, 0xC633},
+       {0x3F48, 0xC634},
+       {0x3F49, 0xC635},
+       {0x3F4A, 0xC637},
+       {0x3F4B, 0xC639},
+       {0x3F4C, 0xC63B},
+       {0x3F4D, 0xC640},
+       {0x3F4E, 0xC641},
+       {0x3F4F, 0xC644},
+       {0x3F50, 0xC648},
+       {0x3F51, 0xC650},
+       {0x3F52, 0xC651},
+       {0x3F53, 0xC653},
+       {0x3F54, 0xC654},
+       {0x3F55, 0xC655},
+       {0x3F56, 0xC65C},
+       {0x3F57, 0xC65D},
+       {0x3F58, 0xC660},
+       {0x3F59, 0xC66C},
+       {0x3F5A, 0xC66F},
+       {0x3F5B, 0xC671},
+       {0x3F5C, 0xC678},
+       {0x3F5D, 0xC679},
+       {0x3F5E, 0xC67C},
+       {0x3F5F, 0xC680},
+       {0x3F60, 0xC688},
+       {0x3F61, 0xC689},
+       {0x3F62, 0xC68B},
+       {0x3F63, 0xC68D},
+       {0x3F64, 0xC694},
+       {0x3F65, 0xC695},
+       {0x3F66, 0xC698},
+       {0x3F67, 0xC69C},
+       {0x3F68, 0xC6A4},
+       {0x3F69, 0xC6A5},
+       {0x3F6A, 0xC6A7},
+       {0x3F6B, 0xC6A9},
+       {0x3F6C, 0xC6B0},
+       {0x3F6D, 0xC6B1},
+       {0x3F6E, 0xC6B4},
+       {0x3F6F, 0xC6B8},
+       {0x3F70, 0xC6B9},
+       {0x3F71, 0xC6BA},
+       {0x3F72, 0xC6C0},
+       {0x3F73, 0xC6C1},
+       {0x3F74, 0xC6C3},
+       {0x3F75, 0xC6C5},
+       {0x3F76, 0xC6CC},
+       {0x3F77, 0xC6CD},
+       {0x3F78, 0xC6D0},
+       {0x3F79, 0xC6D4},
+       {0x3F7A, 0xC6DC},
+       {0x3F7B, 0xC6DD},
+       {0x3F7C, 0xC6E0},
+       {0x3F7D, 0xC6E1},
+       {0x3F7E, 0xC6E8},
+       {0x4021, 0xC6E9},
+       {0x4022, 0xC6EC},
+       {0x4023, 0xC6F0},
+       {0x4024, 0xC6F8},
+       {0x4025, 0xC6F9},
+       {0x4026, 0xC6FD},
+       {0x4027, 0xC704},
+       {0x4028, 0xC705},
+       {0x4029, 0xC708},
+       {0x402A, 0xC70C},
+       {0x402B, 0xC714},
+       {0x402C, 0xC715},
+       {0x402D, 0xC717},
+       {0x402E, 0xC719},
+       {0x402F, 0xC720},
+       {0x4030, 0xC721},
+       {0x4031, 0xC724},
+       {0x4032, 0xC728},
+       {0x4033, 0xC730},
+       {0x4034, 0xC731},
+       {0x4035, 0xC733},
+       {0x4036, 0xC735},
+       {0x4037, 0xC737},
+       {0x4038, 0xC73C},
+       {0x4039, 0xC73D},
+       {0x403A, 0xC740},
+       {0x403B, 0xC744},
+       {0x403C, 0xC74A},
+       {0x403D, 0xC74C},
+       {0x403E, 0xC74D},
+       {0x403F, 0xC74F},
+       {0x4040, 0xC751},
+       {0x4041, 0xC752},
+       {0x4042, 0xC753},
+       {0x4043, 0xC754},
+       {0x4044, 0xC755},
+       {0x4045, 0xC756},
+       {0x4046, 0xC757},
+       {0x4047, 0xC758},
+       {0x4048, 0xC75C},
+       {0x4049, 0xC760},
+       {0x404A, 0xC768},
+       {0x404B, 0xC76B},
+       {0x404C, 0xC774},
+       {0x404D, 0xC775},
+       {0x404E, 0xC778},
+       {0x404F, 0xC77C},
+       {0x4050, 0xC77D},
+       {0x4051, 0xC77E},
+       {0x4052, 0xC783},
+       {0x4053, 0xC784},
+       {0x4054, 0xC785},
+       {0x4055, 0xC787},
+       {0x4056, 0xC788},
+       {0x4057, 0xC789},
+       {0x4058, 0xC78A},
+       {0x4059, 0xC78E},
+       {0x405A, 0xC790},
+       {0x405B, 0xC791},
+       {0x405C, 0xC794},
+       {0x405D, 0xC796},
+       {0x405E, 0xC797},
+       {0x405F, 0xC798},
+       {0x4060, 0xC79A},
+       {0x4061, 0xC7A0},
+       {0x4062, 0xC7A1},
+       {0x4063, 0xC7A3},
+       {0x4064, 0xC7A4},
+       {0x4065, 0xC7A5},
+       {0x4066, 0xC7A6},
+       {0x4067, 0xC7AC},
+       {0x4068, 0xC7AD},
+       {0x4069, 0xC7B0},
+       {0x406A, 0xC7B4},
+       {0x406B, 0xC7BC},
+       {0x406C, 0xC7BD},
+       {0x406D, 0xC7BF},
+       {0x406E, 0xC7C0},
+       {0x406F, 0xC7C1},
+       {0x4070, 0xC7C8},
+       {0x4071, 0xC7C9},
+       {0x4072, 0xC7CC},
+       {0x4073, 0xC7CE},
+       {0x4074, 0xC7D0},
+       {0x4075, 0xC7D8},
+       {0x4076, 0xC7DD},
+       {0x4077, 0xC7E4},
+       {0x4078, 0xC7E8},
+       {0x4079, 0xC7EC},
+       {0x407A, 0xC800},
+       {0x407B, 0xC801},
+       {0x407C, 0xC804},
+       {0x407D, 0xC808},
+       {0x407E, 0xC80A},
+       {0x4121, 0xC810},
+       {0x4122, 0xC811},
+       {0x4123, 0xC813},
+       {0x4124, 0xC815},
+       {0x4125, 0xC816},
+       {0x4126, 0xC81C},
+       {0x4127, 0xC81D},
+       {0x4128, 0xC820},
+       {0x4129, 0xC824},
+       {0x412A, 0xC82C},
+       {0x412B, 0xC82D},
+       {0x412C, 0xC82F},
+       {0x412D, 0xC831},
+       {0x412E, 0xC838},
+       {0x412F, 0xC83C},
+       {0x4130, 0xC840},
+       {0x4131, 0xC848},
+       {0x4132, 0xC849},
+       {0x4133, 0xC84C},
+       {0x4134, 0xC84D},
+       {0x4135, 0xC854},
+       {0x4136, 0xC870},
+       {0x4137, 0xC871},
+       {0x4138, 0xC874},
+       {0x4139, 0xC878},
+       {0x413A, 0xC87A},
+       {0x413B, 0xC880},
+       {0x413C, 0xC881},
+       {0x413D, 0xC883},
+       {0x413E, 0xC885},
+       {0x413F, 0xC886},
+       {0x4140, 0xC887},
+       {0x4141, 0xC88B},
+       {0x4142, 0xC88C},
+       {0x4143, 0xC88D},
+       {0x4144, 0xC894},
+       {0x4145, 0xC89D},
+       {0x4146, 0xC89F},
+       {0x4147, 0xC8A1},
+       {0x4148, 0xC8A8},
+       {0x4149, 0xC8BC},
+       {0x414A, 0xC8BD},
+       {0x414B, 0xC8C4},
+       {0x414C, 0xC8C8},
+       {0x414D, 0xC8CC},
+       {0x414E, 0xC8D4},
+       {0x414F, 0xC8D5},
+       {0x4150, 0xC8D7},
+       {0x4151, 0xC8D9},
+       {0x4152, 0xC8E0},
+       {0x4153, 0xC8E1},
+       {0x4154, 0xC8E4},
+       {0x4155, 0xC8F5},
+       {0x4156, 0xC8FC},
+       {0x4157, 0xC8FD},
+       {0x4158, 0xC900},
+       {0x4159, 0xC904},
+       {0x415A, 0xC905},
+       {0x415B, 0xC906},
+       {0x415C, 0xC90C},
+       {0x415D, 0xC90D},
+       {0x415E, 0xC90F},
+       {0x415F, 0xC911},
+       {0x4160, 0xC918},
+       {0x4161, 0xC92C},
+       {0x4162, 0xC934},
+       {0x4163, 0xC950},
+       {0x4164, 0xC951},
+       {0x4165, 0xC954},
+       {0x4166, 0xC958},
+       {0x4167, 0xC960},
+       {0x4168, 0xC961},
+       {0x4169, 0xC963},
+       {0x416A, 0xC96C},
+       {0x416B, 0xC970},
+       {0x416C, 0xC974},
+       {0x416D, 0xC97C},
+       {0x416E, 0xC988},
+       {0x416F, 0xC989},
+       {0x4170, 0xC98C},
+       {0x4171, 0xC990},
+       {0x4172, 0xC998},
+       {0x4173, 0xC999},
+       {0x4174, 0xC99B},
+       {0x4175, 0xC99D},
+       {0x4176, 0xC9C0},
+       {0x4177, 0xC9C1},
+       {0x4178, 0xC9C4},
+       {0x4179, 0xC9C7},
+       {0x417A, 0xC9C8},
+       {0x417B, 0xC9CA},
+       {0x417C, 0xC9D0},
+       {0x417D, 0xC9D1},
+       {0x417E, 0xC9D3},
+       {0x4221, 0xC9D5},
+       {0x4222, 0xC9D6},
+       {0x4223, 0xC9D9},
+       {0x4224, 0xC9DA},
+       {0x4225, 0xC9DC},
+       {0x4226, 0xC9DD},
+       {0x4227, 0xC9E0},
+       {0x4228, 0xC9E2},
+       {0x4229, 0xC9E4},
+       {0x422A, 0xC9E7},
+       {0x422B, 0xC9EC},
+       {0x422C, 0xC9ED},
+       {0x422D, 0xC9EF},
+       {0x422E, 0xC9F0},
+       {0x422F, 0xC9F1},
+       {0x4230, 0xC9F8},
+       {0x4231, 0xC9F9},
+       {0x4232, 0xC9FC},
+       {0x4233, 0xCA00},
+       {0x4234, 0xCA08},
+       {0x4235, 0xCA09},
+       {0x4236, 0xCA0B},
+       {0x4237, 0xCA0C},
+       {0x4238, 0xCA0D},
+       {0x4239, 0xCA14},
+       {0x423A, 0xCA18},
+       {0x423B, 0xCA29},
+       {0x423C, 0xCA4C},
+       {0x423D, 0xCA4D},
+       {0x423E, 0xCA50},
+       {0x423F, 0xCA54},
+       {0x4240, 0xCA5C},
+       {0x4241, 0xCA5D},
+       {0x4242, 0xCA5F},
+       {0x4243, 0xCA60},
+       {0x4244, 0xCA61},
+       {0x4245, 0xCA68},
+       {0x4246, 0xCA7D},
+       {0x4247, 0xCA84},
+       {0x4248, 0xCA98},
+       {0x4249, 0xCABC},
+       {0x424A, 0xCABD},
+       {0x424B, 0xCAC0},
+       {0x424C, 0xCAC4},
+       {0x424D, 0xCACC},
+       {0x424E, 0xCACD},
+       {0x424F, 0xCACF},
+       {0x4250, 0xCAD1},
+       {0x4251, 0xCAD3},
+       {0x4252, 0xCAD8},
+       {0x4253, 0xCAD9},
+       {0x4254, 0xCAE0},
+       {0x4255, 0xCAEC},
+       {0x4256, 0xCAF4},
+       {0x4257, 0xCB08},
+       {0x4258, 0xCB10},
+       {0x4259, 0xCB14},
+       {0x425A, 0xCB18},
+       {0x425B, 0xCB20},
+       {0x425C, 0xCB21},
+       {0x425D, 0xCB41},
+       {0x425E, 0xCB48},
+       {0x425F, 0xCB49},
+       {0x4260, 0xCB4C},
+       {0x4261, 0xCB50},
+       {0x4262, 0xCB58},
+       {0x4263, 0xCB59},
+       {0x4264, 0xCB5D},
+       {0x4265, 0xCB64},
+       {0x4266, 0xCB78},
+       {0x4267, 0xCB79},
+       {0x4268, 0xCB9C},
+       {0x4269, 0xCBB8},
+       {0x426A, 0xCBD4},
+       {0x426B, 0xCBE4},
+       {0x426C, 0xCBE7},
+       {0x426D, 0xCBE9},
+       {0x426E, 0xCC0C},
+       {0x426F, 0xCC0D},
+       {0x4270, 0xCC10},
+       {0x4271, 0xCC14},
+       {0x4272, 0xCC1C},
+       {0x4273, 0xCC1D},
+       {0x4274, 0xCC21},
+       {0x4275, 0xCC22},
+       {0x4276, 0xCC27},
+       {0x4277, 0xCC28},
+       {0x4278, 0xCC29},
+       {0x4279, 0xCC2C},
+       {0x427A, 0xCC2E},
+       {0x427B, 0xCC30},
+       {0x427C, 0xCC38},
+       {0x427D, 0xCC39},
+       {0x427E, 0xCC3B},
+       {0x4321, 0xCC3C},
+       {0x4322, 0xCC3D},
+       {0x4323, 0xCC3E},
+       {0x4324, 0xCC44},
+       {0x4325, 0xCC45},
+       {0x4326, 0xCC48},
+       {0x4327, 0xCC4C},
+       {0x4328, 0xCC54},
+       {0x4329, 0xCC55},
+       {0x432A, 0xCC57},
+       {0x432B, 0xCC58},
+       {0x432C, 0xCC59},
+       {0x432D, 0xCC60},
+       {0x432E, 0xCC64},
+       {0x432F, 0xCC66},
+       {0x4330, 0xCC68},
+       {0x4331, 0xCC70},
+       {0x4332, 0xCC75},
+       {0x4333, 0xCC98},
+       {0x4334, 0xCC99},
+       {0x4335, 0xCC9C},
+       {0x4336, 0xCCA0},
+       {0x4337, 0xCCA8},
+       {0x4338, 0xCCA9},
+       {0x4339, 0xCCAB},
+       {0x433A, 0xCCAC},
+       {0x433B, 0xCCAD},
+       {0x433C, 0xCCB4},
+       {0x433D, 0xCCB5},
+       {0x433E, 0xCCB8},
+       {0x433F, 0xCCBC},
+       {0x4340, 0xCCC4},
+       {0x4341, 0xCCC5},
+       {0x4342, 0xCCC7},
+       {0x4343, 0xCCC9},
+       {0x4344, 0xCCD0},
+       {0x4345, 0xCCD4},
+       {0x4346, 0xCCE4},
+       {0x4347, 0xCCEC},
+       {0x4348, 0xCCF0},
+       {0x4349, 0xCD01},
+       {0x434A, 0xCD08},
+       {0x434B, 0xCD09},
+       {0x434C, 0xCD0C},
+       {0x434D, 0xCD10},
+       {0x434E, 0xCD18},
+       {0x434F, 0xCD19},
+       {0x4350, 0xCD1B},
+       {0x4351, 0xCD1D},
+       {0x4352, 0xCD24},
+       {0x4353, 0xCD28},
+       {0x4354, 0xCD2C},
+       {0x4355, 0xCD39},
+       {0x4356, 0xCD5C},
+       {0x4357, 0xCD60},
+       {0x4358, 0xCD64},
+       {0x4359, 0xCD6C},
+       {0x435A, 0xCD6D},
+       {0x435B, 0xCD6F},
+       {0x435C, 0xCD71},
+       {0x435D, 0xCD78},
+       {0x435E, 0xCD88},
+       {0x435F, 0xCD94},
+       {0x4360, 0xCD95},
+       {0x4361, 0xCD98},
+       {0x4362, 0xCD9C},
+       {0x4363, 0xCDA4},
+       {0x4364, 0xCDA5},
+       {0x4365, 0xCDA7},
+       {0x4366, 0xCDA9},
+       {0x4367, 0xCDB0},
+       {0x4368, 0xCDC4},
+       {0x4369, 0xCDCC},
+       {0x436A, 0xCDD0},
+       {0x436B, 0xCDE8},
+       {0x436C, 0xCDEC},
+       {0x436D, 0xCDF0},
+       {0x436E, 0xCDF8},
+       {0x436F, 0xCDF9},
+       {0x4370, 0xCDFB},
+       {0x4371, 0xCDFD},
+       {0x4372, 0xCE04},
+       {0x4373, 0xCE08},
+       {0x4374, 0xCE0C},
+       {0x4375, 0xCE14},
+       {0x4376, 0xCE19},
+       {0x4377, 0xCE20},
+       {0x4378, 0xCE21},
+       {0x4379, 0xCE24},
+       {0x437A, 0xCE28},
+       {0x437B, 0xCE30},
+       {0x437C, 0xCE31},
+       {0x437D, 0xCE33},
+       {0x437E, 0xCE35},
+       {0x4421, 0xCE58},
+       {0x4422, 0xCE59},
+       {0x4423, 0xCE5C},
+       {0x4424, 0xCE5F},
+       {0x4425, 0xCE60},
+       {0x4426, 0xCE61},
+       {0x4427, 0xCE68},
+       {0x4428, 0xCE69},
+       {0x4429, 0xCE6B},
+       {0x442A, 0xCE6D},
+       {0x442B, 0xCE74},
+       {0x442C, 0xCE75},
+       {0x442D, 0xCE78},
+       {0x442E, 0xCE7C},
+       {0x442F, 0xCE84},
+       {0x4430, 0xCE85},
+       {0x4431, 0xCE87},
+       {0x4432, 0xCE89},
+       {0x4433, 0xCE90},
+       {0x4434, 0xCE91},
+       {0x4435, 0xCE94},
+       {0x4436, 0xCE98},
+       {0x4437, 0xCEA0},
+       {0x4438, 0xCEA1},
+       {0x4439, 0xCEA3},
+       {0x443A, 0xCEA4},
+       {0x443B, 0xCEA5},
+       {0x443C, 0xCEAC},
+       {0x443D, 0xCEAD},
+       {0x443E, 0xCEC1},
+       {0x443F, 0xCEE4},
+       {0x4440, 0xCEE5},
+       {0x4441, 0xCEE8},
+       {0x4442, 0xCEEB},
+       {0x4443, 0xCEEC},
+       {0x4444, 0xCEF4},
+       {0x4445, 0xCEF5},
+       {0x4446, 0xCEF7},
+       {0x4447, 0xCEF8},
+       {0x4448, 0xCEF9},
+       {0x4449, 0xCF00},
+       {0x444A, 0xCF01},
+       {0x444B, 0xCF04},
+       {0x444C, 0xCF08},
+       {0x444D, 0xCF10},
+       {0x444E, 0xCF11},
+       {0x444F, 0xCF13},
+       {0x4450, 0xCF15},
+       {0x4451, 0xCF1C},
+       {0x4452, 0xCF20},
+       {0x4453, 0xCF24},
+       {0x4454, 0xCF2C},
+       {0x4455, 0xCF2D},
+       {0x4456, 0xCF2F},
+       {0x4457, 0xCF30},
+       {0x4458, 0xCF31},
+       {0x4459, 0xCF38},
+       {0x445A, 0xCF54},
+       {0x445B, 0xCF55},
+       {0x445C, 0xCF58},
+       {0x445D, 0xCF5C},
+       {0x445E, 0xCF64},
+       {0x445F, 0xCF65},
+       {0x4460, 0xCF67},
+       {0x4461, 0xCF69},
+       {0x4462, 0xCF70},
+       {0x4463, 0xCF71},
+       {0x4464, 0xCF74},
+       {0x4465, 0xCF78},
+       {0x4466, 0xCF80},
+       {0x4467, 0xCF85},
+       {0x4468, 0xCF8C},
+       {0x4469, 0xCFA1},
+       {0x446A, 0xCFA8},
+       {0x446B, 0xCFB0},
+       {0x446C, 0xCFC4},
+       {0x446D, 0xCFE0},
+       {0x446E, 0xCFE1},
+       {0x446F, 0xCFE4},
+       {0x4470, 0xCFE8},
+       {0x4471, 0xCFF0},
+       {0x4472, 0xCFF1},
+       {0x4473, 0xCFF3},
+       {0x4474, 0xCFF5},
+       {0x4475, 0xCFFC},
+       {0x4476, 0xD000},
+       {0x4477, 0xD004},
+       {0x4478, 0xD011},
+       {0x4479, 0xD018},
+       {0x447A, 0xD02D},
+       {0x447B, 0xD034},
+       {0x447C, 0xD035},
+       {0x447D, 0xD038},
+       {0x447E, 0xD03C},
+       {0x4521, 0xD044},
+       {0x4522, 0xD045},
+       {0x4523, 0xD047},
+       {0x4524, 0xD049},
+       {0x4525, 0xD050},
+       {0x4526, 0xD054},
+       {0x4527, 0xD058},
+       {0x4528, 0xD060},
+       {0x4529, 0xD06C},
+       {0x452A, 0xD06D},
+       {0x452B, 0xD070},
+       {0x452C, 0xD074},
+       {0x452D, 0xD07C},
+       {0x452E, 0xD07D},
+       {0x452F, 0xD081},
+       {0x4530, 0xD0A4},
+       {0x4531, 0xD0A5},
+       {0x4532, 0xD0A8},
+       {0x4533, 0xD0AC},
+       {0x4534, 0xD0B4},
+       {0x4535, 0xD0B5},
+       {0x4536, 0xD0B7},
+       {0x4537, 0xD0B9},
+       {0x4538, 0xD0C0},
+       {0x4539, 0xD0C1},
+       {0x453A, 0xD0C4},
+       {0x453B, 0xD0C8},
+       {0x453C, 0xD0C9},
+       {0x453D, 0xD0D0},
+       {0x453E, 0xD0D1},
+       {0x453F, 0xD0D3},
+       {0x4540, 0xD0D4},
+       {0x4541, 0xD0D5},
+       {0x4542, 0xD0DC},
+       {0x4543, 0xD0DD},
+       {0x4544, 0xD0E0},
+       {0x4545, 0xD0E4},
+       {0x4546, 0xD0EC},
+       {0x4547, 0xD0ED},
+       {0x4548, 0xD0EF},
+       {0x4549, 0xD0F0},
+       {0x454A, 0xD0F1},
+       {0x454B, 0xD0F8},
+       {0x454C, 0xD10D},
+       {0x454D, 0xD130},
+       {0x454E, 0xD131},
+       {0x454F, 0xD134},
+       {0x4550, 0xD138},
+       {0x4551, 0xD13A},
+       {0x4552, 0xD140},
+       {0x4553, 0xD141},
+       {0x4554, 0xD143},
+       {0x4555, 0xD144},
+       {0x4556, 0xD145},
+       {0x4557, 0xD14C},
+       {0x4558, 0xD14D},
+       {0x4559, 0xD150},
+       {0x455A, 0xD154},
+       {0x455B, 0xD15C},
+       {0x455C, 0xD15D},
+       {0x455D, 0xD15F},
+       {0x455E, 0xD161},
+       {0x455F, 0xD168},
+       {0x4560, 0xD16C},
+       {0x4561, 0xD17C},
+       {0x4562, 0xD184},
+       {0x4563, 0xD188},
+       {0x4564, 0xD1A0},
+       {0x4565, 0xD1A1},
+       {0x4566, 0xD1A4},
+       {0x4567, 0xD1A8},
+       {0x4568, 0xD1B0},
+       {0x4569, 0xD1B1},
+       {0x456A, 0xD1B3},
+       {0x456B, 0xD1B5},
+       {0x456C, 0xD1BA},
+       {0x456D, 0xD1BC},
+       {0x456E, 0xD1C0},
+       {0x456F, 0xD1D8},
+       {0x4570, 0xD1F4},
+       {0x4571, 0xD1F8},
+       {0x4572, 0xD207},
+       {0x4573, 0xD209},
+       {0x4574, 0xD210},
+       {0x4575, 0xD22C},
+       {0x4576, 0xD22D},
+       {0x4577, 0xD230},
+       {0x4578, 0xD234},
+       {0x4579, 0xD23C},
+       {0x457A, 0xD23D},
+       {0x457B, 0xD23F},
+       {0x457C, 0xD241},
+       {0x457D, 0xD248},
+       {0x457E, 0xD25C},
+       {0x4621, 0xD264},
+       {0x4622, 0xD280},
+       {0x4623, 0xD281},
+       {0x4624, 0xD284},
+       {0x4625, 0xD288},
+       {0x4626, 0xD290},
+       {0x4627, 0xD291},
+       {0x4628, 0xD295},
+       {0x4629, 0xD29C},
+       {0x462A, 0xD2A0},
+       {0x462B, 0xD2A4},
+       {0x462C, 0xD2AC},
+       {0x462D, 0xD2B1},
+       {0x462E, 0xD2B8},
+       {0x462F, 0xD2B9},
+       {0x4630, 0xD2BC},
+       {0x4631, 0xD2BF},
+       {0x4632, 0xD2C0},
+       {0x4633, 0xD2C2},
+       {0x4634, 0xD2C8},
+       {0x4635, 0xD2C9},
+       {0x4636, 0xD2CB},
+       {0x4637, 0xD2D4},
+       {0x4638, 0xD2D8},
+       {0x4639, 0xD2DC},
+       {0x463A, 0xD2E4},
+       {0x463B, 0xD2E5},
+       {0x463C, 0xD2F0},
+       {0x463D, 0xD2F1},
+       {0x463E, 0xD2F4},
+       {0x463F, 0xD2F8},
+       {0x4640, 0xD300},
+       {0x4641, 0xD301},
+       {0x4642, 0xD303},
+       {0x4643, 0xD305},
+       {0x4644, 0xD30C},
+       {0x4645, 0xD30D},
+       {0x4646, 0xD30E},
+       {0x4647, 0xD310},
+       {0x4648, 0xD314},
+       {0x4649, 0xD316},
+       {0x464A, 0xD31C},
+       {0x464B, 0xD31D},
+       {0x464C, 0xD31F},
+       {0x464D, 0xD320},
+       {0x464E, 0xD321},
+       {0x464F, 0xD325},
+       {0x4650, 0xD328},
+       {0x4651, 0xD329},
+       {0x4652, 0xD32C},
+       {0x4653, 0xD330},
+       {0x4654, 0xD338},
+       {0x4655, 0xD339},
+       {0x4656, 0xD33B},
+       {0x4657, 0xD33C},
+       {0x4658, 0xD33D},
+       {0x4659, 0xD344},
+       {0x465A, 0xD345},
+       {0x465B, 0xD37C},
+       {0x465C, 0xD37D},
+       {0x465D, 0xD380},
+       {0x465E, 0xD384},
+       {0x465F, 0xD38C},
+       {0x4660, 0xD38D},
+       {0x4661, 0xD38F},
+       {0x4662, 0xD390},
+       {0x4663, 0xD391},
+       {0x4664, 0xD398},
+       {0x4665, 0xD399},
+       {0x4666, 0xD39C},
+       {0x4667, 0xD3A0},
+       {0x4668, 0xD3A8},
+       {0x4669, 0xD3A9},
+       {0x466A, 0xD3AB},
+       {0x466B, 0xD3AD},
+       {0x466C, 0xD3B4},
+       {0x466D, 0xD3B8},
+       {0x466E, 0xD3BC},
+       {0x466F, 0xD3C4},
+       {0x4670, 0xD3C5},
+       {0x4671, 0xD3C8},
+       {0x4672, 0xD3C9},
+       {0x4673, 0xD3D0},
+       {0x4674, 0xD3D8},
+       {0x4675, 0xD3E1},
+       {0x4676, 0xD3E3},
+       {0x4677, 0xD3EC},
+       {0x4678, 0xD3ED},
+       {0x4679, 0xD3F0},
+       {0x467A, 0xD3F4},
+       {0x467B, 0xD3FC},
+       {0x467C, 0xD3FD},
+       {0x467D, 0xD3FF},
+       {0x467E, 0xD401},
+       {0x4721, 0xD408},
+       {0x4722, 0xD41D},
+       {0x4723, 0xD440},
+       {0x4724, 0xD444},
+       {0x4725, 0xD45C},
+       {0x4726, 0xD460},
+       {0x4727, 0xD464},
+       {0x4728, 0xD46D},
+       {0x4729, 0xD46F},
+       {0x472A, 0xD478},
+       {0x472B, 0xD479},
+       {0x472C, 0xD47C},
+       {0x472D, 0xD47F},
+       {0x472E, 0xD480},
+       {0x472F, 0xD482},
+       {0x4730, 0xD488},
+       {0x4731, 0xD489},
+       {0x4732, 0xD48B},
+       {0x4733, 0xD48D},
+       {0x4734, 0xD494},
+       {0x4735, 0xD4A9},
+       {0x4736, 0xD4CC},
+       {0x4737, 0xD4D0},
+       {0x4738, 0xD4D4},
+       {0x4739, 0xD4DC},
+       {0x473A, 0xD4DF},
+       {0x473B, 0xD4E8},
+       {0x473C, 0xD4EC},
+       {0x473D, 0xD4F0},
+       {0x473E, 0xD4F8},
+       {0x473F, 0xD4FB},
+       {0x4740, 0xD4FD},
+       {0x4741, 0xD504},
+       {0x4742, 0xD508},
+       {0x4743, 0xD50C},
+       {0x4744, 0xD514},
+       {0x4745, 0xD515},
+       {0x4746, 0xD517},
+       {0x4747, 0xD53C},
+       {0x4748, 0xD53D},
+       {0x4749, 0xD540},
+       {0x474A, 0xD544},
+       {0x474B, 0xD54C},
+       {0x474C, 0xD54D},
+       {0x474D, 0xD54F},
+       {0x474E, 0xD551},
+       {0x474F, 0xD558},
+       {0x4750, 0xD559},
+       {0x4751, 0xD55C},
+       {0x4752, 0xD560},
+       {0x4753, 0xD565},
+       {0x4754, 0xD568},
+       {0x4755, 0xD569},
+       {0x4756, 0xD56B},
+       {0x4757, 0xD56D},
+       {0x4758, 0xD574},
+       {0x4759, 0xD575},
+       {0x475A, 0xD578},
+       {0x475B, 0xD57C},
+       {0x475C, 0xD584},
+       {0x475D, 0xD585},
+       {0x475E, 0xD587},
+       {0x475F, 0xD588},
+       {0x4760, 0xD589},
+       {0x4761, 0xD590},
+       {0x4762, 0xD5A5},
+       {0x4763, 0xD5C8},
+       {0x4764, 0xD5C9},
+       {0x4765, 0xD5CC},
+       {0x4766, 0xD5D0},
+       {0x4767, 0xD5D2},
+       {0x4768, 0xD5D8},
+       {0x4769, 0xD5D9},
+       {0x476A, 0xD5DB},
+       {0x476B, 0xD5DD},
+       {0x476C, 0xD5E4},
+       {0x476D, 0xD5E5},
+       {0x476E, 0xD5E8},
+       {0x476F, 0xD5EC},
+       {0x4770, 0xD5F4},
+       {0x4771, 0xD5F5},
+       {0x4772, 0xD5F7},
+       {0x4773, 0xD5F9},
+       {0x4774, 0xD600},
+       {0x4775, 0xD601},
+       {0x4776, 0xD604},
+       {0x4777, 0xD608},
+       {0x4778, 0xD610},
+       {0x4779, 0xD611},
+       {0x477A, 0xD613},
+       {0x477B, 0xD614},
+       {0x477C, 0xD615},
+       {0x477D, 0xD61C},
+       {0x477E, 0xD620},
+       {0x4821, 0xD624},
+       {0x4822, 0xD62D},
+       {0x4823, 0xD638},
+       {0x4824, 0xD639},
+       {0x4825, 0xD63C},
+       {0x4826, 0xD640},
+       {0x4827, 0xD645},
+       {0x4828, 0xD648},
+       {0x4829, 0xD649},
+       {0x482A, 0xD64B},
+       {0x482B, 0xD64D},
+       {0x482C, 0xD651},
+       {0x482D, 0xD654},
+       {0x482E, 0xD655},
+       {0x482F, 0xD658},
+       {0x4830, 0xD65C},
+       {0x4831, 0xD667},
+       {0x4832, 0xD669},
+       {0x4833, 0xD670},
+       {0x4834, 0xD671},
+       {0x4835, 0xD674},
+       {0x4836, 0xD683},
+       {0x4837, 0xD685},
+       {0x4838, 0xD68C},
+       {0x4839, 0xD68D},
+       {0x483A, 0xD690},
+       {0x483B, 0xD694},
+       {0x483C, 0xD69D},
+       {0x483D, 0xD69F},
+       {0x483E, 0xD6A1},
+       {0x483F, 0xD6A8},
+       {0x4840, 0xD6AC},
+       {0x4841, 0xD6B0},
+       {0x4842, 0xD6B9},
+       {0x4843, 0xD6BB},
+       {0x4844, 0xD6C4},
+       {0x4845, 0xD6C5},
+       {0x4846, 0xD6C8},
+       {0x4847, 0xD6CC},
+       {0x4848, 0xD6D1},
+       {0x4849, 0xD6D4},
+       {0x484A, 0xD6D7},
+       {0x484B, 0xD6D9},
+       {0x484C, 0xD6E0},
+       {0x484D, 0xD6E4},
+       {0x484E, 0xD6E8},
+       {0x484F, 0xD6F0},
+       {0x4850, 0xD6F5},
+       {0x4851, 0xD6FC},
+       {0x4852, 0xD6FD},
+       {0x4853, 0xD700},
+       {0x4854, 0xD704},
+       {0x4855, 0xD711},
+       {0x4856, 0xD718},
+       {0x4857, 0xD719},
+       {0x4858, 0xD71C},
+       {0x4859, 0xD720},
+       {0x485A, 0xD728},
+       {0x485B, 0xD729},
+       {0x485C, 0xD72B},
+       {0x485D, 0xD72D},
+       {0x485E, 0xD734},
+       {0x485F, 0xD735},
+       {0x4860, 0xD738},
+       {0x4861, 0xD73C},
+       {0x4862, 0xD744},
+       {0x4863, 0xD747},
+       {0x4864, 0xD749},
+       {0x4865, 0xD750},
+       {0x4866, 0xD751},
+       {0x4867, 0xD754},
+       {0x4868, 0xD756},
+       {0x4869, 0xD757},
+       {0x486A, 0xD758},
+       {0x486B, 0xD759},
+       {0x486C, 0xD760},
+       {0x486D, 0xD761},
+       {0x486E, 0xD763},
+       {0x486F, 0xD765},
+       {0x4870, 0xD769},
+       {0x4871, 0xD76C},
+       {0x4872, 0xD770},
+       {0x4873, 0xD774},
+       {0x4874, 0xD77C},
+       {0x4875, 0xD77D},
+       {0x4876, 0xD781},
+       {0x4877, 0xD788},
+       {0x4878, 0xD789},
+       {0x4879, 0xD78C},
+       {0x487A, 0xD790},
+       {0x487B, 0xD798},
+       {0x487C, 0xD799},
+       {0x487D, 0xD79B},
+       {0x487E, 0xD79D},
+       {0x4A21, 0x4F3D},
+       {0x4A22, 0x4F73},
+       {0x4A23, 0x5047},
+       {0x4A24, 0x50F9},
+       {0x4A25, 0x52A0},
+       {0x4A26, 0x53EF},
+       {0x4A27, 0x5475},
+       {0x4A28, 0x54E5},
+       {0x4A29, 0x5609},
+       {0x4A2A, 0x5AC1},
+       {0x4A2B, 0x5BB6},
+       {0x4A2C, 0x6687},
+       {0x4A2D, 0x67B6},
+       {0x4A2E, 0x67B7},
+       {0x4A2F, 0x67EF},
+       {0x4A30, 0x6B4C},
+       {0x4A31, 0x73C2},
+       {0x4A32, 0x75C2},
+       {0x4A33, 0x7A3C},
+       {0x4A34, 0x82DB},
+       {0x4A35, 0x8304},
+       {0x4A36, 0x8857},
+       {0x4A37, 0x8888},
+       {0x4A38, 0x8A36},
+       {0x4A39, 0x8CC8},
+       {0x4A3A, 0x8DCF},
+       {0x4A3B, 0x8EFB},
+       {0x4A3C, 0x8FE6},
+       {0x4A3D, 0x99D5},
+       {0x4A3E, 0x523B},
+       {0x4A3F, 0x5374},
+       {0x4A40, 0x5404},
+       {0x4A41, 0x606A},
+       {0x4A42, 0x6164},
+       {0x4A43, 0x6BBC},
+       {0x4A44, 0x73CF},
+       {0x4A45, 0x811A},
+       {0x4A46, 0x89BA},
+       {0x4A47, 0x89D2},
+       {0x4A48, 0x95A3},
+       {0x4A49, 0x4F83},
+       {0x4A4A, 0x520A},
+       {0x4A4B, 0x58BE},
+       {0x4A4C, 0x5978},
+       {0x4A4D, 0x59E6},
+       {0x4A4E, 0x5E72},
+       {0x4A4F, 0x5E79},
+       {0x4A50, 0x61C7},
+       {0x4A51, 0x63C0},
+       {0x4A52, 0x6746},
+       {0x4A53, 0x67EC},
+       {0x4A54, 0x687F},
+       {0x4A55, 0x6F97},
+       {0x4A56, 0x764E},
+       {0x4A57, 0x770B},
+       {0x4A58, 0x78F5},
+       {0x4A59, 0x7A08},
+       {0x4A5A, 0x7AFF},
+       {0x4A5B, 0x7C21},
+       {0x4A5C, 0x809D},
+       {0x4A5D, 0x826E},
+       {0x4A5E, 0x8271},
+       {0x4A5F, 0x8AEB},
+       {0x4A60, 0x9593},
+       {0x4A61, 0x4E6B},
+       {0x4A62, 0x559D},
+       {0x4A63, 0x66F7},
+       {0x4A64, 0x6E34},
+       {0x4A65, 0x78A3},
+       {0x4A66, 0x7AED},
+       {0x4A67, 0x845B},
+       {0x4A68, 0x8910},
+       {0x4A69, 0x874E},
+       {0x4A6A, 0x97A8},
+       {0x4A6B, 0x52D8},
+       {0x4A6C, 0x574E},
+       {0x4A6D, 0x582A},
+       {0x4A6E, 0x5D4C},
+       {0x4A6F, 0x611F},
+       {0x4A70, 0x61BE},
+       {0x4A71, 0x6221},
+       {0x4A72, 0x6562},
+       {0x4A73, 0x67D1},
+       {0x4A74, 0x6A44},
+       {0x4A75, 0x6E1B},
+       {0x4A76, 0x7518},
+       {0x4A77, 0x75B3},
+       {0x4A78, 0x76E3},
+       {0x4A79, 0x77B0},
+       {0x4A7A, 0x7D3A},
+       {0x4A7B, 0x90AF},
+       {0x4A7C, 0x9451},
+       {0x4A7D, 0x9452},
+       {0x4A7E, 0x9F95},
+       {0x4B21, 0x5323},
+       {0x4B22, 0x5CAC},
+       {0x4B23, 0x7532},
+       {0x4B24, 0x80DB},
+       {0x4B25, 0x9240},
+       {0x4B26, 0x9598},
+       {0x4B27, 0x525B},
+       {0x4B28, 0x5808},
+       {0x4B29, 0x59DC},
+       {0x4B2A, 0x5CA1},
+       {0x4B2B, 0x5D17},
+       {0x4B2C, 0x5EB7},
+       {0x4B2D, 0x5F3A},
+       {0x4B2E, 0x5F4A},
+       {0x4B2F, 0x6177},
+       {0x4B30, 0x6C5F},
+       {0x4B31, 0x757A},
+       {0x4B32, 0x7586},
+       {0x4B33, 0x7CE0},
+       {0x4B34, 0x7D73},
+       {0x4B35, 0x7DB1},
+       {0x4B36, 0x7F8C},
+       {0x4B37, 0x8154},
+       {0x4B38, 0x8221},
+       {0x4B39, 0x8591},
+       {0x4B3A, 0x8941},
+       {0x4B3B, 0x8B1B},
+       {0x4B3C, 0x92FC},
+       {0x4B3D, 0x964D},
+       {0x4B3E, 0x9C47},
+       {0x4B3F, 0x4ECB},
+       {0x4B40, 0x4EF7},
+       {0x4B41, 0x500B},
+       {0x4B42, 0x51F1},
+       {0x4B43, 0x584F},
+       {0x4B44, 0x6137},
+       {0x4B45, 0x613E},
+       {0x4B46, 0x6168},
+       {0x4B47, 0x6539},
+       {0x4B48, 0x69EA},
+       {0x4B49, 0x6F11},
+       {0x4B4A, 0x75A5},
+       {0x4B4B, 0x7686},
+       {0x4B4C, 0x76D6},
+       {0x4B4D, 0x7B87},
+       {0x4B4E, 0x82A5},
+       {0x4B4F, 0x84CB},
+       {0x4B50, 0xF900},
+       {0x4B51, 0x93A7},
+       {0x4B52, 0x958B},
+       {0x4B53, 0x5580},
+       {0x4B54, 0x5BA2},
+       {0x4B55, 0x5751},
+       {0x4B56, 0xF901},
+       {0x4B57, 0x7CB3},
+       {0x4B58, 0x7FB9},
+       {0x4B59, 0x91B5},
+       {0x4B5A, 0x5028},
+       {0x4B5B, 0x53BB},
+       {0x4B5C, 0x5C45},
+       {0x4B5D, 0x5DE8},
+       {0x4B5E, 0x62D2},
+       {0x4B5F, 0x636E},
+       {0x4B60, 0x64DA},
+       {0x4B61, 0x64E7},
+       {0x4B62, 0x6E20},
+       {0x4B63, 0x70AC},
+       {0x4B64, 0x795B},
+       {0x4B65, 0x8DDD},
+       {0x4B66, 0x8E1E},
+       {0x4B67, 0xF902},
+       {0x4B68, 0x907D},
+       {0x4B69, 0x9245},
+       {0x4B6A, 0x92F8},
+       {0x4B6B, 0x4E7E},
+       {0x4B6C, 0x4EF6},
+       {0x4B6D, 0x5065},
+       {0x4B6E, 0x5DFE},
+       {0x4B6F, 0x5EFA},
+       {0x4B70, 0x6106},
+       {0x4B71, 0x6957},
+       {0x4B72, 0x8171},
+       {0x4B73, 0x8654},
+       {0x4B74, 0x8E47},
+       {0x4B75, 0x9375},
+       {0x4B76, 0x9A2B},
+       {0x4B77, 0x4E5E},
+       {0x4B78, 0x5091},
+       {0x4B79, 0x6770},
+       {0x4B7A, 0x6840},
+       {0x4B7B, 0x5109},
+       {0x4B7C, 0x528D},
+       {0x4B7D, 0x5292},
+       {0x4B7E, 0x6AA2},
+       {0x4C21, 0x77BC},
+       {0x4C22, 0x9210},
+       {0x4C23, 0x9ED4},
+       {0x4C24, 0x52AB},
+       {0x4C25, 0x602F},
+       {0x4C26, 0x8FF2},
+       {0x4C27, 0x5048},
+       {0x4C28, 0x61A9},
+       {0x4C29, 0x63ED},
+       {0x4C2A, 0x64CA},
+       {0x4C2B, 0x683C},
+       {0x4C2C, 0x6A84},
+       {0x4C2D, 0x6FC0},
+       {0x4C2E, 0x8188},
+       {0x4C2F, 0x89A1},
+       {0x4C30, 0x9694},
+       {0x4C31, 0x5805},
+       {0x4C32, 0x727D},
+       {0x4C33, 0x72AC},
+       {0x4C34, 0x7504},
+       {0x4C35, 0x7D79},
+       {0x4C36, 0x7E6D},
+       {0x4C37, 0x80A9},
+       {0x4C38, 0x898B},
+       {0x4C39, 0x8B74},
+       {0x4C3A, 0x9063},
+       {0x4C3B, 0x9D51},
+       {0x4C3C, 0x6289},
+       {0x4C3D, 0x6C7A},
+       {0x4C3E, 0x6F54},
+       {0x4C3F, 0x7D50},
+       {0x4C40, 0x7F3A},
+       {0x4C41, 0x8A23},
+       {0x4C42, 0x517C},
+       {0x4C43, 0x614A},
+       {0x4C44, 0x7B9D},
+       {0x4C45, 0x8B19},
+       {0x4C46, 0x9257},
+       {0x4C47, 0x938C},
+       {0x4C48, 0x4EAC},
+       {0x4C49, 0x4FD3},
+       {0x4C4A, 0x501E},
+       {0x4C4B, 0x50BE},
+       {0x4C4C, 0x5106},
+       {0x4C4D, 0x52C1},
+       {0x4C4E, 0x52CD},
+       {0x4C4F, 0x537F},
+       {0x4C50, 0x5770},
+       {0x4C51, 0x5883},
+       {0x4C52, 0x5E9A},
+       {0x4C53, 0x5F91},
+       {0x4C54, 0x6176},
+       {0x4C55, 0x61AC},
+       {0x4C56, 0x64CE},
+       {0x4C57, 0x656C},
+       {0x4C58, 0x666F},
+       {0x4C59, 0x66BB},
+       {0x4C5A, 0x66F4},
+       {0x4C5B, 0x6897},
+       {0x4C5C, 0x6D87},
+       {0x4C5D, 0x7085},
+       {0x4C5E, 0x70F1},
+       {0x4C5F, 0x749F},
+       {0x4C60, 0x74A5},
+       {0x4C61, 0x74CA},
+       {0x4C62, 0x75D9},
+       {0x4C63, 0x786C},
+       {0x4C64, 0x78EC},
+       {0x4C65, 0x7ADF},
+       {0x4C66, 0x7AF6},
+       {0x4C67, 0x7D45},
+       {0x4C68, 0x7D93},
+       {0x4C69, 0x8015},
+       {0x4C6A, 0x803F},
+       {0x4C6B, 0x811B},
+       {0x4C6C, 0x8396},
+       {0x4C6D, 0x8B66},
+       {0x4C6E, 0x8F15},
+       {0x4C6F, 0x9015},
+       {0x4C70, 0x93E1},
+       {0x4C71, 0x9803},
+       {0x4C72, 0x9838},
+       {0x4C73, 0x9A5A},
+       {0x4C74, 0x9BE8},
+       {0x4C75, 0x4FC2},
+       {0x4C76, 0x5553},
+       {0x4C77, 0x583A},
+       {0x4C78, 0x5951},
+       {0x4C79, 0x5B63},
+       {0x4C7A, 0x5C46},
+       {0x4C7B, 0x60B8},
+       {0x4C7C, 0x6212},
+       {0x4C7D, 0x6842},
+       {0x4C7E, 0x68B0},
+       {0x4D21, 0x68E8},
+       {0x4D22, 0x6EAA},
+       {0x4D23, 0x754C},
+       {0x4D24, 0x7678},
+       {0x4D25, 0x78CE},
+       {0x4D26, 0x7A3D},
+       {0x4D27, 0x7CFB},
+       {0x4D28, 0x7E6B},
+       {0x4D29, 0x7E7C},
+       {0x4D2A, 0x8A08},
+       {0x4D2B, 0x8AA1},
+       {0x4D2C, 0x8C3F},
+       {0x4D2D, 0x968E},
+       {0x4D2E, 0x9DC4},
+       {0x4D2F, 0x53E4},
+       {0x4D30, 0x53E9},
+       {0x4D31, 0x544A},
+       {0x4D32, 0x5471},
+       {0x4D33, 0x56FA},
+       {0x4D34, 0x59D1},
+       {0x4D35, 0x5B64},
+       {0x4D36, 0x5C3B},
+       {0x4D37, 0x5EAB},
+       {0x4D38, 0x62F7},
+       {0x4D39, 0x6537},
+       {0x4D3A, 0x6545},
+       {0x4D3B, 0x6572},
+       {0x4D3C, 0x66A0},
+       {0x4D3D, 0x67AF},
+       {0x4D3E, 0x69C1},
+       {0x4D3F, 0x6CBD},
+       {0x4D40, 0x75FC},
+       {0x4D41, 0x7690},
+       {0x4D42, 0x777E},
+       {0x4D43, 0x7A3F},
+       {0x4D44, 0x7F94},
+       {0x4D45, 0x8003},
+       {0x4D46, 0x80A1},
+       {0x4D47, 0x818F},
+       {0x4D48, 0x82E6},
+       {0x4D49, 0x82FD},
+       {0x4D4A, 0x83F0},
+       {0x4D4B, 0x85C1},
+       {0x4D4C, 0x8831},
+       {0x4D4D, 0x88B4},
+       {0x4D4E, 0x8AA5},
+       {0x4D4F, 0xF903},
+       {0x4D50, 0x8F9C},
+       {0x4D51, 0x932E},
+       {0x4D52, 0x96C7},
+       {0x4D53, 0x9867},
+       {0x4D54, 0x9AD8},
+       {0x4D55, 0x9F13},
+       {0x4D56, 0x54ED},
+       {0x4D57, 0x659B},
+       {0x4D58, 0x66F2},
+       {0x4D59, 0x688F},
+       {0x4D5A, 0x7A40},
+       {0x4D5B, 0x8C37},
+       {0x4D5C, 0x9D60},
+       {0x4D5D, 0x56F0},
+       {0x4D5E, 0x5764},
+       {0x4D5F, 0x5D11},
+       {0x4D60, 0x6606},
+       {0x4D61, 0x68B1},
+       {0x4D62, 0x68CD},
+       {0x4D63, 0x6EFE},
+       {0x4D64, 0x7428},
+       {0x4D65, 0x889E},
+       {0x4D66, 0x9BE4},
+       {0x4D67, 0x6C68},
+       {0x4D68, 0xF904},
+       {0x4D69, 0x9AA8},
+       {0x4D6A, 0x4F9B},
+       {0x4D6B, 0x516C},
+       {0x4D6C, 0x5171},
+       {0x4D6D, 0x529F},
+       {0x4D6E, 0x5B54},
+       {0x4D6F, 0x5DE5},
+       {0x4D70, 0x6050},
+       {0x4D71, 0x606D},
+       {0x4D72, 0x62F1},
+       {0x4D73, 0x63A7},
+       {0x4D74, 0x653B},
+       {0x4D75, 0x73D9},
+       {0x4D76, 0x7A7A},
+       {0x4D77, 0x86A3},
+       {0x4D78, 0x8CA2},
+       {0x4D79, 0x978F},
+       {0x4D7A, 0x4E32},
+       {0x4D7B, 0x5BE1},
+       {0x4D7C, 0x6208},
+       {0x4D7D, 0x679C},
+       {0x4D7E, 0x74DC},
+       {0x4E21, 0x79D1},
+       {0x4E22, 0x83D3},
+       {0x4E23, 0x8A87},
+       {0x4E24, 0x8AB2},
+       {0x4E25, 0x8DE8},
+       {0x4E26, 0x904E},
+       {0x4E27, 0x934B},
+       {0x4E28, 0x9846},
+       {0x4E29, 0x5ED3},
+       {0x4E2A, 0x69E8},
+       {0x4E2B, 0x85FF},
+       {0x4E2C, 0x90ED},
+       {0x4E2D, 0xF905},
+       {0x4E2E, 0x51A0},
+       {0x4E2F, 0x5B98},
+       {0x4E30, 0x5BEC},
+       {0x4E31, 0x6163},
+       {0x4E32, 0x68FA},
+       {0x4E33, 0x6B3E},
+       {0x4E34, 0x704C},
+       {0x4E35, 0x742F},
+       {0x4E36, 0x74D8},
+       {0x4E37, 0x7BA1},
+       {0x4E38, 0x7F50},
+       {0x4E39, 0x83C5},
+       {0x4E3A, 0x89C0},
+       {0x4E3B, 0x8CAB},
+       {0x4E3C, 0x95DC},
+       {0x4E3D, 0x9928},
+       {0x4E3E, 0x522E},
+       {0x4E3F, 0x605D},
+       {0x4E40, 0x62EC},
+       {0x4E41, 0x9002},
+       {0x4E42, 0x4F8A},
+       {0x4E43, 0x5149},
+       {0x4E44, 0x5321},
+       {0x4E45, 0x58D9},
+       {0x4E46, 0x5EE3},
+       {0x4E47, 0x66E0},
+       {0x4E48, 0x6D38},
+       {0x4E49, 0x709A},
+       {0x4E4A, 0x72C2},
+       {0x4E4B, 0x73D6},
+       {0x4E4C, 0x7B50},
+       {0x4E4D, 0x80F1},
+       {0x4E4E, 0x945B},
+       {0x4E4F, 0x5366},
+       {0x4E50, 0x639B},
+       {0x4E51, 0x7F6B},
+       {0x4E52, 0x4E56},
+       {0x4E53, 0x5080},
+       {0x4E54, 0x584A},
+       {0x4E55, 0x58DE},
+       {0x4E56, 0x602A},
+       {0x4E57, 0x6127},
+       {0x4E58, 0x62D0},
+       {0x4E59, 0x69D0},
+       {0x4E5A, 0x9B41},
+       {0x4E5B, 0x5B8F},
+       {0x4E5C, 0x7D18},
+       {0x4E5D, 0x80B1},
+       {0x4E5E, 0x8F5F},
+       {0x4E5F, 0x4EA4},
+       {0x4E60, 0x50D1},
+       {0x4E61, 0x54AC},
+       {0x4E62, 0x55AC},
+       {0x4E63, 0x5B0C},
+       {0x4E64, 0x5DA0},
+       {0x4E65, 0x5DE7},
+       {0x4E66, 0x652A},
+       {0x4E67, 0x654E},
+       {0x4E68, 0x6821},
+       {0x4E69, 0x6A4B},
+       {0x4E6A, 0x72E1},
+       {0x4E6B, 0x768E},
+       {0x4E6C, 0x77EF},
+       {0x4E6D, 0x7D5E},
+       {0x4E6E, 0x7FF9},
+       {0x4E6F, 0x81A0},
+       {0x4E70, 0x854E},
+       {0x4E71, 0x86DF},
+       {0x4E72, 0x8F03},
+       {0x4E73, 0x8F4E},
+       {0x4E74, 0x90CA},
+       {0x4E75, 0x9903},
+       {0x4E76, 0x9A55},
+       {0x4E77, 0x9BAB},
+       {0x4E78, 0x4E18},
+       {0x4E79, 0x4E45},
+       {0x4E7A, 0x4E5D},
+       {0x4E7B, 0x4EC7},
+       {0x4E7C, 0x4FF1},
+       {0x4E7D, 0x5177},
+       {0x4E7E, 0x52FE},
+       {0x4F21, 0x5340},
+       {0x4F22, 0x53E3},
+       {0x4F23, 0x53E5},
+       {0x4F24, 0x548E},
+       {0x4F25, 0x5614},
+       {0x4F26, 0x5775},
+       {0x4F27, 0x57A2},
+       {0x4F28, 0x5BC7},
+       {0x4F29, 0x5D87},
+       {0x4F2A, 0x5ED0},
+       {0x4F2B, 0x61FC},
+       {0x4F2C, 0x62D8},
+       {0x4F2D, 0x6551},
+       {0x4F2E, 0x67B8},
+       {0x4F2F, 0x67E9},
+       {0x4F30, 0x69CB},
+       {0x4F31, 0x6B50},
+       {0x4F32, 0x6BC6},
+       {0x4F33, 0x6BEC},
+       {0x4F34, 0x6C42},
+       {0x4F35, 0x6E9D},
+       {0x4F36, 0x7078},
+       {0x4F37, 0x72D7},
+       {0x4F38, 0x7396},
+       {0x4F39, 0x7403},
+       {0x4F3A, 0x77BF},
+       {0x4F3B, 0x77E9},
+       {0x4F3C, 0x7A76},
+       {0x4F3D, 0x7D7F},
+       {0x4F3E, 0x8009},
+       {0x4F3F, 0x81FC},
+       {0x4F40, 0x8205},
+       {0x4F41, 0x820A},
+       {0x4F42, 0x82DF},
+       {0x4F43, 0x8862},
+       {0x4F44, 0x8B33},
+       {0x4F45, 0x8CFC},
+       {0x4F46, 0x8EC0},
+       {0x4F47, 0x9011},
+       {0x4F48, 0x90B1},
+       {0x4F49, 0x9264},
+       {0x4F4A, 0x92B6},
+       {0x4F4B, 0x99D2},
+       {0x4F4C, 0x9A45},
+       {0x4F4D, 0x9CE9},
+       {0x4F4E, 0x9DD7},
+       {0x4F4F, 0x9F9C},
+       {0x4F50, 0x570B},
+       {0x4F51, 0x5C40},
+       {0x4F52, 0x83CA},
+       {0x4F53, 0x97A0},
+       {0x4F54, 0x97AB},
+       {0x4F55, 0x9EB4},
+       {0x4F56, 0x541B},
+       {0x4F57, 0x7A98},
+       {0x4F58, 0x7FA4},
+       {0x4F59, 0x88D9},
+       {0x4F5A, 0x8ECD},
+       {0x4F5B, 0x90E1},
+       {0x4F5C, 0x5800},
+       {0x4F5D, 0x5C48},
+       {0x4F5E, 0x6398},
+       {0x4F5F, 0x7A9F},
+       {0x4F60, 0x5BAE},
+       {0x4F61, 0x5F13},
+       {0x4F62, 0x7A79},
+       {0x4F63, 0x7AAE},
+       {0x4F64, 0x828E},
+       {0x4F65, 0x8EAC},
+       {0x4F66, 0x5026},
+       {0x4F67, 0x5238},
+       {0x4F68, 0x52F8},
+       {0x4F69, 0x5377},
+       {0x4F6A, 0x5708},
+       {0x4F6B, 0x62F3},
+       {0x4F6C, 0x6372},
+       {0x4F6D, 0x6B0A},
+       {0x4F6E, 0x6DC3},
+       {0x4F6F, 0x7737},
+       {0x4F70, 0x53A5},
+       {0x4F71, 0x7357},
+       {0x4F72, 0x8568},
+       {0x4F73, 0x8E76},
+       {0x4F74, 0x95D5},
+       {0x4F75, 0x673A},
+       {0x4F76, 0x6AC3},
+       {0x4F77, 0x6F70},
+       {0x4F78, 0x8A6D},
+       {0x4F79, 0x8ECC},
+       {0x4F7A, 0x994B},
+       {0x4F7B, 0xF906},
+       {0x4F7C, 0x6677},
+       {0x4F7D, 0x6B78},
+       {0x4F7E, 0x8CB4},
+       {0x5021, 0x9B3C},
+       {0x5022, 0xF907},
+       {0x5023, 0x53EB},
+       {0x5024, 0x572D},
+       {0x5025, 0x594E},
+       {0x5026, 0x63C6},
+       {0x5027, 0x69FB},
+       {0x5028, 0x73EA},
+       {0x5029, 0x7845},
+       {0x502A, 0x7ABA},
+       {0x502B, 0x7AC5},
+       {0x502C, 0x7CFE},
+       {0x502D, 0x8475},
+       {0x502E, 0x898F},
+       {0x502F, 0x8D73},
+       {0x5030, 0x9035},
+       {0x5031, 0x95A8},
+       {0x5032, 0x52FB},
+       {0x5033, 0x5747},
+       {0x5034, 0x7547},
+       {0x5035, 0x7B60},
+       {0x5036, 0x83CC},
+       {0x5037, 0x921E},
+       {0x5038, 0xF908},
+       {0x5039, 0x6A58},
+       {0x503A, 0x514B},
+       {0x503B, 0x524B},
+       {0x503C, 0x5287},
+       {0x503D, 0x621F},
+       {0x503E, 0x68D8},
+       {0x503F, 0x6975},
+       {0x5040, 0x9699},
+       {0x5041, 0x50C5},
+       {0x5042, 0x52A4},
+       {0x5043, 0x52E4},
+       {0x5044, 0x61C3},
+       {0x5045, 0x65A4},
+       {0x5046, 0x6839},
+       {0x5047, 0x69FF},
+       {0x5048, 0x747E},
+       {0x5049, 0x7B4B},
+       {0x504A, 0x82B9},
+       {0x504B, 0x83EB},
+       {0x504C, 0x89B2},
+       {0x504D, 0x8B39},
+       {0x504E, 0x8FD1},
+       {0x504F, 0x9949},
+       {0x5050, 0xF909},
+       {0x5051, 0x4ECA},
+       {0x5052, 0x5997},
+       {0x5053, 0x64D2},
+       {0x5054, 0x6611},
+       {0x5055, 0x6A8E},
+       {0x5056, 0x7434},
+       {0x5057, 0x7981},
+       {0x5058, 0x79BD},
+       {0x5059, 0x82A9},
+       {0x505A, 0x887E},
+       {0x505B, 0x887F},
+       {0x505C, 0x895F},
+       {0x505D, 0xF90A},
+       {0x505E, 0x9326},
+       {0x505F, 0x4F0B},
+       {0x5060, 0x53CA},
+       {0x5061, 0x6025},
+       {0x5062, 0x6271},
+       {0x5063, 0x6C72},
+       {0x5064, 0x7D1A},
+       {0x5065, 0x7D66},
+       {0x5066, 0x4E98},
+       {0x5067, 0x5162},
+       {0x5068, 0x77DC},
+       {0x5069, 0x80AF},
+       {0x506A, 0x4F01},
+       {0x506B, 0x4F0E},
+       {0x506C, 0x5176},
+       {0x506D, 0x5180},
+       {0x506E, 0x55DC},
+       {0x506F, 0x5668},
+       {0x5070, 0x573B},
+       {0x5071, 0x57FA},
+       {0x5072, 0x57FC},
+       {0x5073, 0x5914},
+       {0x5074, 0x5947},
+       {0x5075, 0x5993},
+       {0x5076, 0x5BC4},
+       {0x5077, 0x5C90},
+       {0x5078, 0x5D0E},
+       {0x5079, 0x5DF1},
+       {0x507A, 0x5E7E},
+       {0x507B, 0x5FCC},
+       {0x507C, 0x6280},
+       {0x507D, 0x65D7},
+       {0x507E, 0x65E3},
+       {0x5121, 0x671E},
+       {0x5122, 0x671F},
+       {0x5123, 0x675E},
+       {0x5124, 0x68CB},
+       {0x5125, 0x68C4},
+       {0x5126, 0x6A5F},
+       {0x5127, 0x6B3A},
+       {0x5128, 0x6C23},
+       {0x5129, 0x6C7D},
+       {0x512A, 0x6C82},
+       {0x512B, 0x6DC7},
+       {0x512C, 0x7398},
+       {0x512D, 0x7426},
+       {0x512E, 0x742A},
+       {0x512F, 0x7482},
+       {0x5130, 0x74A3},
+       {0x5131, 0x7578},
+       {0x5132, 0x757F},
+       {0x5133, 0x7881},
+       {0x5134, 0x78EF},
+       {0x5135, 0x7941},
+       {0x5136, 0x7947},
+       {0x5137, 0x7948},
+       {0x5138, 0x797A},
+       {0x5139, 0x7B95},
+       {0x513A, 0x7D00},
+       {0x513B, 0x7DBA},
+       {0x513C, 0x7F88},
+       {0x513D, 0x8006},
+       {0x513E, 0x802D},
+       {0x513F, 0x808C},
+       {0x5140, 0x8A18},
+       {0x5141, 0x8B4F},
+       {0x5142, 0x8C48},
+       {0x5143, 0x8D77},
+       {0x5144, 0x9321},
+       {0x5145, 0x9324},
+       {0x5146, 0x98E2},
+       {0x5147, 0x9951},
+       {0x5148, 0x9A0E},
+       {0x5149, 0x9A0F},
+       {0x514A, 0x9A65},
+       {0x514B, 0x9E92},
+       {0x514C, 0x7DCA},
+       {0x514D, 0x4F76},
+       {0x514E, 0x5409},
+       {0x514F, 0x62EE},
+       {0x5150, 0x6854},
+       {0x5151, 0x91D1},
+       {0x5152, 0x55AB},
+       {0x5153, 0x513A},
+       {0x5154, 0xF90B},
+       {0x5155, 0xF90C},
+       {0x5156, 0x5A1C},
+       {0x5157, 0x61E6},
+       {0x5158, 0xF90D},
+       {0x5159, 0x62CF},
+       {0x515A, 0x62FF},
+       {0x515B, 0xF90E},
+       {0x515C, 0xF90F},
+       {0x515D, 0xF910},
+       {0x515E, 0xF911},
+       {0x515F, 0xF912},
+       {0x5160, 0xF913},
+       {0x5161, 0x90A3},
+       {0x5162, 0xF914},
+       {0x5163, 0xF915},
+       {0x5164, 0xF916},
+       {0x5165, 0xF917},
+       {0x5166, 0xF918},
+       {0x5167, 0x8AFE},
+       {0x5168, 0xF919},
+       {0x5169, 0xF91A},
+       {0x516A, 0xF91B},
+       {0x516B, 0xF91C},
+       {0x516C, 0x6696},
+       {0x516D, 0xF91D},
+       {0x516E, 0x7156},
+       {0x516F, 0xF91E},
+       {0x5170, 0xF91F},
+       {0x5171, 0x96E3},
+       {0x5172, 0xF920},
+       {0x5173, 0x634F},
+       {0x5174, 0x637A},
+       {0x5175, 0x5357},
+       {0x5176, 0xF921},
+       {0x5177, 0x678F},
+       {0x5178, 0x6960},
+       {0x5179, 0x6E73},
+       {0x517A, 0xF922},
+       {0x517B, 0x7537},
+       {0x517C, 0xF923},
+       {0x517D, 0xF924},
+       {0x517E, 0xF925},
+       {0x5221, 0x7D0D},
+       {0x5222, 0xF926},
+       {0x5223, 0xF927},
+       {0x5224, 0x8872},
+       {0x5225, 0x56CA},
+       {0x5226, 0x5A18},
+       {0x5227, 0xF928},
+       {0x5228, 0xF929},
+       {0x5229, 0xF92A},
+       {0x522A, 0xF92B},
+       {0x522B, 0xF92C},
+       {0x522C, 0x4E43},
+       {0x522D, 0xF92D},
+       {0x522E, 0x5167},
+       {0x522F, 0x5948},
+       {0x5230, 0x67F0},
+       {0x5231, 0x8010},
+       {0x5232, 0xF92E},
+       {0x5233, 0x5973},
+       {0x5234, 0x5E74},
+       {0x5235, 0x649A},
+       {0x5236, 0x79CA},
+       {0x5237, 0x5FF5},
+       {0x5238, 0x606C},
+       {0x5239, 0x62C8},
+       {0x523A, 0x637B},
+       {0x523B, 0x5BE7},
+       {0x523C, 0x5BD7},
+       {0x523D, 0x52AA},
+       {0x523E, 0xF92F},
+       {0x523F, 0x5974},
+       {0x5240, 0x5F29},
+       {0x5241, 0x6012},
+       {0x5242, 0xF930},
+       {0x5243, 0xF931},
+       {0x5244, 0xF932},
+       {0x5245, 0x7459},
+       {0x5246, 0xF933},
+       {0x5247, 0xF934},
+       {0x5248, 0xF935},
+       {0x5249, 0xF936},
+       {0x524A, 0xF937},
+       {0x524B, 0xF938},
+       {0x524C, 0x99D1},
+       {0x524D, 0xF939},
+       {0x524E, 0xF93A},
+       {0x524F, 0xF93B},
+       {0x5250, 0xF93C},
+       {0x5251, 0xF93D},
+       {0x5252, 0xF93E},
+       {0x5253, 0xF93F},
+       {0x5254, 0xF940},
+       {0x5255, 0xF941},
+       {0x5256, 0xF942},
+       {0x5257, 0xF943},
+       {0x5258, 0x6FC3},
+       {0x5259, 0xF944},
+       {0x525A, 0xF945},
+       {0x525B, 0x81BF},
+       {0x525C, 0x8FB2},
+       {0x525D, 0x60F1},
+       {0x525E, 0xF946},
+       {0x525F, 0xF947},
+       {0x5260, 0x8166},
+       {0x5261, 0xF948},
+       {0x5262, 0xF949},
+       {0x5263, 0x5C3F},
+       {0x5264, 0xF94A},
+       {0x5265, 0xF94B},
+       {0x5266, 0xF94C},
+       {0x5267, 0xF94D},
+       {0x5268, 0xF94E},
+       {0x5269, 0xF94F},
+       {0x526A, 0xF950},
+       {0x526B, 0xF951},
+       {0x526C, 0x5AE9},
+       {0x526D, 0x8A25},
+       {0x526E, 0x677B},
+       {0x526F, 0x7D10},
+       {0x5270, 0xF952},
+       {0x5271, 0xF953},
+       {0x5272, 0xF954},
+       {0x5273, 0xF955},
+       {0x5274, 0xF956},
+       {0x5275, 0xF957},
+       {0x5276, 0x80FD},
+       {0x5277, 0xF958},
+       {0x5278, 0xF959},
+       {0x5279, 0x5C3C},
+       {0x527A, 0x6CE5},
+       {0x527B, 0x533F},
+       {0x527C, 0x6EBA},
+       {0x527D, 0x591A},
+       {0x527E, 0x8336},
+       {0x5321, 0x4E39},
+       {0x5322, 0x4EB6},
+       {0x5323, 0x4F46},
+       {0x5324, 0x55AE},
+       {0x5325, 0x5718},
+       {0x5326, 0x58C7},
+       {0x5327, 0x5F56},
+       {0x5328, 0x65B7},
+       {0x5329, 0x65E6},
+       {0x532A, 0x6A80},
+       {0x532B, 0x6BB5},
+       {0x532C, 0x6E4D},
+       {0x532D, 0x77ED},
+       {0x532E, 0x7AEF},
+       {0x532F, 0x7C1E},
+       {0x5330, 0x7DDE},
+       {0x5331, 0x86CB},
+       {0x5332, 0x8892},
+       {0x5333, 0x9132},
+       {0x5334, 0x935B},
+       {0x5335, 0x64BB},
+       {0x5336, 0x6FBE},
+       {0x5337, 0x737A},
+       {0x5338, 0x75B8},
+       {0x5339, 0x9054},
+       {0x533A, 0x5556},
+       {0x533B, 0x574D},
+       {0x533C, 0x61BA},
+       {0x533D, 0x64D4},
+       {0x533E, 0x66C7},
+       {0x533F, 0x6DE1},
+       {0x5340, 0x6E5B},
+       {0x5341, 0x6F6D},
+       {0x5342, 0x6FB9},
+       {0x5343, 0x75F0},
+       {0x5344, 0x8043},
+       {0x5345, 0x81BD},
+       {0x5346, 0x8541},
+       {0x5347, 0x8983},
+       {0x5348, 0x8AC7},
+       {0x5349, 0x8B5A},
+       {0x534A, 0x931F},
+       {0x534B, 0x6C93},
+       {0x534C, 0x7553},
+       {0x534D, 0x7B54},
+       {0x534E, 0x8E0F},
+       {0x534F, 0x905D},
+       {0x5350, 0x5510},
+       {0x5351, 0x5802},
+       {0x5352, 0x5858},
+       {0x5353, 0x5E62},
+       {0x5354, 0x6207},
+       {0x5355, 0x649E},
+       {0x5356, 0x68E0},
+       {0x5357, 0x7576},
+       {0x5358, 0x7CD6},
+       {0x5359, 0x87B3},
+       {0x535A, 0x9EE8},
+       {0x535B, 0x4EE3},
+       {0x535C, 0x5788},
+       {0x535D, 0x576E},
+       {0x535E, 0x5927},
+       {0x535F, 0x5C0D},
+       {0x5360, 0x5CB1},
+       {0x5361, 0x5E36},
+       {0x5362, 0x5F85},
+       {0x5363, 0x6234},
+       {0x5364, 0x64E1},
+       {0x5365, 0x73B3},
+       {0x5366, 0x81FA},
+       {0x5367, 0x888B},
+       {0x5368, 0x8CB8},
+       {0x5369, 0x968A},
+       {0x536A, 0x9EDB},
+       {0x536B, 0x5B85},
+       {0x536C, 0x5FB7},
+       {0x536D, 0x60B3},
+       {0x536E, 0x5012},
+       {0x536F, 0x5200},
+       {0x5370, 0x5230},
+       {0x5371, 0x5716},
+       {0x5372, 0x5835},
+       {0x5373, 0x5857},
+       {0x5374, 0x5C0E},
+       {0x5375, 0x5C60},
+       {0x5376, 0x5CF6},
+       {0x5377, 0x5D8B},
+       {0x5378, 0x5EA6},
+       {0x5379, 0x5F92},
+       {0x537A, 0x60BC},
+       {0x537B, 0x6311},
+       {0x537C, 0x6389},
+       {0x537D, 0x6417},
+       {0x537E, 0x6843},
+       {0x5421, 0x68F9},
+       {0x5422, 0x6AC2},
+       {0x5423, 0x6DD8},
+       {0x5424, 0x6E21},
+       {0x5425, 0x6ED4},
+       {0x5426, 0x6FE4},
+       {0x5427, 0x71FE},
+       {0x5428, 0x76DC},
+       {0x5429, 0x7779},
+       {0x542A, 0x79B1},
+       {0x542B, 0x7A3B},
+       {0x542C, 0x8404},
+       {0x542D, 0x89A9},
+       {0x542E, 0x8CED},
+       {0x542F, 0x8DF3},
+       {0x5430, 0x8E48},
+       {0x5431, 0x9003},
+       {0x5432, 0x9014},
+       {0x5433, 0x9053},
+       {0x5434, 0x90FD},
+       {0x5435, 0x934D},
+       {0x5436, 0x9676},
+       {0x5437, 0x97DC},
+       {0x5438, 0x6BD2},
+       {0x5439, 0x7006},
+       {0x543A, 0x7258},
+       {0x543B, 0x72A2},
+       {0x543C, 0x7368},
+       {0x543D, 0x7763},
+       {0x543E, 0x79BF},
+       {0x543F, 0x7BE4},
+       {0x5440, 0x7E9B},
+       {0x5441, 0x8B80},
+       {0x5442, 0x58A9},
+       {0x5443, 0x60C7},
+       {0x5444, 0x6566},
+       {0x5445, 0x65FD},
+       {0x5446, 0x66BE},
+       {0x5447, 0x6C8C},
+       {0x5448, 0x711E},
+       {0x5449, 0x71C9},
+       {0x544A, 0x8C5A},
+       {0x544B, 0x9813},
+       {0x544C, 0x4E6D},
+       {0x544D, 0x7A81},
+       {0x544E, 0x4EDD},
+       {0x544F, 0x51AC},
+       {0x5450, 0x51CD},
+       {0x5451, 0x52D5},
+       {0x5452, 0x540C},
+       {0x5453, 0x61A7},
+       {0x5454, 0x6771},
+       {0x5455, 0x6850},
+       {0x5456, 0x68DF},
+       {0x5457, 0x6D1E},
+       {0x5458, 0x6F7C},
+       {0x5459, 0x75BC},
+       {0x545A, 0x77B3},
+       {0x545B, 0x7AE5},
+       {0x545C, 0x80F4},
+       {0x545D, 0x8463},
+       {0x545E, 0x9285},
+       {0x545F, 0x515C},
+       {0x5460, 0x6597},
+       {0x5461, 0x675C},
+       {0x5462, 0x6793},
+       {0x5463, 0x75D8},
+       {0x5464, 0x7AC7},
+       {0x5465, 0x8373},
+       {0x5466, 0xF95A},
+       {0x5467, 0x8C46},
+       {0x5468, 0x9017},
+       {0x5469, 0x982D},
+       {0x546A, 0x5C6F},
+       {0x546B, 0x81C0},
+       {0x546C, 0x829A},
+       {0x546D, 0x9041},
+       {0x546E, 0x906F},
+       {0x546F, 0x920D},
+       {0x5470, 0x5F97},
+       {0x5471, 0x5D9D},
+       {0x5472, 0x6A59},
+       {0x5473, 0x71C8},
+       {0x5474, 0x767B},
+       {0x5475, 0x7B49},
+       {0x5476, 0x85E4},
+       {0x5477, 0x8B04},
+       {0x5478, 0x9127},
+       {0x5479, 0x9A30},
+       {0x547A, 0x5587},
+       {0x547B, 0x61F6},
+       {0x547C, 0xF95B},
+       {0x547D, 0x7669},
+       {0x547E, 0x7F85},
+       {0x5521, 0x863F},
+       {0x5522, 0x87BA},
+       {0x5523, 0x88F8},
+       {0x5524, 0x908F},
+       {0x5525, 0xF95C},
+       {0x5526, 0x6D1B},
+       {0x5527, 0x70D9},
+       {0x5528, 0x73DE},
+       {0x5529, 0x7D61},
+       {0x552A, 0x843D},
+       {0x552B, 0xF95D},
+       {0x552C, 0x916A},
+       {0x552D, 0x99F1},
+       {0x552E, 0xF95E},
+       {0x552F, 0x4E82},
+       {0x5530, 0x5375},
+       {0x5531, 0x6B04},
+       {0x5532, 0x6B12},
+       {0x5533, 0x703E},
+       {0x5534, 0x721B},
+       {0x5535, 0x862D},
+       {0x5536, 0x9E1E},
+       {0x5537, 0x524C},
+       {0x5538, 0x8FA3},
+       {0x5539, 0x5D50},
+       {0x553A, 0x64E5},
+       {0x553B, 0x652C},
+       {0x553C, 0x6B16},
+       {0x553D, 0x6FEB},
+       {0x553E, 0x7C43},
+       {0x553F, 0x7E9C},
+       {0x5540, 0x85CD},
+       {0x5541, 0x8964},
+       {0x5542, 0x89BD},
+       {0x5543, 0x62C9},
+       {0x5544, 0x81D8},
+       {0x5545, 0x881F},
+       {0x5546, 0x5ECA},
+       {0x5547, 0x6717},
+       {0x5548, 0x6D6A},
+       {0x5549, 0x72FC},
+       {0x554A, 0x7405},
+       {0x554B, 0x746F},
+       {0x554C, 0x8782},
+       {0x554D, 0x90DE},
+       {0x554E, 0x4F86},
+       {0x554F, 0x5D0D},
+       {0x5550, 0x5FA0},
+       {0x5551, 0x840A},
+       {0x5552, 0x51B7},
+       {0x5553, 0x63A0},
+       {0x5554, 0x7565},
+       {0x5555, 0x4EAE},
+       {0x5556, 0x5006},
+       {0x5557, 0x5169},
+       {0x5558, 0x51C9},
+       {0x5559, 0x6881},
+       {0x555A, 0x6A11},
+       {0x555B, 0x7CAE},
+       {0x555C, 0x7CB1},
+       {0x555D, 0x7CE7},
+       {0x555E, 0x826F},
+       {0x555F, 0x8AD2},
+       {0x5560, 0x8F1B},
+       {0x5561, 0x91CF},
+       {0x5562, 0x4FB6},
+       {0x5563, 0x5137},
+       {0x5564, 0x52F5},
+       {0x5565, 0x5442},
+       {0x5566, 0x5EEC},
+       {0x5567, 0x616E},
+       {0x5568, 0x623E},
+       {0x5569, 0x65C5},
+       {0x556A, 0x6ADA},
+       {0x556B, 0x6FFE},
+       {0x556C, 0x792A},
+       {0x556D, 0x85DC},
+       {0x556E, 0x8823},
+       {0x556F, 0x95AD},
+       {0x5570, 0x9A62},
+       {0x5571, 0x9A6A},
+       {0x5572, 0x9E97},
+       {0x5573, 0x9ECE},
+       {0x5574, 0x529B},
+       {0x5575, 0x66C6},
+       {0x5576, 0x6B77},
+       {0x5577, 0x701D},
+       {0x5578, 0x792B},
+       {0x5579, 0x8F62},
+       {0x557A, 0x9742},
+       {0x557B, 0x6190},
+       {0x557C, 0x6200},
+       {0x557D, 0x6523},
+       {0x557E, 0x6F23},
+       {0x5621, 0x7149},
+       {0x5622, 0x7489},
+       {0x5623, 0x7DF4},
+       {0x5624, 0x806F},
+       {0x5625, 0x84EE},
+       {0x5626, 0x8F26},
+       {0x5627, 0x9023},
+       {0x5628, 0x934A},
+       {0x5629, 0x51BD},
+       {0x562A, 0x5217},
+       {0x562B, 0x52A3},
+       {0x562C, 0x6D0C},
+       {0x562D, 0x70C8},
+       {0x562E, 0x88C2},
+       {0x562F, 0x5EC9},
+       {0x5630, 0x6582},
+       {0x5631, 0x6BAE},
+       {0x5632, 0x6FC2},
+       {0x5633, 0x7C3E},
+       {0x5634, 0x7375},
+       {0x5635, 0x4EE4},
+       {0x5636, 0x4F36},
+       {0x5637, 0x56F9},
+       {0x5638, 0xF95F},
+       {0x5639, 0x5CBA},
+       {0x563A, 0x5DBA},
+       {0x563B, 0x601C},
+       {0x563C, 0x73B2},
+       {0x563D, 0x7B2D},
+       {0x563E, 0x7F9A},
+       {0x563F, 0x7FCE},
+       {0x5640, 0x8046},
+       {0x5641, 0x901E},
+       {0x5642, 0x9234},
+       {0x5643, 0x96F6},
+       {0x5644, 0x9748},
+       {0x5645, 0x9818},
+       {0x5646, 0x9F61},
+       {0x5647, 0x4F8B},
+       {0x5648, 0x6FA7},
+       {0x5649, 0x79AE},
+       {0x564A, 0x91B4},
+       {0x564B, 0x96B7},
+       {0x564C, 0x52DE},
+       {0x564D, 0xF960},
+       {0x564E, 0x6488},
+       {0x564F, 0x64C4},
+       {0x5650, 0x6AD3},
+       {0x5651, 0x6F5E},
+       {0x5652, 0x7018},
+       {0x5653, 0x7210},
+       {0x5654, 0x76E7},
+       {0x5655, 0x8001},
+       {0x5656, 0x8606},
+       {0x5657, 0x865C},
+       {0x5658, 0x8DEF},
+       {0x5659, 0x8F05},
+       {0x565A, 0x9732},
+       {0x565B, 0x9B6F},
+       {0x565C, 0x9DFA},
+       {0x565D, 0x9E75},
+       {0x565E, 0x788C},
+       {0x565F, 0x797F},
+       {0x5660, 0x7DA0},
+       {0x5661, 0x83C9},
+       {0x5662, 0x9304},
+       {0x5663, 0x9E7F},
+       {0x5664, 0x9E93},
+       {0x5665, 0x8AD6},
+       {0x5666, 0x58DF},
+       {0x5667, 0x5F04},
+       {0x5668, 0x6727},
+       {0x5669, 0x7027},
+       {0x566A, 0x74CF},
+       {0x566B, 0x7C60},
+       {0x566C, 0x807E},
+       {0x566D, 0x5121},
+       {0x566E, 0x7028},
+       {0x566F, 0x7262},
+       {0x5670, 0x78CA},
+       {0x5671, 0x8CC2},
+       {0x5672, 0x8CDA},
+       {0x5673, 0x8CF4},
+       {0x5674, 0x96F7},
+       {0x5675, 0x4E86},
+       {0x5676, 0x50DA},
+       {0x5677, 0x5BEE},
+       {0x5678, 0x5ED6},
+       {0x5679, 0x6599},
+       {0x567A, 0x71CE},
+       {0x567B, 0x7642},
+       {0x567C, 0x77AD},
+       {0x567D, 0x804A},
+       {0x567E, 0x84FC},
+       {0x5721, 0x907C},
+       {0x5722, 0x9B27},
+       {0x5723, 0x9F8D},
+       {0x5724, 0x58D8},
+       {0x5725, 0x5A41},
+       {0x5726, 0x5C62},
+       {0x5727, 0x6A13},
+       {0x5728, 0x6DDA},
+       {0x5729, 0x6F0F},
+       {0x572A, 0x763B},
+       {0x572B, 0x7D2F},
+       {0x572C, 0x7E37},
+       {0x572D, 0x851E},
+       {0x572E, 0x8938},
+       {0x572F, 0x93E4},
+       {0x5730, 0x964B},
+       {0x5731, 0x5289},
+       {0x5732, 0x65D2},
+       {0x5733, 0x67F3},
+       {0x5734, 0x69B4},
+       {0x5735, 0x6D41},
+       {0x5736, 0x6E9C},
+       {0x5737, 0x700F},
+       {0x5738, 0x7409},
+       {0x5739, 0x7460},
+       {0x573A, 0x7559},
+       {0x573B, 0x7624},
+       {0x573C, 0x786B},
+       {0x573D, 0x8B2C},
+       {0x573E, 0x985E},
+       {0x573F, 0x516D},
+       {0x5740, 0x622E},
+       {0x5741, 0x9678},
+       {0x5742, 0x4F96},
+       {0x5743, 0x502B},
+       {0x5744, 0x5D19},
+       {0x5745, 0x6DEA},
+       {0x5746, 0x7DB8},
+       {0x5747, 0x8F2A},
+       {0x5748, 0x5F8B},
+       {0x5749, 0x6144},
+       {0x574A, 0x6817},
+       {0x574B, 0xF961},
+       {0x574C, 0x9686},
+       {0x574D, 0x52D2},
+       {0x574E, 0x808B},
+       {0x574F, 0x51DC},
+       {0x5750, 0x51CC},
+       {0x5751, 0x695E},
+       {0x5752, 0x7A1C},
+       {0x5753, 0x7DBE},
+       {0x5754, 0x83F1},
+       {0x5755, 0x9675},
+       {0x5756, 0x4FDA},
+       {0x5757, 0x5229},
+       {0x5758, 0x5398},
+       {0x5759, 0x540F},
+       {0x575A, 0x550E},
+       {0x575B, 0x5C65},
+       {0x575C, 0x60A7},
+       {0x575D, 0x674E},
+       {0x575E, 0x68A8},
+       {0x575F, 0x6D6C},
+       {0x5760, 0x7281},
+       {0x5761, 0x72F8},
+       {0x5762, 0x7406},
+       {0x5763, 0x7483},
+       {0x5764, 0xF962},
+       {0x5765, 0x75E2},
+       {0x5766, 0x7C6C},
+       {0x5767, 0x7F79},
+       {0x5768, 0x7FB8},
+       {0x5769, 0x8389},
+       {0x576A, 0x88CF},
+       {0x576B, 0x88E1},
+       {0x576C, 0x91CC},
+       {0x576D, 0x91D0},
+       {0x576E, 0x96E2},
+       {0x576F, 0x9BC9},
+       {0x5770, 0x541D},
+       {0x5771, 0x6F7E},
+       {0x5772, 0x71D0},
+       {0x5773, 0x7498},
+       {0x5774, 0x85FA},
+       {0x5775, 0x8EAA},
+       {0x5776, 0x96A3},
+       {0x5777, 0x9C57},
+       {0x5778, 0x9E9F},
+       {0x5779, 0x6797},
+       {0x577A, 0x6DCB},
+       {0x577B, 0x7433},
+       {0x577C, 0x81E8},
+       {0x577D, 0x9716},
+       {0x577E, 0x782C},
+       {0x5821, 0x7ACB},
+       {0x5822, 0x7B20},
+       {0x5823, 0x7C92},
+       {0x5824, 0x6469},
+       {0x5825, 0x746A},
+       {0x5826, 0x75F2},
+       {0x5827, 0x78BC},
+       {0x5828, 0x78E8},
+       {0x5829, 0x99AC},
+       {0x582A, 0x9B54},
+       {0x582B, 0x9EBB},
+       {0x582C, 0x5BDE},
+       {0x582D, 0x5E55},
+       {0x582E, 0x6F20},
+       {0x582F, 0x819C},
+       {0x5830, 0x83AB},
+       {0x5831, 0x9088},
+       {0x5832, 0x4E07},
+       {0x5833, 0x534D},
+       {0x5834, 0x5A29},
+       {0x5835, 0x5DD2},
+       {0x5836, 0x5F4E},
+       {0x5837, 0x6162},
+       {0x5838, 0x633D},
+       {0x5839, 0x6669},
+       {0x583A, 0x66FC},
+       {0x583B, 0x6EFF},
+       {0x583C, 0x6F2B},
+       {0x583D, 0x7063},
+       {0x583E, 0x779E},
+       {0x583F, 0x842C},
+       {0x5840, 0x8513},
+       {0x5841, 0x883B},
+       {0x5842, 0x8F13},
+       {0x5843, 0x9945},
+       {0x5844, 0x9C3B},
+       {0x5845, 0x551C},
+       {0x5846, 0x62B9},
+       {0x5847, 0x672B},
+       {0x5848, 0x6CAB},
+       {0x5849, 0x8309},
+       {0x584A, 0x896A},
+       {0x584B, 0x977A},
+       {0x584C, 0x4EA1},
+       {0x584D, 0x5984},
+       {0x584E, 0x5FD8},
+       {0x584F, 0x5FD9},
+       {0x5850, 0x671B},
+       {0x5851, 0x7DB2},
+       {0x5852, 0x7F54},
+       {0x5853, 0x8292},
+       {0x5854, 0x832B},
+       {0x5855, 0x83BD},
+       {0x5856, 0x8F1E},
+       {0x5857, 0x9099},
+       {0x5858, 0x57CB},
+       {0x5859, 0x59B9},
+       {0x585A, 0x5A92},
+       {0x585B, 0x5BD0},
+       {0x585C, 0x6627},
+       {0x585D, 0x679A},
+       {0x585E, 0x6885},
+       {0x585F, 0x6BCF},
+       {0x5860, 0x7164},
+       {0x5861, 0x7F75},
+       {0x5862, 0x8CB7},
+       {0x5863, 0x8CE3},
+       {0x5864, 0x9081},
+       {0x5865, 0x9B45},
+       {0x5866, 0x8108},
+       {0x5867, 0x8C8A},
+       {0x5868, 0x964C},
+       {0x5869, 0x9A40},
+       {0x586A, 0x9EA5},
+       {0x586B, 0x5B5F},
+       {0x586C, 0x6C13},
+       {0x586D, 0x731B},
+       {0x586E, 0x76F2},
+       {0x586F, 0x76DF},
+       {0x5870, 0x840C},
+       {0x5871, 0x51AA},
+       {0x5872, 0x8993},
+       {0x5873, 0x514D},
+       {0x5874, 0x5195},
+       {0x5875, 0x52C9},
+       {0x5876, 0x68C9},
+       {0x5877, 0x6C94},
+       {0x5878, 0x7704},
+       {0x5879, 0x7720},
+       {0x587A, 0x7DBF},
+       {0x587B, 0x7DEC},
+       {0x587C, 0x9762},
+       {0x587D, 0x9EB5},
+       {0x587E, 0x6EC5},
+       {0x5921, 0x8511},
+       {0x5922, 0x51A5},
+       {0x5923, 0x540D},
+       {0x5924, 0x547D},
+       {0x5925, 0x660E},
+       {0x5926, 0x669D},
+       {0x5927, 0x6927},
+       {0x5928, 0x6E9F},
+       {0x5929, 0x76BF},
+       {0x592A, 0x7791},
+       {0x592B, 0x8317},
+       {0x592C, 0x84C2},
+       {0x592D, 0x879F},
+       {0x592E, 0x9169},
+       {0x592F, 0x9298},
+       {0x5930, 0x9CF4},
+       {0x5931, 0x8882},
+       {0x5932, 0x4FAE},
+       {0x5933, 0x5192},
+       {0x5934, 0x52DF},
+       {0x5935, 0x59C6},
+       {0x5936, 0x5E3D},
+       {0x5937, 0x6155},
+       {0x5938, 0x6478},
+       {0x5939, 0x6479},
+       {0x593A, 0x66AE},
+       {0x593B, 0x67D0},
+       {0x593C, 0x6A21},
+       {0x593D, 0x6BCD},
+       {0x593E, 0x6BDB},
+       {0x593F, 0x725F},
+       {0x5940, 0x7261},
+       {0x5941, 0x7441},
+       {0x5942, 0x7738},
+       {0x5943, 0x77DB},
+       {0x5944, 0x8017},
+       {0x5945, 0x82BC},
+       {0x5946, 0x8305},
+       {0x5947, 0x8B00},
+       {0x5948, 0x8B28},
+       {0x5949, 0x8C8C},
+       {0x594A, 0x6728},
+       {0x594B, 0x6C90},
+       {0x594C, 0x7267},
+       {0x594D, 0x76EE},
+       {0x594E, 0x7766},
+       {0x594F, 0x7A46},
+       {0x5950, 0x9DA9},
+       {0x5951, 0x6B7F},
+       {0x5952, 0x6C92},
+       {0x5953, 0x5922},
+       {0x5954, 0x6726},
+       {0x5955, 0x8499},
+       {0x5956, 0x536F},
+       {0x5957, 0x5893},
+       {0x5958, 0x5999},
+       {0x5959, 0x5EDF},
+       {0x595A, 0x63CF},
+       {0x595B, 0x6634},
+       {0x595C, 0x6773},
+       {0x595D, 0x6E3A},
+       {0x595E, 0x732B},
+       {0x595F, 0x7AD7},
+       {0x5960, 0x82D7},
+       {0x5961, 0x9328},
+       {0x5962, 0x52D9},
+       {0x5963, 0x5DEB},
+       {0x5964, 0x61AE},
+       {0x5965, 0x61CB},
+       {0x5966, 0x620A},
+       {0x5967, 0x62C7},
+       {0x5968, 0x64AB},
+       {0x5969, 0x65E0},
+       {0x596A, 0x6959},
+       {0x596B, 0x6B66},
+       {0x596C, 0x6BCB},
+       {0x596D, 0x7121},
+       {0x596E, 0x73F7},
+       {0x596F, 0x755D},
+       {0x5970, 0x7E46},
+       {0x5971, 0x821E},
+       {0x5972, 0x8302},
+       {0x5973, 0x856A},
+       {0x5974, 0x8AA3},
+       {0x5975, 0x8CBF},
+       {0x5976, 0x9727},
+       {0x5977, 0x9D61},
+       {0x5978, 0x58A8},
+       {0x5979, 0x9ED8},
+       {0x597A, 0x5011},
+       {0x597B, 0x520E},
+       {0x597C, 0x543B},
+       {0x597D, 0x554F},
+       {0x597E, 0x6587},
+       {0x5A21, 0x6C76},
+       {0x5A22, 0x7D0A},
+       {0x5A23, 0x7D0B},
+       {0x5A24, 0x805E},
+       {0x5A25, 0x868A},
+       {0x5A26, 0x9580},
+       {0x5A27, 0x96EF},
+       {0x5A28, 0x52FF},
+       {0x5A29, 0x6C95},
+       {0x5A2A, 0x7269},
+       {0x5A2B, 0x5473},
+       {0x5A2C, 0x5A9A},
+       {0x5A2D, 0x5C3E},
+       {0x5A2E, 0x5D4B},
+       {0x5A2F, 0x5F4C},
+       {0x5A30, 0x5FAE},
+       {0x5A31, 0x672A},
+       {0x5A32, 0x68B6},
+       {0x5A33, 0x6963},
+       {0x5A34, 0x6E3C},
+       {0x5A35, 0x6E44},
+       {0x5A36, 0x7709},
+       {0x5A37, 0x7C73},
+       {0x5A38, 0x7F8E},
+       {0x5A39, 0x8587},
+       {0x5A3A, 0x8B0E},
+       {0x5A3B, 0x8FF7},
+       {0x5A3C, 0x9761},
+       {0x5A3D, 0x9EF4},
+       {0x5A3E, 0x5CB7},
+       {0x5A3F, 0x60B6},
+       {0x5A40, 0x610D},
+       {0x5A41, 0x61AB},
+       {0x5A42, 0x654F},
+       {0x5A43, 0x65FB},
+       {0x5A44, 0x65FC},
+       {0x5A45, 0x6C11},
+       {0x5A46, 0x6CEF},
+       {0x5A47, 0x739F},
+       {0x5A48, 0x73C9},
+       {0x5A49, 0x7DE1},
+       {0x5A4A, 0x9594},
+       {0x5A4B, 0x5BC6},
+       {0x5A4C, 0x871C},
+       {0x5A4D, 0x8B10},
+       {0x5A4E, 0x525D},
+       {0x5A4F, 0x535A},
+       {0x5A50, 0x62CD},
+       {0x5A51, 0x640F},
+       {0x5A52, 0x64B2},
+       {0x5A53, 0x6734},
+       {0x5A54, 0x6A38},
+       {0x5A55, 0x6CCA},
+       {0x5A56, 0x73C0},
+       {0x5A57, 0x749E},
+       {0x5A58, 0x7B94},
+       {0x5A59, 0x7C95},
+       {0x5A5A, 0x7E1B},
+       {0x5A5B, 0x818A},
+       {0x5A5C, 0x8236},
+       {0x5A5D, 0x8584},
+       {0x5A5E, 0x8FEB},
+       {0x5A5F, 0x96F9},
+       {0x5A60, 0x99C1},
+       {0x5A61, 0x4F34},
+       {0x5A62, 0x534A},
+       {0x5A63, 0x53CD},
+       {0x5A64, 0x53DB},
+       {0x5A65, 0x62CC},
+       {0x5A66, 0x642C},
+       {0x5A67, 0x6500},
+       {0x5A68, 0x6591},
+       {0x5A69, 0x69C3},
+       {0x5A6A, 0x6CEE},
+       {0x5A6B, 0x6F58},
+       {0x5A6C, 0x73ED},
+       {0x5A6D, 0x7554},
+       {0x5A6E, 0x7622},
+       {0x5A6F, 0x76E4},
+       {0x5A70, 0x76FC},
+       {0x5A71, 0x78D0},
+       {0x5A72, 0x78FB},
+       {0x5A73, 0x792C},
+       {0x5A74, 0x7D46},
+       {0x5A75, 0x822C},
+       {0x5A76, 0x87E0},
+       {0x5A77, 0x8FD4},
+       {0x5A78, 0x9812},
+       {0x5A79, 0x98EF},
+       {0x5A7A, 0x52C3},
+       {0x5A7B, 0x62D4},
+       {0x5A7C, 0x64A5},
+       {0x5A7D, 0x6E24},
+       {0x5A7E, 0x6F51},
+       {0x5B21, 0x767C},
+       {0x5B22, 0x8DCB},
+       {0x5B23, 0x91B1},
+       {0x5B24, 0x9262},
+       {0x5B25, 0x9AEE},
+       {0x5B26, 0x9B43},
+       {0x5B27, 0x5023},
+       {0x5B28, 0x508D},
+       {0x5B29, 0x574A},
+       {0x5B2A, 0x59A8},
+       {0x5B2B, 0x5C28},
+       {0x5B2C, 0x5E47},
+       {0x5B2D, 0x5F77},
+       {0x5B2E, 0x623F},
+       {0x5B2F, 0x653E},
+       {0x5B30, 0x65B9},
+       {0x5B31, 0x65C1},
+       {0x5B32, 0x6609},
+       {0x5B33, 0x678B},
+       {0x5B34, 0x699C},
+       {0x5B35, 0x6EC2},
+       {0x5B36, 0x78C5},
+       {0x5B37, 0x7D21},
+       {0x5B38, 0x80AA},
+       {0x5B39, 0x8180},
+       {0x5B3A, 0x822B},
+       {0x5B3B, 0x82B3},
+       {0x5B3C, 0x84A1},
+       {0x5B3D, 0x868C},
+       {0x5B3E, 0x8A2A},
+       {0x5B3F, 0x8B17},
+       {0x5B40, 0x90A6},
+       {0x5B41, 0x9632},
+       {0x5B42, 0x9F90},
+       {0x5B43, 0x500D},
+       {0x5B44, 0x4FF3},
+       {0x5B45, 0xF963},
+       {0x5B46, 0x57F9},
+       {0x5B47, 0x5F98},
+       {0x5B48, 0x62DC},
+       {0x5B49, 0x6392},
+       {0x5B4A, 0x676F},
+       {0x5B4B, 0x6E43},
+       {0x5B4C, 0x7119},
+       {0x5B4D, 0x76C3},
+       {0x5B4E, 0x80CC},
+       {0x5B4F, 0x80DA},
+       {0x5B50, 0x88F4},
+       {0x5B51, 0x88F5},
+       {0x5B52, 0x8919},
+       {0x5B53, 0x8CE0},
+       {0x5B54, 0x8F29},
+       {0x5B55, 0x914D},
+       {0x5B56, 0x966A},
+       {0x5B57, 0x4F2F},
+       {0x5B58, 0x4F70},
+       {0x5B59, 0x5E1B},
+       {0x5B5A, 0x67CF},
+       {0x5B5B, 0x6822},
+       {0x5B5C, 0x767D},
+       {0x5B5D, 0x767E},
+       {0x5B5E, 0x9B44},
+       {0x5B5F, 0x5E61},
+       {0x5B60, 0x6A0A},
+       {0x5B61, 0x7169},
+       {0x5B62, 0x71D4},
+       {0x5B63, 0x756A},
+       {0x5B64, 0xF964},
+       {0x5B65, 0x7E41},
+       {0x5B66, 0x8543},
+       {0x5B67, 0x85E9},
+       {0x5B68, 0x98DC},
+       {0x5B69, 0x4F10},
+       {0x5B6A, 0x7B4F},
+       {0x5B6B, 0x7F70},
+       {0x5B6C, 0x95A5},
+       {0x5B6D, 0x51E1},
+       {0x5B6E, 0x5E06},
+       {0x5B6F, 0x68B5},
+       {0x5B70, 0x6C3E},
+       {0x5B71, 0x6C4E},
+       {0x5B72, 0x6CDB},
+       {0x5B73, 0x72AF},
+       {0x5B74, 0x7BC4},
+       {0x5B75, 0x8303},
+       {0x5B76, 0x6CD5},
+       {0x5B77, 0x743A},
+       {0x5B78, 0x50FB},
+       {0x5B79, 0x5288},
+       {0x5B7A, 0x58C1},
+       {0x5B7B, 0x64D8},
+       {0x5B7C, 0x6A97},
+       {0x5B7D, 0x74A7},
+       {0x5B7E, 0x7656},
+       {0x5C21, 0x78A7},
+       {0x5C22, 0x8617},
+       {0x5C23, 0x95E2},
+       {0x5C24, 0x9739},
+       {0x5C25, 0xF965},
+       {0x5C26, 0x535E},
+       {0x5C27, 0x5F01},
+       {0x5C28, 0x8B8A},
+       {0x5C29, 0x8FA8},
+       {0x5C2A, 0x8FAF},
+       {0x5C2B, 0x908A},
+       {0x5C2C, 0x5225},
+       {0x5C2D, 0x77A5},
+       {0x5C2E, 0x9C49},
+       {0x5C2F, 0x9F08},
+       {0x5C30, 0x4E19},
+       {0x5C31, 0x5002},
+       {0x5C32, 0x5175},
+       {0x5C33, 0x5C5B},
+       {0x5C34, 0x5E77},
+       {0x5C35, 0x661E},
+       {0x5C36, 0x663A},
+       {0x5C37, 0x67C4},
+       {0x5C38, 0x68C5},
+       {0x5C39, 0x70B3},
+       {0x5C3A, 0x7501},
+       {0x5C3B, 0x75C5},
+       {0x5C3C, 0x79C9},
+       {0x5C3D, 0x7ADD},
+       {0x5C3E, 0x8F27},
+       {0x5C3F, 0x9920},
+       {0x5C40, 0x9A08},
+       {0x5C41, 0x4FDD},
+       {0x5C42, 0x5821},
+       {0x5C43, 0x5831},
+       {0x5C44, 0x5BF6},
+       {0x5C45, 0x666E},
+       {0x5C46, 0x6B65},
+       {0x5C47, 0x6D11},
+       {0x5C48, 0x6E7A},
+       {0x5C49, 0x6F7D},
+       {0x5C4A, 0x73E4},
+       {0x5C4B, 0x752B},
+       {0x5C4C, 0x83E9},
+       {0x5C4D, 0x88DC},
+       {0x5C4E, 0x8913},
+       {0x5C4F, 0x8B5C},
+       {0x5C50, 0x8F14},
+       {0x5C51, 0x4F0F},
+       {0x5C52, 0x50D5},
+       {0x5C53, 0x5310},
+       {0x5C54, 0x535C},
+       {0x5C55, 0x5B93},
+       {0x5C56, 0x5FA9},
+       {0x5C57, 0x670D},
+       {0x5C58, 0x798F},
+       {0x5C59, 0x8179},
+       {0x5C5A, 0x832F},
+       {0x5C5B, 0x8514},
+       {0x5C5C, 0x8907},
+       {0x5C5D, 0x8986},
+       {0x5C5E, 0x8F39},
+       {0x5C5F, 0x8F3B},
+       {0x5C60, 0x99A5},
+       {0x5C61, 0x9C12},
+       {0x5C62, 0x672C},
+       {0x5C63, 0x4E76},
+       {0x5C64, 0x4FF8},
+       {0x5C65, 0x5949},
+       {0x5C66, 0x5C01},
+       {0x5C67, 0x5CEF},
+       {0x5C68, 0x5CF0},
+       {0x5C69, 0x6367},
+       {0x5C6A, 0x68D2},
+       {0x5C6B, 0x70FD},
+       {0x5C6C, 0x71A2},
+       {0x5C6D, 0x742B},
+       {0x5C6E, 0x7E2B},
+       {0x5C6F, 0x84EC},
+       {0x5C70, 0x8702},
+       {0x5C71, 0x9022},
+       {0x5C72, 0x92D2},
+       {0x5C73, 0x9CF3},
+       {0x5C74, 0x4E0D},
+       {0x5C75, 0x4ED8},
+       {0x5C76, 0x4FEF},
+       {0x5C77, 0x5085},
+       {0x5C78, 0x5256},
+       {0x5C79, 0x526F},
+       {0x5C7A, 0x5426},
+       {0x5C7B, 0x5490},
+       {0x5C7C, 0x57E0},
+       {0x5C7D, 0x592B},
+       {0x5C7E, 0x5A66},
+       {0x5D21, 0x5B5A},
+       {0x5D22, 0x5B75},
+       {0x5D23, 0x5BCC},
+       {0x5D24, 0x5E9C},
+       {0x5D25, 0xF966},
+       {0x5D26, 0x6276},
+       {0x5D27, 0x6577},
+       {0x5D28, 0x65A7},
+       {0x5D29, 0x6D6E},
+       {0x5D2A, 0x6EA5},
+       {0x5D2B, 0x7236},
+       {0x5D2C, 0x7B26},
+       {0x5D2D, 0x7C3F},
+       {0x5D2E, 0x7F36},
+       {0x5D2F, 0x8150},
+       {0x5D30, 0x8151},
+       {0x5D31, 0x819A},
+       {0x5D32, 0x8240},
+       {0x5D33, 0x8299},
+       {0x5D34, 0x83A9},
+       {0x5D35, 0x8A03},
+       {0x5D36, 0x8CA0},
+       {0x5D37, 0x8CE6},
+       {0x5D38, 0x8CFB},
+       {0x5D39, 0x8D74},
+       {0x5D3A, 0x8DBA},
+       {0x5D3B, 0x90E8},
+       {0x5D3C, 0x91DC},
+       {0x5D3D, 0x961C},
+       {0x5D3E, 0x9644},
+       {0x5D3F, 0x99D9},
+       {0x5D40, 0x9CE7},
+       {0x5D41, 0x5317},
+       {0x5D42, 0x5206},
+       {0x5D43, 0x5429},
+       {0x5D44, 0x5674},
+       {0x5D45, 0x58B3},
+       {0x5D46, 0x5954},
+       {0x5D47, 0x596E},
+       {0x5D48, 0x5FFF},
+       {0x5D49, 0x61A4},
+       {0x5D4A, 0x626E},
+       {0x5D4B, 0x6610},
+       {0x5D4C, 0x6C7E},
+       {0x5D4D, 0x711A},
+       {0x5D4E, 0x76C6},
+       {0x5D4F, 0x7C89},
+       {0x5D50, 0x7CDE},
+       {0x5D51, 0x7D1B},
+       {0x5D52, 0x82AC},
+       {0x5D53, 0x8CC1},
+       {0x5D54, 0x96F0},
+       {0x5D55, 0xF967},
+       {0x5D56, 0x4F5B},
+       {0x5D57, 0x5F17},
+       {0x5D58, 0x5F7F},
+       {0x5D59, 0x62C2},
+       {0x5D5A, 0x5D29},
+       {0x5D5B, 0x670B},
+       {0x5D5C, 0x68DA},
+       {0x5D5D, 0x787C},
+       {0x5D5E, 0x7E43},
+       {0x5D5F, 0x9D6C},
+       {0x5D60, 0x4E15},
+       {0x5D61, 0x5099},
+       {0x5D62, 0x5315},
+       {0x5D63, 0x532A},
+       {0x5D64, 0x5351},
+       {0x5D65, 0x5983},
+       {0x5D66, 0x5A62},
+       {0x5D67, 0x5E87},
+       {0x5D68, 0x60B2},
+       {0x5D69, 0x618A},
+       {0x5D6A, 0x6249},
+       {0x5D6B, 0x6279},
+       {0x5D6C, 0x6590},
+       {0x5D6D, 0x6787},
+       {0x5D6E, 0x69A7},
+       {0x5D6F, 0x6BD4},
+       {0x5D70, 0x6BD6},
+       {0x5D71, 0x6BD7},
+       {0x5D72, 0x6BD8},
+       {0x5D73, 0x6CB8},
+       {0x5D74, 0xF968},
+       {0x5D75, 0x7435},
+       {0x5D76, 0x75FA},
+       {0x5D77, 0x7812},
+       {0x5D78, 0x7891},
+       {0x5D79, 0x79D5},
+       {0x5D7A, 0x79D8},
+       {0x5D7B, 0x7C83},
+       {0x5D7C, 0x7DCB},
+       {0x5D7D, 0x7FE1},
+       {0x5D7E, 0x80A5},
+       {0x5E21, 0x813E},
+       {0x5E22, 0x81C2},
+       {0x5E23, 0x83F2},
+       {0x5E24, 0x871A},
+       {0x5E25, 0x88E8},
+       {0x5E26, 0x8AB9},
+       {0x5E27, 0x8B6C},
+       {0x5E28, 0x8CBB},
+       {0x5E29, 0x9119},
+       {0x5E2A, 0x975E},
+       {0x5E2B, 0x98DB},
+       {0x5E2C, 0x9F3B},
+       {0x5E2D, 0x56AC},
+       {0x5E2E, 0x5B2A},
+       {0x5E2F, 0x5F6C},
+       {0x5E30, 0x658C},
+       {0x5E31, 0x6AB3},
+       {0x5E32, 0x6BAF},
+       {0x5E33, 0x6D5C},
+       {0x5E34, 0x6FF1},
+       {0x5E35, 0x7015},
+       {0x5E36, 0x725D},
+       {0x5E37, 0x73AD},
+       {0x5E38, 0x8CA7},
+       {0x5E39, 0x8CD3},
+       {0x5E3A, 0x983B},
+       {0x5E3B, 0x6191},
+       {0x5E3C, 0x6C37},
+       {0x5E3D, 0x8058},
+       {0x5E3E, 0x9A01},
+       {0x5E3F, 0x4E4D},
+       {0x5E40, 0x4E8B},
+       {0x5E41, 0x4E9B},
+       {0x5E42, 0x4ED5},
+       {0x5E43, 0x4F3A},
+       {0x5E44, 0x4F3C},
+       {0x5E45, 0x4F7F},
+       {0x5E46, 0x4FDF},
+       {0x5E47, 0x50FF},
+       {0x5E48, 0x53F2},
+       {0x5E49, 0x53F8},
+       {0x5E4A, 0x5506},
+       {0x5E4B, 0x55E3},
+       {0x5E4C, 0x56DB},
+       {0x5E4D, 0x58EB},
+       {0x5E4E, 0x5962},
+       {0x5E4F, 0x5A11},
+       {0x5E50, 0x5BEB},
+       {0x5E51, 0x5BFA},
+       {0x5E52, 0x5C04},
+       {0x5E53, 0x5DF3},
+       {0x5E54, 0x5E2B},
+       {0x5E55, 0x5F99},
+       {0x5E56, 0x601D},
+       {0x5E57, 0x6368},
+       {0x5E58, 0x659C},
+       {0x5E59, 0x65AF},
+       {0x5E5A, 0x67F6},
+       {0x5E5B, 0x67FB},
+       {0x5E5C, 0x68AD},
+       {0x5E5D, 0x6B7B},
+       {0x5E5E, 0x6C99},
+       {0x5E5F, 0x6CD7},
+       {0x5E60, 0x6E23},
+       {0x5E61, 0x7009},
+       {0x5E62, 0x7345},
+       {0x5E63, 0x7802},
+       {0x5E64, 0x793E},
+       {0x5E65, 0x7940},
+       {0x5E66, 0x7960},
+       {0x5E67, 0x79C1},
+       {0x5E68, 0x7BE9},
+       {0x5E69, 0x7D17},
+       {0x5E6A, 0x7D72},
+       {0x5E6B, 0x8086},
+       {0x5E6C, 0x820D},
+       {0x5E6D, 0x838E},
+       {0x5E6E, 0x84D1},
+       {0x5E6F, 0x86C7},
+       {0x5E70, 0x88DF},
+       {0x5E71, 0x8A50},
+       {0x5E72, 0x8A5E},
+       {0x5E73, 0x8B1D},
+       {0x5E74, 0x8CDC},
+       {0x5E75, 0x8D66},
+       {0x5E76, 0x8FAD},
+       {0x5E77, 0x90AA},
+       {0x5E78, 0x98FC},
+       {0x5E79, 0x99DF},
+       {0x5E7A, 0x9E9D},
+       {0x5E7B, 0x524A},
+       {0x5E7C, 0xF969},
+       {0x5E7D, 0x6714},
+       {0x5E7E, 0xF96A},
+       {0x5F21, 0x5098},
+       {0x5F22, 0x522A},
+       {0x5F23, 0x5C71},
+       {0x5F24, 0x6563},
+       {0x5F25, 0x6C55},
+       {0x5F26, 0x73CA},
+       {0x5F27, 0x7523},
+       {0x5F28, 0x759D},
+       {0x5F29, 0x7B97},
+       {0x5F2A, 0x849C},
+       {0x5F2B, 0x9178},
+       {0x5F2C, 0x9730},
+       {0x5F2D, 0x4E77},
+       {0x5F2E, 0x6492},
+       {0x5F2F, 0x6BBA},
+       {0x5F30, 0x715E},
+       {0x5F31, 0x85A9},
+       {0x5F32, 0x4E09},
+       {0x5F33, 0xF96B},
+       {0x5F34, 0x6749},
+       {0x5F35, 0x68EE},
+       {0x5F36, 0x6E17},
+       {0x5F37, 0x829F},
+       {0x5F38, 0x8518},
+       {0x5F39, 0x886B},
+       {0x5F3A, 0x63F7},
+       {0x5F3B, 0x6F81},
+       {0x5F3C, 0x9212},
+       {0x5F3D, 0x98AF},
+       {0x5F3E, 0x4E0A},
+       {0x5F3F, 0x50B7},
+       {0x5F40, 0x50CF},
+       {0x5F41, 0x511F},
+       {0x5F42, 0x5546},
+       {0x5F43, 0x55AA},
+       {0x5F44, 0x5617},
+       {0x5F45, 0x5B40},
+       {0x5F46, 0x5C19},
+       {0x5F47, 0x5CE0},
+       {0x5F48, 0x5E38},
+       {0x5F49, 0x5E8A},
+       {0x5F4A, 0x5EA0},
+       {0x5F4B, 0x5EC2},
+       {0x5F4C, 0x60F3},
+       {0x5F4D, 0x6851},
+       {0x5F4E, 0x6A61},
+       {0x5F4F, 0x6E58},
+       {0x5F50, 0x723D},
+       {0x5F51, 0x7240},
+       {0x5F52, 0x72C0},
+       {0x5F53, 0x76F8},
+       {0x5F54, 0x7965},
+       {0x5F55, 0x7BB1},
+       {0x5F56, 0x7FD4},
+       {0x5F57, 0x88F3},
+       {0x5F58, 0x89F4},
+       {0x5F59, 0x8A73},
+       {0x5F5A, 0x8C61},
+       {0x5F5B, 0x8CDE},
+       {0x5F5C, 0x971C},
+       {0x5F5D, 0x585E},
+       {0x5F5E, 0x74BD},
+       {0x5F5F, 0x8CFD},
+       {0x5F60, 0x55C7},
+       {0x5F61, 0xF96C},
+       {0x5F62, 0x7A61},
+       {0x5F63, 0x7D22},
+       {0x5F64, 0x8272},
+       {0x5F65, 0x7272},
+       {0x5F66, 0x751F},
+       {0x5F67, 0x7525},
+       {0x5F68, 0xF96D},
+       {0x5F69, 0x7B19},
+       {0x5F6A, 0x5885},
+       {0x5F6B, 0x58FB},
+       {0x5F6C, 0x5DBC},
+       {0x5F6D, 0x5E8F},
+       {0x5F6E, 0x5EB6},
+       {0x5F6F, 0x5F90},
+       {0x5F70, 0x6055},
+       {0x5F71, 0x6292},
+       {0x5F72, 0x637F},
+       {0x5F73, 0x654D},
+       {0x5F74, 0x6691},
+       {0x5F75, 0x66D9},
+       {0x5F76, 0x66F8},
+       {0x5F77, 0x6816},
+       {0x5F78, 0x68F2},
+       {0x5F79, 0x7280},
+       {0x5F7A, 0x745E},
+       {0x5F7B, 0x7B6E},
+       {0x5F7C, 0x7D6E},
+       {0x5F7D, 0x7DD6},
+       {0x5F7E, 0x7F72},
+       {0x6021, 0x80E5},
+       {0x6022, 0x8212},
+       {0x6023, 0x85AF},
+       {0x6024, 0x897F},
+       {0x6025, 0x8A93},
+       {0x6026, 0x901D},
+       {0x6027, 0x92E4},
+       {0x6028, 0x9ECD},
+       {0x6029, 0x9F20},
+       {0x602A, 0x5915},
+       {0x602B, 0x596D},
+       {0x602C, 0x5E2D},
+       {0x602D, 0x60DC},
+       {0x602E, 0x6614},
+       {0x602F, 0x6673},
+       {0x6030, 0x6790},
+       {0x6031, 0x6C50},
+       {0x6032, 0x6DC5},
+       {0x6033, 0x6F5F},
+       {0x6034, 0x77F3},
+       {0x6035, 0x78A9},
+       {0x6036, 0x84C6},
+       {0x6037, 0x91CB},
+       {0x6038, 0x932B},
+       {0x6039, 0x4ED9},
+       {0x603A, 0x50CA},
+       {0x603B, 0x5148},
+       {0x603C, 0x5584},
+       {0x603D, 0x5B0B},
+       {0x603E, 0x5BA3},
+       {0x603F, 0x6247},
+       {0x6040, 0x657E},
+       {0x6041, 0x65CB},
+       {0x6042, 0x6E32},
+       {0x6043, 0x717D},
+       {0x6044, 0x7401},
+       {0x6045, 0x7444},
+       {0x6046, 0x7487},
+       {0x6047, 0x74BF},
+       {0x6048, 0x766C},
+       {0x6049, 0x79AA},
+       {0x604A, 0x7DDA},
+       {0x604B, 0x7E55},
+       {0x604C, 0x7FA8},
+       {0x604D, 0x817A},
+       {0x604E, 0x81B3},
+       {0x604F, 0x8239},
+       {0x6050, 0x861A},
+       {0x6051, 0x87EC},
+       {0x6052, 0x8A75},
+       {0x6053, 0x8DE3},
+       {0x6054, 0x9078},
+       {0x6055, 0x9291},
+       {0x6056, 0x9425},
+       {0x6057, 0x994D},
+       {0x6058, 0x9BAE},
+       {0x6059, 0x5368},
+       {0x605A, 0x5C51},
+       {0x605B, 0x6954},
+       {0x605C, 0x6CC4},
+       {0x605D, 0x6D29},
+       {0x605E, 0x6E2B},
+       {0x605F, 0x820C},
+       {0x6060, 0x859B},
+       {0x6061, 0x893B},
+       {0x6062, 0x8A2D},
+       {0x6063, 0x8AAA},
+       {0x6064, 0x96EA},
+       {0x6065, 0x9F67},
+       {0x6066, 0x5261},
+       {0x6067, 0x66B9},
+       {0x6068, 0x6BB2},
+       {0x6069, 0x7E96},
+       {0x606A, 0x87FE},
+       {0x606B, 0x8D0D},
+       {0x606C, 0x9583},
+       {0x606D, 0x965D},
+       {0x606E, 0x651D},
+       {0x606F, 0x6D89},
+       {0x6070, 0x71EE},
+       {0x6071, 0xF96E},
+       {0x6072, 0x57CE},
+       {0x6073, 0x59D3},
+       {0x6074, 0x5BAC},
+       {0x6075, 0x6027},
+       {0x6076, 0x60FA},
+       {0x6077, 0x6210},
+       {0x6078, 0x661F},
+       {0x6079, 0x665F},
+       {0x607A, 0x7329},
+       {0x607B, 0x73F9},
+       {0x607C, 0x76DB},
+       {0x607D, 0x7701},
+       {0x607E, 0x7B6C},
+       {0x6121, 0x8056},
+       {0x6122, 0x8072},
+       {0x6123, 0x8165},
+       {0x6124, 0x8AA0},
+       {0x6125, 0x9192},
+       {0x6126, 0x4E16},
+       {0x6127, 0x52E2},
+       {0x6128, 0x6B72},
+       {0x6129, 0x6D17},
+       {0x612A, 0x7A05},
+       {0x612B, 0x7B39},
+       {0x612C, 0x7D30},
+       {0x612D, 0xF96F},
+       {0x612E, 0x8CB0},
+       {0x612F, 0x53EC},
+       {0x6130, 0x562F},
+       {0x6131, 0x5851},
+       {0x6132, 0x5BB5},
+       {0x6133, 0x5C0F},
+       {0x6134, 0x5C11},
+       {0x6135, 0x5DE2},
+       {0x6136, 0x6240},
+       {0x6137, 0x6383},
+       {0x6138, 0x6414},
+       {0x6139, 0x662D},
+       {0x613A, 0x68B3},
+       {0x613B, 0x6CBC},
+       {0x613C, 0x6D88},
+       {0x613D, 0x6EAF},
+       {0x613E, 0x701F},
+       {0x613F, 0x70A4},
+       {0x6140, 0x71D2},
+       {0x6141, 0x7526},
+       {0x6142, 0x758F},
+       {0x6143, 0x758E},
+       {0x6144, 0x7619},
+       {0x6145, 0x7B11},
+       {0x6146, 0x7BE0},
+       {0x6147, 0x7C2B},
+       {0x6148, 0x7D20},
+       {0x6149, 0x7D39},
+       {0x614A, 0x852C},
+       {0x614B, 0x856D},
+       {0x614C, 0x8607},
+       {0x614D, 0x8A34},
+       {0x614E, 0x900D},
+       {0x614F, 0x9061},
+       {0x6150, 0x90B5},
+       {0x6151, 0x92B7},
+       {0x6152, 0x97F6},
+       {0x6153, 0x9A37},
+       {0x6154, 0x4FD7},
+       {0x6155, 0x5C6C},
+       {0x6156, 0x675F},
+       {0x6157, 0x6D91},
+       {0x6158, 0x7C9F},
+       {0x6159, 0x7E8C},
+       {0x615A, 0x8B16},
+       {0x615B, 0x8D16},
+       {0x615C, 0x901F},
+       {0x615D, 0x5B6B},
+       {0x615E, 0x5DFD},
+       {0x615F, 0x640D},
+       {0x6160, 0x84C0},
+       {0x6161, 0x905C},
+       {0x6162, 0x98E1},
+       {0x6163, 0x7387},
+       {0x6164, 0x5B8B},
+       {0x6165, 0x609A},
+       {0x6166, 0x677E},
+       {0x6167, 0x6DDE},
+       {0x6168, 0x8A1F},
+       {0x6169, 0x8AA6},
+       {0x616A, 0x9001},
+       {0x616B, 0x980C},
+       {0x616C, 0x5237},
+       {0x616D, 0xF970},
+       {0x616E, 0x7051},
+       {0x616F, 0x788E},
+       {0x6170, 0x9396},
+       {0x6171, 0x8870},
+       {0x6172, 0x91D7},
+       {0x6173, 0x4FEE},
+       {0x6174, 0x53D7},
+       {0x6175, 0x55FD},
+       {0x6176, 0x56DA},
+       {0x6177, 0x5782},
+       {0x6178, 0x58FD},
+       {0x6179, 0x5AC2},
+       {0x617A, 0x5B88},
+       {0x617B, 0x5CAB},
+       {0x617C, 0x5CC0},
+       {0x617D, 0x5E25},
+       {0x617E, 0x6101},
+       {0x6221, 0x620D},
+       {0x6222, 0x624B},
+       {0x6223, 0x6388},
+       {0x6224, 0x641C},
+       {0x6225, 0x6536},
+       {0x6226, 0x6578},
+       {0x6227, 0x6A39},
+       {0x6228, 0x6B8A},
+       {0x6229, 0x6C34},
+       {0x622A, 0x6D19},
+       {0x622B, 0x6F31},
+       {0x622C, 0x71E7},
+       {0x622D, 0x72E9},
+       {0x622E, 0x7378},
+       {0x622F, 0x7407},
+       {0x6230, 0x74B2},
+       {0x6231, 0x7626},
+       {0x6232, 0x7761},
+       {0x6233, 0x79C0},
+       {0x6234, 0x7A57},
+       {0x6235, 0x7AEA},
+       {0x6236, 0x7CB9},
+       {0x6237, 0x7D8F},
+       {0x6238, 0x7DAC},
+       {0x6239, 0x7E61},
+       {0x623A, 0x7F9E},
+       {0x623B, 0x8129},
+       {0x623C, 0x8331},
+       {0x623D, 0x8490},
+       {0x623E, 0x84DA},
+       {0x623F, 0x85EA},
+       {0x6240, 0x8896},
+       {0x6241, 0x8AB0},
+       {0x6242, 0x8B90},
+       {0x6243, 0x8F38},
+       {0x6244, 0x9042},
+       {0x6245, 0x9083},
+       {0x6246, 0x916C},
+       {0x6247, 0x9296},
+       {0x6248, 0x92B9},
+       {0x6249, 0x968B},
+       {0x624A, 0x96A7},
+       {0x624B, 0x96A8},
+       {0x624C, 0x96D6},
+       {0x624D, 0x9700},
+       {0x624E, 0x9808},
+       {0x624F, 0x9996},
+       {0x6250, 0x9AD3},
+       {0x6251, 0x9B1A},
+       {0x6252, 0x53D4},
+       {0x6253, 0x587E},
+       {0x6254, 0x5919},
+       {0x6255, 0x5B70},
+       {0x6256, 0x5BBF},
+       {0x6257, 0x6DD1},
+       {0x6258, 0x6F5A},
+       {0x6259, 0x719F},
+       {0x625A, 0x7421},
+       {0x625B, 0x74B9},
+       {0x625C, 0x8085},
+       {0x625D, 0x83FD},
+       {0x625E, 0x5DE1},
+       {0x625F, 0x5F87},
+       {0x6260, 0x5FAA},
+       {0x6261, 0x6042},
+       {0x6262, 0x65EC},
+       {0x6263, 0x6812},
+       {0x6264, 0x696F},
+       {0x6265, 0x6A53},
+       {0x6266, 0x6B89},
+       {0x6267, 0x6D35},
+       {0x6268, 0x6DF3},
+       {0x6269, 0x73E3},
+       {0x626A, 0x76FE},
+       {0x626B, 0x77AC},
+       {0x626C, 0x7B4D},
+       {0x626D, 0x7D14},
+       {0x626E, 0x8123},
+       {0x626F, 0x821C},
+       {0x6270, 0x8340},
+       {0x6271, 0x84F4},
+       {0x6272, 0x8563},
+       {0x6273, 0x8A62},
+       {0x6274, 0x8AC4},
+       {0x6275, 0x9187},
+       {0x6276, 0x931E},
+       {0x6277, 0x9806},
+       {0x6278, 0x99B4},
+       {0x6279, 0x620C},
+       {0x627A, 0x8853},
+       {0x627B, 0x8FF0},
+       {0x627C, 0x9265},
+       {0x627D, 0x5D07},
+       {0x627E, 0x5D27},
+       {0x6321, 0x5D69},
+       {0x6322, 0x745F},
+       {0x6323, 0x819D},
+       {0x6324, 0x8768},
+       {0x6325, 0x6FD5},
+       {0x6326, 0x62FE},
+       {0x6327, 0x7FD2},
+       {0x6328, 0x8936},
+       {0x6329, 0x8972},
+       {0x632A, 0x4E1E},
+       {0x632B, 0x4E58},
+       {0x632C, 0x50E7},
+       {0x632D, 0x52DD},
+       {0x632E, 0x5347},
+       {0x632F, 0x627F},
+       {0x6330, 0x6607},
+       {0x6331, 0x7E69},
+       {0x6332, 0x8805},
+       {0x6333, 0x965E},
+       {0x6334, 0x4F8D},
+       {0x6335, 0x5319},
+       {0x6336, 0x5636},
+       {0x6337, 0x59CB},
+       {0x6338, 0x5AA4},
+       {0x6339, 0x5C38},
+       {0x633A, 0x5C4E},
+       {0x633B, 0x5C4D},
+       {0x633C, 0x5E02},
+       {0x633D, 0x5F11},
+       {0x633E, 0x6043},
+       {0x633F, 0x65BD},
+       {0x6340, 0x662F},
+       {0x6341, 0x6642},
+       {0x6342, 0x67BE},
+       {0x6343, 0x67F4},
+       {0x6344, 0x731C},
+       {0x6345, 0x77E2},
+       {0x6346, 0x793A},
+       {0x6347, 0x7FC5},
+       {0x6348, 0x8494},
+       {0x6349, 0x84CD},
+       {0x634A, 0x8996},
+       {0x634B, 0x8A66},
+       {0x634C, 0x8A69},
+       {0x634D, 0x8AE1},
+       {0x634E, 0x8C55},
+       {0x634F, 0x8C7A},
+       {0x6350, 0x57F4},
+       {0x6351, 0x5BD4},
+       {0x6352, 0x5F0F},
+       {0x6353, 0x606F},
+       {0x6354, 0x62ED},
+       {0x6355, 0x690D},
+       {0x6356, 0x6B96},
+       {0x6357, 0x6E5C},
+       {0x6358, 0x7184},
+       {0x6359, 0x7BD2},
+       {0x635A, 0x8755},
+       {0x635B, 0x8B58},
+       {0x635C, 0x8EFE},
+       {0x635D, 0x98DF},
+       {0x635E, 0x98FE},
+       {0x635F, 0x4F38},
+       {0x6360, 0x4F81},
+       {0x6361, 0x4FE1},
+       {0x6362, 0x547B},
+       {0x6363, 0x5A20},
+       {0x6364, 0x5BB8},
+       {0x6365, 0x613C},
+       {0x6366, 0x65B0},
+       {0x6367, 0x6668},
+       {0x6368, 0x71FC},
+       {0x6369, 0x7533},
+       {0x636A, 0x795E},
+       {0x636B, 0x7D33},
+       {0x636C, 0x814E},
+       {0x636D, 0x81E3},
+       {0x636E, 0x8398},
+       {0x636F, 0x85AA},
+       {0x6370, 0x85CE},
+       {0x6371, 0x8703},
+       {0x6372, 0x8A0A},
+       {0x6373, 0x8EAB},
+       {0x6374, 0x8F9B},
+       {0x6375, 0xF971},
+       {0x6376, 0x8FC5},
+       {0x6377, 0x5931},
+       {0x6378, 0x5BA4},
+       {0x6379, 0x5BE6},
+       {0x637A, 0x6089},
+       {0x637B, 0x5BE9},
+       {0x637C, 0x5C0B},
+       {0x637D, 0x5FC3},
+       {0x637E, 0x6C81},
+       {0x6421, 0xF972},
+       {0x6422, 0x6DF1},
+       {0x6423, 0x700B},
+       {0x6424, 0x751A},
+       {0x6425, 0x82AF},
+       {0x6426, 0x8AF6},
+       {0x6427, 0x4EC0},
+       {0x6428, 0x5341},
+       {0x6429, 0xF973},
+       {0x642A, 0x96D9},
+       {0x642B, 0x6C0F},
+       {0x642C, 0x4E9E},
+       {0x642D, 0x4FC4},
+       {0x642E, 0x5152},
+       {0x642F, 0x555E},
+       {0x6430, 0x5A25},
+       {0x6431, 0x5CE8},
+       {0x6432, 0x6211},
+       {0x6433, 0x7259},
+       {0x6434, 0x82BD},
+       {0x6435, 0x83AA},
+       {0x6436, 0x86FE},
+       {0x6437, 0x8859},
+       {0x6438, 0x8A1D},
+       {0x6439, 0x963F},
+       {0x643A, 0x96C5},
+       {0x643B, 0x9913},
+       {0x643C, 0x9D09},
+       {0x643D, 0x9D5D},
+       {0x643E, 0x580A},
+       {0x643F, 0x5CB3},
+       {0x6440, 0x5DBD},
+       {0x6441, 0x5E44},
+       {0x6442, 0x60E1},
+       {0x6443, 0x6115},
+       {0x6444, 0x63E1},
+       {0x6445, 0x6A02},
+       {0x6446, 0x6E25},
+       {0x6447, 0x9102},
+       {0x6448, 0x9354},
+       {0x6449, 0x984E},
+       {0x644A, 0x9C10},
+       {0x644B, 0x9F77},
+       {0x644C, 0x5B89},
+       {0x644D, 0x5CB8},
+       {0x644E, 0x6309},
+       {0x644F, 0x664F},
+       {0x6450, 0x6848},
+       {0x6451, 0x773C},
+       {0x6452, 0x96C1},
+       {0x6453, 0x978D},
+       {0x6454, 0x9854},
+       {0x6455, 0x9B9F},
+       {0x6456, 0x65A1},
+       {0x6457, 0x8B01},
+       {0x6458, 0x8ECB},
+       {0x6459, 0x95BC},
+       {0x645A, 0x5535},
+       {0x645B, 0x5CA9},
+       {0x645C, 0x5DD6},
+       {0x645D, 0x5EB5},
+       {0x645E, 0x6697},
+       {0x645F, 0x764C},
+       {0x6460, 0x83F4},
+       {0x6461, 0x95C7},
+       {0x6462, 0x58D3},
+       {0x6463, 0x62BC},
+       {0x6464, 0x72CE},
+       {0x6465, 0x9D28},
+       {0x6466, 0x4EF0},
+       {0x6467, 0x592E},
+       {0x6468, 0x600F},
+       {0x6469, 0x663B},
+       {0x646A, 0x6B83},
+       {0x646B, 0x79E7},
+       {0x646C, 0x9D26},
+       {0x646D, 0x5393},
+       {0x646E, 0x54C0},
+       {0x646F, 0x57C3},
+       {0x6470, 0x5D16},
+       {0x6471, 0x611B},
+       {0x6472, 0x66D6},
+       {0x6473, 0x6DAF},
+       {0x6474, 0x788D},
+       {0x6475, 0x827E},
+       {0x6476, 0x9698},
+       {0x6477, 0x9744},
+       {0x6478, 0x5384},
+       {0x6479, 0x627C},
+       {0x647A, 0x6396},
+       {0x647B, 0x6DB2},
+       {0x647C, 0x7E0A},
+       {0x647D, 0x814B},
+       {0x647E, 0x984D},
+       {0x6521, 0x6AFB},
+       {0x6522, 0x7F4C},
+       {0x6523, 0x9DAF},
+       {0x6524, 0x9E1A},
+       {0x6525, 0x4E5F},
+       {0x6526, 0x503B},
+       {0x6527, 0x51B6},
+       {0x6528, 0x591C},
+       {0x6529, 0x60F9},
+       {0x652A, 0x63F6},
+       {0x652B, 0x6930},
+       {0x652C, 0x723A},
+       {0x652D, 0x8036},
+       {0x652E, 0xF974},
+       {0x652F, 0x91CE},
+       {0x6530, 0x5F31},
+       {0x6531, 0xF975},
+       {0x6532, 0xF976},
+       {0x6533, 0x7D04},
+       {0x6534, 0x82E5},
+       {0x6535, 0x846F},
+       {0x6536, 0x84BB},
+       {0x6537, 0x85E5},
+       {0x6538, 0x8E8D},
+       {0x6539, 0xF977},
+       {0x653A, 0x4F6F},
+       {0x653B, 0xF978},
+       {0x653C, 0xF979},
+       {0x653D, 0x58E4},
+       {0x653E, 0x5B43},
+       {0x653F, 0x6059},
+       {0x6540, 0x63DA},
+       {0x6541, 0x6518},
+       {0x6542, 0x656D},
+       {0x6543, 0x6698},
+       {0x6544, 0xF97A},
+       {0x6545, 0x694A},
+       {0x6546, 0x6A23},
+       {0x6547, 0x6D0B},
+       {0x6548, 0x7001},
+       {0x6549, 0x716C},
+       {0x654A, 0x75D2},
+       {0x654B, 0x760D},
+       {0x654C, 0x79B3},
+       {0x654D, 0x7A70},
+       {0x654E, 0xF97B},
+       {0x654F, 0x7F8A},
+       {0x6550, 0xF97C},
+       {0x6551, 0x8944},
+       {0x6552, 0xF97D},
+       {0x6553, 0x8B93},
+       {0x6554, 0x91C0},
+       {0x6555, 0x967D},
+       {0x6556, 0xF97E},
+       {0x6557, 0x990A},
+       {0x6558, 0x5704},
+       {0x6559, 0x5FA1},
+       {0x655A, 0x65BC},
+       {0x655B, 0x6F01},
+       {0x655C, 0x7600},
+       {0x655D, 0x79A6},
+       {0x655E, 0x8A9E},
+       {0x655F, 0x99AD},
+       {0x6560, 0x9B5A},
+       {0x6561, 0x9F6C},
+       {0x6562, 0x5104},
+       {0x6563, 0x61B6},
+       {0x6564, 0x6291},
+       {0x6565, 0x6A8D},
+       {0x6566, 0x81C6},
+       {0x6567, 0x5043},
+       {0x6568, 0x5830},
+       {0x6569, 0x5F66},
+       {0x656A, 0x7109},
+       {0x656B, 0x8A00},
+       {0x656C, 0x8AFA},
+       {0x656D, 0x5B7C},
+       {0x656E, 0x8616},
+       {0x656F, 0x4FFA},
+       {0x6570, 0x513C},
+       {0x6571, 0x56B4},
+       {0x6572, 0x5944},
+       {0x6573, 0x63A9},
+       {0x6574, 0x6DF9},
+       {0x6575, 0x5DAA},
+       {0x6576, 0x696D},
+       {0x6577, 0x5186},
+       {0x6578, 0x4E88},
+       {0x6579, 0x4F59},
+       {0x657A, 0xF97F},
+       {0x657B, 0xF980},
+       {0x657C, 0xF981},
+       {0x657D, 0x5982},
+       {0x657E, 0xF982},
+       {0x6621, 0xF983},
+       {0x6622, 0x6B5F},
+       {0x6623, 0x6C5D},
+       {0x6624, 0xF984},
+       {0x6625, 0x74B5},
+       {0x6626, 0x7916},
+       {0x6627, 0xF985},
+       {0x6628, 0x8207},
+       {0x6629, 0x8245},
+       {0x662A, 0x8339},
+       {0x662B, 0x8F3F},
+       {0x662C, 0x8F5D},
+       {0x662D, 0xF986},
+       {0x662E, 0x9918},
+       {0x662F, 0xF987},
+       {0x6630, 0xF988},
+       {0x6631, 0xF989},
+       {0x6632, 0x4EA6},
+       {0x6633, 0xF98A},
+       {0x6634, 0x57DF},
+       {0x6635, 0x5F79},
+       {0x6636, 0x6613},
+       {0x6637, 0xF98B},
+       {0x6638, 0xF98C},
+       {0x6639, 0x75AB},
+       {0x663A, 0x7E79},
+       {0x663B, 0x8B6F},
+       {0x663C, 0xF98D},
+       {0x663D, 0x9006},
+       {0x663E, 0x9A5B},
+       {0x663F, 0x56A5},
+       {0x6640, 0x5827},
+       {0x6641, 0x59F8},
+       {0x6642, 0x5A1F},
+       {0x6643, 0x5BB4},
+       {0x6644, 0xF98E},
+       {0x6645, 0x5EF6},
+       {0x6646, 0xF98F},
+       {0x6647, 0xF990},
+       {0x6648, 0x6350},
+       {0x6649, 0x633B},
+       {0x664A, 0xF991},
+       {0x664B, 0x693D},
+       {0x664C, 0x6C87},
+       {0x664D, 0x6CBF},
+       {0x664E, 0x6D8E},
+       {0x664F, 0x6D93},
+       {0x6650, 0x6DF5},
+       {0x6651, 0x6F14},
+       {0x6652, 0xF992},
+       {0x6653, 0x70DF},
+       {0x6654, 0x7136},
+       {0x6655, 0x7159},
+       {0x6656, 0xF993},
+       {0x6657, 0x71C3},
+       {0x6658, 0x71D5},
+       {0x6659, 0xF994},
+       {0x665A, 0x784F},
+       {0x665B, 0x786F},
+       {0x665C, 0xF995},
+       {0x665D, 0x7B75},
+       {0x665E, 0x7DE3},
+       {0x665F, 0xF996},
+       {0x6660, 0x7E2F},
+       {0x6661, 0xF997},
+       {0x6662, 0x884D},
+       {0x6663, 0x8EDF},
+       {0x6664, 0xF998},
+       {0x6665, 0xF999},
+       {0x6666, 0xF99A},
+       {0x6667, 0x925B},
+       {0x6668, 0xF99B},
+       {0x6669, 0x9CF6},
+       {0x666A, 0xF99C},
+       {0x666B, 0xF99D},
+       {0x666C, 0xF99E},
+       {0x666D, 0x6085},
+       {0x666E, 0x6D85},
+       {0x666F, 0xF99F},
+       {0x6670, 0x71B1},
+       {0x6671, 0xF9A0},
+       {0x6672, 0xF9A1},
+       {0x6673, 0x95B1},
+       {0x6674, 0x53AD},
+       {0x6675, 0xF9A2},
+       {0x6676, 0xF9A3},
+       {0x6677, 0xF9A4},
+       {0x6678, 0x67D3},
+       {0x6679, 0xF9A5},
+       {0x667A, 0x708E},
+       {0x667B, 0x7130},
+       {0x667C, 0x7430},
+       {0x667D, 0x8276},
+       {0x667E, 0x82D2},
+       {0x6721, 0xF9A6},
+       {0x6722, 0x95BB},
+       {0x6723, 0x9AE5},
+       {0x6724, 0x9E7D},
+       {0x6725, 0x66C4},
+       {0x6726, 0xF9A7},
+       {0x6727, 0x71C1},
+       {0x6728, 0x8449},
+       {0x6729, 0xF9A8},
+       {0x672A, 0xF9A9},
+       {0x672B, 0x584B},
+       {0x672C, 0xF9AA},
+       {0x672D, 0xF9AB},
+       {0x672E, 0x5DB8},
+       {0x672F, 0x5F71},
+       {0x6730, 0xF9AC},
+       {0x6731, 0x6620},
+       {0x6732, 0x668E},
+       {0x6733, 0x6979},
+       {0x6734, 0x69AE},
+       {0x6735, 0x6C38},
+       {0x6736, 0x6CF3},
+       {0x6737, 0x6E36},
+       {0x6738, 0x6F41},
+       {0x6739, 0x6FDA},
+       {0x673A, 0x701B},
+       {0x673B, 0x702F},
+       {0x673C, 0x7150},
+       {0x673D, 0x71DF},
+       {0x673E, 0x7370},
+       {0x673F, 0xF9AD},
+       {0x6740, 0x745B},
+       {0x6741, 0xF9AE},
+       {0x6742, 0x74D4},
+       {0x6743, 0x76C8},
+       {0x6744, 0x7A4E},
+       {0x6745, 0x7E93},
+       {0x6746, 0xF9AF},
+       {0x6747, 0xF9B0},
+       {0x6748, 0x82F1},
+       {0x6749, 0x8A60},
+       {0x674A, 0x8FCE},
+       {0x674B, 0xF9B1},
+       {0x674C, 0x9348},
+       {0x674D, 0xF9B2},
+       {0x674E, 0x9719},
+       {0x674F, 0xF9B3},
+       {0x6750, 0xF9B4},
+       {0x6751, 0x4E42},
+       {0x6752, 0x502A},
+       {0x6753, 0xF9B5},
+       {0x6754, 0x5208},
+       {0x6755, 0x53E1},
+       {0x6756, 0x66F3},
+       {0x6757, 0x6C6D},
+       {0x6758, 0x6FCA},
+       {0x6759, 0x730A},
+       {0x675A, 0x777F},
+       {0x675B, 0x7A62},
+       {0x675C, 0x82AE},
+       {0x675D, 0x85DD},
+       {0x675E, 0x8602},
+       {0x675F, 0xF9B6},
+       {0x6760, 0x88D4},
+       {0x6761, 0x8A63},
+       {0x6762, 0x8B7D},
+       {0x6763, 0x8C6B},
+       {0x6764, 0xF9B7},
+       {0x6765, 0x92B3},
+       {0x6766, 0xF9B8},
+       {0x6767, 0x9713},
+       {0x6768, 0x9810},
+       {0x6769, 0x4E94},
+       {0x676A, 0x4F0D},
+       {0x676B, 0x4FC9},
+       {0x676C, 0x50B2},
+       {0x676D, 0x5348},
+       {0x676E, 0x543E},
+       {0x676F, 0x5433},
+       {0x6770, 0x55DA},
+       {0x6771, 0x5862},
+       {0x6772, 0x58BA},
+       {0x6773, 0x5967},
+       {0x6774, 0x5A1B},
+       {0x6775, 0x5BE4},
+       {0x6776, 0x609F},
+       {0x6777, 0xF9B9},
+       {0x6778, 0x61CA},
+       {0x6779, 0x6556},
+       {0x677A, 0x65FF},
+       {0x677B, 0x6664},
+       {0x677C, 0x68A7},
+       {0x677D, 0x6C5A},
+       {0x677E, 0x6FB3},
+       {0x6821, 0x70CF},
+       {0x6822, 0x71AC},
+       {0x6823, 0x7352},
+       {0x6824, 0x7B7D},
+       {0x6825, 0x8708},
+       {0x6826, 0x8AA4},
+       {0x6827, 0x9C32},
+       {0x6828, 0x9F07},
+       {0x6829, 0x5C4B},
+       {0x682A, 0x6C83},
+       {0x682B, 0x7344},
+       {0x682C, 0x7389},
+       {0x682D, 0x923A},
+       {0x682E, 0x6EAB},
+       {0x682F, 0x7465},
+       {0x6830, 0x761F},
+       {0x6831, 0x7A69},
+       {0x6832, 0x7E15},
+       {0x6833, 0x860A},
+       {0x6834, 0x5140},
+       {0x6835, 0x58C5},
+       {0x6836, 0x64C1},
+       {0x6837, 0x74EE},
+       {0x6838, 0x7515},
+       {0x6839, 0x7670},
+       {0x683A, 0x7FC1},
+       {0x683B, 0x9095},
+       {0x683C, 0x96CD},
+       {0x683D, 0x9954},
+       {0x683E, 0x6E26},
+       {0x683F, 0x74E6},
+       {0x6840, 0x7AA9},
+       {0x6841, 0x7AAA},
+       {0x6842, 0x81E5},
+       {0x6843, 0x86D9},
+       {0x6844, 0x8778},
+       {0x6845, 0x8A1B},
+       {0x6846, 0x5A49},
+       {0x6847, 0x5B8C},
+       {0x6848, 0x5B9B},
+       {0x6849, 0x68A1},
+       {0x684A, 0x6900},
+       {0x684B, 0x6D63},
+       {0x684C, 0x73A9},
+       {0x684D, 0x7413},
+       {0x684E, 0x742C},
+       {0x684F, 0x7897},
+       {0x6850, 0x7DE9},
+       {0x6851, 0x7FEB},
+       {0x6852, 0x8118},
+       {0x6853, 0x8155},
+       {0x6854, 0x839E},
+       {0x6855, 0x8C4C},
+       {0x6856, 0x962E},
+       {0x6857, 0x9811},
+       {0x6858, 0x66F0},
+       {0x6859, 0x5F80},
+       {0x685A, 0x65FA},
+       {0x685B, 0x6789},
+       {0x685C, 0x6C6A},
+       {0x685D, 0x738B},
+       {0x685E, 0x502D},
+       {0x685F, 0x5A03},
+       {0x6860, 0x6B6A},
+       {0x6861, 0x77EE},
+       {0x6862, 0x5916},
+       {0x6863, 0x5D6C},
+       {0x6864, 0x5DCD},
+       {0x6865, 0x7325},
+       {0x6866, 0x754F},
+       {0x6867, 0xF9BA},
+       {0x6868, 0xF9BB},
+       {0x6869, 0x50E5},
+       {0x686A, 0x51F9},
+       {0x686B, 0x582F},
+       {0x686C, 0x592D},
+       {0x686D, 0x5996},
+       {0x686E, 0x59DA},
+       {0x686F, 0x5BE5},
+       {0x6870, 0xF9BC},
+       {0x6871, 0xF9BD},
+       {0x6872, 0x5DA2},
+       {0x6873, 0x62D7},
+       {0x6874, 0x6416},
+       {0x6875, 0x6493},
+       {0x6876, 0x64FE},
+       {0x6877, 0xF9BE},
+       {0x6878, 0x66DC},
+       {0x6879, 0xF9BF},
+       {0x687A, 0x6A48},
+       {0x687B, 0xF9C0},
+       {0x687C, 0x71FF},
+       {0x687D, 0x7464},
+       {0x687E, 0xF9C1},
+       {0x6921, 0x7A88},
+       {0x6922, 0x7AAF},
+       {0x6923, 0x7E47},
+       {0x6924, 0x7E5E},
+       {0x6925, 0x8000},
+       {0x6926, 0x8170},
+       {0x6927, 0xF9C2},
+       {0x6928, 0x87EF},
+       {0x6929, 0x8981},
+       {0x692A, 0x8B20},
+       {0x692B, 0x9059},
+       {0x692C, 0xF9C3},
+       {0x692D, 0x9080},
+       {0x692E, 0x9952},
+       {0x692F, 0x617E},
+       {0x6930, 0x6B32},
+       {0x6931, 0x6D74},
+       {0x6932, 0x7E1F},
+       {0x6933, 0x8925},
+       {0x6934, 0x8FB1},
+       {0x6935, 0x4FD1},
+       {0x6936, 0x50AD},
+       {0x6937, 0x5197},
+       {0x6938, 0x52C7},
+       {0x6939, 0x57C7},
+       {0x693A, 0x5889},
+       {0x693B, 0x5BB9},
+       {0x693C, 0x5EB8},
+       {0x693D, 0x6142},
+       {0x693E, 0x6995},
+       {0x693F, 0x6D8C},
+       {0x6940, 0x6E67},
+       {0x6941, 0x6EB6},
+       {0x6942, 0x7194},
+       {0x6943, 0x7462},
+       {0x6944, 0x7528},
+       {0x6945, 0x752C},
+       {0x6946, 0x8073},
+       {0x6947, 0x8338},
+       {0x6948, 0x84C9},
+       {0x6949, 0x8E0A},
+       {0x694A, 0x9394},
+       {0x694B, 0x93DE},
+       {0x694C, 0xF9C4},
+       {0x694D, 0x4E8E},
+       {0x694E, 0x4F51},
+       {0x694F, 0x5076},
+       {0x6950, 0x512A},
+       {0x6951, 0x53C8},
+       {0x6952, 0x53CB},
+       {0x6953, 0x53F3},
+       {0x6954, 0x5B87},
+       {0x6955, 0x5BD3},
+       {0x6956, 0x5C24},
+       {0x6957, 0x611A},
+       {0x6958, 0x6182},
+       {0x6959, 0x65F4},
+       {0x695A, 0x725B},
+       {0x695B, 0x7397},
+       {0x695C, 0x7440},
+       {0x695D, 0x76C2},
+       {0x695E, 0x7950},
+       {0x695F, 0x7991},
+       {0x6960, 0x79B9},
+       {0x6961, 0x7D06},
+       {0x6962, 0x7FBD},
+       {0x6963, 0x828B},
+       {0x6964, 0x85D5},
+       {0x6965, 0x865E},
+       {0x6966, 0x8FC2},
+       {0x6967, 0x9047},
+       {0x6968, 0x90F5},
+       {0x6969, 0x91EA},
+       {0x696A, 0x9685},
+       {0x696B, 0x96E8},
+       {0x696C, 0x96E9},
+       {0x696D, 0x52D6},
+       {0x696E, 0x5F67},
+       {0x696F, 0x65ED},
+       {0x6970, 0x6631},
+       {0x6971, 0x682F},
+       {0x6972, 0x715C},
+       {0x6973, 0x7A36},
+       {0x6974, 0x90C1},
+       {0x6975, 0x980A},
+       {0x6976, 0x4E91},
+       {0x6977, 0xF9C5},
+       {0x6978, 0x6A52},
+       {0x6979, 0x6B9E},
+       {0x697A, 0x6F90},
+       {0x697B, 0x7189},
+       {0x697C, 0x8018},
+       {0x697D, 0x82B8},
+       {0x697E, 0x8553},
+       {0x6A21, 0x904B},
+       {0x6A22, 0x9695},
+       {0x6A23, 0x96F2},
+       {0x6A24, 0x97FB},
+       {0x6A25, 0x851A},
+       {0x6A26, 0x9B31},
+       {0x6A27, 0x4E90},
+       {0x6A28, 0x718A},
+       {0x6A29, 0x96C4},
+       {0x6A2A, 0x5143},
+       {0x6A2B, 0x539F},
+       {0x6A2C, 0x54E1},
+       {0x6A2D, 0x5713},
+       {0x6A2E, 0x5712},
+       {0x6A2F, 0x57A3},
+       {0x6A30, 0x5A9B},
+       {0x6A31, 0x5AC4},
+       {0x6A32, 0x5BC3},
+       {0x6A33, 0x6028},
+       {0x6A34, 0x613F},
+       {0x6A35, 0x63F4},
+       {0x6A36, 0x6C85},
+       {0x6A37, 0x6D39},
+       {0x6A38, 0x6E72},
+       {0x6A39, 0x6E90},
+       {0x6A3A, 0x7230},
+       {0x6A3B, 0x733F},
+       {0x6A3C, 0x7457},
+       {0x6A3D, 0x82D1},
+       {0x6A3E, 0x8881},
+       {0x6A3F, 0x8F45},
+       {0x6A40, 0x9060},
+       {0x6A41, 0xF9C6},
+       {0x6A42, 0x9662},
+       {0x6A43, 0x9858},
+       {0x6A44, 0x9D1B},
+       {0x6A45, 0x6708},
+       {0x6A46, 0x8D8A},
+       {0x6A47, 0x925E},
+       {0x6A48, 0x4F4D},
+       {0x6A49, 0x5049},
+       {0x6A4A, 0x50DE},
+       {0x6A4B, 0x5371},
+       {0x6A4C, 0x570D},
+       {0x6A4D, 0x59D4},
+       {0x6A4E, 0x5A01},
+       {0x6A4F, 0x5C09},
+       {0x6A50, 0x6170},
+       {0x6A51, 0x6690},
+       {0x6A52, 0x6E2D},
+       {0x6A53, 0x7232},
+       {0x6A54, 0x744B},
+       {0x6A55, 0x7DEF},
+       {0x6A56, 0x80C3},
+       {0x6A57, 0x840E},
+       {0x6A58, 0x8466},
+       {0x6A59, 0x853F},
+       {0x6A5A, 0x875F},
+       {0x6A5B, 0x885B},
+       {0x6A5C, 0x8918},
+       {0x6A5D, 0x8B02},
+       {0x6A5E, 0x9055},
+       {0x6A5F, 0x97CB},
+       {0x6A60, 0x9B4F},
+       {0x6A61, 0x4E73},
+       {0x6A62, 0x4F91},
+       {0x6A63, 0x5112},
+       {0x6A64, 0x516A},
+       {0x6A65, 0xF9C7},
+       {0x6A66, 0x552F},
+       {0x6A67, 0x55A9},
+       {0x6A68, 0x5B7A},
+       {0x6A69, 0x5BA5},
+       {0x6A6A, 0x5E7C},
+       {0x6A6B, 0x5E7D},
+       {0x6A6C, 0x5EBE},
+       {0x6A6D, 0x60A0},
+       {0x6A6E, 0x60DF},
+       {0x6A6F, 0x6108},
+       {0x6A70, 0x6109},
+       {0x6A71, 0x63C4},
+       {0x6A72, 0x6538},
+       {0x6A73, 0x6709},
+       {0x6A74, 0xF9C8},
+       {0x6A75, 0x67D4},
+       {0x6A76, 0x67DA},
+       {0x6A77, 0xF9C9},
+       {0x6A78, 0x6961},
+       {0x6A79, 0x6962},
+       {0x6A7A, 0x6CB9},
+       {0x6A7B, 0x6D27},
+       {0x6A7C, 0xF9CA},
+       {0x6A7D, 0x6E38},
+       {0x6A7E, 0xF9CB},
+       {0x6B21, 0x6FE1},
+       {0x6B22, 0x7336},
+       {0x6B23, 0x7337},
+       {0x6B24, 0xF9CC},
+       {0x6B25, 0x745C},
+       {0x6B26, 0x7531},
+       {0x6B27, 0xF9CD},
+       {0x6B28, 0x7652},
+       {0x6B29, 0xF9CE},
+       {0x6B2A, 0xF9CF},
+       {0x6B2B, 0x7DAD},
+       {0x6B2C, 0x81FE},
+       {0x6B2D, 0x8438},
+       {0x6B2E, 0x88D5},
+       {0x6B2F, 0x8A98},
+       {0x6B30, 0x8ADB},
+       {0x6B31, 0x8AED},
+       {0x6B32, 0x8E30},
+       {0x6B33, 0x8E42},
+       {0x6B34, 0x904A},
+       {0x6B35, 0x903E},
+       {0x6B36, 0x907A},
+       {0x6B37, 0x9149},
+       {0x6B38, 0x91C9},
+       {0x6B39, 0x936E},
+       {0x6B3A, 0xF9D0},
+       {0x6B3B, 0xF9D1},
+       {0x6B3C, 0x5809},
+       {0x6B3D, 0xF9D2},
+       {0x6B3E, 0x6BD3},
+       {0x6B3F, 0x8089},
+       {0x6B40, 0x80B2},
+       {0x6B41, 0xF9D3},
+       {0x6B42, 0xF9D4},
+       {0x6B43, 0x5141},
+       {0x6B44, 0x596B},
+       {0x6B45, 0x5C39},
+       {0x6B46, 0xF9D5},
+       {0x6B47, 0xF9D6},
+       {0x6B48, 0x6F64},
+       {0x6B49, 0x73A7},
+       {0x6B4A, 0x80E4},
+       {0x6B4B, 0x8D07},
+       {0x6B4C, 0xF9D7},
+       {0x6B4D, 0x9217},
+       {0x6B4E, 0x958F},
+       {0x6B4F, 0xF9D8},
+       {0x6B50, 0xF9D9},
+       {0x6B51, 0xF9DA},
+       {0x6B52, 0xF9DB},
+       {0x6B53, 0x807F},
+       {0x6B54, 0x620E},
+       {0x6B55, 0x701C},
+       {0x6B56, 0x7D68},
+       {0x6B57, 0x878D},
+       {0x6B58, 0xF9DC},
+       {0x6B59, 0x57A0},
+       {0x6B5A, 0x6069},
+       {0x6B5B, 0x6147},
+       {0x6B5C, 0x6BB7},
+       {0x6B5D, 0x8ABE},
+       {0x6B5E, 0x9280},
+       {0x6B5F, 0x96B1},
+       {0x6B60, 0x4E59},
+       {0x6B61, 0x541F},
+       {0x6B62, 0x6DEB},
+       {0x6B63, 0x852D},
+       {0x6B64, 0x9670},
+       {0x6B65, 0x97F3},
+       {0x6B66, 0x98EE},
+       {0x6B67, 0x63D6},
+       {0x6B68, 0x6CE3},
+       {0x6B69, 0x9091},
+       {0x6B6A, 0x51DD},
+       {0x6B6B, 0x61C9},
+       {0x6B6C, 0x81BA},
+       {0x6B6D, 0x9DF9},
+       {0x6B6E, 0x4F9D},
+       {0x6B6F, 0x501A},
+       {0x6B70, 0x5100},
+       {0x6B71, 0x5B9C},
+       {0x6B72, 0x610F},
+       {0x6B73, 0x61FF},
+       {0x6B74, 0x64EC},
+       {0x6B75, 0x6905},
+       {0x6B76, 0x6BC5},
+       {0x6B77, 0x7591},
+       {0x6B78, 0x77E3},
+       {0x6B79, 0x7FA9},
+       {0x6B7A, 0x8264},
+       {0x6B7B, 0x858F},
+       {0x6B7C, 0x87FB},
+       {0x6B7D, 0x8863},
+       {0x6B7E, 0x8ABC},
+       {0x6C21, 0x8B70},
+       {0x6C22, 0x91AB},
+       {0x6C23, 0x4E8C},
+       {0x6C24, 0x4EE5},
+       {0x6C25, 0x4F0A},
+       {0x6C26, 0xF9DD},
+       {0x6C27, 0xF9DE},
+       {0x6C28, 0x5937},
+       {0x6C29, 0x59E8},
+       {0x6C2A, 0xF9DF},
+       {0x6C2B, 0x5DF2},
+       {0x6C2C, 0x5F1B},
+       {0x6C2D, 0x5F5B},
+       {0x6C2E, 0x6021},
+       {0x6C2F, 0xF9E0},
+       {0x6C30, 0xF9E1},
+       {0x6C31, 0xF9E2},
+       {0x6C32, 0xF9E3},
+       {0x6C33, 0x723E},
+       {0x6C34, 0x73E5},
+       {0x6C35, 0xF9E4},
+       {0x6C36, 0x7570},
+       {0x6C37, 0x75CD},
+       {0x6C38, 0xF9E5},
+       {0x6C39, 0x79FB},
+       {0x6C3A, 0xF9E6},
+       {0x6C3B, 0x800C},
+       {0x6C3C, 0x8033},
+       {0x6C3D, 0x8084},
+       {0x6C3E, 0x82E1},
+       {0x6C3F, 0x8351},
+       {0x6C40, 0xF9E7},
+       {0x6C41, 0xF9E8},
+       {0x6C42, 0x8CBD},
+       {0x6C43, 0x8CB3},
+       {0x6C44, 0x9087},
+       {0x6C45, 0xF9E9},
+       {0x6C46, 0xF9EA},
+       {0x6C47, 0x98F4},
+       {0x6C48, 0x990C},
+       {0x6C49, 0xF9EB},
+       {0x6C4A, 0xF9EC},
+       {0x6C4B, 0x7037},
+       {0x6C4C, 0x76CA},
+       {0x6C4D, 0x7FCA},
+       {0x6C4E, 0x7FCC},
+       {0x6C4F, 0x7FFC},
+       {0x6C50, 0x8B1A},
+       {0x6C51, 0x4EBA},
+       {0x6C52, 0x4EC1},
+       {0x6C53, 0x5203},
+       {0x6C54, 0x5370},
+       {0x6C55, 0xF9ED},
+       {0x6C56, 0x54BD},
+       {0x6C57, 0x56E0},
+       {0x6C58, 0x59FB},
+       {0x6C59, 0x5BC5},
+       {0x6C5A, 0x5F15},
+       {0x6C5B, 0x5FCD},
+       {0x6C5C, 0x6E6E},
+       {0x6C5D, 0xF9EE},
+       {0x6C5E, 0xF9EF},
+       {0x6C5F, 0x7D6A},
+       {0x6C60, 0x8335},
+       {0x6C61, 0xF9F0},
+       {0x6C62, 0x8693},
+       {0x6C63, 0x8A8D},
+       {0x6C64, 0xF9F1},
+       {0x6C65, 0x976D},
+       {0x6C66, 0x9777},
+       {0x6C67, 0xF9F2},
+       {0x6C68, 0xF9F3},
+       {0x6C69, 0x4E00},
+       {0x6C6A, 0x4F5A},
+       {0x6C6B, 0x4F7E},
+       {0x6C6C, 0x58F9},
+       {0x6C6D, 0x65E5},
+       {0x6C6E, 0x6EA2},
+       {0x6C6F, 0x9038},
+       {0x6C70, 0x93B0},
+       {0x6C71, 0x99B9},
+       {0x6C72, 0x4EFB},
+       {0x6C73, 0x58EC},
+       {0x6C74, 0x598A},
+       {0x6C75, 0x59D9},
+       {0x6C76, 0x6041},
+       {0x6C77, 0xF9F4},
+       {0x6C78, 0xF9F5},
+       {0x6C79, 0x7A14},
+       {0x6C7A, 0xF9F6},
+       {0x6C7B, 0x834F},
+       {0x6C7C, 0x8CC3},
+       {0x6C7D, 0x5165},
+       {0x6C7E, 0x5344},
+       {0x6D21, 0xF9F7},
+       {0x6D22, 0xF9F8},
+       {0x6D23, 0xF9F9},
+       {0x6D24, 0x4ECD},
+       {0x6D25, 0x5269},
+       {0x6D26, 0x5B55},
+       {0x6D27, 0x82BF},
+       {0x6D28, 0x4ED4},
+       {0x6D29, 0x523A},
+       {0x6D2A, 0x54A8},
+       {0x6D2B, 0x59C9},
+       {0x6D2C, 0x59FF},
+       {0x6D2D, 0x5B50},
+       {0x6D2E, 0x5B57},
+       {0x6D2F, 0x5B5C},
+       {0x6D30, 0x6063},
+       {0x6D31, 0x6148},
+       {0x6D32, 0x6ECB},
+       {0x6D33, 0x7099},
+       {0x6D34, 0x716E},
+       {0x6D35, 0x7386},
+       {0x6D36, 0x74F7},
+       {0x6D37, 0x75B5},
+       {0x6D38, 0x78C1},
+       {0x6D39, 0x7D2B},
+       {0x6D3A, 0x8005},
+       {0x6D3B, 0x81EA},
+       {0x6D3C, 0x8328},
+       {0x6D3D, 0x8517},
+       {0x6D3E, 0x85C9},
+       {0x6D3F, 0x8AEE},
+       {0x6D40, 0x8CC7},
+       {0x6D41, 0x96CC},
+       {0x6D42, 0x4F5C},
+       {0x6D43, 0x52FA},
+       {0x6D44, 0x56BC},
+       {0x6D45, 0x65AB},
+       {0x6D46, 0x6628},
+       {0x6D47, 0x707C},
+       {0x6D48, 0x70B8},
+       {0x6D49, 0x7235},
+       {0x6D4A, 0x7DBD},
+       {0x6D4B, 0x828D},
+       {0x6D4C, 0x914C},
+       {0x6D4D, 0x96C0},
+       {0x6D4E, 0x9D72},
+       {0x6D4F, 0x5B71},
+       {0x6D50, 0x68E7},
+       {0x6D51, 0x6B98},
+       {0x6D52, 0x6F7A},
+       {0x6D53, 0x76DE},
+       {0x6D54, 0x5C91},
+       {0x6D55, 0x66AB},
+       {0x6D56, 0x6F5B},
+       {0x6D57, 0x7BB4},
+       {0x6D58, 0x7C2A},
+       {0x6D59, 0x8836},
+       {0x6D5A, 0x96DC},
+       {0x6D5B, 0x4E08},
+       {0x6D5C, 0x4ED7},
+       {0x6D5D, 0x5320},
+       {0x6D5E, 0x5834},
+       {0x6D5F, 0x58BB},
+       {0x6D60, 0x58EF},
+       {0x6D61, 0x596C},
+       {0x6D62, 0x5C07},
+       {0x6D63, 0x5E33},
+       {0x6D64, 0x5E84},
+       {0x6D65, 0x5F35},
+       {0x6D66, 0x638C},
+       {0x6D67, 0x66B2},
+       {0x6D68, 0x6756},
+       {0x6D69, 0x6A1F},
+       {0x6D6A, 0x6AA3},
+       {0x6D6B, 0x6B0C},
+       {0x6D6C, 0x6F3F},
+       {0x6D6D, 0x7246},
+       {0x6D6E, 0xF9FA},
+       {0x6D6F, 0x7350},
+       {0x6D70, 0x748B},
+       {0x6D71, 0x7AE0},
+       {0x6D72, 0x7CA7},
+       {0x6D73, 0x8178},
+       {0x6D74, 0x81DF},
+       {0x6D75, 0x81E7},
+       {0x6D76, 0x838A},
+       {0x6D77, 0x846C},
+       {0x6D78, 0x8523},
+       {0x6D79, 0x8594},
+       {0x6D7A, 0x85CF},
+       {0x6D7B, 0x88DD},
+       {0x6D7C, 0x8D13},
+       {0x6D7D, 0x91AC},
+       {0x6D7E, 0x9577},
+       {0x6E21, 0x969C},
+       {0x6E22, 0x518D},
+       {0x6E23, 0x54C9},
+       {0x6E24, 0x5728},
+       {0x6E25, 0x5BB0},
+       {0x6E26, 0x624D},
+       {0x6E27, 0x6750},
+       {0x6E28, 0x683D},
+       {0x6E29, 0x6893},
+       {0x6E2A, 0x6E3D},
+       {0x6E2B, 0x6ED3},
+       {0x6E2C, 0x707D},
+       {0x6E2D, 0x7E21},
+       {0x6E2E, 0x88C1},
+       {0x6E2F, 0x8CA1},
+       {0x6E30, 0x8F09},
+       {0x6E31, 0x9F4B},
+       {0x6E32, 0x9F4E},
+       {0x6E33, 0x722D},
+       {0x6E34, 0x7B8F},
+       {0x6E35, 0x8ACD},
+       {0x6E36, 0x931A},
+       {0x6E37, 0x4F47},
+       {0x6E38, 0x4F4E},
+       {0x6E39, 0x5132},
+       {0x6E3A, 0x5480},
+       {0x6E3B, 0x59D0},
+       {0x6E3C, 0x5E95},
+       {0x6E3D, 0x62B5},
+       {0x6E3E, 0x6775},
+       {0x6E3F, 0x696E},
+       {0x6E40, 0x6A17},
+       {0x6E41, 0x6CAE},
+       {0x6E42, 0x6E1A},
+       {0x6E43, 0x72D9},
+       {0x6E44, 0x732A},
+       {0x6E45, 0x75BD},
+       {0x6E46, 0x7BB8},
+       {0x6E47, 0x7D35},
+       {0x6E48, 0x82E7},
+       {0x6E49, 0x83F9},
+       {0x6E4A, 0x8457},
+       {0x6E4B, 0x85F7},
+       {0x6E4C, 0x8A5B},
+       {0x6E4D, 0x8CAF},
+       {0x6E4E, 0x8E87},
+       {0x6E4F, 0x9019},
+       {0x6E50, 0x90B8},
+       {0x6E51, 0x96CE},
+       {0x6E52, 0x9F5F},
+       {0x6E53, 0x52E3},
+       {0x6E54, 0x540A},
+       {0x6E55, 0x5AE1},
+       {0x6E56, 0x5BC2},
+       {0x6E57, 0x6458},
+       {0x6E58, 0x6575},
+       {0x6E59, 0x6EF4},
+       {0x6E5A, 0x72C4},
+       {0x6E5B, 0xF9FB},
+       {0x6E5C, 0x7684},
+       {0x6E5D, 0x7A4D},
+       {0x6E5E, 0x7B1B},
+       {0x6E5F, 0x7C4D},
+       {0x6E60, 0x7E3E},
+       {0x6E61, 0x7FDF},
+       {0x6E62, 0x837B},
+       {0x6E63, 0x8B2B},
+       {0x6E64, 0x8CCA},
+       {0x6E65, 0x8D64},
+       {0x6E66, 0x8DE1},
+       {0x6E67, 0x8E5F},
+       {0x6E68, 0x8FEA},
+       {0x6E69, 0x8FF9},
+       {0x6E6A, 0x9069},
+       {0x6E6B, 0x93D1},
+       {0x6E6C, 0x4F43},
+       {0x6E6D, 0x4F7A},
+       {0x6E6E, 0x50B3},
+       {0x6E6F, 0x5168},
+       {0x6E70, 0x5178},
+       {0x6E71, 0x524D},
+       {0x6E72, 0x526A},
+       {0x6E73, 0x5861},
+       {0x6E74, 0x587C},
+       {0x6E75, 0x5960},
+       {0x6E76, 0x5C08},
+       {0x6E77, 0x5C55},
+       {0x6E78, 0x5EDB},
+       {0x6E79, 0x609B},
+       {0x6E7A, 0x6230},
+       {0x6E7B, 0x6813},
+       {0x6E7C, 0x6BBF},
+       {0x6E7D, 0x6C08},
+       {0x6E7E, 0x6FB1},
+       {0x6F21, 0x714E},
+       {0x6F22, 0x7420},
+       {0x6F23, 0x7530},
+       {0x6F24, 0x7538},
+       {0x6F25, 0x7551},
+       {0x6F26, 0x7672},
+       {0x6F27, 0x7B4C},
+       {0x6F28, 0x7B8B},
+       {0x6F29, 0x7BAD},
+       {0x6F2A, 0x7BC6},
+       {0x6F2B, 0x7E8F},
+       {0x6F2C, 0x8A6E},
+       {0x6F2D, 0x8F3E},
+       {0x6F2E, 0x8F49},
+       {0x6F2F, 0x923F},
+       {0x6F30, 0x9293},
+       {0x6F31, 0x9322},
+       {0x6F32, 0x942B},
+       {0x6F33, 0x96FB},
+       {0x6F34, 0x985A},
+       {0x6F35, 0x986B},
+       {0x6F36, 0x991E},
+       {0x6F37, 0x5207},
+       {0x6F38, 0x622A},
+       {0x6F39, 0x6298},
+       {0x6F3A, 0x6D59},
+       {0x6F3B, 0x7664},
+       {0x6F3C, 0x7ACA},
+       {0x6F3D, 0x7BC0},
+       {0x6F3E, 0x7D76},
+       {0x6F3F, 0x5360},
+       {0x6F40, 0x5CBE},
+       {0x6F41, 0x5E97},
+       {0x6F42, 0x6F38},
+       {0x6F43, 0x70B9},
+       {0x6F44, 0x7C98},
+       {0x6F45, 0x9711},
+       {0x6F46, 0x9B8E},
+       {0x6F47, 0x9EDE},
+       {0x6F48, 0x63A5},
+       {0x6F49, 0x647A},
+       {0x6F4A, 0x8776},
+       {0x6F4B, 0x4E01},
+       {0x6F4C, 0x4E95},
+       {0x6F4D, 0x4EAD},
+       {0x6F4E, 0x505C},
+       {0x6F4F, 0x5075},
+       {0x6F50, 0x5448},
+       {0x6F51, 0x59C3},
+       {0x6F52, 0x5B9A},
+       {0x6F53, 0x5E40},
+       {0x6F54, 0x5EAD},
+       {0x6F55, 0x5EF7},
+       {0x6F56, 0x5F81},
+       {0x6F57, 0x60C5},
+       {0x6F58, 0x633A},
+       {0x6F59, 0x653F},
+       {0x6F5A, 0x6574},
+       {0x6F5B, 0x65CC},
+       {0x6F5C, 0x6676},
+       {0x6F5D, 0x6678},
+       {0x6F5E, 0x67FE},
+       {0x6F5F, 0x6968},
+       {0x6F60, 0x6A89},
+       {0x6F61, 0x6B63},
+       {0x6F62, 0x6C40},
+       {0x6F63, 0x6DC0},
+       {0x6F64, 0x6DE8},
+       {0x6F65, 0x6E1F},
+       {0x6F66, 0x6E5E},
+       {0x6F67, 0x701E},
+       {0x6F68, 0x70A1},
+       {0x6F69, 0x738E},
+       {0x6F6A, 0x73FD},
+       {0x6F6B, 0x753A},
+       {0x6F6C, 0x775B},
+       {0x6F6D, 0x7887},
+       {0x6F6E, 0x798E},
+       {0x6F6F, 0x7A0B},
+       {0x6F70, 0x7A7D},
+       {0x6F71, 0x7CBE},
+       {0x6F72, 0x7D8E},
+       {0x6F73, 0x8247},
+       {0x6F74, 0x8A02},
+       {0x6F75, 0x8AEA},
+       {0x6F76, 0x8C9E},
+       {0x6F77, 0x912D},
+       {0x6F78, 0x914A},
+       {0x6F79, 0x91D8},
+       {0x6F7A, 0x9266},
+       {0x6F7B, 0x92CC},
+       {0x6F7C, 0x9320},
+       {0x6F7D, 0x9706},
+       {0x6F7E, 0x9756},
+       {0x7021, 0x975C},
+       {0x7022, 0x9802},
+       {0x7023, 0x9F0E},
+       {0x7024, 0x5236},
+       {0x7025, 0x5291},
+       {0x7026, 0x557C},
+       {0x7027, 0x5824},
+       {0x7028, 0x5E1D},
+       {0x7029, 0x5F1F},
+       {0x702A, 0x608C},
+       {0x702B, 0x63D0},
+       {0x702C, 0x68AF},
+       {0x702D, 0x6FDF},
+       {0x702E, 0x796D},
+       {0x702F, 0x7B2C},
+       {0x7030, 0x81CD},
+       {0x7031, 0x85BA},
+       {0x7032, 0x88FD},
+       {0x7033, 0x8AF8},
+       {0x7034, 0x8E44},
+       {0x7035, 0x918D},
+       {0x7036, 0x9664},
+       {0x7037, 0x969B},
+       {0x7038, 0x973D},
+       {0x7039, 0x984C},
+       {0x703A, 0x9F4A},
+       {0x703B, 0x4FCE},
+       {0x703C, 0x5146},
+       {0x703D, 0x51CB},
+       {0x703E, 0x52A9},
+       {0x703F, 0x5632},
+       {0x7040, 0x5F14},
+       {0x7041, 0x5F6B},
+       {0x7042, 0x63AA},
+       {0x7043, 0x64CD},
+       {0x7044, 0x65E9},
+       {0x7045, 0x6641},
+       {0x7046, 0x66FA},
+       {0x7047, 0x66F9},
+       {0x7048, 0x671D},
+       {0x7049, 0x689D},
+       {0x704A, 0x68D7},
+       {0x704B, 0x69FD},
+       {0x704C, 0x6F15},
+       {0x704D, 0x6F6E},
+       {0x704E, 0x7167},
+       {0x704F, 0x71E5},
+       {0x7050, 0x722A},
+       {0x7051, 0x74AA},
+       {0x7052, 0x773A},
+       {0x7053, 0x7956},
+       {0x7054, 0x795A},
+       {0x7055, 0x79DF},
+       {0x7056, 0x7A20},
+       {0x7057, 0x7A95},
+       {0x7058, 0x7C97},
+       {0x7059, 0x7CDF},
+       {0x705A, 0x7D44},
+       {0x705B, 0x7E70},
+       {0x705C, 0x8087},
+       {0x705D, 0x85FB},
+       {0x705E, 0x86A4},
+       {0x705F, 0x8A54},
+       {0x7060, 0x8ABF},
+       {0x7061, 0x8D99},
+       {0x7062, 0x8E81},
+       {0x7063, 0x9020},
+       {0x7064, 0x906D},
+       {0x7065, 0x91E3},
+       {0x7066, 0x963B},
+       {0x7067, 0x96D5},
+       {0x7068, 0x9CE5},
+       {0x7069, 0x65CF},
+       {0x706A, 0x7C07},
+       {0x706B, 0x8DB3},
+       {0x706C, 0x93C3},
+       {0x706D, 0x5B58},
+       {0x706E, 0x5C0A},
+       {0x706F, 0x5352},
+       {0x7070, 0x62D9},
+       {0x7071, 0x731D},
+       {0x7072, 0x5027},
+       {0x7073, 0x5B97},
+       {0x7074, 0x5F9E},
+       {0x7075, 0x60B0},
+       {0x7076, 0x616B},
+       {0x7077, 0x68D5},
+       {0x7078, 0x6DD9},
+       {0x7079, 0x742E},
+       {0x707A, 0x7A2E},
+       {0x707B, 0x7D42},
+       {0x707C, 0x7D9C},
+       {0x707D, 0x7E31},
+       {0x707E, 0x816B},
+       {0x7121, 0x8E2A},
+       {0x7122, 0x8E35},
+       {0x7123, 0x937E},
+       {0x7124, 0x9418},
+       {0x7125, 0x4F50},
+       {0x7126, 0x5750},
+       {0x7127, 0x5DE6},
+       {0x7128, 0x5EA7},
+       {0x7129, 0x632B},
+       {0x712A, 0x7F6A},
+       {0x712B, 0x4E3B},
+       {0x712C, 0x4F4F},
+       {0x712D, 0x4F8F},
+       {0x712E, 0x505A},
+       {0x712F, 0x59DD},
+       {0x7130, 0x80C4},
+       {0x7131, 0x546A},
+       {0x7132, 0x5468},
+       {0x7133, 0x55FE},
+       {0x7134, 0x594F},
+       {0x7135, 0x5B99},
+       {0x7136, 0x5DDE},
+       {0x7137, 0x5EDA},
+       {0x7138, 0x665D},
+       {0x7139, 0x6731},
+       {0x713A, 0x67F1},
+       {0x713B, 0x682A},
+       {0x713C, 0x6CE8},
+       {0x713D, 0x6D32},
+       {0x713E, 0x6E4A},
+       {0x713F, 0x6F8D},
+       {0x7140, 0x70B7},
+       {0x7141, 0x73E0},
+       {0x7142, 0x7587},
+       {0x7143, 0x7C4C},
+       {0x7144, 0x7D02},
+       {0x7145, 0x7D2C},
+       {0x7146, 0x7DA2},
+       {0x7147, 0x821F},
+       {0x7148, 0x86DB},
+       {0x7149, 0x8A3B},
+       {0x714A, 0x8A85},
+       {0x714B, 0x8D70},
+       {0x714C, 0x8E8A},
+       {0x714D, 0x8F33},
+       {0x714E, 0x9031},
+       {0x714F, 0x914E},
+       {0x7150, 0x9152},
+       {0x7151, 0x9444},
+       {0x7152, 0x99D0},
+       {0x7153, 0x7AF9},
+       {0x7154, 0x7CA5},
+       {0x7155, 0x4FCA},
+       {0x7156, 0x5101},
+       {0x7157, 0x51C6},
+       {0x7158, 0x57C8},
+       {0x7159, 0x5BEF},
+       {0x715A, 0x5CFB},
+       {0x715B, 0x6659},
+       {0x715C, 0x6A3D},
+       {0x715D, 0x6D5A},
+       {0x715E, 0x6E96},
+       {0x715F, 0x6FEC},
+       {0x7160, 0x710C},
+       {0x7161, 0x756F},
+       {0x7162, 0x7AE3},
+       {0x7163, 0x8822},
+       {0x7164, 0x9021},
+       {0x7165, 0x9075},
+       {0x7166, 0x96CB},
+       {0x7167, 0x99FF},
+       {0x7168, 0x8301},
+       {0x7169, 0x4E2D},
+       {0x716A, 0x4EF2},
+       {0x716B, 0x8846},
+       {0x716C, 0x91CD},
+       {0x716D, 0x537D},
+       {0x716E, 0x6ADB},
+       {0x716F, 0x696B},
+       {0x7170, 0x6C41},
+       {0x7171, 0x847A},
+       {0x7172, 0x589E},
+       {0x7173, 0x618E},
+       {0x7174, 0x66FE},
+       {0x7175, 0x62EF},
+       {0x7176, 0x70DD},
+       {0x7177, 0x7511},
+       {0x7178, 0x75C7},
+       {0x7179, 0x7E52},
+       {0x717A, 0x84B8},
+       {0x717B, 0x8B49},
+       {0x717C, 0x8D08},
+       {0x717D, 0x4E4B},
+       {0x717E, 0x53EA},
+       {0x7221, 0x54AB},
+       {0x7222, 0x5730},
+       {0x7223, 0x5740},
+       {0x7224, 0x5FD7},
+       {0x7225, 0x6301},
+       {0x7226, 0x6307},
+       {0x7227, 0x646F},
+       {0x7228, 0x652F},
+       {0x7229, 0x65E8},
+       {0x722A, 0x667A},
+       {0x722B, 0x679D},
+       {0x722C, 0x67B3},
+       {0x722D, 0x6B62},
+       {0x722E, 0x6C60},
+       {0x722F, 0x6C9A},
+       {0x7230, 0x6F2C},
+       {0x7231, 0x77E5},
+       {0x7232, 0x7825},
+       {0x7233, 0x7949},
+       {0x7234, 0x7957},
+       {0x7235, 0x7D19},
+       {0x7236, 0x80A2},
+       {0x7237, 0x8102},
+       {0x7238, 0x81F3},
+       {0x7239, 0x829D},
+       {0x723A, 0x82B7},
+       {0x723B, 0x8718},
+       {0x723C, 0x8A8C},
+       {0x723D, 0xF9FC},
+       {0x723E, 0x8D04},
+       {0x723F, 0x8DBE},
+       {0x7240, 0x9072},
+       {0x7241, 0x76F4},
+       {0x7242, 0x7A19},
+       {0x7243, 0x7A37},
+       {0x7244, 0x7E54},
+       {0x7245, 0x8077},
+       {0x7246, 0x5507},
+       {0x7247, 0x55D4},
+       {0x7248, 0x5875},
+       {0x7249, 0x632F},
+       {0x724A, 0x6422},
+       {0x724B, 0x6649},
+       {0x724C, 0x664B},
+       {0x724D, 0x686D},
+       {0x724E, 0x699B},
+       {0x724F, 0x6B84},
+       {0x7250, 0x6D25},
+       {0x7251, 0x6EB1},
+       {0x7252, 0x73CD},
+       {0x7253, 0x7468},
+       {0x7254, 0x74A1},
+       {0x7255, 0x755B},
+       {0x7256, 0x75B9},
+       {0x7257, 0x76E1},
+       {0x7258, 0x771E},
+       {0x7259, 0x778B},
+       {0x725A, 0x79E6},
+       {0x725B, 0x7E09},
+       {0x725C, 0x7E1D},
+       {0x725D, 0x81FB},
+       {0x725E, 0x852F},
+       {0x725F, 0x8897},
+       {0x7260, 0x8A3A},
+       {0x7261, 0x8CD1},
+       {0x7262, 0x8EEB},
+       {0x7263, 0x8FB0},
+       {0x7264, 0x9032},
+       {0x7265, 0x93AD},
+       {0x7266, 0x9663},
+       {0x7267, 0x9673},
+       {0x7268, 0x9707},
+       {0x7269, 0x4F84},
+       {0x726A, 0x53F1},
+       {0x726B, 0x59EA},
+       {0x726C, 0x5AC9},
+       {0x726D, 0x5E19},
+       {0x726E, 0x684E},
+       {0x726F, 0x74C6},
+       {0x7270, 0x75BE},
+       {0x7271, 0x79E9},
+       {0x7272, 0x7A92},
+       {0x7273, 0x81A3},
+       {0x7274, 0x86ED},
+       {0x7275, 0x8CEA},
+       {0x7276, 0x8DCC},
+       {0x7277, 0x8FED},
+       {0x7278, 0x659F},
+       {0x7279, 0x6715},
+       {0x727A, 0xF9FD},
+       {0x727B, 0x57F7},
+       {0x727C, 0x6F57},
+       {0x727D, 0x7DDD},
+       {0x727E, 0x8F2F},
+       {0x7321, 0x93F6},
+       {0x7322, 0x96C6},
+       {0x7323, 0x5FB5},
+       {0x7324, 0x61F2},
+       {0x7325, 0x6F84},
+       {0x7326, 0x4E14},
+       {0x7327, 0x4F98},
+       {0x7328, 0x501F},
+       {0x7329, 0x53C9},
+       {0x732A, 0x55DF},
+       {0x732B, 0x5D6F},
+       {0x732C, 0x5DEE},
+       {0x732D, 0x6B21},
+       {0x732E, 0x6B64},
+       {0x732F, 0x78CB},
+       {0x7330, 0x7B9A},
+       {0x7331, 0xF9FE},
+       {0x7332, 0x8E49},
+       {0x7333, 0x8ECA},
+       {0x7334, 0x906E},
+       {0x7335, 0x6349},
+       {0x7336, 0x643E},
+       {0x7337, 0x7740},
+       {0x7338, 0x7A84},
+       {0x7339, 0x932F},
+       {0x733A, 0x947F},
+       {0x733B, 0x9F6A},
+       {0x733C, 0x64B0},
+       {0x733D, 0x6FAF},
+       {0x733E, 0x71E6},
+       {0x733F, 0x74A8},
+       {0x7340, 0x74DA},
+       {0x7341, 0x7AC4},
+       {0x7342, 0x7C12},
+       {0x7343, 0x7E82},
+       {0x7344, 0x7CB2},
+       {0x7345, 0x7E98},
+       {0x7346, 0x8B9A},
+       {0x7347, 0x8D0A},
+       {0x7348, 0x947D},
+       {0x7349, 0x9910},
+       {0x734A, 0x994C},
+       {0x734B, 0x5239},
+       {0x734C, 0x5BDF},
+       {0x734D, 0x64E6},
+       {0x734E, 0x672D},
+       {0x734F, 0x7D2E},
+       {0x7350, 0x50ED},
+       {0x7351, 0x53C3},
+       {0x7352, 0x5879},
+       {0x7353, 0x6158},
+       {0x7354, 0x6159},
+       {0x7355, 0x61FA},
+       {0x7356, 0x65AC},
+       {0x7357, 0x7AD9},
+       {0x7358, 0x8B92},
+       {0x7359, 0x8B96},
+       {0x735A, 0x5009},
+       {0x735B, 0x5021},
+       {0x735C, 0x5275},
+       {0x735D, 0x5531},
+       {0x735E, 0x5A3C},
+       {0x735F, 0x5EE0},
+       {0x7360, 0x5F70},
+       {0x7361, 0x6134},
+       {0x7362, 0x655E},
+       {0x7363, 0x660C},
+       {0x7364, 0x6636},
+       {0x7365, 0x66A2},
+       {0x7366, 0x69CD},
+       {0x7367, 0x6EC4},
+       {0x7368, 0x6F32},
+       {0x7369, 0x7316},
+       {0x736A, 0x7621},
+       {0x736B, 0x7A93},
+       {0x736C, 0x8139},
+       {0x736D, 0x8259},
+       {0x736E, 0x83D6},
+       {0x736F, 0x84BC},
+       {0x7370, 0x50B5},
+       {0x7371, 0x57F0},
+       {0x7372, 0x5BC0},
+       {0x7373, 0x5BE8},
+       {0x7374, 0x5F69},
+       {0x7375, 0x63A1},
+       {0x7376, 0x7826},
+       {0x7377, 0x7DB5},
+       {0x7378, 0x83DC},
+       {0x7379, 0x8521},
+       {0x737A, 0x91C7},
+       {0x737B, 0x91F5},
+       {0x737C, 0x518A},
+       {0x737D, 0x67F5},
+       {0x737E, 0x7B56},
+       {0x7421, 0x8CAC},
+       {0x7422, 0x51C4},
+       {0x7423, 0x59BB},
+       {0x7424, 0x60BD},
+       {0x7425, 0x8655},
+       {0x7426, 0x501C},
+       {0x7427, 0xF9FF},
+       {0x7428, 0x5254},
+       {0x7429, 0x5C3A},
+       {0x742A, 0x617D},
+       {0x742B, 0x621A},
+       {0x742C, 0x62D3},
+       {0x742D, 0x64F2},
+       {0x742E, 0x65A5},
+       {0x742F, 0x6ECC},
+       {0x7430, 0x7620},
+       {0x7431, 0x810A},
+       {0x7432, 0x8E60},
+       {0x7433, 0x965F},
+       {0x7434, 0x96BB},
+       {0x7435, 0x4EDF},
+       {0x7436, 0x5343},
+       {0x7437, 0x5598},
+       {0x7438, 0x5929},
+       {0x7439, 0x5DDD},
+       {0x743A, 0x64C5},
+       {0x743B, 0x6CC9},
+       {0x743C, 0x6DFA},
+       {0x743D, 0x7394},
+       {0x743E, 0x7A7F},
+       {0x743F, 0x821B},
+       {0x7440, 0x85A6},
+       {0x7441, 0x8CE4},
+       {0x7442, 0x8E10},
+       {0x7443, 0x9077},
+       {0x7444, 0x91E7},
+       {0x7445, 0x95E1},
+       {0x7446, 0x9621},
+       {0x7447, 0x97C6},
+       {0x7448, 0x51F8},
+       {0x7449, 0x54F2},
+       {0x744A, 0x5586},
+       {0x744B, 0x5FB9},
+       {0x744C, 0x64A4},
+       {0x744D, 0x6F88},
+       {0x744E, 0x7DB4},
+       {0x744F, 0x8F1F},
+       {0x7450, 0x8F4D},
+       {0x7451, 0x9435},
+       {0x7452, 0x50C9},
+       {0x7453, 0x5C16},
+       {0x7454, 0x6CBE},
+       {0x7455, 0x6DFB},
+       {0x7456, 0x751B},
+       {0x7457, 0x77BB},
+       {0x7458, 0x7C3D},
+       {0x7459, 0x7C64},
+       {0x745A, 0x8A79},
+       {0x745B, 0x8AC2},
+       {0x745C, 0x581E},
+       {0x745D, 0x59BE},
+       {0x745E, 0x5E16},
+       {0x745F, 0x6377},
+       {0x7460, 0x7252},
+       {0x7461, 0x758A},
+       {0x7462, 0x776B},
+       {0x7463, 0x8ADC},
+       {0x7464, 0x8CBC},
+       {0x7465, 0x8F12},
+       {0x7466, 0x5EF3},
+       {0x7467, 0x6674},
+       {0x7468, 0x6DF8},
+       {0x7469, 0x807D},
+       {0x746A, 0x83C1},
+       {0x746B, 0x8ACB},
+       {0x746C, 0x9751},
+       {0x746D, 0x9BD6},
+       {0x746E, 0xFA00},
+       {0x746F, 0x5243},
+       {0x7470, 0x66FF},
+       {0x7471, 0x6D95},
+       {0x7472, 0x6EEF},
+       {0x7473, 0x7DE0},
+       {0x7474, 0x8AE6},
+       {0x7475, 0x902E},
+       {0x7476, 0x905E},
+       {0x7477, 0x9AD4},
+       {0x7478, 0x521D},
+       {0x7479, 0x527F},
+       {0x747A, 0x54E8},
+       {0x747B, 0x6194},
+       {0x747C, 0x6284},
+       {0x747D, 0x62DB},
+       {0x747E, 0x68A2},
+       {0x7521, 0x6912},
+       {0x7522, 0x695A},
+       {0x7523, 0x6A35},
+       {0x7524, 0x7092},
+       {0x7525, 0x7126},
+       {0x7526, 0x785D},
+       {0x7527, 0x7901},
+       {0x7528, 0x790E},
+       {0x7529, 0x79D2},
+       {0x752A, 0x7A0D},
+       {0x752B, 0x8096},
+       {0x752C, 0x8278},
+       {0x752D, 0x82D5},
+       {0x752E, 0x8349},
+       {0x752F, 0x8549},
+       {0x7530, 0x8C82},
+       {0x7531, 0x8D85},
+       {0x7532, 0x9162},
+       {0x7533, 0x918B},
+       {0x7534, 0x91AE},
+       {0x7535, 0x4FC3},
+       {0x7536, 0x56D1},
+       {0x7537, 0x71ED},
+       {0x7538, 0x77D7},
+       {0x7539, 0x8700},
+       {0x753A, 0x89F8},
+       {0x753B, 0x5BF8},
+       {0x753C, 0x5FD6},
+       {0x753D, 0x6751},
+       {0x753E, 0x90A8},
+       {0x753F, 0x53E2},
+       {0x7540, 0x585A},
+       {0x7541, 0x5BF5},
+       {0x7542, 0x60A4},
+       {0x7543, 0x6181},
+       {0x7544, 0x6460},
+       {0x7545, 0x7E3D},
+       {0x7546, 0x8070},
+       {0x7547, 0x8525},
+       {0x7548, 0x9283},
+       {0x7549, 0x64AE},
+       {0x754A, 0x50AC},
+       {0x754B, 0x5D14},
+       {0x754C, 0x6700},
+       {0x754D, 0x589C},
+       {0x754E, 0x62BD},
+       {0x754F, 0x63A8},
+       {0x7550, 0x690E},
+       {0x7551, 0x6978},
+       {0x7552, 0x6A1E},
+       {0x7553, 0x6E6B},
+       {0x7554, 0x76BA},
+       {0x7555, 0x79CB},
+       {0x7556, 0x82BB},
+       {0x7557, 0x8429},
+       {0x7558, 0x8ACF},
+       {0x7559, 0x8DA8},
+       {0x755A, 0x8FFD},
+       {0x755B, 0x9112},
+       {0x755C, 0x914B},
+       {0x755D, 0x919C},
+       {0x755E, 0x9310},
+       {0x755F, 0x9318},
+       {0x7560, 0x939A},
+       {0x7561, 0x96DB},
+       {0x7562, 0x9A36},
+       {0x7563, 0x9C0D},
+       {0x7564, 0x4E11},
+       {0x7565, 0x755C},
+       {0x7566, 0x795D},
+       {0x7567, 0x7AFA},
+       {0x7568, 0x7B51},
+       {0x7569, 0x7BC9},
+       {0x756A, 0x7E2E},
+       {0x756B, 0x84C4},
+       {0x756C, 0x8E59},
+       {0x756D, 0x8E74},
+       {0x756E, 0x8EF8},
+       {0x756F, 0x9010},
+       {0x7570, 0x6625},
+       {0x7571, 0x693F},
+       {0x7572, 0x7443},
+       {0x7573, 0x51FA},
+       {0x7574, 0x672E},
+       {0x7575, 0x9EDC},
+       {0x7576, 0x5145},
+       {0x7577, 0x5FE0},
+       {0x7578, 0x6C96},
+       {0x7579, 0x87F2},
+       {0x757A, 0x885D},
+       {0x757B, 0x8877},
+       {0x757C, 0x60B4},
+       {0x757D, 0x81B5},
+       {0x757E, 0x8403},
+       {0x7621, 0x8D05},
+       {0x7622, 0x53D6},
+       {0x7623, 0x5439},
+       {0x7624, 0x5634},
+       {0x7625, 0x5A36},
+       {0x7626, 0x5C31},
+       {0x7627, 0x708A},
+       {0x7628, 0x7FE0},
+       {0x7629, 0x805A},
+       {0x762A, 0x8106},
+       {0x762B, 0x81ED},
+       {0x762C, 0x8DA3},
+       {0x762D, 0x9189},
+       {0x762E, 0x9A5F},
+       {0x762F, 0x9DF2},
+       {0x7630, 0x5074},
+       {0x7631, 0x4EC4},
+       {0x7632, 0x53A0},
+       {0x7633, 0x60FB},
+       {0x7634, 0x6E2C},
+       {0x7635, 0x5C64},
+       {0x7636, 0x4F88},
+       {0x7637, 0x5024},
+       {0x7638, 0x55E4},
+       {0x7639, 0x5CD9},
+       {0x763A, 0x5E5F},
+       {0x763B, 0x6065},
+       {0x763C, 0x6894},
+       {0x763D, 0x6CBB},
+       {0x763E, 0x6DC4},
+       {0x763F, 0x71BE},
+       {0x7640, 0x75D4},
+       {0x7641, 0x75F4},
+       {0x7642, 0x7661},
+       {0x7643, 0x7A1A},
+       {0x7644, 0x7A49},
+       {0x7645, 0x7DC7},
+       {0x7646, 0x7DFB},
+       {0x7647, 0x7F6E},
+       {0x7648, 0x81F4},
+       {0x7649, 0x86A9},
+       {0x764A, 0x8F1C},
+       {0x764B, 0x96C9},
+       {0x764C, 0x99B3},
+       {0x764D, 0x9F52},
+       {0x764E, 0x5247},
+       {0x764F, 0x52C5},
+       {0x7650, 0x98ED},
+       {0x7651, 0x89AA},
+       {0x7652, 0x4E03},
+       {0x7653, 0x67D2},
+       {0x7654, 0x6F06},
+       {0x7655, 0x4FB5},
+       {0x7656, 0x5BE2},
+       {0x7657, 0x6795},
+       {0x7658, 0x6C88},
+       {0x7659, 0x6D78},
+       {0x765A, 0x741B},
+       {0x765B, 0x7827},
+       {0x765C, 0x91DD},
+       {0x765D, 0x937C},
+       {0x765E, 0x87C4},
+       {0x765F, 0x79E4},
+       {0x7660, 0x7A31},
+       {0x7661, 0x5FEB},
+       {0x7662, 0x4ED6},
+       {0x7663, 0x54A4},
+       {0x7664, 0x553E},
+       {0x7665, 0x58AE},
+       {0x7666, 0x59A5},
+       {0x7667, 0x60F0},
+       {0x7668, 0x6253},
+       {0x7669, 0x62D6},
+       {0x766A, 0x6736},
+       {0x766B, 0x6955},
+       {0x766C, 0x8235},
+       {0x766D, 0x9640},
+       {0x766E, 0x99B1},
+       {0x766F, 0x99DD},
+       {0x7670, 0x502C},
+       {0x7671, 0x5353},
+       {0x7672, 0x5544},
+       {0x7673, 0x577C},
+       {0x7674, 0xFA01},
+       {0x7675, 0x6258},
+       {0x7676, 0xFA02},
+       {0x7677, 0x64E2},
+       {0x7678, 0x666B},
+       {0x7679, 0x67DD},
+       {0x767A, 0x6FC1},
+       {0x767B, 0x6FEF},
+       {0x767C, 0x7422},
+       {0x767D, 0x7438},
+       {0x767E, 0x8A17},
+       {0x7721, 0x9438},
+       {0x7722, 0x5451},
+       {0x7723, 0x5606},
+       {0x7724, 0x5766},
+       {0x7725, 0x5F48},
+       {0x7726, 0x619A},
+       {0x7727, 0x6B4E},
+       {0x7728, 0x7058},
+       {0x7729, 0x70AD},
+       {0x772A, 0x7DBB},
+       {0x772B, 0x8A95},
+       {0x772C, 0x596A},
+       {0x772D, 0x812B},
+       {0x772E, 0x63A2},
+       {0x772F, 0x7708},
+       {0x7730, 0x803D},
+       {0x7731, 0x8CAA},
+       {0x7732, 0x5854},
+       {0x7733, 0x642D},
+       {0x7734, 0x69BB},
+       {0x7735, 0x5B95},
+       {0x7736, 0x5E11},
+       {0x7737, 0x6E6F},
+       {0x7738, 0xFA03},
+       {0x7739, 0x8569},
+       {0x773A, 0x514C},
+       {0x773B, 0x53F0},
+       {0x773C, 0x592A},
+       {0x773D, 0x6020},
+       {0x773E, 0x614B},
+       {0x773F, 0x6B86},
+       {0x7740, 0x6C70},
+       {0x7741, 0x6CF0},
+       {0x7742, 0x7B1E},
+       {0x7743, 0x80CE},
+       {0x7744, 0x82D4},
+       {0x7745, 0x8DC6},
+       {0x7746, 0x90B0},
+       {0x7747, 0x98B1},
+       {0x7748, 0xFA04},
+       {0x7749, 0x64C7},
+       {0x774A, 0x6FA4},
+       {0x774B, 0x6491},
+       {0x774C, 0x6504},
+       {0x774D, 0x514E},
+       {0x774E, 0x5410},
+       {0x774F, 0x571F},
+       {0x7750, 0x8A0E},
+       {0x7751, 0x615F},
+       {0x7752, 0x6876},
+       {0x7753, 0xFA05},
+       {0x7754, 0x75DB},
+       {0x7755, 0x7B52},
+       {0x7756, 0x7D71},
+       {0x7757, 0x901A},
+       {0x7758, 0x5806},
+       {0x7759, 0x69CC},
+       {0x775A, 0x817F},
+       {0x775B, 0x892A},
+       {0x775C, 0x9000},
+       {0x775D, 0x9839},
+       {0x775E, 0x5078},
+       {0x775F, 0x5957},
+       {0x7760, 0x59AC},
+       {0x7761, 0x6295},
+       {0x7762, 0x900F},
+       {0x7763, 0x9B2A},
+       {0x7764, 0x615D},
+       {0x7765, 0x7279},
+       {0x7766, 0x95D6},
+       {0x7767, 0x5761},
+       {0x7768, 0x5A46},
+       {0x7769, 0x5DF4},
+       {0x776A, 0x628A},
+       {0x776B, 0x64AD},
+       {0x776C, 0x64FA},
+       {0x776D, 0x6777},
+       {0x776E, 0x6CE2},
+       {0x776F, 0x6D3E},
+       {0x7770, 0x722C},
+       {0x7771, 0x7436},
+       {0x7772, 0x7834},
+       {0x7773, 0x7F77},
+       {0x7774, 0x82AD},
+       {0x7775, 0x8DDB},
+       {0x7776, 0x9817},
+       {0x7777, 0x5224},
+       {0x7778, 0x5742},
+       {0x7779, 0x677F},
+       {0x777A, 0x7248},
+       {0x777B, 0x74E3},
+       {0x777C, 0x8CA9},
+       {0x777D, 0x8FA6},
+       {0x777E, 0x9211},
+       {0x7821, 0x962A},
+       {0x7822, 0x516B},
+       {0x7823, 0x53ED},
+       {0x7824, 0x634C},
+       {0x7825, 0x4F69},
+       {0x7826, 0x5504},
+       {0x7827, 0x6096},
+       {0x7828, 0x6557},
+       {0x7829, 0x6C9B},
+       {0x782A, 0x6D7F},
+       {0x782B, 0x724C},
+       {0x782C, 0x72FD},
+       {0x782D, 0x7A17},
+       {0x782E, 0x8987},
+       {0x782F, 0x8C9D},
+       {0x7830, 0x5F6D},
+       {0x7831, 0x6F8E},
+       {0x7832, 0x70F9},
+       {0x7833, 0x81A8},
+       {0x7834, 0x610E},
+       {0x7835, 0x4FBF},
+       {0x7836, 0x504F},
+       {0x7837, 0x6241},
+       {0x7838, 0x7247},
+       {0x7839, 0x7BC7},
+       {0x783A, 0x7DE8},
+       {0x783B, 0x7FE9},
+       {0x783C, 0x904D},
+       {0x783D, 0x97AD},
+       {0x783E, 0x9A19},
+       {0x783F, 0x8CB6},
+       {0x7840, 0x576A},
+       {0x7841, 0x5E73},
+       {0x7842, 0x67B0},
+       {0x7843, 0x840D},
+       {0x7844, 0x8A55},
+       {0x7845, 0x5420},
+       {0x7846, 0x5B16},
+       {0x7847, 0x5E63},
+       {0x7848, 0x5EE2},
+       {0x7849, 0x5F0A},
+       {0x784A, 0x6583},
+       {0x784B, 0x80BA},
+       {0x784C, 0x853D},
+       {0x784D, 0x9589},
+       {0x784E, 0x965B},
+       {0x784F, 0x4F48},
+       {0x7850, 0x5305},
+       {0x7851, 0x530D},
+       {0x7852, 0x530F},
+       {0x7853, 0x5486},
+       {0x7854, 0x54FA},
+       {0x7855, 0x5703},
+       {0x7856, 0x5E03},
+       {0x7857, 0x6016},
+       {0x7858, 0x629B},
+       {0x7859, 0x62B1},
+       {0x785A, 0x6355},
+       {0x785B, 0xFA06},
+       {0x785C, 0x6CE1},
+       {0x785D, 0x6D66},
+       {0x785E, 0x75B1},
+       {0x785F, 0x7832},
+       {0x7860, 0x80DE},
+       {0x7861, 0x812F},
+       {0x7862, 0x82DE},
+       {0x7863, 0x8461},
+       {0x7864, 0x84B2},
+       {0x7865, 0x888D},
+       {0x7866, 0x8912},
+       {0x7867, 0x900B},
+       {0x7868, 0x92EA},
+       {0x7869, 0x98FD},
+       {0x786A, 0x9B91},
+       {0x786B, 0x5E45},
+       {0x786C, 0x66B4},
+       {0x786D, 0x66DD},
+       {0x786E, 0x7011},
+       {0x786F, 0x7206},
+       {0x7870, 0xFA07},
+       {0x7871, 0x4FF5},
+       {0x7872, 0x527D},
+       {0x7873, 0x5F6A},
+       {0x7874, 0x6153},
+       {0x7875, 0x6753},
+       {0x7876, 0x6A19},
+       {0x7877, 0x6F02},
+       {0x7878, 0x74E2},
+       {0x7879, 0x7968},
+       {0x787A, 0x8868},
+       {0x787B, 0x8C79},
+       {0x787C, 0x98C7},
+       {0x787D, 0x98C4},
+       {0x787E, 0x9A43},
+       {0x7921, 0x54C1},
+       {0x7922, 0x7A1F},
+       {0x7923, 0x6953},
+       {0x7924, 0x8AF7},
+       {0x7925, 0x8C4A},
+       {0x7926, 0x98A8},
+       {0x7927, 0x99AE},
+       {0x7928, 0x5F7C},
+       {0x7929, 0x62AB},
+       {0x792A, 0x75B2},
+       {0x792B, 0x76AE},
+       {0x792C, 0x88AB},
+       {0x792D, 0x907F},
+       {0x792E, 0x9642},
+       {0x792F, 0x5339},
+       {0x7930, 0x5F3C},
+       {0x7931, 0x5FC5},
+       {0x7932, 0x6CCC},
+       {0x7933, 0x73CC},
+       {0x7934, 0x7562},
+       {0x7935, 0x758B},
+       {0x7936, 0x7B46},
+       {0x7937, 0x82FE},
+       {0x7938, 0x999D},
+       {0x7939, 0x4E4F},
+       {0x793A, 0x903C},
+       {0x793B, 0x4E0B},
+       {0x793C, 0x4F55},
+       {0x793D, 0x53A6},
+       {0x793E, 0x590F},
+       {0x793F, 0x5EC8},
+       {0x7940, 0x6630},
+       {0x7941, 0x6CB3},
+       {0x7942, 0x7455},
+       {0x7943, 0x8377},
+       {0x7944, 0x8766},
+       {0x7945, 0x8CC0},
+       {0x7946, 0x9050},
+       {0x7947, 0x971E},
+       {0x7948, 0x9C15},
+       {0x7949, 0x58D1},
+       {0x794A, 0x5B78},
+       {0x794B, 0x8650},
+       {0x794C, 0x8B14},
+       {0x794D, 0x9DB4},
+       {0x794E, 0x5BD2},
+       {0x794F, 0x6068},
+       {0x7950, 0x608D},
+       {0x7951, 0x65F1},
+       {0x7952, 0x6C57},
+       {0x7953, 0x6F22},
+       {0x7954, 0x6FA3},
+       {0x7955, 0x701A},
+       {0x7956, 0x7F55},
+       {0x7957, 0x7FF0},
+       {0x7958, 0x9591},
+       {0x7959, 0x9592},
+       {0x795A, 0x9650},
+       {0x795B, 0x97D3},
+       {0x795C, 0x5272},
+       {0x795D, 0x8F44},
+       {0x795E, 0x51FD},
+       {0x795F, 0x542B},
+       {0x7960, 0x54B8},
+       {0x7961, 0x5563},
+       {0x7962, 0x558A},
+       {0x7963, 0x6ABB},
+       {0x7964, 0x6DB5},
+       {0x7965, 0x7DD8},
+       {0x7966, 0x8266},
+       {0x7967, 0x929C},
+       {0x7968, 0x9677},
+       {0x7969, 0x9E79},
+       {0x796A, 0x5408},
+       {0x796B, 0x54C8},
+       {0x796C, 0x76D2},
+       {0x796D, 0x86E4},
+       {0x796E, 0x95A4},
+       {0x796F, 0x95D4},
+       {0x7970, 0x965C},
+       {0x7971, 0x4EA2},
+       {0x7972, 0x4F09},
+       {0x7973, 0x59EE},
+       {0x7974, 0x5AE6},
+       {0x7975, 0x5DF7},
+       {0x7976, 0x6052},
+       {0x7977, 0x6297},
+       {0x7978, 0x676D},
+       {0x7979, 0x6841},
+       {0x797A, 0x6C86},
+       {0x797B, 0x6E2F},
+       {0x797C, 0x7F38},
+       {0x797D, 0x809B},
+       {0x797E, 0x822A},
+       {0x7A21, 0xFA08},
+       {0x7A22, 0xFA09},
+       {0x7A23, 0x9805},
+       {0x7A24, 0x4EA5},
+       {0x7A25, 0x5055},
+       {0x7A26, 0x54B3},
+       {0x7A27, 0x5793},
+       {0x7A28, 0x595A},
+       {0x7A29, 0x5B69},
+       {0x7A2A, 0x5BB3},
+       {0x7A2B, 0x61C8},
+       {0x7A2C, 0x6977},
+       {0x7A2D, 0x6D77},
+       {0x7A2E, 0x7023},
+       {0x7A2F, 0x87F9},
+       {0x7A30, 0x89E3},
+       {0x7A31, 0x8A72},
+       {0x7A32, 0x8AE7},
+       {0x7A33, 0x9082},
+       {0x7A34, 0x99ED},
+       {0x7A35, 0x9AB8},
+       {0x7A36, 0x52BE},
+       {0x7A37, 0x6838},
+       {0x7A38, 0x5016},
+       {0x7A39, 0x5E78},
+       {0x7A3A, 0x674F},
+       {0x7A3B, 0x8347},
+       {0x7A3C, 0x884C},
+       {0x7A3D, 0x4EAB},
+       {0x7A3E, 0x5411},
+       {0x7A3F, 0x56AE},
+       {0x7A40, 0x73E6},
+       {0x7A41, 0x9115},
+       {0x7A42, 0x97FF},
+       {0x7A43, 0x9909},
+       {0x7A44, 0x9957},
+       {0x7A45, 0x9999},
+       {0x7A46, 0x5653},
+       {0x7A47, 0x589F},
+       {0x7A48, 0x865B},
+       {0x7A49, 0x8A31},
+       {0x7A4A, 0x61B2},
+       {0x7A4B, 0x6AF6},
+       {0x7A4C, 0x737B},
+       {0x7A4D, 0x8ED2},
+       {0x7A4E, 0x6B47},
+       {0x7A4F, 0x96AA},
+       {0x7A50, 0x9A57},
+       {0x7A51, 0x5955},
+       {0x7A52, 0x7200},
+       {0x7A53, 0x8D6B},
+       {0x7A54, 0x9769},
+       {0x7A55, 0x4FD4},
+       {0x7A56, 0x5CF4},
+       {0x7A57, 0x5F26},
+       {0x7A58, 0x61F8},
+       {0x7A59, 0x665B},
+       {0x7A5A, 0x6CEB},
+       {0x7A5B, 0x70AB},
+       {0x7A5C, 0x7384},
+       {0x7A5D, 0x73B9},
+       {0x7A5E, 0x73FE},
+       {0x7A5F, 0x7729},
+       {0x7A60, 0x774D},
+       {0x7A61, 0x7D43},
+       {0x7A62, 0x7D62},
+       {0x7A63, 0x7E23},
+       {0x7A64, 0x8237},
+       {0x7A65, 0x8852},
+       {0x7A66, 0xFA0A},
+       {0x7A67, 0x8CE2},
+       {0x7A68, 0x9249},
+       {0x7A69, 0x986F},
+       {0x7A6A, 0x5B51},
+       {0x7A6B, 0x7A74},
+       {0x7A6C, 0x8840},
+       {0x7A6D, 0x9801},
+       {0x7A6E, 0x5ACC},
+       {0x7A6F, 0x4FE0},
+       {0x7A70, 0x5354},
+       {0x7A71, 0x593E},
+       {0x7A72, 0x5CFD},
+       {0x7A73, 0x633E},
+       {0x7A74, 0x6D79},
+       {0x7A75, 0x72F9},
+       {0x7A76, 0x8105},
+       {0x7A77, 0x8107},
+       {0x7A78, 0x83A2},
+       {0x7A79, 0x92CF},
+       {0x7A7A, 0x9830},
+       {0x7A7B, 0x4EA8},
+       {0x7A7C, 0x5144},
+       {0x7A7D, 0x5211},
+       {0x7A7E, 0x578B},
+       {0x7B21, 0x5F62},
+       {0x7B22, 0x6CC2},
+       {0x7B23, 0x6ECE},
+       {0x7B24, 0x7005},
+       {0x7B25, 0x7050},
+       {0x7B26, 0x70AF},
+       {0x7B27, 0x7192},
+       {0x7B28, 0x73E9},
+       {0x7B29, 0x7469},
+       {0x7B2A, 0x834A},
+       {0x7B2B, 0x87A2},
+       {0x7B2C, 0x8861},
+       {0x7B2D, 0x9008},
+       {0x7B2E, 0x90A2},
+       {0x7B2F, 0x93A3},
+       {0x7B30, 0x99A8},
+       {0x7B31, 0x516E},
+       {0x7B32, 0x5F57},
+       {0x7B33, 0x60E0},
+       {0x7B34, 0x6167},
+       {0x7B35, 0x66B3},
+       {0x7B36, 0x8559},
+       {0x7B37, 0x8E4A},
+       {0x7B38, 0x91AF},
+       {0x7B39, 0x978B},
+       {0x7B3A, 0x4E4E},
+       {0x7B3B, 0x4E92},
+       {0x7B3C, 0x547C},
+       {0x7B3D, 0x58D5},
+       {0x7B3E, 0x58FA},
+       {0x7B3F, 0x597D},
+       {0x7B40, 0x5CB5},
+       {0x7B41, 0x5F27},
+       {0x7B42, 0x6236},
+       {0x7B43, 0x6248},
+       {0x7B44, 0x660A},
+       {0x7B45, 0x6667},
+       {0x7B46, 0x6BEB},
+       {0x7B47, 0x6D69},
+       {0x7B48, 0x6DCF},
+       {0x7B49, 0x6E56},
+       {0x7B4A, 0x6EF8},
+       {0x7B4B, 0x6F94},
+       {0x7B4C, 0x6FE0},
+       {0x7B4D, 0x6FE9},
+       {0x7B4E, 0x705D},
+       {0x7B4F, 0x72D0},
+       {0x7B50, 0x7425},
+       {0x7B51, 0x745A},
+       {0x7B52, 0x74E0},
+       {0x7B53, 0x7693},
+       {0x7B54, 0x795C},
+       {0x7B55, 0x7CCA},
+       {0x7B56, 0x7E1E},
+       {0x7B57, 0x80E1},
+       {0x7B58, 0x82A6},
+       {0x7B59, 0x846B},
+       {0x7B5A, 0x84BF},
+       {0x7B5B, 0x864E},
+       {0x7B5C, 0x865F},
+       {0x7B5D, 0x8774},
+       {0x7B5E, 0x8B77},
+       {0x7B5F, 0x8C6A},
+       {0x7B60, 0x93AC},
+       {0x7B61, 0x9800},
+       {0x7B62, 0x9865},
+       {0x7B63, 0x60D1},
+       {0x7B64, 0x6216},
+       {0x7B65, 0x9177},
+       {0x7B66, 0x5A5A},
+       {0x7B67, 0x660F},
+       {0x7B68, 0x6DF7},
+       {0x7B69, 0x6E3E},
+       {0x7B6A, 0x743F},
+       {0x7B6B, 0x9B42},
+       {0x7B6C, 0x5FFD},
+       {0x7B6D, 0x60DA},
+       {0x7B6E, 0x7B0F},
+       {0x7B6F, 0x54C4},
+       {0x7B70, 0x5F18},
+       {0x7B71, 0x6C5E},
+       {0x7B72, 0x6CD3},
+       {0x7B73, 0x6D2A},
+       {0x7B74, 0x70D8},
+       {0x7B75, 0x7D05},
+       {0x7B76, 0x8679},
+       {0x7B77, 0x8A0C},
+       {0x7B78, 0x9D3B},
+       {0x7B79, 0x5316},
+       {0x7B7A, 0x548C},
+       {0x7B7B, 0x5B05},
+       {0x7B7C, 0x6A3A},
+       {0x7B7D, 0x706B},
+       {0x7B7E, 0x7575},
+       {0x7C21, 0x798D},
+       {0x7C22, 0x79BE},
+       {0x7C23, 0x82B1},
+       {0x7C24, 0x83EF},
+       {0x7C25, 0x8A71},
+       {0x7C26, 0x8B41},
+       {0x7C27, 0x8CA8},
+       {0x7C28, 0x9774},
+       {0x7C29, 0xFA0B},
+       {0x7C2A, 0x64F4},
+       {0x7C2B, 0x652B},
+       {0x7C2C, 0x78BA},
+       {0x7C2D, 0x78BB},
+       {0x7C2E, 0x7A6B},
+       {0x7C2F, 0x4E38},
+       {0x7C30, 0x559A},
+       {0x7C31, 0x5950},
+       {0x7C32, 0x5BA6},
+       {0x7C33, 0x5E7B},
+       {0x7C34, 0x60A3},
+       {0x7C35, 0x63DB},
+       {0x7C36, 0x6B61},
+       {0x7C37, 0x6665},
+       {0x7C38, 0x6853},
+       {0x7C39, 0x6E19},
+       {0x7C3A, 0x7165},
+       {0x7C3B, 0x74B0},
+       {0x7C3C, 0x7D08},
+       {0x7C3D, 0x9084},
+       {0x7C3E, 0x9A69},
+       {0x7C3F, 0x9C25},
+       {0x7C40, 0x6D3B},
+       {0x7C41, 0x6ED1},
+       {0x7C42, 0x733E},
+       {0x7C43, 0x8C41},
+       {0x7C44, 0x95CA},
+       {0x7C45, 0x51F0},
+       {0x7C46, 0x5E4C},
+       {0x7C47, 0x5FA8},
+       {0x7C48, 0x604D},
+       {0x7C49, 0x60F6},
+       {0x7C4A, 0x6130},
+       {0x7C4B, 0x614C},
+       {0x7C4C, 0x6643},
+       {0x7C4D, 0x6644},
+       {0x7C4E, 0x69A5},
+       {0x7C4F, 0x6CC1},
+       {0x7C50, 0x6E5F},
+       {0x7C51, 0x6EC9},
+       {0x7C52, 0x6F62},
+       {0x7C53, 0x714C},
+       {0x7C54, 0x749C},
+       {0x7C55, 0x7687},
+       {0x7C56, 0x7BC1},
+       {0x7C57, 0x7C27},
+       {0x7C58, 0x8352},
+       {0x7C59, 0x8757},
+       {0x7C5A, 0x9051},
+       {0x7C5B, 0x968D},
+       {0x7C5C, 0x9EC3},
+       {0x7C5D, 0x532F},
+       {0x7C5E, 0x56DE},
+       {0x7C5F, 0x5EFB},
+       {0x7C60, 0x5F8A},
+       {0x7C61, 0x6062},
+       {0x7C62, 0x6094},
+       {0x7C63, 0x61F7},
+       {0x7C64, 0x6666},
+       {0x7C65, 0x6703},
+       {0x7C66, 0x6A9C},
+       {0x7C67, 0x6DEE},
+       {0x7C68, 0x6FAE},
+       {0x7C69, 0x7070},
+       {0x7C6A, 0x736A},
+       {0x7C6B, 0x7E6A},
+       {0x7C6C, 0x81BE},
+       {0x7C6D, 0x8334},
+       {0x7C6E, 0x86D4},
+       {0x7C6F, 0x8AA8},
+       {0x7C70, 0x8CC4},
+       {0x7C71, 0x5283},
+       {0x7C72, 0x7372},
+       {0x7C73, 0x5B96},
+       {0x7C74, 0x6A6B},
+       {0x7C75, 0x9404},
+       {0x7C76, 0x54EE},
+       {0x7C77, 0x5686},
+       {0x7C78, 0x5B5D},
+       {0x7C79, 0x6548},
+       {0x7C7A, 0x6585},
+       {0x7C7B, 0x66C9},
+       {0x7C7C, 0x689F},
+       {0x7C7D, 0x6D8D},
+       {0x7C7E, 0x6DC6},
+       {0x7D21, 0x723B},
+       {0x7D22, 0x80B4},
+       {0x7D23, 0x9175},
+       {0x7D24, 0x9A4D},
+       {0x7D25, 0x4FAF},
+       {0x7D26, 0x5019},
+       {0x7D27, 0x539A},
+       {0x7D28, 0x540E},
+       {0x7D29, 0x543C},
+       {0x7D2A, 0x5589},
+       {0x7D2B, 0x55C5},
+       {0x7D2C, 0x5E3F},
+       {0x7D2D, 0x5F8C},
+       {0x7D2E, 0x673D},
+       {0x7D2F, 0x7166},
+       {0x7D30, 0x73DD},
+       {0x7D31, 0x9005},
+       {0x7D32, 0x52DB},
+       {0x7D33, 0x52F3},
+       {0x7D34, 0x5864},
+       {0x7D35, 0x58CE},
+       {0x7D36, 0x7104},
+       {0x7D37, 0x718F},
+       {0x7D38, 0x71FB},
+       {0x7D39, 0x85B0},
+       {0x7D3A, 0x8A13},
+       {0x7D3B, 0x6688},
+       {0x7D3C, 0x85A8},
+       {0x7D3D, 0x55A7},
+       {0x7D3E, 0x6684},
+       {0x7D3F, 0x714A},
+       {0x7D40, 0x8431},
+       {0x7D41, 0x5349},
+       {0x7D42, 0x5599},
+       {0x7D43, 0x6BC1},
+       {0x7D44, 0x5F59},
+       {0x7D45, 0x5FBD},
+       {0x7D46, 0x63EE},
+       {0x7D47, 0x6689},
+       {0x7D48, 0x7147},
+       {0x7D49, 0x8AF1},
+       {0x7D4A, 0x8F1D},
+       {0x7D4B, 0x9EBE},
+       {0x7D4C, 0x4F11},
+       {0x7D4D, 0x643A},
+       {0x7D4E, 0x70CB},
+       {0x7D4F, 0x7566},
+       {0x7D50, 0x8667},
+       {0x7D51, 0x6064},
+       {0x7D52, 0x8B4E},
+       {0x7D53, 0x9DF8},
+       {0x7D54, 0x5147},
+       {0x7D55, 0x51F6},
+       {0x7D56, 0x5308},
+       {0x7D57, 0x6D36},
+       {0x7D58, 0x80F8},
+       {0x7D59, 0x9ED1},
+       {0x7D5A, 0x6615},
+       {0x7D5B, 0x6B23},
+       {0x7D5C, 0x7098},
+       {0x7D5D, 0x75D5},
+       {0x7D5E, 0x5403},
+       {0x7D5F, 0x5C79},
+       {0x7D60, 0x7D07},
+       {0x7D61, 0x8A16},
+       {0x7D62, 0x6B20},
+       {0x7D63, 0x6B3D},
+       {0x7D64, 0x6B46},
+       {0x7D65, 0x5438},
+       {0x7D66, 0x6070},
+       {0x7D67, 0x6D3D},
+       {0x7D68, 0x7FD5},
+       {0x7D69, 0x8208},
+       {0x7D6A, 0x50D6},
+       {0x7D6B, 0x51DE},
+       {0x7D6C, 0x559C},
+       {0x7D6D, 0x566B},
+       {0x7D6E, 0x56CD},
+       {0x7D6F, 0x59EC},
+       {0x7D70, 0x5B09},
+       {0x7D71, 0x5E0C},
+       {0x7D72, 0x6199},
+       {0x7D73, 0x6198},
+       {0x7D74, 0x6231},
+       {0x7D75, 0x665E},
+       {0x7D76, 0x66E6},
+       {0x7D77, 0x7199},
+       {0x7D78, 0x71B9},
+       {0x7D79, 0x71BA},
+       {0x7D7A, 0x72A7},
+       {0x7D7B, 0x79A7},
+       {0x7D7C, 0x7A00},
+       {0x7D7D, 0x7FB2},
+       {0x7D7E, 0x8A70},
+       {0x2266, 0x20AC},
+       {0x2267, 0x00AE},
diff --git a/vte/src/vte-gtk-compat.h b/vte/src/vte-gtk-compat.h
new file mode 100644
index 0000000..3c897f3
--- /dev/null
+++ b/vte/src/vte-gtk-compat.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2010 Saleem Abdulrasool <compnerd compnerd org>
+ *
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Library General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_gtk_compat_h_included
+#define vte_gtk_compat_h_included
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#if GTK_CHECK_VERSION (2, 90, 5)
+
+#define GdkRegion cairo_region_t
+#define VteRegionRectangle cairo_rectangle_int_t
+#define gdk_region_new() cairo_region_create()
+#define gdk_region_rectangle(r) cairo_region_create_rectangle(r)
+#define gdk_region_copy(r) cairo_region_copy(r)
+#define gdk_region_destroy cairo_region_destroy
+#define gdk_region_union_with_rect(r, rect) cairo_region_union_rectangle(r, rect)
+#define gdk_region_union(r, s) cairo_region_union(r, s)
+#define gdk_region_get_clipbox(r, rect) cairo_region_get_extents(r, rect)
+#define gdk_region_get_rectangles(r, rects, n_rects)                   \
+       do {                                                            \
+               int i;                                                  \
+                                                                       \
+               *(n_rects) = cairo_region_num_rectangles(r);            \
+               *(rects) = g_new(cairo_rectangle_int_t, *(n_rects));    \
+               for (i = 0; i < *(n_rects); i++)                        \
+                       cairo_region_get_rectangle ((r), i, &(*(rects))[i]); \
+       } while (0)
+
+#else
+
+#define VteRegionRectangle GdkRectangle
+
+#endif
+
+#if !GTK_CHECK_VERSION (2, 90, 8)
+#define gdk_error_trap_pop_ignored gdk_error_trap_pop
+#endif
+
+#if !GTK_CHECK_VERSION (2, 22, 0)
+#define gtk_accessible_get_widget(accessible)           ((accessible)->widget)
+#endif
+
+#if !GTK_CHECK_VERSION (2, 20, 0)
+#define gtk_widget_get_mapped(widget)                   (GTK_WIDGET_MAPPED ((widget)))
+#define gtk_widget_get_realized(widget)                 (GTK_WIDGET_REALIZED ((widget)))
+#define gtk_widget_set_realized(widget, state)          ((state) ? GTK_WIDGET_SET_FLAGS ((widget), 
GTK_REALIZED) : GTK_WIDGET_UNSET_FLAGS ((widget), GTK_REALIZED))
+#endif
+
+#if !GTK_CHECK_VERSION (2, 18, 0)
+#define gtk_widget_has_focus(widget)                    (GTK_WIDGET_HAS_FOCUS ((widget)))
+#define gtk_widget_get_state(widget)                    ((widget)->state)
+#define gtk_widget_set_window(widget, wndw)             ((widget)->window = (wndw))
+#define gtk_widget_is_drawable(widget)                  (GTK_WIDGET_DRAWABLE ((widget)))
+#define gtk_widget_get_allocation(widget, alloc)        (*(alloc) = (widget)->allocation)
+#define gtk_widget_set_allocation(widget, alloc)        ((widget)->allocation = *(alloc))
+#define gtk_widget_get_double_buffered(widget)          (GTK_WIDGET_DOUBLE_BUFFERED ((widget)))
+#endif
+
+G_END_DECLS
+
+#endif
+
diff --git a/vte/src/vte-private.h b/vte/src/vte-private.h
new file mode 100644
index 0000000..86d4f8e
--- /dev/null
+++ b/vte/src/vte-private.h
@@ -0,0 +1,449 @@
+/*
+ * Copyright (C) 2001-2004 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vte_private_h_included
+#define vte_vte_private_h_included
+
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif
+#include <sys/time.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <math.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include <unistd.h>
+#include <glib/gi18n-lib.h>
+
+#include "vte.h"
+#include "buffer.h"
+#include "debug.h"
+#include "vteconv.h"
+#include "vtedraw.h"
+#include "reaper.h"
+#include "ring.h"
+#include "caps.h"
+
+G_BEGIN_DECLS
+
+#define VTE_TAB_WIDTH                  8
+#define VTE_LINE_WIDTH                 1
+#define VTE_ROWS                       24
+#define VTE_COLUMNS                    80
+#define VTE_LEGACY_COLOR_SET_SIZE      8
+#define VTE_COLOR_PLAIN_OFFSET         0
+#define VTE_COLOR_BRIGHT_OFFSET                8
+#define VTE_COLOR_DIM_OFFSET           16
+/* More color defines in ring.h */
+
+#define VTE_SCROLLBACK_INIT            100
+#define VTE_SATURATION_MAX             10000
+#define VTE_DEFAULT_CURSOR             GDK_XTERM
+#define VTE_MOUSING_CURSOR             GDK_LEFT_PTR
+#define VTE_TAB_MAX                    999
+#define VTE_ADJUSTMENT_PRIORITY                G_PRIORITY_DEFAULT_IDLE
+#define VTE_INPUT_RETRY_PRIORITY       G_PRIORITY_HIGH
+#define VTE_INPUT_PRIORITY             G_PRIORITY_DEFAULT_IDLE
+#define VTE_CHILD_INPUT_PRIORITY       G_PRIORITY_DEFAULT_IDLE
+#define VTE_CHILD_OUTPUT_PRIORITY      G_PRIORITY_HIGH
+#define VTE_FX_PRIORITY                        G_PRIORITY_DEFAULT_IDLE
+#define VTE_REGCOMP_FLAGS              REG_EXTENDED
+#define VTE_REGEXEC_FLAGS              0
+#define VTE_INPUT_CHUNK_SIZE           0x2000
+#define VTE_MAX_INPUT_READ             0x1000
+#define VTE_INVALID_BYTE               '?'
+#define VTE_DISPLAY_TIMEOUT            10
+#define VTE_UPDATE_TIMEOUT             15
+#define VTE_UPDATE_REPEAT_TIMEOUT      30
+#define VTE_MAX_PROCESS_TIME           100
+#define VTE_CELL_BBOX_SLACK            1
+
+#define VTE_UTF8_BPC                    (6) /* Maximum number of bytes used per UTF-8 character */
+
+#define I_(string) (g_intern_static_string(string))
+
+
+typedef enum {
+        VTE_REGEX_GREGEX,
+        VTE_REGEX_VTE,
+        VTE_REGEX_UNDECIDED
+} VteRegexMode;
+
+typedef enum {
+  VTE_REGEX_CURSOR_GDKCURSOR,
+  VTE_REGEX_CURSOR_GDKCURSORTYPE,
+  VTE_REGEX_CURSOR_NAME
+} VteRegexCursorMode;
+
+/* The order is important */
+typedef enum {
+       MOUSE_TRACKING_NONE,
+       MOUSE_TRACKING_SEND_XY_ON_CLICK,
+       MOUSE_TRACKING_SEND_XY_ON_BUTTON,
+       MOUSE_TRACKING_HILITE_TRACKING,
+       MOUSE_TRACKING_CELL_MOTION_TRACKING,
+       MOUSE_TRACKING_ALL_MOTION_TRACKING
+} MouseTrackingMode;
+
+/* A match regex, with a tag. */
+struct vte_match_regex {
+       gint tag;
+        VteRegexMode mode;
+        union { /* switched on |mode| */
+              struct {
+                    GRegex *regex;
+                    GRegexMatchFlags flags;
+              } gregex;
+              struct _vte_regex *reg;
+        } regex;
+        VteRegexCursorMode cursor_mode;
+        union {
+              GdkCursor *cursor;
+               char *cursor_name;
+               GdkCursorType cursor_type;
+        } cursor;
+};
+
+/* The terminal's keypad/cursor state.  A terminal can either be using the
+ * normal keypad, or the "application" keypad. */
+typedef enum _VteKeymode {
+       VTE_KEYMODE_NORMAL,
+       VTE_KEYMODE_APPLICATION
+} VteKeymode;
+
+typedef struct _VteScreen VteScreen;
+
+typedef struct _VteWordCharRange {
+       gunichar start, end;
+} VteWordCharRange;
+
+typedef struct _VteVisualPosition {
+       long row, col;
+} VteVisualPosition;
+
+/* Terminal private data. */
+struct _VteTerminalPrivate {
+       /* Emulation setup data. */
+       struct _vte_termcap *termcap;   /* termcap storage */
+       struct _vte_matcher *matcher;   /* control sequence matcher */
+       const char *termcap_path;       /* path to termcap file */
+       const char *emulation;          /* terminal type to emulate */
+       struct vte_terminal_flags {     /* boolean termcap flags */
+               gboolean am;
+               gboolean bw;
+               gboolean LP;
+               gboolean ul;
+               gboolean xn;
+       } flags;
+       int keypad_mode, cursor_mode;   /* these would be VteKeymodes, but we
+                                          need to guarantee its type */
+       gboolean sun_fkey_mode;
+       gboolean hp_fkey_mode;
+       gboolean legacy_fkey_mode;
+       gboolean vt220_fkey_mode;
+       int fkey;                       /* this would be a VteFKey, but we
+                                          need to guarantee its type */
+       GHashTable *dec_saved;
+       int default_column_count, default_row_count;    /* default sizes */
+
+       /* PTY handling data. */
+       VtePty *pty;
+       GIOChannel *pty_channel;        /* master channel */
+       guint pty_input_source;
+       guint pty_output_source;
+       gboolean pty_input_active;
+       GPid pty_pid;                   /* pid of child using pty slave */
+       VteReaper *pty_reaper;
+        int child_exit_status;
+
+       /* Input data queues. */
+       const char *encoding;           /* the pty's encoding */
+       struct _vte_iso2022_state *iso2022;
+       struct _vte_incoming_chunk{
+               struct _vte_incoming_chunk *next;
+               guint len;
+               guchar data[VTE_INPUT_CHUNK_SIZE
+                       - 2 * sizeof(void *)];
+       } *incoming;                    /* pending bytestream */
+       GArray *pending;                /* pending characters */
+       GSList *update_regions;
+       gboolean invalidated_all;       /* pending refresh of entire terminal */
+       GList *active;                  /* is the terminal processing data */
+       glong input_bytes;
+       glong max_input_bytes;
+
+       /* Output data queue. */
+       VteBuffer *outgoing;    /* pending input characters */
+       VteConv outgoing_conv;
+
+       /* IConv buffer. */
+       VteBuffer *conv_buffer;
+
+       /* Screen data.  We support the normal screen, and an alternate
+        * screen, which seems to be a DEC-specific feature. */
+       struct _VteScreen {
+               VteRing row_data[1];    /* buffer contents */
+               VteVisualPosition cursor_current, cursor_saved;
+                                       /* the current and saved positions of
+                                          the [insertion] cursor -- current is
+                                          absolute, saved is relative to the
+                                          insertion delta */
+               gboolean reverse_mode;  /* reverse mode */
+               gboolean origin_mode;   /* origin mode */
+               gboolean sendrecv_mode; /* sendrecv mode */
+               gboolean insert_mode;   /* insert mode */
+               gboolean linefeed_mode; /* linefeed mode */
+               gboolean bracketed_paste_mode;
+               struct vte_scrolling_region {
+                       int start, end;
+               } scrolling_region;     /* the region we scroll in */
+               gboolean scrolling_restricted;
+               long scroll_delta;      /* scroll offset */
+               long insert_delta;      /* insertion offset */
+               VteCell defaults;       /* default characteristics
+                                          for insertion of any new
+                                          characters */
+               VteCell color_defaults; /* original defaults
+                                          plus the current
+                                          fore/back */
+               VteCell fill_defaults;  /* original defaults
+                                          plus the current
+                                          fore/back with no
+                                          character data */
+               gboolean alternate_charset;
+               gboolean status_line;
+               GString *status_line_contents;
+               gboolean status_line_changed;
+       } normal_screen, alternate_screen, *screen;
+
+       /* Selection information. */
+       GArray *word_chars;
+       gboolean has_selection;
+       gboolean selecting;
+       gboolean selecting_restart;
+       gboolean selecting_had_delta;
+       gboolean selection_block_mode;
+       char *selection;
+       enum vte_selection_type {
+               selection_type_char,
+               selection_type_word,
+               selection_type_line
+       } selection_type;
+       struct selection_event_coords {
+               long x, y;
+       } selection_origin, selection_last;
+       VteVisualPosition selection_start, selection_end;
+
+       /* Miscellaneous options. */
+       VteTerminalEraseBinding backspace_binding, delete_binding;
+       gboolean meta_sends_escape;
+       gboolean audible_bell;
+       gboolean visible_bell;
+       gboolean margin_bell;
+       guint bell_margin;
+       gboolean allow_bold;
+       gboolean nrc_mode;
+       gboolean smooth_scroll;
+       GHashTable *tabstops;
+       gboolean text_modified_flag;
+       gboolean text_inserted_flag;
+       gboolean text_deleted_flag;
+
+       /* Scrolling options. */
+       gboolean scroll_background;
+       gboolean scroll_on_output;
+       gboolean scroll_on_keystroke;
+       long scrollback_lines;
+
+       /* Cursor shape */
+       VteTerminalCursorShape cursor_shape;
+        float cursor_aspect_ratio;
+
+       /* Cursor blinking. */
+        VteTerminalCursorBlinkMode cursor_blink_mode;
+       gboolean cursor_blink_state;
+       guint cursor_blink_tag;           /* cursor blinking timeout ID */
+        gint cursor_blink_cycle;          /* gtk-cursor-blink-time / 2 */
+       gint cursor_blink_timeout;        /* gtk-cursor-blink-timeout */
+        gboolean cursor_blinks;           /* whether the cursor is actually blinking */
+       gint64 cursor_blink_time;         /* how long the cursor has been blinking yet */
+       gboolean cursor_visible;
+       gboolean has_focus;               /* is the terminal window focused */
+
+       /* Input device options. */
+       time_t last_keypress_time;
+
+       int mouse_tracking_mode; /* this is of type MouseTrackingMode,
+                                   but we need to guarantee its type. */
+       guint mouse_last_button;
+       long mouse_last_x, mouse_last_y;
+       gboolean mouse_autohide;
+       guint mouse_autoscroll_tag;
+
+       /* State variables for handling match checks. */
+       char *match_contents;
+       GArray *match_attributes;
+        VteRegexMode match_regex_mode;
+       GArray *match_regexes;
+       char *match;
+       int match_tag;
+       VteVisualPosition match_start, match_end;
+       gboolean show_match;
+
+       /* Search data. */
+       GRegex *search_regex;
+       gboolean search_wrap_around;
+       GArray *search_attrs; /* Cache attrs */
+
+       /* Data used when rendering the text which does not require server
+        * resources and which can be kept after unrealizing. */
+       PangoFontDescription *fontdesc;
+       VteTerminalAntiAlias fontantialias;
+       gboolean fontdirty;
+
+       /* Data used when rendering the text which reflects server resources
+        * and data, which should be dropped when unrealizing and (re)created
+        * when realizing. */
+       struct _vte_draw *draw;
+
+       gboolean palette_initialized;
+       gboolean highlight_color_set;
+       gboolean cursor_color_set;
+       PangoColor palette[VTE_PALETTE_SIZE];
+
+       /* Mouse cursors. */
+       gboolean mouse_cursor_visible;
+       GdkCursor *mouse_default_cursor,
+                 *mouse_mousing_cursor,
+                 *mouse_inviso_cursor;
+
+       /* Input method support. */
+       GtkIMContext *im_context;
+       gboolean im_preedit_active;
+       char *im_preedit;
+       PangoAttrList *im_preedit_attrs;
+       int im_preedit_cursor;
+
+       gboolean accessible_emit;
+
+       /* Adjustment updates pending. */
+       gboolean adjustment_changed_pending;
+       gboolean adjustment_value_changed_pending;
+
+       gboolean cursor_moved_pending;
+       gboolean contents_changed_pending;
+
+       /* window name changes */
+       gchar *window_title_changed;
+       gchar *icon_title_changed;
+
+       /* Background images/"transparency". */
+       guint root_pixmap_changed_tag;
+       gboolean bg_update_pending;
+       gboolean bg_transparent;
+       GdkPixbuf *bg_pixbuf;
+       char *bg_file;
+       PangoColor bg_tint_color;
+       guint16 bg_saturation;  /* out of VTE_SATURATION_MAX */
+       guint16 bg_opacity;
+
+       /* Key modifiers. */
+       GdkModifierType modifiers;
+
+       /* Obscured? state. */
+       GdkVisibilityState visibility_state;
+
+       /* Font stuff. */
+       gboolean has_fonts;
+       glong line_thickness;
+       glong underline_position;
+       glong strikethrough_position;
+
+        /* Style stuff */
+        GtkBorder inner_border;
+
+#if GTK_CHECK_VERSION (2, 91, 2)
+        /* GtkScrollable impl */
+        GtkAdjustment *hadjustment; /* unused */
+        guint hscroll_policy : 1; /* unused */
+
+        guint vscroll_policy : 1;
+#endif
+};
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+struct _VteTerminalClassPrivate {
+        GtkStyleProvider *style_provider;
+};
+#endif
+
+VteRowData *_vte_terminal_ensure_row(VteTerminal *terminal);
+void _vte_terminal_set_pointer_visible(VteTerminal *terminal, gboolean visible);
+void _vte_invalidate_all(VteTerminal *terminal);
+void _vte_invalidate_cells(VteTerminal *terminal,
+                          glong column_start, gint column_count,
+                          glong row_start, gint row_count);
+void _vte_invalidate_cell(VteTerminal *terminal, glong col, glong row);
+void _vte_invalidate_cursor_once(VteTerminal *terminal, gboolean periodic);
+VteRowData * _vte_new_row_data(VteTerminal *terminal);
+void _vte_terminal_adjust_adjustments(VteTerminal *terminal);
+void _vte_terminal_queue_contents_changed(VteTerminal *terminal);
+void _vte_terminal_emit_text_deleted(VteTerminal *terminal);
+void _vte_terminal_emit_text_inserted(VteTerminal *terminal);
+void _vte_terminal_cursor_down (VteTerminal *terminal);
+gboolean _vte_terminal_insert_char(VteTerminal *terminal, gunichar c,
+                              gboolean force_insert_mode,
+                              gboolean invalidate_cells);
+void _vte_terminal_scroll_region(VteTerminal *terminal,
+                                long row, glong count, glong delta);
+void _vte_terminal_set_default_attributes(VteTerminal *terminal);
+void _vte_terminal_clear_tabstop(VteTerminal *terminal, int column);
+gboolean _vte_terminal_get_tabstop(VteTerminal *terminal, int column);
+void _vte_terminal_set_tabstop(VteTerminal *terminal, int column);
+void _vte_terminal_update_insert_delta(VteTerminal *terminal);
+void _vte_terminal_cleanup_tab_fragments_at_cursor (VteTerminal *terminal);
+void _vte_terminal_audible_beep(VteTerminal *terminal);
+void _vte_terminal_visible_beep(VteTerminal *terminal);
+void _vte_terminal_beep(VteTerminal *terminal);
+
+void _vte_terminal_inline_error_message(VteTerminal *terminal, const char *format, ...) G_GNUC_PRINTF(2,3);
+
+VteRowData *_vte_terminal_ring_insert (VteTerminal *terminal, glong position, gboolean fill);
+VteRowData *_vte_terminal_ring_append (VteTerminal *terminal, gboolean fill);
+void _vte_terminal_ring_remove (VteTerminal *terminal, glong position);
+
+/* vteseq.c: */
+void _vte_terminal_handle_sequence(VteTerminal *terminal,
+                                  const char *match_s,
+                                  GQuark match,
+                                  GValueArray *params);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vte.c b/vte/src/vte.c
new file mode 100644
index 0000000..695d327
--- /dev/null
+++ b/vte/src/vte.c
@@ -0,0 +1,15421 @@
+/*
+ * Copyright (C) 2001-2004,2009,2010 Red Hat, Inc.
+ * Copyright © 2008, 2009, 2010 Christian Persch
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/**
+ * SECTION: vte-terminal
+ * @short_description: A terminal widget implementation
+ *
+ * A VteTerminal is a terminal emulator implemented as a GTK2 widget.
+ */
+
+#include <config.h>
+
+#include <math.h>
+
+#include "vte.h"
+#include "vte-private.h"
+#include "vte-gtk-compat.h"
+
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+#ifdef HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib-object.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+#include <pango/pango.h>
+#include "iso2022.h"
+#include "keymap.h"
+#include "marshal.h"
+#include "matcher.h"
+#include "pty.h"
+#include "vteaccess.h"
+#include "vteint.h"
+#include "vtepty.h"
+#include "vtepty-private.h"
+#include "vteregex.h"
+#include "vtetc.h"
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+#if GTK_CHECK_VERSION (2, 90, 7)
+#define GDK_KEY(symbol) GDK_KEY_##symbol
+#else
+#include <gdk/gdkkeysyms.h>
+#define GDK_KEY(symbol) GDK_##symbol
+#endif
+
+#ifndef HAVE_WINT_T
+typedef gunichar wint_t;
+#endif
+
+#ifndef howmany
+#define howmany(x, y) (((x) + ((y) - 1)) / (y))
+#endif
+
+#define STATIC_PARAMS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
+
+
+static void vte_terminal_set_visibility (VteTerminal *terminal, GdkVisibilityState state);
+static void vte_terminal_set_termcap(VteTerminal *terminal, const char *path,
+                                    gboolean reset);
+static void vte_terminal_paste(VteTerminal *terminal, GdkAtom board);
+static void vte_terminal_real_copy_clipboard(VteTerminal *terminal);
+static void vte_terminal_real_paste_clipboard(VteTerminal *terminal);
+static gboolean vte_terminal_io_read(GIOChannel *channel,
+                                    GIOCondition condition,
+                                    VteTerminal *terminal);
+static gboolean vte_terminal_io_write(GIOChannel *channel,
+                                     GIOCondition condition,
+                                     VteTerminal *terminal);
+static void vte_terminal_match_hilite_clear(VteTerminal *terminal);
+static void vte_terminal_match_hilite_hide(VteTerminal *terminal);
+static void vte_terminal_match_hilite_show(VteTerminal *terminal, long x, long y);
+static void vte_terminal_match_hilite_update(VteTerminal *terminal, long x, long y);
+static void vte_terminal_match_contents_clear(VteTerminal *terminal);
+static gboolean vte_terminal_background_update(VteTerminal *data);
+static void vte_terminal_queue_background_update(VteTerminal *terminal);
+static void vte_terminal_process_incoming(VteTerminal *terminal);
+static void vte_terminal_emit_pending_signals(VteTerminal *terminal);
+static gboolean vte_cell_is_selected(VteTerminal *terminal,
+                                    glong col, glong row, gpointer data);
+static char *vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
+                                                      glong start_row,
+                                                      glong start_col,
+                                                      glong end_row,
+                                                      glong end_col,
+                                                      gboolean wrap,
+                                                      VteSelectionFunc is_selected,
+                                                      gpointer data,
+                                                      GArray *attributes,
+                                                      gboolean include_trailing_spaces);
+static char *vte_terminal_get_text_maybe_wrapped(VteTerminal *terminal,
+                                                gboolean wrap,
+                                                VteSelectionFunc is_selected,
+                                                gpointer data,
+                                                GArray *attributes,
+                                                gboolean include_trailing_spaces);
+static void _vte_terminal_disconnect_pty_read(VteTerminal *terminal);
+static void _vte_terminal_disconnect_pty_write(VteTerminal *terminal);
+static void vte_terminal_stop_processing (VteTerminal *terminal);
+
+static inline gboolean vte_terminal_is_processing (VteTerminal *terminal);
+static inline void vte_terminal_start_processing (VteTerminal *terminal);
+static void vte_terminal_add_process_timeout (VteTerminal *terminal);
+static void add_update_timeout (VteTerminal *terminal);
+static void remove_update_timeout (VteTerminal *terminal);
+static void reset_update_regions (VteTerminal *terminal);
+static void vte_terminal_set_cursor_blinks_internal(VteTerminal *terminal, gboolean blink);
+static void vte_terminal_set_font_full_internal(VteTerminal *terminal,
+                                                const PangoFontDescription *font_desc,
+                                                VteTerminalAntiAlias antialias);
+static void _vte_check_cursor_blink(VteTerminal *terminal);
+
+static gboolean process_timeout (gpointer data);
+static gboolean update_timeout (gpointer data);
+
+enum {
+    COPY_CLIPBOARD,
+    PASTE_CLIPBOARD,
+    LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL];
+
+enum {
+        PROP_0,
+#if GTK_CHECK_VERSION (2, 91, 2)
+        PROP_HADJUSTMENT,
+        PROP_VADJUSTMENT,
+        PROP_HSCROLL_POLICY,
+        PROP_VSCROLL_POLICY,
+#endif
+        PROP_ALLOW_BOLD,
+        PROP_AUDIBLE_BELL,
+        PROP_BACKGROUND_IMAGE_FILE,
+        PROP_BACKGROUND_IMAGE_PIXBUF,
+        PROP_BACKGROUND_OPACITY,
+        PROP_BACKGROUND_SATURATION,
+        PROP_BACKGROUND_TINT_COLOR,
+        PROP_BACKGROUND_TRANSPARENT,
+        PROP_BACKSPACE_BINDING,
+        PROP_CURSOR_BLINK_MODE,
+        PROP_CURSOR_SHAPE,
+        PROP_DELETE_BINDING,
+        PROP_EMULATION,
+        PROP_ENCODING,
+        PROP_FONT_DESC,
+        PROP_ICON_TITLE,
+        PROP_MOUSE_POINTER_AUTOHIDE,
+        PROP_PTY,
+        PROP_PTY_OBJECT,
+        PROP_SCROLL_BACKGROUND,
+        PROP_SCROLLBACK_LINES,
+        PROP_SCROLL_ON_KEYSTROKE,
+        PROP_SCROLL_ON_OUTPUT,
+        PROP_WINDOW_TITLE,
+        PROP_WORD_CHARS,
+        PROP_VISIBLE_BELL
+};
+
+/* these static variables are guarded by the GDK mutex */
+static guint process_timeout_tag = 0;
+static gboolean in_process_timeout;
+static guint update_timeout_tag = 0;
+static gboolean in_update_timeout;
+static GList *active_terminals;
+static GTimer *process_timer;
+
+static const GtkBorder default_inner_border = { 1, 1, 1, 1 };
+
+/* process incoming data without copying */
+static struct _vte_incoming_chunk *free_chunks;
+static struct _vte_incoming_chunk *
+get_chunk (void)
+{
+       struct _vte_incoming_chunk *chunk = NULL;
+       if (free_chunks) {
+               chunk = free_chunks;
+               free_chunks = free_chunks->next;
+       }
+       if (chunk == NULL) {
+               chunk = g_new (struct _vte_incoming_chunk, 1);
+       }
+       chunk->next = NULL;
+       chunk->len = 0;
+       return chunk;
+}
+static void
+release_chunk (struct _vte_incoming_chunk *chunk)
+{
+       chunk->next = free_chunks;
+       chunk->len = free_chunks ? free_chunks->len + 1 : 0;
+       free_chunks = chunk;
+}
+static void
+prune_chunks (guint len)
+{
+       struct _vte_incoming_chunk *chunk = NULL;
+       if (len && free_chunks != NULL) {
+           if (free_chunks->len > len) {
+               struct _vte_incoming_chunk *last;
+               chunk = free_chunks;
+               while (free_chunks->len > len) {
+                   last = free_chunks;
+                   free_chunks = free_chunks->next;
+               }
+               last->next = NULL;
+           }
+       } else {
+           chunk = free_chunks;
+           free_chunks = NULL;
+       }
+       while (chunk != NULL) {
+               struct _vte_incoming_chunk *next = chunk->next;
+               g_free (chunk);
+               chunk = next;
+       }
+}
+static void
+_vte_incoming_chunks_release (struct _vte_incoming_chunk *chunk)
+{
+       while (chunk) {
+               struct _vte_incoming_chunk *next = chunk->next;
+               release_chunk (chunk);
+               chunk = next;
+       }
+}
+static gsize
+_vte_incoming_chunks_length (struct _vte_incoming_chunk *chunk)
+{
+       gsize len = 0;
+       while (chunk) {
+               len += chunk->len;
+               chunk = chunk->next;
+       }
+       return len;
+}
+static gsize
+_vte_incoming_chunks_count (struct _vte_incoming_chunk *chunk)
+{
+       gsize cnt = 0;
+       while (chunk) {
+               cnt ++;
+               chunk = chunk->next;
+       }
+       return cnt;
+}
+static struct _vte_incoming_chunk *
+_vte_incoming_chunks_reverse(struct _vte_incoming_chunk *chunk)
+{
+       struct _vte_incoming_chunk *prev = NULL;
+       while (chunk) {
+               struct _vte_incoming_chunk *next = chunk->next;
+               chunk->next = prev;
+               prev = chunk;
+               chunk = next;
+       }
+       return prev;
+}
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+#ifdef VTE_DEBUG
+G_DEFINE_TYPE_WITH_CODE(VteTerminal, vte_terminal, GTK_TYPE_WIDGET,
+                        g_type_add_class_private (g_define_type_id, sizeof (VteTerminalClassPrivate));
+                        G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, NULL)
+                        if (_vte_debug_on(VTE_DEBUG_LIFECYCLE)) {
+                                g_printerr("vte_terminal_get_type()\n");
+                        })
+#else
+G_DEFINE_TYPE_WITH_CODE(VteTerminal, vte_terminal, GTK_TYPE_WIDGET,
+                        g_type_add_class_private (g_define_type_id, sizeof (VteTerminalClassPrivate));
+                        G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, NULL))
+#endif
+#else
+#ifdef VTE_DEBUG
+G_DEFINE_TYPE_WITH_CODE(VteTerminal, vte_terminal, GTK_TYPE_WIDGET,
+               if (_vte_debug_on(VTE_DEBUG_LIFECYCLE)) {
+                       g_printerr("vte_terminal_get_type()\n");
+               })
+#else
+G_DEFINE_TYPE(VteTerminal, vte_terminal, GTK_TYPE_WIDGET)
+#endif
+#endif /* GTK 3.0 */
+
+/* Indexes in the "palette" color array for the dim colors.
+ * Only the first %VTE_LEGACY_COLOR_SET_SIZE colors have dim versions.  */
+static const guchar corresponding_dim_index[] = {16,88,28,100,18,90,30,102};
+
+static void
+vte_g_array_fill(GArray *array, gconstpointer item, guint final_size)
+{
+       if (array->len >= final_size)
+               return;
+
+       final_size -= array->len;
+       do {
+               g_array_append_vals(array, item, 1);
+       } while (--final_size);
+}
+
+
+VteRowData *
+_vte_terminal_ring_insert (VteTerminal *terminal, glong position, gboolean fill)
+{
+       VteRowData *row;
+       VteRing *ring = terminal->pvt->screen->row_data;
+       while (G_UNLIKELY (_vte_ring_next (ring) < position)) {
+               row = _vte_ring_append (ring);
+               _vte_row_data_fill (row, &terminal->pvt->screen->fill_defaults, terminal->column_count);
+       }
+       row = _vte_ring_insert (ring, position);
+       if (fill)
+               _vte_row_data_fill (row, &terminal->pvt->screen->fill_defaults, terminal->column_count);
+       return row;
+}
+
+VteRowData *
+_vte_terminal_ring_append (VteTerminal *terminal, gboolean fill)
+{
+       return _vte_terminal_ring_insert (terminal, _vte_ring_next (terminal->pvt->screen->row_data), fill);
+}
+
+void
+_vte_terminal_ring_remove (VteTerminal *terminal, glong position)
+{
+       _vte_ring_remove (terminal->pvt->screen->row_data, position);
+}
+
+/* Reset defaults for character insertion. */
+void
+_vte_terminal_set_default_attributes(VteTerminal *terminal)
+{
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       screen->defaults = basic_cell.cell;
+       screen->color_defaults = screen->defaults;
+       screen->fill_defaults = screen->defaults;
+}
+
+/* Cause certain cells to be repainted. */
+void
+_vte_invalidate_cells(VteTerminal *terminal,
+                     glong column_start, gint column_count,
+                     glong row_start, gint row_count)
+{
+       VteRegionRectangle rect;
+       glong i;
+
+       if (!column_count || !row_count) {
+               return;
+       }
+
+       if (G_UNLIKELY (! gtk_widget_is_drawable (&terminal->widget)
+                               || terminal->pvt->invalidated_all)) {
+               return;
+       }
+
+       _vte_debug_print (VTE_DEBUG_UPDATES,
+                       "Invalidating cells at (%ld,%ld+%ld)x(%d,%d).\n",
+                       column_start, row_start,
+                       (long)terminal->pvt->screen->scroll_delta,
+                       column_count, row_count);
+       _vte_debug_print (VTE_DEBUG_WORK, "?");
+
+       /* Subtract the scrolling offset from the row start so that the
+        * resulting rectangle is relative to the visible portion of the
+        * buffer. */
+       row_start -= terminal->pvt->screen->scroll_delta;
+
+       /* Ensure the start of region is on screen */
+       if (column_start > terminal->column_count ||
+                       row_start > terminal->row_count) {
+               return;
+       }
+
+       /* Clamp the start values to reasonable numbers. */
+       i = row_start + row_count;
+       row_start = MAX (0, row_start);
+       row_count = CLAMP (i - row_start, 0, terminal->row_count);
+
+       i = column_start + column_count;
+       column_start = MAX (0, column_start);
+       column_count = CLAMP (i - column_start, 0 , terminal->column_count);
+
+       if (!column_count || !row_count) {
+               return;
+       }
+       if (column_count == terminal->column_count &&
+                       row_count == terminal->row_count) {
+               _vte_invalidate_all (terminal);
+               return;
+       }
+
+       /* Convert the column and row start and end to pixel values
+        * by multiplying by the size of a character cell.
+        * Always include the extra pixel border and overlap pixel.
+        */
+       rect.x = column_start * terminal->char_width - 1;
+       if (column_start != 0) {
+               rect.x += terminal->pvt->inner_border.left;
+       }
+       rect.width = (column_start + column_count) * terminal->char_width + 3 + 
terminal->pvt->inner_border.left;
+       if (column_start + column_count == terminal->column_count) {
+               rect.width += terminal->pvt->inner_border.right;
+       }
+       rect.width -= rect.x;
+
+       rect.y = row_start * terminal->char_height - 1;
+       if (row_start != 0) {
+               rect.y += terminal->pvt->inner_border.top;
+       }
+       rect.height = (row_start + row_count) * terminal->char_height + 2 + terminal->pvt->inner_border.top;
+       if (row_start + row_count == terminal->row_count) {
+               rect.height += terminal->pvt->inner_border.bottom;
+       }
+       rect.height -= rect.y;
+
+       _vte_debug_print (VTE_DEBUG_UPDATES,
+                       "Invalidating pixels at (%d,%d)x(%d,%d).\n",
+                       rect.x, rect.y, rect.width, rect.height);
+
+       if (terminal->pvt->active != NULL) {
+               terminal->pvt->update_regions = g_slist_prepend (
+                               terminal->pvt->update_regions,
+                               gdk_region_rectangle (&rect));
+               /* Wait a bit before doing any invalidation, just in
+                * case updates are coming in really soon. */
+               add_update_timeout (terminal);
+       } else {
+               gdk_window_invalidate_rect (gtk_widget_get_window (&terminal->widget), &rect, FALSE);
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, "!");
+}
+
+static void
+_vte_invalidate_region (VteTerminal *terminal,
+                       glong scolumn, glong ecolumn,
+                       glong srow, glong erow,
+                       gboolean block)
+{
+       if (block || srow == erow) {
+               _vte_invalidate_cells(terminal,
+                               scolumn, ecolumn - scolumn + 1,
+                               srow, erow - srow + 1);
+       } else {
+               _vte_invalidate_cells(terminal,
+                               scolumn,
+                               terminal->column_count - scolumn,
+                               srow, 1);
+               _vte_invalidate_cells(terminal,
+                               0, terminal->column_count,
+                               srow + 1, erow - srow - 1);
+               _vte_invalidate_cells(terminal,
+                               0, ecolumn + 1,
+                               erow, 1);
+       }
+}
+
+
+/* Redraw the entire visible portion of the window. */
+void
+_vte_invalidate_all(VteTerminal *terminal)
+{
+       VteRegionRectangle rect;
+       GtkAllocation allocation;
+
+       g_assert(VTE_IS_TERMINAL(terminal));
+
+       if (! gtk_widget_is_drawable (&terminal->widget)) {
+               return;
+       }
+       if (terminal->pvt->invalidated_all) {
+               return;
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, "*");
+       _vte_debug_print (VTE_DEBUG_UPDATES, "Invalidating all.\n");
+
+       gtk_widget_get_allocation (&terminal->widget, &allocation);
+
+       /* replace invalid regions with one covering the whole terminal */
+       reset_update_regions (terminal);
+       rect.x = rect.y = 0;
+       rect.width = allocation.width;
+       rect.height = allocation.height;
+       terminal->pvt->invalidated_all = TRUE;
+
+       if (terminal->pvt->active != NULL) {
+               terminal->pvt->update_regions = g_slist_prepend (NULL,
+                               gdk_region_rectangle (&rect));
+               /* Wait a bit before doing any invalidation, just in
+                * case updates are coming in really soon. */
+               add_update_timeout (terminal);
+       } else {
+               gdk_window_invalidate_rect (gtk_widget_get_window (&terminal->widget), &rect, FALSE);
+       }
+}
+
+/* Scroll a rectangular region up or down by a fixed number of lines,
+ * negative = up, positive = down. */
+void
+_vte_terminal_scroll_region (VteTerminal *terminal,
+                            long row, glong count, glong delta)
+{
+       if ((delta == 0) || (count == 0)) {
+               /* Shenanigans! */
+               return;
+       }
+
+       if (terminal->pvt->scroll_background || count >= terminal->row_count) {
+               /* We have to repaint the entire window. */
+               _vte_invalidate_all(terminal);
+       } else {
+               /* We have to repaint the area which is to be
+                * scrolled. */
+               _vte_invalidate_cells(terminal,
+                                    0, terminal->column_count,
+                                    row, count);
+       }
+}
+
+/* Find the row in the given position in the backscroll buffer. */
+static inline const VteRowData *
+_vte_terminal_find_row_data (VteTerminal *terminal, glong row)
+{
+       const VteRowData *rowdata = NULL;
+       VteScreen *screen = terminal->pvt->screen;
+       if (G_LIKELY (_vte_ring_contains (screen->row_data, row))) {
+               rowdata = _vte_ring_index (screen->row_data, row);
+       }
+       return rowdata;
+}
+
+/* Find the row in the given position in the backscroll buffer. */
+static inline VteRowData *
+_vte_terminal_find_row_data_writable (VteTerminal *terminal, glong row)
+{
+       VteRowData *rowdata = NULL;
+       VteScreen *screen = terminal->pvt->screen;
+       if (G_LIKELY (_vte_ring_contains (screen->row_data, row))) {
+               rowdata = _vte_ring_index_writable (screen->row_data, row);
+       }
+       return rowdata;
+}
+
+/* Find the character an the given position in the backscroll buffer. */
+static const VteCell *
+vte_terminal_find_charcell(VteTerminal *terminal, gulong col, glong row)
+{
+       const VteRowData *rowdata;
+       const VteCell *ret = NULL;
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       if (_vte_ring_contains (screen->row_data, row)) {
+               rowdata = _vte_ring_index (screen->row_data, row);
+               ret = _vte_row_data_get (rowdata, col);
+       }
+       return ret;
+}
+
+static glong
+find_start_column (VteTerminal *terminal, glong col, glong row)
+{
+       const VteRowData *row_data = _vte_terminal_find_row_data (terminal, row);
+       if (G_UNLIKELY (col < 0))
+               return col;
+       if (row_data != NULL) {
+               const VteCell *cell = _vte_row_data_get (row_data, col);
+               while (col > 0 && cell != NULL && cell->attr.fragment) {
+                       cell = _vte_row_data_get (row_data, --col);
+               }
+       }
+       return MAX(col, 0);
+}
+static glong
+find_end_column (VteTerminal *terminal, glong col, glong row)
+{
+       const VteRowData *row_data = _vte_terminal_find_row_data (terminal, row);
+       gint columns = 0;
+       if (G_UNLIKELY (col < 0))
+               return col;
+       if (row_data != NULL) {
+               const VteCell *cell = _vte_row_data_get (row_data, col);
+               while (col > 0 && cell != NULL && cell->attr.fragment) {
+                       cell = _vte_row_data_get (row_data, --col);
+               }
+               if (cell) {
+                       columns = cell->attr.columns - 1;
+               }
+       }
+       return MIN(col + columns, terminal->column_count);
+}
+
+
+/* Determine the width of the portion of the preedit string which lies
+ * to the left of the cursor, or the entire string, in columns. */
+static gssize
+vte_terminal_preedit_width(VteTerminal *terminal, gboolean left_only)
+{
+       gunichar c;
+       int i;
+       gssize ret = 0;
+       const char *preedit = NULL;
+
+       if (terminal->pvt->im_preedit != NULL) {
+               preedit = terminal->pvt->im_preedit;
+               for (i = 0;
+                    (preedit != NULL) &&
+                    (preedit[0] != '\0') &&
+                    (!left_only || (i < terminal->pvt->im_preedit_cursor));
+                    i++) {
+                       c = g_utf8_get_char(preedit);
+                       ret += _vte_iso2022_unichar_width(terminal->pvt->iso2022, c);
+                       preedit = g_utf8_next_char(preedit);
+               }
+       }
+
+       return ret;
+}
+
+/* Determine the length of the portion of the preedit string which lies
+ * to the left of the cursor, or the entire string, in gunichars. */
+static gssize
+vte_terminal_preedit_length(VteTerminal *terminal, gboolean left_only)
+{
+       int i = 0;
+       const char *preedit = NULL;
+
+       if (terminal->pvt->im_preedit != NULL) {
+               preedit = terminal->pvt->im_preedit;
+               for (i = 0;
+                    (preedit != NULL) &&
+                    (preedit[0] != '\0') &&
+                    (!left_only || (i < terminal->pvt->im_preedit_cursor));
+                    i++) {
+                       preedit = g_utf8_next_char(preedit);
+               }
+       }
+
+       return i;
+}
+
+/* Cause the cell to be redrawn. */
+void
+_vte_invalidate_cell(VteTerminal *terminal, glong col, glong row)
+{
+       const VteRowData *row_data;
+       int columns;
+
+       if (G_UNLIKELY (! gtk_widget_is_drawable (&terminal->widget)
+                               || terminal->pvt->invalidated_all)) {
+               return;
+       }
+
+       columns = 1;
+       row_data = _vte_terminal_find_row_data(terminal, row);
+       if (row_data != NULL) {
+               const VteCell *cell;
+               cell = _vte_row_data_get (row_data, col);
+               if (cell != NULL) {
+                       while (cell->attr.fragment && col> 0) {
+                               cell = _vte_row_data_get (row_data, --col);
+                       }
+                       columns = cell->attr.columns;
+                       if (cell->c != 0 &&
+                                       _vte_draw_get_char_width (
+                                               terminal->pvt->draw,
+                                               cell->c,
+                                               columns, cell->attr.bold) >
+                                       terminal->char_width * columns) {
+                               columns++;
+                       }
+               }
+       }
+
+       _vte_debug_print(VTE_DEBUG_UPDATES,
+                       "Invalidating cell at (%ld,%ld-%ld).\n",
+                       row, col, col + columns);
+       _vte_invalidate_cells(terminal,
+                       col, columns,
+                       row, 1);
+}
+
+/* Cause the cursor to be redrawn. */
+void
+_vte_invalidate_cursor_once(VteTerminal *terminal, gboolean periodic)
+{
+       VteScreen *screen;
+       const VteCell *cell;
+       gssize preedit_width;
+       glong column, row;
+       gint columns;
+
+       if (terminal->pvt->invalidated_all) {
+               return;
+       }
+
+       if (periodic) {
+               if (!terminal->pvt->cursor_blinks) {
+                       return;
+               }
+       }
+
+       if (terminal->pvt->cursor_visible && gtk_widget_is_drawable (&terminal->widget)) {
+               preedit_width = vte_terminal_preedit_width(terminal, FALSE);
+
+               screen = terminal->pvt->screen;
+               row = screen->cursor_current.row;
+               column = screen->cursor_current.col;
+               columns = 1;
+               column = find_start_column (terminal, column, row);
+               cell = vte_terminal_find_charcell(terminal, column, row);
+               if (cell != NULL) {
+                       columns = cell->attr.columns;
+                       if (cell->c != 0 &&
+                                       _vte_draw_get_char_width (
+                                               terminal->pvt->draw,
+                                               cell->c,
+                                               columns, cell->attr.bold) >
+                           terminal->char_width * columns) {
+                               columns++;
+                       }
+               }
+               if (preedit_width > 0) {
+                       columns += preedit_width;
+                       columns++; /* one more for the preedit cursor */
+               }
+
+               _vte_debug_print(VTE_DEBUG_UPDATES,
+                               "Invalidating cursor at (%ld,%ld-%ld).\n",
+                               row, column, column + columns);
+               _vte_invalidate_cells(terminal,
+                                    column, columns,
+                                    row, 1);
+       }
+}
+
+/* Invalidate the cursor repeatedly. */
+static gboolean
+vte_invalidate_cursor_periodic (VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+
+       pvt->cursor_blink_state = !pvt->cursor_blink_state;
+       pvt->cursor_blink_time += pvt->cursor_blink_cycle;
+
+       _vte_invalidate_cursor_once(terminal, TRUE);
+
+       /* only disable the blink if the cursor is currently shown.
+        * else, wait until next time.
+        */
+       if (pvt->cursor_blink_time / 1000 >= pvt->cursor_blink_timeout &&
+           pvt->cursor_blink_state) {
+                pvt->cursor_blink_tag = 0;
+               return FALSE;
+        }
+
+       pvt->cursor_blink_tag = g_timeout_add_full(G_PRIORITY_LOW,
+                                                  terminal->pvt->cursor_blink_cycle,
+                                                  (GSourceFunc)vte_invalidate_cursor_periodic,
+                                                  terminal,
+                                                  NULL);
+       return FALSE;
+}
+
+/* Emit a "selection_changed" signal. */
+static void
+vte_terminal_emit_selection_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `selection-changed'.\n");
+       g_signal_emit_by_name(terminal, "selection-changed");
+}
+
+/* Emit a "commit" signal. */
+static void
+vte_terminal_emit_commit(VteTerminal *terminal, const gchar *text, guint length)
+{
+       const char *result = NULL;
+       char *wrapped = NULL;
+
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `commit' of %d bytes.\n", length);
+
+       if (length == (guint)-1) {
+               length = strlen(text);
+               result = text;
+       } else {
+               result = wrapped = g_slice_alloc(length + 1);
+               memcpy(wrapped, text, length);
+               wrapped[length] = '\0';
+       }
+
+       g_signal_emit_by_name(terminal, "commit", result, length);
+
+       if(wrapped)
+               g_slice_free1(length+1, wrapped);
+}
+
+/* Emit an "emulation-changed" signal. */
+static void
+vte_terminal_emit_emulation_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `emulation-changed'.\n");
+       g_signal_emit_by_name(terminal, "emulation-changed");
+        g_object_notify(G_OBJECT(terminal), "emulation");
+
+}
+
+/* Emit an "encoding-changed" signal. */
+static void
+vte_terminal_emit_encoding_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `encoding-changed'.\n");
+       g_signal_emit_by_name(terminal, "encoding-changed");
+        g_object_notify(G_OBJECT(terminal), "encoding");
+}
+
+/* Emit a "child-exited" signal. */
+static void
+vte_terminal_emit_child_exited(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `child-exited'.\n");
+       g_signal_emit_by_name(terminal, "child-exited");
+}
+
+/* Emit a "contents_changed" signal. */
+static void
+vte_terminal_emit_contents_changed(VteTerminal *terminal)
+{
+       if (terminal->pvt->contents_changed_pending) {
+               /* Update dingus match set. */
+               vte_terminal_match_contents_clear(terminal);
+               if (terminal->pvt->mouse_cursor_visible) {
+                       vte_terminal_match_hilite_update(terminal,
+                                       terminal->pvt->mouse_last_x,
+                                       terminal->pvt->mouse_last_y);
+               }
+
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting `contents-changed'.\n");
+               g_signal_emit_by_name(terminal, "contents-changed");
+               terminal->pvt->contents_changed_pending = FALSE;
+       }
+}
+void
+_vte_terminal_queue_contents_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Queueing `contents-changed'.\n");
+       terminal->pvt->contents_changed_pending = TRUE;
+}
+
+/* Emit a "cursor_moved" signal. */
+static void
+vte_terminal_emit_cursor_moved(VteTerminal *terminal)
+{
+       if (terminal->pvt->cursor_moved_pending) {
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting `cursor-moved'.\n");
+               g_signal_emit_by_name(terminal, "cursor-moved");
+               terminal->pvt->cursor_moved_pending = FALSE;
+       }
+}
+static void
+vte_terminal_queue_cursor_moved(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Queueing `cursor-moved'.\n");
+       terminal->pvt->cursor_moved_pending = TRUE;
+}
+
+static gboolean
+vte_terminal_emit_eof(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `eof'.\n");
+       GDK_THREADS_ENTER ();
+       g_signal_emit_by_name(terminal, "eof");
+       GDK_THREADS_LEAVE ();
+
+       return FALSE;
+}
+/* Emit a "eof" signal. */
+static void
+vte_terminal_queue_eof(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Queueing `eof'.\n");
+       g_idle_add_full (G_PRIORITY_HIGH,
+               (GSourceFunc) vte_terminal_emit_eof,
+               g_object_ref (terminal),
+               g_object_unref);
+}
+
+/* Emit a "char-size-changed" signal. */
+static void
+vte_terminal_emit_char_size_changed(VteTerminal *terminal,
+                                   guint width, guint height)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `char-size-changed'.\n");
+       g_signal_emit_by_name(terminal, "char-size-changed",
+                             width, height);
+/*         g_object_notify(G_OBJECT(terminal), "char-size"); */
+}
+
+/* Emit a "status-line-changed" signal. */
+static void
+_vte_terminal_emit_status_line_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `status-line-changed'.\n");
+       g_signal_emit_by_name(terminal, "status-line-changed");
+/*         g_object_notify(G_OBJECT(terminal), "status-line"); */
+}
+
+/* Emit an "increase-font-size" signal. */
+static void
+vte_terminal_emit_increase_font_size(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `increase-font-size'.\n");
+       g_signal_emit_by_name(terminal, "increase-font-size");
+        g_object_notify(G_OBJECT(terminal), "font-scale");
+}
+
+/* Emit a "decrease-font-size" signal. */
+static void
+vte_terminal_emit_decrease_font_size(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `decrease-font-size'.\n");
+       g_signal_emit_by_name(terminal, "decrease-font-size");
+        g_object_notify(G_OBJECT(terminal), "font-scale");
+}
+
+/* Emit a "text-inserted" signal. */
+void
+_vte_terminal_emit_text_inserted(VteTerminal *terminal)
+{
+       if (!terminal->pvt->accessible_emit) {
+               return;
+       }
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `text-inserted'.\n");
+       g_signal_emit_by_name(terminal, "text-inserted");
+}
+
+/* Emit a "text-deleted" signal. */
+void
+_vte_terminal_emit_text_deleted(VteTerminal *terminal)
+{
+       if (!terminal->pvt->accessible_emit) {
+               return;
+       }
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `text-deleted'.\n");
+       g_signal_emit_by_name(terminal, "text-deleted");
+}
+
+/* Emit a "text-modified" signal. */
+static void
+vte_terminal_emit_text_modified(VteTerminal *terminal)
+{
+       if (!terminal->pvt->accessible_emit) {
+               return;
+       }
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `text-modified'.\n");
+       g_signal_emit_by_name(terminal, "text-modified");
+}
+
+/* Emit a "text-scrolled" signal. */
+static void
+vte_terminal_emit_text_scrolled(VteTerminal *terminal, gint delta)
+{
+       if (!terminal->pvt->accessible_emit) {
+               return;
+       }
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `text-scrolled'(%d).\n", delta);
+       g_signal_emit_by_name(terminal, "text-scrolled", delta);
+}
+
+/* Deselect anything which is selected and refresh the screen if needed. */
+static void
+vte_terminal_deselect_all(VteTerminal *terminal)
+{
+       if (terminal->pvt->has_selection) {
+               gint sx, sy, ex, ey;
+
+               _vte_debug_print(VTE_DEBUG_SELECTION,
+                               "Deselecting all text.\n");
+
+               terminal->pvt->has_selection = FALSE;
+               /* Don't free the current selection, as we need to keep
+                * hold of it for async copying from the clipboard. */
+
+               vte_terminal_emit_selection_changed(terminal);
+
+               sx = terminal->pvt->selection_start.col;
+               sy = terminal->pvt->selection_start.row;
+               ex = terminal->pvt->selection_end.col;
+               ey = terminal->pvt->selection_end.row;
+               _vte_invalidate_region(terminal,
+                               MIN (sx, ex), MAX (sx, ex),
+                               MIN (sy, ey),   MAX (sy, ey),
+                               FALSE);
+       }
+}
+
+/* Remove a tabstop. */
+void
+_vte_terminal_clear_tabstop(VteTerminal *terminal, int column)
+{
+       g_assert(VTE_IS_TERMINAL(terminal));
+       if (terminal->pvt->tabstops != NULL) {
+               /* Remove a tab stop from the hash table. */
+               g_hash_table_remove(terminal->pvt->tabstops,
+                                   GINT_TO_POINTER(2 * column + 1));
+       }
+}
+
+/* Check if we have a tabstop at a given position. */
+gboolean
+_vte_terminal_get_tabstop(VteTerminal *terminal, int column)
+{
+       gpointer hash;
+       g_assert(VTE_IS_TERMINAL(terminal));
+       if (terminal->pvt->tabstops != NULL) {
+               hash = g_hash_table_lookup(terminal->pvt->tabstops,
+                                          GINT_TO_POINTER(2 * column + 1));
+               return (hash != NULL);
+       } else {
+               return FALSE;
+       }
+}
+
+/* Reset the set of tab stops to the default. */
+void
+_vte_terminal_set_tabstop(VteTerminal *terminal, int column)
+{
+       g_assert(VTE_IS_TERMINAL(terminal));
+       if (terminal->pvt->tabstops != NULL) {
+               /* Just set a non-NULL pointer for this column number. */
+               g_hash_table_insert(terminal->pvt->tabstops,
+                                   GINT_TO_POINTER(2 * column + 1),
+                                   terminal);
+       }
+}
+
+/* Reset the set of tab stops to the default. */
+static void
+vte_terminal_set_default_tabstops(VteTerminal *terminal)
+{
+       int i, width = 0;
+       if (terminal->pvt->tabstops != NULL) {
+               g_hash_table_destroy(terminal->pvt->tabstops);
+       }
+       terminal->pvt->tabstops = g_hash_table_new(NULL, NULL);
+       if (terminal->pvt->termcap != NULL) {
+               width = _vte_termcap_find_numeric(terminal->pvt->termcap,
+                                                 terminal->pvt->emulation,
+                                                 "it");
+       }
+       if (width == 0) {
+               width = VTE_TAB_WIDTH;
+       }
+       for (i = 0; i <= VTE_TAB_MAX; i += width) {
+               _vte_terminal_set_tabstop(terminal, i);
+       }
+}
+
+/* Clear the cache of the screen contents we keep. */
+static void
+vte_terminal_match_contents_clear(VteTerminal *terminal)
+{
+       g_assert(VTE_IS_TERMINAL(terminal));
+       if (terminal->pvt->match_contents != NULL) {
+               g_free(terminal->pvt->match_contents);
+               terminal->pvt->match_contents = NULL;
+       }
+       if (terminal->pvt->match_attributes != NULL) {
+               g_array_free(terminal->pvt->match_attributes, TRUE);
+               terminal->pvt->match_attributes = NULL;
+       }
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+/* Refresh the cache of the screen contents we keep. */
+static gboolean
+always_selected(VteTerminal *terminal, glong column, glong row, gpointer data)
+{
+       return TRUE;
+}
+
+static void
+vte_terminal_match_contents_refresh(VteTerminal *terminal)
+{
+       GArray *array;
+       vte_terminal_match_contents_clear(terminal);
+       array = g_array_new(FALSE, TRUE, sizeof(struct _VteCharAttributes));
+       terminal->pvt->match_contents = vte_terminal_get_text(terminal,
+                                                             always_selected,
+                                                             NULL,
+                                                             array);
+       terminal->pvt->match_attributes = array;
+}
+
+static void
+regex_match_clear_cursor (struct vte_match_regex *regex)
+{
+        switch (regex->cursor_mode) {
+                case VTE_REGEX_CURSOR_GDKCURSOR:
+                        if (regex->cursor.cursor != NULL) {
+                                gdk_cursor_unref(regex->cursor.cursor);
+                                regex->cursor.cursor = NULL;
+                        }
+                        break;
+                case VTE_REGEX_CURSOR_GDKCURSORTYPE:
+                        break;
+                case VTE_REGEX_CURSOR_NAME:
+                        g_free (regex->cursor.cursor_name);
+                        regex->cursor.cursor_name = NULL;
+                        break;
+               default:
+                       g_assert_not_reached ();
+                       return;
+        }
+}
+
+static void
+regex_match_clear (struct vte_match_regex *regex)
+{
+        regex_match_clear_cursor(regex);
+
+        if (regex->mode == VTE_REGEX_GREGEX) {
+                g_regex_unref(regex->regex.gregex.regex);
+                regex->regex.gregex.regex = NULL;
+        } else if (regex->mode == VTE_REGEX_VTE) {
+                _vte_regex_free(regex->regex.reg);
+                regex->regex.reg = NULL;
+        }
+
+        regex->tag = -1;
+}
+
+static void
+vte_terminal_set_cursor_from_regex_match(VteTerminal *terminal, struct vte_match_regex *regex)
+{
+        GdkCursor *cursor = NULL;
+
+        if (! gtk_widget_get_realized (&terminal->widget))
+                return;
+
+        switch (regex->cursor_mode) {
+                case VTE_REGEX_CURSOR_GDKCURSOR:
+                        if (regex->cursor.cursor != NULL) {
+                                cursor = gdk_cursor_ref(regex->cursor.cursor);
+                        }
+                        break;
+                case VTE_REGEX_CURSOR_GDKCURSORTYPE:
+                        cursor = gdk_cursor_new_for_display(gtk_widget_get_display(GTK_WIDGET(terminal)), 
regex->cursor.cursor_type);
+                        break;
+                case VTE_REGEX_CURSOR_NAME:
+                        cursor = gdk_cursor_new_from_name(gtk_widget_get_display(GTK_WIDGET(terminal)), 
regex->cursor.cursor_name);
+                        break;
+               default:
+                       g_assert_not_reached ();
+                       return;
+        }
+
+       gdk_window_set_cursor (gtk_widget_get_window (&terminal->widget), cursor);
+
+        if (cursor)
+                gdk_cursor_unref(cursor);
+}
+
+/**
+ * vte_terminal_match_clear_all:
+ * @terminal: a #VteTerminal
+ *
+ * Clears the list of regular expressions the terminal uses to highlight text
+ * when the user moves the mouse cursor.
+ */
+void
+vte_terminal_match_clear_all(VteTerminal *terminal)
+{
+       struct vte_match_regex *regex;
+       guint i;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       for (i = 0; i < terminal->pvt->match_regexes->len; i++) {
+               regex = &g_array_index(terminal->pvt->match_regexes,
+                                      struct vte_match_regex,
+                                      i);
+               /* Unless this is a hole, clean it up. */
+               if (regex->tag >= 0) {
+                        regex_match_clear (regex);
+               }
+       }
+       g_array_set_size(terminal->pvt->match_regexes, 0);
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+/**
+ * vte_terminal_match_remove:
+ * @terminal: a #VteTerminal
+ * @tag: the tag of the regex to remove
+ *
+ * Removes the regular expression which is associated with the given @tag from
+ * the list of expressions which the terminal will highlight when the user
+ * moves the mouse cursor over matching text.
+ */
+void
+vte_terminal_match_remove(VteTerminal *terminal, int tag)
+{
+       struct vte_match_regex *regex;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       if (terminal->pvt->match_regexes->len > (guint)tag) {
+               /* The tag is an index, so find the corresponding struct. */
+               regex = &g_array_index(terminal->pvt->match_regexes,
+                                      struct vte_match_regex,
+                                      tag);
+               /* If it's already been removed, return. */
+               if (regex->tag < 0) {
+                       return;
+               }
+               /* Remove this item and leave a hole in its place. */
+                regex_match_clear (regex);
+       }
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+static GdkCursor *
+vte_terminal_cursor_new(VteTerminal *terminal, GdkCursorType cursor_type)
+{
+       GdkDisplay *display;
+       GdkCursor *cursor;
+
+       display = gtk_widget_get_display(&terminal->widget);
+       cursor = gdk_cursor_new_for_display(display, cursor_type);
+       return cursor;
+}
+
+/**
+ * vte_terminal_match_add:
+ * @terminal: a #VteTerminal
+ * @match: a regular expression
+ *
+ * Adds a regular expression to the list of matching expressions.  When the
+ * user moves the mouse cursor over a section of displayed text which matches
+ * this expression, the text will be highlighted.
+ *
+ * Returns: an integer associated with this expression
+ *
+ * Deprecated: 0.17.1: Use vte_terminal_match_add_gregex() instead
+ */
+int
+vte_terminal_match_add(VteTerminal *terminal, const char *match)
+{
+       struct vte_match_regex new_regex, *regex;
+       guint ret;
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+        g_return_val_if_fail(terminal->pvt->match_regex_mode != VTE_REGEX_GREGEX, -1);
+       g_return_val_if_fail(match != NULL, -1);
+       g_return_val_if_fail(strlen(match) > 0, -1);
+
+        terminal->pvt->match_regex_mode = VTE_REGEX_VTE;
+
+       memset(&new_regex, 0, sizeof(new_regex));
+        new_regex.mode = VTE_REGEX_VTE;
+       new_regex.regex.reg = _vte_regex_compile(match);
+       if (new_regex.regex.reg == NULL) {
+               g_warning(_("Error compiling regular expression \"%s\"."),
+                         match);
+               return -1;
+       }
+
+       /* Search for a hole. */
+       for (ret = 0; ret < terminal->pvt->match_regexes->len; ret++) {
+               regex = &g_array_index(terminal->pvt->match_regexes,
+                                      struct vte_match_regex,
+                                      ret);
+               if (regex->tag == -1) {
+                       break;
+               }
+       }
+       /* Set the tag to the insertion point. */
+       new_regex.tag = ret;
+        new_regex.cursor_mode = VTE_REGEX_CURSOR_GDKCURSORTYPE;
+        new_regex.cursor.cursor_type = VTE_DEFAULT_CURSOR;
+       if (ret < terminal->pvt->match_regexes->len) {
+               /* Overwrite. */
+               g_array_index(terminal->pvt->match_regexes,
+                             struct vte_match_regex,
+                             ret) = new_regex;
+       } else {
+               /* Append. */
+               g_array_append_val(terminal->pvt->match_regexes, new_regex);
+       }
+       return new_regex.tag;
+}
+
+/**
+ * vte_terminal_match_add_gregex:
+ * @terminal: a #VteTerminal
+ * @regex: a #GRegex
+ * @flags: the #GRegexMatchFlags to use when matching the regex
+ *
+ * Adds the regular expression @regex to the list of matching expressions.  When the
+ * user moves the mouse cursor over a section of displayed text which matches
+ * this expression, the text will be highlighted.
+ *
+ * Returns: an integer associated with this expression
+ *
+ * Since: 0.17.1
+ */
+int
+vte_terminal_match_add_gregex(VteTerminal *terminal, GRegex *regex, GRegexMatchFlags flags)
+{
+       VteTerminalPrivate *pvt;
+       struct vte_match_regex new_regex_match, *regex_match;
+       guint ret, len;
+
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+        g_return_val_if_fail(terminal->pvt->match_regex_mode != VTE_REGEX_VTE, -1);
+       g_return_val_if_fail(regex != NULL, -1);
+
+        pvt = terminal->pvt;
+        pvt->match_regex_mode = VTE_REGEX_GREGEX;
+
+       /* Search for a hole. */
+        len = pvt->match_regexes->len;
+       for (ret = 0; ret < len; ret++) {
+               regex_match = &g_array_index(pvt->match_regexes,
+                                             struct vte_match_regex,
+                                             ret);
+               if (regex_match->tag == -1) {
+                       break;
+               }
+       }
+
+       /* Set the tag to the insertion point. */
+        new_regex_match.mode = VTE_REGEX_GREGEX;
+        new_regex_match.regex.gregex.regex = g_regex_ref(regex);
+        new_regex_match.regex.gregex.flags = flags;
+       new_regex_match.tag = ret;
+        new_regex_match.cursor_mode = VTE_REGEX_CURSOR_GDKCURSORTYPE;
+        new_regex_match.cursor.cursor_type = VTE_DEFAULT_CURSOR;
+       if (ret < pvt->match_regexes->len) {
+               /* Overwrite. */
+               g_array_index(pvt->match_regexes,
+                             struct vte_match_regex,
+                             ret) = new_regex_match;
+       } else {
+               /* Append. */
+               g_array_append_val(pvt->match_regexes, new_regex_match);
+       }
+
+       return new_regex_match.tag;
+}
+
+/**
+ * vte_terminal_match_set_cursor:
+ * @terminal: a #VteTerminal
+ * @tag: the tag of the regex which should use the specified cursor
+ * @cursor: (allow-none): the #GdkCursor which the terminal should use when the pattern is
+ *   highlighted, or %NULL to use the standard cursor
+ *
+ * Sets which cursor the terminal will use if the pointer is over the pattern
+ * specified by @tag.  The terminal keeps a reference to @cursor.
+ *
+ * Since: 0.11
+ *
+ */
+void
+vte_terminal_match_set_cursor(VteTerminal *terminal, int tag, GdkCursor *cursor)
+{
+       struct vte_match_regex *regex;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail((guint) tag < terminal->pvt->match_regexes->len);
+       regex = &g_array_index(terminal->pvt->match_regexes,
+                              struct vte_match_regex,
+                              tag);
+        regex_match_clear_cursor(regex);
+        regex->cursor_mode = VTE_REGEX_CURSOR_GDKCURSOR;
+       regex->cursor.cursor = cursor ? gdk_cursor_ref(cursor) : NULL;
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+/**
+ * vte_terminal_match_set_cursor_type:
+ * @terminal: a #VteTerminal
+ * @tag: the tag of the regex which should use the specified cursor
+ * @cursor_type: a #GdkCursorType
+ *
+ * Sets which cursor the terminal will use if the pointer is over the pattern
+ * specified by @tag.
+ *
+ * Since: 0.11.9
+ *
+ */
+void
+vte_terminal_match_set_cursor_type(VteTerminal *terminal,
+                                  int tag, GdkCursorType cursor_type)
+{
+       struct vte_match_regex *regex;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail((guint) tag < terminal->pvt->match_regexes->len);
+       regex = &g_array_index(terminal->pvt->match_regexes,
+                              struct vte_match_regex,
+                              tag);
+        regex_match_clear_cursor(regex);
+        regex->cursor_mode = VTE_REGEX_CURSOR_GDKCURSORTYPE;
+       regex->cursor.cursor_type = cursor_type;
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+/**
+ * vte_terminal_match_set_cursor_name:
+ * @terminal: a #VteTerminal
+ * @tag: the tag of the regex which should use the specified cursor
+ * @cursor_name: the name of the cursor
+ *
+ * Sets which cursor the terminal will use if the pointer is over the pattern
+ * specified by @tag.
+ *
+ * Since: 0.17.1
+ *
+ */
+void
+vte_terminal_match_set_cursor_name(VteTerminal *terminal,
+                                  int tag, const char *cursor_name)
+{
+       struct vte_match_regex *regex;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        g_return_if_fail(cursor_name != NULL);
+       g_return_if_fail((guint) tag < terminal->pvt->match_regexes->len);
+       regex = &g_array_index(terminal->pvt->match_regexes,
+                              struct vte_match_regex,
+                              tag);
+        regex_match_clear_cursor(regex);
+        regex->cursor_mode = VTE_REGEX_CURSOR_NAME;
+       regex->cursor.cursor_name = g_strdup (cursor_name);
+       vte_terminal_match_hilite_clear(terminal);
+}
+
+/* Check if a given cell on the screen contains part of a matched string.  If
+ * it does, return the string, and store the match tag in the optional tag
+ * argument. */
+static char *
+vte_terminal_match_check_internal_vte(VteTerminal *terminal,
+                                      long column, glong row,
+                                      int *tag, int *start, int *end)
+{
+       struct _vte_regex_match matches[256];
+       guint i, j;
+       gint k;
+       gint start_blank, end_blank;
+       int ret, offset;
+       struct vte_match_regex *regex = NULL;
+       struct _VteCharAttributes *attr = NULL;
+       gssize sattr, eattr;
+       gchar *line, eol;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Checking for match at (%ld,%ld).\n", row, column);
+       *tag = -1;
+       if (start != NULL) {
+               *start = 0;
+       }
+       if (end != NULL) {
+               *end = 0;
+       }
+       /* Map the pointer position to a portion of the string. */
+       eattr = terminal->pvt->match_attributes->len;
+       for (offset = eattr; offset--; ) {
+               attr = &g_array_index(terminal->pvt->match_attributes,
+                                     struct _VteCharAttributes,
+                                     offset);
+               if (row < attr->row) {
+                       eattr = offset;
+               }
+               if (row == attr->row &&
+                   column == attr->column &&
+                   terminal->pvt->match_contents[offset] != ' ') {
+                       break;
+               }
+       }
+
+       _VTE_DEBUG_IF(VTE_DEBUG_EVENTS) {
+               if (offset < 0)
+                       g_printerr("Cursor is not on a character.\n");
+               else
+                       g_printerr("Cursor is on character '%c' at %d.\n",
+                                       g_utf8_get_char (terminal->pvt->match_contents + offset),
+                                       offset);
+       }
+
+       /* If the pointer isn't on a matchable character, bug out. */
+       if (offset < 0) {
+               return NULL;
+       }
+
+       /* If the pointer is on a newline, bug out. */
+       if ((g_ascii_isspace(terminal->pvt->match_contents[offset])) ||
+           (terminal->pvt->match_contents[offset] == '\0')) {
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Cursor is on whitespace.\n");
+               return NULL;
+       }
+
+       /* Snip off any final newlines. */
+       while (terminal->pvt->match_contents[eattr] == '\n' ||
+                       terminal->pvt->match_contents[eattr] == '\0') {
+               eattr--;
+       }
+       /* and scan forwards to find the end of this line */
+       while (!(terminal->pvt->match_contents[eattr] == '\n' ||
+                       terminal->pvt->match_contents[eattr] == '\0')) {
+               eattr++;
+       }
+
+       /* find the start of row */
+       if (row == 0) {
+               sattr = 0;
+       } else {
+               for (sattr = offset; sattr > 0; sattr--) {
+                       attr = &g_array_index(terminal->pvt->match_attributes,
+                                             struct _VteCharAttributes,
+                                             sattr);
+                       if (row > attr->row) {
+                               break;
+                       }
+               }
+       }
+       /* Scan backwards to find the start of this line */
+       while (sattr > 0 &&
+               ! (terminal->pvt->match_contents[sattr] == '\n' ||
+                   terminal->pvt->match_contents[sattr] == '\0')) {
+               sattr--;
+       }
+       /* and skip any initial newlines. */
+       while (terminal->pvt->match_contents[sattr] == '\n' ||
+               terminal->pvt->match_contents[sattr] == '\0') {
+               sattr++;
+       }
+       if (eattr <= sattr) { /* blank line */
+               return NULL;
+       }
+       if (eattr <= offset || sattr > offset) {
+               /* nothing to match on this line */
+               return NULL;
+       }
+       offset -= sattr;
+       eattr -= sattr;
+
+       /* temporarily shorten the contents to this row */
+       line = terminal->pvt->match_contents + sattr;
+       eol = line[eattr];
+       line[eattr] = '\0';
+
+       start_blank = 0;
+       end_blank = eattr;
+
+       /* Now iterate over each regex we need to match against. */
+       for (i = 0; i < terminal->pvt->match_regexes->len; i++) {
+               regex = &g_array_index(terminal->pvt->match_regexes,
+                                      struct vte_match_regex,
+                                      i);
+               /* Skip holes. */
+               if (regex->tag < 0) {
+                       continue;
+               }
+               /* We'll only match the first item in the buffer which
+                * matches, so we'll have to skip each match until we
+                * stop getting matches. */
+               k = 0;
+               ret = _vte_regex_exec(regex->regex.reg,
+                                     line + k,
+                                     G_N_ELEMENTS(matches),
+                                     matches);
+               while (ret == 0) {
+                       gint ko = offset - k;
+                       gint sblank=G_MININT, eblank=G_MAXINT;
+                       for (j = 0;
+                            j < G_N_ELEMENTS(matches) &&
+                            matches[j].rm_so != -1;
+                            j++) {
+                               /* The offsets should be "sane". */
+                               g_assert(matches[j].rm_so + k < eattr);
+                               g_assert(matches[j].rm_eo + k <= eattr);
+                               _VTE_DEBUG_IF(VTE_DEBUG_MISC) {
+                                       gchar *match;
+                                       struct _VteCharAttributes *_sattr, *_eattr;
+                                       match = g_strndup(line + matches[j].rm_so + k,
+                                                       matches[j].rm_eo - matches[j].rm_so);
+                                       _sattr = &g_array_index(terminal->pvt->match_attributes,
+                                                       struct _VteCharAttributes,
+                                                       matches[j].rm_so + k);
+                                       _eattr = &g_array_index(terminal->pvt->match_attributes,
+                                                       struct _VteCharAttributes,
+                                                       matches[j].rm_eo + k - 1);
+                                       g_printerr("Match %u `%s' from %d(%ld,%ld) to %d(%ld,%ld) (%d).\n",
+                                                       j, match,
+                                                       matches[j].rm_so + k,
+                                                       _sattr->column,
+                                                       _sattr->row,
+                                                       matches[j].rm_eo + k - 1,
+                                                       _eattr->column,
+                                                       _eattr->row,
+                                                       offset);
+                                       g_free(match);
+
+                               }
+                               /* If the pointer is in this substring,
+                                * then we're done. */
+                               if (ko >= matches[j].rm_so &&
+                                   ko < matches[j].rm_eo) {
+                                       gchar *result;
+                                       if (tag != NULL) {
+                                               *tag = regex->tag;
+                                       }
+                                       if (start != NULL) {
+                                               *start = sattr + k + matches[j].rm_so;
+                                       }
+                                       if (end != NULL) {
+                                               *end = sattr + k + matches[j].rm_eo - 1;
+                                       }
+                                        vte_terminal_set_cursor_from_regex_match(terminal, regex);
+                                       result = g_strndup(line + k + matches[j].rm_so,
+                                                        matches[j].rm_eo - matches[j].rm_so);
+                                       line[eattr] = eol;
+                                       return result;
+                               }
+                               if (ko > matches[j].rm_eo &&
+                                               matches[j].rm_eo > sblank) {
+                                       sblank = matches[j].rm_eo;
+                               }
+                               if (ko < matches[j].rm_so &&
+                                               matches[j].rm_so < eblank) {
+                                       eblank = matches[j].rm_so;
+                               }
+                       }
+                       if (k + sblank > start_blank) {
+                               start_blank = k + sblank;
+                       }
+                       if (k + eblank < end_blank) {
+                               end_blank = k + eblank;
+                       }
+                       /* Skip past the beginning of this match to
+                        * look for more. */
+                       k += matches[0].rm_so + 1;
+                       if (k > offset) {
+                               break;
+                       }
+                       ret = _vte_regex_exec(regex->regex.reg,
+                                             line + k,
+                                             G_N_ELEMENTS(matches),
+                                             matches);
+               }
+       }
+       line[eattr] = eol;
+       if (start != NULL) {
+               *start = sattr + start_blank;
+       }
+       if (end != NULL) {
+               *end = sattr + end_blank;
+       }
+       return NULL;
+}
+
+/* Check if a given cell on the screen contains part of a matched string.  If
+ * it does, return the string, and store the match tag in the optional tag
+ * argument. */
+static char *
+vte_terminal_match_check_internal_gregex(VteTerminal *terminal,
+                                         long column, glong row,
+                                         int *tag, int *start, int *end)
+{
+       gint start_blank, end_blank;
+        guint i;
+       int offset;
+       struct vte_match_regex *regex = NULL;
+       struct _VteCharAttributes *attr = NULL;
+       gssize sattr, eattr;
+       gchar *line, eol;
+        GMatchInfo *match_info;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Checking for gregex match at (%ld,%ld).\n", row, column);
+       *tag = -1;
+       if (start != NULL) {
+               *start = 0;
+       }
+       if (end != NULL) {
+               *end = 0;
+       }
+       /* Map the pointer position to a portion of the string. */
+       eattr = terminal->pvt->match_attributes->len;
+       for (offset = eattr; offset--; ) {
+               attr = &g_array_index(terminal->pvt->match_attributes,
+                                     struct _VteCharAttributes,
+                                     offset);
+               if (row < attr->row) {
+                       eattr = offset;
+               }
+               if (row == attr->row &&
+                   column == attr->column &&
+                   terminal->pvt->match_contents[offset] != ' ') {
+                       break;
+               }
+       }
+
+       _VTE_DEBUG_IF(VTE_DEBUG_EVENTS) {
+               if (offset < 0)
+                       g_printerr("Cursor is not on a character.\n");
+               else
+                       g_printerr("Cursor is on character '%c' at %d.\n",
+                                       g_utf8_get_char (terminal->pvt->match_contents + offset),
+                                       offset);
+       }
+
+       /* If the pointer isn't on a matchable character, bug out. */
+       if (offset < 0) {
+               return NULL;
+       }
+
+       /* If the pointer is on a newline, bug out. */
+       if ((g_ascii_isspace(terminal->pvt->match_contents[offset])) ||
+           (terminal->pvt->match_contents[offset] == '\0')) {
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Cursor is on whitespace.\n");
+               return NULL;
+       }
+
+       /* Snip off any final newlines. */
+       while (terminal->pvt->match_contents[eattr] == '\n' ||
+                       terminal->pvt->match_contents[eattr] == '\0') {
+               eattr--;
+       }
+       /* and scan forwards to find the end of this line */
+       while (!(terminal->pvt->match_contents[eattr] == '\n' ||
+                       terminal->pvt->match_contents[eattr] == '\0')) {
+               eattr++;
+       }
+
+       /* find the start of row */
+       if (row == 0) {
+               sattr = 0;
+       } else {
+               for (sattr = offset; sattr > 0; sattr--) {
+                       attr = &g_array_index(terminal->pvt->match_attributes,
+                                             struct _VteCharAttributes,
+                                             sattr);
+                       if (row > attr->row) {
+                               break;
+                       }
+               }
+       }
+       /* Scan backwards to find the start of this line */
+       while (sattr > 0 &&
+               ! (terminal->pvt->match_contents[sattr] == '\n' ||
+                   terminal->pvt->match_contents[sattr] == '\0')) {
+               sattr--;
+       }
+       /* and skip any initial newlines. */
+       while (terminal->pvt->match_contents[sattr] == '\n' ||
+               terminal->pvt->match_contents[sattr] == '\0') {
+               sattr++;
+       }
+       if (eattr <= sattr) { /* blank line */
+               return NULL;
+       }
+       if (eattr <= offset || sattr > offset) {
+               /* nothing to match on this line */
+               return NULL;
+       }
+       offset -= sattr;
+       eattr -= sattr;
+
+       /* temporarily shorten the contents to this row */
+       line = terminal->pvt->match_contents + sattr;
+       eol = line[eattr];
+       line[eattr] = '\0';
+
+       start_blank = 0;
+       end_blank = eattr;
+
+       /* Now iterate over each regex we need to match against. */
+       for (i = 0; i < terminal->pvt->match_regexes->len; i++) {
+               regex = &g_array_index(terminal->pvt->match_regexes,
+                                      struct vte_match_regex,
+                                      i);
+               /* Skip holes. */
+               if (regex->tag < 0) {
+                       continue;
+               }
+               /* We'll only match the first item in the buffer which
+                * matches, so we'll have to skip each match until we
+                * stop getting matches. */
+                if (!g_regex_match_full(regex->regex.gregex.regex,
+                                        line, -1, 0,
+                                        regex->regex.gregex.flags,
+                                        &match_info,
+                                        NULL)) {
+                        g_match_info_free(match_info);
+                        continue;
+                }
+
+                while (g_match_info_matches(match_info)) {
+                       gint ko = offset;
+                       gint sblank=G_MININT, eblank=G_MAXINT;
+                        gint rm_so, rm_eo;
+
+                        if (g_match_info_fetch_pos (match_info, 0, &rm_so, &rm_eo)) {
+                               /* The offsets should be "sane". */
+                               g_assert(rm_so < eattr);
+                               g_assert(rm_eo <= eattr);
+                               _VTE_DEBUG_IF(VTE_DEBUG_MISC) {
+                                       gchar *match;
+                                       struct _VteCharAttributes *_sattr, *_eattr;
+                                       match = g_strndup(line + rm_so, rm_eo - rm_so);
+                                       _sattr = &g_array_index(terminal->pvt->match_attributes,
+                                                       struct _VteCharAttributes,
+                                                       rm_so);
+                                       _eattr = &g_array_index(terminal->pvt->match_attributes,
+                                                       struct _VteCharAttributes,
+                                                       rm_eo - 1);
+                                       g_printerr("Match `%s' from %d(%ld,%ld) to %d(%ld,%ld) (%d).\n",
+                                                       match,
+                                                       rm_so,
+                                                       _sattr->column,
+                                                       _sattr->row,
+                                                       rm_eo - 1,
+                                                       _eattr->column,
+                                                       _eattr->row,
+                                                       offset);
+                                       g_free(match);
+
+                               }
+                               /* If the pointer is in this substring,
+                                * then we're done. */
+                               if (ko >= rm_so &&
+                                   ko < rm_eo) {
+                                       gchar *result;
+                                       if (tag != NULL) {
+                                               *tag = regex->tag;
+                                       }
+                                       if (start != NULL) {
+                                               *start = sattr + rm_so;
+                                       }
+                                       if (end != NULL) {
+                                               *end = sattr + rm_eo - 1;
+                                       }
+                                        vte_terminal_set_cursor_from_regex_match(terminal, regex);
+                                        result = g_match_info_fetch(match_info, 0);
+                                       line[eattr] = eol;
+
+                                        g_match_info_free(match_info);
+                                       return result;
+                               }
+                               if (ko > rm_eo &&
+                                               rm_eo > sblank) {
+                                       sblank = rm_eo;
+                               }
+                               if (ko < rm_so &&
+                                               rm_so < eblank) {
+                                       eblank = rm_so;
+                               }
+                       }
+                       if (sblank > start_blank) {
+                               start_blank = sblank;
+                       }
+                       if (eblank < end_blank) {
+                               end_blank = eblank;
+                       }
+
+                        g_match_info_next(match_info, NULL);
+               }
+
+                g_match_info_free(match_info);
+       }
+       line[eattr] = eol;
+       if (start != NULL) {
+               *start = sattr + start_blank;
+       }
+       if (end != NULL) {
+               *end = sattr + end_blank;
+       }
+       return NULL;
+}
+
+static char *
+vte_terminal_match_check_internal(VteTerminal *terminal,
+                                  long column, glong row,
+                                  int *tag, int *start, int *end)
+{
+       if (terminal->pvt->match_contents == NULL) {
+               vte_terminal_match_contents_refresh(terminal);
+       }
+
+        if (terminal->pvt->match_regex_mode == VTE_REGEX_GREGEX)
+                return vte_terminal_match_check_internal_gregex(terminal, column, row, tag, start, end);
+        if (terminal->pvt->match_regex_mode == VTE_REGEX_VTE)
+                return vte_terminal_match_check_internal_vte(terminal, column, row, tag, start, end);
+        return NULL;
+}
+
+static gboolean
+rowcol_inside_match (VteTerminal *terminal, glong row, glong col)
+{
+       if (terminal->pvt->match_start.row == terminal->pvt->match_end.row) {
+               return row == terminal->pvt->match_start.row &&
+                       col >= terminal->pvt->match_start.col &&
+                       col <= terminal->pvt->match_end.col;
+       } else {
+               if (row < terminal->pvt->match_start.row ||
+                               row > terminal->pvt->match_end.row) {
+                       return FALSE;
+               }
+               if (row == terminal->pvt->match_start.row) {
+                       return col >= terminal->pvt->match_start.col;
+               }
+               if (row == terminal->pvt->match_end.row) {
+                       return col <= terminal->pvt->match_end.col;
+               }
+               return TRUE;
+       }
+}
+
+/**
+ * vte_terminal_match_check:
+ * @terminal: a #VteTerminal
+ * @column: the text column
+ * @row: the text row
+ * @tag: (out) (allow-none): a location to store the tag, or %NULL
+ *
+ * Checks if the text in and around the specified position matches any of the
+ * regular expressions previously set using vte_terminal_match_add().  If a
+ * match exists, the text string is returned and if @tag is not %NULL, the number
+ * associated with the matched regular expression will be stored in @tag.
+ *
+ * If more than one regular expression has been set with
+ * vte_terminal_match_add(), then expressions are checked in the order in
+ * which they were added.
+ *
+ * Returns: (transfer full): a newly allocated string which matches one of the previously
+ *   set regular expressions
+ */
+char *
+vte_terminal_match_check(VteTerminal *terminal, glong column, glong row,
+                        int *tag)
+{
+       long delta;
+       char *ret;
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       delta = terminal->pvt->screen->scroll_delta;
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Checking for match at (%ld,%ld).\n",
+                       row, column);
+       if (rowcol_inside_match (terminal, row + delta, column)) {
+               if (tag) {
+                       *tag = terminal->pvt->match_tag;
+               }
+               ret = terminal->pvt->match != NULL ?
+                       g_strdup (terminal->pvt->match) :
+                       NULL;
+       } else {
+               ret = vte_terminal_match_check_internal(terminal,
+                               column, row + delta,
+                               tag, NULL, NULL);
+       }
+       _VTE_DEBUG_IF(VTE_DEBUG_EVENTS) {
+               if (ret != NULL) g_printerr("Matched `%s'.\n", ret);
+       }
+       return ret;
+}
+
+/* Emit an adjustment changed signal on our adjustment object. */
+static void
+vte_terminal_emit_adjustment_changed(VteTerminal *terminal)
+{
+       if (terminal->pvt->adjustment_changed_pending) {
+               VteScreen *screen = terminal->pvt->screen;
+               gboolean changed = FALSE;
+               glong v;
+               gdouble current;
+
+               g_object_freeze_notify (G_OBJECT (terminal->adjustment));
+
+               v = _vte_ring_delta (screen->row_data);
+               current = gtk_adjustment_get_lower(terminal->adjustment);
+               if (current != v) {
+                       _vte_debug_print(VTE_DEBUG_ADJ,
+                                       "Changing lower bound from %.0f to %ld\n",
+                                        current, v);
+                       gtk_adjustment_set_lower(terminal->adjustment, v);
+                       changed = TRUE;
+               }
+
+               /* The upper value is the number of rows which might be visible.  (Add
+                * one to the cursor offset because it's zero-based.) */
+               v = MAX(_vte_ring_next(screen->row_data),
+                               screen->cursor_current.row + 1);
+               current = gtk_adjustment_get_upper(terminal->adjustment);
+               if (current != v) {
+                       _vte_debug_print(VTE_DEBUG_ADJ,
+                                       "Changing upper bound from %.0f to %ld\n",
+                                        current, v);
+                       gtk_adjustment_set_upper(terminal->adjustment, v);
+                       changed = TRUE;
+               }
+
+               g_object_thaw_notify (G_OBJECT (terminal->adjustment));
+
+               if (changed)
+                       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                                       "Emitting adjustment_changed.\n");
+               terminal->pvt->adjustment_changed_pending = FALSE;
+       }
+       if (terminal->pvt->adjustment_value_changed_pending) {
+               glong v, delta;
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting adjustment_value_changed.\n");
+               terminal->pvt->adjustment_value_changed_pending = FALSE;
+               v = round (gtk_adjustment_get_value(terminal->adjustment));
+               if (v != terminal->pvt->screen->scroll_delta) {
+                       /* this little dance is so that the scroll_delta is
+                        * updated immediately, but we still handled scrolling
+                        * via the adjustment - e.g. user interaction with the
+                        * scrollbar
+                        */
+                       delta = terminal->pvt->screen->scroll_delta;
+                       terminal->pvt->screen->scroll_delta = v;
+                       gtk_adjustment_set_value(terminal->adjustment, delta);
+               }
+       }
+}
+
+/* Queue an adjustment-changed signal to be delivered when convenient. */
+static inline void
+vte_terminal_queue_adjustment_changed(VteTerminal *terminal)
+{
+       terminal->pvt->adjustment_changed_pending = TRUE;
+       add_update_timeout (terminal);
+}
+
+static void
+vte_terminal_queue_adjustment_value_changed(VteTerminal *terminal, glong v)
+{
+       if (v != terminal->pvt->screen->scroll_delta) {
+               terminal->pvt->screen->scroll_delta = v;
+               terminal->pvt->adjustment_value_changed_pending = TRUE;
+               add_update_timeout (terminal);
+       }
+}
+
+static void
+vte_terminal_queue_adjustment_value_changed_clamped(VteTerminal *terminal, glong v)
+{
+       gdouble lower, upper;
+
+       lower = gtk_adjustment_get_lower(terminal->adjustment);
+       upper = gtk_adjustment_get_upper(terminal->adjustment);
+
+       v = CLAMP(v, lower, MAX (lower, upper - terminal->row_count));
+
+       vte_terminal_queue_adjustment_value_changed (terminal, v);
+}
+
+
+void
+_vte_terminal_adjust_adjustments(VteTerminal *terminal)
+{
+       VteScreen *screen;
+       long delta;
+
+       g_assert(terminal->pvt->screen != NULL);
+       g_assert(terminal->pvt->screen->row_data != NULL);
+
+       vte_terminal_queue_adjustment_changed(terminal);
+
+       /* The lower value should be the first row in the buffer. */
+       screen = terminal->pvt->screen;
+       delta = _vte_ring_delta(screen->row_data);
+       /* Snap the insert delta and the cursor position to be in the visible
+        * area.  Leave the scrolling delta alone because it will be updated
+        * when the adjustment changes. */
+       screen->insert_delta = MAX(screen->insert_delta, delta);
+       screen->cursor_current.row = MAX(screen->cursor_current.row,
+                                        screen->insert_delta);
+
+       if (screen->scroll_delta > screen->insert_delta) {
+               vte_terminal_queue_adjustment_value_changed(terminal,
+                               screen->insert_delta);
+       }
+}
+
+/* Update the adjustment field of the widget.  This function should be called
+ * whenever we add rows to or remove rows from the history or switch screens. */
+static void
+_vte_terminal_adjust_adjustments_full (VteTerminal *terminal)
+{
+       gboolean changed = FALSE;
+       gdouble v;
+
+       g_assert(terminal->pvt->screen != NULL);
+       g_assert(terminal->pvt->screen->row_data != NULL);
+
+       _vte_terminal_adjust_adjustments(terminal);
+
+        g_object_freeze_notify(G_OBJECT(terminal->adjustment));
+
+       /* The step increment should always be one. */
+       v = gtk_adjustment_get_step_increment(terminal->adjustment);
+       if (v != 1) {
+               _vte_debug_print(VTE_DEBUG_ADJ,
+                               "Changing step increment from %.0lf to %ld\n",
+                               v, terminal->row_count);
+               gtk_adjustment_set_step_increment(terminal->adjustment, 1);
+               changed = TRUE;
+       }
+
+       /* Set the number of rows the user sees to the number of rows the
+        * user sees. */
+       v = gtk_adjustment_get_page_size(terminal->adjustment);
+       if (v != terminal->row_count) {
+               _vte_debug_print(VTE_DEBUG_ADJ,
+                               "Changing page size from %.0f to %ld\n",
+                                v, terminal->row_count);
+               gtk_adjustment_set_page_size(terminal->adjustment,
+                                            terminal->row_count);
+               changed = TRUE;
+       }
+
+       /* Clicking in the empty area should scroll one screen, so set the
+        * page size to the number of visible rows. */
+       v = gtk_adjustment_get_page_increment(terminal->adjustment);
+       if (v != terminal->row_count) {
+               _vte_debug_print(VTE_DEBUG_ADJ,
+                               "Changing page increment from "
+                               "%.0f to %ld\n",
+                               v, terminal->row_count);
+               gtk_adjustment_set_page_increment(terminal->adjustment,
+                                                 terminal->row_count);
+               changed = TRUE;
+       }
+
+       g_object_thaw_notify(G_OBJECT(terminal->adjustment));
+
+       if (changed)
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting adjustment_changed.\n");
+}
+
+/* Scroll a fixed number of lines up or down in the current screen. */
+static void
+vte_terminal_scroll_lines(VteTerminal *terminal, gint lines)
+{
+       glong destination;
+       _vte_debug_print(VTE_DEBUG_ADJ, "Scrolling %d lines.\n", lines);
+       /* Calculate the ideal position where we want to be before clamping. */
+       destination = terminal->pvt->screen->scroll_delta;
+       destination += lines;
+       /* Tell the scrollbar to adjust itself. */
+       vte_terminal_queue_adjustment_value_changed_clamped (terminal, destination);
+}
+
+/* Scroll a fixed number of pages up or down, in the current screen. */
+static void
+vte_terminal_scroll_pages(VteTerminal *terminal, gint pages)
+{
+       vte_terminal_scroll_lines(terminal, pages * terminal->row_count);
+}
+
+/* Scroll so that the scroll delta is the minimum value. */
+static void
+vte_terminal_maybe_scroll_to_top(VteTerminal *terminal)
+{
+       vte_terminal_queue_adjustment_value_changed (terminal,
+                       _vte_ring_delta(terminal->pvt->screen->row_data));
+}
+
+static void
+vte_terminal_maybe_scroll_to_bottom(VteTerminal *terminal)
+{
+       glong delta;
+       delta = terminal->pvt->screen->insert_delta;
+       vte_terminal_queue_adjustment_value_changed (terminal, delta);
+       _vte_debug_print(VTE_DEBUG_ADJ,
+                       "Snapping to bottom of screen\n");
+}
+
+static void
+_vte_terminal_setup_utf8 (VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+        GError *error = NULL;
+
+        if (!vte_pty_set_utf8(pvt->pty,
+                              strcmp(terminal->pvt->encoding, "UTF-8") == 0,
+                              &error)) {
+                g_warning ("Failed to set UTF8 mode: %s\n", error->message);
+                g_error_free (error);
+        }
+}
+
+/**
+ * vte_terminal_set_encoding:
+ * @terminal: a #VteTerminal
+ * @codeset: (allow-none): a valid #GIConv target, or %NULL to use the default encoding
+ *
+ * Changes the encoding the terminal will expect data from the child to
+ * be encoded with.  For certain terminal types, applications executing in the
+ * terminal can change the encoding.  The default encoding is defined by the
+ * application's locale settings.
+ */
+void
+vte_terminal_set_encoding(VteTerminal *terminal, const char *codeset)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+       const char *old_codeset;
+       VteConv conv;
+       char *obuf1, *obuf2;
+       gsize bytes_written;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+       old_codeset = pvt->encoding;
+       if (codeset == NULL) {
+               g_get_charset(&codeset);
+       }
+       if ((old_codeset != NULL) && (strcmp(codeset, old_codeset) == 0)) {
+               /* Nothing to do! */
+               return;
+       }
+
+        g_object_freeze_notify(object);
+
+       /* Open new conversions. */
+       conv = _vte_conv_open(codeset, "UTF-8");
+       if (conv == VTE_INVALID_CONV) {
+               g_warning(_("Unable to convert characters from %s to %s."),
+                         "UTF-8", codeset);
+               /* fallback to no conversion */
+               conv = _vte_conv_open(codeset = "UTF-8", "UTF-8");
+       }
+       if (terminal->pvt->outgoing_conv != VTE_INVALID_CONV) {
+               _vte_conv_close(terminal->pvt->outgoing_conv);
+       }
+       terminal->pvt->outgoing_conv = conv;
+
+       /* Set the terminal's encoding to the new value. */
+       terminal->pvt->encoding = g_intern_string(codeset);
+
+       /* Convert any buffered output bytes. */
+       if ((_vte_buffer_length(terminal->pvt->outgoing) > 0) &&
+           (old_codeset != NULL)) {
+               /* Convert back to UTF-8. */
+               obuf1 = g_convert((gchar *)terminal->pvt->outgoing->data,
+                                 _vte_buffer_length(terminal->pvt->outgoing),
+                                 "UTF-8",
+                                 old_codeset,
+                                 NULL,
+                                 &bytes_written,
+                                 NULL);
+               if (obuf1 != NULL) {
+                       /* Convert to the new encoding. */
+                       obuf2 = g_convert(obuf1,
+                                         bytes_written,
+                                         codeset,
+                                         "UTF-8",
+                                         NULL,
+                                         &bytes_written,
+                                         NULL);
+                       if (obuf2 != NULL) {
+                               _vte_buffer_clear(terminal->pvt->outgoing);
+                               _vte_buffer_append(terminal->pvt->outgoing,
+                                                  obuf2, bytes_written);
+                               g_free(obuf2);
+                       }
+                       g_free(obuf1);
+               }
+       }
+
+       /* Set the encoding for incoming text. */
+       _vte_iso2022_state_set_codeset(terminal->pvt->iso2022,
+                                      terminal->pvt->encoding);
+
+       _vte_debug_print(VTE_DEBUG_IO,
+                       "Set terminal encoding to `%s'.\n",
+                       terminal->pvt->encoding);
+       vte_terminal_emit_encoding_changed(terminal);
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_terminal_get_encoding:
+ * @terminal: a #VteTerminal
+ *
+ * Determines the name of the encoding in which the terminal expects data to be
+ * encoded.
+ *
+ * Returns: (transfer none): the current encoding for the terminal
+ */
+const char *
+vte_terminal_get_encoding(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return terminal->pvt->encoding;
+}
+
+static inline VteRowData *
+vte_terminal_insert_rows (VteTerminal *terminal, guint cnt)
+{
+       VteRowData *row;
+       do {
+               row = _vte_terminal_ring_append (terminal, FALSE);
+       } while(--cnt);
+       return row;
+}
+
+
+/* Make sure we have enough rows and columns to hold data at the current
+ * cursor position. */
+VteRowData *
+_vte_terminal_ensure_row (VteTerminal *terminal)
+{
+       VteRowData *row;
+       VteScreen *screen;
+       gint delta;
+       glong v;
+
+       /* Must make sure we're in a sane area. */
+       screen = terminal->pvt->screen;
+       v = screen->cursor_current.row;
+
+       /* Figure out how many rows we need to add. */
+       delta = v - _vte_ring_next(screen->row_data) + 1;
+       if (delta > 0) {
+               row = vte_terminal_insert_rows (terminal, delta);
+               _vte_terminal_adjust_adjustments(terminal);
+       } else {
+               /* Find the row the cursor is in. */
+               row = _vte_ring_index_writable (screen->row_data, v);
+       }
+       g_assert(row != NULL);
+
+       return row;
+}
+
+static VteRowData *
+vte_terminal_ensure_cursor(VteTerminal *terminal)
+{
+       VteRowData *row;
+
+       row = _vte_terminal_ensure_row (terminal);
+       _vte_row_data_fill (row, &basic_cell.cell, terminal->pvt->screen->cursor_current.col);
+
+       return row;
+}
+
+/* Update the insert delta so that the screen which includes it also
+ * includes the end of the buffer. */
+void
+_vte_terminal_update_insert_delta(VteTerminal *terminal)
+{
+       long delta, rows;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       /* The total number of lines.  Add one to the cursor offset
+        * because it's zero-based. */
+       rows = _vte_ring_next (screen->row_data);
+       delta = screen->cursor_current.row - rows + 1;
+       if (G_UNLIKELY (delta > 0)) {
+               vte_terminal_insert_rows (terminal, delta);
+               rows = _vte_ring_next (screen->row_data);
+       }
+
+       /* Make sure that the bottom row is visible, and that it's in
+        * the buffer (even if it's empty).  This usually causes the
+        * top row to become a history-only row. */
+       delta = screen->insert_delta;
+       delta = MIN(delta, rows - terminal->row_count);
+       delta = MAX(delta,
+                   screen->cursor_current.row - (terminal->row_count - 1));
+       delta = MAX(delta, _vte_ring_delta(screen->row_data));
+
+       /* Adjust the insert delta and scroll if needed. */
+       if (delta != screen->insert_delta) {
+               screen->insert_delta = delta;
+               _vte_terminal_adjust_adjustments(terminal);
+       }
+}
+
+/* Show or hide the pointer. */
+void
+_vte_terminal_set_pointer_visible(VteTerminal *terminal, gboolean visible)
+{
+       GdkWindow *window;
+       struct vte_match_regex *regex = NULL;
+
+       terminal->pvt->mouse_cursor_visible = visible;
+
+        if (! gtk_widget_get_realized (&terminal->widget))
+                return;
+
+       window = gtk_widget_get_window (&terminal->widget);
+
+       if (visible || !terminal->pvt->mouse_autohide) {
+               if (terminal->pvt->mouse_tracking_mode) {
+                       _vte_debug_print(VTE_DEBUG_CURSOR,
+                                       "Setting mousing cursor.\n");
+                       gdk_window_set_cursor (window, terminal->pvt->mouse_mousing_cursor);
+               } else
+               if ( (guint)terminal->pvt->match_tag < terminal->pvt->match_regexes->len) {
+                       regex = &g_array_index(terminal->pvt->match_regexes,
+                                              struct vte_match_regex,
+                                              terminal->pvt->match_tag);
+                        vte_terminal_set_cursor_from_regex_match(terminal, regex);
+               } else {
+                       _vte_debug_print(VTE_DEBUG_CURSOR,
+                                       "Setting default mouse cursor.\n");
+                       gdk_window_set_cursor (window, terminal->pvt->mouse_default_cursor);
+               }
+       } else {
+               _vte_debug_print(VTE_DEBUG_CURSOR,
+                               "Setting to invisible cursor.\n");
+               gdk_window_set_cursor (window, terminal->pvt->mouse_inviso_cursor);
+       }
+}
+
+/**
+ * vte_terminal_new:
+ *
+ * Creates a new terminal widget.
+ *
+ * Returns: (transfer full) (type Vte.Terminal): a new #VteTerminal object
+ */
+GtkWidget *
+vte_terminal_new(void)
+{
+       return g_object_new(VTE_TYPE_TERMINAL, NULL);
+}
+
+/* Set up a palette entry with a more-or-less match for the requested color. */
+static void
+vte_terminal_set_color_internal(VteTerminal *terminal, int entry,
+                               const GdkColor *proposed)
+{
+       PangoColor *color;
+
+       color = &terminal->pvt->palette[entry];
+
+       if (color->red == proposed->red &&
+           color->green == proposed->green &&
+           color->blue == proposed->blue) {
+               return;
+       }
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set color[%d] to (%04x,%04x,%04x).\n", entry,
+                       proposed->red, proposed->green, proposed->blue);
+
+       /* Save the requested color. */
+       color->red = proposed->red;
+       color->green = proposed->green;
+       color->blue = proposed->blue;
+
+       /* If we're not realized yet, there's nothing else to do. */
+       if (! gtk_widget_get_realized (&terminal->widget)) {
+               return;
+       }
+
+       /* If we're setting the background color, set the background color
+        * on the widget as well. */
+       if (entry == VTE_DEF_BG) {
+               vte_terminal_queue_background_update(terminal);
+       }
+
+       /* and redraw */
+       if (entry == VTE_CUR_BG)
+               _vte_invalidate_cursor_once(terminal, FALSE);
+       else
+               _vte_invalidate_all (terminal);
+}
+
+static void
+vte_terminal_generate_bold(const PangoColor *foreground,
+                          const PangoColor *background,
+                          double factor,
+                          GdkColor *bold)
+{
+       double fy, fcb, fcr, by, bcb, bcr, r, g, b;
+       g_assert(foreground != NULL);
+       g_assert(background != NULL);
+       g_assert(bold != NULL);
+       fy =   0.2990 * foreground->red +
+              0.5870 * foreground->green +
+              0.1140 * foreground->blue;
+       fcb = -0.1687 * foreground->red +
+             -0.3313 * foreground->green +
+              0.5000 * foreground->blue;
+       fcr =  0.5000 * foreground->red +
+             -0.4187 * foreground->green +
+             -0.0813 * foreground->blue;
+       by =   0.2990 * background->red +
+              0.5870 * background->green +
+              0.1140 * background->blue;
+       bcb = -0.1687 * background->red +
+             -0.3313 * background->green +
+              0.5000 * background->blue;
+       bcr =  0.5000 * background->red +
+             -0.4187 * background->green +
+             -0.0813 * background->blue;
+       fy = (factor * fy) + ((1.0 - factor) * by);
+       fcb = (factor * fcb) + ((1.0 - factor) * bcb);
+       fcr = (factor * fcr) + ((1.0 - factor) * bcr);
+       r = fy + 1.402 * fcr;
+       g = fy + 0.34414 * fcb - 0.71414 * fcr;
+       b = fy + 1.722 * fcb;
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Calculated bold (%d, %d, %d) = (%lf,%lf,%lf)",
+                       foreground->red, foreground->green, foreground->blue,
+                       r, g, b);
+       bold->pixel = 0;
+       bold->red = CLAMP(r, 0, 0xffff);
+       bold->green = CLAMP(g, 0, 0xffff);
+       bold->blue = CLAMP(b, 0, 0xffff);
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "= (%04x,%04x,%04x).\n",
+                       bold->red, bold->green, bold->blue);
+}
+
+/**
+ * vte_terminal_set_color_bold:
+ * @terminal: a #VteTerminal
+ * @bold: the new bold color
+ *
+ * Sets the color used to draw bold text in the default foreground color.
+ */
+void
+vte_terminal_set_color_bold(VteTerminal *terminal, const GdkColor *bold)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(bold != NULL);
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set bold color to (%04x,%04x,%04x).\n",
+                       bold->red, bold->green, bold->blue);
+       vte_terminal_set_color_internal(terminal, VTE_BOLD_FG, bold);
+}
+
+/**
+ * vte_terminal_set_color_dim:
+ * @terminal: a #VteTerminal
+ * @dim: the new dim color
+ *
+ * Sets the color used to draw dim text in the default foreground color.
+ */
+void
+vte_terminal_set_color_dim(VteTerminal *terminal, const GdkColor *dim)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(dim != NULL);
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set dim color to (%04x,%04x,%04x).\n",
+                       dim->red, dim->green, dim->blue);
+       vte_terminal_set_color_internal(terminal, VTE_DIM_FG, dim);
+}
+
+/**
+ * vte_terminal_set_color_foreground:
+ * @terminal: a #VteTerminal
+ * @foreground: the new foreground color
+ *
+ * Sets the foreground color used to draw normal text
+ */
+void
+vte_terminal_set_color_foreground(VteTerminal *terminal,
+                                 const GdkColor *foreground)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(foreground != NULL);
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set foreground color to (%04x,%04x,%04x).\n",
+                       foreground->red, foreground->green, foreground->blue);
+       vte_terminal_set_color_internal(terminal, VTE_DEF_FG, foreground);
+}
+
+/**
+ * vte_terminal_set_color_background:
+ * @terminal: a #VteTerminal
+ * @background: the new background color
+ *
+ * Sets the background color for text which does not have a specific background
+ * color assigned.  Only has effect when no background image is set and when
+ * the terminal is not transparent.
+ */
+void
+vte_terminal_set_color_background(VteTerminal *terminal,
+                                 const GdkColor *background)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(background != NULL);
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set background color to (%04x,%04x,%04x).\n",
+                       background->red, background->green, background->blue);
+       vte_terminal_set_color_internal(terminal, VTE_DEF_BG, background);
+}
+
+/**
+ * vte_terminal_set_color_cursor:
+ * @terminal: a #VteTerminal
+ * @cursor_background: (allow-none): the new color to use for the text cursor, or %NULL
+ *
+ * Sets the background color for text which is under the cursor.  If %NULL, text
+ * under the cursor will be drawn with foreground and background colors
+ * reversed.
+ *
+ * Since: 0.11.11
+ */
+void
+vte_terminal_set_color_cursor(VteTerminal *terminal,
+                             const GdkColor *cursor_background)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       if (cursor_background != NULL) {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Set cursor color to (%04x,%04x,%04x).\n",
+                               cursor_background->red,
+                               cursor_background->green,
+                               cursor_background->blue);
+               vte_terminal_set_color_internal(terminal, VTE_CUR_BG,
+                                               cursor_background);
+               terminal->pvt->cursor_color_set = TRUE;
+       } else {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Cleared cursor color.\n");
+               terminal->pvt->cursor_color_set = FALSE;
+       }
+}
+
+/**
+ * vte_terminal_set_color_highlight:
+ * @terminal: a #VteTerminal
+ * @highlight_background: (allow-none): the new color to use for highlighted text, or %NULL
+ *
+ * Sets the background color for text which is highlighted.  If %NULL,
+ * highlighted text (which is usually highlighted because it is selected) will
+ * be drawn with foreground and background colors reversed.
+ *
+ * Since: 0.11.11
+ */
+void
+vte_terminal_set_color_highlight(VteTerminal *terminal,
+                                const GdkColor *highlight_background)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       if (highlight_background != NULL) {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Set highlight color to (%04x,%04x,%04x).\n",
+                               highlight_background->red,
+                               highlight_background->green,
+                               highlight_background->blue);
+               vte_terminal_set_color_internal(terminal, VTE_DEF_HL,
+                                               highlight_background);
+               terminal->pvt->highlight_color_set = TRUE;
+       } else {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Cleared highlight color.\n");
+               terminal->pvt->highlight_color_set = FALSE;
+       }
+}
+
+/**
+ * vte_terminal_set_colors:
+ * @terminal: a #VteTerminal
+ * @foreground: (allow-none): the new foreground color, or %NULL
+ * @background: (allow-none): the new background color, or %NULL
+ * @palette: (array length=palette_size zero-terminated=0) (element-type Gdk.Color): the color palette
+ * @palette_size: the number of entries in @palette
+ *
+ * The terminal widget uses a 28-color model comprised of the default foreground
+ * and background colors, the bold foreground color, the dim foreground
+ * color, an eight color palette, bold versions of the eight color palette,
+ * and a dim version of the the eight color palette.
+ *
+ * @palette_size must be either 0, 8, 16, or 24, or between 25 and 255 inclusive.
+ * If @foreground is %NULL and
+ * @palette_size is greater than 0, the new foreground color is taken from
+ * @palette[7].  If @background is %NULL and @palette_size is greater than 0,
+ * the new background color is taken from @palette[0].  If
+ * @palette_size is 8 or 16, the third (dim) and possibly the second (bold)
+ * 8-color palettes are extrapolated from the new background color and the items
+ * in @palette.
+ */
+void
+vte_terminal_set_colors(VteTerminal *terminal,
+                       const GdkColor *foreground,
+                       const GdkColor *background,
+                       const GdkColor *palette,
+                       glong palette_size)
+{
+       guint i;
+       GdkColor color;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       g_return_if_fail(palette_size >= 0);
+       g_return_if_fail((palette_size == 0) ||
+                        (palette_size == 8) ||
+                        (palette_size == 16) ||
+                        (palette_size == 24) ||
+                        (palette_size > 24 && palette_size < 256));
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Set color palette [%ld elements].\n",
+                       palette_size);
+
+       /* Accept NULL as the default foreground and background colors if we
+        * got a palette. */
+       if ((foreground == NULL) && (palette_size >= 8)) {
+               foreground = &palette[7];
+       }
+       if ((background == NULL) && (palette_size >= 8)) {
+               background = &palette[0];
+       }
+
+       memset(&color, 0, sizeof(color));
+
+       /* Initialize each item in the palette if we got any entries to work
+        * with. */
+       for (i=0; i < G_N_ELEMENTS(terminal->pvt->palette); i++) {
+               if (i < 16) {
+                       color.blue = (i & 4) ? 0xc000 : 0;
+                       color.green = (i & 2) ? 0xc000 : 0;
+                       color.red = (i & 1) ? 0xc000 : 0;
+                       if (i > 7) {
+                               color.blue += 0x3fff;
+                               color.green += 0x3fff;
+                               color.red += 0x3fff;
+                       }
+               }
+               else if (i < 232) {
+                       int j = i - 16;
+                       int r = j / 36, g = (j / 6) % 6, b = j % 6;
+                       int red =   (r == 0) ? 0 : r * 40 + 55;
+                       int green = (g == 0) ? 0 : g * 40 + 55;
+                       int blue =  (b == 0) ? 0 : b * 40 + 55;
+                       color.red   = red | red << 8  ;
+                       color.green = green | green << 8;
+                       color.blue  = blue | blue << 8;
+               } else if (i < 256) {
+                       int shade = 8 + (i - 232) * 10;
+                       color.red = color.green = color.blue = shade | shade << 8;
+               }
+               else switch (i) {
+                       case VTE_DEF_BG:
+                               if (background != NULL) {
+                                       color = *background;
+                               } else {
+                                       color.red = 0;
+                                       color.blue = 0;
+                                       color.green = 0;
+                               }
+                               break;
+                       case VTE_DEF_FG:
+                               if (foreground != NULL) {
+                                       color = *foreground;
+                               } else {
+                                       color.red = 0xc000;
+                                       color.blue = 0xc000;
+                                       color.green = 0xc000;
+                               }
+                               break;
+                       case VTE_BOLD_FG:
+                               vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+                                                          &terminal->pvt->palette[VTE_DEF_BG],
+                                                          1.8,
+                                                          &color);
+                               break;
+                       case VTE_DIM_FG:
+                               vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+                                                          &terminal->pvt->palette[VTE_DEF_BG],
+                                                          0.5,
+                                                          &color);
+                               break;
+                       case VTE_DEF_HL:
+                               color.red = 0xc000;
+                               color.blue = 0xc000;
+                               color.green = 0xc000;
+                               break;
+                       case VTE_CUR_BG:
+                               color.red = 0x0000;
+                               color.blue = 0x0000;
+                               color.green = 0x0000;
+                               break;
+                       }
+
+               /* Override from the supplied palette if there is one. */
+               if ((glong) i < palette_size) {
+                       color = palette[i];
+               }
+
+               /* Set up the color entry. */
+               vte_terminal_set_color_internal(terminal, i, &color);
+       }
+
+       /* Track that we had a color palette set. */
+       terminal->pvt->palette_initialized = TRUE;
+}
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+
+static GdkColor *
+gdk_color_from_rgba (GdkColor *color,
+                     const GdkRGBA *rgba)
+{
+        if (rgba == NULL)
+                return NULL;
+
+        color->red = rgba->red * 65535.;
+        color->green = rgba->green * 65535.;
+        color->blue = rgba->blue * 65535.;
+        color->pixel = 0;
+
+       return color;
+}
+
+/**
+ * vte_terminal_set_color_bold_rgba:
+ * @terminal: a #VteTerminal
+ * @bold: (allow-none): the new bold color or %NULL
+ *
+ * Sets the color used to draw bold text in the default foreground color.
+ * If @bold is %NULL then the default color is used.
+ */
+void
+vte_terminal_set_color_bold_rgba(VteTerminal *terminal,
+                                 const GdkRGBA *bold)
+{
+       GdkColor color;
+
+       if (bold == NULL)
+       {
+               vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+                                          &terminal->pvt->palette[VTE_DEF_BG],
+                                          1.8,
+                                          &color);
+       }
+       else
+       {
+               gdk_color_from_rgba(&color, bold);
+       }
+
+       vte_terminal_set_color_bold(terminal, &color);
+}
+
+/**
+ * vte_terminal_set_color_dim_rgba:
+ * @terminal: a #VteTerminal
+ * @dim: (allow-none): the new dim color or %NULL
+ *
+ * Sets the color used to draw dim text in the default foreground color.
+ * If @dim is %NULL then the default color is used.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_dim_rgba(VteTerminal *terminal,
+                                const GdkRGBA *dim)
+{
+       GdkColor color;
+
+       if (dim == NULL)
+       {
+               vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+                                          &terminal->pvt->palette[VTE_DEF_BG],
+                                          0.5,
+                                          &color);
+       }
+       else
+       {
+               gdk_color_from_rgba(&color, dim);
+       }
+
+       vte_terminal_set_color_dim(terminal, &color);
+}
+
+/**
+ * vte_terminal_set_color_foreground_rgba:
+ * @terminal: a #VteTerminal
+ * @foreground: the new foreground color
+ *
+ * Sets the foreground color used to draw normal text.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_foreground_rgba(VteTerminal *terminal,
+                                      const GdkRGBA *foreground)
+{
+       GdkColor color;
+
+       vte_terminal_set_color_foreground(terminal,
+                                          gdk_color_from_rgba(&color, foreground));
+}
+
+/**
+ * vte_terminal_set_color_background_rgba:
+ * @terminal: a #VteTerminal
+ * @background: the new background color
+ *
+ * Sets the background color for text which does not have a specific background
+ * color assigned.  Only has effect when no background image is set and when
+ * the terminal is not transparent.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_background_rgba(VteTerminal *terminal,
+                                      const GdkRGBA *background)
+{
+       GdkColor color;
+
+       vte_terminal_set_color_background(terminal,
+                                          gdk_color_from_rgba (&color, background));
+}
+
+/**
+ * vte_terminal_set_color_cursor_rgba:
+ * @terminal: a #VteTerminal
+ * @cursor_background: (allow-none): the new color to use for the text cursor, or %NULL
+ *
+ * Sets the background color for text which is under the cursor.  If %NULL, text
+ * under the cursor will be drawn with foreground and background colors
+ * reversed.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_cursor_rgba(VteTerminal *terminal,
+                                  const GdkRGBA *cursor_background)
+{
+        GdkColor color;
+
+       vte_terminal_set_color_cursor(terminal,
+                                      gdk_color_from_rgba(&color, cursor_background));
+}
+
+/**
+ * vte_terminal_set_color_highlight_rgba:
+ * @terminal: a #VteTerminal
+ * @highlight_background: (allow-none): the new color to use for highlighted text, or %NULL
+ *
+ * Sets the background color for text which is highlighted.  If %NULL,
+ * highlighted text (which is usually highlighted because it is selected) will
+ * be drawn with foreground and background colors reversed.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_highlight_rgba(VteTerminal *terminal,
+                                     const GdkRGBA *highlight_background)
+{
+       GdkColor color;
+
+       vte_terminal_set_color_highlight(terminal,
+                                         gdk_color_from_rgba(&color, highlight_background));
+}
+
+/**
+ * vte_terminal_set_colors_rgba:
+ * @terminal: a #VteTerminal
+ * @foreground: (allow-none): the new foreground color, or %NULL
+ * @background: (allow-none): the new background color, or %NULL
+ * @palette: (array length=palette_size zero-terminated=0) (element-type Gdk.RGBA): the color palette
+ * @palette_size: the number of entries in @palette
+ *
+ * The terminal widget uses a 28-color model comprised of the default foreground
+ * and background colors, the bold foreground color, the dim foreground
+ * color, an eight color palette, bold versions of the eight color palette,
+ * and a dim version of the the eight color palette.
+ *
+ * @palette_size must be either 0, 8, 16, or 24, or between 25 and 255 inclusive.
+ * If @foreground is %NULL and
+ * @palette_size is greater than 0, the new foreground color is taken from
+ * @palette[7].  If @background is %NULL and @palette_size is greater than 0,
+ * the new background color is taken from @palette[0].  If
+ * @palette_size is 8 or 16, the third (dim) and possibly the second (bold)
+ * 8-color palettes are extrapolated from the new background color and the items
+ * in @palette.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_colors_rgba(VteTerminal *terminal,
+                            const GdkRGBA *foreground,
+                            const GdkRGBA *background,
+                            const GdkRGBA *palette,
+                            gsize palette_size)
+{
+       GdkColor fg, bg, *pal;
+       gsize i;
+
+       pal = g_new (GdkColor, palette_size);
+       for (i = 0; i < palette_size; ++i)
+                gdk_color_from_rgba(&pal[i], &palette[i]);
+
+       vte_terminal_set_colors(terminal,
+                                gdk_color_from_rgba(&fg, foreground),
+                                gdk_color_from_rgba(&bg, background),
+                               pal, palette_size);
+
+       g_free (pal);
+}
+
+#endif /* GTK 3.0 */
+
+/**
+ * vte_terminal_set_opacity:
+ * @terminal: a #VteTerminal
+ * @opacity: the new opacity
+ *
+ * Sets the opacity of the terminal background, were 0 means completely
+ * transparent and 65535 means completely opaque.
+ */
+void
+vte_terminal_set_opacity(VteTerminal *terminal, guint16 opacity)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        if (opacity == pvt->bg_opacity)
+                return;
+
+       pvt->bg_opacity = opacity;
+
+        g_object_notify(G_OBJECT(terminal), "background-opacity");
+}
+
+/**
+ * vte_terminal_set_default_colors:
+ * @terminal: a #VteTerminal
+ *
+ * Reset the terminal palette to reasonable compiled-in default color.
+ */
+void
+vte_terminal_set_default_colors(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       vte_terminal_set_colors(terminal, NULL, NULL, NULL, 0);
+}
+
+
+/* Cleanup smart-tabs.  See vte_sequence_handler_ta() */
+void
+_vte_terminal_cleanup_tab_fragments_at_cursor (VteTerminal *terminal)
+{
+       VteRowData *row = _vte_terminal_ensure_row (terminal);
+       VteScreen *screen = terminal->pvt->screen;
+       long col = screen->cursor_current.col;
+       const VteCell *pcell = _vte_row_data_get (row, col);
+
+       if (G_UNLIKELY (pcell != NULL && pcell->c == '\t')) {
+               long i, num_columns;
+               VteCell *cell = _vte_row_data_get_writable (row, col);
+               
+               _vte_debug_print(VTE_DEBUG_MISC,
+                                "Cleaning tab fragments at %ld",
+                                col);
+
+               /* go back to the beginning of the tab */
+               while (cell->attr.fragment && col > 0)
+                       cell = _vte_row_data_get_writable (row, --col);
+
+               num_columns = cell->attr.columns;
+               for (i = 0; i < num_columns; i++) {
+                       cell = _vte_row_data_get_writable (row, col++);
+                       if (G_UNLIKELY (!cell))
+                         break;
+                       *cell = screen->fill_defaults;
+               }
+       }
+}
+
+/* Cursor down, with scrolling. */
+void
+_vte_terminal_cursor_down (VteTerminal *terminal)
+{
+       long start, end;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       if (screen->scrolling_restricted) {
+               start = screen->insert_delta + screen->scrolling_region.start;
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               start = screen->insert_delta;
+               end = start + terminal->row_count - 1;
+       }
+       if (screen->cursor_current.row == end) {
+               /* Match xterm and fill to the end of row when scrolling. */
+               if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
+                       VteRowData *rowdata;
+                       rowdata = _vte_terminal_ensure_row (terminal);
+                       _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+               }
+
+               if (screen->scrolling_restricted) {
+                       if (start == screen->insert_delta) {
+                               /* Scroll this line into the scrollback
+                                * buffer by inserting a line at the next
+                                * line and scrolling the area up. */
+                               screen->insert_delta++;
+                               screen->scroll_delta++;
+                               screen->cursor_current.row++;
+                               /* update start and end, as they are relative
+                                * to insert_delta. */
+                               start++;
+                               end++;
+                               _vte_terminal_ring_insert (terminal, screen->cursor_current.row, FALSE);
+                               /* Force the areas below the region to be
+                                * redrawn -- they've moved. */
+                               _vte_terminal_scroll_region(terminal, start,
+                                                           end - start + 1, 1);
+                               /* Force scroll. */
+                               _vte_terminal_adjust_adjustments(terminal);
+                       } else {
+                               /* If we're at the bottom of the scrolling
+                                * region, add a line at the top to scroll the
+                                * bottom off. */
+                               _vte_terminal_ring_remove (terminal, start);
+                               _vte_terminal_ring_insert (terminal, end, TRUE);
+                               /* Update the display. */
+                               _vte_terminal_scroll_region(terminal, start,
+                                                          end - start + 1, -1);
+                               _vte_invalidate_cells(terminal,
+                                                     0, terminal->column_count,
+                                                     end - 2, 2);
+                       }
+               } else {
+                       /* Scroll up with history. */
+                       screen->cursor_current.row++;
+                       _vte_terminal_update_insert_delta(terminal);
+               }
+
+               /* Match xterm and fill the new row when scrolling. */
+               if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
+                       VteRowData *rowdata;
+                       rowdata = _vte_terminal_ensure_row (terminal);
+                       _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+               }
+       } else {
+               /* Otherwise, just move the cursor down. */
+               screen->cursor_current.row++;
+       }
+}
+
+/* Insert a single character into the stored data array. */
+gboolean
+_vte_terminal_insert_char(VteTerminal *terminal, gunichar c,
+                        gboolean insert, gboolean invalidate_now)
+{
+       VteCellAttr attr;
+       VteRowData *row;
+       long col;
+       int columns, i;
+       VteScreen *screen;
+       gboolean line_wrapped = FALSE; /* cursor moved before char inserted */
+
+       screen = terminal->pvt->screen;
+       insert |= screen->insert_mode;
+       invalidate_now |= insert;
+
+       /* If we've enabled the special drawing set, map the characters to
+        * Unicode. */
+       if (G_UNLIKELY (screen->alternate_charset)) {
+               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
+                               "Attempting charset substitution"
+                               "for U+%04X.\n", c);
+               /* See if there's a mapping for it. */
+               c = _vte_iso2022_process_single(terminal->pvt->iso2022, c, '0');
+       }
+
+       /* If this character is destined for the status line, save it. */
+       if (G_UNLIKELY (screen->status_line)) {
+               g_string_append_unichar(screen->status_line_contents, c);
+               screen->status_line_changed = TRUE;
+               return FALSE;
+       }
+
+       /* Figure out how many columns this character should occupy. */
+       if (G_UNLIKELY (VTE_ISO2022_HAS_ENCODED_WIDTH(c))) {
+               columns = _vte_iso2022_get_encoded_width(c);
+               c &= ~VTE_ISO2022_ENCODED_WIDTH_MASK;
+       } else {
+               columns = _vte_iso2022_unichar_width(terminal->pvt->iso2022, c);
+       }
+
+
+       /* If we're autowrapping here, do it. */
+       col = screen->cursor_current.col;
+       if (G_UNLIKELY (columns && col + columns > terminal->column_count)) {
+               if (terminal->pvt->flags.am) {
+                       _vte_debug_print(VTE_DEBUG_ADJ,
+                                       "Autowrapping before character\n");
+                       /* Wrap. */
+                       /* XXX clear to the end of line */
+                       col = screen->cursor_current.col = 0;
+                       /* Mark this line as soft-wrapped. */
+                       row = _vte_terminal_ensure_row (terminal);
+                       row->attr.soft_wrapped = 1;
+                       _vte_terminal_cursor_down (terminal);
+               } else {
+                       /* Don't wrap, stay at the rightmost column. */
+                       col = screen->cursor_current.col =
+                               terminal->column_count - columns;
+               }
+               line_wrapped = TRUE;
+       }
+
+       _vte_debug_print(VTE_DEBUG_PARSE,
+                       "Inserting %ld '%c' (%d/%d) (%ld+%d, %ld), delta = %ld; ",
+                       (long)c, c < 256 ? c : ' ',
+                       screen->defaults.attr.fore,
+                       screen->defaults.attr.back,
+                       col, columns, (long)screen->cursor_current.row,
+                       (long)screen->insert_delta);
+
+
+       if (G_UNLIKELY (columns == 0)) {
+
+               /* It's a combining mark */
+
+               long row_num;
+               VteCell *cell;
+
+               _vte_debug_print(VTE_DEBUG_PARSE, "combining U+%04X", c);
+
+               row_num = screen->cursor_current.row;
+               row = NULL;
+               if (G_UNLIKELY (col == 0)) {
+                       /* We are at first column.  See if the previous line softwrapped.
+                        * If it did, move there.  Otherwise skip inserting. */
+
+                       if (G_LIKELY (row_num > 0)) {
+                               row_num--;
+                               row = _vte_terminal_find_row_data_writable (terminal, row_num);
+
+                               if (row) {
+                                       if (!row->attr.soft_wrapped)
+                                               row = NULL;
+                                       else
+                                               col = _vte_row_data_length (row);
+                               }
+                       }
+               } else {
+                       row = _vte_terminal_find_row_data_writable (terminal, row_num);
+               }
+
+               if (G_UNLIKELY (!row || !col))
+                       goto not_inserted;
+
+               /* Combine it on the previous cell */
+
+               col--;
+               cell = _vte_row_data_get_writable (row, col);
+
+               if (G_UNLIKELY (!cell))
+                       goto not_inserted;
+
+               /* Find the previous cell */
+               while (cell && cell->attr.fragment && col > 0)
+                       cell = _vte_row_data_get_writable (row, --col);
+               if (G_UNLIKELY (!cell || cell->c == '\t'))
+                       goto not_inserted;
+
+               /* Combine the new character on top of the cell string */
+               c = _vte_unistr_append_unichar (cell->c, c);
+
+               /* And set it */
+               columns = cell->attr.columns;
+               for (i = 0; i < columns; i++) {
+                       cell = _vte_row_data_get_writable (row, col++);
+                       cell->c = c;
+               }
+
+               /* Always invalidate since we put the mark on the *previous* cell
+                * and the higher level code doesn't know this. */
+               _vte_invalidate_cells(terminal,
+                                     col - columns,
+                                     columns,
+                                     row_num, 1);
+
+               goto done;
+       }
+
+       /* Make sure we have enough rows to hold this data. */
+       row = vte_terminal_ensure_cursor (terminal);
+       g_assert(row != NULL);
+
+       _vte_terminal_cleanup_tab_fragments_at_cursor (terminal);
+
+       if (insert) {
+               for (i = 0; i < columns; i++)
+                       _vte_row_data_insert (row, col + i, &screen->color_defaults);
+       } else {
+               _vte_row_data_fill (row, &basic_cell.cell, col + columns);
+       }
+
+       /* Convert any wide characters we may have broken into single
+        * cells. (#514632) */
+       if (G_LIKELY (col > 0)) {
+               glong col2 = col - 1;
+               VteCell *cell = _vte_row_data_get_writable (row, col2);
+               while (col2 > 0 && cell != NULL && cell->attr.fragment)
+                       cell = _vte_row_data_get_writable (row, --col2);
+               cell->attr.columns = col - col2;
+       }
+       {
+               glong col2 = col + columns;
+               VteCell *cell = _vte_row_data_get_writable (row, col2);
+               while (cell != NULL && cell->attr.fragment) {
+                       cell->attr.columns = 1;
+                       cell->c = 0;
+                       cell = _vte_row_data_get_writable (row, ++col2);
+               }
+       }
+
+       attr = screen->defaults.attr;
+       attr.columns = columns;
+
+       if (G_UNLIKELY (c == '_' && terminal->pvt->flags.ul)) {
+               const VteCell *pcell = _vte_row_data_get (row, col);
+               /* Handle overstrike-style underlining. */
+               if (pcell->c != 0) {
+                       /* restore previous contents */
+                       c = pcell->c;
+                       attr.columns = pcell->attr.columns;
+                       attr.fragment = pcell->attr.fragment;
+
+                       attr.underline = 1;
+               }
+       }
+
+
+       {
+               VteCell *pcell = _vte_row_data_get_writable (row, col);
+               pcell->c = c;
+               pcell->attr = attr;
+               col++;
+       }
+
+       /* insert wide-char fragments */
+       attr.fragment = 1;
+       for (i = 1; i < columns; i++) {
+               VteCell *pcell = _vte_row_data_get_writable (row, col);
+               pcell->c = c;
+               pcell->attr = attr;
+               col++;
+       }
+       _vte_row_data_shrink (row, terminal->column_count);
+
+       /* Signal that this part of the window needs drawing. */
+       if (G_UNLIKELY (invalidate_now)) {
+               _vte_invalidate_cells(terminal,
+                               col - columns,
+                               insert ? terminal->column_count : columns,
+                               screen->cursor_current.row, 1);
+       }
+
+
+       /* If we're autowrapping *here*, do it. */
+       screen->cursor_current.col = col;
+       if (G_UNLIKELY (col >= terminal->column_count)) {
+               if (terminal->pvt->flags.am && !terminal->pvt->flags.xn) {
+                       /* Wrap. */
+                       screen->cursor_current.col = 0;
+                       /* Mark this line as soft-wrapped. */
+                       row->attr.soft_wrapped = 1;
+                       _vte_terminal_cursor_down (terminal);
+               }
+       }
+
+done:
+       /* We added text, so make a note of it. */
+       terminal->pvt->text_inserted_flag = TRUE;
+
+not_inserted:
+       _vte_debug_print(VTE_DEBUG_ADJ|VTE_DEBUG_PARSE,
+                       "insertion delta => %ld.\n",
+                       (long)screen->insert_delta);
+       return line_wrapped;
+}
+
+/* Catch a VteReaper child-exited signal, and if it matches the one we're
+ * looking for, emit one of our own. */
+static void
+vte_terminal_catch_child_exited(VteReaper *reaper, int pid, int status,
+                               VteTerminal *terminal)
+{
+       if (pid == terminal->pvt->pty_pid) {
+                GObject *object = G_OBJECT(terminal);
+
+                g_object_ref(object);
+                g_object_freeze_notify(object);
+
+               _VTE_DEBUG_IF (VTE_DEBUG_LIFECYCLE) {
+                       g_printerr ("Child[%d] exited with status %d\n",
+                                       pid, status);
+#ifdef HAVE_SYS_WAIT_H
+                       if (WIFEXITED (status)) {
+                               g_printerr ("Child[%d] exit code %d.\n",
+                                               pid, WEXITSTATUS (status));
+                       }else if (WIFSIGNALED (status)) {
+                               g_printerr ("Child[%d] dies with signal %d.\n",
+                                               pid, WTERMSIG (status));
+                       }
+#endif
+               }
+               /* Disconnect from the reaper. */
+               if (terminal->pvt->pty_reaper != NULL) {
+                       g_signal_handlers_disconnect_by_func(terminal->pvt->pty_reaper,
+                                                            vte_terminal_catch_child_exited,
+                                                            terminal);
+                       g_object_unref(terminal->pvt->pty_reaper);
+                       terminal->pvt->pty_reaper = NULL;
+               }
+               terminal->pvt->pty_pid = -1;
+
+               /* Close out the PTY. */
+                vte_terminal_set_pty_object(terminal, NULL);
+
+               /* Tell observers what's happened. */
+                terminal->pvt->child_exit_status = status;
+               vte_terminal_emit_child_exited(terminal);
+
+                g_object_thaw_notify(object);
+                g_object_unref(object);
+
+                /* Note: terminal may be destroyed at this point */
+       }
+}
+
+static void mark_input_source_invalid(VteTerminal *terminal)
+{
+       _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_read\n");
+       terminal->pvt->pty_input_source = 0;
+}
+static void
+_vte_terminal_connect_pty_read(VteTerminal *terminal)
+{
+       if (terminal->pvt->pty_channel == NULL) {
+               return;
+       }
+
+       if (terminal->pvt->pty_input_source == 0) {
+               _vte_debug_print (VTE_DEBUG_IO, "polling vte_terminal_io_read\n");
+               terminal->pvt->pty_input_source =
+                       g_io_add_watch_full(terminal->pvt->pty_channel,
+                                           VTE_CHILD_INPUT_PRIORITY,
+                                           G_IO_IN | G_IO_HUP,
+                                           (GIOFunc) vte_terminal_io_read,
+                                           terminal,
+                                           (GDestroyNotify) mark_input_source_invalid);
+       }
+}
+
+static void mark_output_source_invalid(VteTerminal *terminal)
+{
+       _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_write\n");
+       terminal->pvt->pty_output_source = 0;
+}
+static void
+_vte_terminal_connect_pty_write(VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+
+        g_assert(pvt->pty != NULL);
+       if (terminal->pvt->pty_channel == NULL) {
+               pvt->pty_channel =
+                       g_io_channel_unix_new(vte_pty_get_fd(pvt->pty));
+       }
+
+       if (terminal->pvt->pty_output_source == 0) {
+               if (vte_terminal_io_write (terminal->pvt->pty_channel,
+                                            G_IO_OUT,
+                                            terminal))
+               {
+                       _vte_debug_print (VTE_DEBUG_IO, "polling vte_terminal_io_write\n");
+                       terminal->pvt->pty_output_source =
+                               g_io_add_watch_full(terminal->pvt->pty_channel,
+                                                   VTE_CHILD_OUTPUT_PRIORITY,
+                                                   G_IO_OUT,
+                                                   (GIOFunc) vte_terminal_io_write,
+                                                   terminal,
+                                                   (GDestroyNotify) mark_output_source_invalid);
+               }
+       }
+}
+
+static void
+_vte_terminal_disconnect_pty_read(VteTerminal *terminal)
+{
+       if (terminal->pvt->pty_input_source != 0) {
+               _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_read\n");
+               g_source_remove(terminal->pvt->pty_input_source);
+               terminal->pvt->pty_input_source = 0;
+       }
+}
+
+static void
+_vte_terminal_disconnect_pty_write(VteTerminal *terminal)
+{
+       if (terminal->pvt->pty_output_source != 0) {
+               _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_write\n");
+
+               g_source_remove(terminal->pvt->pty_output_source);
+               terminal->pvt->pty_output_source = 0;
+       }
+}
+
+/**
+ * vte_terminal_pty_new:
+ * @terminal: a #VteTerminal
+ * @flags: flags from #VtePtyFlags
+ * @error: (allow-none): return location for a #GError, or %NULL
+ *
+ * Creates a new #VtePty, and sets the emulation property
+ * from #VteTerminal:emulation.
+ *
+ * See vte_pty_new() for more information.
+ *
+ * Returns: (transfer full): a new #VtePty
+ * Since: 0.26
+ */
+VtePty *
+vte_terminal_pty_new(VteTerminal *terminal,
+                     VtePtyFlags flags,
+                     GError **error)
+{
+        VteTerminalPrivate *pvt;
+        VtePty *pty;
+
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+
+        pvt = terminal->pvt;
+
+        pty = vte_pty_new(flags, error);
+        if (pty == NULL)
+                return NULL;
+
+        vte_pty_set_term(pty, vte_terminal_get_emulation(terminal));
+
+        return pty;
+}
+
+/**
+ * vte_terminal_watch_child:
+ * @terminal: a #VteTerminal
+ * @child_pid: a #GPid
+ *
+ * Watches @child_pid. When the process exists, the #VteReaper::child-exited
+ * signal will be called. Use vte_terminal_get_child_exit_status() to
+ * retrieve the child's exit status.
+ *
+ * Prior to calling this function, a #VtePty must have been set in @terminal
+ * using vte_terminal_set_pty_object().
+ * When the child exits, the terminal's #VtePty will be set to %NULL.
+ *
+ * Note: g_child_watch_add() or g_child_watch_add_full() must not have
+ * been called for @child_pid, nor a #GSource for it been created with
+ * g_child_watch_source_new().
+ *
+ * Note: when using the g_spawn_async() family of functions,
+ * the %G_SPAWN_DO_NOT_REAP_CHILD flag MUST have been passed.
+ *
+ * Since: 0.26
+ */
+void
+vte_terminal_watch_child (VteTerminal *terminal,
+                          GPid child_pid)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+        VteReaper *reaper;
+
+        g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        g_return_if_fail(child_pid != -1);
+
+        pvt = terminal->pvt;
+        g_return_if_fail(pvt->pty != NULL);
+
+        // FIXMEchpe: support passing child_pid = -1 to remove the wathch
+
+        object = G_OBJECT(terminal);
+
+        g_object_freeze_notify(object);
+
+        /* Set this as the child's pid. */
+        pvt->pty_pid = child_pid;
+        pvt->child_exit_status = 0;
+
+        /* Catch a child-exited signal from the child pid. */
+        reaper = vte_reaper_get();
+        vte_reaper_add_child(child_pid);
+        if (reaper != pvt->pty_reaper) {
+                if (terminal->pvt->pty_reaper != NULL) {
+                        g_signal_handlers_disconnect_by_func(pvt->pty_reaper,
+                                        vte_terminal_catch_child_exited,
+                                        terminal);
+                        g_object_unref(pvt->pty_reaper);
+                }
+                g_signal_connect(reaper, "child-exited",
+                                G_CALLBACK(vte_terminal_catch_child_exited),
+                                terminal);
+                pvt->pty_reaper = reaper;
+        } else {
+                g_object_unref(reaper);
+       }
+
+        /* FIXMEchpe: call vte_terminal_set_size here? */
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_get_user_shell:
+ *
+ * Gets the user's shell, or %NULL. In the latter case, the
+ * system default (usually "/bin/sh") should be used.
+ *
+ * Returns: (tranfer full) (type filename): a newly allocated string with the
+ *   user's shell, or %NULL
+ *
+ * Since: 0.28
+ */
+char *
+vte_get_user_shell (void)
+{
+       struct passwd *pwd;
+
+       pwd = getpwuid(getuid());
+        if (pwd && pwd->pw_shell)
+                return g_strdup (pwd->pw_shell);
+
+        return NULL;
+}
+
+static char *
+_vte_terminal_get_user_shell_with_fallback (void)
+{
+        char *command;
+        const gchar *env;
+
+        if ((command = vte_get_user_shell ()))
+                return command;
+
+        if ((env = g_getenv ("SHELL")))
+                return g_strdup (env);
+
+        return g_strdup ("/bin/sh");
+}
+
+/*
+ * _vte_terminal_get_argv:
+ * @command: the command to run
+ * @argv: the argument vector
+ * @flags: (inout) flags from #GSpawnFlags
+ *
+ * Creates an argument vector to pass to g_spawn_async() from @command and
+ * @argv, modifying *@flags if necessary.
+ * Like __vte_pty_get_argv(), but returns the argument vector to spawn
+ * the user's shell if @command is %NULL.
+ *
+ * Returns: a newly allocated array of strings. Free with g_strfreev()
+ */
+static char **
+_vte_terminal_get_argv (const char *command,
+                        char **argv,
+                        GSpawnFlags *flags /* inout */)
+{
+       char **argv2;
+        char *shell = NULL;
+
+        argv2 = __vte_pty_get_argv(command ? command : (shell = _vte_terminal_get_user_shell_with_fallback 
()),
+                                   argv,
+                                   flags);
+        g_free(shell);
+        return argv2;
+}
+
+/**
+ * vte_terminal_fork_command:
+ * @terminal: a #VteTerminal
+ * @command: (allow-none) (type filename): the name of a binary to run, or %NULL to spawn the user's shell
+ * @argv: (allow-none) (array zero-terminated=1) (element-type filename): the argument list to be passed to 
@command, or %NULL
+ * @envv: (allow-none) (array zero-terminated=1) (element-type filename): a list of environment variables to 
be added to the environment before
+ *   starting @command, or %NULL
+ * @working_directory: (allow-none) (type filename): the name of a directory the command should start in, or 
%NULL
+ * @lastlog: %TRUE if the session should be logged to the lastlog
+ * @utmp: %TRUE if the session should be logged to the utmp/utmpx log
+ * @wtmp: %TRUE if the session should be logged to the wtmp/wtmpx log
+ *
+ * Starts the specified command under a newly-allocated controlling
+ * pseudo-terminal.  The @argv and @envv lists should be %NULL-terminated, and
+ * argv[0] is expected to be the name of the file being run, as it would be if
+ * execve() were being called.  TERM is automatically set to reflect the
+ * terminal widget's emulation setting.  If @lastlog, @utmp, or @wtmp are %TRUE,
+ * logs the session to the specified system log files.
+ *
+ * Note that all file descriptors except stdin/stdout/stderr will be closed
+ * before calling exec() in the child.
+ *
+ * Returns: the PID of the new process, or <literal>-1</literal> on failure
+ *
+ * Deprecated: 0.26: Use vte_terminal_fork_command_full()
+ */
+pid_t
+vte_terminal_fork_command(VteTerminal *terminal,
+                         const char *command,
+                          char **argv,
+                          char **envv,
+                         const char *working_directory,
+                         gboolean lastlog,
+                          gboolean utmp,
+                          gboolean wtmp)
+{
+        char **real_argv;
+        GSpawnFlags spawn_flags;
+        GPid child_pid;
+        gboolean ret;
+#ifdef VTE_DEBUG
+        GError *error = NULL;
+        GError **err = &error;
+#else
+        GError **err = NULL;
+#endif
+
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+
+        spawn_flags = G_SPAWN_CHILD_INHERITS_STDIN |
+                      G_SPAWN_SEARCH_PATH;
+        real_argv = _vte_terminal_get_argv (command, argv, &spawn_flags);
+
+        ret = vte_terminal_fork_command_full(terminal,
+                                             __vte_pty_get_pty_flags(lastlog, utmp, wtmp),
+                                             working_directory,
+                                             real_argv,
+                                             envv,
+                                             spawn_flags,
+                                             NULL, NULL,
+                                             &child_pid,
+                                             err);
+        g_strfreev (real_argv);
+
+#ifdef VTE_DEBUG
+        if (error) {
+                _vte_debug_print(VTE_DEBUG_MISC,
+                                "vte_terminal_fork_command failed: %s\n", error->message);
+                g_error_free(error);
+        }
+#endif
+
+        if (!ret)
+                return -1;
+
+        return (pid_t) child_pid;
+}
+
+/**
+ * vte_terminal_fork_command_full:
+ * @terminal: a #VteTerminal
+ * @pty_flags: flags from #VtePtyFlags
+ * @working_directory: (allow-none): the name of a directory the command should start
+ *   in, or %NULL to use the current working directory
+ * @argv: (array zero-terminated=1) (element-type filename): child's argument vector
+ * @envv: (allow-none) (array zero-terminated=1) (element-type filename): a list of environment
+ *   variables to be added to the environment before starting the process, or %NULL
+ * @spawn_flags: flags from #GSpawnFlags
+ * @child_setup: (allow-none) (scope call): function to run in the child just before exec(), or %NULL
+ * @child_setup_data: user data for @child_setup
+ * @child_pid: (out) (allow-none) (transfer full): a location to store the child PID, or %NULL
+ * @error: (allow-none): return location for a #GError, or %NULL
+ *
+ * Starts the specified command under a newly-allocated controlling
+ * pseudo-terminal.  The @argv and @envv lists should be %NULL-terminated.
+ * The "TERM" environment variable is automatically set to reflect the
+ * terminal widget's emulation setting.
+ * @pty_flags controls logging the session to the specified system log files.
+ *
+ * Note that %G_SPAWN_DO_NOT_REAP_CHILD will always be added to @spawn_flags.
+ *
+ * Note that unless @spawn_flags contains %G_SPAWN_LEAVE_DESCRIPTORS_OPEN, all file
+ * descriptors except stdin/stdout/stderr will be closed before calling exec()
+ * in the child.
+ *
+ * See vte_pty_new(), g_spawn_async() and vte_terminal_watch_child() for more information.
+ *
+ * Returns: %TRUE on success, or %FALSE on error with @error filled in
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_terminal_fork_command_full(VteTerminal *terminal,
+                               VtePtyFlags pty_flags,
+                               const char *working_directory,
+                               char **argv,
+                               char **envv,
+                               GSpawnFlags spawn_flags,
+                               GSpawnChildSetupFunc child_setup,
+                               gpointer child_setup_data,
+                               GPid *child_pid /* out */,
+                               GError **error)
+{
+        VtePty *pty;
+        GPid pid;
+
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+        g_return_val_if_fail(argv != NULL, FALSE);
+        g_return_val_if_fail(child_setup_data == NULL || child_setup, FALSE);
+        g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
+
+        pty = vte_pty_new(pty_flags, error);
+        if (pty == NULL)
+                return FALSE;
+
+        /* FIXMEchpe: is this flag needed */
+        spawn_flags |= G_SPAWN_CHILD_INHERITS_STDIN;
+
+        if (!__vte_pty_spawn(pty,
+                             working_directory,
+                             argv,
+                             envv,
+                             spawn_flags,
+                             child_setup, child_setup_data,
+                             &pid,
+                             error)) {
+                g_object_unref(pty);
+                return FALSE;
+        }
+
+        vte_terminal_set_pty_object(terminal, pty);
+        vte_terminal_watch_child(terminal, pid);
+        g_object_unref (pty);
+
+        if (child_pid)
+                *child_pid = pid;
+
+        return TRUE;
+}
+
+/**
+ * vte_terminal_forkpty:
+ * @terminal: a #VteTerminal
+ * @envv: a list of environment variables to be added to the environment before
+ * starting returning in the child process, or %NULL
+ * @working_directory: the name of a directory the child process should change to, or
+ * %NULL
+ * @lastlog: %TRUE if the session should be logged to the lastlog
+ * @utmp: %TRUE if the session should be logged to the utmp/utmpx log
+ * @wtmp: %TRUE if the session should be logged to the wtmp/wtmpx log
+ *
+ * Starts a new child process under a newly-allocated controlling
+ * pseudo-terminal.  TERM is automatically set to reflect the terminal widget's
+ * emulation setting.  If @lastlog, @utmp, or @wtmp are %TRUE, logs the session
+ * to the specified system log files.
+ *
+ * Note that all file descriptors except stdin/stdout/stderr will be closed
+ * in the child.
+ *
+ * Note that @envv and @working_directory are silently ignored.
+ *
+ * Returns: the ID of the new process in the parent, 0 in the child, and -1 if
+ * there was an error
+ *
+ * Since: 0.11.11
+ *
+ * Deprecated: 0.26: Use #VtePty and fork() instead
+ */
+pid_t
+vte_terminal_forkpty(VteTerminal *terminal,
+                    char **envv, const char *working_directory,
+                    gboolean lastlog, gboolean utmp, gboolean wtmp)
+{
+#ifdef HAVE_FORK
+        VtePty *pty;
+        GPid pid;
+
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+
+        pty = vte_pty_new(__vte_pty_get_pty_flags(lastlog, utmp, wtmp), NULL);
+        if (pty == NULL)
+                return FALSE;
+
+        if (!__vte_pty_fork(pty,
+                            &pid,
+                            NULL)) {
+                g_object_unref(pty);
+                return FALSE;
+        }
+
+        vte_terminal_set_pty_object(terminal, pty);
+        // FIXMEchpe is that really right?
+        vte_terminal_watch_child(terminal, pid);
+
+        return pid;
+#else
+        return -1;
+#endif
+}
+
+/* Handle an EOF from the client. */
+static void
+vte_terminal_eof(GIOChannel *channel, VteTerminal *terminal)
+{
+        GObject *object = G_OBJECT(terminal);
+
+        g_object_freeze_notify(object);
+
+        vte_terminal_set_pty_object(terminal, NULL);
+
+       /* Emit a signal that we read an EOF. */
+       vte_terminal_queue_eof(terminal);
+
+        g_object_thaw_notify(object);
+}
+
+/* Reset the input method context. */
+static void
+vte_terminal_im_reset(VteTerminal *terminal)
+{
+       if (gtk_widget_get_realized (&terminal->widget)) {
+               gtk_im_context_reset(terminal->pvt->im_context);
+               if (terminal->pvt->im_preedit != NULL) {
+                       g_free(terminal->pvt->im_preedit);
+                       terminal->pvt->im_preedit = NULL;
+               }
+               if (terminal->pvt->im_preedit_attrs != NULL) {
+                       pango_attr_list_unref(terminal->pvt->im_preedit_attrs);
+                       terminal->pvt->im_preedit_attrs = NULL;
+               }
+       }
+}
+
+/* Emit whichever signals are called for here. */
+static void
+vte_terminal_emit_pending_text_signals(VteTerminal *terminal, GQuark quark)
+{
+       static struct {
+               const char *name;
+               GQuark quark;
+       } non_visual_quarks[] = {
+               {"mb", 0},
+               {"md", 0},
+               {"mr", 0},
+               {"mu", 0},
+               {"se", 0},
+               {"so", 0},
+               {"ta", 0},
+               {"character-attributes", 0},
+       };
+       guint i;
+
+       if (quark != 0) {
+               for (i = 0; i < G_N_ELEMENTS(non_visual_quarks); i++) {
+                       if (non_visual_quarks[i].quark == 0) {
+                               non_visual_quarks[i].quark =
+                                       g_quark_from_static_string(non_visual_quarks[i].name);
+                       }
+                       if (quark == non_visual_quarks[i].quark) {
+                               return;
+                       }
+               }
+       }
+
+       if (terminal->pvt->text_modified_flag) {
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting buffered `text-modified'.\n");
+               vte_terminal_emit_text_modified(terminal);
+               terminal->pvt->text_modified_flag = FALSE;
+       }
+       if (terminal->pvt->text_inserted_flag) {
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting buffered `text-inserted'\n");
+               _vte_terminal_emit_text_inserted(terminal);
+               terminal->pvt->text_inserted_flag = FALSE;
+       }
+       if (terminal->pvt->text_deleted_flag) {
+               _vte_debug_print(VTE_DEBUG_SIGNALS,
+                               "Emitting buffered `text-deleted'\n");
+               _vte_terminal_emit_text_deleted(terminal);
+               terminal->pvt->text_deleted_flag = FALSE;
+       }
+}
+
+/* Process incoming data, first converting it to unicode characters, and then
+ * processing control sequences. */
+static void
+vte_terminal_process_incoming(VteTerminal *terminal)
+{
+       VteScreen *screen;
+       VteVisualPosition cursor;
+       gboolean cursor_visible;
+       GdkPoint bbox_topleft, bbox_bottomright;
+       gunichar *wbuf, c;
+       long wcount, start, delta;
+       gboolean leftovers, modified, bottom, again;
+       gboolean invalidated_text;
+       GArray *unichars;
+       struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL;
+
+       _vte_debug_print(VTE_DEBUG_IO,
+                       "Handler processing %"G_GSIZE_FORMAT" bytes over %"G_GSIZE_FORMAT" chunks + %d bytes 
pending.\n",
+                       _vte_incoming_chunks_length(terminal->pvt->incoming),
+                       _vte_incoming_chunks_count(terminal->pvt->incoming),
+                       terminal->pvt->pending->len);
+       _vte_debug_print (VTE_DEBUG_WORK, "(");
+
+       screen = terminal->pvt->screen;
+
+       delta = screen->scroll_delta;
+       bottom = screen->insert_delta == delta;
+
+       /* Save the current cursor position. */
+       cursor = screen->cursor_current;
+       cursor_visible = terminal->pvt->cursor_visible;
+
+       /* We should only be called when there's data to process. */
+       g_assert(terminal->pvt->incoming ||
+                (terminal->pvt->pending->len > 0));
+
+       /* Convert the data into unicode characters. */
+       unichars = terminal->pvt->pending;
+       for (chunk = _vte_incoming_chunks_reverse (terminal->pvt->incoming);
+                       chunk != NULL;
+                       chunk = next_chunk) {
+               gsize processed;
+               next_chunk = chunk->next;
+               if (chunk->len == 0) {
+                       goto skip_chunk;
+               }
+               processed = _vte_iso2022_process(terminal->pvt->iso2022,
+                               chunk->data, chunk->len,
+                               unichars);
+               if (G_UNLIKELY (processed != chunk->len)) {
+                       /* shuffle the data about */
+                       g_memmove (chunk->data, chunk->data + processed,
+                                       chunk->len - processed);
+                       chunk->len = chunk->len - processed;
+                       processed = sizeof (chunk->data) - chunk->len;
+                       if (processed != 0 && next_chunk !=  NULL) {
+                               if (next_chunk->len <= processed) {
+                                       /* consume it entirely */
+                                       memcpy (chunk->data + chunk->len,
+                                                       next_chunk->data,
+                                                       next_chunk->len);
+                                       chunk->len += next_chunk->len;
+                                       chunk->next = next_chunk->next;
+                                       release_chunk (next_chunk);
+                               } else {
+                                       /* next few bytes */
+                                       memcpy (chunk->data + chunk->len,
+                                                       next_chunk->data,
+                                                       processed);
+                                       chunk->len += processed;
+                                       g_memmove (next_chunk->data,
+                                                       next_chunk->data + processed,
+                                                       next_chunk->len - processed);
+                                       next_chunk->len -= processed;
+                               }
+                               next_chunk = chunk; /* repeat */
+                       } else {
+                               break;
+                       }
+               } else {
+skip_chunk:
+                       /* cache the last chunk */
+                       if (achunk) {
+                               release_chunk (achunk);
+                       }
+                       achunk = chunk;
+               }
+       }
+       if (achunk) {
+               if (chunk != NULL) {
+                       release_chunk (achunk);
+               } else {
+                       chunk = achunk;
+                       chunk->next = NULL;
+                       chunk->len = 0;
+               }
+       }
+       terminal->pvt->incoming = chunk;
+
+       /* Compute the number of unicode characters we got. */
+       wbuf = &g_array_index(unichars, gunichar, 0);
+       wcount = unichars->len;
+
+       /* Try initial substrings. */
+       start = 0;
+       modified = leftovers = again = FALSE;
+       invalidated_text = FALSE;
+
+       bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT;
+       bbox_topleft.x = bbox_topleft.y = G_MAXINT;
+
+       while (start < wcount && !leftovers) {
+               const char *match;
+               GQuark quark;
+               const gunichar *next;
+               GValueArray *params = NULL;
+
+               /* Try to match any control sequences. */
+               _vte_matcher_match(terminal->pvt->matcher,
+                                  &wbuf[start],
+                                  wcount - start,
+                                  &match,
+                                  &next,
+                                  &quark,
+                                  &params);
+               /* We're in one of three possible situations now.
+                * First, the match string is a non-empty string and next
+                * points to the first character which isn't part of this
+                * sequence. */
+               if ((match != NULL) && (match[0] != '\0')) {
+                       /* Call the right sequence handler for the requested
+                        * behavior. */
+                       _vte_terminal_handle_sequence(terminal,
+                                                     match,
+                                                     quark,
+                                                     params);
+                       /* Skip over the proper number of unicode chars. */
+                       start = (next - wbuf);
+                       modified = TRUE;
+
+                       /* if we have moved during the sequence handler, restart the bbox */
+                       if (invalidated_text &&
+                                       (screen->cursor_current.col > bbox_bottomright.x + 
VTE_CELL_BBOX_SLACK ||
+                                        screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK    
 ||
+                                        screen->cursor_current.row > bbox_bottomright.y + 
VTE_CELL_BBOX_SLACK ||
+                                        screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) {
+                               /* Clip off any part of the box which isn't already on-screen. */
+                               bbox_topleft.x = MAX(bbox_topleft.x, 0);
+                               bbox_topleft.y = MAX(bbox_topleft.y, delta);
+                               bbox_bottomright.x = MIN(bbox_bottomright.x,
+                                               terminal->column_count);
+                               /* lazily apply the +1 to the cursor_row */
+                               bbox_bottomright.y = MIN(bbox_bottomright.y + 1,
+                                               delta + terminal->row_count);
+
+                               _vte_invalidate_cells(terminal,
+                                               bbox_topleft.x,
+                                               bbox_bottomright.x - bbox_topleft.x,
+                                               bbox_topleft.y,
+                                               bbox_bottomright.y - bbox_topleft.y);
+
+                               invalidated_text = FALSE;
+                               bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT;
+                               bbox_topleft.x = bbox_topleft.y = G_MAXINT;
+                       }
+               } else
+               /* Second, we have a NULL match, and next points to the very
+                * next character in the buffer.  Insert the character which
+                * we're currently examining into the screen. */
+               if (match == NULL) {
+                       c = wbuf[start];
+                       /* If it's a control character, permute the order, per
+                        * vttest. */
+                       if ((c != *next) &&
+                           ((*next & 0x1f) == *next) &&
+                           (start + 1 < next - wbuf)) {
+                               const gunichar *tnext = NULL;
+                               const char *tmatch = NULL;
+                               GQuark tquark = 0;
+                               gunichar ctrl;
+                               int i;
+                               /* We don't want to permute it if it's another
+                                * control sequence, so check if it is. */
+                               _vte_matcher_match(terminal->pvt->matcher,
+                                                  next,
+                                                  wcount - (next - wbuf),
+                                                  &tmatch,
+                                                  &tnext,
+                                                  &tquark,
+                                                  NULL);
+                               /* We only do this for non-control-sequence
+                                * characters and random garbage. */
+                               if (tnext == next + 1) {
+                                       /* Save the control character. */
+                                       ctrl = *next;
+                                       /* Move everything before it up a
+                                        * slot.  */
+                                       for (i = next - wbuf; i > start; i--) {
+                                               wbuf[i] = wbuf[i - 1];
+                                       }
+                                       /* Move the control character to the
+                                        * front. */
+                                       wbuf[i] = ctrl;
+                                       goto next_match;
+                               }
+                       }
+                       _VTE_DEBUG_IF(VTE_DEBUG_PARSE) {
+                               gunichar cc = c & ~VTE_ISO2022_ENCODED_WIDTH_MASK;
+                               if (cc > 255) {
+                                       g_printerr("U+%04lx\n", (long) cc);
+                               } else {
+                                       if (cc > 127) {
+                                               g_printerr("%ld = ",
+                                                               (long) cc);
+                                       }
+                                       if (cc < 32) {
+                                               g_printerr("^%lc\n",
+                                                               (wint_t)cc + 64);
+                                       } else {
+                                               g_printerr("`%lc'\n",
+                                                               (wint_t)cc);
+                                       }
+                               }
+                       }
+
+                       bbox_topleft.x = MIN(bbox_topleft.x,
+                                       screen->cursor_current.col);
+                       bbox_topleft.y = MIN(bbox_topleft.y,
+                                       screen->cursor_current.row);
+
+                       /* Insert the character. */
+                       if (G_UNLIKELY (_vte_terminal_insert_char(terminal, c,
+                                                FALSE, FALSE))) {
+                               /* line wrapped, correct bbox */
+                               if (invalidated_text &&
+                                               (screen->cursor_current.col > bbox_bottomright.x + 
VTE_CELL_BBOX_SLACK  ||
+                                                screen->cursor_current.col < bbox_topleft.x - 
VTE_CELL_BBOX_SLACK      ||
+                                                screen->cursor_current.row > bbox_bottomright.y + 
VTE_CELL_BBOX_SLACK  ||
+                                                screen->cursor_current.row < bbox_topleft.y - 
VTE_CELL_BBOX_SLACK)) {
+                                       /* Clip off any part of the box which isn't already on-screen. */
+                                       bbox_topleft.x = MAX(bbox_topleft.x, 0);
+                                       bbox_topleft.y = MAX(bbox_topleft.y, delta);
+                                       bbox_bottomright.x = MIN(bbox_bottomright.x,
+                                                       terminal->column_count);
+                                       /* lazily apply the +1 to the cursor_row */
+                                       bbox_bottomright.y = MIN(bbox_bottomright.y + 1,
+                                                       delta + terminal->row_count);
+
+                                       _vte_invalidate_cells(terminal,
+                                                       bbox_topleft.x,
+                                                       bbox_bottomright.x - bbox_topleft.x,
+                                                       bbox_topleft.y,
+                                                       bbox_bottomright.y - bbox_topleft.y);
+                                       bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT;
+                                       bbox_topleft.x = bbox_topleft.y = G_MAXINT;
+
+                               }
+                               bbox_topleft.x = MIN(bbox_topleft.x, 0);
+                               bbox_topleft.y = MIN(bbox_topleft.y,
+                                               screen->cursor_current.row);
+                       }
+                       /* Add the cells over which we have moved to the region
+                        * which we need to refresh for the user. */
+                       bbox_bottomright.x = MAX(bbox_bottomright.x,
+                                       screen->cursor_current.col);
+                       /* cursor_current.row + 1 (defer until inv.) */
+                       bbox_bottomright.y = MAX(bbox_bottomright.y,
+                                       screen->cursor_current.row);
+                       invalidated_text = TRUE;
+
+                       /* We *don't* emit flush pending signals here. */
+                       modified = TRUE;
+                       start++;
+               } else {
+                       /* Case three: the read broke in the middle of a
+                        * control sequence, so we're undecided with no more
+                        * data to consult. If we have data following the
+                        * middle of the sequence, then it's just garbage data,
+                        * and for compatibility, we should discard it. */
+                       if (wbuf + wcount > next) {
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Invalid control "
+                                               "sequence, discarding %ld "
+                                               "characters.\n",
+                                               (long)(next - (wbuf + start)));
+                               /* Discard. */
+                               start = next - wbuf + 1;
+                       } else {
+                               /* Pause processing here and wait for more
+                                * data before continuing. */
+                               leftovers = TRUE;
+                       }
+               }
+
+#ifdef VTE_DEBUG
+               /* Some safety checks: ensure the visible parts of the buffer
+                * are all in the buffer. */
+               g_assert(screen->insert_delta >=
+                        _vte_ring_delta(screen->row_data));
+               /* The cursor shouldn't be above or below the addressable
+                * part of the display buffer. */
+               g_assert(screen->cursor_current.row >= screen->insert_delta);
+#endif
+
+next_match:
+               if (G_LIKELY(params != NULL)) {
+                       /* Free any parameters we don't care about any more. */
+                       _vte_matcher_free_params_array(terminal->pvt->matcher,
+                                       params);
+               }
+       }
+
+       /* Remove most of the processed characters. */
+       if (start < wcount) {
+               g_array_remove_range(terminal->pvt->pending, 0, start);
+       } else {
+               g_array_set_size(terminal->pvt->pending, 0);
+               /* If we're out of data, we needn't pause to let the
+                * controlling application respond to incoming data, because
+                * the main loop is already going to do that. */
+       }
+
+       if (modified) {
+               /* Keep the cursor on-screen if we scroll on output, or if
+                * we're currently at the bottom of the buffer. */
+               _vte_terminal_update_insert_delta(terminal);
+               if (terminal->pvt->scroll_on_output || bottom) {
+                       vte_terminal_maybe_scroll_to_bottom(terminal);
+               }
+               /* Deselect the current selection if its contents are changed
+                * by this insertion. */
+               if (terminal->pvt->has_selection) {
+                       char *selection;
+                       selection =
+                       vte_terminal_get_text_range(terminal,
+                                                   terminal->pvt->selection_start.row,
+                                                   0,
+                                                   terminal->pvt->selection_end.row,
+                                                   terminal->column_count,
+                                                   vte_cell_is_selected,
+                                                   NULL,
+                                                   NULL);
+                       if ((selection == NULL) || (terminal->pvt->selection == NULL) ||
+                           (strcmp(selection, terminal->pvt->selection) != 0)) {
+                               vte_terminal_deselect_all(terminal);
+                       }
+                       g_free(selection);
+               }
+       }
+
+       if (modified || (screen != terminal->pvt->screen)) {
+               /* Signal that the visible contents changed. */
+               _vte_terminal_queue_contents_changed(terminal);
+       }
+
+       vte_terminal_emit_pending_signals (terminal);
+
+       if (invalidated_text) {
+               /* Clip off any part of the box which isn't already on-screen. */
+               bbox_topleft.x = MAX(bbox_topleft.x, 0);
+               bbox_topleft.y = MAX(bbox_topleft.y, delta);
+               bbox_bottomright.x = MIN(bbox_bottomright.x,
+                               terminal->column_count);
+               /* lazily apply the +1 to the cursor_row */
+               bbox_bottomright.y = MIN(bbox_bottomright.y + 1,
+                               delta + terminal->row_count);
+
+               _vte_invalidate_cells(terminal,
+                               bbox_topleft.x,
+                               bbox_bottomright.x - bbox_topleft.x,
+                               bbox_topleft.y,
+                               bbox_bottomright.y - bbox_topleft.y);
+       }
+
+
+       if ((cursor.col != terminal->pvt->screen->cursor_current.col) ||
+           (cursor.row != terminal->pvt->screen->cursor_current.row)) {
+               /* invalidate the old and new cursor positions */
+               if (cursor_visible)
+                       _vte_invalidate_cell(terminal, cursor.col, cursor.row);
+               _vte_invalidate_cursor_once(terminal, FALSE);
+               _vte_check_cursor_blink(terminal);
+               /* Signal that the cursor moved. */
+               vte_terminal_queue_cursor_moved(terminal);
+       } else if (cursor_visible != terminal->pvt->cursor_visible) {
+               _vte_invalidate_cell(terminal, cursor.col, cursor.row);
+               _vte_check_cursor_blink(terminal);
+       }
+
+       /* Tell the input method where the cursor is. */
+       if (gtk_widget_get_realized (&terminal->widget)) {
+               GdkRectangle rect;
+               rect.x = terminal->pvt->screen->cursor_current.col *
+                        terminal->char_width + terminal->pvt->inner_border.left;
+               rect.width = terminal->char_width;
+               rect.y = (terminal->pvt->screen->cursor_current.row - delta) *
+                        terminal->char_height + terminal->pvt->inner_border.top;
+               rect.height = terminal->char_height;
+               gtk_im_context_set_cursor_location(terminal->pvt->im_context,
+                                                  &rect);
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, ")");
+       _vte_debug_print (VTE_DEBUG_IO,
+                       "%ld chars and %ld bytes in %"G_GSIZE_FORMAT" chunks left to process.\n",
+                       (long) unichars->len,
+                       (long) _vte_incoming_chunks_length(terminal->pvt->incoming),
+                       _vte_incoming_chunks_count(terminal->pvt->incoming));
+}
+
+static inline void
+_vte_terminal_enable_input_source (VteTerminal *terminal)
+{
+       if (terminal->pvt->pty_channel == NULL) {
+               return;
+       }
+
+       if (terminal->pvt->pty_input_source == 0) {
+               _vte_debug_print (VTE_DEBUG_IO, "polling vte_terminal_io_read\n");
+               terminal->pvt->pty_input_source =
+                       g_io_add_watch_full(terminal->pvt->pty_channel,
+                                           VTE_CHILD_INPUT_PRIORITY,
+                                           G_IO_IN | G_IO_HUP,
+                                           (GIOFunc) vte_terminal_io_read,
+                                           terminal,
+                                           (GDestroyNotify) mark_input_source_invalid);
+       }
+}
+static void
+_vte_terminal_feed_chunks (VteTerminal *terminal, struct _vte_incoming_chunk *chunks)
+{
+       struct _vte_incoming_chunk *last;
+
+       _vte_debug_print(VTE_DEBUG_IO, "Feed %"G_GSIZE_FORMAT" bytes, in %"G_GSIZE_FORMAT" chunks.\n",
+                       _vte_incoming_chunks_length(chunks),
+                       _vte_incoming_chunks_count(chunks));
+
+       for (last = chunks; last->next != NULL; last = last->next) ;
+       last->next = terminal->pvt->incoming;
+       terminal->pvt->incoming = chunks;
+}
+/* Read and handle data from the child. */
+static gboolean
+vte_terminal_io_read(GIOChannel *channel,
+                    GIOCondition condition,
+                    VteTerminal *terminal)
+{
+       int err = 0;
+       gboolean eof, again = TRUE;
+
+       _vte_debug_print (VTE_DEBUG_WORK, ".");
+
+       /* Check for end-of-file. */
+       eof = condition & G_IO_HUP;
+
+       /* Read some data in from this channel. */
+       if (condition & G_IO_IN) {
+               struct _vte_incoming_chunk *chunk, *chunks = NULL;
+               const int fd = g_io_channel_unix_get_fd (channel);
+               guchar *bp;
+               int rem, len;
+               guint bytes, max_bytes;
+
+               /* Limit the amount read between updates, so as to
+                * 1. maintain fairness between multiple terminals;
+                * 2. prevent reading the entire output of a command in one
+                *    pass, i.e. we always try to refresh the terminal ~40Hz.
+                *    See time_process_incoming() where we estimate the
+                *    maximum number of bytes we can read/process in between
+                *    updates.
+                */
+               max_bytes = terminal->pvt->active ?
+                           g_list_length (active_terminals) - 1 : 0;
+               if (max_bytes) {
+                       max_bytes = terminal->pvt->max_input_bytes / max_bytes;
+               } else {
+                       max_bytes = VTE_MAX_INPUT_READ;
+               }
+               bytes = terminal->pvt->input_bytes;
+
+               chunk = terminal->pvt->incoming;
+               do {
+                       if (!chunk || chunk->len >= 3*sizeof (chunk->data)/4) {
+                               chunk = get_chunk ();
+                               chunk->next = chunks;
+                               chunks = chunk;
+                       }
+                       rem = sizeof (chunk->data) - chunk->len;
+                       bp = chunk->data + chunk->len;
+                       len = 0;
+                       do {
+                               int ret = read (fd, bp, rem);
+                               switch (ret){
+                                       case -1:
+                                               err = errno;
+                                               goto out;
+                                       case 0:
+                                               eof = TRUE;
+                                               goto out;
+                                       default:
+                                               bp += ret;
+                                               rem -= ret;
+                                               len += ret;
+                                               break;
+                               }
+                       } while (rem);
+out:
+                       chunk->len += len;
+                       bytes += len;
+               } while (bytes < max_bytes &&
+                        chunk->len == sizeof (chunk->data));
+               if (chunk->len == 0 && chunk == chunks) {
+                       chunks = chunks->next;
+                       release_chunk (chunk);
+               }
+
+               if (chunks != NULL) {
+                       _vte_terminal_feed_chunks (terminal, chunks);
+               }
+               if (!vte_terminal_is_processing (terminal)) {
+                       GDK_THREADS_ENTER ();
+                       vte_terminal_add_process_timeout (terminal);
+                       GDK_THREADS_LEAVE ();
+               }
+               terminal->pvt->pty_input_active = len != 0;
+               terminal->pvt->input_bytes = bytes;
+               again = bytes < max_bytes;
+
+               _vte_debug_print (VTE_DEBUG_IO, "read %d/%d bytes, again? %s, active? %s\n",
+                               bytes, max_bytes,
+                               again ? "yes" : "no",
+                               terminal->pvt->pty_input_active ? "yes" : "no");
+       }
+
+       /* Error? */
+       switch (err) {
+               case 0: /* no error */
+                       break;
+               case EIO: /* Fake an EOF. */
+                       eof = TRUE;
+                       break;
+               case EAGAIN:
+               case EBUSY: /* do nothing */
+                       break;
+               default:
+                       /* Translators: %s is replaced with error message returned by strerror(). */
+                       g_warning (_("Error reading from child: " "%s."),
+                                       g_strerror (err));
+                       break;
+       }
+
+       /* If we detected an eof condition, signal one. */
+       if (eof) {
+               /* potential deadlock ... */
+               if (!vte_terminal_is_processing (terminal)) {
+                       GDK_THREADS_ENTER ();
+                       vte_terminal_eof (channel, terminal);
+                       GDK_THREADS_LEAVE ();
+               } else {
+                       vte_terminal_eof (channel, terminal);
+               }
+
+               again = FALSE;
+       }
+
+       return again;
+}
+
+/**
+ * vte_terminal_feed:
+ * @terminal: a #VteTerminal
+ * @data: a string in the terminal's current encoding
+ * @length: the length of the string
+ *
+ * Interprets @data as if it were data received from a child process.  This
+ * can either be used to drive the terminal without a child process, or just
+ * to mess with your users.
+ */
+void
+vte_terminal_feed(VteTerminal *terminal, const char *data, glong length)
+{
+       /* If length == -1, use the length of the data string. */
+       if (length == ((gssize)-1)) {
+               length = strlen(data);
+       }
+
+       /* If we have data, modify the incoming buffer. */
+       if (length > 0) {
+               struct _vte_incoming_chunk *chunk;
+               if (terminal->pvt->incoming &&
+                               (gsize)length < sizeof (terminal->pvt->incoming->data) - 
terminal->pvt->incoming->len) {
+                       chunk = terminal->pvt->incoming;
+               } else {
+                       chunk = get_chunk ();
+                       _vte_terminal_feed_chunks (terminal, chunk);
+               }
+               do { /* break the incoming data into chunks */
+                       gsize rem = sizeof (chunk->data) - chunk->len;
+                       gsize len = (gsize) length < rem ? (gsize) length : rem;
+                       memcpy (chunk->data + chunk->len, data, len);
+                       chunk->len += len;
+                       length -= len;
+                       if (length == 0) {
+                               break;
+                       }
+                       data += len;
+
+                       chunk = get_chunk ();
+                       _vte_terminal_feed_chunks (terminal, chunk);
+               } while (1);
+               vte_terminal_start_processing (terminal);
+       }
+}
+
+/* Send locally-encoded characters to the child. */
+static gboolean
+vte_terminal_io_write(GIOChannel *channel,
+                     GIOCondition condition,
+                     VteTerminal *terminal)
+{
+       gssize count;
+       int fd;
+       gboolean leave_open;
+
+       fd = g_io_channel_unix_get_fd(channel);
+
+       count = write(fd, terminal->pvt->outgoing->data,
+                     _vte_buffer_length(terminal->pvt->outgoing));
+       if (count != -1) {
+               _VTE_DEBUG_IF (VTE_DEBUG_IO) {
+                       gssize i;
+                       for (i = 0; i < count; i++) {
+                               g_printerr("Wrote %c%c\n",
+                                       ((guint8)terminal->pvt->outgoing->data[i]) >= 32 ?
+                                       ' ' : '^',
+                                       ((guint8)terminal->pvt->outgoing->data[i]) >= 32 ?
+                                       terminal->pvt->outgoing->data[i] :
+                                       ((guint8)terminal->pvt->outgoing->data[i])  + 64);
+                       }
+               }
+               _vte_buffer_consume(terminal->pvt->outgoing, count);
+       }
+
+       if (_vte_buffer_length(terminal->pvt->outgoing) == 0) {
+               leave_open = FALSE;
+       } else {
+               leave_open = TRUE;
+       }
+
+       return leave_open;
+}
+
+/* Convert some arbitrarily-encoded data to send to the child. */
+static void
+vte_terminal_send(VteTerminal *terminal, const char *encoding,
+                 const void *data, gssize length,
+                 gboolean local_echo, gboolean newline_stuff)
+{
+       gsize icount, ocount;
+       const guchar *ibuf;
+       guchar *obuf, *obufptr;
+       gchar *cooked;
+       VteConv conv;
+       long crcount, cooked_length, i;
+
+       g_assert(VTE_IS_TERMINAL(terminal));
+       g_assert(encoding && strcmp(encoding, "UTF-8") == 0);
+
+       conv = VTE_INVALID_CONV;
+       if (strcmp(encoding, "UTF-8") == 0) {
+               conv = terminal->pvt->outgoing_conv;
+       }
+       if (conv == VTE_INVALID_CONV) {
+               g_warning (_("Unable to send data to child, invalid charset convertor"));
+               return;
+       }
+
+       icount = length;
+       ibuf =  data;
+       ocount = ((length + 1) * VTE_UTF8_BPC) + 1;
+       _vte_buffer_set_minimum_size(terminal->pvt->conv_buffer, ocount);
+       obuf = obufptr = terminal->pvt->conv_buffer->data;
+
+       if (_vte_conv(conv, &ibuf, &icount, &obuf, &ocount) == (gsize)-1) {
+               g_warning(_("Error (%s) converting data for child, dropping."),
+                         g_strerror(errno));
+       } else {
+               crcount = 0;
+               if (newline_stuff) {
+                       for (i = 0; i < obuf - obufptr; i++) {
+                               switch (obufptr[i]) {
+                               case '\015':
+                                       crcount++;
+                                       break;
+                               default:
+                                       break;
+                               }
+                       }
+               }
+               if (crcount > 0) {
+                       cooked = g_malloc(obuf - obufptr + crcount);
+                       cooked_length = 0;
+                       for (i = 0; i < obuf - obufptr; i++) {
+                               switch (obufptr[i]) {
+                               case '\015':
+                                       cooked[cooked_length++] = '\015';
+                                       cooked[cooked_length++] = '\012';
+                                       break;
+                               default:
+                                       cooked[cooked_length++] = obufptr[i];
+                                       break;
+                               }
+                       }
+               } else {
+                       cooked = (gchar *)obufptr;
+                       cooked_length = obuf - obufptr;
+               }
+               /* Tell observers that we're sending this to the child. */
+               if (cooked_length > 0) {
+                       vte_terminal_emit_commit(terminal,
+                                                cooked, cooked_length);
+               }
+               /* Echo the text if we've been asked to do so. */
+               if ((cooked_length > 0) && local_echo) {
+                       gunichar *ucs4;
+                       ucs4 = g_utf8_to_ucs4(cooked, cooked_length,
+                                             NULL, NULL, NULL);
+                       if (ucs4 != NULL) {
+                               int len;
+                               len = g_utf8_strlen(cooked, cooked_length);
+                               for (i = 0; i < len; i++) {
+                                       _vte_terminal_insert_char(terminal,
+                                                                ucs4[i],
+                                                                FALSE,
+                                                                TRUE);
+                               }
+                               g_free(ucs4);
+                       }
+               }
+               /* If there's a place for it to go, add the data to the
+                * outgoing buffer. */
+               if ((cooked_length > 0) && (terminal->pvt->pty != NULL)) {
+                       _vte_buffer_append(terminal->pvt->outgoing,
+                                          cooked, cooked_length);
+                       _VTE_DEBUG_IF(VTE_DEBUG_KEYBOARD) {
+                               for (i = 0; i < cooked_length; i++) {
+                                       if ((((guint8) cooked[i]) < 32) ||
+                                           (((guint8) cooked[i]) > 127)) {
+                                               g_printerr(
+                                                       "Sending <%02x> "
+                                                       "to child.\n",
+                                                       cooked[i]);
+                                       } else {
+                                               g_printerr(
+                                                       "Sending '%c' "
+                                                       "to child.\n",
+                                                       cooked[i]);
+                                       }
+                               }
+                       }
+                       /* If we need to start waiting for the child pty to
+                        * become available for writing, set that up here. */
+                       _vte_terminal_connect_pty_write(terminal);
+               }
+               if (crcount > 0) {
+                       g_free(cooked);
+               }
+       }
+       return;
+}
+
+/**
+ * vte_terminal_feed_child:
+ * @terminal: a #VteTerminal
+ * @text: data to send to the child
+ * @length: length of @text in bytes, or -1 if @text is NUL-terminated
+ *
+ * Sends a block of UTF-8 text to the child as if it were entered by the user
+ * at the keyboard.
+ */
+void
+vte_terminal_feed_child(VteTerminal *terminal, const char *text, glong length)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       if (length == ((gssize)-1)) {
+               length = strlen(text);
+       }
+       if (length > 0) {
+               vte_terminal_send(terminal, "UTF-8", text, length,
+                                 FALSE, FALSE);
+       }
+}
+
+/**
+ * vte_terminal_feed_child_binary:
+ * @terminal: a #VteTerminal
+ * @data: data to send to the child
+ * @length: length of @data
+ *
+ * Sends a block of binary data to the child.
+ *
+ * Since: 0.12.1
+ */
+void
+vte_terminal_feed_child_binary(VteTerminal *terminal, const char *data, glong length)
+{
+       g_assert(VTE_IS_TERMINAL(terminal));
+
+       /* Tell observers that we're sending this to the child. */
+       if (length > 0) {
+               vte_terminal_emit_commit(terminal,
+                                        data, length);
+
+               /* If there's a place for it to go, add the data to the
+                * outgoing buffer. */
+               if (terminal->pvt->pty != NULL) {
+                       _vte_buffer_append(terminal->pvt->outgoing,
+                                          data, length);
+                       /* If we need to start waiting for the child pty to
+                        * become available for writing, set that up here. */
+                       _vte_terminal_connect_pty_write(terminal);
+               }
+       }
+}
+
+static void
+vte_terminal_feed_child_using_modes(VteTerminal *terminal,
+                                   const char *data, glong length)
+{
+       if (length == ((gssize)-1)) {
+               length = strlen(data);
+       }
+       if (length > 0) {
+               vte_terminal_send(terminal, "UTF-8", data, length,
+                                 !terminal->pvt->screen->sendrecv_mode,
+                                 terminal->pvt->screen->linefeed_mode);
+       }
+}
+
+/* Send text from the input method to the child. */
+static void
+vte_terminal_im_commit(GtkIMContext *im_context, gchar *text, VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Input method committed `%s'.\n", text);
+       vte_terminal_feed_child_using_modes(terminal, text, -1);
+       /* Committed text was committed because the user pressed a key, so
+        * we need to obey the scroll-on-keystroke setting. */
+       if (terminal->pvt->scroll_on_keystroke) {
+               vte_terminal_maybe_scroll_to_bottom(terminal);
+       }
+}
+
+/* We've started pre-editing. */
+static void
+vte_terminal_im_preedit_start(GtkIMContext *im_context, VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Input method pre-edit started.\n");
+       terminal->pvt->im_preedit_active = TRUE;
+}
+
+/* We've stopped pre-editing. */
+static void
+vte_terminal_im_preedit_end(GtkIMContext *im_context, VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Input method pre-edit ended.\n");
+       terminal->pvt->im_preedit_active = FALSE;
+}
+
+/* The pre-edit string changed. */
+static void
+vte_terminal_im_preedit_changed(GtkIMContext *im_context, VteTerminal *terminal)
+{
+       gchar *str;
+       PangoAttrList *attrs;
+       gint cursor;
+
+       gtk_im_context_get_preedit_string(im_context, &str, &attrs, &cursor);
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Input method pre-edit changed (%s,%d).\n",
+                       str, cursor);
+
+       /* Queue the area where the current preedit string is being displayed
+        * for repainting. */
+       _vte_invalidate_cursor_once(terminal, FALSE);
+
+       g_free(terminal->pvt->im_preedit);
+       terminal->pvt->im_preedit = str;
+
+       if (terminal->pvt->im_preedit_attrs != NULL) {
+               pango_attr_list_unref(terminal->pvt->im_preedit_attrs);
+       }
+       terminal->pvt->im_preedit_attrs = attrs;
+
+       terminal->pvt->im_preedit_cursor = cursor;
+
+       _vte_invalidate_cursor_once(terminal, FALSE);
+}
+
+/* Handle the toplevel being reconfigured. */
+static gboolean
+vte_terminal_configure_toplevel(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Top level parent configured.\n");
+
+       if (terminal->pvt->bg_transparent) {
+               /* We have to repaint the entire window, because we don't get
+                * an expose event unless some portion of our visible area
+                * moved out from behind another window. */
+               _vte_invalidate_all(terminal);
+       }
+
+       return FALSE;
+}
+
+/* Handle a hierarchy-changed signal. */
+static void
+vte_terminal_hierarchy_changed(GtkWidget *widget, GtkWidget *old_toplevel,
+                              gpointer data)
+{
+       GtkWidget *toplevel;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Hierarchy changed.\n");
+       if (old_toplevel != NULL) {
+               g_signal_handlers_disconnect_by_func(old_toplevel,
+                                                    vte_terminal_configure_toplevel,
+                                                    widget);
+       }
+
+       toplevel = gtk_widget_get_toplevel(widget);
+       if (toplevel != NULL) {
+               g_signal_connect_swapped (toplevel, "configure-event",
+                                G_CALLBACK (vte_terminal_configure_toplevel),
+                                widget);
+       }
+}
+
+static void
+vte_terminal_set_inner_border(VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+        GtkWidget *widget = GTK_WIDGET(terminal);
+        GtkBorder *border = NULL;
+        GtkBorder inner_border;
+
+        gtk_widget_style_get(widget, "inner-border", &border, NULL);
+
+        if (border != NULL) {
+                inner_border = *border;
+                gtk_border_free(border);
+        } else {
+                inner_border = default_inner_border;
+        }
+
+        _vte_debug_print(VTE_DEBUG_MISC,
+                         "Setting inner-border to { %d, %d, %d, %d }\n",
+                         inner_border.left, inner_border.right,
+                         inner_border.top, inner_border.bottom);
+
+        if (memcmp(&inner_border, &pvt->inner_border, sizeof(GtkBorder)) == 0)
+                return;
+
+        pvt->inner_border = inner_border;
+
+        gtk_widget_queue_resize(widget);
+}
+
+static void
+vte_terminal_style_set (GtkWidget      *widget,
+                       GtkStyle       *prev_style)
+{
+       VteTerminal *terminal = VTE_TERMINAL(widget);
+        float aspect;
+
+        GTK_WIDGET_CLASS (vte_terminal_parent_class)->style_set (widget, prev_style);
+
+        if (gtk_widget_get_style(widget) == prev_style)
+                return;
+
+        vte_terminal_set_font_full_internal(terminal, terminal->pvt->fontdesc,
+                                            terminal->pvt->fontantialias);
+
+        vte_terminal_set_inner_border(terminal);
+
+        gtk_widget_style_get(widget, "cursor-aspect-ratio", &aspect, NULL);
+        if (aspect != terminal->pvt->cursor_aspect_ratio) {
+                terminal->pvt->cursor_aspect_ratio = aspect;
+                _vte_invalidate_cursor_once(terminal, FALSE);
+        }
+}
+
+static void
+add_cursor_timeout (VteTerminal *terminal)
+{
+       if (terminal->pvt->cursor_blink_tag)
+               return; /* already added */
+
+       terminal->pvt->cursor_blink_time = 0;
+       terminal->pvt->cursor_blink_tag = g_timeout_add_full(G_PRIORITY_LOW,
+                                                            terminal->pvt->cursor_blink_cycle,
+                                                            (GSourceFunc)vte_invalidate_cursor_periodic,
+                                                            terminal,
+                                                            NULL);
+}
+
+static void
+remove_cursor_timeout (VteTerminal *terminal)
+{
+       if (terminal->pvt->cursor_blink_tag == 0)
+               return; /* already removed */
+
+       g_source_remove (terminal->pvt->cursor_blink_tag);
+       terminal->pvt->cursor_blink_tag = 0;
+}
+
+/* Activates / disactivates the cursor blink timer to reduce wakeups */
+static void
+_vte_check_cursor_blink(VteTerminal *terminal)
+{
+       if (terminal->pvt->has_focus &&
+           terminal->pvt->cursor_blinks &&
+           terminal->pvt->cursor_visible)
+               add_cursor_timeout(terminal);
+       else
+               remove_cursor_timeout(terminal);
+}
+
+void
+_vte_terminal_audible_beep(VteTerminal *terminal)
+{
+       GdkDisplay *display;
+
+       g_assert(VTE_IS_TERMINAL(terminal));
+       display = gtk_widget_get_display(&terminal->widget);
+       gdk_display_beep(display);
+}
+
+void
+_vte_terminal_visible_beep(VteTerminal *terminal)
+{
+       GtkWidget *widget;
+       GtkAllocation allocation;
+       GtkStyle *style;
+       PangoColor color;
+
+       widget = &terminal->widget;
+
+       if (gtk_widget_get_realized (widget)) {
+
+               style = gtk_widget_get_style (widget);
+               gtk_widget_get_allocation (widget, &allocation);
+               color.red = style->fg[gtk_widget_get_state (widget)].red;
+               color.green = style->fg[gtk_widget_get_state (widget)].green;
+               color.blue = style->fg[gtk_widget_get_state (widget)].blue;
+
+               _vte_draw_start(terminal->pvt->draw);
+               _vte_draw_fill_rectangle(terminal->pvt->draw,
+                                        0, 0,
+                                        allocation.width, allocation.height,
+                                        &color, VTE_DRAW_OPAQUE);
+               _vte_draw_end(terminal->pvt->draw);
+
+               /* Force the repaint, max delay of UPDATE_REPEAT_TIMEOUT */
+               _vte_invalidate_all (terminal);
+       }
+}
+
+void
+_vte_terminal_beep(VteTerminal *terminal)
+{
+       if (terminal->pvt->audible_bell) {
+               _vte_terminal_audible_beep (terminal);
+       }
+       if (terminal->pvt->visible_bell) {
+               _vte_terminal_visible_beep (terminal);
+       }
+}
+
+
+static guint
+vte_translate_ctrlkey (GdkEventKey *event)
+{
+       guint keyval;
+       GdkKeymap *keymap;
+       unsigned int i;
+
+       if (event->keyval < 128)
+               return event->keyval;
+
+#if GTK_CHECK_VERSION (2, 90, 8)
+        keymap = gdk_keymap_get_for_display(gdk_window_get_display (event->window));
+#else
+       keymap = gdk_keymap_get_for_display(gdk_drawable_get_display (event->window));
+#endif
+
+       /* Try groups in order to find one mapping the key to ASCII */
+       for (i = 0; i < 4; i++) {
+               GdkModifierType consumed_modifiers;
+
+               gdk_keymap_translate_keyboard_state (keymap,
+                               event->hardware_keycode, event->state,
+                               i,
+                               &keyval, NULL, NULL, &consumed_modifiers);
+               if (keyval < 128) {
+                       _vte_debug_print (VTE_DEBUG_EVENTS,
+                                       "ctrl+Key, group=%d de-grouped into keyval=0x%x\n",
+                                       event->group, keyval);
+                       return keyval;
+               }
+       }
+
+       return event->keyval;
+}
+
+static void
+vte_terminal_read_modifiers (VteTerminal *terminal,
+                            GdkEvent *event)
+{
+       GdkModifierType modifiers;
+
+       /* Read the modifiers. */
+       if (gdk_event_get_state((GdkEvent*)event, &modifiers)) {
+               GdkKeymap *keymap;
+#if GTK_CHECK_VERSION (2, 90, 8)
+                keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window));
+#else
+                keymap = gdk_keymap_get_for_display(gdk_drawable_get_display(((GdkEventAny*)event)->window));
+#endif
+                gdk_keymap_add_virtual_modifiers (keymap, &modifiers);
+               terminal->pvt->modifiers = modifiers;
+       }
+}
+
+/* Read and handle a keypress event. */
+static gint
+vte_terminal_key_press(GtkWidget *widget, GdkEventKey *event)
+{
+       VteTerminal *terminal;
+       GdkModifierType modifiers;
+       struct _vte_termcap *termcap;
+       const char *tterm;
+       char *normal = NULL, *output;
+       gssize normal_length = 0;
+       int i;
+       const char *special = NULL;
+       struct termios tio;
+       gboolean scrolled = FALSE, steal = FALSE, modifier = FALSE, handled,
+                suppress_meta_esc = FALSE;
+       guint keyval = 0;
+       gunichar keychar = 0;
+       char keybuf[VTE_UTF8_BPC];
+
+       terminal = VTE_TERMINAL(widget);
+
+       /* First, check if GtkWidget's behavior already does something with
+        * this key. */
+       if (GTK_WIDGET_CLASS(vte_terminal_parent_class)->key_press_event) {
+               if ((GTK_WIDGET_CLASS(vte_terminal_parent_class))->key_press_event(widget,
+                                                                     event)) {
+                       return TRUE;
+               }
+       }
+
+       /* If it's a keypress, record that we got the event, in case the
+        * input method takes the event from us. */
+       if (event->type == GDK_KEY_PRESS) {
+               /* Store a copy of the key. */
+               keyval = event->keyval;
+               vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+               /* If we're in margin bell mode and on the border of the
+                * margin, bell. */
+               if (terminal->pvt->margin_bell) {
+                       if ((terminal->pvt->screen->cursor_current.col +
+                            (glong) terminal->pvt->bell_margin) ==
+                            terminal->column_count) {
+                               _vte_terminal_beep (terminal);
+                       }
+               }
+
+               if (terminal->pvt->cursor_blink_tag != 0)
+               {
+                       remove_cursor_timeout (terminal);
+                       terminal->pvt->cursor_blink_state = TRUE;
+                       add_cursor_timeout (terminal);
+               }
+
+               /* Determine if this is just a modifier key. */
+               modifier = _vte_keymap_key_is_modifier(keyval);
+
+               /* Unless it's a modifier key, hide the pointer. */
+               if (!modifier) {
+                       _vte_terminal_set_pointer_visible(terminal, FALSE);
+               }
+
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Keypress, modifiers=0x%x, "
+                               "keyval=0x%x, raw string=`%s'.\n",
+                               terminal->pvt->modifiers,
+                               keyval, event->string);
+
+               /* We steal many keypad keys here. */
+               if (!terminal->pvt->im_preedit_active) {
+                       switch (keyval) {
+                       case GDK_KEY (KP_Add):
+                       case GDK_KEY (KP_Subtract):
+                       case GDK_KEY (KP_Multiply):
+                       case GDK_KEY (KP_Divide):
+                       case GDK_KEY (KP_Enter):
+                               steal = TRUE;
+                               break;
+                       default:
+                               break;
+                       }
+                       if (terminal->pvt->modifiers & VTE_META_MASK) {
+                               steal = TRUE;
+                       }
+                       switch (keyval) {
+                       case GDK_KEY (Multi_key):
+                       case GDK_KEY (Codeinput):
+                       case GDK_KEY (SingleCandidate):
+                       case GDK_KEY (MultipleCandidate):
+                       case GDK_KEY (PreviousCandidate):
+                       case GDK_KEY (Kanji):
+                       case GDK_KEY (Muhenkan):
+                       case GDK_KEY (Henkan):
+                       case GDK_KEY (Romaji):
+                       case GDK_KEY (Hiragana):
+                       case GDK_KEY (Katakana):
+                       case GDK_KEY (Hiragana_Katakana):
+                       case GDK_KEY (Zenkaku):
+                       case GDK_KEY (Hankaku):
+                       case GDK_KEY (Zenkaku_Hankaku):
+                       case GDK_KEY (Touroku):
+                       case GDK_KEY (Massyo):
+                       case GDK_KEY (Kana_Lock):
+                       case GDK_KEY (Kana_Shift):
+                       case GDK_KEY (Eisu_Shift):
+                       case GDK_KEY (Eisu_toggle):
+                               steal = FALSE;
+                               break;
+                       default:
+                               break;
+                       }
+               }
+       }
+
+       modifiers = terminal->pvt->modifiers;
+
+       /* Let the input method at this one first. */
+       if (!steal) {
+               if (gtk_widget_get_realized (&terminal->widget)
+                               && gtk_im_context_filter_keypress (terminal->pvt->im_context, event)) {
+                       _vte_debug_print(VTE_DEBUG_EVENTS,
+                                       "Keypress taken by IM.\n");
+                       return TRUE;
+               }
+       }
+
+       /* Now figure out what to send to the child. */
+       if ((event->type == GDK_KEY_PRESS) && !modifier) {
+               handled = FALSE;
+               /* Map the key to a sequence name if we can. */
+               switch (keyval) {
+               case GDK_KEY (BackSpace):
+                       switch (terminal->pvt->backspace_binding) {
+                       case VTE_ERASE_ASCII_BACKSPACE:
+                               normal = g_strdup("");
+                               normal_length = 1;
+                               suppress_meta_esc = FALSE;
+                               break;
+                       case VTE_ERASE_ASCII_DELETE:
+                               normal = g_strdup("");
+                               normal_length = 1;
+                               suppress_meta_esc = FALSE;
+                               break;
+                       case VTE_ERASE_DELETE_SEQUENCE:
+                               special = "kD";
+                               suppress_meta_esc = TRUE;
+                               break;
+                       case VTE_ERASE_TTY:
+                               if (terminal->pvt->pty != NULL &&
+                                   tcgetattr(vte_pty_get_fd(terminal->pvt->pty), &tio) != -1)
+                               {
+                                       normal = g_strdup_printf("%c", tio.c_cc[VERASE]);
+                                       normal_length = 1;
+                               }
+                               suppress_meta_esc = FALSE;
+                               break;
+                       case VTE_ERASE_AUTO:
+                       default:
+#ifndef _POSIX_VDISABLE
+#define _POSIX_VDISABLE '\0'
+#endif
+                               if (terminal->pvt->pty != NULL &&
+                                   tcgetattr(vte_pty_get_fd(terminal->pvt->pty), &tio) != -1 &&
+                                   tio.c_cc[VERASE] != _POSIX_VDISABLE)
+                               {
+                                       normal = g_strdup_printf("%c", tio.c_cc[VERASE]);
+                                       normal_length = 1;
+                               }
+                               else
+                               {
+                                       normal = g_strdup("");
+                                       normal_length = 1;
+                                       suppress_meta_esc = FALSE;
+                               }
+                               suppress_meta_esc = FALSE;
+                               break;
+                       }
+                       handled = TRUE;
+                       break;
+               case GDK_KEY (KP_Delete):
+               case GDK_KEY (Delete):
+                       switch (terminal->pvt->delete_binding) {
+                       case VTE_ERASE_ASCII_BACKSPACE:
+                               normal = g_strdup("\010");
+                               normal_length = 1;
+                               break;
+                       case VTE_ERASE_ASCII_DELETE:
+                               normal = g_strdup("\177");
+                               normal_length = 1;
+                               break;
+                       case VTE_ERASE_TTY:
+                               if (terminal->pvt->pty != NULL &&
+                                   tcgetattr(vte_pty_get_fd(terminal->pvt->pty), &tio) != -1)
+                               {
+                                       normal = g_strdup_printf("%c", tio.c_cc[VERASE]);
+                                       normal_length = 1;
+                               }
+                               suppress_meta_esc = FALSE;
+                               break;
+                       case VTE_ERASE_DELETE_SEQUENCE:
+                       case VTE_ERASE_AUTO:
+                       default:
+                               special = "kD";
+                               break;
+                       }
+                       handled = TRUE;
+                       suppress_meta_esc = TRUE;
+                       break;
+               case GDK_KEY (KP_Insert):
+               case GDK_KEY (Insert):
+                       if (modifiers & GDK_SHIFT_MASK) {
+                               if (modifiers & GDK_CONTROL_MASK) {
+                                       vte_terminal_paste_clipboard(terminal);
+                                       handled = TRUE;
+                                       suppress_meta_esc = TRUE;
+                               } else {
+                                       vte_terminal_paste_primary(terminal);
+                                       handled = TRUE;
+                                       suppress_meta_esc = TRUE;
+                               }
+                       } else if (modifiers & GDK_CONTROL_MASK) {
+                               vte_terminal_copy_clipboard(terminal);
+                               handled = TRUE;
+                               suppress_meta_esc = TRUE;
+                       }
+                       break;
+               /* Keypad/motion keys. */
+               case GDK_KEY (KP_Up):
+               case GDK_KEY (Up):
+                       if (modifiers & GDK_CONTROL_MASK 
+                            && modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_scroll_lines(terminal, -1);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                               suppress_meta_esc = TRUE;
+                       }
+                       break;
+               case GDK_KEY (KP_Down):
+               case GDK_KEY (Down):
+                       if (modifiers & GDK_CONTROL_MASK
+                            && modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_scroll_lines(terminal, 1);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                               suppress_meta_esc = TRUE;
+                       }
+                       break;
+               case GDK_KEY (KP_Page_Up):
+               case GDK_KEY (Page_Up):
+                       if (modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_scroll_pages(terminal, -1);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                               suppress_meta_esc = TRUE;
+                       }
+                       break;
+               case GDK_KEY (KP_Page_Down):
+               case GDK_KEY (Page_Down):
+                       if (modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_scroll_pages(terminal, 1);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                               suppress_meta_esc = TRUE;
+                       }
+                       break;
+               case GDK_KEY (KP_Home):
+               case GDK_KEY (Home):
+                       if (modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_maybe_scroll_to_top(terminal);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                       }
+                       break;
+               case GDK_KEY (KP_End):
+               case GDK_KEY (End):
+                       if (modifiers & GDK_SHIFT_MASK) {
+                               vte_terminal_maybe_scroll_to_bottom(terminal);
+                               scrolled = TRUE;
+                               handled = TRUE;
+                       }
+                       break;
+               /* Let Shift +/- tweak the font, like XTerm does. */
+               case GDK_KEY (KP_Add):
+               case GDK_KEY (KP_Subtract):
+                       if (modifiers &
+                           (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) {
+                               switch (keyval) {
+                               case GDK_KEY (KP_Add):
+                                       vte_terminal_emit_increase_font_size(terminal);
+                                       handled = TRUE;
+                                       suppress_meta_esc = TRUE;
+                                       break;
+                               case GDK_KEY (KP_Subtract):
+                                       vte_terminal_emit_decrease_font_size(terminal);
+                                       handled = TRUE;
+                                       suppress_meta_esc = TRUE;
+                                       break;
+                               }
+                       }
+                       break;
+               default:
+                       break;
+               }
+               /* If the above switch statement didn't do the job, try mapping
+                * it to a literal or capability name. */
+               if (handled == FALSE && terminal->pvt->termcap != NULL) {
+                       _vte_keymap_map(keyval, modifiers,
+                                       terminal->pvt->sun_fkey_mode,
+                                       terminal->pvt->hp_fkey_mode,
+                                       terminal->pvt->legacy_fkey_mode,
+                                       terminal->pvt->vt220_fkey_mode,
+                                       terminal->pvt->cursor_mode == VTE_KEYMODE_APPLICATION,
+                                       terminal->pvt->keypad_mode == VTE_KEYMODE_APPLICATION,
+                                       terminal->pvt->termcap,
+                                       terminal->pvt->emulation ?
+                                       terminal->pvt->emulation : 
vte_terminal_get_default_emulation(terminal),
+                                       &normal,
+                                       &normal_length,
+                                       &special);
+                       /* If we found something this way, suppress
+                        * escape-on-meta. */
+                       if (((normal != NULL) && (normal_length > 0)) ||
+                           (special != NULL)) {
+                               suppress_meta_esc = TRUE;
+                       }
+               }
+
+               /* Shall we do this here or earlier?  See bug 375112 and bug 589557 */
+               if (modifiers & GDK_CONTROL_MASK)
+                       keyval = vte_translate_ctrlkey(event);
+
+               /* If we didn't manage to do anything, try to salvage a
+                * printable string. */
+               if (handled == FALSE && normal == NULL && special == NULL) {
+
+                       /* Convert the keyval to a gunichar. */
+                       keychar = gdk_keyval_to_unicode(keyval);
+                       normal_length = 0;
+                       if (keychar != 0) {
+                               /* Convert the gunichar to a string. */
+                               normal_length = g_unichar_to_utf8(keychar,
+                                                                 keybuf);
+                               if (normal_length != 0) {
+                                       normal = g_malloc(normal_length + 1);
+                                       memcpy(normal, keybuf, normal_length);
+                                       normal[normal_length] = '\0';
+                               } else {
+                                       normal = NULL;
+                               }
+                       }
+                       if ((normal != NULL) &&
+                           (modifiers & GDK_CONTROL_MASK)) {
+                               /* Replace characters which have "control"
+                                * counterparts with those counterparts. */
+                               for (i = 0; i < normal_length; i++) {
+                                       if ((((guint8)normal[i]) >= 0x40) &&
+                                           (((guint8)normal[i]) <  0x80)) {
+                                               normal[i] &= (~(0x60));
+                                       }
+                               }
+                       }
+                       _VTE_DEBUG_IF (VTE_DEBUG_EVENTS) {
+                               if (normal) g_printerr(
+                                               "Keypress, modifiers=0x%x, "
+                                               "keyval=0x%x, cooked string=`%s'.\n",
+                                               modifiers,
+                                               keyval, normal);
+                       }
+               }
+               /* If we got normal characters, send them to the child. */
+               if (normal != NULL) {
+                       if (terminal->pvt->meta_sends_escape &&
+                           !suppress_meta_esc &&
+                           (normal_length > 0) &&
+                           (modifiers & VTE_META_MASK)) {
+                               vte_terminal_feed_child(terminal,
+                                                       _VTE_CAP_ESC,
+                                                       1);
+                       }
+                       if (normal_length > 0) {
+                               vte_terminal_feed_child_using_modes(terminal,
+                                                                   normal,
+                                                                   normal_length);
+                       }
+                       g_free(normal);
+               } else
+               /* If the key maps to characters, send them to the child. */
+               if (special != NULL && terminal->pvt->termcap != NULL) {
+                       termcap = terminal->pvt->termcap;
+                       tterm = terminal->pvt->emulation;
+                       normal = _vte_termcap_find_string_length(termcap,
+                                                                tterm,
+                                                                special,
+                                                                &normal_length);
+                       _vte_keymap_key_add_key_modifiers(keyval,
+                                                         modifiers,
+                                                         terminal->pvt->sun_fkey_mode,
+                                                         terminal->pvt->hp_fkey_mode,
+                                                         terminal->pvt->legacy_fkey_mode,
+                                                         terminal->pvt->vt220_fkey_mode,
+                                                         terminal->pvt->cursor_mode == 
VTE_KEYMODE_APPLICATION,
+                                                         &normal,
+                                                         &normal_length);
+                       output = g_strdup_printf(normal, 1);
+                       vte_terminal_feed_child_using_modes(terminal,
+                                                           output, -1);
+                       g_free(output);
+                       g_free(normal);
+               }
+               /* Keep the cursor on-screen. */
+               if (!scrolled && !modifier &&
+                   terminal->pvt->scroll_on_keystroke) {
+                       vte_terminal_maybe_scroll_to_bottom(terminal);
+               }
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_key_release(GtkWidget *widget, GdkEventKey *event)
+{
+       VteTerminal *terminal;
+
+       terminal = VTE_TERMINAL(widget);
+
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       return gtk_widget_get_realized (&terminal->widget)
+                       && gtk_im_context_filter_keypress (terminal->pvt->im_context, event);
+}
+
+/**
+ * vte_terminal_is_word_char:
+ * @terminal: a #VteTerminal
+ * @c: a candidate Unicode code point
+ *
+ * Checks if a particular character is considered to be part of a word or not,
+ * based on the values last passed to vte_terminal_set_word_chars().
+ *
+ * Returns: %TRUE if the character is considered to be part of a word
+ */
+gboolean
+vte_terminal_is_word_char(VteTerminal *terminal, gunichar c)
+{
+       guint i;
+       VteWordCharRange *range;
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+
+       if (terminal->pvt->word_chars != NULL) {
+               /* Go through each range and check if c is included. */
+               for (i = 0; i < terminal->pvt->word_chars->len; i++) {
+                       range = &g_array_index(terminal->pvt->word_chars,
+                                              VteWordCharRange,
+                                              i);
+                       if ((c >= range->start) && (c <= range->end))
+                               return TRUE;
+               }
+       }
+
+       /* If not ASCII, or ASCII and no array set (or empty array),
+        * fall back on Unicode properties. */
+       return (c >= 0x80 ||
+               (terminal->pvt->word_chars == NULL) ||
+               (terminal->pvt->word_chars->len == 0)) &&
+               g_unichar_isgraph(c) &&
+              !g_unichar_ispunct(c) &&
+              !g_unichar_isspace(c) &&
+              (c != '\0');
+}
+
+/* Check if the characters in the two given locations are in the same class
+ * (word vs. non-word characters). */
+static gboolean
+vte_same_class(VteTerminal *terminal, glong acol, glong arow,
+              glong bcol, glong brow)
+{
+       const VteCell *pcell = NULL;
+       gboolean word_char;
+       if ((pcell = vte_terminal_find_charcell(terminal, acol, arow)) != NULL && pcell->c != 0) {
+               word_char = vte_terminal_is_word_char(terminal, _vte_unistr_get_base (pcell->c));
+
+               /* Lets not group non-wordchars together (bug #25290) */
+               if (!word_char)
+                       return FALSE;
+
+               pcell = vte_terminal_find_charcell(terminal, bcol, brow);
+               if (pcell == NULL || pcell->c == 0) {
+                       return FALSE;
+               }
+               if (word_char != vte_terminal_is_word_char(terminal, _vte_unistr_get_base (pcell->c))) {
+                       return FALSE;
+               }
+               return TRUE;
+       }
+       return FALSE;
+}
+
+/* Check if we soft-wrapped on the given line. */
+static gboolean
+vte_line_is_wrappable(VteTerminal *terminal, glong row)
+{
+       const VteRowData *rowdata;
+       rowdata = _vte_terminal_find_row_data(terminal, row);
+       return rowdata && rowdata->attr.soft_wrapped;
+}
+
+/* Check if the given point is in the region between the two points,
+ * optionally treating the second point as included in the region or not. */
+static gboolean
+vte_cell_is_between(glong col, glong row,
+                   glong acol, glong arow, glong bcol, glong brow,
+                   gboolean inclusive)
+{
+       /* Negative between never allowed. */
+       if ((arow > brow) || ((arow == brow) && (acol > bcol))) {
+               return FALSE;
+       }
+       /* Zero-length between only allowed if we're being inclusive. */
+       if ((row == arow) && (row == brow) && (col == acol) && (col == bcol)) {
+               return inclusive;
+       }
+       /* A cell is between two points if it's on a line after the
+        * specified area starts, or before the line where it ends,
+        * or any of the lines in between. */
+       if ((row > arow) && (row < brow)) {
+               return TRUE;
+       }
+       /* It's also between the two points if they're on the same row
+        * the cell lies between the start and end columns. */
+       if ((row == arow) && (row == brow)) {
+               if (col >= acol) {
+                       if (col < bcol) {
+                               return TRUE;
+                       } else {
+                               if ((col == bcol) && inclusive) {
+                                       return TRUE;
+                               } else {
+                                       return FALSE;
+                               }
+                       }
+               } else {
+                       return FALSE;
+               }
+       }
+       /* It's also "between" if it's on the line where the area starts and
+        * at or after the start column, or on the line where the area ends and
+        * before the end column. */
+       if ((row == arow) && (col >= acol)) {
+               return TRUE;
+       } else {
+               if (row == brow) {
+                       if (col < bcol) {
+                               return TRUE;
+                       } else {
+                               if ((col == bcol) && inclusive) {
+                                       return TRUE;
+                               } else {
+                                       return FALSE;
+                               }
+                       }
+               } else {
+                       return FALSE;
+               }
+       }
+       return FALSE;
+}
+
+/* Check if a cell is selected or not. */
+static gboolean
+vte_cell_is_selected(VteTerminal *terminal, glong col, glong row, gpointer data)
+{
+       VteVisualPosition ss, se;
+
+       /* If there's nothing selected, it's an easy question to answer. */
+       if (!terminal->pvt->has_selection) {
+               return FALSE;
+       }
+
+       /* If the selection is obviously bogus, then it's also very easy. */
+       ss = terminal->pvt->selection_start;
+       se = terminal->pvt->selection_end;
+       if ((ss.row < 0) || (se.row < 0)) {
+               return FALSE;
+       }
+
+       /* Limit selection in block mode. */
+       if (terminal->pvt->selection_block_mode) {
+               if (col < ss.col || col > se.col) {
+                       return FALSE;
+               }
+       }
+
+       /* Now it boils down to whether or not the point is between the
+        * begin and endpoint of the selection. */
+       return vte_cell_is_between(col, row, ss.col, ss.row, se.col, se.row, TRUE);
+}
+
+/* Once we get text data, actually paste it in. */
+static void
+vte_terminal_paste_cb(GtkClipboard *clipboard, const gchar *text, gpointer data)
+{
+       VteTerminal *terminal;
+       gchar *paste, *p;
+       long length;
+       terminal = data;
+       if (text != NULL) {
+               _vte_debug_print(VTE_DEBUG_SELECTION,
+                               "Pasting %"G_GSIZE_FORMAT" UTF-8 bytes.\n",
+                               strlen(text));
+               if (!g_utf8_validate(text, -1, NULL)) {
+                       g_warning(_("Error (%s) converting data for child, dropping."), g_strerror(EINVAL));
+                       return;
+               }
+
+               /* Convert newlines to carriage returns, which more software
+                * is able to cope with (cough, pico, cough). */
+               paste = g_strdup(text);
+               length = strlen(paste);
+               p = paste;
+               while ((p != NULL) && (p - paste < length)) {
+                       p = memchr(p, '\n', length - (p - paste));
+                       if (p != NULL) {
+                               *p = '\r';
+                               p++;
+                       }
+               }
+               if (terminal->pvt->screen->bracketed_paste_mode)
+                       vte_terminal_feed_child(terminal, "\e[200~", -1);
+               vte_terminal_feed_child(terminal, paste, length);
+               if (terminal->pvt->screen->bracketed_paste_mode)
+                       vte_terminal_feed_child(terminal, "\e[201~", -1);
+               g_free(paste);
+       }
+}
+
+static void
+vte_terminal_get_mouse_tracking_info (VteTerminal   *terminal,
+                                     int            button,
+                                     long           col,
+                                     long           row,
+                                     unsigned char *pb,
+                                     unsigned char *px,
+                                     unsigned char *py)
+{
+       unsigned char cb = 0, cx = 0, cy = 0;
+
+       /* Encode the button information in cb. */
+       switch (button) {
+       case 0:                 /* Release/no buttons. */
+               cb = 3;
+               break;
+       case 1:                 /* Left. */
+               cb = 0;
+               break;
+       case 2:                 /* Middle. */
+               cb = 1;
+               break;
+       case 3:                 /* Right. */
+               cb = 2;
+               break;
+       case 4:
+               cb = 64;        /* Scroll up. */
+               break;
+       case 5:
+               cb = 65;        /* Scroll down. */
+               break;
+       }
+       cb += 32; /* 32 for normal */
+
+       /* Encode the modifiers. */
+       if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
+               cb |= 4;
+       }
+       if (terminal->pvt->modifiers & VTE_META_MASK) {
+               cb |= 8;
+       }
+       if (terminal->pvt->modifiers & GDK_CONTROL_MASK) {
+               cb |= 16;
+       }
+
+       /* Encode the cursor coordinates. */
+       cx = 32 + CLAMP(1 + col,
+                       1, terminal->column_count);
+       cy = 32 + CLAMP(1 + row,
+                       1, terminal->row_count);;
+
+       *pb = cb;
+       *px = cx;
+       *py = cy;
+}
+
+static void
+vte_terminal_send_mouse_button_internal(VteTerminal *terminal,
+                                       int          button,
+                                       long         x,
+                                       long         y)
+{
+       unsigned char cb, cx, cy;
+       char buf[LINE_MAX];
+       gint len;
+       int width = terminal->char_width;
+       int height = terminal->char_height;
+       long col = (x - terminal->pvt->inner_border.left) / width;
+       long row = (y - terminal->pvt->inner_border.top) / height;
+
+       vte_terminal_get_mouse_tracking_info (terminal,
+                                             button, col, row,
+                                             &cb, &cx, &cy);
+
+       /* Send event direct to the child, this is binary not text data */
+       len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "M%c%c%c", cb, cx, cy);
+       vte_terminal_feed_child_binary(terminal, buf, len);
+}
+
+/* Send a mouse button click/release notification. */
+static void
+vte_terminal_maybe_send_mouse_button(VteTerminal *terminal,
+                                    GdkEventButton *event)
+{
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       switch (event->type) {
+       case GDK_BUTTON_PRESS:
+               if (terminal->pvt->mouse_tracking_mode < MOUSE_TRACKING_SEND_XY_ON_CLICK) {
+                       return;
+               }
+               break;
+       case GDK_BUTTON_RELEASE: {
+               if (terminal->pvt->mouse_tracking_mode < MOUSE_TRACKING_SEND_XY_ON_BUTTON) {
+                       return;
+               }
+               break;
+       }
+       default:
+               return;
+               break;
+       }
+
+       vte_terminal_send_mouse_button_internal(terminal,
+                                               (event->type == GDK_BUTTON_PRESS) ? event->button : 0,
+                                               event->x, event->y);
+}
+
+/* Send a mouse motion notification. */
+static void
+vte_terminal_maybe_send_mouse_drag(VteTerminal *terminal, GdkEventMotion *event)
+{
+       unsigned char cb, cx, cy;
+       char buf[LINE_MAX];
+       gint len;
+       int width = terminal->char_width;
+       int height = terminal->char_height;
+       long col = ((long) event->x - terminal->pvt->inner_border.left) / width;
+       long row = ((long) event->y - terminal->pvt->inner_border.top) / height;
+
+       /* First determine if we even want to send notification. */
+       switch (event->type) {
+       case GDK_MOTION_NOTIFY:
+               if (terminal->pvt->mouse_tracking_mode < MOUSE_TRACKING_CELL_MOTION_TRACKING)
+                       return;
+
+               if (terminal->pvt->mouse_tracking_mode < MOUSE_TRACKING_ALL_MOTION_TRACKING) {
+
+                       if (terminal->pvt->mouse_last_button == 0) {
+                               return;
+                       }
+                       /* the xterm doc is not clear as to whether
+                        * all-tracking also sends degenerate same-cell events */
+                       if (col == terminal->pvt->mouse_last_x / width &&
+                           row == terminal->pvt->mouse_last_y / height)
+                               return;
+               }
+               break;
+       default:
+               return;
+               break;
+       }
+
+       vte_terminal_get_mouse_tracking_info (terminal,
+                                             terminal->pvt->mouse_last_button, col, row,
+                                             &cb, &cx, &cy);
+       cb += 32; /* for movement */
+
+       /* Send event direct to the child, this is binary not text data */
+       len = g_snprintf(buf, sizeof(buf), _VTE_CAP_CSI "M%c%c%c", cb, cx, cy);
+       vte_terminal_feed_child_binary(terminal, buf, len);
+}
+
+/* Clear all match hilites. */
+static void
+vte_terminal_match_hilite_clear(VteTerminal *terminal)
+{
+       long srow, scolumn, erow, ecolumn;
+       srow = terminal->pvt->match_start.row;
+       scolumn = terminal->pvt->match_start.col;
+       erow = terminal->pvt->match_end.row;
+       ecolumn = terminal->pvt->match_end.col;
+       terminal->pvt->match_start.row = -1;
+       terminal->pvt->match_start.col = -1;
+       terminal->pvt->match_end.row = -2;
+       terminal->pvt->match_end.col = -2;
+       if (terminal->pvt->match_tag != -1) {
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Clearing hilite (%ld,%ld) to (%ld,%ld).\n",
+                               srow, scolumn, erow, ecolumn);
+               _vte_invalidate_region (terminal,
+                               scolumn, ecolumn, srow, erow, FALSE);
+               terminal->pvt->match_tag = -1;
+       }
+       terminal->pvt->show_match = FALSE;
+       if (terminal->pvt->match) {
+               g_free (terminal->pvt->match);
+               terminal->pvt->match = NULL;
+       }
+}
+
+static gboolean
+cursor_inside_match (VteTerminal *terminal, long x, long y)
+{
+       gint width = terminal->char_width;
+       gint height = terminal->char_height;
+       glong col = x / width;
+       glong row = y / height + terminal->pvt->screen->scroll_delta;
+       if (terminal->pvt->match_start.row == terminal->pvt->match_end.row) {
+               return row == terminal->pvt->match_start.row &&
+                       col >= terminal->pvt->match_start.col &&
+                       col <= terminal->pvt->match_end.col;
+       } else {
+               if (row < terminal->pvt->match_start.row ||
+                               row > terminal->pvt->match_end.row) {
+                       return FALSE;
+               }
+               if (row == terminal->pvt->match_start.row) {
+                       return col >= terminal->pvt->match_start.col;
+               }
+               if (row == terminal->pvt->match_end.row) {
+                       return col <= terminal->pvt->match_end.col;
+               }
+               return TRUE;
+       }
+}
+
+static void
+vte_terminal_match_hilite_show(VteTerminal *terminal, long x, long y)
+{
+       if(terminal->pvt->match != NULL && !terminal->pvt->show_match){
+               if (cursor_inside_match (terminal, x, y)) {
+                       _vte_invalidate_region (terminal,
+                                       terminal->pvt->match_start.col,
+                                       terminal->pvt->match_end.col,
+                                       terminal->pvt->match_start.row,
+                                       terminal->pvt->match_end.row,
+                                       FALSE);
+                       terminal->pvt->show_match = TRUE;
+               }
+       }
+}
+static void
+vte_terminal_match_hilite_hide(VteTerminal *terminal)
+{
+       if(terminal->pvt->match != NULL && terminal->pvt->show_match){
+               _vte_invalidate_region (terminal,
+                               terminal->pvt->match_start.col,
+                               terminal->pvt->match_end.col,
+                               terminal->pvt->match_start.row,
+                               terminal->pvt->match_end.row,
+                               FALSE);
+               terminal->pvt->show_match = FALSE;
+       }
+}
+
+
+static void
+vte_terminal_match_hilite_update(VteTerminal *terminal, long x, long y)
+{
+       int start, end, width, height;
+       char *match;
+       struct _VteCharAttributes *attr;
+       VteScreen *screen;
+       long delta;
+
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       /* Check for matches. */
+       screen = terminal->pvt->screen;
+       delta = screen->scroll_delta;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Match hilite update (%ld, %ld) -> %ld, %ld\n",
+                       x, y,
+                       x / width,
+                       y / height + delta);
+
+       match = vte_terminal_match_check_internal(terminal,
+                                                 x / width,
+                                                 y / height + delta,
+                                                 &terminal->pvt->match_tag,
+                                                 &start,
+                                                 &end);
+       if (terminal->pvt->show_match) {
+               /* Repaint what used to be hilited, if anything. */
+               _vte_invalidate_region(terminal,
+                               terminal->pvt->match_start.col,
+                               terminal->pvt->match_end.col,
+                               terminal->pvt->match_start.row,
+                               terminal->pvt->match_end.row,
+                               FALSE);
+       }
+
+       /* Read the new locations. */
+       attr = NULL;
+       if ((guint) start < terminal->pvt->match_attributes->len) {
+               attr = &g_array_index(terminal->pvt->match_attributes,
+                               struct _VteCharAttributes,
+                               start);
+               terminal->pvt->match_start.row = attr->row;
+               terminal->pvt->match_start.col = attr->column;
+
+               attr = NULL;
+               if ((guint) end < terminal->pvt->match_attributes->len) {
+                       attr = &g_array_index(terminal->pvt->match_attributes,
+                                       struct _VteCharAttributes,
+                                       end);
+                       terminal->pvt->match_end.row = attr->row;
+                       terminal->pvt->match_end.col = attr->column;
+               }
+       }
+       if (attr == NULL) { /* i.e. if either endpoint is not found */
+               terminal->pvt->match_start.row = -1;
+               terminal->pvt->match_start.col = -1;
+               terminal->pvt->match_end.row = -2;
+               terminal->pvt->match_end.col = -2;
+               g_assert (match == NULL);
+       }
+
+       g_free (terminal->pvt->match);
+       terminal->pvt->match = match;
+
+       /* If there are no matches, repaint what we had matched before. */
+       if (match == NULL) {
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "No matches. [(%ld,%ld) to (%ld,%ld)]\n",
+                               terminal->pvt->match_start.col,
+                               terminal->pvt->match_start.row,
+                               terminal->pvt->match_end.col,
+                               terminal->pvt->match_end.row);
+               terminal->pvt->show_match = FALSE;
+       } else {
+               terminal->pvt->show_match = TRUE;
+               /* Repaint the newly-hilited area. */
+               _vte_invalidate_region(terminal,
+                               terminal->pvt->match_start.col,
+                               terminal->pvt->match_end.col,
+                               terminal->pvt->match_start.row,
+                               terminal->pvt->match_end.row,
+                               FALSE);
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Matched (%ld,%ld) to (%ld,%ld).\n",
+                               terminal->pvt->match_start.col,
+                               terminal->pvt->match_start.row,
+                               terminal->pvt->match_end.col,
+                               terminal->pvt->match_end.row);
+       }
+}
+/* Update the hilited text if the pointer has moved to a new character cell. */
+static void
+vte_terminal_match_hilite(VteTerminal *terminal, long x, long y)
+{
+       int width, height;
+       GtkAllocation allocation;
+
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       gtk_widget_get_allocation (&terminal->widget, &allocation);
+
+       /* if the cursor is not above a cell, skip */
+       if (x < 0 || x > allocation.width
+                       || y < 0 || y > allocation.height) {
+               return;
+       }
+
+       /* If the pointer hasn't moved to another character cell, then we
+        * need do nothing. */
+       if (x / width  == terminal->pvt->mouse_last_x / width &&
+           y / height == terminal->pvt->mouse_last_y / height) {
+               terminal->pvt->show_match = terminal->pvt->match != NULL;
+               return;
+       }
+
+       if (cursor_inside_match (terminal, x, y)) {
+               terminal->pvt->show_match = terminal->pvt->match != NULL;
+               return;
+       }
+
+       vte_terminal_match_hilite_update(terminal, x, y);
+}
+
+
+/* Note that the clipboard has cleared. */
+static void
+vte_terminal_clear_cb(GtkClipboard *clipboard, gpointer owner)
+{
+       VteTerminal *terminal;
+       terminal = owner;
+       if (terminal->pvt->has_selection) {
+               _vte_debug_print(VTE_DEBUG_SELECTION, "Lost selection.\n");
+               vte_terminal_deselect_all(terminal);
+       }
+}
+
+/* Supply the selected text to the clipboard. */
+static void
+vte_terminal_copy_cb(GtkClipboard *clipboard, GtkSelectionData *data,
+                    guint info, gpointer owner)
+{
+       VteTerminal *terminal;
+       terminal = owner;
+       if (terminal->pvt->selection != NULL) {
+               _VTE_DEBUG_IF(VTE_DEBUG_SELECTION) {
+                       int i;
+                       g_printerr("Setting selection (%"G_GSIZE_FORMAT" UTF-8 bytes.)\n",
+                               strlen(terminal->pvt->selection));
+                       for (i = 0; terminal->pvt->selection[i] != '\0'; i++) {
+                               g_printerr("0x%04x\n",
+                                       terminal->pvt->selection[i]);
+                       }
+               }
+               gtk_selection_data_set_text(data, terminal->pvt->selection, -1);
+       }
+}
+
+/**
+ * VteSelectionFunc:
+ * @terminal: terminal in which the cell is.
+ * @column: column in which the cell is.
+ * @row: row in which the cell is.
+ * @data: user data.
+ *
+ * Specifies the type of a selection function used to check whether
+ * a cell has to be selected or not.
+ *
+ * Returns: %TRUE if cell has to be selected; %FALSE if otherwise.
+ */
+
+/**
+ * vte_terminal_get_text_range:
+ * @terminal: a #VteTerminal
+ * @start_row: first row to search for data
+ * @start_col: first column to search for data
+ * @end_row: last row to search for data
+ * @end_col: last column to search for data
+ * @is_selected: a #VteSelectionFunc callback
+ * @user_data: (closure): user data to be passed to the callback
+ * @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text 
attributes
+ *
+ * Extracts a view of the visible part of the terminal.  If @is_selected is not
+ * %NULL, characters will only be read if @is_selected returns %TRUE after being
+ * passed the column and row, respectively.  A #VteCharAttributes structure
+ * is added to @attributes for each byte added to the returned string detailing
+ * the character's position, colors, and other characteristics.  The
+ * entire scrollback buffer is scanned, so it is possible to read the entire
+ * contents of the buffer using this function.
+ *
+ * Returns: (transfer full): a newly allocated text string, or %NULL.
+ */
+char *
+vte_terminal_get_text_range(VteTerminal *terminal,
+                           glong start_row, glong start_col,
+                           glong end_row, glong end_col,
+                           VteSelectionFunc is_selected,
+                           gpointer user_data,
+                           GArray *attributes)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return vte_terminal_get_text_range_maybe_wrapped(terminal,
+                                                        start_row, start_col,
+                                                        end_row, end_col,
+                                                        TRUE,
+                                                        is_selected,
+                                                        user_data,
+                                                        attributes,
+                                                        FALSE);
+}
+
+static char *
+vte_terminal_get_text_range_maybe_wrapped(VteTerminal *terminal,
+                                         glong start_row, glong start_col,
+                                         glong end_row, glong end_col,
+                                         gboolean wrap,
+                                         VteSelectionFunc is_selected,
+                                         gpointer data,
+                                         GArray *attributes,
+                                         gboolean include_trailing_spaces)
+{
+       glong col, row, last_empty, last_emptycol, last_nonempty, last_nonemptycol;
+       VteScreen *screen;
+       const VteCell *pcell = NULL;
+       GString *string;
+       struct _VteCharAttributes attr;
+       PangoColor fore, back, *palette;
+
+       if (!is_selected)
+               is_selected = always_selected;
+
+       screen = terminal->pvt->screen;
+
+       if (attributes)
+               g_array_set_size (attributes, 0);
+
+       string = g_string_new(NULL);
+       memset(&attr, 0, sizeof(attr));
+
+       palette = terminal->pvt->palette;
+       col = start_col;
+       for (row = start_row; row < end_row + 1; row++, col = 0) {
+               const VteRowData *row_data = _vte_terminal_find_row_data (terminal, row);
+               last_empty = last_nonempty = string->len;
+               last_emptycol = last_nonemptycol = -1;
+
+               attr.row = row;
+               attr.column = col;
+               pcell = NULL;
+               if (row_data != NULL) {
+                       while ((pcell = _vte_row_data_get (row_data, col))) {
+
+                               attr.column = col;
+
+                               /* If it's not part of a multi-column character,
+                                * and passes the selection criterion, add it to
+                                * the selection. */
+                               if (!pcell->attr.fragment && is_selected(terminal, col, row, data)) {
+                                       /* Store the attributes of this character. */
+                                       fore = palette[pcell->attr.fore];
+                                       back = palette[pcell->attr.back];
+                                       attr.fore.red = fore.red;
+                                       attr.fore.green = fore.green;
+                                       attr.fore.blue = fore.blue;
+                                       attr.back.red = back.red;
+                                       attr.back.green = back.green;
+                                       attr.back.blue = back.blue;
+                                       attr.underline = pcell->attr.underline;
+                                       attr.strikethrough = pcell->attr.strikethrough;
+
+                                       /* Store the cell string */
+                                       if (pcell->c == 0) {
+                                               g_string_append_c (string, ' ');
+                                               last_empty = string->len;
+                                               last_emptycol = col;
+                                       } else {
+                                               _vte_unistr_append_to_string (pcell->c, string);
+                                               last_nonempty = string->len;
+                                               last_nonemptycol = col;
+                                       }
+
+                                       /* If we added text to the string, record its
+                                        * attributes, one per byte. */
+                                       if (attributes) {
+                                               vte_g_array_fill(attributes,
+                                                               &attr, string->len);
+                                       }
+                               }
+                               /* If we're on the last line, and have just looked in
+                                * the last column, stop. */
+                               if ((row == end_row) && (col >= end_col)) {
+                                       break;
+                               }
+
+                               col++;
+                       }
+               }
+
+              /* If the last thing we saw was a empty, and we stopped at the
+               * right edge of the selected area, trim the trailing spaces
+               * off of the line. */
+               if (!include_trailing_spaces && last_empty > last_nonempty) {
+
+                       col = last_emptycol + 1;
+
+                       if (row_data != NULL) {
+                               while ((pcell = _vte_row_data_get (row_data, col))) {
+                                       col++;
+
+                                       if (pcell->attr.fragment)
+                                               continue;
+
+                                       if (pcell->c != 0)
+                                               break;
+                               }
+                       }
+                       if (pcell == NULL) {
+                               g_string_truncate(string, last_nonempty);
+                               if (attributes)
+                                       g_array_set_size(attributes, string->len);
+                               attr.column = last_nonemptycol;
+                       }
+               }
+
+               /* Adjust column, in case we want to append a newline */
+               attr.column = MAX(terminal->column_count, attr.column + 1);
+
+               /* Add a newline in block mode. */
+               if (terminal->pvt->selection_block_mode) {
+                       string = g_string_append_c(string, '\n');
+               }
+               /* Else, if the last visible column on this line was selected and
+                * not soft-wrapped, append a newline. */
+               else if (is_selected(terminal, terminal->column_count, row, data)) {
+                       /* If we didn't softwrap, add a newline. */
+                       /* XXX need to clear row->soft_wrap on deletion! */
+                       if (!vte_line_is_wrappable(terminal, row)) {
+                               string = g_string_append_c(string, '\n');
+                       }
+               }
+
+               /* Make sure that the attributes array is as long as the string. */
+               if (attributes) {
+                       vte_g_array_fill (attributes, &attr, string->len);
+               }
+       }
+       /* Sanity check. */
+       g_assert(attributes == NULL || string->len == attributes->len);
+       return g_string_free(string, FALSE);
+}
+
+static char *
+vte_terminal_get_text_maybe_wrapped(VteTerminal *terminal,
+                                   gboolean wrap,
+                                   VteSelectionFunc is_selected,
+                                   gpointer data,
+                                   GArray *attributes,
+                                   gboolean include_trailing_spaces)
+{
+       long start_row, start_col, end_row, end_col;
+       start_row = terminal->pvt->screen->scroll_delta;
+       start_col = 0;
+       end_row = start_row + terminal->row_count - 1;
+       end_col = terminal->column_count - 1;
+       return vte_terminal_get_text_range_maybe_wrapped(terminal,
+                                                        start_row, start_col,
+                                                        end_row, end_col,
+                                                        wrap,
+                                                        is_selected,
+                                                        data,
+                                                        attributes,
+                                                        include_trailing_spaces);
+}
+
+/**
+ * vte_terminal_get_text:
+ * @terminal: a #VteTerminal
+ * @is_selected: a #VteSelectionFunc callback
+ * @user_data: (closure): user data to be passed to the callback
+ * @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text 
attributes
+ *
+ * Extracts a view of the visible part of the terminal.  If @is_selected is not
+ * %NULL, characters will only be read if @is_selected returns %TRUE after being
+ * passed the column and row, respectively.  A #VteCharAttributes structure
+ * is added to @attributes for each byte added to the returned string detailing
+ * the character's position, colors, and other characteristics.
+ *
+ * Returns: (transfer full): a newly allocated text string, or %NULL.
+ */
+char *
+vte_terminal_get_text(VteTerminal *terminal,
+                     VteSelectionFunc is_selected,
+                     gpointer user_data,
+                     GArray *attributes)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return vte_terminal_get_text_maybe_wrapped(terminal,
+                                                  TRUE,
+                                                  is_selected,
+                                                  user_data,
+                                                  attributes,
+                                                  FALSE);
+}
+
+/**
+ * vte_terminal_get_text_include_trailing_spaces:
+ * @terminal: a #VteTerminal
+ * @is_selected: a #VteSelectionFunc callback
+ * @user_data: (closure): user data to be passed to the callback
+ * @attributes: (out) (transfer full) (array) (element-type Vte.CharAttributes): location for storing text 
attributes
+ *
+ * Extracts a view of the visible part of the terminal.  If @is_selected is not
+ * %NULL, characters will only be read if @is_selected returns %TRUE after being
+ * passed the column and row, respectively.  A #VteCharAttributes structure
+ * is added to @attributes for each byte added to the returned string detailing
+ * the character's position, colors, and other characteristics. This function
+ * differs from vte_terminal_get_text() in that trailing spaces at the end of
+ * lines are included.
+ *
+ * Returns: (transfer full): a newly allocated text string, or %NULL.
+ *
+ * Since: 0.11.11
+ */
+char *
+vte_terminal_get_text_include_trailing_spaces(VteTerminal *terminal,
+                                             VteSelectionFunc is_selected,
+                                             gpointer user_data,
+                                             GArray *attributes)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return vte_terminal_get_text_maybe_wrapped(terminal,
+                                                  TRUE,
+                                                  is_selected,
+                                                  user_data,
+                                                  attributes,
+                                                  TRUE);
+}
+
+/**
+ * vte_terminal_get_cursor_position:
+ * @terminal: a #VteTerminal
+ * @column: (out) (allow-none): a location to store the column, or %NULL
+ * @row : (out) (allow-none): a location to store the row, or %NULL
+ *
+ * Reads the location of the insertion cursor and returns it.  The row
+ * coordinate is absolute.
+ */
+void
+vte_terminal_get_cursor_position(VteTerminal *terminal,
+                                glong *column, glong *row)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       if (column) {
+               *column = terminal->pvt->screen->cursor_current.col;
+       }
+       if (row) {
+               *row = terminal->pvt->screen->cursor_current.row;
+       }
+}
+
+static GtkClipboard *
+vte_terminal_clipboard_get(VteTerminal *terminal, GdkAtom board)
+{
+       GdkDisplay *display;
+       display = gtk_widget_get_display(&terminal->widget);
+       return gtk_clipboard_get_for_display(display, board);
+}
+
+/* Place the selected text onto the clipboard.  Do this asynchronously so that
+ * we get notified when the selection we placed on the clipboard is replaced. */
+static void
+vte_terminal_copy(VteTerminal *terminal, GdkAtom board)
+{
+       GtkClipboard *clipboard;
+       static GtkTargetEntry *targets = NULL;
+       static gint n_targets = 0;
+
+       clipboard = vte_terminal_clipboard_get(terminal, board);
+
+       /* Chuck old selected text and retrieve the newly-selected text. */
+       g_free(terminal->pvt->selection);
+       terminal->pvt->selection =
+               vte_terminal_get_text_range(terminal,
+                                           terminal->pvt->selection_start.row,
+                                           0,
+                                           terminal->pvt->selection_end.row,
+                                           terminal->column_count,
+                                           vte_cell_is_selected,
+                                           NULL,
+                                           NULL);
+       terminal->pvt->has_selection = TRUE;
+
+       /* Place the text on the clipboard. */
+       if (terminal->pvt->selection != NULL) {
+               _vte_debug_print(VTE_DEBUG_SELECTION,
+                               "Assuming ownership of selection.\n");
+               if (!targets) {
+                       GtkTargetList *list;
+
+                       list = gtk_target_list_new (NULL, 0);
+                       gtk_target_list_add_text_targets (list, 0);
+                        targets = gtk_target_table_new_from_list (list, &n_targets);
+                       gtk_target_list_unref (list);
+               }
+
+               gtk_clipboard_set_with_owner(clipboard,
+                                            targets,
+                                            n_targets,
+                                            vte_terminal_copy_cb,
+                                            vte_terminal_clear_cb,
+                                            G_OBJECT(terminal));
+               gtk_clipboard_set_can_store(clipboard, NULL, 0);
+       }
+}
+
+/* Paste from the given clipboard. */
+static void
+vte_terminal_paste(VteTerminal *terminal, GdkAtom board)
+{
+       GtkClipboard *clipboard;
+       clipboard = vte_terminal_clipboard_get(terminal, board);
+       if (clipboard != NULL) {
+               _vte_debug_print(VTE_DEBUG_SELECTION,
+                               "Requesting clipboard contents.\n");
+               gtk_clipboard_request_text(clipboard,
+                                          vte_terminal_paste_cb,
+                                          terminal);
+       }
+}
+
+static void
+vte_terminal_invalidate_selection (VteTerminal *terminal)
+{
+       _vte_invalidate_region (terminal,
+                               terminal->pvt->selection_start.col,
+                               terminal->pvt->selection_end.col,
+                               terminal->pvt->selection_start.row,
+                               terminal->pvt->selection_end.row,
+                               terminal->pvt->selection_block_mode);
+}
+
+
+/* Start selection at the location of the event. */
+static void
+vte_terminal_start_selection(VteTerminal *terminal, GdkEventButton *event,
+                            enum vte_selection_type selection_type)
+{
+       long delta;
+
+       terminal->pvt->selection_block_mode = !!(terminal->pvt->modifiers & GDK_CONTROL_MASK);
+
+       if (terminal->pvt->selection_block_mode)
+               selection_type = selection_type_char;
+
+       /* Record that we have the selection, and where it started. */
+       delta = terminal->pvt->screen->scroll_delta;
+       terminal->pvt->has_selection = TRUE;
+       terminal->pvt->selection_last.x = event->x - terminal->pvt->inner_border.left;
+       terminal->pvt->selection_last.y = event->y - terminal->pvt->inner_border.top +
+                                         (terminal->char_height * delta);
+
+       /* Decide whether or not to restart on the next drag. */
+       switch (selection_type) {
+       case selection_type_char:
+               /* Restart selection once we register a drag. */
+               terminal->pvt->selecting_restart = TRUE;
+               terminal->pvt->has_selection = FALSE;
+               terminal->pvt->selecting_had_delta = FALSE;
+
+               terminal->pvt->selection_origin = terminal->pvt->selection_last;
+               break;
+       case selection_type_word:
+       case selection_type_line:
+               /* Mark the newly-selected areas now. */
+               terminal->pvt->selecting_restart = FALSE;
+               terminal->pvt->has_selection = FALSE;
+               terminal->pvt->selecting_had_delta = FALSE;
+               break;
+       }
+
+       /* Record the selection type. */
+       terminal->pvt->selection_type = selection_type;
+       terminal->pvt->selecting = TRUE;
+
+       _vte_debug_print(VTE_DEBUG_SELECTION,
+                       "Selection started at (%ld,%ld).\n",
+                       terminal->pvt->selection_start.col,
+                       terminal->pvt->selection_start.row);
+
+       /* Temporarily stop caring about input from the child. */
+       _vte_terminal_disconnect_pty_read(terminal);
+}
+
+static gboolean
+_vte_terminal_maybe_end_selection (VteTerminal *terminal)
+{
+       if (terminal->pvt->selecting) {
+               /* Copy only if something was selected. */
+               if (terminal->pvt->has_selection &&
+                   !terminal->pvt->selecting_restart &&
+                   terminal->pvt->selecting_had_delta) {
+                       vte_terminal_copy_primary(terminal);
+                       vte_terminal_emit_selection_changed(terminal);
+               }
+               terminal->pvt->selecting = FALSE;
+
+               /* Reconnect to input from the child if we paused it. */
+               _vte_terminal_connect_pty_read(terminal);
+
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static long
+math_div (long a, long b)
+{
+       if (G_LIKELY (a >= 0))
+               return a / b;
+       else
+               return (a / b) - 1;
+}
+
+/* Helper */
+static void
+vte_terminal_extend_selection_expand (VteTerminal *terminal)
+{
+       long i, j;
+       VteScreen *screen;
+       const VteRowData *rowdata;
+       const VteCell *cell;
+       VteVisualPosition *sc, *ec;
+
+       if (terminal->pvt->selection_block_mode)
+               return;
+
+       screen = terminal->pvt->screen;
+       sc = &terminal->pvt->selection_start;
+       ec = &terminal->pvt->selection_end;
+
+       /* Extend the selection to handle end-of-line cases, word, and line
+        * selection.  We do this here because calculating it once is cheaper
+        * than recalculating for each cell as we render it. */
+
+       /* Handle end-of-line at the start-cell. */
+       rowdata = _vte_terminal_find_row_data(terminal, sc->row);
+       if (rowdata != NULL) {
+               /* Find the last non-empty character on the first line. */
+               for (i = _vte_row_data_length (rowdata); i > 0; i--) {
+                       cell = _vte_row_data_get (rowdata, i - 1);
+                       if (cell->attr.fragment || cell->c != 0)
+                               break;
+               }
+               /* If the start point is to its right, then move the
+                * startpoint up to the beginning of the next line
+                * unless that would move the startpoint after the end
+                * point, or we're in select-by-line mode. */
+               if ((sc->col >= i) &&
+                               (terminal->pvt->selection_type != selection_type_line)) {
+                       if (sc->row < ec->row) {
+                               sc->col = 0;
+                               sc->row++;
+                       } else {
+                               sc->col = i;
+                       }
+               }
+       } else {
+               /* Snap to the leftmost column. */
+               sc->col = 0;
+       }
+       sc->col = find_start_column (terminal, sc->col, sc->row);
+
+       /* Handle end-of-line at the end-cell. */
+       rowdata = _vte_terminal_find_row_data(terminal, ec->row);
+       if (rowdata != NULL) {
+               /* Find the last non-empty character on the last line. */
+               for (i = _vte_row_data_length (rowdata); i > 0; i--) {
+                       cell = _vte_row_data_get (rowdata, i - 1);
+                       if (cell->attr.fragment || cell->c != 0)
+                               break;
+               }
+               /* If the end point is to its right, then extend the
+                * endpoint as far right as we can expect. */
+               if (ec->col >= i) {
+                       ec->col = MAX(ec->col,
+                                   MAX(terminal->column_count,
+                                       (long) _vte_row_data_length (rowdata)));
+               }
+       } else {
+               /* Snap to the rightmost column, only if selecting anything of
+                * this row. */
+               if (ec->col >= 0)
+                       ec->col = MAX(ec->col, terminal->column_count);
+       }
+       ec->col = find_end_column (terminal, ec->col, ec->row);
+
+
+       /* Now extend again based on selection type. */
+       switch (terminal->pvt->selection_type) {
+       case selection_type_char:
+               /* Nothing more to do. */
+               break;
+       case selection_type_word:
+               /* Keep selecting to the left as long as the next character we
+                * look at is of the same class as the current start point. */
+               i = sc->col;
+               j = sc->row;
+               while (_vte_ring_contains (screen->row_data, j)) {
+                       /* Get the data for the row we're looking at. */
+                       rowdata = _vte_ring_index(screen->row_data, j);
+                       if (rowdata == NULL) {
+                               break;
+                       }
+                       /* Back up. */
+                       for (i = (j == sc->row) ?
+                                sc->col :
+                                terminal->column_count;
+                            i > 0;
+                            i--) {
+                               if (vte_same_class(terminal,
+                                                  i - 1,
+                                                  j,
+                                                  i,
+                                                  j)) {
+                                       sc->col = i - 1;
+                                       sc->row = j;
+                               } else {
+                                       break;
+                               }
+                       }
+                       if (i > 0) {
+                               /* We hit a stopping point, so stop. */
+                               break;
+                       } else {
+                               if (vte_line_is_wrappable(terminal, j - 1) &&
+                                   vte_same_class(terminal,
+                                                  terminal->column_count - 1,
+                                                  j - 1,
+                                                  0,
+                                                  j)) {
+                                       /* Move on to the previous line. */
+                                       j--;
+                                       sc->col = terminal->column_count - 1;
+                                       sc->row = j;
+                               } else {
+                                       break;
+                               }
+                       }
+               }
+               /* Keep selecting to the right as long as the next character we
+                * look at is of the same class as the current end point. */
+               i = ec->col;
+               j = ec->row;
+               while (_vte_ring_contains (screen->row_data, j)) {
+                       /* Get the data for the row we're looking at. */
+                       rowdata = _vte_ring_index(screen->row_data, j);
+                       if (rowdata == NULL) {
+                               break;
+                       }
+                       /* Move forward. */
+                       for (i = (j == ec->row) ?
+                                ec->col :
+                                0;
+                            i < terminal->column_count - 1;
+                            i++) {
+                               if (vte_same_class(terminal,
+                                                  i,
+                                                  j,
+                                                  i + 1,
+                                                  j)) {
+                                       ec->col = i + 1;
+                                       ec->row = j;
+                               } else {
+                                       break;
+                               }
+                       }
+                       if (i < terminal->column_count - 1) {
+                               /* We hit a stopping point, so stop. */
+                               break;
+                       } else {
+                               if (vte_line_is_wrappable(terminal, j) &&
+                                   vte_same_class(terminal,
+                                                  terminal->column_count - 1,
+                                                  j,
+                                                  0,
+                                                  j + 1)) {
+                                       /* Move on to the next line. */
+                                       j++;
+                                       ec->col = 0;
+                                       ec->row = j;
+                               } else {
+                                       break;
+                               }
+                       }
+               }
+               break;
+       case selection_type_line:
+               /* Extend the selection to the beginning of the start line. */
+               sc->col = 0;
+               /* Now back up as far as we can go. */
+               j = sc->row;
+               while (_vte_ring_contains (screen->row_data, j - 1) &&
+                      vte_line_is_wrappable(terminal, j - 1)) {
+                       j--;
+                       sc->row = j;
+               }
+               /* And move forward as far as we can go. */
+               j = ec->row;
+               while (_vte_ring_contains (screen->row_data, j) &&
+                      vte_line_is_wrappable(terminal, j)) {
+                       j++;
+                       ec->row = j;
+               }
+               /* Make sure we include all of the last line. */
+               ec->col = terminal->column_count;
+               if (_vte_ring_contains (screen->row_data, ec->row)) {
+                       rowdata = _vte_ring_index(screen->row_data, ec->row);
+                       if (rowdata != NULL) {
+                               ec->col = MAX(ec->col, (long) _vte_row_data_length (rowdata));
+                       }
+               }
+               break;
+       }
+}
+
+/* Extend selection to include the given event coordinates. */
+static void
+vte_terminal_extend_selection(VteTerminal *terminal, long x, long y,
+                             gboolean always_grow, gboolean force)
+{
+       VteScreen *screen;
+       int width, height;
+       long delta, residual;
+       struct selection_event_coords *origin, *last, *start, *end;
+       VteVisualPosition old_start, old_end, *sc, *ec, *so, *eo;
+       gboolean invalidate_selected = FALSE;
+       gboolean had_selection;
+
+       height = terminal->char_height;
+       width = terminal->char_width;
+
+       /* Confine y into the visible area. (#563024) */
+       if (y < 0) {
+               y = 0;
+               if (!terminal->pvt->selection_block_mode)
+                       x = 0;
+       } else if (y >= terminal->row_count * height) {
+               if (!terminal->pvt->selection_block_mode) {
+                       y = terminal->row_count * height;
+                       x = -1;
+               } else {
+                       y = terminal->row_count * height - 1;
+               }
+       }
+
+       screen = terminal->pvt->screen;
+       old_start = terminal->pvt->selection_start;
+       old_end = terminal->pvt->selection_end;
+       so = &old_start;
+       eo = &old_end;
+
+       /* Convert the event coordinates to cell coordinates. */
+       delta = screen->scroll_delta;
+
+       /* If we're restarting on a drag, then mark this as the start of
+        * the selected block. */
+       if (terminal->pvt->selecting_restart) {
+               vte_terminal_deselect_all(terminal);
+               invalidate_selected = TRUE;
+               _vte_debug_print(VTE_DEBUG_SELECTION,
+                               "Selection delayed start at (%ld,%ld).\n",
+                               terminal->pvt->selection_origin.x / width,
+                               terminal->pvt->selection_origin.y / height);
+       }
+
+       /* Recognize that we've got a selected block. */
+       had_selection = terminal->pvt->has_selection;
+       terminal->pvt->has_selection = TRUE;
+       terminal->pvt->selecting_had_delta = TRUE;
+       terminal->pvt->selecting_restart = FALSE;
+
+       /* If we're not in always-grow mode, update the last location of
+        * the selection. */
+       last = &terminal->pvt->selection_last;
+
+       /* Map the origin and last selected points to a start and end. */
+       origin = &terminal->pvt->selection_origin;
+       if (terminal->pvt->selection_block_mode) {
+               last->x = x;
+               last->y = y + height * delta;
+
+               /* We don't support always_grow in block mode */
+               if (always_grow)
+                       vte_terminal_invalidate_selection (terminal);
+
+               if (origin->y <= last->y) {
+                       /* The origin point is "before" the last point. */
+                       start = origin;
+                       end = last;
+               } else {
+                       /* The last point is "before" the origin point. */
+                       start = last;
+                       end = origin;
+               }
+       } else {
+               if (!always_grow) {
+                       last->x = x;
+                       last->y = y + height * delta;
+               }
+
+               if ((origin->y / height < last->y / height) ||
+                   ((origin->y / height == last->y / height) &&
+                    (origin->x / width < last->x / width ))) {
+                       /* The origin point is "before" the last point. */
+                       start = origin;
+                       end = last;
+               } else {
+                       /* The last point is "before" the origin point. */
+                       start = last;
+                       end = origin;
+               }
+
+               /* Extend the selection by moving whichever end of the selection is
+                * closer to the new point. */
+               if (always_grow) {
+                       /* New endpoint is before existing selection. */
+                       if ((y / height < ((start->y / height) - delta)) ||
+                           ((y / height == ((start->y / height) - delta)) &&
+                            (x / width < start->x / width))) {
+                               start->x = x;
+                               start->y = y + height * delta;
+                       } else {
+                               /* New endpoint is after existing selection. */
+                               end->x = x;
+                               end->y = y + height * delta;
+                       }
+               }
+       }
+
+#if 0
+       _vte_debug_print(VTE_DEBUG_SELECTION,
+                       "Selection is (%ld,%ld) to (%ld,%ld).\n",
+                       start->x, start->y, end->x, end->y);
+#endif
+
+       /* Recalculate the selection area in terms of cell positions. */
+
+       sc = &terminal->pvt->selection_start;
+       ec = &terminal->pvt->selection_end;
+
+       sc->row = MAX (0, start->y / height);
+       ec->row = MAX (0, end->y   / height);
+
+       /* Sort x using row cell coordinates */
+       if ((terminal->pvt->selection_block_mode || sc->row == ec->row) && (start->x > end->x)) {
+               struct selection_event_coords *tmp;
+               tmp = start;
+               start = end;
+               end = tmp;
+       }
+
+       /* We want to be more lenient on the user with their column selection.
+        * We round to the closest logical position (positions are located between
+        * cells).  But we don't want to fully round.  So we divide the cell
+        * width into three parts.  The side parts round to their nearest
+        * position.  The middle part is always inclusive in the selection.
+        *
+        * math_div and no MAX, to allow selecting no cells in the line,
+        * ie. ec->col = -1, which is essentially equal to copying the
+        * newline from previous line but no chars from current line. */
+       residual = (width + 1) / 3;
+       sc->col = math_div (start->x + residual, width);
+       ec->col = math_div (end->x - residual, width);
+
+
+       vte_terminal_extend_selection_expand (terminal);
+
+       if (!invalidate_selected && !force &&
+           0 == memcmp (sc, so, sizeof (*sc)) &&
+           0 == memcmp (ec, eo, sizeof (*ec)))
+               /* No change */
+               return;
+
+       /* Invalidate */
+
+       if (had_selection) {
+
+               if (terminal->pvt->selection_block_mode) {
+                       /* Update the selection area diff in block mode. */
+
+                       /* The top band */
+                       _vte_invalidate_region (terminal,
+                                               MIN(sc->col, so->col),
+                                               MAX(ec->col, eo->col),
+                                               MIN(sc->row, so->row),
+                                               MAX(sc->row, so->row) - 1,
+                                               TRUE);
+                       /* The bottom band */
+                       _vte_invalidate_region (terminal,
+                                               MIN(sc->col, so->col),
+                                               MAX(ec->col, eo->col),
+                                               MIN(ec->row, eo->row) + 1,
+                                               MAX(ec->row, eo->row),
+                                               TRUE);
+                       /* The left band */
+                       _vte_invalidate_region (terminal,
+                                               MIN(sc->col, so->col),
+                                               MAX(sc->col, so->col) - 1,
+                                               MIN(sc->row, so->row),
+                                               MAX(ec->row, eo->row),
+                                               TRUE);
+                       /* The right band */
+                       _vte_invalidate_region (terminal,
+                                               MIN(ec->col, eo->col) + 1,
+                                               MAX(ec->col, eo->col),
+                                               MIN(sc->row, so->row),
+                                               MAX(ec->row, eo->row),
+                                               TRUE);
+               } else {
+                       /* Update the selection area diff in non-block mode. */
+
+                       /* The before band */
+                       if (sc->row < so->row)
+                               _vte_invalidate_region (terminal,
+                                                       sc->col, so->col - 1,
+                                                       sc->row, so->row,
+                                                       FALSE);
+                       else if (sc->row > so->row)
+                               _vte_invalidate_region (terminal,
+                                                       so->col, sc->col - 1,
+                                                       so->row, sc->row,
+                                                       FALSE);
+                       else
+                               _vte_invalidate_region (terminal,
+                                                       MIN(sc->col, so->col), MAX(sc->col, so->col) - 1,
+                                                       sc->row, sc->row,
+                                                       TRUE);
+
+                       /* The after band */
+                       if (ec->row < eo->row)
+                               _vte_invalidate_region (terminal,
+                                                       ec->col + 1, eo->col,
+                                                       ec->row, eo->row,
+                                                       FALSE);
+                       else if (ec->row > eo->row)
+                               _vte_invalidate_region (terminal,
+                                                       eo->col + 1, ec->col,
+                                                       eo->row, ec->row,
+                                                       FALSE);
+                       else
+                               _vte_invalidate_region (terminal,
+                                                       MIN(ec->col, eo->col) + 1, MAX(ec->col, eo->col),
+                                                       ec->row, ec->row,
+                                                       TRUE);
+               }
+       }
+
+       if (invalidate_selected || !had_selection) {
+               _vte_debug_print(VTE_DEBUG_SELECTION, "Invalidating selection.");
+               vte_terminal_invalidate_selection (terminal);
+       }
+
+       _vte_debug_print(VTE_DEBUG_SELECTION,
+                       "Selection changed to "
+                       "(%ld,%ld) to (%ld,%ld).\n",
+                       sc->col, sc->row, ec->col, ec->row);
+}
+
+/**
+ * vte_terminal_select_all:
+ * @terminal: a #VteTerminal
+ *
+ * Selects all text within the terminal (including the scrollback buffer).
+ *
+ * Since: 0.16
+ */
+void
+vte_terminal_select_all (VteTerminal *terminal)
+{
+       g_return_if_fail (VTE_IS_TERMINAL (terminal));
+
+       vte_terminal_deselect_all (terminal);
+
+       terminal->pvt->has_selection = TRUE;
+       terminal->pvt->selecting_had_delta = TRUE;
+       terminal->pvt->selecting_restart = FALSE;
+
+       terminal->pvt->selection_start.row = _vte_ring_delta (terminal->pvt->screen->row_data);
+       terminal->pvt->selection_start.col = 0;
+       terminal->pvt->selection_end.row = _vte_ring_next (terminal->pvt->screen->row_data);
+       terminal->pvt->selection_end.col = -1;
+
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Selecting *all* text.\n");
+
+       vte_terminal_copy_primary(terminal);
+       vte_terminal_emit_selection_changed (terminal);
+       _vte_invalidate_all (terminal);
+}
+
+/**
+ * vte_terminal_select_none:
+ * @terminal: a #VteTerminal
+ *
+ * Clears the current selection.
+ *
+ * Since: 0.16
+ */
+void
+vte_terminal_select_none (VteTerminal *terminal)
+{
+       g_return_if_fail (VTE_IS_TERMINAL (terminal));
+
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Clearing selection.\n");
+
+       vte_terminal_deselect_all (terminal);
+}
+
+
+
+/* Autoscroll a bit. */
+static gboolean
+vte_terminal_autoscroll(VteTerminal *terminal)
+{
+       gboolean extend = FALSE;
+       long x, y, xmax, ymax;
+       glong adj;
+
+       /* Provide an immediate effect for mouse wigglers. */
+       if (terminal->pvt->mouse_last_y < 0) {
+               if (terminal->adjustment) {
+                       /* Try to scroll up by one line. */
+                       adj = terminal->pvt->screen->scroll_delta - 1;
+                       vte_terminal_queue_adjustment_value_changed_clamped (terminal, adj);
+                       extend = TRUE;
+               }
+               _vte_debug_print(VTE_DEBUG_EVENTS, "Autoscrolling down.\n");
+       }
+       if (terminal->pvt->mouse_last_y >=
+           terminal->row_count * terminal->char_height) {
+               if (terminal->adjustment) {
+                       /* Try to scroll up by one line. */
+                       adj = terminal->pvt->screen->scroll_delta + 1;
+                       vte_terminal_queue_adjustment_value_changed_clamped (terminal, adj);
+                       extend = TRUE;
+               }
+               _vte_debug_print(VTE_DEBUG_EVENTS, "Autoscrolling up.\n");
+       }
+       if (extend) {
+               /* Don't select off-screen areas.  That just confuses people. */
+               xmax = terminal->column_count * terminal->char_width;
+               ymax = terminal->row_count * terminal->char_height;
+
+               x = CLAMP(terminal->pvt->mouse_last_x, 0, xmax);
+               y = CLAMP(terminal->pvt->mouse_last_y, 0, ymax);
+               /* If we clamped the Y, mess with the X to get the entire
+                * lines. */
+               if (terminal->pvt->mouse_last_y < 0 && !terminal->pvt->selection_block_mode) {
+                       x = 0;
+               }
+               if (terminal->pvt->mouse_last_y >= ymax && !terminal->pvt->selection_block_mode) {
+                       x = terminal->column_count * terminal->char_width;
+               }
+               /* Extend selection to cover the newly-scrolled area. */
+               vte_terminal_extend_selection(terminal, x, y, FALSE, TRUE);
+       } else {
+               /* Stop autoscrolling. */
+               terminal->pvt->mouse_autoscroll_tag = 0;
+       }
+       return (terminal->pvt->mouse_autoscroll_tag != 0);
+}
+
+/* Start autoscroll. */
+static void
+vte_terminal_start_autoscroll(VteTerminal *terminal)
+{
+       if (terminal->pvt->mouse_autoscroll_tag == 0) {
+               terminal->pvt->mouse_autoscroll_tag =
+                       g_timeout_add_full(G_PRIORITY_LOW,
+                                          666 / terminal->row_count,
+                                          (GSourceFunc)vte_terminal_autoscroll,
+                                          terminal,
+                                          NULL);
+       }
+}
+
+/* Stop autoscroll. */
+static void
+vte_terminal_stop_autoscroll(VteTerminal *terminal)
+{
+       if (terminal->pvt->mouse_autoscroll_tag != 0) {
+               g_source_remove(terminal->pvt->mouse_autoscroll_tag);
+               terminal->pvt->mouse_autoscroll_tag = 0;
+       }
+}
+
+/* Read and handle a motion event. */
+static gboolean
+vte_terminal_motion_notify(GtkWidget *widget, GdkEventMotion *event)
+{
+       VteTerminal *terminal;
+       int width, height;
+       long x, y;
+       gboolean handled = FALSE;
+
+       /* check to see if it matters */
+       if (! gtk_widget_is_drawable (widget)) {
+               return handled;
+       }
+
+       terminal = VTE_TERMINAL(widget);
+       x = event->x - terminal->pvt->inner_border.left;
+       y = event->y - terminal->pvt->inner_border.top;
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Motion notify (%ld,%ld) [%ld, %ld].\n",
+                       x, y,
+                       x / width, y / height + terminal->pvt->screen->scroll_delta);
+
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       if (terminal->pvt->mouse_last_button) {
+               vte_terminal_match_hilite_hide (terminal);
+       } else {
+               /* Hilite any matches. */
+               vte_terminal_match_hilite(terminal, x, y);
+               /* Show the cursor. */
+               _vte_terminal_set_pointer_visible(terminal, TRUE);
+       }
+
+       switch (event->type) {
+       case GDK_MOTION_NOTIFY:
+               if (terminal->pvt->selecting &&
+                   ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                     !terminal->pvt->mouse_tracking_mode))
+               {
+                       _vte_debug_print(VTE_DEBUG_EVENTS, "Mousing drag 1.\n");
+                       vte_terminal_extend_selection(terminal,
+                                                     x, y, FALSE, FALSE);
+
+                       /* Start scrolling if we need to. */
+                       if (event->y < terminal->pvt->inner_border.top ||
+                           event->y >= terminal->row_count * height +
+                                        terminal->pvt->inner_border.top)
+                       {
+                               /* Give mouse wigglers something. */
+                               vte_terminal_autoscroll(terminal);
+                               /* Start a timed autoscroll if we're not doing it
+                                * already. */
+                               vte_terminal_start_autoscroll(terminal);
+                       }
+
+                       handled = TRUE;
+               }
+
+               if (!handled)
+                       vte_terminal_maybe_send_mouse_drag(terminal, event);
+               break;
+       default:
+               break;
+       }
+
+       /* Save the pointer coordinates for later use. */
+       terminal->pvt->mouse_last_x = x;
+       terminal->pvt->mouse_last_y = y;
+
+       return handled;
+}
+
+/* Read and handle a pointing device buttonpress event. */
+static gint
+vte_terminal_button_press(GtkWidget *widget, GdkEventButton *event)
+{
+       VteTerminal *terminal;
+       long height, width, delta;
+       gboolean handled = FALSE;
+       gboolean start_selecting = FALSE, extend_selecting = FALSE;
+       long cellx, celly;
+       long x,y;
+
+       terminal = VTE_TERMINAL(widget);
+
+       x = event->x - terminal->pvt->inner_border.left;
+       y = event->y - terminal->pvt->inner_border.top;
+
+       height = terminal->char_height;
+       width = terminal->char_width;
+       delta = terminal->pvt->screen->scroll_delta;
+
+       vte_terminal_match_hilite(terminal, x, y);
+
+       _vte_terminal_set_pointer_visible(terminal, TRUE);
+
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       /* Convert the event coordinates to cell coordinates. */
+       cellx = x / width;
+       celly = y / height + delta;
+
+       switch (event->type) {
+       case GDK_BUTTON_PRESS:
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Button %d single-click at (%ld,%ld)\n",
+                               event->button,
+                               x, y + terminal->char_height * delta);
+               /* Handle this event ourselves. */
+               switch (event->button) {
+               case 1:
+                       _vte_debug_print(VTE_DEBUG_EVENTS,
+                                       "Handling click ourselves.\n");
+                       /* Grab focus. */
+                       if (! gtk_widget_has_focus (widget)) {
+                               gtk_widget_grab_focus(widget);
+                       }
+
+                       /* If we're in event mode, and the user held down the
+                        * shift key, we start selecting. */
+                       if (terminal->pvt->mouse_tracking_mode) {
+                               if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
+                                       start_selecting = TRUE;
+                               }
+                       } else {
+                               /* If the user hit shift, then extend the
+                                * selection instead. */
+                               if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) &&
+                                   (terminal->pvt->has_selection ||
+                                    terminal->pvt->selecting_restart) &&
+                                   !vte_cell_is_selected(terminal,
+                                                         cellx,
+                                                         celly,
+                                                         NULL)) {
+                                       extend_selecting = TRUE;
+                               } else {
+                                       start_selecting = TRUE;
+                               }
+                       }
+                       if (start_selecting) {
+                               vte_terminal_deselect_all(terminal);
+                               vte_terminal_start_selection(terminal,
+                                                            event,
+                                                            selection_type_char);
+                               handled = TRUE;
+                       }
+                       if (extend_selecting) {
+                               vte_terminal_extend_selection(terminal,
+                                                             x, y,
+                                                             !terminal->pvt->selecting_restart, TRUE);
+                               /* The whole selection code needs to be
+                                * rewritten.  For now, put this here to
+                                * fix bug 614658 */
+                               terminal->pvt->selecting = TRUE;
+                               handled = TRUE;
+                       }
+                       break;
+               /* Paste if the user pressed shift or we're not sending events
+                * to the app. */
+               case 2:
+                       if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                           !terminal->pvt->mouse_tracking_mode) {
+                               vte_terminal_paste_primary(terminal);
+                               handled = TRUE;
+                       }
+                       break;
+               case 3:
+               default:
+                       break;
+               }
+               /* If we haven't done anything yet, try sending the mouse
+                * event to the app. */
+               if (handled == FALSE) {
+                       vte_terminal_maybe_send_mouse_button(terminal, event);
+                       handled = TRUE;
+               }
+               break;
+       case GDK_2BUTTON_PRESS:
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Button %d double-click at (%ld,%ld)\n",
+                               event->button,
+                               x, y + (terminal->char_height * delta));
+               switch (event->button) {
+               case 1:
+                       if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                           !terminal->pvt->mouse_tracking_mode) {
+                               vte_terminal_start_selection(terminal,
+                                                            event,
+                                                            selection_type_word);
+                               vte_terminal_extend_selection(terminal,
+                                                             x, y, FALSE, TRUE);
+                       }
+                       break;
+               case 2:
+               case 3:
+               default:
+                       break;
+               }
+               break;
+       case GDK_3BUTTON_PRESS:
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Button %d triple-click at (%ld,%ld).\n",
+                               event->button,
+                               x, y + (terminal->char_height * delta));
+               switch (event->button) {
+               case 1:
+                       if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                           !terminal->pvt->mouse_tracking_mode) {
+                               vte_terminal_start_selection(terminal,
+                                                            event,
+                                                            selection_type_line);
+                               vte_terminal_extend_selection(terminal,
+                                                             x, y, FALSE, TRUE);
+                       }
+                       break;
+               case 2:
+               case 3:
+               default:
+                       break;
+               }
+       default:
+               break;
+       }
+
+       /* Save the pointer state for later use. */
+       terminal->pvt->mouse_last_button = event->button;
+       terminal->pvt->mouse_last_x = x;
+       terminal->pvt->mouse_last_y = y;
+
+       return TRUE;
+}
+
+/* Read and handle a pointing device buttonrelease event. */
+static gint
+vte_terminal_button_release(GtkWidget *widget, GdkEventButton *event)
+{
+       VteTerminal *terminal;
+       gboolean handled = FALSE;
+       int x, y;
+
+       terminal = VTE_TERMINAL(widget);
+
+       x = event->x - terminal->pvt->inner_border.left;
+       y = event->y - terminal->pvt->inner_border.top;
+
+       vte_terminal_match_hilite(terminal, x, y);
+
+       _vte_terminal_set_pointer_visible(terminal, TRUE);
+
+       vte_terminal_stop_autoscroll(terminal);
+
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       switch (event->type) {
+       case GDK_BUTTON_RELEASE:
+               _vte_debug_print(VTE_DEBUG_EVENTS,
+                               "Button %d released at (%d,%d).\n",
+                               event->button, x, y);
+               switch (event->button) {
+               case 1:
+                       /* If Shift is held down, or we're not in events mode,
+                        * copy the selected text. */
+                       if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                           !terminal->pvt->mouse_tracking_mode)
+                               handled = _vte_terminal_maybe_end_selection (terminal);
+                       break;
+               case 2:
+                       if ((terminal->pvt->modifiers & GDK_SHIFT_MASK) ||
+                           !terminal->pvt->mouse_tracking_mode) {
+                               handled = TRUE;
+                       }
+                       break;
+               case 3:
+               default:
+                       break;
+               }
+               if (!handled) {
+                       vte_terminal_maybe_send_mouse_button(terminal, event);
+                       handled = TRUE;
+               }
+               break;
+       default:
+               break;
+       }
+
+       /* Save the pointer state for later use. */
+       terminal->pvt->mouse_last_button = 0;
+       terminal->pvt->mouse_last_x = x;
+       terminal->pvt->mouse_last_y = y;
+
+       return TRUE;
+}
+
+/* Handle receiving or losing focus. */
+static gboolean
+vte_terminal_focus_in(GtkWidget *widget, GdkEventFocus *event)
+{
+       VteTerminal *terminal;
+
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Focus in.\n");
+
+       terminal = VTE_TERMINAL(widget);
+       gtk_widget_grab_focus (widget);
+
+       /* Read the keyboard modifiers, though they're probably garbage. */
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       /* We only have an IM context when we're realized, and there's not much
+        * point to painting the cursor if we don't have a window. */
+       if (gtk_widget_get_realized (widget)) {
+               terminal->pvt->cursor_blink_state = TRUE;
+               terminal->pvt->has_focus = TRUE;
+
+               _vte_check_cursor_blink (terminal);
+
+               gtk_im_context_focus_in(terminal->pvt->im_context);
+               _vte_invalidate_cursor_once(terminal, FALSE);
+               _vte_terminal_set_pointer_visible(terminal, TRUE);
+       }
+
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_focus_out(GtkWidget *widget, GdkEventFocus *event)
+{
+       VteTerminal *terminal;
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Focus out.\n");
+       terminal = VTE_TERMINAL(widget);
+       /* Read the keyboard modifiers, though they're probably garbage. */
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+       /* We only have an IM context when we're realized, and there's not much
+        * point to painting ourselves if we don't have a window. */
+       if (gtk_widget_get_realized (widget)) {
+               _vte_terminal_maybe_end_selection (terminal);
+
+               gtk_im_context_focus_out(terminal->pvt->im_context);
+               _vte_invalidate_cursor_once(terminal, FALSE);
+
+               /* XXX Do we want to hide the match just because the terminal
+                * lost keyboard focus, but the pointer *is* still within our
+                * area top? */
+               vte_terminal_match_hilite_hide (terminal);
+               /* Mark the cursor as invisible to disable hilite updating */
+               terminal->pvt->mouse_cursor_visible = FALSE;
+       }
+
+       terminal->pvt->has_focus = FALSE;
+       _vte_check_cursor_blink (terminal);
+
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_enter(GtkWidget *widget, GdkEventCrossing *event)
+{
+       gboolean ret = FALSE;
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Enter.\n");
+       if (GTK_WIDGET_CLASS (vte_terminal_parent_class)->enter_notify_event) {
+               ret = GTK_WIDGET_CLASS (vte_terminal_parent_class)->enter_notify_event (widget, event);
+       }
+       if (gtk_widget_get_realized (widget)) {
+               VteTerminal *terminal = VTE_TERMINAL (widget);
+               /* Hilite any matches. */
+               vte_terminal_match_hilite_show(terminal,
+                                              event->x - terminal->pvt->inner_border.left,
+                                              event->y - terminal->pvt->inner_border.top);
+       }
+       return ret;
+}
+static gboolean
+vte_terminal_leave(GtkWidget *widget, GdkEventCrossing *event)
+{
+       gboolean ret = FALSE;
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Leave.\n");
+       if (GTK_WIDGET_CLASS (vte_terminal_parent_class)->leave_notify_event) {
+               ret = GTK_WIDGET_CLASS (vte_terminal_parent_class)->leave_notify_event (widget, event);
+       }
+       if (gtk_widget_get_realized (widget)) {
+               VteTerminal *terminal = VTE_TERMINAL (widget);
+               vte_terminal_match_hilite_hide (terminal);
+               /* Mark the cursor as invisible to disable hilite updating,
+                * whilst the cursor is absent (otherwise we copy the entire
+                * buffer after each update for nothing...)
+                */
+               terminal->pvt->mouse_cursor_visible = FALSE;
+       }
+       return ret;
+}
+
+static G_GNUC_UNUSED inline const char *
+visibility_state_str(GdkVisibilityState state)
+{
+       switch(state){
+               case GDK_VISIBILITY_FULLY_OBSCURED:
+                       return "fully-obscured";
+               case GDK_VISIBILITY_UNOBSCURED:
+                       return "unobscured";
+               default:
+                       return "partial";
+       }
+}
+
+static void
+vte_terminal_set_visibility (VteTerminal *terminal, GdkVisibilityState state)
+{
+       _vte_debug_print(VTE_DEBUG_MISC, "change visibility: %s -> %s.\n",
+                       visibility_state_str(terminal->pvt->visibility_state),
+                       visibility_state_str(state));
+
+       if (state == terminal->pvt->visibility_state) {
+               return;
+       }
+
+       /* fully obscured to visible switch, force the fast path */
+       if (terminal->pvt->visibility_state == GDK_VISIBILITY_FULLY_OBSCURED) {
+               /* set invalidated_all false, since we didn't really mean it
+                * when we set it to TRUE when becoming obscured */
+               terminal->pvt->invalidated_all = FALSE;
+
+               /* if all unobscured now, invalidate all, otherwise, wait
+                * for the expose event */
+               if (state == GDK_VISIBILITY_UNOBSCURED) {
+                       _vte_invalidate_all (terminal);
+               }
+       }
+
+       terminal->pvt->visibility_state = state;
+
+       /* no longer visible, stop processing display updates */
+       if (terminal->pvt->visibility_state == GDK_VISIBILITY_FULLY_OBSCURED) {
+               remove_update_timeout (terminal);
+               /* if fully obscured, just act like we have invalidated all,
+                * so no updates are accumulated. */
+               terminal->pvt->invalidated_all = TRUE;
+       }
+}
+
+static gboolean
+vte_terminal_visibility_notify(GtkWidget *widget, GdkEventVisibility *event)
+{
+       VteTerminal *terminal;
+       terminal = VTE_TERMINAL(widget);
+
+       _vte_debug_print(VTE_DEBUG_EVENTS, "Visibility (%s -> %s).\n",
+                       visibility_state_str(terminal->pvt->visibility_state),
+                       visibility_state_str(event->state));
+       vte_terminal_set_visibility(terminal, event->state);
+
+       return FALSE;
+}
+
+/* Apply the changed metrics, and queue a resize if need be. */
+static void
+vte_terminal_apply_metrics(VteTerminal *terminal,
+                          gint width, gint height, gint ascent, gint descent)
+{
+       gboolean resize = FALSE, cresize = FALSE;
+       gint line_thickness;
+
+       /* Sanity check for broken font changes. */
+       width = MAX(width, 1);
+       height = MAX(height, 2);
+       ascent = MAX(ascent, 1);
+       descent = MAX(descent, 1);
+
+       /* Change settings, and keep track of when we've changed anything. */
+       if (width != terminal->char_width) {
+               resize = cresize = TRUE;
+               terminal->char_width = width;
+       }
+       if (height != terminal->char_height) {
+               resize = cresize = TRUE;
+               terminal->char_height = height;
+       }
+       if (ascent != terminal->char_ascent) {
+               resize = TRUE;
+               terminal->char_ascent = ascent;
+       }
+       if (descent != terminal->char_descent) {
+               resize = TRUE;
+               terminal->char_descent = descent;
+       }
+       terminal->pvt->line_thickness = line_thickness = MAX (MIN ((height - ascent) / 2, height / 14), 1);
+       terminal->pvt->underline_position = MIN (ascent + line_thickness, height - line_thickness);
+       terminal->pvt->strikethrough_position =  ascent - height / 4;
+
+       /* Queue a resize if anything's changed. */
+       if (resize) {
+               if (gtk_widget_get_realized (&terminal->widget)) {
+                       gtk_widget_queue_resize_no_redraw(&terminal->widget);
+               }
+       }
+       /* Emit a signal that the font changed. */
+       if (cresize) {
+               vte_terminal_emit_char_size_changed(terminal,
+                                                   terminal->char_width,
+                                                   terminal->char_height);
+       }
+       /* Repaint. */
+       _vte_invalidate_all(terminal);
+}
+
+
+static void
+vte_terminal_ensure_font (VteTerminal *terminal)
+{
+       if (terminal->pvt->draw != NULL) {
+               /* Load default fonts, if no fonts have been loaded. */
+               if (!terminal->pvt->has_fonts) {
+                       vte_terminal_set_font_full_internal(terminal,
+                                                            terminal->pvt->fontdesc,
+                                                            terminal->pvt->fontantialias);
+               }
+               if (terminal->pvt->fontdirty) {
+                       gint width, height, ascent;
+                       terminal->pvt->fontdirty = FALSE;
+                       _vte_draw_set_text_font (terminal->pvt->draw,
+                                       terminal->pvt->fontdesc,
+                                       terminal->pvt->fontantialias);
+                       _vte_draw_get_text_metrics (terminal->pvt->draw,
+                                                   &width, &height, &ascent);
+                       vte_terminal_apply_metrics(terminal,
+                                                  width, height, ascent, height - ascent);
+               }
+       }
+}
+
+
+/**
+ * vte_terminal_set_font_full:
+ * @terminal: a #VteTerminal
+ * @font_desc: The #PangoFontDescription of the desired font, or %NULL
+ * @antialias: Specify if anti aliasing of the fonts is to be used or not.
+ *
+ * Sets the font used for rendering all text displayed by the terminal,
+ * overriding any fonts set using gtk_widget_modify_font().  The terminal
+ * will immediately attempt to load the desired font, retrieve its
+ * metrics, and attempt to resize itself to keep the same number of rows
+ * and columns.
+ *
+ * Since: 0.11.11
+ * 
+ * Deprecated: 0.20: Use vte_terminal_set_font()
+ */
+void
+vte_terminal_set_font_full(VteTerminal *terminal,
+                          const PangoFontDescription *font_desc,
+                          VteTerminalAntiAlias antialias)
+{
+        vte_terminal_set_font_full_internal(terminal, font_desc, antialias);
+}
+
+static void
+vte_terminal_set_font_full_internal(VteTerminal *terminal,
+                                    const PangoFontDescription *font_desc,
+                                    VteTerminalAntiAlias antialias)
+{
+        GObject *object;
+       GtkStyle *style;
+       VteTerminalPrivate *pvt;
+       PangoFontDescription *desc;
+        gboolean same_desc;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+       /* Create an owned font description. */
+       gtk_widget_ensure_style (&terminal->widget);
+       style = gtk_widget_get_style (&terminal->widget);
+       desc = pango_font_description_copy (style->font_desc);
+       pango_font_description_set_family_static (desc, "monospace");
+       if (font_desc != NULL) {
+               pango_font_description_merge (desc, font_desc, TRUE);
+               _VTE_DEBUG_IF(VTE_DEBUG_MISC) {
+                       if (desc) {
+                               char *tmp;
+                               tmp = pango_font_description_to_string(desc);
+                               g_printerr("Using pango font \"%s\".\n", tmp);
+                               g_free (tmp);
+                       }
+               }
+       } else {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Using default monospace font.\n");
+       }
+
+        same_desc = pvt->fontdesc && pango_font_description_equal (pvt->fontdesc, desc);
+       
+       /* Note that we proceed to recreating the font even if the description
+        * and antialias settings are the same.  This is because maybe screen
+        * font options were changed, or new fonts installed.  Those will be
+        * detected at font creation time and respected.
+        */
+
+        g_object_freeze_notify(object);
+
+       /* Free the old font description and save the new one. */
+       if (terminal->pvt->fontdesc != NULL) {
+               pango_font_description_free(terminal->pvt->fontdesc);
+       }
+       pvt->fontdesc = desc;
+       pvt->fontantialias = antialias;
+       pvt->fontdirty = TRUE;
+       pvt->has_fonts = TRUE;
+
+        if (!same_desc)
+                g_object_notify(object, "font-desc");
+
+       /* Set the drawing font. */
+       if (gtk_widget_get_realized (&terminal->widget)) {
+               vte_terminal_ensure_font (terminal);
+       }
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_terminal_set_font:
+ * @terminal: a #VteTerminal
+ * @font_desc: (allow-none): a #PangoFontDescription for the desired font, or %NULL
+ *
+ * Sets the font used for rendering all text displayed by the terminal,
+ * overriding any fonts set using gtk_widget_modify_font().  The terminal
+ * will immediately attempt to load the desired font, retrieve its
+ * metrics, and attempt to resize itself to keep the same number of rows
+ * and columns.
+ */
+void
+vte_terminal_set_font(VteTerminal *terminal,
+                     const PangoFontDescription *font_desc)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       vte_terminal_set_font_full_internal(terminal, font_desc,
+                                            VTE_ANTI_ALIAS_USE_DEFAULT);
+}
+
+static void
+vte_terminal_set_font_from_string_full_internal(VteTerminal *terminal,
+                                                const char *name,
+                                                VteTerminalAntiAlias antialias)
+{
+       PangoFontDescription *font_desc = NULL;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       if (name)
+         font_desc = pango_font_description_from_string(name);
+       vte_terminal_set_font_full_internal(terminal, font_desc, antialias);
+       pango_font_description_free(font_desc);
+}
+
+/**
+ * vte_terminal_set_font_from_string_full:
+ * @terminal: a #VteTerminal
+ * @name: A string describing the font.
+ * @antialias: Whether or not to antialias the font (if possible).
+ *
+ * A convenience function which converts @name into a #PangoFontDescription and
+ * passes it to vte_terminal_set_font_full().
+ *
+ * Since: 0.11.11
+ *
+ * Deprecated: 0.20: Use vte_terminal_set_font()
+ */
+void
+vte_terminal_set_font_from_string_full(VteTerminal *terminal, const char *name,
+                                      VteTerminalAntiAlias antialias)
+{
+        vte_terminal_set_font_from_string_full_internal(terminal, name, antialias);
+}
+
+/**
+ * vte_terminal_set_font_from_string:
+ * @terminal: a #VteTerminal
+ * @name: (type utf8): a pango font description in string form
+ *
+ * A convenience function which converts @name into a #PangoFontDescription and
+ * passes it to vte_terminal_set_font().
+ */
+void
+vte_terminal_set_font_from_string(VteTerminal *terminal, const char *name)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(name != NULL);
+       vte_terminal_set_font_from_string_full_internal(terminal, name,
+                                                        VTE_ANTI_ALIAS_USE_DEFAULT);
+}
+
+/**
+ * vte_terminal_get_font:
+ * @terminal: a #VteTerminal
+ *
+ * Queries the terminal for information about the fonts which will be
+ * used to draw text in the terminal.
+ *
+ * Returns: (transfer none): a #PangoFontDescription describing the font the terminal is
+ *   currently using to render text
+ */
+const PangoFontDescription *
+vte_terminal_get_font(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return terminal->pvt->fontdesc;
+}
+
+/* Read and refresh our perception of the size of the PTY. */
+static void
+vte_terminal_refresh_size(VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+       int rows, columns;
+        GError *error = NULL;
+
+        if (pvt->pty == NULL)
+                return;
+
+        if (vte_pty_get_size(pvt->pty, &rows, &columns, &error)) {
+                terminal->row_count = rows;
+                terminal->column_count = columns;
+        } else {
+                g_warning(_("Error reading PTY size, using defaults: %s\n"), error->message);
+                g_error_free(error);
+       }
+}
+
+/**
+ * vte_terminal_set_size:
+ * @terminal: a #VteTerminal
+ * @columns: the desired number of columns
+ * @rows: the desired number of rows
+ *
+ * Attempts to change the terminal's size in terms of rows and columns.  If
+ * the attempt succeeds, the widget will resize itself to the proper size.
+ */
+void
+vte_terminal_set_size(VteTerminal *terminal, glong columns, glong rows)
+{
+       glong old_columns, old_rows;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Setting PTY size to %ldx%ld.\n",
+                       columns, rows);
+
+       old_rows = terminal->row_count;
+       old_columns = terminal->column_count;
+
+       if (terminal->pvt->pty != NULL) {
+                GError *error = NULL;
+
+               /* Try to set the terminal size, and read it back,
+                * in case something went awry.
+                 */
+               if (!vte_pty_set_size(terminal->pvt->pty, rows, columns, &error)) {
+                       g_warning("%s\n", error->message);
+                        g_error_free(error);
+               }
+               vte_terminal_refresh_size(terminal);
+       } else {
+               terminal->row_count = rows;
+               terminal->column_count = columns;
+       }
+       if (old_rows != terminal->row_count || old_columns != terminal->column_count) {
+               VteScreen *screen = terminal->pvt->screen;
+               glong visible_rows = MIN (old_rows, _vte_ring_length (screen->row_data));
+               if (terminal->row_count < visible_rows) {
+                       glong delta = visible_rows - terminal->row_count;
+                       screen->insert_delta += delta;
+                       vte_terminal_queue_adjustment_value_changed (
+                                       terminal,
+                                       screen->scroll_delta + delta);
+               }
+               gtk_widget_queue_resize_no_redraw (&terminal->widget);
+               /* Our visible text changed. */
+               vte_terminal_emit_text_modified(terminal);
+       }
+}
+
+/* Redraw the widget. */
+static void
+vte_terminal_handle_scroll(VteTerminal *terminal)
+{
+       long dy, adj;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       /* Read the new adjustment value and save the difference. */
+       adj = round (gtk_adjustment_get_value(terminal->adjustment));
+       dy = adj - screen->scroll_delta;
+       screen->scroll_delta = adj;
+
+       /* Sanity checks. */
+       if (! gtk_widget_is_drawable (&terminal->widget)
+                       || terminal->pvt->visibility_state == GDK_VISIBILITY_FULLY_OBSCURED) {
+               return;
+       }
+
+       if (dy != 0) {
+               _vte_debug_print(VTE_DEBUG_ADJ,
+                           "Scrolling by %ld\n", dy);
+               _vte_terminal_scroll_region(terminal, screen->scroll_delta,
+                                          terminal->row_count, -dy);
+               vte_terminal_emit_text_scrolled(terminal, dy);
+               _vte_terminal_queue_contents_changed(terminal);
+       } else {
+               _vte_debug_print(VTE_DEBUG_ADJ, "Not scrolling\n");
+       }
+}
+
+#if GTK_CHECK_VERSION (2, 91, 2)
+static void
+vte_terminal_set_hadjustment(VteTerminal *terminal,
+                             GtkAdjustment *adjustment)
+{
+  VteTerminalPrivate *pvt = terminal->pvt;
+
+  if (adjustment == pvt->hadjustment)
+    return;
+
+  if (pvt->hadjustment)
+    g_object_unref (pvt->hadjustment);
+
+  pvt->hadjustment = adjustment ? g_object_ref_sink (adjustment) : NULL;
+}
+#endif
+
+static void
+vte_terminal_set_vadjustment(VteTerminal *terminal,
+                             GtkAdjustment *adjustment)
+{
+       if (adjustment != NULL && adjustment == terminal->adjustment)
+               return;
+       if (adjustment == NULL && terminal->adjustment != NULL)
+               return;
+
+       if (adjustment == NULL)
+               adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 0, 0, 0));
+       else
+               g_return_if_fail(GTK_IS_ADJUSTMENT(adjustment));
+
+       /* Add a reference to the new adjustment object. */
+       g_object_ref_sink(adjustment);
+       /* Get rid of the old adjustment object. */
+       if (terminal->adjustment != NULL) {
+               /* Disconnect our signal handlers from this object. */
+               g_signal_handlers_disconnect_by_func(terminal->adjustment,
+                                                    vte_terminal_handle_scroll,
+                                                    terminal);
+               g_object_unref(terminal->adjustment);
+       }
+
+       /* Set the new adjustment object. */
+       terminal->adjustment = adjustment;
+
+       /* We care about the offset, not the top or bottom. */
+       g_signal_connect_swapped(terminal->adjustment,
+                                "value-changed",
+                                G_CALLBACK(vte_terminal_handle_scroll),
+                                terminal);
+}
+
+/* Set the adjustment objects used by the terminal widget. */
+#if !GTK_CHECK_VERSION (2, 91, 2)
+static void
+vte_terminal_set_scroll_adjustments(GtkWidget *widget,
+                                   GtkAdjustment *hadjustment G_GNUC_UNUSED,
+                                   GtkAdjustment *vadjustment)
+{
+        vte_terminal_set_vadjustment(VTE_TERMINAL(widget), vadjustment);
+}
+#endif /* GTK 2.x */
+
+/**
+ * vte_terminal_set_emulation:
+ * @terminal: a #VteTerminal
+ * @emulation: (allow-none): the name of a terminal description, or %NULL to use the default
+ *
+ * Sets what type of terminal the widget attempts to emulate by scanning for
+ * control sequences defined in the system's termcap file.  Unless you
+ * are interested in this feature, always use "xterm".
+ */
+void
+vte_terminal_set_emulation(VteTerminal *terminal, const char *emulation)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+       int columns, rows;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+        g_object_freeze_notify(object);
+
+       /* Set the emulation type, for reference. */
+       if (emulation == NULL) {
+               emulation = vte_terminal_get_default_emulation(terminal);
+       }
+       terminal->pvt->emulation = g_intern_string(emulation);
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Setting emulation to `%s'...\n", emulation);
+       /* Find and read the right termcap file. */
+       vte_terminal_set_termcap(terminal, NULL, FALSE);
+
+       /* Create a table to hold the control sequences. */
+       if (terminal->pvt->matcher != NULL) {
+               _vte_matcher_free(terminal->pvt->matcher);
+       }
+       terminal->pvt->matcher = _vte_matcher_new(emulation, terminal->pvt->termcap);
+
+       if (terminal->pvt->termcap != NULL) {
+               /* Read emulation flags. */
+               terminal->pvt->flags.am = _vte_termcap_find_boolean(terminal->pvt->termcap,
+                                                                   terminal->pvt->emulation,
+                                                                   "am");
+               terminal->pvt->flags.bw = _vte_termcap_find_boolean(terminal->pvt->termcap,
+                                                                   terminal->pvt->emulation,
+                                                                   "bw");
+               terminal->pvt->flags.LP = _vte_termcap_find_boolean(terminal->pvt->termcap,
+                                                                   terminal->pvt->emulation,
+                                                                   "LP");
+               terminal->pvt->flags.ul = _vte_termcap_find_boolean(terminal->pvt->termcap,
+                                                                   terminal->pvt->emulation,
+                                                                   "ul");
+               terminal->pvt->flags.xn = _vte_termcap_find_boolean(terminal->pvt->termcap,
+                                                                   terminal->pvt->emulation,
+                                                                   "xn");
+
+               /* Resize to the given default. */
+               columns = _vte_termcap_find_numeric(terminal->pvt->termcap,
+                                                   terminal->pvt->emulation,
+                                                   "co");
+               if (columns <= 0) {
+                       columns = VTE_COLUMNS;
+               }
+               terminal->pvt->default_column_count = columns;
+
+               rows = _vte_termcap_find_numeric(terminal->pvt->termcap,
+                                                terminal->pvt->emulation,
+                                                "li");
+               if (rows <= 0 ) {
+                       rows = VTE_ROWS;
+               }
+               terminal->pvt->default_row_count = rows;
+       }
+
+       /* Notify observers that we changed our emulation. */
+       vte_terminal_emit_emulation_changed(terminal);
+
+        g_object_thaw_notify(object);
+}
+
+/* FIXMEchpe deprecate this function, it's wrong */
+/**
+ * vte_terminal_get_default_emulation:
+ * @terminal: a #VteTerminal
+ *
+ * Queries the terminal for its default emulation, which is attempted if the
+ * terminal type passed to vte_terminal_set_emulation() is %NULL.
+ *
+ * Returns: (transfer none) (type utf8): an interned string containing the name of the default terminal
+ *   type the widget attempts to emulate
+ *
+ * Since: 0.11.11
+ */
+const char *
+vte_terminal_get_default_emulation(VteTerminal *terminal)
+{
+       return g_intern_static_string(VTE_DEFAULT_EMULATION);
+}
+
+/**
+ * vte_terminal_get_emulation:
+ * @terminal: a #VteTerminal
+ *
+ * Queries the terminal for its current emulation, as last set by a call to
+ * vte_terminal_set_emulation().
+ *
+ * Returns: an interned string containing the name of the terminal type the
+ *   widget is attempting to emulate
+ */
+const char *
+vte_terminal_get_emulation(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return terminal->pvt->emulation;
+}
+
+void
+_vte_terminal_inline_error_message(VteTerminal *terminal, const char *format, ...)
+{
+       va_list ap;
+       char *str;
+
+       va_start (ap, format);
+       str = g_strdup_vprintf (format, ap);
+       va_end (ap);
+
+       vte_terminal_feed (terminal, "*** VTE ***: ", 13);
+       vte_terminal_feed (terminal, str, -1);
+       vte_terminal_feed (terminal, "\r\n", 2);
+       g_free (str);
+}
+
+/* Set the path to the termcap file we read, and read it in. */
+static void
+vte_terminal_set_termcap(VteTerminal *terminal, const char *path,
+                        gboolean reset)
+{
+        GObject *object = G_OBJECT(terminal);
+       struct stat st;
+       char *wpath;
+
+       if (path == NULL) {
+               wpath = g_build_filename(TERMCAPDIR,
+                                        terminal->pvt->emulation ?
+                                        terminal->pvt->emulation :
+                                        vte_terminal_get_default_emulation(terminal),
+                                        NULL);
+               if (g_stat(wpath, &st) != 0) {
+                       g_free(wpath);
+                       wpath = g_strdup("/etc/termcap");
+               }
+               path = g_intern_string (wpath);
+               g_free(wpath);
+       } else {
+               path = g_intern_string (path);
+       }
+       if (path == terminal->pvt->termcap_path) {
+               return;
+       }
+
+        g_object_freeze_notify(object);
+
+       terminal->pvt->termcap_path = path;
+
+       _vte_debug_print(VTE_DEBUG_MISC, "Loading termcap `%s'...",
+                       terminal->pvt->termcap_path);
+       if (terminal->pvt->termcap != NULL) {
+               _vte_termcap_free(terminal->pvt->termcap);
+       }
+       terminal->pvt->termcap = _vte_termcap_new(terminal->pvt->termcap_path);
+       _vte_debug_print(VTE_DEBUG_MISC, "\n");
+       if (terminal->pvt->termcap == NULL) {
+               _vte_terminal_inline_error_message(terminal,
+                               "Failed to load terminal capabilities from '%s'",
+                               terminal->pvt->termcap_path);
+       }
+       if (reset) {
+               vte_terminal_set_emulation(terminal, terminal->pvt->emulation);
+       }
+
+        g_object_thaw_notify(object);
+}
+
+static void
+_vte_terminal_codeset_changed_cb(struct _vte_iso2022_state *state, gpointer p)
+{
+       vte_terminal_set_encoding(p, _vte_iso2022_state_get_codeset(state));
+}
+
+/* Initialize the terminal widget after the base widget stuff is initialized.
+ * We need to create a new psuedo-terminal pair, read in the termcap file, and
+ * set ourselves up to do the interpretation of sequences. */
+static void
+vte_terminal_init(VteTerminal *terminal)
+{
+       VteTerminalPrivate *pvt;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_init()\n");
+
+       /* Initialize private data. */
+       pvt = terminal->pvt = G_TYPE_INSTANCE_GET_PRIVATE (terminal, VTE_TYPE_TERMINAL, VteTerminalPrivate);
+
+       gtk_widget_set_can_focus(&terminal->widget, TRUE);
+
+       gtk_widget_set_app_paintable (&terminal->widget, TRUE);
+
+       /* We do our own redrawing. */
+       gtk_widget_set_redraw_on_allocate (&terminal->widget, FALSE);
+
+       /* Set an adjustment for the application to use to control scrolling. */
+        terminal->adjustment = NULL;
+#if GTK_CHECK_VERSION (2, 91, 2)
+        pvt->hadjustment = NULL;
+        /* GtkScrollable */
+        pvt->hscroll_policy = GTK_SCROLL_NATURAL;
+        pvt->vscroll_policy = GTK_SCROLL_NATURAL;
+
+        vte_terminal_set_hadjustment(terminal, NULL);
+#endif
+
+       vte_terminal_set_vadjustment(terminal, NULL);
+
+
+       /* Set up dummy metrics, value != 0 to avoid division by 0 */
+       terminal->char_width = 1;
+       terminal->char_height = 1;
+       terminal->char_ascent = 1;
+       terminal->char_descent = 1;
+       terminal->pvt->line_thickness = 1;
+       terminal->pvt->underline_position = 1;
+       terminal->pvt->strikethrough_position = 1;
+
+       /* We allocated zeroed memory, just fill in non-zero stuff. */
+
+       /* Initialize the screens and histories. */
+       _vte_ring_init (pvt->alternate_screen.row_data, terminal->row_count);
+       pvt->alternate_screen.sendrecv_mode = TRUE;
+       pvt->alternate_screen.status_line_contents = g_string_new(NULL);
+       pvt->screen = &terminal->pvt->alternate_screen;
+       _vte_terminal_set_default_attributes(terminal);
+
+       _vte_ring_init (pvt->normal_screen.row_data,  VTE_SCROLLBACK_INIT);
+       pvt->normal_screen.sendrecv_mode = TRUE;
+       pvt->normal_screen.status_line_contents = g_string_new(NULL);
+       pvt->screen = &terminal->pvt->normal_screen;
+       _vte_terminal_set_default_attributes(terminal);
+
+       /* Set up I/O encodings. */
+       pvt->iso2022 = _vte_iso2022_state_new(pvt->encoding,
+                                             &_vte_terminal_codeset_changed_cb,
+                                             terminal);
+       pvt->incoming = NULL;
+       pvt->pending = g_array_new(FALSE, TRUE, sizeof(gunichar));
+       pvt->max_input_bytes = VTE_MAX_INPUT_READ;
+       pvt->cursor_blink_tag = 0;
+       pvt->outgoing = _vte_buffer_new();
+       pvt->outgoing_conv = VTE_INVALID_CONV;
+       pvt->conv_buffer = _vte_buffer_new();
+       vte_terminal_set_encoding(terminal, NULL);
+       g_assert(terminal->pvt->encoding != NULL);
+
+       /* Load the termcap data and set up the emulation. */
+       pvt->keypad_mode = VTE_KEYMODE_NORMAL;
+       pvt->cursor_mode = VTE_KEYMODE_NORMAL;
+       pvt->dec_saved = g_hash_table_new(NULL, NULL);
+       pvt->default_column_count = VTE_COLUMNS;
+       pvt->default_row_count = VTE_ROWS;
+
+       /* Setting the terminal type and size requires the PTY master to
+        * be set up properly first. */
+        pvt->pty = NULL;
+       vte_terminal_set_emulation(terminal, NULL);
+       vte_terminal_set_size(terminal,
+                             pvt->default_column_count,
+                             pvt->default_row_count);
+       pvt->pty_input_source = 0;
+       pvt->pty_output_source = 0;
+       pvt->pty_pid = -1;
+        pvt->child_exit_status = 0;
+
+       /* Scrolling options. */
+       pvt->scroll_on_keystroke = TRUE;
+        pvt->scrollback_lines = -1; /* force update in vte_terminal_set_scrollback_lines */
+       vte_terminal_set_scrollback_lines(terminal, VTE_SCROLLBACK_INIT);
+
+       /* Selection info. */
+       vte_terminal_set_word_chars(terminal, NULL);
+
+       /* Miscellaneous options. */
+       vte_terminal_set_backspace_binding(terminal, VTE_ERASE_AUTO);
+       vte_terminal_set_delete_binding(terminal, VTE_ERASE_AUTO);
+       pvt->meta_sends_escape = TRUE;
+       pvt->audible_bell = TRUE;
+       pvt->bell_margin = 10;
+       pvt->allow_bold = TRUE;
+       pvt->nrc_mode = TRUE;
+       vte_terminal_set_default_tabstops(terminal);
+
+       /* Cursor shape. */
+       pvt->cursor_shape = VTE_CURSOR_SHAPE_BLOCK;
+        pvt->cursor_aspect_ratio = 0.04;
+
+       /* Cursor blinking. */
+       pvt->cursor_visible = TRUE;
+       pvt->cursor_blink_timeout = 500;
+        pvt->cursor_blinks = FALSE;
+        pvt->cursor_blink_mode = VTE_CURSOR_BLINK_SYSTEM;
+
+       /* Matching data. */
+        pvt->match_regex_mode = VTE_REGEX_UNDECIDED;
+       pvt->match_regexes = g_array_new(FALSE, TRUE,
+                                        sizeof(struct vte_match_regex));
+       vte_terminal_match_hilite_clear(terminal);
+
+       /* Rendering data.  Try everything. */
+       pvt->draw = _vte_draw_new(&terminal->widget);
+
+       /* The font description. */
+       pvt->fontantialias = VTE_ANTI_ALIAS_USE_DEFAULT;
+       gtk_widget_ensure_style(&terminal->widget);
+
+       /* Set up background information. */
+       pvt->bg_tint_color.red = 0;
+       pvt->bg_tint_color.green = 0;
+       pvt->bg_tint_color.blue = 0;
+       pvt->bg_saturation = 0.4 * VTE_SATURATION_MAX;
+       pvt->bg_opacity = 0xffff;
+       pvt->selection_block_mode = FALSE;
+       pvt->has_fonts = FALSE;
+       pvt->root_pixmap_changed_tag = 0;
+
+       /* Not all backends generate GdkVisibilityNotify, so mark the
+        * window as unobscured initially. */
+       pvt->visibility_state = GDK_VISIBILITY_UNOBSCURED;
+
+       /* Listen for hierarchy change notifications. */
+       g_signal_connect(terminal, "hierarchy-changed",
+                        G_CALLBACK(vte_terminal_hierarchy_changed),
+                        NULL);
+
+        pvt->inner_border = default_inner_border;
+
+#ifdef VTE_DEBUG
+       /* In debuggable mode, we always do this. */
+       /* gtk_widget_get_accessible(&terminal->widget); */
+#endif
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+{
+        GtkStyleContext *context;
+
+        context = gtk_widget_get_style_context (&terminal->widget);
+        gtk_style_context_add_provider (context,
+                                        VTE_TERMINAL_GET_CLASS (terminal)->priv->style_provider,
+                                        GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+}
+#endif
+}
+
+/* Tell GTK+ how much space we need. */
+#if GTK_CHECK_VERSION (2, 91, 0)
+static void
+vte_terminal_get_preferred_width(GtkWidget *widget,
+                                int       *minimum_width,
+                                int       *natural_width)
+{
+       VteTerminal *terminal;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_get_preferred_width()\n");
+
+       terminal = VTE_TERMINAL(widget);
+
+       vte_terminal_ensure_font (terminal);
+
+        vte_terminal_refresh_size(terminal);
+       *minimum_width = terminal->char_width * 1;
+        *natural_width = terminal->char_width * terminal->column_count;
+
+       *minimum_width += terminal->pvt->inner_border.left +
+                          terminal->pvt->inner_border.right;
+       *natural_width += terminal->pvt->inner_border.left +
+                          terminal->pvt->inner_border.right;
+
+       _vte_debug_print(VTE_DEBUG_WIDGET_SIZE,
+                       "[Terminal %p] minimum_width=%d, natural_width=%d for %ldx%ld cells.\n",
+                        terminal,
+                       *minimum_width, *natural_width,
+                       terminal->column_count,
+                       terminal->row_count);
+}
+
+static void
+vte_terminal_get_preferred_height(GtkWidget *widget,
+                                 int       *minimum_height,
+                                 int       *natural_height)
+{
+       VteTerminal *terminal;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_get_preferred_height()\n");
+
+       terminal = VTE_TERMINAL(widget);
+
+       vte_terminal_ensure_font (terminal);
+
+        vte_terminal_refresh_size(terminal);
+       *minimum_height = terminal->char_height * 1;
+        *natural_height = terminal->char_height * terminal->row_count;
+
+       *minimum_height += terminal->pvt->inner_border.left +
+                          terminal->pvt->inner_border.right;
+       *natural_height += terminal->pvt->inner_border.left +
+                          terminal->pvt->inner_border.right;
+
+       _vte_debug_print(VTE_DEBUG_WIDGET_SIZE,
+                       "[Terminal %p] minimum_height=%d, natural_height=%d for %ldx%ld cells.\n",
+                        terminal,
+                       *minimum_height, *natural_height,
+                       terminal->column_count,
+                       terminal->row_count);
+}
+#else /* GTK+ 2.x */
+static void
+vte_terminal_size_request(GtkWidget *widget, GtkRequisition *requisition)
+{
+       VteTerminal *terminal;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_size_request()\n");
+
+       terminal = VTE_TERMINAL(widget);
+
+       vte_terminal_ensure_font (terminal);
+
+        vte_terminal_refresh_size(terminal);
+        requisition->width = terminal->char_width * terminal->column_count;
+        requisition->height = terminal->char_height * terminal->row_count;
+
+       requisition->width += terminal->pvt->inner_border.left +
+                              terminal->pvt->inner_border.right;
+       requisition->height += terminal->pvt->inner_border.top +
+                               terminal->pvt->inner_border.bottom;
+
+       _vte_debug_print(VTE_DEBUG_WIDGET_SIZE,
+                       "[Terminal %p] Size request is %dx%d for %ldx%ld cells.\n",
+                        terminal,
+                       requisition->width, requisition->height,
+                       terminal->column_count,
+                       terminal->row_count);
+}
+#endif
+
+/* Accept a given size from GTK+. */
+static void
+vte_terminal_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
+{
+       VteTerminal *terminal;
+       glong width, height;
+       GtkAllocation current_allocation;
+       gboolean repaint, update_scrollback;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE,
+                       "vte_terminal_size_allocate()\n");
+
+       terminal = VTE_TERMINAL(widget);
+
+       width = (allocation->width - (terminal->pvt->inner_border.left + terminal->pvt->inner_border.right)) /
+               terminal->char_width;
+       height = (allocation->height - (terminal->pvt->inner_border.top + 
terminal->pvt->inner_border.bottom)) /
+                terminal->char_height;
+       width = MAX(width, 1);
+       height = MAX(height, 1);
+
+       _vte_debug_print(VTE_DEBUG_WIDGET_SIZE,
+                       "[Terminal %p] Sizing window to %dx%d (%ldx%ld).\n",
+                        terminal,
+                       allocation->width, allocation->height,
+                       width, height);
+
+       gtk_widget_get_allocation (widget, &current_allocation);
+
+       repaint = current_allocation.width != allocation->width
+                       || current_allocation.height != allocation->height;
+       update_scrollback = current_allocation.height != allocation->height;
+
+       /* Set our allocation to match the structure. */
+       gtk_widget_set_allocation (widget, allocation);
+
+       if (width != terminal->column_count
+                       || height != terminal->row_count
+                       || update_scrollback)
+       {
+               VteScreen *screen = terminal->pvt->screen;
+
+               /* Set the size of the pseudo-terminal. */
+               vte_terminal_set_size(terminal, width, height);
+
+               /* Adjust scrolling area in case our boundaries have just been
+                * redefined to be invalid. */
+               if (screen->scrolling_restricted) {
+                       screen->scrolling_region.start =
+                               MIN(screen->scrolling_region.start,
+                                               terminal->row_count - 1);
+                       screen->scrolling_region.end =
+                               MIN(screen->scrolling_region.end,
+                                               terminal->row_count - 1);
+               }
+
+               /* Ensure scrollback buffers cover the screen. */
+               vte_terminal_set_scrollback_lines(terminal,
+                               terminal->pvt->scrollback_lines);
+               /* Ensure the cursor is valid */
+               screen->cursor_current.row = CLAMP (screen->cursor_current.row,
+                               _vte_ring_delta (screen->row_data),
+                               MAX (_vte_ring_delta (screen->row_data),
+                                       _vte_ring_next (screen->row_data) - 1));
+               /* Notify viewers that the contents have changed. */
+               _vte_terminal_queue_contents_changed(terminal);
+       }
+
+       /* Resize the GDK window. */
+       if (gtk_widget_get_realized (widget)) {
+               gdk_window_move_resize (gtk_widget_get_window (widget),
+                                       allocation->x,
+                                       allocation->y,
+                                       allocation->width,
+                                       allocation->height);
+               /* Force a repaint if we were resized. */
+               if (repaint) {
+                       reset_update_regions (terminal);
+                       _vte_invalidate_all(terminal);
+               }
+       }
+}
+
+/* Queue a background update. */
+static void
+root_pixmap_changed_cb(VteBg *bg, VteTerminal *terminal)
+{
+       _vte_debug_print (VTE_DEBUG_EVENTS, "Root pixmap changed.\n");
+       if (terminal->pvt->bg_transparent) {
+               vte_terminal_queue_background_update(terminal);
+       }
+}
+
+/* The window is being destroyed. */
+static void
+vte_terminal_unrealize(GtkWidget *widget)
+{
+       GdkWindow *window;
+       VteTerminal *terminal;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_unrealize()\n");
+
+       terminal = VTE_TERMINAL (widget);
+       window = gtk_widget_get_window (widget);
+
+       /* Disconnect from background-change events. */
+       if (terminal->pvt->root_pixmap_changed_tag != 0) {
+               VteBg       *bg;
+               bg = vte_bg_get_for_screen(gtk_widget_get_screen(widget));
+               g_signal_handler_disconnect (bg,
+                               terminal->pvt->root_pixmap_changed_tag);
+               terminal->pvt->root_pixmap_changed_tag = 0;
+       }
+
+       /* Deallocate the cursors. */
+       terminal->pvt->mouse_cursor_visible = FALSE;
+       gdk_cursor_unref(terminal->pvt->mouse_default_cursor);
+       terminal->pvt->mouse_default_cursor = NULL;
+       gdk_cursor_unref(terminal->pvt->mouse_mousing_cursor);
+       terminal->pvt->mouse_mousing_cursor = NULL;
+       gdk_cursor_unref(terminal->pvt->mouse_inviso_cursor);
+       terminal->pvt->mouse_inviso_cursor = NULL;
+
+       vte_terminal_match_hilite_clear(terminal);
+
+       /* Shut down input methods. */
+       if (terminal->pvt->im_context != NULL) {
+               g_signal_handlers_disconnect_by_func (terminal->pvt->im_context,
+                                                     vte_terminal_im_preedit_changed,
+                                                     terminal);
+               vte_terminal_im_reset(terminal);
+               gtk_im_context_set_client_window(terminal->pvt->im_context,
+                                                NULL);
+               g_object_unref(terminal->pvt->im_context);
+               terminal->pvt->im_context = NULL;
+       }
+       terminal->pvt->im_preedit_active = FALSE;
+       if (terminal->pvt->im_preedit != NULL) {
+               g_free(terminal->pvt->im_preedit);
+               terminal->pvt->im_preedit = NULL;
+       }
+       if (terminal->pvt->im_preedit_attrs != NULL) {
+               pango_attr_list_unref(terminal->pvt->im_preedit_attrs);
+               terminal->pvt->im_preedit_attrs = NULL;
+       }
+       terminal->pvt->im_preedit_cursor = 0;
+
+       /* Clean up our draw structure. */
+       if (terminal->pvt->draw != NULL) {
+               _vte_draw_free(terminal->pvt->draw);
+               terminal->pvt->draw = NULL;
+       }
+       terminal->pvt->fontdirty = TRUE;
+
+       /* Unmap the widget if it hasn't been already. */
+       if (gtk_widget_get_mapped (widget)) {
+               gtk_widget_unmap (widget);
+       }
+
+       /* Remove the GDK window. */
+       if (window != NULL) {
+               /* detach style */
+               GtkStyle *style;
+
+               style = gtk_widget_get_style (widget);
+               gtk_style_detach (style);
+
+               gdk_window_set_user_data (window, NULL);
+               gtk_widget_set_window (widget, NULL);
+
+               gdk_window_destroy (window);
+       }
+
+       /* Remove the blink timeout function. */
+       remove_cursor_timeout(terminal);
+
+       /* Cancel any pending redraws. */
+       remove_update_timeout (terminal);
+
+       /* Cancel any pending signals */
+       terminal->pvt->contents_changed_pending = FALSE;
+       terminal->pvt->cursor_moved_pending = FALSE;
+       terminal->pvt->text_modified_flag = FALSE;
+       terminal->pvt->text_inserted_flag = FALSE;
+       terminal->pvt->text_deleted_flag = FALSE;
+
+       /* Clear modifiers. */
+       terminal->pvt->modifiers = 0;
+
+       /* Mark that we no longer have a GDK window. */
+       gtk_widget_set_realized (widget, FALSE);
+}
+
+static void
+vte_terminal_sync_settings (GtkSettings *settings,
+                            GParamSpec *pspec,
+                            VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+        gboolean blink;
+        int blink_time = 1000;
+        int blink_timeout = G_MAXINT;
+
+        g_object_get(G_OBJECT (settings),
+                     "gtk-cursor-blink", &blink,
+                     "gtk-cursor-blink-time", &blink_time,
+                     "gtk-cursor-blink-timeout", &blink_timeout,
+                     NULL);
+
+        _vte_debug_print(VTE_DEBUG_MISC,
+                         "Cursor blinking settings setting: blink=%d time=%d timeout=%d\n",
+                         blink, blink_time, blink_timeout);
+
+        pvt->cursor_blink_cycle = blink_time / 2;
+        pvt->cursor_blink_timeout = blink_timeout;
+
+        if (pvt->cursor_blink_mode == VTE_CURSOR_BLINK_SYSTEM)
+                vte_terminal_set_cursor_blinks_internal(terminal, blink);
+}
+
+static void
+vte_terminal_screen_changed (GtkWidget *widget,
+                             GdkScreen *previous_screen)
+{
+        VteTerminal *terminal = VTE_TERMINAL (widget);
+        GdkScreen *screen;
+        GtkSettings *settings;
+
+        screen = gtk_widget_get_screen (widget);
+        if (previous_screen != NULL &&
+            (screen != previous_screen || screen == NULL)) {
+                settings = gtk_settings_get_for_screen (previous_screen);
+                g_signal_handlers_disconnect_matched (settings, G_SIGNAL_MATCH_DATA,
+                                                      0, 0, NULL, NULL,
+                                                      widget);
+        }
+
+        if (GTK_WIDGET_CLASS (vte_terminal_parent_class)->screen_changed) {
+                GTK_WIDGET_CLASS (vte_terminal_parent_class)->screen_changed (widget, previous_screen);
+        }
+
+        if (screen == previous_screen || screen == NULL)
+                return;
+
+        settings = gtk_widget_get_settings (widget);
+        vte_terminal_sync_settings (settings, NULL, terminal);
+        g_signal_connect (settings, "notify::gtk-cursor-blink",
+                          G_CALLBACK (vte_terminal_sync_settings), widget);
+        g_signal_connect (settings, "notify::gtk-cursor-blink-time",
+                          G_CALLBACK (vte_terminal_sync_settings), widget);
+        g_signal_connect (settings, "notify::gtk-cursor-blink-timeout",
+                          G_CALLBACK (vte_terminal_sync_settings), widget);
+}
+
+/* Perform final cleanups for the widget before it's freed. */
+static void
+vte_terminal_finalize(GObject *object)
+{
+       GtkWidget *widget = GTK_WIDGET (object);
+       VteTerminal *terminal = VTE_TERMINAL (object);
+       GtkWidget *toplevel;
+       GtkClipboard *clipboard;
+        GtkSettings *settings;
+       struct vte_match_regex *regex;
+       guint i;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_finalize()\n");
+
+       /* Free the draw structure. */
+       if (terminal->pvt->draw != NULL) {
+               _vte_draw_free(terminal->pvt->draw);
+       }
+
+       /* The NLS maps. */
+       _vte_iso2022_state_free(terminal->pvt->iso2022);
+
+       /* Free background info. */
+       g_free(terminal->pvt->bg_file);
+
+       /* Free the font description. */
+       if (terminal->pvt->fontdesc != NULL) {
+               pango_font_description_free(terminal->pvt->fontdesc);
+       }
+       terminal->pvt->fontantialias = VTE_ANTI_ALIAS_USE_DEFAULT;
+
+       /* Free matching data. */
+       if (terminal->pvt->match_attributes != NULL) {
+               g_array_free(terminal->pvt->match_attributes, TRUE);
+       }
+       g_free(terminal->pvt->match_contents);
+       if (terminal->pvt->match_regexes != NULL) {
+               for (i = 0; i < terminal->pvt->match_regexes->len; i++) {
+                       regex = &g_array_index(terminal->pvt->match_regexes,
+                                              struct vte_match_regex,
+                                              i);
+                       /* Skip holes. */
+                       if (regex->tag < 0) {
+                               continue;
+                       }
+                        regex_match_clear(regex);
+               }
+               g_array_free(terminal->pvt->match_regexes, TRUE);
+       }
+
+       if (terminal->pvt->search_regex)
+               g_regex_unref (terminal->pvt->search_regex);
+       if (terminal->pvt->search_attrs)
+               g_array_free (terminal->pvt->search_attrs, TRUE);
+
+       /* Disconnect from toplevel window configure events. */
+       toplevel = gtk_widget_get_toplevel(&terminal->widget);
+       if ((toplevel != NULL) && (G_OBJECT(toplevel) != object)) {
+               g_signal_handlers_disconnect_by_func(toplevel,
+                                                    vte_terminal_configure_toplevel,
+                                                    terminal);
+       }
+
+       /* Disconnect from autoscroll requests. */
+       vte_terminal_stop_autoscroll(terminal);
+
+       /* Cancel pending adjustment change notifications. */
+       terminal->pvt->adjustment_changed_pending = FALSE;
+
+       /* Tabstop information. */
+       if (terminal->pvt->tabstops != NULL) {
+               g_hash_table_destroy(terminal->pvt->tabstops);
+       }
+
+       /* Free any selected text, but if we currently own the selection,
+        * throw the text onto the clipboard without an owner so that it
+        * doesn't just disappear. */
+       if (terminal->pvt->selection != NULL) {
+               clipboard = vte_terminal_clipboard_get(terminal,
+                                                      GDK_SELECTION_PRIMARY);
+               if (gtk_clipboard_get_owner(clipboard) == object) {
+                       gtk_clipboard_set_text(clipboard,
+                                              terminal->pvt->selection,
+                                              -1);
+               }
+               g_free(terminal->pvt->selection);
+       }
+       if (terminal->pvt->word_chars != NULL) {
+               g_array_free(terminal->pvt->word_chars, TRUE);
+       }
+
+       /* Clear the output histories. */
+       _vte_ring_fini(terminal->pvt->normal_screen.row_data);
+       _vte_ring_fini(terminal->pvt->alternate_screen.row_data);
+
+       /* Clear the status lines. */
+       g_string_free(terminal->pvt->normal_screen.status_line_contents,
+                     TRUE);
+       g_string_free(terminal->pvt->alternate_screen.status_line_contents,
+                     TRUE);
+
+       /* Free conversion descriptors. */
+       if (terminal->pvt->outgoing_conv != VTE_INVALID_CONV) {
+               _vte_conv_close(terminal->pvt->outgoing_conv);
+               terminal->pvt->outgoing_conv = VTE_INVALID_CONV;
+       }
+
+       /* Stop listening for child-exited signals. */
+       if (terminal->pvt->pty_reaper != NULL) {
+               g_signal_handlers_disconnect_by_func(terminal->pvt->pty_reaper,
+                                                    vte_terminal_catch_child_exited,
+                                                    terminal);
+               g_object_unref(terminal->pvt->pty_reaper);
+       }
+
+       /* Stop processing input. */
+       vte_terminal_stop_processing (terminal);
+
+       /* Discard any pending data. */
+       _vte_incoming_chunks_release (terminal->pvt->incoming);
+       _vte_buffer_free(terminal->pvt->outgoing);
+       g_array_free(terminal->pvt->pending, TRUE);
+       _vte_buffer_free(terminal->pvt->conv_buffer);
+
+       /* Stop the child and stop watching for input from the child. */
+       if (terminal->pvt->pty_pid != -1) {
+#ifdef HAVE_GETPGID
+               pid_t pgrp;
+               pgrp = getpgid(terminal->pvt->pty_pid);
+               if (pgrp != -1) {
+                       kill(-pgrp, SIGHUP);
+               }
+#endif
+               kill(terminal->pvt->pty_pid, SIGHUP);
+       }
+       _vte_terminal_disconnect_pty_read(terminal);
+       _vte_terminal_disconnect_pty_write(terminal);
+       if (terminal->pvt->pty_channel != NULL) {
+               g_io_channel_unref (terminal->pvt->pty_channel);
+       }
+       if (terminal->pvt->pty != NULL) {
+                vte_pty_close(terminal->pvt->pty);
+                g_object_unref(terminal->pvt->pty);
+       }
+
+       /* Remove hash tables. */
+       if (terminal->pvt->dec_saved != NULL) {
+               g_hash_table_destroy(terminal->pvt->dec_saved);
+       }
+
+       /* Clean up emulation structures. */
+       if (terminal->pvt->matcher != NULL) {
+               _vte_matcher_free(terminal->pvt->matcher);
+       }
+       if (terminal->pvt->termcap != NULL) {
+               _vte_termcap_free(terminal->pvt->termcap);
+       }
+
+       remove_update_timeout (terminal);
+
+       /* discard title updates */
+       g_free(terminal->pvt->window_title_changed);
+       g_free(terminal->pvt->icon_title_changed);
+
+       /* Free public-facing data. */
+       g_free(terminal->window_title);
+       g_free(terminal->icon_title);
+       if (terminal->adjustment != NULL) {
+               g_object_unref(terminal->adjustment);
+       }
+
+        settings = gtk_widget_get_settings (widget);
+        g_signal_handlers_disconnect_matched (settings, G_SIGNAL_MATCH_DATA,
+                                              0, 0, NULL, NULL,
+                                              terminal);
+
+       /* Call the inherited finalize() method. */
+       G_OBJECT_CLASS(vte_terminal_parent_class)->finalize(object);
+}
+
+/* Handle realizing the widget.  Most of this is copy-paste from GGAD. */
+static void
+vte_terminal_realize(GtkWidget *widget)
+{
+       GdkWindow *window;
+       VteTerminal *terminal;
+       GdkWindowAttr attributes;
+       GtkAllocation allocation;
+        GdkColor color;
+       guint attributes_mask = 0, i;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_realize()\n");
+
+       terminal = VTE_TERMINAL(widget);
+       gtk_widget_get_allocation (widget, &allocation);
+
+       /* Create the draw structure if we don't already have one. */
+       if (terminal->pvt->draw == NULL) {
+               terminal->pvt->draw = _vte_draw_new(&terminal->widget);
+       }
+
+       /* Create the stock cursors. */
+       terminal->pvt->mouse_cursor_visible = TRUE;
+       terminal->pvt->mouse_default_cursor =
+               vte_terminal_cursor_new(terminal, VTE_DEFAULT_CURSOR);
+       terminal->pvt->mouse_mousing_cursor =
+               vte_terminal_cursor_new(terminal, VTE_MOUSING_CURSOR);
+
+       /* Create a GDK window for the widget. */
+       attributes.window_type = GDK_WINDOW_CHILD;
+       attributes.x = allocation.x;
+       attributes.y = allocation.y;
+       attributes.width = allocation.width;
+       attributes.height = allocation.height;
+       attributes.wclass = GDK_INPUT_OUTPUT;
+       attributes.visual = gtk_widget_get_visual (widget);
+#if !GTK_CHECK_VERSION (2, 90, 8)
+       attributes.colormap = gtk_widget_get_colormap (widget);
+#endif
+       attributes.event_mask = gtk_widget_get_events(widget) |
+                               GDK_EXPOSURE_MASK |
+                               GDK_VISIBILITY_NOTIFY_MASK |
+                               GDK_FOCUS_CHANGE_MASK |
+                               GDK_BUTTON_PRESS_MASK |
+                               GDK_BUTTON_RELEASE_MASK |
+                               GDK_POINTER_MOTION_MASK |
+                               GDK_BUTTON1_MOTION_MASK |
+                               GDK_ENTER_NOTIFY_MASK |
+                               GDK_LEAVE_NOTIFY_MASK |
+                               GDK_KEY_PRESS_MASK |
+                               GDK_KEY_RELEASE_MASK;
+       attributes.cursor = terminal->pvt->mouse_default_cursor;
+       attributes_mask = GDK_WA_X |
+                         GDK_WA_Y |
+                         (attributes.visual ? GDK_WA_VISUAL : 0) |
+#if !GTK_CHECK_VERSION (2, 90, 8)
+                         (attributes.colormap ? GDK_WA_COLORMAP : 0) |
+#endif
+                         GDK_WA_CURSOR;
+
+       window = gdk_window_new (gtk_widget_get_parent_window (widget),
+                                &attributes, attributes_mask);
+
+       gtk_widget_set_window (widget, window);
+       gdk_window_set_user_data (window, widget);
+       _VTE_DEBUG_IF (VTE_DEBUG_UPDATES) gdk_window_set_debug_updates (TRUE);
+
+       /* Set the realized flag. */
+       gtk_widget_set_realized (widget, TRUE);
+
+       /* Set up the desired palette. */
+       if (!terminal->pvt->palette_initialized) {
+               vte_terminal_set_default_colors(terminal);
+       }
+
+       /* Allocate colors. */
+       for (i = 0; i < G_N_ELEMENTS(terminal->pvt->palette); i++) {
+               color.red = terminal->pvt->palette[i].red;
+               color.green = terminal->pvt->palette[i].green;
+               color.blue = terminal->pvt->palette[i].blue;
+               color.pixel = 0;
+               vte_terminal_set_color_internal(terminal, i, &color);
+       }
+
+       /* Set up input method support.  FIXME: do we need to handle the
+        * "retrieve-surrounding" and "delete-surrounding" events? */
+       if (terminal->pvt->im_context != NULL) {
+               vte_terminal_im_reset(terminal);
+               g_object_unref(terminal->pvt->im_context);
+               terminal->pvt->im_context = NULL;
+       }
+       terminal->pvt->im_preedit_active = FALSE;
+       terminal->pvt->im_context = gtk_im_multicontext_new();
+       gtk_im_context_set_client_window (terminal->pvt->im_context, window);
+       g_signal_connect(terminal->pvt->im_context, "commit",
+                        G_CALLBACK(vte_terminal_im_commit), terminal);
+       g_signal_connect(terminal->pvt->im_context, "preedit-start",
+                        G_CALLBACK(vte_terminal_im_preedit_start),
+                        terminal);
+       g_signal_connect(terminal->pvt->im_context, "preedit-changed",
+                        G_CALLBACK(vte_terminal_im_preedit_changed),
+                        terminal);
+       g_signal_connect(terminal->pvt->im_context, "preedit-end",
+                        G_CALLBACK(vte_terminal_im_preedit_end),
+                        terminal);
+       gtk_im_context_set_use_preedit(terminal->pvt->im_context, TRUE);
+
+       /* Clear modifiers. */
+       terminal->pvt->modifiers = 0;
+
+       /* Create our invisible cursor. */
+#if GTK_CHECK_VERSION (2, 15, 1)
+       terminal->pvt->mouse_inviso_cursor = gdk_cursor_new_for_display(gtk_widget_get_display(widget), 
GDK_BLANK_CURSOR);
+#else
+    {
+       GdkPixmap *bitmap;
+       GdkColor black = {0,0,0,0};
+
+       bitmap = gdk_bitmap_create_from_data (window, "\0", 1, 1);
+       terminal->pvt->mouse_inviso_cursor = gdk_cursor_new_from_pixmap(bitmap,
+                                                                       bitmap,
+                                                                       &black,
+                                                                       &black,
+                                                                       0, 0);
+       g_object_unref(bitmap);
+    }
+#endif /* GTK >= 2.15.1 */
+
+#if GTK_CHECK_VERSION (2, 20, 0)
+       gtk_widget_style_attach (widget);
+#else
+       widget->style = gtk_style_attach(widget->style, widget->window);
+#endif
+
+       vte_terminal_ensure_font (terminal);
+
+       /* Set up the background, *now*. */
+       vte_terminal_background_update(terminal);
+}
+
+static inline void
+swap (guint *a, guint *b)
+{
+       guint tmp;
+       tmp = *a, *a = *b, *b = tmp;
+}
+
+static void
+vte_terminal_determine_colors_internal(VteTerminal *terminal,
+                                      const VteCell *cell,
+                                      gboolean selected,
+                                      gboolean cursor,
+                                      guint *pfore, guint *pback)
+{
+       guint fore, back;
+
+       if (!cell)
+               cell = &basic_cell.cell;
+
+       /* Start with cell colors */
+       fore = cell->attr.fore;
+       back = cell->attr.back;
+
+       /* Reverse-mode switches default fore and back colors */
+       if (G_UNLIKELY (terminal->pvt->screen->reverse_mode)) {
+               if (fore == VTE_DEF_FG)
+                       fore = VTE_DEF_BG;
+               if (back == VTE_DEF_BG)
+                       back = VTE_DEF_FG;
+       }
+
+       /* Handle bold by using set bold color or brightening */
+       if (cell->attr.bold) {
+               if (fore == VTE_DEF_FG)
+                       fore = VTE_BOLD_FG;
+               else if (fore < VTE_LEGACY_COLOR_SET_SIZE) {
+                       fore += VTE_COLOR_BRIGHT_OFFSET;
+               }
+       }
+
+       /* Handle half similarly */
+       if (cell->attr.half) {
+               if (fore == VTE_DEF_FG)
+                       fore = VTE_DIM_FG;
+               else if ((fore < VTE_LEGACY_COLOR_SET_SIZE))
+                       fore = corresponding_dim_index[fore];
+       }
+
+       /* And standout */
+       if (cell->attr.standout) {
+               if (back < VTE_LEGACY_COLOR_SET_SIZE)
+                       back += VTE_COLOR_BRIGHT_OFFSET;
+       }
+
+       /* Reverse cell? */
+       if (cell->attr.reverse) {
+               swap (&fore, &back);
+       }
+
+       /* Selection: use hightlight back, or inverse */
+       if (selected) {
+               /* XXX what if hightlight back is same color as current back? */
+               if (terminal->pvt->highlight_color_set)
+                       back = VTE_DEF_HL;
+               else
+                       swap (&fore, &back);
+       }
+
+       /* Cursor: use cursor back, or inverse */
+       if (cursor) {
+               /* XXX what if cursor back is same color as current back? */
+               if (terminal->pvt->cursor_color_set)
+                       back = VTE_CUR_BG;
+               else
+                       swap (&fore, &back);
+       }
+
+       /* Invisible? */
+       if (cell && cell->attr.invisible) {
+               fore = back;
+       }
+
+       *pfore = fore;
+       *pback = back;
+}
+
+static inline void
+vte_terminal_determine_colors (VteTerminal *terminal,
+                              const VteCell *cell,
+                              gboolean highlight,
+                              guint *fore, guint *back)
+{
+       return vte_terminal_determine_colors_internal (terminal, cell,
+                                                      highlight, FALSE,
+                                                      fore, back);
+}
+
+static inline void
+vte_terminal_determine_cursor_colors (VteTerminal *terminal,
+                                     const VteCell *cell,
+                                     gboolean highlight,
+                                     guint *fore, guint *back)
+{
+       return vte_terminal_determine_colors_internal (terminal, cell,
+                                                      highlight, TRUE,
+                                                      fore, back);
+}
+
+/* Check if a unicode character is actually a graphic character we draw
+ * ourselves to handle cases where fonts don't have glyphs for them. */
+static gboolean
+vte_unichar_is_local_graphic(vteunistr c)
+{
+       if ((c >= 0x2500) && (c <= 0x257f)) {
+               return TRUE;
+       }
+       switch (c) {
+       case 0x00a3: /* british pound */
+       case 0x00b0: /* degree */
+       case 0x00b1: /* plus/minus */
+       case 0x00b7: /* bullet */
+       case 0x03c0: /* pi */
+       case 0x2190: /* left arrow */
+       case 0x2191: /* up arrow */
+       case 0x2192: /* right arrow */
+       case 0x2193: /* down arrow */
+       case 0x2260: /* != */
+       case 0x2264: /* <= */
+       case 0x2265: /* >= */
+       case 0x23ba: /* scanline 1/9 */
+       case 0x23bb: /* scanline 3/9 */
+       case 0x23bc: /* scanline 7/9 */
+       case 0x23bd: /* scanline 9/9 */
+       case 0x2409: /* HT symbol */
+       case 0x240a: /* LF symbol */
+       case 0x240b: /* VT symbol */
+       case 0x240c: /* FF symbol */
+       case 0x240d: /* CR symbol */
+       case 0x2424: /* NL symbol */
+       case 0x2592: /* checkerboard */
+       case 0x25ae: /* solid rectangle */
+       case 0x25c6: /* diamond */
+               return TRUE;
+               break;
+       default:
+               break;
+       }
+       return FALSE;
+}
+static gboolean
+vte_terminal_unichar_is_local_graphic(VteTerminal *terminal, vteunistr c, gboolean bold)
+{
+       return vte_unichar_is_local_graphic (c) &&
+               !_vte_draw_has_char (terminal->pvt->draw, c, bold);
+}
+
+static void
+vte_terminal_fill_rectangle(VteTerminal *terminal,
+                           const PangoColor *color,
+                           gint x,
+                           gint y,
+                           gint width,
+                           gint height)
+{
+       _vte_draw_start(terminal->pvt->draw);
+       _vte_draw_fill_rectangle(terminal->pvt->draw,
+                                x + terminal->pvt->inner_border.left,
+                                 y + terminal->pvt->inner_border.top,
+                                width, height,
+                                color, VTE_DRAW_OPAQUE);
+       _vte_draw_end(terminal->pvt->draw);
+}
+
+static void
+vte_terminal_draw_line(VteTerminal *terminal,
+                      const PangoColor *color,
+                      gint x,
+                      gint y,
+                      gint xp,
+                      gint yp)
+{
+       vte_terminal_fill_rectangle(terminal, color,
+                                   x, y,
+                                   MAX(VTE_LINE_WIDTH, xp - x + 1), MAX(VTE_LINE_WIDTH, yp - y + 1));
+}
+
+static void
+vte_terminal_draw_rectangle(VteTerminal *terminal,
+                           const PangoColor *color,
+                           gint x,
+                           gint y,
+                           gint width,
+                           gint height)
+{
+       _vte_draw_start(terminal->pvt->draw);
+       _vte_draw_draw_rectangle(terminal->pvt->draw,
+                                x + terminal->pvt->inner_border.left,
+                                 y + terminal->pvt->inner_border.top,
+                                width, height,
+                                color, VTE_DRAW_OPAQUE);
+       _vte_draw_end(terminal->pvt->draw);
+}
+
+static void
+vte_terminal_draw_point(VteTerminal *terminal,
+                       const PangoColor *color,
+                       gint x,
+                       gint y)
+{
+       vte_terminal_fill_rectangle(terminal, color, x, y, 1, 1);
+}
+
+/* Draw the graphic representation of a line-drawing or special graphics
+ * character. */
+static gboolean
+vte_terminal_draw_graphic(VteTerminal *terminal, vteunistr c,
+                         guint fore, guint back, gboolean draw_default_bg,
+                         gint x, gint y,
+                         gint column_width, gint columns, gint row_height,
+                         gboolean bold)
+{
+       gboolean ret;
+       gint xcenter, xright, ycenter, ybottom, i;
+       struct _vte_draw_text_request request;
+
+       request.c = c;
+       request.x = x + terminal->pvt->inner_border.left;
+       request.y = y + terminal->pvt->inner_border.top;
+       request.columns = columns;
+
+       xright = x + column_width * columns;
+       ybottom = y + row_height;
+       xcenter = (x + xright) / 2;
+       ycenter = (y + ybottom) / 2;
+
+       if ((back != VTE_DEF_BG) || draw_default_bg) {
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[back],
+                                           x, y,
+                                           column_width * columns, row_height);
+       }
+
+       if (_vte_draw_char(terminal->pvt->draw, &request,
+                          &terminal->pvt->palette[fore], VTE_DRAW_OPAQUE, bold)) {
+               /* We were able to draw with actual fonts. */
+               return TRUE;
+       }
+
+       ret = TRUE;
+
+       switch (c) {
+       case 124:
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* != */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2 - 1, ycenter,
+                                      (xright + xcenter) / 2 + 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2 - 1,
+                                      (ybottom + ycenter) / 2,
+                                      (xright + xcenter) / 2 + 1,
+                                      (ybottom + ycenter) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, y + 1,
+                                      x + 1, ybottom - 1);
+               break;
+       case 127:
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* A "delete" symbol I saw somewhere. */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ycenter,
+                                      xcenter, y);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, y,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, ycenter,
+                                      xright - 1, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, ybottom - 1,
+                                      x, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ybottom - 1,
+                                      x, ycenter);
+               break;
+       case 0x00a3:
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* British pound.  An "L" with a hyphen. */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2,
+                                      (y + ycenter) / 2,
+                                      (x + xcenter) / 2,
+                                      (ycenter + ybottom) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2,
+                                      (ycenter + ybottom) / 2,
+                                      (xcenter + xright) / 2,
+                                      (ycenter + ybottom) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ycenter,
+                                      xcenter + 1, ycenter);
+               break;
+       case 0x00b0: /* f */
+               /* litle circle */
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter - 1, ycenter);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter + 1, ycenter);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter, ycenter - 1);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter, ycenter + 1);
+               break;
+       case 0x00b1: /* g */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* +/- */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter,
+                                      (y + ycenter) / 2,
+                                      xcenter,
+                                      (ycenter + ybottom) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2,
+                                      ycenter,
+                                      (xcenter + xright) / 2,
+                                      ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2,
+                                      (ycenter + ybottom) / 2,
+                                      (xcenter + xright) / 2,
+                                      (ycenter + ybottom) / 2);
+               break;
+       case 0x00b7:
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* short hyphen? */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter - 1, ycenter,
+                                      xcenter + 1, ycenter);
+               break;
+       case 0x3c0: /* pi */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2 - 1,
+                                      (y + ycenter) / 2,
+                                      (xright + xcenter) / 2 + 1,
+                                      (y + ycenter) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2,
+                                      (y + ycenter) / 2,
+                                      (x + xcenter) / 2,
+                                      (ybottom + ycenter) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (xright + xcenter) / 2,
+                                      (y + ycenter) / 2,
+                                      (xright + xcenter) / 2,
+                                      (ybottom + ycenter) / 2);
+               break;
+       /* case 0x2190: FIXME */
+       /* case 0x2191: FIXME */
+       /* case 0x2192: FIXME */
+       /* case 0x2193: FIXME */
+       /* case 0x2260: FIXME */
+       case 0x2264: /* y */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* <= */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, y,
+                                      x, (y + ycenter) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, (y + ycenter) / 2,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ycenter,
+                                      xright - 1, (ycenter + ybottom) / 2);
+               break;
+       case 0x2265: /* z */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* >= */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      xright - 1, (y + ycenter) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, (y + ycenter) / 2,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, ycenter,
+                                      x, (ycenter + ybottom) / 2);
+               break;
+       case 0x23ba: /* o */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x, y,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x23bb: /* p */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x, (y + ycenter) / 2,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x23bc: /* r */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           (ycenter + ybottom) / 2,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x23bd: /* s */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ybottom - 1,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x2409:  /* b */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* H */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, y,
+                                      xcenter, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, (y + ycenter) / 2,
+                                      xcenter, (y + ycenter) / 2);
+               /* T */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (xcenter + xright) / 2, ycenter,
+                                      (xcenter + xright) / 2, ybottom - 1);
+               break;
+       case 0x240a: /* e */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* L */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ycenter,
+                                      xcenter, ycenter);
+               /* F */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xcenter, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, (ycenter + ybottom) / 2,
+                                      xright - 1, (ycenter + ybottom) / 2);
+               break;
+       case 0x240b: /* i */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* V */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      (x + xcenter) / 2, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (x + xcenter) / 2, ycenter,
+                                      xcenter, y);
+               /* T */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      (xcenter + xright) / 2, ycenter,
+                                      (xcenter + xright) / 2, ybottom - 1);
+               break;
+       case 0x240c:  /* c */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* F */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      xcenter, y);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, (y + ycenter) / 2,
+                                      xcenter, (y + ycenter) / 2);
+               /* F */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xcenter, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, (ycenter + ybottom) / 2,
+                                      xright - 1, (ycenter + ybottom) / 2);
+               break;
+       case 0x240d: /* d */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* C */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      xcenter, y);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, ycenter,
+                                      xcenter, ycenter);
+               /* R */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xcenter, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xright - 1, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, ycenter,
+                                      xright - 1, (ycenter + ybottom) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xright - 1, (ycenter + ybottom) / 2,
+                                      xcenter, (ycenter + ybottom) / 2);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, (ycenter + ybottom) / 2,
+                                      xright - 1, ybottom - 1);
+               break;
+       case 0x2424: /* h */
+               xcenter--;
+               ycenter--;
+               xright--;
+               ybottom--;
+               /* N */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      x, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      x, y,
+                                      xcenter, ycenter);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, y,
+                                      xcenter, ycenter);
+               /* L */
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ycenter,
+                                      xcenter, ybottom - 1);
+               vte_terminal_draw_line(terminal,
+                                      &terminal->pvt->palette[fore],
+                                      xcenter, ybottom - 1,
+                                      xright - 1, ybottom - 1);
+               break;
+       case 0x2500: /* q */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x2501:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH * 2);
+               break;
+       case 0x2502: /* x */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           row_height);
+               break;
+       case 0x2503:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           row_height);
+               break;
+       case 0x250c: /* l */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH,
+                                           ybottom - ycenter);
+               break;
+       case 0x250f:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH * 2);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH * 2,
+                                           ybottom - ycenter);
+               break;
+       case 0x2510: /* k */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH,
+                                           VTE_LINE_WIDTH);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH,
+                                           ybottom - ycenter);
+               break;
+       case 0x2513:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH * 2,
+                                           VTE_LINE_WIDTH * 2);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH * 2,
+                                           ybottom - ycenter);
+               break;
+       case 0x2514: /* m */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           ycenter - y + VTE_LINE_WIDTH);
+               break;
+       case 0x2517:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH * 2);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           ycenter - y + VTE_LINE_WIDTH * 2);
+               break;
+       case 0x2518: /* j */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH,
+                                           VTE_LINE_WIDTH);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           ycenter - y + VTE_LINE_WIDTH);
+               break;
+       case 0x251b:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH * 2,
+                                           VTE_LINE_WIDTH * 2);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           ycenter - y + VTE_LINE_WIDTH * 2);
+               break;
+       case 0x251c: /* t */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x2523:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           xright - xcenter,
+                                           VTE_LINE_WIDTH * 2);
+               break;
+       case 0x2524: /* u */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x252b:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           xcenter - x + VTE_LINE_WIDTH * 2,
+                                           VTE_LINE_WIDTH * 2);
+               break;
+       case 0x252c: /* w */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH,
+                                           ybottom - ycenter);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x2533:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           ycenter,
+                                           VTE_LINE_WIDTH * 2,
+                                           ybottom - ycenter);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH * 2);
+               break;
+       case 0x2534: /* v */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           ycenter - y + VTE_LINE_WIDTH);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x253c: /* n */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH);
+               break;
+       case 0x254b:
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           xcenter,
+                                           y,
+                                           VTE_LINE_WIDTH * 2,
+                                           row_height);
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x,
+                                           ycenter,
+                                           column_width * columns,
+                                           VTE_LINE_WIDTH * 2);
+               break;
+       case 0x2592:  /* a */
+               for (i = x; i < xright + 1; i++) {
+                       gint j, draw = ((i - x) & 1) == 0;
+                       for (j = y; j < ybottom; j++) {
+                               if (draw) {
+                                       vte_terminal_draw_point(terminal,
+                                                               &terminal->pvt->palette[fore],
+                                                               i, j);
+                               }
+                               draw = !draw;
+                       }
+               }
+               break;
+       case 0x25ae: /* solid rectangle */
+               vte_terminal_fill_rectangle(terminal,
+                                           &terminal->pvt->palette[fore],
+                                           x, y,
+                                           xright - x, ybottom - y);
+               break;
+       case 0x25c6:
+               /* diamond */
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter - 2, ycenter);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter + 2, ycenter);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter, ycenter - 2);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter, ycenter + 2);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter - 1, ycenter - 1);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter - 1, ycenter + 1);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter + 1, ycenter - 1);
+               vte_terminal_draw_point(terminal,
+                                       &terminal->pvt->palette[fore],
+                                       xcenter + 1, ycenter + 1);
+               break;
+       default:
+               ret = FALSE;
+               break;
+       }
+       return ret;
+}
+
+/* Draw a string of characters with similar attributes. */
+static void
+vte_terminal_draw_cells(VteTerminal *terminal,
+                       struct _vte_draw_text_request *items, gssize n,
+                       guint fore, guint back, gboolean clear,
+                       gboolean draw_default_bg,
+                       gboolean bold, gboolean underline,
+                       gboolean strikethrough, gboolean hilite, gboolean boxed,
+                       gint column_width, gint row_height)
+{
+       int i, x, y, ascent;
+       gint columns = 0;
+       PangoColor *fg, *bg, *defbg;
+
+       g_assert(n > 0);
+       _VTE_DEBUG_IF(VTE_DEBUG_CELLS) {
+               GString *str = g_string_new (NULL);
+               gchar *tmp;
+               for (i = 0; i < n; i++) {
+                       g_string_append_unichar (str, items[i].c);
+               }
+               tmp = g_string_free (str, FALSE);
+               g_printerr ("draw_cells('%s', fore=%d, back=%d, bold=%d,"
+                               " ul=%d, strike=%d, hilite=%d, boxed=%d)\n",
+                               tmp, fore, back, bold,
+                               underline, strikethrough, hilite, boxed);
+               g_free (tmp);
+       }
+
+       bold = bold && terminal->pvt->allow_bold;
+       fg = &terminal->pvt->palette[fore];
+       bg = &terminal->pvt->palette[back];
+       defbg = &terminal->pvt->palette[VTE_DEF_BG];
+       ascent = terminal->char_ascent;
+
+       i = 0;
+       do {
+               columns = 0;
+               x = items[i].x;
+               y = items[i].y;
+               for (; i < n && items[i].y == y; i++) {
+                       /* Adjust for the border. */
+                       items[i].x += terminal->pvt->inner_border.left;
+                       items[i].y += terminal->pvt->inner_border.top;
+                       columns += items[i].columns;
+               }
+               if (clear && (draw_default_bg || bg != defbg)) {
+                       _vte_draw_fill_rectangle(terminal->pvt->draw,
+                                       x + terminal->pvt->inner_border.left,
+                                        y + terminal->pvt->inner_border.top,
+                                       columns * column_width + bold,
+                                       row_height,
+                                       bg, VTE_DRAW_OPAQUE);
+               }
+       } while (i < n);
+       _vte_draw_text(terminal->pvt->draw,
+                       items, n,
+                       fg, VTE_DRAW_OPAQUE, bold);
+       for (i = 0; i < n; i++) {
+               /* Deadjust for the border. */
+               items[i].x -= terminal->pvt->inner_border.left;
+               items[i].y -= terminal->pvt->inner_border.top;
+       }
+
+       /* Draw whatever SFX are required. */
+       if (underline | strikethrough | hilite | boxed) {
+               i = 0;
+               do {
+                       x = items[i].x;
+                       y = items[i].y;
+                       for (columns = 0; i < n && items[i].y == y; i++) {
+                               columns += items[i].columns;
+                       }
+                       if (underline) {
+                               vte_terminal_draw_line(terminal,
+                                               &terminal->pvt->palette[fore],
+                                               x,
+                                               y + terminal->pvt->underline_position,
+                                               x + (columns * column_width) - 1,
+                                               y + terminal->pvt->underline_position + 
terminal->pvt->line_thickness - 1);
+                       }
+                       if (strikethrough) {
+                               vte_terminal_draw_line(terminal,
+                                               &terminal->pvt->palette[fore],
+                                               x,
+                                               y + terminal->pvt->strikethrough_position,
+                                               x + (columns * column_width) - 1,
+                                               y + terminal->pvt->strikethrough_position + 
terminal->pvt->line_thickness - 1);
+                       }
+                       if (hilite) {
+                               vte_terminal_draw_line(terminal,
+                                               &terminal->pvt->palette[fore],
+                                               x,
+                                               y + row_height - 1,
+                                               x + (columns * column_width) - 1,
+                                               y + row_height - 1);
+                       }
+                       if (boxed) {
+                               vte_terminal_draw_rectangle(terminal,
+                                               &terminal->pvt->palette[fore],
+                                               x, y,
+                                               MAX(0, (columns * column_width)),
+                                               MAX(0, row_height));
+                       }
+               }while (i < n);
+       }
+}
+
+/* Try to map a PangoColor to a palette entry and return its index. */
+static guint
+_vte_terminal_map_pango_color(VteTerminal *terminal, PangoColor *color)
+{
+       long distance[G_N_ELEMENTS(terminal->pvt->palette)];
+       guint i, ret;
+
+       /* Calculate a "distance" value.  Could stand to be improved a bit. */
+       for (i = 0; i < G_N_ELEMENTS(distance); i++) {
+               const PangoColor *entry = &terminal->pvt->palette[i];
+               distance[i] = 0;
+               distance[i] += ((entry->red >> 8) - (color->red >> 8)) *
+                              ((entry->red >> 8) - (color->red >> 8));
+               distance[i] += ((entry->blue >> 8) - (color->blue >> 8)) *
+                              ((entry->blue >> 8) - (color->blue >> 8));
+               distance[i] += ((entry->green >> 8) - (color->green >> 8)) *
+                              ((entry->green >> 8) - (color->green >> 8));
+       }
+
+       /* Find the index of the minimum value. */
+       ret = 0;
+       for (i = 1; i < G_N_ELEMENTS(distance); i++) {
+               if (distance[i] < distance[ret]) {
+                       ret = i;
+               }
+       }
+
+       _vte_debug_print(VTE_DEBUG_UPDATES,
+                       "mapped PangoColor(%04x,%04x,%04x) to "
+                       "palette entry (%04x,%04x,%04x)\n",
+                       color->red, color->green, color->blue,
+                       terminal->pvt->palette[ret].red,
+                       terminal->pvt->palette[ret].green,
+                       terminal->pvt->palette[ret].blue);
+
+       return ret;
+}
+
+/* FIXME: we don't have a way to tell GTK+ what the default text attributes
+ * should be, so for now at least it's assuming white-on-black is the norm and
+ * is using "black-on-white" to signify "inverse".  Pick up on that state and
+ * fix things.  Do this here, so that if we suddenly get red-on-black, we'll do
+ * the right thing. */
+static void
+_vte_terminal_fudge_pango_colors(VteTerminal *terminal, GSList *attributes,
+                                VteCell *cells, gssize n)
+{
+       int i, sumlen = 0;
+       struct _fudge_cell_props{
+               gboolean saw_fg, saw_bg;
+               PangoColor fg, bg;
+               guint index;
+       }*props = g_newa (struct _fudge_cell_props, n);
+
+       for (i = 0; i < n; i++) {
+               gchar ubuf[7];
+               gint len = g_unichar_to_utf8 (cells[i].c, ubuf);
+               props[i].index = sumlen;
+               props[i].saw_fg = props[i].saw_bg = FALSE;
+               sumlen += len;
+       }
+
+       while (attributes != NULL) {
+               PangoAttribute *attr = attributes->data;
+               PangoAttrColor *color;
+               switch (attr->klass->type) {
+               case PANGO_ATTR_FOREGROUND:
+                       for (i = 0; i < n; i++) {
+                               if (props[i].index < attr->start_index) {
+                                       continue;
+                               }
+                               if (props[i].index >= attr->end_index) {
+                                       break;
+                               }
+                               props[i].saw_fg = TRUE;
+                               color = (PangoAttrColor*) attr;
+                               props[i].fg = color->color;
+                       }
+                       break;
+               case PANGO_ATTR_BACKGROUND:
+                       for (i = 0; i < n; i++) {
+                               if (props[i].index < attr->start_index) {
+                                       continue;
+                               }
+                               if (props[i].index >= attr->end_index) {
+                                       break;
+                               }
+                               props[i].saw_bg = TRUE;
+                               color = (PangoAttrColor*) attr;
+                               props[i].bg = color->color;
+                       }
+                       break;
+               default:
+                       break;
+               }
+               attributes = g_slist_next(attributes);
+       }
+
+       for (i = 0; i < n; i++) {
+               if (props[i].saw_fg && props[i].saw_bg &&
+                               (props[i].fg.red == 0xffff) &&
+                               (props[i].fg.green == 0xffff) &&
+                               (props[i].fg.blue == 0xffff) &&
+                               (props[i].bg.red == 0) &&
+                               (props[i].bg.green == 0) &&
+                               (props[i].bg.blue == 0)) {
+                       cells[i].attr.fore = terminal->pvt->screen->color_defaults.attr.fore;
+                       cells[i].attr.back = terminal->pvt->screen->color_defaults.attr.back;
+                       cells[i].attr.reverse = TRUE;
+               }
+       }
+}
+
+/* Apply the attribute given in the PangoAttribute to the list of cells. */
+static void
+_vte_terminal_apply_pango_attr(VteTerminal *terminal, PangoAttribute *attr,
+                              VteCell *cells, guint n_cells)
+{
+       guint i, ival;
+       PangoAttrInt *attrint;
+       PangoAttrColor *attrcolor;
+
+       switch (attr->klass->type) {
+       case PANGO_ATTR_FOREGROUND:
+       case PANGO_ATTR_BACKGROUND:
+               attrcolor = (PangoAttrColor*) attr;
+               ival = _vte_terminal_map_pango_color(terminal,
+                                                    &attrcolor->color);
+               for (i = attr->start_index;
+                    i < attr->end_index && i < n_cells;
+                    i++) {
+                       if (attr->klass->type == PANGO_ATTR_FOREGROUND) {
+                               cells[i].attr.fore = ival;
+                       }
+                       if (attr->klass->type == PANGO_ATTR_BACKGROUND) {
+                               cells[i].attr.back = ival;
+                       }
+               }
+               break;
+       case PANGO_ATTR_STRIKETHROUGH:
+               attrint = (PangoAttrInt*) attr;
+               ival = attrint->value;
+               for (i = attr->start_index;
+                    (i < attr->end_index) && (i < n_cells);
+                    i++) {
+                       cells[i].attr.strikethrough = (ival != FALSE);
+               }
+               break;
+       case PANGO_ATTR_UNDERLINE:
+               attrint = (PangoAttrInt*) attr;
+               ival = attrint->value;
+               for (i = attr->start_index;
+                    (i < attr->end_index) && (i < n_cells);
+                    i++) {
+                       cells[i].attr.underline = (ival != PANGO_UNDERLINE_NONE);
+               }
+               break;
+       case PANGO_ATTR_WEIGHT:
+               attrint = (PangoAttrInt*) attr;
+               ival = attrint->value;
+               for (i = attr->start_index;
+                    (i < attr->end_index) && (i < n_cells);
+                    i++) {
+                       cells[i].attr.bold = (ival >= PANGO_WEIGHT_BOLD);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+/* Convert a PangoAttrList and a location in that list to settings in a
+ * charcell structure.  The cells array is assumed to contain enough items
+ * so that all ranges in the attribute list can be mapped into the array, which
+ * typically means that the cell array should have the same length as the
+ * string (byte-wise) which the attributes describe. */
+static void
+_vte_terminal_pango_attribute_destroy(gpointer attr, gpointer data)
+{
+       pango_attribute_destroy(attr);
+}
+static void
+_vte_terminal_translate_pango_cells(VteTerminal *terminal, PangoAttrList *attrs,
+                                   VteCell *cells, guint n_cells)
+{
+       PangoAttribute *attr;
+       PangoAttrIterator *attriter;
+       GSList *list, *listiter;
+       guint i;
+
+       for (i = 0; i < n_cells; i++) {
+               cells[i] = terminal->pvt->screen->fill_defaults;
+       }
+
+       attriter = pango_attr_list_get_iterator(attrs);
+       if (attriter != NULL) {
+               do {
+                       list = pango_attr_iterator_get_attrs(attriter);
+                       if (list != NULL) {
+                               for (listiter = list;
+                                    listiter != NULL;
+                                    listiter = g_slist_next(listiter)) {
+                                       attr = listiter->data;
+                                       _vte_terminal_apply_pango_attr(terminal,
+                                                                      attr,
+                                                                      cells,
+                                                                      n_cells);
+                               }
+                               attr = list->data;
+                               _vte_terminal_fudge_pango_colors(terminal,
+                                                                list,
+                                                                cells +
+                                                                attr->start_index,
+                                                                attr->end_index -
+                                                                attr->start_index);
+                               g_slist_foreach(list,
+                                               _vte_terminal_pango_attribute_destroy,
+                                               NULL);
+                               g_slist_free(list);
+                       }
+               } while (pango_attr_iterator_next(attriter) == TRUE);
+               pango_attr_iterator_destroy(attriter);
+       }
+}
+
+/* Draw the listed items using the given attributes.  Tricky because the
+ * attribute string is indexed by byte in the UTF-8 representation of the string
+ * of characters.  Because we draw a character at a time, this is slower. */
+static void
+vte_terminal_draw_cells_with_attributes(VteTerminal *terminal,
+                                       struct _vte_draw_text_request *items,
+                                       gssize n,
+                                       PangoAttrList *attrs,
+                                       gboolean draw_default_bg,
+                                       gint column_width, gint height)
+{
+       int i, j, cell_count;
+       VteCell *cells;
+       char scratch_buf[VTE_UTF8_BPC];
+       guint fore, back;
+
+       /* Note: since this function is only called with the pre-edit text,
+        * all the items contain gunichar only, not vteunistr. */
+
+       for (i = 0, cell_count = 0; i < n; i++) {
+               cell_count += g_unichar_to_utf8(items[i].c, scratch_buf);
+       }
+       cells = g_new(VteCell, cell_count);
+       _vte_terminal_translate_pango_cells(terminal, attrs, cells, cell_count);
+       for (i = 0, j = 0; i < n; i++) {
+               vte_terminal_determine_colors(terminal, &cells[j], FALSE, &fore, &back);
+               vte_terminal_draw_cells(terminal, items + i, 1,
+                                       fore,
+                                       back,
+                                       TRUE, draw_default_bg,
+                                       cells[j].attr.bold,
+                                       cells[j].attr.underline,
+                                       cells[j].attr.strikethrough,
+                                       FALSE, FALSE, column_width, height);
+               j += g_unichar_to_utf8(items[i].c, scratch_buf);
+       }
+       g_free(cells);
+}
+
+
+/* Paint the contents of a given row at the given location.  Take advantage
+ * of multiple-draw APIs by finding runs of characters with identical
+ * attributes and bundling them together. */
+static void
+vte_terminal_draw_rows(VteTerminal *terminal,
+                     VteScreen *screen,
+                     gint start_row, gint row_count,
+                     gint start_column, gint column_count,
+                     gint start_x, gint start_y,
+                     gint column_width, gint row_height)
+{
+       struct _vte_draw_text_request items[4*VTE_DRAW_MAX_LENGTH];
+       gint i, j, row, rows, x, y, end_column;
+       guint fore, nfore, back, nback;
+       glong delta;
+       gboolean underline, nunderline, bold, nbold, hilite, nhilite,
+                selected, nselected, strikethrough, nstrikethrough;
+       guint item_count;
+       const VteCell *cell;
+       const VteRowData *row_data;
+
+       /* adjust for the absolute start of row */
+       start_x -= start_column * column_width;
+       end_column = start_column + column_count;
+
+       /* clear the background */
+       delta = screen->scroll_delta;
+       x = start_x + terminal->pvt->inner_border.left;
+       y = start_y + terminal->pvt->inner_border.top;
+       row = start_row;
+       rows = row_count;
+       do {
+               row_data = _vte_terminal_find_row_data(terminal, row);
+               /* Back up in case this is a multicolumn character,
+                * making the drawing area a little wider. */
+               i = start_column;
+               if (row_data != NULL) {
+                       cell = _vte_row_data_get (row_data, i);
+                       if (cell != NULL) {
+                               while (cell->attr.fragment && i > 0) {
+                                       cell = _vte_row_data_get (row_data, --i);
+                               }
+                       }
+                       /* Walk the line. */
+                       do {
+                               /* Get the character cell's contents. */
+                               cell = _vte_row_data_get (row_data, i);
+                               /* Find the colors for this cell. */
+                               selected = vte_cell_is_selected(terminal, i, row, NULL);
+                               vte_terminal_determine_colors(terminal, cell, selected, &fore, &back);
+
+                               bold = cell && cell->attr.bold;
+                               j = i + (cell ? cell->attr.columns : 1);
+
+                               while (j < end_column){
+                                       /* Retrieve the cell. */
+                                       cell = _vte_row_data_get (row_data, j);
+                                       /* Don't render fragments of multicolumn characters
+                                        * which have the same attributes as the initial
+                                        * portions. */
+                                       if (cell != NULL && cell->attr.fragment) {
+                                               j++;
+                                               continue;
+                                       }
+                                       /* Resolve attributes to colors where possible and
+                                        * compare visual attributes to the first character
+                                        * in this chunk. */
+                                       selected = vte_cell_is_selected(terminal, j, row, NULL);
+                                       vte_terminal_determine_colors(terminal, cell, selected, &nfore, 
&nback);
+                                       if (nback != back) {
+                                               break;
+                                       }
+                                       bold = cell && cell->attr.bold;
+                                       j += cell ? cell->attr.columns : 1;
+                               }
+                               if (back != VTE_DEF_BG) {
+                                       _vte_draw_fill_rectangle (
+                                                       terminal->pvt->draw,
+                                                       x + i * column_width,
+                                                       y,
+                                                       (j - i) * column_width + bold,
+                                                       row_height,
+                                                       &terminal->pvt->palette[back], VTE_DRAW_OPAQUE);
+                               }
+                               /* We'll need to continue at the first cell which didn't
+                                * match the first one in this set. */
+                               i = j;
+                       } while (i < end_column);
+               } else {
+                       do {
+                               selected = vte_cell_is_selected(terminal, i, row, NULL);
+                               j = i + 1;
+                               while (j < end_column){
+                                       nselected = vte_cell_is_selected(terminal, j, row, NULL);
+                                       if (nselected != selected) {
+                                               break;
+                                       }
+                                       j++;
+                               }
+                               vte_terminal_determine_colors(terminal, NULL, selected, &fore, &back);
+                               if (back != VTE_DEF_BG) {
+                                       _vte_draw_fill_rectangle (terminal->pvt->draw,
+                                                                 x + i *column_width,
+                                                                 y,
+                                                                 (j - i)  * column_width,
+                                                                 row_height,
+                                                                 &terminal->pvt->palette[back], 
VTE_DRAW_OPAQUE);
+                               }
+                               i = j;
+                       } while (i < end_column);
+               }
+               row++;
+               y += row_height;
+       } while (--rows);
+
+
+       /* render the text */
+       y = start_y;
+       row = start_row;
+       rows = row_count;
+       item_count = 1;
+       do {
+               row_data = _vte_terminal_find_row_data(terminal, row);
+               if (row_data == NULL) {
+                       goto fg_skip_row;
+               }
+               /* Back up in case this is a multicolumn character,
+                * making the drawing area a little wider. */
+               i = start_column;
+               cell = _vte_row_data_get (row_data, i);
+               if (cell == NULL) {
+                       goto fg_skip_row;
+               }
+               while (cell->attr.fragment && i > 0)
+                       cell = _vte_row_data_get (row_data, --i);
+
+               /* Walk the line. */
+               do {
+                       /* Get the character cell's contents. */
+                       cell = _vte_row_data_get (row_data, i);
+                       if (cell == NULL) {
+                               goto fg_skip_row;
+                       }
+                       while (cell->c == 0 || cell->attr.invisible ||
+                                       (cell->c == ' ' &&
+                                        !cell->attr.underline &&
+                                        !cell->attr.strikethrough) ||
+                                       cell->attr.fragment) {
+                               if (++i >= end_column) {
+                                       goto fg_skip_row;
+                               }
+                               cell = _vte_row_data_get (row_data, i);
+                               if (cell == NULL) {
+                                       goto fg_skip_row;
+                               }
+                       }
+                       /* Find the colors for this cell. */
+                       selected = vte_cell_is_selected(terminal, i, row, NULL);
+                       vte_terminal_determine_colors(terminal, cell, selected, &fore, &back);
+                       underline = cell->attr.underline;
+                       strikethrough = cell->attr.strikethrough;
+                       bold = cell->attr.bold;
+                       if (terminal->pvt->show_match) {
+                               hilite = vte_cell_is_between(i, row,
+                                               terminal->pvt->match_start.col,
+                                               terminal->pvt->match_start.row,
+                                               terminal->pvt->match_end.col,
+                                               terminal->pvt->match_end.row,
+                                               TRUE);
+                       } else {
+                               hilite = FALSE;
+                       }
+
+                       items[0].c = cell->c;
+                       items[0].columns = cell->attr.columns;
+                       items[0].x = start_x + i * column_width;
+                       items[0].y = y;
+                       j = i + items[0].columns;
+
+                       /* If this is a graphics character, draw it locally. */
+                       if (vte_terminal_unichar_is_local_graphic(terminal, cell->c, cell->attr.bold)) {
+                               if (vte_terminal_draw_graphic(terminal,
+                                                       items[0].c,
+                                                       fore, back,
+                                                       FALSE,
+                                                       items[0].x,
+                                                       items[0].y,
+                                                       column_width,
+                                                       items[0].columns,
+                                                       row_height,
+                                                       cell->attr.bold)) {
+                                       i = j;
+                                       continue;
+                               }
+                       }
+
+                       /* Now find out how many cells have the same attributes. */
+                       do {
+                               while (j < end_column &&
+                                               item_count < G_N_ELEMENTS(items)) {
+                                       /* Retrieve the cell. */
+                                       cell = _vte_row_data_get (row_data, j);
+                                       if (cell == NULL) {
+                                               goto fg_next_row;
+                                       }
+                                       /* Don't render blank cells or fragments of multicolumn characters
+                                        * which have the same attributes as the initial
+                                        * portions.  Don't render invisible cells */
+                                       if (cell->attr.fragment || cell->attr.invisible) {
+                                               j++;
+                                               continue;
+                                       }
+                                       if (cell->c == 0){
+                                               /* only break the run if we
+                                                * are drawing attributes
+                                                */
+                                               if (underline || strikethrough || hilite) {
+                                                       break;
+                                               } else {
+                                                       j++;
+                                                       continue;
+                                               }
+                                       }
+                                       /* Resolve attributes to colors where possible and
+                                        * compare visual attributes to the first character
+                                        * in this chunk. */
+                                       selected = vte_cell_is_selected(terminal, j, row, NULL);
+                                       vte_terminal_determine_colors(terminal, cell, selected, &nfore, 
&nback);
+                                       /* Graphic characters must be drawn individually. */
+                                       if (vte_terminal_unichar_is_local_graphic(terminal, cell->c, 
cell->attr.bold)) {
+                                               if (vte_terminal_draw_graphic(terminal,
+                                                                       cell->c,
+                                                                       nfore, nback,
+                                                                       FALSE,
+                                                                       start_x + j * column_width,
+                                                                       y,
+                                                                       column_width,
+                                                                       cell->attr.columns,
+                                                                       row_height,
+                                                                       cell->attr.bold)) {
+
+                                                       j += cell->attr.columns;
+                                                       continue;
+                                               }
+                                       }
+                                       if (nfore != fore) {
+                                               break;
+                                       }
+                                       nbold = cell->attr.bold;
+                                       if (nbold != bold) {
+                                               break;
+                                       }
+                                       /* Break up underlined/not-underlined text. */
+                                       nunderline = cell->attr.underline;
+                                       if (nunderline != underline) {
+                                               break;
+                                       }
+                                       nstrikethrough = cell->attr.strikethrough;
+                                       if (nstrikethrough != strikethrough) {
+                                               break;
+                                       }
+                                       /* Break up matched/not-matched text. */
+                                       nhilite = FALSE;
+                                       if (terminal->pvt->show_match) {
+                                               nhilite = vte_cell_is_between(j, row,
+                                                               terminal->pvt->match_start.col,
+                                                               terminal->pvt->match_start.row,
+                                                               terminal->pvt->match_end.col,
+                                                               terminal->pvt->match_end.row,
+                                                               TRUE);
+                                       }
+                                       if (nhilite != hilite) {
+                                               break;
+                                       }
+                                       /* Add this cell to the draw list. */
+                                       items[item_count].c = cell->c;
+                                       items[item_count].columns = cell->attr.columns;
+                                       items[item_count].x = start_x + j * column_width;
+                                       items[item_count].y = y;
+                                       j +=  items[item_count].columns;
+                                       item_count++;
+                               }
+                               /* have we encountered a state change? */
+                               if (j < end_column) {
+                                       break;
+                               }
+fg_next_row:
+                               /* is this the last column, on the last row? */
+                               do {
+                                       do {
+                                               if (!--rows) {
+                                                       goto fg_draw;
+                                               }
+
+                                               /* restart on the next row */
+                                               row++;
+                                               y += row_height;
+                                               row_data = _vte_terminal_find_row_data(terminal, row);
+                                       } while (row_data == NULL);
+
+                                       /* Back up in case this is a
+                                        * multicolumn character, making the drawing
+                                        * area a little wider. */
+                                       j = start_column;
+                                       cell = _vte_row_data_get (row_data, j);
+                               } while (cell == NULL);
+                               while (cell->attr.fragment && j > 0) {
+                                       cell = _vte_row_data_get (row_data, --j);
+                               }
+                       } while (TRUE);
+fg_draw:
+                       /* Draw the cells. */
+                       vte_terminal_draw_cells(terminal,
+                                       items,
+                                       item_count,
+                                       fore, back, FALSE, FALSE,
+                                       bold, underline,
+                                       strikethrough, hilite, FALSE,
+                                       column_width, row_height);
+                       item_count = 1;
+                       /* We'll need to continue at the first cell which didn't
+                        * match the first one in this set. */
+                       i = j;
+                       if (!rows) {
+                               goto fg_out;
+                       }
+               } while (i < end_column);
+fg_skip_row:
+               row++;
+               y += row_height;
+       } while (--rows);
+fg_out:
+       return;
+}
+
+static void
+vte_terminal_expand_region (VteTerminal *terminal, GdkRegion *region, const GdkRectangle *area)
+{
+       VteScreen *screen;
+       int width, height;
+       int row, col, row_stop, col_stop;
+       VteRegionRectangle rect;
+
+       screen = terminal->pvt->screen;
+
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       /* increase the paint by one pixel on all sides to force the
+        * inclusion of neighbouring cells */
+       row = MAX(0, (area->y - terminal->pvt->inner_border.top - 1) / height);
+       row_stop = MIN(howmany(area->height + area->y - terminal->pvt->inner_border.top + 1, height),
+                      terminal->row_count);
+       if (row_stop <= row) {
+               return;
+       }
+       col = MAX(0, (area->x - terminal->pvt->inner_border.left - 1) / width);
+       col_stop = MIN(howmany(area->width + area->x - terminal->pvt->inner_border.left + 1, width),
+                      terminal->column_count);
+       if (col_stop <= col) {
+               return;
+       }
+
+       rect.x = col*width + terminal->pvt->inner_border.left;
+       rect.width = (col_stop - col) * width;
+
+       rect.y = row*height + terminal->pvt->inner_border.top;
+       rect.height = (row_stop - row)*height;
+
+       /* the rect must be cell aligned to avoid overlapping XY bands */
+       gdk_region_union_with_rect(region, &rect);
+
+       _vte_debug_print (VTE_DEBUG_UPDATES,
+                       "vte_terminal_expand_region"
+                       "       (%d,%d)x(%d,%d) pixels,"
+                       " (%d,%d)x(%d,%d) cells"
+                       " [(%d,%d)x(%d,%d) pixels]\n",
+                       area->x, area->y, area->width, area->height,
+                       col, row, col_stop - col, row_stop - row,
+                       rect.x, rect.y, rect.width, rect.height);
+}
+
+static void
+vte_terminal_paint_area (VteTerminal *terminal, const GdkRectangle *area)
+{
+       VteScreen *screen;
+       int width, height, delta;
+       int row, col, row_stop, col_stop;
+
+       screen = terminal->pvt->screen;
+
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       row = MAX(0, (area->y - terminal->pvt->inner_border.top) / height);
+       row_stop = MIN((area->height + area->y - terminal->pvt->inner_border.top) / height,
+                      terminal->row_count);
+       if (row_stop <= row) {
+               return;
+       }
+       col = MAX(0, (area->x - terminal->pvt->inner_border.left) / width);
+       col_stop = MIN((area->width + area->x - terminal->pvt->inner_border.left) / width,
+                      terminal->column_count);
+       if (col_stop <= col) {
+               return;
+       }
+       _vte_debug_print (VTE_DEBUG_UPDATES,
+                       "vte_terminal_paint_area"
+                       "       (%d,%d)x(%d,%d) pixels,"
+                       " (%d,%d)x(%d,%d) cells"
+                       " [(%d,%d)x(%d,%d) pixels]\n",
+                       area->x, area->y, area->width, area->height,
+                       col, row, col_stop - col, row_stop - row,
+                       col * width + terminal->pvt->inner_border.left,
+                       row * height + terminal->pvt->inner_border.top,
+                       (col_stop - col) * width,
+                       (row_stop - row) * height);
+
+       /* Now we're ready to draw the text.  Iterate over the rows we
+        * need to draw. */
+       delta = screen->scroll_delta;
+       vte_terminal_draw_rows(terminal,
+                             screen,
+                             row + delta, row_stop - row,
+                             col, col_stop - col,
+                             col * width,
+                             row * height,
+                             width,
+                             height);
+}
+
+static void
+vte_terminal_paint_cursor(VteTerminal *terminal)
+{
+       VteScreen *screen;
+       const VteCell *cell;
+       struct _vte_draw_text_request item;
+       int row, drow, col;
+       long width, height, delta, cursor_width;
+       guint fore, back;
+       int x, y;
+       gboolean blink, selected, focus;
+
+       if (!terminal->pvt->cursor_visible)
+               return;
+
+       screen = terminal->pvt->screen;
+       delta = screen->scroll_delta;
+       col = screen->cursor_current.col;
+       drow = screen->cursor_current.row;
+       row = drow - delta;
+       width = terminal->char_width;
+       height = terminal->char_height;
+
+       if ((CLAMP(col, 0, terminal->column_count - 1) != col) ||
+           (CLAMP(row, 0, terminal->row_count    - 1) != row))
+               return;
+
+       focus = terminal->pvt->has_focus;
+       blink = terminal->pvt->cursor_blink_state;
+
+       if (focus && !blink)
+               return;
+
+       /* Find the character "under" the cursor. */
+       cell = vte_terminal_find_charcell(terminal, col, drow);
+       while ((cell != NULL) && (cell->attr.fragment) && (col > 0)) {
+               col--;
+               cell = vte_terminal_find_charcell(terminal, col, drow);
+       }
+
+       /* Draw the cursor. */
+       item.c = (cell && cell->c) ? cell->c : ' ';
+       item.columns = cell ? cell->attr.columns : 1;
+       item.x = col * width;
+       item.y = row * height;
+       cursor_width = item.columns * width;
+       if (cell && cell->c != 0) {
+               gint cw = _vte_draw_get_char_width (terminal->pvt->draw,
+                               cell->c, cell->attr.columns, cell->attr.bold);
+               cursor_width = MAX(cursor_width, cw);
+       }
+
+       selected = vte_cell_is_selected(terminal, col, drow, NULL);
+
+       vte_terminal_determine_cursor_colors(terminal, cell, selected, &fore, &back);
+
+       x = item.x;
+       y = item.y;
+
+       switch (terminal->pvt->cursor_shape) {
+
+               case VTE_CURSOR_SHAPE_IBEAM: {
+                        int stem_width;
+
+                        stem_width = (int) (((float) height) * terminal->pvt->cursor_aspect_ratio + 0.5);
+                        stem_width = CLAMP (stem_width, VTE_LINE_WIDTH, cursor_width);
+                       
+                       vte_terminal_fill_rectangle(terminal, &terminal->pvt->palette[back],
+                                                    x, y, stem_width, height);
+                       break;
+                }
+
+               case VTE_CURSOR_SHAPE_UNDERLINE: {
+                        int line_height;
+
+                        line_height = (int) (((float) width) * terminal->pvt->cursor_aspect_ratio + 0.5);
+                        line_height = CLAMP (line_height, VTE_LINE_WIDTH, height);
+
+                       vte_terminal_fill_rectangle(terminal, &terminal->pvt->palette[back],
+                                                    x, y + height - line_height,
+                                                    cursor_width, line_height);
+                       break;
+                }
+
+               case VTE_CURSOR_SHAPE_BLOCK:
+
+                       if (focus) {
+                               /* just reverse the character under the cursor */
+                               vte_terminal_fill_rectangle (terminal,
+                                                            &terminal->pvt->palette[back],
+                                                            x, y,
+                                                            cursor_width, height);
+
+                               if (!vte_terminal_unichar_is_local_graphic(terminal, item.c, cell ? 
cell->attr.bold : FALSE) ||
+                                   !vte_terminal_draw_graphic(terminal,
+                                                              item.c,
+                                                              fore, back,
+                                                              TRUE,
+                                                              item.x,
+                                                              item.y,
+                                                              width,
+                                                              item.columns,
+                                                              height,
+                                                              cell ? cell->attr.bold : FALSE)) {
+                                       gboolean hilite = FALSE;
+                                       if (cell && terminal->pvt->show_match) {
+                                               hilite = vte_cell_is_between(col, row,
+                                                               terminal->pvt->match_start.col,
+                                                               terminal->pvt->match_start.row,
+                                                               terminal->pvt->match_end.col,
+                                                               terminal->pvt->match_end.row,
+                                                               TRUE);
+                                       }
+                                       if (cell && cell->c != 0 && cell->c != ' ') {
+                                               vte_terminal_draw_cells(terminal,
+                                                               &item, 1,
+                                                               fore, back, TRUE, FALSE,
+                                                               cell->attr.bold,
+                                                               cell->attr.underline,
+                                                               cell->attr.strikethrough,
+                                                               hilite,
+                                                               FALSE,
+                                                               width,
+                                                               height);
+                                       }
+                               }
+
+                       } else {
+                               /* draw a box around the character */
+
+                               vte_terminal_draw_rectangle (terminal,
+                                                           &terminal->pvt->palette[back],
+                                                            x - VTE_LINE_WIDTH,
+                                                            y - VTE_LINE_WIDTH,
+                                                            cursor_width + 2*VTE_LINE_WIDTH,
+                                                            height + 2*VTE_LINE_WIDTH);
+                       }
+
+                       break;
+       }
+}
+
+static void
+vte_terminal_paint_im_preedit_string(VteTerminal *terminal)
+{
+       VteScreen *screen;
+       int row, drow, col, columns;
+       long width, height, ascent, descent, delta;
+       int i, len;
+       guint fore, back;
+
+       if (!terminal->pvt->im_preedit)
+               return;
+
+       /* Get going. */
+       screen = terminal->pvt->screen;
+
+       /* Keep local copies of rendering information. */
+       width = terminal->char_width;
+       height = terminal->char_height;
+       ascent = terminal->char_ascent;
+       descent = terminal->char_descent;
+       delta = screen->scroll_delta;
+
+       drow = screen->cursor_current.row;
+       row = screen->cursor_current.row - delta;
+
+       /* Find out how many columns the pre-edit string takes up. */
+       columns = vte_terminal_preedit_width(terminal, FALSE);
+       len = vte_terminal_preedit_length(terminal, FALSE);
+
+       /* If the pre-edit string won't fit on the screen if we start
+        * drawing it at the cursor's position, move it left. */
+       col = screen->cursor_current.col;
+       if (col + columns > terminal->column_count) {
+               col = MAX(0, terminal->column_count - columns);
+       }
+
+       /* Draw the preedit string, boxed. */
+       if (len > 0) {
+               struct _vte_draw_text_request *items;
+               const char *preedit = terminal->pvt->im_preedit;
+               int preedit_cursor;
+
+               items = g_new(struct _vte_draw_text_request, len);
+               for (i = columns = 0; i < len; i++) {
+                       items[i].c = g_utf8_get_char(preedit);
+                       items[i].columns = _vte_iso2022_unichar_width(terminal->pvt->iso2022,
+                                                                     items[i].c);
+                       items[i].x = (col + columns) * width;
+                       items[i].y = row * height;
+                       columns += items[i].columns;
+                       preedit = g_utf8_next_char(preedit);
+               }
+               _vte_draw_clear(terminal->pvt->draw,
+                               col * width + terminal->pvt->inner_border.left,
+                               row * height + terminal->pvt->inner_border.top,
+                               width * columns,
+                               height);
+               fore = screen->defaults.attr.fore;
+               back = screen->defaults.attr.back;
+               vte_terminal_draw_cells_with_attributes(terminal,
+                                                       items, len,
+                                                       terminal->pvt->im_preedit_attrs,
+                                                       TRUE,
+                                                       width, height);
+               preedit_cursor = terminal->pvt->im_preedit_cursor;
+               if (preedit_cursor >= 0 && preedit_cursor < len) {
+                       /* Cursored letter in reverse. */
+                       vte_terminal_draw_cells(terminal,
+                                               &items[preedit_cursor], 1,
+                                               back, fore, TRUE, TRUE,
+                                               FALSE,
+                                               FALSE,
+                                               FALSE,
+                                               FALSE,
+                                               TRUE,
+                                               width, height);
+               }
+               g_free(items);
+       }
+}
+
+/* Draw the widget. */
+static void
+vte_terminal_paint(GtkWidget *widget, GdkRegion *region)
+{
+       VteTerminal *terminal;
+       GtkAllocation allocation;
+
+       _vte_debug_print(VTE_DEBUG_LIFECYCLE, "vte_terminal_paint()\n");
+       _vte_debug_print(VTE_DEBUG_WORK, "=");
+
+       terminal = VTE_TERMINAL(widget);
+       gtk_widget_get_allocation (widget, &allocation);
+
+       /* Designate the start of the drawing operation and clear the area. */
+       _vte_draw_start(terminal->pvt->draw);
+       if (terminal->pvt->bg_transparent) {
+               int x, y;
+               gdk_window_get_origin (gtk_widget_get_window (widget), &x, &y);
+               _vte_draw_set_background_scroll(terminal->pvt->draw, x, y);
+       } else {
+               if (terminal->pvt->scroll_background) {
+                       _vte_draw_set_background_scroll(terminal->pvt->draw,
+                                                       0,
+                                                       terminal->pvt->screen->scroll_delta *
+                                                       terminal->char_height);
+               } else {
+                       _vte_draw_set_background_scroll(terminal->pvt->draw, 0, 0);
+               }
+       }
+
+       _VTE_DEBUG_IF (VTE_DEBUG_UPDATES) {
+               VteRegionRectangle clip;
+               gdk_region_get_clipbox (region, &clip);
+               g_printerr ("vte_terminal_paint"
+                               "       (%d,%d)x(%d,%d) pixels\n",
+                               clip.x, clip.y, clip.width, clip.height);
+       }
+
+       _vte_draw_clip(terminal->pvt->draw, region);
+       gtk_widget_get_allocation(&terminal->widget, &allocation);
+       _vte_draw_clear (terminal->pvt->draw, 0, 0,
+                        allocation.width, allocation.height);
+
+       /* Calculate the bounding rectangle. */
+       {
+               VteRegionRectangle *rectangles;
+               gint n, n_rectangles;
+               gdk_region_get_rectangles (region, &rectangles, &n_rectangles);
+               /* don't bother to enlarge an invalidate all */
+               if (!(n_rectangles == 1
+                     && rectangles[0].width == allocation.width
+                     && rectangles[0].height == allocation.height)) {
+                       GdkRegion *rr = gdk_region_new ();
+                       /* convert pixels into whole cells */
+                       for (n = 0; n < n_rectangles; n++) {
+                               vte_terminal_expand_region (terminal, rr, rectangles + n);
+                       }
+                       g_free (rectangles);
+                       gdk_region_get_rectangles (rr, &rectangles, &n_rectangles);
+                       gdk_region_destroy (rr);
+               }
+
+               /* and now paint them */
+               for (n = 0; n < n_rectangles; n++) {
+                       vte_terminal_paint_area (terminal, rectangles + n);
+               }
+               g_free (rectangles);
+       }
+
+       vte_terminal_paint_cursor(terminal);
+
+       vte_terminal_paint_im_preedit_string(terminal);
+
+       /* Done with various structures. */
+       _vte_draw_end(terminal->pvt->draw);
+}
+
+/* Handle an expose event by painting the exposed area. */
+#if GTK_CHECK_VERSION (2, 90, 8)
+
+static cairo_region_t *
+vte_cairo_get_clip_region (cairo_t *cr)
+{
+        cairo_rectangle_list_t *list;
+        cairo_region_t *region;
+        int i;
+
+        list = cairo_copy_clip_rectangle_list (cr);
+        if (list->status == CAIRO_STATUS_CLIP_NOT_REPRESENTABLE) {
+                cairo_rectangle_int_t clip_rect;
+
+                cairo_rectangle_list_destroy (list);
+
+                if (!gdk_cairo_get_clip_rectangle (cr, &clip_rect))
+                        return NULL;
+                return cairo_region_create_rectangle (&clip_rect);
+        }
+
+
+        region = cairo_region_create ();
+        for (i = list->num_rectangles - 1; i >= 0; --i) {
+                cairo_rectangle_t *rect = &list->rectangles[i];
+                cairo_rectangle_int_t clip_rect;
+
+                clip_rect.x = floor (rect->x);
+                clip_rect.y = floor (rect->y);
+                clip_rect.width = ceil (rect->x + rect->width) - clip_rect.x;
+                clip_rect.height = ceil (rect->y + rect->height) - clip_rect.y;
+
+                if (cairo_region_union_rectangle (region, &clip_rect) != CAIRO_STATUS_SUCCESS) {
+                        cairo_region_destroy (region);
+                        region = NULL;
+                        break;
+                }
+        }
+
+        cairo_rectangle_list_destroy (list);
+        return region;
+}
+
+static gboolean
+vte_terminal_draw(GtkWidget *widget,
+                  cairo_t *cr)
+{
+        VteTerminal *terminal = VTE_TERMINAL (widget);
+        cairo_rectangle_int_t clip_rect;
+        cairo_region_t *region;
+
+        if (!gdk_cairo_get_clip_rectangle (cr, &clip_rect))
+                return FALSE;
+
+        _vte_debug_print (VTE_DEBUG_WORK, "+");
+        _vte_debug_print (VTE_DEBUG_EVENTS, "Draw (%d,%d)x(%d,%d)\n",
+                          clip_rect.x, clip_rect.y,
+                          clip_rect.width, clip_rect.height);
+
+        region = vte_cairo_get_clip_region (cr);
+        if (region == NULL)
+                return FALSE;
+
+        vte_terminal_paint(widget, region);
+        cairo_region_destroy (region);
+
+        terminal->pvt->invalidated_all = FALSE;
+
+        return FALSE;
+}
+
+#else
+
+static gboolean
+vte_terminal_expose(GtkWidget *widget,
+                    GdkEventExpose *event)
+{
+       VteTerminal *terminal = VTE_TERMINAL (widget);
+       GtkAllocation allocation;
+
+       /* Beware the out of order events -
+        *   do not even think about skipping exposes! */
+       _vte_debug_print (VTE_DEBUG_WORK, "+");
+       _vte_debug_print (VTE_DEBUG_EVENTS, "Expose (%d,%d)x(%d,%d)\n",
+                       event->area.x, event->area.y,
+                       event->area.width, event->area.height);
+       if (terminal->pvt->active != NULL &&
+                       update_timeout_tag != 0 &&
+                       !in_update_timeout) {
+               /* fix up a race condition where we schedule a delayed update
+                * after an 'immediate' invalidate all */
+               if (terminal->pvt->invalidated_all &&
+                               terminal->pvt->update_regions == NULL) {
+                       terminal->pvt->invalidated_all = FALSE;
+               }
+               /* if we expect to redraw the widget soon,
+                * just add this event to the list */
+               if (!terminal->pvt->invalidated_all) {
+                       gtk_widget_get_allocation (widget, &allocation);
+                       if (event->area.width >= allocation.width &&
+                           event->area.height >= allocation.height) {
+                               _vte_invalidate_all (terminal);
+                       } else {
+                               terminal->pvt->update_regions =
+                                       g_slist_prepend (terminal->pvt->update_regions,
+                                                       gdk_region_copy (event->region));
+                       }
+               }
+       } else {
+               vte_terminal_paint(widget, event->region);
+               terminal->pvt->invalidated_all = FALSE;
+       }
+       return FALSE;
+}
+
+#endif /* GTK 3.0 */
+
+/* Handle a scroll event. */
+static gboolean
+vte_terminal_scroll(GtkWidget *widget, GdkEventScroll *event)
+{
+       GtkAdjustment *adj;
+       VteTerminal *terminal;
+       gdouble v;
+       int button;
+
+       terminal = VTE_TERMINAL(widget);
+
+       vte_terminal_read_modifiers (terminal, (GdkEvent*) event);
+
+       _VTE_DEBUG_IF(VTE_DEBUG_EVENTS)
+               switch (event->direction) {
+               case GDK_SCROLL_UP:
+                       g_printerr("Scroll up.\n");
+                       break;
+               case GDK_SCROLL_DOWN:
+                       g_printerr("Scroll down.\n");
+                       break;
+               default:
+                       break;
+               }
+
+       /* If we're running a mouse-aware application, map the scroll event
+        * to a button press on buttons four and five. */
+       if (terminal->pvt->mouse_tracking_mode) {
+               switch (event->direction) {
+               case GDK_SCROLL_UP:
+                       button = 4;
+                       break;
+               case GDK_SCROLL_DOWN:
+                       button = 5;
+                       break;
+               default:
+                       button = 0;
+                       break;
+               }
+               if (button != 0) {
+                       /* Encode the parameters and send them to the app. */
+                       vte_terminal_send_mouse_button_internal(terminal,
+                                                               button,
+                                                               event->x,
+                                                               event->y);
+               }
+               return TRUE;
+       }
+
+       adj = terminal->adjustment;
+       v = MAX (1., ceil (gtk_adjustment_get_page_increment (adj) / 10.));
+       switch (event->direction) {
+       case GDK_SCROLL_UP:
+               v = -v;
+               break;
+       case GDK_SCROLL_DOWN:
+               break;
+       default:
+               return FALSE;
+       }
+
+       if (terminal->pvt->screen == &terminal->pvt->alternate_screen ||
+               terminal->pvt->normal_screen.scrolling_restricted) {
+               char *normal;
+               gssize normal_length;
+               const gchar *special;
+               gint i, cnt = v;
+
+               /* In the alternate screen there is no scrolling,
+                * so fake a few cursor keystrokes. */
+
+               _vte_keymap_map (
+                               cnt > 0 ? GDK_KEY (Down) : GDK_KEY (Up),
+                               terminal->pvt->modifiers,
+                               terminal->pvt->sun_fkey_mode,
+                               terminal->pvt->hp_fkey_mode,
+                               terminal->pvt->legacy_fkey_mode,
+                               terminal->pvt->vt220_fkey_mode,
+                               terminal->pvt->cursor_mode == VTE_KEYMODE_APPLICATION,
+                               terminal->pvt->keypad_mode == VTE_KEYMODE_APPLICATION,
+                               terminal->pvt->termcap,
+                               terminal->pvt->emulation ?
+                               terminal->pvt->emulation : vte_terminal_get_default_emulation(terminal),
+                               &normal,
+                               &normal_length,
+                               &special);
+               if (cnt < 0)
+                       cnt = -cnt;
+               for (i = 0; i < cnt; i++) {
+                       vte_terminal_feed_child_using_modes (terminal,
+                                       normal, normal_length);
+               }
+               g_free (normal);
+       } else {
+               /* Perform a history scroll. */
+               v += terminal->pvt->screen->scroll_delta;
+               vte_terminal_queue_adjustment_value_changed_clamped (terminal, v);
+       }
+
+       return TRUE;
+}
+
+/* Create a new accessible object associated with ourselves, and return
+ * it to the caller. */
+static AtkObject *
+vte_terminal_get_accessible(GtkWidget *widget)
+{
+       VteTerminal *terminal;
+       static gboolean first_time = TRUE;
+
+       terminal = VTE_TERMINAL(widget);
+
+       if (first_time) {
+               AtkObjectFactory *factory;
+               AtkRegistry *registry;
+               GType derived_type;
+               GType derived_atk_type;
+
+               /*
+                * Figure out whether accessibility is enabled by looking at the
+                * type of the accessible object which would be created for
+                * the parent type of VteTerminal.
+                */
+               derived_type = g_type_parent (VTE_TYPE_TERMINAL);
+
+               registry = atk_get_default_registry ();
+               factory = atk_registry_get_factory (registry,
+                                                   derived_type);
+
+               derived_atk_type = atk_object_factory_get_accessible_type (factory);
+               if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) {
+                       atk_registry_set_factory_type (registry,
+                                                      VTE_TYPE_TERMINAL,
+                                                      vte_terminal_accessible_factory_get_type ());
+               }
+               first_time = FALSE;
+       }
+
+       return GTK_WIDGET_CLASS (vte_terminal_parent_class)->get_accessible (widget);
+}
+
+static void
+vte_terminal_get_property (GObject *object,
+                           guint prop_id,
+                           GValue *value,
+                           GParamSpec *pspec)
+{
+        VteTerminal *terminal = VTE_TERMINAL (object);
+        VteTerminalPrivate *pvt = terminal->pvt;
+
+       switch (prop_id)
+       {
+#if GTK_CHECK_VERSION (2, 91, 2)
+                case PROP_HADJUSTMENT:
+                        g_value_set_object (value, pvt->hadjustment);
+                        break;
+                case PROP_VADJUSTMENT:
+                        g_value_set_object (value, terminal->adjustment);
+                        break;
+                case PROP_HSCROLL_POLICY:
+                        g_value_set_enum (value, pvt->hscroll_policy);
+                        break;
+                case PROP_VSCROLL_POLICY:
+                        g_value_set_enum (value, pvt->vscroll_policy);
+                        break;
+#endif
+                case PROP_ALLOW_BOLD:
+                        g_value_set_boolean (value, vte_terminal_get_allow_bold (terminal));
+                        break;
+                case PROP_AUDIBLE_BELL:
+                        g_value_set_boolean (value, vte_terminal_get_audible_bell (terminal));
+                        break;
+                case PROP_BACKGROUND_IMAGE_FILE:
+                        g_value_set_string (value, pvt->bg_file);
+                        break;
+                case PROP_BACKGROUND_IMAGE_PIXBUF:
+                        g_value_set_object (value, pvt->bg_pixbuf);
+                        break;
+                case PROP_BACKGROUND_OPACITY:
+                        g_value_set_double (value, (double) pvt->bg_opacity / (double) G_MAXUINT16);
+                        break;
+                case PROP_BACKGROUND_SATURATION:
+                        g_value_set_double (value, (double) pvt->bg_saturation / (double) 
VTE_SATURATION_MAX);
+                        break;
+                case PROP_BACKGROUND_TINT_COLOR:
+                        g_value_set_boxed (value, &pvt->bg_tint_color);
+                        break;
+                case PROP_BACKGROUND_TRANSPARENT:
+                        g_value_set_boolean (value, pvt->bg_transparent);
+                        break;
+                case PROP_BACKSPACE_BINDING:
+                        g_value_set_enum (value, pvt->backspace_binding);
+                        break;
+                case PROP_CURSOR_BLINK_MODE:
+                        g_value_set_enum (value, vte_terminal_get_cursor_blink_mode (terminal));
+                        break;
+                case PROP_CURSOR_SHAPE:
+                        g_value_set_enum (value, vte_terminal_get_cursor_shape (terminal));
+                        break;
+                case PROP_DELETE_BINDING:
+                        g_value_set_enum (value, pvt->delete_binding);
+                        break;
+                case PROP_EMULATION:
+                        g_value_set_string (value, vte_terminal_get_emulation (terminal));
+                        break;
+                case PROP_ENCODING:
+                        g_value_set_string (value, vte_terminal_get_encoding (terminal));
+                        break;
+                case PROP_FONT_DESC:
+                        g_value_set_boxed (value, vte_terminal_get_font (terminal));
+                        break;
+                case PROP_ICON_TITLE:
+                        g_value_set_string (value, vte_terminal_get_icon_title (terminal));
+                        break;
+                case PROP_MOUSE_POINTER_AUTOHIDE:
+                        g_value_set_boolean (value, vte_terminal_get_mouse_autohide (terminal));
+                        break;
+                case PROP_PTY:
+                        g_value_set_int (value, pvt->pty != NULL ? vte_pty_get_fd(pvt->pty) : -1);
+                        break;
+                case PROP_PTY_OBJECT:
+                        g_value_set_object (value, vte_terminal_get_pty_object(terminal));
+                        break;
+                case PROP_SCROLL_BACKGROUND:
+                        g_value_set_boolean (value, pvt->scroll_background);
+                        break;
+                case PROP_SCROLLBACK_LINES:
+                        g_value_set_uint (value, pvt->scrollback_lines);
+                        break;
+                case PROP_SCROLL_ON_KEYSTROKE:
+                        g_value_set_boolean (value, pvt->scroll_on_keystroke);
+                        break;
+                case PROP_SCROLL_ON_OUTPUT:
+                        g_value_set_boolean (value, pvt->scroll_on_output);
+                        break;
+                case PROP_WINDOW_TITLE:
+                        g_value_set_string (value, vte_terminal_get_window_title (terminal));
+                        break;
+                case PROP_WORD_CHARS:
+                        g_value_set_string (value, NULL /* FIXME */);
+                        break;
+                case PROP_VISIBLE_BELL:
+                        g_value_set_boolean (value, vte_terminal_get_visible_bell (terminal));
+                        break;
+
+               default:
+                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                       return;
+        }
+}
+
+static void
+vte_terminal_set_property (GObject *object,
+                           guint prop_id,
+                           const GValue *value,
+                           GParamSpec *pspec)
+{
+        VteTerminal *terminal = VTE_TERMINAL (object);
+        VteTerminalPrivate *pvt = terminal->pvt;
+
+       switch (prop_id)
+       {
+#if GTK_CHECK_VERSION (2, 91, 2)
+                case PROP_HADJUSTMENT:
+                        vte_terminal_set_hadjustment (terminal, g_value_get_object (value));
+                        break;
+                case PROP_VADJUSTMENT:
+                        vte_terminal_set_vadjustment (terminal, g_value_get_object (value));
+                        break;
+                case PROP_HSCROLL_POLICY:
+                        pvt->hscroll_policy = g_value_get_enum (value);
+                        gtk_widget_queue_resize_no_redraw (GTK_WIDGET (terminal));
+                        break;
+                case PROP_VSCROLL_POLICY:
+                        pvt->vscroll_policy = g_value_get_enum (value);
+                        gtk_widget_queue_resize_no_redraw (GTK_WIDGET (terminal));
+                        break;
+#endif
+                case PROP_ALLOW_BOLD:
+                        vte_terminal_set_allow_bold (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_AUDIBLE_BELL:
+                        vte_terminal_set_audible_bell (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_BACKGROUND_IMAGE_FILE:
+                        vte_terminal_set_background_image_file (terminal, g_value_get_string (value));
+                        break;
+                case PROP_BACKGROUND_IMAGE_PIXBUF:
+                        vte_terminal_set_background_image (terminal, g_value_get_object (value));
+                        break;
+                case PROP_BACKGROUND_OPACITY:
+                        vte_terminal_set_opacity (terminal, g_value_get_double (value) * (double) 
G_MAXUINT16);
+                        break;
+                case PROP_BACKGROUND_SATURATION:
+                        vte_terminal_set_background_saturation (terminal, g_value_get_double (value));
+                        break;
+                case PROP_BACKGROUND_TINT_COLOR:
+                        vte_terminal_set_background_tint_color (terminal, g_value_get_boxed (value));
+                        break;
+                case PROP_BACKGROUND_TRANSPARENT:
+                        vte_terminal_set_background_transparent (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_BACKSPACE_BINDING:
+                        vte_terminal_set_backspace_binding (terminal, g_value_get_enum (value));
+                        break;
+                case PROP_CURSOR_BLINK_MODE:
+                        vte_terminal_set_cursor_blink_mode (terminal, g_value_get_enum (value));
+                        break;
+                case PROP_CURSOR_SHAPE:
+                        vte_terminal_set_cursor_shape (terminal, g_value_get_enum (value));
+                        break;
+                case PROP_DELETE_BINDING:
+                        vte_terminal_set_delete_binding (terminal, g_value_get_enum (value));
+                        break;
+                case PROP_EMULATION:
+                        vte_terminal_set_emulation (terminal, g_value_get_string (value));
+                        break;
+                case PROP_ENCODING:
+                        vte_terminal_set_encoding (terminal, g_value_get_string (value));
+                        break;
+                case PROP_FONT_DESC:
+                        vte_terminal_set_font_full_internal (terminal, g_value_get_boxed (value), 
pvt->fontantialias);
+                        break;
+                case PROP_MOUSE_POINTER_AUTOHIDE:
+                        vte_terminal_set_mouse_autohide (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_PTY:
+                        vte_terminal_set_pty (terminal, g_value_get_int (value));
+                        break;
+                case PROP_PTY_OBJECT:
+                        vte_terminal_set_pty_object (terminal, g_value_get_object (value));
+                        break;
+                case PROP_SCROLL_BACKGROUND:
+                        vte_terminal_set_scroll_background (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_SCROLLBACK_LINES:
+                        vte_terminal_set_scrollback_lines (terminal, g_value_get_uint (value));
+                        break;
+                case PROP_SCROLL_ON_KEYSTROKE:
+                        vte_terminal_set_scroll_on_keystroke(terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_SCROLL_ON_OUTPUT:
+                        vte_terminal_set_scroll_on_output (terminal, g_value_get_boolean (value));
+                        break;
+                case PROP_WORD_CHARS:
+                        vte_terminal_set_word_chars (terminal, g_value_get_string (value));
+                        break;
+                case PROP_VISIBLE_BELL:
+                        vte_terminal_set_visible_bell (terminal, g_value_get_boolean (value));
+                        break;
+
+                /* Not writable */
+                case PROP_ICON_TITLE:
+                case PROP_WINDOW_TITLE:
+                        g_assert_not_reached ();
+                        break;
+
+               default:
+                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                       return;
+       }
+}
+
+/* Initialize methods. */
+static void
+vte_terminal_class_init(VteTerminalClass *klass)
+{
+       GObjectClass *gobject_class;
+       GtkWidgetClass *widget_class;
+       GtkBindingSet  *binding_set;
+
+#ifdef VTE_DEBUG
+       {
+                _vte_debug_init();
+               _vte_debug_print(VTE_DEBUG_LIFECYCLE,
+                               "vte_terminal_class_init()\n");
+               /* print out the legend */
+               _vte_debug_print(VTE_DEBUG_WORK,
+                       "Debugging work flow (top input to bottom output):\n"
+                                       "  .  _vte_terminal_process_incoming\n"
+                                       "  <  start process_timeout\n"
+                                       "  {[ start update_timeout  [ => rate limited\n"
+                                       "  T  start of terminal in update_timeout\n"
+                                       "  (  start _vte_terminal_process_incoming\n"
+                                       "  ?  _vte_invalidate_cells (call)\n"
+                                       "  !  _vte_invalidate_cells (dirty)\n"
+                                       "  *  _vte_invalidate_all\n"
+                                       "  )  end _vte_terminal_process_incoming\n"
+                                       "  -  gdk_window_process_updates\n"
+                                       "  +  vte_terminal_expose\n"
+                                       "  =  vte_terminal_paint\n"
+                                       "  ]} end update_timeout\n"
+                                       "  >  end process_timeout\n");
+       }
+#endif
+
+       bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+#ifdef HAVE_DECL_BIND_TEXTDOMAIN_CODESET
+       bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+#endif
+
+       g_type_class_add_private(klass, sizeof (VteTerminalPrivate));
+
+       gobject_class = G_OBJECT_CLASS(klass);
+       widget_class = GTK_WIDGET_CLASS(klass);
+
+       /* Override some of the default handlers. */
+       gobject_class->finalize = vte_terminal_finalize;
+        gobject_class->get_property = vte_terminal_get_property;
+        gobject_class->set_property = vte_terminal_set_property;
+       widget_class->realize = vte_terminal_realize;
+       widget_class->scroll_event = vte_terminal_scroll;
+#if GTK_CHECK_VERSION (2, 90, 8)
+        widget_class->draw = vte_terminal_draw;
+#else
+       widget_class->expose_event = vte_terminal_expose;
+#endif
+       widget_class->key_press_event = vte_terminal_key_press;
+       widget_class->key_release_event = vte_terminal_key_release;
+       widget_class->button_press_event = vte_terminal_button_press;
+       widget_class->button_release_event = vte_terminal_button_release;
+       widget_class->motion_notify_event = vte_terminal_motion_notify;
+       widget_class->enter_notify_event = vte_terminal_enter;
+       widget_class->leave_notify_event = vte_terminal_leave;
+       widget_class->focus_in_event = vte_terminal_focus_in;
+       widget_class->focus_out_event = vte_terminal_focus_out;
+       widget_class->visibility_notify_event = vte_terminal_visibility_notify;
+       widget_class->unrealize = vte_terminal_unrealize;
+       widget_class->style_set = vte_terminal_style_set;
+#if GTK_CHECK_VERSION (2, 91, 0)
+       widget_class->get_preferred_width = vte_terminal_get_preferred_width;
+       widget_class->get_preferred_height = vte_terminal_get_preferred_height;
+#else
+       widget_class->size_request = vte_terminal_size_request;
+#endif
+       widget_class->size_allocate = vte_terminal_size_allocate;
+       widget_class->get_accessible = vte_terminal_get_accessible;
+        widget_class->screen_changed = vte_terminal_screen_changed;
+
+       /* Initialize default handlers. */
+       klass->eof = NULL;
+       klass->child_exited = NULL;
+       klass->emulation_changed = NULL;
+       klass->encoding_changed = NULL;
+       klass->char_size_changed = NULL;
+       klass->window_title_changed = NULL;
+       klass->icon_title_changed = NULL;
+       klass->selection_changed = NULL;
+       klass->contents_changed = NULL;
+       klass->cursor_moved = NULL;
+       klass->status_line_changed = NULL;
+       klass->commit = NULL;
+
+       klass->deiconify_window = NULL;
+       klass->iconify_window = NULL;
+       klass->raise_window = NULL;
+       klass->lower_window = NULL;
+       klass->refresh_window = NULL;
+       klass->restore_window = NULL;
+       klass->maximize_window = NULL;
+       klass->resize_window = NULL;
+       klass->move_window = NULL;
+
+       klass->increase_font_size = NULL;
+       klass->decrease_font_size = NULL;
+
+       klass->text_modified = NULL;
+       klass->text_inserted = NULL;
+       klass->text_deleted = NULL;
+       klass->text_scrolled = NULL;
+
+       klass->copy_clipboard = vte_terminal_real_copy_clipboard;
+       klass->paste_clipboard = vte_terminal_real_paste_clipboard;
+
+        klass->beep = NULL;
+
+#if GTK_CHECK_VERSION (2, 91, 2)
+        /* GtkScrollable interface properties */
+        g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, "hadjustment");
+        g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, "vadjustment");
+        g_object_class_override_property (gobject_class, PROP_HSCROLL_POLICY, "hscroll-policy");
+        g_object_class_override_property (gobject_class, PROP_VSCROLL_POLICY, "vscroll-policy");
+
+#else
+
+        klass->set_scroll_adjustments = vte_terminal_set_scroll_adjustments;
+
+        /**
+         * VteTerminal::set-scroll-adjustments:
+         * @vteterminal: the object which received the signal
+         * @horizontal: (allow-none): the horizontal #GtkAdjustment (unused in #VteTerminal)
+         * @vertical: (allow-none): the vertical #GtkAdjustment
+         *
+         * Set the scroll adjustments for the terminal. Usually scrolled containers
+         * like #GtkScrolledWindow will emit this signal to connect two instances
+         * of #GtkScrollbar to the scroll directions of the #VteTerminal.
+         *
+         * Since: 0.17.1
+         */
+       widget_class->set_scroll_adjustments_signal =
+               g_signal_new(I_("set-scroll-adjustments"),
+                            G_TYPE_FROM_CLASS (klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET (VteTerminalClass, set_scroll_adjustments),
+                            NULL, NULL,
+                            _vte_marshal_VOID__OBJECT_OBJECT,
+                            G_TYPE_NONE, 2,
+                            GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
+
+#endif
+
+       /* Register some signals of our own. */
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+#define OBSOLETE_SIGNAL(str)
+#else
+#define OBSOLETE_SIGNAL(str) str
+#endif
+
+        /**
+         * VteTerminal::eof:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted when the terminal receives an end-of-file from a child which
+         * is running in the terminal.  This signal is frequently (but not
+         * always) emitted with a #VteTerminal::child-exited signal.
+         */
+        OBSOLETE_SIGNAL (klass->eof_signal =)
+                g_signal_new(I_("eof"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, eof),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::child-exited:
+         * @vteterminal: the object which received the signal
+         *
+         * This signal is emitted when the terminal detects that a child started
+         * using vte_terminal_fork_command() has exited.
+         */
+        OBSOLETE_SIGNAL (klass->child_exited_signal =)
+                g_signal_new(I_("child-exited"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, child_exited),
+                            NULL,
+                            NULL,
+                            g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::window-title-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted when the terminal's %window_title field is modified.
+         */
+        OBSOLETE_SIGNAL (klass->window_title_changed_signal =)
+                g_signal_new(I_("window-title-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, window_title_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::icon-title-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted when the terminal's %icon_title field is modified.
+         */
+        OBSOLETE_SIGNAL (klass->icon_title_changed_signal =)
+                g_signal_new(I_("icon-title-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, icon_title_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::encoding-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the terminal's current encoding has changed, either
+         * as a result of receiving a control sequence which toggled between the
+         * local and UTF-8 encodings, or at the parent application's request.
+         */
+        OBSOLETE_SIGNAL (klass->encoding_changed_signal =)
+                g_signal_new(I_("encoding-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, encoding_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::commit:
+         * @vteterminal: the object which received the signal
+         * @text: a string of text
+         * @size: the length of that string of text
+         *
+         * Emitted whenever the terminal receives input from the user and
+         * prepares to send it to the child process.  The signal is emitted even
+         * when there is no child process.
+         */
+        OBSOLETE_SIGNAL (klass->commit_signal =)
+                g_signal_new(I_("commit"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, commit),
+                            NULL,
+                            NULL,
+                            _vte_marshal_VOID__STRING_UINT,
+                            G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_UINT);
+
+        /**
+         * VteTerminal::emulation-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the terminal's emulation changes, only possible at
+         * the parent application's request.
+         */
+        OBSOLETE_SIGNAL (klass->emulation_changed_signal =)
+                g_signal_new(I_("emulation-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, emulation_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::char-size-changed:
+         * @vteterminal: the object which received the signal
+         * @width: the new character cell width
+         * @height: the new character cell height
+         *
+         * Emitted whenever selection of a new font causes the values of the
+         * %char_width or %char_height fields to change.
+         */
+        OBSOLETE_SIGNAL (klass->char_size_changed_signal =)
+                g_signal_new(I_("char-size-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, char_size_changed),
+                            NULL,
+                            NULL,
+                            _vte_marshal_VOID__UINT_UINT,
+                            G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
+
+        /**
+         * VteTerminal::selection-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the contents of terminal's selection changes.
+         */
+        OBSOLETE_SIGNAL (klass->selection_changed_signal =)
+                g_signal_new (I_("selection-changed"),
+                             G_OBJECT_CLASS_TYPE(klass),
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET(VteTerminalClass, selection_changed),
+                             NULL,
+                             NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::contents-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the visible appearance of the terminal has changed.
+         * Used primarily by #VteTerminalAccessible.
+         */
+        OBSOLETE_SIGNAL (klass->contents_changed_signal =)
+                g_signal_new(I_("contents-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, contents_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::cursor-moved:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the cursor moves to a new character cell.  Used
+         * primarily by #VteTerminalAccessible.
+         */
+        OBSOLETE_SIGNAL (klass->cursor_moved_signal =)
+                g_signal_new(I_("cursor-moved"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, cursor_moved),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::deiconify-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->deiconify_window_signal =)
+                g_signal_new(I_("deiconify-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, deiconify_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::iconify-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->iconify_window_signal =)
+                g_signal_new(I_("iconify-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, iconify_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::raise-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->raise_window_signal =)
+                g_signal_new(I_("raise-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, raise_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::lower-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->lower_window_signal =)
+                g_signal_new(I_("lower-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, lower_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::refresh-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->refresh_window_signal =)
+                g_signal_new(I_("refresh-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, refresh_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::restore-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->restore_window_signal =)
+                g_signal_new(I_("restore-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, restore_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::maximize-window:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->maximize_window_signal =)
+                g_signal_new(I_("maximize-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, maximize_window),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::resize-window:
+         * @vteterminal: the object which received the signal
+         * @width: the desired width in pixels, including padding
+         * @height: the desired height in pixels, including padding
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->resize_window_signal =)
+                g_signal_new(I_("resize-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, resize_window),
+                            NULL,
+                            NULL,
+                            _vte_marshal_VOID__UINT_UINT,
+                            G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
+
+        /**
+         * VteTerminal::move-window:
+         * @vteterminal: the object which received the signal
+         * @x: the terminal's desired location, X coordinate
+         * @y: the terminal's desired location, Y coordinate
+         *
+         * Emitted at the child application's request.
+         */
+        OBSOLETE_SIGNAL (klass->move_window_signal =)
+                g_signal_new(I_("move-window"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, move_window),
+                            NULL,
+                            NULL,
+                            _vte_marshal_VOID__UINT_UINT,
+                            G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
+
+        /**
+         * VteTerminal::status-line-changed:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever the contents of the status line are modified or
+         * cleared.
+         */
+        OBSOLETE_SIGNAL (klass->status_line_changed_signal =)
+                g_signal_new(I_("status-line-changed"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, status_line_changed),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::increase-font-size:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted when the user hits the '+' key while holding the Control key.
+         */
+        OBSOLETE_SIGNAL (klass->increase_font_size_signal =)
+                g_signal_new(I_("increase-font-size"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, increase_font_size),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::decrease-font-size:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted when the user hits the '-' key while holding the Control key.
+         */
+        OBSOLETE_SIGNAL (klass->decrease_font_size_signal =)
+                g_signal_new(I_("decrease-font-size"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, decrease_font_size),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::text-modified:
+         * @vteterminal: the object which received the signal
+         *
+         * An internal signal used for communication between the terminal and
+         * its accessibility peer. May not be emitted under certain
+         * circumstances.
+         */
+        OBSOLETE_SIGNAL (klass->text_modified_signal =)
+                g_signal_new(I_("text-modified"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, text_modified),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::text-inserted:
+         * @vteterminal: the object which received the signal
+         *
+         * An internal signal used for communication between the terminal and
+         * its accessibility peer. May not be emitted under certain
+         * circumstances.
+         */
+        OBSOLETE_SIGNAL (klass->text_inserted_signal =)
+                g_signal_new(I_("text-inserted"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, text_inserted),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::text-deleted:
+         * @vteterminal: the object which received the signal
+         *
+         * An internal signal used for communication between the terminal and
+         * its accessibility peer. May not be emitted under certain
+         * circumstances.
+         */
+        OBSOLETE_SIGNAL (klass->text_deleted_signal =)
+                g_signal_new(I_("text-deleted"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, text_deleted),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::text-scrolled:
+         * @vteterminal: the object which received the signal
+         * @delta: the number of lines scrolled
+         *
+         * An internal signal used for communication between the terminal and
+         * its accessibility peer. May not be emitted under certain
+         * circumstances.
+         */
+       OBSOLETE_SIGNAL (klass->text_scrolled_signal =)
+                g_signal_new(I_("text-scrolled"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, text_scrolled),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__INT,
+                            G_TYPE_NONE, 1, G_TYPE_INT);
+
+#undef OBSOLETE_SIGNAL
+
+        /**
+         * VteTerminal::copy-clipboard:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever vte_terminal_copy_clipboard() is called.
+         */
+       signals[COPY_CLIPBOARD] =
+                g_signal_new(I_("copy-clipboard"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                            G_STRUCT_OFFSET(VteTerminalClass, copy_clipboard),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::paste-clipboard:
+         * @vteterminal: the object which received the signal
+         *
+         * Emitted whenever vte_terminal_paste_clipboard() is called.
+         */
+       signals[PASTE_CLIPBOARD] =
+                g_signal_new(I_("paste-clipboard"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                            G_STRUCT_OFFSET(VteTerminalClass, paste_clipboard),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal::beep:
+         * @vteterminal: the object which received the signal
+         *
+         * This signal is emitted when the a child sends a beep request to the
+         * terminal.
+         */
+        g_signal_new(I_("beep"),
+                            G_OBJECT_CLASS_TYPE(klass),
+                            G_SIGNAL_RUN_LAST,
+                            G_STRUCT_OFFSET(VteTerminalClass, beep),
+                            NULL,
+                            NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                            G_TYPE_NONE, 0);
+
+        /**
+         * VteTerminal:allow-bold:
+         *
+         * Controls whether or not the terminal will attempt to draw bold text.
+         * This may happen either by using a bold font variant, or by
+         * repainting text with a different offset.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ALLOW_BOLD,
+                 g_param_spec_boolean ("allow-bold", NULL, NULL,
+                                       TRUE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:audible-bell:
+         *
+         * Controls whether or not the terminal will beep when the child outputs the
+         * "bl" sequence.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_AUDIBLE_BELL,
+                 g_param_spec_boolean ("audible-bell", NULL, NULL,
+                                       TRUE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:background-image-file: (type filename):
+         *
+         * Sets a background image file for the widget.  If specified by
+         * #VteTerminal:background-saturation:, the terminal will tint its
+         * in-memory copy of the image before applying it to the terminal.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_IMAGE_FILE,
+                 g_param_spec_string ("background-image-file", NULL, NULL,
+                                      NULL,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /**
+         * VteTerminal:background-image-pixbuf:
+         *
+         * Sets a background image for the widget.  Text which would otherwise be
+         * drawn using the default background color will instead be drawn over the
+         * specified image.  If necessary, the image will be tiled to cover the
+         * widget's entire visible area. If specified by
+         * #VteTerminal:background-saturation:, the terminal will tint its
+         * in-memory copy of the image before applying it to the terminal.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_IMAGE_PIXBUF,
+                 g_param_spec_object ("background-image-pixbuf", NULL, NULL,
+                                      GDK_TYPE_PIXBUF,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /**
+         * VteTerminal:background-opacity:
+         *
+         * Sets the opacity of the terminal background, were 0.0 means completely
+         * transparent and 1.0 means completely opaque.
+         *
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_OPACITY,
+                 g_param_spec_double ("background-opacity", NULL, NULL,
+                                      0.0, 1.0,
+                                      1.0,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:background-saturation:
+         *
+         * If a background image has been set using #VteTerminal:background-image-file: or
+         * #VteTerminal:background-image-pixbuf:, or #VteTerminal:background-transparent:,
+         * and the saturation value is less
+         * than 1.0, the terminal will adjust the colors of the image before drawing
+         * the image.  To do so, the terminal will create a copy of the background
+         * image (or snapshot of the root window) and modify its pixel values.
+         *
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_SATURATION,
+                 g_param_spec_double ("background-saturation", NULL, NULL,
+                                      0.0, 1.0,
+                                      0.4,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:background-tint-color:
+         *
+         * If a background image has been set using #VteTerminal:background-image-file: or
+         * #VteTerminal:background-image-pixbuf:, or #VteTerminal:background-transparent:, and
+         * and the value set by VteTerminal:background-saturation: is less than 1.0,
+         * the terminal
+         * will adjust the color of the image before drawing the image.  To do so,
+         * the terminal will create a copy of the background image (or snapshot of
+         * the root window) and modify its pixel values.  The initial tint color
+         * is black.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_TINT_COLOR,
+                 g_param_spec_boxed ("background-tint-color", NULL, NULL,
+                                     GDK_TYPE_COLOR,
+                                     G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:background-transparent:
+         *
+         * Sets whther the terminal uses the pixmap stored in the root
+         * window as the background, adjusted so that if there are no windows
+         * below your application, the widget will appear to be transparent.
+         *
+         * Note: When using a compositing window manager, you should instead
+         * set a RGBA colourmap on the toplevel window, so you get real transparency.
+         *
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKGROUND_TRANSPARENT,
+                 g_param_spec_boolean ("background-transparent", NULL, NULL,
+                                       FALSE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:backspace-binding:
+         *
+         * *Controls what string or control sequence the terminal sends to its child
+         * when the user presses the backspace key.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_BACKSPACE_BINDING,
+                 g_param_spec_enum ("backspace-binding", NULL, NULL,
+                                    VTE_TYPE_TERMINAL_ERASE_BINDING,
+                                    VTE_ERASE_AUTO,
+                                    G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /**
+         * VteTerminal:cursor-blink-mode:
+         *
+         * Sets whether or not the cursor will blink. Using %VTE_CURSOR_BLINK_SYSTEM
+         * will use the #GtkSettings::gtk-cursor-blink setting.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CURSOR_BLINK_MODE,
+                 g_param_spec_enum ("cursor-blink-mode", NULL, NULL,
+                                    VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE,
+                                    VTE_CURSOR_BLINK_SYSTEM,
+                                    G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:cursor-shape:
+         *
+         * Controls the shape of the cursor.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CURSOR_SHAPE,
+                 g_param_spec_enum ("cursor-shape", NULL, NULL,
+                                    VTE_TYPE_TERMINAL_CURSOR_SHAPE,
+                                    VTE_CURSOR_SHAPE_BLOCK,
+                                    G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:delete-binding:
+         *
+         * Controls what string or control sequence the terminal sends to its child
+         * when the user presses the delete key.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_DELETE_BINDING,
+                 g_param_spec_enum ("delete-binding", NULL, NULL,
+                                    VTE_TYPE_TERMINAL_ERASE_BINDING,
+                                    VTE_ERASE_AUTO,
+                                    G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:emulation:
+         *
+         * Sets what type of terminal the widget attempts to emulate by scanning for
+         * control sequences defined in the system's termcap file.  Unless you
+         * are interested in this feature, always use the default which is "xterm".
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_EMULATION,
+                 g_param_spec_string ("emulation", NULL, NULL,
+                                      VTE_DEFAULT_EMULATION,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:encoding:
+         *
+         * Controls the encoding the terminal will expect data from the child to
+         * be encoded with.  For certain terminal types, applications executing in the
+         * terminal can change the encoding.  The default is defined by the
+         * application's locale settings.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ENCODING,
+                 g_param_spec_string ("encoding", NULL, NULL,
+                                      NULL,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:font-desc:
+         *
+         * Specifies the font used for rendering all text displayed by the terminal,
+         * overriding any fonts set using gtk_widget_modify_font().  The terminal
+         * will immediately attempt to load the desired font, retrieve its
+         * metrics, and attempt to resize itself to keep the same number of rows
+         * and columns.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FONT_DESC,
+                 g_param_spec_boxed ("font-desc", NULL, NULL,
+                                     PANGO_TYPE_FONT_DESCRIPTION,
+                                     G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:icon-title:
+         *
+         * The terminal's so-called icon title, or %NULL if no icon title has been set.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ICON_TITLE,
+                 g_param_spec_string ("icon-title", NULL, NULL,
+                                      NULL,
+                                      G_PARAM_READABLE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:pointer-autohide:
+         *
+         * Controls the value of the terminal's mouse autohide setting.  When autohiding
+         * is enabled, the mouse cursor will be hidden when the user presses a key and
+         * shown when the user moves the mouse.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_MOUSE_POINTER_AUTOHIDE,
+                 g_param_spec_boolean ("pointer-autohide", NULL, NULL,
+                                       FALSE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:pty:
+         *
+         * The file descriptor of the master end of the terminal's PTY.
+         * 
+         * Since: 0.20
+         *
+         * Deprecated: 0.26: Use the #VteTerminal:pty-object property instead
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_PTY,
+                 g_param_spec_int ("pty", NULL, NULL,
+                                   -1, G_MAXINT,
+                                   -1,
+                                   G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /**
+         * VteTerminal:pty-object:
+         *
+         * The PTY object for the terminal.
+         *
+         * Since: 0.26
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_PTY_OBJECT,
+                 g_param_spec_object ("pty-object", NULL, NULL,
+                                      VTE_TYPE_PTY,
+                                      G_PARAM_READWRITE |
+                                      G_PARAM_STATIC_STRINGS));
+
+        /**
+         * VteTerminal:scroll-background:
+         *
+         * Controls whether or not the terminal will scroll the background image (if
+         * one is set) when the text in the window must be scrolled.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SCROLL_BACKGROUND,
+                 g_param_spec_boolean ("scroll-background", NULL, NULL,
+                                       FALSE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:scrollback-lines:
+         *
+         * The length of the scrollback buffer used by the terminal.  The size of
+         * the scrollback buffer will be set to the larger of this value and the number
+         * of visible rows the widget can display, so 0 can safely be used to disable
+         * scrollback.  Note that this setting only affects the normal screen buffer.
+         * For terminal types which have an alternate screen buffer, no scrollback is
+         * allowed on the alternate screen buffer.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SCROLLBACK_LINES,
+                 g_param_spec_uint ("scrollback-lines", NULL, NULL,
+                                    0, G_MAXUINT,
+                                    VTE_SCROLLBACK_INIT,
+                                    G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:scroll-on-keystroke:
+         *
+         * Controls whether or not the terminal will forcibly scroll to the bottom of
+         * the viewable history when the user presses a key.  Modifier keys do not
+         * trigger this behavior.
+         *
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SCROLL_ON_KEYSTROKE,
+                 g_param_spec_boolean ("scroll-on-keystroke", NULL, NULL,
+                                       FALSE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:scroll-on-output:
+         *
+         * Controls whether or not the terminal will forcibly scroll to the bottom of
+         * the viewable history when the new data is received from the child.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SCROLL_ON_OUTPUT,
+                 g_param_spec_boolean ("scroll-on-output", NULL, NULL,
+                                       TRUE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:window-title:
+         *
+         * The terminal's title.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WINDOW_TITLE,
+                 g_param_spec_string ("window-title", NULL, NULL,
+                                      NULL,
+                                      G_PARAM_READABLE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:word-chars:
+         *
+         * When the user double-clicks to start selection, the terminal will extend
+         * the selection on word boundaries.  It will treat characters the word-chars
+         * characters as parts of words, and all other characters as word separators.
+         * Ranges of characters can be specified by separating them with a hyphen.
+         *
+         * As a special case, when setting this to %NULL or the empty string, the terminal will
+         * treat all graphic non-punctuation non-space characters as word characters.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WORD_CHARS,
+                 g_param_spec_string ("word-chars", NULL, NULL,
+                                      NULL,
+                                      G_PARAM_READWRITE | STATIC_PARAMS));
+     
+        /**
+         * VteTerminal:visible-bell:
+         *
+         * Controls whether the terminal will present a visible bell to the
+         * user when the child outputs the "bl" sequence.  The terminal
+         * will clear itself to the default foreground color and then repaint itself.
+         * 
+         * Since: 0.20
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_VISIBLE_BELL,
+                 g_param_spec_boolean ("visible-bell", NULL, NULL,
+                                       FALSE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /* Style properties */
+
+        /**
+         * VteTerminal:inner-border:
+         *
+         * Sets the border around the terminal.
+         *
+         * Since: 0.24
+         */
+        gtk_widget_class_install_style_property
+                (widget_class,
+                 g_param_spec_boxed ("inner-border", NULL, NULL,
+                                     GTK_TYPE_BORDER,
+                                     G_PARAM_READABLE |
+                                     G_PARAM_STATIC_STRINGS));
+
+#if !GTK_CHECK_VERSION (2,99, 0)
+        /* Now install the default style */
+        gtk_rc_parse_string("style \"vte-default-style\" {\n"
+                              "VteTerminal::inner-border = { 1, 1, 1, 1 }\n"
+                            "}\n"
+                            "class \"VteTerminal\" style : gtk \"vte-default-style\"\n");
+#endif
+
+        /* Keybindings */
+       binding_set = gtk_binding_set_by_class(klass);
+
+       /* Bind Copy, Paste, Cut keys */
+       gtk_binding_entry_add_signal(binding_set, GDK_KEY (F16), 0, "copy-clipboard",0);
+       gtk_binding_entry_add_signal(binding_set, GDK_KEY (F18), 0, "paste-clipboard", 0);
+       gtk_binding_entry_add_signal(binding_set, GDK_KEY (F20), 0, "copy-clipboard",0);
+
+       process_timer = g_timer_new ();
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+        klass->priv = G_TYPE_CLASS_GET_PRIVATE (klass, VTE_TYPE_TERMINAL, VteTerminalClassPrivate);
+
+        klass->priv->style_provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
+        gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (klass->priv->style_provider),
+                                         "VteTerminal {\n"
+                                           "-VteTerminal-inner-border: 1;\n"
+                                         "}\n",
+                                         -1, NULL);
+#endif /* GTK 3.0 */
+}
+
+/**
+ * vte_terminal_set_audible_bell:
+ * @terminal: a #VteTerminal
+ * @is_audible: %TRUE if the terminal should beep
+ *
+ * Controls whether or not the terminal will beep when the child outputs the
+ * "bl" sequence.
+ */
+void
+vte_terminal_set_audible_bell(VteTerminal *terminal, gboolean is_audible)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        is_audible = is_audible != FALSE;
+        if (is_audible == pvt->audible_bell)
+                return;
+
+       pvt->audible_bell = is_audible;
+
+        g_object_notify (G_OBJECT (terminal), "audible-bell");
+}
+
+/**
+ * vte_terminal_get_audible_bell:
+ * @terminal: a #VteTerminal
+ *
+ * Checks whether or not the terminal will beep when the child outputs the
+ * "bl" sequence.
+ *
+ * Returns: %TRUE if audible bell is enabled, %FALSE if not
+ */
+gboolean
+vte_terminal_get_audible_bell(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+       return terminal->pvt->audible_bell;
+}
+
+/**
+ * vte_terminal_set_visible_bell:
+ * @terminal: a #VteTerminal
+ * @is_visible: whether the terminal should flash on bell
+ *
+ * Controls whether or not the terminal will present a visible bell to the
+ * user when the child outputs the "bl" sequence.  The terminal
+ * will clear itself to the default foreground color and then repaint itself.
+ *
+ */
+void
+vte_terminal_set_visible_bell(VteTerminal *terminal, gboolean is_visible)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        is_visible = is_visible != FALSE;
+        if (is_visible == pvt->visible_bell)
+                return;
+
+       pvt->visible_bell = is_visible;
+
+        g_object_notify (G_OBJECT (terminal), "visible-bell");
+}
+
+/**
+ * vte_terminal_get_visible_bell:
+ * @terminal: a #VteTerminal
+ *
+ * Checks whether or not the terminal will present a visible bell to the
+ * user when the child outputs the "bl" sequence.  The terminal
+ * will clear itself to the default foreground color and then repaint itself.
+ *
+ * Returns: %TRUE if visible bell is enabled, %FALSE if not
+ */
+gboolean
+vte_terminal_get_visible_bell(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+       return terminal->pvt->visible_bell;
+}
+
+/**
+ * vte_terminal_set_allow_bold:
+ * @terminal: a #VteTerminal
+ * @allow_bold: %TRUE if the terminal should attempt to draw bold text
+ *
+ * Controls whether or not the terminal will attempt to draw bold text,
+ * either by using a bold font variant or by repainting text with a different
+ * offset.
+ *
+ */
+void
+vte_terminal_set_allow_bold(VteTerminal *terminal, gboolean allow_bold)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        allow_bold = allow_bold != FALSE;
+        if (allow_bold == pvt->allow_bold)
+                return;
+
+       pvt->allow_bold = allow_bold;
+        g_object_notify (G_OBJECT (terminal), "allow-bold");
+
+       _vte_invalidate_all (terminal);
+}
+
+/**
+ * vte_terminal_get_allow_bold:
+ * @terminal: a #VteTerminal
+ *
+ * Checks whether or not the terminal will attempt to draw bold text by
+ * repainting text with a one-pixel offset.
+ *
+ * Returns: %TRUE if bolding is enabled, %FALSE if not
+ */
+gboolean
+vte_terminal_get_allow_bold(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+       return terminal->pvt->allow_bold;
+}
+
+/**
+ * vte_terminal_set_scroll_background:
+ * @terminal: a #VteTerminal
+ * @scroll: whether the terminal should scroll the background image along with
+ *   the text
+ *
+ * Controls whether or not the terminal will scroll the background image (if
+ * one is set) when the text in the window must be scrolled.
+ *
+ * Since: 0.11
+ */
+void
+vte_terminal_set_scroll_background(VteTerminal *terminal, gboolean scroll)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        scroll = scroll != FALSE;
+        if (scroll == pvt->scroll_background)
+                return;
+
+       pvt->scroll_background = scroll;
+
+        g_object_notify (G_OBJECT (terminal), "scroll-background");
+
+        vte_terminal_queue_background_update(terminal);
+}
+
+/**
+ * vte_terminal_set_scroll_on_output:
+ * @terminal: a #VteTerminal
+ * @scroll: whether the terminal should scroll on output
+ *
+ * Controls whether or not the terminal will forcibly scroll to the bottom of
+ * the viewable history when the new data is received from the child.
+ */
+void
+vte_terminal_set_scroll_on_output(VteTerminal *terminal, gboolean scroll)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       terminal->pvt->scroll_on_output = scroll;
+}
+
+/**
+ * vte_terminal_set_scroll_on_keystroke:
+ * @terminal: a #VteTerminal
+ * @scroll: whether the terminal should scroll on keystrokes
+ *
+ * Controls whether or not the terminal will forcibly scroll to the bottom of
+ * the viewable history when the user presses a key.  Modifier keys do not
+ * trigger this behavior.
+ */
+void
+vte_terminal_set_scroll_on_keystroke(VteTerminal *terminal, gboolean scroll)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        scroll = scroll != FALSE;
+        if (scroll == pvt->scroll_on_keystroke)
+                return;
+
+       pvt->scroll_on_keystroke = scroll;
+
+        g_object_notify (G_OBJECT (terminal), "scroll-on-keystroke");
+}
+
+static void
+vte_terminal_real_copy_clipboard(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Copying to CLIPBOARD.\n");
+       if (terminal->pvt->selection != NULL) {
+               GtkClipboard *clipboard;
+               clipboard = vte_terminal_clipboard_get(terminal,
+                                                      GDK_SELECTION_CLIPBOARD);
+               gtk_clipboard_set_text(clipboard, terminal->pvt->selection, -1);
+       }
+}
+
+/**
+ * vte_terminal_copy_clipboard:
+ * @terminal: a #VteTerminal
+ *
+ * Places the selected text in the terminal in the #GDK_SELECTION_CLIPBOARD
+ * selection.
+ */
+void
+vte_terminal_copy_clipboard(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_signal_emit (terminal, signals[COPY_CLIPBOARD], 0);
+}
+
+static void
+vte_terminal_real_paste_clipboard(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Pasting CLIPBOARD.\n");
+       vte_terminal_paste(terminal, GDK_SELECTION_CLIPBOARD);
+}
+
+/**
+ * vte_terminal_paste_clipboard:
+ * @terminal: a #VteTerminal
+ *
+ * Sends the contents of the #GDK_SELECTION_CLIPBOARD selection to the
+ * terminal's child.  If necessary, the data is converted from UTF-8 to the
+ * terminal's current encoding. It's called on paste menu item, or when
+ * user presses Shift+Insert.
+ */
+void
+vte_terminal_paste_clipboard(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_signal_emit (terminal, signals[PASTE_CLIPBOARD], 0);
+}
+
+/**
+ * vte_terminal_copy_primary:
+ * @terminal: a #VteTerminal
+ *
+ * Places the selected text in the terminal in the #GDK_SELECTION_PRIMARY
+ * selection.
+ */
+void
+vte_terminal_copy_primary(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Copying to PRIMARY.\n");
+       vte_terminal_copy(terminal, GDK_SELECTION_PRIMARY);
+}
+
+/**
+ * vte_terminal_paste_primary:
+ * @terminal: a #VteTerminal
+ *
+ * Sends the contents of the #GDK_SELECTION_PRIMARY selection to the terminal's
+ * child.  If necessary, the data is converted from UTF-8 to the terminal's
+ * current encoding.  The terminal will call also paste the
+ * #GDK_SELECTION_PRIMARY selection when the user clicks with the the second
+ * mouse button.
+ */
+void
+vte_terminal_paste_primary(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       _vte_debug_print(VTE_DEBUG_SELECTION, "Pasting PRIMARY.\n");
+       vte_terminal_paste(terminal, GDK_SELECTION_PRIMARY);
+}
+
+/**
+ * vte_terminal_im_append_menuitems:
+ * @terminal: a #VteTerminal
+ * @menushell: a GtkMenuShell
+ *
+ * Appends menu items for various input methods to the given menu.  The
+ * user can select one of these items to modify the input method used by
+ * the terminal.
+ */
+void
+vte_terminal_im_append_menuitems(VteTerminal *terminal, GtkMenuShell *menushell)
+{
+       GtkIMMulticontext *context;
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail (gtk_widget_get_realized (&terminal->widget));
+        g_return_if_fail(GTK_IS_MENU_SHELL(menushell));
+       context = GTK_IM_MULTICONTEXT(terminal->pvt->im_context);
+       gtk_im_multicontext_append_menuitems(context, menushell);
+}
+
+/* Set up whatever background we wanted. */
+static gboolean
+vte_terminal_background_update(VteTerminal *terminal)
+{
+       double saturation;
+       const PangoColor *entry;
+       GdkColor color;
+
+       /* If we're not realized yet, don't worry about it, because we get
+        * called when we realize. */
+       if (! gtk_widget_get_realized (&terminal->widget)) {
+               _vte_debug_print(VTE_DEBUG_MISC,
+                               "Can not set background image without "
+                               "window.\n");
+               return TRUE;
+       }
+
+       _vte_debug_print(VTE_DEBUG_MISC|VTE_DEBUG_EVENTS,
+                       "Updating background image.\n");
+
+       entry = &terminal->pvt->palette[VTE_DEF_BG];
+       _vte_debug_print(VTE_DEBUG_BG,
+                        "Setting background color to (%d, %d, %d, %d).\n",
+                        entry->red, entry->green, entry->blue,
+                        terminal->pvt->bg_opacity);
+
+       /* Set the terminal widget background color since otherwise we
+        * won't draw it for VTE_BG_SOURCE_NONE. */
+       color.red = entry->red;
+       color.green = entry->green;
+       color.blue = entry->blue;
+       gtk_widget_modify_bg (&terminal->widget, GTK_STATE_NORMAL, &color);
+
+       _vte_draw_set_background_solid (terminal->pvt->draw, 
+                                       entry->red / 65535.,
+                                       entry->green / 65535.,
+                                       entry->blue / 65535.,
+                                       terminal->pvt->bg_opacity / 65535.);
+
+       /* If we're transparent, and either have no root image or are being
+        * told to update it, get a new copy of the root window. */
+       saturation = (double) terminal->pvt->bg_saturation;
+       saturation /= VTE_SATURATION_MAX;
+       if (terminal->pvt->bg_transparent) {
+               if (terminal->pvt->root_pixmap_changed_tag == 0) {
+                       VteBg *bg;
+
+                       /* Connect to background-change events. */
+                       bg = vte_bg_get_for_screen (gtk_widget_get_screen (&terminal->widget));
+                       terminal->pvt->root_pixmap_changed_tag =
+                               g_signal_connect(bg, "root-pixmap-changed",
+                                       G_CALLBACK(root_pixmap_changed_cb),
+                                       terminal);
+               }
+
+               _vte_draw_set_background_image(terminal->pvt->draw,
+                                              VTE_BG_SOURCE_ROOT,
+                                              NULL,
+                                              NULL,
+                                              &terminal->pvt->bg_tint_color,
+                                              saturation);
+       } else
+       if (terminal->pvt->bg_file) {
+               _vte_draw_set_background_image(terminal->pvt->draw,
+                                              VTE_BG_SOURCE_FILE,
+                                              NULL,
+                                              terminal->pvt->bg_file,
+                                              &terminal->pvt->bg_tint_color,
+                                              saturation);
+       } else
+       if (GDK_IS_PIXBUF(terminal->pvt->bg_pixbuf)) {
+               _vte_draw_set_background_image(terminal->pvt->draw,
+                                              VTE_BG_SOURCE_PIXBUF,
+                                              terminal->pvt->bg_pixbuf,
+                                              NULL,
+                                              &terminal->pvt->bg_tint_color,
+                                              saturation);
+       } else {
+               _vte_draw_set_background_image(terminal->pvt->draw,
+                                              VTE_BG_SOURCE_NONE,
+                                              NULL,
+                                              NULL,
+                                              &terminal->pvt->bg_tint_color,
+                                              saturation);
+       }
+
+       /* Note that the update has finished. */
+       terminal->pvt->bg_update_pending = FALSE;
+
+       /* Force a redraw for everything. */
+       _vte_invalidate_all (terminal);
+
+       return FALSE;
+}
+
+/* Queue an update of the background image, to be done as soon as we can
+ * get to it.  Just bail if there's already an update pending, so that if
+ * opaque move tables to screw us, we don't end up with an insane backlog
+ * of updates after the user finishes moving us. */
+static void
+vte_terminal_queue_background_update(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_EVENTS,
+                       "Queued background update.\n");
+       terminal->pvt->bg_update_pending = TRUE;
+       /* force a redraw when convenient */
+       add_update_timeout (terminal);
+}
+
+/**
+ * vte_terminal_set_background_saturation:
+ * @terminal: a #VteTerminal
+ * @saturation: a floating point value between 0.0 and 1.0.
+ *
+ * If a background image has been set using
+ * vte_terminal_set_background_image(),
+ * vte_terminal_set_background_image_file(), or
+ * vte_terminal_set_background_transparent(), and the saturation value is less
+ * than 1.0, the terminal will adjust the colors of the image before drawing
+ * the image.  To do so, the terminal will create a copy of the background
+ * image (or snapshot of the root window) and modify its pixel values.
+ */
+void
+vte_terminal_set_background_saturation(VteTerminal *terminal, double saturation)
+{
+        VteTerminalPrivate *pvt;
+       guint v;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+       v = CLAMP(saturation * VTE_SATURATION_MAX, 0, VTE_SATURATION_MAX);
+        if (v == pvt->bg_saturation)
+                return;
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Setting background saturation to %d/%d.\n",
+                       v, VTE_SATURATION_MAX);
+
+        pvt->bg_saturation = v;
+        g_object_notify(G_OBJECT (terminal), "background-saturation");
+
+        vte_terminal_queue_background_update(terminal);
+}
+
+/**
+ * vte_terminal_set_background_tint_color:
+ * @terminal: a #VteTerminal
+ * @color: a color which the terminal background should be tinted to if its
+ *   saturation is not 1.0.
+ *
+ * If a background image has been set using
+ * vte_terminal_set_background_image(),
+ * vte_terminal_set_background_image_file(), or
+ * vte_terminal_set_background_transparent(), and the value set by
+ * vte_terminal_set_background_saturation() is less than one, the terminal
+ * will adjust the color of the image before drawing the image.  To do so,
+ * the terminal will create a copy of the background image (or snapshot of
+ * the root window) and modify its pixel values.  The initial tint color
+ * is black.
+ *
+ * Since: 0.11
+ */
+void
+vte_terminal_set_background_tint_color(VteTerminal *terminal,
+                                      const GdkColor *color)
+{
+        VteTerminalPrivate *pvt;
+       PangoColor *tint;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(color != NULL);
+
+        pvt = terminal->pvt;
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Setting background tint to %d,%d,%d.\n",
+                       terminal->pvt->bg_tint_color.red >> 8,
+                       terminal->pvt->bg_tint_color.green >> 8,
+                       terminal->pvt->bg_tint_color.blue >> 8);
+        tint = &pvt->bg_tint_color;
+       if (color->red == tint->red &&
+            color->green == tint->green &&
+            color->blue == tint->blue)
+                return;
+
+       tint->red = color->red;
+       tint->green = color->green;
+       tint->blue = color->blue;
+
+        g_object_notify(G_OBJECT (terminal), "background-tint-color");
+
+        vte_terminal_queue_background_update(terminal);
+}
+
+/**
+ * vte_terminal_set_background_transparent:
+ * @terminal: a #VteTerminal
+ * @transparent: whether the terminal should fake transparency
+ *
+ * Sets the terminal's background image to the pixmap stored in the root
+ * window, adjusted so that if there are no windows below your application,
+ * the widget will appear to be transparent.
+ */
+void
+vte_terminal_set_background_transparent(VteTerminal *terminal,
+                                       gboolean transparent)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        transparent = transparent != FALSE;
+        if (transparent == pvt->bg_transparent)
+                return;
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+               "Turning background transparency %s.\n",
+                       transparent ? "on" : "off");
+               
+       pvt->bg_transparent = transparent;
+        g_object_notify(G_OBJECT (terminal), "background-transparent");
+
+        /* Update the background. */
+        vte_terminal_queue_background_update(terminal);
+}
+
+/**
+ * vte_terminal_set_background_image:
+ * @terminal: a #VteTerminal
+ * @image: (allow-none): a #GdkPixbuf to use, or %NULL to unset the background
+ *
+ * Sets a background image for the widget.  Text which would otherwise be
+ * drawn using the default background color will instead be drawn over the
+ * specified image.  If necessary, the image will be tiled to cover the
+ * widget's entire visible area. If specified by
+ * vte_terminal_set_background_saturation(), the terminal will tint its
+ * in-memory copy of the image before applying it to the terminal.
+ */
+void
+vte_terminal_set_background_image(VteTerminal *terminal, GdkPixbuf *image)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(image==NULL || GDK_IS_PIXBUF(image));
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+        if (image && image == pvt->bg_pixbuf)
+                return;
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "%s background image.\n",
+                       GDK_IS_PIXBUF(image) ? "Setting" : "Clearing");
+
+        g_object_freeze_notify(object);
+
+       /* Get a ref to the new image if there is one.  Do it here just in
+        * case we're actually given the same one we're already using. */
+       if (image != NULL) {
+               g_object_ref(image);
+       }
+
+       /* Unref the previous background image. */
+       if (pvt->bg_pixbuf != NULL) {
+               g_object_unref(pvt->bg_pixbuf);
+       }
+
+       /* Clear a background file name, if one was set. */
+        if (pvt->bg_file) {
+                g_free(pvt->bg_file);
+                pvt->bg_file = NULL;
+
+                g_object_notify(object, "background-image-file");
+        }
+
+       /* Set the new background. */
+       pvt->bg_pixbuf = image;
+
+        g_object_notify(object, "background-image-pixbuf");
+
+       vte_terminal_queue_background_update(terminal);
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_terminal_set_background_image_file:
+ * @terminal: a #VteTerminal
+ * @path: (type filename): path to an image file
+ *
+ * Sets a background image for the widget.  If specified by
+ * vte_terminal_set_background_saturation(), the terminal will tint its
+ * in-memory copy of the image before applying it to the terminal.
+ */
+void
+vte_terminal_set_background_image_file(VteTerminal *terminal, const char *path)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+       _vte_debug_print(VTE_DEBUG_MISC,
+                       "Loading background image from `%s'.\n", path);
+
+        g_object_freeze_notify(G_OBJECT(terminal));
+
+       /* Save this background type. */
+       g_free(pvt->bg_file);
+       pvt->bg_file = g_strdup(path);
+
+       /* Turn off other background types. */
+       if (pvt->bg_pixbuf != NULL) {
+               g_object_unref(pvt->bg_pixbuf);
+               pvt->bg_pixbuf = NULL;
+
+                g_object_notify(object, "background-image-pixbuf");
+       }
+
+        g_object_notify(object, "background-image-file");
+
+       vte_terminal_queue_background_update(terminal);
+
+        g_object_thaw_notify(G_OBJECT(terminal));
+}
+
+/**
+ * vte_terminal_get_has_selection:
+ * @terminal: a #VteTerminal
+ *
+ * Checks if the terminal currently contains selected text.  Note that this
+ * is different from determining if the terminal is the owner of any
+ * #GtkClipboard items.
+ *
+ * Returns: %TRUE if part of the text in the terminal is selected.
+ */
+gboolean
+vte_terminal_get_has_selection(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+       return terminal->pvt->has_selection;
+}
+
+/**
+ * vte_terminal_get_using_xft:
+ * @terminal: a #VteTerminal
+ *
+ * A #VteTerminal can use multiple methods to draw text.  This function
+ * allows an application to determine whether or not the current method uses
+ * fontconfig to find fonts.  This setting cannot be changed by the caller,
+ * but in practice usually matches the behavior of GTK+ itself.
+ *
+ * Returns: %TRUE
+ *
+ * Deprecated: 0.20
+ */
+gboolean
+vte_terminal_get_using_xft(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), TRUE);
+       return TRUE;
+}
+
+static void
+vte_terminal_set_cursor_blinks_internal(VteTerminal *terminal, gboolean blink)
+{
+        VteTerminalPrivate *pvt = terminal->pvt;
+
+       blink = !!blink;
+       if (pvt->cursor_blinks == blink)
+               return;
+
+       pvt->cursor_blinks = blink;
+       _vte_check_cursor_blink (terminal);
+}
+
+/**
+ * vte_terminal_set_cursor_blinks:
+ * @terminal: a #VteTerminal
+ * @blink: whether the cursor should blink
+ *
+ *  Sets whether or not the cursor will blink.
+ *
+ * Deprecated: 0.17.1 Use vte_terminal_set_cursor_blink_mode() instead.
+ */
+void
+vte_terminal_set_cursor_blinks(VteTerminal *terminal, gboolean blink)
+{
+        vte_terminal_set_cursor_blink_mode(terminal, blink ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF);
+}
+
+/**
+ * vte_terminal_set_cursor_blink_mode:
+ * @terminal: a #VteTerminal
+ * @mode: the #VteTerminalCursorBlinkMode to use
+ *
+ * Sets whether or not the cursor will blink. Using %VTE_CURSOR_BLINK_SYSTEM
+ * will use the #GtkSettings::gtk-cursor-blink setting.
+ *
+ * Since: 0.17.1
+ */
+void
+vte_terminal_set_cursor_blink_mode(VteTerminal *terminal, VteTerminalCursorBlinkMode mode)
+{
+        VteTerminalPrivate *pvt;
+        gboolean blinks;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        pvt = terminal->pvt;
+
+        if (pvt->cursor_blink_mode == mode)
+                return;
+
+        pvt->cursor_blink_mode = mode;
+
+        switch (mode) {
+          case VTE_CURSOR_BLINK_SYSTEM:
+            g_object_get(gtk_widget_get_settings(GTK_WIDGET(terminal)),
+                                                 "gtk-cursor-blink", &blinks,
+                                                 NULL);
+            break;
+          case VTE_CURSOR_BLINK_ON:
+            blinks = TRUE;
+            break;
+          case VTE_CURSOR_BLINK_OFF:
+            blinks = FALSE;
+            break;
+        }
+
+        vte_terminal_set_cursor_blinks_internal(terminal, blinks);
+
+        g_object_notify(G_OBJECT(terminal), "cursor-blink-mode");
+}
+
+/**
+ * vte_terminal_get_cursor_blink_mode:
+ * @terminal: a #VteTerminal
+ *
+ * Returns the currently set cursor blink mode.
+ *
+ * Return value: cursor blink mode.
+ *
+ * Since: 0.17.1
+ */
+VteTerminalCursorBlinkMode
+vte_terminal_get_cursor_blink_mode(VteTerminal *terminal)
+{
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), VTE_CURSOR_BLINK_SYSTEM);
+
+        return terminal->pvt->cursor_blink_mode;
+}
+
+/**
+ * vte_terminal_set_cursor_shape:
+ * @terminal: a #VteTerminal
+ * @shape: the #VteTerminalCursorShape to use
+ *
+ * Sets the shape of the cursor drawn.
+ *
+ * Since: 0.20
+ */
+void
+vte_terminal_set_cursor_shape(VteTerminal *terminal, VteTerminalCursorShape shape)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        pvt = terminal->pvt;
+
+        if (pvt->cursor_shape == shape)
+                return;
+
+        pvt->cursor_shape = shape;
+       _vte_invalidate_cursor_once(terminal, FALSE);
+
+        g_object_notify(G_OBJECT(terminal), "cursor-shape");
+}
+
+/**
+ * vte_terminal_get_cursor_shape:
+ * @terminal: a #VteTerminal
+ *
+ * Returns the currently set cursor shape.
+ *
+ * Return value: cursor shape.
+ *
+ * Since: 0.17.6
+ */
+VteTerminalCursorShape
+vte_terminal_get_cursor_shape(VteTerminal *terminal)
+{
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), VTE_CURSOR_SHAPE_BLOCK);
+
+        return terminal->pvt->cursor_shape;
+}
+
+/**
+ * vte_terminal_set_scrollback_lines:
+ * @terminal: a #VteTerminal
+ * @lines: the length of the history buffer
+ *
+ * Sets the length of the scrollback buffer used by the terminal.  The size of
+ * the scrollback buffer will be set to the larger of this value and the number
+ * of visible rows the widget can display, so 0 can safely be used to disable
+ * scrollback.
+ *
+ * A negative value means "infinite scrollback".
+ *
+ * Note that this setting only affects the normal screen buffer.
+ * For terminal types which have an alternate screen buffer, no scrollback is
+ * allowed on the alternate screen buffer.
+ */
+void
+vte_terminal_set_scrollback_lines(VteTerminal *terminal, glong lines)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+       glong scroll_delta;
+       VteScreen *screen;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       if (lines < 0)
+               lines = G_MAXLONG;
+
+        object = G_OBJECT(terminal);
+        pvt = terminal->pvt;
+
+#if 0
+        /* FIXME: this breaks the scrollbar range, bug #562511 */
+        if (lines == pvt->scrollback_lines)
+                return;
+#endif
+
+        g_object_freeze_notify(object);
+
+       _vte_debug_print (VTE_DEBUG_MISC,
+                       "Setting scrollback lines to %ld\n", lines);
+
+       pvt->scrollback_lines = lines;
+       screen = pvt->screen;
+       scroll_delta = screen->scroll_delta;
+
+       /* The main screen gets the full scrollback buffer, but the
+        * alternate screen isn't allowed to scroll at all. */
+       if (screen == &terminal->pvt->normal_screen) {
+               glong low, high, next;
+               /* We need at least as many lines as are visible */
+               lines = MAX (lines, terminal->row_count);
+               next = MAX (screen->cursor_current.row + 1,
+                               _vte_ring_next (screen->row_data));
+               _vte_ring_resize (screen->row_data, lines);
+               low = _vte_ring_delta (screen->row_data);
+               high = lines + MIN (G_MAXLONG - lines, low - terminal->row_count + 1);
+               screen->insert_delta = CLAMP (screen->insert_delta, low, high);
+               scroll_delta = CLAMP (scroll_delta, low, screen->insert_delta);
+               next = MIN (next, screen->insert_delta + terminal->row_count);
+               if (_vte_ring_next (screen->row_data) > next){
+                       _vte_ring_shrink (screen->row_data, next - low);
+               }
+       } else {
+               _vte_ring_resize (screen->row_data, terminal->row_count);
+               scroll_delta = _vte_ring_delta (screen->row_data);
+               screen->insert_delta = _vte_ring_delta (screen->row_data);
+               if (_vte_ring_next (screen->row_data) > screen->insert_delta + terminal->row_count){
+                       _vte_ring_shrink (screen->row_data, terminal->row_count);
+               }
+       }
+
+       /* Adjust the scrollbars to the new locations. */
+       vte_terminal_queue_adjustment_value_changed (terminal, scroll_delta);
+       _vte_terminal_adjust_adjustments_full (terminal);
+
+        g_object_notify(object, "scrollback-lines");
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_terminal_set_word_chars:
+ * @terminal: a #VteTerminal
+ * @spec: a specification
+ *
+ * When the user double-clicks to start selection, the terminal will extend
+ * the selection on word boundaries.  It will treat characters included in @spec
+ * as parts of words, and all other characters as word separators.  Ranges of
+ * characters can be specified by separating them with a hyphen.
+ *
+ * As a special case, if @spec is %NULL or the empty string, the terminal will
+ * treat all graphic non-punctuation non-space characters as word characters.
+ */
+void
+vte_terminal_set_word_chars(VteTerminal *terminal, const char *spec)
+{
+       VteConv conv;
+       gunichar *wbuf;
+       guchar *ibuf, *ibufptr, *obuf, *obufptr;
+       gsize ilen, olen;
+       VteWordCharRange range;
+       guint i;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       /* Allocate a new range array. */
+       if (terminal->pvt->word_chars != NULL) {
+               g_array_free(terminal->pvt->word_chars, TRUE);
+       }
+       terminal->pvt->word_chars = g_array_new(FALSE, TRUE,
+                                               sizeof(VteWordCharRange));
+       /* Special case: if spec is NULL, try to do the right thing. */
+       if (spec == NULL || spec[0] == '\0') {
+                g_object_notify(G_OBJECT(terminal), "word-chars");
+               return;
+       }
+       /* Convert the spec from UTF-8 to a string of gunichars . */
+        /* FIXME: why not just directly use g_utf8_to_ucs4 here? It'll never fail */
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "UTF-8");
+       if (conv == VTE_INVALID_CONV) {
+               /* Aaargh.  We're screwed. */
+               g_warning(_("_vte_conv_open() failed setting word characters"));
+               return;
+       }
+       ilen = strlen(spec);
+       ibuf = ibufptr = (guchar *)g_strdup(spec);
+       olen = (ilen + 1) * sizeof(gunichar);
+       _vte_buffer_set_minimum_size(terminal->pvt->conv_buffer, olen);
+       obuf = obufptr = terminal->pvt->conv_buffer->data;
+       wbuf = (gunichar*) obuf;
+       wbuf[ilen] = '\0';
+       _vte_conv(conv, (const guchar **)&ibuf, &ilen, &obuf, &olen);
+       _vte_conv_close(conv);
+       for (i = 0; i < ((obuf - obufptr) / sizeof(gunichar)); i++) {
+               /* The hyphen character. */
+               if (wbuf[i] == '-') {
+                       range.start = wbuf[i];
+                       range.end = wbuf[i];
+                       g_array_append_val(terminal->pvt->word_chars, range);
+                       _vte_debug_print(VTE_DEBUG_MISC,
+                               "Word charset includes hyphen.\n");
+                       continue;
+               }
+               /* A single character, not the start of a range. */
+               if ((wbuf[i] != '-') && (wbuf[i + 1] != '-')) {
+                       range.start = wbuf[i];
+                       range.end = wbuf[i];
+                       g_array_append_val(terminal->pvt->word_chars, range);
+                       _vte_debug_print(VTE_DEBUG_MISC,
+                                       "Word charset includes `%lc'.\n",
+                                       (wint_t) wbuf[i]);
+                       continue;
+               }
+               /* The start of a range. */
+               if ((wbuf[i] != '-') &&
+                   (wbuf[i + 1] == '-') &&
+                   (wbuf[i + 2] != '-') &&
+                   (wbuf[i + 2] != 0)) {
+                       range.start = wbuf[i];
+                       range.end = wbuf[i + 2];
+                       g_array_append_val(terminal->pvt->word_chars, range);
+                       _vte_debug_print(VTE_DEBUG_MISC,
+                                       "Word charset includes range from "
+                                       "`%lc' to `%lc'.\n", (wint_t) wbuf[i],
+                                       (wint_t) wbuf[i + 2]);
+                       i += 2;
+                       continue;
+               }
+       }
+       g_free(ibufptr);
+
+        g_object_notify(G_OBJECT(terminal), "word-chars");
+}
+
+/**
+ * vte_terminal_set_backspace_binding:
+ * @terminal: a #VteTerminal
+ * @binding: a #VteTerminalEraseBinding for the backspace key
+ *
+ * Modifies the terminal's backspace key binding, which controls what
+ * string or control sequence the terminal sends to its child when the user
+ * presses the backspace key.
+ */
+void
+vte_terminal_set_backspace_binding(VteTerminal *terminal,
+                                  VteTerminalEraseBinding binding)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        if (binding == pvt->backspace_binding)
+                return;
+
+       /* FIXME: should we set the pty mode to match? */
+       pvt->backspace_binding = binding;
+
+        g_object_notify(G_OBJECT(terminal), "backspace-binding");
+}
+
+/**
+ * vte_terminal_set_delete_binding:
+ * @terminal: a #VteTerminal
+ * @binding: a #VteTerminalEraseBinding for the delete key
+ *
+ * Modifies the terminal's delete key binding, which controls what
+ * string or control sequence the terminal sends to its child when the user
+ * presses the delete key.
+ */
+void
+vte_terminal_set_delete_binding(VteTerminal *terminal,
+                               VteTerminalEraseBinding binding)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        if (binding == pvt->delete_binding)
+                return;
+
+       pvt->delete_binding = binding;
+
+        g_object_notify(G_OBJECT(terminal), "delete-binding");
+}
+
+/**
+ * vte_terminal_set_mouse_autohide:
+ * @terminal: a #VteTerminal
+ * @setting: whether the mouse pointer should autohide
+ *
+ * Changes the value of the terminal's mouse autohide setting.  When autohiding
+ * is enabled, the mouse cursor will be hidden when the user presses a key and
+ * shown when the user moves the mouse.  This setting can be read using
+ * vte_terminal_get_mouse_autohide().
+ */
+void
+vte_terminal_set_mouse_autohide(VteTerminal *terminal, gboolean setting)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        setting = setting != FALSE;
+        if (setting == pvt->mouse_autohide)
+                return;
+
+       pvt->mouse_autohide = setting;
+
+        g_object_notify(G_OBJECT(terminal), "pointer-autohide");
+}
+
+/**
+ * vte_terminal_get_mouse_autohide:
+ * @terminal: a #VteTerminal
+ *
+ * Determines the value of the terminal's mouse autohide setting.  When
+ * autohiding is enabled, the mouse cursor will be hidden when the user presses
+ * a key and shown when the user moves the mouse.  This setting can be changed
+ * using vte_terminal_set_mouse_autohide().
+ *
+ * Returns: %TRUE if autohiding is enabled, %FALSE if not
+ */
+gboolean
+vte_terminal_get_mouse_autohide(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+       return terminal->pvt->mouse_autohide;
+}
+
+/**
+ * vte_terminal_reset:
+ * @terminal: a #VteTerminal
+ * @clear_tabstops: whether to reset tabstops
+ * @clear_history: whether to empty the terminal's scrollback buffer
+ *
+ * Resets as much of the terminal's internal state as possible, discarding any
+ * unprocessed input data, resetting character attributes, cursor state,
+ * national character set state, status line, terminal modes (insert/delete),
+ * selection state, and encoding.
+ *
+ */
+void
+vte_terminal_reset(VteTerminal *terminal,
+                   gboolean clear_tabstops,
+                   gboolean clear_history)
+{
+        VteTerminalPrivate *pvt;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        g_object_freeze_notify(G_OBJECT(terminal));
+
+       /* Stop processing any of the data we've got backed up. */
+       vte_terminal_stop_processing (terminal);
+
+       /* Clear the input and output buffers. */
+       _vte_incoming_chunks_release (pvt->incoming);
+       pvt->incoming = NULL;
+       g_array_set_size(pvt->pending, 0);
+       _vte_buffer_clear(pvt->outgoing);
+       /* Reset charset substitution state. */
+       _vte_iso2022_state_free(pvt->iso2022);
+       pvt->iso2022 = _vte_iso2022_state_new(NULL,
+                                                       &_vte_terminal_codeset_changed_cb,
+                                                       terminal);
+       _vte_iso2022_state_set_codeset(pvt->iso2022,
+                                      pvt->encoding);
+       /* Reset keypad/cursor/function key modes. */
+       pvt->keypad_mode = VTE_KEYMODE_NORMAL;
+       pvt->cursor_mode = VTE_KEYMODE_NORMAL;
+       pvt->sun_fkey_mode = FALSE;
+       pvt->hp_fkey_mode = FALSE;
+       pvt->legacy_fkey_mode = FALSE;
+       pvt->vt220_fkey_mode = FALSE;
+       /* Enable meta-sends-escape. */
+       pvt->meta_sends_escape = TRUE;
+       /* Disable smooth scroll. */
+       pvt->smooth_scroll = FALSE;
+       /* Disable margin bell. */
+       pvt->margin_bell = FALSE;
+       /* Enable iso2022/NRC processing. */
+       pvt->nrc_mode = TRUE;
+       /* Reset saved settings. */
+       if (pvt->dec_saved != NULL) {
+               g_hash_table_destroy(pvt->dec_saved);
+               pvt->dec_saved = g_hash_table_new(NULL, NULL);
+       }
+       /* Reset the color palette. */
+       /* vte_terminal_set_default_colors(terminal); */
+       /* Reset the default attributes.  Reset the alternate attribute because
+        * it's not a real attribute, but we need to treat it as one here. */
+       pvt->screen = &pvt->alternate_screen;
+       _vte_terminal_set_default_attributes(terminal);
+       pvt->screen = &pvt->normal_screen;
+       _vte_terminal_set_default_attributes(terminal);
+       /* Reset alternate charset mode. */
+       pvt->normal_screen.alternate_charset = FALSE;
+       pvt->alternate_screen.alternate_charset = FALSE;
+       /* Clear the scrollback buffers and reset the cursors. */
+       if (clear_history) {
+               _vte_ring_fini(pvt->normal_screen.row_data);
+               _vte_ring_init(pvt->normal_screen.row_data, pvt->scrollback_lines);
+               _vte_ring_fini(pvt->alternate_screen.row_data);
+               _vte_ring_init(pvt->alternate_screen.row_data, terminal->row_count);
+               pvt->normal_screen.cursor_saved.row = 0;
+               pvt->normal_screen.cursor_saved.col = 0;
+               pvt->normal_screen.cursor_current.row = 0;
+               pvt->normal_screen.cursor_current.col = 0;
+               pvt->normal_screen.scroll_delta = 0;
+               pvt->normal_screen.insert_delta = 0;
+               pvt->alternate_screen.cursor_saved.row = 0;
+               pvt->alternate_screen.cursor_saved.col = 0;
+               pvt->alternate_screen.cursor_current.row = 0;
+               pvt->alternate_screen.cursor_current.col = 0;
+               pvt->alternate_screen.scroll_delta = 0;
+               pvt->alternate_screen.insert_delta = 0;
+               _vte_terminal_adjust_adjustments_full (terminal);
+       }
+       /* Clear the status lines. */
+       pvt->normal_screen.status_line = FALSE;
+       pvt->normal_screen.status_line_changed = FALSE;
+       if (pvt->normal_screen.status_line_contents != NULL) {
+               g_string_free(pvt->normal_screen.status_line_contents,
+                             TRUE);
+       }
+       pvt->normal_screen.status_line_contents = g_string_new(NULL);
+       pvt->alternate_screen.status_line = FALSE;
+       pvt->alternate_screen.status_line_changed = FALSE;
+       if (pvt->alternate_screen.status_line_contents != NULL) {
+               g_string_free(pvt->alternate_screen.status_line_contents,
+                             TRUE);
+       }
+       pvt->alternate_screen.status_line_contents = g_string_new(NULL);
+       /* Do more stuff we refer to as a "full" reset. */
+       if (clear_tabstops) {
+               vte_terminal_set_default_tabstops(terminal);
+       }
+       /* Reset restricted scrolling regions, leave insert mode, make
+        * the cursor visible again. */
+       pvt->normal_screen.scrolling_restricted = FALSE;
+       pvt->normal_screen.sendrecv_mode = TRUE;
+       pvt->normal_screen.insert_mode = FALSE;
+       pvt->normal_screen.linefeed_mode = FALSE;
+       pvt->normal_screen.origin_mode = FALSE;
+       pvt->normal_screen.reverse_mode = FALSE;
+       pvt->normal_screen.bracketed_paste_mode = FALSE;
+       pvt->alternate_screen.scrolling_restricted = FALSE;
+       pvt->alternate_screen.sendrecv_mode = TRUE;
+       pvt->alternate_screen.insert_mode = FALSE;
+       pvt->alternate_screen.linefeed_mode = FALSE;
+       pvt->alternate_screen.origin_mode = FALSE;
+       pvt->alternate_screen.reverse_mode = FALSE;
+       pvt->alternate_screen.bracketed_paste_mode = FALSE;
+       pvt->cursor_visible = TRUE;
+       /* Reset the encoding. */
+       vte_terminal_set_encoding(terminal, NULL);
+       g_assert(pvt->encoding != NULL);
+       /* Reset selection. */
+       vte_terminal_deselect_all(terminal);
+       pvt->has_selection = FALSE;
+       pvt->selecting = FALSE;
+       pvt->selecting_restart = FALSE;
+       pvt->selecting_had_delta = FALSE;
+       if (pvt->selection != NULL) {
+               g_free(pvt->selection);
+               pvt->selection = NULL;
+               memset(&pvt->selection_origin, 0,
+                      sizeof(&pvt->selection_origin));
+               memset(&pvt->selection_last, 0,
+                      sizeof(&pvt->selection_last));
+               memset(&pvt->selection_start, 0,
+                      sizeof(&pvt->selection_start));
+               memset(&pvt->selection_end, 0,
+                      sizeof(&pvt->selection_end));
+       }
+       /* Reset mouse motion events. */
+       pvt->mouse_tracking_mode = MOUSE_TRACKING_NONE;
+       pvt->mouse_last_button = 0;
+       pvt->mouse_last_x = 0;
+       pvt->mouse_last_y = 0;
+       /* Clear modifiers. */
+       pvt->modifiers = 0;
+       /* Cause everything to be redrawn (or cleared). */
+       vte_terminal_maybe_scroll_to_bottom(terminal);
+       _vte_invalidate_all(terminal);
+
+        g_object_thaw_notify(G_OBJECT(terminal));
+}
+
+/**
+ * vte_terminal_get_status_line:
+ * @terminal: a #VteTerminal
+ *
+ * Some terminal emulations specify a status line which is separate from the
+ * main display area, and define a means for applications to move the cursor
+ * to the status line and back.
+ *
+ * Returns: (transfer none): the current contents of the terminal's status line.
+ *   For terminals like "xterm", this will usually be the empty string.  The string
+ *   must not be modified or freed by the caller.
+ */
+const char *
+vte_terminal_get_status_line(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return terminal->pvt->screen->status_line_contents->str;
+}
+
+/**
+ * vte_terminal_get_padding:
+ * @terminal: a #VteTerminal
+ * @xpad: address in which to store left/right-edge padding
+ * @ypad: address in which to store top/bottom-edge ypadding
+ *
+ * Determines the amount of additional space the widget is using to pad the
+ * edges of its visible area.  This is necessary for cases where characters in
+ * the selected font don't themselves include a padding area and the text
+ * itself would otherwise be contiguous with the window border.  Applications
+ * which use the widget's %row_count, %column_count, %char_height, and
+ * %char_width fields to set geometry hints using
+ * gtk_window_set_geometry_hints() will need to add this value to the base
+ * size.  The values returned in @xpad and @ypad are the total padding used in
+ * each direction, and do not need to be doubled.
+ *
+ * Deprecated: 0.26: Get the #VteTerminal:inner-border style property instead
+ */
+void
+vte_terminal_get_padding(VteTerminal *terminal, int *xpad, int *ypad)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       g_return_if_fail(xpad != NULL);
+       g_return_if_fail(ypad != NULL);
+       *xpad = terminal->pvt->inner_border.left + terminal->pvt->inner_border.right;
+       *ypad = terminal->pvt->inner_border.top + terminal->pvt->inner_border.bottom;
+}
+
+/**
+ * vte_terminal_get_adjustment:
+ * @terminal: a #VteTerminal
+ *
+ * An accessor function provided for the benefit of language bindings.
+ *
+ * Returns: (transfer none): the contents of @terminal's adjustment field
+ *
+ * Deprecated: 0.28: Use gtk_scrollable_get_vadjustment() instead
+ */
+GtkAdjustment *
+vte_terminal_get_adjustment(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+       return terminal->adjustment;
+}
+
+/**
+ * vte_terminal_get_char_width:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: the width of a character cell
+ */
+glong
+vte_terminal_get_char_width(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       vte_terminal_ensure_font (terminal);
+       return terminal->char_width;
+}
+
+/**
+ * vte_terminal_get_char_height:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: the height of a character cell
+ */
+glong
+vte_terminal_get_char_height(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       vte_terminal_ensure_font (terminal);
+       return terminal->char_height;
+}
+
+/**
+ * vte_terminal_get_char_descent:
+ * @terminal: a #VteTerminal
+ *
+ * An accessor function provided for the benefit of language bindings.
+ *
+ * Returns: the contents of @terminal's char_descent field
+ *
+ * Deprecated: 0.20
+ */
+glong
+vte_terminal_get_char_descent(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       vte_terminal_ensure_font (terminal);
+       return terminal->char_descent;
+}
+
+/**
+ * vte_terminal_get_char_ascent:
+ * @terminal: a #VteTerminal
+ *
+ * An accessor function provided for the benefit of language bindings.
+ *
+ * Returns: the contents of @terminal's char_ascent field
+ *
+ * Deprecated: 0.20
+ */
+glong
+vte_terminal_get_char_ascent(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       vte_terminal_ensure_font (terminal);
+       return terminal->char_ascent;
+}
+
+/**
+ * vte_terminal_get_row_count:
+ * @terminal: a #VteTerminal
+ *
+ *
+ * Returns: the number of rows
+ */
+glong
+vte_terminal_get_row_count(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       return terminal->row_count;
+}
+
+/**
+ * vte_terminal_get_column_count:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: the number of columns
+ */
+glong
+vte_terminal_get_column_count(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+       return terminal->column_count;
+}
+
+/**
+ * vte_terminal_get_window_title:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: (transfer none): the window title
+ */
+const char *
+vte_terminal_get_window_title(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), "");
+       return terminal->window_title;
+}
+
+/**
+ * vte_terminal_get_icon_title:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: (transfer none): the icon title
+ */
+const char *
+vte_terminal_get_icon_title(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), "");
+       return terminal->icon_title;
+}
+
+/**
+ * vte_terminal_set_pty:
+ * @terminal: a #VteTerminal
+ * @pty_master: a file descriptor of the master end of a PTY, or %-1
+ *
+ * Attach an existing PTY master side to the terminal widget.  Use
+ * instead of vte_terminal_fork_command() or vte_terminal_forkpty().
+ *
+ * Since: 0.12.1
+ *
+ * Deprecated: 0.26: Use vte_pty_new_foreign() and vte_terminal_set_pty_object()
+ */
+void
+vte_terminal_set_pty(VteTerminal *terminal, int pty_master)
+{
+        VtePty *pty;
+
+        if (pty_master == -1) {
+                vte_terminal_set_pty_object(terminal, NULL);
+                return;
+        }
+
+        pty = vte_pty_new_foreign(pty_master, NULL);
+        if (pty == NULL)
+                return;
+
+        vte_terminal_set_pty_object(terminal, pty);
+        g_object_unref(pty);
+}
+
+/**
+ * vte_terminal_set_pty_object:
+ * @terminal: a #VteTerminal
+ * @pty: (allow-none): a #VtePty, or %NULL
+ *
+ * Sets @pty as the PTY to use in @terminal.
+ * Use %NULL to unset the PTY.
+ *
+ * Since: 0.26.
+ */
+void
+vte_terminal_set_pty_object(VteTerminal *terminal,
+                            VtePty *pty)
+{
+        VteTerminalPrivate *pvt;
+        GObject *object;
+        long flags;
+        int pty_master;
+
+        g_return_if_fail(VTE_IS_TERMINAL(terminal));
+        g_return_if_fail(pty == NULL || VTE_IS_PTY(pty));
+
+        pvt = terminal->pvt;
+        if (pvt->pty == pty)
+                return;
+
+        object = G_OBJECT(terminal);
+
+        g_object_freeze_notify(object);
+
+        if (pvt->pty != NULL) {
+                _vte_terminal_disconnect_pty_read(terminal);
+                _vte_terminal_disconnect_pty_write(terminal);
+
+                if (terminal->pvt->pty_channel != NULL) {
+                        g_io_channel_unref (terminal->pvt->pty_channel);
+                        pvt->pty_channel = NULL;
+                }
+
+               /* Take one last shot at processing whatever data is pending,
+                * then flush the buffers in case we're about to run a new
+                * command, disconnecting the timeout. */
+               if (terminal->pvt->incoming != NULL) {
+                       vte_terminal_process_incoming(terminal);
+                       _vte_incoming_chunks_release (terminal->pvt->incoming);
+                       terminal->pvt->incoming = NULL;
+                       terminal->pvt->input_bytes = 0;
+               }
+               g_array_set_size(terminal->pvt->pending, 0);
+               vte_terminal_stop_processing (terminal);
+
+               /* Clear the outgoing buffer as well. */
+               _vte_buffer_clear(terminal->pvt->outgoing);
+
+                vte_pty_close(pvt->pty);
+                g_object_unref(pvt->pty);
+                pvt->pty = NULL;
+        }
+
+        if (pty == NULL) {
+                pvt->pty = NULL;
+                g_object_notify(object, "pty");
+                g_object_notify(object, "pty-object");
+                g_object_thaw_notify(object);
+                return;
+        }
+
+        pvt->pty = g_object_ref(pty);
+        pty_master = vte_pty_get_fd(pvt->pty);
+
+        pvt->pty_channel = g_io_channel_unix_new (pty_master);
+        g_io_channel_set_close_on_unref (pvt->pty_channel, FALSE);
+
+        /* FIXMEchpe: vte_pty_open_unix98 does the inverse ... */
+        /* Set the pty to be non-blocking. */
+        flags = fcntl(pty_master, F_GETFL);
+        if ((flags & O_NONBLOCK) == 0) {
+                fcntl(pty_master, F_SETFL, flags | O_NONBLOCK);
+        }
+
+        vte_terminal_set_size(terminal,
+                              terminal->column_count,
+                              terminal->row_count);
+
+        _vte_terminal_setup_utf8 (terminal);
+
+        /* Open channels to listen for input on. */
+        _vte_terminal_connect_pty_read (terminal);
+
+        g_object_notify(object, "pty");
+        g_object_notify(object, "pty-object");
+
+        g_object_thaw_notify(object);
+}
+
+/**
+ * vte_terminal_get_pty:
+ * @terminal: a #VteTerminal
+ *
+ * Returns the file descriptor of the master end of @terminal's PTY.
+ *
+ * Return value: the file descriptor, or -1 if the terminal has no PTY.
+ *
+ * Since: 0.20
+ *
+ * Deprecated: 0.26: Use vte_terminal_get_pty_object() and vte_pty_get_fd()
+ */
+int
+vte_terminal_get_pty(VteTerminal *terminal)
+{
+        VteTerminalPrivate *pvt;
+
+        g_return_val_if_fail (VTE_IS_TERMINAL (terminal), -1);
+
+        pvt = terminal->pvt;
+        if (pvt->pty != NULL)
+                return vte_pty_get_fd(pvt->pty);
+
+        return -1;
+}
+
+/**
+ * vte_terminal_get_pty_object:
+ * @terminal: a #VteTerminal
+ *
+ * Returns the #VtePty of @terminal.
+ *
+ * Returns: (transfer none): a #VtePty, or %NULL
+ *
+ * Since: 0.26
+ */
+VtePty *
+vte_terminal_get_pty_object(VteTerminal *terminal)
+{
+        g_return_val_if_fail (VTE_IS_TERMINAL (terminal), NULL);
+
+        return terminal->pvt->pty;
+}
+
+/**
+ * vte_terminal_get_child_exit_status:
+ * @terminal: a #VteTerminal
+ *
+ * Gets the exit status of the command started by vte_terminal_fork_command().
+ * See your C library's documentation for more details on how to interpret the
+ * exit status.
+ * 
+ * Note that this function may only be called from the signal handler of
+ * the #VteTerminal::child-exited signal.
+ * 
+ * Returns: the child's exit status
+ * 
+ * Since: 0.20
+ */
+int
+vte_terminal_get_child_exit_status(VteTerminal *terminal)
+{
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), -1);
+        return terminal->pvt->child_exit_status;
+}
+
+/* We need this bit of glue to ensure that accessible objects will always
+ * get signals. */
+void
+_vte_terminal_accessible_ref(VteTerminal *terminal)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+       terminal->pvt->accessible_emit = TRUE;
+}
+
+char *
+_vte_terminal_get_selection(VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+
+       return g_strdup (terminal->pvt->selection);
+}
+
+void
+_vte_terminal_get_start_selection(VteTerminal *terminal, long *col, long *row)
+{
+       VteVisualPosition ss;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       ss = terminal->pvt->selection_start;
+
+       if (col) {
+               *col = ss.col;
+       }
+
+       if (row) {
+               *row = ss.row;
+       }
+}
+
+void
+_vte_terminal_get_end_selection(VteTerminal *terminal, long *col, long *row)
+{
+       VteVisualPosition se;
+
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       se = terminal->pvt->selection_end;
+
+       if (col) {
+               *col = se.col;
+       }
+
+       if (row) {
+               *row = se.row;
+       }
+}
+
+void
+_vte_terminal_select_text(VteTerminal *terminal,
+                         long start_col, long start_row,
+                         long end_col, long end_row,
+                         int start_offset, int end_offset)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       vte_terminal_deselect_all (terminal);
+
+       terminal->pvt->selection_type = selection_type_char;
+       terminal->pvt->selecting_had_delta = TRUE;
+       terminal->pvt->selection_start.col = start_col;
+       terminal->pvt->selection_start.row = start_row;
+       terminal->pvt->selection_end.col = end_col;
+       terminal->pvt->selection_end.row = end_row;
+       vte_terminal_copy_primary(terminal);
+       vte_terminal_emit_selection_changed(terminal);
+
+       _vte_invalidate_region (terminal,
+                       MIN (start_col, end_col), MAX (start_col, end_col),
+                       MIN (start_row, end_row), MAX (start_row, end_row),
+                       FALSE);
+
+}
+
+void
+_vte_terminal_remove_selection(VteTerminal *terminal)
+{
+       vte_terminal_deselect_all (terminal);
+}
+
+static void
+_vte_terminal_select_empty_at(VteTerminal *terminal,
+                             long col, long row)
+{
+       _vte_terminal_select_text(terminal, col, row, col - 1, row, 0, 0);
+}
+
+static void
+add_update_timeout (VteTerminal *terminal)
+{
+       if (update_timeout_tag == 0) {
+               _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                               "Starting update timeout\n");
+               update_timeout_tag =
+                       g_timeout_add_full (GDK_PRIORITY_REDRAW,
+                                       VTE_UPDATE_TIMEOUT,
+                                       update_timeout, NULL,
+                                       NULL);
+       }
+       if (in_process_timeout == FALSE &&
+                       process_timeout_tag != 0) {
+               _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                               "Removing process timeout\n");
+               g_source_remove (process_timeout_tag);
+               process_timeout_tag = 0;
+       }
+       if (terminal->pvt->active == NULL) {
+               _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                               "Adding terminal to active list\n");
+               terminal->pvt->active = active_terminals =
+                       g_list_prepend (active_terminals, terminal);
+       }
+
+}
+static void
+reset_update_regions (VteTerminal *terminal)
+{
+       if (terminal->pvt->update_regions != NULL) {
+               g_slist_foreach (terminal->pvt->update_regions,
+                               (GFunc)gdk_region_destroy, NULL);
+               g_slist_free (terminal->pvt->update_regions);
+               terminal->pvt->update_regions = NULL;
+       }
+       /* the invalidated_all flag also marks whether to skip processing
+        * due to the widget being invisible */
+       terminal->pvt->invalidated_all =
+               terminal->pvt->visibility_state==GDK_VISIBILITY_FULLY_OBSCURED;
+}
+
+static void
+remove_from_active_list (VteTerminal *terminal)
+{
+       if (terminal->pvt->active != NULL
+                       && terminal->pvt->update_regions == NULL) {
+               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                       "Removing terminal from active list\n");
+               active_terminals = g_list_delete_link (active_terminals,
+                               terminal->pvt->active);
+               terminal->pvt->active = NULL;
+
+               if (active_terminals == NULL) {
+                       if (in_process_timeout == FALSE &&
+                                       process_timeout_tag != 0) {
+                               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                                               "Removing process timeout\n");
+                               g_source_remove (process_timeout_tag);
+                               process_timeout_tag = 0;
+                       }
+                       if (in_update_timeout == FALSE &&
+                                       update_timeout_tag != 0) {
+                               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                                               "Removing update timeout\n");
+                               g_source_remove (update_timeout_tag);
+                               update_timeout_tag = 0;
+                       }
+               }
+       }
+}
+static void
+remove_update_timeout (VteTerminal *terminal)
+{
+       reset_update_regions (terminal);
+       remove_from_active_list (terminal);
+}
+
+static void
+vte_terminal_add_process_timeout (VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                       "Adding terminal to active list\n");
+       terminal->pvt->active = active_terminals =
+               g_list_prepend (active_terminals, terminal);
+       if (update_timeout_tag == 0 &&
+                       process_timeout_tag == 0) {
+               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                               "Starting process timeout\n");
+               process_timeout_tag =
+                       g_timeout_add (VTE_DISPLAY_TIMEOUT,
+                                       process_timeout, NULL);
+       }
+}
+static inline gboolean
+vte_terminal_is_processing (VteTerminal *terminal)
+{
+       return terminal->pvt->active != NULL;
+}
+static inline void
+vte_terminal_start_processing (VteTerminal *terminal)
+{
+       if (!vte_terminal_is_processing (terminal)) {
+               vte_terminal_add_process_timeout (terminal);
+       }
+}
+
+static void
+vte_terminal_stop_processing (VteTerminal *terminal)
+{
+       remove_from_active_list (terminal);
+}
+
+static inline gboolean
+need_processing (VteTerminal *terminal)
+{
+       return _vte_incoming_chunks_length (terminal->pvt->incoming) != 0;
+}
+
+/* Emit an "icon-title-changed" signal. */
+static void
+vte_terminal_emit_icon_title_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `icon-title-changed'.\n");
+       g_signal_emit_by_name(terminal, "icon-title-changed");
+}
+
+/* Emit a "window-title-changed" signal. */
+static void
+vte_terminal_emit_window_title_changed(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `window-title-changed'.\n");
+       g_signal_emit_by_name(terminal, "window-title-changed");
+}
+
+static void
+vte_terminal_emit_pending_signals(VteTerminal *terminal)
+{
+        GObject *object;
+       GdkWindow *window;
+
+       object = G_OBJECT (terminal);
+       window = gtk_widget_get_window (&terminal->widget);
+
+        g_object_freeze_notify(object);
+
+       vte_terminal_emit_adjustment_changed (terminal);
+
+       if (terminal->pvt->screen->status_line_changed) {
+               _vte_terminal_emit_status_line_changed (terminal);
+               terminal->pvt->screen->status_line_changed = FALSE;
+       }
+
+       if (terminal->pvt->window_title_changed) {
+               g_free (terminal->window_title);
+               terminal->window_title = terminal->pvt->window_title_changed;
+               terminal->pvt->window_title_changed = NULL;
+
+               if (window)
+                       gdk_window_set_title (window, terminal->window_title);
+               vte_terminal_emit_window_title_changed(terminal);
+                g_object_notify(object, "window-title");
+       }
+
+       if (terminal->pvt->icon_title_changed) {
+               g_free (terminal->icon_title);
+               terminal->icon_title = terminal->pvt->icon_title_changed;
+               terminal->pvt->icon_title_changed = NULL;
+
+               if (window)
+                       gdk_window_set_icon_name (window, terminal->icon_title);
+               vte_terminal_emit_icon_title_changed(terminal);
+                g_object_notify(object, "icon-title");
+       }
+
+       /* Flush any pending "inserted" signals. */
+       vte_terminal_emit_cursor_moved(terminal);
+       vte_terminal_emit_pending_text_signals(terminal, 0);
+       vte_terminal_emit_contents_changed (terminal);
+
+        g_object_thaw_notify(object);
+}
+
+static void time_process_incoming (VteTerminal *terminal)
+{
+       gdouble elapsed;
+       glong target;
+       g_timer_reset (process_timer);
+       vte_terminal_process_incoming (terminal);
+       elapsed = g_timer_elapsed (process_timer, NULL) * 1000;
+       target = VTE_MAX_PROCESS_TIME / elapsed * terminal->pvt->input_bytes;
+       terminal->pvt->max_input_bytes =
+               (terminal->pvt->max_input_bytes + target) / 2;
+}
+
+
+/* This function is called after DISPLAY_TIMEOUT ms.
+ * It makes sure initial output is never delayed by more than DISPLAY_TIMEOUT
+ */
+static gboolean
+process_timeout (gpointer data)
+{
+       GList *l, *next;
+       gboolean again;
+
+       GDK_THREADS_ENTER();
+
+       in_process_timeout = TRUE;
+
+       _vte_debug_print (VTE_DEBUG_WORK, "<");
+       _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                       "Process timeout:  %d active\n",
+                       g_list_length (active_terminals));
+
+       for (l = active_terminals; l != NULL; l = next) {
+               VteTerminal *terminal = l->data;
+               gboolean active = FALSE;
+
+               next = g_list_next (l);
+
+               if (l != active_terminals) {
+                       _vte_debug_print (VTE_DEBUG_WORK, "T");
+               }
+               if (terminal->pvt->pty_channel != NULL) {
+                       if (terminal->pvt->pty_input_active ||
+                                       terminal->pvt->pty_input_source == 0) {
+                               terminal->pvt->pty_input_active = FALSE;
+                               vte_terminal_io_read (terminal->pvt->pty_channel,
+                                               G_IO_IN, terminal);
+                       }
+                       _vte_terminal_enable_input_source (terminal);
+               }
+               if (need_processing (terminal)) {
+                       active = TRUE;
+                       if (VTE_MAX_PROCESS_TIME) {
+                               time_process_incoming (terminal);
+                       } else {
+                               vte_terminal_process_incoming(terminal);
+                       }
+                       terminal->pvt->input_bytes = 0;
+               } else
+                       vte_terminal_emit_pending_signals (terminal);
+               if (!active && terminal->pvt->update_regions == NULL) {
+                       if (terminal->pvt->active != NULL) {
+                               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                                               "Removing terminal from active list [process]\n");
+                               active_terminals = g_list_delete_link (
+                                               active_terminals,
+                                               terminal->pvt->active);
+                               terminal->pvt->active = NULL;
+                       }
+               }
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, ">");
+
+       if (active_terminals && update_timeout_tag == 0) {
+               again = TRUE;
+       } else {
+               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                               "Stoping process timeout\n");
+               process_timeout_tag = 0;
+               again = FALSE;
+       }
+
+       in_process_timeout = FALSE;
+
+       GDK_THREADS_LEAVE();
+
+       if (again) {
+               /* Force us to relinquish the CPU as the child is running
+                * at full tilt and making us run to keep up...
+                */
+               g_usleep (0);
+       } else if (update_timeout_tag == 0) {
+               /* otherwise free up memory used to capture incoming data */
+               prune_chunks (10);
+       }
+
+       return again;
+}
+
+
+static gboolean
+update_regions (VteTerminal *terminal)
+{
+       GSList *l;
+       GdkRegion *region;
+       GdkWindow *window;
+
+       if (G_UNLIKELY (! gtk_widget_is_drawable (&terminal->widget)
+                               || terminal->pvt->visibility_state == GDK_VISIBILITY_FULLY_OBSCURED)) {
+               reset_update_regions (terminal);
+               return FALSE;
+       }
+
+       if (G_UNLIKELY (!terminal->pvt->update_regions))
+               return FALSE;
+
+
+       l = terminal->pvt->update_regions;
+       if (g_slist_next (l) != NULL) {
+               /* amalgamate into one super-region */
+               region = gdk_region_new ();
+               do {
+                       gdk_region_union (region, l->data);
+                       gdk_region_destroy (l->data);
+               } while ((l = g_slist_next (l)) != NULL);
+       } else {
+               region = l->data;
+       }
+       g_slist_free (terminal->pvt->update_regions);
+       terminal->pvt->update_regions = NULL;
+       terminal->pvt->invalidated_all = FALSE;
+
+       /* and perform the merge with the window visible area */
+       window = gtk_widget_get_window (&terminal->widget);
+       gdk_window_invalidate_region (window, region, FALSE);
+       gdk_window_process_updates (window, FALSE);
+       gdk_region_destroy (region);
+
+       _vte_debug_print (VTE_DEBUG_WORK, "-");
+
+       return TRUE;
+}
+
+static gboolean
+update_repeat_timeout (gpointer data)
+{
+       GList *l, *next;
+       gboolean again;
+
+       GDK_THREADS_ENTER();
+
+       in_update_timeout = TRUE;
+
+       _vte_debug_print (VTE_DEBUG_WORK, "[");
+       _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                       "Repeat timeout:  %d active\n",
+                       g_list_length (active_terminals));
+
+       for (l = active_terminals; l != NULL; l = next) {
+               VteTerminal *terminal = l->data;
+
+               next = g_list_next (l);
+
+               if (l != active_terminals) {
+                       _vte_debug_print (VTE_DEBUG_WORK, "T");
+               }
+               if (terminal->pvt->pty_channel != NULL) {
+                       if (terminal->pvt->pty_input_active ||
+                                       terminal->pvt->pty_input_source == 0) {
+                               terminal->pvt->pty_input_active = FALSE;
+                               vte_terminal_io_read (terminal->pvt->pty_channel,
+                                               G_IO_IN, terminal);
+                       }
+                       _vte_terminal_enable_input_source (terminal);
+               }
+               if (terminal->pvt->bg_update_pending) {
+                       vte_terminal_background_update (terminal);
+               }
+               vte_terminal_emit_adjustment_changed (terminal);
+               if (need_processing (terminal)) {
+                       if (VTE_MAX_PROCESS_TIME) {
+                               time_process_incoming (terminal);
+                       } else {
+                               vte_terminal_process_incoming (terminal);
+                       }
+                       terminal->pvt->input_bytes = 0;
+               } else
+                       vte_terminal_emit_pending_signals (terminal);
+
+               again = update_regions (terminal);
+               if (!again) {
+                       if (terminal->pvt->active != NULL) {
+                               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                                               "Removing terminal from active list [update]\n");
+                               active_terminals = g_list_delete_link (
+                                               active_terminals,
+                                               terminal->pvt->active);
+                               terminal->pvt->active = NULL;
+                       }
+               }
+       }
+
+
+       if (active_terminals != NULL) {
+               /* remove the idle source, and draw non-Terminals
+                * (except for gdk/{directfb,quartz}!)
+                */
+               gdk_window_process_all_updates ();
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, "]");
+
+       /* We only stop the timer if no update request was received in this
+        * past cycle.
+        */
+       again = TRUE;
+       if (active_terminals == NULL) {
+               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                               "Stoping update timeout\n");
+               update_timeout_tag = 0;
+               again = FALSE;
+       }
+
+       in_update_timeout = FALSE;
+
+       GDK_THREADS_LEAVE();
+
+       if (again) {
+               /* Force us to relinquish the CPU as the child is running
+                * at full tilt and making us run to keep up...
+                */
+               g_usleep (0);
+       } else {
+               /* otherwise free up memory used to capture incoming data */
+               prune_chunks (10);
+       }
+
+       return again;
+}
+
+static gboolean
+update_timeout (gpointer data)
+{
+       GList *l, *next;
+       gboolean redraw = FALSE;
+
+       GDK_THREADS_ENTER();
+
+       in_update_timeout = TRUE;
+
+       _vte_debug_print (VTE_DEBUG_WORK, "{");
+       _vte_debug_print (VTE_DEBUG_TIMEOUT,
+                       "Update timeout:  %d active\n",
+                       g_list_length (active_terminals));
+
+       if (process_timeout_tag != 0) {
+               _vte_debug_print(VTE_DEBUG_TIMEOUT,
+                               "Removing process timeout\n");
+               g_source_remove (process_timeout_tag);
+               process_timeout_tag = 0;
+       }
+
+       for (l = active_terminals; l != NULL; l = next) {
+               VteTerminal *terminal = l->data;
+
+               next = g_list_next (l);
+
+               if (l != active_terminals) {
+                       _vte_debug_print (VTE_DEBUG_WORK, "T");
+               }
+               if (terminal->pvt->pty_channel != NULL) {
+                       if (terminal->pvt->pty_input_active ||
+                                       terminal->pvt->pty_input_source == 0) {
+                               terminal->pvt->pty_input_active = FALSE;
+                               vte_terminal_io_read (terminal->pvt->pty_channel,
+                                               G_IO_IN, terminal);
+                       }
+                       _vte_terminal_enable_input_source (terminal);
+               }
+               if (terminal->pvt->bg_update_pending) {
+                       vte_terminal_background_update (terminal);
+               }
+               vte_terminal_emit_adjustment_changed (terminal);
+               if (need_processing (terminal)) {
+                       if (VTE_MAX_PROCESS_TIME) {
+                               time_process_incoming (terminal);
+                       } else {
+                               vte_terminal_process_incoming (terminal);
+                       }
+                       terminal->pvt->input_bytes = 0;
+               } else
+                       vte_terminal_emit_pending_signals (terminal);
+
+               redraw |= update_regions (terminal);
+       }
+
+       if (redraw) {
+               /* remove the idle source, and draw non-Terminals
+                * (except for gdk/{directfb,quartz}!)
+                */
+               gdk_window_process_all_updates ();
+       }
+
+       _vte_debug_print (VTE_DEBUG_WORK, "}");
+
+       /* Set a timer such that we do not invalidate for a while. */
+       /* This limits the number of times we draw to ~40fps. */
+       update_timeout_tag =
+               g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE,
+                                   VTE_UPDATE_REPEAT_TIMEOUT,
+                                   update_repeat_timeout, NULL,
+                                   NULL);
+       in_update_timeout = FALSE;
+
+       GDK_THREADS_LEAVE();
+
+       return FALSE;
+}
+
+/**
+ * vte_terminal_write_contents:
+ * @terminal: a #VteTerminal
+ * @stream: a #GOutputStream to write to
+ * @flags: a set of #VteTerminalWriteFlags
+ * @cancellable: (allow-none): a #GCancellable object, or %NULL
+ * @error: (allow-none): a #GError location to store the error occuring, or %NULL
+ *
+ * Write contents of the current contents of @terminal (including any
+ * scrollback history) to @stream according to @flags.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by triggering
+ * the cancellable object from another thread. If the operation was cancelled,
+ * the error %G_IO_ERROR_CANCELLED will be returned in @error.
+ *
+ * This is a synchronous operation and will make the widget (and input
+ * processing) during the write operation, which may take a long time
+ * depending on scrollback history and @stream availability for writing.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error
+ *
+ * Since: 0.24
+ */
+gboolean
+vte_terminal_write_contents (VteTerminal *terminal,
+                             GOutputStream *stream,
+                             VteTerminalWriteFlags flags,
+                             GCancellable *cancellable,
+                             GError **error)
+{
+        g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+        g_return_val_if_fail(G_IS_OUTPUT_STREAM(stream), FALSE);
+       return _vte_ring_write_contents (terminal->pvt->screen->row_data,
+                                        stream, flags,
+                                        cancellable, error);
+}
+
+
+/*
+ * Buffer search
+ */
+
+/* TODO Add properties & signals */
+
+/**
+ * vte_terminal_search_set_gregex:
+ * @terminal: a #VteTerminal
+ * @regex: (allow-none): a #GRegex, or %NULL
+ *
+ * Sets the #GRegex regex to search for. Unsets the search regex when passed %NULL.
+ *
+ * Since: 0.26
+ */
+void
+vte_terminal_search_set_gregex (VteTerminal *terminal,
+                               GRegex      *regex)
+{
+        g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       if (terminal->pvt->search_regex == regex)
+               return;
+
+       if (terminal->pvt->search_regex) {
+               g_regex_unref (terminal->pvt->search_regex);
+               terminal->pvt->search_regex = NULL;
+       }
+
+       if (regex)
+               terminal->pvt->search_regex = g_regex_ref (regex);
+
+       _vte_invalidate_all (terminal);
+}
+
+/**
+ * vte_terminal_search_get_gregex:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: (transfer none): the search #GRegex regex set in @terminal, or %NULL
+ *
+ * Since: 0.26
+ */
+GRegex *
+vte_terminal_search_get_gregex (VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+
+       return terminal->pvt->search_regex;
+}
+
+/**
+ * vte_terminal_search_set_wrap_around:
+ * @terminal: a #VteTerminal
+ * @wrap_around: whether search should wrap
+ *
+ * Sets whether search should wrap around to the beginning of the
+ * terminal content when reaching its end.
+ * 
+ * Since: 0.26
+ */
+void
+vte_terminal_search_set_wrap_around (VteTerminal *terminal,
+                                    gboolean     wrap_around)
+{
+       g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+       terminal->pvt->search_wrap_around = !!wrap_around;
+}
+
+/**
+ * vte_terminal_search_get_wrap_around:
+ * @terminal: a #VteTerminal
+ *
+ * Returns: whether searching will wrap around
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_terminal_search_get_wrap_around (VteTerminal *terminal)
+{
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+
+       return terminal->pvt->search_wrap_around;
+}
+
+static gboolean
+vte_terminal_search_rows (VteTerminal *terminal,
+                         long start_row,
+                         long end_row,
+                         gboolean backward)
+{
+        VteTerminalPrivate *pvt;
+       char *row_text;
+       GMatchInfo *match_info;
+       GError *error = NULL;
+       int start, end;
+       long start_col, end_col;
+       gchar *word;
+       VteCharAttributes *ca;
+       GArray *attrs;
+       gdouble value, page_size;
+
+       pvt = terminal->pvt;
+
+       row_text = vte_terminal_get_text_range (terminal, start_row, 0, end_row, -1, NULL, NULL, NULL);
+
+       g_regex_match_full (pvt->search_regex, row_text, -1, 0, G_REGEX_MATCH_NOTEMPTY, &match_info, &error);
+       if (error) {
+               g_printerr ("Error while matching: %s\n", error->message);
+               g_error_free (error);
+               g_match_info_free (match_info);
+               g_free (row_text);
+               return TRUE;
+       }
+
+       if (!g_match_info_matches (match_info)) {
+               g_match_info_free (match_info);
+               g_free (row_text);
+               return FALSE;
+       }
+
+       word = g_match_info_fetch (match_info, 0);
+
+       /* Fetch text again, with attributes */
+       g_free (row_text);
+       if (!pvt->search_attrs)
+               pvt->search_attrs = g_array_new (FALSE, TRUE, sizeof (VteCharAttributes));
+       attrs = pvt->search_attrs;
+       row_text = vte_terminal_get_text_range (terminal, start_row, 0, end_row, -1, NULL, NULL, attrs);
+
+       /* This gives us the offset in the buffer */
+       g_match_info_fetch_pos (match_info, 0, &start, &end);
+
+       ca = &g_array_index (attrs, VteCharAttributes, start);
+       start_row = ca->row;
+       start_col = ca->column;
+       ca = &g_array_index (attrs, VteCharAttributes, end - 1);
+       end_row = ca->row;
+       end_col = ca->column;
+
+       g_free (word);
+       g_free (row_text);
+       g_match_info_free (match_info);
+
+       _vte_terminal_select_text (terminal, start_col, start_row, end_col, end_row, 0, 0);
+       /* Quite possibly the math here should not access adjustment directly... */
+       value = gtk_adjustment_get_value(terminal->adjustment);
+       page_size = gtk_adjustment_get_page_size(terminal->adjustment);
+       if (backward) {
+               if (end_row < value || end_row >= value + page_size)
+                       vte_terminal_queue_adjustment_value_changed_clamped (terminal, end_row - page_size + 
1);
+       } else {
+               if (start_row < value || start_row >= value + page_size)
+                       vte_terminal_queue_adjustment_value_changed_clamped (terminal, start_row);
+       }
+
+       return TRUE;
+}
+
+static gboolean
+vte_terminal_search_rows_iter (VteTerminal *terminal,
+                              long start_row,
+                              long end_row,
+                              gboolean backward)
+{
+       const VteRowData *row;
+       long iter_start_row, iter_end_row;
+
+       if (backward) {
+               iter_start_row = end_row;
+               while (iter_start_row > start_row) {
+                       iter_end_row = iter_start_row;
+
+                       do {
+                               iter_start_row--;
+                               row = _vte_terminal_find_row_data (terminal, iter_start_row);
+                       } while (row && row->attr.soft_wrapped);
+
+                       if (vte_terminal_search_rows (terminal, iter_start_row, iter_end_row, backward))
+                               return TRUE;
+               }
+       } else {
+               iter_end_row = start_row;
+               while (iter_end_row < end_row) {
+                       iter_start_row = iter_end_row;
+
+                       do {
+                               row = _vte_terminal_find_row_data (terminal, iter_end_row);
+                               iter_end_row++;
+                       } while (row && row->attr.soft_wrapped);
+
+                       if (vte_terminal_search_rows (terminal, iter_start_row, iter_end_row, backward))
+                               return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_search_find (VteTerminal *terminal,
+                         gboolean     backward)
+{
+        VteTerminalPrivate *pvt;
+       long buffer_start_row, buffer_end_row;
+       long last_start_row, last_end_row;
+
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+
+       pvt = terminal->pvt;
+       if (!pvt->search_regex)
+               return FALSE;
+
+       /* TODO
+        * Currently We only find one result per extended line, and ignore columns
+        * Moreover, the whole search thing is implemented very inefficiently.
+        */
+
+       buffer_start_row = _vte_ring_delta (terminal->pvt->screen->row_data);
+       buffer_end_row = _vte_ring_next (terminal->pvt->screen->row_data);
+
+       if (pvt->has_selection) {
+               last_start_row = pvt->selection_start.row;
+               last_end_row = pvt->selection_end.row + 1;
+       } else {
+               last_start_row = pvt->screen->scroll_delta + terminal->row_count;
+               last_end_row = pvt->screen->scroll_delta;
+       }
+       last_start_row = MAX (buffer_start_row, last_start_row);
+       last_end_row = MIN (buffer_end_row, last_end_row);
+
+       /* If search fails, we make an empty selection at the last searched
+        * position... */
+       if (backward) {
+               if (vte_terminal_search_rows_iter (terminal, buffer_start_row, last_start_row, backward))
+                       return TRUE;
+               if (pvt->search_wrap_around &&
+                   vte_terminal_search_rows_iter (terminal, last_end_row, buffer_end_row, backward))
+                       return TRUE;
+               if (pvt->has_selection) {
+                       if (pvt->search_wrap_around)
+                           _vte_terminal_select_empty_at (terminal,
+                                                          pvt->selection_start.col,
+                                                          pvt->selection_start.row);
+                       else
+                           _vte_terminal_select_empty_at (terminal,
+                                                          -1,
+                                                          buffer_start_row - 1);
+               }
+       } else {
+               if (vte_terminal_search_rows_iter (terminal, last_end_row, buffer_end_row, backward))
+                       return TRUE;
+               if (pvt->search_wrap_around &&
+                   vte_terminal_search_rows_iter (terminal, buffer_start_row, last_start_row, backward))
+                       return TRUE;
+               if (pvt->has_selection) {
+                       if (pvt->search_wrap_around)
+                           _vte_terminal_select_empty_at (terminal,
+                                                          pvt->selection_end.col + 1,
+                                                          pvt->selection_end.row);
+                       else
+                           _vte_terminal_select_empty_at (terminal,
+                                                          -1,
+                                                          buffer_end_row);
+               }
+       }
+
+       return FALSE;
+}
+
+/**
+ * vte_terminal_search_find_previous:
+ * @terminal: a #VteTerminal
+ *
+ * Searches the previous string matching the search regex set with
+ * vte_terminal_search_set_gregex().
+ *
+ * Returns: %TRUE if a match was found
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_terminal_search_find_previous (VteTerminal *terminal)
+{
+       return vte_terminal_search_find (terminal, TRUE);
+}
+
+/**
+ * vte_terminal_search_find_next:
+ * @terminal: a #VteTerminal
+ *
+ * Searches the next string matching the search regex set with
+ * vte_terminal_search_set_gregex().
+ *
+ * Returns: %TRUE if a match was found
+ *
+ * Since: 0.26
+ */
+gboolean
+vte_terminal_search_find_next (VteTerminal *terminal)
+{
+       return vte_terminal_search_find (terminal, FALSE);
+}
diff --git a/vte/src/vte.h b/vte/src/vte.h
new file mode 100644
index 0000000..4e514a1
--- /dev/null
+++ b/vte/src/vte.h
@@ -0,0 +1,533 @@
+/*
+ * Copyright (C) 2001,2002,2003,2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vte_h_included
+#define vte_vte_h_included
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <pango/pango.h>
+#include <gtk/gtk.h>
+
+#define __VTE_VTE_H_INSIDE__ 1
+
+#include "vtepty.h"
+#include "vtetypebuiltins.h"
+#include "vteversion.h"
+
+#undef __VTE_VTE_H_INSIDE__
+
+G_BEGIN_DECLS
+
+#ifdef VTE_SEAL_ENABLE
+#define _VTE_SEAL(name) _vte_sealed__ ## name
+#else
+#define _VTE_SEAL(name) name
+#endif
+
+#ifdef VTE_DISABLE_DEPRECATED
+#define _VTE_DEPRECATED(name) _vte_deprecated__ ## name
+#else
+#define _VTE_DEPRECATED(name) name
+#endif
+
+#define VTE_TYPE_TERMINAL            (vte_terminal_get_type())
+#define VTE_TERMINAL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), VTE_TYPE_TERMINAL, VteTerminal))
+#define VTE_TERMINAL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  VTE_TYPE_TERMINAL, 
VteTerminalClass))
+#define VTE_IS_TERMINAL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VTE_TYPE_TERMINAL))
+#define VTE_IS_TERMINAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  VTE_TYPE_TERMINAL))
+#define VTE_TERMINAL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  VTE_TYPE_TERMINAL, 
VteTerminalClass))
+
+typedef struct _VteTerminal             VteTerminal;
+typedef struct _VteTerminalPrivate      VteTerminalPrivate;
+typedef struct _VteTerminalClass        VteTerminalClass;
+typedef struct _VteTerminalClassPrivate VteTerminalClassPrivate;
+
+/**
+ * VteTerminal:
+ *
+ * All of these fields should be considered read-only and deprecated.
+ */
+struct _VteTerminal {
+       GtkWidget widget;
+        /*< private >*/
+       GtkAdjustment *_VTE_SEAL(adjustment);   /* Scrolling adjustment. */
+
+       /* Metric and sizing data. */
+       glong _VTE_SEAL(char_width), _VTE_SEAL(char_height);    /* dimensions of character cells */
+       glong _VTE_SEAL(char_ascent), _VTE_SEAL(char_descent); /* important font metrics */
+       glong _VTE_SEAL(row_count), _VTE_SEAL(column_count);    /* dimensions of the window */
+
+       /* Titles. */
+       char *_VTE_SEAL(window_title);
+       char *_VTE_SEAL(icon_title);
+
+       /*< private >*/
+       VteTerminalPrivate *pvt;
+};
+
+/**
+ * VteTerminalClass:
+ *
+ * All of these fields should be considered read-only, except for derived classes.
+ */
+struct _VteTerminalClass {
+       /*< public > */
+       /* Inherited parent class. */
+       GtkWidgetClass parent_class;
+
+       /*< protected > */
+       /* Default signal handlers. */
+       void (*eof)(VteTerminal* terminal);
+       void (*child_exited)(VteTerminal* terminal);
+       void (*emulation_changed)(VteTerminal* terminal);
+       void (*encoding_changed)(VteTerminal* terminal);
+       void (*char_size_changed)(VteTerminal* terminal, guint char_width, guint char_height);
+       void (*window_title_changed)(VteTerminal* terminal);
+       void (*icon_title_changed)(VteTerminal* terminal);
+       void (*selection_changed)(VteTerminal* terminal);
+       void (*contents_changed)(VteTerminal* terminal);
+       void (*cursor_moved)(VteTerminal* terminal);
+       void (*status_line_changed)(VteTerminal* terminal);
+       void (*commit)(VteTerminal* terminal, const gchar *text, guint size);
+
+       void (*deiconify_window)(VteTerminal* terminal);
+       void (*iconify_window)(VteTerminal* terminal);
+       void (*raise_window)(VteTerminal* terminal);
+       void (*lower_window)(VteTerminal* terminal);
+       void (*refresh_window)(VteTerminal* terminal);
+       void (*restore_window)(VteTerminal* terminal);
+       void (*maximize_window)(VteTerminal* terminal);
+       void (*resize_window)(VteTerminal* terminal, guint width, guint height);
+       void (*move_window)(VteTerminal* terminal, guint x, guint y);
+
+       void (*increase_font_size)(VteTerminal* terminal);
+       void (*decrease_font_size)(VteTerminal* terminal);
+
+       void (*text_modified)(VteTerminal* terminal);
+       void (*text_inserted)(VteTerminal* terminal);
+       void (*text_deleted)(VteTerminal* terminal);
+       void (*text_scrolled)(VteTerminal* terminal, gint delta);
+       void (*copy_clipboard)(VteTerminal* terminal);
+       void (*paste_clipboard)(VteTerminal* terminal);
+
+#if !GTK_CHECK_VERSION (2, 91, 2)
+       void (* set_scroll_adjustments) (GtkWidget *widget,
+                                        GtkAdjustment *hadjustment,
+                                        GtkAdjustment *vadjustment);
+#endif
+
+       void (*beep)(VteTerminal* terminal);
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+        /* Padding for future expansion. */
+        gpointer padding[16];
+#else
+       /* Padding for future expansion. */
+       void (*vte_reserved3)(void);
+       void (*vte_reserved4)(void);
+
+       /*< private > */
+       /* Signals we might emit. */
+        guint _VTE_DEPRECATED(eof_signal);
+        guint _VTE_DEPRECATED(child_exited_signal);
+        guint _VTE_DEPRECATED(emulation_changed_signal);
+        guint _VTE_DEPRECATED(encoding_changed_signal);
+        guint _VTE_DEPRECATED(char_size_changed_signal);
+        guint _VTE_DEPRECATED(window_title_changed_signal);
+        guint _VTE_DEPRECATED(icon_title_changed_signal);
+        guint _VTE_DEPRECATED(selection_changed_signal);
+        guint _VTE_DEPRECATED(contents_changed_signal);
+        guint _VTE_DEPRECATED(cursor_moved_signal);
+        guint _VTE_DEPRECATED(status_line_changed_signal);
+        guint _VTE_DEPRECATED(commit_signal);
+        guint _VTE_DEPRECATED(deiconify_window_signal);
+        guint _VTE_DEPRECATED(iconify_window_signal);
+        guint _VTE_DEPRECATED(raise_window_signal);
+        guint _VTE_DEPRECATED(lower_window_signal);
+        guint _VTE_DEPRECATED(refresh_window_signal);
+        guint _VTE_DEPRECATED(restore_window_signal);
+        guint _VTE_DEPRECATED(maximize_window_signal);
+        guint _VTE_DEPRECATED(resize_window_signal);
+        guint _VTE_DEPRECATED(move_window_signal);
+        guint _VTE_DEPRECATED(increase_font_size_signal);
+        guint _VTE_DEPRECATED(decrease_font_size_signal);
+        guint _VTE_DEPRECATED(text_modified_signal);
+        guint _VTE_DEPRECATED(text_inserted_signal);
+        guint _VTE_DEPRECATED(text_deleted_signal);
+        guint _VTE_DEPRECATED(text_scrolled_signal);
+        guint _VTE_DEPRECATED(reserved1);
+        guint _VTE_DEPRECATED(reserved2);
+        guint _VTE_DEPRECATED(reserved3);
+        guint _VTE_DEPRECATED(reserved4);
+        guint _VTE_DEPRECATED(reserved5);
+        guint _VTE_DEPRECATED(reserved6);
+#endif
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+        VteTerminalClassPrivate *priv;
+#endif
+};
+
+/**
+ * VteTerminalEraseBinding:
+ * @VTE_ERASE_AUTO: For backspace, attempt to determine the right value from the terminal's IO settings.  
For delete, use the control sequence.
+ * @VTE_ERASE_ASCII_BACKSPACE: Send an ASCII backspace character (0x08).
+ * @VTE_ERASE_ASCII_DELETE: Send an ASCII delete character (0x7F).
+ * @VTE_ERASE_DELETE_SEQUENCE: Send the "@@7" control sequence.
+ * @VTE_ERASE_TTY: Send terminal's "erase" setting.
+ *
+ * An enumerated type which can be used to indicate which string the terminal
+ * should send to an application when the user presses the Delete or Backspace
+ * keys.
+ */
+typedef enum {
+       VTE_ERASE_AUTO,
+       VTE_ERASE_ASCII_BACKSPACE,
+       VTE_ERASE_ASCII_DELETE,
+       VTE_ERASE_DELETE_SEQUENCE,
+       VTE_ERASE_TTY
+} VteTerminalEraseBinding;
+
+/**
+ * VteTerminalCursorBlinkMode:
+ * @VTE_CURSOR_BLINK_SYSTEM: Follow GTK+ settings for cursor blinking.
+ * @VTE_CURSOR_BLINK_ON: Cursor blinks.
+ * @VTE_CURSOR_BLINK_OFF: Cursor does not blink.
+ *
+ * An enumerated type which can be used to indicate the cursor blink mode
+ * for the terminal.
+ */
+typedef enum {
+        VTE_CURSOR_BLINK_SYSTEM,
+        VTE_CURSOR_BLINK_ON,
+        VTE_CURSOR_BLINK_OFF
+} VteTerminalCursorBlinkMode;
+
+/**
+ * VteTerminalCursorShape:
+ * @VTE_CURSOR_SHAPE_BLOCK: Draw a block cursor.  This is the default.
+ * @VTE_CURSOR_SHAPE_IBEAM: Draw a vertical bar on the left side of character.
+ * This is similar to the default cursor for other GTK+ widgets.
+ * @VTE_CURSOR_SHAPE_UNDERLINE: Draw a horizontal bar below the character.
+ *
+ * An enumerated type which can be used to indicate what should the terminal
+ * draw at the cursor position.
+ */
+typedef enum {
+        VTE_CURSOR_SHAPE_BLOCK,
+        VTE_CURSOR_SHAPE_IBEAM,
+        VTE_CURSOR_SHAPE_UNDERLINE
+} VteTerminalCursorShape;
+
+/* The structure we return as the supplemental attributes for strings. */
+struct _VteCharAttributes {
+        /*< private >*/
+       long row, column;
+       GdkColor fore, back;
+       guint underline:1, strikethrough:1;
+};
+typedef struct _VteCharAttributes VteCharAttributes;
+
+/* The name of the same structure in the 0.10 series, for API compatibility. */
+struct vte_char_attributes {
+        /*< private >*/
+       long row, column;
+       GdkColor fore, back;
+       guint underline:1, strikethrough:1;
+};
+
+typedef gboolean (*VteSelectionFunc)(VteTerminal *terminal,
+                                     glong column,
+                                     glong row,
+                                     gpointer data);
+
+/* The widget's type. */
+GType vte_terminal_get_type(void);
+
+GtkWidget *vte_terminal_new(void);
+
+VtePty *vte_terminal_pty_new (VteTerminal *terminal,
+                              VtePtyFlags flags,
+                              GError **error);
+
+void vte_terminal_watch_child (VteTerminal *terminal,
+                               GPid child_pid);
+
+gboolean vte_terminal_fork_command_full(VteTerminal *terminal,
+                                        VtePtyFlags pty_flags,
+                                        const char *working_directory,
+                                        char **argv,
+                                        char **envv,
+                                        GSpawnFlags spawn_flags,
+                                        GSpawnChildSetupFunc child_setup,
+                                        gpointer child_setup_data,
+                                        GPid *child_pid /* out */,
+                                        GError **error);
+
+/* Send data to the terminal to display, or to the terminal's forked command
+ * to handle in some way.  If it's 'cat', they should be the same. */
+void vte_terminal_feed(VteTerminal *terminal, const char *data, glong length);
+void vte_terminal_feed_child(VteTerminal *terminal, const char *text, glong length);
+void vte_terminal_feed_child_binary(VteTerminal *terminal, const char *data, glong length);
+
+/* Copy currently-selected text to the clipboard, or from the clipboard to
+ * the terminal. */
+void vte_terminal_copy_clipboard(VteTerminal *terminal);
+void vte_terminal_paste_clipboard(VteTerminal *terminal);
+void vte_terminal_copy_primary(VteTerminal *terminal);
+void vte_terminal_paste_primary(VteTerminal *terminal);
+
+/* simple manipulation of selection */
+void vte_terminal_select_all(VteTerminal *terminal);
+void vte_terminal_select_none(VteTerminal *terminal);
+
+/* Set the terminal's size. */
+void vte_terminal_set_size(VteTerminal *terminal,
+                          glong columns, glong rows);
+
+/* Set various on-off settings. */
+void vte_terminal_set_audible_bell(VteTerminal *terminal, gboolean is_audible);
+gboolean vte_terminal_get_audible_bell(VteTerminal *terminal);
+void vte_terminal_set_visible_bell(VteTerminal *terminal, gboolean is_visible);
+gboolean vte_terminal_get_visible_bell(VteTerminal *terminal);
+void vte_terminal_set_scroll_background(VteTerminal *terminal, gboolean scroll);
+void vte_terminal_set_scroll_on_output(VteTerminal *terminal, gboolean scroll);
+void vte_terminal_set_scroll_on_keystroke(VteTerminal *terminal,
+                                         gboolean scroll);
+
+/* Set the color scheme. */
+void vte_terminal_set_color_dim(VteTerminal *terminal,
+                               const GdkColor *dim);
+void vte_terminal_set_color_bold(VteTerminal *terminal,
+                                const GdkColor *bold);
+void vte_terminal_set_color_foreground(VteTerminal *terminal,
+                                      const GdkColor *foreground);
+void vte_terminal_set_color_background(VteTerminal *terminal,
+                                      const GdkColor *background);
+void vte_terminal_set_color_cursor(VteTerminal *terminal,
+                                  const GdkColor *cursor_background);
+void vte_terminal_set_color_highlight(VteTerminal *terminal,
+                                     const GdkColor *highlight_background);
+void vte_terminal_set_colors(VteTerminal *terminal,
+                            const GdkColor *foreground,
+                            const GdkColor *background,
+                            const GdkColor *palette,
+                            glong palette_size);
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+void vte_terminal_set_color_bold_rgba(VteTerminal *terminal,
+                                      const GdkRGBA *bold);
+void vte_terminal_set_color_dim_rgba(VteTerminal *terminal,
+                                    const GdkRGBA *dim);
+void vte_terminal_set_color_foreground_rgba(VteTerminal *terminal,
+                                           const GdkRGBA *foreground);
+void vte_terminal_set_color_background_rgba(VteTerminal *terminal,
+                                           const GdkRGBA *background);
+void vte_terminal_set_color_cursor_rgba(VteTerminal *terminal,
+                                       const GdkRGBA *cursor_background);
+void vte_terminal_set_color_highlight_rgba(VteTerminal *terminal,
+                                          const GdkRGBA *highlight_background);
+void vte_terminal_set_colors_rgba(VteTerminal *terminal,
+                                 const GdkRGBA *foreground,
+                                 const GdkRGBA *background,
+                                 const GdkRGBA *palette,
+                                 gsize palette_size);
+#endif
+
+void vte_terminal_set_default_colors(VteTerminal *terminal);
+
+/* Background effects. */
+void vte_terminal_set_background_image(VteTerminal *terminal, GdkPixbuf *image);
+void vte_terminal_set_background_image_file(VteTerminal *terminal,
+                                           const char *path);
+void vte_terminal_set_background_tint_color(VteTerminal *terminal,
+                                           const GdkColor *color);
+void vte_terminal_set_background_saturation(VteTerminal *terminal,
+                                           double saturation);
+void vte_terminal_set_background_transparent(VteTerminal *terminal,
+                                            gboolean transparent);
+void vte_terminal_set_opacity(VteTerminal *terminal, guint16 opacity);
+
+/* Set whether or not the cursor blinks. */
+void vte_terminal_set_cursor_blink_mode(VteTerminal *terminal,
+                                       VteTerminalCursorBlinkMode mode);
+VteTerminalCursorBlinkMode vte_terminal_get_cursor_blink_mode(VteTerminal *terminal);
+
+/* Set cursor shape */
+void vte_terminal_set_cursor_shape(VteTerminal *terminal,
+                                  VteTerminalCursorShape shape);
+VteTerminalCursorShape vte_terminal_get_cursor_shape(VteTerminal *terminal);
+
+/* Set the number of scrollback lines, above or at an internal minimum. */
+void vte_terminal_set_scrollback_lines(VteTerminal *terminal, glong lines);
+
+/* Append the input method menu items to a given shell. */
+void vte_terminal_im_append_menuitems(VteTerminal *terminal,
+                                     GtkMenuShell *menushell);
+
+/* Set or retrieve the current font. */
+void vte_terminal_set_font(VteTerminal *terminal,
+                          const PangoFontDescription *font_desc);
+void vte_terminal_set_font_from_string(VteTerminal *terminal, const char *name);
+const PangoFontDescription *vte_terminal_get_font(VteTerminal *terminal);
+void vte_terminal_set_allow_bold(VteTerminal *terminal, gboolean allow_bold);
+gboolean vte_terminal_get_allow_bold(VteTerminal *terminal);
+
+/* Check if the terminal is the current selection owner. */
+gboolean vte_terminal_get_has_selection(VteTerminal *terminal);
+
+/* Set the list of word chars, optionally using hyphens to specify ranges
+ * (to get a hyphen, place it first), and check if a character is in the
+ * range. */
+void vte_terminal_set_word_chars(VteTerminal *terminal, const char *spec);
+gboolean vte_terminal_is_word_char(VteTerminal *terminal, gunichar c);
+
+/* Set what happens when the user strikes backspace or delete. */
+void vte_terminal_set_backspace_binding(VteTerminal *terminal,
+                                       VteTerminalEraseBinding binding);
+void vte_terminal_set_delete_binding(VteTerminal *terminal,
+                                    VteTerminalEraseBinding binding);
+
+/* Manipulate the autohide setting. */
+void vte_terminal_set_mouse_autohide(VteTerminal *terminal, gboolean setting);
+gboolean vte_terminal_get_mouse_autohide(VteTerminal *terminal);
+
+/* Reset the terminal, optionally clearing the tab stops and line history. */
+void vte_terminal_reset(VteTerminal *terminal,
+                        gboolean clear_tabstops,
+                       gboolean clear_history);
+
+/* Read the contents of the terminal, using a callback function to determine
+ * if a particular location on the screen (0-based) is interesting enough to
+ * include.  Each byte in the returned string will have a corresponding
+ * VteCharAttributes structure in the passed GArray, if the array was not %NULL.
+ * Note that it will have one entry per byte, not per character, so indexes
+ * should match up exactly. */
+char *vte_terminal_get_text(VteTerminal *terminal,
+                           VteSelectionFunc is_selected,
+                           gpointer user_data,
+                           GArray *attributes);
+char *vte_terminal_get_text_include_trailing_spaces(VteTerminal *terminal,
+                                                   VteSelectionFunc is_selected,
+                                                   gpointer user_data,
+                                                   GArray *attributes);
+char *vte_terminal_get_text_range(VteTerminal *terminal,
+                                 glong start_row, glong start_col,
+                                 glong end_row, glong end_col,
+                                 VteSelectionFunc is_selected,
+                                 gpointer user_data,
+                                 GArray *attributes);
+void vte_terminal_get_cursor_position(VteTerminal *terminal,
+                                     glong *column, glong *row);
+/* Display string matching:  clear all matching expressions. */
+void vte_terminal_match_clear_all(VteTerminal *terminal);
+
+/* Add a matching expression, returning the tag the widget assigns to that
+ * expression. */
+int vte_terminal_match_add_gregex(VteTerminal *terminal, GRegex *regex, GRegexMatchFlags flags);
+/* Set the cursor to be used when the pointer is over a given match. */
+void vte_terminal_match_set_cursor(VteTerminal *terminal, int tag,
+                                  GdkCursor *cursor);
+void vte_terminal_match_set_cursor_type(VteTerminal *terminal,
+                                       int tag, GdkCursorType cursor_type);
+void vte_terminal_match_set_cursor_name(VteTerminal *terminal,
+                                       int tag, const char *cursor_name);
+/* Remove a matching expression by tag. */
+void vte_terminal_match_remove(VteTerminal *terminal, int tag);
+
+/* Check if a given cell on the screen contains part of a matched string.  If
+ * it does, return the string, and store the match tag in the optional tag
+ * argument. */
+char *vte_terminal_match_check(VteTerminal *terminal,
+                              glong column, glong row,
+                              int *tag);
+
+void      vte_terminal_search_set_gregex      (VteTerminal *terminal,
+                                              GRegex      *regex);
+GRegex   *vte_terminal_search_get_gregex      (VteTerminal *terminal);
+void      vte_terminal_search_set_wrap_around (VteTerminal *terminal,
+                                              gboolean     wrap_around);
+gboolean  vte_terminal_search_get_wrap_around (VteTerminal *terminal);
+gboolean  vte_terminal_search_find_previous   (VteTerminal *terminal);
+gboolean  vte_terminal_search_find_next       (VteTerminal *terminal);
+
+
+/* Set the emulation type.  Most of the time you won't need this. */
+void vte_terminal_set_emulation(VteTerminal *terminal, const char *emulation);
+const char *vte_terminal_get_emulation(VteTerminal *terminal);
+const char *vte_terminal_get_default_emulation(VteTerminal *terminal);
+
+/* Set the character encoding.  Most of the time you won't need this. */
+void vte_terminal_set_encoding(VteTerminal *terminal, const char *codeset);
+const char *vte_terminal_get_encoding(VteTerminal *terminal);
+
+/* Get the contents of the status line. */
+const char *vte_terminal_get_status_line(VteTerminal *terminal);
+
+void vte_terminal_set_pty_object(VteTerminal *terminal, VtePty *pty);
+VtePty *vte_terminal_get_pty_object(VteTerminal *terminal);
+
+char *vte_get_user_shell (void);
+
+/* Accessors for bindings. */
+#if !GTK_CHECK_VERSION (2, 91, 2)
+GtkAdjustment *vte_terminal_get_adjustment(VteTerminal *terminal);
+#endif
+
+glong vte_terminal_get_char_width(VteTerminal *terminal);
+glong vte_terminal_get_char_height(VteTerminal *terminal);
+glong vte_terminal_get_row_count(VteTerminal *terminal);
+glong vte_terminal_get_column_count(VteTerminal *terminal);
+const char *vte_terminal_get_window_title(VteTerminal *terminal);
+const char *vte_terminal_get_icon_title(VteTerminal *terminal);
+
+int vte_terminal_get_child_exit_status(VteTerminal *terminal);
+
+
+/* Writing contents out */
+
+/**
+ * VteTerminalWriteFlags:
+ * @VTE_TERMINAL_WRITE_DEFAULT: Write contents as UTF-8 text.  This is the default.
+ *
+ * A flag type to determine how terminal contents should be written
+ * to an output stream.
+ */
+typedef enum {
+  VTE_TERMINAL_WRITE_DEFAULT = 0
+} VteTerminalWriteFlags;
+
+gboolean vte_terminal_write_contents (VteTerminal *terminal,
+                                     GOutputStream *stream,
+                                     VteTerminalWriteFlags flags,
+                                     GCancellable *cancellable,
+                                     GError **error);
+
+#undef _VTE_SEAL
+#undef _VTE_DEPRECATED
+
+G_END_DECLS
+
+#ifndef VTE_DISABLE_DEPRECATED
+#define __VTE_VTE_H_INSIDE__ 1
+#include "vtedeprecated.h"
+#undef __VTE_VTE_H_INSIDE__
+#endif /* VTE_DISABLE_DEPRECATED */
+
+#endif
diff --git a/vte/src/vteaccess.c b/vte/src/vteaccess.c
new file mode 100644
index 0000000..af3887f
--- /dev/null
+++ b/vte/src/vteaccess.c
@@ -0,0 +1,2126 @@
+/*
+ * Copyright (C) 2002,2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/**
+ * SECTION: vte-access
+ * @short_description: Accessibility peer of #VteTerminal
+ *
+ * The accessibility peer of a #VteTerminal, implementing GNOME's accessibility
+ * framework.
+ */
+
+#include <config.h>
+
+#include <atk/atk.h>
+#include <gtk/gtk.h>
+#include <string.h>
+#include "debug.h"
+#include "vte.h"
+#include "vteaccess.h"
+#include "vteint.h"
+#include "vte-gtk-compat.h"
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+#include <glib/gi18n-lib.h>
+
+enum {
+        ACTION_MENU,
+        LAST_ACTION
+};
+
+#define VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA "VteTerminalAccessiblePrivateData"
+
+typedef struct _VteTerminalAccessiblePrivate {
+       gboolean snapshot_contents_invalid;     /* This data is stale. */
+       gboolean snapshot_caret_invalid;        /* This data is stale. */
+       GString *snapshot_text;         /* Pointer to UTF-8 text. */
+       GArray *snapshot_characters;    /* Offsets to character begin points. */
+       GArray *snapshot_attributes;    /* Attributes, per byte. */
+       GArray *snapshot_linebreaks;    /* Offsets to line breaks. */
+       gint snapshot_caret;       /* Location of the cursor (in characters). */
+
+       char *action_descriptions[LAST_ACTION];
+} VteTerminalAccessiblePrivate;
+
+enum direction {
+       direction_previous = -1,
+       direction_current = 0,
+       direction_next = 1
+};
+
+static gunichar vte_terminal_accessible_get_character_at_offset(AtkText *text,
+                                                               gint offset);
+static gpointer vte_terminal_accessible_parent_class;
+
+G_DEFINE_TYPE(VteTerminalAccessibleFactory, vte_terminal_accessible_factory, ATK_TYPE_OBJECT_FACTORY)
+
+static const char *vte_terminal_accessible_action_names[] = {
+        "menu",
+        NULL
+};
+
+static const char *vte_terminal_accessible_action_descriptions[] = {
+        "Popup context menu",
+        NULL
+};
+
+/* Create snapshot private data. */
+static VteTerminalAccessiblePrivate *
+vte_terminal_accessible_new_private_data(void)
+{
+       VteTerminalAccessiblePrivate *priv;
+       priv = g_slice_new0(VteTerminalAccessiblePrivate);
+       priv->snapshot_text = NULL;
+       priv->snapshot_characters = NULL;
+       priv->snapshot_attributes = NULL;
+       priv->snapshot_linebreaks = NULL;
+       priv->snapshot_caret = -1;
+       priv->snapshot_contents_invalid = TRUE;
+       priv->snapshot_caret_invalid = TRUE;
+       return priv;
+}
+
+/* Free snapshot private data. */
+static void
+vte_terminal_accessible_free_private_data(VteTerminalAccessiblePrivate *priv)
+{
+       gint i;
+
+       g_assert(priv != NULL);
+       if (priv->snapshot_text != NULL) {
+               g_string_free(priv->snapshot_text, TRUE);
+       }
+       if (priv->snapshot_characters != NULL) {
+               g_array_free(priv->snapshot_characters, TRUE);
+       }
+       if (priv->snapshot_attributes != NULL) {
+               g_array_free(priv->snapshot_attributes, TRUE);
+       }
+       if (priv->snapshot_linebreaks != NULL) {
+               g_array_free(priv->snapshot_linebreaks, TRUE);
+       }
+       for (i = 0; i < LAST_ACTION; i++) {
+               g_free (priv->action_descriptions[i]);
+       }
+       g_slice_free(VteTerminalAccessiblePrivate, priv);
+}
+
+static gint
+offset_from_xy (VteTerminalAccessiblePrivate *priv,
+               gint x, gint y)
+{
+       gint offset;
+       gint linebreak;
+       gint next_linebreak;
+
+       if (y >= (gint) priv->snapshot_linebreaks->len)
+               y = priv->snapshot_linebreaks->len -1;
+
+       linebreak = g_array_index (priv->snapshot_linebreaks, int, y);
+       if (y + 1 == (gint) priv->snapshot_linebreaks->len)
+               next_linebreak = priv->snapshot_characters->len;
+       else
+               next_linebreak = g_array_index (priv->snapshot_linebreaks, int, y + 1);
+
+       offset = linebreak + x;
+       if (offset >= next_linebreak)
+               offset = next_linebreak -1;
+       return offset;
+}
+
+static void
+xy_from_offset (VteTerminalAccessiblePrivate *priv,
+               guint offset, gint *x, gint *y)
+{
+       guint i, linebreak;
+       gint cur_x, cur_y;
+       gint cur_offset = 0;
+
+       cur_x = -1;
+       cur_y = -1;
+       for (i = 0; i < priv->snapshot_linebreaks->len; i++) {
+               linebreak = g_array_index (priv->snapshot_linebreaks, int, i);
+               if (offset < linebreak) {
+                       cur_x = offset - cur_offset;
+                       cur_y = i - 1;
+                       break;
+
+               }  else {
+                       cur_offset = linebreak;
+               }
+       }
+       if (i == priv->snapshot_linebreaks->len) {
+               if (offset <= priv->snapshot_characters->len) {
+                       cur_x = offset - cur_offset;
+                       cur_y = i - 1;
+               }
+       }
+       *x = cur_x;
+       *y = cur_y;
+}
+
+/* "Oh yeah, that's selected.  Sure." callback. */
+static gboolean
+all_selected(VteTerminal *terminal, glong column, glong row, gpointer data)
+{
+       return TRUE;
+}
+
+static void
+emit_text_caret_moved(GObject *object, glong caret)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS|VTE_DEBUG_ALLY,
+                       "Accessibility peer emitting "
+                       "`text-caret-moved'.\n");
+       g_signal_emit_by_name(object, "text-caret-moved", caret);
+}
+
+static void
+emit_text_changed_insert(GObject *object,
+                        const char *text, glong offset, glong len)
+{
+       glong start, count;
+       if (len == 0) {
+               return;
+       }
+       /* Convert the byte offsets to character offsets. */
+       start = g_utf8_pointer_to_offset (text, text + offset);
+       count = g_utf8_pointer_to_offset (text + offset, text + offset + len);
+       _vte_debug_print(VTE_DEBUG_SIGNALS|VTE_DEBUG_ALLY,
+                       "Accessibility peer emitting "
+                       "`text-changed::insert' (%ld, %ld) (%ld, %ld).\n"
+                       "Inserted text was `%.*s'.\n",
+                       offset, len, start, count,
+                       (int) len, text + offset);
+       g_signal_emit_by_name(object, "text-changed::insert", start, count);
+}
+
+static void
+emit_text_changed_delete(GObject *object,
+                        const char *text, glong offset, glong len)
+{
+       glong start, count;
+       if (len == 0) {
+               return;
+       }
+       /* Convert the byte offsets to characters. */
+       start = g_utf8_pointer_to_offset (text, text + offset);
+       count = g_utf8_pointer_to_offset (text + offset, text + offset + len);
+       _vte_debug_print(VTE_DEBUG_SIGNALS|VTE_DEBUG_ALLY,
+                       "Accessibility peer emitting "
+                       "`text-changed::delete' (%ld, %ld) (%ld, %ld).\n"
+                       "Deleted text was `%.*s'.\n",
+                       offset, len, start, count,
+                       (int) len, text + offset);
+       g_signal_emit_by_name(object, "text-changed::delete", start, count);
+}
+
+static void
+vte_terminal_accessible_update_private_data_if_needed(AtkObject *text,
+                                                     char **old, glong *olen)
+{
+       VteTerminal *terminal;
+       VteTerminalAccessiblePrivate *priv;
+       struct _VteCharAttributes attrs;
+       char *next, *tmp;
+       long row, offset, caret;
+       long ccol, crow;
+       guint i;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+
+       /* Retrieve the private data structure.  It must already exist. */
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_assert(priv != NULL);
+
+       /* If nothing's changed, just return immediately. */
+       if ((priv->snapshot_contents_invalid == FALSE) &&
+           (priv->snapshot_caret_invalid == FALSE)) {
+               if (old) {
+                       if (priv->snapshot_text) {
+                               *old = g_malloc(priv->snapshot_text->len + 1);
+                               memcpy(*old,
+                                      priv->snapshot_text->str,
+                                      priv->snapshot_text->len);
+                               (*old)[priv->snapshot_text->len] = '\0';
+                               if (olen) {
+                                       *olen = priv->snapshot_text->len;
+                               }
+                       } else {
+                               *old = g_strdup("");
+                               if (olen) {
+                                       *olen = 0;
+                               }
+                       }
+               } else {
+                       if (olen) {
+                               g_assert_not_reached();
+                       }
+               }
+               return;
+       }
+
+       /* Re-read the contents of the widget if the contents have changed. */
+       terminal = VTE_TERMINAL(gtk_accessible_get_widget(GTK_ACCESSIBLE(text)));
+       if (priv->snapshot_contents_invalid) {
+               /* Free the outdated snapshot data, unless the caller
+                * wants it. */
+               if (old) {
+                       if (priv->snapshot_text != NULL) {
+                               *old = priv->snapshot_text->str;
+                               if (olen) {
+                                       *olen = priv->snapshot_text->len;
+                               }
+                               g_string_free(priv->snapshot_text, FALSE);
+                       } else {
+                               *old = g_strdup("");
+                               if (olen) {
+                                       *olen = 0;
+                               }
+                       }
+               } else {
+                       if (olen) {
+                               g_assert_not_reached();
+                       }
+                       if (priv->snapshot_text != NULL) {
+                               g_string_free(priv->snapshot_text, TRUE);
+                       }
+               }
+               priv->snapshot_text = NULL;
+
+               /* Free the character offsets and allocate a new array to hold
+                * them. */
+               if (priv->snapshot_characters != NULL) {
+                       g_array_free(priv->snapshot_characters, TRUE);
+               }
+               priv->snapshot_characters = g_array_new(FALSE, FALSE, sizeof(int));
+
+               /* Free the attribute lists and allocate a new array to hold
+                * them. */
+               if (priv->snapshot_attributes != NULL) {
+                       g_array_free(priv->snapshot_attributes, TRUE);
+               }
+               priv->snapshot_attributes = g_array_new(FALSE, FALSE,
+                                                       sizeof(struct _VteCharAttributes));
+
+               /* Free the linebreak offsets and allocate a new array to hold
+                * them. */
+               if (priv->snapshot_linebreaks != NULL) {
+                       g_array_free(priv->snapshot_linebreaks, TRUE);
+               }
+               priv->snapshot_linebreaks = g_array_new(FALSE, FALSE, sizeof(int));
+
+               /* Get a new view of the uber-label. */
+               tmp = vte_terminal_get_text_include_trailing_spaces(terminal,
+                                                                   all_selected,
+                                                                   NULL,
+                                                                   priv->snapshot_attributes);
+               if (tmp == NULL) {
+                       /* Aaargh!  We're screwed. */
+                       return;
+               }
+               priv->snapshot_text = g_string_new_len(tmp,
+                                                      priv->snapshot_attributes->len);
+               g_free(tmp);
+
+               /* Get the offsets to the beginnings of each character. */
+               i = 0;
+               next = priv->snapshot_text->str;
+               while (i < priv->snapshot_attributes->len) {
+                       g_array_append_val(priv->snapshot_characters, i);
+                       next = g_utf8_next_char(next);
+                       if (next == NULL) {
+                               break;
+                       } else {
+                               i = next - priv->snapshot_text->str;
+                       }
+               }
+               /* Find offsets for the beginning of lines. */
+               for (i = 0, row = 0; i < priv->snapshot_characters->len; i++) {
+                       /* Get the attributes for the current cell. */
+                       offset = g_array_index(priv->snapshot_characters,
+                                              int, i);
+                       attrs = g_array_index(priv->snapshot_attributes,
+                                             struct _VteCharAttributes,
+                                             offset);
+                       /* If this character is on a row different from the row
+                        * the character we looked at previously was on, then
+                        * it's a new line and we need to keep track of where
+                        * it is. */
+                       if ((i == 0) || (attrs.row != row)) {
+                               _vte_debug_print(VTE_DEBUG_ALLY,
+                                               "Row %d/%ld begins at %u.\n",
+                                               priv->snapshot_linebreaks->len,
+                                               attrs.row, i);
+                               g_array_append_val(priv->snapshot_linebreaks, i);
+                       }
+                       row = attrs.row;
+               }
+               /* Add the final line break. */
+               g_array_append_val(priv->snapshot_linebreaks, i);
+               /* We're finished updating this. */
+               priv->snapshot_contents_invalid = FALSE;
+       }
+
+       /* Update the caret position. */
+       vte_terminal_get_cursor_position(terminal, &ccol, &crow);
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Cursor at (%ld, " "%ld).\n", ccol, crow);
+
+       /* Get the offsets to the beginnings of each line. */
+       caret = -1;
+       for (i = 0; i < priv->snapshot_characters->len; i++) {
+               /* Get the attributes for the current cell. */
+               offset = g_array_index(priv->snapshot_characters,
+                                      int, i);
+               attrs = g_array_index(priv->snapshot_attributes,
+                                     struct _VteCharAttributes,
+                                     offset);
+               /* If this cell is "before" the cursor, move the
+                * caret to be "here". */
+               if ((attrs.row < crow) ||
+                   ((attrs.row == crow) && (attrs.column < ccol))) {
+                       caret = i + 1;
+               }
+       }
+
+       /* If no cells are before the caret, then the caret must be
+        * at the end of the buffer. */
+       if (caret == -1) {
+               caret = priv->snapshot_characters->len;
+       }
+
+       /* Notify observers if the caret moved. */
+       if (caret != priv->snapshot_caret) {
+               priv->snapshot_caret = caret;
+               emit_text_caret_moved(G_OBJECT(text), caret);
+       }
+
+       /* Done updating the caret position, whether we needed to or not. */
+       priv->snapshot_caret_invalid = FALSE;
+
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Refreshed accessibility snapshot, "
+                       "%ld cells, %ld characters.\n",
+                       (long)priv->snapshot_attributes->len,
+                       (long)priv->snapshot_characters->len);
+}
+
+/* A signal handler to catch "text-inserted/deleted/modified" signals. */
+static void
+vte_terminal_accessible_text_modified(VteTerminal *terminal, gpointer data)
+{
+       VteTerminalAccessiblePrivate *priv;
+       char *old, *current;
+       glong offset, caret_offset, olen, clen;
+       gint old_snapshot_caret;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+
+       priv = g_object_get_data(G_OBJECT(data),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_assert(priv != NULL);
+
+       old_snapshot_caret = priv->snapshot_caret;
+       priv->snapshot_contents_invalid = TRUE;
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(data),
+                                                             &old, &olen);
+       g_assert(old != NULL);
+
+       current = priv->snapshot_text->str;
+       clen = priv->snapshot_text->len;
+
+       if ((guint) priv->snapshot_caret < priv->snapshot_characters->len) {
+               caret_offset = g_array_index(priv->snapshot_characters,
+                               int, priv->snapshot_caret);
+       } else {
+               /* caret was not in the line */
+               caret_offset = clen;
+       }
+
+       /* Find the offset where they don't match. */
+       offset = 0;
+       while ((offset < olen) && (offset < clen)) {
+               if (old[offset] != current[offset]) {
+                       break;
+               }
+               offset++;
+       }
+
+        /* Check if we just backspaced over a space. */
+       if ((olen == offset) &&
+                       (caret_offset < olen && old[caret_offset] == ' ') &&
+                       (old_snapshot_caret == priv->snapshot_caret + 1)) {
+                priv->snapshot_text->str = old;
+               priv->snapshot_text->len = caret_offset + 1;
+               emit_text_changed_delete(G_OBJECT(data),
+                                        old, caret_offset, 1);
+               priv->snapshot_text->str = current;
+               priv->snapshot_text->len = clen;
+       }
+
+
+       /* At least one of them had better have more data, right? */
+       if ((offset < olen) || (offset < clen)) {
+               /* Back up from both end points until we find the *last* point
+                * where they differed. */
+               gchar *op = old + olen;
+               gchar *cp = current + clen;
+               while (op > old + offset && cp > current + offset) {
+                       gchar *opp = g_utf8_prev_char (op);
+                       gchar *cpp = g_utf8_prev_char (cp);
+                       if (g_utf8_get_char (opp) != g_utf8_get_char (cpp)) {
+                               break;
+                       }
+                       op = opp;
+                       cp = cpp;
+               }
+               /* recompute the respective lengths */
+               olen = op - old;
+               clen = cp - current;
+               /* At least one of them has to have text the other
+                * doesn't. */
+               g_assert((clen > offset) || (olen > offset));
+               g_assert((clen >= 0) && (olen >= 0));
+               /* Now emit a deleted signal for text that was in the old
+                * string but isn't in the new one... */
+               if (olen > offset) {
+                       gchar *saved_str = priv->snapshot_text->str;
+                       gsize saved_len = priv->snapshot_text->len;
+
+                       priv->snapshot_text->str = old;
+                       priv->snapshot_text->len = olen;
+                       emit_text_changed_delete(G_OBJECT(data),
+                                                old,
+                                                offset,
+                                                olen - offset);
+                       priv->snapshot_text->str = saved_str;
+                       priv->snapshot_text->len = saved_len;
+               }
+               /* .. and an inserted signal for text that wasn't in the old
+                * string but is in the new one. */
+               if (clen > offset) {
+                       emit_text_changed_insert(G_OBJECT(data),
+                                                current,
+                                                offset,
+                                                clen - offset);
+               }
+       }
+
+       g_free(old);
+}
+
+/* A signal handler to catch "text-scrolled" signals. */
+static void
+vte_terminal_accessible_text_scrolled(VteTerminal *terminal,
+                                     gint howmuch,
+                                     gpointer data)
+{
+       VteTerminalAccessiblePrivate *priv;
+       struct _VteCharAttributes attr;
+       long delta;
+       guint i, len;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(howmuch != 0);
+
+       priv = g_object_get_data(G_OBJECT(data),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_assert(priv != NULL);
+
+       if (((howmuch < 0) && (howmuch <= -terminal->row_count)) ||
+           ((howmuch > 0) && (howmuch >= terminal->row_count))) {
+               /* All of the text was removed. */
+               if (priv->snapshot_text != NULL) {
+                       if (priv->snapshot_text->str != NULL) {
+                               emit_text_changed_delete(G_OBJECT(data),
+                                                        priv->snapshot_text->str,
+                                                        0,
+                                                        priv->snapshot_text->len);
+                       }
+               }
+               priv->snapshot_contents_invalid = TRUE;
+               vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(data),
+                                                                     NULL,
+                                                                     NULL);
+               /* All of the present text was added. */
+               if (priv->snapshot_text != NULL) {
+                       if (priv->snapshot_text->str != NULL) {
+                               emit_text_changed_insert(G_OBJECT(data),
+                                                        priv->snapshot_text->str,
+                                                        0,
+                                                        priv->snapshot_text->len);
+                       }
+               }
+               return;
+       }
+       /* Find the start point. */
+       delta = 0;
+       if (priv->snapshot_attributes != NULL) {
+               if (priv->snapshot_attributes->len > 0) {
+                       attr = g_array_index(priv->snapshot_attributes,
+                                            struct _VteCharAttributes,
+                                            0);
+                       delta = attr.row;
+               }
+       }
+       /* We scrolled up, so text was added at the top and removed
+        * from the bottom. */
+       if ((howmuch < 0) && (howmuch > -terminal->row_count)) {
+               gboolean inserted = FALSE;
+               howmuch = -howmuch;
+               if (priv->snapshot_attributes != NULL &&
+                               priv->snapshot_text != NULL) {
+                       /* Find the first byte that scrolled off. */
+                       for (i = 0; i < priv->snapshot_attributes->len; i++) {
+                               attr = g_array_index(priv->snapshot_attributes,
+                                               struct _VteCharAttributes,
+                                               i);
+                               if (attr.row >= delta + terminal->row_count - howmuch) {
+                                       break;
+                               }
+                       }
+                       if (i < priv->snapshot_attributes->len) {
+                               /* The rest of the string was deleted -- make a note. */
+                               emit_text_changed_delete(G_OBJECT(data),
+                                               priv->snapshot_text->str,
+                                               i,
+                                               priv->snapshot_attributes->len - i);
+                       }
+                       inserted = TRUE;
+               }
+               /* Refresh.  Note that i is now the length of the data which
+                * we expect to have left over. */
+               priv->snapshot_contents_invalid = TRUE;
+               vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(data),
+                                                                     NULL,
+                                                                     NULL);
+               /* If we now have more text than before, the initial portion
+                * was added. */
+               if (inserted) {
+                       len = priv->snapshot_text->len;
+                       if (len > i) {
+                               emit_text_changed_insert(G_OBJECT(data),
+                                                        priv->snapshot_text->str,
+                                                        0,
+                                                        len - i);
+                       }
+               }
+               return;
+       }
+       /* We scrolled down, so text was added at the bottom and removed
+        * from the top. */
+       if ((howmuch > 0) && (howmuch < terminal->row_count)) {
+               gboolean inserted = FALSE;
+               if (priv->snapshot_attributes != NULL &&
+                               priv->snapshot_text != NULL) {
+                       /* Find the first byte that wasn't scrolled off the top. */
+                       for (i = 0; i < priv->snapshot_attributes->len; i++) {
+                               attr = g_array_index(priv->snapshot_attributes,
+                                               struct _VteCharAttributes,
+                                               i);
+                               if (attr.row >= delta + howmuch) {
+                                       break;
+                               }
+                       }
+                       /* That many bytes disappeared -- make a note. */
+                       emit_text_changed_delete(G_OBJECT(data),
+                                       priv->snapshot_text->str,
+                                       0,
+                                       i);
+                       /* Figure out how much text was left, and refresh. */
+                       i = strlen(priv->snapshot_text->str + i);
+                       inserted = TRUE;
+               }
+               priv->snapshot_contents_invalid = TRUE;
+               vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(data),
+                                                                     NULL,
+                                                                     NULL);
+               /* Any newly-added string data is new, so note that it was
+                * inserted. */
+               if (inserted) {
+                       len = priv->snapshot_text->len;
+                       if (len > i) {
+                               emit_text_changed_insert(G_OBJECT(data),
+                                                        priv->snapshot_text->str,
+                                                        i,
+                                                        len - i);
+                       }
+               }
+               return;
+       }
+       g_assert_not_reached();
+}
+
+/* A signal handler to catch "cursor-moved" signals. */
+static void
+vte_terminal_accessible_invalidate_cursor(VteTerminal *terminal, gpointer data)
+{
+       VteTerminalAccessiblePrivate *priv;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+
+       priv = g_object_get_data(G_OBJECT(data),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_assert(priv != NULL);
+
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Invalidating accessibility cursor.\n");
+       priv->snapshot_caret_invalid = TRUE;
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(data),
+                                                             NULL, NULL);
+}
+
+/* Handle title changes by resetting the description. */
+static void
+vte_terminal_accessible_title_changed(VteTerminal *terminal, gpointer data)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(VTE_IS_TERMINAL(terminal));
+       atk_object_set_description(ATK_OBJECT(data), terminal->window_title);
+}
+
+/* Reflect focus-in events. */
+static gboolean
+vte_terminal_accessible_focus_in(VteTerminal *terminal, GdkEventFocus *event,
+                                gpointer data)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(VTE_IS_TERMINAL(terminal));
+       g_signal_emit_by_name(data, "focus-event", TRUE);
+       atk_object_notify_state_change(ATK_OBJECT(data),
+                                      ATK_STATE_FOCUSED, TRUE);
+
+       return FALSE;
+}
+
+/* Reflect focus-out events. */
+static gboolean
+vte_terminal_accessible_focus_out(VteTerminal *terminal, GdkEventFocus *event,
+                                 gpointer data)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(VTE_IS_TERMINAL(terminal));
+       g_signal_emit_by_name(data, "focus-event", FALSE);
+       atk_object_notify_state_change(ATK_OBJECT(data),
+                                      ATK_STATE_FOCUSED, FALSE);
+
+       return FALSE;
+}
+
+/* Reflect visibility-notify events. */
+static gboolean
+vte_terminal_accessible_visibility_notify(VteTerminal *terminal,
+                                         GdkEventVisibility *event,
+                                         gpointer data)
+{
+       GtkWidget *widget;
+       gboolean visible;
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(VTE_IS_TERMINAL(terminal));
+       visible = event->state != GDK_VISIBILITY_FULLY_OBSCURED;
+       /* The VISIBLE state indicates that this widget is "visible". */
+       atk_object_notify_state_change(ATK_OBJECT(data),
+                                      ATK_STATE_VISIBLE,
+                                      visible);
+       widget = GTK_WIDGET(terminal);
+       while (visible) {
+               if (gtk_widget_get_toplevel(widget) == widget) {
+                       break;
+               }
+               if (widget == NULL) {
+                       break;
+               }
+               visible = visible && (gtk_widget_get_visible(widget));
+               widget = gtk_widget_get_parent(widget);
+       }
+       /* The SHOWING state indicates that this widget, and all of its
+        * parents up to the toplevel, are "visible". */
+       atk_object_notify_state_change(ATK_OBJECT(data),
+                                      ATK_STATE_SHOWING,
+                                      visible);
+
+       return FALSE;
+}
+
+static void
+vte_terminal_accessible_selection_changed (VteTerminal *terminal,
+                                          gpointer data)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(data));
+       g_assert(VTE_IS_TERMINAL(terminal));
+
+       g_signal_emit_by_name (data, "text_selection_changed");
+}
+
+static void
+vte_terminal_initialize (AtkObject *obj, gpointer data)
+{
+       VteTerminal *terminal;
+       AtkObject *parent;
+
+       ATK_OBJECT_CLASS (vte_terminal_accessible_parent_class)->initialize (obj, data);
+
+       terminal = VTE_TERMINAL (data);
+
+       _vte_terminal_accessible_ref(terminal);
+
+       g_object_set_data(G_OBJECT(obj),
+                         VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA,
+                         vte_terminal_accessible_new_private_data());
+
+       g_signal_connect(terminal, "text-inserted",
+                        G_CALLBACK(vte_terminal_accessible_text_modified),
+                        obj);
+       g_signal_connect(terminal, "text-deleted",
+                        G_CALLBACK(vte_terminal_accessible_text_modified),
+                        obj);
+       g_signal_connect(terminal, "text-modified",
+                        G_CALLBACK(vte_terminal_accessible_text_modified),
+                        obj);
+       g_signal_connect(terminal, "text-scrolled",
+                        G_CALLBACK(vte_terminal_accessible_text_scrolled),
+                        obj);
+       g_signal_connect(terminal, "cursor-moved",
+                        G_CALLBACK(vte_terminal_accessible_invalidate_cursor),
+                        obj);
+       g_signal_connect(terminal, "window-title-changed",
+                        G_CALLBACK(vte_terminal_accessible_title_changed),
+                        obj);
+       g_signal_connect(terminal, "focus-in-event",
+                        G_CALLBACK(vte_terminal_accessible_focus_in),
+                        obj);
+       g_signal_connect(terminal, "focus-out-event",
+                        G_CALLBACK(vte_terminal_accessible_focus_out),
+                        obj);
+       g_signal_connect(terminal, "visibility-notify-event",
+                        G_CALLBACK(vte_terminal_accessible_visibility_notify),
+                        obj);
+       g_signal_connect(terminal, "selection-changed",
+                        G_CALLBACK(vte_terminal_accessible_selection_changed),
+                        obj);
+
+       if (GTK_IS_WIDGET(gtk_widget_get_parent(GTK_WIDGET(terminal)))) {
+               parent = gtk_widget_get_accessible(gtk_widget_get_parent ((GTK_WIDGET(terminal))));
+               if (ATK_IS_OBJECT(parent)) {
+                       atk_object_set_parent(obj, parent);
+               }
+       }
+
+       atk_object_set_name(obj, "Terminal");
+       atk_object_set_description(obj,
+                                  terminal->window_title ?
+                                  terminal->window_title :
+                                  "");
+
+       atk_object_notify_state_change(obj,
+                                      ATK_STATE_FOCUSABLE, TRUE);
+       atk_object_notify_state_change(obj,
+                                      ATK_STATE_EXPANDABLE, FALSE);
+       atk_object_notify_state_change(obj,
+                                      ATK_STATE_RESIZABLE, TRUE);
+       obj->role = ATK_ROLE_TERMINAL;
+}
+
+/**
+ * vte_terminal_accessible_new:
+ * @terminal: a #VteTerminal
+ *
+ * Creates a new accessibility peer for the terminal widget.
+ *
+ * Returns: the new #AtkObject
+ */
+AtkObject *
+vte_terminal_accessible_new(VteTerminal *terminal)
+{
+       AtkObject *accessible;
+       GObject *object;
+
+       g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL);
+
+       object = g_object_new(VTE_TYPE_TERMINAL_ACCESSIBLE, NULL);
+       accessible = ATK_OBJECT (object);
+       atk_object_initialize(accessible, terminal);
+
+       return accessible;
+}
+
+static void
+vte_terminal_accessible_finalize(GObject *object)
+{
+       VteTerminalAccessiblePrivate *priv;
+       GtkAccessible *accessible = NULL;
+        GtkWidget *widget;
+
+       _vte_debug_print(VTE_DEBUG_ALLY, "Finalizing accessible peer.\n");
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(object));
+       accessible = GTK_ACCESSIBLE(object);
+        widget = gtk_accessible_get_widget (accessible);
+
+       if (widget != NULL) {
+               g_object_remove_weak_pointer(G_OBJECT(widget),
+                                            (gpointer*)(gpointer)&widget);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_text_modified,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_text_scrolled,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_invalidate_cursor,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_title_changed,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_focus_in,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_focus_out,
+                                                    object);
+               g_signal_handlers_disconnect_matched(widget,
+                                                    G_SIGNAL_MATCH_FUNC |
+                                                    G_SIGNAL_MATCH_DATA,
+                                                    0, 0, NULL,
+                                                    vte_terminal_accessible_visibility_notify,
+                                                    object);
+       }
+       priv = g_object_get_data(object,
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       if (priv != NULL) {
+               vte_terminal_accessible_free_private_data(priv);
+               g_object_set_data(object,
+                                 VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA,
+                                 NULL);
+       }
+       G_OBJECT_CLASS(vte_terminal_accessible_parent_class)->finalize(object);
+}
+
+static gchar *
+vte_terminal_accessible_get_text(AtkText *text,
+                                gint start_offset, gint end_offset)
+{
+       VteTerminalAccessiblePrivate *priv;
+       int start, end;
+       gchar *ret;
+
+        /* Swap around if start is greater than end */
+        if (start_offset > end_offset && end_offset != -1) {
+                gint tmp;
+
+                tmp = start_offset;
+                start_offset = end_offset;
+                end_offset = tmp;
+        }
+
+       g_assert((start_offset >= 0) && (end_offset >= -1));
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Getting text from %d to %d of %d.\n",
+                       start_offset, end_offset,
+                       priv->snapshot_characters->len);
+       g_assert(ATK_IS_TEXT(text));
+
+       /* If the requested area is after all of the text, just return an
+        * empty string. */
+       if (start_offset >= (int) priv->snapshot_characters->len) {
+               return g_strdup("");
+       }
+
+       /* Map the offsets to, er, offsets. */
+       start = g_array_index(priv->snapshot_characters, int, start_offset);
+       if ((end_offset == -1) || (end_offset >= (int) priv->snapshot_characters->len) ) {
+               /* Get everything up to the end of the buffer. */
+               end = priv->snapshot_text->len;
+       } else {
+               /* Map the stopping point. */
+               end = g_array_index(priv->snapshot_characters, int, end_offset);
+       }
+       if (end <= start) {
+               ret = g_strdup ("");
+       } else {
+               ret = g_malloc(end - start + 1);
+               memcpy(ret, priv->snapshot_text->str + start, end - start);
+               ret[end - start] = '\0';
+       }
+       return ret;
+}
+
+/* Map a subsection of the text with before/at/after char/word/line specs
+ * into a run of Unicode characters.  (The interface is specifying characters,
+ * not bytes, plus that saves us from having to deal with parts of multibyte
+ * characters, which are icky.) */
+static gchar *
+vte_terminal_accessible_get_text_somewhere(AtkText *text,
+                                          gint offset,
+                                          AtkTextBoundary boundary_type,
+                                          enum direction direction,
+                                          gint *start_offset,
+                                          gint *end_offset)
+{
+       VteTerminalAccessiblePrivate *priv;
+       VteTerminal *terminal;
+       gunichar current, prev, next;
+       guint start, end, line;
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       terminal = VTE_TERMINAL(gtk_accessible_get_widget (GTK_ACCESSIBLE(text)));
+
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Getting %s %s at %d of %d.\n",
+                       (direction == direction_current) ? "this" :
+                       ((direction == direction_next) ? "next" : "previous"),
+                       (boundary_type == ATK_TEXT_BOUNDARY_CHAR) ? "char" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_LINE_START) ? "line (start)" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_LINE_END) ? "line (end)" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_WORD_START) ? "word (start)" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_WORD_END) ? "word (end)" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_SENTENCE_START) ? "sentence (start)" :
+                       ((boundary_type == ATK_TEXT_BOUNDARY_SENTENCE_END) ? "sentence (end)" : 
"unknown")))))),
+                       offset, priv->snapshot_attributes->len);
+       g_assert(priv->snapshot_text != NULL);
+       g_assert(priv->snapshot_characters != NULL);
+       if (offset >= (int) priv->snapshot_characters->len) {
+               return g_strdup("");
+       }
+       g_assert(offset < (int) priv->snapshot_characters->len);
+       g_assert(offset >= 0);
+
+       switch (boundary_type) {
+               case ATK_TEXT_BOUNDARY_CHAR:
+                       /* We're either looking at the character at this
+                        * position, the one before it, or the one after it. */
+                       offset += direction;
+                       start = MAX(offset, 0);
+                       end = MIN(offset + 1, (int) priv->snapshot_attributes->len);
+                       break;
+               case ATK_TEXT_BOUNDARY_WORD_START:
+                       /* Back up to the previous non-word-word transition. */
+                       while (offset > 0) {
+                               prev = vte_terminal_accessible_get_character_at_offset(text, offset - 1);
+                               if (vte_terminal_is_word_char(terminal, prev)) {
+                                       offset--;
+                               } else {
+                                       break;
+                               }
+                       }
+                       start = offset;
+                       /* If we started in a word and we're looking for the
+                        * word before this one, keep searching by backing up
+                        * to the previous non-word character and then searching
+                        * for the word-start before that. */
+                       if (direction == direction_previous) {
+                               while (offset > 0) {
+                                       prev = vte_terminal_accessible_get_character_at_offset(text, offset - 
1);
+                                       if (!vte_terminal_is_word_char(terminal, prev)) {
+                                               offset--;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               while (offset > 0) {
+                                       prev = vte_terminal_accessible_get_character_at_offset(text, offset - 
1);
+                                       if (vte_terminal_is_word_char(terminal, prev)) {
+                                               offset--;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               start = offset;
+                       }
+                       /* If we're looking for the word after this one,
+                        * search forward by scanning forward for the next
+                        * non-word character, then the next word character
+                        * after that. */
+                       if (direction == direction_next) {
+                               while (offset < (int) priv->snapshot_characters->len) {
+                                       next = vte_terminal_accessible_get_character_at_offset(text, offset);
+                                       if (vte_terminal_is_word_char(terminal, next)) {
+                                               offset++;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               while (offset < (int) priv->snapshot_characters->len) {
+                                       next = vte_terminal_accessible_get_character_at_offset(text, offset);
+                                       if (!vte_terminal_is_word_char(terminal, next)) {
+                                               offset++;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               start = offset;
+                       }
+                       /* Now find the end of this word. */
+                       while (offset < (int) priv->snapshot_characters->len) {
+                               current = vte_terminal_accessible_get_character_at_offset(text, offset);
+                               if (vte_terminal_is_word_char(terminal, current)) {
+                                       offset++;
+                               } else {
+                                       break;
+                               }
+
+                       }
+                       /* Now find the next non-word-word transition */
+                       while (offset < (int) priv->snapshot_characters->len) {
+                               next = vte_terminal_accessible_get_character_at_offset(text, offset);
+                               if (!vte_terminal_is_word_char(terminal, next)) {
+                                       offset++;
+                               } else {
+                                       break;
+                               }
+                       }
+                       end = offset;
+                       break;
+               case ATK_TEXT_BOUNDARY_WORD_END:
+                       /* Back up to the previous word-non-word transition. */
+                       current = vte_terminal_accessible_get_character_at_offset(text, offset);
+                       while (offset > 0) {
+                               prev = vte_terminal_accessible_get_character_at_offset(text, offset - 1);
+                               if (vte_terminal_is_word_char(terminal, prev) &&
+                                   !vte_terminal_is_word_char(terminal, current)) {
+                                       break;
+                               } else {
+                                       offset--;
+                                       current = prev;
+                               }
+                       }
+                       start = offset;
+                       /* If we're looking for the word end before this one, 
+                        * keep searching by backing up to the previous word 
+                        * character and then searching for the word-end 
+                        * before that. */
+                       if (direction == direction_previous) {
+                               while (offset > 0) {
+                                       prev = vte_terminal_accessible_get_character_at_offset(text, offset - 
1);
+                                       if (vte_terminal_is_word_char(terminal, prev)) {
+                                               offset--;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               current = vte_terminal_accessible_get_character_at_offset(text, offset);
+                               while (offset > 0) {
+                                       prev = vte_terminal_accessible_get_character_at_offset(text, offset - 
1);
+                                       if (vte_terminal_is_word_char(terminal, prev) &&
+                                           !vte_terminal_is_word_char(terminal, current)) {
+                                               break;
+                                       } else {
+                                               offset--;
+                                               current = prev;
+                                       }
+                               }
+                               start = offset;
+                       }
+                       /* If we're looking for the word end after this one,
+                        * search forward by scanning forward for the next
+                        * word character, then the next non-word character
+                        * after that. */
+                       if (direction == direction_next) {
+                               while (offset < (int) priv->snapshot_characters->len) {
+                                       current = vte_terminal_accessible_get_character_at_offset(text, 
offset);
+                                       if (!vte_terminal_is_word_char(terminal, current)) {
+                                               offset++;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               while (offset < (int) priv->snapshot_characters->len) {
+                                       current = vte_terminal_accessible_get_character_at_offset(text, 
offset);
+                                       if (vte_terminal_is_word_char(terminal, current)) {
+                                               offset++;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                               start = offset;
+                       }
+                       /* Now find the next word end. */
+                       while (offset < (int) priv->snapshot_characters->len) {
+                               current = vte_terminal_accessible_get_character_at_offset(text, offset);
+                               if (!vte_terminal_is_word_char(terminal, current)) {
+                                       offset++;
+                               } else {
+                                       break;
+                               }
+                       }
+                       while (offset < (int) priv->snapshot_characters->len) {
+                               current = vte_terminal_accessible_get_character_at_offset(text, offset);
+                               if (vte_terminal_is_word_char(terminal, current)) {
+                                       offset++;
+                               } else {
+                                       break;
+                               }
+                       }
+                       end = offset;
+                       break;
+               case ATK_TEXT_BOUNDARY_LINE_START:
+               case ATK_TEXT_BOUNDARY_LINE_END:
+                       /* Figure out which line we're on.  If the start of the
+                        * i'th line is before the offset, then i could be the
+                        * line we're looking for. */
+                       line = 0;
+                       for (line = 0;
+                            line < priv->snapshot_linebreaks->len;
+                            line++) {
+                               if (g_array_index(priv->snapshot_linebreaks,
+                                                 int, line) > offset) {
+                                       line--;
+                                       break;
+                               }
+                       }
+                       _vte_debug_print(VTE_DEBUG_ALLY,
+                                       "Character %d is on line %d.\n",
+                                       offset, line);
+                       /* Perturb the line number to handle before/at/after. */
+                       line += direction;
+                       line = MIN(line, priv->snapshot_linebreaks->len - 1);
+                       /* Read the offsets for this line. */
+                       start = g_array_index(priv->snapshot_linebreaks,
+                                                     int, line);
+                       line++;
+                       line = MIN(line, priv->snapshot_linebreaks->len - 1);
+                       end = g_array_index(priv->snapshot_linebreaks,
+                                                   int, line);
+                       _vte_debug_print(VTE_DEBUG_ALLY,
+                                       "Line runs from %d to %d.\n",
+                                       start, end);
+                       break;
+               case ATK_TEXT_BOUNDARY_SENTENCE_START:
+               case ATK_TEXT_BOUNDARY_SENTENCE_END:
+                       /* This doesn't make sense.  Fall through. */
+               default:
+                       start = end = 0;
+                       break;
+       }
+       *start_offset = start = MIN(start, priv->snapshot_characters->len - 1);
+       *end_offset = end = CLAMP(end, start, priv->snapshot_characters->len);
+       return vte_terminal_accessible_get_text(text, start, end);
+}
+
+static gchar *
+vte_terminal_accessible_get_text_before_offset(AtkText *text, gint offset,
+                                              AtkTextBoundary boundary_type,
+                                              gint *start_offset,
+                                              gint *end_offset)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       return vte_terminal_accessible_get_text_somewhere(text,
+                                                         offset,
+                                                         boundary_type,
+                                                         -1,
+                                                         start_offset,
+                                                         end_offset);
+}
+
+static gchar *
+vte_terminal_accessible_get_text_after_offset(AtkText *text, gint offset,
+                                             AtkTextBoundary boundary_type,
+                                             gint *start_offset,
+                                             gint *end_offset)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       return vte_terminal_accessible_get_text_somewhere(text,
+                                                         offset,
+                                                         boundary_type,
+                                                         1,
+                                                         start_offset,
+                                                         end_offset);
+}
+
+static gchar *
+vte_terminal_accessible_get_text_at_offset(AtkText *text, gint offset,
+                                          AtkTextBoundary boundary_type,
+                                          gint *start_offset,
+                                          gint *end_offset)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       return vte_terminal_accessible_get_text_somewhere(text,
+                                                         offset,
+                                                         boundary_type,
+                                                         0,
+                                                         start_offset,
+                                                         end_offset);
+}
+
+static gunichar
+vte_terminal_accessible_get_character_at_offset(AtkText *text, gint offset)
+{
+       VteTerminalAccessiblePrivate *priv;
+       int mapped;
+       char *unichar;
+       gunichar ret;
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+
+       g_assert(offset < (int) priv->snapshot_characters->len);
+
+       mapped = g_array_index(priv->snapshot_characters, int, offset);
+
+       unichar = vte_terminal_accessible_get_text(text, offset, offset + 1);
+       ret = g_utf8_get_char(unichar);
+       g_free(unichar);
+
+       return ret;
+}
+
+static gint
+vte_terminal_accessible_get_caret_offset(AtkText *text)
+{
+       VteTerminalAccessiblePrivate *priv;
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+
+       return priv->snapshot_caret;
+}
+
+static AtkAttributeSet *
+get_attribute_set (struct _VteCharAttributes attr)
+{
+       AtkAttributeSet *set = NULL;
+       AtkAttribute *at;
+
+       if (attr.underline) {
+               at = g_new (AtkAttribute, 1);
+               at->name = g_strdup ("underline");
+               at->value = g_strdup ("true");
+               set = g_slist_append (set, at);
+       }
+       if (attr.strikethrough) {
+               at = g_new (AtkAttribute, 1);
+               at->name = g_strdup ("strikethrough");
+               at->value = g_strdup ("true");
+               set = g_slist_append (set, at);
+       }
+       at = g_new (AtkAttribute, 1);
+       at->name = g_strdup ("fg-color");
+       at->value = g_strdup_printf ("%u,%u,%u",
+                                    attr.fore.red, attr.fore.green, attr.fore.blue);
+       set = g_slist_append (set, at);
+
+       at = g_new (AtkAttribute, 1);
+       at->name = g_strdup ("bg-color");
+       at->value = g_strdup_printf ("%u,%u,%u",
+                                    attr.back.red, attr.back.green, attr.back.blue);
+       set = g_slist_append (set, at);
+
+       return set;
+}
+
+static AtkAttributeSet *
+vte_terminal_accessible_get_run_attributes(AtkText *text, gint offset,
+                                          gint *start_offset, gint *end_offset)
+{
+       VteTerminalAccessiblePrivate *priv;
+       guint i;
+       struct _VteCharAttributes cur_attr;
+       struct _VteCharAttributes attr;
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+
+       attr = g_array_index (priv->snapshot_attributes,
+                             struct _VteCharAttributes,
+                             offset);
+       *start_offset = 0;
+       for (i = offset; i--;) {
+               cur_attr = g_array_index (priv->snapshot_attributes,
+                                     struct _VteCharAttributes,
+                                     i);
+               if (!gdk_color_equal (&cur_attr.fore, &attr.fore) ||
+                   !gdk_color_equal (&cur_attr.back, &attr.back) ||
+                   cur_attr.underline != attr.underline ||
+                   cur_attr.strikethrough != attr.strikethrough) {
+                       *start_offset = i + 1;
+                       break;
+               }
+       }
+       *end_offset = priv->snapshot_attributes->len - 1;
+       for (i = offset + 1; i < priv->snapshot_attributes->len; i++) {
+               cur_attr = g_array_index (priv->snapshot_attributes,
+                                     struct _VteCharAttributes,
+                                     i);
+               if (!gdk_color_equal (&cur_attr.fore, &attr.fore) ||
+                   !gdk_color_equal (&cur_attr.back, &attr.back) ||
+                   cur_attr.underline != attr.underline ||
+                   cur_attr.strikethrough != attr.strikethrough) {
+                       *end_offset = i - 1;
+                       break;
+               }
+       }
+
+       return get_attribute_set (attr);
+}
+
+static AtkAttributeSet *
+vte_terminal_accessible_get_default_attributes(AtkText *text)
+{
+       return NULL;
+}
+
+static void
+vte_terminal_accessible_get_character_extents(AtkText *text, gint offset,
+                                             gint *x, gint *y,
+                                             gint *width, gint *height,
+                                             AtkCoordType coords)
+{
+       VteTerminalAccessiblePrivate *priv;
+       VteTerminal *terminal;
+       glong char_width, char_height;
+       gint base_x, base_y;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       terminal = VTE_TERMINAL (gtk_accessible_get_widget (GTK_ACCESSIBLE (text)));
+
+       atk_component_get_position (ATK_COMPONENT (text), &base_x, &base_y, coords);
+       xy_from_offset (priv, offset, x, y);
+       char_width = vte_terminal_get_char_width (terminal);
+       char_height = vte_terminal_get_char_height (terminal);
+       *x *= char_width;
+       *y *= char_height;
+       *width = char_width;
+       *height = char_height;
+       *x += base_x;
+       *y += base_y;
+}
+
+static gint
+vte_terminal_accessible_get_character_count(AtkText *text)
+{
+       VteTerminalAccessiblePrivate *priv;
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+
+       return priv->snapshot_attributes->len;
+}
+
+static gint
+vte_terminal_accessible_get_offset_at_point(AtkText *text,
+                                           gint x, gint y,
+                                           AtkCoordType coords)
+{
+       VteTerminalAccessiblePrivate *priv;
+       VteTerminal *terminal;
+       glong char_width, char_height;
+       gint base_x, base_y;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       terminal = VTE_TERMINAL (gtk_accessible_get_widget (GTK_ACCESSIBLE (text)));
+
+       atk_component_get_position (ATK_COMPONENT (text), &base_x, &base_y, coords);
+       char_width = vte_terminal_get_char_width (terminal);
+       char_height = vte_terminal_get_char_height (terminal);
+       x -= base_x;
+       y -= base_y;
+       x /= char_width;
+       y /= char_height;
+       return offset_from_xy (priv, x, y);
+}
+
+static gint
+vte_terminal_accessible_get_n_selections(AtkText *text)
+{
+       GtkWidget *widget;
+       VteTerminal *terminal;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(text));
+       if (widget == NULL) {
+               /* State is defunct */
+               return -1;
+       }
+       g_assert(VTE_IS_TERMINAL (widget));
+       terminal = VTE_TERMINAL (widget);
+       return (vte_terminal_get_has_selection (terminal)) ? 1 : 0;
+}
+
+static gchar *
+vte_terminal_accessible_get_selection(AtkText *text, gint selection_number,
+                                     gint *start_offset, gint *end_offset)
+{
+       GtkWidget *widget;
+       VteTerminal *terminal;
+       VteTerminalAccessiblePrivate *priv;
+       long start_x, start_y, end_x, end_y;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(text));
+       if (widget == NULL) {
+               /* State is defunct */
+               return NULL;
+       }
+       g_assert(VTE_IS_TERMINAL (widget));
+       terminal = VTE_TERMINAL (widget);
+       if (!vte_terminal_get_has_selection (terminal)) {
+               return NULL;
+       }
+       if (selection_number != 0) {
+               return NULL;
+       }
+
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       _vte_terminal_get_start_selection (terminal, &start_x, &start_y);
+       *start_offset = offset_from_xy (priv, start_x, start_y);
+       _vte_terminal_get_end_selection (terminal, &end_x, &end_y);
+       *end_offset = offset_from_xy (priv, end_x, end_y);
+       return _vte_terminal_get_selection (terminal);
+}
+
+static gboolean
+vte_terminal_accessible_add_selection(AtkText *text,
+                                     gint start_offset, gint end_offset)
+{
+       GtkWidget *widget;
+       VteTerminal *terminal;
+       VteTerminalAccessiblePrivate *priv;
+       gint start_x, start_y, end_x, end_y;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(text));
+       if (widget == NULL) {
+               /* State is defunct */
+               return FALSE;
+       }
+       g_assert(VTE_IS_TERMINAL (widget));
+       terminal = VTE_TERMINAL (widget);
+       g_assert(!vte_terminal_get_has_selection (terminal));
+       priv = g_object_get_data(G_OBJECT(text),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       xy_from_offset (priv, start_offset, &start_x, &start_y);
+       xy_from_offset (priv, end_offset, &end_x, &end_y);
+       _vte_terminal_select_text (terminal, start_x, start_y, end_x, end_y, start_offset, end_offset);
+       return TRUE;
+}
+
+static gboolean
+vte_terminal_accessible_remove_selection(AtkText *text,
+                                        gint selection_number)
+{
+       GtkWidget *widget;
+       VteTerminal *terminal;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(text));
+       if (widget == NULL) {
+               /* State is defunct */
+               return FALSE;
+       }
+       g_assert(VTE_IS_TERMINAL (widget));
+       terminal = VTE_TERMINAL (widget);
+       if (selection_number == 0 && vte_terminal_get_has_selection (terminal)) {
+               _vte_terminal_remove_selection (terminal);
+               return TRUE;
+       } else {
+               return FALSE;
+       }
+}
+
+static gboolean
+vte_terminal_accessible_set_selection(AtkText *text, gint selection_number,
+                                     gint start_offset, gint end_offset)
+{
+       GtkWidget *widget;
+       VteTerminal *terminal;
+
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(text));
+       if (widget == NULL) {
+               /* State is defunct */
+               return FALSE;
+       }
+       g_assert(VTE_IS_TERMINAL (widget));
+       terminal = VTE_TERMINAL (widget);
+       if (selection_number != 0) {
+               return FALSE;
+       }
+       if (vte_terminal_get_has_selection (terminal)) {
+               _vte_terminal_remove_selection (terminal);
+       }
+
+       return vte_terminal_accessible_add_selection (text, start_offset, end_offset);
+}
+
+static gboolean
+vte_terminal_accessible_set_caret_offset(AtkText *text, gint offset)
+{
+       g_assert(VTE_IS_TERMINAL_ACCESSIBLE(text));
+       vte_terminal_accessible_update_private_data_if_needed(ATK_OBJECT(text),
+                                                             NULL, NULL);
+       /* Whoa, very not allowed. */
+       return FALSE;
+}
+
+static void
+vte_terminal_accessible_text_init(gpointer iface, gpointer data)
+{
+       AtkTextIface *text;
+       g_assert(G_TYPE_FROM_INTERFACE(iface) == ATK_TYPE_TEXT);
+       text = iface;
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Initializing accessible peer's AtkText interface.\n");
+       text->get_text = vte_terminal_accessible_get_text;
+       text->get_text_after_offset = vte_terminal_accessible_get_text_after_offset;
+       text->get_text_at_offset = vte_terminal_accessible_get_text_at_offset;
+       text->get_character_at_offset = vte_terminal_accessible_get_character_at_offset;
+       text->get_text_before_offset = vte_terminal_accessible_get_text_before_offset;
+       text->get_caret_offset = vte_terminal_accessible_get_caret_offset;
+       text->get_run_attributes = vte_terminal_accessible_get_run_attributes;
+       text->get_default_attributes = vte_terminal_accessible_get_default_attributes;
+       text->get_character_extents = vte_terminal_accessible_get_character_extents;
+       text->get_character_count = vte_terminal_accessible_get_character_count;
+       text->get_offset_at_point = vte_terminal_accessible_get_offset_at_point;
+       text->get_n_selections = vte_terminal_accessible_get_n_selections;
+       text->get_selection = vte_terminal_accessible_get_selection;
+       text->add_selection = vte_terminal_accessible_add_selection;
+       text->remove_selection = vte_terminal_accessible_remove_selection;
+       text->set_selection = vte_terminal_accessible_set_selection;
+       text->set_caret_offset = vte_terminal_accessible_set_caret_offset;
+}
+
+static AtkLayer
+vte_terminal_accessible_get_layer(AtkComponent *component)
+{
+       return ATK_LAYER_WIDGET;
+}
+
+static gint
+vte_terminal_accessible_get_mdi_zorder(AtkComponent *component)
+{
+       return G_MININT;
+}
+
+static gboolean
+vte_terminal_accessible_contains(AtkComponent *component,
+                                gint x, gint y,
+                                AtkCoordType coord_type)
+{
+       gint ex, ey, ewidth, eheight;
+       atk_component_get_extents(component, &ex, &ey, &ewidth, &eheight,
+                                 coord_type);
+       return ((x >= ex) &&
+               (x < ex + ewidth) &&
+               (y >= ey) &&
+               (y < ey + eheight));
+}
+
+static void
+vte_terminal_accessible_get_extents(AtkComponent *component,
+                                   gint *x, gint *y,
+                                   gint *width, gint *height,
+                                   AtkCoordType coord_type)
+{
+       atk_component_get_position(component, x, y, coord_type);
+       atk_component_get_size(component, width, height);
+}
+
+static void
+vte_terminal_accessible_get_position(AtkComponent *component,
+                                    gint *x, gint *y,
+                                    AtkCoordType coord_type)
+{
+       GtkWidget *widget;
+       *x = 0;
+       *y = 0;
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(component));
+       if (widget == NULL) {
+               return;
+       }
+       if (!gtk_widget_get_realized(widget)) {
+               return;
+       }
+       switch (coord_type) {
+       case ATK_XY_SCREEN:
+               gdk_window_get_origin(gtk_widget_get_window (widget), x, y);
+               break;
+       case ATK_XY_WINDOW:
+               gdk_window_get_position(gtk_widget_get_window (widget), x, y);
+               break;
+       default:
+               g_assert_not_reached();
+               break;
+       }
+}
+
+static void
+vte_terminal_accessible_get_size(AtkComponent *component,
+                                gint *width, gint *height)
+{
+       GtkWidget *widget;
+       GdkWindow *window;
+       *width = 0;
+       *height = 0;
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(component));
+       if (widget == NULL) {
+               return;
+       }
+       if (!gtk_widget_get_realized(widget)) {
+               return;
+       }
+       window = gtk_widget_get_window (widget);
+#if GTK_CHECK_VERSION (2, 90, 8)
+       if (width)
+               *width = gdk_window_get_width (window);
+       if (height)
+               *height = gdk_window_get_height (window);
+#else
+       gdk_drawable_get_size(window, width, height);
+#endif
+}
+
+static gboolean
+vte_terminal_accessible_set_extents(AtkComponent *component,
+                                   gint x, gint y,
+                                   gint width, gint height,
+                                   AtkCoordType coord_type)
+{
+       /* FIXME?  We can change the size, but our position is controlled
+        * by the parent container. */
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_accessible_set_position(AtkComponent *component,
+                                    gint x, gint y,
+                                    AtkCoordType coord_type)
+{
+       /* Controlled by the parent container, if there is one. */
+       return FALSE;
+}
+
+static gboolean
+vte_terminal_accessible_set_size(AtkComponent *component,
+                                gint width, gint height)
+{
+       VteTerminal *terminal;
+       gint columns, rows, char_width, char_height;
+       GtkWidget *widget;
+        GtkBorder *inner_border;
+
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE(component));
+       if (widget == NULL) {
+               return FALSE;
+       }
+       terminal = VTE_TERMINAL(widget);
+
+        char_width = vte_terminal_get_char_width (terminal);
+        char_height = vte_terminal_get_char_height (terminal);
+        gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
+       /* If the size is an exact multiple of the cell size, use that,
+        * otherwise round down. */
+        columns = (width - (inner_border ? (inner_border->left + inner_border->right) : 0)) / char_width;
+        rows = (height - (inner_border ? (inner_border->top + inner_border->bottom) : 0)) / char_height;
+        gtk_border_free (inner_border);
+       vte_terminal_set_size(terminal, columns, rows);
+       return (vte_terminal_get_row_count (terminal) == rows) &&
+              (vte_terminal_get_column_count (terminal) == columns);
+}
+
+
+static AtkObject *
+vte_terminal_accessible_ref_accessible_at_point(AtkComponent *component,
+                                               gint x, gint y,
+                                               AtkCoordType coord_type)
+{
+       /* There are no children. */
+       return NULL;
+}
+
+static guint
+vte_terminal_accessible_add_focus_handler(AtkComponent *component,
+                                         AtkFocusHandler handler)
+{
+       guint signal_id;
+       signal_id = g_signal_lookup("focus-event",
+                                   VTE_TYPE_TERMINAL_ACCESSIBLE);
+       if (g_signal_handler_find(component,
+                                 G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_ID,
+                                 signal_id,
+                                 0,
+                                 NULL,
+                                 (gpointer)handler,
+                                 NULL) != 0) {
+               return 0;
+       }
+       return g_signal_connect(component, "focus-event",
+                               G_CALLBACK(handler), NULL);
+}
+
+static void
+vte_terminal_accessible_remove_focus_handler(AtkComponent *component,
+                                            guint handler_id)
+{
+       g_assert(g_signal_handler_is_connected(component, handler_id));
+       g_signal_handler_disconnect(component, handler_id);
+}
+
+static void
+vte_terminal_accessible_component_init(gpointer iface, gpointer data)
+{
+       AtkComponentIface *component;
+       g_assert(G_TYPE_FROM_INTERFACE(iface) == ATK_TYPE_COMPONENT);
+       component = iface;
+
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Initializing accessible peer's "
+                       "AtkComponent interface.\n");
+       /* Set our virtual functions. */
+       component->add_focus_handler = vte_terminal_accessible_add_focus_handler;
+       component->contains = vte_terminal_accessible_contains;
+       component->ref_accessible_at_point = vte_terminal_accessible_ref_accessible_at_point;
+       component->get_extents = vte_terminal_accessible_get_extents;
+       component->get_position = vte_terminal_accessible_get_position;
+       component->get_size = vte_terminal_accessible_get_size;
+       component->remove_focus_handler = vte_terminal_accessible_remove_focus_handler;
+       component->set_extents = vte_terminal_accessible_set_extents;
+       component->set_position = vte_terminal_accessible_set_position;
+       component->set_size = vte_terminal_accessible_set_size;
+       component->get_layer = vte_terminal_accessible_get_layer;
+       component->get_mdi_zorder = vte_terminal_accessible_get_mdi_zorder;
+}
+
+/* AtkAction interface */
+
+static gboolean
+vte_terminal_accessible_do_action (AtkAction *accessible, int i)
+{
+       GtkWidget *widget;
+       gboolean retval = FALSE;
+
+       g_return_val_if_fail (i < LAST_ACTION, FALSE);
+
+       widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
+       if (!widget) {
+               return FALSE;
+       }
+
+        switch (i) {
+        case ACTION_MENU :
+               g_signal_emit_by_name (widget, "popup_menu", &retval);
+                break;
+        default :
+                g_warning ("Invalid action passed to VteTerminalAccessible::do_action");
+                return FALSE;
+        }
+        return retval;
+}
+
+static int
+vte_terminal_accessible_get_n_actions (AtkAction *accessible)
+{
+       return LAST_ACTION;
+}
+
+static const char *
+vte_terminal_accessible_action_get_description (AtkAction *accessible, int i)
+{
+        VteTerminalAccessiblePrivate *priv;
+
+        g_return_val_if_fail (i < LAST_ACTION, NULL);
+
+       g_return_val_if_fail(VTE_IS_TERMINAL_ACCESSIBLE(accessible), NULL);
+
+       /* Retrieve the private data structure.  It must already exist. */
+       priv = g_object_get_data(G_OBJECT(accessible),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_return_val_if_fail(priv != NULL, NULL);
+
+        if (priv->action_descriptions[i]) {
+                return priv->action_descriptions[i];
+        } else {
+                return vte_terminal_accessible_action_descriptions[i];
+        }
+}
+
+static const char *
+vte_terminal_accessible_action_get_name (AtkAction *accessible, int i)
+{
+        g_return_val_if_fail (i < LAST_ACTION, NULL);
+
+        return vte_terminal_accessible_action_names[i];
+}
+
+static const char *
+vte_terminal_accessible_action_get_keybinding (AtkAction *accessible, int i)
+{
+        g_return_val_if_fail (i < LAST_ACTION, NULL);
+
+        return NULL;
+}
+
+static gboolean
+vte_terminal_accessible_action_set_description (AtkAction *accessible,
+                                                int i,
+                                                const char *description)
+{
+        VteTerminalAccessiblePrivate *priv;
+
+        g_return_val_if_fail (i < LAST_ACTION, FALSE);
+
+       g_return_val_if_fail(VTE_IS_TERMINAL_ACCESSIBLE(accessible), FALSE);
+
+       /* Retrieve the private data structure.  It must already exist. */
+       priv = g_object_get_data(G_OBJECT(accessible),
+                                VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
+       g_return_val_if_fail(priv != NULL, FALSE);
+
+        if (priv->action_descriptions[i]) {
+                g_free (priv->action_descriptions[i]);
+        }
+        priv->action_descriptions[i] = g_strdup (description);
+
+        return TRUE;
+}
+
+static void
+vte_terminal_accessible_action_init(gpointer iface, gpointer data)
+{
+       AtkActionIface *action;
+       g_return_if_fail(G_TYPE_FROM_INTERFACE(iface) == ATK_TYPE_ACTION);
+       action = iface;
+
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Initializing accessible peer's "
+                       "AtkAction interface.\n");
+       /* Set our virtual functions. */
+       action->do_action = vte_terminal_accessible_do_action;
+       action->get_n_actions = vte_terminal_accessible_get_n_actions;
+       action->get_description = vte_terminal_accessible_action_get_description;
+       action->get_name = vte_terminal_accessible_action_get_name;
+       action->get_keybinding = vte_terminal_accessible_action_get_keybinding;
+       action->set_description = vte_terminal_accessible_action_set_description;
+}
+static void
+vte_terminal_accessible_class_init(gpointer *klass)
+{
+       GObjectClass *gobject_class;
+       AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
+
+       vte_terminal_accessible_parent_class = g_type_class_peek_parent (klass);
+
+       gobject_class = G_OBJECT_CLASS(klass);
+
+       class->initialize = vte_terminal_initialize;
+       /* Override the finalize method. */
+       gobject_class->finalize = vte_terminal_accessible_finalize;
+}
+
+GType
+vte_terminal_accessible_get_type(void)
+{
+       static GType terminal_accessible_type = 0;
+
+       if (G_UNLIKELY (terminal_accessible_type == 0)) {
+               AtkRegistry *registry;
+               AtkObjectFactory *factory;
+               GType parent_type, parent_accessible_type;
+               GTypeQuery type_info;
+
+               GInterfaceInfo text = {
+                       vte_terminal_accessible_text_init,
+                       NULL,
+                       NULL,
+               };
+               GInterfaceInfo component = {
+                       vte_terminal_accessible_component_init,
+                       NULL,
+                       NULL,
+               };
+               GInterfaceInfo action = {
+                       vte_terminal_accessible_action_init,
+                       NULL,
+                       NULL,
+               };
+               GTypeInfo terminal_accessible_info = {
+                       0,
+                       (GBaseInitFunc)NULL,
+                       (GBaseFinalizeFunc)NULL,
+
+                       (GClassInitFunc)vte_terminal_accessible_class_init,
+                       (GClassFinalizeFunc)NULL,
+                       (gconstpointer)NULL,
+
+                       0,
+                       0,
+                       (GInstanceInitFunc) NULL,
+
+                       (GTypeValueTable*)NULL,
+               };
+
+               /* Find the Atk object used for the parent (GtkWidget) type. */
+               parent_type = g_type_parent(VTE_TYPE_TERMINAL);
+               factory = atk_registry_get_factory(atk_get_default_registry(),
+                               parent_type);
+               parent_accessible_type = atk_object_factory_get_accessible_type(factory);
+               if (!g_type_is_a(parent_accessible_type, GTK_TYPE_ACCESSIBLE)) {
+#ifdef VTE_DEBUG
+                       g_warning("Accessibility (%s) is not derived from "
+                                       "%s (GTK_MODULES=gail not set?), "
+                                       "deriving from %s instead.\n",
+                                       g_type_name(parent_accessible_type),
+                                       g_type_name(GTK_TYPE_ACCESSIBLE),
+                                       g_type_name(GTK_TYPE_ACCESSIBLE));
+#endif
+                       /* Fudge it. */
+                       parent_accessible_type = GTK_TYPE_ACCESSIBLE;
+               }
+
+               /* Find the size of the parent type's objects. */
+               g_type_query(parent_accessible_type, &type_info);
+               terminal_accessible_info.class_size = type_info.class_size;
+               terminal_accessible_info.instance_size = type_info.instance_size;
+               /* Register the class with the GObject type system. */
+               terminal_accessible_type = g_type_register_static(parent_accessible_type,
+                               "VteTerminalAccessible",
+                               &terminal_accessible_info,
+                               0);
+
+               /* Add a text interface to this object class. */
+               g_type_add_interface_static(terminal_accessible_type,
+                               ATK_TYPE_TEXT,
+                               &text);
+               /* Add a component interface to this object class. */
+               g_type_add_interface_static(terminal_accessible_type,
+                               ATK_TYPE_COMPONENT,
+                               &component);
+               /* Add an action interface to this object class. */
+               g_type_add_interface_static(terminal_accessible_type,
+                               ATK_TYPE_ACTION,
+                               &action);
+
+               /* Associate the terminal and its peer factory in the
+                * Atk type registry. */
+               registry = atk_get_default_registry();
+               atk_registry_set_factory_type(registry,
+                               VTE_TYPE_TERMINAL,
+                               VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY);
+       }
+
+       return terminal_accessible_type;
+}
+
+/* Create an accessible peer for the object. */
+static AtkObject *
+vte_terminal_accessible_factory_create_accessible(GObject *obj)
+{
+       GtkAccessible *accessible;
+       VteTerminal *terminal;
+
+       g_assert(VTE_IS_TERMINAL(obj));
+
+       terminal = VTE_TERMINAL(obj);
+       accessible = GTK_ACCESSIBLE(vte_terminal_accessible_new(terminal));
+       g_assert(accessible != NULL);
+
+       return ATK_OBJECT(accessible);
+}
+
+static void
+vte_terminal_accessible_factory_class_init(VteTerminalAccessibleFactoryClass *klass)
+{
+       AtkObjectFactoryClass *class = ATK_OBJECT_FACTORY_CLASS(klass);
+       /* Override the one method we care about. */
+       class->create_accessible = vte_terminal_accessible_factory_create_accessible;
+}
+static void
+vte_terminal_accessible_factory_init(VteTerminalAccessibleFactory *self)
+{
+       /* nothing to initialise */
+}
+
+AtkObjectFactory *
+vte_terminal_accessible_factory_new(void)
+{
+       _vte_debug_print(VTE_DEBUG_ALLY,
+                       "Creating a new VteTerminalAccessibleFactory.\n");
+       return g_object_new(VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY, NULL);
+}
+
diff --git a/vte/src/vteaccess.h b/vte/src/vteaccess.h
new file mode 100644
index 0000000..7204d37
--- /dev/null
+++ b/vte/src/vteaccess.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vteaccess_h_included
+#define vte_vteaccess_h_included
+
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include "vte.h"
+
+G_BEGIN_DECLS
+
+#define VTE_TYPE_TERMINAL_ACCESSIBLE            (vte_terminal_accessible_get_type ())
+#define VTE_TERMINAL_ACCESSIBLE(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), 
VTE_TYPE_TERMINAL_ACCESSIBLE, VteTerminalAccessible))
+#define VTE_TERMINAL_ACCESSIBLE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
VTE_TYPE_TERMINAL_ACCESSIBLE, VteTerminalAccessibleClass))
+#define VTE_IS_TERMINAL_ACCESSIBLE(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), 
VTE_TYPE_TERMINAL_ACCESSIBLE))
+#define VTE_IS_TERMINAL_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
VTE_TYPE_TERMINAL_ACCESSIBLE))
+#define VTE_TERMINAL_ACCESSIBLE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), 
VTE_TYPE_TERMINAL_ACCESSIBLE, VteTerminalAccessibleClass))
+
+typedef struct _VteTerminalAccessible VteTerminalAccessible;
+typedef struct _VteTerminalAccessibleClass VteTerminalAccessibleClass;
+
+/**
+ * VteTerminalAccessible:
+ *
+ * The accessible peer for #VteTerminal.
+ */
+struct _VteTerminalAccessible {
+       GtkAccessible parent;
+       /*< private > */
+       /* Unknown GailWidget implementation stuffs, exact size of which is
+        * worked out at run-time. */
+};
+
+struct _VteTerminalAccessibleClass {
+       GtkAccessibleClass parent_class;
+       /*< private > */
+       /* Unknown GailWidgetClass implementation stuffs, exact size of which
+        * is worked out at run-time. */
+};
+
+GType vte_terminal_accessible_get_type(void);
+
+AtkObject *vte_terminal_accessible_new(VteTerminal *terminal);
+
+#define VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY            (vte_terminal_accessible_factory_get_type ())
+#define VTE_TERMINAL_ACCESSIBLE_FACTORY(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), 
VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY, VteTerminalAccessibleFactory))
+#define VTE_TERMINAL_ACCESSIBLE_FACTORY_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), 
VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY, VteTerminalAccessibleFactoryClass))
+#define VTE_IS_TERMINAL_ACCESSIBLE_FACTORY(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), 
VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY))
+#define VTE_IS_TERMINAL_ACCESSIBLE_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY))
+#define VTE_TERMINAL_ACCESSIBLE_FACTORY_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), 
VTE_TYPE_TERMINAL_ACCESSIBLE_FACTORY, VteTerminalAccessibleFactoryClass))
+
+typedef struct _VteTerminalAccessibleFactory VteTerminalAccessibleFactory;
+typedef struct _VteTerminalAccessibleFactoryClass VteTerminalAccessibleFactoryClass;
+
+struct _VteTerminalAccessibleFactory {
+       AtkObjectFactory parent;
+};
+
+struct _VteTerminalAccessibleFactoryClass {
+       AtkObjectFactoryClass parent;
+};
+
+GType vte_terminal_accessible_factory_get_type(void);
+
+AtkObjectFactory *vte_terminal_accessible_factory_new(void);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vteapp.c b/vte/src/vteapp.c
new file mode 100644
index 0000000..c6ab68a
--- /dev/null
+++ b/vte/src/vteapp.c
@@ -0,0 +1,1105 @@
+/*
+ * Copyright (C) 2001,2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <config.h>
+
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include "debug.h"
+
+#undef VTE_DISABLE_DEPRECATED
+#include "vte.h"
+
+#include <glib/gi18n.h>
+
+#define DINGUS1 
"(((gopher|news|telnet|nntp|file|http|ftp|https)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.]+(:[0-9]*)?"
+#define DINGUS2 
"(((gopher|news|telnet|nntp|file|http|ftp|https)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.]+(:[0-9]*)?/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\)
 ,\\\"]"
+
+static void
+window_title_changed(GtkWidget *widget, gpointer win)
+{
+       GtkWindow *window;
+
+       g_assert(VTE_TERMINAL(widget));
+       g_assert(GTK_IS_WINDOW(win));
+       g_assert(VTE_TERMINAL(widget)->window_title != NULL);
+       window = GTK_WINDOW(win);
+
+       gtk_window_set_title(window, VTE_TERMINAL(widget)->window_title);
+}
+
+static void
+icon_title_changed(GtkWidget *widget, gpointer win)
+{
+       GtkWindow *window;
+
+       g_assert(VTE_TERMINAL(widget));
+       g_assert(GTK_IS_WINDOW(win));
+       g_assert(VTE_TERMINAL(widget)->icon_title != NULL);
+       window = GTK_WINDOW(win);
+
+       g_message("Icon title changed to \"%s\".\n",
+                 VTE_TERMINAL(widget)->icon_title);
+}
+
+static void
+char_size_changed(GtkWidget *widget, guint width, guint height, gpointer data)
+{
+       VteTerminal *terminal;
+       GtkWindow *window;
+       GdkGeometry geometry;
+       GtkBorder *inner_border;
+
+       g_assert(GTK_IS_WINDOW(data));
+       g_assert(VTE_IS_TERMINAL(widget));
+
+       terminal = VTE_TERMINAL(widget);
+       window = GTK_WINDOW(data);
+       if (!gtk_widget_get_realized (GTK_WIDGET (window)))
+               return;
+
+       gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
+       geometry.width_inc = width;
+       geometry.height_inc = height;
+       geometry.base_width = inner_border ? (inner_border->left + inner_border->right) : 0;
+       geometry.base_height = inner_border ? (inner_border->top + inner_border->bottom) : 0;
+       geometry.min_width = geometry.base_width + width * 2;
+       geometry.min_height = geometry.base_height + height * 2;
+       gtk_border_free (inner_border);
+
+       gtk_window_set_geometry_hints(window, widget, &geometry,
+                                     GDK_HINT_RESIZE_INC |
+                                     GDK_HINT_BASE_SIZE |
+                                     GDK_HINT_MIN_SIZE);
+}
+
+static void
+char_size_realized(GtkWidget *widget, gpointer data)
+{
+       VteTerminal *terminal;
+       GtkWindow *window;
+       GdkGeometry geometry;
+       guint width, height;
+       GtkBorder *inner_border;
+
+       g_assert(GTK_IS_WINDOW(data));
+       g_assert(VTE_IS_TERMINAL(widget));
+
+       terminal = VTE_TERMINAL(widget);
+       window = GTK_WINDOW(data);
+       if (!gtk_widget_get_realized (GTK_WIDGET(window)))
+               return;
+
+       gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
+       width = vte_terminal_get_char_width (terminal);
+       height = vte_terminal_get_char_height (terminal);
+       geometry.width_inc = width;
+       geometry.height_inc = height;
+       geometry.base_width = inner_border ? (inner_border->left + inner_border->right) : 0;
+       geometry.base_height = inner_border ? (inner_border->top + inner_border->bottom) : 0;
+       geometry.min_width = geometry.base_width + width * 2;
+       geometry.min_height = geometry.base_height + height * 2;
+       gtk_border_free (inner_border);
+
+       gtk_window_set_geometry_hints(window, widget, &geometry,
+                                     GDK_HINT_RESIZE_INC |
+                                     GDK_HINT_BASE_SIZE |
+                                     GDK_HINT_MIN_SIZE);
+}
+
+
+static void
+destroy_and_quit(VteTerminal *terminal, GtkWidget *window)
+{
+       const char *output_file = g_object_get_data (G_OBJECT (terminal), "output_file");
+
+       if (output_file) {
+               GFile *file;
+               GOutputStream *stream;
+               GError *error = NULL;
+
+               file = g_file_new_for_commandline_arg (output_file);
+               stream = G_OUTPUT_STREAM (g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, 
&error));
+
+               if (stream) {
+                       vte_terminal_write_contents (terminal, stream,
+                                                    VTE_TERMINAL_WRITE_DEFAULT,
+                                                    NULL, &error);
+                       g_object_unref (stream);
+               }
+
+               if (error) {
+                       g_printerr ("%s\n", error->message);
+                       g_error_free (error);
+               }
+
+               g_object_unref (file);
+       }
+
+       gtk_widget_destroy (window);
+       gtk_main_quit ();
+}
+static void
+delete_event(GtkWidget *window, GdkEvent *event, gpointer terminal)
+{
+       destroy_and_quit(VTE_TERMINAL (terminal), window);
+}
+static void
+child_exited(GtkWidget *terminal, gpointer window)
+{
+       _vte_debug_print(VTE_DEBUG_MISC, "Child exited with status %x\n",
+                        vte_terminal_get_child_exit_status (VTE_TERMINAL (terminal)));
+       destroy_and_quit(VTE_TERMINAL (terminal), GTK_WIDGET (window));
+}
+
+static void
+status_line_changed(GtkWidget *widget, gpointer data)
+{
+       g_print("Status = `%s'.\n",
+               vte_terminal_get_status_line(VTE_TERMINAL(widget)));
+}
+
+static int
+button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data)
+{
+       VteTerminal *terminal;
+       char *match;
+       int tag;
+       GtkBorder *inner_border;
+       int char_width, char_height;
+
+       switch (event->button) {
+       case 3:
+               terminal = VTE_TERMINAL(widget);
+
+               gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
+               char_width = vte_terminal_get_char_width (terminal);
+               char_height = vte_terminal_get_char_height (terminal);
+               match = vte_terminal_match_check(terminal,
+                                                (event->x - (inner_border ? inner_border->left : 0)) / 
char_width,
+                                                (event->y - (inner_border ? inner_border->top : 0)) / 
char_height,
+                                                &tag);
+               gtk_border_free (inner_border);
+               if (match != NULL) {
+                       g_print("Matched `%s' (%d).\n", match, tag);
+                       g_free(match);
+                       if (GPOINTER_TO_INT(data) != 0) {
+                               vte_terminal_match_remove(terminal, tag);
+                       }
+               }
+               break;
+       case 1:
+       case 2:
+       default:
+               break;
+       }
+       return FALSE;
+}
+
+static void
+iconify_window(GtkWidget *widget, gpointer data)
+{
+       gtk_window_iconify(data);
+}
+
+static void
+deiconify_window(GtkWidget *widget, gpointer data)
+{
+       gtk_window_deiconify(data);
+}
+
+static void
+raise_window(GtkWidget *widget, gpointer data)
+{
+       GdkWindow *window;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(GTK_WIDGET(data));
+               if (window) {
+                       gdk_window_raise(window);
+               }
+       }
+}
+
+static void
+lower_window(GtkWidget *widget, gpointer data)
+{
+       GdkWindow *window;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(GTK_WIDGET(data));
+               if (window) {
+                       gdk_window_lower(window);
+               }
+       }
+}
+
+static void
+maximize_window(GtkWidget *widget, gpointer data)
+{
+       GdkWindow *window;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(GTK_WIDGET(data));
+               if (window) {
+                       gdk_window_maximize(window);
+               }
+       }
+}
+
+static void
+restore_window(GtkWidget *widget, gpointer data)
+{
+       GdkWindow *window;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(GTK_WIDGET(data));
+               if (window) {
+                       gdk_window_unmaximize(window);
+               }
+       }
+}
+
+static void
+refresh_window(GtkWidget *widget, gpointer data)
+{
+       GdkWindow *window;
+       GtkAllocation allocation;
+       GdkRectangle rect;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(widget);
+               if (window) {
+                       gtk_widget_get_allocation(widget, &allocation);
+                       rect.x = rect.y = 0;
+                       rect.width = allocation.width;
+                       rect.height = allocation.height;
+                       gdk_window_invalidate_rect(window, &rect, TRUE);
+               }
+       }
+}
+
+static void
+resize_window(GtkWidget *widget, guint width, guint height, gpointer data)
+{
+       VteTerminal *terminal;
+
+       if ((GTK_IS_WINDOW(data)) && (width >= 2) && (height >= 2)) {
+               gint owidth, oheight, char_width, char_height, column_count, row_count;
+               GtkBorder *inner_border;
+
+               terminal = VTE_TERMINAL(widget);
+
+               gtk_window_get_size(GTK_WINDOW(data), &owidth, &oheight);
+
+               /* Take into account border overhead. */
+               char_width = vte_terminal_get_char_width (terminal);
+               char_height = vte_terminal_get_char_height (terminal);
+               column_count = vte_terminal_get_column_count (terminal);
+               row_count = vte_terminal_get_row_count (terminal);
+               gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
+
+               owidth -= char_width * column_count;
+               oheight -= char_height * row_count;
+               if (inner_border != NULL) {
+                       owidth -= inner_border->left + inner_border->right;
+                       oheight -= inner_border->top + inner_border->bottom;
+               }
+               gtk_window_resize(GTK_WINDOW(data),
+                                 width + owidth, height + oheight);
+               gtk_border_free (inner_border);
+       }
+}
+
+static void
+move_window(GtkWidget *widget, guint x, guint y, gpointer data)
+{
+       GdkWindow *window;
+
+       if (GTK_IS_WIDGET(data)) {
+               window = gtk_widget_get_window(GTK_WIDGET(data));
+               if (window) {
+                       gdk_window_move(window, x, y);
+               }
+       }
+}
+
+static void
+adjust_font_size(GtkWidget *widget, gpointer data, gint howmuch)
+{
+       VteTerminal *terminal;
+       PangoFontDescription *desired;
+       gint newsize;
+       gint columns, rows, owidth, oheight;
+
+       /* Read the screen dimensions in cells. */
+       terminal = VTE_TERMINAL(widget);
+       columns = terminal->column_count;
+       rows = terminal->row_count;
+
+       /* Take into account padding and border overhead. */
+       gtk_window_get_size(GTK_WINDOW(data), &owidth, &oheight);
+       owidth -= terminal->char_width * terminal->column_count;
+       oheight -= terminal->char_height * terminal->row_count;
+
+       /* Calculate the new font size. */
+       desired = pango_font_description_copy(vte_terminal_get_font(terminal));
+       newsize = pango_font_description_get_size(desired) / PANGO_SCALE;
+       newsize += howmuch;
+       pango_font_description_set_size(desired,
+                                       CLAMP(newsize, 4, 144) * PANGO_SCALE);
+
+       /* Change the font, then resize the window so that we have the same
+        * number of rows and columns. */
+       vte_terminal_set_font(terminal, desired);
+       gtk_window_resize(GTK_WINDOW(data),
+                         columns * terminal->char_width + owidth,
+                         rows * terminal->char_height + oheight);
+
+       pango_font_description_free(desired);
+}
+
+static void
+increase_font_size(GtkWidget *widget, gpointer data)
+{
+       adjust_font_size(widget, data, 1);
+}
+
+static void
+decrease_font_size(GtkWidget *widget, gpointer data)
+{
+       adjust_font_size(widget, data, -1);
+}
+
+static gboolean
+read_and_feed(GIOChannel *source, GIOCondition condition, gpointer data)
+{
+       char buf[2048];
+       gsize size;
+       GIOStatus status;
+       g_assert(VTE_IS_TERMINAL(data));
+       status = g_io_channel_read_chars(source, buf, sizeof(buf),
+                                        &size, NULL);
+       if ((status == G_IO_STATUS_NORMAL) && (size > 0)) {
+               vte_terminal_feed(VTE_TERMINAL(data), buf, size);
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static void
+disconnect_watch(GtkWidget *widget, gpointer data)
+{
+       g_source_remove(GPOINTER_TO_INT(data));
+}
+
+static void
+clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data,
+             guint info, gpointer owner)
+{
+       /* No-op. */
+       return;
+}
+
+static void
+take_xconsole_ownership(GtkWidget *widget, gpointer data)
+{
+       char *name, hostname[255];
+       GdkAtom atom;
+       GtkClipboard *clipboard;
+       const GtkTargetEntry targets[] = {
+               {"UTF8_STRING", 0, 0},
+               {"COMPOUND_TEXT", 0, 0},
+               {"TEXT", 0, 0},
+               {"STRING", 0, 0},
+       };
+
+       memset(hostname, '\0', sizeof(hostname));
+       gethostname(hostname, sizeof(hostname) - 1);
+
+       name = g_strdup_printf("MIT_CONSOLE_%s", hostname);
+       atom = gdk_atom_intern(name, FALSE);
+       clipboard = gtk_clipboard_get_for_display(gtk_widget_get_display(widget),
+                                                 atom);
+       g_free(name);
+
+       gtk_clipboard_set_with_owner(clipboard,
+                                    targets,
+                                    G_N_ELEMENTS(targets),
+                                    clipboard_get,
+                                    (GtkClipboardClearFunc)gtk_main_quit,
+                                    G_OBJECT(widget));
+}
+
+static void
+add_weak_pointer(GObject *object, GtkWidget **target)
+{
+       g_object_add_weak_pointer(object, (gpointer*)target);
+}
+
+static void
+terminal_notify_cb(GObject *object,
+                  GParamSpec *pspec,
+                  gpointer user_data)
+{
+  GValue value = { 0, };
+  char *value_string;
+
+  if (!pspec ||
+      pspec->owner_type != VTE_TYPE_TERMINAL)
+    return;
+
+
+  g_value_init(&value, pspec->value_type);
+  g_object_get_property(object, pspec->name, &value);
+  value_string = g_strdup_value_contents(&value);
+  g_print("NOTIFY property \"%s\" value '%s'\n", pspec->name, value_string);
+  g_free(value_string);
+  g_value_unset(&value);
+}
+
+static void
+child_exit_cb(VteTerminal *terminal,
+                gpointer user_data)
+{
+}
+
+static int
+parse_enum(GType type,
+          const char *string)
+{
+  GEnumClass *enum_klass;
+  const GEnumValue *enum_value;
+  int value = 0;
+
+  enum_klass = (GEnumClass*)g_type_class_ref(type);
+  enum_value = g_enum_get_value_by_nick(enum_klass, string);
+  if (enum_value)
+    value = enum_value->value;
+  else
+    g_warning("Unknown enum '%s'\n", string);
+  g_type_class_unref(enum_klass);
+
+  return value;
+}
+
+static guint
+parse_flags(GType type,
+           const char *string)
+{
+  GFlagsClass *flags_klass;
+  guint value = 0;
+  char **flags;
+  guint i;
+
+  flags = g_strsplit_set(string, ",|", -1);
+  if (flags == NULL)
+    return 0;
+
+  flags_klass = (GFlagsClass*)g_type_class_ref(type);
+  for (i = 0; flags[i] != NULL; ++i) {
+         const GFlagsValue *flags_value;
+
+         flags_value = g_flags_get_value_by_nick(flags_klass, flags[i]);
+         if (flags_value)
+                 value |= flags_value->value;
+         else
+                 g_warning("Unknown flag '%s'\n", flags[i]);
+  }
+  g_type_class_unref(flags_klass);
+
+  return value;
+}
+
+int
+main(int argc, char **argv)
+{
+       GdkScreen *screen;
+#if GTK_CHECK_VERSION (2, 90, 8)
+       GdkVisual *visual;
+#else
+       GdkColormap *colormap;
+#endif
+       GtkWidget *window, *widget,*hbox = NULL, *scrollbar, *scrolled_window = NULL;
+       VteTerminal *terminal;
+       char *env_add[] = {
+#ifdef VTE_DEBUG
+               (char *) "FOO=BAR", (char *) "BOO=BIZ",
+#endif
+               NULL};
+       const char *background = NULL;
+       gboolean transparent = FALSE, audible = TRUE,
+                debug = FALSE, dingus = FALSE, dbuffer = TRUE,
+                console = FALSE, scroll = FALSE, keep = FALSE,
+                icon_title = FALSE, shell = TRUE, highlight_set = FALSE,
+                cursor_set = FALSE, reverse = FALSE, use_geometry_hints = TRUE,
+                antialias = TRUE, use_scrolled_window = FALSE,
+                show_object_notifications = FALSE;
+       char *geometry = NULL;
+       gint lines = 100;
+       const char *message = "Launching interactive shell...\r\n";
+       const char *font = NULL;
+       const char *termcap = NULL;
+       const char *command = NULL;
+       const char *working_directory = NULL;
+       const char *output_file = NULL;
+       char *pty_flags_string = NULL;
+       char *cursor_blink_mode_string = NULL;
+       char *cursor_shape_string = NULL;
+       char *scrollbar_policy_string = NULL;
+       GdkColor fore, back, tint, highlight, cursor;
+       const GOptionEntry options[]={
+               {
+                       "antialias", 'A', G_OPTION_FLAG_REVERSE,
+                       G_OPTION_ARG_NONE, &antialias,
+                       "Disable the use of anti-aliasing", NULL
+               },
+               {
+                       "background", 'B', 0,
+                       G_OPTION_ARG_FILENAME, &background,
+                       "Specify a background image", NULL
+               },
+               {
+                       "console", 'C', 0,
+                       G_OPTION_ARG_NONE, &console,
+                       "Watch /dev/console", NULL
+               },
+               {
+                       "dingus", 'D', 0,
+                       G_OPTION_ARG_NONE, &dingus,
+                       "Highlight URLs inside the terminal", NULL
+               },
+               {
+                       "shell", 'S', G_OPTION_FLAG_REVERSE,
+                       G_OPTION_ARG_NONE, &shell,
+                       "Disable spawning a shell inside the terminal", NULL
+               },
+               {
+                       "transparent", 'T', 0,
+                       G_OPTION_ARG_NONE, &transparent,
+                       "Enable the use of a transparent background", NULL
+               },
+               {
+                       "double-buffer", '2', G_OPTION_FLAG_REVERSE,
+                       G_OPTION_ARG_NONE, &dbuffer,
+                       "Disable double-buffering", NULL
+               },
+               {
+                       "audible", 'a', G_OPTION_FLAG_REVERSE,
+                       G_OPTION_ARG_NONE, &audible,
+                       "Use visible, instead of audible, terminal bell",
+                       NULL
+               },
+               {
+                       "command", 'c', 0,
+                       G_OPTION_ARG_STRING, &command,
+                       "Execute a command in the terminal", NULL
+               },
+               {
+                       "debug", 'd', 0,
+                       G_OPTION_ARG_NONE, &debug,
+                       "Enable various debugging checks", NULL
+               },
+               {
+                       "font", 'f', 0,
+                       G_OPTION_ARG_STRING, &font,
+                       "Specify a font to use", NULL
+               },
+               {
+                       "geometry", 'g', 0,
+                       G_OPTION_ARG_STRING, &geometry,
+                       "Set the size (in characters) and position", "GEOMETRY"
+               },
+               {
+                       "highlight", 'h', 0,
+                       G_OPTION_ARG_NONE, &highlight_set,
+                       "Enable distinct highlight color for selection", NULL
+               },
+               {
+                       "icon-title", 'i', 0,
+                       G_OPTION_ARG_NONE, &icon_title,
+                       "Enable the setting of the icon title", NULL
+               },
+               {
+                       "keep", 'k', 0,
+                       G_OPTION_ARG_NONE, &keep,
+                       "Live on after the window closes", NULL
+               },
+               {
+                       "scrollback-lines", 'n', 0,
+                       G_OPTION_ARG_INT, &lines,
+                       "Specify the number of scrollback-lines", NULL
+               },
+               {
+                       "cursor-blink", 0, 0,
+                       G_OPTION_ARG_STRING, &cursor_blink_mode_string,
+                       "Cursor blink mode (system|on|off)", "MODE"
+               },
+               {
+                       "color-cursor", 'r', 0,
+                       G_OPTION_ARG_NONE, &cursor_set,
+                       "Enable a colored cursor", NULL
+               },
+               {
+                       "cursor-shape", 0, 0,
+                       G_OPTION_ARG_STRING, &cursor_shape_string,
+                       "Set cursor shape (block|underline|ibeam)", NULL
+               },
+               {
+                       "scroll-background", 's', 0,
+                       G_OPTION_ARG_NONE, &scroll,
+                       "Enable a scrolling background", NULL
+               },
+               {
+                       "termcap", 't', 0,
+                       G_OPTION_ARG_STRING, &termcap,
+                       "Specify the terminal emulation to use", NULL
+               },
+               {
+                       "working-directory", 'w', 0,
+                       G_OPTION_ARG_FILENAME, &working_directory,
+                       "Specify the initial working directory of the terminal",
+                       NULL
+               },
+               {
+                       "reverse", 0, 0,
+                       G_OPTION_ARG_NONE, &reverse,
+                       "Reverse foreground/background colors", NULL
+               },
+               {
+                       "no-geometry-hints", 'G', G_OPTION_FLAG_REVERSE,
+                       G_OPTION_ARG_NONE, &use_geometry_hints,
+                       "Allow the terminal to be resized to any dimension, not constrained to fit to an 
integer multiple of characters",
+                       NULL
+               },
+               {
+                       "scrolled-window", 'W', 0,
+                       G_OPTION_ARG_NONE, &use_scrolled_window,
+                       "Use a GtkScrolledWindow as terminal container",
+                       NULL
+               },
+               {
+                       "scrollbar-policy", 'P', 0,
+                       G_OPTION_ARG_STRING, &scrollbar_policy_string,
+                       "Set the policy for the vertical scroolbar in the scrolled window (always|auto|never; 
default:always)",
+                       NULL
+               },
+               {
+                       "object-notifications", 'N', 0,
+                       G_OPTION_ARG_NONE, &show_object_notifications,
+                       "Print VteTerminal object notifications",
+                       NULL
+               },
+               {
+                       "output-file", 0, 0,
+                       G_OPTION_ARG_STRING, &output_file,
+                       "Save terminal contents to file at exit", NULL
+               },
+               {
+                       "pty-flags", 0, 0,
+                       G_OPTION_ARG_STRING, &pty_flags_string,
+                       "PTY flags set from default|no-utmp|no-wtmp|no-lastlog|no-helper|no-fallback", NULL
+               },
+               { NULL }
+       };
+       GOptionContext *context;
+       GError *error = NULL;
+       VteTerminalCursorBlinkMode cursor_blink_mode = VTE_CURSOR_BLINK_SYSTEM;
+       VteTerminalCursorShape cursor_shape = VTE_CURSOR_SHAPE_BLOCK;
+       GtkPolicyType scrollbar_policy = GTK_POLICY_ALWAYS;
+       VtePtyFlags pty_flags = VTE_PTY_DEFAULT;
+
+       /* Have to do this early. */
+       if (getenv("VTE_PROFILE_MEMORY")) {
+               if (atol(getenv("VTE_PROFILE_MEMORY")) != 0) {
+                       g_mem_set_vtable(glib_mem_profiler_table);
+               }
+       }
+
+       context = g_option_context_new (" - test VTE terminal emulation");
+       g_option_context_add_main_entries (context, options, NULL);
+       g_option_context_add_group (context, gtk_get_option_group (TRUE));
+       g_option_context_parse (context, &argc, &argv, &error);
+       g_option_context_free (context);
+       if (error != NULL) {
+               g_printerr ("Failed to parse command line arguments: %s\n",
+                               error->message);
+               g_error_free (error);
+               return 1;
+       }
+
+       if (cursor_blink_mode_string) {
+               cursor_blink_mode = parse_enum(VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE, cursor_blink_mode_string);
+               g_free(cursor_blink_mode_string);
+       }
+       if (cursor_shape_string) {
+               cursor_shape = parse_enum(VTE_TYPE_TERMINAL_CURSOR_SHAPE, cursor_shape_string);
+               g_free(cursor_shape_string);
+       }
+       if (scrollbar_policy_string) {
+               scrollbar_policy = parse_enum(GTK_TYPE_POLICY_TYPE, scrollbar_policy_string);
+               g_free(scrollbar_policy_string);
+       }
+       if (pty_flags_string) {
+               pty_flags |= parse_flags(VTE_TYPE_PTY_FLAGS, pty_flags_string);
+               g_free(pty_flags_string);
+       }
+
+       if (!reverse) {
+               back.red = back.green = back.blue = 0xffff;
+               fore.red = fore.green = fore.blue = 0x0000;
+       } else {
+               back.red = back.green = back.blue = 0x0000;
+               fore.red = fore.green = fore.blue = 0xffff;
+       }
+
+       highlight.red = highlight.green = highlight.blue = 0xc000;
+       cursor.red = 0xffff;
+       cursor.green = cursor.blue = 0x8000;
+       tint.red = tint.green = tint.blue = 0;
+       tint = back;
+
+       gdk_window_set_debug_updates(debug);
+
+       /* Create a window to hold the scrolling shell, and hook its
+        * delete event to the quit function.. */
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_container_set_resize_mode(GTK_CONTAINER(window),
+                                     GTK_RESIZE_IMMEDIATE);
+
+       /* Set ARGB colormap */
+       screen = gtk_widget_get_screen (window);
+#if GTK_CHECK_VERSION (2, 90, 8)
+       visual = gdk_screen_get_rgba_visual(screen);
+       if (visual)
+               gtk_widget_set_visual(GTK_WIDGET(window), visual);
+#else
+       colormap = gdk_screen_get_rgba_colormap (screen);
+       if (colormap)
+           gtk_widget_set_colormap(window, colormap);
+#endif
+
+       if (use_scrolled_window) {
+               scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
+                                              GTK_POLICY_NEVER, scrollbar_policy);
+               gtk_container_add(GTK_CONTAINER(window), scrolled_window);
+       } else {
+               /* Create a box to hold everything. */
+               hbox = gtk_hbox_new(0, FALSE);
+               gtk_container_add(GTK_CONTAINER(window), hbox);
+       }
+
+       /* Create the terminal widget and add it to the scrolling shell. */
+       widget = vte_terminal_new();
+       terminal = VTE_TERMINAL (widget);
+       if (!dbuffer) {
+               gtk_widget_set_double_buffered(widget, dbuffer);
+       }
+       g_signal_connect(terminal, "child-exited", G_CALLBACK(child_exit_cb), NULL);
+       if (show_object_notifications)
+               g_signal_connect(terminal, "notify", G_CALLBACK(terminal_notify_cb), NULL);
+       if (use_scrolled_window) {
+               gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(terminal));
+       } else {
+               gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
+       }
+
+       /* Connect to the "char_size_changed" signal to set geometry hints
+        * whenever the font used by the terminal is changed. */
+       if (use_geometry_hints) {
+               char_size_changed(widget, 0, 0, window);
+               g_signal_connect(widget, "char-size-changed",
+                                G_CALLBACK(char_size_changed), window);
+               g_signal_connect(widget, "realize",
+                                G_CALLBACK(char_size_realized), window);
+       }
+
+       /* Connect to the "window_title_changed" signal to set the main
+        * window's title. */
+       g_signal_connect(widget, "window-title-changed",
+                        G_CALLBACK(window_title_changed), window);
+       if (icon_title) {
+               g_signal_connect(widget, "icon-title-changed",
+                                G_CALLBACK(icon_title_changed), window);
+       }
+
+       /* Connect to the "status-line-changed" signal. */
+       g_signal_connect(widget, "status-line-changed",
+                        G_CALLBACK(status_line_changed), widget);
+
+       /* Connect to the "button-press" event. */
+       g_signal_connect(widget, "button-press-event",
+                        G_CALLBACK(button_pressed), widget);
+
+       /* Connect to application request signals. */
+       g_signal_connect(widget, "iconify-window",
+                        G_CALLBACK(iconify_window), window);
+       g_signal_connect(widget, "deiconify-window",
+                        G_CALLBACK(deiconify_window), window);
+       g_signal_connect(widget, "raise-window",
+                        G_CALLBACK(raise_window), window);
+       g_signal_connect(widget, "lower-window",
+                        G_CALLBACK(lower_window), window);
+       g_signal_connect(widget, "maximize-window",
+                        G_CALLBACK(maximize_window), window);
+       g_signal_connect(widget, "restore-window",
+                        G_CALLBACK(restore_window), window);
+       g_signal_connect(widget, "refresh-window",
+                        G_CALLBACK(refresh_window), window);
+       g_signal_connect(widget, "resize-window",
+                        G_CALLBACK(resize_window), window);
+       g_signal_connect(widget, "move-window",
+                        G_CALLBACK(move_window), window);
+
+       /* Connect to font tweakage. */
+       g_signal_connect(widget, "increase-font-size",
+                        G_CALLBACK(increase_font_size), window);
+       g_signal_connect(widget, "decrease-font-size",
+                        G_CALLBACK(decrease_font_size), window);
+
+       if (!use_scrolled_window) {
+               /* Create the scrollbar for the widget. */
+               scrollbar = gtk_vscrollbar_new(terminal->adjustment);
+               gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0);
+       }
+
+       /* Set some defaults. */
+       vte_terminal_set_audible_bell(terminal, audible);
+       vte_terminal_set_visible_bell(terminal, !audible);
+       vte_terminal_set_cursor_blink_mode(terminal, cursor_blink_mode);
+       vte_terminal_set_scroll_background(terminal, scroll);
+       vte_terminal_set_scroll_on_output(terminal, FALSE);
+       vte_terminal_set_scroll_on_keystroke(terminal, TRUE);
+       vte_terminal_set_scrollback_lines(terminal, lines);
+       vte_terminal_set_mouse_autohide(terminal, TRUE);
+       if (background != NULL) {
+               vte_terminal_set_background_image_file(terminal,
+                                                      background);
+       }
+       if (transparent) {
+               vte_terminal_set_background_transparent(terminal,
+                                                       TRUE);
+       }
+       vte_terminal_set_background_tint_color(terminal, &tint);
+       vte_terminal_set_colors(terminal, &fore, &back, NULL, 0);
+       vte_terminal_set_opacity(terminal, 0xdddd);
+       if (highlight_set) {
+               vte_terminal_set_color_highlight(terminal,
+                                                &highlight);
+       }
+       if (cursor_set) {
+               vte_terminal_set_color_cursor(terminal, &cursor);
+       }
+       if (termcap != NULL) {
+               vte_terminal_set_emulation(terminal, termcap);
+       }
+       vte_terminal_set_cursor_shape(terminal, cursor_shape);
+
+       /* Set the default font. */
+       vte_terminal_set_font_from_string_full(terminal, font,
+                                              antialias ? VTE_ANTI_ALIAS_USE_DEFAULT : 
VTE_ANTI_ALIAS_FORCE_DISABLE);
+
+       /* Match "abcdefg". */
+       if (dingus) {
+               int id;
+               GRegex *regex;
+               regex = g_regex_new (DINGUS1, 0, 0, NULL);
+               id = vte_terminal_match_add_gregex(terminal, regex, 0);
+               g_regex_unref (regex);
+               vte_terminal_match_set_cursor_type(terminal,
+                                                  id, GDK_GUMBY);
+               regex = g_regex_new (DINGUS2, 0, 0, NULL);
+               id = vte_terminal_match_add_gregex(terminal, regex, 0);
+               g_regex_unref (regex);
+               vte_terminal_match_set_cursor_type(terminal,
+                                                  id, GDK_HAND1);
+       }
+
+       if (console) {
+               /* Open a "console" connection. */
+               int consolefd = -1, yes = 1, watch;
+               GIOChannel *channel;
+               consolefd = open("/dev/console", O_RDONLY | O_NOCTTY);
+               if (consolefd != -1) {
+                       /* Assume failure. */
+                       console = FALSE;
+#ifdef TIOCCONS
+                       if (ioctl(consolefd, TIOCCONS, &yes) != -1) {
+                               /* Set up a listener. */
+                               channel = g_io_channel_unix_new(consolefd);
+                               watch = g_io_add_watch(channel,
+                                                      G_IO_IN,
+                                                      read_and_feed,
+                                                      widget);
+                               g_signal_connect(widget,
+                                                "eof",
+                                                G_CALLBACK(disconnect_watch),
+                                                GINT_TO_POINTER(watch));
+                               g_signal_connect(widget,
+                                                "child-exited",
+                                                G_CALLBACK(disconnect_watch),
+                                                GINT_TO_POINTER(watch));
+                               g_signal_connect(widget,
+                                                "realize",
+                                                G_CALLBACK(take_xconsole_ownership),
+                                                NULL);
+#ifdef VTE_DEBUG
+                               vte_terminal_feed(terminal,
+                                                 "Console log for ...\r\n",
+                                                 -1);
+#endif
+                               /* Record success. */
+                               console = TRUE;
+                       }
+#endif
+               } else {
+                       /* Bail back to normal mode. */
+                       g_warning(_("Could not open console.\n"));
+                       close(consolefd);
+                       console = FALSE;
+               }
+       }
+
+       if (!console) {
+               if (shell) {
+                       GError *err = NULL;
+                       char **command_argv = NULL;
+                       int command_argc;
+                       GPid pid = -1;
+
+                       _VTE_DEBUG_IF(VTE_DEBUG_MISC)
+                               vte_terminal_feed(terminal, message, -1);
+
+                        if (command == NULL || *command == '\0')
+                                command = vte_get_user_shell ();
+
+                       if (command == NULL || *command == '\0')
+                               command = g_getenv ("SHELL");
+
+                       if (command == NULL || *command == '\0')
+                               command = "/bin/sh";
+
+                       if (!g_shell_parse_argv(command, &command_argc, &command_argv, &err) ||
+                           !vte_terminal_fork_command_full(terminal,
+                                                           pty_flags,
+                                                           NULL,
+                                                           command_argv,
+                                                           env_add,
+                                                           G_SPAWN_SEARCH_PATH,
+                                                           NULL, NULL,
+                                                           &pid,
+                                                           &err)) {
+                               g_warning("Failed to fork: %s\n", err->message);
+                               g_error_free(err);
+                       } else {
+                               g_print("Fork succeeded, PID %d\n", pid);
+                       }
+
+                       g_strfreev(command_argv);
+       #ifdef VTE_DEBUG
+                       if (command == NULL) {
+                               vte_terminal_feed_child(terminal,
+                                                       "pwd\n", -1);
+                       }
+       #endif
+               } else {
+                       long i;
+                       i = vte_terminal_forkpty(terminal,
+                                                env_add, working_directory,
+                                                TRUE, TRUE, TRUE);
+                       switch (i) {
+                       case -1:
+                               /* abnormal */
+                               g_warning("Error in vte_terminal_forkpty(): %s",
+                                         strerror(errno));
+                               break;
+                       case 0:
+                               /* child */
+                               for (i = 0; ; i++) {
+                                       switch (i % 3) {
+                                       case 0:
+                                       case 1:
+                                               g_print("%ld\n", i);
+                                               break;
+                                       case 2:
+                                               g_printerr("%ld\n", i);
+                                               break;
+                                       }
+                                       sleep(1);
+                               }
+                               _exit(0);
+                               break;
+                       default:
+                               g_print("Child PID is %ld (mine is %ld).\n",
+                                       (long) i, (long) getpid());
+                               /* normal */
+                               break;
+                       }
+               }
+       }
+
+       g_object_set_data (G_OBJECT (widget), "output_file", (gpointer) output_file);
+
+       /* Go for it! */
+       g_signal_connect(widget, "child-exited", G_CALLBACK(child_exited), window);
+       g_signal_connect(window, "delete-event", G_CALLBACK(delete_event), widget);
+
+       add_weak_pointer(G_OBJECT(widget), &widget);
+       add_weak_pointer(G_OBJECT(window), &window);
+
+       gtk_widget_realize(widget);
+       if (geometry) {
+               if (!gtk_window_parse_geometry (GTK_WINDOW(window), geometry)) {
+                       g_warning (_("Could not parse the geometry spec passed to --geometry"));
+               }
+       }
+#if GTK_CHECK_VERSION(2, 91, 0)
+       else {
+               /* As of GTK+ 2.91.0, the default size of a window comes from its minimum
+                * size not its natural size, so we need to set the right default size
+                * explicitly */
+               gtk_window_set_default_geometry (GTK_WINDOW (window),
+                                                vte_terminal_get_column_count (terminal),
+                                                vte_terminal_get_row_count (terminal));
+       }
+#endif
+
+       gtk_widget_show_all(window);
+
+       gtk_main();
+
+       g_assert(widget == NULL);
+       g_assert(window == NULL);
+
+       if (keep) {
+               while (TRUE) {
+                       sleep(60);
+               }
+       }
+
+       return 0;
+}
diff --git a/vte/src/vtebg.c b/vte/src/vtebg.c
new file mode 100644
index 0000000..5eeb778
--- /dev/null
+++ b/vte/src/vtebg.c
@@ -0,0 +1,529 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include "debug.h"
+#include "marshal.h"
+#include "vtebg.h"
+#include "vte-gtk-compat.h"
+
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#include <cairo-xlib.h>
+#endif
+
+G_DEFINE_TYPE(VteBg, vte_bg, G_TYPE_OBJECT)
+
+struct _VteBgPrivate {
+       GList *cache;
+       GdkScreen *screen;
+#ifdef GDK_WINDOWING_X11
+       cairo_surface_t *root_surface;
+        struct {
+                GdkDisplay *display;
+                GdkWindow *window;
+                XID native_window;
+                GdkAtom atom;
+                Atom native_atom;
+        } native;
+#endif
+};
+
+typedef struct {
+       VteBgSourceType source_type;
+       GdkPixbuf *source_pixbuf;
+       char *source_file;
+
+       PangoColor tint_color;
+       double saturation;
+       cairo_surface_t *surface;
+} VteBgCacheItem;
+
+static void vte_bg_cache_item_free(VteBgCacheItem *item);
+static void vte_bg_cache_prune_int(VteBg *bg, gboolean root);
+static const cairo_user_data_key_t item_surface_key;
+
+#ifdef GDK_WINDOWING_X11
+
+static void
+_vte_bg_display_sync(VteBg *bg)
+{
+        VteBgPrivate *pvt = bg->pvt;
+
+       gdk_display_sync(pvt->native.display);
+}
+
+static gboolean
+_vte_property_get_pixmaps(GdkWindow *window, GdkAtom atom,
+                         GdkAtom *type, int *size,
+                         XID **pixmaps)
+{
+       return gdk_property_get(window, atom, GDK_TARGET_PIXMAP,
+                               0, INT_MAX - 3,
+                               FALSE,
+                               type, NULL, size,
+                               (guchar**) pixmaps);
+}
+
+static cairo_surface_t *
+vte_bg_root_surface(VteBg *bg)
+{
+        VteBgPrivate *pvt = bg->pvt;
+       GdkAtom prop_type;
+       int prop_size;
+       Window root;
+       XID *pixmaps;
+       int x, y;
+       unsigned int width, height, border_width, depth;
+       cairo_surface_t *surface = NULL;
+       Display *display;
+       Screen *screen;
+
+       pixmaps = NULL;
+       gdk_error_trap_push();
+       if (!_vte_property_get_pixmaps(pvt->native.window, pvt->native.atom,
+                                       &prop_type, &prop_size,
+                                       &pixmaps))
+               goto out;
+
+       if ((prop_type != GDK_TARGET_PIXMAP) ||
+           (prop_size < (int)sizeof(XID) ||
+            (pixmaps == NULL)))
+               goto out_pixmaps;
+               
+       if (!XGetGeometry (GDK_DISPLAY_XDISPLAY (pvt->native.display),
+                          pixmaps[0], &root,
+                          &x, &y, &width, &height, &border_width, &depth))
+               goto out_pixmaps;
+
+       display = gdk_x11_display_get_xdisplay (pvt->native.display);
+       screen = gdk_x11_screen_get_xscreen (pvt->screen);
+       surface = cairo_xlib_surface_create (display,
+                                            pixmaps[0],
+                                            DefaultVisualOfScreen(screen),
+                                            width, height);
+
+        _vte_debug_print(VTE_DEBUG_BG|VTE_DEBUG_EVENTS,
+                         "VteBg new background image %dx%d\n", width, height);
+
+ out_pixmaps:
+       g_free(pixmaps);
+ out:
+       _vte_bg_display_sync(bg);
+       gdk_error_trap_pop_ignored ();
+
+       return surface;
+}
+
+static void
+vte_bg_set_root_surface(VteBg *bg, cairo_surface_t *surface)
+{
+        VteBgPrivate *pvt = bg->pvt;
+
+       if (pvt->root_surface != NULL) {
+               cairo_surface_destroy (pvt->root_surface);
+       }
+       pvt->root_surface = surface;
+       vte_bg_cache_prune_int (bg, TRUE);
+       g_signal_emit_by_name(bg, "root-pixmap-changed");
+}
+
+static GdkFilterReturn
+vte_bg_root_filter(GdkXEvent *native, GdkEvent *event, gpointer data)
+{
+       XEvent *xevent = (XEvent*) native;
+       VteBg *bg;
+        VteBgPrivate *pvt;
+       cairo_surface_t *surface;
+
+       switch (xevent->type) {
+       case PropertyNotify:
+               bg = VTE_BG(data);
+                pvt = bg->pvt;
+               if ((xevent->xproperty.window == pvt->native.native_window) &&
+                   (xevent->xproperty.atom == pvt->native.native_atom)) {
+                       surface = vte_bg_root_surface(bg);
+                       vte_bg_set_root_surface(bg, surface);
+               }
+               break;
+       default:
+               break;
+       }
+       return GDK_FILTER_CONTINUE;
+}
+
+#endif /* GDK_WINDOWING_X11 */
+
+static void
+vte_bg_finalize (GObject *obj)
+{
+       VteBg *bg = VTE_BG (obj);
+        VteBgPrivate *pvt = bg->pvt;
+
+        g_list_foreach (pvt->cache, (GFunc)vte_bg_cache_item_free, NULL);
+        g_list_free (pvt->cache);
+
+       G_OBJECT_CLASS(vte_bg_parent_class)->finalize (obj);
+}
+
+static void
+vte_bg_class_init(VteBgClass *klass)
+{
+       GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+       gobject_class->finalize = vte_bg_finalize;
+
+       g_signal_new("root-pixmap-changed",
+                     G_OBJECT_CLASS_TYPE(klass),
+                     G_SIGNAL_RUN_LAST,
+                     0,
+                     NULL,
+                     NULL,
+                     g_cclosure_marshal_VOID__VOID,
+                     G_TYPE_NONE, 0);
+       g_type_class_add_private(klass, sizeof (VteBgPrivate));
+}
+
+static void
+vte_bg_init(VteBg *bg)
+{
+       bg->pvt = G_TYPE_INSTANCE_GET_PRIVATE (bg, VTE_TYPE_BG, VteBgPrivate);
+}
+
+/**
+ * vte_bg_get:
+ * @screen: a #GdkScreen
+ *
+ * Returns the global #VteBg object for @screen, creating it if necessary.
+ *
+ * Returns: (transfer none): a #VteBg
+ */
+VteBg *
+vte_bg_get_for_screen(GdkScreen *screen)
+{
+       VteBg       *bg;
+
+       bg = g_object_get_data(G_OBJECT(screen), "vte-bg");
+       if (G_UNLIKELY(bg == NULL)) {
+                VteBgPrivate *pvt;
+
+               bg = g_object_new(VTE_TYPE_BG, NULL);
+               g_object_set_data_full(G_OBJECT(screen),
+                               "vte-bg", bg, (GDestroyNotify)g_object_unref);
+
+               /* connect bg to screen */
+                pvt = bg->pvt;
+               pvt->screen = screen;
+#ifdef GDK_WINDOWING_X11
+            {
+                GdkEventMask events;
+                GdkWindow   *window;
+
+               window = gdk_screen_get_root_window(screen);
+                pvt->native.window = window;
+#if GTK_CHECK_VERSION (2, 91, 6)
+                pvt->native.native_window = GDK_WINDOW_XID (window);
+                pvt->native.display = gdk_window_get_display(window);
+#else
+                pvt->native.native_window = gdk_x11_drawable_get_xid(window);
+                pvt->native.display = gdk_drawable_get_display(GDK_DRAWABLE(window));
+#endif
+                pvt->native.native_atom = gdk_x11_get_xatom_by_name_for_display(pvt->native.display, 
"_XROOTPMAP_ID");
+                pvt->native.atom = gdk_x11_xatom_to_atom_for_display(pvt->native.display, 
pvt->native.native_atom);
+               pvt->root_surface = vte_bg_root_surface(bg);
+               events = gdk_window_get_events(window);
+               events |= GDK_PROPERTY_CHANGE_MASK;
+               gdk_window_set_events(window, events);
+               gdk_window_add_filter(window, vte_bg_root_filter, bg);
+            }
+#endif /* GDK_WINDOWING_X11 */
+       }
+
+       return bg;
+}
+
+static gboolean
+vte_bg_colors_equal(const PangoColor *a, const PangoColor *b)
+{
+       return  (a->red >> 8) == (b->red >> 8) &&
+               (a->green >> 8) == (b->green >> 8) &&
+               (a->blue >> 8) == (b->blue >> 8);
+}
+
+static void
+vte_bg_cache_item_free(VteBgCacheItem *item)
+{
+        _vte_debug_print(VTE_DEBUG_BG,
+                         "VteBgCacheItem %p freed\n", item);
+
+       /* Clean up whatever is left in the structure. */
+       if (item->source_pixbuf != NULL) {
+               g_object_remove_weak_pointer(G_OBJECT(item->source_pixbuf),
+                               (gpointer*)(void*)&item->source_pixbuf);
+       }
+       g_free(item->source_file);
+
+       if (item->surface != NULL)
+               cairo_surface_set_user_data (item->surface,
+                                            &item_surface_key, NULL, NULL);
+
+       g_slice_free(VteBgCacheItem, item);
+}
+
+static void
+vte_bg_cache_prune_int(VteBg *bg, gboolean root)
+{
+       GList *i, *next;
+       for (i = bg->pvt->cache; i != NULL; i = next) {
+               VteBgCacheItem *item = i->data;
+               next = g_list_next (i);
+               /* Prune the item if either it is a "root pixmap" item and
+                * we want to prune them, or its surface is NULL because
+                * whichever object it created has been destroyed. */
+               if ((root && (item->source_type == VTE_BG_SOURCE_ROOT)) ||
+                   item->surface == NULL) {
+                       vte_bg_cache_item_free (item);
+                       bg->pvt->cache = g_list_delete_link(bg->pvt->cache, i);
+               }
+       }
+}
+
+static void
+vte_bg_cache_prune(VteBg *bg)
+{
+       vte_bg_cache_prune_int(bg, FALSE);
+}
+
+static void item_surface_destroy_func(void *data)
+{
+       VteBgCacheItem *item = data;
+
+        _vte_debug_print(VTE_DEBUG_BG,
+                         "VteBgCacheItem %p surface destroyed\n", item);
+
+       item->surface = NULL;
+}
+
+/*
+ * vte_bg_cache_add:
+ * @bg: a #VteBg
+ * @item: a #VteBgCacheItem
+ *
+ * Adds @item to @bg's cache, instructing all of the objects therein to
+ * clear the field which holds a pointer to the object upon its destruction.
+ */
+static void
+vte_bg_cache_add(VteBg *bg, VteBgCacheItem *item)
+{
+       vte_bg_cache_prune(bg);
+       bg->pvt->cache = g_list_prepend(bg->pvt->cache, item);
+       if (item->source_pixbuf != NULL) {
+               g_object_add_weak_pointer(G_OBJECT(item->source_pixbuf),
+                                         (gpointer*)(void*)&item->source_pixbuf);
+       }
+
+        if (item->surface != NULL)
+                cairo_surface_set_user_data (item->surface, &item_surface_key, item,
+                                            item_surface_destroy_func);
+}
+
+/*
+ * vte_bg_cache_search:
+ * @bg: a #VteBg
+ * @source_type: a #VteBgSourceType
+ * @source_pixbuf: a #GdkPixbuf, or %NULL
+ * @source_file: path of an image file, or %NULL
+ * @tint: a #PangoColor to use as tint color
+ * @saturation: the saturation as a value between 0.0 and 1.0
+ *
+ * Returns: a reference to a #cairo_surface_t, or %NULL on if
+ *   there is no matching item in the cache
+ */
+static cairo_surface_t *
+vte_bg_cache_search(VteBg *bg,
+                   VteBgSourceType source_type,
+                   const GdkPixbuf *source_pixbuf,
+                   const char *source_file,
+                   const PangoColor *tint,
+                   double saturation)
+{
+       GList *i;
+
+       vte_bg_cache_prune(bg);
+       for (i = bg->pvt->cache; i != NULL; i = g_list_next(i)) {
+               VteBgCacheItem *item = i->data;
+               if (vte_bg_colors_equal(&item->tint_color, tint) &&
+                   (saturation == item->saturation) &&
+                   (source_type == item->source_type)) {
+                       switch (source_type) {
+                       case VTE_BG_SOURCE_ROOT:
+                               break;
+                       case VTE_BG_SOURCE_PIXBUF:
+                               if (item->source_pixbuf != source_pixbuf) {
+                                       continue;
+                               }
+                               break;
+                       case VTE_BG_SOURCE_FILE:
+                               if (strcmp(item->source_file, source_file)) {
+                                       continue;
+                               }
+                               break;
+                       default:
+                               g_assert_not_reached();
+                               break;
+                       }
+
+                       return cairo_surface_reference(item->surface);
+               }
+       }
+       return NULL;
+}
+
+/*< private >
+ * vte_bg_get_surface:
+ * @bg: a #VteBg
+ * @source_type: a #VteBgSourceType
+ * @source_pixbuf: (allow-none): a #GdkPixbuf, or %NULL
+ * @source_file: (allow-none): path of an image file, or %NULL
+ * @tint: a #PangoColor to use as tint color
+ * @saturation: the saturation as a value between 0.0 and 1.0
+ * @other: a #cairo_surface_t
+ *
+ * Returns: a reference to a #cairo_surface_t, or %NULL on failure
+ */
+cairo_surface_t *
+vte_bg_get_surface(VteBg *bg,
+                  VteBgSourceType source_type,
+                  GdkPixbuf *source_pixbuf,
+                  const char *source_file,
+                  const PangoColor *tint,
+                  double saturation,
+                  cairo_surface_t *other)
+{
+        VteBgPrivate *pvt;
+       VteBgCacheItem *item;
+       GdkPixbuf *pixbuf;
+       cairo_surface_t *cached;
+       cairo_t *cr;
+       int width, height;
+
+        g_return_val_if_fail(VTE_IS_BG(bg), NULL);
+        pvt = bg->pvt;
+
+       if (source_type == VTE_BG_SOURCE_NONE) {
+               return NULL;
+       }
+#ifndef GDK_WINDOWING_X11
+        if (source_type == VTE_BG_SOURCE_ROOT) {
+                return NULL;
+        }
+#endif
+
+       cached = vte_bg_cache_search(bg, source_type,
+                                    source_pixbuf, source_file,
+                                    tint, saturation);
+       if (cached != NULL) {
+               return cached;
+       }
+
+        /* FIXME: The above only returned a hit when the source *and*
+         * tint and saturation matched. This means that for VTE_BG_SOURCE_FILE,
+         * we will create below *another* #GdkPixbuf for the same source file,
+         * wasting memory. We should instead look up the source pixbuf regardless
+         * of tint and saturation, and just create a new #VteBgCacheItem
+         * with a new surface for it.
+         */
+
+       item = g_slice_new(VteBgCacheItem);
+       item->source_type = source_type;
+       item->source_pixbuf = NULL;
+       item->source_file = NULL;
+       item->tint_color = *tint;
+       item->saturation = saturation;
+        item->surface = NULL;
+       pixbuf = NULL;
+
+       switch (source_type) {
+       case VTE_BG_SOURCE_ROOT:
+               break;
+       case VTE_BG_SOURCE_PIXBUF:
+               item->source_pixbuf = g_object_ref (source_pixbuf);
+               pixbuf = g_object_ref (source_pixbuf);
+               break;
+       case VTE_BG_SOURCE_FILE:
+               if (source_file != NULL && source_file[0] != '\0') {
+                       item->source_file = g_strdup(source_file);
+                       pixbuf = gdk_pixbuf_new_from_file(source_file, NULL);
+               }
+               break;
+       default:
+               g_assert_not_reached();
+               break;
+       }
+
+       if (pixbuf) {
+               width = gdk_pixbuf_get_width(pixbuf);
+               height = gdk_pixbuf_get_height(pixbuf);
+       }
+#ifdef GDK_WINDOWING_X11
+        else if (source_type == VTE_BG_SOURCE_ROOT &&
+                 pvt->root_surface != NULL) {
+               width = cairo_xlib_surface_get_width(pvt->root_surface);
+               height = cairo_xlib_surface_get_height(pvt->root_surface);
+       }
+#endif
+        else
+                goto out;
+
+       item->surface =
+               cairo_surface_create_similar(other, CAIRO_CONTENT_COLOR_ALPHA,
+                                            width, height);
+
+       cr = cairo_create (item->surface);
+       cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+       if (pixbuf)
+               gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+#ifdef GDK_WINDOWING_X11
+       else if (source_type == VTE_BG_SOURCE_ROOT)
+               cairo_set_source_surface (cr, pvt->root_surface, 0, 0);
+#endif
+       cairo_paint (cr);
+
+       if (saturation < 1.0) {
+               cairo_set_source_rgba (cr, 
+                                      tint->red / 65535.,
+                                      tint->green / 65535.,
+                                      tint->blue / 65535.,
+                                      1 - saturation);
+               cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
+               cairo_paint (cr);
+       }
+       cairo_destroy (cr);
+
+    out:
+       vte_bg_cache_add(bg, item);
+
+       if (pixbuf)
+               g_object_unref (pixbuf);
+
+       return item->surface;
+}
diff --git a/vte/src/vtebg.h b/vte/src/vtebg.h
new file mode 100644
index 0000000..f2cf77b
--- /dev/null
+++ b/vte/src/vtebg.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vtebg_included
+#define vte_vtebg_included
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define VTE_TYPE_BG            (vte_bg_get_type())
+#define VTE_BG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), VTE_TYPE_BG, VteBg))
+#define VTE_BG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  VTE_TYPE_BG, VteBgClass))
+#define VTE_IS_BG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VTE_TYPE_BG))
+#define VTE_IS_BG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  VTE_TYPE_BG))
+#define VTE_BG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  VTE_TYPE_BG, VteBgClass))
+
+typedef struct _VteBg         VteBg;
+typedef struct _VteBgPrivate  VteBgPrivate;
+typedef struct _VteBgClass    VteBgClass;
+
+struct _VteBg {
+       GObject parent;
+
+        /*< private >*/
+       VteBgPrivate *pvt;
+};
+
+struct _VteBgClass {
+       GObjectClass parent_class;
+};
+
+GType vte_bg_get_type(void);
+
+VteBg *vte_bg_get_for_screen(GdkScreen *screen);
+
+typedef enum {
+       VTE_BG_SOURCE_NONE,
+       VTE_BG_SOURCE_ROOT,
+       VTE_BG_SOURCE_PIXBUF,
+       VTE_BG_SOURCE_FILE
+} VteBgSourceType;
+
+cairo_surface_t *
+vte_bg_get_surface(VteBg *bg,
+                  VteBgSourceType source_type,
+                  GdkPixbuf *source_pixbuf,
+                  const char *source_file,
+                  const PangoColor *tint,
+                  double saturation,
+                  cairo_surface_t *other);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vteconv.c b/vte/src/vteconv.c
new file mode 100644
index 0000000..2b91d33
--- /dev/null
+++ b/vte/src/vteconv.c
@@ -0,0 +1,615 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+
+#include <config.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <string.h>
+#include <glib.h>
+#include "buffer.h"
+#include "vteconv.h"
+#include "vte-private.h"
+
+typedef size_t (*convert_func)(GIConv converter,
+                         const guchar **inbuf,
+                         gsize *inbytes_left,
+                         guchar **outbuf,
+                         gsize *outbytes_left);
+struct _VteConv {
+       GIConv conv;
+       convert_func convert;
+       gint (*close)(GIConv converter);
+       gboolean in_unichar, out_unichar;
+       VteBuffer *in_scratch, *out_scratch;
+};
+
+/* We can't use g_utf8_strlen as that's not nul-safe :( */
+static glong
+_vte_conv_utf8_strlen(const gchar *p, gssize max)
+{
+       const gchar *q = p + max;
+       glong length = -1;
+       do {
+               length++;
+               p = g_utf8_next_char(p);
+       } while (p < q);
+       return length;
+}
+
+/* A bogus UTF-8 to UTF-8 conversion function which attempts to provide the
+ * same semantics as g_iconv(). */
+static size_t
+_vte_conv_utf8_utf8(GIConv converter,
+                   const gchar **inbuf,
+                   gsize *inbytes_left,
+                   gchar **outbuf,
+                   gsize *outbytes_left)
+{
+       gboolean validated;
+       const gchar *endptr;
+       size_t bytes;
+       guint skip;
+
+       /* We don't tolerate shenanigans! */
+       g_assert(*outbytes_left >= *inbytes_left);
+
+       /* The only error we can throw is EILSEQ, so check for that here. */
+       validated = g_utf8_validate(*inbuf, *inbytes_left, &endptr);
+
+       /* Copy whatever data was validated. */
+       bytes = endptr - *inbuf;
+       memcpy(*outbuf, *inbuf, bytes);
+       *inbuf += bytes;
+       *outbuf += bytes;
+       *outbytes_left -= bytes;
+       *inbytes_left -= bytes;
+
+       /* Return 0 (number of non-reversible conversions performed) if everything
+        * looked good, else EILSEQ. */
+       if (validated) {
+               return 0;
+       }
+
+       /* Determine why the end of the string is not valid.
+        * We are pur b@stards for running g_utf8_next_char() on an
+        * invalid sequence. */
+       skip = g_utf8_next_char(*inbuf) - *inbuf;
+       if (skip > *inbytes_left) {
+               /* We didn't have enough bytes to validate the character.
+                * That qualifies for EINVAL, but only if the part of the
+                * character that we have is a valid prefix to a character.
+                * Differentiating those requires verifying that all the
+                * remaining bytes after this one are UTF-8 continuation
+                * bytes.  Actually even that is not quite enough as not
+                * all continuation bytes are valid in the most strict
+                * interpretation of UTF-8, but we don't care about that.
+                */
+               size_t i;
+
+               for (i = 1; i < *inbytes_left; i++)
+                       if (((*inbuf)[i] & 0xC0) != 0x80) {
+                               /* Not a continuation byte */
+                               errno = EILSEQ;
+                               return (size_t) -1;
+                       }
+
+               errno = EINVAL;
+       } else {
+               /* We had enough bytes to validate the character, and
+                * it failed.  It just doesn't look right. */
+               errno = EILSEQ;
+       }
+       return (size_t) -1;
+}
+
+/* Open a conversion descriptor which, in addition to normal cases, provides
+ * UTF-8 to UTF-8 conversions and a gunichar-compatible source and target
+ * encoding. */
+VteConv
+_vte_conv_open(const char *target, const char *source)
+{
+       VteConv ret;
+       GIConv conv;
+       gboolean in_unichar, out_unichar, utf8;
+       const char *real_target, *real_source;
+
+       /* No shenanigans. */
+       g_assert(target != NULL);
+       g_assert(source != NULL);
+       g_assert(strlen(target) > 0);
+       g_assert(strlen(source) > 0);
+
+       /* Assume normal iconv usage. */
+       in_unichar = FALSE;
+       out_unichar = FALSE;
+       real_source = source;
+       real_target = target;
+
+       /* Determine if we need to convert gunichars to UTF-8 on input. */
+       if (strcmp(target, VTE_CONV_GUNICHAR_TYPE) == 0) {
+               real_target = "UTF-8";
+               out_unichar = TRUE;
+       }
+
+       /* Determine if we need to convert UTF-8 to gunichars on output. */
+       if (strcmp(source, VTE_CONV_GUNICHAR_TYPE) == 0) {
+               real_source = "UTF-8";
+               in_unichar = TRUE;
+       }
+
+       /* Determine if this is a UTF-8 to UTF-8 conversion. */
+       utf8 = ((g_ascii_strcasecmp(real_target, "UTF-8") == 0) &&
+               (g_ascii_strcasecmp(real_source, "UTF-8") == 0));
+
+       /* If we're doing UTF-8 to UTF-8, just use a dummy function which
+        * checks for bad data. */
+       conv = NULL;
+       if (!utf8) {
+               char *translit_target = g_strdup_printf ("%s//translit", real_target);
+               conv = g_iconv_open(translit_target, real_source);
+               g_free (translit_target);
+               if (conv == ((GIConv) -1)) {
+                       conv = g_iconv_open(real_target, real_source);
+               }
+               if (conv == ((GIConv) -1)) {
+                       return VTE_INVALID_CONV;
+               }
+       }
+
+       /* Set up the descriptor. */
+       ret = g_slice_new0(struct _VteConv);
+       if (utf8) {
+               ret->conv = NULL;
+               ret->convert = (convert_func) _vte_conv_utf8_utf8;
+               ret->close = NULL;
+       } else {
+               g_assert((conv != NULL) && (conv != ((GIConv) -1)));
+               ret->conv = conv;
+               ret->convert = (convert_func) g_iconv;
+               ret->close = g_iconv_close;
+       }
+
+       /* Initialize other elements. */
+       ret->in_unichar = in_unichar;
+       ret->out_unichar = out_unichar;
+
+       /* Create scratch buffers. */
+       ret->in_scratch = _vte_buffer_new();
+       ret->out_scratch = _vte_buffer_new();
+
+       return ret;
+}
+
+gint
+_vte_conv_close(VteConv converter)
+{
+       g_assert(converter != NULL);
+       g_assert(converter != VTE_INVALID_CONV);
+
+       /* Close the underlying descriptor, if there is one. */
+       if (converter->conv != NULL) {
+               g_assert(converter->close != NULL);
+               converter->close(converter->conv);
+       }
+
+       /* Free the scratch buffers. */
+       _vte_buffer_free(converter->in_scratch);
+       _vte_buffer_free(converter->out_scratch);
+
+       /* Free the structure itself. */
+       g_slice_free(struct _VteConv, converter);
+
+       return 0;
+}
+
+size_t
+_vte_conv(VteConv converter,
+         const guchar **inbuf, gsize *inbytes_left,
+         guchar **outbuf, gsize *outbytes_left)
+{
+       size_t ret, tmp;
+       const guchar *work_inbuf_start, *work_inbuf_working;
+       guchar *work_outbuf_start, *work_outbuf_working;
+       gsize work_inbytes, work_outbytes;
+       gsize in_converted, out_converted;
+
+       g_assert(converter != NULL);
+       g_assert(converter != VTE_INVALID_CONV);
+
+       work_inbuf_start = work_inbuf_working = *inbuf;
+       work_outbuf_start = work_outbuf_working = *outbuf;
+       work_inbytes = *inbytes_left;
+       work_outbytes = *outbytes_left;
+       in_converted = 0;
+       out_converted = 0;
+
+       /* Possibly convert the input data from gunichars to UTF-8. */
+       if (converter->in_unichar) {
+               int i, char_count;
+               guchar *p, *end;
+               gunichar *g;
+               /* Make sure the scratch buffer has enough space. */
+               char_count = *inbytes_left / sizeof(gunichar);
+               _vte_buffer_set_minimum_size(converter->in_scratch,
+                                            (char_count + 1) * VTE_UTF8_BPC);
+               /* Convert the incoming text. */
+               g = (gunichar*) *inbuf;
+               p = converter->in_scratch->data;
+               end = p + (char_count + 1) * VTE_UTF8_BPC;
+               for (i = 0; i < char_count; i++) {
+                       p += g_unichar_to_utf8(g[i], (gchar *)p);
+                       g_assert(p <= end);
+               }
+               /* Update our working pointers. */
+               work_inbuf_start = converter->in_scratch->data;
+               work_inbuf_working = work_inbuf_start;
+               work_inbytes = p - work_inbuf_start;
+       }
+
+       /* Possibly set the output pointers to point at our scratch buffer. */
+       if (converter->out_unichar) {
+               work_outbytes = *outbytes_left * VTE_UTF8_BPC;
+               _vte_buffer_set_minimum_size(converter->out_scratch,
+                                            work_outbytes);
+               work_outbuf_start = converter->out_scratch->data;
+               work_outbuf_working = work_outbuf_start;
+       }
+
+       /* Call the underlying conversion. */
+       ret = 0;
+       do {
+               tmp = converter->convert(converter->conv,
+                                        &work_inbuf_working,
+                                        &work_inbytes,
+                                        &work_outbuf_working,
+                                        &work_outbytes);
+               if (tmp == (size_t) -1) {
+                       /* Check for zero bytes, which we pass right through. */
+                       if (errno == EILSEQ) {
+                               if ((work_inbytes > 0) &&
+                                   (work_inbuf_working[0] == '\0') &&
+                                   (work_outbytes > 0)) {
+                                       work_outbuf_working[0] = '\0';
+                                       work_outbuf_working++;
+                                       work_inbuf_working++;
+                                       work_outbytes--;
+                                       work_inbytes--;
+                                       ret++;
+                               } else {
+                                       /* No go. */
+                                       ret = -1;
+                                       break;
+                               }
+                       } else {
+                               ret = -1;
+                               break;
+                       }
+               } else {
+                       ret += tmp;
+                       break;
+               }
+       } while (work_inbytes > 0);
+
+       /* We can't handle this particular failure, and it should
+        * never happen.  (If it does, our caller needs fixing.)  */
+       g_assert((ret != (size_t)-1) || (errno != E2BIG));
+
+       /* Possibly convert the output from UTF-8 to gunichars. */
+       if (converter->out_unichar) {
+               int  left = *outbytes_left;
+               gunichar *g;
+               gchar *p;
+
+               g = (gunichar*) *outbuf;
+               for(p = (gchar *)work_outbuf_start;
+                               p < (gchar *)work_outbuf_working;
+                               p = g_utf8_next_char(p)) {
+                      g_assert(left>=0);
+                      *g++ = g_utf8_get_char(p);
+                      left -= sizeof(gunichar);
+               }
+               *outbytes_left = left;
+               *outbuf = (guchar*) g;
+       } else {
+               /* Pass on the output results. */
+               *outbuf = work_outbuf_working;
+               *outbytes_left -= (work_outbuf_working - work_outbuf_start);
+       }
+
+       /* Advance the input pointer to the right place. */
+       if (converter->in_unichar) {
+               /* Get an idea of how many characters were converted, and
+                * advance the pointer as required. */
+               int chars;
+               chars = _vte_conv_utf8_strlen((const gchar *)work_inbuf_start,
+                                             work_inbuf_working - work_inbuf_start);
+               *inbuf += (sizeof(gunichar) * chars);
+               *inbytes_left -= (sizeof(gunichar) * chars);
+       } else {
+               /* Pass on the input results. */
+               *inbuf = work_inbuf_working;
+               *inbytes_left -= (work_inbuf_working - work_inbuf_start);
+       }
+
+       return ret;
+}
+
+size_t
+_vte_conv_cu(VteConv converter,
+            const guchar **inbuf, gsize *inbytes_left,
+            gunichar **outbuf, gsize *outbytes_left)
+{
+       return _vte_conv(converter,
+                        inbuf, inbytes_left,
+                        (guchar**)outbuf, outbytes_left);
+}
+
+size_t
+_vte_conv_uu(VteConv converter,
+            const gunichar **inbuf, gsize *inbytes_left,
+            gunichar **outbuf, gsize *outbytes_left)
+{
+       return _vte_conv(converter,
+                        (const guchar**)inbuf, inbytes_left,
+                        (guchar**)outbuf, outbytes_left);
+}
+
+size_t
+_vte_conv_uc(VteConv converter,
+            const gunichar **inbuf, gsize *inbytes_left,
+            guchar **outbuf, gsize *outbytes_left)
+{
+       return _vte_conv(converter,
+                        (const guchar**)inbuf, inbytes_left,
+                        outbuf, outbytes_left);
+}
+
+#ifdef VTECONV_MAIN
+static void
+clear(gunichar wide[5], gchar narrow[5])
+{
+       wide[0] = 'T';
+       wide[1] = 'E';
+       wide[2] = 'S';
+       wide[3] = 'T';
+       wide[4] = '\0';
+       strcpy(narrow, "test");
+}
+
+static int
+mixed_strcmp(gunichar *wide, gchar *narrow)
+{
+       while (*wide && *narrow) {
+               if (*wide != *narrow) {
+                       return -1;
+               }
+               wide++;
+               narrow++;
+       }
+       return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+       gunichar wide_test[5];
+       gchar narrow_test[5], buf[10];
+       VteConv conv;
+       gchar *inbuf, *outbuf;
+       gsize inbytes, outbytes;
+       char mbyte_test[] = {0xe2, 0x94, 0x80};
+       char mbyte_test_break[] = {0xe2, 0xe2, 0xe2};
+       int i;
+
+       i = _vte_conv_utf8_strlen("\0\0\0\0", 4);
+       g_assert(i == 4);
+       i = _vte_conv_utf8_strlen("\0A\0\0", 4);
+       g_assert(i == 4);
+       i = _vte_conv_utf8_strlen("\0A\0B", 4);
+       g_assert(i == 4);
+       i = _vte_conv_utf8_strlen("A\0B\0", 4);
+       g_assert(i == 4);
+       i = _vte_conv_utf8_strlen("ABCDE", 4);
+       g_assert(i == 4);
+
+       /* Test g_iconv, no gunichar stuff. */
+       clear(wide_test, narrow_test);
+       memset(buf, 0, sizeof(buf));
+       inbuf = narrow_test;
+       inbytes = strlen(narrow_test);
+       outbuf = buf;
+       outbytes = sizeof(buf);
+       conv = _vte_conv_open("UTF-8", "ISO-8859-1");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if (strcmp(narrow_test, buf) != 0) {
+               g_error("Conversion 1 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test g_iconv, no gunichar stuff. */
+       clear(wide_test, narrow_test);
+       memset(buf, 0, sizeof(buf));
+       inbuf = narrow_test;
+       inbytes = strlen(narrow_test);
+       outbuf = buf;
+       outbytes = sizeof(buf);
+       conv = _vte_conv_open("ISO-8859-1", "UTF-8");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if (strcmp(narrow_test, buf) != 0) {
+               g_error("Conversion 2 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test g_iconv + gunichar stuff. */
+       clear(wide_test, narrow_test);
+       memset(buf, 0, sizeof(buf));
+       inbuf = narrow_test;
+       inbytes = strlen(narrow_test);
+       outbuf = (gchar*) wide_test;
+       outbytes = sizeof(wide_test);
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "ISO-8859-1");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if (mixed_strcmp(wide_test, narrow_test) != 0) {
+               g_error("Conversion 3 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test g_iconv + gunichar stuff. */
+       clear(wide_test, narrow_test);
+       memset(buf, 0, sizeof(buf));
+       inbuf = (gchar*) wide_test;
+       inbytes = 4 * sizeof(gunichar);
+       outbuf = buf;
+       outbytes = sizeof(buf);
+       conv = _vte_conv_open("ISO-8859-1", VTE_CONV_GUNICHAR_TYPE);
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if (mixed_strcmp(wide_test, buf) != 0) {
+               g_error("Conversion 4 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test UTF-8 to UTF-8 "conversion". */
+       clear(wide_test, narrow_test);
+       memset(buf, 0, sizeof(buf));
+       inbuf = (gchar*) narrow_test;
+       inbytes = strlen(narrow_test);
+       outbuf = buf;
+       outbytes = sizeof(buf);
+       conv = _vte_conv_open("UTF-8", "UTF-8");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if (strcmp(narrow_test, buf) != 0) {
+               g_error("Conversion 5 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test zero-byte pass-through. */
+       clear(wide_test, narrow_test);
+       memset(wide_test, 0, sizeof(wide_test));
+       inbuf = (gchar*) wide_test;
+       inbytes = 3 * sizeof(gunichar);
+       outbuf = narrow_test;
+       outbytes = sizeof(narrow_test);
+       conv = _vte_conv_open("UTF-8", VTE_CONV_GUNICHAR_TYPE);
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if ((narrow_test[0] != 0) ||
+           (narrow_test[1] != 0) ||
+           (narrow_test[2] != 0)) {
+               g_error("Conversion 6 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test zero-byte pass-through. */
+       clear(wide_test, narrow_test);
+       memset(wide_test, 'A', sizeof(wide_test));
+       memset(narrow_test, 0, sizeof(narrow_test));
+       inbuf = narrow_test;
+       inbytes = 3;
+       outbuf = (char*)wide_test;
+       outbytes = sizeof(wide_test);
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "UTF-8");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if ((wide_test[0] != 0) ||
+           (wide_test[1] != 0) ||
+           (wide_test[2] != 0)) {
+               g_error("Conversion 7 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test zero-byte pass-through. */
+       clear(wide_test, narrow_test);
+       memset(wide_test, 'A', sizeof(wide_test));
+       memset(narrow_test, 0, sizeof(narrow_test));
+       inbuf = narrow_test;
+       inbytes = 3;
+       outbuf = (char*)wide_test;
+       outbytes = sizeof(wide_test);
+       conv = _vte_conv_open(VTE_CONV_GUNICHAR_TYPE, "ISO-8859-1");
+       i = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+       g_assert(inbytes == 0);
+       if ((wide_test[0] != 0) ||
+           (wide_test[1] != 0) ||
+           (wide_test[2] != 0)) {
+               g_error("Conversion 8 failed.\n");
+       }
+       _vte_conv_close(conv);
+
+       /* Test UTF-8 to UTF-8 error reporting, valid multibyte. */
+       for (i = 0; i < sizeof(mbyte_test); i++) {
+               int ret;
+               inbuf = mbyte_test;
+               inbytes = i + 1;
+               outbuf = buf;
+               outbytes = sizeof(buf);
+               conv = _vte_conv_open("UTF-8", "UTF-8");
+               ret = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+               switch (i) {
+               case 0:
+                       g_assert((ret == -1) && (errno == EINVAL));
+                       break;
+               case 1:
+                       g_assert((ret == -1) && (errno == EINVAL));
+                       break;
+               case 2:
+                       g_assert(ret != -1);
+                       break;
+               default:
+                       g_assert_not_reached();
+                       break;
+               }
+               _vte_conv_close(conv);
+       }
+
+       /* Test UTF-8 to UTF-8 error reporting, invalid multibyte. */
+       for (i = 0; i < sizeof(mbyte_test_break); i++) {
+               int ret;
+               inbuf = mbyte_test_break;
+               inbytes = i + 1;
+               outbuf = buf;
+               outbytes = sizeof(buf);
+               conv = _vte_conv_open("UTF-8", "UTF-8");
+               ret = _vte_conv(conv, &inbuf, &inbytes, &outbuf, &outbytes);
+               _vte_conv_close(conv);
+               switch (i) {
+               case 0:
+                       g_assert((ret == -1) && (errno == EINVAL));
+                       break;
+               case 1:
+                       g_assert((ret == -1) && (errno == EINVAL));
+                       break;
+               case 2:
+                       g_assert((ret == -1) && (errno == EILSEQ));
+                       break;
+               default:
+                       g_assert_not_reached();
+                       break;
+               }
+       }
+
+       return 0;
+}
+#endif
diff --git a/vte/src/vteconv.h b/vte/src/vteconv.h
new file mode 100644
index 0000000..88485ae
--- /dev/null
+++ b/vte/src/vteconv.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_vteconv_h_included
+#define vte_vteconv_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define VTE_CONV_GUNICHAR_TYPE "X-VTE-GUNICHAR"
+#define VTE_INVALID_CONV ((VteConv)-1)
+
+struct _VteConv;
+typedef struct _VteConv *VteConv;
+
+VteConv _vte_conv_open(const char *target, const char *source);
+size_t _vte_conv(VteConv converter,
+                const guchar **inbuf, gsize *inbytes_left,
+                guchar **outbuf, gsize *outbytes_left);
+size_t _vte_conv_uc(VteConv converter,
+                   const gunichar **inbuf, gsize *inbytes_left,
+                   guchar **outbuf, gsize *outbytes_left);
+size_t _vte_conv_uu(VteConv converter,
+                   const gunichar **inbuf, gsize *inbytes_left,
+                   gunichar **outbuf, gsize *outbytes_left);
+size_t _vte_conv_cu(VteConv converter,
+                   const guchar **inbuf, gsize *inbytes_left,
+                   gunichar **outbuf, gsize *outbytes_left);
+gint _vte_conv_close(VteConv converter);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vtedeprecated.h b/vte/src/vtedeprecated.h
new file mode 100644
index 0000000..e531b0d
--- /dev/null
+++ b/vte/src/vtedeprecated.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2001,2002,2003,2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef VTE_DISABLE_DEPRECATED
+
+#ifndef vte_deprecated_h_included
+#define vte_deprecated_h_included
+
+#include <sys/types.h> /* for pid_t */
+
+G_BEGIN_DECLS
+
+/**
+ * VTE_IS_TERMINAL_ERASE_BINDING:
+ *
+ * Does nothing.
+ *
+ * Returns: %FALSE
+ *
+ * @Deprecated: 0.20
+ */
+#define VTE_IS_TERMINAL_ERASE_BINDING(obj)  (FALSE)
+
+/**
+ * VTE_IS_TERMINAL_ANTI_ALIAS:
+ *
+ * Does nothing.
+ *
+ * Returns: %FALSE
+ *
+ * @Deprecated: 0.20
+ */
+#define VTE_IS_TERMINAL_ANTI_ALIAS(obj)     (FALSE)
+
+/**
+ * VteTerminalAntiAlias:
+ * @VTE_ANTI_ALIAS_USE_DEFAULT: Use the system default anti-alias setting
+ * @VTE_ANTI_ALIAS_FORCE_ENABLE: Force enable anti-aliasing
+ * @VTE_ANTI_ALIAS_FORCE_DISABLE: Force disable anti-aliasing
+ *
+ * An enumeration describing which anti-alias setting to use.
+ *
+ * @Deprecated: 0.20
+ */
+typedef enum {
+       VTE_ANTI_ALIAS_USE_DEFAULT,
+       VTE_ANTI_ALIAS_FORCE_ENABLE,
+       VTE_ANTI_ALIAS_FORCE_DISABLE
+} VteTerminalAntiAlias;
+
+void vte_terminal_set_cursor_blinks(VteTerminal *terminal,
+                                   gboolean blink) G_GNUC_DEPRECATED;
+gboolean vte_terminal_get_using_xft(VteTerminal *terminal) G_GNUC_DEPRECATED;
+int vte_terminal_match_add(VteTerminal *terminal, const char *match) G_GNUC_DEPRECATED;
+glong vte_terminal_get_char_descent(VteTerminal *terminal) G_GNUC_DEPRECATED;
+glong vte_terminal_get_char_ascent(VteTerminal *terminal) G_GNUC_DEPRECATED;
+void vte_terminal_set_font_full(VteTerminal *terminal,
+                               const PangoFontDescription *font_desc,
+                               VteTerminalAntiAlias antialias) G_GNUC_DEPRECATED;
+void vte_terminal_set_font_from_string_full(VteTerminal *terminal,
+                                           const char *name,
+                                           VteTerminalAntiAlias antialias) G_GNUC_DEPRECATED;
+pid_t vte_terminal_fork_command(VteTerminal *terminal,
+                               const char *command, char **argv,
+                               char **envv, const char *working_directory,
+                               gboolean lastlog,
+                               gboolean utmp,
+                               gboolean wtmp) G_GNUC_DEPRECATED;
+pid_t vte_terminal_forkpty(VteTerminal *terminal,
+                          char **envv, const char *working_directory,
+                          gboolean lastlog,
+                          gboolean utmp,
+                          gboolean wtmp) G_GNUC_DEPRECATED;
+void vte_terminal_get_padding(VteTerminal *terminal, int *xpad, int *ypad) G_GNUC_DEPRECATED;
+void vte_terminal_set_pty(VteTerminal *terminal, int pty_master);
+int vte_terminal_get_pty(VteTerminal *terminal);
+
+#if GTK_CHECK_VERSION (2, 91, 2)
+GtkAdjustment *vte_terminal_get_adjustment(VteTerminal *terminal);
+#endif
+
+G_END_DECLS
+
+#endif /* !vte_deprecated_h_included */
+
+#endif /* !VTE_DISABLE_DEPRECATED */
diff --git a/vte/src/vtedraw.c b/vte/src/vtedraw.c
new file mode 100644
index 0000000..029ebb3
--- /dev/null
+++ b/vte/src/vtedraw.c
@@ -0,0 +1,1166 @@
+/*
+ * Copyright (C) 2003,2008 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <config.h>
+
+#include <sys/param.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+#include "debug.h"
+#include "vtebg.h"
+#include "vtedraw.h"
+#include "vte-private.h"
+
+#include <pango/pangocairo.h>
+
+
+/* Overview:
+ *
+ *
+ * This file implements vte rendering using pangocairo.  Note that this does
+ * NOT implement any kind of complex text rendering.  That's not currently a
+ * goal.
+ *
+ * The aim is to be super-fast and avoid unneeded work as much as possible.
+ * Here is an overview of how that is accomplished:
+ *
+ *   - We attach a font_info to the draw.  A font_info has all the information
+ *     to quickly draw text.
+ *
+ *   - A font_info keeps uses unistr_font_info structs that represent all
+ *     information needed to quickly draw a single vteunistr.  The font_info
+ *     creates those unistr_font_info structs on demand and caches them
+ *     indefinitely.  It uses a direct array for the ASCII range and a hash
+ *     table for the rest.
+ *
+ *
+ * Fast rendering of unistrs:
+ *
+ * A unistr_font_info (uinfo) calls Pango to set text for the unistr upon
+ * initialization and then caches information needed to draw the results
+ * later.  It uses three different internal representations and respectively
+ * three drawing paths:
+ *
+ *   - COVERAGE_USE_CAIRO_GLYPH:
+ *     Keeping a single glyph index and a cairo scaled-font.  This is the
+ *     fastest way to draw text as it bypasses Pango completely and allows
+ *     for stuffing multiple glyphs into a single cairo_show_glyphs() request
+ *     (if scaled-fonts match).  This method is used if the glyphs used for
+ *     the vteunistr as determined by Pango consists of a single regular glyph
+ *     positioned at 0,0 using a regular font.  This method is used for more
+ *     than 99% of the cases.  Only exceptional cases fall through to the
+ *     other two methods.
+ *
+ *   - COVERAGE_USE_PANGO_GLYPH_STRING:
+ *     Keeping a pango glyphstring and a pango font.  This is slightly slower
+ *     than the previous case as drawing each glyph goes through pango
+ *     separately and causes a separate cairo_show_glyphs() call.  This method
+ *     is used when the previous method cannot be used but the glyphs for the
+ *     character all use a single font.  This is the method used for hexboxes
+ *     and "empty" characters like U+200C ZERO WIDTH NON-JOINER for example.
+ *
+ *   - COVERAGE_USE_PANGO_LAYOUT_LINE:
+ *     Keeping a pango layout line.  This method is used only in the very
+ *     weird and exceptional case that a single vteunistr uses more than one
+ *     font to be drawn.  This happens for example if some diacretics is not
+ *     available in the font chosen for the base character.
+ *
+ *
+ * Caching of font infos:
+ *
+ * To avoid recreating font info structs for the same font again and again we
+ * do the following:
+ *
+ *   - Use a global cache to share font info structs across different widgets.
+ *     We use pango language, cairo font options, resolution, and font description
+ *     as the key for our hash table.
+ *
+ *   - When a font info struct is no longer used by any widget, we delay
+ *     destroying it for a while (FONT_CACHE_TIMEOUT seconds).  This is
+ *     supposed to serve two purposes:
+ *
+ *       * Destroying a terminal widget and creating it again right after will
+ *         reuse the font info struct from the previous widget.
+ *
+ *       * Zooming in and out a terminal reuses the font info structs.
+ *
+ *
+ * Pre-caching ASCII letters:
+ *
+ * When initializing a font info struct we measure a string consisting of all
+ * ASCII letters and some other ASCII characters.  Since we have a shaped pango
+ * layout at hand, we walk over it and cache unistr font info for the ASCII
+ * letters if we can do that easily using COVERAGE_USE_CAIRO_GLYPH.  This
+ * means that we precache all ASCII letters without any extra pango shaping
+ * involved.
+ */
+
+
+
+#define FONT_CACHE_TIMEOUT (30) /* seconds */
+
+
+/* All shared data structures are implicitly protected by GDK mutex, because
+ * that's how vte.c works and we only get called from there. */
+
+
+/* cairo_show_glyphs accepts runs up to 102 glyphs before it allocates a
+ * temporary array.
+ *
+ * Setting this to a large value can cause dramatic slow-downs for some
+ * xservers (notably fglrx), see bug #410534.
+ *
+ * Moreover, setting it larger than %VTE_DRAW_MAX_LENGTH is nonsensical,
+ * as the higher layers will not submit runs longer than that value.
+ */
+#define MAX_RUN_LENGTH 100
+
+
+enum unistr_coverage {
+       /* in increasing order of speed */
+       COVERAGE_UNKNOWN = 0,           /* we don't know about the character yet */
+       COVERAGE_USE_PANGO_LAYOUT_LINE, /* use a PangoLayoutLine for the character */
+       COVERAGE_USE_PANGO_GLYPH_STRING,        /* use a PangoGlyphString for the character */
+       COVERAGE_USE_CAIRO_GLYPH        /* use a cairo_glyph_t for the character */
+};
+
+union unistr_font_info {
+       /* COVERAGE_USE_PANGO_LAYOUT_LINE */
+       struct {
+               PangoLayoutLine *line;
+       } using_pango_layout_line;
+       /* COVERAGE_USE_PANGO_GLYPH_STRING */
+       struct {
+               PangoFont *font;
+               PangoGlyphString *glyph_string;
+       } using_pango_glyph_string;
+       /* COVERAGE_USE_CAIRO_GLYPH */
+       struct {
+               cairo_scaled_font_t *scaled_font;
+               unsigned int glyph_index;
+       } using_cairo_glyph;
+};
+
+struct unistr_info {
+       guchar coverage;
+       guchar has_unknown_chars;
+       guint16 width;
+       union unistr_font_info ufi;
+};
+
+static struct unistr_info *
+unistr_info_create (void)
+{
+       return g_slice_new0 (struct unistr_info);
+}
+
+static void
+unistr_info_finish (struct unistr_info *uinfo)
+{
+       union unistr_font_info *ufi = &uinfo->ufi;
+
+       switch (uinfo->coverage) {
+       default:
+       case COVERAGE_UNKNOWN:
+               break;
+       case COVERAGE_USE_PANGO_LAYOUT_LINE:
+               /* we hold a manual reference on layout */
+               g_object_unref (ufi->using_pango_layout_line.line->layout);
+               ufi->using_pango_layout_line.line->layout = NULL;
+               pango_layout_line_unref (ufi->using_pango_layout_line.line);
+               ufi->using_pango_layout_line.line = NULL;
+               break;
+       case COVERAGE_USE_PANGO_GLYPH_STRING:
+               if (ufi->using_pango_glyph_string.font)
+                       g_object_unref (ufi->using_pango_glyph_string.font);
+               ufi->using_pango_glyph_string.font = NULL;
+               pango_glyph_string_free (ufi->using_pango_glyph_string.glyph_string);
+               ufi->using_pango_glyph_string.glyph_string = NULL;
+               break;
+       case COVERAGE_USE_CAIRO_GLYPH:
+               cairo_scaled_font_destroy (ufi->using_cairo_glyph.scaled_font);
+               ufi->using_cairo_glyph.scaled_font = NULL;
+               break;
+       }
+}
+
+static void
+unistr_info_destroy (struct unistr_info *uinfo)
+{
+       unistr_info_finish (uinfo);
+       g_slice_free (struct unistr_info, uinfo);
+}
+
+struct font_info {
+       /* lifecycle */
+       int ref_count;
+       guint destroy_timeout; /* only used when ref_count == 0 */
+
+       /* reusable layout set with font and everything set */
+       PangoLayout *layout;
+
+       /* cache of character info */
+       struct unistr_info ascii_unistr_info[128];
+       GHashTable *other_unistr_info;
+
+       /* cell metrics */
+       gint width, height, ascent;
+
+       /* reusable string for UTF-8 conversion */
+       GString *string;
+
+#ifdef VTE_DEBUG
+       /* profiling info */
+       int coverage_count[4];
+#endif
+};
+
+
+static struct unistr_info *
+font_info_find_unistr_info (struct font_info    *info,
+                           vteunistr            c)
+{
+       struct unistr_info *uinfo;
+
+       if (G_LIKELY (c < G_N_ELEMENTS (info->ascii_unistr_info)))
+               return &info->ascii_unistr_info[c];
+
+       if (G_UNLIKELY (info->other_unistr_info == NULL))
+               info->other_unistr_info = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) 
unistr_info_destroy);
+
+       uinfo = g_hash_table_lookup (info->other_unistr_info, GINT_TO_POINTER (c));
+       if (G_LIKELY (uinfo))
+               return uinfo;
+
+       uinfo = unistr_info_create ();
+       g_hash_table_insert (info->other_unistr_info, GINT_TO_POINTER (c), uinfo);
+       return uinfo;
+}
+
+
+static void
+font_info_cache_ascii (struct font_info *info)
+{
+       PangoLayoutLine *line;
+       PangoGlyphItemIter iter;
+       PangoGlyphItem *glyph_item;
+       PangoGlyphString *glyph_string;
+       PangoFont *pango_font;
+       cairo_scaled_font_t *scaled_font;
+       const char *text;
+       gboolean more;
+       PangoLanguage *language;
+       gboolean latin_uses_default_language;
+       
+       /* We have info->layout holding most ASCII characters.  We want to
+        * cache as much info as we can about the ASCII letters so we don't
+        * have to look them up again later */
+
+       /* Don't cache if unknown glyphs found in layout */
+       if (pango_layout_get_unknown_glyphs_count (info->layout) != 0)
+               return;
+
+       language = pango_context_get_language (pango_layout_get_context (info->layout));
+       if (language == NULL)
+               language = pango_language_get_default ();
+       latin_uses_default_language = pango_language_includes_script (language, PANGO_SCRIPT_LATIN);
+
+       text = pango_layout_get_text (info->layout);
+
+       line = pango_layout_get_line_readonly (info->layout, 0);
+
+       /* Don't cache if more than one font used for the line */
+       if (G_UNLIKELY (!line || !line->runs || line->runs->next))
+               return;
+
+       glyph_item = line->runs->data;
+       glyph_string = glyph_item->glyphs;
+       pango_font = glyph_item->item->analysis.font;
+       if (!pango_font)
+               return;
+       scaled_font = pango_cairo_font_get_scaled_font ((PangoCairoFont *) pango_font);
+       if (!scaled_font)
+               return;
+
+       for (more = pango_glyph_item_iter_init_start (&iter, glyph_item, text);
+            more;
+            more = pango_glyph_item_iter_next_cluster (&iter))
+       {
+               struct unistr_info *uinfo;
+               union unistr_font_info *ufi;
+               PangoGlyphGeometry *geometry;
+               PangoGlyph glyph;
+               vteunistr c;
+
+               /* Only cache simple clusters */
+               if (iter.start_char +1 != iter.end_char  ||
+                   iter.start_index+1 != iter.end_index ||
+                   iter.start_glyph+1 != iter.end_glyph)
+                       continue;
+
+               c = text[iter.start_index];
+               glyph = glyph_string->glyphs[iter.start_glyph].glyph;
+               geometry = &glyph_string->glyphs[iter.start_glyph].geometry;
+
+               /* If not using the default locale language, only cache non-common
+                * characters as common characters get their font from their neighbors
+                * and we don't want to force Latin on them. */
+               if (!latin_uses_default_language &&
+                   pango_script_for_unichar (c) <= PANGO_SCRIPT_INHERITED)
+                       continue;
+
+               /* Only cache simple glyphs */
+               if (!(glyph <= 0xFFFF) || (geometry->x_offset | geometry->y_offset) != 0)
+                       continue;
+
+               uinfo = font_info_find_unistr_info (info, c);
+               if (G_UNLIKELY (uinfo->coverage != COVERAGE_UNKNOWN))
+                       continue;
+
+               ufi = &uinfo->ufi;
+
+               uinfo->width = PANGO_PIXELS_CEIL (geometry->width);
+               uinfo->has_unknown_chars = FALSE;
+
+               uinfo->coverage = COVERAGE_USE_CAIRO_GLYPH;
+
+               ufi->using_cairo_glyph.scaled_font = cairo_scaled_font_reference (scaled_font);
+               ufi->using_cairo_glyph.glyph_index = glyph;
+
+#ifdef VTE_DEBUG
+               info->coverage_count[0]++;
+               info->coverage_count[uinfo->coverage]++;
+#endif
+       }
+
+#ifdef VTE_DEBUG
+       _vte_debug_print (VTE_DEBUG_PANGOCAIRO,
+                         "vtepangocairo: %p cached %d ASCII letters\n",
+                         info, info->coverage_count[0]);
+#endif
+}
+
+static void
+font_info_measure_font (struct font_info *info)
+{
+       PangoRectangle logical;
+
+       /* Estimate for ASCII characters. */
+       pango_layout_set_text (info->layout, VTE_DRAW_SINGLE_WIDE_CHARACTERS, -1);
+       pango_layout_get_extents (info->layout, NULL, &logical);
+       /* We don't do CEIL for width since we are averaging;
+        * rounding is more accurate */
+       info->width  = PANGO_PIXELS (howmany (logical.width, strlen(VTE_DRAW_SINGLE_WIDE_CHARACTERS)));
+       info->height = PANGO_PIXELS_CEIL (logical.height);
+       info->ascent = PANGO_PIXELS_CEIL (pango_layout_get_baseline (info->layout));
+
+       /* Now that we shaped the entire ASCII character string, cache glyph
+        * info for them */
+       font_info_cache_ascii (info);
+
+
+       if (info->height == 0) {
+               info->height = PANGO_PIXELS_CEIL (logical.height);
+       }
+       if (info->ascent == 0) {
+               info->ascent = PANGO_PIXELS_CEIL (pango_layout_get_baseline (info->layout));
+       }
+
+       _vte_debug_print (VTE_DEBUG_MISC,
+                         "vtepangocairo: %p font metrics = %dx%d (%d)\n",
+                         info, info->width, info->height, info->ascent);
+}
+
+
+static struct font_info *
+font_info_allocate (PangoContext *context)
+{
+       struct font_info *info;
+       PangoTabArray *tabs;
+
+       info = g_slice_new0 (struct font_info);
+
+       _vte_debug_print (VTE_DEBUG_PANGOCAIRO,
+                         "vtepangocairo: %p allocating font_info\n",
+                         info);
+
+       info->layout = pango_layout_new (context);
+       tabs = pango_tab_array_new_with_positions (1, FALSE, PANGO_TAB_LEFT, 1);
+       pango_layout_set_tabs (info->layout, tabs);
+       pango_tab_array_free (tabs);
+
+       info->string = g_string_sized_new (VTE_UTF8_BPC+1);
+
+       font_info_measure_font (info);
+
+       return info;
+}
+
+static void
+font_info_free (struct font_info *info)
+{
+       vteunistr i;
+
+#ifdef VTE_DEBUG
+       _vte_debug_print (VTE_DEBUG_PANGOCAIRO,
+                         "vtepangocairo: %p freeing font_info.  coverages %d = %d + %d + %d\n",
+                         info,
+                         info->coverage_count[0],
+                         info->coverage_count[1],
+                         info->coverage_count[2],
+                         info->coverage_count[3]);
+#endif
+
+       g_string_free (info->string, TRUE);
+       g_object_unref (info->layout);
+
+       for (i = 0; i < G_N_ELEMENTS (info->ascii_unistr_info); i++)
+               unistr_info_finish (&info->ascii_unistr_info[i]);
+               
+       if (info->other_unistr_info) {
+               g_hash_table_destroy (info->other_unistr_info);
+       }
+
+       g_slice_free (struct font_info, info);
+}
+
+
+static GHashTable *font_info_for_context;
+
+static struct font_info *
+font_info_register (struct font_info *info)
+{
+       g_hash_table_insert (font_info_for_context,
+                            pango_layout_get_context (info->layout),
+                            info);
+
+       return info;
+}
+
+static void
+font_info_unregister (struct font_info *info)
+{
+       g_hash_table_remove (font_info_for_context,
+                            pango_layout_get_context (info->layout));
+}
+
+
+static struct font_info *
+font_info_reference (struct font_info *info)
+{
+       if (!info)
+               return info;
+
+       g_return_val_if_fail (info->ref_count >= 0, info);
+
+       if (info->destroy_timeout) {
+               g_source_remove (info->destroy_timeout);
+               info->destroy_timeout = 0;
+       }
+
+       info->ref_count++;
+
+       return info;
+}
+
+static gboolean
+font_info_destroy_delayed (struct font_info *info)
+{
+       info->destroy_timeout = 0;
+
+       font_info_unregister (info);
+       font_info_free (info);
+
+       return FALSE;
+}
+
+static void
+font_info_destroy (struct font_info *info)
+{
+       if (!info)
+               return;
+
+       g_return_if_fail (info->ref_count > 0);
+
+       info->ref_count--;
+       if (info->ref_count)
+               return;
+
+       /* Delay destruction by a few seconds, in case we need it again */
+       info->destroy_timeout = gdk_threads_add_timeout_seconds (FONT_CACHE_TIMEOUT,
+                                                                (GSourceFunc) font_info_destroy_delayed,
+                                                                info);
+}
+
+static GQuark
+fontconfig_timestamp_quark (void)
+{
+       static GQuark quark;
+
+       if (G_UNLIKELY (!quark))
+               quark = g_quark_from_static_string ("vte-fontconfig-timestamp");
+
+       return quark;
+}
+
+static void
+vte_pango_context_set_fontconfig_timestamp (PangoContext *context,
+                                           guint         fontconfig_timestamp)
+{
+       g_object_set_qdata ((GObject *) context,
+                           fontconfig_timestamp_quark (),
+                           GUINT_TO_POINTER (fontconfig_timestamp));
+}
+
+static guint
+vte_pango_context_get_fontconfig_timestamp (PangoContext *context)
+{
+       return GPOINTER_TO_UINT (g_object_get_qdata ((GObject *) context,
+                                                    fontconfig_timestamp_quark ()));
+}
+
+static guint
+context_hash (PangoContext *context)
+{
+       return pango_units_from_double (pango_cairo_context_get_resolution (context))
+            ^ pango_font_description_hash (pango_context_get_font_description (context))
+            ^ cairo_font_options_hash (pango_cairo_context_get_font_options (context))
+            ^ GPOINTER_TO_UINT (pango_context_get_language (context))
+            ^ vte_pango_context_get_fontconfig_timestamp (context);
+}
+
+static gboolean
+context_equal (PangoContext *a,
+              PangoContext *b)
+{
+       return pango_cairo_context_get_resolution (a) == pango_cairo_context_get_resolution (b)
+           && pango_font_description_equal (pango_context_get_font_description (a), 
pango_context_get_font_description (b))
+           && cairo_font_options_equal (pango_cairo_context_get_font_options (a), 
pango_cairo_context_get_font_options (b))
+           && pango_context_get_language (a) == pango_context_get_language (b)
+           && vte_pango_context_get_fontconfig_timestamp (a) == vte_pango_context_get_fontconfig_timestamp 
(b);
+}
+
+static struct font_info *
+font_info_find_for_context (PangoContext *context)
+{
+       struct font_info *info;
+
+       if (G_UNLIKELY (font_info_for_context == NULL))
+               font_info_for_context = g_hash_table_new ((GHashFunc) context_hash, (GEqualFunc) 
context_equal);
+
+       info = g_hash_table_lookup (font_info_for_context, context);
+       if (G_LIKELY (info)) {
+               _vte_debug_print (VTE_DEBUG_PANGOCAIRO,
+                                 "vtepangocairo: %p found font_info in cache\n",
+                                 info);
+               return font_info_reference (info);
+       }
+
+       info = font_info_allocate (context);
+       info->ref_count = 1;
+       font_info_register (info);
+
+       g_object_unref (context);
+
+       return info;
+}
+
+/* assumes ownership/reference of context */
+static struct font_info *
+font_info_create_for_context (PangoContext               *context,
+                             const PangoFontDescription *desc,
+                             VteTerminalAntiAlias        antialias,
+                             PangoLanguage              *language,
+                             guint                       fontconfig_timestamp)
+{
+       if (!PANGO_IS_CAIRO_FONT_MAP (pango_context_get_font_map (context))) {
+               /* Ouch, Gtk+ switched over to some drawing system?
+                * Lets just create one from the default font map.
+                */
+               g_object_unref (context);
+               context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
+       }
+
+       vte_pango_context_set_fontconfig_timestamp (context, fontconfig_timestamp);
+
+       pango_context_set_base_dir (context, PANGO_DIRECTION_LTR);
+
+       if (desc)
+               pango_context_set_font_description (context, desc);
+
+       pango_context_set_language (context, language);
+
+       switch (antialias) {
+               cairo_font_options_t *font_options;
+               cairo_antialias_t cr_aa;
+
+       case VTE_ANTI_ALIAS_FORCE_ENABLE:
+       case VTE_ANTI_ALIAS_FORCE_DISABLE:
+
+               if (antialias == VTE_ANTI_ALIAS_FORCE_ENABLE)
+                       cr_aa = CAIRO_ANTIALIAS_DEFAULT; /* let surface decide between gray and subpixel */
+               else
+                       cr_aa = CAIRO_ANTIALIAS_NONE;
+
+               font_options = cairo_font_options_copy (pango_cairo_context_get_font_options (context));
+               cairo_font_options_set_antialias (font_options, cr_aa);
+               pango_cairo_context_set_font_options (context, font_options);
+               cairo_font_options_destroy (font_options);
+
+               break;
+
+       default:
+       case VTE_ANTI_ALIAS_USE_DEFAULT:
+               /* Make sure our contexts have a font_options set.  We use
+                * this invariant in our context hash and equal functions.
+                */
+               if (!pango_cairo_context_get_font_options (context)) {
+                       font_options = cairo_font_options_create ();
+                       pango_cairo_context_set_font_options (context, font_options);
+                       cairo_font_options_destroy (font_options);
+               }
+               break;
+       }
+
+       return font_info_find_for_context (context);
+}
+
+static struct font_info *
+font_info_create_for_screen (GdkScreen                  *screen,
+                            const PangoFontDescription *desc,
+                            VteTerminalAntiAlias        antialias,
+                            PangoLanguage              *language)
+{
+       GtkSettings *settings = gtk_settings_get_for_screen (screen);
+       int fontconfig_timestamp;
+       g_object_get (settings, "gtk-fontconfig-timestamp", &fontconfig_timestamp, NULL);
+       return font_info_create_for_context (gdk_pango_context_get_for_screen (screen),
+                                            desc, antialias, language, fontconfig_timestamp);
+}
+
+static struct font_info *
+font_info_create_for_widget (GtkWidget                  *widget,
+                            const PangoFontDescription *desc,
+                            VteTerminalAntiAlias        antialias)
+{
+       GdkScreen *screen = gtk_widget_get_screen (widget);
+       PangoLanguage *language = pango_context_get_language (gtk_widget_get_pango_context (widget));
+
+       return font_info_create_for_screen (screen, desc, antialias, language);
+}
+
+static struct unistr_info *
+font_info_get_unistr_info (struct font_info *info,
+                          vteunistr c)
+{
+       struct unistr_info *uinfo;
+       union unistr_font_info *ufi;
+       PangoRectangle logical;
+       PangoLayoutLine *line;
+
+       uinfo = font_info_find_unistr_info (info, c);
+       if (G_LIKELY (uinfo->coverage != COVERAGE_UNKNOWN))
+               return uinfo;
+
+       ufi = &uinfo->ufi;
+
+       g_string_set_size (info->string, 0);
+       _vte_unistr_append_to_string (c, info->string);
+       pango_layout_set_text (info->layout, info->string->str, -1);
+       pango_layout_get_extents (info->layout, NULL, &logical);
+
+       uinfo->width = PANGO_PIXELS_CEIL (logical.width);
+
+       line = pango_layout_get_line_readonly (info->layout, 0);
+
+       uinfo->has_unknown_chars = pango_layout_get_unknown_glyphs_count (info->layout) != 0;
+       /* we use PangoLayoutRun rendering unless there is exactly one run in the line. */
+       if (G_UNLIKELY (!line || !line->runs || line->runs->next))
+       {
+               uinfo->coverage = COVERAGE_USE_PANGO_LAYOUT_LINE;
+
+               ufi->using_pango_layout_line.line = pango_layout_line_ref (line);
+               /* we hold a manual reference on layout.  pango currently
+                * doesn't work if line->layout is NULL.  ugh! */
+               pango_layout_set_text (info->layout, "", -1); /* make layout disassociate from the line */
+               ufi->using_pango_layout_line.line->layout = g_object_ref (info->layout);
+
+       } else {
+               PangoGlyphItem *glyph_item = line->runs->data;
+               PangoFont *pango_font = glyph_item->item->analysis.font;
+               PangoGlyphString *glyph_string = glyph_item->glyphs;
+
+               /* we use fast cairo path if glyph string has only one real
+                * glyph and at origin */
+               if (!uinfo->has_unknown_chars &&
+                   glyph_string->num_glyphs == 1 && glyph_string->glyphs[0].glyph <= 0xFFFF &&
+                   (glyph_string->glyphs[0].geometry.x_offset |
+                    glyph_string->glyphs[0].geometry.y_offset) == 0)
+               {
+                       cairo_scaled_font_t *scaled_font = pango_cairo_font_get_scaled_font ((PangoCairoFont 
*) pango_font);
+
+                       if (scaled_font) {
+                               uinfo->coverage = COVERAGE_USE_CAIRO_GLYPH;
+
+                               ufi->using_cairo_glyph.scaled_font = cairo_scaled_font_reference 
(scaled_font);
+                               ufi->using_cairo_glyph.glyph_index = glyph_string->glyphs[0].glyph;
+                       }
+               }
+
+               /* use pango fast path otherwise */
+               if (G_UNLIKELY (uinfo->coverage == COVERAGE_UNKNOWN)) {
+                       uinfo->coverage = COVERAGE_USE_PANGO_GLYPH_STRING;
+
+                       ufi->using_pango_glyph_string.font = pango_font ? g_object_ref (pango_font) : NULL;
+                       ufi->using_pango_glyph_string.glyph_string = pango_glyph_string_copy (glyph_string);
+               }
+       }
+
+       /* release internal layout resources */
+       pango_layout_set_text (info->layout, "", -1);
+
+#ifdef VTE_DEBUG
+       info->coverage_count[0]++;
+       info->coverage_count[uinfo->coverage]++;
+#endif
+
+       return uinfo;
+}
+
+struct _vte_draw {
+       GtkWidget *widget;
+
+       gint started;
+
+       struct font_info *font;
+       struct font_info *font_bold;
+       cairo_pattern_t *bg_pattern;
+
+       cairo_t *cr;
+};
+
+struct _vte_draw *
+_vte_draw_new (GtkWidget *widget)
+{
+       struct _vte_draw *draw;
+
+       /* Create the structure. */
+       draw = g_slice_new0 (struct _vte_draw);
+       draw->widget = g_object_ref (widget);
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_new\n");
+
+       return draw;
+}
+
+void
+_vte_draw_free (struct _vte_draw *draw)
+{
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_free\n");
+
+       if (draw->bg_pattern != NULL) {
+               cairo_pattern_destroy (draw->bg_pattern);
+               draw->bg_pattern = NULL;
+       }
+
+       if (draw->font != NULL) {
+               font_info_destroy (draw->font);
+               draw->font = NULL;
+       }
+
+       if (draw->widget != NULL) {
+               g_object_unref (draw->widget);
+       }
+
+       g_slice_free (struct _vte_draw, draw);
+}
+
+void
+_vte_draw_start (struct _vte_draw *draw)
+{
+       GdkWindow *window;
+
+       g_return_if_fail (gtk_widget_get_realized (draw->widget));
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_start\n");
+
+       if (draw->started == 0) {
+               window = gtk_widget_get_window(draw->widget);
+               g_object_ref (window);
+               draw->cr = gdk_cairo_create (window);
+       }
+
+       draw->started++;
+}
+
+void
+_vte_draw_end (struct _vte_draw *draw)
+{
+       g_return_if_fail (draw->started);
+
+       draw->started--;
+       if (draw->started == 0) {
+               cairo_destroy (draw->cr);
+               draw->cr = NULL;
+               g_object_unref (gtk_widget_get_window(draw->widget));
+       }
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_end\n");
+}
+
+void
+_vte_draw_set_background_solid(struct _vte_draw *draw,
+                              double red,
+                              double green,
+                              double blue,
+                              double opacity)
+{
+       if (draw->bg_pattern)
+               cairo_pattern_destroy (draw->bg_pattern);
+
+       draw->bg_pattern = cairo_pattern_create_rgba (red,
+                                                     green,
+                                                     blue,
+                                                     opacity);
+}
+
+void
+_vte_draw_set_background_image (struct _vte_draw *draw,
+                               VteBgSourceType type,
+                               GdkPixbuf *pixbuf,
+                               const char *filename,
+                               const PangoColor *color,
+                               double saturation)
+{
+       cairo_surface_t *surface;
+
+       /* Need a valid draw->cr for cairo_get_target () */
+       _vte_draw_start (draw);
+
+       surface = vte_bg_get_surface (vte_bg_get_for_screen (gtk_widget_get_screen (draw->widget)),
+                                    type, pixbuf, filename,
+                                    color, saturation,
+                                    cairo_get_target(draw->cr));
+
+       _vte_draw_end (draw);
+
+       if (!surface)
+               return;
+
+       if (draw->bg_pattern)
+               cairo_pattern_destroy (draw->bg_pattern);
+
+       draw->bg_pattern = cairo_pattern_create_for_surface (surface);
+       cairo_surface_destroy (surface);
+       cairo_pattern_set_extend (draw->bg_pattern, CAIRO_EXTEND_REPEAT);
+}
+
+void
+_vte_draw_set_background_scroll (struct _vte_draw *draw,
+                                gint x, gint y)
+{
+       cairo_matrix_t matrix;
+
+       _vte_debug_print (VTE_DEBUG_DRAW,
+                       "draw_set_scroll (%d, %d)\n",
+                       x, y);
+
+       g_return_if_fail (draw->bg_pattern != NULL);
+
+       cairo_matrix_init_translate (&matrix, x, y);
+       cairo_pattern_set_matrix (draw->bg_pattern, &matrix);
+}
+
+void
+_vte_draw_clip (struct _vte_draw *draw, GdkRegion *region)
+{
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_clip\n");
+       gdk_cairo_region(draw->cr, region);
+       cairo_clip (draw->cr);
+}
+
+void
+_vte_draw_clear (struct _vte_draw *draw, gint x, gint y, gint width, gint height)
+{
+       g_return_if_fail (draw->bg_pattern != NULL);
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_clear (%d, %d, %d, %d)\n",
+                         x,y,width, height);
+
+       cairo_rectangle (draw->cr, x, y, width, height);
+       cairo_set_operator (draw->cr, CAIRO_OPERATOR_SOURCE);
+       cairo_set_source (draw->cr, draw->bg_pattern);
+       cairo_fill (draw->cr);
+}
+
+void
+_vte_draw_set_text_font (struct _vte_draw *draw,
+                       const PangoFontDescription *fontdesc,
+                       VteTerminalAntiAlias antialias)
+{
+       PangoFontDescription *bolddesc = NULL;
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_set_text_font (aa=%d)\n",
+                         antialias);
+
+       if (draw->font_bold != draw->font)
+               font_info_destroy (draw->font_bold);
+       font_info_destroy (draw->font);
+       draw->font = font_info_create_for_widget (draw->widget, fontdesc, antialias);
+
+       /* calculate bold font desc */
+       bolddesc = pango_font_description_copy (fontdesc);
+       pango_font_description_set_weight (bolddesc, PANGO_WEIGHT_BOLD);
+
+       draw->font_bold = font_info_create_for_widget (draw->widget, bolddesc, antialias);
+       pango_font_description_free (bolddesc);
+
+       /* Decide if we should keep this bold font face, per bug 54926:
+        *  - reject bold font if it is not within 10% of normal font width
+        */
+       if ( abs((draw->font_bold->width * 100 / draw->font->width) - 100) > 10 ) {
+               font_info_destroy (draw->font_bold);
+               draw->font_bold = draw->font;
+       }
+}
+
+void
+_vte_draw_get_text_metrics(struct _vte_draw *draw,
+                          gint *width, gint *height, gint *ascent)
+{
+       g_return_if_fail (draw->font != NULL);
+
+       if (width)
+               *width  = draw->font->width;
+       if (height)
+               *height = draw->font->height;
+       if (ascent)
+               *ascent = draw->font->ascent;
+}
+
+
+int
+_vte_draw_get_char_width (struct _vte_draw *draw, vteunistr c, int columns,
+                         gboolean bold)
+{
+       struct unistr_info *uinfo;
+
+       g_return_val_if_fail (draw->font != NULL, 0);
+
+       uinfo = font_info_get_unistr_info (bold ? draw->font_bold : draw->font, c);
+       return uinfo->width;
+}
+
+static gboolean
+_vte_draw_has_bold (struct _vte_draw *draw)
+{
+       return (draw->font != draw->font_bold);
+}
+
+static void
+set_source_color_alpha (cairo_t        *cr,
+                       const PangoColor *color,
+                       guchar alpha)
+{
+       cairo_set_source_rgba (cr,
+                             color->red / 65535.,
+                             color->green / 65535.,
+                             color->blue / 65535.,
+                             alpha / 255.);
+}
+
+static void
+_vte_draw_text_internal (struct _vte_draw *draw,
+                        struct _vte_draw_text_request *requests, gsize n_requests,
+                        const PangoColor *color, guchar alpha, gboolean bold)
+{
+       gsize i;
+       cairo_scaled_font_t *last_scaled_font = NULL;
+       int n_cr_glyphs = 0;
+       cairo_glyph_t cr_glyphs[MAX_RUN_LENGTH];
+       struct font_info *font = bold ? draw->font_bold : draw->font;
+
+       g_return_if_fail (font != NULL);
+
+       set_source_color_alpha (draw->cr, color, alpha);
+       cairo_set_operator (draw->cr, CAIRO_OPERATOR_OVER);
+
+       for (i = 0; i < n_requests; i++) {
+               vteunistr c = requests[i].c;
+               int x = requests[i].x;
+               int y = requests[i].y + font->ascent;
+               struct unistr_info *uinfo = font_info_get_unistr_info (font, c);
+               union unistr_font_info *ufi = &uinfo->ufi;
+
+               switch (uinfo->coverage) {
+               default:
+               case COVERAGE_UNKNOWN:
+                       g_assert_not_reached ();
+                       break;
+               case COVERAGE_USE_PANGO_LAYOUT_LINE:
+                       cairo_move_to (draw->cr, x, y);
+                       pango_cairo_show_layout_line (draw->cr,
+                                                     ufi->using_pango_layout_line.line);
+                       break;
+               case COVERAGE_USE_PANGO_GLYPH_STRING:
+                       cairo_move_to (draw->cr, x, y);
+                       pango_cairo_show_glyph_string (draw->cr,
+                                                      ufi->using_pango_glyph_string.font,
+                                                      ufi->using_pango_glyph_string.glyph_string);
+                       break;
+               case COVERAGE_USE_CAIRO_GLYPH:
+                       if (last_scaled_font != ufi->using_cairo_glyph.scaled_font || n_cr_glyphs == 
MAX_RUN_LENGTH) {
+                               if (n_cr_glyphs) {
+                                       cairo_set_scaled_font (draw->cr, last_scaled_font);
+                                       cairo_show_glyphs (draw->cr,
+                                                          cr_glyphs,
+                                                          n_cr_glyphs);
+                                       n_cr_glyphs = 0;
+                               }
+                               last_scaled_font = ufi->using_cairo_glyph.scaled_font;
+                       }
+                       cr_glyphs[n_cr_glyphs].index = ufi->using_cairo_glyph.glyph_index;
+                       cr_glyphs[n_cr_glyphs].x = x;
+                       cr_glyphs[n_cr_glyphs].y = y;
+                       n_cr_glyphs++;
+                       break;
+               }
+       }
+       if (n_cr_glyphs) {
+               cairo_set_scaled_font (draw->cr, last_scaled_font);
+               cairo_show_glyphs (draw->cr,
+                                  cr_glyphs,
+                                  n_cr_glyphs);
+               n_cr_glyphs = 0;
+       }
+}
+
+void
+_vte_draw_text (struct _vte_draw *draw,
+              struct _vte_draw_text_request *requests, gsize n_requests,
+              const PangoColor *color, guchar alpha, gboolean bold)
+{
+       g_return_if_fail (draw->started);
+
+       if (_vte_debug_on (VTE_DEBUG_DRAW)) {
+               GString *string = g_string_new ("");
+               gchar *str;
+               gsize n;
+               for (n = 0; n < n_requests; n++) {
+                       g_string_append_unichar (string, requests[n].c);
+               }
+               str = g_string_free (string, FALSE);
+               g_printerr ("draw_text (\"%s\", len=%"G_GSIZE_FORMAT", color=(%d,%d,%d,%d), %s)\n",
+                               str, n_requests, color->red, color->green, color->blue,
+                               alpha, bold ? "bold" : "normal");
+               g_free (str);
+       }
+
+       _vte_draw_text_internal (draw, requests, n_requests, color, alpha, bold);
+
+       /* handle fonts that lack a bold face by double-striking */
+       if (bold && !_vte_draw_has_bold (draw)) {
+               gsize i;
+
+               /* Take a step to the right. */
+               for (i = 0; i < n_requests; i++) {
+                       requests[i].x++;
+               }
+               _vte_draw_text_internal (draw, requests,
+                                          n_requests, color, alpha, FALSE);
+               /* Now take a step back. */
+               for (i = 0; i < n_requests; i++) {
+                       requests[i].x--;
+               }
+       }
+}
+
+gboolean
+_vte_draw_has_char (struct _vte_draw *draw, vteunistr c, gboolean bold)
+{
+       struct unistr_info *uinfo;
+
+       _vte_debug_print (VTE_DEBUG_DRAW, "draw_has_char ('0x%04X', %s)\n", c,
+                         bold ? "bold" : "normal");
+
+       g_return_val_if_fail (draw->font != NULL, FALSE);
+
+       uinfo = font_info_get_unistr_info (bold ? draw->font_bold : draw->font, c);
+       return !uinfo->has_unknown_chars;
+}
+
+gboolean
+_vte_draw_char (struct _vte_draw *draw,
+              struct _vte_draw_text_request *request,
+              const PangoColor *color, guchar alpha, gboolean bold)
+{
+       gboolean has_char;
+
+       _vte_debug_print (VTE_DEBUG_DRAW,
+                       "draw_char ('%c', color=(%d,%d,%d,%d), %s)\n",
+                       request->c,
+                       color->red, color->green, color->blue,
+                       alpha, bold ? "bold" : "normal");
+
+       has_char =_vte_draw_has_char (draw, request->c, bold);
+       if (has_char)
+               _vte_draw_text (draw, request, 1, color, alpha, bold);
+
+       return has_char;
+}
+
+void
+_vte_draw_draw_rectangle (struct _vte_draw *draw,
+                        gint x, gint y, gint width, gint height,
+                        const PangoColor *color, guchar alpha)
+{
+       g_return_if_fail (draw->started);
+
+       _vte_debug_print (VTE_DEBUG_DRAW,
+                       "draw_rectangle (%d, %d, %d, %d, color=(%d,%d,%d,%d))\n",
+                       x,y,width,height,
+                       color->red, color->green, color->blue,
+                       alpha);
+
+       cairo_set_operator (draw->cr, CAIRO_OPERATOR_OVER);
+       cairo_rectangle (draw->cr, x+VTE_LINE_WIDTH/2., y+VTE_LINE_WIDTH/2., width-VTE_LINE_WIDTH, 
height-VTE_LINE_WIDTH);
+       set_source_color_alpha (draw->cr, color, alpha);
+       cairo_set_line_width (draw->cr, VTE_LINE_WIDTH);
+       cairo_stroke (draw->cr);
+}
+
+void
+_vte_draw_fill_rectangle (struct _vte_draw *draw,
+                        gint x, gint y, gint width, gint height,
+                        const PangoColor *color, guchar alpha)
+{
+       g_return_if_fail (draw->started);
+
+       _vte_debug_print (VTE_DEBUG_DRAW,
+                       "draw_fill_rectangle (%d, %d, %d, %d, color=(%d,%d,%d,%d))\n",
+                       x,y,width,height,
+                       color->red, color->green, color->blue,
+                       alpha);
+
+       cairo_set_operator (draw->cr, CAIRO_OPERATOR_OVER);
+       cairo_rectangle (draw->cr, x, y, width, height);
+       set_source_color_alpha (draw->cr, color, alpha);
+       cairo_fill (draw->cr);
+}
diff --git a/vte/src/vtedraw.h b/vte/src/vtedraw.h
new file mode 100644
index 0000000..4f65183
--- /dev/null
+++ b/vte/src/vtedraw.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_vtedraw_h_included
+#define vte_vtedraw_h_included
+
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include "vtebg.h"
+#include "vte.h"
+#include "vteunistr.h"
+#include "vte-gtk-compat.h"
+
+G_BEGIN_DECLS
+
+#define VTE_DRAW_SINGLE_WIDE_CHARACTERS        \
+                                       " !\"#$%&'()*+,-./" \
+                                       "0123456789" \
+                                       ":;<=>?@" \
+                                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
+                                       "[\\]^_`" \
+                                       "abcdefghijklmnopqrstuvwxyz" \
+                                       "{|}~" \
+                                       ""
+#define VTE_DRAW_DOUBLE_WIDE_CHARACTERS 0x4e00, 0x4e8c, 0x4e09, 0x56db, 0x4e94,\
+                                       0xac00, 0xac01, 0xac04, 0xac08, 0xac10
+/* For Pango, we have to use CJK Ideographs alone. Otherwise, 'width'
+   returned by pango_layout would be screwed up for Chinese and Japanese
+   fonts without Hangul */
+#define VTE_DRAW_DOUBLE_WIDE_IDEOGRAPHS 0x4e00, 0x4e8c, 0x4e09, 0x56db, 0x4e94
+#define VTE_DRAW_OPAQUE 0xff
+#define VTE_DRAW_MAX_LENGTH 1024
+
+struct _vte_draw;
+
+/* A request to draw a particular character spanning a given number of columns
+   at the given location.  Unlike most APIs, (x,y) specifies the top-left
+   corner of the cell into which the character will be drawn instead of the
+   left end of the baseline. */
+struct _vte_draw_text_request {
+       vteunistr c;
+       gshort x, y, columns;
+};
+
+/* Create and destroy a draw structure. */
+struct _vte_draw *_vte_draw_new(GtkWidget *widget);
+void _vte_draw_free(struct _vte_draw *draw);
+
+/* Begin and end a drawing operation.  If anything is buffered locally, it is
+   flushed to the window system when _end() is called. */
+void _vte_draw_start(struct _vte_draw *draw);
+void _vte_draw_end(struct _vte_draw *draw);
+
+void _vte_draw_set_background_solid(struct _vte_draw *draw,
+                                   double red,
+                                   double green,
+                                   double blue,
+                                   double opacity);
+void _vte_draw_set_background_image(struct _vte_draw *draw,
+                                   VteBgSourceType type,
+                                   GdkPixbuf *pixbuf,
+                                   const char *file,
+                                   const PangoColor *color,
+                                   double saturation);
+void _vte_draw_set_background_scroll(struct _vte_draw *draw,
+                                    gint x, gint y);
+
+void _vte_draw_clip(struct _vte_draw *draw, GdkRegion *region);
+void _vte_draw_clear(struct _vte_draw *draw,
+                    gint x, gint y, gint width, gint height);
+
+void _vte_draw_set_text_font(struct _vte_draw *draw,
+                            const PangoFontDescription *fontdesc,
+                            VteTerminalAntiAlias anti_alias);
+void _vte_draw_get_text_metrics(struct _vte_draw *draw,
+                               gint *width, gint *height, gint *ascent);
+int _vte_draw_get_char_width(struct _vte_draw *draw, vteunistr c, int columns,
+                            gboolean bold);
+
+void _vte_draw_text(struct _vte_draw *draw,
+                   struct _vte_draw_text_request *requests, gsize n_requests,
+                   const PangoColor *color, guchar alpha, gboolean);
+gboolean _vte_draw_char(struct _vte_draw *draw,
+                       struct _vte_draw_text_request *request,
+                       const PangoColor *color, guchar alpha, gboolean bold);
+gboolean _vte_draw_has_char(struct _vte_draw *draw, vteunistr c, gboolean bold);
+
+
+void _vte_draw_fill_rectangle(struct _vte_draw *draw,
+                             gint x, gint y, gint width, gint height,
+                             const PangoColor *color, guchar alpha);
+void _vte_draw_draw_rectangle(struct _vte_draw *draw,
+                             gint x, gint y, gint width, gint height,
+                             const PangoColor *color, guchar alpha);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vteint.h b/vte/src/vteint.h
new file mode 100644
index 0000000..d7a2af6
--- /dev/null
+++ b/vte/src/vteint.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vteint_h_included
+#define vte_vteint_h_included
+
+
+#include "vte.h"
+
+G_BEGIN_DECLS
+
+void _vte_terminal_accessible_ref(VteTerminal *terminal);
+char* _vte_terminal_get_selection(VteTerminal *terminal);
+void _vte_terminal_get_start_selection(VteTerminal *terminal, long *x, long *y);
+void _vte_terminal_get_end_selection(VteTerminal *terminal, long *x, long *y);
+void _vte_terminal_select_text(VteTerminal *terminal, long start_x, long start_y, long end_x, long end_y, 
int start_offset, int end_offset);
+void _vte_terminal_remove_selection(VteTerminal *terminal);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vtepty-private.h b/vte/src/vtepty-private.h
new file mode 100644
index 0000000..70347ee
--- /dev/null
+++ b/vte/src/vtepty-private.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2009, 2010 Christian Persch
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+G_BEGIN_DECLS
+
+VtePtyFlags __vte_pty_get_pty_flags(gboolean lastlog,
+                                    gboolean utmp,
+                                    gboolean wtmp);
+
+char **__vte_pty_get_argv (const char *command,
+                           char **argv,
+                           GSpawnFlags *flags /* inout */);
+
+gboolean __vte_pty_spawn (VtePty *pty,
+                          const char *working_directory,
+                          char **argv,
+                          char **envv,
+                          GSpawnFlags spawn_flags,
+                          GSpawnChildSetupFunc child_setup,
+                          gpointer child_setup_data,
+                          GPid *child_pid /* out */,
+                          GError **error);
+
+gboolean __vte_pty_fork(VtePty *pty,
+                        GPid *pid,
+                        GError **error);
+
+G_END_DECLS
diff --git a/vte/src/vtepty.h b/vte/src/vtepty.h
new file mode 100644
index 0000000..a0aea6a
--- /dev/null
+++ b/vte/src/vtepty.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright © 2009, 2010 Christian Persch
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef VTE_PTY_H
+#define VTE_PTY_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/**
+ * VtePtyFlags:
+ * @VTE_PTY_NO_LASTLOG: don't record the session in lastlog
+ * @VTE_PTY_NO_UTMP: don't record the session in utmp
+ * @VTE_PTY_NO_WTMP: don't record the session in wtmp
+ * @VTE_PTY_NO_HELPER: don't use the GNOME PTY helper to allocate the PTY
+ * @VTE_PTY_NO_FALLBACK: when allocating the PTY with the PTY helper fails,
+ *   don't fall back to try using PTY98
+ * @VTE_PTY_DEFAULT: the default flags
+ *
+ * Since: 0.26
+ */
+typedef enum {
+  VTE_PTY_NO_LASTLOG  = 1 << 0,
+  VTE_PTY_NO_UTMP     = 1 << 1,
+  VTE_PTY_NO_WTMP     = 1 << 2,
+  VTE_PTY_NO_HELPER   = 1 << 3,
+  VTE_PTY_NO_FALLBACK = 1 << 4,
+  VTE_PTY_DEFAULT     = 0
+} VtePtyFlags;
+
+/**
+ * VtePtyError:
+ * @VTE_PTY_ERROR_PTY_HELPER_FAILED: failure when using the GNOME PTY helper to
+ *   allocate the PTY
+ * @VTE_PTY_ERROR_PTY98_FAILED: failure when using PTY98 to allocate the PTY
+ *
+ * Since: 0.26
+ */
+typedef enum {
+  VTE_PTY_ERROR_PTY_HELPER_FAILED = 0,
+  VTE_PTY_ERROR_PTY98_FAILED
+} VtePtyError;
+
+GQuark vte_pty_error_quark (void);
+
+/**
+ * VTE_PTY_ERROR:
+ *
+ * Error domain for VTE PTY errors. Errors in this domain will be from the #VtePtyError
+ * enumeration. See #GError for more information on error domains.
+ *
+ * Since: 0.26
+ */
+#define VTE_PTY_ERROR (vte_pty_error_quark ())
+
+/* VTE PTY object */
+
+#define VTE_TYPE_PTY            (vte_pty_get_type())
+#define VTE_PTY(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), VTE_TYPE_PTY, VtePty))
+#define VTE_PTY_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  VTE_TYPE_PTY, VtePtyClass))
+#define VTE_IS_PTY(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VTE_TYPE_PTY))
+#define VTE_IS_PTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  VTE_TYPE_PTY))
+#define VTE_PTY_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  VTE_TYPE_PTY, VtePtyClass))
+
+typedef struct _VtePty        VtePty;
+typedef struct _VtePtyClass   VtePtyClass;
+
+GType vte_pty_get_type (void);
+
+VtePty *vte_pty_new (VtePtyFlags flags,
+                     GError **error);
+
+VtePty *vte_pty_new_foreign (int fd,
+                             GError **error);
+
+int vte_pty_get_fd (VtePty *pty);
+
+void vte_pty_close (VtePty *pty);
+
+void vte_pty_child_setup (VtePty *pty);
+
+gboolean vte_pty_get_size (VtePty *pty,
+                           int *rows,
+                           int *columns,
+                           GError **error);
+
+gboolean vte_pty_set_size (VtePty *pty,
+                           int rows,
+                           int columns,
+                           GError **error);
+
+gboolean vte_pty_set_utf8 (VtePty *pty,
+                           gboolean utf8,
+                           GError **error);
+
+void vte_pty_set_term (VtePty *pty,
+                       const char *emulation);
+
+G_END_DECLS
+
+#endif /* VTE_PTY_H */
diff --git a/vte/src/vteregex.c b/vte/src/vteregex.c
new file mode 100644
index 0000000..c8d1fe7
--- /dev/null
+++ b/vte/src/vteregex.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <errno.h>
+#include <limits.h>
+#include <string.h>
+#include <unistd.h>
+#include <glib.h>
+
+#include <regex.h>
+
+#include "vteregex.h"
+
+static gint
+compare_matches(gconstpointer a, gconstpointer b)
+{
+       const struct _vte_regex_match *A, *B;
+       A = a;
+       B = b;
+       if (B->rm_so != A->rm_so) {
+               return B->rm_so - A->rm_so;
+       }
+       return B->rm_eo - A->rm_eo;
+}
+
+/* Sort match structures first by starting position, and then by ending
+ * position.  We do this because some expression matching APIs sort their
+ * results differently, or just plain don't sort them. */
+static void
+_vte_regex_sort_matches(struct _vte_regex_match *matches, gsize n_matches)
+{
+       GArray *array;
+       if (n_matches <= 1) {
+               return;
+       }
+       array = g_array_new(FALSE, FALSE, sizeof(struct _vte_regex_match));
+       g_array_append_vals(array, matches, n_matches);
+       g_array_sort(array, compare_matches);
+       memmove(matches, array->data,
+               n_matches * sizeof(struct _vte_regex_match));
+       g_array_free(array, TRUE);
+}
+
+/* Ah, POSIX regex.  Kind of clunky, but I don't have anything better to
+ * suggest.  Better still, it works on my machine. */
+
+struct _vte_regex {
+       regex_t posix_regex;
+};
+
+struct _vte_regex *
+_vte_regex_compile(const char *pattern)
+{
+       struct _vte_regex *ret;
+       int i;
+
+       ret = g_slice_new(struct _vte_regex);
+       i = regcomp(&ret->posix_regex, pattern, REG_EXTENDED);
+       if (i != 0) {
+               g_slice_free(struct _vte_regex, ret);
+               return NULL;
+       }
+       return ret;
+}
+
+void
+_vte_regex_free(struct _vte_regex *regex)
+{
+       regfree(&regex->posix_regex);
+       g_slice_free(struct _vte_regex, regex);
+}
+
+int
+_vte_regex_exec(struct _vte_regex *regex, const char *string,
+               gsize nmatch, struct _vte_regex_match *matches)
+{
+       regmatch_t *posix_matches;
+       guint i, ret;
+
+       posix_matches = g_new(regmatch_t, nmatch);
+       ret = regexec(&regex->posix_regex, string, nmatch, posix_matches, 0);
+       if (ret == 0) {
+               for (i = 0; i < nmatch; i++) {
+                       matches[i].rm_so = -1;
+                       matches[i].rm_eo = -1;
+               }
+               for (i = 0; i < nmatch; i++) {
+                       matches[i].rm_so = posix_matches[i].rm_so;
+                       matches[i].rm_eo = posix_matches[i].rm_eo;
+                       if (matches[i].rm_so == -1) {
+                               _vte_regex_sort_matches(matches, i);
+                               break;
+                       }
+               }
+       }
+       g_free(posix_matches);
+       if (ret == 0) {
+               return 0;
+       }
+       return -1;
+}
diff --git a/vte/src/vteregex.h b/vte/src/vteregex.h
new file mode 100644
index 0000000..26fc884
--- /dev/null
+++ b/vte/src/vteregex.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef vte_vteregex_h_included
+#define vte_vteregex_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+struct _vte_regex_match {
+       int rm_so, rm_eo;
+};
+struct _vte_regex;
+
+struct _vte_regex * _vte_regex_compile(const char *pattern);
+void _vte_regex_free(struct _vte_regex *regex);
+int _vte_regex_exec(struct _vte_regex *regex, const char *string,
+                   gsize nmatch, struct _vte_regex_match *matches);
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vterowdata.c b/vte/src/vterowdata.c
new file mode 100644
index 0000000..1a29523
--- /dev/null
+++ b/vte/src/vterowdata.c
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2002,2009 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Nalin Dahyabhai, Behdad Esfahbod
+ */
+
+#include <config.h>
+
+#include "debug.h"
+#include "vterowdata.h"
+
+#include <string.h>
+
+
+/*
+ * VteCells: A row's cell array
+ */
+
+typedef struct _VteCells VteCells;
+struct _VteCells {
+       guint32 alloc_len;
+       VteCell cells[1];
+};
+
+static inline VteCells *
+_vte_cells_for_cell_array (VteCell *cells)
+{
+       if (G_UNLIKELY (!cells))
+               return NULL;
+
+       return (VteCells *) (((guchar *) cells) - G_STRUCT_OFFSET (VteCells, cells));
+}
+
+static VteCells *
+_vte_cells_realloc (VteCells *cells, guint32 len)
+{
+       guint32 alloc_len = (1 << g_bit_storage (MAX (len, 80))) - 1;
+
+       _vte_debug_print(VTE_DEBUG_RING, "Enlarging cell array of %d cells to %d cells\n", cells ? 
cells->alloc_len : 0, alloc_len);
+       cells = g_realloc (cells, G_STRUCT_OFFSET (VteCells, cells) + alloc_len * sizeof (cells->cells[0]));
+       cells->alloc_len = alloc_len;
+
+       return cells;
+}
+
+static void
+_vte_cells_free (VteCells *cells)
+{
+       _vte_debug_print(VTE_DEBUG_RING, "Freeing cell array of %d cells\n", cells->alloc_len);
+       g_free (cells);
+}
+
+
+/*
+ * VteRowData: A row's data
+ */
+
+void
+_vte_row_data_init (VteRowData *row)
+{
+       memset (row, 0, sizeof (*row));
+}
+
+void
+_vte_row_data_clear (VteRowData *row)
+{
+       VteCell *cells = row->cells;
+       _vte_row_data_init (row);
+       row->cells = cells;
+}
+
+void
+_vte_row_data_fini (VteRowData *row)
+{
+       if (row->cells)
+               _vte_cells_free (_vte_cells_for_cell_array (row->cells));
+       row->cells = NULL;
+}
+
+static inline gboolean
+_vte_row_data_ensure (VteRowData *row, gulong len)
+{
+       VteCells *cells = _vte_cells_for_cell_array (row->cells);
+       if (G_LIKELY (cells && len <= cells->alloc_len))
+               return TRUE;
+
+       if (G_UNLIKELY (len >= 0xFFFF))
+               return FALSE;
+
+       row->cells = _vte_cells_realloc (cells, len)->cells;
+
+       return TRUE;
+}
+
+void
+_vte_row_data_insert (VteRowData *row, gulong col, const VteCell *cell)
+{
+       gulong i;
+
+       if (G_UNLIKELY (!_vte_row_data_ensure (row, row->len + 1)))
+               return;
+
+       for (i = row->len; i > col; i--)
+               row->cells[i] = row->cells[i - 1];
+
+       row->cells[col] = *cell;
+       row->len++;
+}
+
+void _vte_row_data_append (VteRowData *row, const VteCell *cell)
+{
+       if (G_UNLIKELY (!_vte_row_data_ensure (row, row->len + 1)))
+               return;
+
+       row->cells[row->len] = *cell;
+       row->len++;
+}
+
+void _vte_row_data_remove (VteRowData *row, gulong col)
+{
+       gulong i;
+
+       for (i = col + 1; i < row->len; i++)
+               row->cells[i - 1] = row->cells[i];
+
+       if (G_LIKELY (row->len))
+               row->len--;
+}
+
+void _vte_row_data_fill (VteRowData *row, const VteCell *cell, gulong len)
+{
+       if (row->len < len) {
+               gulong i = len - row->len;
+
+               if (G_UNLIKELY (!_vte_row_data_ensure (row, len)))
+                       return;
+
+               for (i = row->len; i < len; i++)
+                       row->cells[i] = *cell;
+
+               row->len = len;
+       }
+}
+
+void _vte_row_data_shrink (VteRowData *row, gulong max_len)
+{
+       if (max_len < row->len)
+               row->len = max_len;
+}
+
diff --git a/vte/src/vterowdata.h b/vte/src/vterowdata.h
new file mode 100644
index 0000000..a911500
--- /dev/null
+++ b/vte/src/vterowdata.h
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vterowdata_h_included
+#define vterowdata_h_included
+
+#include "vteunistr.h"
+
+G_BEGIN_DECLS
+
+
+#define VTE_DEF_FG                     256
+#define VTE_DEF_BG                     257
+#define VTE_BOLD_FG                    258
+#define VTE_DIM_FG                     259
+#define VTE_DEF_HL                      260
+#define VTE_CUR_BG                     261
+#define VTE_PALETTE_SIZE               262
+
+
+/*
+ * VteCellAttr: A single cell style attributes
+ *
+ * Ordered by most commonly changed attributes, to
+ * optimize the compact representation.
+ */
+
+typedef struct _VteCellAttr {
+       guint32 fragment: 1;    /* A continuation cell. */
+       guint32 columns: 4;     /* Number of visible columns
+                                  (as determined by g_unicode_iswide(c)).
+                                  Also abused for tabs; bug 353610
+                                  Keep at least 4 for tabs to work
+                                  */
+       guint32 bold: 1;
+       guint32 fore: 9;        /* Index into color palette */
+       guint32 back: 9;        /* Index into color palette. */
+
+       guint32 standout: 1;
+       guint32 underline: 1;
+       guint32 strikethrough: 1;
+
+       guint32 reverse: 1;
+       guint32 blink: 1;
+       guint32 half: 1;
+
+       guint32 invisible: 1;
+       /* unused; bug 499893
+       guint32 protect: 1;
+        */
+
+       /* 30 bits */
+} VteCellAttr;
+G_STATIC_ASSERT (sizeof (VteCellAttr) == 4);
+
+typedef union _VteIntCellAttr {
+       VteCellAttr s;
+       guint32 i;
+} VteIntCellAttr;
+G_STATIC_ASSERT (sizeof (VteCellAttr) == sizeof (VteIntCellAttr));
+
+/*
+ * VteCell: A single cell's data
+ */
+
+typedef struct _VteCell {
+       vteunistr c;
+       VteCellAttr attr;
+} VteCell;
+G_STATIC_ASSERT (sizeof (VteCell) == 8);
+
+typedef union _VteIntCell {
+       VteCell cell;
+       struct {
+               guint32 c;
+               guint32 attr;
+       } i;
+} VteIntCell;
+G_STATIC_ASSERT (sizeof (VteCell) == sizeof (VteIntCell));
+
+static const VteIntCell basic_cell = {
+       {
+               0,
+               {
+                       0, /* fragment */
+                       1, /* columns */
+                       0, /* bold */
+                       VTE_DEF_FG, /* fore */
+                       VTE_DEF_BG, /* back */
+
+                       0, /* standout */
+                       0, /* underline */
+                       0, /* strikethrough */
+
+                       0, /* reverse */
+                       0, /* blink */
+                       0, /* half */
+
+                       0  /* invisible */
+               }
+       }
+};
+
+
+/*
+ * VteRowAttr: A single row's attributes
+ */
+
+typedef struct _VteRowAttr {
+       guint8 soft_wrapped: 1;
+} VteRowAttr;
+G_STATIC_ASSERT (sizeof (VteRowAttr) == 1);
+
+/*
+ * VteRowData: A single row's data
+ */
+
+typedef struct _VteRowData {
+       VteCell *cells;
+       guint16 len;
+       VteRowAttr attr;
+} VteRowData;
+
+
+#define _vte_row_data_length(__row)                    ((__row)->len + 0)
+
+static inline const VteCell *
+_vte_row_data_get (const VteRowData *row, gulong col)
+{
+       if (G_UNLIKELY (row->len <= col))
+               return NULL;
+
+       return &row->cells[col];
+}
+
+static inline VteCell *
+_vte_row_data_get_writable (VteRowData *row, gulong col)
+{
+       if (G_UNLIKELY (row->len <= col))
+               return NULL;
+
+       return &row->cells[col];
+}
+
+void _vte_row_data_init (VteRowData *row);
+void _vte_row_data_clear (VteRowData *row);
+void _vte_row_data_fini (VteRowData *row);
+void _vte_row_data_insert (VteRowData *row, gulong col, const VteCell *cell);
+void _vte_row_data_append (VteRowData *row, const VteCell *cell);
+void _vte_row_data_remove (VteRowData *row, gulong col);
+void _vte_row_data_fill (VteRowData *row, const VteCell *cell, gulong len);
+void _vte_row_data_shrink (VteRowData *row, gulong max_len);
+
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vteseq-2.c b/vte/src/vteseq-2.c
new file mode 100644
index 0000000..8735b07
--- /dev/null
+++ b/vte/src/vteseq-2.c
@@ -0,0 +1,268 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 100 --no-strlen vteseq-2.gperf  */
+/* Computed positions: -k'1-2' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to 
<bug-gnu-gperf gnu org>."
+#endif
+
+#line 14 "vteseq-2.gperf"
+struct vteseq_2_struct {
+       char seq[3];
+       VteTerminalSequenceHandler handler;
+};
+#include <string.h>
+/* maximum key range = 77, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+vteseq_2_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 39, 77, 77, 32, 77,
+      39, 77, 37, 33, 34, 36, 34, 77, 33, 77,
+      77, 33, 33, 31, 32, 30, 77, 30, 40, 77,
+      77, 77, 77, 77, 77, 77, 77, 50, 45,  1,
+      27, 32, 41, 29,  7, 21,  5, 15, 49,  0,
+      25, 77, 12, 13, 24, 11,  8,  2, 18, 37,
+       9, 31, 77,  2, 11, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+      77
+    };
+  return asso_values[(unsigned char)str[1]+5] + asso_values[(unsigned char)str[0]];
+}
+
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct vteseq_2_struct *
+vteseq_2_lookup (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 74,
+      MIN_WORD_LENGTH = 2,
+      MAX_WORD_LENGTH = 2,
+      MIN_HASH_VALUE = 0,
+      MAX_HASH_VALUE = 76
+    };
+
+  static const struct vteseq_2_struct wordlist[] =
+    {
+#line 247 "vteseq-2.gperf"
+      {"mh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mh)},
+#line 166 "vteseq-2.gperf"
+      {"ch", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ch)},
+#line 251 "vteseq-2.gperf"
+      {"mp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)},
+#line 172 "vteseq-2.gperf"
+      {"cv", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cv)},
+#line 285 "vteseq-2.gperf"
+      {"up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_up)},
+#line 246 "vteseq-2.gperf"
+      {"me", VTE_SEQUENCE_HANDLER(vte_sequence_handler_me)},
+#line 165 "vteseq-2.gperf"
+      {"ce", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ce)},
+#line 284 "vteseq-2.gperf"
+      {"ue", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ue)},
+#line 163 "vteseq-2.gperf"
+      {"cc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 283 "vteseq-2.gperf"
+      {"uc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_uc)},
+#line 170 "vteseq-2.gperf"
+      {"cs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cs)},
+#line 286 "vteseq-2.gperf"
+      {"us", VTE_SEQUENCE_HANDLER(vte_sequence_handler_us)},
+#line 248 "vteseq-2.gperf"
+      {"mk", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mk)},
+#line 280 "vteseq-2.gperf"
+      {"te", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 167 "vteseq-2.gperf"
+      {"cl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cl)},
+#line 185 "vteseq-2.gperf"
+      {"ho", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ho)},
+#line 274 "vteseq-2.gperf"
+      {"se", VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)},
+#line 282 "vteseq-2.gperf"
+      {"ts", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ts)},
+#line 273 "vteseq-2.gperf"
+      {"sc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)},
+#line 276 "vteseq-2.gperf"
+      {"so", VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)},
+#line 224 "vteseq-2.gperf"
+      {"ke", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)},
+#line 245 "vteseq-2.gperf"
+      {"md", VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)},
+#line 164 "vteseq-2.gperf"
+      {"cd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cd)},
+#line 288 "vteseq-2.gperf"
+      {"ve", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ve)},
+#line 228 "vteseq-2.gperf"
+      {"ks", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ks)},
+#line 168 "vteseq-2.gperf"
+      {"cm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cm)},
+#line 275 "vteseq-2.gperf"
+      {"sf", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)},
+#line 290 "vteseq-2.gperf"
+      {"vs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vs)},
+#line 190 "vteseq-2.gperf"
+      {"ic", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ic)},
+#line 244 "vteseq-2.gperf"
+      {"mb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)},
+#line 162 "vteseq-2.gperf"
+      {"cb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cb)},
+#line 268 "vteseq-2.gperf"
+      {"rc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)},
+#line 171 "vteseq-2.gperf"
+      {"ct", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ct)},
+#line 281 "vteseq-2.gperf"
+      {"ti", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 173 "vteseq-2.gperf"
+      {"dc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dc)},
+#line 176 "vteseq-2.gperf"
+      {"do", VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)},
+#line 254 "vteseq-2.gperf"
+      {"nw", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)},
+#line 252 "vteseq-2.gperf"
+      {"mr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)},
+#line 169 "vteseq-2.gperf"
+      {"cr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cr)},
+#line 179 "vteseq-2.gperf"
+      {"ec", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ec)},
+#line 174 "vteseq-2.gperf"
+      {"dl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dl)},
+#line 161 "vteseq-2.gperf"
+      {"cS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cS)},
+#line 278 "vteseq-2.gperf"
+      {"st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)},
+#line 289 "vteseq-2.gperf"
+      {"vi", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vi)},
+#line 222 "vteseq-2.gperf"
+      {"kb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)},
+#line 192 "vteseq-2.gperf"
+      {"im", VTE_SEQUENCE_HANDLER(vte_sequence_handler_im)},
+#line 253 "vteseq-2.gperf"
+      {"nd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nd)},
+#line 287 "vteseq-2.gperf"
+      {"vb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vb)},
+#line 277 "vteseq-2.gperf"
+      {"sr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)},
+#line 279 "vteseq-2.gperf"
+      {"ta", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)},
+#line 183 "vteseq-2.gperf"
+      {"fs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_fs)},
+#line 175 "vteseq-2.gperf"
+      {"dm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 158 "vteseq-2.gperf"
+      {"bc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)},
+#line 180 "vteseq-2.gperf"
+      {"ed", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 242 "vteseq-2.gperf"
+      {"le", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)},
+#line 155 "vteseq-2.gperf"
+      {"ae", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)},
+#line 182 "vteseq-2.gperf"
+      {"ff", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 181 "vteseq-2.gperf"
+      {"ei", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ei)},
+#line 159 "vteseq-2.gperf"
+      {"bl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)},
+#line 157 "vteseq-2.gperf"
+      {"as", VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)},
+#line 153 "vteseq-2.gperf"
+      {"UP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)},
+#line 151 "vteseq-2.gperf"
+      {"SR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SR)},
+#line 243 "vteseq-2.gperf"
+      {"ll", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ll)},
+#line 156 "vteseq-2.gperf"
+      {"al", VTE_SEQUENCE_HANDLER(vte_sequence_handler_al)},
+#line 79 "vteseq-2.gperf"
+      {"DO", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DO)},
+#line 78 "vteseq-2.gperf"
+      {"DL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DL)},
+#line 147 "vteseq-2.gperf"
+      {"RI", VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)},
+#line 150 "vteseq-2.gperf"
+      {"SF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SF)},
+#line 139 "vteseq-2.gperf"
+      {"LE", VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)},
+#line 77 "vteseq-2.gperf"
+      {"DC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DC)},
+#line 133 "vteseq-2.gperf"
+      {"IC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_IC)},
+#line 178 "vteseq-2.gperf"
+      {"eA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)},
+#line 76 "vteseq-2.gperf"
+      {"AL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_AL)},
+      {""}, {""}, {""},
+#line 160 "vteseq-2.gperf"
+      {"bt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = vteseq_2_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].seq;
+
+          if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
diff --git a/vte/src/vteseq-2.gperf b/vte/src/vteseq-2.gperf
new file mode 100644
index 0000000..e18c2f8
--- /dev/null
+++ b/vte/src/vteseq-2.gperf
@@ -0,0 +1,291 @@
+/* run "make gperf" after modifying this file */
+
+%struct-type
+%language=ANSI-C
+%includes
+%enum
+%readonly-tables
+%define slot-name seq
+%define hash-function-name vteseq_2_hash
+%define lookup-function-name vteseq_2_lookup
+
+%compare-strncmp
+
+struct vteseq_2_struct {
+       char seq[3];
+       VteTerminalSequenceHandler handler;
+};
+
+%%
+#"!1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"!2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"!3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"#1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"#2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"#3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"#4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%a", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%b", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%c", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%d", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%e", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%f", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%g", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%h", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%i", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"%j", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&0", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"&9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*0", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"*9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@0", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"@9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"AL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_AL)
+"DC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DC)
+"DL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DL)
+"DO", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DO)
+#"F1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"F9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FB", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FD", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FE", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FG", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FH", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FI", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FJ", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FK", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FM", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FN", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FO", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FQ", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FT", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FU", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FV", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FW", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FX", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FY", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"FZ", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fa", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fe", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Ff", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fg", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fi", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fj", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fk", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fn", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fo", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fq", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"Fr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"IC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_IC)
+#"K1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"K2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"K3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"K4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"K5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"LE", VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)
+#"LF", VTE_SEQUENCE_HANDLER_NULL
+#"LO", VTE_SEQUENCE_HANDLER_NULL
+#"MC", VTE_SEQUENCE_HANDLER_NULL
+#"ML", VTE_SEQUENCE_HANDLER_NULL
+#"MR", VTE_SEQUENCE_HANDLER_NULL
+#"RA", VTE_SEQUENCE_HANDLER_NULL
+#"RF", VTE_SEQUENCE_HANDLER_NULL
+"RI", VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)
+#"RX", VTE_SEQUENCE_HANDLER_NULL
+#"SA", VTE_SEQUENCE_HANDLER_NULL
+"SF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SF)
+"SR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SR)
+#"SX", VTE_SEQUENCE_HANDLER_NULL
+"UP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
+#"XF", VTE_SEQUENCE_HANDLER_NULL
+"ae", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)
+"al", VTE_SEQUENCE_HANDLER(vte_sequence_handler_al)
+"as", VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)
+"bc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
+"bl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)
+"bt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
+"cS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cS)
+"cb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cb)
+"cc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"cd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cd)
+"ce", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ce)
+"ch", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ch)
+"cl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cl)
+"cm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cm)
+"cr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cr)
+"cs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cs)
+"ct", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ct)
+"cv", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cv)
+"dc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dc)
+"dl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dl)
+"dm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"do", VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)
+#"ds", VTE_SEQUENCE_HANDLER_NULL
+"eA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)
+"ec", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ec)
+"ed", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"ei", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ei)
+"ff", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"fs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_fs)
+#"hd", VTE_SEQUENCE_HANDLER_NULL
+"ho", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ho)
+#"hu", VTE_SEQUENCE_HANDLER_NULL
+#"i1", VTE_SEQUENCE_HANDLER_NULL
+#"i3", VTE_SEQUENCE_HANDLER_NULL
+#"iP", VTE_SEQUENCE_HANDLER_NULL
+"ic", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ic)
+#"if", VTE_SEQUENCE_HANDLER_NULL
+"im", VTE_SEQUENCE_HANDLER(vte_sequence_handler_im)
+#"ip", VTE_SEQUENCE_HANDLER_NULL
+#"is", VTE_SEQUENCE_HANDLER_NULL
+#"k0", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k1", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k2", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k3", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k4", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k5", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k6", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k7", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k8", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k9", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"k;", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kB", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kC", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kD", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kE", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kH", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kI", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kL", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kM", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kN", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kT", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"ka", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"kb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)
+#"kd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"ke", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)
+#"kh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"kr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+"ks", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ks)
+#"kt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"ku", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
+#"l0", VTE_SEQUENCE_HANDLER_NULL
+#"l1", VTE_SEQUENCE_HANDLER_NULL
+#"l2", VTE_SEQUENCE_HANDLER_NULL
+#"l3", VTE_SEQUENCE_HANDLER_NULL
+#"l4", VTE_SEQUENCE_HANDLER_NULL
+#"l5", VTE_SEQUENCE_HANDLER_NULL
+#"l6", VTE_SEQUENCE_HANDLER_NULL
+#"l7", VTE_SEQUENCE_HANDLER_NULL
+#"l8", VTE_SEQUENCE_HANDLER_NULL
+#"l9", VTE_SEQUENCE_HANDLER_NULL
+#"la", VTE_SEQUENCE_HANDLER_NULL
+"le", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
+"ll", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ll)
+"mb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)
+"md", VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)
+"me", VTE_SEQUENCE_HANDLER(vte_sequence_handler_me)
+"mh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mh)
+"mk", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mk)
+#"mm", VTE_SEQUENCE_HANDLER_NULL
+#"mo", VTE_SEQUENCE_HANDLER_NULL
+"mp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)
+"mr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)
+"nd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nd)
+"nw", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)
+#"pO", VTE_SEQUENCE_HANDLER_NULL
+#"pc", VTE_SEQUENCE_HANDLER_NULL
+#"pf", VTE_SEQUENCE_HANDLER_NULL
+#"pk", VTE_SEQUENCE_HANDLER_NULL
+#"pl", VTE_SEQUENCE_HANDLER_NULL
+#"pn", VTE_SEQUENCE_HANDLER_NULL
+#"po", VTE_SEQUENCE_HANDLER_NULL
+#"ps", VTE_SEQUENCE_HANDLER_NULL
+#"px", VTE_SEQUENCE_HANDLER_NULL
+#"r1", VTE_SEQUENCE_HANDLER_NULL
+#"r2", VTE_SEQUENCE_HANDLER_NULL
+#"r3", VTE_SEQUENCE_HANDLER_NULL
+#"rP", VTE_SEQUENCE_HANDLER_NULL
+"rc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
+#"rf", VTE_SEQUENCE_HANDLER_NULL
+#"rp", VTE_SEQUENCE_HANDLER_NULL
+#"rs", VTE_SEQUENCE_HANDLER_NULL
+#"sa", VTE_SEQUENCE_HANDLER_NULL
+"sc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
+"se", VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)
+"sf", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)
+"so", VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)
+"sr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)
+"st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
+"ta", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
+"te", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"ti", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"ts", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ts)
+"uc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_uc)
+"ue", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ue)
+"up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_up)
+"us", VTE_SEQUENCE_HANDLER(vte_sequence_handler_us)
+"vb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vb)
+"ve", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ve)
+"vi", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vi)
+"vs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vs)
+#"wi", VTE_SEQUENCE_HANDLER_NULL
diff --git a/vte/src/vteseq-list.h b/vte/src/vteseq-list.h
new file mode 100644
index 0000000..ab9f5f3
--- /dev/null
+++ b/vte/src/vteseq-list.h
@@ -0,0 +1,121 @@
+/* Generated file.  Do not edit */
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_AL)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_DC)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_DL)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_DO)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_IC)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_SF)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_SR)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_al)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_application_keypad)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cS)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cb)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cd)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ce)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ch)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_color)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_cursor_color)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_attributes)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_position_absolute)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cl)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cm)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cr)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cs)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ct)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_character_absolute)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_lower_left)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_next_line)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_position)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_preceding_line)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_cv)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_dc)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_dec_device_status_report)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_decreset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_decset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_delete_lines)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_device_status_report)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_dl)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ec)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ei)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_characters)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_display)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_line)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_form_feed)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_fs)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_full_reset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ho)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_horizontal_and_vertical_position)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ic)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_im)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_index)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_blank_characters)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_lines)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ks)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_line_position_absolute)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ll)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_local_charset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_me)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_mh)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_mk)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_nd)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_next_line)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_normal_keypad)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_request_terminal_parameters)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_reset_mode)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_restore_mode)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_id)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_status)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_reverse_index)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_save_mode)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_screen_alignment_test)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_down)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_up)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_primary_device_attributes)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_secondary_device_attributes)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_and_window_title)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_title)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_mode)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_from_start)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_to_end)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_window_title)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_soft_reset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_tab_clear)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ts)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_uc)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ue)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_up)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_us)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_utf_8_charset)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_vb)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_ve)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_vertical_tab)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_vi)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_vs)
+VTE_SEQUENCE_HANDLER(vte_sequence_handler_window_manipulation)
diff --git a/vte/src/vteseq-n.c b/vte/src/vteseq-n.c
new file mode 100644
index 0000000..2099cc3
--- /dev/null
+++ b/vte/src/vteseq-n.c
@@ -0,0 +1,393 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 100 vteseq-n.gperf  */
+/* Computed positions: -k'1,4,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to 
<bug-gnu-gperf gnu org>."
+#endif
+
+#line 16 "vteseq-n.gperf"
+struct vteseq_n_struct {
+       int seq;
+       VteTerminalSequenceHandler handler;
+};
+#include <string.h>
+/* maximum key range = 77, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+vteseq_n_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84,  0, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 10, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 47,  7, 27,
+       0,  0, 18, 84,  0, 33, 84, 84,  0,  4,
+       8, 43,  2, 84, 29,  2,  0,  2, 42,  5,
+      21,  8, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
+      84, 84, 84, 84, 84, 84
+    };
+  return len + asso_values[(unsigned char)str[3]] + asso_values[(unsigned char)str[0]] + 
asso_values[(unsigned char)str[len - 1]];
+}
+
+struct vteseq_n_pool_t
+  {
+    char vteseq_n_pool_str7[sizeof("tab-set")];
+    char vteseq_n_pool_str8[sizeof("decset")];
+    char vteseq_n_pool_str10[sizeof("set-mode")];
+    char vteseq_n_pool_str11[sizeof("save-mode")];
+    char vteseq_n_pool_str12[sizeof("soft-reset")];
+    char vteseq_n_pool_str14[sizeof("delete-lines")];
+    char vteseq_n_pool_str15[sizeof("erase-in-line")];
+    char vteseq_n_pool_str16[sizeof("set-icon-title")];
+    char vteseq_n_pool_str17[sizeof("next-line")];
+    char vteseq_n_pool_str18[sizeof("set-window-title")];
+    char vteseq_n_pool_str19[sizeof("delete-characters")];
+    char vteseq_n_pool_str20[sizeof("erase-characters")];
+    char vteseq_n_pool_str21[sizeof("utf-8-character-set")];
+    char vteseq_n_pool_str22[sizeof("line-position-absolute")];
+    char vteseq_n_pool_str23[sizeof("screen-alignment-test")];
+    char vteseq_n_pool_str24[sizeof("dec-device-status-report")];
+    char vteseq_n_pool_str25[sizeof("normal-keypad")];
+    char vteseq_n_pool_str26[sizeof("erase-in-display")];
+    char vteseq_n_pool_str27[sizeof("set-icon-and-window-title")];
+    char vteseq_n_pool_str28[sizeof("full-reset")];
+    char vteseq_n_pool_str29[sizeof("set-scrolling-region-to-end")];
+    char vteseq_n_pool_str30[sizeof("set-scrolling-region")];
+    char vteseq_n_pool_str31[sizeof("form-feed")];
+    char vteseq_n_pool_str32[sizeof("window-manipulation")];
+    char vteseq_n_pool_str33[sizeof("set-scrolling-region-from-start")];
+    char vteseq_n_pool_str34[sizeof("send-primary-device-attributes")];
+    char vteseq_n_pool_str35[sizeof("linux-console-cursor-attributes")];
+    char vteseq_n_pool_str36[sizeof("send-secondary-device-attributes")];
+    char vteseq_n_pool_str37[sizeof("decreset")];
+    char vteseq_n_pool_str38[sizeof("tab-clear")];
+    char vteseq_n_pool_str39[sizeof("reset-mode")];
+    char vteseq_n_pool_str40[sizeof("cursor-up")];
+    char vteseq_n_pool_str41[sizeof("restore-mode")];
+    char vteseq_n_pool_str42[sizeof("save-cursor")];
+    char vteseq_n_pool_str43[sizeof("cursor-forward")];
+    char vteseq_n_pool_str44[sizeof("cursor-backward")];
+    char vteseq_n_pool_str45[sizeof("cursor-next-line")];
+    char vteseq_n_pool_str46[sizeof("cursor-lower-left")];
+    char vteseq_n_pool_str47[sizeof("insert-lines")];
+    char vteseq_n_pool_str48[sizeof("cursor-down")];
+    char vteseq_n_pool_str49[sizeof("return-terminal-id")];
+    char vteseq_n_pool_str50[sizeof("cursor-preceding-line")];
+    char vteseq_n_pool_str51[sizeof("cursor-back-tab")];
+    char vteseq_n_pool_str52[sizeof("cursor-position")];
+    char vteseq_n_pool_str53[sizeof("device-status-report")];
+    char vteseq_n_pool_str54[sizeof("cursor-character-absolute")];
+    char vteseq_n_pool_str55[sizeof("return-terminal-status")];
+    char vteseq_n_pool_str56[sizeof("scroll-up")];
+    char vteseq_n_pool_str57[sizeof("change-cursor-colors")];
+    char vteseq_n_pool_str58[sizeof("insert-blank-characters")];
+    char vteseq_n_pool_str59[sizeof("index")];
+    char vteseq_n_pool_str60[sizeof("request-terminal-parameters")];
+    char vteseq_n_pool_str61[sizeof("vertical-tab")];
+    char vteseq_n_pool_str62[sizeof("cursor-forward-tabulation")];
+    char vteseq_n_pool_str63[sizeof("reverse-index")];
+    char vteseq_n_pool_str64[sizeof("scroll-down")];
+    char vteseq_n_pool_str65[sizeof("application-keypad")];
+    char vteseq_n_pool_str66[sizeof("iso8859-1-character-set")];
+    char vteseq_n_pool_str72[sizeof("restore-cursor")];
+    char vteseq_n_pool_str73[sizeof("horizontal-and-vertical-position")];
+    char vteseq_n_pool_str76[sizeof("change-color")];
+    char vteseq_n_pool_str78[sizeof("character-attributes")];
+    char vteseq_n_pool_str83[sizeof("character-position-absolute")];
+  };
+static const struct vteseq_n_pool_t vteseq_n_pool_contents =
+  {
+    "tab-set",
+    "decset",
+    "set-mode",
+    "save-mode",
+    "soft-reset",
+    "delete-lines",
+    "erase-in-line",
+    "set-icon-title",
+    "next-line",
+    "set-window-title",
+    "delete-characters",
+    "erase-characters",
+    "utf-8-character-set",
+    "line-position-absolute",
+    "screen-alignment-test",
+    "dec-device-status-report",
+    "normal-keypad",
+    "erase-in-display",
+    "set-icon-and-window-title",
+    "full-reset",
+    "set-scrolling-region-to-end",
+    "set-scrolling-region",
+    "form-feed",
+    "window-manipulation",
+    "set-scrolling-region-from-start",
+    "send-primary-device-attributes",
+    "linux-console-cursor-attributes",
+    "send-secondary-device-attributes",
+    "decreset",
+    "tab-clear",
+    "reset-mode",
+    "cursor-up",
+    "restore-mode",
+    "save-cursor",
+    "cursor-forward",
+    "cursor-backward",
+    "cursor-next-line",
+    "cursor-lower-left",
+    "insert-lines",
+    "cursor-down",
+    "return-terminal-id",
+    "cursor-preceding-line",
+    "cursor-back-tab",
+    "cursor-position",
+    "device-status-report",
+    "cursor-character-absolute",
+    "return-terminal-status",
+    "scroll-up",
+    "change-cursor-colors",
+    "insert-blank-characters",
+    "index",
+    "request-terminal-parameters",
+    "vertical-tab",
+    "cursor-forward-tabulation",
+    "reverse-index",
+    "scroll-down",
+    "application-keypad",
+    "iso8859-1-character-set",
+    "restore-cursor",
+    "horizontal-and-vertical-position",
+    "change-color",
+    "character-attributes",
+    "character-position-absolute"
+  };
+#define vteseq_n_pool ((const char *) &vteseq_n_pool_contents)
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct vteseq_n_struct *
+vteseq_n_lookup (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 63,
+      MIN_WORD_LENGTH = 5,
+      MAX_WORD_LENGTH = 32,
+      MIN_HASH_VALUE = 7,
+      MAX_HASH_VALUE = 83
+    };
+
+  static const unsigned char lengthtable[] =
+    {
+       0,  0,  0,  0,  0,  0,  0,  7,  6,  0,  8,  9, 10,  0,
+      12, 13, 14,  9, 16, 17, 16, 19, 22, 21, 24, 13, 16, 25,
+      10, 27, 20,  9, 19, 31, 30, 31, 32,  8,  9, 10,  9, 12,
+      11, 14, 15, 16, 17, 12, 11, 18, 21, 15, 15, 20, 25, 22,
+       9, 20, 23,  5, 27, 12, 25, 13, 11, 18, 23,  0,  0,  0,
+       0,  0, 14, 32,  0,  0, 12,  0, 20,  0,  0,  0,  0, 27
+    };
+  static const struct vteseq_n_struct wordlist[] =
+    {
+      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 27 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str7, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)},
+#line 25 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str8, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_decset)},
+      {-1},
+#line 29 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str10, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_mode)},
+#line 33 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str11, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_save_mode)},
+#line 39 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str12, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_soft_reset)},
+      {-1},
+#line 45 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str14, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_delete_lines)},
+#line 51 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str15, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_line)},
+#line 61 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str16, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_title)},
+#line 32 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str17, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_next_line)},
+#line 71 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str18, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_window_title)},
+#line 73 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str19, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_DC)},
+#line 69 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str20, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_characters)},
+#line 78 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str21, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_utf_8_charset)},
+#line 95 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str22, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_line_position_absolute)},
+#line 90 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str23, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_screen_alignment_test)},
+#line 109 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str24, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_dec_device_status_report)},
+#line 53 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str25, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_normal_keypad)},
+#line 70 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str26, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_display)},
+#line 115 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str27, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_and_window_title)},
+#line 36 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str28, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_full_reset)},
+#line 85 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str29, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_to_end)},
+#line 83 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str30, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region)},
+#line 31 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str31, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_form_feed)},
+#line 79 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str32, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_window_manipulation)},
+#line 84 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str33, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_from_start)},
+#line 126 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str34, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_primary_device_attributes)},
+#line 127 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str35, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)},
+#line 129 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str36, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_secondary_device_attributes)},
+#line 28 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str37, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_decreset)},
+#line 35 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str38, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_tab_clear)},
+#line 38 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str39, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_reset_mode)},
+#line 30 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str40, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)},
+#line 48 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str41, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_restore_mode)},
+#line 42 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str42, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)},
+#line 58 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str43, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)},
+#line 63 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str44, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)},
+#line 68 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str45, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_next_line)},
+#line 72 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str46, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_lower_left)},
+#line 47 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str47, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_lines)},
+#line 40 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str48, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_DO)},
+#line 76 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str49, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_id)},
+#line 88 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str50, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_preceding_line)},
+#line 62 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str51, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)},
+#line 64 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str52, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_position)},
+#line 82 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str53, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_device_status_report)},
+#line 112 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str54, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_character_absolute)},
+#line 96 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str55, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_status)},
+#line 34 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str56, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_up)},
+#line 80 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str57, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_cursor_color)},
+#line 99 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str58, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_blank_characters)},
+#line 24 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str59, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_index)},
+#line 118 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str60, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_request_terminal_parameters)},
+#line 50 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str61, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_vertical_tab)},
+#line 113 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str62, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)},
+#line 54 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str63, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_reverse_index)},
+#line 43 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str64, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_down)},
+#line 74 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str65, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_application_keypad)},
+#line 102 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str66, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_local_charset)},
+      {-1}, {-1}, {-1}, {-1}, {-1},
+#line 60 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str72, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)},
+#line 128 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str73, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_horizontal_and_vertical_position)},
+      {-1}, {-1},
+#line 44 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str76, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_color)},
+      {-1},
+#line 81 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str78, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_attributes)},
+      {-1}, {-1}, {-1}, {-1},
+#line 117 "vteseq-n.gperf"
+      {(int)(long)&((struct vteseq_n_pool_t *)0)->vteseq_n_pool_str83, 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_position_absolute)}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = vteseq_n_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        if (len == lengthtable[key])
+          {
+            register const char *s = wordlist[key].seq + vteseq_n_pool;
+
+            if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+              return &wordlist[key];
+          }
+    }
+  return 0;
+}
diff --git a/vte/src/vteseq-n.gperf b/vte/src/vteseq-n.gperf
new file mode 100644
index 0000000..8cbcb21
--- /dev/null
+++ b/vte/src/vteseq-n.gperf
@@ -0,0 +1,131 @@
+/* run "make gperf" after modifying this file */
+
+%struct-type
+%language=ANSI-C
+%includes
+%enum
+%readonly-tables
+%define slot-name seq
+%define hash-function-name vteseq_n_hash
+%define lookup-function-name vteseq_n_lookup
+
+%compare-lengths
+%pic
+%define string-pool-name vteseq_n_pool
+
+struct vteseq_n_struct {
+       int seq;
+       VteTerminalSequenceHandler handler;
+};
+
+%%
+#"..rp", VTE_SEQUENCE_HANDLER_NULL
+#"..sa", VTE_SEQUENCE_HANDLER_NULL
+"index", VTE_SEQUENCE_HANDLER(vte_sequence_handler_index)
+"decset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_decset)
+#"repeat", VTE_SEQUENCE_HANDLER_NULL
+"tab-set", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
+"decreset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_decreset)
+"set-mode", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_mode)
+"cursor-up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
+"form-feed", VTE_SEQUENCE_HANDLER(vte_sequence_handler_form_feed)
+"next-line", VTE_SEQUENCE_HANDLER(vte_sequence_handler_next_line)
+"save-mode", VTE_SEQUENCE_HANDLER(vte_sequence_handler_save_mode)
+"scroll-up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_up)
+"tab-clear", VTE_SEQUENCE_HANDLER(vte_sequence_handler_tab_clear)
+"full-reset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_full_reset)
+#"media-copy", VTE_SEQUENCE_HANDLER_NULL
+"reset-mode", VTE_SEQUENCE_HANDLER(vte_sequence_handler_reset_mode)
+"soft-reset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_soft_reset)
+"cursor-down", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DO)
+#"memory-lock", VTE_SEQUENCE_HANDLER_NULL
+"save-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
+"scroll-down", VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_down)
+"change-color", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_color)
+"delete-lines", VTE_SEQUENCE_HANDLER(vte_sequence_handler_delete_lines)
+#"double-width", VTE_SEQUENCE_HANDLER_NULL
+"insert-lines", VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_lines)
+"restore-mode", VTE_SEQUENCE_HANDLER(vte_sequence_handler_restore_mode)
+#"single-width", VTE_SEQUENCE_HANDLER_NULL
+"vertical-tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vertical_tab)
+"erase-in-line", VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_line)
+#"memory-unlock", VTE_SEQUENCE_HANDLER_NULL
+"normal-keypad", VTE_SEQUENCE_HANDLER(vte_sequence_handler_normal_keypad)
+"reverse-index", VTE_SEQUENCE_HANDLER(vte_sequence_handler_reverse_index)
+#"7-bit-controls", VTE_SEQUENCE_HANDLER_NULL
+#"8-bit-controls", VTE_SEQUENCE_HANDLER_NULL
+#"change-logfile", VTE_SEQUENCE_HANDLER_NULL
+"cursor-forward", VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)
+#"dec-media-copy", VTE_SEQUENCE_HANDLER_NULL
+"restore-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
+"set-icon-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_title)
+"cursor-back-tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
+"cursor-backward", VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)
+"cursor-position", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_position)
+#"single-shift-g2", VTE_SEQUENCE_HANDLER_NULL
+#"single-shift-g3", VTE_SEQUENCE_HANDLER_NULL
+#"change-font-name", VTE_SEQUENCE_HANDLER_NULL
+"cursor-next-line", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_next_line)
+"erase-characters", VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_characters)
+"erase-in-display", VTE_SEQUENCE_HANDLER(vte_sequence_handler_erase_in_display)
+"set-window-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_window_title)
+"cursor-lower-left", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_lower_left)
+"delete-characters", VTE_SEQUENCE_HANDLER(vte_sequence_handler_DC)
+"application-keypad", VTE_SEQUENCE_HANDLER(vte_sequence_handler_application_keypad)
+#"change-font-number", VTE_SEQUENCE_HANDLER_NULL
+"return-terminal-id", VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_id)
+#"end-of-guarded-area", VTE_SEQUENCE_HANDLER_NULL
+"utf-8-character-set", VTE_SEQUENCE_HANDLER(vte_sequence_handler_utf_8_charset)
+"window-manipulation", VTE_SEQUENCE_HANDLER(vte_sequence_handler_window_manipulation)
+"change-cursor-colors", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_cursor_color)
+"character-attributes", VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_attributes)
+"device-status-report", VTE_SEQUENCE_HANDLER(vte_sequence_handler_device_status_report)
+"set-scrolling-region", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region)
+"set-scrolling-region-from-start", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_from_start)
+"set-scrolling-region-to-end", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_scrolling_region_to_end)
+#"set-text-property-21", VTE_SEQUENCE_HANDLER_NULL
+#"set-text-property-2L", VTE_SEQUENCE_HANDLER_NULL
+"cursor-preceding-line", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_preceding_line)
+#"device-control-string", VTE_SEQUENCE_HANDLER_NULL
+"screen-alignment-test", VTE_SEQUENCE_HANDLER(vte_sequence_handler_screen_alignment_test)
+#"select-locator-events", VTE_SEQUENCE_HANDLER_NULL
+#"set-conformance-level", VTE_SEQUENCE_HANDLER_NULL
+#"start-of-guarded-area", VTE_SEQUENCE_HANDLER_NULL
+#"double-height-top-half", VTE_SEQUENCE_HANDLER_NULL
+"line-position-absolute", VTE_SEQUENCE_HANDLER(vte_sequence_handler_line_position_absolute)
+"return-terminal-status", VTE_SEQUENCE_HANDLER(vte_sequence_handler_return_terminal_status)
+#"change-highlight-colors", VTE_SEQUENCE_HANDLER_NULL
+#"enable-filter-rectangle", VTE_SEQUENCE_HANDLER_NULL
+"insert-blank-characters", VTE_SEQUENCE_HANDLER(vte_sequence_handler_insert_blank_characters)
+#"invoke-g2-character-set", VTE_SEQUENCE_HANDLER_NULL
+#"invoke-g3-character-set", VTE_SEQUENCE_HANDLER_NULL
+"iso8859-1-character-set", VTE_SEQUENCE_HANDLER(vte_sequence_handler_local_charset)
+#"selective-erase-in-line", VTE_SEQUENCE_HANDLER_NULL
+#"ansi-conformance-level-1", VTE_SEQUENCE_HANDLER_NULL
+#"ansi-conformance-level-2", VTE_SEQUENCE_HANDLER_NULL
+#"ansi-conformance-level-3", VTE_SEQUENCE_HANDLER_NULL
+#"change-background-colors", VTE_SEQUENCE_HANDLER_NULL
+#"change-foreground-colors", VTE_SEQUENCE_HANDLER_NULL
+"dec-device-status-report", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dec_device_status_report)
+#"enable-locator-reporting", VTE_SEQUENCE_HANDLER_NULL
+#"request-locator-position", VTE_SEQUENCE_HANDLER_NULL
+"cursor-character-absolute", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_character_absolute)
+"cursor-forward-tabulation", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
+#"double-height-bottom-half", VTE_SEQUENCE_HANDLER_NULL
+"set-icon-and-window-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_and_window_title)
+#"selective-erase-in-display", VTE_SEQUENCE_HANDLER_NULL
+"character-position-absolute", VTE_SEQUENCE_HANDLER(vte_sequence_handler_character_position_absolute)
+"request-terminal-parameters", VTE_SEQUENCE_HANDLER(vte_sequence_handler_request_terminal_parameters)
+#"select-character-protection", VTE_SEQUENCE_HANDLER_NULL
+#"change-tek-background-colors", VTE_SEQUENCE_HANDLER_NULL
+#"change-tek-foreground-colors", VTE_SEQUENCE_HANDLER_NULL
+#"invoke-g1-character-set-as-gr", VTE_SEQUENCE_HANDLER_NULL
+#"invoke-g2-character-set-as-gr", VTE_SEQUENCE_HANDLER_NULL
+#"invoke-g3-character-set-as-gr", VTE_SEQUENCE_HANDLER_NULL
+#"initiate-hilite-mouse-tracking", VTE_SEQUENCE_HANDLER_NULL
+"send-primary-device-attributes", VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_primary_device_attributes)
+"linux-console-cursor-attributes", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
+"horizontal-and-vertical-position", 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_horizontal_and_vertical_position)
+"send-secondary-device-attributes", 
VTE_SEQUENCE_HANDLER(vte_sequence_handler_send_secondary_device_attributes)
+#"change-mouse-cursor-background-colors", VTE_SEQUENCE_HANDLER_NULL
+#"change-mouse-cursor-foreground-colors", VTE_SEQUENCE_HANDLER_NULL
diff --git a/vte/src/vteseq.c b/vte/src/vteseq.c
new file mode 100644
index 0000000..7ef4c8c
--- /dev/null
+++ b/vte/src/vteseq.c
@@ -0,0 +1,3364 @@
+/*
+ * Copyright (C) 2001-2004 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <config.h>
+
+#include <limits.h>
+#ifdef HAVE_SYS_SYSLIMITS_H
+#include <sys/syslimits.h>
+#endif
+
+#include <glib.h>
+
+#include "vte.h"
+#include "vte-private.h"
+#include "vtetc.h"
+
+#define BEL "\007"
+
+
+
+/* FUNCTIONS WE USE */
+
+
+
+static void
+display_control_sequence(const char *name, GValueArray *params)
+{
+#ifdef VTE_DEBUG
+       guint i;
+       long l;
+       const char *s;
+       const gunichar *w;
+       GValue *value;
+       g_printerr("%s(", name);
+       if (params != NULL) {
+               for (i = 0; i < params->n_values; i++) {
+                       value = g_value_array_get_nth(params, i);
+                       if (i > 0) {
+                               g_printerr(", ");
+                       }
+                       if (G_VALUE_HOLDS_LONG(value)) {
+                               l = g_value_get_long(value);
+                               g_printerr("%ld", l);
+                       } else
+                       if (G_VALUE_HOLDS_STRING(value)) {
+                               s = g_value_get_string(value);
+                               g_printerr("\"%s\"", s);
+                       } else
+                       if (G_VALUE_HOLDS_POINTER(value)) {
+                               w = g_value_get_pointer(value);
+                               g_printerr("\"%ls\"", (const wchar_t*) w);
+                       }
+               }
+       }
+       g_printerr(")\n");
+#endif
+}
+
+
+/* A couple are duplicated from vte.c, to keep them static... */
+
+/* Find the character an the given position in the backscroll buffer. */
+static VteCell *
+vte_terminal_find_charcell (VteTerminal *terminal, glong col, glong row)
+{
+       VteRowData *rowdata;
+       VteCell *ret = NULL;
+       VteScreen *screen;
+       g_assert(VTE_IS_TERMINAL(terminal));
+       screen = terminal->pvt->screen;
+       if (_vte_ring_contains (screen->row_data, row)) {
+               rowdata = _vte_ring_index_writable (screen->row_data, row);
+               ret = _vte_row_data_get_writable (rowdata, col);
+       }
+       return ret;
+}
+
+/* Check how long a string of unichars is.  Slow version. */
+static gssize
+vte_unichar_strlen(gunichar *c)
+{
+       int i;
+       for (i = 0; c[i] != 0; i++) ;
+       return i;
+}
+
+/* Convert a wide character string to a multibyte string */
+static gchar *
+vte_ucs4_to_utf8 (VteTerminal *terminal, const guchar *in)
+{
+       gchar *out = NULL;
+       guchar *buf = NULL, *bufptr = NULL;
+       gsize inlen, outlen;
+       VteConv conv;
+
+       conv = _vte_conv_open ("UTF-8", VTE_CONV_GUNICHAR_TYPE);
+
+       if (conv != VTE_INVALID_CONV) {
+               inlen = vte_unichar_strlen ((gunichar *) in) * sizeof (gunichar);
+               outlen = (inlen * VTE_UTF8_BPC) + 1;
+
+               _vte_buffer_set_minimum_size (terminal->pvt->conv_buffer, outlen);
+               buf = bufptr = terminal->pvt->conv_buffer->data;
+
+               if (_vte_conv (conv, &in, &inlen, &buf, &outlen) == (size_t) -1) {
+                       _vte_debug_print (VTE_DEBUG_IO,
+                                         "Error converting %ld string bytes (%s), skipping.\n",
+                                         (long) _vte_buffer_length (terminal->pvt->outgoing),
+                                         g_strerror (errno));
+                       bufptr = NULL;
+               } else {
+                       out = g_strndup ((gchar *) bufptr, buf - bufptr);
+               }
+       }
+
+       _vte_conv_close (conv);
+
+       return out;
+}
+
+static gboolean
+vte_parse_color (const char *spec, GdkColor *color)
+{
+       gchar *spec_copy = (gchar *) spec;
+       gboolean retval = FALSE;
+
+       /* gdk_color_parse doesnt handle all XParseColor formats.  It only
+        * supports the #RRRGGGBBB format, not the rgb:RRR/GGG/BBB format.
+        * See: man XParseColor */
+
+       if (g_ascii_strncasecmp (spec_copy, "rgb:", 4) == 0) {
+               gchar *cur, *ptr;
+
+               spec_copy = g_strdup (spec);
+               cur = spec_copy;
+               ptr = spec_copy + 3;
+
+               *cur++ = '#';
+               while (*ptr++)
+                       if (*ptr != '/')
+                               *cur++ = *ptr;
+               *cur++ = '\0';
+       }
+
+       retval = gdk_color_parse (spec_copy, color);
+
+       if (spec_copy != spec)
+               g_free (spec_copy);
+
+       return retval;
+}
+
+
+
+
+
+
+/* Emit a "deiconify-window" signal. */
+static void
+vte_terminal_emit_deiconify_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `deiconify-window'.\n");
+       g_signal_emit_by_name(terminal, "deiconify-window");
+}
+
+/* Emit a "iconify-window" signal. */
+static void
+vte_terminal_emit_iconify_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `iconify-window'.\n");
+       g_signal_emit_by_name(terminal, "iconify-window");
+}
+
+/* Emit a "raise-window" signal. */
+static void
+vte_terminal_emit_raise_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `raise-window'.\n");
+       g_signal_emit_by_name(terminal, "raise-window");
+}
+
+/* Emit a "lower-window" signal. */
+static void
+vte_terminal_emit_lower_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `lower-window'.\n");
+       g_signal_emit_by_name(terminal, "lower-window");
+}
+
+/* Emit a "maximize-window" signal. */
+static void
+vte_terminal_emit_maximize_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `maximize-window'.\n");
+       g_signal_emit_by_name(terminal, "maximize-window");
+}
+
+/* Emit a "refresh-window" signal. */
+static void
+vte_terminal_emit_refresh_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `refresh-window'.\n");
+       g_signal_emit_by_name(terminal, "refresh-window");
+}
+
+/* Emit a "restore-window" signal. */
+static void
+vte_terminal_emit_restore_window(VteTerminal *terminal)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `restore-window'.\n");
+       g_signal_emit_by_name(terminal, "restore-window");
+}
+
+/* Emit a "move-window" signal.  (Pixels.) */
+static void
+vte_terminal_emit_move_window(VteTerminal *terminal, guint x, guint y)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `move-window'.\n");
+       g_signal_emit_by_name(terminal, "move-window", x, y);
+}
+
+/* Emit a "resize-window" signal.  (Pixels.) */
+static void
+vte_terminal_emit_resize_window(VteTerminal *terminal,
+                               guint width, guint height)
+{
+       _vte_debug_print(VTE_DEBUG_SIGNALS,
+                       "Emitting `resize-window'.\n");
+       g_signal_emit_by_name(terminal, "resize-window", width, height);
+}
+
+
+/* Some common functions */
+
+static void
+_vte_terminal_home_cursor (VteTerminal *terminal)
+{
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       screen->cursor_current.row = screen->insert_delta;
+       screen->cursor_current.col = 0;
+}
+
+/* Clear the entire screen. */
+static void
+_vte_terminal_clear_screen (VteTerminal *terminal)
+{
+       long i, initial, row;
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       initial = screen->insert_delta;
+       row = screen->cursor_current.row - screen->insert_delta;
+       initial = _vte_ring_next(screen->row_data);
+       /* Add a new screen's worth of rows. */
+       for (i = 0; i < terminal->row_count; i++)
+               _vte_terminal_ring_append (terminal, TRUE);
+       /* Move the cursor and insertion delta to the first line in the
+        * newly-cleared area and scroll if need be. */
+       screen->insert_delta = initial;
+       screen->cursor_current.row = row + screen->insert_delta;
+       _vte_terminal_adjust_adjustments(terminal);
+       /* Redraw everything. */
+       _vte_invalidate_all(terminal);
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Clear the current line. */
+static void
+_vte_terminal_clear_current_line (VteTerminal *terminal)
+{
+       VteRowData *rowdata;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       /* If the cursor is actually on the screen, clear data in the row
+        * which corresponds to the cursor. */
+       if (_vte_ring_next(screen->row_data) > screen->cursor_current.row) {
+               /* Get the data for the row which the cursor points to. */
+               rowdata = _vte_ring_index_writable (screen->row_data, screen->cursor_current.row);
+               g_assert(rowdata != NULL);
+               /* Remove it. */
+               _vte_row_data_shrink (rowdata, 0);
+               /* Add enough cells to the end of the line to fill out the row. */
+               _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+               rowdata->attr.soft_wrapped = 0;
+               /* Repaint this row. */
+               _vte_invalidate_cells(terminal,
+                                     0, terminal->column_count,
+                                     screen->cursor_current.row, 1);
+       }
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Clear above the current line. */
+static void
+_vte_terminal_clear_above_current (VteTerminal *terminal)
+{
+       VteRowData *rowdata;
+       long i;
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       /* If the cursor is actually on the screen, clear data in the row
+        * which corresponds to the cursor. */
+       for (i = screen->insert_delta; i < screen->cursor_current.row; i++) {
+               if (_vte_ring_next(screen->row_data) > i) {
+                       /* Get the data for the row we're erasing. */
+                       rowdata = _vte_ring_index_writable (screen->row_data, i);
+                       g_assert(rowdata != NULL);
+                       /* Remove it. */
+                       _vte_row_data_shrink (rowdata, 0);
+                       /* Add new cells until we fill the row. */
+                       _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+                       rowdata->attr.soft_wrapped = 0;
+                       /* Repaint the row. */
+                       _vte_invalidate_cells(terminal,
+                                       0, terminal->column_count, i, 1);
+               }
+       }
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Scroll the text, but don't move the cursor.  Negative = up, positive = down. */
+static void
+_vte_terminal_scroll_text (VteTerminal *terminal, int scroll_amount)
+{
+       long start, end, i;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       if (screen->scrolling_restricted) {
+               start = screen->insert_delta + screen->scrolling_region.start;
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               start = screen->insert_delta;
+               end = start + terminal->row_count - 1;
+       }
+
+       while (_vte_ring_next(screen->row_data) <= end)
+               _vte_terminal_ring_append (terminal, FALSE);
+
+       if (scroll_amount > 0) {
+               for (i = 0; i < scroll_amount; i++) {
+                       _vte_terminal_ring_remove (terminal, end);
+                       _vte_terminal_ring_insert (terminal, start, TRUE);
+               }
+       } else {
+               for (i = 0; i < -scroll_amount; i++) {
+                       _vte_terminal_ring_remove (terminal, start);
+                       _vte_terminal_ring_insert (terminal, end, TRUE);
+               }
+       }
+
+       /* Update the display. */
+       _vte_terminal_scroll_region(terminal, start, end - start + 1,
+                                  scroll_amount);
+
+       /* Adjust the scrollbars if necessary. */
+       _vte_terminal_adjust_adjustments(terminal);
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_inserted_flag = TRUE;
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+static gboolean
+vte_terminal_termcap_string_same_as_for (VteTerminal *terminal,
+                                        const char  *cap_str,
+                                        const char  *cap_other)
+{
+       char *other_str;
+       gboolean ret;
+
+       other_str = _vte_termcap_find_string(terminal->pvt->termcap,
+                                            terminal->pvt->emulation,
+                                            cap_other);
+
+       ret = other_str && (g_ascii_strcasecmp(cap_str, other_str) == 0);
+
+       g_free (other_str);
+
+       return ret;
+}
+
+/* Set icon/window titles. */
+static void
+vte_sequence_handler_set_title_internal(VteTerminal *terminal,
+                                       GValueArray *params,
+                                       gboolean icon_title,
+                                       gboolean window_title)
+{
+       GValue *value;
+       char *title = NULL;
+
+       if (icon_title == FALSE && window_title == FALSE)
+               return;
+
+       /* Get the string parameter's value. */
+       value = g_value_array_get_nth(params, 0);
+       if (value) {
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       /* Convert the long to a string. */
+                       title = g_strdup_printf("%ld", g_value_get_long(value));
+               } else
+               if (G_VALUE_HOLDS_STRING(value)) {
+                       /* Copy the string into the buffer. */
+                       title = g_value_dup_string(value);
+               } else
+               if (G_VALUE_HOLDS_POINTER(value)) {
+                       title = vte_ucs4_to_utf8 (terminal, g_value_get_pointer (value));
+               }
+               if (title != NULL) {
+                       char *p, *validated;
+                       const char *end;
+
+                       /* Validate the text. */
+                       g_utf8_validate(title, strlen(title), &end);
+                       validated = g_strndup(title, end - title);
+
+                       /* No control characters allowed. */
+                       for (p = validated; *p != '\0'; p++) {
+                               if ((*p & 0x1f) == *p) {
+                                       *p = ' ';
+                               }
+                       }
+
+                       /* Emit the signal */
+                       if (window_title) {
+                               g_free (terminal->pvt->window_title_changed);
+                               terminal->pvt->window_title_changed = g_strdup (validated);
+                       }
+
+                       if (icon_title) {
+                               g_free (terminal->pvt->icon_title_changed);
+                               terminal->pvt->icon_title_changed = g_strdup (validated);
+                       }
+
+                       g_free (validated);
+                       g_free(title);
+               }
+       }
+}
+
+/* Toggle a terminal mode. */
+static void
+vte_sequence_handler_set_mode_internal(VteTerminal *terminal,
+                                      long setting, gboolean value)
+{
+       switch (setting) {
+       case 2:         /* keyboard action mode (?) */
+               break;
+       case 4:         /* insert/overtype mode */
+               terminal->pvt->screen->insert_mode = value;
+               break;
+       case 12:        /* send/receive mode (local echo) */
+               terminal->pvt->screen->sendrecv_mode = value;
+               break;
+       case 20:        /* automatic newline / normal linefeed mode */
+               terminal->pvt->screen->linefeed_mode = value;
+               break;
+       default:
+               break;
+       }
+}
+
+
+/*
+ * Sequence handling boilerplate
+ */
+
+/* Typedef the handle type */
+typedef void (*VteTerminalSequenceHandler) (VteTerminal *terminal, GValueArray *params);
+
+/* Prototype all handlers... */
+#define VTE_SEQUENCE_HANDLER(name) \
+       static void name (VteTerminal *terminal, GValueArray *params);
+#include "vteseq-list.h"
+#undef VTE_SEQUENCE_HANDLER
+
+
+/* Call another handler, offsetting any long arguments by the given
+ * increment value. */
+static void
+vte_sequence_handler_offset(VteTerminal *terminal,
+                           GValueArray *params,
+                           int increment,
+                           VteTerminalSequenceHandler handler)
+{
+       guint i;
+       long val;
+       GValue *value;
+       /* Decrement the parameters and let the _cs handler deal with it. */
+       for (i = 0; (params != NULL) && (i < params->n_values); i++) {
+               value = g_value_array_get_nth(params, i);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = g_value_get_long(value);
+                       val += increment;
+                       g_value_set_long(value, val);
+               }
+       }
+       handler (terminal, params);
+}
+
+/* Call another function a given number of times, or once. */
+static void
+vte_sequence_handler_multiple_limited(VteTerminal *terminal,
+                                      GValueArray *params,
+                                      VteTerminalSequenceHandler handler,
+                                      glong max)
+{
+       long val = 1;
+       int i;
+       GValue *value;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = g_value_get_long(value);
+                       val = CLAMP(val, 1, max);       /* FIXME: vttest. */
+               }
+       }
+       for (i = 0; i < val; i++)
+               handler (terminal, NULL);
+}
+
+static void
+vte_sequence_handler_multiple(VteTerminal *terminal,
+                              GValueArray *params,
+                              VteTerminalSequenceHandler handler)
+{
+        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
+}
+
+static void
+vte_sequence_handler_multiple_r(VteTerminal *terminal,
+                                GValueArray *params,
+                                VteTerminalSequenceHandler handler)
+{
+        vte_sequence_handler_multiple_limited(terminal, params, handler,
+                                              terminal->column_count - 
terminal->pvt->screen->cursor_current.col);
+}
+
+/* Manipulate certain terminal attributes. */
+static void
+vte_sequence_handler_decset_internal(VteTerminal *terminal,
+                                    int setting,
+                                    gboolean restore,
+                                    gboolean save,
+                                    gboolean set)
+{
+       gboolean recognized = FALSE;
+       gpointer p;
+       guint i;
+       struct {
+               int setting;
+               gboolean *bvalue;
+               gint *ivalue;
+               gpointer *pvalue;
+               gpointer fvalue;
+               gpointer tvalue;
+               VteTerminalSequenceHandler reset, set;
+       } settings[] = {
+               /* 1: Application/normal cursor keys. */
+               {1, NULL, &terminal->pvt->cursor_mode, NULL,
+                GINT_TO_POINTER(VTE_KEYMODE_NORMAL),
+                GINT_TO_POINTER(VTE_KEYMODE_APPLICATION),
+                NULL, NULL,},
+               /* 2: disallowed, we don't do VT52. */
+               {2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 3: disallowed, window size is set by user. */
+               {3, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 4: Smooth scroll. */
+               {4, &terminal->pvt->smooth_scroll, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 5: Reverse video. */
+               {5, &terminal->pvt->screen->reverse_mode, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 6: Origin mode: when enabled, cursor positioning is
+                * relative to the scrolling region. */
+               {6, &terminal->pvt->screen->origin_mode, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 7: Wraparound mode. */
+               {7, &terminal->pvt->flags.am, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 8: disallowed, keyboard repeat is set by user. */
+               {8, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 9: Send-coords-on-click. */
+               {9, NULL, &terminal->pvt->mouse_tracking_mode, NULL,
+                GINT_TO_POINTER(0),
+                GINT_TO_POINTER(MOUSE_TRACKING_SEND_XY_ON_CLICK),
+                NULL, NULL,},
+               /* 12: disallowed, cursor blinks is set by user. */
+               {12, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 18: print form feed. */
+               /* 19: set print extent to full screen. */
+               /* 25: Cursor visible. */
+               {25, &terminal->pvt->cursor_visible, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 30/rxvt: disallowed, scrollbar visibility is set by user. */
+               {30, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 35/rxvt: disallowed, fonts set by user. */
+               {35, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 38: enter Tektronix mode. */
+               /* 40: disallowed, the user sizes dynamically. */
+               {40, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 41: more(1) fix. */
+               /* 42: Enable NLS replacements. */
+               {42, &terminal->pvt->nrc_mode, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 44: Margin bell. */
+               {44, &terminal->pvt->margin_bell, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 47: Alternate screen. */
+               {47, NULL, NULL, (gpointer) &terminal->pvt->screen,
+                &terminal->pvt->normal_screen,
+                &terminal->pvt->alternate_screen,
+                NULL, NULL,},
+               /* 66: Keypad mode. */
+               {66, &terminal->pvt->keypad_mode, NULL, NULL,
+                GINT_TO_POINTER(VTE_KEYMODE_NORMAL),
+                GINT_TO_POINTER(VTE_KEYMODE_APPLICATION),
+                NULL, NULL,},
+               /* 67: disallowed, backspace key policy is set by user. */
+               {67, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 1000: Send-coords-on-button. */
+               {1000, NULL, &terminal->pvt->mouse_tracking_mode, NULL,
+                GINT_TO_POINTER(0),
+                GINT_TO_POINTER(MOUSE_TRACKING_SEND_XY_ON_BUTTON),
+                NULL, NULL,},
+               /* 1001: Hilite tracking. */
+               {1001, NULL, &terminal->pvt->mouse_tracking_mode, NULL,
+                GINT_TO_POINTER(0),
+                GINT_TO_POINTER(MOUSE_TRACKING_HILITE_TRACKING),
+                NULL, NULL,},
+               /* 1002: Cell motion tracking. */
+               {1002, NULL, &terminal->pvt->mouse_tracking_mode, NULL,
+                GINT_TO_POINTER(0),
+                GINT_TO_POINTER(MOUSE_TRACKING_CELL_MOTION_TRACKING),
+                NULL, NULL,},
+               /* 1003: All motion tracking. */
+               {1003, NULL, &terminal->pvt->mouse_tracking_mode, NULL,
+                GINT_TO_POINTER(0),
+                GINT_TO_POINTER(MOUSE_TRACKING_ALL_MOTION_TRACKING),
+                NULL, NULL,},
+               /* 1010/rxvt: disallowed, scroll-on-output is set by user. */
+               {1010, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 1011/rxvt: disallowed, scroll-on-keypress is set by user. */
+               {1011, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 1035: disallowed, don't know what to do with it. */
+               {1035, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 1036: Meta-sends-escape. */
+               {1036, &terminal->pvt->meta_sends_escape, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+               /* 1037: disallowed, delete key policy is set by user. */
+               {1037, NULL, NULL, NULL, NULL, NULL, NULL, NULL,},
+               /* 1047: Use alternate screen buffer. */
+               {1047, NULL, NULL, (gpointer) &terminal->pvt->screen,
+                &terminal->pvt->normal_screen,
+                &terminal->pvt->alternate_screen,
+                NULL, NULL,},
+               /* 1048: Save/restore cursor position. */
+               {1048, NULL, NULL, NULL,
+                NULL,
+                NULL,
+                vte_sequence_handler_rc,
+                vte_sequence_handler_sc,},
+               /* 1049: Use alternate screen buffer, saving the cursor
+                * position. */
+               {1049, NULL, NULL, (gpointer) &terminal->pvt->screen,
+                &terminal->pvt->normal_screen,
+                &terminal->pvt->alternate_screen,
+                vte_sequence_handler_rc,
+                vte_sequence_handler_sc,},
+               /* 1051: Sun function key mode. */
+               {1051, NULL, NULL, (gpointer) &terminal->pvt->sun_fkey_mode,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL},
+               /* 1052: HP function key mode. */
+               {1052, NULL, NULL, (gpointer) &terminal->pvt->hp_fkey_mode,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL},
+               /* 1060: Legacy function key mode. */
+               {1060, NULL, NULL, (gpointer) &terminal->pvt->legacy_fkey_mode,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL},
+               /* 1061: VT220 function key mode. */
+               {1061, NULL, NULL, (gpointer) &terminal->pvt->vt220_fkey_mode,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL},
+               /* 2004: Bracketed paste mode. */
+               {2004, &terminal->pvt->screen->bracketed_paste_mode, NULL, NULL,
+                GINT_TO_POINTER(FALSE),
+                GINT_TO_POINTER(TRUE),
+                NULL, NULL,},
+       };
+
+       /* Handle the setting. */
+       for (i = 0; i < G_N_ELEMENTS(settings); i++)
+       if (settings[i].setting == setting) {
+               recognized = TRUE;
+               /* Handle settings we want to ignore. */
+               if ((settings[i].fvalue == settings[i].tvalue) &&
+                   (settings[i].set == NULL) &&
+                   (settings[i].reset == NULL)) {
+                       continue;
+               }
+
+               /* Read the old setting. */
+               if (restore) {
+                       p = g_hash_table_lookup(terminal->pvt->dec_saved,
+                                               GINT_TO_POINTER(setting));
+                       set = (p != NULL);
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Setting %d was %s.\n",
+                                       setting, set ? "set" : "unset");
+               }
+               /* Save the current setting. */
+               if (save) {
+                       if (settings[i].bvalue) {
+                               set = *(settings[i].bvalue) != FALSE;
+                       } else
+                       if (settings[i].ivalue) {
+                               set = *(settings[i].ivalue) ==
+                                     GPOINTER_TO_INT(settings[i].tvalue);
+                       } else
+                       if (settings[i].pvalue) {
+                               set = *(settings[i].pvalue) ==
+                                     settings[i].tvalue;
+                       }
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Setting %d is %s, saving.\n",
+                                       setting, set ? "set" : "unset");
+                       g_hash_table_insert(terminal->pvt->dec_saved,
+                                           GINT_TO_POINTER(setting),
+                                           GINT_TO_POINTER(set));
+               }
+               /* Change the current setting to match the new/saved value. */
+               if (!save) {
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Setting %d to %s.\n",
+                                       setting, set ? "set" : "unset");
+                       if (settings[i].set && set) {
+                               settings[i].set (terminal, NULL);
+                       }
+                       if (settings[i].bvalue) {
+                               *(settings[i].bvalue) = set;
+                       } else
+                       if (settings[i].ivalue) {
+                               *(settings[i].ivalue) = set ?
+                                       GPOINTER_TO_INT(settings[i].tvalue) :
+                                       GPOINTER_TO_INT(settings[i].fvalue);
+                       } else
+                       if (settings[i].pvalue) {
+                               *(settings[i].pvalue) = set ?
+                                       settings[i].tvalue :
+                                       settings[i].fvalue;
+                       }
+                       if (settings[i].reset && !set) {
+                               settings[i].reset (terminal, NULL);
+                       }
+               }
+       }
+
+       /* Do whatever's necessary when the setting changes. */
+       switch (setting) {
+       case 1:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering application cursor mode.\n" :
+                               "Leaving application cursor mode.\n");
+               break;
+#if 0          /* 3: disallowed, window size is set by user. */
+       case 3:
+               vte_terminal_emit_resize_window(terminal,
+                                               (set ? 132 : 80) *
+                                               terminal->char_width +
+                                               terminal->pvt->inner_border.left +
+                                                terminal->pvt->inner_border.right,
+                                               terminal->row_count *
+                                               terminal->char_height +
+                                               terminal->pvt->inner_border.top +
+                                                terminal->pvt->inner_border.bottom);
+               /* Request a resize and redraw. */
+               _vte_invalidate_all(terminal);
+               break;
+#endif
+       case 5:
+               /* Repaint everything in reverse mode. */
+               _vte_invalidate_all(terminal);
+               break;
+       case 6:
+               /* Reposition the cursor in its new home position. */
+               terminal->pvt->screen->cursor_current.col = 0;
+               terminal->pvt->screen->cursor_current.row =
+                       terminal->pvt->screen->insert_delta;
+               break;
+       case 47:
+       case 1047:
+       case 1049:
+               /* Clear the alternate screen if we're switching
+                * to it, and home the cursor. */
+               if (set) {
+                       _vte_terminal_clear_screen (terminal);
+                       _vte_terminal_home_cursor (terminal);
+               }
+               /* Reset scrollbars and repaint everything. */
+               gtk_adjustment_set_value(terminal->adjustment,
+                                        terminal->pvt->screen->scroll_delta);
+               vte_terminal_set_scrollback_lines(terminal,
+                               terminal->pvt->scrollback_lines);
+               _vte_terminal_queue_contents_changed(terminal);
+               _vte_invalidate_all (terminal);
+               break;
+       case 9:
+       case 1000:
+       case 1001:
+       case 1002:
+       case 1003:
+               /* Make the pointer visible. */
+               _vte_terminal_set_pointer_visible(terminal, TRUE);
+               break;
+       case 66:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering application keypad mode.\n" :
+                               "Leaving application keypad mode.\n");
+               break;
+       case 1051:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering Sun fkey mode.\n" :
+                               "Leaving Sun fkey mode.\n");
+               break;
+       case 1052:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering HP fkey mode.\n" :
+                               "Leaving HP fkey mode.\n");
+               break;
+       case 1060:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering Legacy fkey mode.\n" :
+                               "Leaving Legacy fkey mode.\n");
+               break;
+       case 1061:
+               _vte_debug_print(VTE_DEBUG_KEYBOARD, set ?
+                               "Entering VT220 fkey mode.\n" :
+                               "Leaving VT220 fkey mode.\n");
+               break;
+       default:
+               break;
+       }
+
+       if (!recognized) {
+               _vte_debug_print (VTE_DEBUG_MISC,
+                                 "DECSET/DECRESET mode %d not recognized, ignoring.\n",
+                                 setting);
+       }
+}
+
+
+
+
+/* THE HANDLERS */
+
+
+/* End alternate character set. */
+static void
+vte_sequence_handler_ae (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->alternate_charset = FALSE;
+}
+
+/* Add a line at the current cursor position. */
+static void
+vte_sequence_handler_al (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       long start, end, param, i;
+       GValue *value;
+
+       /* Find out which part of the screen we're messing with. */
+       screen = terminal->pvt->screen;
+       start = screen->cursor_current.row;
+       if (screen->scrolling_restricted) {
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               end = screen->insert_delta + terminal->row_count - 1;
+       }
+
+       /* Extract any parameters. */
+       param = 1;
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+               }
+       }
+
+       /* Insert the right number of lines. */
+       for (i = 0; i < param; i++) {
+               /* Clear a line off the end of the region and add one to the
+                * top of the region. */
+               _vte_terminal_ring_remove (terminal, end);
+               _vte_terminal_ring_insert (terminal, start, TRUE);
+               /* Adjust the scrollbars if necessary. */
+               _vte_terminal_adjust_adjustments(terminal);
+       }
+
+       /* Update the display. */
+       _vte_terminal_scroll_region(terminal, start, end - start + 1, param);
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Add N lines at the current cursor position. */
+static void
+vte_sequence_handler_AL (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_al (terminal, params);
+}
+
+/* Start using alternate character set. */
+static void
+vte_sequence_handler_as (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->alternate_charset = TRUE;
+}
+
+/* Beep. */
+static void
+vte_sequence_handler_bl (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_beep (terminal);
+       g_signal_emit_by_name(terminal, "beep");
+}
+
+/* Backtab. */
+static void
+vte_sequence_handler_bt (VteTerminal *terminal, GValueArray *params)
+{
+       long newcol;
+
+       /* Calculate which column is the previous tab stop. */
+       newcol = terminal->pvt->screen->cursor_current.col;
+
+       if (terminal->pvt->tabstops != NULL) {
+               /* Find the next tabstop. */
+               while (newcol > 0) {
+                       newcol--;
+                       if (_vte_terminal_get_tabstop(terminal,
+                                                    newcol % terminal->column_count)) {
+                               break;
+                       }
+               }
+       }
+
+       /* Warp the cursor. */
+       _vte_debug_print(VTE_DEBUG_PARSE,
+                       "Moving cursor to column %ld.\n", (long)newcol);
+       terminal->pvt->screen->cursor_current.col = newcol;
+}
+
+/* Clear from the cursor position to the beginning of the line. */
+static void
+vte_sequence_handler_cb (VteTerminal *terminal, GValueArray *params)
+{
+       VteRowData *rowdata;
+       long i;
+       VteScreen *screen;
+       VteCell *pcell;
+       screen = terminal->pvt->screen;
+
+       /* Get the data for the row which the cursor points to. */
+       rowdata = _vte_terminal_ensure_row(terminal);
+       /* Clear the data up to the current column with the default
+        * attributes.  If there is no such character cell, we need
+        * to add one. */
+       for (i = 0; i <= screen->cursor_current.col; i++) {
+               if (i < (glong) _vte_row_data_length (rowdata)) {
+                       /* Muck with the cell in this location. */
+                       pcell = _vte_row_data_get_writable (rowdata, i);
+                       *pcell = screen->color_defaults;
+               } else {
+                       /* Add new cells until we have one here. */
+                       _vte_row_data_append (rowdata, &screen->color_defaults);
+               }
+       }
+       /* Repaint this row. */
+       _vte_invalidate_cells(terminal,
+                             0, screen->cursor_current.col+1,
+                             screen->cursor_current.row, 1);
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Clear to the right of the cursor and below the current line. */
+static void
+vte_sequence_handler_cd (VteTerminal *terminal, GValueArray *params)
+{
+       VteRowData *rowdata;
+       glong i;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+       /* If the cursor is actually on the screen, clear the rest of the
+        * row the cursor is on and all of the rows below the cursor. */
+       i = screen->cursor_current.row;
+       if (i < _vte_ring_next(screen->row_data)) {
+               /* Get the data for the row we're clipping. */
+               rowdata = _vte_ring_index_writable (screen->row_data, i);
+               /* Clear everything to the right of the cursor. */
+               if (rowdata)
+                       _vte_row_data_shrink (rowdata, screen->cursor_current.col);
+       }
+       /* Now for the rest of the lines. */
+       for (i = screen->cursor_current.row + 1;
+            i < _vte_ring_next(screen->row_data);
+            i++) {
+               /* Get the data for the row we're removing. */
+               rowdata = _vte_ring_index_writable (screen->row_data, i);
+               /* Remove it. */
+               if (rowdata)
+                       _vte_row_data_shrink (rowdata, 0);
+       }
+       /* Now fill the cleared areas. */
+       for (i = screen->cursor_current.row;
+            i < screen->insert_delta + terminal->row_count;
+            i++) {
+               /* Retrieve the row's data, creating it if necessary. */
+               if (_vte_ring_contains (screen->row_data, i)) {
+                       rowdata = _vte_ring_index_writable (screen->row_data, i);
+                       g_assert(rowdata != NULL);
+               } else {
+                       rowdata = _vte_terminal_ring_append (terminal, FALSE);
+               }
+               /* Pad out the row. */
+               _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+               rowdata->attr.soft_wrapped = 0;
+               /* Repaint this row. */
+               _vte_invalidate_cells(terminal,
+                                     0, terminal->column_count,
+                                     i, 1);
+       }
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Clear from the cursor position to the end of the line. */
+static void
+vte_sequence_handler_ce (VteTerminal *terminal, GValueArray *params)
+{
+       VteRowData *rowdata;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+       /* Get the data for the row which the cursor points to. */
+       rowdata = _vte_terminal_ensure_row(terminal);
+       g_assert(rowdata != NULL);
+       /* Remove the data at the end of the array until the current column
+        * is the end of the array. */
+       if ((glong) _vte_row_data_length (rowdata) > screen->cursor_current.col) {
+               _vte_row_data_shrink (rowdata, screen->cursor_current.col);
+               /* We've modified the display.  Make a note of it. */
+               terminal->pvt->text_deleted_flag = TRUE;
+       }
+       if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
+               /* Add enough cells to fill out the row. */
+               _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+       }
+       rowdata->attr.soft_wrapped = 0;
+       /* Repaint this row. */
+       _vte_invalidate_cells(terminal,
+                             screen->cursor_current.col,
+                             terminal->column_count -
+                             screen->cursor_current.col,
+                             screen->cursor_current.row, 1);
+}
+
+/* Move the cursor to the given column (horizontal position). */
+static void
+vte_sequence_handler_ch (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       GValue *value;
+       long val;
+
+       screen = terminal->pvt->screen;
+       /* We only care if there's a parameter in there. */
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = CLAMP(g_value_get_long(value),
+                                   0,
+                                   terminal->column_count - 1);
+                       /* Move the cursor. */
+                       screen->cursor_current.col = val;
+                       _vte_terminal_cleanup_tab_fragments_at_cursor (terminal);
+               }
+       }
+}
+
+/* Clear the screen and home the cursor. */
+static void
+vte_sequence_handler_cl (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_clear_screen (terminal);
+       _vte_terminal_home_cursor (terminal);
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Move the cursor to the given position. */
+static void
+vte_sequence_handler_cm (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *row, *col;
+       long rowval, colval, origin;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       /* We need at least two parameters. */
+       rowval = colval = 0;
+       if (params != NULL && params->n_values >= 1) {
+               /* The first is the row, the second is the column. */
+               row = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(row)) {
+                       if (screen->origin_mode &&
+                           screen->scrolling_restricted) {
+                               origin = screen->scrolling_region.start;
+                       } else {
+                               origin = 0;
+                       }
+                       rowval = g_value_get_long(row) + origin;
+                       rowval = CLAMP(rowval, 0, terminal->row_count - 1);
+               }
+               if (params->n_values >= 2) {
+                       col = g_value_array_get_nth(params, 1);
+                       if (G_VALUE_HOLDS_LONG(col)) {
+                               colval = g_value_get_long(col);
+                               colval = CLAMP(colval, 0, terminal->column_count - 1);
+                       }
+               }
+       }
+       screen->cursor_current.row = rowval + screen->insert_delta;
+       screen->cursor_current.col = colval;
+       _vte_terminal_cleanup_tab_fragments_at_cursor (terminal);
+}
+
+/* Carriage return. */
+static void
+vte_sequence_handler_cr (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->cursor_current.col = 0;
+}
+
+/* Restrict scrolling and updates to a subset of the visible lines. */
+static void
+vte_sequence_handler_cs (VteTerminal *terminal, GValueArray *params)
+{
+       long start=-1, end=-1, rows;
+       GValue *value;
+       VteScreen *screen;
+
+       _vte_terminal_home_cursor (terminal);
+
+       /* We require two parameters.  Anything less is a reset. */
+       screen = terminal->pvt->screen;
+       if ((params == NULL) || (params->n_values < 2)) {
+               screen->scrolling_restricted = FALSE;
+               return;
+       }
+       /* Extract the two values. */
+       value = g_value_array_get_nth(params, 0);
+       if (G_VALUE_HOLDS_LONG(value)) {
+               start = g_value_get_long(value);
+       }
+       value = g_value_array_get_nth(params, 1);
+       if (G_VALUE_HOLDS_LONG(value)) {
+               end = g_value_get_long(value);
+       }
+       /* Catch garbage. */
+       rows = terminal->row_count;
+       if (start <= 0 || start >= rows) {
+               start = 0;
+       }
+       if (end <= 0 || end >= rows) {
+               end = rows - 1;
+       }
+       /* Set the right values. */
+       screen->scrolling_region.start = start;
+       screen->scrolling_region.end = end;
+       screen->scrolling_restricted = TRUE;
+       /* Special case -- run wild, run free. */
+       if (screen->scrolling_region.start == 0 &&
+           screen->scrolling_region.end == rows - 1) {
+               screen->scrolling_restricted = FALSE;
+       }
+}
+
+/* Restrict scrolling and updates to a subset of the visible lines, because
+ * GNU Emacs is special. */
+static void
+vte_sequence_handler_cS (VteTerminal *terminal, GValueArray *params)
+{
+       long start=0, end=terminal->row_count-1, rows;
+       GValue *value;
+       VteScreen *screen;
+
+       /* We require four parameters. */
+       screen = terminal->pvt->screen;
+       if ((params == NULL) || (params->n_values < 2)) {
+               screen->scrolling_restricted = FALSE;
+               return;
+       }
+       /* Extract the two parameters we care about, encoded as the number
+        * of lines above and below the scrolling region, respectively. */
+       value = g_value_array_get_nth(params, 1);
+       if (G_VALUE_HOLDS_LONG(value)) {
+               start = g_value_get_long(value);
+       }
+       value = g_value_array_get_nth(params, 2);
+       if (G_VALUE_HOLDS_LONG(value)) {
+               end -= g_value_get_long(value);
+       }
+       /* Set the right values. */
+       screen->scrolling_region.start = start;
+       screen->scrolling_region.end = end;
+       screen->scrolling_restricted = TRUE;
+       /* Special case -- run wild, run free. */
+       rows = terminal->row_count;
+       if ((screen->scrolling_region.start == 0) &&
+           (screen->scrolling_region.end == rows - 1)) {
+               screen->scrolling_restricted = FALSE;
+       }
+       /* Clamp the cursor to the scrolling region. */
+       screen->cursor_current.row = CLAMP(screen->cursor_current.row,
+                                          screen->insert_delta + start,
+                                          screen->insert_delta + end);
+}
+
+/* Clear all tab stops. */
+static void
+vte_sequence_handler_ct (VteTerminal *terminal, GValueArray *params)
+{
+       if (terminal->pvt->tabstops != NULL) {
+               g_hash_table_destroy(terminal->pvt->tabstops);
+               terminal->pvt->tabstops = NULL;
+       }
+}
+
+/* Move the cursor to the lower left-hand corner. */
+static void
+vte_sequence_handler_cursor_lower_left (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       long row;
+       screen = terminal->pvt->screen;
+       row = MAX(0, terminal->row_count - 1);
+       screen->cursor_current.row = screen->insert_delta + row;
+       screen->cursor_current.col = 0;
+}
+
+/* Move the cursor to the beginning of the next line, scrolling if necessary. */
+static void
+vte_sequence_handler_cursor_next_line (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->cursor_current.col = 0;
+       vte_sequence_handler_DO (terminal, params);
+}
+
+/* Move the cursor to the beginning of the next line, scrolling if necessary. */
+static void
+vte_sequence_handler_cursor_preceding_line (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->cursor_current.col = 0;
+       vte_sequence_handler_UP (terminal, params);
+}
+
+/* Move the cursor to the given row (vertical position). */
+static void
+vte_sequence_handler_cv (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       GValue *value;
+       long val, origin;
+       screen = terminal->pvt->screen;
+       /* We only care if there's a parameter in there. */
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       /* Move the cursor. */
+                       if (screen->origin_mode &&
+                           screen->scrolling_restricted) {
+                               origin = screen->scrolling_region.start;
+                       } else {
+                               origin = 0;
+                       }
+                       val = g_value_get_long(value) + origin;
+                       val = CLAMP(val, 0, terminal->row_count - 1);
+                       screen->cursor_current.row = screen->insert_delta + val;
+               }
+       }
+}
+
+/* Delete a character at the current cursor position. */
+static void
+vte_sequence_handler_dc (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       VteRowData *rowdata;
+       long col;
+
+       screen = terminal->pvt->screen;
+
+       if (_vte_ring_next(screen->row_data) > screen->cursor_current.row) {
+               long len;
+               /* Get the data for the row which the cursor points to. */
+               rowdata = _vte_ring_index_writable (screen->row_data, screen->cursor_current.row);
+               g_assert(rowdata != NULL);
+               col = screen->cursor_current.col;
+               len = _vte_row_data_length (rowdata);
+               /* Remove the column. */
+               if (col < len) {
+                       _vte_row_data_remove (rowdata, col);
+                       if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
+                               _vte_row_data_fill (rowdata, &screen->fill_defaults, terminal->column_count);
+                               len = terminal->column_count;
+                       }
+                       /* Repaint this row. */
+                       _vte_invalidate_cells(terminal,
+                                       col, len - col,
+                                       screen->cursor_current.row, 1);
+               }
+       }
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Delete N characters at the current cursor position. */
+static void
+vte_sequence_handler_DC (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_dc);
+}
+
+/* Delete a line at the current cursor position. */
+static void
+vte_sequence_handler_dl (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       long start, end, param, i;
+       GValue *value;
+
+       /* Find out which part of the screen we're messing with. */
+       screen = terminal->pvt->screen;
+       start = screen->cursor_current.row;
+       if (screen->scrolling_restricted) {
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               end = screen->insert_delta + terminal->row_count - 1;
+       }
+
+       /* Extract any parameters. */
+       param = 1;
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+               }
+       }
+
+       /* Delete the right number of lines. */
+       for (i = 0; i < param; i++) {
+               /* Clear a line off the end of the region and add one to the
+                * top of the region. */
+               _vte_terminal_ring_remove (terminal, start);
+               _vte_terminal_ring_insert (terminal, end, TRUE);
+               /* Adjust the scrollbars if necessary. */
+               _vte_terminal_adjust_adjustments(terminal);
+       }
+
+       /* Update the display. */
+       _vte_terminal_scroll_region(terminal, start, end - start + 1, -param);
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Delete N lines at the current cursor position. */
+static void
+vte_sequence_handler_DL (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_dl (terminal, params);
+}
+
+/* Cursor down, no scrolling. */
+static void
+vte_sequence_handler_do (VteTerminal *terminal, GValueArray *params)
+{
+       long start, end;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       if (screen->scrolling_restricted) {
+               start = screen->insert_delta + screen->scrolling_region.start;
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               start = screen->insert_delta;
+               end = start + terminal->row_count - 1;
+       }
+
+       /* Move the cursor down. */
+       screen->cursor_current.row = MIN(screen->cursor_current.row + 1, end);
+}
+
+/* Cursor down, no scrolling. */
+static void
+vte_sequence_handler_DO (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_do);
+}
+
+/* Start using alternate character set. */
+static void
+vte_sequence_handler_eA (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_ae (terminal, params);
+}
+
+/* Erase characters starting at the cursor position (overwriting N with
+ * spaces, but not moving the cursor). */
+static void
+vte_sequence_handler_ec (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       VteRowData *rowdata;
+       GValue *value;
+       VteCell *cell;
+       long col, i, count;
+
+       screen = terminal->pvt->screen;
+
+       /* If we got a parameter, use it. */
+       count = 1;
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       count = g_value_get_long(value);
+               }
+       }
+
+       /* Clear out the given number of characters. */
+       rowdata = _vte_terminal_ensure_row(terminal);
+       if (_vte_ring_next(screen->row_data) > screen->cursor_current.row) {
+               g_assert(rowdata != NULL);
+               /* Write over the characters.  (If there aren't enough, we'll
+                * need to create them.) */
+               for (i = 0; i < count; i++) {
+                       col = screen->cursor_current.col + i;
+                       if (col >= 0) {
+                               if (col < (glong) _vte_row_data_length (rowdata)) {
+                                       /* Replace this cell with the current
+                                        * defaults. */
+                                       cell = _vte_row_data_get_writable (rowdata, col);
+                                       *cell = screen->color_defaults;
+                               } else {
+                                       /* Add new cells until we have one here. */
+                                       _vte_row_data_fill (rowdata, &screen->color_defaults, col);
+                               }
+                       }
+               }
+               /* Repaint this row. */
+               _vte_invalidate_cells(terminal,
+                                     screen->cursor_current.col, count,
+                                     screen->cursor_current.row, 1);
+       }
+
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* End insert mode. */
+static void
+vte_sequence_handler_ei (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->insert_mode = FALSE;
+}
+
+/* Form-feed / next-page. */
+static void
+vte_sequence_handler_form_feed (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_index (terminal, params);
+}
+
+/* Move from status line. */
+static void
+vte_sequence_handler_fs (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->status_line = FALSE;
+}
+
+/* Move the cursor to the home position. */
+static void
+vte_sequence_handler_ho (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_home_cursor (terminal);
+}
+
+/* Move the cursor to a specified position. */
+static void
+vte_sequence_handler_horizontal_and_vertical_position (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cm);
+}
+
+/* Insert a character. */
+static void
+vte_sequence_handler_ic (VteTerminal *terminal, GValueArray *params)
+{
+       VteVisualPosition save;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       save = screen->cursor_current;
+
+       _vte_terminal_insert_char(terminal, ' ', TRUE, TRUE);
+
+       screen->cursor_current = save;
+}
+
+/* Insert N characters. */
+static void
+vte_sequence_handler_IC (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_ic);
+}
+
+/* Begin insert mode. */
+static void
+vte_sequence_handler_im (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->insert_mode = TRUE;
+}
+
+/* Cursor down, with scrolling. */
+static void
+vte_sequence_handler_index (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_sf (terminal, params);
+}
+
+/* Send me a backspace key sym, will you?  Guess that the application meant
+ * to send the cursor back one position. */
+static void
+vte_sequence_handler_kb (VteTerminal *terminal, GValueArray *params)
+{
+       /* Move the cursor left. */
+       vte_sequence_handler_le (terminal, params);
+}
+
+/* Keypad mode end. */
+static void
+vte_sequence_handler_ke (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->keypad_mode = VTE_KEYMODE_NORMAL;
+}
+
+/* Keypad mode start. */
+static void
+vte_sequence_handler_ks (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->keypad_mode = VTE_KEYMODE_APPLICATION;
+}
+
+/* Cursor left. */
+static void
+vte_sequence_handler_le (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+       if (screen->cursor_current.col > 0) {
+               /* There's room to move left, so do so. */
+               screen->cursor_current.col--;
+               _vte_terminal_cleanup_tab_fragments_at_cursor (terminal);
+       } else {
+               if (terminal->pvt->flags.bw) {
+                       /* Wrap to the previous line. */
+                       screen->cursor_current.col = terminal->column_count - 1;
+                       if (screen->scrolling_restricted) {
+                               vte_sequence_handler_sr (terminal, params);
+                       } else {
+                               screen->cursor_current.row = MAX(screen->cursor_current.row - 1,
+                                                                screen->insert_delta);
+                       }
+               } else {
+                       /* Stick to the first column. */
+                       screen->cursor_current.col = 0;
+               }
+       }
+}
+
+/* Move the cursor left N columns. */
+static void
+vte_sequence_handler_LE (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_le);
+}
+
+/* Move the cursor to the lower left corner of the display. */
+static void
+vte_sequence_handler_ll (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       screen->cursor_current.row = MAX(screen->insert_delta,
+                                        screen->insert_delta +
+                                        terminal->row_count - 1);
+       screen->cursor_current.col = 0;
+}
+
+/* Blink on. */
+static void
+vte_sequence_handler_mb (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.blink = 1;
+}
+
+/* Bold on. */
+static void
+vte_sequence_handler_md (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.bold = 1;
+       terminal->pvt->screen->defaults.attr.half = 0;
+}
+
+/* End modes. */
+static void
+vte_sequence_handler_me (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_set_default_attributes(terminal);
+}
+
+/* Half-bright on. */
+static void
+vte_sequence_handler_mh (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.half = 1;
+       terminal->pvt->screen->defaults.attr.bold = 0;
+}
+
+/* Invisible on. */
+static void
+vte_sequence_handler_mk (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.invisible = 1;
+}
+
+/* Protect on. */
+static void
+vte_sequence_handler_mp (VteTerminal *terminal, GValueArray *params)
+{
+       /* unused; bug 499893
+       terminal->pvt->screen->defaults.attr.protect = 1;
+        */
+}
+
+/* Reverse on. */
+static void
+vte_sequence_handler_mr (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.reverse = 1;
+}
+
+/* Cursor right. */
+static void
+vte_sequence_handler_nd (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       if ((screen->cursor_current.col + 1) < terminal->column_count) {
+               /* There's room to move right. */
+               screen->cursor_current.col++;
+       }
+}
+
+/* Move the cursor to the beginning of the next line, scrolling if necessary. */
+static void
+vte_sequence_handler_next_line (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->cursor_current.col = 0;
+       vte_sequence_handler_DO (terminal, params);
+}
+
+/* No-op. */
+static void
+vte_sequence_handler_noop (VteTerminal *terminal, GValueArray *params)
+{
+}
+
+/* Carriage return command(?). */
+static void
+vte_sequence_handler_nw (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_cr (terminal, params);
+}
+
+/* Restore cursor (position). */
+static void
+vte_sequence_handler_rc (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       screen->cursor_current.col = screen->cursor_saved.col;
+       screen->cursor_current.row = CLAMP(screen->cursor_saved.row +
+                                          screen->insert_delta,
+                                          screen->insert_delta,
+                                          screen->insert_delta +
+                                          terminal->row_count - 1);
+}
+
+/* Cursor down, with scrolling. */
+static void
+vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_sr (terminal, params);
+}
+
+/* Cursor right N characters. */
+static void
+vte_sequence_handler_RI (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_nd);
+}
+
+/* Save cursor (position). */
+static void
+vte_sequence_handler_sc (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       screen = terminal->pvt->screen;
+       screen->cursor_saved.col = screen->cursor_current.col;
+       screen->cursor_saved.row = CLAMP(screen->cursor_current.row -
+                                        screen->insert_delta,
+                                        0, terminal->row_count - 1);
+}
+
+/* Scroll the text down, but don't move the cursor. */
+static void
+vte_sequence_handler_scroll_down (VteTerminal *terminal, GValueArray *params)
+{
+       long val = 1;
+       GValue *value;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = g_value_get_long(value);
+                       val = MAX(val, 1);
+               }
+       }
+
+       _vte_terminal_scroll_text (terminal, val);
+}
+
+/* change color in the palette */
+static void
+vte_sequence_handler_change_color (VteTerminal *terminal, GValueArray *params)
+{
+       gchar **pairs, *str = NULL;
+       GValue *value;
+       GdkColor color;
+       guint idx, i;
+
+       if (params != NULL && params->n_values > 0) {
+               value = g_value_array_get_nth (params, 0);
+
+               if (G_VALUE_HOLDS_STRING (value))
+                       str = g_value_dup_string (value);
+               else if (G_VALUE_HOLDS_POINTER (value))
+                       str = vte_ucs4_to_utf8 (terminal, g_value_get_pointer (value));
+
+               if (! str)
+                       return;
+
+               pairs = g_strsplit (str, ";", 0);
+               if (! pairs) {
+                       g_free (str);
+                       return;
+               }
+
+               for (i = 0; pairs[i] && pairs[i + 1]; i += 2) {
+                       idx = strtoul (pairs[i], (char **) NULL, 10);
+
+                       if (idx >= VTE_DEF_FG)
+                               continue;
+
+                       if (vte_parse_color (pairs[i + 1], &color)) {
+                               terminal->pvt->palette[idx].red = color.red;
+                               terminal->pvt->palette[idx].green = color.green;
+                               terminal->pvt->palette[idx].blue = color.blue;
+                       } else if (strcmp (pairs[i + 1], "?") == 0) {
+                               gchar buf[128];
+                               g_snprintf (buf, sizeof (buf),
+                                           _VTE_CAP_OSC "4;%u;rgb:%04x/%04x/%04x" BEL, idx,
+                                           terminal->pvt->palette[idx].red,
+                                           terminal->pvt->palette[idx].green,
+                                           terminal->pvt->palette[idx].blue);
+                               vte_terminal_feed_child (terminal, buf, -1);
+                       }
+               }
+
+               g_free (str);
+               g_strfreev (pairs);
+
+               /* emit the refresh as the palette has changed and previous
+                * renders need to be updated. */
+               vte_terminal_emit_refresh_window (terminal);
+       }
+}
+
+/* Scroll the text up, but don't move the cursor. */
+static void
+vte_sequence_handler_scroll_up (VteTerminal *terminal, GValueArray *params)
+{
+       long val = 1;
+       GValue *value;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = g_value_get_long(value);
+                       val = MAX(val, 1);
+               }
+       }
+
+       _vte_terminal_scroll_text (terminal, -val);
+}
+
+/* Standout end. */
+static void
+vte_sequence_handler_se (VteTerminal *terminal, GValueArray *params)
+{
+       char *standout;
+
+       /* Standout may be mapped to another attribute, so attempt to do
+        * the Right Thing here.
+        *
+        * If the standout sequence is the same as another sequence, do what
+        * we'd do for that other sequence instead. */
+
+       standout = _vte_termcap_find_string(terminal->pvt->termcap,
+                                           terminal->pvt->emulation,
+                                           "so");
+       g_assert(standout != NULL);
+
+       if (vte_terminal_termcap_string_same_as_for (terminal, standout, "mb") /* blink */   ||
+           vte_terminal_termcap_string_same_as_for (terminal, standout, "md") /* bold */    ||
+           vte_terminal_termcap_string_same_as_for (terminal, standout, "mh") /* half */    ||
+           vte_terminal_termcap_string_same_as_for (terminal, standout, "mr") /* reverse */ ||
+           vte_terminal_termcap_string_same_as_for (terminal, standout, "us") /* underline */)
+       {
+               vte_sequence_handler_me (terminal, params);
+       } else {
+               /* Otherwise just set standout mode. */
+               terminal->pvt->screen->defaults.attr.standout = 0;
+       }
+
+       g_free(standout);
+}
+
+/* Cursor down, with scrolling. */
+static void
+vte_sequence_handler_sf (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_cursor_down (terminal);
+}
+
+/* Cursor down, with scrolling. */
+static void
+vte_sequence_handler_SF (VteTerminal *terminal, GValueArray *params)
+{
+       /* XXX implement this directly in _vte_terminal_cursor_down */
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_sf);
+}
+
+/* Standout start. */
+static void
+vte_sequence_handler_so (VteTerminal *terminal, GValueArray *params)
+{
+       char *standout;
+
+       /* Standout may be mapped to another attribute, so attempt to do
+        * the Right Thing here.
+        *
+        * If the standout sequence is the same as another sequence, do what
+        * we'd do for that other sequence instead. */
+
+       standout = _vte_termcap_find_string(terminal->pvt->termcap,
+                                           terminal->pvt->emulation,
+                                           "so");
+       g_assert(standout != NULL);
+
+       if (vte_terminal_termcap_string_same_as_for (terminal, standout, "mb") /* blink */)
+               vte_sequence_handler_mb (terminal, params);
+       else if (vte_terminal_termcap_string_same_as_for (terminal, standout, "md") /* bold */)
+               vte_sequence_handler_md (terminal, params);
+       else if (vte_terminal_termcap_string_same_as_for (terminal, standout, "mh") /* half */)
+               vte_sequence_handler_mh (terminal, params);
+       else if (vte_terminal_termcap_string_same_as_for (terminal, standout, "mr") /* reverse */)
+               vte_sequence_handler_mr (terminal, params);
+       else if (vte_terminal_termcap_string_same_as_for (terminal, standout, "us") /* underline */)
+               vte_sequence_handler_us (terminal, params);
+       else {
+               /* Otherwise just set standout mode. */
+               terminal->pvt->screen->defaults.attr.standout = 1;
+       }
+
+       g_free(standout);
+}
+
+/* Cursor up, scrolling if need be. */
+static void
+vte_sequence_handler_sr (VteTerminal *terminal, GValueArray *params)
+{
+       long start, end;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+
+       if (screen->scrolling_restricted) {
+               start = screen->scrolling_region.start + screen->insert_delta;
+               end = screen->scrolling_region.end + screen->insert_delta;
+       } else {
+               start = terminal->pvt->screen->insert_delta;
+               end = start + terminal->row_count - 1;
+       }
+
+       if (screen->cursor_current.row == start) {
+               /* If we're at the top of the scrolling region, add a
+                * line at the top to scroll the bottom off. */
+               _vte_terminal_ring_remove (terminal, end);
+               _vte_terminal_ring_insert (terminal, start, TRUE);
+               /* Update the display. */
+               _vte_terminal_scroll_region(terminal, start, end - start + 1, 1);
+               _vte_invalidate_cells(terminal,
+                                     0, terminal->column_count,
+                                     start, 2);
+       } else {
+               /* Otherwise, just move the cursor up. */
+               screen->cursor_current.row--;
+       }
+       /* Adjust the scrollbars if necessary. */
+       _vte_terminal_adjust_adjustments(terminal);
+       /* We modified the display, so make a note of it. */
+       terminal->pvt->text_modified_flag = TRUE;
+}
+
+/* Cursor up, with scrolling. */
+static void
+vte_sequence_handler_SR (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_sr);
+}
+
+/* Set tab stop in the current column. */
+static void
+vte_sequence_handler_st (VteTerminal *terminal, GValueArray *params)
+{
+       if (terminal->pvt->tabstops == NULL) {
+               terminal->pvt->tabstops = g_hash_table_new(NULL, NULL);
+       }
+       _vte_terminal_set_tabstop(terminal,
+                                terminal->pvt->screen->cursor_current.col);
+}
+
+/* Tab. */
+static void
+vte_sequence_handler_ta (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       long old_len, newcol, col;
+
+       /* Calculate which column is the next tab stop. */
+       screen = terminal->pvt->screen;
+       newcol = col = screen->cursor_current.col;
+
+       g_assert (col >= 0);
+
+       if (terminal->pvt->tabstops != NULL) {
+               /* Find the next tabstop. */
+               for (newcol++; newcol < VTE_TAB_MAX; newcol++) {
+                       if (_vte_terminal_get_tabstop(terminal, newcol)) {
+                               break;
+                       }
+               }
+       }
+
+       /* If we have no tab stops or went past the end of the line, stop
+        * at the right-most column. */
+       if (newcol >= terminal->column_count) {
+               newcol = terminal->column_count - 1;
+       }
+
+       /* but make sure we don't move cursor back (bug #340631) */
+       if (col < newcol) {
+               VteRowData *rowdata = _vte_terminal_ensure_row (terminal);
+
+               /* Smart tab handling: bug 353610
+                *
+                * If we currently don't have any cells in the space this
+                * tab creates, we try to make the tab character copyable,
+                * by appending a single tab char with lots of fragment
+                * cells following it.
+                *
+                * Otherwise, just append empty cells that will show up
+                * as a space each.
+                */
+
+               old_len = _vte_row_data_length (rowdata);
+               _vte_row_data_fill (rowdata, &screen->fill_defaults, newcol);
+
+               /* Insert smart tab if there's nothing in the line after
+                * us.  Though, there may be empty cells (with non-default
+                * background color for example.
+                *
+                * Notable bugs here: 545924 and 597242 */
+               {
+                       glong i;
+                       gboolean found = FALSE;
+                       for (i = old_len; i > col; i--) {
+                               const VteCell *cell = _vte_row_data_get (rowdata, i - 1);
+                               if (cell->attr.fragment || cell->c != 0) {
+                                       found = TRUE;
+                                       break;
+                               }
+                       }
+                       /* Nothing found on the line after us, turn this into
+                        * a smart tab */
+                       if (!found) {
+                               VteCell *cell = _vte_row_data_get_writable (rowdata, col);
+                               VteCell tab = *cell;
+                               tab.attr.columns = newcol - col;
+                               tab.c = '\t';
+                               /* Check if it fits in columns */
+                               if (tab.attr.columns == newcol - col) {
+                                       /* Save tab char */
+                                       *cell = tab;
+                                       /* And adjust the fragments */
+                                       for (i = col + 1; i < newcol; i++) {
+                                               cell = _vte_row_data_get_writable (rowdata, i);
+                                               cell->c = '\t';
+                                               cell->attr.columns = 1;
+                                               cell->attr.fragment = 1;
+                                       }
+                               }
+                       }
+               }
+
+               _vte_invalidate_cells (terminal,
+                               screen->cursor_current.col,
+                               newcol - screen->cursor_current.col,
+                               screen->cursor_current.row, 1);
+               screen->cursor_current.col = newcol;
+       }
+}
+
+/* Clear tabs selectively. */
+static void
+vte_sequence_handler_tab_clear (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long param = 0;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+               }
+       }
+       if (param == 0) {
+               _vte_terminal_clear_tabstop(terminal,
+                                          terminal->pvt->screen->cursor_current.col);
+       } else
+       if (param == 3) {
+               if (terminal->pvt->tabstops != NULL) {
+                       g_hash_table_destroy(terminal->pvt->tabstops);
+                       terminal->pvt->tabstops = NULL;
+               }
+       }
+}
+
+/* Move to status line. */
+static void
+vte_sequence_handler_ts (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->status_line = TRUE;
+       terminal->pvt->screen->status_line_changed = TRUE;
+       g_string_truncate(terminal->pvt->screen->status_line_contents, 0);
+}
+
+/* Underline this character and move right. */
+static void
+vte_sequence_handler_uc (VteTerminal *terminal, GValueArray *params)
+{
+       VteCell *cell;
+       int column;
+       VteScreen *screen;
+
+       screen = terminal->pvt->screen;
+       column = screen->cursor_current.col;
+       cell = vte_terminal_find_charcell(terminal, column, screen->cursor_current.row);
+       while ((cell != NULL) && (cell->attr.fragment) && (column > 0)) {
+               column--;
+               cell = vte_terminal_find_charcell(terminal, column, screen->cursor_current.row);
+       }
+       if (cell != NULL) {
+               /* Set this character to be underlined. */
+               cell->attr.underline = 1;
+               /* Cause the character to be repainted. */
+               _vte_invalidate_cells(terminal,
+                                     column, cell->attr.columns,
+                                     screen->cursor_current.row, 1);
+               /* Move the cursor right. */
+               vte_sequence_handler_nd (terminal, params);
+       }
+
+       /* We've modified the display without changing the text.  Make a note
+        * of it. */
+       terminal->pvt->text_modified_flag = TRUE;
+}
+
+/* Underline end. */
+static void
+vte_sequence_handler_ue (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.underline = 0;
+}
+
+/* Cursor up, no scrolling. */
+static void
+vte_sequence_handler_up (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       long start, end;
+
+       screen = terminal->pvt->screen;
+
+       if (screen->scrolling_restricted) {
+               start = screen->insert_delta + screen->scrolling_region.start;
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               start = screen->insert_delta;
+               end = start + terminal->row_count - 1;
+       }
+
+       screen->cursor_current.row = MAX(screen->cursor_current.row - 1, start);
+}
+
+/* Cursor up N lines, no scrolling. */
+static void
+vte_sequence_handler_UP (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_up);
+}
+
+/* Underline start. */
+static void
+vte_sequence_handler_us (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->screen->defaults.attr.underline = 1;
+}
+
+/* Visible bell. */
+static void
+vte_sequence_handler_vb (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_terminal_visible_beep (terminal);
+}
+
+/* Cursor visible. */
+static void
+vte_sequence_handler_ve (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->cursor_visible = TRUE;
+}
+
+/* Vertical tab. */
+static void
+vte_sequence_handler_vertical_tab (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_index (terminal, params);
+}
+
+/* Cursor invisible. */
+static void
+vte_sequence_handler_vi (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->cursor_visible = FALSE;
+}
+
+/* Cursor standout. */
+static void
+vte_sequence_handler_vs (VteTerminal *terminal, GValueArray *params)
+{
+       terminal->pvt->cursor_visible = TRUE; /* FIXME: should be *more*
+                                                visible. */
+}
+
+/* Handle ANSI color setting and related stuffs (SGR). */
+static void
+vte_sequence_handler_character_attributes (VteTerminal *terminal, GValueArray *params)
+{
+       unsigned int i;
+       GValue *value;
+       long param;
+       /* The default parameter is zero. */
+       param = 0;
+       /* Step through each numeric parameter. */
+       for (i = 0; (params != NULL) && (i < params->n_values); i++) {
+               /* If this parameter isn't a number, skip it. */
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               param = g_value_get_long(value);
+               switch (param) {
+               case 0:
+                       _vte_terminal_set_default_attributes(terminal);
+                       break;
+               case 1:
+                       terminal->pvt->screen->defaults.attr.bold = 1;
+                       terminal->pvt->screen->defaults.attr.half = 0;
+                       break;
+               case 2:
+                       terminal->pvt->screen->defaults.attr.half = 1;
+                       terminal->pvt->screen->defaults.attr.bold = 0;
+                       break;
+               case 4:
+                       terminal->pvt->screen->defaults.attr.underline = 1;
+                       break;
+               case 5:
+                       terminal->pvt->screen->defaults.attr.blink = 1;
+                       break;
+               case 7:
+                       terminal->pvt->screen->defaults.attr.reverse = 1;
+                       break;
+               case 8:
+                       terminal->pvt->screen->defaults.attr.invisible = 1;
+                       break;
+               case 9:
+                       terminal->pvt->screen->defaults.attr.strikethrough = 1;
+                       break;
+               case 21: /* Error in old versions of linux console. */
+               case 22: /* ECMA 48. */
+                       terminal->pvt->screen->defaults.attr.bold = 0;
+                       terminal->pvt->screen->defaults.attr.half = 0;
+                       break;
+               case 24:
+                       terminal->pvt->screen->defaults.attr.underline = 0;
+                       break;
+               case 25:
+                       terminal->pvt->screen->defaults.attr.blink = 0;
+                       break;
+               case 27:
+                       terminal->pvt->screen->defaults.attr.reverse = 0;
+                       break;
+               case 28:
+                       terminal->pvt->screen->defaults.attr.invisible = 0;
+                       break;
+               case 29:
+                       terminal->pvt->screen->defaults.attr.strikethrough = 0;
+                       break;
+               case 30:
+               case 31:
+               case 32:
+               case 33:
+               case 34:
+               case 35:
+               case 36:
+               case 37:
+                       terminal->pvt->screen->defaults.attr.fore = param - 30;
+                       break;
+               case 38:
+               {
+                       /* The format looks like: ^[[38;5;COLORNUMBERm,
+                          so look for COLORNUMBER here. */
+                       if ((i + 2) < params->n_values){
+                               GValue *value1, *value2;
+                               long param1, param2;
+                               value1 = g_value_array_get_nth(params, i + 1);
+                               value2 = g_value_array_get_nth(params, i + 2);
+                               if (G_UNLIKELY (!(G_VALUE_HOLDS_LONG(value1) && G_VALUE_HOLDS_LONG(value2))))
+                                       break;
+                               param1 = g_value_get_long(value1);
+                               param2 = g_value_get_long(value2);
+                               if (G_LIKELY (param1 == 5 && param2 >= 0 && param2 < 256))
+                                       terminal->pvt->screen->defaults.attr.fore = param2;
+                               i += 2;
+                       }
+                       break;
+               }
+               case 39:
+                       /* default foreground */
+                       terminal->pvt->screen->defaults.attr.fore = VTE_DEF_FG;
+                       break;
+               case 40:
+               case 41:
+               case 42:
+               case 43:
+               case 44:
+               case 45:
+               case 46:
+               case 47:
+                       terminal->pvt->screen->defaults.attr.back = param - 40;
+                       break;
+               case 48:
+               {
+                       /* The format looks like: ^[[48;5;COLORNUMBERm,
+                          so look for COLORNUMBER here. */
+                       if ((i + 2) < params->n_values){
+                               GValue *value1, *value2;
+                               long param1, param2;
+                               value1 = g_value_array_get_nth(params, i + 1);
+                               value2 = g_value_array_get_nth(params, i + 2);
+                               if (G_UNLIKELY (!(G_VALUE_HOLDS_LONG(value1) && G_VALUE_HOLDS_LONG(value2))))
+                                       break;
+                               param1 = g_value_get_long(value1);
+                               param2 = g_value_get_long(value2);
+                               if (G_LIKELY (param1 == 5 && param2 >= 0 && param2 < 256))
+                                       terminal->pvt->screen->defaults.attr.back = param2;
+                               i += 2;
+                       }
+                       break;
+               }
+               case 49:
+                       /* default background */
+                       terminal->pvt->screen->defaults.attr.back = VTE_DEF_BG;
+                       break;
+               case 90:
+               case 91:
+               case 92:
+               case 93:
+               case 94:
+               case 95:
+               case 96:
+               case 97:
+                       terminal->pvt->screen->defaults.attr.fore = param - 90 + VTE_COLOR_BRIGHT_OFFSET;
+                       break;
+               case 100:
+               case 101:
+               case 102:
+               case 103:
+               case 104:
+               case 105:
+               case 106:
+               case 107:
+                       terminal->pvt->screen->defaults.attr.back = param - 100 + VTE_COLOR_BRIGHT_OFFSET;
+                       break;
+               }
+       }
+       /* If we had no parameters, default to the defaults. */
+       if (i == 0) {
+               _vte_terminal_set_default_attributes(terminal);
+       }
+       /* Save the new colors. */
+       terminal->pvt->screen->color_defaults.attr.fore =
+               terminal->pvt->screen->defaults.attr.fore;
+       terminal->pvt->screen->color_defaults.attr.back =
+               terminal->pvt->screen->defaults.attr.back;
+       terminal->pvt->screen->fill_defaults.attr.fore =
+               terminal->pvt->screen->defaults.attr.fore;
+       terminal->pvt->screen->fill_defaults.attr.back =
+               terminal->pvt->screen->defaults.attr.back;
+}
+
+/* Move the cursor to the given column, 1-based. */
+static void
+vte_sequence_handler_cursor_character_absolute (VteTerminal *terminal, GValueArray *params)
+{
+       VteScreen *screen;
+       GValue *value;
+       long val;
+
+       screen = terminal->pvt->screen;
+
+        val = 0;
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       val = CLAMP(g_value_get_long(value),
+                                   1, terminal->column_count) - 1;
+               }
+       }
+
+        screen->cursor_current.col = val;
+       _vte_terminal_cleanup_tab_fragments_at_cursor (terminal);
+}
+
+/* Move the cursor to the given position, 1-based. */
+static void
+vte_sequence_handler_cursor_position (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cm);
+}
+
+/* Request terminal attributes. */
+static void
+vte_sequence_handler_request_terminal_parameters (VteTerminal *terminal, GValueArray *params)
+{
+       vte_terminal_feed_child(terminal, "\e[?x", -1);
+}
+
+/* Request terminal attributes. */
+static void
+vte_sequence_handler_return_terminal_status (VteTerminal *terminal, GValueArray *params)
+{
+       vte_terminal_feed_child(terminal, "", 0);
+}
+
+/* Send primary device attributes. */
+static void
+vte_sequence_handler_send_primary_device_attributes (VteTerminal *terminal, GValueArray *params)
+{
+       /* Claim to be a VT220 with only national character set support. */
+       vte_terminal_feed_child(terminal, "\e[?62;9;c", -1);
+}
+
+/* Send terminal ID. */
+static void
+vte_sequence_handler_return_terminal_id (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_send_primary_device_attributes (terminal, params);
+}
+
+/* Send secondary device attributes. */
+static void
+vte_sequence_handler_send_secondary_device_attributes (VteTerminal *terminal, GValueArray *params)
+{
+       char **version;
+       char buf[128];
+       long ver = 0, i;
+       /* Claim to be a VT220, more or less.  The '>' in the response appears
+        * to be undocumented. */
+       version = g_strsplit(VERSION, ".", 0);
+       if (version != NULL) {
+               for (i = 0; version[i] != NULL; i++) {
+                       ver = ver * 100;
+                       ver += atol(version[i]);
+               }
+               g_strfreev(version);
+       }
+       g_snprintf(buf, sizeof (buf), _VTE_CAP_ESC "[>1;%ld;0c", ver);
+       vte_terminal_feed_child(terminal, buf, -1);
+}
+
+/* Set one or the other. */
+static void
+vte_sequence_handler_set_icon_title (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_set_title_internal(terminal, params, TRUE, FALSE);
+}
+
+static void
+vte_sequence_handler_set_window_title (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_set_title_internal(terminal, params, FALSE, TRUE);
+}
+
+/* Set both the window and icon titles to the same string. */
+static void
+vte_sequence_handler_set_icon_and_window_title (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_set_title_internal(terminal, params, TRUE, TRUE);
+}
+
+/* Restrict the scrolling region. */
+static void
+vte_sequence_handler_set_scrolling_region (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cs);
+}
+
+static void
+vte_sequence_handler_set_scrolling_region_from_start (VteTerminal *terminal, GValueArray *params)
+{
+       GValue value = {0};
+
+       g_value_init (&value, G_TYPE_LONG);
+       g_value_set_long (&value, 0); /* Out of range means start/end */
+
+       g_value_array_insert (params, 0, &value);
+
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cs);
+}
+
+static void
+vte_sequence_handler_set_scrolling_region_to_end (VteTerminal *terminal, GValueArray *params)
+{
+       GValue value = {0};
+
+       g_value_init (&value, G_TYPE_LONG);
+       g_value_set_long (&value, 0); /* Out of range means start/end */
+
+       g_value_array_insert (params, 1, &value);
+
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cs);
+}
+
+/* Set the application or normal keypad. */
+static void
+vte_sequence_handler_application_keypad (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                       "Entering application keypad mode.\n");
+       terminal->pvt->keypad_mode = VTE_KEYMODE_APPLICATION;
+}
+
+static void
+vte_sequence_handler_normal_keypad (VteTerminal *terminal, GValueArray *params)
+{
+       _vte_debug_print(VTE_DEBUG_KEYBOARD,
+                       "Leaving application keypad mode.\n");
+       terminal->pvt->keypad_mode = VTE_KEYMODE_NORMAL;
+}
+
+/* Move the cursor. */
+static void
+vte_sequence_handler_character_position_absolute (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_ch);
+}
+static void
+vte_sequence_handler_line_position_absolute (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_offset(terminal, params, -1, vte_sequence_handler_cv);
+}
+
+/* Set certain terminal attributes. */
+static void
+vte_sequence_handler_set_mode (VteTerminal *terminal, GValueArray *params)
+{
+       guint i;
+       long setting;
+       GValue *value;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_set_mode_internal(terminal, setting, TRUE);
+       }
+}
+
+/* Unset certain terminal attributes. */
+static void
+vte_sequence_handler_reset_mode (VteTerminal *terminal, GValueArray *params)
+{
+       guint i;
+       long setting;
+       GValue *value;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_set_mode_internal(terminal, setting, FALSE);
+       }
+}
+
+/* Set certain terminal attributes. */
+static void
+vte_sequence_handler_decset (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long setting;
+       guint i;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_decset_internal(terminal, setting, FALSE, FALSE, TRUE);
+       }
+}
+
+/* Unset certain terminal attributes. */
+static void
+vte_sequence_handler_decreset (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long setting;
+       guint i;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_decset_internal(terminal, setting, FALSE, FALSE, FALSE);
+       }
+}
+
+/* Erase a specified number of characters. */
+static void
+vte_sequence_handler_erase_characters (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_ec (terminal, params);
+}
+
+/* Erase certain lines in the display. */
+static void
+vte_sequence_handler_erase_in_display (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long param;
+       guint i;
+       /* The default parameter is 0. */
+       param = 0;
+       /* Pull out a parameter. */
+       for (i = 0; (params != NULL) && (i < params->n_values); i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               param = g_value_get_long(value);
+       }
+       /* Clear the right area. */
+       switch (param) {
+       case 0:
+               /* Clear below the current line. */
+               vte_sequence_handler_cd (terminal, NULL);
+               break;
+       case 1:
+               /* Clear above the current line. */
+               _vte_terminal_clear_above_current (terminal);
+               /* Clear everything to the left of the cursor, too. */
+               /* FIXME: vttest. */
+               vte_sequence_handler_cb (terminal, NULL);
+               break;
+       case 2:
+               /* Clear the entire screen. */
+               _vte_terminal_clear_screen (terminal);
+               break;
+       default:
+               break;
+       }
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Erase certain parts of the current line in the display. */
+static void
+vte_sequence_handler_erase_in_line (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long param;
+       guint i;
+       /* The default parameter is 0. */
+       param = 0;
+       /* Pull out a parameter. */
+       for (i = 0; (params != NULL) && (i < params->n_values); i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               param = g_value_get_long(value);
+       }
+       /* Clear the right area. */
+       switch (param) {
+       case 0:
+               /* Clear to end of the line. */
+               vte_sequence_handler_ce (terminal, NULL);
+               break;
+       case 1:
+               /* Clear to start of the line. */
+               vte_sequence_handler_cb (terminal, NULL);
+               break;
+       case 2:
+               /* Clear the entire line. */
+               _vte_terminal_clear_current_line (terminal);
+               break;
+       default:
+               break;
+       }
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Perform a full-bore reset. */
+static void
+vte_sequence_handler_full_reset (VteTerminal *terminal, GValueArray *params)
+{
+       vte_terminal_reset(terminal, TRUE, TRUE);
+}
+
+/* Insert a specified number of blank characters. */
+static void
+vte_sequence_handler_insert_blank_characters (VteTerminal *terminal, GValueArray *params)
+{
+       vte_sequence_handler_IC (terminal, params);
+}
+
+/* Insert a certain number of lines below the current cursor. */
+static void
+vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       VteScreen *screen;
+       long param, end, row;
+       int i;
+       screen = terminal->pvt->screen;
+       /* The default is one. */
+       param = 1;
+       /* Extract any parameters. */
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+               }
+       }
+       /* Find the region we're messing with. */
+       row = screen->cursor_current.row;
+       if (screen->scrolling_restricted) {
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               end = screen->insert_delta + terminal->row_count - 1;
+       }
+       /* Insert the new lines at the cursor. */
+       for (i = 0; i < param; i++) {
+               /* Clear a line off the end of the region and add one to the
+                * top of the region. */
+               _vte_terminal_ring_remove (terminal, end);
+               _vte_terminal_ring_insert (terminal, row, TRUE);
+       }
+       /* Update the display. */
+       _vte_terminal_scroll_region(terminal, row, end - row + 1, param);
+       /* Adjust the scrollbars if necessary. */
+       _vte_terminal_adjust_adjustments(terminal);
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_inserted_flag = TRUE;
+}
+
+/* Delete certain lines from the scrolling region. */
+static void
+vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       VteScreen *screen;
+       long param, end, row;
+       int i;
+
+       screen = terminal->pvt->screen;
+       /* The default is one. */
+       param = 1;
+       /* Extract any parameters. */
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+               }
+       }
+       /* Find the region we're messing with. */
+       row = screen->cursor_current.row;
+       if (screen->scrolling_restricted) {
+               end = screen->insert_delta + screen->scrolling_region.end;
+       } else {
+               end = screen->insert_delta + terminal->row_count - 1;
+       }
+       /* Clear them from below the current cursor. */
+       for (i = 0; i < param; i++) {
+               /* Insert a line at the end of the region and remove one from
+                * the top of the region. */
+               _vte_terminal_ring_remove (terminal, row);
+               _vte_terminal_ring_insert (terminal, end, TRUE);
+       }
+       /* Update the display. */
+       _vte_terminal_scroll_region(terminal, row, end - row + 1, -param);
+       /* Adjust the scrollbars if necessary. */
+       _vte_terminal_adjust_adjustments(terminal);
+       /* We've modified the display.  Make a note of it. */
+       terminal->pvt->text_deleted_flag = TRUE;
+}
+
+/* Set the terminal encoding. */
+static void
+vte_sequence_handler_local_charset (VteTerminal *terminal, GValueArray *params)
+{
+       G_CONST_RETURN char *locale_encoding;
+       g_get_charset(&locale_encoding);
+       vte_terminal_set_encoding(terminal, locale_encoding);
+}
+
+static void
+vte_sequence_handler_utf_8_charset (VteTerminal *terminal, GValueArray *params)
+{
+       vte_terminal_set_encoding(terminal, "UTF-8");
+}
+
+/* Device status reports. The possible reports are the cursor position and
+ * whether or not we're okay. */
+static void
+vte_sequence_handler_device_status_report (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       VteScreen *screen;
+       long param;
+       char buf[128];
+
+       screen = terminal->pvt->screen;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+                       switch (param) {
+                       case 5:
+                               /* Send a thumbs-up sequence. */
+                               vte_terminal_feed_child(terminal, _VTE_CAP_CSI "0n", -1);
+                               break;
+                       case 6:
+                               /* Send the cursor position. */
+                               g_snprintf(buf, sizeof(buf),
+                                          _VTE_CAP_CSI "%ld;%ldR",
+                                          screen->cursor_current.row + 1 -
+                                          screen->insert_delta,
+                                          screen->cursor_current.col + 1);
+                               vte_terminal_feed_child(terminal, buf, -1);
+                               break;
+                       default:
+                               break;
+                       }
+               }
+       }
+}
+
+/* DEC-style device status reports. */
+static void
+vte_sequence_handler_dec_device_status_report (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       VteScreen *screen;
+       long param;
+       char buf[128];
+
+       screen = terminal->pvt->screen;
+
+       if ((params != NULL) && (params->n_values > 0)) {
+               value = g_value_array_get_nth(params, 0);
+               if (G_VALUE_HOLDS_LONG(value)) {
+                       param = g_value_get_long(value);
+                       switch (param) {
+                       case 6:
+                               /* Send the cursor position. */
+                               g_snprintf(buf, sizeof(buf),
+                                          _VTE_CAP_CSI "?%ld;%ldR",
+                                          screen->cursor_current.row + 1 -
+                                          screen->insert_delta,
+                                          screen->cursor_current.col + 1);
+                               vte_terminal_feed_child(terminal, buf, -1);
+                               break;
+                       case 15:
+                               /* Send printer status -- 10 = ready,
+                                * 11 = not ready.  We don't print. */
+                               vte_terminal_feed_child(terminal, _VTE_CAP_CSI "?11n", -1);
+                               break;
+                       case 25:
+                               /* Send UDK status -- 20 = locked,
+                                * 21 = not locked.  I don't even know what
+                                * that means, but punt anyway. */
+                               vte_terminal_feed_child(terminal, _VTE_CAP_CSI "?20n", -1);
+                               break;
+                       case 26:
+                               /* Send keyboard status.  50 = no locator. */
+                               vte_terminal_feed_child(terminal, _VTE_CAP_CSI "?50n", -1);
+                               break;
+                       default:
+                               break;
+                       }
+               }
+       }
+}
+
+/* Restore a certain terminal attribute. */
+static void
+vte_sequence_handler_restore_mode (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long setting;
+       guint i;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_decset_internal(terminal, setting, TRUE, FALSE, FALSE);
+       }
+}
+
+/* Save a certain terminal attribute. */
+static void
+vte_sequence_handler_save_mode (VteTerminal *terminal, GValueArray *params)
+{
+       GValue *value;
+       long setting;
+       guint i;
+       if ((params == NULL) || (params->n_values == 0)) {
+               return;
+       }
+       for (i = 0; i < params->n_values; i++) {
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               setting = g_value_get_long(value);
+               vte_sequence_handler_decset_internal(terminal, setting, FALSE, TRUE, FALSE);
+       }
+}
+
+/* Perform a screen alignment test -- fill all visible cells with the
+ * letter "E". */
+static void
+vte_sequence_handler_screen_alignment_test (VteTerminal *terminal, GValueArray *params)
+{
+       long row;
+       VteRowData *rowdata;
+       VteScreen *screen;
+       VteCell cell;
+
+       screen = terminal->pvt->screen;
+
+       for (row = terminal->pvt->screen->insert_delta;
+            row < terminal->pvt->screen->insert_delta + terminal->row_count;
+            row++) {
+               /* Find this row. */
+               while (_vte_ring_next(screen->row_data) <= row)
+                       _vte_terminal_ring_append (terminal, FALSE);
+               _vte_terminal_adjust_adjustments(terminal);
+               rowdata = _vte_ring_index_writable (screen->row_data, row);
+               g_assert(rowdata != NULL);
+               /* Clear this row. */
+               _vte_row_data_shrink (rowdata, 0);
+
+               _vte_terminal_emit_text_deleted(terminal);
+               /* Fill this row. */
+               cell.c = 'E';
+               cell.attr = basic_cell.cell.attr;
+               cell.attr.columns = 1;
+               _vte_row_data_fill (rowdata, &cell, terminal->column_count);
+               _vte_terminal_emit_text_inserted(terminal);
+       }
+       _vte_invalidate_all(terminal);
+
+       /* We modified the display, so make a note of it for completeness. */
+       terminal->pvt->text_modified_flag = TRUE;
+}
+
+/* Perform a soft reset. */
+static void
+vte_sequence_handler_soft_reset (VteTerminal *terminal, GValueArray *params)
+{
+       vte_terminal_reset(terminal, FALSE, FALSE);
+}
+
+/* Window manipulation control sequences.  Most of these are considered
+ * bad ideas, but they're implemented as signals which the application
+ * is free to ignore, so they're harmless. */
+static void
+vte_sequence_handler_window_manipulation (VteTerminal *terminal, GValueArray *params)
+{
+       GdkScreen *gscreen;
+       VteScreen *screen;
+       GValue *value;
+       GtkWidget *widget;
+       char buf[128];
+       long param, arg1, arg2;
+       gint width, height;
+       guint i;
+       GtkAllocation allocation;
+
+       widget = &terminal->widget;
+       screen = terminal->pvt->screen;
+
+       for (i = 0; ((params != NULL) && (i < params->n_values)); i++) {
+               arg1 = arg2 = -1;
+               if (i + 1 < params->n_values) {
+                       value = g_value_array_get_nth(params, i + 1);
+                       if (G_VALUE_HOLDS_LONG(value)) {
+                               arg1 = g_value_get_long(value);
+                       }
+               }
+               if (i + 2 < params->n_values) {
+                       value = g_value_array_get_nth(params, i + 2);
+                       if (G_VALUE_HOLDS_LONG(value)) {
+                               arg2 = g_value_get_long(value);
+                       }
+               }
+               value = g_value_array_get_nth(params, i);
+               if (!G_VALUE_HOLDS_LONG(value)) {
+                       continue;
+               }
+               param = g_value_get_long(value);
+               switch (param) {
+               case 1:
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Deiconifying window.\n");
+                       vte_terminal_emit_deiconify_window(terminal);
+                       break;
+               case 2:
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Iconifying window.\n");
+                       vte_terminal_emit_iconify_window(terminal);
+                       break;
+               case 3:
+                       if ((arg1 != -1) && (arg2 != -2)) {
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Moving window to "
+                                               "%ld,%ld.\n", arg1, arg2);
+                               vte_terminal_emit_move_window(terminal,
+                                                             arg1, arg2);
+                               i += 2;
+                       }
+                       break;
+               case 4:
+                       if ((arg1 != -1) && (arg2 != -1)) {
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Resizing window "
+                                               "(to %ldx%ld pixels).\n",
+                                               arg2, arg1);
+                               vte_terminal_emit_resize_window(terminal,
+                                                               arg2 +
+                                                               terminal->pvt->inner_border.left +
+                                                               terminal->pvt->inner_border.right,
+                                                               arg1 +
+                                                               terminal->pvt->inner_border.top +
+                                                               terminal->pvt->inner_border.bottom);
+                               i += 2;
+                       }
+                       break;
+               case 5:
+                       _vte_debug_print(VTE_DEBUG_PARSE, "Raising window.\n");
+                       vte_terminal_emit_raise_window(terminal);
+                       break;
+               case 6:
+                       _vte_debug_print(VTE_DEBUG_PARSE, "Lowering window.\n");
+                       vte_terminal_emit_lower_window(terminal);
+                       break;
+               case 7:
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Refreshing window.\n");
+                       _vte_invalidate_all(terminal);
+                       vte_terminal_emit_refresh_window(terminal);
+                       break;
+               case 8:
+                       if ((arg1 != -1) && (arg2 != -1)) {
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Resizing window "
+                                               "(to %ld columns, %ld rows).\n",
+                                               arg2, arg1);
+                               vte_terminal_emit_resize_window(terminal,
+                                                               arg2 * terminal->char_width +
+                                                               terminal->pvt->inner_border.left +
+                                                               terminal->pvt->inner_border.right,
+                                                               arg1 * terminal->char_height +
+                                                               terminal->pvt->inner_border.top +
+                                                               terminal->pvt->inner_border.bottom);
+                               i += 2;
+                       }
+                       break;
+               case 9:
+                       switch (arg1) {
+                       case 0:
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Restoring window.\n");
+                               vte_terminal_emit_restore_window(terminal);
+                               break;
+                       case 1:
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Maximizing window.\n");
+                               vte_terminal_emit_maximize_window(terminal);
+                               break;
+                       default:
+                               break;
+                       }
+                       i++;
+                       break;
+               case 11:
+                       /* If we're unmapped, then we're iconified. */
+                       g_snprintf(buf, sizeof(buf),
+                                  _VTE_CAP_CSI "%dt",
+                                  1 + !gtk_widget_get_mapped(widget));
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting window state %s.\n",
+                                       gtk_widget_get_mapped(widget) ?
+                                       "non-iconified" : "iconified");
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 13:
+                       /* Send window location, in pixels. */
+                       gdk_window_get_origin(gtk_widget_get_window(widget),
+                                             &width, &height);
+                       g_snprintf(buf, sizeof(buf),
+                                  _VTE_CAP_CSI "3;%d;%dt",
+                                  width + terminal->pvt->inner_border.left,
+                                   height + terminal->pvt->inner_border.top);
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting window location"
+                                       "(%d++,%d++).\n",
+                                       width, height);
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 14:
+                       /* Send window size, in pixels. */
+                       gtk_widget_get_allocation(widget, &allocation);
+                       g_snprintf(buf, sizeof(buf),
+                                  _VTE_CAP_CSI "4;%d;%dt",
+                                  allocation.height -
+                                       (terminal->pvt->inner_border.top +
+                                        terminal->pvt->inner_border.bottom),
+                                  allocation.width -
+                                       (terminal->pvt->inner_border.left +
+                                        terminal->pvt->inner_border.right));
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting window size "
+                                       "(%dx%dn",
+                                       width - (terminal->pvt->inner_border.left + 
terminal->pvt->inner_border.right),
+                                       height - (terminal->pvt->inner_border.top + 
terminal->pvt->inner_border.bottom));
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 18:
+                       /* Send widget size, in cells. */
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting widget size.\n");
+                       g_snprintf(buf, sizeof(buf),
+                                  _VTE_CAP_CSI "8;%ld;%ldt",
+                                  terminal->row_count,
+                                  terminal->column_count);
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 19:
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting screen size.\n");
+                       gscreen = gtk_widget_get_screen(widget);
+                       height = gdk_screen_get_height(gscreen);
+                       width = gdk_screen_get_width(gscreen);
+                       g_snprintf(buf, sizeof(buf),
+                                  _VTE_CAP_CSI "9;%ld;%ldt",
+                                  height / terminal->char_height,
+                                  width / terminal->char_width);
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 20:
+                       /* Report a static icon title, since the real
+                          icon title should NEVER be reported, as it
+                          creates a security vulnerability.  See
+                          http://marc.info/?l=bugtraq&m=104612710031920&w=2
+                          and CVE-2003-0070. */
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                               "Reporting fake icon title.\n");
+                       /* never use terminal->icon_title here! */
+                       g_snprintf (buf, sizeof (buf),
+                                   _VTE_CAP_OSC "LTerminal" _VTE_CAP_ST);
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               case 21:
+                       /* Report a static window title, since the real
+                          window title should NEVER be reported, as it
+                          creates a security vulnerability.  See
+                          http://marc.info/?l=bugtraq&m=104612710031920&w=2
+                          and CVE-2003-0070. */
+                       _vte_debug_print(VTE_DEBUG_PARSE,
+                                       "Reporting fake window title.\n");
+                       /* never use terminal->window_title here! */
+                       g_snprintf (buf, sizeof (buf),
+                                   _VTE_CAP_OSC "lTerminal" _VTE_CAP_ST);
+                       vte_terminal_feed_child(terminal, buf, -1);
+                       break;
+               default:
+                       if (param >= 24) {
+                               _vte_debug_print(VTE_DEBUG_PARSE,
+                                               "Resizing to %ld rows.\n",
+                                               param);
+                               /* Resize to the specified number of
+                                * rows. */
+                               vte_terminal_emit_resize_window(terminal,
+                                                               terminal->column_count * terminal->char_width 
+
+                                                                terminal->pvt->inner_border.left +
+                                                                terminal->pvt->inner_border.right,
+                                                               param * terminal->char_height +
+                                                               terminal->pvt->inner_border.top +
+                                                                terminal->pvt->inner_border.bottom);
+                       }
+                       break;
+               }
+       }
+}
+
+/* Change the color of the cursor */
+static void
+vte_sequence_handler_change_cursor_color (VteTerminal *terminal, GValueArray *params)
+{
+       gchar *name = NULL;
+       GValue *value;
+       GdkColor color;
+
+       if (params != NULL && params->n_values > 0) {
+               value = g_value_array_get_nth (params, 0);
+
+               if (G_VALUE_HOLDS_STRING (value))
+                       name = g_value_dup_string (value);
+               else if (G_VALUE_HOLDS_POINTER (value))
+                       name = vte_ucs4_to_utf8 (terminal, g_value_get_pointer (value));
+
+               if (! name)
+                       return;
+
+               if (vte_parse_color (name, &color))
+                       vte_terminal_set_color_cursor (terminal, &color);
+               else if (strcmp (name, "?") == 0) {
+                       gchar buf[128];
+                       g_snprintf (buf, sizeof (buf),
+                                   _VTE_CAP_OSC "12;rgb:%04x/%04x/%04x" BEL,
+                                   terminal->pvt->palette[VTE_CUR_BG].red,
+                                   terminal->pvt->palette[VTE_CUR_BG].green,
+                                   terminal->pvt->palette[VTE_CUR_BG].blue);
+                       vte_terminal_feed_child (terminal, buf, -1);
+               }
+
+               g_free (name);
+       }
+}
+
+
+/* Lookup tables */
+
+#define VTE_SEQUENCE_HANDLER(name) name
+
+static const struct vteseq_2_struct *
+vteseq_2_lookup (register const char *str, register unsigned int len);
+#include"vteseq-2.c"
+
+static const struct vteseq_n_struct *
+vteseq_n_lookup (register const char *str, register unsigned int len);
+#include"vteseq-n.c"
+
+#undef VTE_SEQUENCE_HANDLER
+
+static VteTerminalSequenceHandler
+_vte_sequence_get_handler (const char *name)
+{
+       int len = strlen (name);
+
+       if (G_UNLIKELY (len < 2)) {
+               return NULL;
+       } else if (len == 2) {
+               const struct vteseq_2_struct *seqhandler;
+               seqhandler = vteseq_2_lookup (name, 2);
+               return seqhandler ? seqhandler->handler : NULL;
+       } else {
+               const struct vteseq_n_struct *seqhandler;
+               seqhandler = vteseq_n_lookup (name, len);
+               return seqhandler ? seqhandler->handler : NULL;
+       }
+}
+
+
+/* Handle a terminal control sequence and its parameters. */
+void
+_vte_terminal_handle_sequence(VteTerminal *terminal,
+                             const char *match_s,
+                             GQuark match G_GNUC_UNUSED,
+                             GValueArray *params)
+{
+       VteTerminalSequenceHandler handler;
+
+       _VTE_DEBUG_IF(VTE_DEBUG_PARSE)
+               display_control_sequence(match_s, params);
+
+       /* Find the handler for this control sequence. */
+       handler = _vte_sequence_get_handler (match_s);
+
+       if (handler != NULL) {
+               /* Let the handler handle it. */
+               handler (terminal, params);
+       } else {
+               _vte_debug_print (VTE_DEBUG_MISC,
+                                 "No handler for control sequence `%s' defined.\n",
+                                 match_s);
+       }
+}
diff --git a/vte/src/vtestream-base.h b/vte/src/vtestream-base.h
new file mode 100644
index 0000000..913f9c9
--- /dev/null
+++ b/vte/src/vtestream-base.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#include <glib-object.h>
+#include <gio/gio.h>
+
+/*
+ * VteStream: Abstract base stream class
+ */
+
+struct _VteStream {
+       GObject parent;
+};
+
+typedef struct _VteStreamClass {
+       GObjectClass parent_class;
+
+       void (*reset) (VteStream *stream, gsize offset);
+       gsize (*append) (VteStream *stream, const char *data, gsize len);
+       gboolean (*read) (VteStream *stream, gsize offset, char *data, gsize len);
+       void (*truncate) (VteStream *stream, gsize offset);
+       void (*new_page) (VteStream *stream);
+       gsize (*head) (VteStream *stream);
+       gboolean (*write_contents) (VteStream *stream, GOutputStream *output,
+                                   gsize start_offset,
+                                   GCancellable *cancellable, GError **error);
+} VteStreamClass;
+
+static GType _vte_stream_get_type (void);
+#define VTE_TYPE_STREAM _vte_stream_get_type ()
+#define VTE_STREAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VTE_TYPE_STREAM, VteStreamClass))
+
+G_DEFINE_ABSTRACT_TYPE (VteStream, _vte_stream, G_TYPE_OBJECT)
+
+static void
+_vte_stream_class_init (VteStreamClass *klass G_GNUC_UNUSED)
+{
+}
+
+static void
+_vte_stream_init (VteStream *stream G_GNUC_UNUSED)
+{
+}
+
+void
+_vte_stream_reset (VteStream *stream, gsize offset)
+{
+       VTE_STREAM_GET_CLASS (stream)->reset (stream, offset);
+}
+
+gsize
+_vte_stream_append (VteStream *stream, const char *data, gsize len)
+{
+       return VTE_STREAM_GET_CLASS (stream)->append (stream, data, len);
+}
+
+gboolean
+_vte_stream_read (VteStream *stream, gsize offset, char *data, gsize len)
+{
+       return VTE_STREAM_GET_CLASS (stream)->read (stream, offset, data, len);
+}
+
+void
+_vte_stream_truncate (VteStream *stream, gsize offset)
+{
+       VTE_STREAM_GET_CLASS (stream)->truncate (stream, offset);
+}
+
+void
+_vte_stream_new_page (VteStream *stream)
+{
+       VTE_STREAM_GET_CLASS (stream)->new_page (stream);
+}
+
+gsize
+_vte_stream_head (VteStream *stream)
+{
+       return VTE_STREAM_GET_CLASS (stream)->head (stream);
+}
+
+gboolean
+_vte_stream_write_contents (VteStream *stream, GOutputStream *output,
+                           gsize start_offset,
+                           GCancellable *cancellable, GError **error)
+{
+       return VTE_STREAM_GET_CLASS (stream)->write_contents (stream, output,
+                                                             start_offset,
+                                                             cancellable, error);
+}
diff --git a/vte/src/vtestream-file.h b/vte/src/vtestream-file.h
new file mode 100644
index 0000000..bc92d6f
--- /dev/null
+++ b/vte/src/vtestream-file.h
@@ -0,0 +1,296 @@
+/*
+ * Copyright (C) 2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include <gio/gunixinputstream.h>
+
+static gsize
+_xread (int fd, char *data, gsize len)
+{
+       gsize ret, total = 0;
+
+       if (G_UNLIKELY (len && !fd))
+               return 0;
+
+       while (len) {
+               ret = read (fd, data, len);
+               if (G_UNLIKELY (ret == (gsize) -1)) {
+                       if (errno == EINTR)
+                               continue;
+                       else
+                               break;
+               }
+               if (G_UNLIKELY (ret == 0))
+                       break;
+               data += ret;
+               len -= ret;
+               total += ret;
+       }
+       return total;
+}
+
+static void
+_xwrite (int fd, const char *data, gsize len)
+{
+       gsize ret;
+
+       g_assert (fd || !len);
+
+       while (len) {
+               ret = write (fd, data, len);
+               if (G_UNLIKELY (ret == (gsize) -1)) {
+                       if (errno == EINTR)
+                               continue;
+                       else
+                               break;
+               }
+               if (G_UNLIKELY (ret == 0))
+                       break;
+               data += ret;
+               len -= ret;
+       }
+}
+
+static void
+_xtruncate (gint fd, gsize offset)
+{
+       int ret;
+
+       if (G_UNLIKELY (!fd))
+               return;
+
+       do {
+               ret = ftruncate (fd, offset);
+       } while (ret == -1 && errno == EINTR);
+}
+
+static gboolean
+_xwrite_contents (gint fd, GOutputStream *output, GCancellable *cancellable, GError **error)
+{
+       gboolean ret;
+       GInputStream *input;
+
+       if (G_UNLIKELY (!fd))
+               return TRUE;
+
+       input = g_unix_input_stream_new (fd, FALSE);
+       ret = -1 != g_output_stream_splice (output, input, G_OUTPUT_STREAM_SPLICE_NONE, cancellable, error);
+       g_object_unref (input);
+
+       return ret;
+}
+
+
+/*
+ * VteFileStream: A POSIX file-based stream
+ */
+
+typedef struct _VteFileStream {
+       VteStream parent;
+
+       /* The first fd/offset is for the write head, second is for last page */
+       gint fd[2];
+       gsize offset[2];
+} VteFileStream;
+
+typedef VteStreamClass VteFileStreamClass;
+
+static GType _vte_file_stream_get_type (void);
+#define VTE_TYPE_FILE_STREAM _vte_file_stream_get_type ()
+
+G_DEFINE_TYPE (VteFileStream, _vte_file_stream, VTE_TYPE_STREAM)
+
+static void
+_vte_file_stream_init (VteFileStream *stream G_GNUC_UNUSED)
+{
+}
+
+VteStream *
+_vte_file_stream_new (void)
+{
+       return (VteStream *) g_object_new (VTE_TYPE_FILE_STREAM, NULL);
+}
+
+static void
+_vte_file_stream_finalize (GObject *object)
+{
+       VteFileStream *stream = (VteFileStream *) object;
+
+       if (stream->fd[0]) close (stream->fd[0]);
+       if (stream->fd[1]) close (stream->fd[1]);
+
+       G_OBJECT_CLASS (_vte_file_stream_parent_class)->finalize(object);
+}
+
+static inline void
+_vte_file_stream_ensure_fd0 (VteFileStream *stream)
+{
+       gint fd;
+       gchar *file_name;
+       if (G_LIKELY (stream->fd[0]))
+               return;
+
+       fd = g_file_open_tmp ("vteXXXXXX", &file_name, NULL);
+       if (fd != -1) {
+               unlink (file_name);
+               g_free (file_name);
+       }
+
+       stream->fd[0] = dup (fd); /* we do the dup to make sure ->fd[0] is not 0 */
+
+       close (fd);
+}
+
+static void
+_vte_file_stream_reset (VteStream *astream, gsize offset)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+
+       if (stream->fd[0]) _xtruncate (stream->fd[0], 0);
+       if (stream->fd[1]) _xtruncate (stream->fd[1], 0);
+
+       stream->offset[0] = stream->offset[1] = offset;
+}
+
+static gsize
+_vte_file_stream_append (VteStream *astream, const char *data, gsize len)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+       gsize ret;
+
+       _vte_file_stream_ensure_fd0 (stream);
+
+       ret = lseek (stream->fd[0], 0, SEEK_END);
+       _xwrite (stream->fd[0], data, len);
+
+       return stream->offset[0] + ret;
+}
+
+static gboolean
+_vte_file_stream_read (VteStream *astream, gsize offset, char *data, gsize len)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+       gsize l;
+
+       if (G_UNLIKELY (offset < stream->offset[1]))
+               return FALSE;
+
+       if (offset < stream->offset[0]) {
+               lseek (stream->fd[1], offset - stream->offset[1], SEEK_SET);
+               l = _xread (stream->fd[1], data, len);
+               offset += l; data += l; len -= l; if (!len) return TRUE;
+       }
+
+       lseek (stream->fd[0], offset - stream->offset[0], SEEK_SET);
+       l = _xread (stream->fd[0], data, len);
+       offset += l; data += l; len -= l; if (!len) return TRUE;
+
+       return FALSE;
+}
+
+static void
+_vte_file_stream_swap_fds (VteFileStream *stream)
+{
+       gint fd;
+
+       fd = stream->fd[0]; stream->fd[0] = stream->fd[1]; stream->fd[1] = fd;
+}
+
+static void
+_vte_file_stream_truncate (VteStream *astream, gsize offset)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+
+       if (G_UNLIKELY (offset < stream->offset[1])) {
+               _xtruncate (stream->fd[1], 0);
+               stream->offset[1] = offset;
+       }
+
+       if (G_UNLIKELY (offset < stream->offset[0])) {
+               _xtruncate (stream->fd[0], 0);
+               stream->offset[0] = stream->offset[1];
+               _vte_file_stream_swap_fds (stream);
+       } else {
+               _xtruncate (stream->fd[0], offset - stream->offset[0]);
+       }
+}
+
+static void
+_vte_file_stream_new_page (VteStream *astream)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+
+       stream->offset[1] = stream->offset[0];
+       if (stream->fd[0])
+               stream->offset[0] += lseek (stream->fd[0], 0, SEEK_END);
+       _vte_file_stream_swap_fds (stream);
+       _xtruncate (stream->fd[0], 0);
+}
+
+static gsize
+_vte_file_stream_head (VteStream *astream)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+
+       if (stream->fd[0])
+               return stream->offset[0] + lseek (stream->fd[0], 0, SEEK_END);
+       else
+               return stream->offset[0];
+}
+
+static gboolean
+_vte_file_stream_write_contents (VteStream *astream, GOutputStream *output,
+                                gsize offset,
+                                GCancellable *cancellable, GError **error)
+{
+       VteFileStream *stream = (VteFileStream *) astream;
+
+       if (G_UNLIKELY (offset < stream->offset[1]))
+               return FALSE;
+
+       if (offset < stream->offset[0]) {
+               lseek (stream->fd[1], offset - stream->offset[1], SEEK_SET);
+               if (!_xwrite_contents (stream->fd[1], output, cancellable, error))
+                       return FALSE;
+               offset = stream->offset[0];
+       }
+
+       lseek (stream->fd[0], offset - stream->offset[0], SEEK_SET);
+       return _xwrite_contents (stream->fd[0], output, cancellable, error);
+}
+
+static void
+_vte_file_stream_class_init (VteFileStreamClass *klass)
+{
+       GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+       gobject_class->finalize = _vte_file_stream_finalize;
+
+       klass->reset = _vte_file_stream_reset;
+       klass->append = _vte_file_stream_append;
+       klass->read = _vte_file_stream_read;
+       klass->truncate = _vte_file_stream_truncate;
+       klass->new_page = _vte_file_stream_new_page;
+       klass->head = _vte_file_stream_head;
+       klass->write_contents = _vte_file_stream_write_contents;
+}
diff --git a/vte/src/vtestream.c b/vte/src/vtestream.c
new file mode 100644
index 0000000..ab90948
--- /dev/null
+++ b/vte/src/vtestream.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#include <config.h>
+
+#include "debug.h"
+#include "vtestream.h"
+
+
+/*
+ * In the future it may be worth replacing these with gio.  Not sure about
+ * the overhead though.
+ */
+
+#include "vtestream-base.h"
+#include "vtestream-file.h"
diff --git a/vte/src/vtestream.h b/vte/src/vtestream.h
new file mode 100644
index 0000000..27a2829
--- /dev/null
+++ b/vte/src/vtestream.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2009,2010 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#ifndef vtestream_h_included
+#define vtestream_h_included
+
+#include <glib-object.h>
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+typedef struct _VteStream VteStream;
+
+void _vte_stream_reset (VteStream *stream, gsize offset);
+gsize _vte_stream_append (VteStream *stream, const char *data, gsize len);
+gboolean _vte_stream_read (VteStream *stream, gsize offset, char *data, gsize len);
+void _vte_stream_truncate (VteStream *stream, gsize offset);
+void _vte_stream_new_page (VteStream *stream);
+gsize _vte_stream_head (VteStream *stream);
+gboolean _vte_stream_write_contents (VteStream *stream, GOutputStream *output,
+                                    gsize start_offset,
+                                    GCancellable *cancellable, GError **error);
+
+
+/* Various streams */
+
+VteStream *
+_vte_file_stream_new (void);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vtetc.c b/vte/src/vtetc.c
new file mode 100644
index 0000000..88e814c
--- /dev/null
+++ b/vte/src/vtetc.c
@@ -0,0 +1,611 @@
+/*
+ * Copyright © 2006 Ryan Lortie <desrt desrt ca>
+ * based on code © 2000-2002 Red Hat, Inc. and others.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <glib.h>
+
+#include "vtetc.h"
+
+/*
+ * --- a termcap file is represented by a simple tree ---
+ */
+typedef struct _vte_termcap
+{
+  GMappedFile *file;
+  GTree *tree;
+  const char *end;
+} VteTermcap;
+
+/* a special strcmp that treats any character in
+ * its third argument (plus '\0') as end of
+ * string.
+ *
+ *  we have to be a little bit careful, however.
+ *  note that '=' < 'A' < '|' and consider the
+ *  following three strings with "=|" given as
+ *  the 3rd argument:
+ *
+ *  foo=
+ *  fooA
+ *  foo|
+ *
+ *  if we just do the normal *a - *b thing when
+ *  the strings don't match then we will find
+ *
+ *      "foo=" < "fooA"
+ *
+ *  and
+ *
+ *      "foo|" > "fooA"
+ *
+ *  but of course,
+ *
+ *      "foo=" == "foo|"
+ *
+ *  which means that our ordering isn't proper
+ *  which may cause odd things to happen inside of
+ *  the tree.  for this reason, all of the
+ *  terminating characters are treated as '\0' for
+ *  purposes of deciding greater or less than.
+ *
+ *  note: if anything in this file should be
+ *        micro-optimised then it is probably
+ *        this function!
+ */
+static int
+_vte_termcap_strcmp (const char *a,
+                     const char *b,
+                     const char *enders)
+{
+  /* note: strchr on '\0' returns the
+   * end of the string (not NULL)
+   */
+
+  while (!strchr (enders, *a))
+  {
+    if (*a != *b)
+    {
+      /* we're in the loop so we know that *a is not a terminator.
+       * but maybe *b is?
+       */
+      if (strchr (enders, *b))
+        return *a - '\0';
+      else
+        /* b is not a terminator.  proceed normally. */
+        return *a - *b;
+    }
+    a++;
+    b++;
+  }
+
+  /* *a is a terminator for sure, but maybe *b is too. */
+  if (strchr (enders, *b))
+    /* b is too, so we have a match. */
+    return 0;
+
+  /* else, since *a is a terminator character and *b is not, *a is
+   * less than *b. */
+  return -1;
+}
+
+/*
+ * --- routines for searching the tree ---
+ */
+static const char *
+_vte_termcap_find_start (VteTermcap *termcap,
+                         const char *tname,
+                         const char *cap)
+{
+  const char *contents;
+  const char *start;
+  char *chain;
+
+  /* find the terminal */
+  contents = g_tree_lookup (termcap->tree, tname);
+
+  if (contents == NULL)
+    return NULL;
+
+  start = contents;
+  while (contents != termcap->end)
+  {
+    if (*contents == '\\' &&
+        contents + 1 != termcap->end &&
+        contents[1] == '\n')
+    {
+      /* we've hit \ at the end of a line.  skip. */
+      contents++;
+    }
+    else if (*contents == ':' || *contents == '\n')
+    {
+      if (!_vte_termcap_strcmp (start, cap, "=#:\n"))
+        return start;
+
+      start = contents + 1;
+      if (*contents == '\n')
+        break;
+    }
+
+    contents++;
+  }
+
+  /* else, try to find it in the term listed in our 'tc' entry.
+   * obviously, don't recurse when we're trying to find "tc"
+   * itself else we infinite loop.
+   */
+  if (!strcmp (cap, "tc"))
+    return NULL;
+
+  chain = _vte_termcap_find_string (termcap, tname, "tc");
+  if (chain[0])
+    start = _vte_termcap_find_start (termcap, chain, cap);
+  g_free (chain);
+
+  return start;
+}
+
+static int
+_vte_termcap_unescape_string(const char *string, char *result)
+{
+  int value = -1;
+  int length = 0;
+
+  while (TRUE)
+  {
+    /* Each time through the loop puts a value into 'value' if it
+     * wants to have it written into the string.  We do the write
+     * here because it is complicated (check for NULL result, etc)
+     *
+     * We finish and return the length whenb value is 0.
+     */
+    if (value >= 0)
+    {
+      if (result != NULL)
+        result[length] = value;
+      length++;
+
+      if (value == 0)
+        return length;
+
+      value = -1;
+    }
+
+    /* Now, decide what value should be for the next iteration.
+     * Here, "continue;" means "I've possibly set 'value' and I want
+     * to continue looking at the string starting at the next
+     * character pointed to by 'string'.
+     */
+    switch (*string++)
+    {
+      case '\n':
+      case '\0':
+      case ':':
+        value = 0;
+        continue;
+
+      case '\\':
+        switch (*string++)
+        {
+          case '\n':
+            while (*string == ' ' || *string == '\t')
+              string++;
+            continue;
+          case 'E':
+          case 'e':
+            value = 27;
+            continue;
+          case 'n':
+            value = 10;
+            continue;
+          case 'r':
+            value = 13;
+            continue;
+          case 't':
+            value = 8;
+            continue;
+          case 'b':
+            value = 9;
+            continue;
+          case 'f':
+            value = 12;
+            continue;
+          case '0':
+          case '1':
+            value = strtol(string - 1, (void *) &string, 8);
+            continue;
+          default:
+            /* invalid escape sequence.  write the \ and
+             * continue as if we never saw it...
+             */
+            value = '\\';
+            string--;
+            continue;
+        }
+
+      case '^':
+        if (*string >= 'A' && *string <= 'Z')
+        {
+          value = *string++ - '@';
+          break;
+        }
+
+        /* else, invalid control sequnce.  write the ^
+         * and continue as if we never saw it...
+         */
+
+      default:
+        /* else, the value is this character and the pointer has
+         * already been advanced to the next character. */
+        value = string[-1];
+    }
+  }
+}
+
+char *
+_vte_termcap_find_string_length (VteTermcap *termcap,
+                                 const char *tname,
+                                 const char *cap,
+                                 gssize *length)
+{
+  const char *result = _vte_termcap_find_start (termcap, tname, cap);
+  char *string;
+
+  if (result == NULL || result[2] != '=')
+  {
+    *length = 0;
+    return g_strdup ("");
+  }
+
+  result += 3;
+
+  *length = _vte_termcap_unescape_string (result, NULL);
+  string = g_malloc (*length);
+  _vte_termcap_unescape_string (result, string);
+
+  (*length)--;
+
+  return string;
+}
+
+char *
+_vte_termcap_find_string (VteTermcap *termcap,
+                          const char *tname,
+                          const char *cap)
+{
+  gssize length;
+
+  return _vte_termcap_find_string_length (termcap, tname, cap, &length);
+}
+
+long
+_vte_termcap_find_numeric (VteTermcap *termcap,
+                           const char *tname,
+                           const char *cap)
+{
+  const char *result = _vte_termcap_find_start (termcap, tname, cap);
+  long value;
+  char *end;
+
+  if (result == NULL || result[2] != '#')
+    return 0;
+
+  result += 3;
+
+  value = strtol (result, &end, 0);
+  if (*end != ':' && *end != '\0' && *end != '\n')
+    return 0;
+
+  return value;
+}
+
+gboolean
+_vte_termcap_find_boolean (VteTermcap *termcap,
+                           const char *tname,
+                           const char *cap)
+{
+  const char *result = _vte_termcap_find_start (termcap, tname, cap);
+
+  if (result == NULL)
+    return FALSE;
+
+  result += 2;
+
+  if (*result != ':' && *result != '\0' && *result != '\n')
+    return FALSE;
+
+  return TRUE;
+}
+
+/*
+ * --- routines for building the tree from the file ---
+ */
+static void
+_vte_termcap_parse_entry (GTree *termcap, const char **cnt, const char *end)
+{
+  gboolean seen_content;
+  const char *contents;
+  const char *start;
+  const char *caps;
+
+  contents = *cnt;
+
+  /* look for the start of the capabilities.
+   */
+  caps = contents;
+  while (caps != end)
+    if (*caps == ':')
+      break;
+    else
+      caps++;
+
+  if (*caps != ':')
+    return;
+
+  /* parse all of the aliases and insert one item into the termcap
+   * tree for each alias, pointing it to our caps.
+   */
+  seen_content = FALSE;
+  start = contents;
+  while (contents != end)
+  {
+    /* 
+    if (contents == end)
+    {
+       * we can't deal with end of file directly following a
+       * terminal name without any delimiters or even a newline.
+       * but honestly, what did they expect?  end of file without
+       * newline in the middle of a terminal alias with no
+       * capability definitions?  i'll doubt they notice that
+       * anything is missing.
+    }
+    */
+
+    if (*contents == '\\' && contents + 1 != end && contents[1] == '\n')
+    {
+      /* we've hit \ at the end of a line.  skip. */
+      contents++;
+    }
+    else if (*contents == '|' || *contents == ':' || *contents == '\n')
+    {
+      /* we wait to find the terminator before putting anything in
+       * the tree to ensure that _vte_termcap_strcmp will always
+       * terminate.  we also only add the alias if we've seen
+       * actual characters (not just spaces, continuations, etc)
+       */
+      if (seen_content)
+        g_tree_insert (termcap, (gpointer) start, (gpointer) caps);
+      start = contents + 1;
+      seen_content = FALSE;
+
+      /* we've either hit : and need to move on to capabilities or
+       * end of line and then there are no capabilities for this
+       * terminal.  any aliases have already been added to the tree
+       * so we can just move on.  if it was '\n' then the next while
+       * loop will exit immediately.
+       */
+      if (*contents == ':' || *contents == '\n')
+        break;
+    }
+    else if (*contents != ' ' && *contents != '\t')
+      seen_content = TRUE;
+
+    contents++;
+  }
+
+  /* we've processed all of the aliases.  now skip past the capabilities
+   * so that we're ready to go on the next entry. */
+  while (contents != end)
+  {
+    if (*contents == '\\' && contents + 1 != end && contents[1] == '\n')
+    {
+      /* we've hit \ at the end of a line.  skip. */
+      contents++;
+    }
+    else if (*contents == '\n')
+      break;
+
+    contents++;
+  }
+
+  *cnt = contents;
+}
+
+static GTree *
+_vte_termcap_parse_file (const char *contents, int length)
+{
+  const char *end = contents + length;
+  GTree *termcap;
+
+  /* this tree contains terminal alias names which in a proper
+   * termcap file will always be followed by : or |.  we
+   * include \n to be extra-permissive. \0 is here to allow
+   * us to notice the end of strings passed to us by vte.
+   */
+  termcap = g_tree_new_full ((GCompareDataFunc) _vte_termcap_strcmp,
+                             (gpointer)":|\n", NULL, NULL);
+
+  while (contents != end)
+  {
+    switch (*contents++)
+    {
+      /* comments */
+      case '#':
+        /* eat up to (but not) the \n */
+        while (contents != end && *contents != '\n')
+          contents++;
+
+      /* whitespace */
+      case ' ':
+      case '\t':
+      case '\n':
+        continue;
+
+      default:
+        /* bring back the character */
+        contents--;
+
+        /* parse one entry (ie: one line) */
+        _vte_termcap_parse_entry (termcap, &contents, end);
+    }
+  }
+
+  return termcap;
+}
+
+static VteTermcap *
+_vte_termcap_create (const char *filename)
+{
+  const char *contents;
+  VteTermcap *termcap;
+  GMappedFile *file;
+  int length;
+
+  file = g_mapped_file_new (filename, FALSE, NULL);
+  if (file == NULL)
+    return NULL;
+
+  contents = g_mapped_file_get_contents (file);
+  length = g_mapped_file_get_length (file);
+
+  termcap = g_slice_new (VteTermcap);
+  termcap->file = file;
+  termcap->tree = _vte_termcap_parse_file (contents, length);
+  termcap->end = contents + length;
+
+  return termcap;
+}
+
+static void
+_vte_termcap_destroy (VteTermcap *termcap)
+{
+  if (!termcap)
+    return;
+  g_tree_destroy (termcap->tree);
+  g_mapped_file_unref (termcap->file);
+  g_slice_free (VteTermcap, termcap);
+}
+
+/*
+ * --- cached interface to create/destroy termcap trees ---
+ */
+static GStaticMutex _vte_termcap_mutex = G_STATIC_MUTEX_INIT;
+static GCache *_vte_termcap_cache = NULL;
+
+VteTermcap *
+_vte_termcap_new(const char *filename)
+{
+  VteTermcap *result;
+
+  g_static_mutex_lock (&_vte_termcap_mutex);
+
+  if (_vte_termcap_cache == NULL)
+    _vte_termcap_cache = g_cache_new((GCacheNewFunc) _vte_termcap_create,
+                                     (GCacheDestroyFunc) _vte_termcap_destroy,
+                                     (GCacheDupFunc) g_strdup,
+                                     (GCacheDestroyFunc) g_free,
+                                     g_str_hash, g_direct_hash, g_str_equal);
+
+  result = g_cache_insert (_vte_termcap_cache, (gpointer) filename);
+
+  g_static_mutex_unlock (&_vte_termcap_mutex);
+
+  return result;
+}
+
+void
+_vte_termcap_free (VteTermcap *termcap)
+{
+  g_static_mutex_lock (&_vte_termcap_mutex);
+  g_cache_remove (_vte_termcap_cache, termcap);
+  g_static_mutex_unlock (&_vte_termcap_mutex);
+}
+
+#ifdef TERMCAP_MAIN
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+  VteTermcap *tc;
+  char *str;
+  gssize len;
+  int i;
+
+  if (argc < 4)
+  {
+    g_printerr("vtetc /path/to/termcap termname attrs...\n"
+                     "  where attrs are\n"
+                     "    :xx for boolean\n"
+                     "    =xx for string\n"
+                     "    +xx for string displayed in hex\n"
+                     "    #xx for numeric\n");
+    return 1;
+  }
+
+  tc = _vte_termcap_new (argv[1]);
+
+  if (tc == NULL)
+  {
+    perror ("open");
+    return 1;
+  }
+
+  for (i = 3; i < argc; i++)
+  {
+    printf ("%s -> ", argv[i]);
+
+    switch (argv[i][0])
+    {
+      case ':':
+        printf ("%s\n", _vte_termcap_find_boolean (tc, argv[2], argv[i] + 1)?
+                        "true" : "false");
+        break;
+
+      case '=':
+      case '+':
+        str = _vte_termcap_find_string_length (tc, argv[2], argv[i] + 1, &len);
+
+        if (argv[i][0] == '=')
+          printf ("'%s' (%d)\n", str, (int)len);
+        else
+        {
+          int i;
+
+          for (i = 0; str[i]; i++)
+            printf ("%02x", str[i]);
+          printf (" (%d) \n", (int)len);
+        }
+        g_free (str);
+        break;
+
+      case '#':
+        printf ("%ld\n", _vte_termcap_find_numeric (tc, argv[2], argv[i] + 1));
+        break;
+
+      default:
+        g_printerr("unrecognised type '%c'\n", argv[i][0]);
+    }
+  }
+
+  _vte_termcap_free(tc);
+
+  return 0;
+}
+#endif
diff --git a/vte/src/vtetc.h b/vte/src/vtetc.h
new file mode 100644
index 0000000..d1bab8d
--- /dev/null
+++ b/vte/src/vtetc.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2000-2002 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_termcap_h_included
+#define vte_termcap_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+struct _vte_termcap;
+
+/* Create a new termcap structure. */
+struct _vte_termcap *_vte_termcap_new(const char *filename);
+
+/* Free a termcap structure. */
+void _vte_termcap_free(struct _vte_termcap *termcap);
+
+/* Read a boolean capability for a given terminal. */
+gboolean _vte_termcap_find_boolean(struct _vte_termcap *termcap,
+                                  const char *tname, const char *cap);
+
+/* Read a numeric capability for a given terminal. */
+long _vte_termcap_find_numeric(struct _vte_termcap *termcap, const char *tname,
+                              const char *cap);
+
+/* Read a string capability for a given terminal.  The returned string should
+ * be freed with g_free(). */
+char *_vte_termcap_find_string(struct _vte_termcap *termcap, const char *tname,
+                              const char *cap);
+
+/* Read a string capability for a given terminal, and return the length of
+ * the result in addition to the result itself.  The returned string should
+ * be freed with g_free(). */
+char *_vte_termcap_find_string_length(struct _vte_termcap *termcap,
+                                     const char *tname,
+                                     const char *cap, gssize *length);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vtetree.c b/vte/src/vtetree.c
new file mode 100644
index 0000000..c2b8054
--- /dev/null
+++ b/vte/src/vtetree.c
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2004 Benjamin Otte <otte gnome org>
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#include "vtetree.h"
+
+VteTree *
+_vte_tree_new(GCompareFunc key_compare_func)
+{
+  VteTree *tree = g_slice_new0 (VteTree);
+  tree->tree = g_tree_new (key_compare_func);
+  return tree;
+}
+
+void 
+_vte_tree_destroy(VteTree *tree)
+{
+  g_tree_destroy (tree->tree);
+  g_slice_free (VteTree, tree);
+}
+
+void 
+_vte_tree_insert(VteTree *tree, gpointer key, gpointer value)
+{
+  guint index = GPOINTER_TO_UINT (key);
+  
+  if (index < VTE_TREE_ARRAY_SIZE) {
+    tree->array[index] = value;
+    return;
+  }
+  g_tree_insert (tree->tree, key, value);
+}
+
+gpointer
+_vte_tree_lookup(VteTree *tree, gconstpointer key)
+{
+  const guint index = GPOINTER_TO_UINT (key);
+  
+  if (index < VTE_TREE_ARRAY_SIZE)
+    return tree->array[index];
+
+  return g_tree_lookup (tree->tree, key);
+}
+
diff --git a/vte/src/vtetree.h b/vte/src/vtetree.h
new file mode 100644
index 0000000..6c78143
--- /dev/null
+++ b/vte/src/vtetree.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2004 Benjamin Otte <otte gnome org>
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* The interfaces in this file are subject to change at any time. */
+
+#ifndef vte_tree_h_included
+#define vte_tree_h_included
+
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* This is an optimiziation for GTrees we use with unicode characters. Since
+ * most characters are in the range [0-128], we store that range in an array
+ * for faster access.
+ * We match the API for GTree here.
+ */
+#define VTE_TREE_ARRAY_SIZE (128)
+
+typedef struct _VteTree VteTree;
+struct _VteTree {
+  GTree *tree;
+  gpointer array[VTE_TREE_ARRAY_SIZE];
+};
+
+VteTree *_vte_tree_new(GCompareFunc key_compare_func);
+void _vte_tree_destroy(VteTree *tree);
+void _vte_tree_insert(VteTree *tree, gpointer key, gpointer value);
+gpointer _vte_tree_lookup(VteTree *tree, gconstpointer key);
+/* extend as needed */
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vtetypebuiltins.c b/vte/src/vtetypebuiltins.c
new file mode 100644
index 0000000..4f12d4a
--- /dev/null
+++ b/vte/src/vtetypebuiltins.c
@@ -0,0 +1,161 @@
+
+/* Generated data (by glib-mkenums) */
+
+#include "vte.h"
+
+/* enumerations from "vte.h" */
+GType
+vte_terminal_erase_binding_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_ERASE_AUTO, "VTE_ERASE_AUTO", "auto" },
+      { VTE_ERASE_ASCII_BACKSPACE, "VTE_ERASE_ASCII_BACKSPACE", "ascii-backspace" },
+      { VTE_ERASE_ASCII_DELETE, "VTE_ERASE_ASCII_DELETE", "ascii-delete" },
+      { VTE_ERASE_DELETE_SEQUENCE, "VTE_ERASE_DELETE_SEQUENCE", "delete-sequence" },
+      { VTE_ERASE_TTY, "VTE_ERASE_TTY", "tty" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VteTerminalEraseBinding"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+GType
+vte_terminal_cursor_blink_mode_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_CURSOR_BLINK_SYSTEM, "VTE_CURSOR_BLINK_SYSTEM", "system" },
+      { VTE_CURSOR_BLINK_ON, "VTE_CURSOR_BLINK_ON", "on" },
+      { VTE_CURSOR_BLINK_OFF, "VTE_CURSOR_BLINK_OFF", "off" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VteTerminalCursorBlinkMode"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+GType
+vte_terminal_cursor_shape_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_CURSOR_SHAPE_BLOCK, "VTE_CURSOR_SHAPE_BLOCK", "block" },
+      { VTE_CURSOR_SHAPE_IBEAM, "VTE_CURSOR_SHAPE_IBEAM", "ibeam" },
+      { VTE_CURSOR_SHAPE_UNDERLINE, "VTE_CURSOR_SHAPE_UNDERLINE", "underline" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VteTerminalCursorShape"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+GType
+vte_terminal_write_flags_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_TERMINAL_WRITE_DEFAULT, "VTE_TERMINAL_WRITE_DEFAULT", "default" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VteTerminalWriteFlags"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+/* enumerations from "vtepty.h" */
+GType
+vte_pty_flags_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GFlagsValue values[] = {
+      { VTE_PTY_NO_LASTLOG, "VTE_PTY_NO_LASTLOG", "no-lastlog" },
+      { VTE_PTY_NO_UTMP, "VTE_PTY_NO_UTMP", "no-utmp" },
+      { VTE_PTY_NO_WTMP, "VTE_PTY_NO_WTMP", "no-wtmp" },
+      { VTE_PTY_NO_HELPER, "VTE_PTY_NO_HELPER", "no-helper" },
+      { VTE_PTY_NO_FALLBACK, "VTE_PTY_NO_FALLBACK", "no-fallback" },
+      { VTE_PTY_DEFAULT, "VTE_PTY_DEFAULT", "default" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_flags_register_static (g_intern_static_string ("VtePtyFlags"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+GType
+vte_pty_error_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_PTY_ERROR_PTY_HELPER_FAILED, "VTE_PTY_ERROR_PTY_HELPER_FAILED", "pty-helper-failed" },
+      { VTE_PTY_ERROR_PTY98_FAILED, "VTE_PTY_ERROR_PTY98_FAILED", "pty98-failed" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VtePtyError"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+/* enumerations from "vtedeprecated.h" */
+GType
+vte_terminal_anti_alias_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const GEnumValue values[] = {
+      { VTE_ANTI_ALIAS_USE_DEFAULT, "VTE_ANTI_ALIAS_USE_DEFAULT", "use-default" },
+      { VTE_ANTI_ALIAS_FORCE_ENABLE, "VTE_ANTI_ALIAS_FORCE_ENABLE", "force-enable" },
+      { VTE_ANTI_ALIAS_FORCE_DISABLE, "VTE_ANTI_ALIAS_FORCE_DISABLE", "force-disable" },
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_enum_register_static (g_intern_static_string ("VteTerminalAntiAlias"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+
+
+/* Generated data ends here */
+
diff --git a/vte/src/vtetypebuiltins.c.template b/vte/src/vtetypebuiltins.c.template
new file mode 100644
index 0000000..0a6c5b2
--- /dev/null
+++ b/vte/src/vtetypebuiltins.c.template
@@ -0,0 +1,40 @@
+/*** BEGIN file-header ***/
+#include "vte.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+  static volatile gsize g_define_type_id__volatile = 0;
+ 
+  if (g_once_init_enter (&g_define_type_id__volatile)) {
+    static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+      { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+      { 0, NULL, NULL }
+    };
+    GType g_define_type_id = \
+       g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+      
+    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+  }
+    
+  return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+
+/*** END file-tail ***/
diff --git a/vte/src/vtetypebuiltins.h b/vte/src/vtetypebuiltins.h
new file mode 100644
index 0000000..2b9a0c5
--- /dev/null
+++ b/vte/src/vtetypebuiltins.h
@@ -0,0 +1,39 @@
+
+/* Generated data (by glib-mkenums) */
+
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef VTE_TYPE_BUILTINS_H
+#define VTE_TYPE_BUILTINS_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* enumerations from "vte.h" */
+GType vte_terminal_erase_binding_get_type (void);
+#define VTE_TYPE_TERMINAL_ERASE_BINDING (vte_terminal_erase_binding_get_type ())
+GType vte_terminal_cursor_blink_mode_get_type (void);
+#define VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE (vte_terminal_cursor_blink_mode_get_type ())
+GType vte_terminal_cursor_shape_get_type (void);
+#define VTE_TYPE_TERMINAL_CURSOR_SHAPE (vte_terminal_cursor_shape_get_type ())
+GType vte_terminal_write_flags_get_type (void);
+#define VTE_TYPE_TERMINAL_WRITE_FLAGS (vte_terminal_write_flags_get_type ())
+
+/* enumerations from "vtepty.h" */
+GType vte_pty_flags_get_type (void);
+#define VTE_TYPE_PTY_FLAGS (vte_pty_flags_get_type ())
+GType vte_pty_error_get_type (void);
+#define VTE_TYPE_PTY_ERROR (vte_pty_error_get_type ())
+
+/* enumerations from "vtedeprecated.h" */
+GType vte_terminal_anti_alias_get_type (void);
+#define VTE_TYPE_TERMINAL_ANTI_ALIAS (vte_terminal_anti_alias_get_type ())
+G_END_DECLS
+
+#endif /* !VTE_TYPE_BUILTINS_H */
+
+/* Generated data ends here */
+
diff --git a/vte/src/vtetypebuiltins.h.template b/vte/src/vtetypebuiltins.h.template
new file mode 100644
index 0000000..a886d59
--- /dev/null
+++ b/vte/src/vtetypebuiltins.h.template
@@ -0,0 +1,28 @@
+/*** BEGIN file-header ***/
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef VTE_TYPE_BUILTINS_H
+#define VTE_TYPE_BUILTINS_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void);
+#define VTE_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* !VTE_TYPE_BUILTINS_H */
+/*** END file-tail ***/
diff --git a/vte/src/vteunistr.c b/vte/src/vteunistr.c
new file mode 100644
index 0000000..435371f
--- /dev/null
+++ b/vte/src/vteunistr.c
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author(s):
+ *     Behdad Esfahbod
+ */
+
+#include <config.h>
+
+#include "vteunistr.h"
+
+#include <string.h>
+
+
+/* Overview:
+ *
+ * The way vteunistr is implemented is very simple: Unicode only defines
+ * codepoints less than 0x110000.  That leaves plenty of room in a guint32 to
+ * use for other things.  So, whenever our "string" contains only one Unicode
+ * character, we use its code as our vteunistr.  Otherwise, we register the
+ * string in a central registry and assign a unique number to it and use that.
+ * This number is "our own private internal non-unicode code for this
+ * sequence of characters".
+ *
+ * The rest of the problem would be how to efficiently implement this
+ * registry.  It does *NOT* really have to be efficient at all, as it will
+ * only be accessed in case of combining marks.  And the strings are pretty
+ * short (two or three characters).  But our implementation is quite efficient
+ * anyway.
+ *
+ * The access pattern of using vteunistr's is that we have a vteunistr in a
+ * terminal cell, a new gunichar comes in and we decide to combine with it,
+ * and we combine them and get a new vteunistr.  So, that is exactly how we
+ * encode vteunistr's: all we need to know about a vteunistr to be able to
+ * reconstruct its string is the vteunistr and the gunichar that joined to
+ * form it.  That's what VteUnistrDecomp is.  That is the decomposition.
+ *
+ * We start giving new vteunistr's unique numbers starting at
+ * %VTE_UNISTR_START+1 and going up.  We keep the decompositions in a GArray,
+ * called unistr_decomp.  The first entry of the array is unused (that's why
+ * we start from %VTE_UNISTR_START plus one).  The decomposition table provides
+ * enough information to efficiently answer questions like "what's the first
+ * gunichar in this vteunistr?", "what's the sequence of gunichar's in this
+ * vteunistr?", and "how many gunichar's are there in this vteunistr?".
+ *
+ * We still do not have any efficient way to construct new vteunistr's though.
+ * Given a vteunistr and a gunichar, we have to walk over the entire
+ * decomposition table to see if we have already registered (encoded) this
+ * combination.  To make that operation fast, we use a reverse map, that is,
+ * a GHashTable named unistr_comp.  The hash table maps a decomposition to its
+ * encoded vteunistr value.  The value obviously fits in a pointer and does
+ * not need memory allocation.  We also want to avoid allocating memory for
+ * the key of the hash table entries, as we already have those decompositions
+ * in the memory in the unistr_decomp array.  We cannot use direct pointers
+ * though as when growing, the GArray may resize and move to a new memory
+ * buffer, rendering all our pointers invalid.  For this reason, we keep the
+ * index into the array as our hash table key.  When we want to perform a
+ * lookup in the hash table, we insert the decomposition that we are searching
+ * for as item zero in the unistr_decomp table, then lookup for an equal entry
+ * of it in the hash table.  Finally, if the hash lookup fails, we add the new
+ * decomposition to the lookup array and the hash table, and return the newly
+ * encoded vteunistr value.
+ */
+
+#define VTE_UNISTR_START 0x80000000
+
+static vteunistr unistr_next = VTE_UNISTR_START + 1;
+
+struct VteUnistrDecomp {
+       vteunistr prefix;
+       gunichar  suffix;
+};
+
+GArray     *unistr_decomp;
+GHashTable *unistr_comp;
+
+#define DECOMP_FROM_INDEX(i)   g_array_index (unistr_decomp, struct VteUnistrDecomp, (i))
+#define DECOMP_FROM_UNISTR(s)  DECOMP_FROM_INDEX ((s) - VTE_UNISTR_START)
+
+static guint
+unistr_comp_hash (gconstpointer key)
+{
+       struct VteUnistrDecomp *decomp;
+       decomp = &DECOMP_FROM_INDEX (GPOINTER_TO_UINT (key));
+       return decomp->prefix ^ decomp->suffix;
+}
+
+static gboolean
+unistr_comp_equal (gconstpointer a, gconstpointer b)
+{
+       return 0 == memcmp (&DECOMP_FROM_INDEX (GPOINTER_TO_UINT (a)),
+                           &DECOMP_FROM_INDEX (GPOINTER_TO_UINT (b)),
+                           sizeof (struct VteUnistrDecomp));
+}
+
+vteunistr
+_vte_unistr_append_unichar (vteunistr s, gunichar c)
+{
+       struct VteUnistrDecomp decomp;
+       vteunistr ret = 0;
+
+       decomp.prefix = s;
+       decomp.suffix = c;
+
+       if (G_UNLIKELY (!unistr_decomp)) {
+               unistr_decomp = g_array_new (FALSE, TRUE, sizeof (struct VteUnistrDecomp));
+               g_array_set_size (unistr_decomp, 1);
+               unistr_comp = g_hash_table_new (unistr_comp_hash, unistr_comp_equal);
+       } else {
+               DECOMP_FROM_INDEX (0) = decomp;
+               ret = GPOINTER_TO_UINT (g_hash_table_lookup (unistr_comp, GUINT_TO_POINTER (0)));
+       }
+
+       if (G_UNLIKELY (!ret)) {
+               /* sanity check to avoid OOM */
+               if (G_UNLIKELY (_vte_unistr_strlen (s) > 10 || unistr_next - VTE_UNISTR_START > 100000))
+                       return s;
+
+               ret = unistr_next++;
+               g_array_append_val (unistr_decomp, decomp);
+               g_hash_table_insert (unistr_comp,
+                                    GUINT_TO_POINTER (ret - VTE_UNISTR_START),
+                                    GUINT_TO_POINTER (ret));
+       }
+
+       return ret;
+}
+
+gunichar
+_vte_unistr_get_base (vteunistr s)
+{
+       g_return_val_if_fail (s < unistr_next, s);
+       while (G_UNLIKELY (s >= VTE_UNISTR_START))
+               s = DECOMP_FROM_UNISTR (s).prefix;
+       return (gunichar) s;
+}
+
+void
+_vte_unistr_append_to_string (vteunistr s, GString *gs)
+{
+       g_return_if_fail (s < unistr_next);
+       if (G_UNLIKELY (s >= VTE_UNISTR_START)) {
+               struct VteUnistrDecomp *decomp;
+               decomp = &DECOMP_FROM_UNISTR (s);
+               _vte_unistr_append_to_string (decomp->prefix, gs);
+               s = decomp->suffix;
+       }
+       g_string_append_unichar (gs, (gunichar) s);
+}
+
+int
+_vte_unistr_strlen (vteunistr s)
+{
+       int len = 1;
+       g_return_val_if_fail (s < unistr_next, len);
+       while (G_UNLIKELY (s >= VTE_UNISTR_START)) {
+               s = DECOMP_FROM_UNISTR (s).prefix;
+               len++;
+       }
+       return len;
+}
diff --git a/vte/src/vteunistr.h b/vte/src/vteunistr.h
new file mode 100644
index 0000000..3c22bee
--- /dev/null
+++ b/vte/src/vteunistr.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author(s):
+ *     Behdad Esfahbod
+ */
+
+#ifndef vte_vteunistr_h_included
+#define vte_vteunistr_h_included
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ * vteunistr:
+ *
+ * vteunistr is a gunichar-compatible way to store strings.  A string
+ * consisting of a single unichar c is represented as the same value
+ * as c itself.  In that sense, gunichars can be readily used as
+ * vteunistrs.  Longer strings can be built by appending a unichar
+ * to an already existing string.
+ *
+ * vteunistr is essentially just a gunicode-compatible quark value.
+ * It can be used to store strings (of a base followed by combining
+ * characters) where the code was designed to only allow one character.
+ *
+ * Strings are internalized efficiently and never freed.  No memory
+ * management of vteunistr values is needed.
+ **/
+typedef guint32 vteunistr;
+
+/**
+ * _vte_unistr_append_unichar:
+ * @s: a #vteunistr
+ * @c: Unicode character to append to @s
+ *
+ * Creates a vteunistr value for the string @s followed by the
+ * character @c.
+ *
+ * Returns: the new #vteunistr value
+ **/
+vteunistr
+_vte_unistr_append_unichar (vteunistr s, gunichar c);
+
+gunichar
+_vte_unistr_get_base (vteunistr s);
+
+/**
+ * _vte_unistr_append_to_string:
+ * @s: a #vteunistr
+ * @gs: a #GString to append @s to
+ *
+ * Appends @s to @gs.  This is how one converts a #vteunistr to a
+ * traditional string.
+ **/
+void
+_vte_unistr_append_to_string (vteunistr s, GString *gs);
+
+/**
+ * _vte_unistr_strlen:
+ * @s: a #vteunistr
+ *
+ * Counts the number of character in @s.
+ *
+ * Returns: length of @s in characters.
+ **/
+int
+_vte_unistr_strlen (vteunistr s);
+
+G_END_DECLS
+
+#endif
diff --git a/vte/src/vteversion.h b/vte/src/vteversion.h
new file mode 100644
index 0000000..39d2ccd
--- /dev/null
+++ b/vte/src/vteversion.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2008 Christian Persch
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along
+ * with this library; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02110-1301  USA
+ */
+
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef vte_vteversion_h_included
+#define vte_vteversion_h_included
+
+/**
+ * SECTION:vte-version
+ * @short_description: Library version checks
+ *
+ * These macros enable compile time checks of the library version.
+ *
+ * Since: 0.16.15
+ */
+
+/**
+ * VTE_MAJOR_VERSION:
+ *
+ * The major version number of the VTE library
+ * (e.g. in version 3.1.4 this is 3).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MAJOR_VERSION (0)
+
+/**
+ * VTE_MINOR_VERSION:
+ *
+ * The minor version number of the VTE library
+ * (e.g. in version 3.1.4 this is 1).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MINOR_VERSION (28)
+
+/**
+ * VTE_MICRO_VERSION:
+ *
+ * The micro version number of the VTE library
+ * (e.g. in version 3.1.4 this is 4).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MICRO_VERSION (2)
+
+/**
+ * VTE_CHECK_VERSION:
+ * @major: required major version
+ * @minor: required minor version
+ * @micro: required micro version
+ *
+ * Macro to check the library version at compile time.
+ * It returns %1 if the version of VTE is greater or
+ * equal to the required one, and %0 otherwise.
+ *
+ * Since: 0.16.15
+ */
+#define VTE_CHECK_VERSION(major,minor,micro) \
+  (VTE_MAJOR_VERSION > (major) || \
+   (VTE_MAJOR_VERSION == (major) && VTE_MINOR_VERSION > (minor)) || \
+   (VTE_MAJOR_VERSION == (major) && VTE_MINOR_VERSION == (minor) && VTE_MICRO_VERSION >= (micro)))
+
+#endif /* !vte_vteversion_h_included */
diff --git a/vte/src/vteversion.h.in b/vte/src/vteversion.h.in
new file mode 100644
index 0000000..0f801b7
--- /dev/null
+++ b/vte/src/vteversion.h.in
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2008 Christian Persch
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along
+ * with this library; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02110-1301  USA
+ */
+
+#if !defined (__VTE_VTE_H_INSIDE__) && !defined (VTE_COMPILATION)
+#error "Only <vte/vte.h> can be included directly."
+#endif
+
+#ifndef vte_vteversion_h_included
+#define vte_vteversion_h_included
+
+/**
+ * SECTION:vte-version
+ * @short_description: Library version checks
+ *
+ * These macros enable compile time checks of the library version.
+ *
+ * Since: 0.16.15
+ */
+
+/**
+ * VTE_MAJOR_VERSION:
+ *
+ * The major version number of the VTE library
+ * (e.g. in version 3.1.4 this is 3).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MAJOR_VERSION (@VTE_MAJOR_VERSION@)
+
+/**
+ * VTE_MINOR_VERSION:
+ *
+ * The minor version number of the VTE library
+ * (e.g. in version 3.1.4 this is 1).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MINOR_VERSION (@VTE_MINOR_VERSION@)
+
+/**
+ * VTE_MICRO_VERSION:
+ *
+ * The micro version number of the VTE library
+ * (e.g. in version 3.1.4 this is 4).
+ *
+ * Since: 0.16.15
+ */
+#define VTE_MICRO_VERSION (@VTE_MICRO_VERSION@)
+
+/**
+ * VTE_CHECK_VERSION:
+ * @major: required major version
+ * @minor: required minor version
+ * @micro: required micro version
+ *
+ * Macro to check the library version at compile time.
+ * It returns %1 if the version of VTE is greater or
+ * equal to the required one, and %0 otherwise.
+ *
+ * Since: 0.16.15
+ */
+#define VTE_CHECK_VERSION(major,minor,micro) \
+  (VTE_MAJOR_VERSION > (major) || \
+   (VTE_MAJOR_VERSION == (major) && VTE_MINOR_VERSION > (minor)) || \
+   (VTE_MAJOR_VERSION == (major) && VTE_MINOR_VERSION == (minor) && VTE_MICRO_VERSION >= (micro)))
+
+#endif /* !vte_vteversion_h_included */
diff --git a/vte/src/window b/vte/src/window
new file mode 100755
index 0000000..563b030
--- /dev/null
+++ b/vte/src/window
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+#  Window manipulation.
+#
+if [ "$#" -eq 0 ] ; then
+       echo usage: `basename $0` 'task [...]'
+       echo tasks:
+       echo "  1       deiconify"
+       echo "  2       iconify"
+       echo "  3 x y   move window to (x, y) pixels"
+       echo "  4 h w   resize window to (w, h) pixels"
+       echo "  5       raise"
+       echo "  6       lower"
+       echo "  7       refresh"
+       echo "  8 h w   resize text area to (w, h) cells"
+       echo "  9 0     unmaximize"
+       echo "  9 1     maximize"
+       exit
+fi
+args=
+for arg in $@ ; do
+       if [ "$args" = "" ] ; then
+               args="$arg"
+       else
+               args="$args;$arg"
+       fi
+done
+printf "["${args}t
diff --git a/vte/src/xticker.c b/vte/src/xticker.c
new file mode 100644
index 0000000..e5648cb
--- /dev/null
+++ b/vte/src/xticker.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <glib.h>
+
+/* How's this for useless?  Slowly dribble the contents of files through the
+ * title bar.  Apparently can be backgrounded. */
+
+#define DEFAULT_WIDTH 80
+#define DEFAULT_DELAY 70000
+
+static void
+my_usleep(long delay)
+{
+       struct timeval tv;
+       tv.tv_sec = delay / 1000000;
+       tv.tv_usec = delay % 1000000;
+       select(0, NULL, NULL, NULL, &tv);
+}
+
+int
+main(int argc, char **argv)
+{
+       long length = DEFAULT_WIDTH, delay = DEFAULT_DELAY, fd, i, j;
+       int c;
+       struct stat st;
+       char *buffer, *outbuf;
+
+       while ((c = getopt(argc, argv, "d:w:")) != -1) {
+               switch (c) {
+               case 'd':
+                       delay = atol(optarg);
+                       if (delay == 0) {
+                               delay = DEFAULT_DELAY;
+                       }
+                       break;
+               case 'w':
+                       length = atol(optarg);
+                       if (length == 0) {
+                               length = DEFAULT_WIDTH;
+                       }
+                       break;
+               default:
+                       g_print("Usage: xticker [-d delay] [-w width] file [...]\n");
+                       return 1;
+                       break;
+               }
+       }
+
+       outbuf = g_malloc(length + 5);
+
+       for (i = optind; i < argc; i++) {
+               fd = open(argv[i], O_RDONLY);
+               if (fd != -1) {
+                       if (fstat(fd, &st) != -1) {
+                               buffer = g_malloc(st.st_size);
+                               read(fd, buffer, st.st_size);
+                               for (j = 0; j < st.st_size; j++) {
+                                       switch (buffer[j]) {
+                                       case '\r':
+                                       case '\n':
+                                       case '\t':
+                                       case '\b':
+                                       case '\0':
+                                               buffer[j] = ' ';
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                                       if (j > 0) {
+                                               if ((buffer[j] == ' ') &&
+                                                   (buffer[j - 1] == ' ')) {
+                                                       memmove(buffer + j - 1,
+                                                               buffer + j,
+                                                               st.st_size - j);
+                                                       st.st_size--;
+                                                       j--;
+                                               }
+                                       }
+                               }
+                               close(fd);
+                               for (j = 0; j < st.st_size - length; j++) {
+                                       outbuf[0] = '\033';
+                                       outbuf[1] = ']';
+                                       outbuf[2] = '0';
+                                       outbuf[3] = ';';
+                                       memcpy(outbuf + 4,
+                                              buffer + j,
+                                              length);
+                                       outbuf[length + 4] = '\007';
+                                       write(STDERR_FILENO,
+                                             outbuf,
+                                             length + 5);
+                                       my_usleep(delay);
+                                       if ((j == 0) ||
+                                           (j == st.st_size - length - 1)) {
+                                               my_usleep(1000000);
+                                       }
+                               }
+                               g_free(buffer);
+                       } else {
+                               close(fd);
+                       }
+               } else {
+                       char *errbuf;
+                       errbuf = g_strdup_printf("\033]0;Error opening %s: %s."
+                                                "\007",
+                                                argv[i],
+                                                strerror(errno));
+                       write(STDERR_FILENO, errbuf, strlen(errbuf));
+                       g_free(errbuf);
+                       my_usleep(1000000);
+               }
+       }
+
+       g_free(outbuf);
+
+       return 0;
+}
diff --git a/vte/termcaps/Makefile.am b/vte/termcaps/Makefile.am
new file mode 100644
index 0000000..965071b
--- /dev/null
+++ b/vte/termcaps/Makefile.am
@@ -0,0 +1,12 @@
+EXTRA_DIST = xterm xterm.baseline
+termcapdir = $(pkgdatadir)/termcap-$(VTE_API_VERSION)
+termcap_DATA = xterm
+
+if VTE_DEFAULT_EMULATION
+termcap_DATA += $(VTE_DEFAULT_EMULATION)
+$(VTE_DEFAULT_EMULATION): xterm
+       $(AM_V_GEN) $(SED) -e s,^xterm:,$(VTE_DEFAULT_EMULATION):,g \
+           -e s,^xterm\|,$(VTE_DEFAULT_EMULATION)\|,g $< > $@
+endif
+
+-include $(top_srcdir)/git.mk
diff --git a/vte/termcaps/Makefile.in b/vte/termcaps/Makefile.in
new file mode 100644
index 0000000..1952d42
--- /dev/null
+++ b/vte/termcaps/Makefile.in
@@ -0,0 +1,499 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@VTE_DEFAULT_EMULATION_TRUE@am__append_1 = $(VTE_DEFAULT_EMULATION)
+subdir = termcaps
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+       $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(termcapdir)"
+DATA = $(termcap_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLADE_CATALOGUE_DIR = @GLADE_CATALOGUE_DIR@
+GLADE_ICON_DIR = @GLADE_ICON_DIR@
+GLADE_MODULE_DIR = @GLADE_MODULE_DIR@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GLIB_PREFIX = @GLIB_PREFIX@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_API_VERSION = @GTK_API_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTK_PREFIX = @GTK_PREFIX@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
+LIBTOOL_FLAGS = @LIBTOOL_FLAGS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_VERSION_INFO = @LT_VERSION_INFO@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_CODEGEN = @PYGTK_CODEGEN@
+PYGTK_DEFSDIR = @PYGTK_DEFSDIR@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHONMODULES = @PYTHONMODULES@
+PYTHONREV = @PYTHONREV@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VTE_API_MAJOR_VERSION = @VTE_API_MAJOR_VERSION@
+VTE_API_MINOR_VERSION = @VTE_API_MINOR_VERSION@
+VTE_API_VERSION = @VTE_API_VERSION@
+VTE_API_VERSION_U = @VTE_API_VERSION_U@
+VTE_CFLAGS = @VTE_CFLAGS@
+VTE_DEFAULT_EMULATION = @VTE_DEFAULT_EMULATION@
+VTE_LDFLAGS = @VTE_LDFLAGS@
+VTE_LIBRARY_SUFFIX_U = @VTE_LIBRARY_SUFFIX_U@
+VTE_LIBS = @VTE_LIBS@
+VTE_MAJOR_VERSION = @VTE_MAJOR_VERSION@
+VTE_MICRO_VERSION = @VTE_MICRO_VERSION@
+VTE_MINOR_VERSION = @VTE_MINOR_VERSION@
+VTE_PC_VERSION = @VTE_PC_VERSION@
+VTE_PKGS = @VTE_PKGS@
+VTE_SEAL_CFLAGS = @VTE_SEAL_CFLAGS@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = xterm xterm.baseline
+termcapdir = $(pkgdatadir)/termcap-$(VTE_API_VERSION)
+termcap_DATA = xterm $(am__append_1)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign termcaps/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign termcaps/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-termcapDATA: $(termcap_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(termcapdir)" || $(MKDIR_P) "$(DESTDIR)$(termcapdir)"
+       @list='$(termcap_DATA)'; test -n "$(termcapdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(termcapdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(termcapdir)" || exit $$?; \
+       done
+
+uninstall-termcapDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(termcap_DATA)'; test -n "$(termcapdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(termcapdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(termcapdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+       for dir in "$(DESTDIR)$(termcapdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-termcapDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-termcapDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       install-termcapDATA installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am uninstall-termcapDATA
+
+@VTE_DEFAULT_EMULATION_TRUE@$(VTE_DEFAULT_EMULATION): xterm
+@VTE_DEFAULT_EMULATION_TRUE@   $(AM_V_GEN) $(SED) -e s,^xterm:,$(VTE_DEFAULT_EMULATION):,g \
+@VTE_DEFAULT_EMULATION_TRUE@       -e s,^xterm\|,$(VTE_DEFAULT_EMULATION)\|,g $< > $@
+
+-include $(top_srcdir)/git.mk
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vte/termcaps/xterm b/vte/termcaps/xterm
new file mode 100644
index 0000000..cc48373
--- /dev/null
+++ b/vte/termcaps/xterm
@@ -0,0 +1,33 @@
+# This is a cut-down version of the termcap file from my box with some entries
+# removed (add them back in to override the terminal's behavior):
+# kI (Insert, Delete is handled programmatically)
+# kP/kN (Page Up, Page Down)
+# ku/kd/kl/kr (Up, Down, Left, Right)
+# k1/kd2/k3/k4/k5/k6/k7/k8/k9/k; (F1-F10)
+# K1/K2/K3/K4/K5 (KP Up, Down, Left, Right, Begin)
+xterm-xfree86|xterm-new|xterm terminal emulator (XFree86):\
+       :am:km:mi:ms:xn:\
+       :co#80:it#8:li#24:\
+       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+       :LE=\E[%dD:\
+       :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+       :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+       :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+       :ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+       :kD=\177:\
+       :kb=^H:ke=\E[?1l\E>:\
+       :ks=\E[?1h\E=:le=^H:mb=\E[5m:md=\E[1m:\
+       :me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:\
+       :sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[?1047l\E[?1048l:\
+       :ti=\E[?1048h\E[?1047h:ue=\E[24m:up=\E[A:us=\E[4m:\
+       :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+# xterm-redhat is identical to xterm-xfree86 with the addition of a small
+# VT220-ism regarding the backspace and delete keys; this is mandated by
+# the keyboard configuration section of the Debian Policy Manual.
+xterm-redhat|Red Hat xterm (backspace and delete changed):\
+       :kD=\E[3~:kb=\177:tc=xterm-xfree86:
+# This is the only entry which you should have to customize, since "xterm"
+# is widely used for a variety of incompatible terminal emulations including
+# color_xterm and rxvt.
+xterm|X11 terminal emulator:\
+       :tc=xterm-redhat:
diff --git a/vte/termcaps/xterm.baseline b/vte/termcaps/xterm.baseline
new file mode 100644
index 0000000..47876b1
--- /dev/null
+++ b/vte/termcaps/xterm.baseline
@@ -0,0 +1,35 @@
+# XFree86 updates/notes/new entries (including xterm-8bit, xterm-16color)
+# - Thomas E. Dickey <dickey clark net>
+# [snip]
+xterm-xfree86|xterm-new|xterm terminal emulator (XFree86):\
+       :am:km:mi:ms:xn:\
+       :co#80:it#8:li#24:\
+       :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+       :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+       :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+       :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+       :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+       :ei=\E[4l:ho=\E[H:im=\E[4h:is=\E[!p\E[?3;4l\E[4l\E>:\
+       :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+       :k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\177:kI=\E[2~:kN=\E[6~:\
+       :kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:\
+       :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+       :me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:\
+       :sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[?1047l\E[?1048l:\
+       :ti=\E[?1048h\E[?1047h:ue=\E[24m:up=\E[A:us=\E[4m:\
+       :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+# xterm-redhat is identical to xterm-xfree86 with the addition of a small
+# VT220-ism regarding the backspace and delete keys; this is mandated by
+# the keyboard configuration section of the Debian Policy Manual.
+xterm-redhat|Red Hat xterm (backspace and delete changed):\
+       :kD=\E[3~:kb=\177:tc=xterm-xfree86:
+# This should work for the commonly used "color xterm" variations (XFree86
+# xterm, color_xterm, nxterm, rxvt):
+xterm-color|generic "ANSI" color xterm (X Window System):\
+       :Co#8:NC@:pa#64:\
+       :AB=\E[4%dm:AF=\E[3%dm:op=\E[m:tc=xterm-r6:
+# This is the only entry which you should have to customize, since "xterm"
+# is widely used for a variety of incompatible terminal emulations including
+# color_xterm and rxvt.
+xterm|X11 terminal emulator:\
+       :tc=xterm-redhat:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]