[sword-svn] r106 - in trunk: . as_is/borland as_is/os400 debian source source/common source/common/unicode source/config source/data source/data/misc source/data/rbnf source/data/unidata source/i18n source/i18n/unicode source/io source/io/unicode source/layout source/layoutex source/test/cintltst source/test/intltest source/test/iotest source/test/perf/charperf source/test/perf/collperf source/test/perf/normperf source/test/perf/ustrperf source/tools/cpysearch source/tools/genccode source/tools/gencmn source/tools/genrb source/tools/icupkg source/tools/memcheck source/tools/pkgdata source/tools/toolutil source/tools/tzcode

chrislit at www.crosswire.org chrislit at www.crosswire.org
Mon Sep 4 03:27:43 MST 2006


Author: chrislit
Date: 2006-09-04 03:26:36 -0700 (Mon, 04 Sep 2006)
New Revision: 106

Added:
   trunk/source/tools/icupkg/icupkg.1.in
   trunk/source/tools/icupkg/icupkg.8.in
Modified:
   trunk/as_is/borland/icudatab.lib
   trunk/as_is/os400/unpax-icu.sh
   trunk/debian/README.Debian.libicu-dev
   trunk/debian/rules
   trunk/readme.html
   trunk/source/Doxyfile.in
   trunk/source/common/putilimp.h
   trunk/source/common/rbbiscan.cpp
   trunk/source/common/rbbitblb.cpp
   trunk/source/common/ubidiwrt.c
   trunk/source/common/ucnv_lmb.c
   trunk/source/common/ucnv_u16.c
   trunk/source/common/ucnvisci.c
   trunk/source/common/umutex.c
   trunk/source/common/unicode/pwin32.h
   trunk/source/common/unicode/udraft.h
   trunk/source/common/unicode/unistr.h
   trunk/source/common/unicode/urename.h
   trunk/source/common/unicode/ustring.h
   trunk/source/common/unicode/utext.h
   trunk/source/common/unicode/utypes.h
   trunk/source/common/uprops.c
   trunk/source/common/uresdata.h
   trunk/source/common/utext.cpp
   trunk/source/config/make2sh.sed
   trunk/source/config/mh-mingw
   trunk/source/configure
   trunk/source/configure.in
   trunk/source/data/makedata.mak
   trunk/source/data/misc/zoneinfo.txt
   trunk/source/data/rbnf/ja.txt
   trunk/source/data/unidata/changes.txt
   trunk/source/i18n/calendar.cpp
   trunk/source/i18n/csdetect.cpp
   trunk/source/i18n/csdetect.h
   trunk/source/i18n/csrmbcs.cpp
   trunk/source/i18n/csrmbcs.h
   trunk/source/i18n/inputext.cpp
   trunk/source/i18n/inputext.h
   trunk/source/i18n/stsearch.cpp
   trunk/source/i18n/timezone.cpp
   trunk/source/i18n/translit.cpp
   trunk/source/i18n/ucln_in.c
   trunk/source/i18n/ucsdet.cpp
   trunk/source/i18n/umsg.cpp
   trunk/source/i18n/unicode/msgfmt.h
   trunk/source/i18n/unicode/translit.h
   trunk/source/i18n/unicode/ucsdet.h
   trunk/source/i18n/unicode/umsg.h
   trunk/source/i18n/windtfmt.cpp
   trunk/source/i18n/winnmfmt.cpp
   trunk/source/io/ucln_io.c
   trunk/source/io/ufile.c
   trunk/source/io/unicode/ustdio.h
   trunk/source/layout/HangulLayoutEngine.h
   trunk/source/layout/IndicClassTables.cpp
   trunk/source/layout/LELanguages.h
   trunk/source/layout/LEScripts.h
   trunk/source/layout/ScriptAndLanguageTags.cpp
   trunk/source/layout/ScriptAndLanguageTags.h
   trunk/source/layoutex/ParagraphLayout.cpp
   trunk/source/test/cintltst/callcoll.c
   trunk/source/test/cintltst/cbiditst.c
   trunk/source/test/cintltst/cdtdptst.c
   trunk/source/test/cintltst/cloctst.c
   trunk/source/test/cintltst/cmsccoll.c
   trunk/source/test/cintltst/cucdtst.c
   trunk/source/test/cintltst/custrtrn.c
   trunk/source/test/cintltst/reapits.c
   trunk/source/test/intltest/canittst.cpp
   trunk/source/test/intltest/canittst.h
   trunk/source/test/intltest/idnaref.cpp
   trunk/source/test/intltest/tmsgfmt.cpp
   trunk/source/test/intltest/transtst.cpp
   trunk/source/test/intltest/transtst.h
   trunk/source/test/intltest/tsdtfmsy.cpp
   trunk/source/test/intltest/utxttest.cpp
   trunk/source/test/intltest/winnmtst.cpp
   trunk/source/test/iotest/filetst.c
   trunk/source/test/iotest/stream.cpp
   trunk/source/test/iotest/strtst.c
   trunk/source/test/perf/charperf/charperf.cpp
   trunk/source/test/perf/charperf/charperf.h
   trunk/source/test/perf/collperf/collperf.cpp
   trunk/source/test/perf/normperf/normperf.h
   trunk/source/test/perf/ustrperf/stringperf.cpp
   trunk/source/test/perf/ustrperf/stringperf.h
   trunk/source/tools/cpysearch/cpyskip.txt
   trunk/source/tools/genccode/genccode.c
   trunk/source/tools/gencmn/gencmn.c
   trunk/source/tools/genrb/parse.c
   trunk/source/tools/icupkg/Makefile.in
   trunk/source/tools/memcheck/ICUMemCheck.pl
   trunk/source/tools/pkgdata/pkgdata.c
   trunk/source/tools/toolutil/package.cpp
   trunk/source/tools/tzcode/Makefile.in
   trunk/source/tools/tzcode/localtime.c
   trunk/source/tools/tzcode/readme.txt
Log:
Preliminary ICU 3.6 (stable release) update

Modified: trunk/as_is/borland/icudatab.lib
===================================================================
(Binary files differ)

Modified: trunk/as_is/os400/unpax-icu.sh
===================================================================
--- trunk/as_is/os400/unpax-icu.sh	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/as_is/os400/unpax-icu.sh	2006-09-04 10:26:36 UTC (rev 106)
@@ -123,7 +123,7 @@
 echo "Generating qsh compatible configure ..."
 echo ""
 
-sed -f convertConfigure.sed icu/source/configure > icu/source/configureTemp
+sed -f icu/as_is/os400/convertConfigure.sed icu/source/configure > icu/source/configureTemp
 del -f icu/source/configure
 mv icu/source/configureTemp icu/source/configure
 chmod 755 icu/source/configure

Modified: trunk/debian/README.Debian.libicu-dev
===================================================================
--- trunk/debian/README.Debian.libicu-dev	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/debian/README.Debian.libicu-dev	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,4 +1,4 @@
-Copyright (C) 2000-2003, International Business Machines
+Copyright (C) 2000-2006, International Business Machines
 Corporation and others.  All Rights Reserved.
 
 libicu-dev for Debian

Modified: trunk/debian/rules
===================================================================
--- trunk/debian/rules	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/debian/rules	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,5 +1,5 @@
 #!/usr/bin/make -f
-# Copyright (c) 2000-2004 International Business Machines
+# Copyright (c) 2000-2006 International Business Machines
 # Corporation and others. All Rights Reserved.
 # ICU debian/rules that uses debhelper.
 

Modified: trunk/readme.html
===================================================================
--- trunk/readme.html	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/readme.html	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,16 +1,20 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
-<html lang="en-US">
-<head>
-  <title>ReadMe for ICU</title>
-  <meta name="COPYRIGHT" content=
-  "Copyright (c) 1997-2006 IBM Corporation and others. All Rights Reserved.">
-  <meta name="KEYWORDS" content=
-  "ICU; International Components for Unicode; ICU4C; what's new; readme; read me; introduction; downloads; downloading; building; installation;">
-  <meta name="DESCRIPTION" content=
-  "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU.">
-  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+  <head>
+    <meta name="generator" content="HTML Tidy, see www.w3.org" />
+
+    <title>ReadMe for ICU</title>
+    <meta name="COPYRIGHT" content=
+    "Copyright (c) 1997-2006 IBM Corporation and others. All Rights Reserved." />
+    <meta name="KEYWORDS" content=
+    "ICU; International Components for Unicode; ICU4C; what's new; readme; read me; introduction; downloads; downloading; building; installation;" />
+    <meta name="DESCRIPTION" content=
+    "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU." />
+    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
 <style type="text/css">
+/*<![CDATA[*/
     h1 {border-width: 2px; border-style: solid; text-align: center; width: 100%; font-size: 200%; font-weight: bold}
     h2 {margin-top: 3em; text-decoration: underline; page-break-before: always}
     h2.TOC {page-break-before: auto}
@@ -21,1175 +25,1219 @@
     div.indent {margin-left: 2em}
     ul.TOC {list-style-type: none}
     samp {margin-left: 1em; border-style: groove; padding: 1em; display: block; background-color: #EEEEEE}
+/*]]>*/
 </style>
-</head>
+  </head>
 
-<body>
-  <h1>International Components for Unicode<br>
-  <abbr title="International Components for Unicode">ICU</abbr> 3.6 ReadMe</h1>
+  <body>
+    <h1>International Components for Unicode<br />
+     <abbr title="International Components for Unicode">ICU</abbr> 3.6
+    ReadMe</h1>
 
-  <p>Version: 2006-Jul-15<br>
-  Copyright &copy; 1997-2006 International Business Machines Corporation and
-  others. All Rights Reserved.</p>
-  <!-- Remember that there is a copyright at the end too -->
-  <hr>
+    <p>Version: 2006-Aug-31<br />
+     Copyright &copy; 1997-2006 International Business Machines Corporation and
+    others. All Rights Reserved.</p>
+    <!-- Remember that there is a copyright at the end too -->
+    <hr />
 
-  <h2 class="TOC">Table of Contents</h2>
+    <h2 class="TOC">Table of Contents</h2>
 
-  <ul class="TOC">
-    <li><a href="#Introduction">Introduction</a></li>
+    <ul class="TOC">
+      <li><a href="#Introduction">Introduction</a></li>
 
-    <li><a href="#GettingStarted">Getting Started</a></li>
+      <li><a href="#GettingStarted">Getting Started</a></li>
 
-    <li><a href="#News">What Is New In This release?</a></li>
+      <li><a href="#News">What Is New In This release?</a></li>
 
-    <li><a href="#Download">How To Download the Source Code</a></li>
+      <li><a href="#Download">How To Download the Source Code</a></li>
 
-    <li><a href="#SourceCode">ICU Source Code Organization</a></li>
+      <li><a href="#SourceCode">ICU Source Code Organization</a></li>
 
-    <li>
-      <a href="#HowToBuild">How To Build And Install ICU</a>
+      <li>
+        <a href="#HowToBuild">How To Build And Install ICU</a> 
 
-      <ul class="TOC">
-        <li><a href="#HowToBuildSupported">Supported Platforms</a></li>
+        <ul class="TOC">
+          <li><a href="#HowToBuildSupported">Supported Platforms</a></li>
 
-        <li><a href="#HowToBuildWindows">Windows</a></li>
+          <li><a href="#HowToBuildWindows">Windows</a></li>
 
-        <li><a href="#HowToBuildCygwin">Cygwin</a></li>
+          <li><a href="#HowToBuildCygwin">Cygwin</a></li>
 
-        <li><a href="#HowToBuildUNIX">UNIX</a></li>
+          <li><a href="#HowToBuildUNIX">UNIX</a></li>
 
-        <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
+          <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
 
-        <li><a href="#HowToBuildOS400">i5/OS (OS/400 iSeries)</a></li>
-      </ul>
-    </li>
+          <li><a href="#HowToBuildOS400">i5/OS (OS/400 iSeries)</a></li>
+        </ul>
+      </li>
 
-    <li><a href="#HowToPackage">How To Package ICU</a></li>
+      <li><a href="#HowToPackage">How To Package ICU</a></li>
 
-    <li>
-      <a href="#ImportantNotes">Important Notes About Using ICU</a>
+      <li>
+        <a href="#ImportantNotes">Important Notes About Using ICU</a> 
 
-      <ul class="TOC">
-        <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreaded
-        Environment</a></li>
+        <ul class="TOC">
+          <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreaded
+          Environment</a></li>
 
-        <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
+          <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
 
-        <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
-      </ul>
-    </li>
+          <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
+        </ul>
+      </li>
 
-    <li>
-      <a href="#PlatformDependencies">Platform Dependencies</a>
+      <li>
+        <a href="#PlatformDependencies">Platform Dependencies</a> 
 
-      <ul class="TOC">
-        <li><a href="#PlatformDependenciesNew">Porting To A New
-        Platform</a></li>
+        <ul class="TOC">
+          <li><a href="#PlatformDependenciesNew">Porting To A New
+          Platform</a></li>
 
-        <li><a href="#PlatformDependenciesImpl">Platform Dependent
-        Implementations</a></li>
-      </ul>
-    </li>
-  </ul>
-  <hr>
+          <li><a href="#PlatformDependenciesImpl">Platform Dependent
+          Implementations</a></li>
+        </ul>
+      </li>
+    </ul>
+    <hr />
 
-  <h2><a name="Introduction" href="#Introduction" id=
-  "Introduction">Introduction</a></h2>
+    <h2><a name="Introduction" href="#Introduction" id=
+    "Introduction">Introduction</a></h2>
 
-  <p>Today's software market is a global one in which it is desirable to
-  develop and maintain one application (single source/single binary) that
-  supports a wide variety of languages. The International Components for
-  Unicode (ICU) libraries provide robust and full-featured Unicode services on
-  a wide variety of platforms to help this design goal. The ICU libraries
-  provide support for:</p>
+    <p>Today's software market is a global one in which it is desirable to
+    develop and maintain one application (single source/single binary) that
+    supports a wide variety of languages. The International Components for
+    Unicode (ICU) libraries provide robust and full-featured Unicode services on
+    a wide variety of platforms to help this design goal. The ICU libraries
+    provide support for:</p>
 
-  <ul>
-    <li>The latest version of the Unicode standard</li>
+    <ul>
+      <li>The latest version of the Unicode standard</li>
 
-    <li>Character set conversions with support for over 200 codepages</li>
+      <li>Character set conversions with support for over 200 codepages</li>
 
-    <li>Locale data for more than 230 locales</li>
+      <li>Locale data for more than 230 locales</li>
 
-    <li>Language sensitive text collation (sorting) and searching based on the
-    Unicode Collation Algorithm (=ISO 14651)</li>
+      <li>Language sensitive text collation (sorting) and searching based on the
+      Unicode Collation Algorithm (=ISO 14651)</li>
 
-    <li>Regular expression matching and Unicode sets</li>
+      <li>Regular expression matching and Unicode sets</li>
 
-    <li>Transformations for normalization, upper/lowercase, script
-    transliterations (50+ pairs)</li>
+      <li>Transformations for normalization, upper/lowercase, script
+      transliterations (50+ pairs)</li>
 
-    <li>Resource bundles for storing and accessing localized information</li>
+      <li>Resource bundles for storing and accessing localized information</li>
 
-    <li>Date/Number/Message formatting and parsing of culture specific
-    input/output formats</li>
+      <li>Date/Number/Message formatting and parsing of culture specific
+      input/output formats</li>
 
-    <li>Calendar specific date and time manipulation</li>
+      <li>Calendar specific date and time manipulation</li>
 
-    <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
+      <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
 
-    <li>Text boundary analysis for finding characters, word and sentence
-    boundaries</li>
-  </ul>
+      <li>Text boundary analysis for finding characters, word and sentence
+      boundaries</li>
+    </ul>
 
-  <p>ICU has a sister project ICU4J that extends the internationalization
-  capabilities of Java to a level similar to ICU. The ICU C/C++ project is also
-  called ICU4C when a distinction is necessary.</p>
+    <p>ICU has a sister project ICU4J that extends the internationalization
+    capabilities of Java to a level similar to ICU. The ICU C/C++ project is also
+    called ICU4C when a distinction is necessary.</p>
 
-  <h2><a name="GettingStarted" href="#GettingStarted" id=
-  "GettingStarted">Getting started</a></h2>
+    <h2><a name="GettingStarted" href="#GettingStarted" id=
+    "GettingStarted">Getting started</a></h2>
 
-  <p>This document describes how to build and install ICU on your machine. For
-  other information about ICU please see the following table of links.<br>
-  The ICU homepage also links to related information about writing
-  internationalized software.</p>
+    <p>This document describes how to build and install ICU on your machine. For
+    other information about ICU please see the following table of links.<br />
+     The ICU homepage also links to related information about writing
+    internationalized software.</p>
 
-  <table border="1" cellpadding="3" width="100%" summary=
-  "These are some useful links regarding ICU and internationalization in general.">
-  <caption>
-      Here are some useful links regarding ICU and internationalization in
-      general.
-    </caption>
+    <table border="1" cellpadding="3" width="100%" summary=
+    "These are some useful links regarding ICU and internationalization in general.">
+      <caption>
+        Here are some useful links regarding ICU and internationalization in
+        general.
+      </caption>
 
-    <tr>
-      <td>ICU, ICU4C, ICU4J &amp; ICU4JNI Official Homepage</td>
+      <tr>
+        <td>ICU, ICU4C, ICU4J &amp; ICU4JNI Official Homepage</td>
 
-      <td><a href=
-      "http://www.ibm.com/software/globalization/icu/index.jsp">http://www.ibm.com/software/globalization/icu/index.jsp</a></td>
-    </tr>
+        <td><a href=
+        "http://www.ibm.com/software/globalization/icu/index.jsp">http://www.ibm.com/software/globalization/icu/index.jsp</a></td>
+      </tr>
 
-    <tr>
-      <td>ICU, ICU4C, ICU4J &amp; ICU4JNI Unofficial Homepage</td>
+      <tr>
+        <td>ICU, ICU4C, ICU4J &amp; ICU4JNI Unofficial Homepage</td>
 
-      <td><a href=
-      "http://icu.sourceforge.net/">http://icu.sourceforge.net/</a></td>
-    </tr>
+        <td><a href=
+        "http://icu.sourceforge.net/">http://icu.sourceforge.net/</a></td>
+      </tr>
 
-    <tr>
-      <td>FAQ - Frequently Asked Questions about ICU</td>
+      <tr>
+        <td>FAQ - Frequently Asked Questions about ICU</td>
 
-      <td><a href=
-      "http://icu.sourceforge.net/userguide/icufaq.html">http://icu.sourceforge.net/userguide/icufaq.html</a></td>
-    </tr>
+        <td><a href=
+        "http://icu.sourceforge.net/userguide/icufaq.html">http://icu.sourceforge.net/userguide/icufaq.html</a></td>
+      </tr>
 
-    <tr>
-      <td>ICU User's Guide</td>
+      <tr>
+        <td>ICU User's Guide</td>
 
-      <td><a href=
-      "http://icu.sourceforge.net/userguide/">http://icu.sourceforge.net/userguide/</a></td>
-    </tr>
+        <td><a href=
+        "http://icu.sourceforge.net/userguide/">http://icu.sourceforge.net/userguide/</a></td>
+      </tr>
 
-    <tr>
-      <td>Download ICU Releases</td>
+      <tr>
+        <td>Download ICU Releases</td>
 
-      <td><a href=
-      "http://www.ibm.com/software/globalization/icu/downloads.jsp">http://www.ibm.com/software/globalization/icu/downloads.jsp</a></td>
-    </tr>
+        <td><a href=
+        "http://www.ibm.com/software/globalization/icu/downloads.jsp">http://www.ibm.com/software/globalization/icu/downloads.jsp</a></td>
+      </tr>
 
-    <tr>
-      <td>API Documentation Online</td>
+      <tr>
+        <td>API Documentation Online</td>
 
-      <td><a href=
-      "http://icu.sourceforge.net/apiref/index.html">http://icu.sourceforge.net/apiref/index.html</a></td>
-    </tr>
+        <td><a href=
+        "http://icu.sourceforge.net/apiref/index.html">http://icu.sourceforge.net/apiref/index.html</a></td>
+      </tr>
 
-    <tr>
-      <td>Online ICU Demos</td>
+      <tr>
+        <td>Online ICU Demos</td>
 
-      <td><a href=
-      "http://www.ibm.com/software/globalization/icu/chartsdemostools.jsp">http://www.ibm.com/software/globalization/icu/chartsdemostools.jsp</a></td>
-    </tr>
+        <td><a href=
+        "http://www.ibm.com/software/globalization/icu/chartsdemostools.jsp">http://www.ibm.com/software/globalization/icu/chartsdemostools.jsp</a></td>
+      </tr>
 
-    <tr>
-      <td>Contacts and Bug Reports/Feature Requests</td>
+      <tr>
+        <td>Contacts and Bug Reports/Feature Requests</td>
 
-      <td><a href=
-      "http://icu.sourceforge.net/contacts.html">http://icu.sourceforge.net/contacts.html</a></td>
-    </tr>
-  </table>
+        <td><a href=
+        "http://icu.sourceforge.net/contacts.html">http://icu.sourceforge.net/contacts.html</a></td>
+      </tr>
+    </table>
 
-  <p><strong>Important:</strong> Please make sure you understand the <a href=
-  "license.html">Copyright and License Information</a>.</p>
+    <p><strong>Important:</strong> Please make sure you understand the <a href=
+    "license.html">Copyright and License Information</a>.</p>
 
-  <h2><a name="News" href="#News" id="News">What is new in this
-  release?</a></h2>
+    <h2><a name="News" href="#News" id="News">What is new in this
+    release?</a></h2>
 
-  <p>The following list concentrates on <em>changes that affect existing
-  applications migrating from previous ICU releases</em>. For more news about
-  this release, see the <a href=
-  "http://www.ibm.com/software/globalization/icu/downloads.jsp">ICU 3.6
-  download page</a>.</p>
+    <p>The following list concentrates on <em>changes that affect existing
+    applications migrating from previous ICU releases</em>. For more news about
+    this release, see the <a href=
+    "http://www.ibm.com/software/globalization/icu/downloads.jsp">ICU 3.6
+    download page</a>.</p>
 
-  <h3><a name="News_app_packaging" id="News_app_packaging">Changes to
-  packaging resource bundles</a></h3>
+    <h3><a name="News_app_packaging" id="News_app_packaging">Changes to packaging
+    resource bundles</a></h3>
 
-  <p>Since ICU 3.0, the old style of packaging was deprecated, and an alternate
-  packaging mode was made available. In this release, this compatibility mode of
-  packaging has been removed from ICU. If you're using the genrb -P or -t options,
-  you are probably using the older compatible mode of data packaging. This
-  compatibility file naming mode was removed for portability and performance reasons.</p>
-  
-  <p>Code changes should not be required to use the newer data file naming scheme,
-  but you will need to update your makefile scripts, if you're using the older
-  data file naming scheme. The example of using the new data file naming scheme
-  can be found in <a href="source/samples/ufortune/">the ufortune sample program</a>.</p>
+    <p>Since ICU 3.0, the old style of packaging was deprecated, and an alternate
+    packaging mode was made available. In this release, this compatibility mode
+    of packaging has been removed from ICU. If you're using the genrb -P or -t
+    options, you are probably using the older compatible mode of data packaging.
+    This compatibility file naming mode was removed for portability and
+    performance reasons.</p>
 
-  <table border="1" cellpadding="0" summary=
-  "The following are examples of the file naming schemes.">
-    <caption>
-      The following are examples of the file naming schemes.
-    </caption>
+    <p>Code changes should not be required to use the newer data file naming
+    scheme, but you will need to update your makefile scripts, if you're using
+    the older data file naming scheme. The example of using the new data file
+    naming scheme can be found in <a href="source/samples/ufortune/">the ufortune
+    sample program</a>.</p>
 
-    <tr>
-      <th scope="col">Old File Naming Scheme</th>
+    <table border="1" cellpadding="0" summary=
+    "The following are examples of the file naming schemes.">
+      <caption>
+        The following are examples of the file naming schemes.
+      </caption>
 
-      <th scope="col">Current File Naming Scheme</th>
-    </tr>
+      <tr>
+        <th scope="col">Old File Naming Scheme</th>
 
-    <tr>
-      <td>MyApp_root.res</td>
+        <th scope="col">Current File Naming Scheme</th>
+      </tr>
 
-      <td>MyApp/root.res</td>
-    </tr>
+      <tr>
+        <td>MyApp_root.res</td>
 
-    <tr>
-      <td>MyApp_en.res</td>
+        <td>MyApp/root.res</td>
+      </tr>
 
-      <td>MyApp/en.res</td>
-    </tr>
-  </table>
+      <tr>
+        <td>MyApp_en.res</td>
 
-  <h3><a name="News_wchar_t" id="News_wchar_t">Changes to wchar_t type for the
-  Microsoft Visual Studio builds</a></h3>
+        <td>MyApp/en.res</td>
+      </tr>
+    </table>
 
-  <p>Previous versions of ICU built with Microsoft Visual Studio were not built
-  with the /Zc:wchar_t compiler option. ICU now builds with this option turned
-  on by default. This allows the built libraries to be compatible with Visual
-  Studio 2005, and this makes it easier for ICU users to use MFC in their
-  projects, which requires this option to be turned by default. If you do not
-  use the C++ API of ICU, you are not affected by this change.</p>
+    <h3><a name="News_wchar_t" id="News_wchar_t">Changes to wchar_t type for the
+    Microsoft Visual Studio builds</a></h3>
 
-  <p>If you receive any errors while linking ICU into your project, please make
-  sure that you have set "Treat wchar_t as Built-in Type" to "Yes (/Zc:wchar_t)"
-  in your project files.</p>
+    <p>Previous versions of ICU built with Microsoft Visual Studio were not built
+    with the /Zc:wchar_t compiler option. ICU now builds with this option turned
+    on by default. This allows the built libraries to be compatible with Visual
+    Studio 2005, and this makes it easier for ICU users to use MFC in their
+    projects, which requires this option to be turned by default. If you do not
+    use the C++ API of ICU, you are not affected by this change.</p>
 
-  <h3><a name="News_data_package" id="News_data_package">Source download
-  contains .dat package for ICU data</a></h3>
+    <p>If you receive any errors while linking ICU into your project, please make
+    sure that you have set "Treat wchar_t as Built-in Type" to "Yes
+    (/Zc:wchar_t)" in your project files.</p>
 
-  <p>The ICU4C 3.6 source downloads contain a pre-built .dat package with ICU's
-  data rather than the data source files. This is to simplify the build process
-  for the majority of users and to reduce platform porting issues. If you need
-  the data source files for customization, then please download the ICU source
-  code from <a href=
-  "http://www.ibm.com/software/globalization/icu/repository.jsp">CVS</a>.</p>
+    <h3><a name="News_scanf" id="News_scanf">Changes to scanf and storing
+    floating point types</a></h3>
 
-  <h2><a name="Download" href="#Download" id="Download">How To Download the
-  Source Code</a></h2>
+    <p>In order to improve interoperability with standard scanf implementations,
+    the icuio library's implementations of scanf has changed the default scanf
+    type from <tt>double</tt> to <tt>float</tt>. This is a breaking change
+    requires you to change your code if you are using the icuio library's scanf
+    to read <tt>double</tt> or <tt>float</tt> values with %e, %f or %g. As a
+    reminder, these scanf functions in the icuio library are still marked
+    draft.</p>
 
-  <p>There are two ways to download ICU releases:</p>
+    <h3><a name="News_data_package" id="News_data_package">Source download
+    contains .dat package for ICU data</a></h3>
 
-  <ul>
-    <li><strong>Official Release Snapshot:</strong><br>
-    If you want to use ICU (as opposed to developing it), you should download
-    an official packaged version of the ICU source code. These versions are
-    tested more thoroughly than day-to-day development builds of the system,
-    and they are packaged in zip and tar files for convenient download. These
-    packaged files can be found at <a href=
-    "http://www.ibm.com/software/globalization/icu/downloads.jsp">http://www.ibm.com/software/globalization/icu/downloads.jsp</a>.<br>
+    <p>The ICU4C 3.6 source downloads contain a pre-built .dat package with ICU's
+    data rather than the data source files. This is to simplify the build process
+    for the majority of users and to reduce platform porting issues. If you need
+    the data source files for customization, then please download the ICU source
+    code from <a href=
+    "http://www.ibm.com/software/globalization/icu/repository.jsp">CVS</a>.</p>
 
-    The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
-    <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
-    file is used for Windows platforms, while the .tgz file is preferred on
-    most other platforms.<br>
-    Please unzip this file. It will reconstruct the source directory, which
-    includes anonymous CVS control directories (see below).</li>
+    <h2><a name="Download" href="#Download" id="Download">How To Download the
+    Source Code</a></h2>
 
-    <li><strong>CVS Source Repository:</strong><br>
-    If you are interested in developing features, patches, or bug fixes for
-    ICU, you should probably be working with the latest version of the ICU
-    source code. You will need to check the code out of our CVS repository to
-    ensure that you have the most recent version of all of the files. See our
-    <a href="http://www.ibm.com/software/globalization/icu/repository.jsp">CVS
-    page</a> for details.</li>
-  </ul>
+    <p>There are two ways to download ICU releases:</p>
 
-  <h2><a name="SourceCode" href="#SourceCode" id="SourceCode">ICU Source Code
-  Organization</a></h2>
+    <ul>
+      <li><strong>Official Release Snapshot:</strong><br />
+       If you want to use ICU (as opposed to developing it), you should download
+      an official packaged version of the ICU source code. These versions are
+      tested more thoroughly than day-to-day development builds of the system,
+      and they are packaged in zip and tar files for convenient download. These
+      packaged files can be found at <a href=
+      "http://www.ibm.com/software/globalization/icu/downloads.jsp">http://www.ibm.com/software/globalization/icu/downloads.jsp</a>.<br />
+       The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
+      <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
+      file is used for Windows platforms, while the .tgz file is preferred on
+      most other platforms.<br />
+       Please unzip this file. It will reconstruct the source directory, which
+      includes anonymous CVS control directories (see below).</li>
 
-  <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
-  path name of the ICU directory (the top level directory from the distribution
-  archives) in your file system. You can also view the <a href=
-  "http://icu.sourceforge.net/userguide/design.html">ICU Architectural
-  Design</a> section of the User's Guide to see which libraries you need for
-  your software product. You need at least the data (<code>[lib]icudt</code>)
-  and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
+      <li><strong>CVS Source Repository:</strong><br />
+       If you are interested in developing features, patches, or bug fixes for
+      ICU, you should probably be working with the latest version of the ICU
+      source code. You will need to check the code out of our CVS repository to
+      ensure that you have the most recent version of all of the files. See our
+      <a href="http://www.ibm.com/software/globalization/icu/repository.jsp">CVS
+      page</a> for details.</li>
+    </ul>
 
-  <table border="1" cellpadding="0" width="100%" summary=
-  "The following files describe the code drop.">
-    <caption>
-      The following files describe the code drop.
-    </caption>
+    <h2><a name="SourceCode" href="#SourceCode" id="SourceCode">ICU Source Code
+    Organization</a></h2>
 
-    <tr>
-      <th scope="col">File</th>
+    <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
+    path name of the ICU directory (the top level directory from the distribution
+    archives) in your file system. You can also view the <a href=
+    "http://icu.sourceforge.net/userguide/design.html">ICU Architectural
+    Design</a> section of the User's Guide to see which libraries you need for
+    your software product. You need at least the data (<code>[lib]icudt</code>)
+    and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
 
-      <th scope="col">Description</th>
-    </tr>
+    <table border="1" cellpadding="0" width="100%" summary=
+    "The following files describe the code drop.">
+      <caption>
+        The following files describe the code drop.
+      </caption>
 
-    <tr>
-      <td>readme.html</td>
+      <tr>
+        <th scope="col">File</th>
 
-      <td>Describes the International Components for Unicode (this file)</td>
-    </tr>
+        <th scope="col">Description</th>
+      </tr>
 
-    <tr>
-      <td>license.html</td>
+      <tr>
+        <td>readme.html</td>
 
-      <td>Contains the text of the ICU license</td>
-    </tr>
-  </table>
+        <td>Describes the International Components for Unicode (this file)</td>
+      </tr>
 
-  <p><br></p>
+      <tr>
+        <td>license.html</td>
 
-  <table border="1" cellpadding="0" width="100%" summary=
-  "The following directories contain source code and data files.">
-    <caption>
-      The following directories contain source code and data files.
-    </caption>
+        <td>Contains the text of the ICU license</td>
+      </tr>
+    </table>
 
-    <tr>
-      <th scope="col">Directory</th>
+    <p><br />
+    </p>
 
-      <th scope="col">Description</th>
-    </tr>
+    <table border="1" cellpadding="0" width="100%" summary=
+    "The following directories contain source code and data files.">
+      <caption>
+        The following directories contain source code and data files.
+      </caption>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>common</b>/</td>
+      <tr>
+        <th scope="col">Directory</th>
 
-      <td>The core Unicode and support functionality, such as resource bundles,
-      character properties, locales, codepage conversion, normalization,
-      Unicode properties, Locale, and UnicodeString.</td>
-    </tr>
+        <th scope="col">Description</th>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>i18n</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>common</b>/</td>
 
-      <td>Modules in i18n are generally the more data-driven, that is to say
-      resource bundle driven, components. These deal with higher-level
-      internationalization issues such as formatting, collation, text break
-      analysis, and transliteration.</td>
-    </tr>
+        <td>The core Unicode and support functionality, such as resource bundles,
+        character properties, locales, codepage conversion, normalization,
+        Unicode properties, Locale, and UnicodeString.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>data</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>i18n</b>/</td>
 
-      <td>
-        <p>This directory contains the source data in text format, which is
-        compiled into binary form during the ICU build process. It contains
-        several subdirectories, in which the data files are grouped by
-        function. Note that the build process must be run again after any
-        changes are made to this directory.</p>
+        <td>Modules in i18n are generally the more data-driven, that is to say
+        resource bundle driven, components. These deal with higher-level
+        internationalization issues such as formatting, collation, text break
+        analysis, and transliteration.</td>
+      </tr>
 
-        <ul>
-          <li><b>brkitr/</b> Data files for character, word, sentence, title
-          casing and line boundary analysis.</li>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>layout</b>/</td>
 
-          <li><b>locales/</b> These .txt files contain ICU language and
-          culture-specific localization data. Two special bundles are
-          <b>root</b>, which is the fallback data and parent of other bundles,
-          and <b>index</b>, which contains a list of installed bundles. The
-          makefile <b>resfiles.mk</b> contains the list of resource bundle
-          files.</li>
+        <td>Contains the ICU layout engine (not a rasterizer).</td>
+      </tr>
 
-          <li><b>mappings/</b> Here are the code page converter tables. These
-          .ucm files contain mappings to and from Unicode. These are compiled
-          into .cnv files. <b>convrtrs.txt</b> is the alias mapping table from
-          various converter name formats to ICU internal format and vice versa.
-          It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
-          ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
-          converters to be built.</li>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>io</b>/</td>
 
-          <li><b>translit/</b> This directory contains transliterator rules as
-          resource bundles, a makefile <b>trnsfiles.mk</b> containing the list
-          of installed system translitaration files, and as well the special
-          bundle <b>translit_index</b> which lists the system transliterator
-          aliases.</li>
+        <td>Contains the ICU I/O library.</td>
+      </tr>
 
-          <li><b>unidata/</b> This directory contains the Unicode data files.
-          Please see <a href=
-          "http://www.unicode.org/">http://www.unicode.org/</a> for more
-          information.</li>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>data</b>/</td>
 
-          <li><b>misc/</b> The misc directory contains other data files which
-          did not fit into the above categories. Currently it only contains
-          time zone information, and a name preperation file for <a href=
-          "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
+        <td>
+          <p>This directory contains the source data in text format, which is
+          compiled into binary form during the ICU build process. It contains
+          several subdirectories, in which the data files are grouped by
+          function. Note that the build process must be run again after any
+          changes are made to this directory.</p>
 
-          <li><b>out/</b> This directory contains the assembled memory mapped
-          files.</li>
+          <p>If some of the following directories are missing, it's probably
+          because you got an official download. If you need the data source files
+          for customization, then please download the ICU source code from <a
+          href=
+          "http://www.ibm.com/software/globalization/icu/repository.jsp">CVS</a>.</p>
 
-          <li><b>out/build/</b> This directory contains intermediate (compiled)
-          files, such as .cnv, .res, etc.</li>
-        </ul>
+          <ul>
+            <li><b>in/</b> A directory that contains a pre-built data library for
+            ICU. A standard source code package will contain this file without
+            several of the following directories. This is to simplify the build
+            process for the majority of users and to reduce platform porting
+            issues.</li>
 
-        <p>If you are creating a special ICU build, you can set the ICU_DATA
-        environment variable to the out/ or the out/build/ directories, but
-        this is generally discouraged because most people set it incorrectly.
-        You can view the <a href=
-        "http://icu.sourceforge.net/userguide/icudata.html">ICU Data
-        Management</a> section of the ICU User's Guide for details.</p>
-      </td>
-    </tr>
+            <li><b>brkitr/</b> Data files for character, word, sentence, title
+            casing and line boundary analysis.</li>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/test/<b>intltest</b>/</td>
+            <li><b>locales/</b> These .txt files contain ICU language and
+            culture-specific localization data. Two special bundles are
+            <b>root</b>, which is the fallback data and parent of other bundles,
+            and <b>index</b>, which contains a list of installed bundles. The
+            makefile <b>resfiles.mk</b> contains the list of resource bundle
+            files.</li>
 
-      <td>A test suite including all C++ APIs. For information about running
-      the test suite, see the users' guide.</td>
-    </tr>
+            <li><b>mappings/</b> Here are the code page converter tables. These
+            .ucm files contain mappings to and from Unicode. These are compiled
+            into .cnv files. <b>convrtrs.txt</b> is the alias mapping table from
+            various converter name formats to ICU internal format and vice versa.
+            It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
+            ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
+            converters to be built.</li>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/test/<b>cintltst</b>/</td>
+            <li><b>translit/</b> This directory contains transliterator rules as
+            resource bundles, a makefile <b>trnsfiles.mk</b> containing the list
+            of installed system translitaration files, and as well the special
+            bundle <b>translit_index</b> which lists the system transliterator
+            aliases.</li>
 
-      <td>A test suite written in C, including all C APIs. For information
-      about running the test suite, see the users' guide.</td>
-    </tr>
+            <li><b>unidata/</b> This directory contains the Unicode data files.
+            Please see <a href=
+            "http://www.unicode.org/">http://www.unicode.org/</a> for more
+            information.</li>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/test/<b>testdata</b>/</td>
+            <li><b>misc/</b> The misc directory contains other data files which
+            did not fit into the above categories. Currently it only contains
+            time zone information, and a name preperation file for <a href=
+            "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
 
-      <td>Source text files for data, which are read by the tests. It contains
-      the subdirectories <b>out/build/</b> which is used for intermediate
-      files, and <b>out/</b> which contains <b>testdata.dat.</b></td>
-    </tr>
+            <li><b>out/</b> This directory contains the assembled memory mapped
+            files.</li>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>tools</b>/</td>
+            <li><b>out/build/</b> This directory contains intermediate (compiled)
+            files, such as .cnv, .res, etc.</li>
+          </ul>
 
-      <td>Tools for generating the data files. Data files are generated by
-      invoking <i>&lt;ICU&gt;</i>/source/data/build/makedata.bat on Win32 or
-      <i>&lt;ICU&gt;</i>/source/make on UNIX.</td>
-    </tr>
+          <p>If you are creating a special ICU build, you can set the ICU_DATA
+          environment variable to the out/ or the out/build/ directories, but
+          this is generally discouraged because most people set it incorrectly.
+          You can view the <a href=
+          "http://icu.sourceforge.net/userguide/icudata.html">ICU Data
+          Management</a> section of the ICU User's Guide for details.</p>
+        </td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>samples</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>intltest</b>/</td>
 
-      <td>Various sample programs that use ICU</td>
-    </tr>
+        <td>A test suite including all C++ APIs. For information about running
+        the test suite, see the build instructions specific to your platform
+        later in this document.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>extra</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>cintltst</b>/</td>
 
-      <td>Non-supported API additions. Currently, it contains the 'ustdio' file
-      i/o library</td>
-    </tr>
+        <td>A test suite written in C, including all C APIs. For information
+        about running the test suite, see the build instructions specific to your
+        platform later in this document.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>layout</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>iotest</b>/</td>
 
-      <td>Contains the ICU layout engine (not a rasterizer).</td>
-    </tr>
+        <td>A test suite written in C and C++ to test the icuio library. For
+        information about running the test suite, see the build instructions
+        specific to your platform later in this document.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/<b>packaging</b>/<br>
-      <i>&lt;ICU&gt;</i>/<b>debian</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>testdata</b>/</td>
 
-      <td>These directories contain scripts and tools for packaging the final
-      ICU build for various release platforms.</td>
-    </tr>
+        <td>Source text files for data, which are read by the tests. It contains
+        the subdirectories <b>out/build/</b> which is used for intermediate
+        files, and <b>out/</b> which contains <b>testdata.dat.</b></td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>config</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>tools</b>/</td>
 
-      <td>Contains helper makefiles for platform specific build commands. Used
-      by 'configure'.</td>
-    </tr>
+        <td>Tools for generating the data files. Data files are generated by
+        invoking <i>&lt;ICU&gt;</i>/source/data/build/makedata.bat on Win32 or
+        <i>&lt;ICU&gt;</i>/source/make on UNIX.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/source/<b>allinone</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>samples</b>/</td>
 
-      <td>Contains top-level ICU workspace and project files, for instance to
-      build all of ICU under one MSVC project.</td>
-    </tr>
+        <td>Various sample programs that use ICU</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/<b>include</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>extra</b>/</td>
 
-      <td>Contains the headers needed for developing software that uses ICU on
-      Windows.</td>
-    </tr>
+        <td>Non-supported API additions. Currently, it contains the 'uconv' tool
+        to perform codepage conversion on files.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/<b>lib</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>packaging</b>/<br />
+         <i>&lt;ICU&gt;</i>/<b>debian</b>/</td>
 
-      <td>Contains the import libraries for linking ICU into your Windows
-      application.</td>
-    </tr>
+        <td>These directories contain scripts and tools for packaging the final
+        ICU build for various release platforms.</td>
+      </tr>
 
-    <tr>
-      <td><i>&lt;ICU&gt;</i>/<b>bin</b>/</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>config</b>/</td>
 
-      <td>Contains the libraries and executables for using ICU on Windows.</td>
-    </tr>
-  </table><!-- end of ICU structure ==================================== -->
+        <td>Contains helper makefiles for platform specific build commands. Used
+        by 'configure'.</td>
+      </tr>
 
-  <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And
-  Install ICU</a></h2>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>allinone</b>/</td>
 
-  <h3><a name="HowToBuildSupported" href="#HowToBuildSupported" id=
-  "HowToBuildSupported">Supported Platforms</a></h3>
+        <td>Contains top-level ICU workspace and project files, for instance to
+        build all of ICU under one MSVC project.</td>
+      </tr>
 
-  <table border="1" cellpadding="3" summary=
-  "ICU can be built on many platforms.">
-    <caption>
-      Here is a status of functionality of ICU on several different platforms.
-    </caption>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>include</b>/</td>
 
-    <tr>
-      <th scope="col">Operating system</th>
+        <td>Contains the headers needed for developing software that uses ICU on
+        Windows.</td>
+      </tr>
 
-      <th scope="col">Compiler</th>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>lib</b>/</td>
 
-      <th scope="col">Testing frequency</th>
-    </tr>
+        <td>Contains the import libraries for linking ICU into your Windows
+        application.</td>
+      </tr>
 
-    <tr>
-      <td>Windows XP</td>
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>bin</b>/</td>
 
-      <td>Microsoft Visual C++ .NET 2003 (7.1)</td>
+        <td>Contains the libraries and executables for using ICU on Windows.</td>
+      </tr>
+    </table>
+    <!-- end of ICU structure ==================================== -->
 
-      <td>Reference platform</td>
-    </tr>
+    <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And
+    Install ICU</a></h2>
 
-    <tr>
-      <td>Red Hat Enterprise Linux 4 Update 2</td>
+    <h3><a name="HowToBuildSupported" href="#HowToBuildSupported" id=
+    "HowToBuildSupported">Supported Platforms</a></h3>
 
-      <td>gcc 3.4.4</td>
+    <table border="1" cellpadding="3" summary=
+    "ICU can be built on many platforms.">
+      <caption>
+        Here is a status of functionality of ICU on several different platforms.
+      </caption>
 
-      <td>Reference platform</td>
-    </tr>
+      <tr>
+        <th scope="col">Operating system</th>
 
-    <tr>
-      <td>AIX 5.2</td>
+        <th scope="col">Compiler</th>
 
-      <td>Visual Age C++ 6.0</td>
+        <th scope="col">Testing frequency</th>
+      </tr>
 
-      <td>Reference platform</td>
-    </tr>
+      <tr>
+        <td>Windows XP</td>
 
-    <tr>
-      <td>Solaris 9 (SunOS 5.9)</td>
+        <td>Microsoft Visual C++ .NET 2003 (7.1)</td>
 
-      <td>Sun Studio 8 (Sun C++ 5.5)</td>
+        <td>Reference platform</td>
+      </tr>
 
-      <td>Reference platform</td>
-    </tr>
+      <tr>
+        <td>Red Hat Enterprise Linux 4 Update 2</td>
 
-    <tr>
-      <td>HP-UX 11.11</td>
+        <td>gcc 3.4.4</td>
 
-      <td>aCC A.03.50<br>
-      cc B.11.11.08</td>
+        <td>Reference platform</td>
+      </tr>
 
-      <td>Reference platform</td>
-    </tr>
+      <tr>
+        <td>AIX 5.2</td>
 
-    <tr>
-      <td>Red Hat Enterprise Linux 3 Update 4</td>
+        <td>Visual Age C++ 6.0</td>
 
-      <td>gcc 3.2.3</td>
+        <td>Reference platform</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Solaris 9 (SunOS 5.9)</td>
 
-    <tr>
-      <td>Windows 2000 with Cygwin</td>
+        <td>Sun Studio 8 (Sun C++ 5.5)</td>
 
-      <td>Microsoft Visual C++ .NET 2003 (7.1)</td>
+        <td>Reference platform</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>HP-UX 11.11</td>
 
-    <tr>
-      <td>Mac OS X (10.4)</td>
+        <td>aCC A.03.50<br />
+         cc B.11.11.08</td>
 
-      <td>gcc 3.3</td>
+        <td>Reference platform</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Red Hat Enterprise Linux 3 Update 4</td>
 
-    <tr>
-      <td>Solaris 7 (SunOS 5.7)</td>
+        <td>gcc 3.2.3</td>
 
-      <td>Workshop Pro (Forte) CC 6.0</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Windows 2000 with Cygwin</td>
 
-    <tr>
-      <td>Solaris 10</td>
+        <td>Microsoft Visual C++ .NET 2003 (7.1)</td>
 
-      <td>gcc 4.0.2</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Mac OS X (10.4)</td>
 
-    <tr>
-      <td>AIX 5.1.0 L</td>
+        <td>gcc 3.3</td>
 
-      <td>Visual Age C++ 5.0</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Solaris 7 (SunOS 5.7)</td>
 
-    <tr>
-      <td>SUSE Linux Enterprise Server 9 SP1</td>
+        <td>Workshop Pro (Forte) CC 6.0</td>
 
-      <td>Intel C++ Compiler 9.0</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>Solaris 10</td>
 
-    <tr>
-      <td>SUSE Linux Enterprise Server 9 (PowerPC)</td>
+        <td>gcc 4.0.2</td>
 
-      <td>Visual Age 8.0</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Regularly tested</td>
-    </tr>
+      <tr>
+        <td>AIX 5.1.0 L</td>
 
-    <tr>
-      <td>Windows XP</td>
+        <td>Visual Age C++ 5.0</td>
 
-      <td>Microsoft Visual C++ .NET 2005</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>SUSE Linux Enterprise Server 9 SP1</td>
 
-    <tr>
-      <td>z/OS 1.7</td>
+        <td>Intel C++ Compiler 9.0</td>
 
-      <td>cxx 1.7</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>SUSE Linux Enterprise Server 9 (PowerPC)</td>
 
-    <tr>
-      <td>Cygwin</td>
+        <td>Visual Age 8.0</td>
 
-      <td>gcc 3.4.4</td>
+        <td>Regularly tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>Windows XP</td>
 
-    <tr>
-      <td>i5/OS (OS/400 iSeries) V5R3</td>
+        <td>Microsoft Visual C++ .NET 2005</td>
 
-      <td>iCC</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>z/OS 1.7</td>
 
-    <tr>
-      <td>Windows 98</td>
+        <td>cxx 1.7</td>
 
-      <td>Microsoft Visual C++ 6.0</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>Cygwin</td>
 
-    <tr>
-      <td>MinGW</td>
+        <td>gcc 3.4.4</td>
 
-      <td>gcc</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>i5/OS (OS/400 iSeries) V5R3</td>
 
-    <tr>
-      <td>NetBSD, OpenBSD, FreeBSD</td>
+        <td>iCC</td>
 
-      <td>gcc</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>Windows 98</td>
 
-    <tr>
-      <td>QNX</td>
+        <td>Microsoft Visual C++ 6.0</td>
 
-      <td>gcc</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>MinGW</td>
 
-    <tr>
-      <td>BeOS</td>
+        <td>gcc</td>
 
-      <td>gcc</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>NetBSD, OpenBSD, FreeBSD</td>
 
-    <tr>
-      <td>SGI/IRIX</td>
+        <td>gcc</td>
 
-      <td>MIPSpro CC</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>QNX</td>
 
-    <tr>
-      <td>Tru64 (OSF)</td>
+        <td>gcc</td>
 
-      <td>Compaq's cxx compiler</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
+      <tr>
+        <td>BeOS</td>
 
-    <tr>
-      <td>MP-RAS</td>
+        <td>gcc</td>
 
-      <td>NCR MP-RAS C/C++ Compiler</td>
+        <td>Rarely tested</td>
+      </tr>
 
-      <td>Rarely tested</td>
-    </tr>
-  </table>
+      <tr>
+        <td>SGI/IRIX</td>
 
-  <p><br></p>
+        <td>MIPSpro CC</td>
 
-  <h4>Key to testing frequency</h4>
+        <td>Rarely tested</td>
+      </tr>
 
-  <dl>
-    <dt><i>Reference platform</i></dt>
+      <tr>
+        <td>Tru64 (OSF)</td>
 
-    <dd>ICU will work on these platforms with these compilers</dd>
+        <td>Compaq's cxx compiler</td>
 
-    <dt><i>Regularly tested</i></dt>
+        <td>Rarely tested</td>
+      </tr>
 
-    <dd>ICU should work on these platforms with these compilers</dd>
+      <tr>
+        <td>MP-RAS</td>
 
-    <dt><i>Rarely tested</i></dt>
+        <td>NCR MP-RAS C/C++ Compiler</td>
 
-    <dd>ICU has been ported to these platforms but may not have been tested
-    there recently</dd>
-  </dl>
+        <td>Rarely tested</td>
+      </tr>
+    </table>
 
-  <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id=
-  "HowToBuildWindows">How To Build And Install On Windows</a></h3>
+    <p><br />
+    </p>
 
-  <p>Building International Components for Unicode requires:</p>
+    <h4>Key to testing frequency</h4>
 
-  <ul>
-    <li>Microsoft Windows 2000 or above</li>
+    <dl>
+      <dt><i>Reference platform</i></dt>
 
-    <li>Microsoft Visual C++ 2003</li>
+      <dd>ICU will work on these platforms with these compilers</dd>
 
-    <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions
-    of Microsoft Visual C++ and other compilers are used to build ICU.</li>
-  </ul>
+      <dt><i>Regularly tested</i></dt>
 
-  <p>The steps are:</p>
+      <dd>ICU should work on these platforms with these compilers</dd>
 
-  <ol>
-    <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
-    line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
-    WinZip.</li>
+      <dt><i>Rarely tested</i></dt>
 
-    <li>Be sure that the ICU binary directory, <i>&lt;ICU&gt;</i>\bin\, is
-    included in the <strong>PATH</strong> environment variable. The tests will
-    not work without the location of the ICU DLL files in the path.</li>
+      <dd>ICU has been ported to these platforms but may not have been tested
+      there recently</dd>
+    </dl>
 
-    <li>Open the "<i>&lt;ICU&gt;</i>\source\allinone\allinone.sln" workspace
-    file in Microsoft Visual Studio .NET 2003. (This solution includes all the
-    International Components for Unicode libraries, necessary ICU building
-    tools, and the test suite projects). Please see the <a href=
-    "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
-    build from the command line instead.</li>
+    <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id=
+    "HowToBuildWindows">How To Build And Install On Windows</a></h3>
 
-    <li>Set the active configuration to "Debug" or "Release" (See <a href=
-    "#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
+    <p>Building International Components for Unicode requires:</p>
 
-    <li>Choose the "Build" menu and select "Rebuild Solution". If you want to
-    build the Debug and Release at the same time, see the <a href=
-    "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
+    <ul>
+      <li>Microsoft Windows 2000 or above</li>
 
-    <li>Run the C++ test suite, "intltest". To do this: set the active startup
-    project to "intltest", and press Ctrl+F5 to run it. Make sure that it
-    passes without any errors.</li>
+      <li>Microsoft Visual C++ 2003</li>
 
-    <li>Run the C test suite, "cintltst". To do this: set the active startup
-    project to "cintltst", and press Ctrl+F5 to run it. Make sure that it
-    passes without any errors.</li>
+      <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions
+      of Microsoft Visual C++ and other compilers are used to build ICU.</li>
+    </ul>
 
-    <li>Run the I/O test suite, "iotest". To do this: set the active startup
-    project to "iotest", and press Ctrl+F5 to run it. Make sure that it passes
-    without any errors.</li>
+    <p>The steps are:</p>
 
-    <li>You are now able to develop applications with ICU by using the
-    libraries and tools in <i>&lt;ICU&gt;</i>\bin\. The headers are in
-    <i>&lt;ICU&gt;</i>\include\ and the link libraries are in
-    <i>&lt;ICU&gt;</i>\lib\. To install the ICU runtime on a machine, or ship
-    it with your application, copy the needed components from
-    <i>&lt;ICU&gt;</i>\bin\ to a location on the system PATH or to your
-    application directory.</li>
-  </ol>
+    <ol>
+      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
+      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
+      WinZip.</li>
 
-  <p><a name="HowToBuildWindowsCommandLine" id=
-  "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
-  Note:</strong></a> You can build ICU from the command line. Assuming that you
-  have properly installed Microsoft Visual C++ to support command line
-  execution, you can run the following command, 'devenv.com
-  <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build Release'. You can also
-  use Cygwin with this compiler to build ICU, and you can refer to the <a href=
-  "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
-  section for more details.</p>
+      <li>Be sure that the ICU binary directory, <i>&lt;ICU&gt;</i>\bin\, is
+      included in the <strong>PATH</strong> environment variable. The tests will
+      not work without the location of the ICU DLL files in the path.</li>
 
-  <p><a name="HowToBuildWindowsConfig" id=
-  "HowToBuildWindowsConfig"><strong>Setting Active Configuration
-  Note:</strong></a> To set the active configuration, two different
-  possibilities are:</p>
+      <li>Open the "<i>&lt;ICU&gt;</i>\source\allinone\allinone.sln" workspace
+      file in Microsoft Visual Studio .NET 2003. (This solution includes all the
+      International Components for Unicode libraries, necessary ICU building
+      tools, and the test suite projects). Please see the <a href=
+      "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
+      build from the command line instead.</li>
 
-  <ul>
-    <li>Choose "Build" menu, select "Configuration Manager...", and select
-    "Release" or "Debug" for the Active Configuration Solution.</li>
+      <li>Set the active configuration to "Debug" or "Release" (See <a href=
+      "#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
 
-    <li>Another way is to select the desired build configuration from "Solution
-    Configurations" dropdown menu from the standard toolbar. It will say
-    "Release" or "Debug" in the dropdown list.</li>
-  </ul>
+      <li>Choose the "Build" menu and select "Rebuild Solution". If you want to
+      build the Debug and Release at the same time, see the <a href=
+      "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
 
-  <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batch
-  Configuration Note:</strong></a> If you want to build the Debug and Release
-  configurations at the same time, choose "Build" menu, and select "Batch
-  Build...". Click the "Select All" button, and then click the "Rebuild"
-  button.</p>
+      <li>Run the C++ test suite, "intltest". To do this: set the active startup
+      project to "intltest", and press Ctrl+F5 to run it. Make sure that it
+      passes without any errors.</li>
 
-  <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id=
-  "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3>
+      <li>Run the C test suite, "cintltst". To do this: set the active startup
+      project to "cintltst", and press Ctrl+F5 to run it. Make sure that it
+      passes without any errors.</li>
 
-  <p>Building International Components for Unicode with this configuration
-  requires:</p>
+      <li>Run the I/O test suite, "iotest". To do this: set the active startup
+      project to "iotest", and press Ctrl+F5 to run it. Make sure that it passes
+      without any errors.</li>
 
-  <ul>
-    <li>Microsoft NT 4.0 or above, or Windows 98 or above</li>
+      <li>You are now able to develop applications with ICU by using the
+      libraries and tools in <i>&lt;ICU&gt;</i>\bin\. The headers are in
+      <i>&lt;ICU&gt;</i>\include\ and the link libraries are in
+      <i>&lt;ICU&gt;</i>\lib\. To install the ICU runtime on a machine, or ship
+      it with your application, copy the needed components from
+      <i>&lt;ICU&gt;</i>\bin\ to a location on the system PATH or to your
+      application directory.</li>
+    </ol>
 
-    <li>Microsoft Visual C++ 6.0 or above (when gcc isn't used).</li>
+    <p><a name="HowToBuildWindowsCommandLine" id=
+    "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
+    Note:</strong></a> You can build ICU from the command line. Assuming that you
+    have properly installed Microsoft Visual C++ to support command line
+    execution, you can run the following command, 'devenv.com
+    <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build Release'. You can also
+    use Cygwin with this compiler to build ICU, and you can refer to the <a href=
+    "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
+    section for more details.</p>
 
-    <li>Cygwin with the following installed:
+    <p><a name="HowToBuildWindowsConfig" id=
+    "HowToBuildWindowsConfig"><strong>Setting Active Configuration
+    Note:</strong></a> To set the active configuration, two different
+    possibilities are:</p>
 
-      <ul>
-        <li>bash</li>
+    <ul>
+      <li>Choose "Build" menu, select "Configuration Manager...", and select
+      "Release" or "Debug" for the Active Configuration Solution.</li>
 
-        <li>GNU make</li>
+      <li>Another way is to select the desired build configuration from "Solution
+      Configurations" dropdown menu from the standard toolbar. It will say
+      "Release" or "Debug" in the dropdown list.</li>
+    </ul>
 
-        <li>man (if you plan to look at the man pages)</li>
-      </ul>
-    </li>
-  </ul>
+    <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batch
+    Configuration Note:</strong></a> If you want to build the Debug and Release
+    configurations at the same time, choose "Build" menu, and select "Batch
+    Build...". Click the "Select All" button, and then click the "Rebuild"
+    button.</p>
 
-  <p>There are two ways you can build ICU with Cygwin. You can build with gcc
-  or Microsoft Visual C++. If you use gcc, the resulting libraries and tools
-  will depend on the Cygwin environment. If you use Microsoft Visual C++, the
-  resulting libraries and tools do not depend on Cygwin and can be more easily
-  distributed to other Windows computers (the generated man pages and shell
-  scripts still need Cygwin). To build with gcc, please follow the "<a href=
-  "#HowToBuildUNIX">How To Build And Install On UNIX</a>" instructions, while
-  you are inside a Cygwin bash shell. To build with Microsoft Visual C++,
-  please use the following instructions:</p>
+    <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id=
+    "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3>
 
-  <ol>
-    <li>Start the Windows "Command Prompt" window. This is different from the
-    gcc build, which requires the Cygwin Bash command prompt. The Microsoft
-    Visual C++ compiler will not work with a bash command prompt.</li>
+    <p>Building International Components for Unicode with this configuration
+    requires:</p>
 
-    <li>If the computer isn't set up to use Visual C++ from the command line,
-    you need to run VCVARS32.BAT (for example: "<tt>C:\Program Files\Microsoft
-    Visual Studio\VC98\Bin\VCVARS32.BAT</tt>").</li>
+    <ul>
+      <li>Microsoft NT 4.0 or above, or Windows 98 or above</li>
 
-    <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
-    line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
-    WinZip.</li>
+      <li>Microsoft Visual C++ 6.0 or above (when gcc isn't used).</li>
 
-    <li>Change directory to "icu/source", which is where you unzipped ICU.</li>
+      <li>
+        Cygwin with the following installed: 
 
-    <li>Run "<tt>bash <a href="source/runConfigureICU">./runConfigureICU</a>
-    Cygwin/MSVC</tt>" (See <a href="#HowToWindowsConfigureICU">Windows
-    configuration note</a> and non-functional configure options below).</li>
+        <ul>
+          <li>bash</li>
 
-    <li>Type <tt>"make"</tt> to compile the libraries and all the data files.
-    This make command should be GNU make.</li>
+          <li>GNU make</li>
 
-    <li>Optionally, type <tt>"make check"</tt> to run the test suite, which
-    checks for ICU's functionality integrity (See <a href=
-    "#HowToTestWithoutGmake">testing note</a> below).</li>
+          <li>man (if you plan to look at the man pages)</li>
+        </ul>
+      </li>
+    </ul>
 
-    <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix=
-    option on configure or runConfigureICU, ICU will be installed to the
-    directory you specified. (See <a href="#HowToInstallICU">installation
-    note</a> below).</li>
-  </ol>
+    <p>There are two ways you can build ICU with Cygwin. You can build with gcc
+    or Microsoft Visual C++. If you use gcc, the resulting libraries and tools
+    will depend on the Cygwin environment. If you use Microsoft Visual C++, the
+    resulting libraries and tools do not depend on Cygwin and can be more easily
+    distributed to other Windows computers (the generated man pages and shell
+    scripts still need Cygwin). To build with gcc, please follow the "<a href=
+    "#HowToBuildUNIX">How To Build And Install On UNIX</a>" instructions, while
+    you are inside a Cygwin bash shell. To build with Microsoft Visual C++,
+    please use the following instructions:</p>
 
-  <p><a name="HowToWindowsConfigureICU" id=
-  "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows
-  NOTE:</strong></a> In addition to the Unix <a href=
-  "#HowToConfigureICU">configuration note</a> the following configure options
-  currently do not work on Windows with Microsoft's compiler. Some options can
-  work by manually editing <tt>icu/source/common/unicode/pwin32.h</tt>, but
-  manually editing the files is not recommended.</p>
+    <ol>
+      <li>Start the Windows "Command Prompt" window. This is different from the
+      gcc build, which requires the Cygwin Bash command prompt. The Microsoft
+      Visual C++ compiler will not work with a bash command prompt.</li>
 
-  <ul>
-    <li><tt>--disable-renaming</tt></li>
+      <li>If the computer isn't set up to use Visual C++ from the command line,
+      you need to run VCVARS32.BAT (for example: "<tt>C:\Program Files\Microsoft
+      Visual Studio\VC98\Bin\VCVARS32.BAT</tt>").</li>
 
-    <li><tt>--disable-threading</tt></li>
+      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
+      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
+      WinZip.</li>
 
-    <li><tt>--disable-tracing</tt></li>
+      <li>Change directory to "icu/source", which is where you unzipped ICU.</li>
 
-    <li><tt>--enable-64bit-libs</tt></li>
+      <li>Run "<tt>bash <a href="source/runConfigureICU">./runConfigureICU</a>
+      Cygwin/MSVC</tt>" (See <a href="#HowToWindowsConfigureICU">Windows
+      configuration note</a> and non-functional configure options below).</li>
 
-    <li><tt>--enable-rpath</tt></li>
+      <li>Type <tt>"make"</tt> to compile the libraries and all the data files.
+      This make command should be GNU make.</li>
 
-    <li><tt>--with-iostream</tt></li>
+      <li>Optionally, type <tt>"make check"</tt> to run the test suite, which
+      checks for ICU's functionality integrity (See <a href=
+      "#HowToTestWithoutGmake">testing note</a> below).</li>
 
-    <li><tt>--enable-static</tt> (Requires that U_STATIC_IMPLEMENTATION be
-    defined in user code that links against ICU's static libraries.)</li>
+      <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix=
+      option on configure or runConfigureICU, ICU will be installed to the
+      directory you specified. (See <a href="#HowToInstallICU">installation
+      note</a> below).</li>
+    </ol>
 
-    <li><tt>--with-data-packaging=files</tt> (The pkgdata tool currently does
-    not work in this mode. Manual packaging is required to use this mode.)</li>
-  </ul>
+    <p><a name="HowToWindowsConfigureICU" id=
+    "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows
+    NOTE:</strong></a> In addition to the Unix <a href=
+    "#HowToConfigureICU">configuration note</a> the following configure options
+    currently do not work on Windows with Microsoft's compiler. Some options can
+    work by manually editing <tt>icu/source/common/unicode/pwin32.h</tt>, but
+    manually editing the files is not recommended.</p>
 
-  <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX" id="HowToBuildUNIX">How
-  To Build And Install On UNIX</a></h3>
+    <ul>
+      <li><tt>--disable-renaming</tt></li>
 
-  <p>Building International Components for Unicode on UNIX requires:</p>
+      <li><tt>--disable-threading</tt></li>
 
-  <ul>
-    <li>A C++ compiler installed on the target machine (for example: gcc, CC,
-    xlC_r, aCC, cxx, etc...).</li>
+      <li><tt>--disable-tracing</tt></li>
 
-    <li>An ANSI C compiler installed on the target machine (for example:
-    cc).</li>
+      <li><tt>--enable-rpath</tt></li>
 
-    <li>A recent version of GNU make (3.77+).</li>
+      <li><tt>--with-iostream</tt></li>
 
-    <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS
-    build section</a> of this document for further details.</li>
-  </ul>
+      <li><tt>--enable-static</tt> (Requires that U_STATIC_IMPLEMENTATION be
+      defined in user code that links against ICU's static libraries.)</li>
 
-  <p>Here are the steps to build ICU:</p>
+      <li><tt>--with-data-packaging=files</tt> (The pkgdata tool currently does
+      not work in this mode. Manual packaging is required to use this mode.)</li>
+    </ul>
 
-  <ol>
-    <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
-    icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d &lt;
-    icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
+    <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX" id="HowToBuildUNIX">How
+    To Build And Install On UNIX</a></h3>
 
-    <li>Change directory to the "icu/source".</li>
+    <p>Building International Components for Unicode on UNIX requires:</p>
 
-    <li>Run <tt>"chmod +x runConfigureICU configure install-sh"</tt> because
-    these files may have the wrong permissions.</li>
+    <ul>
+      <li>A C++ compiler installed on the target machine (for example: gcc, CC,
+      xlC_r, aCC, cxx, etc...).</li>
 
-    <li>Run the <tt><a href="source/runConfigureICU">runConfigureICU</a></tt>
-    script for your platform. (See <a href="#HowToConfigureICU">configuration
-    note</a> below).</li>
+      <li>An ANSI C compiler installed on the target machine (for example:
+      cc).</li>
 
-    <li>Type <tt>"gmake"</tt> (or "make" if GNU make is the default make on
-    your platform) to compile the libraries and all the data files. The proper
-    name of the GNU make command is printed at the end of the configuration
-    run, as in "You must use gmake to compile ICU".</li>
+      <li>A recent version of GNU make (3.77+).</li>
 
-    <li>Optionally, type <tt>"gmake check"</tt> to run the test suite, which
-    checks for ICU's functionality integrity (See <a href=
-    "#HowToTestWithoutGmake">testing note</a> below).</li>
+      <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS
+      build section</a> of this document for further details.</li>
+    </ul>
 
-    <li>Type <tt>"gmake install"</tt> to install ICU. If you used the --prefix=
-    option on configure or runConfigureICU, ICU will be installed to the
-    directory you specified. (See <a href="#HowToInstallICU">installation
-    note</a> below).</li>
-  </ol>
+    <p>Here are the steps to build ICU:</p>
 
-  <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring ICU
-  NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how
-  to run it and a list of supported platforms. You may also want to type
-  <tt>"./configure --help"</tt> to print the available configure options that
-  you may want to give runConfigureICU. If you are not using the
-  runConfigureICU script, or your platform is not supported by the script, you
-  may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and
-  type <tt>"./configure"</tt>. Some of the more frequently used options to
-  configure are --disable-64bit-libs to create 32-bit libraries, and --srcdir
-  to do out of source builds (build the libraries in the current location).
-  HP-UX user's, please see this <a href="#ImportantNotesHPUX">note regarding
-  HP-UX multithreaded build issues</a> with newer compilers. Solaris user's,
-  please see this <a href="#ImportantNotesSolaris">note regarding Solaris
-  multithreaded build issues</a>.</p>
+    <ol>
+      <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
+      icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d &lt;
+      icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
 
-  <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Running
-  The Tests From The Command Line NOTE:</strong></a> You may have to set
-  certain variables if you with to run test programs individually, that is
-  apart from "gmake check". The environment variable <strong>ICU_DATA</strong>
-  can be set to the full pathname of the data directory to indicate where the
-  locale data files and conversion mapping tables are when you are not using
-  the shared library (e.g. by using the .dat archive or the individual data
-  files). The trailing "/" is required after the directory name (e.g.
-  "$Root/source/data/out/" will work, but the value "$Root/source/data/out" is
-  not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
-  complete shared data library is in your library path.</p>
+      <li>Change directory to the "icu/source".</li>
 
-  <p><a name="HowToInstallICU" id="HowToInstallICU"><strong>Installing ICU
-  NOTE:</strong></a> Some platforms use package management tools to control the
-  installation and uninstallation of files on the system, as well as the
-  integrity of the system configuration. You may want to check if ICU can be
-  packaged for your package management tools by looking into the "packaging"
-  directory. (Please note that if you are using a snapshot of ICU from CVS, it
-  is probable that the packaging scripts or related files are not up to date
-  with the contents of ICU at this time, so use them with caution).</p>
+      <li>Run <tt>"chmod +x runConfigureICU configure install-sh"</tt> because
+      these files may have the wrong permissions.</li>
 
-  <h3><a name="HowToBuildZOS" href="#HowToBuildZOS" id="HowToBuildZOS">How To
-  Build And Install On z/OS (OS/390)</a></h3>
+      <li>Run the <tt><a href="source/runConfigureICU">runConfigureICU</a></tt>
+      script for your platform. (See <a href="#HowToConfigureICU">configuration
+      note</a> below).</li>
 
-  <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but IBM
-  tests only the z/OS installation. These platforms commonly are called "MVS".
-  You install ICU in a z/OS UNIX system services file system such as HFS or
-  zFS. On this platform, it is important that you understand a few details:</p>
+      <li>Type <tt>"gmake"</tt> (or "make" if GNU make is the default make on
+      your platform) to compile the libraries and all the data files. The proper
+      name of the GNU make command is printed at the end of the configuration
+      run, as in "You must use gmake to compile ICU".</li>
 
-  <ul>
-    <li>APAR PQ58392 may be needed by z/OS 1.2 or 1.3 in order to get some ICU
-    number formatting functions to work properly. The APAR affects C and C++
-    code.</li>
+      <li>Optionally, type <tt>"gmake check"</tt> to run the test suite, which
+      checks for ICU's functionality integrity (See <a href=
+      "#HowToTestWithoutGmake">testing note</a> below).</li>
 
-    <li>The makedep executable that is used with the z/OS ICU build process is
-    not shipped with ICU. It is available at the <a href=
-    "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
-    Tools and Toys</a> site. The PATH environment variable should be updated to
-    contain the location of this executable prior to build. Alternatively,
-    makedep may be moved into an existing PATH directory.</li>
+      <li>Type <tt>"gmake install"</tt> to install ICU. If you used the --prefix=
+      option on configure or runConfigureICU, ICU will be installed to the
+      directory you specified. (See <a href="#HowToInstallICU">installation
+      note</a> below).</li>
+    </ol>
 
-    <li>The gnu utilities gmake and gzip/gunzip are needed and can be obtained
-    for z/OS from <a href=
-    "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
-    Tools and Toys</a>.</li>
+    <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring ICU
+    NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how
+    to run it and a list of supported platforms. You may also want to type
+    <tt>"./configure --help"</tt> to print the available configure options that
+    you may want to give runConfigureICU. If you are not using the
+    runConfigureICU script, or your platform is not supported by the script, you
+    may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and
+    type <tt>"./configure"</tt>. Some of the more frequently used options to
+    configure are --disable-64bit-libs to create 32-bit libraries, and --srcdir
+    to do out of source builds (build the libraries in the current location).
+    HP-UX user's, please see this <a href="#ImportantNotesHPUX">note regarding
+    HP-UX multithreaded build issues</a> with newer compilers. Solaris user's,
+    please see this <a href="#ImportantNotesSolaris">note regarding Solaris
+    multithreaded build issues</a>.</p>
 
-    <li>Since the default make on z/OS is not gmake, the pkgdata tool requires
-    that the "make" command is aliased to your installed version of gmake. You
-    may also need to set $MAKE equal to the fully qualified path of GNU make.
-    GNU make is available with the "z/OS UNIX - Tools and Toys" that was
-    mentioned above. ICU requires the same GNU make as described in the UNIX
-    build instructions.</li>
+    <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Running
+    The Tests From The Command Line NOTE:</strong></a> You may have to set
+    certain variables if you with to run test programs individually, that is
+    apart from "gmake check". The environment variable <strong>ICU_DATA</strong>
+    can be set to the full pathname of the data directory to indicate where the
+    locale data files and conversion mapping tables are when you are not using
+    the shared library (e.g. by using the .dat archive or the individual data
+    files). The trailing "/" is required after the directory name (e.g.
+    "$Root/source/data/out/" will work, but the value "$Root/source/data/out" is
+    not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
+    complete shared data library is in your library path.</p>
 
-    <li>Since USS does not support using the mmap() function over NFS, it is
-    recommended that you build ICU on a local filesystem. Once ICU has been
-    built, you should not have this problem while using ICU when the data
-    library has been built as a shared library, which is this is the default
-    setting.</li>
+    <p><a name="HowToInstallICU" id="HowToInstallICU"><strong>Installing ICU
+    NOTE:</strong></a> Some platforms use package management tools to control the
+    installation and uninstallation of files on the system, as well as the
+    integrity of the system configuration. You may want to check if ICU can be
+    packaged for your package management tools by looking into the "packaging"
+    directory. (Please note that if you are using a snapshot of ICU from CVS, it
+    is probable that the packaging scripts or related files are not up to date
+    with the contents of ICU at this time, so use them with caution).</p>
 
-    <li>Encoding considerations: The source code assumes that it is compiled
-    with codepage ibm-1047 (to be exact, the UNIX System Services variant of
-    it). The pax command converts all of the source code files from ASCII to
-    codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
-    must not be converted, or must be converted back to their original state.
-    You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a> script
-    to do this for you automatically. It will unpackage the tar file and
-    convert all the necessary files for you automatically.</li>
+    <h3><a name="HowToBuildZOS" href="#HowToBuildZOS" id="HowToBuildZOS">How To
+    Build And Install On z/OS (OS/390)</a></h3>
 
-    <li>z/OS supports both native S/390 hexadecimal floating point and (with
-    OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
-    time option. Applications built with IEEE should use ICU DLLs that are
-    built with IEEE (and vice versa). The environment variable IEEE390=0 will
-    cause the z/OS version of ICU to be built without IEEE floating point
-    support and use the native hexadecimal floating point. By default ICU is
-    built with IEEE 754 support. Native floating point support is sufficient
-    for codepage conversion, resource bundle and UnicodeString operations, but
-    the Format APIs require IEEE binary floating point.</li>
+    <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but IBM
+    tests only the z/OS installation. These platforms commonly are called "MVS".
+    You install ICU in a z/OS UNIX system services file system such as HFS or
+    zFS. On this platform, it is important that you understand a few details:</p>
 
-    <li>
-      <p>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
-      bring performance improvement opportunities to call-intensive C and C++
-      applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so if
-      you are considering using XPLINK in your application that uses ICU, you
-      should consider building the XPLINK-enabled version of ICU. You need to
-      set ICU's environment variable <code>OS390_XPLINK=1</code> prior to
-      invoking the make process to produce binaries that are enabled for
-      XPLINK.</p>
+    <ul>
+      <li>APAR PQ58392 may be needed by z/OS 1.2 or 1.3 in order to get some ICU
+      number formatting functions to work properly. The APAR affects C and C++
+      code.</li>
 
-      <p>Note: XPLINK, which is enabled for z/OS 1.2 and later, requires the
-      PTF PQ69418 to build XPLINK enabled binaries.</p>
-    </li>
+      <li>The makedep executable that is used with the z/OS ICU build process is
+      not shipped with ICU. It is available at the <a href=
+      "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
+      Tools and Toys</a> site. The PATH environment variable should be updated to
+      contain the location of this executable prior to build. Alternatively,
+      makedep may be moved into an existing PATH directory.</li>
 
-    <li>Currently in ICU 3.0, there is an issue with building on z/OS without
-    XPLINK and with the C++ iostream. By default, the iostream library on z/OS
-    is XPLINK enabled. If you are not building an XPLINK enabled version of
-    ICU, you should use the <code>--with-iostream=old</code> configure option
-    when using runConfigureICU. This will prevent applications that use the
-    icuio library from crashing.</li>
+      <li>The gnu utilities gmake and gzip/gunzip are needed and can be obtained
+      for z/OS from <a href=
+      "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
+      Tools and Toys</a>.</li>
 
-    <li>
-      <p>When you build ICU on a system such as z/OS 1.2, the binaries that
-      result can run on that level of the operating system and later, such as
-      z/OS 1.3 and z/OS 1.4. It's possible that you may have a z/OS 1.4 system,
-      but you may need to deliver binaries on z/OS 1.2 and above. z/OS gives
-      you this ability by targeting the complier and linker to run at the older
-      level, thereby producing the desired binaries.</p>
+      <li>Since the default make on z/OS is not gmake, the pkgdata tool requires
+      that the "make" command is aliased to your installed version of gmake. You
+      may also need to set $MAKE equal to the fully qualified path of GNU make.
+      GNU make is available with the "z/OS UNIX - Tools and Toys" that was
+      mentioned above. ICU requires the same GNU make as described in the UNIX
+      build instructions.</li>
 
-      <p>To set the compiler and LE environment to OS/390 2.10, specify the
-      following, "<code>./runConfigureICU OS390V2R10</code>"</p>
+      <li>Since USS does not support using the mmap() function over NFS, it is
+      recommended that you build ICU on a local filesystem. Once ICU has been
+      built, you should not have this problem while using ICU when the data
+      library has been built as a shared library, which is this is the default
+      setting.</li>
 
-      <p>To set the compiler and LE environment to z/OS 1.2 specify the
-      following, "<code>./runConfigureICU zOSV1R2</code>"</p>
-    </li>
+      <li>Encoding considerations: The source code assumes that it is compiled
+      with codepage ibm-1047 (to be exact, the UNIX System Services variant of
+      it). The pax command converts all of the source code files from ASCII to
+      codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
+      must not be converted, or must be converted back to their original state.
+      You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a> script
+      to do this for you automatically. It will unpackage the tar file and
+      convert all the necessary files for you automatically.</li>
 
-    <li>The rest of the instructions for building and testing ICU on z/OS with
-    UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To
-    Build And Install On UNIX</a> section.</li>
-  </ul>
+      <li>z/OS supports both native S/390 hexadecimal floating point and (with
+      OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
+      time option. Applications built with IEEE should use ICU DLLs that are
+      built with IEEE (and vice versa). The environment variable IEEE390=0 will
+      cause the z/OS version of ICU to be built without IEEE floating point
+      support and use the native hexadecimal floating point. By default ICU is
+      built with IEEE 754 support. Native floating point support is sufficient
+      for codepage conversion, resource bundle and UnicodeString operations, but
+      the Format APIs require IEEE binary floating point.</li>
 
-  <h4>z/OS (Batch/PDS) support outside the UNIX system services
-  environment</h4>
+      <li>
+        <p>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
+        bring performance improvement opportunities to call-intensive C and C++
+        applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so if
+        you are considering using XPLINK in your application that uses ICU, you
+        should consider building the XPLINK-enabled version of ICU. You need to
+        set ICU's environment variable <code>OS390_XPLINK=1</code> prior to
+        invoking the make process to produce binaries that are enabled for
+        XPLINK.</p>
 
-  <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
-  addition, there is a z/OS specific environment variable (OS390BATCH) to build
-  some libraries into the z/OS native file system. This is useful, for example,
-  when your application is externalized via Job Control Language (JCL).</p>
+        <p>Note: XPLINK, which is enabled for z/OS 1.2 and later, requires the
+        PTF PQ69418 to build XPLINK enabled binaries.</p>
+      </li>
 
-  <p>The OS390BATCH environment variable enables non-UNIX support including the
-  batch environment. When OS390BATCH is set, the libicuuc<i>XX</i>.dll,
-  libicudt<i>XX</i>e.dll, and libicudt<i>XX</i>e_stub.dll binaries are built
-  into data sets (the native file system). Turning on OS390BATCH does not turn
-  off the normal z/OS UNIX build. This means that the z/OS UNIX (HFS) DLLs will
-  always be created.</p>
+      <li>Currently in ICU 3.0, there is an issue with building on z/OS without
+      XPLINK and with the C++ iostream. By default, the iostream library on z/OS
+      is XPLINK enabled. If you are not building an XPLINK enabled version of
+      ICU, you should use the <code>--with-iostream=old</code> configure option
+      when using runConfigureICU. This will prevent applications that use the
+      icuio library from crashing.</li>
 
-  <p>Two additional environment variables indicate the names of the z/OS data
-  sets to use. The LOADMOD environment variable identifies the name of the data
-  set that contains the dynamic link libraries (DLLs) and the LOADEXP
-  environment variable identifies the name of the data set that contains the
-  side decks, which are normally the files with the .x suffix in the UNIX file
-  system.</p>
+      <li>
+        <p>When you build ICU on a system such as z/OS 1.2, the binaries that
+        result can run on that level of the operating system and later, such as
+        z/OS 1.3 and z/OS 1.4. It's possible that you may have a z/OS 1.4 system,
+        but you may need to deliver binaries on z/OS 1.2 and above. z/OS gives
+        you this ability by targeting the complier and linker to run at the older
+        level, thereby producing the desired binaries.</p>
 
-  <p>A data set is roughly equivalent to a UNIX or Windows file. For most kinds
-  of data sets the operating system maintains record boundaries. UNIX and
-  Windows files are byte streams. Two kinds of data sets are PDS and PDSE. Each
-  data set of these two types contains a directory. It is like a UNIX
-  directory. Each "file" is called a "member". Each member name is limited to
-  eight bytes, normally EBCDIC.</p>
+        <p>To set the compiler and LE environment to OS/390 2.10, specify the
+        following, "<code>./runConfigureICU OS390V2R10</code>"</p>
 
-  <p>Here is an example of some environment variables that you can set prior to
-  building ICU:</p>
-  <pre>
+        <p>To set the compiler and LE environment to z/OS 1.2 specify the
+        following, "<code>./runConfigureICU zOSV1R2</code>"</p>
+      </li>
+
+      <li>The rest of the instructions for building and testing ICU on z/OS with
+      UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To
+      Build And Install On UNIX</a> section.</li>
+    </ul>
+
+    <h4>z/OS (Batch/PDS) support outside the UNIX system services
+    environment</h4>
+
+    <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
+    addition, there is a z/OS specific environment variable (OS390BATCH) to build
+    some libraries into the z/OS native file system. This is useful, for example,
+    when your application is externalized via Job Control Language (JCL).</p>
+
+    <p>The OS390BATCH environment variable enables non-UNIX support including the
+    batch environment. When OS390BATCH is set, the libicuuc<i>XX</i>.dll,
+    libicudt<i>XX</i>e.dll, and libicudt<i>XX</i>e_stub.dll binaries are built
+    into data sets (the native file system). Turning on OS390BATCH does not turn
+    off the normal z/OS UNIX build. This means that the z/OS UNIX (HFS) DLLs will
+    always be created.</p>
+
+    <p>Two additional environment variables indicate the names of the z/OS data
+    sets to use. The LOADMOD environment variable identifies the name of the data
+    set that contains the dynamic link libraries (DLLs) and the LOADEXP
+    environment variable identifies the name of the data set that contains the
+    side decks, which are normally the files with the .x suffix in the UNIX file
+    system.</p>
+
+    <p>A data set is roughly equivalent to a UNIX or Windows file. For most kinds
+    of data sets the operating system maintains record boundaries. UNIX and
+    Windows files are byte streams. Two kinds of data sets are PDS and PDSE. Each
+    data set of these two types contains a directory. It is like a UNIX
+    directory. Each "file" is called a "member". Each member name is limited to
+    eight bytes, normally EBCDIC.</p>
+
+    <p>Here is an example of some environment variables that you can set prior to
+    building ICU:</p>
+<pre>
 <samp>OS390BATCH=1
 LOADMOD=<i>USER</i>.ICU.LOAD
 LOADEXP=<i>USER</i>.ICU.EXP</samp>
 </pre>
 
-  <p>The PDS member names for the DLL file names are as follows:</p>
-  <pre>
+    <p>The PDS member names for the DLL file names are as follows:</p>
+<pre>
 <samp>IXMI<i>XX</i>IN --&gt; libicui18n<i>XX</i>.dll
 IXMI<i>XX</i>UC --&gt; libicuuc<i>XX</i>.dll
 IXMI<i>XX</i>DA --&gt; libicudt<i>XX</i>e.dll
 IXMI<i>XX</i>D1 --&gt; libicudt<i>XX</i>e_stub.dll <i>(Only when OS390_STUBDATA=1)</i></samp>
 </pre>
 
-  <p>You should point the LOADMOD environment variable at a partitioned data
-  set extended (PDSE) and point the LOADEXP environment variable at a
-  partitioned data set (PDS). The PDSE can be allocated with the following
-  attributes:</p>
-  <pre>
+    <p>You should point the LOADMOD environment variable at a partitioned data
+    set extended (PDSE) and point the LOADEXP environment variable at a
+    partitioned data set (PDS). The PDSE can be allocated with the following
+    attributes:</p>
+<pre>
 <samp>Data Set Name . . . : <i>USER</i>.ICU.LOAD
 Management class. . : <i>**None**</i>
 Storage class . . . : <i>BASE</i>
@@ -1205,8 +1253,8 @@
 Data set name type  : LIBRARY</samp>
 </pre>
 
-  <p>The PDS can be allocated with the following attributes:</p>
-  <pre>
+    <p>The PDS can be allocated with the following attributes:</p>
+<pre>
 <samp>Data Set Name . . . : <i>USER</i>.ICU.EXP
 Management class. . : <i>**None**</i>
 Storage class . . . : <i>BASE</i>
@@ -1222,576 +1270,586 @@
 Data set name type  : PDS</samp>
 </pre>
 
-  <h3><a name="HowToBuildOS400" href="#HowToBuildOS400" id=
-  "HowToBuildOS400">How To Build And Install On i5/OS (OS/400 iSeries)</a></h3>
+    <h3><a name="HowToBuildOS400" href="#HowToBuildOS400" id=
+    "HowToBuildOS400">How To Build And Install On i5/OS (OS/400 iSeries)</a></h3>
 
-  <p>Before you start building ICU, ICU requires the following:</p>
+    <p>Before you start building ICU, ICU requires the following:</p>
 
-  <ul>
-    <li>QSHELL interpreter installed (install base option 30, operating system)
-    <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li--></li>
+    <ul>
+      <li>QSHELL interpreter installed (install base option 30, operating system)
+      <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li--></li>
 
-    <li>ILE C/C++ Compiler for iSeries, LPP 5722-WDS</li>
+      <li>ILE C/C++ Compiler for iSeries, LPP 5722-WDS</li>
 
-    <li>The latest GNU facilities (You can get the GNU facilities for i5/OS
-    from <a href=
-    "http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html">
-    http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html</a>).
-    Older versions may not work properly.</li>
-  </ul>
+      <li>The latest GNU facilities (You can get the GNU facilities for i5/OS
+      from <a href=
+      "http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html">
+      http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html</a>).
+      Older versions may not work properly.</li>
+    </ul>
 
-  <p>The following describes how to setup and build ICU. For background
-  information, you should look at the <a href="#HowToBuildUNIX">UNIX build
-  instructions</a>.</p>
+    <p>The following describes how to setup and build ICU. For background
+    information, you should look at the <a href="#HowToBuildUNIX">UNIX build
+    instructions</a>.</p>
 
-  <ol>
-    <li>Create i5/OS target library. This library will be the target for the
-    resulting modules, programs and service programs. You will specify this
-    library on the OUTPUTDIR environment variable in step 2.
-      <pre>
+    <ol>
+      <li>
+        Create i5/OS target library. This library will be the target for the
+        resulting modules, programs and service programs. You will specify this
+        library on the OUTPUTDIR environment variable in step 2. 
+<pre>
 <samp>CRTLIB LIB(<i>libraryname</i>)</samp>
 </pre>
-    </li>
+      </li>
 
-    <li>Set up the following environment variables in your build process (use
-    the <i>libraryname</i> from the previous step). The <i>libraryname</i>
-    identifies target i5/OS library for *module, *pgm and *srvpgm objects.
-      <pre>
+      <li>
+        Set up the following environment variables in your build process (use the
+        <i>libraryname</i> from the previous step). The <i>libraryname</i>
+        identifies target i5/OS library for *module, *pgm and *srvpgm objects. 
+<pre>
 <samp>ADDENVVAR ENVVAR(CC) VALUE('/usr/bin/icc')
 ADDENVVAR ENVVAR(CXX) VALUE('/usr/bin/icc')
 ADDENVVAR ENVVAR(MAKE) VALUE('/usr/bin/gmake')
 ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>')</samp>
 </pre>
-    </li>
+      </li>
 
-    <li>Run <tt>'CHGJOB CCSID(37)'</tt></li>
+      <li>Run <tt>'CHGJOB CCSID(37)'</tt></li>
 
-    <li>Run <tt>'QSH'</tt></li>
+      <li>Run <tt>'QSH'</tt></li>
 
-    <li>Run gunzip on the ICU source code compressed tar archive
-    (icu-<i>X</i>.<i>Y</i>.tgz).</li>
+      <li>Run gunzip on the ICU source code compressed tar archive
+      (icu-<i>X</i>.<i>Y</i>.tgz).</li>
 
-    <li>Run unpax-icu.sh on the tar file generated from the previous step.</li>
+      <li>Run unpax-icu.sh on the tar file generated from the previous step.</li>
 
-    <li>Change your current directory to icu/source.</li>
+      <li>Change your current directory to icu/source.</li>
 
-    <li>Run <tt>'export CFLAGS=-O4 CXXFLAGS=-O4'</tt> to optimize your build of
-    ICU. If the build fails, rerun these build steps without this step before
-    asking the icu-support mailing list for help.</li>
+      <li>Run <tt>'export CFLAGS=-O4 CXXFLAGS=-O4'</tt> to optimize your build of
+      ICU. If the build fails, rerun these build steps without this step before
+      asking the icu-support mailing list for help.</li>
 
-    <li>Run <tt>'./configure'</tt></li>
+      <li>Run <tt>'./configure'</tt></li>
 
-    <li>Run <tt>'gmake'</tt> to build ICU.</li>
+      <li>Run <tt>'gmake'</tt> to build ICU.</li>
 
-    <li>Run <tt>'gmake check'</tt> to build the tests.</li>
+      <li>Run <tt>'gmake check'</tt> to build the tests.</li>
 
-    <li>The "utility/MultithreadTest" test in intltest may have failed during
-    <tt>'gmake check'</tt>. In order to make this test pass, please use
-    <tt>'gmake check QIBM_MULTI_THREADED=Y'</tt> after you built the tests with
-    <tt>'gmake check'</tt> from the previous step. You can look at the <a href=
-    "http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/apis/concept4.htm">
-    iSeries Information Center</a> for more details.</li>
-  </ol><!-- end build environment -->
+      <li>The "utility/MultithreadTest" test in intltest may have failed during
+      <tt>'gmake check'</tt>. In order to make this test pass, please use
+      <tt>'gmake check QIBM_MULTI_THREADED=Y'</tt> after you built the tests with
+      <tt>'gmake check'</tt> from the previous step. You can look at the <a href=
+      "http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/apis/concept4.htm">
+      iSeries Information Center</a> for more details.</li>
+    </ol>
+    <!-- end build environment -->
 
-  <h2><a name="HowToPackage" href="#HowToPackage" id="HowToPackage">How To
-  Package ICU</a></h2>
+    <h2><a name="HowToPackage" href="#HowToPackage" id="HowToPackage">How To
+    Package ICU</a></h2>
 
-  <p>There are many ways that a person can package ICU with their software
-  products. Usually only the libraries need to be considered for packaging.</p>
+    <p>There are many ways that a person can package ICU with their software
+    products. Usually only the libraries need to be considered for packaging.</p>
 
-  <p>On UNIX, you should use "<tt>gmake install</tt>" to make it easier to
-  develop and package ICU. The bin, lib and include directories are needed to
-  develop applications that use ICU. These directories will be created relative
-  to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a href=
-  "#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on Windows,
-  a similar directory structure is built.</p>
+    <p>On UNIX, you should use "<tt>gmake install</tt>" to make it easier to
+    develop and package ICU. The bin, lib and include directories are needed to
+    develop applications that use ICU. These directories will be created relative
+    to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a href=
+    "#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on Windows,
+    a similar directory structure is built.</p>
 
-  <p>When changes have been made to the standard ICU distribution, it is
-  recommended that at least one of the following guidelines be followed for
-  special packaging.</p>
+    <p>When changes have been made to the standard ICU distribution, it is
+    recommended that at least one of the following guidelines be followed for
+    special packaging.</p>
 
-  <ol>
-    <li>Add a suffix name to the library names. This can be done with the
-    --with-library-suffix configure option.</li>
+    <ol>
+      <li>Add a suffix name to the library names. This can be done with the
+      --with-library-suffix configure option.</li>
 
-    <li>The installation script should install the ICU libraries into the
-    application's directory.</li>
-  </ol>
+      <li>The installation script should install the ICU libraries into the
+      application's directory.</li>
+    </ol>
 
-  <p>Following these guidelines prevents other applications that use a standard
-  ICU distribution from conflicting with any libraries that you need. On
-  operating systems that do not have a standard C++ ABI (name mangling) for
-  compilers, it is recommended to do this special packaging anyway. More
-  details on customizing ICU are available in the <a href=
-  "http://icu.sourceforge.net/userguide/">User's Guide</a>. The <a href=
-  "#SourceCode">ICU Source Code Organization</a> section of this readme.html
-  gives a more complete description of the libraries.</p>
+    <p>Following these guidelines prevents other applications that use a standard
+    ICU distribution from conflicting with any libraries that you need. On
+    operating systems that do not have a standard C++ ABI (name mangling) for
+    compilers, it is recommended to do this special packaging anyway. More
+    details on customizing ICU are available in the <a href=
+    "http://icu.sourceforge.net/userguide/">User's Guide</a>. The <a href=
+    "#SourceCode">ICU Source Code Organization</a> section of this readme.html
+    gives a more complete description of the libraries.</p>
 
-  <table border="1" cellpadding="3" summary=
-  "ICU has several libraries for you to use.">
-    <caption>
-      Here is an example of libraries that are frequently packaged.
-    </caption>
+    <table border="1" cellpadding="3" summary=
+    "ICU has several libraries for you to use.">
+      <caption>
+        Here is an example of libraries that are frequently packaged.
+      </caption>
 
-    <tr>
-      <th scope="col">Library Name</th>
+      <tr>
+        <th scope="col">Library Name</th>
 
-      <th scope="col">Windows Filename</th>
+        <th scope="col">Windows Filename</th>
 
-      <th scope="col">Linux Filename</th>
+        <th scope="col">Linux Filename</th>
 
-      <th scope="col">Comment</th>
-    </tr>
+        <th scope="col">Comment</th>
+      </tr>
 
-    <tr>
-      <td>Data Library</td>
+      <tr>
+        <td>Data Library</td>
 
-      <td>icudt<i>XY</i>l.dll</td>
+        <td>icudt<i>XY</i>l.dll</td>
 
-      <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>Data required by the Common and I18n libraries. There are many ways
-      to package and <a href=
-      "http://icu.sourceforge.net/userguide/icudata.html">customize this
-      data</a>, but by default this is all you need.</td>
-    </tr>
+        <td>Data required by the Common and I18n libraries. There are many ways
+        to package and <a href=
+        "http://icu.sourceforge.net/userguide/icudata.html">customize this
+        data</a>, but by default this is all you need.</td>
+      </tr>
 
-    <tr>
-      <td>Common Library</td>
+      <tr>
+        <td>Common Library</td>
 
-      <td>icuuc<i>XY</i>.dll</td>
+        <td>icuuc<i>XY</i>.dll</td>
 
-      <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>Base library required by all other ICU libraries.</td>
-    </tr>
+        <td>Base library required by all other ICU libraries.</td>
+      </tr>
 
-    <tr>
-      <td>Internationalization (i18n) Library</td>
+      <tr>
+        <td>Internationalization (i18n) Library</td>
 
-      <td>icuin<i>XY</i>.dll</td>
+        <td>icuin<i>XY</i>.dll</td>
 
-      <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>A library that contains many locale based internationalization (i18n)
-      functions.</td>
-    </tr>
+        <td>A library that contains many locale based internationalization (i18n)
+        functions.</td>
+      </tr>
 
-    <tr>
-      <td>Layout Engine</td>
+      <tr>
+        <td>Layout Engine</td>
 
-      <td>icule<i>XY</i>.dll</td>
+        <td>icule<i>XY</i>.dll</td>
 
-      <td>libicule.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicule.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>An optional engine for doing font layout.</td>
-    </tr>
+        <td>An optional engine for doing font layout.</td>
+      </tr>
 
-    <tr>
-      <td>Layout Extensions Engine</td>
+      <tr>
+        <td>Layout Extensions Engine</td>
 
-      <td>iculx<i>XY</i>.dll</td>
+        <td>iculx<i>XY</i>.dll</td>
 
-      <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
+        <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>An optional engine for doing font layout that uses parts of ICU.</td>
-    </tr>
+        <td>An optional engine for doing font layout that uses parts of ICU.</td>
+      </tr>
 
-    <tr>
-      <td>ICU I/O (Unicode stdio) Library</td>
+      <tr>
+        <td>ICU I/O (Unicode stdio) Library</td>
 
-      <td>icuio<i>XY</i>.dll</td>
+        <td>icuio<i>XY</i>.dll</td>
 
-      <td>libicuio.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicuio.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>An optional library that provides a stdio like API with Unicode
-      support.</td>
-    </tr>
+        <td>An optional library that provides a stdio like API with Unicode
+        support.</td>
+      </tr>
 
-    <tr>
-      <td>Tool Utility Library</td>
+      <tr>
+        <td>Tool Utility Library</td>
 
-      <td>icutu<i>XY</i>.dll</td>
+        <td>icutu<i>XY</i>.dll</td>
 
-      <td>libicutu.so.<i>XY</i>.<i>Z</i></td>
+        <td>libicutu.so.<i>XY</i>.<i>Z</i></td>
 
-      <td>An internal library that contains internal APIs that are only used by
-      ICU's tools. If you do not use ICU's tools, you do not need this
-      library.</td>
-    </tr>
-  </table>
+        <td>An internal library that contains internal APIs that are only used by
+        ICU's tools. If you do not use ICU's tools, you do not need this
+        library.</td>
+      </tr>
+    </table>
 
-  <p>Normally only the above ICU libraries need to be considered for packaging.
-  The versionless symbolic links to these libraries are only needed for easier
-  development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of the name are the
-  version numbers of ICU. For example, ICU 2.0.2 would have the name
-  libicuuc.so.20.2 for the common library. The exact format of the library
-  names can vary between platforms due to how each platform can handles library
-  versioning.</p>
+    <p>Normally only the above ICU libraries need to be considered for packaging.
+    The versionless symbolic links to these libraries are only needed for easier
+    development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of the name are the
+    version numbers of ICU. For example, ICU 2.0.2 would have the name
+    libicuuc.so.20.2 for the common library. The exact format of the library
+    names can vary between platforms due to how each platform can handles library
+    versioning.</p>
 
-  <h2><a name="ImportantNotes" href="#ImportantNotes" id=
-  "ImportantNotes">Important Notes About Using ICU</a></h2>
+    <h2><a name="ImportantNotes" href="#ImportantNotes" id=
+    "ImportantNotes">Important Notes About Using ICU</a></h2>
 
-  <h3><a name="ImportantNotesMultithreaded" href="#ImportantNotesMultithreaded"
-  id="ImportantNotesMultithreaded">Using ICU in a Multithreaded
-  Environment</a></h3>
+    <h3><a name="ImportantNotesMultithreaded" href="#ImportantNotesMultithreaded"
+    id="ImportantNotesMultithreaded">Using ICU in a Multithreaded
+    Environment</a></h3>
 
-  <p>Some versions of ICU require calling the <code>u_init()</code> function
-  from <code>uclean.h</code> to ensure that ICU is initialized properly. In
-  those ICU versions, <code>u_init()</code> must be called before ICU is used
-  from multiple threads. There is no harm in calling <code>u_init()</code> in a
-  single-threaded application, on a single-CPU machine, or in other cases where
-  <code>u_init()</code> is not required.</p>
+    <p>Some versions of ICU require calling the <code>u_init()</code> function
+    from <code>uclean.h</code> to ensure that ICU is initialized properly. In
+    those ICU versions, <code>u_init()</code> must be called before ICU is used
+    from multiple threads. There is no harm in calling <code>u_init()</code> in a
+    single-threaded application, on a single-CPU machine, or in other cases where
+    <code>u_init()</code> is not required.</p>
 
-  <p>In addition to ensuring thread safety, <code>u_init()</code> also attempts
-  to load at least one ICU data file. Assuming that all data files are packaged
-  together (or are in the same folder in files mode), a failure code from
-  <code>u_init()</code> usually means that the data cannot be found. In this
-  case, the data may not be installed properly, or the application may have
-  failed to call <code>udata_setCommonData()</code> or
-  <code>u_setDataDirectory()</code> which specify to ICU where it can find its
-  data.</p>
+    <p>In addition to ensuring thread safety, <code>u_init()</code> also attempts
+    to load at least one ICU data file. Assuming that all data files are packaged
+    together (or are in the same folder in files mode), a failure code from
+    <code>u_init()</code> usually means that the data cannot be found. In this
+    case, the data may not be installed properly, or the application may have
+    failed to call <code>udata_setCommonData()</code> or
+    <code>u_setDataDirectory()</code> which specify to ICU where it can find its
+    data.</p>
 
-  <p>Since <code>u_init()</code> will load only one or two data files, it
-  cannot guarantee that all of the data that an application needs is available.
-  It cannot check for all data files because the set of files is customizable,
-  and some ICU services work without loading any data at all. An application
-  should always check for error codes when opening ICU service objects (using
-  <code>ucnv_open()</code>, <code>ucol_open()</code>, C++ constructors,
-  etc.).</p>
+    <p>Since <code>u_init()</code> will load only one or two data files, it
+    cannot guarantee that all of the data that an application needs is available.
+    It cannot check for all data files because the set of files is customizable,
+    and some ICU services work without loading any data at all. An application
+    should always check for error codes when opening ICU service objects (using
+    <code>ucnv_open()</code>, <code>ucol_open()</code>, C++ constructors,
+    etc.).</p>
 
-  <h4>ICU 3.4 and later</h4>
+    <h4>ICU 3.4 and later</h4>
 
-  <p>ICU 3.4 self-initializes properly for multi-threaded use. It achieves this
-  without performance penalty by hardcoding the core Unicode properties data,
-  at the cost of some flexibility. (For details see Jitterbug 4497.)</p>
+    <p>ICU 3.4 self-initializes properly for multi-threaded use. It achieves this
+    without performance penalty by hardcoding the core Unicode properties data,
+    at the cost of some flexibility. (For details see Jitterbug 4497.)</p>
 
-  <p><code>u_init()</code> can be used to check for data loading. It tries to
-  load the converter alias table (<code>cnvalias.icu</code>).</p>
+    <p><code>u_init()</code> can be used to check for data loading. It tries to
+    load the converter alias table (<code>cnvalias.icu</code>).</p>
 
-  <h4>ICU 2.6..3.2</h4>
+    <h4>ICU 2.6..3.2</h4>
 
-  <p>These ICU versions require a call to <code>u_init()</code> before
-  multi-threaded use. The services that are directly affected are those that
-  don't have a service object and need to be fast: normalization and character
-  properties.</p>
+    <p>These ICU versions require a call to <code>u_init()</code> before
+    multi-threaded use. The services that are directly affected are those that
+    don't have a service object and need to be fast: normalization and character
+    properties.</p>
 
-  <p><code>u_init()</code> loads and initializes the data files for
-  normalization and character properties (<code>unorm.icu</code> and
-  <code>uprops.icu</code>) and can therefore also be used to check for data
-  loading.</p>
+    <p><code>u_init()</code> loads and initializes the data files for
+    normalization and character properties (<code>unorm.icu</code> and
+    <code>uprops.icu</code>) and can therefore also be used to check for data
+    loading.</p>
 
-  <h4>ICU 2.4 and earlier</h4>
+    <h4>ICU 2.4 and earlier</h4>
 
-  <p>ICU 2.4 and earlier versions were not prepared for multithreaded use on
-  multi-CPU platforms where the CPUs implement weak memory coherency. These
-  CPUs include: Power4, Power5, Alpha, Itanium. <code>u_init()</code> was not
-  defined yet.</p>
+    <p>ICU 2.4 and earlier versions were not prepared for multithreaded use on
+    multi-CPU platforms where the CPUs implement weak memory coherency. These
+    CPUs include: Power4, Power5, Alpha, Itanium. <code>u_init()</code> was not
+    defined yet.</p>
 
-  <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX" id=
-  "ImportantNotesHPUX">Using ICU in a Multithreaded Environment on
-  HP-UX</a></h4>
+    <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX" id=
+    "ImportantNotesHPUX">Using ICU in a Multithreaded Environment on
+    HP-UX</a></h4>
 
-  <p>If you are building ICU with a newer aCC compiler and you are planning on
-  using the older &lt;iostream.h&gt; instead of the newer &lt;iostream&gt;, you
-  will need to use a special configure flag before building ICU. By default,
-  the aCC <a href="http://docs.hp.com/en/1405/options.htm#optioncap-AA">
-  -AA</a> flag is used on HP-UX when the compiler supports that option in order
-  to make ICU thread safe with RogueWave and other libraries using the 2.0
-  Standard C++ library. Your applications that use ICU will also need to use
-  the <a href="http://docs.hp.com/en/1405/options.htm#optioncap-AA">
-  -AA</a> compiler flag. To turn off this behavior in ICU, you will need to use
-  the --with-iostream= old configure option when you first use
-  runConfigureICU.</p>
+    <p>If you are building ICU with a newer aCC compiler and you are planning on
+    using the older &lt;iostream.h&gt; instead of the newer &lt;iostream&gt;, you
+    will need to use a special configure flag before building ICU. By default,
+    the aCC <a href="http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a>
+    flag is used on HP-UX when the compiler supports that option in order to make
+    ICU thread safe with RogueWave and other libraries using the 2.0 Standard C++
+    library. Your applications that use ICU will also need to use the <a href=
+    "http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a> compiler flag.
+    To turn off this behavior in ICU, you will need to use the --with-iostream=
+    old configure option when you first use runConfigureICU.</p>
 
-  <h4><a name="ImportantNotesSolaris" href="#ImportantNotesSolaris" id=
-  "ImportantNotesSolaris">Using ICU in a Multithreaded Environment on
-  Solaris</a></h4>
+    <h4><a name="ImportantNotesSolaris" href="#ImportantNotesSolaris" id=
+    "ImportantNotesSolaris">Using ICU in a Multithreaded Environment on
+    Solaris</a></h4>
 
-  <h5>ICU's tests may hang on Solaris 8 and Earlier</h5>
+    <h5>ICU's tests may hang on Solaris 8 and Earlier</h5>
 
-  <p>ICU's tests use <code>usleep()</code>, which is multithread unsafe on
-  versions of Solaris before version 9. This does not mean that ICU is not
-  thread safe because only ICU's test code uses <code>usleep()</code>. The
-  <code>sleep()</code> and <code>nanosleep()</code> functions could be used in
-  ICU's multithreaded tests, but <code>sleep()</code> and
-  <code>nanosleep()</code> are not a stable API between versions of Solaris.
-  Solaris 9 fixes usleep so that it is multithread safe.</p>
+    <p>ICU's tests use <code>usleep()</code>, which is multithread unsafe on
+    versions of Solaris before version 9. This does not mean that ICU is not
+    thread safe because only ICU's test code uses <code>usleep()</code>. The
+    <code>sleep()</code> and <code>nanosleep()</code> functions could be used in
+    ICU's multithreaded tests, but <code>sleep()</code> and
+    <code>nanosleep()</code> are not a stable API between versions of Solaris.
+    Solaris 9 fixes usleep so that it is multithread safe.</p>
 
-  <p>This hanging behavior tends to appear on multi-CPU machines. Single CPU
-  Solaris 8 machines do not seem to show this behavior.</p>
+    <p>This hanging behavior tends to appear on multi-CPU machines. Single CPU
+    Solaris 8 machines do not seem to show this behavior.</p>
 
-  <p>In a future version of ICU, we hope to find a portable solution to this
-  problem that will work between the modern versions of Solaris.</p>
+    <p>In a future version of ICU, we hope to find a portable solution to this
+    problem that will work between the modern versions of Solaris.</p>
 
-  <h5>Solaris Deadlock Issues in Solaris 8 (2.8) and Earlier</h5>
+    <h5>Solaris Deadlock Issues in Solaris 8 (2.8) and Earlier</h5>
 
-  <p>Solaris 8, and earlier, has outstanding thread deadlocking issues that
-  <strong>may</strong> be problematic for applications using either native, or
-  POSIX, threading on these platforms. Sun states that Solaris 9 <strong>does
-  not</strong> have the deadlock problems. Deadlocks <strong>may</strong> occur
-  either during initialization of the Solaris threading library, or at any
-  other time.</p>
+    <p>Solaris 8, and earlier, has outstanding thread deadlocking issues that
+    <strong>may</strong> be problematic for applications using either native, or
+    POSIX, threading on these platforms. Sun states that Solaris 9 <strong>does
+    not</strong> have the deadlock problems. Deadlocks <strong>may</strong> occur
+    either during initialization of the Solaris threading library, or at any
+    other time.</p>
 
-  <p>Sun Microsystems has provided a Sun Alert Notification regarding the
-  issue. Users <strong>should</strong> consider applying the latest OS patches
-  to their Solaris installations in order to help avoid deadlock. Further
-  information regarding the issue, and links to applicable patches, may be
-  found at:</p>
+    <p>Sun Microsystems has provided a Sun Alert Notification regarding the
+    issue. Users <strong>should</strong> consider applying the latest OS patches
+    to their Solaris installations in order to help avoid deadlock. Further
+    information regarding the issue, and links to applicable patches, may be
+    found at:</p>
 
-  <p>[1] "<i>Applications Linked to libthread May Hang</i>", Sun Alert
-  Notification, Sun Microsystems, Inc., 04-Sep-2002<br>
-  <a href=
-  "http://sunsolve.sun.com/search/document.do?assetkey=1-26-46867">
-  http://sunsolve.sun.com/search/document.do?assetkey=1-26-46867</a></p>
+    <p>[1] "<i>Applications Linked to libthread May Hang</i>", Sun Alert
+    Notification, Sun Microsystems, Inc., 04-Sep-2002<br />
+     <a href=
+    "http://sunsolve.sun.com/search/document.do?assetkey=1-26-46867">http://sunsolve.sun.com/search/document.do?assetkey=1-26-46867</a></p>
 
-  <p>Sun is <strong>not</strong> providing patches for Solaris 6 (2.6), or
-  earlier.</p>
+    <p>Sun is <strong>not</strong> providing patches for Solaris 6 (2.6), or
+    earlier.</p>
 
-  <p>Sun states that by applying the patch users will avoid the deadlock
-  issues. However, with all applicable patches applied, deadlock
-  <strong>may</strong> still be seen, as demonstrated by the ICU Mutex unit
-  tests. The unit test will hang indefinitely. No bug exists in ICU. However, a
-  latent bug still exists in Solaris, which Sun Microsystems has yet to
-  resolve. In order to avoid this, users are <strong>suggested</strong> to
-  modify their LD_LIBRARY_PATH according to the guidelines specified by Sun
-  Microsystems in the Sun Alert Notification.</p>
+    <p>Sun states that by applying the patch users will avoid the deadlock
+    issues. However, with all applicable patches applied, deadlock
+    <strong>may</strong> still be seen, as demonstrated by the ICU Mutex unit
+    tests. The unit test will hang indefinitely. No bug exists in ICU. However, a
+    latent bug still exists in Solaris, which Sun Microsystems has yet to
+    resolve. In order to avoid this, users are <strong>suggested</strong> to
+    modify their LD_LIBRARY_PATH according to the guidelines specified by Sun
+    Microsystems in the Sun Alert Notification.</p>
 
-  <h5>Linking on Solaris</h5>
+    <h5>Linking on Solaris</h5>
 
-  <p>In order to avoid synchronization and threading issues, developers are
-  <strong>suggested</strong> to strictly follow the compiling and linking
-  guidelines for multithreaded applications, specified in the following
-  document from Sun Microsystems. Most notably, pay strict attention to the
-  following statements from Sun:</p>
+    <p>In order to avoid synchronization and threading issues, developers are
+    <strong>suggested</strong> to strictly follow the compiling and linking
+    guidelines for multithreaded applications, specified in the following
+    document from Sun Microsystems. Most notably, pay strict attention to the
+    following statements from Sun:</p>
 
-  <blockquote>
-    <p>To use libthread, specify -lthread before -lc on the ld command line, or
-    last on the cc command line.</p>
+    <blockquote>
+      <p>To use libthread, specify -lthread before -lc on the ld command line, or
+      last on the cc command line.</p>
 
-    <p>To use libpthread, specify -lpthread before -lc on the ld command line,
-    or last on the cc command line.</p>
-  </blockquote>
+      <p>To use libpthread, specify -lpthread before -lc on the ld command line,
+      or last on the cc command line.</p>
+    </blockquote>
 
-  <p>Failure to do this may cause spurious lock conflicts, recursive mutex
-  failure, and deadlock.</p>
+    <p>Failure to do this may cause spurious lock conflicts, recursive mutex
+    failure, and deadlock.</p>
 
-  <p>[2] "<i>Solaris Multithreaded Programming Guide, Compiling and
-  Debugging</i>", Sun Microsystems, Inc., Apr 2004<br>
-  <a href=
-  "http://docs.sun.com/db/doc/806-6867/6jfpgdcob?a=view">http://docs.sun.com/db/doc/806-6867/6jfpgdcob?a=view</a></p>
+    <p>[2] "<i>Solaris Multithreaded Programming Guide, Compiling and
+    Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
+     <a href=
+    "http://docs.sun.com/db/doc/806-6867/6jfpgdcob?a=view">http://docs.sun.com/db/doc/806-6867/6jfpgdcob?a=view</a></p>
 
-  <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
-  "ImportantNotesWindows">Windows Platform</a></h3>
+    <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
+    "ImportantNotesWindows">Windows Platform</a></h3>
 
-  <p>If you are building on the Win32 platform, it is important that you
-  understand a few of the following build details.</p>
+    <p>If you are building on the Win32 platform, it is important that you
+    understand a few of the following build details.</p>
 
-  <h4>DLL directories and the PATH setting</h4>
+    <h4>DLL directories and the PATH setting</h4>
 
-  <p>As delivered, the International Components for Unicode build as several
-  DLLs, which are placed in the "<i>&lt;ICU&gt;</i>\bin" directory. You must
-  add this directory to the PATH environment variable in your system, or any
-  executables you build will not be able to access International Components for
-  Unicode libraries. Alternatively, you can copy the DLL files into a directory
-  already in your PATH, but we do not recommend this. You can wind up with
-  multiple copies of the DLL and wind up using the wrong one.</p>
+    <p>As delivered, the International Components for Unicode build as several
+    DLLs, which are placed in the "<i>&lt;ICU&gt;</i>\bin" directory. You must
+    add this directory to the PATH environment variable in your system, or any
+    executables you build will not be able to access International Components for
+    Unicode libraries. Alternatively, you can copy the DLL files into a directory
+    already in your PATH, but we do not recommend this. You can wind up with
+    multiple copies of the DLL and wind up using the wrong one.</p>
 
-  <h4><a name="ImportantNotesWindowsPath" id=
-  "ImportantNotesWindowsPath">Changing your PATH</a></h4>
+    <h4><a name="ImportantNotesWindowsPath" id=
+    "ImportantNotesWindowsPath">Changing your PATH</a></h4>
 
-  <ul>
-    <li><strong>Windows 2000/XP</strong>: Use the System Icon in the Control
-    Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
-    button. Select the variable PATH in the lower box, and select the lower
-    "Edit..." button. In the "Variable Value" box, append the string
-    ";<i>&lt;ICU&gt;</i>\bin" to the end of the path string. If there is
-    nothing there, just type in "<i>&lt;ICU&gt;</i>\bin". Click the Set button,
-    then the OK button.</li>
+    <ul>
+      <li><strong>Windows 2000/XP</strong>: Use the System Icon in the Control
+      Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
+      button. Select the variable PATH in the lower box, and select the lower
+      "Edit..." button. In the "Variable Value" box, append the string
+      ";<i>&lt;ICU&gt;</i>\bin" to the end of the path string. If there is
+      nothing there, just type in "<i>&lt;ICU&gt;</i>\bin". Click the Set button,
+      then the OK button.</li>
 
-    <li><strong>Windows 95/98/ME</strong>: Edit the autoexec.bat, and add the
-    following line to the end of file, "SET
-    PATH=%PATH%;<i>&lt;ICU&gt;</i>\bin"</li>
-  </ul>
+      <li><strong>Windows 95/98/ME</strong>: Edit the autoexec.bat, and add the
+      following line to the end of file, "SET
+      PATH=%PATH%;<i>&lt;ICU&gt;</i>\bin"</li>
+    </ul>
 
-  <p>Note: When packaging a Windows application for distribution and
-  installation on user systems, copies of the ICU DLLs should be included with
-  the application, and installed for exclusive use by the application. This is
-  the only way to insure that your application is running with the same version
-  of ICU, built with exactly the same options, that you developed and tested
-  with. Refer to Microsoft's guidelines on the usage of DLLs, or search for the
-  phrase "DLL hell" on <a href=
-  "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
+    <p>Note: When packaging a Windows application for distribution and
+    installation on user systems, copies of the ICU DLLs should be included with
+    the application, and installed for exclusive use by the application. This is
+    the only way to insure that your application is running with the same version
+    of ICU, built with exactly the same options, that you developed and tested
+    with. Refer to Microsoft's guidelines on the usage of DLLs, or search for the
+    phrase "DLL hell" on <a href=
+    "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
 
-  <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX" id=
-  "ImportantNotesUNIX">UNIX Type Platform</a></h3>
+    <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX" id=
+    "ImportantNotesUNIX">UNIX Type Platform</a></h3>
 
-  <p>If you are building on a UNIX platform, and if you are installing ICU in a
-  non-standard location, you may need to add the location of your ICU libraries
-  to your <strong>LD_LIBRARY_PATH</strong> or <strong>LIBPATH</strong>
-  environment variable (or the equivalent runtime library path environment
-  variable for your system). The ICU libraries may not link or load properly
-  without doing this.</p>
+    <p>If you are building on a UNIX platform, and if you are installing ICU in a
+    non-standard location, you may need to add the location of your ICU libraries
+    to your <strong>LD_LIBRARY_PATH</strong> or <strong>LIBPATH</strong>
+    environment variable (or the equivalent runtime library path environment
+    variable for your system). The ICU libraries may not link or load properly
+    without doing this.</p>
 
-  <p>Note that if you do not want to have to set this variable, you may instead
-  use the --enable-rpath option at configuration time. This option will
-  instruct the linker to always look for the libraries where they are
-  installed. You will need to use the appropriate linker options when linking
-  your own applications and libraries against ICU, too. Please refer to your
-  system's linker manual for information about runtime paths. The use of rpath
-  also means that when building a new version of ICU you should not have an
-  older version installed in the same place as the new version's installation
-  directory, as the older libraries will used during the build, instead of the
-  new ones, likely leading to an incorrectly build ICU. This is the proper
-  behavior of rpath.</p>
+    <p>Note that if you do not want to have to set this variable, you may instead
+    use the --enable-rpath option at configuration time. This option will
+    instruct the linker to always look for the libraries where they are
+    installed. You will need to use the appropriate linker options when linking
+    your own applications and libraries against ICU, too. Please refer to your
+    system's linker manual for information about runtime paths. The use of rpath
+    also means that when building a new version of ICU you should not have an
+    older version installed in the same place as the new version's installation
+    directory, as the older libraries will used during the build, instead of the
+    new ones, likely leading to an incorrectly build ICU. This is the proper
+    behavior of rpath.</p>
 
-  <h2><a name="PlatformDependencies" href="#PlatformDependencies" id=
-  "PlatformDependencies">Platform Dependencies</a></h2>
+    <h2><a name="PlatformDependencies" href="#PlatformDependencies" id=
+    "PlatformDependencies">Platform Dependencies</a></h2>
 
-  <h3><a name="PlatformDependenciesNew" href="#PlatformDependenciesNew" id=
-  "PlatformDependenciesNew">Porting To A New Platform</a></h3>
+    <h3><a name="PlatformDependenciesNew" href="#PlatformDependenciesNew" id=
+    "PlatformDependenciesNew">Porting To A New Platform</a></h3>
 
-  <p>If you are using ICU's Makefiles to build ICU on a new platform, there are
-  a few places where you will need to add or modify some files. If you need
-  more help, you can always ask the <a href=
-  "http://icu.sourceforge.net/contacts.html">icu-support mailing list</a>. Once
-  you have finished porting ICU to a new platform, it is recommended that you
-  contribute your changes back to ICU via the icu-support mailing list. This
-  will make it easier for everyone to benefit from your work.</p>
+    <p>If you are using ICU's Makefiles to build ICU on a new platform, there are
+    a few places where you will need to add or modify some files. If you need
+    more help, you can always ask the <a href=
+    "http://icu.sourceforge.net/contacts.html">icu-support mailing list</a>. Once
+    you have finished porting ICU to a new platform, it is recommended that you
+    contribute your changes back to ICU via the icu-support mailing list. This
+    will make it easier for everyone to benefit from your work.</p>
 
-  <h4>Data For a New Platform</h4>
+    <h4>Data For a New Platform</h4>
 
-  <p>For some people, it may not be necessary for completely build ICU. Most of
-  the makefiles and build targets are for tools that are used for building
-  ICU's data, and an application's data (when an application uses ICU resource
-  bundles for its data).</p>
+    <p>For some people, it may not be necessary for completely build ICU. Most of
+    the makefiles and build targets are for tools that are used for building
+    ICU's data, and an application's data (when an application uses ICU resource
+    bundles for its data).</p>
 
-  <p>Data files can be built on a different platform when both platforms share
-  the same endianness and the same charset family. This assertion does not
-  include platform dependent DLLs/shared/static libraries. For details see the
-  User Guide <a href="http://icu.sourceforge.net/userguide/icudata.html">ICU
-  Data</a> chapter.</p>
+    <p>Data files can be built on a different platform when both platforms share
+    the same endianness and the same charset family. This assertion does not
+    include platform dependent DLLs/shared/static libraries. For details see the
+    User Guide <a href="http://icu.sourceforge.net/userguide/icudata.html">ICU
+    Data</a> chapter.</p>
 
-  <p>ICU 2.8 removes the requirement that ICU be completely built in the native
-  operating environment. It adds the icuswap tool which can be run on any
-  platform to turn binary ICU data files from any one of the three formats into
-  any one of the other data formats. This allows a application to use ICU data
-  built anywhere to be used for any other target platform.</p>
+    <p>ICU 2.8 removes the requirement that ICU be completely built in the native
+    operating environment. It adds the icuswap tool which can be run on any
+    platform to turn binary ICU data files from any one of the three formats into
+    any one of the other data formats. This allows a application to use ICU data
+    built anywhere to be used for any other target platform.</p>
 
-  <p><strong>WARNING!</strong> Building ICU without running the tests is not
-  recommended. The tests verify that ICU is safe to use. It is recommended that
-  you try to completely port and test ICU before using the libraries for your
-  own application.</p>
+    <p><strong>WARNING!</strong> Building ICU without running the tests is not
+    recommended. The tests verify that ICU is safe to use. It is recommended that
+    you try to completely port and test ICU before using the libraries for your
+    own application.</p>
 
-  <h4>Adapting Makefiles For a New Platform</h4>
+    <h4>Adapting Makefiles For a New Platform</h4>
 
-  <p>Try to follow the build steps from the <a href="#HowToBuildUNIX">UNIX</a>
-  build instructions. If the configure script fails, then you will need to
-  modify some files. Here are the usual steps for porting to a new
-  platform:<br></p>
+    <p>Try to follow the build steps from the <a href="#HowToBuildUNIX">UNIX</a>
+    build instructions. If the configure script fails, then you will need to
+    modify some files. Here are the usual steps for porting to a new
+    platform:<br />
+    </p>
 
-  <ol>
-    <li>Create an mh file in icu/source/config/. You can use mh-linux or a
-    similar mh file as your base configuration.</li>
+    <ol>
+      <li>Create an mh file in icu/source/config/. You can use mh-linux or a
+      similar mh file as your base configuration.</li>
 
-    <li>Modify icu/source/aclocal.m4 to recognize your platform's mh file.</li>
+      <li>Modify icu/source/aclocal.m4 to recognize your platform's mh file.</li>
 
-    <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
-    Macro define.</li>
+      <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
+      Macro define.</li>
 
-    <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
-    icu/source/ without any options. The autoconf tool is standard on most
-    Linux systems.</li>
+      <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
+      icu/source/ without any options. The autoconf tool is standard on most
+      Linux systems.</li>
 
-    <li>If you have any optimization options that you want to normally use, you
-    can modify icu/source/runConfigureICU to specify those options for your
-    platform.</li>
+      <li>If you have any optimization options that you want to normally use, you
+      can modify icu/source/runConfigureICU to specify those options for your
+      platform.</li>
 
-    <li>Build and test ICU on your platform. It is very important that you run
-    the tests. If you don't run the tests, there is no guarentee that you have
-    properly ported ICU.</li>
-  </ol>
+      <li>Build and test ICU on your platform. It is very important that you run
+      the tests. If you don't run the tests, there is no guarentee that you have
+      properly ported ICU.</li>
+    </ol>
 
-  <h3><a name="PlatformDependenciesImpl" href="#PlatformDependenciesImpl" id=
-  "PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
+    <h3><a name="PlatformDependenciesImpl" href="#PlatformDependenciesImpl" id=
+    "PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
 
-  <p>The platform dependencies have been mostly isolated into the following
-  files in the common library. This information can be useful if you are
-  porting ICU to a new platform.</p>
+    <p>The platform dependencies have been mostly isolated into the following
+    files in the common library. This information can be useful if you are
+    porting ICU to a new platform.</p>
 
-  <ul>
-    <li>
-      <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br>
-      <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, pmacos.h, ..):
-      Platform-dependent typedefs and defines:<br>
-      <br>
+    <ul>
+      <li>
+        <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br />
+         <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, pmacos.h,
+        ..): Platform-dependent typedefs and defines:<br />
+        <br />
+         
 
-      <ul>
-        <li>XP_CPLUSPLUS for C++ only.</li>
+        <ul>
+          <li>XP_CPLUSPLUS for C++ only.</li>
 
-        <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t,
-        uint64_t etc.</li>
+          <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t,
+          uint64_t etc.</li>
 
-        <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
-        export</li>
+          <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
+          export</li>
 
-        <li>&lt;iostream&gt; usability</li>
-      </ul><br>
-    </li>
+          <li>&lt;iostream&gt; usability</li>
+        </ul>
+        <br />
+      </li>
 
-    <li>
-      <strong>unicode/putil.h, putil.c</strong>: platform-dependent
-      implementations of various functions that are platform dependent:<br>
-      <br>
+      <li>
+        <strong>unicode/putil.h, putil.c</strong>: platform-dependent
+        implementations of various functions that are platform dependent:<br />
+        <br />
+         
 
-      <ul>
-        <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
-        handling special floating point values.</li>
+        <ul>
+          <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
+          handling special floating point values.</li>
 
-        <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
-        platform specific time and time zone information.</li>
+          <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
+          platform specific time and time zone information.</li>
 
-        <li>u_getDataDirectory for getting the default data directory.</li>
+          <li>u_getDataDirectory for getting the default data directory.</li>
 
-        <li>uprv_getDefaultLocaleID for getting the default locale
-        setting.</li>
+          <li>uprv_getDefaultLocaleID for getting the default locale
+          setting.</li>
 
-        <li>uprv_getDefaultCodepage for getting the default codepage
-        encoding.</li>
-      </ul><br>
-    </li>
+          <li>uprv_getDefaultCodepage for getting the default codepage
+          encoding.</li>
+        </ul>
+        <br />
+      </li>
 
-    <li>
-      <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
-      multithreaded applications. If you wish to use International Components
-      for Unicode in a multithreaded application, you must provide a
-      synchronization primitive that the classes can use to protect their
-      global data against simultaneous modifications. See Users' guide for more
-      information.<br>
-      <br>
+      <li>
+        <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
+        multithreaded applications. If you wish to use International Components
+        for Unicode in a multithreaded application, you must provide a
+        synchronization primitive that the classes can use to protect their
+        global data against simultaneous modifications. See Users' guide for more
+        information.<br />
+        <br />
+         
 
-      <ul>
-        <li>We supply sample implementations for Windows, Sun Solaris, Linux,
-        AIX, HP-UX, BSD, Mac OS X, z/OS and many others.</li>
-      </ul><br>
-    </li>
+        <ul>
+          <li>We supply sample implementations for Windows, Sun Solaris, Linux,
+          AIX, HP-UX, BSD, Mac OS X, z/OS and many others.</li>
+        </ul>
+        <br />
+      </li>
 
-    <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
-    otherwise reading or loading files into memory. All access by ICU to data
-    from files makes use of these functions.<br>
-    <br></li>
+      <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
+      otherwise reading or loading files into memory. All access by ICU to data
+      from files makes use of these functions.<br />
+      <br />
+      </li>
 
-    <li>Using platform specific #ifdef macros are highly discouraged outside of
-    the scope of these files. When the source code gets updated in the future,
-    these #ifdef's can cause testing problems for your platform.</li>
-  </ul>
-  <hr>
+      <li>Using platform specific #ifdef macros are highly discouraged outside of
+      the scope of these files. When the source code gets updated in the future,
+      these #ifdef's can cause testing problems for your platform.</li>
+    </ul>
+    <hr />
 
-  <p>Copyright &copy; 1997-2006 International Business Machines Corporation and
-  others. All Rights Reserved.<br>
-  IBM Globalization Center of Competency - San Jos&eacute;<br>
-  5600 Cottle Road<br>
-  San Jos&eacute;, CA 95193<br>
-  USA</p>
-</body>
+    <p>Copyright &copy; 1997-2006 International Business Machines Corporation and
+    others. All Rights Reserved.<br />
+     IBM Globalization Center of Competency - San Jos&eacute;<br />
+     4400 North First Street<br />
+     San Jos&eacute;, CA 95134<br />
+     USA</p>
+  </body>
 </html>
+

Modified: trunk/source/Doxyfile.in
===================================================================
--- trunk/source/Doxyfile.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/Doxyfile.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -172,7 +172,7 @@
 #---------------------------------------------------------------------------
 # configuration options related to the Perl module output
 #---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
+GENERATE_PERLMOD       = NO 
 PERLMOD_LATEX          = YES
 PERLMOD_PRETTY         = YES
 PERLMOD_MAKEVAR_PREFIX = 
@@ -180,19 +180,19 @@
 # Configuration options related to the preprocessor   
 #---------------------------------------------------------------------------
 ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = NO
-EXPAND_ONLY_PREDEF     = NO
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = YES
 SEARCH_INCLUDES        = YES
 INCLUDE_PATH           = 
 INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
+PREDEFINED             = U_EXPORT2 U_STABLE U_DRAFT U_INTERNAL U_SYSTEM U_DEPRECATED U_OBSOLETE
 EXPAND_AS_DEFINED      = 
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
 # Configuration::additions related to external references   
 #---------------------------------------------------------------------------
 TAGFILES               = 
-GENERATE_TAGFILE       = 
+GENERATE_TAGFILE       =  "@srcdir@/doc/html/icudocs.tag"
 ALLEXTERNALS           = NO
 EXTERNAL_GROUPS        = YES
 PERL_PATH              = /usr/bin/perl

Modified: trunk/source/common/putilimp.h
===================================================================
--- trunk/source/common/putilimp.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/putilimp.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -247,19 +247,34 @@
 #  elif defined(OS400)
 /*
  * With the provided macro we should never be out of range of a given segment
- * (a traditional/typical segment that is).  Our segments have 5 bytes for the id
- * and 3 bytes for the offset.  The key is that the casting takes care of only
- * retrieving the offset portion minus x1000.  Hence, the smallest offset seen in
- * a program is x001000 and when casted to an int would be 0.  That's why we can
- * only add 0xffefff.  Otherwise, we would exceed the segment.
+ * (a traditional/typical segment that is).  Our segments have 5 bytes for the
+ * id and 3 bytes for the offset.  The key is that the casting takes care of
+ * only retrieving the offset portion minus x1000.  Hence, the smallest offset
+ * seen in a program is x001000 and when casted to an int would be 0.
+ * That's why we can only add 0xffefff.  Otherwise, we would exceed the segment.
  *
  * Currently, 16MB is the current addressing limitation on as/400.  This macro
  * may eventually be changed to use 2GB addressability for the newer version of
  * as/400 machines.
  */
 #    define U_MAX_PTR(base) ((void *)(((char *)base)-((int32_t)(base))+((int32_t)0xffefff)))
+#  elif defined(__GNUC__) && __GNUC__ >= 4
+/*
+ * Due to a compiler optimization bug, gcc 4 causes test failures when doing
+ * this math arithmetic on pointers on some platforms. It seems like the
+ * pointers are considered signed instead of unsigned. The uintptr_t type
+ * isn't available on all platforms (i.e MSVC 6) and pointers aren't always
+ * a scalar value (i.e. i5/OS in the lines above).
+ */
+#    define U_MAX_PTR(base) \
+    ((void *)(((uintptr_t)(base)+0x7fffffffu) > (uintptr_t)(base) \
+        ? ((uintptr_t)(base)+0x7fffffffu) \
+        : (uintptr_t)-1))
 #  else
-#    define U_MAX_PTR(base) ((void *)(((char *)(base)+0x7fffffffu) > (char *)(base) ? ((char *)(base)+0x7fffffffu) : (char *)-1))
+#    define U_MAX_PTR(base) \
+    ((char *)(((char *)(base)+0x7fffffffu) > (char *)(base) \
+        ? ((char *)(base)+0x7fffffffu) \
+        : (char *)-1))
 #  endif
 #endif
 

Modified: trunk/source/common/rbbiscan.cpp
===================================================================
--- trunk/source/common/rbbiscan.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/rbbiscan.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -2,7 +2,7 @@
 //
 //  file:  rbbiscan.cpp
 //
-//  Copyright (C) 2002-2005, International Business Machines Corporation and others.
+//  Copyright (C) 2002-2006, International Business Machines Corporation and others.
 //  All Rights Reserved.
 //
 //  This file contains the Rule Based Break Iterator Rule Builder functions for
@@ -289,13 +289,13 @@
 
             // Make a symbol table entry for the $variableRef node.
             fSymbolTable->addEntry(varRefNode->fText, varRefNode, *fRB->fStatus);
-			if (U_FAILURE(*fRB->fStatus)) { 
-				// This is a round-about way to get the parse position set
-				//  so that duplicate symbols error messages include a line number.
-				UErrorCode t = *fRB->fStatus;
-				*fRB->fStatus = U_ZERO_ERROR;
-				error(t);  
-			}
+            if (U_FAILURE(*fRB->fStatus)) {
+                // This is a round-about way to get the parse position set
+                //  so that duplicate symbols error messages include a line number.
+                UErrorCode t = *fRB->fStatus;
+                *fRB->fStatus = U_ZERO_ERROR;
+                error(t);
+            }
 
             // Clean up the stack.
             delete startExprNode;

Modified: trunk/source/common/rbbitblb.cpp
===================================================================
--- trunk/source/common/rbbitblb.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/rbbitblb.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -666,27 +666,27 @@
                 // If no other value was specified, force it to -1.
 
                 if (sd->fAccepting==0) {
-					// State hasn't been marked as accepting yet.  Do it now.
+                    // State hasn't been marked as accepting yet.  Do it now.
                     sd->fAccepting = endMarker->fVal;
                     if (sd->fAccepting == 0) {
                         sd->fAccepting = -1;
-					}
+                    }
                 }
                 if (sd->fAccepting==-1 && endMarker->fVal != 0) {
-					// Both lookahead and non-lookahead accepting for this state.
-					// Favor the look-ahead.  Expedient for line break.
-					// TODO:  need a more elegant resolution for conflicting rules.
-					sd->fAccepting = endMarker->fVal;
-				}
-				    // implicit else:
-				    // if sd->fAccepting already had a value other than 0 or -1, leave it be.
+                    // Both lookahead and non-lookahead accepting for this state.
+                    // Favor the look-ahead.  Expedient for line break.
+                    // TODO:  need a more elegant resolution for conflicting rules.
+                    sd->fAccepting = endMarker->fVal;
+                }
+                // implicit else:
+                // if sd->fAccepting already had a value other than 0 or -1, leave it be.
 
                 // If the end marker node is from a look-ahead rule, set
                 //   the fLookAhead field or this state also.
                 if (endMarker->fLookAheadEnd) {
-					// TODO:  don't change value if already set?
-					// TODO:  allow for more than one active look-ahead rule in engine.
-					//        Make value here an index to a side array in engine?
+                    // TODO:  don't change value if already set?
+                    // TODO:  allow for more than one active look-ahead rule in engine.
+                    //        Make value here an index to a side array in engine?
                     sd->fLookAhead = sd->fAccepting;
                 }
             }

Modified: trunk/source/common/ubidiwrt.c
===================================================================
--- trunk/source/common/ubidiwrt.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/ubidiwrt.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -457,7 +457,7 @@
             const UChar *src;
             UChar uc;
             UBiDiDirection dir;
-            uint32_t markFlag;
+            int32_t markFlag;
 
             for(run=0; run<runCount; ++run) {
                 dir=ubidi_getVisualRun(pBiDi, run, &logicalStart, &runLength);

Modified: trunk/source/common/ucnv_lmb.c
===================================================================
--- trunk/source/common/ucnv_lmb.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/ucnv_lmb.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /*  
 **********************************************************************
-*   Copyright (C) 2000-2005, International Business Machines
+*   Copyright (C) 2000-2006, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  ucnv_lmb.cpp
@@ -1045,7 +1045,7 @@
     ||  CurByte == ULMBCS_HT || CurByte == ULMBCS_CR 
     ||  CurByte == ULMBCS_LF || CurByte == ULMBCS_123SYSTEMRANGE)
     {
-		uniChar = CurByte;
+        uniChar = CurByte;
     }
     else  
     {

Modified: trunk/source/common/ucnv_u16.c
===================================================================
--- trunk/source/common/ucnv_u16.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/ucnv_u16.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -35,6 +35,7 @@
 #   define _UTF16PEFromUnicodeWithOffsets   _UTF16LEFromUnicodeWithOffsets
 #endif
 
+
 static void
 _UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
                                UErrorCode *pErrorCode) {
@@ -43,7 +44,7 @@
     char *target;
     int32_t *offsets;
 
-    int32_t targetCapacity, length, sourceIndex;
+    uint32_t targetCapacity, length, sourceIndex;
     UChar c, trail;
     char overflow[4];
 
@@ -67,13 +68,13 @@
         cnv->fromUnicodeStatus=0;
     }
 
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    if(targetCapacity<=0) {
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
         return;
     }
 
-    target=pArgs->target;
+    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
     offsets=pArgs->offsets;
     sourceIndex=0;
 
@@ -101,7 +102,7 @@
 
     if(c==0) {
         /* copy an even number of bytes for complete UChars */
-        int32_t count=2*length;
+        uint32_t count=2*length;
         if(count>targetCapacity) {
             count=targetCapacity&~1;
         }
@@ -226,7 +227,7 @@
                              (char **)&target, pArgs->targetLimit,
                              &offsets, sourceIndex,
                              pErrorCode);
-        targetCapacity=(int32_t)(pArgs->targetLimit-(char *)target);
+        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
     }
 
     if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
@@ -247,7 +248,7 @@
     UChar *target;
     int32_t *offsets;
 
-    int32_t targetCapacity, length, count, sourceIndex;
+    uint32_t targetCapacity, length, count, sourceIndex;
     UChar c, trail;
 
     cnv=pArgs->converter;
@@ -258,13 +259,13 @@
         return;
     }
 
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    if(targetCapacity<=0) {
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
         return;
     }
 
-    target=pArgs->target;
+    targetCapacity=(uint32_t)(pArgs->targetLimit-target);
     offsets=pArgs->offsets;
     sourceIndex=0;
     c=0;
@@ -597,7 +598,7 @@
     char *target;
     int32_t *offsets;
 
-    int32_t targetCapacity, length, sourceIndex;
+    uint32_t targetCapacity, length, sourceIndex;
     UChar c, trail;
     char overflow[4];
 
@@ -621,13 +622,13 @@
         cnv->fromUnicodeStatus=0;
     }
 
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    if(targetCapacity<=0) {
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
         return;
     }
 
-    target=pArgs->target;
+    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
     offsets=pArgs->offsets;
     sourceIndex=0;
 
@@ -655,7 +656,7 @@
 
     if(c==0) {
         /* copy an even number of bytes for complete UChars */
-        int32_t count=2*length;
+        uint32_t count=2*length;
         if(count>targetCapacity) {
             count=targetCapacity&~1;
         }
@@ -780,7 +781,7 @@
                              &target, pArgs->targetLimit,
                              &offsets, sourceIndex,
                              pErrorCode);
-        targetCapacity=(int32_t)(pArgs->targetLimit-(char *)target);
+        targetCapacity=(uint32_t)(pArgs->targetLimit-(char *)target);
     }
 
     if(U_SUCCESS(*pErrorCode) && source<pArgs->sourceLimit && targetCapacity==0) {
@@ -801,7 +802,7 @@
     UChar *target;
     int32_t *offsets;
 
-    int32_t targetCapacity, length, count, sourceIndex;
+    uint32_t targetCapacity, length, count, sourceIndex;
     UChar c, trail;
 
     cnv=pArgs->converter;
@@ -812,13 +813,13 @@
         return;
     }
 
-    targetCapacity=(int32_t)(pArgs->targetLimit-pArgs->target);
-    if(targetCapacity<=0) {
+    target=pArgs->target;
+    if(target >= pArgs->targetLimit) {
         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
         return;
     }
 
-    target=pArgs->target;
+    targetCapacity=(uint32_t)(pArgs->targetLimit-pArgs->target);
     offsets=pArgs->offsets;
     sourceIndex=0;
     c=0;

Modified: trunk/source/common/ucnvisci.c
===================================================================
--- trunk/source/common/ucnvisci.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/ucnvisci.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -70,28 +70,28 @@
 
 
 /**
- * Enumeration for switching code pages if <ATX>+<one of below values>
+ * Enumeration for switching code pages if <ATR>+<one of below values>
  * is encountered
  */
 typedef enum {
-    DEF =0x40,
-    RMN =0x41,
-    DEV =0x42,
-    BNG =0x43,
-    TML =0x44,
-    TLG =0x45,
-    ASM =0x46,
-    ORI =0x47,
-    KND =0x48,
-    MLM =0x49,
-    GJR =0x4A,
-    PNJ =0x4B,
-    ARB =0x71,
-    PES =0x72,
-    URD =0x73,
-    SND =0x74,
-    KSM =0x75,
-    PST =0x76
+    DEF = 0x40,
+    RMN = 0x41,
+    DEV = 0x42,
+    BNG = 0x43,
+    TML = 0x44,
+    TLG = 0x45,
+    ASM = 0x46,
+    ORI = 0x47,
+    KND = 0x48,
+    MLM = 0x49,
+    GJR = 0x4A,
+    PNJ = 0x4B,
+    ARB = 0x71,
+    PES = 0x72,
+    URD = 0x73,
+    SND = 0x74,
+    KSM = 0x75,
+    PST = 0x76
 }ISCIILang;
 
 typedef enum{
@@ -116,10 +116,18 @@
     MaskEnum currentMaskToUnicode;   /* mask for current state in toUnicode */
     MaskEnum defMaskToUnicode;       /* mask for default state in toUnicode */
     UBool isFirstBuffer;             /* boolean for fromUnicode to see if we need to announce the first script */
+    UBool resetToDefaultToUnicode;   /* boolean for reseting to default delta and mask when a newline is encountered*/
     char name[30];
 }UConverterDataISCII; 
 
-static const uint16_t lookupInitialData[][3]={
+typedef struct LookupDataStruct
+{
+    UniLang uniLang;
+    MaskEnum maskEnum;
+    ISCIILang isciiLang;
+} LookupDataStruct;
+
+static const LookupDataStruct lookupInitialData[]={
     { DEVANAGARI, DEV_MASK,  DEV },
     { BENGALI,    BNG_MASK,  BNG },
     { GURMUKHI,   PNJ_MASK,  PNJ },
@@ -141,15 +149,16 @@
         converterData->contextCharToUnicode=NO_CHAR_MARKER;
         cnv->toUnicodeStatus = missingCharMarker;
         converterData->contextCharFromUnicode=0x0000;
+        converterData->resetToDefaultToUnicode=FALSE;
         /* check if the version requested is supported */
         if((options & UCNV_OPTIONS_VERSION_MASK) < 9){
             /* initialize state variables */
             converterData->currentDeltaFromUnicode=converterData->currentDeltaToUnicode=
             converterData->defDeltaToUnicode=
-                    (uint16_t)(lookupInitialData[options & UCNV_OPTIONS_VERSION_MASK][0] * DELTA);
+                    (uint16_t)(lookupInitialData[options & UCNV_OPTIONS_VERSION_MASK].uniLang * DELTA);
 
             converterData->currentMaskFromUnicode = converterData->currentMaskToUnicode = 
-            converterData->defMaskToUnicode=lookupInitialData[options & UCNV_OPTIONS_VERSION_MASK][1];
+            converterData->defMaskToUnicode=lookupInitialData[options & UCNV_OPTIONS_VERSION_MASK].maskEnum;
             
             converterData->isFirstBuffer=TRUE;
             uprv_strcpy(converterData->name,"ISCII,version=");
@@ -198,9 +207,10 @@
     if(choice!=UCNV_RESET_TO_UNICODE) {
         cnv->fromUChar32=0x0000; 
         data->contextCharFromUnicode=0x00;
-        data->currentMaskFromUnicode=data->defDeltaToUnicode;
+        data->currentMaskFromUnicode=data->defMaskToUnicode;
         data->currentDeltaFromUnicode=data->defDeltaToUnicode;
         data->isFirstBuffer=TRUE;
+        data->resetToDefaultToUnicode=FALSE;
     }
 }
 
@@ -842,7 +852,7 @@
             }
             if(sourceChar == LF){                         
                 targetByteUnit = ATR<<8;
-                targetByteUnit += (uint8_t) lookupInitialData[range][2];
+                targetByteUnit += (uint8_t) lookupInitialData[range].isciiLang;
                 args->converter->fromUnicodeStatus=sourceChar;
                 /* now append ATR and language code */
                 WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
@@ -888,7 +898,7 @@
                     /* Now are we in the same block as the previous? */
                     if(newDelta!= converterData->currentDeltaFromUnicode || converterData->isFirstBuffer){
                         converterData->currentDeltaFromUnicode = newDelta;
-                        converterData->currentMaskFromUnicode = lookupInitialData[range][1];
+                        converterData->currentMaskFromUnicode = lookupInitialData[range].maskEnum;
                         deltaChanged =TRUE;
                         converterData->isFirstBuffer=FALSE;
                     }
@@ -914,7 +924,7 @@
                      */
                     uint16_t temp=0;              
                     temp =(uint16_t)(ATR<<8);
-                    temp += (uint16_t)((uint8_t) lookupInitialData[range][2]);
+                    temp += (uint16_t)((uint8_t) lookupInitialData[range].isciiLang);
                     /* reset */
                     deltaChanged=FALSE;
                     /* now append ATR and language code */
@@ -995,8 +1005,10 @@
     { BENGALI,    BNG_MASK },
     { ORIYA,      ORI_MASK },
     { KANNADA,    KND_MASK },
+    { MALAYALAM,  MLM_MASK },
     { GUJARATI,   GJR_MASK },
-    { GURMUKHI,   PNJ_MASK },
+    { GURMUKHI,   PNJ_MASK }
+
 };
 
 #define WRITE_TO_TARGET_TO_U(args,source,target,offsets,offset,targetUniChar,delta, err){\
@@ -1097,7 +1109,7 @@
                     data->currentDeltaToUnicode = 
                         (uint16_t)(lookupTable[sourceChar & 0x0F][0] * DELTA);
                     data->currentMaskToUnicode = 
-                        lookupTable[sourceChar & 0x0F][1] ;
+                        (MaskEnum)lookupTable[sourceChar & 0x0F][1] ;
                 }
                 else if(sourceChar==DEF){
                     /* switch back to default */
@@ -1198,6 +1210,14 @@
                     *contextCharToUnicode = sourceChar;
                 }
                 break;
+            case 0x0A:
+                /* fall through */
+            case 0x0D:
+                data->resetToDefaultToUnicode = TRUE;
+                GET_MAPPING(sourceChar,targetUniChar,data);
+                *contextCharToUnicode = sourceChar;
+                break;
+
             case ISCII_NUKTA:
                 /* handle soft halant */
                 if(*contextCharToUnicode == ISCII_HALANT){
@@ -1219,7 +1239,7 @@
                     if(found){
                         /* find out if the mapping is valid in this state */                                            
                         if(validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode){       
-                            targetUniChar += data->currentDeltaToUnicode ;
+                            /*targetUniChar += data->currentDeltaToUnicode ;*/
                             *contextCharToUnicode= NO_CHAR_MARKER;
                             *toUnicodeStatus = missingCharMarker;
                             break;
@@ -1246,6 +1266,11 @@
             if(targetUniChar != missingCharMarker ){
                 /* now save the targetUniChar for delayed write */
                 *toUnicodeStatus = (UChar) targetUniChar;
+                if(data->resetToDefaultToUnicode==TRUE){
+                    data->currentDeltaToUnicode = data->defDeltaToUnicode;
+                    data->currentMaskToUnicode = data->defMaskToUnicode;
+                    data->resetToDefaultToUnicode=FALSE;
+                }
             }else{
             
                 /* we reach here only if targetUniChar == missingCharMarker 
@@ -1341,7 +1366,7 @@
     scripts, we add all roundtrippable characters to this set. */
     sa->addRange(sa->set, 0, ASCII_END);
     for (script = DEVANAGARI; script <= MALAYALAM; script++) {
-        mask = (uint8_t)(lookupInitialData[script][1]);
+        mask = (uint8_t)(lookupInitialData[script].maskEnum);
         for (idx = 0; idx < DELTA; idx++) {
             if (validityTable[idx] & mask) {
                 sa->add(sa->set, idx + (script * DELTA) + INDIC_BLOCK_BEGIN);

Modified: trunk/source/common/umutex.c
===================================================================
--- trunk/source/common/umutex.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/umutex.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -520,7 +520,7 @@
         #if defined (U_WINDOWS) && ICU_USE_THREADS == 1
             retVal = InterlockedIncrement((LONG*)p);
         #elif defined(USE_MAC_OS_ATOMIC_INCREMENT)
-        	retVal = OSAtomicIncrement32Barrier(p);
+            retVal = OSAtomicIncrement32Barrier(p);
         #elif defined (POSIX) && ICU_USE_THREADS == 1
             umtx_lock(&gIncDecMutex);
             retVal = ++(*p);
@@ -542,7 +542,7 @@
         #if defined (U_WINDOWS) && ICU_USE_THREADS == 1
             retVal = InterlockedDecrement((LONG*)p);
         #elif defined(USE_MAC_OS_ATOMIC_INCREMENT)
-        	retVal = OSAtomicDecrement32Barrier(p);
+            retVal = OSAtomicDecrement32Barrier(p);
         #elif defined (POSIX) && ICU_USE_THREADS == 1
             umtx_lock(&gIncDecMutex);
             retVal = --(*p);

Modified: trunk/source/common/unicode/pwin32.h
===================================================================
--- trunk/source/common/unicode/pwin32.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/pwin32.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -172,8 +172,14 @@
 /* 1 or 0 to enable or disable threads.  If undefined, default is: enable threads. */
 #define ICU_USE_THREADS 1
 
-/* Windows currently only runs on x86 CPUs which currently all have strong memory models. */
+/* On strong memory model CPUs (e.g. x86 CPUs), we use a safe & quick double check mutex lock. */
+/*
+Microsoft can define _M_IX86, _M_AMD64 (before Visual Studio 8) or _M_X64 (starting in Visual Studio 8). 
+Intel can define _M_IX86 or _M_X64
+*/
+#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
 #define UMTX_STRONG_MEMORY_MODEL 1
+#endif
 
 #ifndef U_DEBUG
 #ifdef _DEBUG

Modified: trunk/source/common/unicode/udraft.h
===================================================================
--- trunk/source/common/unicode/udraft.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/udraft.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -110,7 +110,6 @@
 #        define ulocdata_getNoSubstitute ulocdata_getNoSubstitute_DRAFT_API_DO_NOT_USE
 #        define ulocdata_open ulocdata_open_DRAFT_API_DO_NOT_USE
 #        define ulocdata_setNoSubstitute ulocdata_setNoSubstitute_DRAFT_API_DO_NOT_USE
-#        define umsg_autoQuoteApostrophe umsg_autoQuoteApostrophe_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8String ures_getUTF8String_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8StringByIndex ures_getUTF8StringByIndex_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8StringByKey ures_getUTF8StringByKey_DRAFT_API_DO_NOT_USE
@@ -121,9 +120,11 @@
 #        define utext_close utext_close_DRAFT_API_DO_NOT_USE
 #        define utext_copy utext_copy_DRAFT_API_DO_NOT_USE
 #        define utext_current32 utext_current32_DRAFT_API_DO_NOT_USE
+#        define utext_equals utext_equals_DRAFT_API_DO_NOT_USE
 #        define utext_extract utext_extract_DRAFT_API_DO_NOT_USE
 #        define utext_freeze utext_freeze_DRAFT_API_DO_NOT_USE
 #        define utext_getNativeIndex utext_getNativeIndex_DRAFT_API_DO_NOT_USE
+#        define utext_getPreviousNativeIndex utext_getPreviousNativeIndex_DRAFT_API_DO_NOT_USE
 #        define utext_hasMetaData utext_hasMetaData_DRAFT_API_DO_NOT_USE
 #        define utext_isLengthExpensive utext_isLengthExpensive_DRAFT_API_DO_NOT_USE
 #        define utext_isWritable utext_isWritable_DRAFT_API_DO_NOT_USE
@@ -225,7 +226,6 @@
 #        define ulocdata_getNoSubstitute_3_6 ulocdata_getNoSubstitute_DRAFT_API_DO_NOT_USE
 #        define ulocdata_open_3_6 ulocdata_open_DRAFT_API_DO_NOT_USE
 #        define ulocdata_setNoSubstitute_3_6 ulocdata_setNoSubstitute_DRAFT_API_DO_NOT_USE
-#        define umsg_autoQuoteApostrophe_3_6 umsg_autoQuoteApostrophe_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8StringByIndex_3_6 ures_getUTF8StringByIndex_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8StringByKey_3_6 ures_getUTF8StringByKey_DRAFT_API_DO_NOT_USE
 #        define ures_getUTF8String_3_6 ures_getUTF8String_DRAFT_API_DO_NOT_USE
@@ -236,9 +236,11 @@
 #        define utext_close_3_6 utext_close_DRAFT_API_DO_NOT_USE
 #        define utext_copy_3_6 utext_copy_DRAFT_API_DO_NOT_USE
 #        define utext_current32_3_6 utext_current32_DRAFT_API_DO_NOT_USE
+#        define utext_equals_3_6 utext_equals_DRAFT_API_DO_NOT_USE
 #        define utext_extract_3_6 utext_extract_DRAFT_API_DO_NOT_USE
 #        define utext_freeze_3_6 utext_freeze_DRAFT_API_DO_NOT_USE
 #        define utext_getNativeIndex_3_6 utext_getNativeIndex_DRAFT_API_DO_NOT_USE
+#        define utext_getPreviousNativeIndex_3_6 utext_getPreviousNativeIndex_DRAFT_API_DO_NOT_USE
 #        define utext_hasMetaData_3_6 utext_hasMetaData_DRAFT_API_DO_NOT_USE
 #        define utext_isLengthExpensive_3_6 utext_isLengthExpensive_DRAFT_API_DO_NOT_USE
 #        define utext_isWritable_3_6 utext_isWritable_DRAFT_API_DO_NOT_USE

Modified: trunk/source/common/unicode/unistr.h
===================================================================
--- trunk/source/common/unicode/unistr.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/unistr.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -42,7 +42,9 @@
 #endif
 
 #ifndef USTRING_H
-/* see ustring.h */
+/**
+ * \ingroup ustring_ustrlen
+ */
 U_STABLE int32_t U_EXPORT2
 u_strlen(const UChar *s);
 #endif

Modified: trunk/source/common/unicode/urename.h
===================================================================
--- trunk/source/common/unicode/urename.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/urename.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -441,6 +441,7 @@
 #define uchar_swapNames uchar_swapNames_3_6
 #define ucln_common_registerCleanup ucln_common_registerCleanup_3_6
 #define ucln_i18n_registerCleanup ucln_i18n_registerCleanup_3_6
+#define ucln_io_registerCleanup ucln_io_registerCleanup_3_6
 #define ucln_lib_cleanup ucln_lib_cleanup_3_6
 #define ucln_registerCleanup ucln_registerCleanup_3_6
 #define ucnv_MBCSFromUChar32 ucnv_MBCSFromUChar32_3_6
@@ -959,7 +960,6 @@
 #define uprv_isRuleWhiteSpace uprv_isRuleWhiteSpace_3_6
 #define uprv_itou uprv_itou_3_6
 #define uprv_log uprv_log_3_6
-#define uprv_log10 uprv_log10_3_6
 #define uprv_malloc uprv_malloc_3_6
 #define uprv_mapFile uprv_mapFile_3_6
 #define uprv_max uprv_max_3_6

Modified: trunk/source/common/unicode/ustring.h
===================================================================
--- trunk/source/common/unicode/ustring.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/ustring.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -71,6 +71,10 @@
  */
 
 /**
+* \defgroup ustring_ustrlen
+ */
+/*@{*/
+/**
  * Determine the length of an array of UChar.
  *
  * @param s The array of UChars, NULL (U+0000) terminated.
@@ -79,6 +83,7 @@
  */
 U_STABLE int32_t U_EXPORT2
 u_strlen(const UChar *s);
+/*@}*/
 
 /**
  * Count Unicode code points in the length UChar code units of the string.

Modified: trunk/source/common/unicode/utext.h
===================================================================
--- trunk/source/common/unicode/utext.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/utext.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -146,7 +146,7 @@
 U_CDECL_BEGIN
 
 struct UText;
-typedef struct UText UText; /**< C typedef for struct UText. @draft ICU 3.4 */
+typedef struct UText UText; /**< C typedef for struct UText. @draft ICU 3.6 */
 
 
 /***************************************************************************************
@@ -359,6 +359,7 @@
   *  @param a   The first of the two UTexts to compare.
   *  @param b   The other UText to be compared.
   *  @return    TRUE if the two UTexts are equal.
+  *  @draft ICU 3.6
   */
 U_DRAFT UBool U_EXPORT2
 utext_equals(const UText *a, const UText *b);
@@ -589,7 +590,7 @@
 
 /**
  * Get the native index of the character preceeding the current position.
- * If the iteretion position is already at the start of the text, zero
+ * If the iteration position is already at the start of the text, zero
  * is returned.
  * The value returned is the same as that obtained from the following sequence,
  * but without the side effect of changing the iteration position.
@@ -607,6 +608,7 @@
  * @param ut the text to be accessed
  * @return the native index of the character preceeding the current index position,
  *         or zero if the current position is at the start of the text.
+ * @draft ICU 3.6
  */
 U_DRAFT int64_t U_EXPORT2
 utext_getPreviousNativeIndex(UText *ut); 
@@ -708,11 +710,13 @@
   * may have (possibly UTF-8 for example), and may not always be the same as
   * the corresponding UChar (UTF-16) index.
   * The returned position will always be aligned to a code point boundary. 
+  *
+  * @draft ICU 3.6
   */
 #define UTEXT_GETNATIVEINDEX(ut)                       \
     ((ut)->chunkOffset <= (ut)->nativeIndexingLimit?   \
         (ut)->chunkNativeStart+(ut)->chunkOffset :     \
-        (ut)->mapOffsetToNative(ut))    
+        (ut)->pFuncs->mapOffsetToNative(ut))    
 
 
 
@@ -900,6 +904,7 @@
      *  Generally occurs as the result of a deep clone of the UText.
      *  When closing the UText, the associated text must
      *  also be closed/deleted/freed/ whatever is appropriate.
+     * @draft ICU 3.6
      */
      UTEXT_PROVIDER_OWNS_TEXT = 5
 };
@@ -1142,6 +1147,135 @@
 typedef void U_CALLCONV
 UTextClose(UText *ut);
 
+
+/**
+  *   (public)  Function dispatch table for UText.
+  *             Conceptually very much like a C++ Virtual Function Table.
+  *             This struct defines the organization of the table.
+  *             Each text provider implementation must provide an
+  *              actual table that is initialized with the appropriate functions
+  *              for the type of text being handled.
+  *   @draft ICU 3.6
+  */
+struct UTextFuncs {
+    /**
+     *   (public)  Function table size, sizeof(UTextFuncs)
+     *             Intended for use should the table grow to accomodate added
+     *             functions in the future, to allow tests for older format
+     *             function tables that do not contain the extensions.
+     *
+     *             Fields are placed for optimal alignment on
+     *             32/64/128-bit-pointer machines, by normally grouping together
+     *             4 32-bit fields,
+     *             4 pointers,
+     *             2 64-bit fields
+     *             in sequence.
+     *   @draft ICU 3.6
+     */
+    int32_t       tableSize;
+
+    /**
+      *   (private)  Alignment padding.
+      *              Do not use, reserved for use by the UText framework only.
+      *   @internal
+      */
+    int32_t       reserved1, reserved2, reserved3;
+
+
+    /**
+     * (public) Function pointer for UTextClone
+     *
+     * @see UTextClone
+     * @draft ICU 3.6
+     */
+    UTextClone *clone;
+
+    /**
+     * (public) function pointer for UTextLength
+     * May be expensive to compute!
+     *
+     * @see UTextLength
+     * @draft ICU 3.6
+     */
+    UTextNativeLength *nativeLength;
+
+    /**
+     * (public) Function pointer for UTextAccess.
+     *
+     * @see UTextAccess
+     * @draft ICU 3.6
+     */
+    UTextAccess *access;
+
+    /**
+     * (public) Function pointer for UTextExtract.
+     *
+     * @see UTextExtract
+     * @draft ICU 3.6
+     */
+    UTextExtract *extract;
+
+    /**
+     * (public) Function pointer for UTextReplace.
+     *
+     * @see UTextReplace
+     * @draft ICU 3.6
+     */
+    UTextReplace *replace;
+
+    /**
+     * (public) Function pointer for UTextCopy.
+     *
+     * @see UTextCopy
+     * @draft ICU 3.6
+     */
+    UTextCopy *copy;
+
+    /**
+     * (public) Function pointer for UTextMapOffsetToNative.
+     *
+     * @see UTextMapOffsetToNative
+     * @draft ICU 3.6
+     */
+    UTextMapOffsetToNative *mapOffsetToNative;
+
+    /**
+     * (public) Function pointer for UTextMapNativeIndexToUTF16.
+     *
+     * @see UTextMapNativeIndexToUTF16
+     * @draft ICU 3.6
+     */
+    UTextMapNativeIndexToUTF16 *mapNativeIndexToUTF16;
+
+    /**
+     * (public) Function pointer for UTextClose.
+      *
+      * @see UTextClose
+      * @draft ICU 3.6
+      */
+    UTextClose  *close;
+
+    /**
+      * (private)  Spare function pointer
+      * @internal
+      */
+
+    UTextClose  *spare1;
+    /**
+      * (private)  Spare function pointer
+      * @internal
+      */
+    UTextClose  *spare2;
+
+    /**
+      * (private)  Spare function pointer
+      * @internal
+      */
+    UTextClose  *spare3;
+
+};
+typedef struct UTextFuncs UTextFuncs;
+
 #endif
 
 #ifndef U_HIDE_DRAFT_API
@@ -1154,30 +1288,10 @@
   *                  to pass text data to ICU services will have no need to view the
   *                  internals of the UText structs that they open.
   *
-  * @draft ICU 3.4
+  * @draft ICU 3.6
   */
 struct UText {
     /**
-     *  (protected)  Pointer to additional space requested by the
-     *               text provider during the utext_open operation.
-     * @draft ICU 3.4
-     */
-    void          *pExtra;
-
-    /**
-     *   (protected)  Size in bytes of the extra space (pExtra).
-     *  @draft ICU 3.4
-     */
-    int32_t        extraSize;
-
-    /**
-     *     (private)  Flags for managing the allocation and freeing of
-     *                memory associated with this UText.
-     * @internal
-     */
-    int32_t        flags;
-
-    /**
      *     (private)  Magic.  Used to help detect when UText functions are handed
      *                        invalid or unitialized UText structs.
      *                        utext_openXYZ() functions take an initialized,
@@ -1193,45 +1307,139 @@
 
 
     /**
+     *     (private)  Flags for managing the allocation and freeing of
+     *                memory associated with this UText.
+     * @internal
+     */
+    int32_t        flags;
+
+
+    /**
+      *  Text provider properties.  This set of flags is maintainted by the
+      *                             text provider implementation.
+      *  @draft ICU 3.4
+      */
+    int32_t         providerProperties;
+
+    /**
      * (public) sizeOfStruct=sizeof(UText)
      * Allows possible backward compatible extension.
      *
      * @draft ICU 3.4
      */
     int32_t         sizeOfStruct;
+    
+    /* ------ 16 byte alignment boundary -----------  */
+    
 
-    /*
-     *  NOTE:  Everything above this point in the UText struct is explicitly
-     *         initialized by the UText framework, in the common
-     *         UText initialization code.
-     *         Everything below this point will be preset to zero, and must
-     *         be subsequently initialized by the various utext_openXXX functions.
+    /**
+      *  (protected) Native index of the first character position following
+      *              the current chunk.
+      *  @draft ICU 3.6
+      */
+    int64_t         chunkNativeLimit;
+
+    /**
+     *   (protected)  Size in bytes of the extra space (pExtra).
+     *  @draft ICU 3.4
      */
+    int32_t        extraSize;
 
     /**
-     * (protected) Pointer to string or text-containin object or similar.
-     * This is the source of the text that this UText is wrapping, in a format
-     *  that is known to the text provider functions.
-     * @draft ICU 3.4
+      *    (protected) The highest chunk offset where native indexing and
+      *    chunk (UTF-16) indexing correspond.  For UTF-16 sources, value
+      *    will be equal to chunkLength.
+      *
+      *    @draft ICU 3.6
+      */
+    int32_t         nativeIndexingLimit;
+
+    /* ---- 16 byte alignment boundary------ */
+    
+    /**
+     *  (protected) Native index of the first character in the text chunk.
+     *  @draft ICU 3.6
      */
-    const void   *context;
+    int64_t         chunkNativeStart;
 
     /**
+     *  (protected) Current iteration position within the text chunk (UTF-16 buffer).
+     *  This is the index to the character that will be returned by utext_next32().
+     *  @draft ICU 3.6
+     */
+    int32_t         chunkOffset;
+
+    /**
+     *  (protected) Length the text chunk (UTF-16 buffer), in UChars.
+     *  @draft ICU 3.6
+     */
+    int32_t         chunkLength;
+
+    /* ---- 16  byte alignment boundary-- */
+    
+
+    /**
      *  (protected)  pointer to a chunk of text in UTF-16 format.
      *  May refer either to original storage of the source of the text, or
      *  if conversion was required, to a buffer owned by the UText.
      *  @draft ICU 3.6
      */
-    const UChar  *chunkContents;
+    const UChar    *chunkContents;
 
+     /**
+      * (public)     Pointer to Dispatch table for accessing functions for this UText.
+      * @draft ICU 3.6
+      */
+    UTextFuncs     *pFuncs;
+    
     /**
+     *  (protected)  Pointer to additional space requested by the
+     *               text provider during the utext_open operation.
+     * @draft ICU 3.4
+     */
+    void          *pExtra;
+
+    /**
+     * (protected) Pointer to string or text-containin object or similar.
+     * This is the source of the text that this UText is wrapping, in a format
+     *  that is known to the text provider functions.
+     * @draft ICU 3.4
+     */
+    const void   *context;
+
+    /* --- 16 byte alignment boundary--- */
+
+    /**
      * (protected) Pointer fields available for use by the text provider.
      * Not used by UText common code.
-     * @draft ICU 3.4
+     * @draft ICU 3.6
      */
-    const void   *p, *q, *r;
+    const void     *p; 
+    /**
+     * (protected) Pointer fields available for use by the text provider.
+     * Not used by UText common code.
+     * @draft ICU 3.6
+     */
+    const void     *q;
+     /**
+     * (protected) Pointer fields available for use by the text provider.
+     * Not used by UText common code.
+     * @draft ICU 3.6
+      */
+    const void     *r;
 
     /**
+      *  Private field reserved for future use by the UText framework
+      *     itself.  This is not to be touched by the text providers.
+      * @internal ICU 3.4
+      */
+    void           *privP;
+
+
+    /* --- 16 byte alignment boundary--- */
+    
+
+    /**
       * (protected) Integer field reserved for use by the text provider.
       * Not used by the UText framework, or by the client (user) of the UText.
       * @draft ICU 3.4
@@ -1252,56 +1460,15 @@
       */
     int32_t         c;
 
+    /*  ---- 16 byte alignment boundary---- */
 
-    /**
-      *  Text provider properties.  This set of flags is maintainted by the
-      *                             text provider implementation.
-      *  @draft ICU 3.4
-      */
-    int32_t        providerProperties;     
 
-
     /**
-      *  (protected) Current iteration position within the text chunk (UTF-16 buffer).
-      *  This is the index to the character that will be returned by utext_next32().
-      *  @draft ICU 3.6
-      */
-    int32_t         chunkOffset;
-
-    /**
-      *  (protected) Length the text chunk (UTF-16 buffer), in UChars.
-      *  @draft ICU 3.6
-      */
-    int32_t         chunkLength;
-
-    /**
-      *  (protected) Native index of the first character in the text chunk.
-      *  @draft ICU 3.6
-      */
-    int64_t         chunkNativeStart;
-
-    /**
-      *  (protected) Native index of the first character position following
-      *              the current chunk.
-      *  @draft ICU 3.6
-      */
-    int64_t         chunkNativeLimit;
-
-    /**
-      *    (protected) The highest chunk offset where native indexing and
-      *    chunk (UTF-16) indexing correspond.  For UTF-16 sources, value
-      *    will be equal to chunkLength.
-      *
-      *    @draft ICU 3.6
-      */
-    int32_t         nativeIndexingLimit;
-
-    /**
       *  Private field reserved for future use by the UText framework
       *     itself.  This is not to be touched by the text providers.
       * @internal ICU 3.4
       */
-    int32_t         privA;
+    int64_t         privA;
     /**
       *  Private field reserved for future use by the UText framework
       *     itself.  This is not to be touched by the text providers.
@@ -1314,91 +1481,6 @@
       * @internal ICU 3.4
       */
     int32_t         privC;
-    /**
-      *  Private field reserved for future use by the UText framework
-      *     itself.  This is not to be touched by the text providers.
-      * @internal ICU 3.4
-      */
-    int64_t         privD;
-    /**
-      *  Private field reserved for future use by the UText framework
-      *     itself.  This is not to be touched by the text providers.
-      * @internal ICU 3.4
-      */
-    void           *privP;
-
-    /**
-     * (public) Function pointer for UTextClone
-     *
-     * @see UTextClone
-     * @draft ICU 3.4
-     */
-    UTextClone *clone;
-
-    /**
-     * (public) function pointer for UTextLength
-     * May be expensive to compute!
-     *
-     * @see UTextLength
-     * @draft ICU 3.4
-     */
-    UTextNativeLength *nativeLength;
-
-    /**
-     * (public) Function pointer for UTextAccess.
-     *
-     * @see UTextAccess
-     * @draft ICU 3.4
-     */
-    UTextAccess *access;
-
-    /**
-     * (public) Function pointer for UTextExtract.
-     *
-     * @see UTextExtract
-     * @draft ICU 3.4
-     */
-    UTextExtract *extract;
-
-    /**
-     * (public) Function pointer for UTextReplace.
-     *
-     * @see UTextReplace
-     * @draft ICU 3.4
-     */
-    UTextReplace *replace;
-
-    /**
-     * (public) Function pointer for UTextCopy.
-     *
-     * @see UTextCopy
-     * @draft ICU 3.4
-     */
-    UTextCopy *copy;
-
-    /**
-     * (public) Function pointer for UTextMapOffsetToNative.
-     *
-     * @see UTextMapOffsetToNative
-     * @draft ICU 3.4
-     */
-    UTextMapOffsetToNative *mapOffsetToNative;
-
-    /**
-     * (public) Function pointer for UTextMapNativeIndexToUTF16.
-     *
-     * @see UTextMapNativeIndexToUTF16
-     * @draft ICU 3.4
-     */
-    UTextMapNativeIndexToUTF16 *mapNativeIndexToUTF16;
-
-    /**
-     * (public) Function pointer for UTextClose.
-      *
-      * @see UTextClose
-      * @draft ICU 3.4
-      */
-    UTextClose  *close;
 };
 
 #endif 
@@ -1437,34 +1519,27 @@
  *  struct.  UText structs must be initialized before passing
  *  them to one of the utext_open functions.
  *
- * @draft ICU 3.4
+ * @draft ICU 3.6
  */
-#define UTEXT_INITIALIZER {                                 \
-                  NULL,                 /* pExtra        */ \
-                  0,                    /* extraSize     */ \
-                  0,                    /* flags         */ \
-                  UTEXT_MAGIC,          /* magic         */ \
-                  sizeof(UText),        /* sizeOfStruct  */ \
-                  NULL,                 /* context       */ \
-                  NULL,                 /* chunkContents */ \
-                  NULL, NULL, NULL,     /* p, q, r       */ \
-                  0, 0, 0,              /* a, b, c       */ \
-                  0,                    /* providerProps */ \
-                  0,                    /* chunkOffset   */ \
-                  0,                    /* chunkLength   */ \
-                  0,                    /* chunkStart    */ \
-                  0,                    /* chunkLimit    */ \
-                  0,                    /* nativeIndexingLimit   */ \
-                  0, 0, 0, 0,           /* privA,B,C,D   */ \
-                  NULL,                 /* privP         */ \
-                  NULL,                 /* clone ()      */ \
-                  NULL,                 /* length ()     */ \
-                  NULL,                 /* access ()     */ \
-                  NULL,                 /* extract ()    */ \
-                  NULL,                 /* replace ()    */ \
-                  NULL,                 /* copy ()       */ \
-                  NULL, NULL,           /* map * 2 ()    */ \
-                  NULL                  /* close ()      */ \
+#define UTEXT_INITIALIZER {                                        \
+                  UTEXT_MAGIC,          /* magic                */ \
+                  0,                    /* flags                */ \
+                  0,                    /* providerProps        */ \
+                  sizeof(UText),        /* sizeOfStruct         */ \
+                  0,                    /* chunkNativeLimit     */ \
+                  0,                    /* extraSize            */ \
+                  0,                    /* nativeIndexingLimit  */ \
+                  0,                    /* chunkNativeStart     */ \
+                  0,                    /* chunkOffset          */ \
+                  0,                    /* chunkLength          */ \
+                  NULL,                 /* chunkContents        */ \
+                  NULL,                 /* pFuncs               */ \
+                  NULL,                 /* pExtra               */ \
+                  NULL,                 /* context              */ \
+                  NULL, NULL, NULL,     /* p, q, r              */ \
+                  NULL,                 /* privP                */ \
+                  0, 0, 0,              /* a, b, c              */ \
+                  0, 0, 0               /* privA,B,C,           */ \
                   }
 
 

Modified: trunk/source/common/unicode/utypes.h
===================================================================
--- trunk/source/common/unicode/utypes.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/unicode/utypes.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -486,9 +486,9 @@
  *
  * Note: This is currently only done on Windows because
  * some Linux/Unix compilers have problems with defining global new/delete.
- * On Windows, WIN32 is defined, and it is _MSC_Ver>=1200 for MSVC 6.0 and higher.
+ * On Windows, WIN32 is defined, and it is _MSC_VER>=1200 for MSVC 6.0 and higher.
  */
-#if defined(XP_CPLUSPLUS) && defined(U_WINDOWS) && (_MSC_Ver>=1200) && (defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_USTDIO_IMPLEMENTATION))
+#if defined(XP_CPLUSPLUS) && defined(U_WINDOWS) && (_MSC_VER>=1200) && U_DEBUG && (defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_USTDIO_IMPLEMENTATION))
 
 #ifndef U_HIDE_INTERNAL_API
 /**

Modified: trunk/source/common/uprops.c
===================================================================
--- trunk/source/common/uprops.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/uprops.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -170,7 +170,7 @@
                 case UCHAR_NFKD_INERT:
                 case UCHAR_NFC_INERT:
                 case UCHAR_NFKC_INERT:
-                    return unorm_isNFSkippable(c, (UNormalizationMode)(which-UCHAR_NFD_INERT)+UNORM_NFD);
+                    return unorm_isNFSkippable(c, (UNormalizationMode)(which-UCHAR_NFD_INERT+UNORM_NFD));
                 case UCHAR_SEGMENT_STARTER:
                     return unorm_isCanonSafeStart(c);
                 default:
@@ -271,7 +271,7 @@
         case UCHAR_NFKD_QUICK_CHECK:
         case UCHAR_NFC_QUICK_CHECK:
         case UCHAR_NFKC_QUICK_CHECK:
-            return (int32_t)unorm_getQuickCheck(c, (UNormalizationMode)(which-UCHAR_NFD_QUICK_CHECK)+UNORM_NFD);
+            return (int32_t)unorm_getQuickCheck(c, (UNormalizationMode)(which-UCHAR_NFD_QUICK_CHECK+UNORM_NFD));
         case UCHAR_LEAD_CANONICAL_COMBINING_CLASS:
             return unorm_getFCD16FromCodePoint(c)>>8;
         case UCHAR_TRAIL_CANONICAL_COMBINING_CLASS:

Modified: trunk/source/common/uresdata.h
===================================================================
--- trunk/source/common/uresdata.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/uresdata.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,7 +1,7 @@
 /*
 ******************************************************************************
 *                                                                            *
-* Copyright (C) 1999-2005, International Business Machines                   *
+* Copyright (C) 1999-2006, International Business Machines                   *
 *                Corporation and others. All Rights Reserved.                *
 *                                                                            *
 ******************************************************************************
@@ -31,7 +31,7 @@
 
 #define RES_BOGUS 0xffffffff
 
-#define RES_GET_TYPE(res) ((res)>>28UL)
+#define RES_GET_TYPE(res) ((UResType)((res)>>28UL))
 #define RES_GET_OFFSET(res) ((res)&0x0fffffff)
 #define RES_GET_POINTER(pRoot, res) ((pRoot)+RES_GET_OFFSET(res))
 

Modified: trunk/source/common/utext.cpp
===================================================================
--- trunk/source/common/utext.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/common/utext.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -30,7 +30,7 @@
 
 static UBool
 utext_access(UText *ut, int64_t index, UBool forward) {
-    return ut->access(ut, index, forward);
+    return ut->pFuncs->access(ut, index, forward);
 }
 
 
@@ -77,7 +77,7 @@
 
 U_DRAFT int64_t U_EXPORT2
 utext_nativeLength(UText *ut) {
-    return ut->nativeLength(ut);
+    return ut->pFuncs->nativeLength(ut);
 }
 
 
@@ -93,7 +93,7 @@
     if(ut->chunkOffset <= ut->nativeIndexingLimit) {
         return ut->chunkNativeStart+ut->chunkOffset;
     } else {
-        return ut->mapOffsetToNative(ut);
+        return ut->pFuncs->mapOffsetToNative(ut);
     }
 }
 
@@ -105,12 +105,12 @@
         // Access the new position.  Assume a forward iteration from here,
         // which will also be optimimum for a single random access.
         // Reverse iterations may suffer slightly.
-        ut->access(ut, index, TRUE);
+        ut->pFuncs->access(ut, index, TRUE);
     } else if((int32_t)(index - ut->chunkNativeStart) <= ut->nativeIndexingLimit) {
         // utf-16 indexing.
         ut->chunkOffset=(int32_t)(index-ut->chunkNativeStart);
     } else {
-         ut->chunkOffset=ut->mapNativeIndexToUTF16(ut, index);
+         ut->chunkOffset=ut->pFuncs->mapNativeIndexToUTF16(ut, index);
     }
     // The convention is that the index must always be on a code point boundary.
     // Adjust the index position if it is in the middle of a surrogate pair.
@@ -118,7 +118,7 @@
         UChar c= ut->chunkContents[ut->chunkOffset];
         if (UTF16_IS_TRAIL(c)) {
             if (ut->chunkOffset==0) {
-                ut->access(ut, ut->chunkNativeStart, FALSE);
+                ut->pFuncs->access(ut, ut->chunkNativeStart, FALSE);
             }
             if (ut->chunkOffset>0) {
                 UChar lead = ut->chunkContents[ut->chunkOffset-1];
@@ -148,7 +148,7 @@
                 result = ut->chunkNativeStart + i;
             } else {
                 ut->chunkOffset = i;
-                result = ut->mapOffsetToNative(ut);
+                result = ut->pFuncs->mapOffsetToNative(ut);
                 ut->chunkOffset++;
             }
             return result;
@@ -180,7 +180,7 @@
     UChar32  c;
     if (ut->chunkOffset==ut->chunkLength) {
         // Current position is just off the end of the chunk.
-        if (ut->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
+        if (ut->pFuncs->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
             // Off the end of the text.
             return U_SENTINEL;
         }
@@ -210,10 +210,10 @@
         //        the original position before the unpaired lead still needs to be restored.
         int64_t  nativePosition = ut->chunkNativeLimit;
         int32_t  originalOffset = ut->chunkOffset;
-        if (ut->access(ut, nativePosition, TRUE)) {
+        if (ut->pFuncs->access(ut, nativePosition, TRUE)) {
             trail = ut->chunkContents[ut->chunkOffset];
         }
-        UBool r = ut->access(ut, nativePosition, FALSE);  // reverse iteration flag loads preceding chunk
+        UBool r = ut->pFuncs->access(ut, nativePosition, FALSE);  // reverse iteration flag loads preceding chunk
         U_ASSERT(r==TRUE);
         ut->chunkOffset = originalOffset;
         if(!r) {
@@ -261,7 +261,7 @@
     UChar32       c;
 
     if (ut->chunkOffset >= ut->chunkLength) {
-        if (ut->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
+        if (ut->pFuncs->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
             return U_SENTINEL;
         }
     }
@@ -275,7 +275,7 @@
     }
 
     if (ut->chunkOffset >= ut->chunkLength) {
-        if (ut->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
+        if (ut->pFuncs->access(ut, ut->chunkNativeLimit, TRUE) == FALSE) {
             // c is an unpaired lead surrogate at the end of the text.
             // return it as it is.
             return c;
@@ -301,7 +301,7 @@
     UChar32       c;
 
     if (ut->chunkOffset <= 0) {
-        if (ut->access(ut, ut->chunkNativeStart, FALSE) == FALSE) {
+        if (ut->pFuncs->access(ut, ut->chunkNativeStart, FALSE) == FALSE) {
             return U_SENTINEL;
         }
     }
@@ -315,7 +315,7 @@
     }
 
     if (ut->chunkOffset <= 0) {
-        if (ut->access(ut, ut->chunkNativeStart, FALSE) == FALSE) {
+        if (ut->pFuncs->access(ut, ut->chunkNativeStart, FALSE) == FALSE) {
             // c is an unpaired trail surrogate at the start of the text.
             // return it as it is.
             return c;
@@ -342,7 +342,7 @@
 
     if(index<ut->chunkNativeStart || index>=ut->chunkNativeLimit) {
         // Desired position is outside of the current chunk.
-        if(!ut->access(ut, index, TRUE)) {
+        if(!ut->pFuncs->access(ut, index, TRUE)) {
             // no chunk available here
             return U_SENTINEL;
         }
@@ -351,7 +351,7 @@
         ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
     } else {
         // Desired position is in chunk, with non-UTF16 indexing.
-        ut->chunkOffset = ut->mapNativeIndexToUTF16(ut, index);
+        ut->chunkOffset = ut->pFuncs->mapNativeIndexToUTF16(ut, index);
     }
 
     c = ut->chunkContents[ut->chunkOffset++];
@@ -382,7 +382,7 @@
     //
     if(index<=ut->chunkNativeStart || index>ut->chunkNativeLimit) {
         // Requested native index is outside of the current chunk.
-        if(!ut->access(ut, index, FALSE)) {
+        if(!ut->pFuncs->access(ut, index, FALSE)) {
             // no chunk available here
             return U_SENTINEL;
         }
@@ -390,8 +390,8 @@
         // Direct UTF-16 indexing.
         ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
     } else {
-        ut->chunkOffset=ut->mapNativeIndexToUTF16(ut, index);
-        if (ut->chunkOffset==0 && !ut->access(ut, index, FALSE)) {
+        ut->chunkOffset=ut->pFuncs->mapNativeIndexToUTF16(ut, index);
+        if (ut->chunkOffset==0 && !ut->pFuncs->access(ut, index, FALSE)) {
             // no chunk available here
             return U_SENTINEL;
         }
@@ -418,7 +418,7 @@
              int64_t start, int64_t limit,
              UChar *dest, int32_t destCapacity,
              UErrorCode *status) {
-                 return ut->extract(ut, start, limit, dest, destCapacity, status);
+                 return ut->pFuncs->extract(ut, start, limit, dest, destCapacity, status);
              }
 
 
@@ -430,9 +430,9 @@
         b->magic != UTEXT_MAGIC) {
             // Null or invalid arguments don't compare equal to anything.
             return FALSE;
-        }
+    }
 
-    if (a->access != b->access) {
+    if (a->pFuncs != b->pFuncs) {
         // Different types of text providers.
         return FALSE;
     }
@@ -486,7 +486,7 @@
         *status = U_NO_WRITE_PERMISSION;
         return 0;
     }
-    int32_t i = ut->replace(ut, nativeStart, nativeLimit, replacementText, replacementLength, status);
+    int32_t i = ut->pFuncs->replace(ut, nativeStart, nativeLimit, replacementText, replacementLength, status);
     return i;
 }
 
@@ -504,7 +504,7 @@
         *status = U_NO_WRITE_PERMISSION;
         return;
     }
-    ut->copy(ut, nativeStart, nativeLimit, destIndex, move, status);
+    ut->pFuncs->copy(ut, nativeStart, nativeLimit, destIndex, move, status);
 }
 
 
@@ -512,7 +512,7 @@
 U_DRAFT UText * U_EXPORT2
 utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCode *status) {
     UText *result;
-    result = src->clone(dest, src, deep, status);
+    result = src->pFuncs->clone(dest, src, deep, status);
     if (readOnly) {
         utext_freeze(result);
     }
@@ -590,8 +590,8 @@
         }
         // If the ut is already open and there's a provider supplied close
         //   function, call it.
-        if ((ut->flags & UTEXT_OPEN) && ut->close != NULL)  {
-            ut->close(ut);
+        if ((ut->flags & UTEXT_OPEN) && ut->pFuncs->close != NULL)  {
+            ut->pFuncs->close(ut);
         }
         ut->flags &= ~UTEXT_OPEN;
 
@@ -617,13 +617,26 @@
     if (U_SUCCESS(*status)) {
         ut->flags |= UTEXT_OPEN;
 
-        // Initialize all fields of the UText from ut->context to the end.
+        // Initialize all remaining fields of the UText.
         //
-        int32_t*  pi = (int32_t *)&ut->context;
-        int32_t*  pEnd = (int32_t *)(((char *)ut)+ sizeof(UText));
-        do {
-            *pi++ = 0;
-        } while (pi<pEnd);
+        ut->context             = NULL;
+        ut->chunkContents       = NULL;
+        ut->p                   = NULL;
+        ut->q                   = NULL;
+        ut->r                   = NULL;
+        ut->a                   = 0;
+        ut->b                   = 0;
+        ut->c                   = 0;
+        ut->chunkOffset         = 0;
+        ut->chunkLength         = 0;
+        ut->chunkNativeStart    = 0;
+        ut->chunkNativeLimit    = 0;
+        ut->nativeIndexingLimit = 0;
+        ut->providerProperties  = 0;
+        ut->privA               = 0;
+        ut->privB               = 0;
+        ut->privC               = 0;
+        ut->privP               = NULL;
     }
     return ut;
 }
@@ -642,8 +655,8 @@
 
     // If the provider gave us a close function, call it now.
     // This will clean up anything allocated specifically by the provider.
-    if (ut->close != NULL) {
-        ut->close(ut);
+    if (ut->pFuncs->close != NULL) {
+        ut->pFuncs->close(ut);
     }
     ut->flags &= ~UTEXT_OPEN;
 
@@ -656,17 +669,10 @@
         ut->extraSize = 0;
     }
 
-    // Zero out fields of the closed UText.  This is a defensive move,
+    // Zero out function table of the closed UText.  This is a defensive move,
     //   inteded to cause applications that inadvertantly use a closed
     //   utext to crash with null pointer errors.
-    ut->clone        = NULL;
-    ut->nativeLength = NULL;
-    ut->access       = NULL;
-    ut->extract      = NULL;
-    ut->replace      = NULL;
-    ut->copy         = NULL;
-    ut->close        = NULL;
-    ut->chunkContents = NULL;
+    ut->pFuncs        = NULL;
 
     if (ut->flags & UTEXT_HEAP_ALLOCATED) {
         // This UText was allocated by UText setup.  We need to free it.
@@ -1575,6 +1581,25 @@
 U_CDECL_END
 
 
+static struct UTextFuncs utf8Funcs = 
+{
+    sizeof(UTextFuncs),
+    0, 0, 0,             // Reserved alignment padding
+    utf8TextClone,
+    utf8TextLength,
+    utf8TextAccess,
+    utf8TextExtract,
+    NULL,                /* replace*/
+    NULL,                /* copy   */
+    utf8TextMapOffsetToNative,
+    utf8TextMapIndexToUTF16,
+    utf8TextClose,
+    NULL,                // spare 1
+    NULL,                // spare 2
+    NULL                 // spare 3
+};
+
+
 U_DRAFT UText * U_EXPORT2
 utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status) {
     if(U_FAILURE(*status)) {
@@ -1590,17 +1615,10 @@
         return ut;
     }
 
-    ut->clone         = utf8TextClone;
-    ut->nativeLength  = utf8TextLength;
-    ut->access        = utf8TextAccess;
-    ut->extract       = utf8TextExtract;
-    ut->mapOffsetToNative     = utf8TextMapOffsetToNative;
-    ut->mapNativeIndexToUTF16 = utf8TextMapIndexToUTF16;
-    ut->close         = utf8TextClose;
-
-    ut->context=s;
-    ut->b = (int32_t)length;
-    ut->c = (int32_t)length;
+    ut->pFuncs  = &utf8Funcs;
+    ut->context = s;
+    ut->b       = (int32_t)length;
+    ut->c       = (int32_t)length;
     if (ut->c < 0) {
         ut->c = 0;
         ut->providerProperties |= I32_FLAG(UTEXT_PROVIDER_LENGTH_IS_EXPENSIVE);
@@ -1964,11 +1982,25 @@
     repTextAccess(ut, nativeIterIndex, TRUE);
 }
 
+static struct UTextFuncs repFuncs = 
+{
+    sizeof(UTextFuncs),
+    0, 0, 0,           // Reserved alignment padding
+    repTextClone,
+    repTextLength,
+    repTextAccess,
+    repTextExtract,
+    repTextReplace,   
+    repTextCopy,   
+    NULL,              // MapOffsetToNative,
+    NULL,              // MapIndexToUTF16,
+    repTextClose,
+    NULL,              // spare 1
+    NULL,              // spare 2
+    NULL               // spare 3
+};
 
 
-
-
-
 U_DRAFT UText * U_EXPORT2
 utext_openReplaceable(UText *ut, Replaceable *rep, UErrorCode *status)
 {
@@ -1986,15 +2018,8 @@
         ut->providerProperties |=I32_FLAG(UTEXT_PROVIDER_HAS_META_DATA);
     }
 
-    ut->clone        = repTextClone;
-    ut->nativeLength = repTextLength;
-    ut->access       = repTextAccess;
-    ut->extract      = repTextExtract;
-    ut->replace      = repTextReplace;
-    ut->copy         = repTextCopy;
-    ut->close        = repTextClose;
-
-    ut->context=rep;
+    ut->pFuncs  = &repFuncs;
+    ut->context =  rep;
     return ut;
 }
 
@@ -2205,26 +2230,40 @@
 
 }
 
+static struct UTextFuncs unistrFuncs = 
+{
+    sizeof(UTextFuncs),
+    0, 0, 0,             // Reserved alignment padding
+    unistrTextClone,
+    unistrTextLength,
+    unistrTextAccess,
+    unistrTextExtract,
+    unistrTextReplace,   
+    unistrTextCopy,   
+    NULL,                // MapOffsetToNative,
+    NULL,                // MapIndexToUTF16,
+    unistrTextClose,
+    NULL,                // spare 1
+    NULL,                // spare 2
+    NULL                 // spare 3
+};
+
+
+
 U_CDECL_END
 
 
 U_DRAFT UText * U_EXPORT2
 utext_openUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status) {
     // TODO:  use openConstUnicodeString, then add in the differences.
+    //
     ut = utext_setup(ut, 0, status);
     if (U_SUCCESS(*status)) {
-        ut->clone        = unistrTextClone;
-        ut->nativeLength = unistrTextLength;
-        ut->access       = unistrTextAccess;
-        ut->extract      = unistrTextExtract;
-        ut->replace      = unistrTextReplace;
-        ut->copy         = unistrTextCopy;
-        ut->close        = unistrTextClose;
+        ut->pFuncs              = &unistrFuncs;
+        ut->context             = s;
+        ut->providerProperties  = I32_FLAG(UTEXT_PROVIDER_STABLE_CHUNKS)|
+                                  I32_FLAG(UTEXT_PROVIDER_WRITABLE);
 
-        ut->context      = s;
-        ut->providerProperties = I32_FLAG(UTEXT_PROVIDER_STABLE_CHUNKS)|
-                                 I32_FLAG(UTEXT_PROVIDER_WRITABLE);
-
         ut->chunkContents       = s->getBuffer();
         ut->chunkLength         = s->length();
         ut->chunkNativeStart    = 0;
@@ -2239,14 +2278,12 @@
 U_DRAFT UText * U_EXPORT2
 utext_openConstUnicodeString(UText *ut, const UnicodeString *s, UErrorCode *status) {
     ut = utext_setup(ut, 0, status);
+    //    note:  use the standard (writable) function table for UnicodeString.
+    //           The flag settings disable writing, so having the functions in
+    //           the table is harmless.
     if (U_SUCCESS(*status)) {
-        ut->clone        = unistrTextClone;
-        ut->nativeLength = unistrTextLength;
-        ut->access       = unistrTextAccess;
-        ut->extract      = unistrTextExtract;
-        ut->close        = unistrTextClose;
-
-        ut->context      = s;
+        ut->pFuncs              = &unistrFuncs;
+        ut->context             = s;
         ut->providerProperties  = I32_FLAG(UTEXT_PROVIDER_STABLE_CHUNKS);
         ut->chunkContents       = s->getBuffer();
         ut->chunkLength         = s->length();
@@ -2504,8 +2541,24 @@
     return di;
 }
 
+static struct UTextFuncs ucstrFuncs = 
+{
+    sizeof(UTextFuncs),
+    0, 0, 0,           // Reserved alignment padding
+    ucstrTextClone,
+    ucstrTextLength,
+    ucstrTextAccess,
+    ucstrTextExtract,
+    NULL,              // Replace
+    NULL,              // Copy
+    NULL,              // MapOffsetToNative,
+    NULL,              // MapIndexToUTF16,
+    ucstrTextClose,
+    NULL,              // spare 1
+    NULL,              // spare 2
+    NULL,              // spare 3
+};
 
-
 U_CDECL_END
 
 
@@ -2520,14 +2573,7 @@
     }
     ut = utext_setup(ut, 0, status);
     if (U_SUCCESS(*status)) {
-        ut->clone        = ucstrTextClone;
-        ut->nativeLength = ucstrTextLength;
-        ut->access       = ucstrTextAccess;
-        ut->extract      = ucstrTextExtract;
-        ut->replace      = NULL;
-        ut->copy         = NULL;
-        ut->close        = ucstrTextClose;
-
+        ut->pFuncs               = &ucstrFuncs;
         ut->context              = s;
         ut->providerProperties   = I32_FLAG(UTEXT_PROVIDER_STABLE_CHUNKS);
         if (length==-1) {
@@ -2708,10 +2754,27 @@
     u_terminateUChars(dest, destCapacity, desti, status);
     return desti;
 }
+
+static struct UTextFuncs charIterFuncs = 
+{
+    sizeof(UTextFuncs),
+    0, 0, 0,             // Reserved alignment padding
+    charIterTextClone,
+    charIterTextLength,
+    charIterTextAccess,
+    charIterTextExtract,
+    NULL,                // Replace
+    NULL,                // Copy
+    NULL,                // MapOffsetToNative,
+    NULL,                // MapIndexToUTF16,
+    charIterTextClose,
+    NULL,                // spare 1
+    NULL,                // spare 2
+    NULL                 // spare 3
+};
 U_CDECL_END
 
 
-
 U_DRAFT UText * U_EXPORT2
 utext_openCharacterIterator(UText *ut, CharacterIterator *ci, UErrorCode *status) {
     if (U_FAILURE(*status)) {
@@ -2728,14 +2791,7 @@
     int32_t  extraSpace = 2 * CIBufSize * sizeof(UChar);
     ut = utext_setup(ut, extraSpace, status);
     if (U_SUCCESS(*status)) {
-        ut->clone        = charIterTextClone;
-        ut->nativeLength = charIterTextLength;
-        ut->access       = charIterTextAccess;
-        ut->extract      = charIterTextExtract;
-        ut->replace      = NULL;
-        ut->copy         = NULL;
-        ut->close        = charIterTextClose;
-
+        ut->pFuncs                = &charIterFuncs;
         ut->context              = ci;
         ut->providerProperties   = 0;
         ut->a                    = ci->endIndex();        // Length of text
@@ -2762,5 +2818,3 @@
 
 
 
-
-

Modified: trunk/source/config/make2sh.sed
===================================================================
--- trunk/source/config/make2sh.sed	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/config/make2sh.sed	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,7 @@
-# Copyright (C) 1999-2004, International Business Machines  Corporation and others.  All Rights Reserved.
+# Copyright (C) 1999-2006, International Business Machines  Corporation and others.  All Rights Reserved.
 s%^\([a-zA-Z\._-]*\)[ 	]*+=%\1=$(\1) %
 s%^[A-Z]*_SO_TARG*%## &%
+s%^SHARED_OBJECT.*%## &%
 s%^LD_SONAME.*%## &%
 s%$(\([^\)]*\))%${\1}%g
 s%^	%#M#	%

Modified: trunk/source/config/mh-mingw
===================================================================
--- trunk/source/config/mh-mingw	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/config/mh-mingw	2006-09-04 10:26:36 UTC (rev 106)
@@ -29,7 +29,8 @@
 SHAREDLIBCPPFLAGS = -DPIC
 
 ## Additional flags when building libraries and with threads
-THREADSCPPFLAGS = -D_REENTRANT
+THREADSCFLAGS = -mthreads
+THREADSCXXFLAGS = -mthreads
 LIBCPPFLAGS =
 
 # Commands to link. Link with C++ in case static libraries are used.

Modified: trunk/source/configure
===================================================================
--- trunk/source/configure	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/configure	2006-09-04 10:26:36 UTC (rev 106)
@@ -4301,6 +4301,7 @@
   fi
     case "${host}" in
   *-pc-cygwin*|*-pc-mingw*)
+        ICU_USE_THREADS=1
     if test "$ac_cv_c_compiler_gnu" = no; then
             ICU_USE_THREADS=1
       if test $ENABLE_DEBUG = 1; then

Modified: trunk/source/configure.in
===================================================================
--- trunk/source/configure.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/configure.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -293,6 +293,8 @@
   dnl Check to see if we are using CygWin with MSVC
   case "${host}" in
   *-pc-cygwin*|*-pc-mingw*)
+    dnl For gcc, the thread options are set by mh-mingw/mh-cygwin
+    ICU_USE_THREADS=1
     if test "$ac_cv_prog_gcc" = no; then
       dnl We're using normal windows compilers. Threading is available.
       ICU_USE_THREADS=1

Modified: trunk/source/data/makedata.mak
===================================================================
--- trunk/source/data/makedata.mak	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/data/makedata.mak	2006-09-04 10:26:36 UTC (rev 106)
@@ -230,10 +230,9 @@
 !ENDIF
 
 !IFDEF BRK_RES_SOURCE
-BRK_RES_SOURCE = $(ICUBRK)\root.txt $(BRK_RES_SOURCE)
 BRK_RES_FILES = $(BRK_RES_SOURCE:.txt =.res brkitr\)
 BRK_RES_FILES = $(BRK_RES_FILES:.txt=.res)
-BRK_RES_FILES = $(BRK_RES_FILES:brkitr\ =)
+BRK_RES_FILES = $(ICUBRK)\root.res $(ICUBRK)\$(BRK_RES_FILES:brkitr\ =)
 ALL_RES = $(ALL_RES) $(ICUBRK)\res_index.res
 !ENDIF
 

Modified: trunk/source/data/misc/zoneinfo.txt
===================================================================
--- trunk/source/data/misc/zoneinfo.txt	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/data/misc/zoneinfo.txt	2006-09-04 10:26:36 UTC (rev 106)
@@ -3,19 +3,19 @@
 // Corporation and others.  All Rights Reserved.
 //---------------------------------------------------------
 // Build tool: tz2icu
-// Build date: Tue Jul 18 00:59:34 2006
+// Build date: Mon Aug 21 14:54:26 2006
 // Olson source: ftp://elsie.nci.nih.gov/pub/
-// Olson version: 2006g
+// Olson version: 2006j
 //---------------------------------------------------------
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<
 //---------------------------------------------------------
 
 zoneinfo:table(nofallback) {
- TZVersion { "2006g" }
+ TZVersion { "2006j" }
  Zones:array { 
-  /* ACT */ :int { 316 } //Z#0
-,  /* AET */ :int { 327 } //Z#1
+  /* ACT */ :int { 318 } //Z#0
+,  /* AET */ :int { 329 } //Z#1
 ,  /* AGT */ :int { 62 } //Z#2
 ,  /* ART */ :int { 17 } //Z#3
 ,  /* AST */ :int { 58 } //Z#4
@@ -33,7 +33,7 @@
     :intvector { -1062210920 }
     :intvector { 10800, 0 }
     :bin { "00" }
-    :intvector { 7, 356 }
+    :intvector { 7, 358 }
   } //Z#7
 ,  /* Africa/Algiers */ :array {
     :intvector { -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1531443600, -956365200, -950486400, -942012000, -812502000, -796262400, -781052400, -766630800, -733280400, -439430400, -212029200, 41468400, 54774000, 231724800, 246236400, 259545600, 275274000, 309740400, 325468800, 341802000, 357523200 }
@@ -87,7 +87,7 @@
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Egypt"
     :intvector { 7200, 1995 }
-    :intvector { 3, 17, 361 }
+    :intvector { 3, 17, 363 }
   } //Z#17
 ,  /* Africa/Casablanca */ :array {
     :intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000 }
@@ -145,7 +145,7 @@
     :intvector { -2109290652 }
     :intvector { 7200, 0 }
     :bin { "00" }
-    :intvector { 28, 338 }
+    :intvector { 28, 340 }
   } //Z#28
 ,  /* Africa/Johannesburg */ :array {
     :intvector { -2109288600, -860976000, -845254800, -829526400, -813805200 }
@@ -272,7 +272,7 @@
     :intvector { -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0 }
     :bin { "0001000100010002000100010001000100010001000100010002000102" }
-    :intvector { 54, 481 }
+    :intvector { 54, 487 }
   } //Z#54
 ,  /* Africa/Tunis */ :array {
     :intvector { -1855958961, -969242400, -950493600, -941940000, -891136800, -877827600, -857257200, -844556400, -842918400, -842223600, -828230400, -812502000, -796269600, -781052400, -766634400, 231202800, 243903600, 262825200, 276044400, 581122800, 591145200, 606870000, 622594800, 641516400, 654649200, 1114902000, 1128038400 }
@@ -294,7 +294,7 @@
     :bin { "010100000100010001000100010001000100010001000100010001000100010001020203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -36000, 2007 }
-    :intvector { 57, 75, 552 }
+    :intvector { 57, 76, 558 }
   } //Z#57
 ,  /* America/Anchorage */ :array {
     :intvector { -880200000, -769395600, -765378000, -86882400, -21470400, -5749200, 9979200, 25700400, 41428800, 57754800, 73483200, 89204400, 104932800, 120654000, 126705600, 152103600, 162388800, 183553200, 199281600, 215607600, 230731200, 247057200, 262785600, 278506800, 294235200, 309956400, 325684800, 341406000, 357134400, 372855600, 388584000, 404910000, 420033600, 436359600, 439030800, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000 }
@@ -302,7 +302,7 @@
     :bin { "010100000100010001000100010001000100010001000100010001000100010001020203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -32400, 2007 }
-    :intvector { 4, 58, 551 }
+    :intvector { 4, 58, 557 }
   } //Z#58
 ,  /* America/Anguilla */ :array {
     :intvector { -1825098464 }
@@ -323,26 +323,26 @@
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100020302030203020302030203020102" }
-    :intvector { 2, 62, 83 }
+    :intvector { 2, 62, 85 }
   } //Z#62
 ,  /* America/Argentina/Catamarca */ :array {
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000203020302030203000302030201020002" }
-    :intvector { 63, 64, 88 }
+    :intvector { 63, 64, 90 }
   } //Z#63
 ,  /* America/Argentina/ComodRivadavia */ :int { 63 } //Z#64
 ,  /* America/Argentina/Cordoba */ :array {
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100020302030203020300030203020102" }
-    :intvector { 65, 94, 177 }
+    :intvector { 65, 96, 179 }
   } //Z#65
 ,  /* America/Argentina/Jujuy */ :array {
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 657086400, 669178800, 686721600, 699415200, 719377200, 731469600, 938919600, 952052400 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100020302030203000100030203020102" }
-    :intvector { 66, 132 }
+    :intvector { 66, 134 }
   } //Z#66
 ,  /* America/Argentina/La_Rioja */ :array {
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000 }
@@ -353,7 +353,7 @@
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 655963200, 667796400, 687499200, 699418800, 719380800, 731469600, 938919600, 952052400, 1085281200, 1096171200 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000203020302030001000100030201020002" }
-    :intvector { 68, 146 }
+    :intvector { 68, 148 }
   } //Z#68
 ,  /* America/Argentina/Rio_Gallegos */ :array {
     :intvector { -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000 }
@@ -387,2289 +387,2306 @@
     "Para"
     :intvector { -14400, 2005 }
   } //Z#74
-,  /* America/Atka */ :int { 57 } //Z#75
+,  /* America/Atikokan */ :array {
+    :intvector { -1632067200, -1614790800, -923248800, -880214400, -769395600, -765392400 }
+    :intvector { -21600, 0, -21600, 3600, -18000, 0 }
+    :bin { "010001010102" }
+    :intvector { 75, 95 }
+  } //Z#75
+,  /* America/Atka */ :int { 57 } //Z#76
 ,  /* America/Bahia */ :array {
     :intvector { -1767216356, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#76
+  } //Z#77
 ,  /* America/Barbados */ :array {
     :intvector { -1451678492, -1199217692, 234943200, 244616400, 261554400, 276066000, 293004000, 307515600, 325058400, 338706000 }
     :intvector { -14400, 0, -14400, 3600, -14308, 0 }
     :bin { "02000100010001000100" }
-  } //Z#77
+  } //Z#78
 ,  /* America/Belem */ :array {
     :intvector { -1767213964, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100" }
-  } //Z#78
+  } //Z#79
 ,  /* America/Belize */ :array {
     :intvector { -1822500432, -1616954400, -1606069800, -1585504800, -1574015400, -1554055200, -1542565800, -1522605600, -1511116200, -1490551200, -1479666600, -1459101600, -1448217000, -1427652000, -1416162600, -1396202400, -1384713000, -1364752800, -1353263400, -1333303200, -1321813800, -1301248800, -1290364200, -1269799200, -1258914600, -1238349600, -1226860200, -1206900000, -1195410600, -1175450400, -1163961000, -1143396000, -1132511400, -1111946400, -1101061800, -1080496800, -1069612200, -1049047200, -1037557800, -1017597600, -1006108200, -986148000, -974658600, -954093600, -943209000, -922644000, -911759400, -891194400, -879705000, -859744800, -848255400, 123919200, 129618000, 409039200, 413874000 }
     :intvector { -21600, 0, -21600, 1800, -21600, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010002000200" }
-  } //Z#79
+  } //Z#80
+,  /* America/Blanc-Sablon */ :array {
+    :intvector { -1632074400, -1614798000, -880221600, -769395600, -765399600 }
+    :intvector { -14400, 0, -14400, 3600 }
+    :bin { "0100010100" }
+  } //Z#81
 ,  /* America/Boa_Vista */ :array {
     :intvector { -1767211040, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 938923200, 951620400, 970977600, 971578800 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#80
+  } //Z#82
 ,  /* America/Bogota */ :array {
     :intvector { -1739041420, 704869200, 733896000 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "000100" }
-  } //Z#81
+  } //Z#83
 ,  /* America/Boise */ :array {
     :intvector { -1633269600, -1615129200, -1601820000, -1583679600, -1471788000, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 129114000, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -28800, 0, -28800, 3600, -25200, 0, -25200, 3600 }
     :bin { "01000100020303020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -25200, 2007 }
-  } //Z#82
-,  /* America/Buenos_Aires */ :int { 62 } //Z#83
+  } //Z#84
+,  /* America/Buenos_Aires */ :int { 62 } //Z#85
 ,  /* America/Cambridge_Bay */ :array {
     :intvector { -1632063600, -1615132800, -1596985200, -1583172000, -880210800, -769395600, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954662400, 972802800, 973400400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -25200, 0, -25200, 3600, -25200, 7200, -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "01000100010100020001000100010001000100010001000100010001000100010001000100010001000100010001000103040503010001000100010001000100" }
     "Canada"
     :intvector { -25200, 2007 }
-  } //Z#84
+  } //Z#86
 ,  /* America/Campo_Grande */ :array {
     :intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "Brazil"
     :intvector { -14400, 2005 }
-  } //Z#85
+  } //Z#87
 ,  /* America/Cancun */ :array {
     :intvector { -1514743200, 377935200, 828860400, 846396000, 860310000, 877845600, 891759600, 902037600, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "000203020302030100010001000100" }
     "Mexico"
     :intvector { -21600, 2002 }
-  } //Z#86
+  } //Z#88
 ,  /* America/Caracas */ :array {
     :intvector { -1826739140, -157750200 }
     :intvector { -16200, 0, -14400, 0 }
     :bin { "0001" }
-  } //Z#87
-,  /* America/Catamarca */ :int { 63 } //Z#88
+  } //Z#89
+,  /* America/Catamarca */ :int { 63 } //Z#90
 ,  /* America/Cayenne */ :array {
     :intvector { -1846269040, -71092800 }
     :intvector { -14400, 0, -10800, 0 }
     :bin { "0001" }
-  } //Z#89
+  } //Z#91
 ,  /* America/Cayman */ :array {
     :intvector { -1827687168 }
     :intvector { -18000, 0 }
     :bin { "00" }
-  } //Z#90
+  } //Z#92
 ,  /* America/Chicago */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1563724800, -1551632400, -1538928000, -1520182800, -1504454400, -1491757200, -1473004800, -1459702800, -1441555200, -1428253200, -1410105600, -1396803600, -1378656000, -1365354000, -1347206400, -1333904400, -1315152000, -1301850000, -1283702400, -1270400400, -1252252800, -1238950800, -1220803200, -1207501200, -1189353600, -1176051600, -1157299200, -1144602000, -1125849600, -1112547600, -1094400000, -1081098000, -1067788800, -1045414800, -1031500800, -1018198800, -1000051200, -986749200, -967996800, -955299600, -936547200, -923245200, -905097600, -891795600, -880214400, -769395600, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 11439!
 64800, 1
162105200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000200010001000100010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -21600, 2007 }
-    :intvector { 91, 341, 554 }
-  } //Z#91
+    :intvector { 93, 343, 560 }
+  } //Z#93
 ,  /* America/Chihuahua */ :array {
     :intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
     :bin { "000200020002030203020100010001000100" }
     "Mexico"
     :intvector { -25200, 2002 }
-  } //Z#92
-,  /* America/Coral_Harbour */ :array {
-    :intvector { -1632070800, -1615140000, -1596992400, -1583179200, -880218000, -769395600, -765396000 }
-    :intvector { -18000, 0, -18000, 3600 }
-    :bin { "01000100010100" }
-  } //Z#93
-,  /* America/Cordoba */ :int { 65 } //Z#94
+  } //Z#94
+,  /* America/Coral_Harbour */ :int { 75 } //Z#95
+,  /* America/Cordoba */ :int { 65 } //Z#96
 ,  /* America/Costa_Rica */ :array {
     :intvector { -1545071020, 288770400, 297234000, 320220000, 328683600, 664264800, 678344400, 695714400, 700635600 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "000100010001000100" }
-  } //Z#95
+  } //Z#97
 ,  /* America/Cuiaba */ :array {
     :intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "Brazil"
     :intvector { -14400, 2005 }
-  } //Z#96
+  } //Z#98
 ,  /* America/Curacao */ :array {
     :intvector { -1826738656, -157750200 }
     :intvector { -16200, 0, -14400, 0 }
     :bin { "0001" }
-  } //Z#97
+  } //Z#99
 ,  /* America/Danmarkshavn */ :array {
     :intvector { -1686091520, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 820465200 }
     :intvector { -10800, 0, -10800, 3600, 0, 0 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010002" }
-  } //Z#98
+  } //Z#100
 ,  /* America/Dawson */ :array {
     :intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -769395600, -765381600, -147884400, -131554800, 120646800, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400 }
     :intvector { -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600 }
     :bin { "01000100010100020003040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "Canada"
     :intvector { -28800, 2007 }
-  } //Z#99
+  } //Z#101
 ,  /* America/Dawson_Creek */ :array {
     :intvector { -1632060000, -1614783600, -880207200, -769395600, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 84013200 }
     :intvector { -28800, 0, -28800, 3600, -25200, 0 }
     :bin { "010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102" }
-  } //Z#100
+  } //Z#102
 ,  /* America/Denver */ :array {
     :intvector { -1633273200, -1615132800, -1601823600, -1583683200, -1570374000, -1551628800, -1538924400, -1534089600, -880210800, -769395600, -765388800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -25200, 0, -25200, 3600 }
     :bin { "0100010001000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -25200, 2007 }
-    :intvector { 101, 182, 496, 560 }
-  } //Z#101
+    :intvector { 103, 184, 502, 566 }
+  } //Z#103
 ,  /* America/Detroit */ :array {
     :intvector { -2051202469, -1724083200, -880218000, -769395600, -765396000, -684349200, -671047200, -80499600, -68666400, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -21600, 0, -18000, 0, -18000, 3600 }
     :bin { "0001020201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     "US"
     :intvector { -18000, 2007 }
-    :intvector { 102, 559 }
-  } //Z#102
+    :intvector { 104, 565 }
+  } //Z#104
 ,  /* America/Dominica */ :array {
     :intvector { -1846266804 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#103
+  } //Z#105
 ,  /* America/Edmonton */ :array {
     :intvector { -1998663968, -1632063600, -1614787200, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -769395600, -765388800, -715791600, -702489600, -84380400, -68659200, -21481200, -5760000, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -25200, 0, -25200, 3600 }
     :bin { "0001000100010001000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -25200, 2007 }
-    :intvector { 104, 348 }
-  } //Z#104
+    :intvector { 106, 350 }
+  } //Z#106
 ,  /* America/Eirunepe */ :array {
     :intvector { -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#105
+  } //Z#107
 ,  /* America/El_Salvador */ :array {
     :intvector { -1546279392, 547020000, 559717200, 578469600, 591166800 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "0001000100" }
-  } //Z#106
-,  /* America/Ensenada */ :int { 192 } //Z#107
-,  /* America/Fort_Wayne */ :int { 122 } //Z#108
+  } //Z#108
+,  /* America/Ensenada */ :int { 194 } //Z#109
+,  /* America/Fort_Wayne */ :int { 124 } //Z#110
 ,  /* America/Fortaleza */ :array {
     :intvector { -1767216360, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#109
+  } //Z#111
 ,  /* America/Glace_Bay */ :array {
     :intvector { -2131646412, -1632074400, -1614798000, -880221600, -769395600, -765399600, -526500000, -513198000, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -14400, 2007 }
-  } //Z#110
+  } //Z#112
 ,  /* America/Godthab */ :array {
     :intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { -10800, 1996 }
-  } //Z#111
+  } //Z#113
 ,  /* America/Goose_Bay */ :array {
     :intvector { -1632076148, -1614799748, -1096921748, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -769395600, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -119903400, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544593660, 562129260, 576043260, 594180060, 607492860, 625633260, 638942460, 657082860, 670996860, 688532460, 702446460, 719982060, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860 }
     :intvector { -14400, 0, -14400, 3600, -14400, 7200, -12652, 0, -12652, 3600, -12600, 0, -12600, 3600 }
     :bin { "040305060506050605060506050605060605060506050605060506050605060506050605060506050605060506050605060506050605060506050001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000200010001000100010001000100010001000100010001000100010001000100010001000100" }
     "StJohns"
     :intvector { -14400, 2007 }
-  } //Z#112
+  } //Z#114
 ,  /* America/Grand_Turk */ :array {
     :intvector { -1827687168, 294210000, 309931200, 325659600, 341380800, 357109200, 372830400, 388558800, 404884800, 420008400, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0001000100010001000100010001000100" }
     "TC"
     :intvector { -18000, 1987 }
-  } //Z#113
+  } //Z#115
 ,  /* America/Grenada */ :array {
     :intvector { -1846266780 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#114
+  } //Z#116
 ,  /* America/Guadeloupe */ :array {
     :intvector { -1848254032 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#115
+  } //Z#117
 ,  /* America/Guatemala */ :array {
     :intvector { -1617040676, 123055200, 130914000, 422344800, 433054800, 669708000, 684219600, 1146376800, 1159678800 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "000100010001000100" }
-  } //Z#116
+  } //Z#118
 ,  /* America/Guayaquil */ :array {
     :intvector { -1230749160 }
     :intvector { -18000, 0 }
     :bin { "00" }
-  } //Z#117
+  } //Z#119
 ,  /* America/Guyana */ :array {
     :intvector { -1730578040, -113688900, 176010300, 662698800 }
     :intvector { -14400, 0, -13500, 0, -10800, 0 }
     :bin { "01010200" }
-  } //Z#118
+  } //Z#120
 ,  /* America/Halifax */ :array {
     :intvector { -2131645536, -1696276800, -1680469200, -1632074400, -1614798000, -1566763200, -1557090000, -1535486400, -1524949200, -1504468800, -1493413200, -1472414400, -1461963600, -1440964800, -1429390800, -1409515200, -1396731600, -1376856000, -1366491600, -1346616000, -1333832400, -1313956800, -1303678800, -1282507200, -1272661200, -1251057600, -1240088400, -1219608000, -1207429200, -1188763200, -1175979600, -1157313600, -1143925200, -1124049600, -1113771600, -1091390400, -1081026000, -1059854400, -1050786000, -1030910400, -1018126800, -999460800, -986677200, -965592000, -955227600, -935956800, -923173200, -904507200, -891723600, -880221600, -769395600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -431546400, -418244400, -400096800, -386794800, -368647200, -355345200, -337197600, -323895600, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -14400, 2007 }
-    :intvector { 119, 344 }
-  } //Z#119
+    :intvector { 121, 346 }
+  } //Z#121
 ,  /* America/Havana */ :array {
     :intvector { -1402813824, -1311534000, -1300996800, -933534000, -925675200, -902084400, -893620800, -870030000, -862171200, -775681200, -767822400, -744231600, -736372800, -144702000, -134251200, -113425200, -102542400, -86295600, -72907200, -54154800, -41457600, -21495600, -5774400, 9954000, 25675200, 41403600, 57729600, 73458000, 87364800, 104907600, 118900800, 136357200, 150436800, 167806800, 183528000, 199256400, 215582400, 230706000, 247032000, 263365200, 276667200, 290581200, 308721600, 322030800, 340171200, 358318800, 371620800, 389768400, 403070400, 421218000, 434520000, 452667600, 466574400, 484117200, 498024000, 511333200, 529473600, 542782800, 560923200, 574837200, 592372800, 606286800, 623822400, 638946000, 655876800, 671000400, 687330000, 702450000, 718779600, 733899600, 750229200, 765349200, 781678800, 796798800, 813128400, 828853200, 844578000, 860302800, 876632400, 891147600, 909291600, 922597200, 941346000, 954651600, 972795600, 986101200, 1004245200, 1018155600, 1035694800, 1049605200, 1067144400, 1081054800 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "Cuba"
     :intvector { -18000, 2006 }
-    :intvector { 120, 355 }
-  } //Z#120
+    :intvector { 122, 357 }
+  } //Z#122
 ,  /* America/Hermosillo */ :array {
     :intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 }
     :intvector { -28800, 0, -25200, 0, -25200, 3600, -21600, 0 }
     :bin { "010301030103010001020102010201" }
-  } //Z#121
+  } //Z#123
 ,  /* America/Indiana/Indianapolis */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -900259200, -891795600, -880214400, -769395600, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -386787600, -368640000, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "010001000100010100010001000100010001000100010001000100020002030203020302" }
     "US"
     :intvector { -18000, 2007 }
-    :intvector { 108, 122, 128, 461, 555 }
-  } //Z#122
+    :intvector { 110, 124, 130, 467, 561 }
+  } //Z#124
 ,  /* America/Indiana/Knox */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -195066000, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 1143961200, 1162105200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "01000100010100010001000100010001000100010001000100010001000100010001000100020001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020100" }
     "US"
     :intvector { -21600, 2007 }
-    :intvector { 123, 136, 558 }
-  } //Z#123
+    :intvector { 125, 138, 564 }
+  } //Z#125
 ,  /* America/Indiana/Marengo */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -589392000, -576090000, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "01000100010100010001000100010001000100010001000203020302030203020302010203020302" }
     "US"
     :intvector { -18000, 2007 }
-  } //Z#124
+  } //Z#126
 ,  /* America/Indiana/Petersburg */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 1143961200, 1162105200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "0100010001010001000100010001000100010001000100010001000200010001000100010001000100010001000100010001020100" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#125
+  } //Z#127
 ,  /* America/Indiana/Vevay */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -495043200, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "010001000101000203020302030203020302" }
     "US"
     :intvector { -18000, 2007 }
-  } //Z#126
+  } //Z#128
 ,  /* America/Indiana/Vincennes */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "0100010001010001000100010001000100010001000100010001000100010002030203020100" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#127
-,  /* America/Indianapolis */ :int { 122 } //Z#128
+  } //Z#129
+,  /* America/Indianapolis */ :int { 124 } //Z#130
 ,  /* America/Inuvik */ :array {
     :intvector { -1632060000, -1615129200, -1596981600, -1583168400, -880207200, -769395600, -765385200, -147888000, -131558400, 294228000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -28800, 0, -28800, 3600, -28800, 7200, -25200, 0, -25200, 3600 }
     :bin { "01000100010100020003040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "Canada"
     :intvector { -25200, 2007 }
-  } //Z#129
+  } //Z#131
 ,  /* America/Iqaluit */ :array {
     :intvector { -1632070800, -1615140000, -1596992400, -1583179200, -880218000, -769395600, -765396000, -147898800, -131569200, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -18000, 7200 }
     :bin { "030203020303020402030203020302030203020302030203020302030203020302030203020302030203020302030203000102030203020302030203020302" }
     "Canada"
     :intvector { -18000, 2007 }
-  } //Z#130
+  } //Z#132
 ,  /* America/Jamaica */ :array {
     :intvector { -1827687168, 136364400, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "000100010001000100010001000100010001000100" }
-    :intvector { 131, 478 }
-  } //Z#131
-,  /* America/Jujuy */ :int { 66 } //Z#132
+    :intvector { 133, 484 }
+  } //Z#133
+,  /* America/Jujuy */ :int { 66 } //Z#134
 ,  /* America/Juneau */ :array {
     :intvector { -880207200, -769395600, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 439030800, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000 }
     :intvector { -32400, 0, -32400, 3600, -28800, 0, -28800, 3600 }
     :bin { "0303020302030203020302030203020302030203020302030203020302030203000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -32400, 2007 }
-  } //Z#133
+  } //Z#135
 ,  /* America/Kentucky/Louisville */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -769395600, -765392400, -757360800, -744224400, -715795200, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "01000100010001000101000100010001000100010001000100010001000100010001000102030203020302030203020302010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -18000, 2007 }
-    :intvector { 134, 140 }
-  } //Z#134
+    :intvector { 136, 142 }
+  } //Z#136
 ,  /* America/Kentucky/Monticello */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
     :bin { "01000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102030203020302030203020302" }
     "US"
     :intvector { -18000, 2007 }
-  } //Z#135
-,  /* America/Knox_IN */ :int { 123 } //Z#136
+  } //Z#137
+,  /* America/Knox_IN */ :int { 125 } //Z#138
 ,  /* America/La_Paz */ :array {
     :intvector { -1205954844, -1192307244 }
     :intvector { -16356, 3600, -14400, 0 }
     :bin { "0001" }
-  } //Z#137
+  } //Z#139
 ,  /* America/Lima */ :array {
     :intvector { -1938538284, -1009825200, -1002052800, -986756400, -971035200, -955306800, -939585600, 504939600, 512712000, 536475600, 544248000, 631170000, 638942400, 757400400, 765172800 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "000100010001000100010001000100" }
-  } //Z#138
+  } //Z#140
 ,  /* America/Los_Angeles */ :array {
     :intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -769395600, -765385200, -687967200, -662655600, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400 }
     :intvector { -28800, 0, -28800, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -28800, 2007 }
-    :intvector { 139, 501, 561, 562 }
-  } //Z#139
-,  /* America/Louisville */ :int { 134 } //Z#140
+    :intvector { 141, 507, 567, 568 }
+  } //Z#141
+,  /* America/Louisville */ :int { 136 } //Z#142
 ,  /* America/Maceio */ :array {
     :intvector { -1767217028, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#141
+  } //Z#143
 ,  /* America/Managua */ :array {
     :intvector { -1121105688, 105084000, 161758800, 290584800, 299134800, 322034400, 330584400, 694260000, 717310800, 725868000, 852094800, 1113112800, 1128229200, 1146384000, 1159678800 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "000200010001000200020001000100" }
-  } //Z#142
+  } //Z#144
 ,  /* America/Manaus */ :array {
     :intvector { -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 143, 337 }
-  } //Z#143
+    :intvector { 145, 339 }
+  } //Z#145
 ,  /* America/Martinique */ :array {
     :intvector { -1851537340, 323841600, 338958000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100" }
-  } //Z#144
+  } //Z#146
 ,  /* America/Mazatlan */ :array {
     :intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800 }
     :intvector { -28800, 0, -25200, 0, -25200, 3600, -21600, 0 }
     :bin { "010301030103010001020102010201020102010201" }
     "Mexico"
     :intvector { -25200, 2002 }
-    :intvector { 145, 487 }
-  } //Z#145
-,  /* America/Mendoza */ :int { 68 } //Z#146
+    :intvector { 147, 493 }
+  } //Z#147
+,  /* America/Mendoza */ :int { 68 } //Z#148
 ,  /* America/Menominee */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -116438400, -100112400, -21484800, 104914800, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "0100010001010001000100020100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#147
+  } //Z#149
 ,  /* America/Merida */ :array {
     :intvector { -1514743200, 377935200, 407653200, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0 }
     :bin { "000200010001000100010001000100" }
     "Mexico"
     :intvector { -21600, 2002 }
-  } //Z#148
+  } //Z#150
 ,  /* America/Mexico_City */ :array {
     :intvector { -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -975261600, -963169200, -917114400, -907354800, -821901600, -810068400, -627501600, -612990000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200 }
     :intvector { -25200, 0, -21600, 0, -21600, 3600 }
     :bin { "0001000100010201020102010201020102010201020102010201" }
     "Mexico"
     :intvector { -21600, 2002 }
-    :intvector { 149, 488 }
-  } //Z#149
+    :intvector { 151, 494 }
+  } //Z#151
 ,  /* America/Miquelon */ :array {
     :intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400 }
     :intvector { -14400, 0, -10800, 0, -10800, 3600 }
     :bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     "Canada"
     :intvector { -10800, 2007 }
-  } //Z#150
+  } //Z#152
 ,  /* America/Moncton */ :array {
     :intvector { -2131642800, -1632074400, -1614798000, -1153681200, -1145822400, -1122231600, -1114372800, -1090782000, -1082923200, -1059332400, -1051473600, -1027882800, -1020024000, -996433200, -988574400, -965674800, -955396800, -934743600, -923947200, -904503600, -891892800, -880221600, -769395600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -620848800, -608151600, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -463600800, -450298800, -431546400, -418244400, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100010001000100010001000100010001000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-    "Moncton"
+    "Canada"
     :intvector { -14400, 2007 }
-  } //Z#151
+  } //Z#153
 ,  /* America/Monterrey */ :array {
     :intvector { -1514743200, 576057600, 594198000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "000100010001000100010001000100" }
     "Mexico"
     :intvector { -21600, 2002 }
-  } //Z#152
+  } //Z#154
 ,  /* America/Montevideo */ :array {
     :intvector { -1567455316, -1459542600, -1443819600, -1428006600, -1412283600, -1396470600, -1380747600, -1141590600, -1128286800, -1110141000, -1096837200, -1078691400, -1065387600, -1046637000, -1033938000, -1015187400, -1002488400, -983737800, -971038800, -952288200, -938984400, -920838600, -907534800, -896819400, -883602000, -853619400, -845848800, -334789200, -319672800, -314226000, -309996000, -149720400, -134604000, -118270800, -100044000, -86821200, -68508000, -50446800, -34119000, -18910800, -2583000, 12625200, 28953000, 72932400, 82692000, 132116400, 156911400, 212983200, 250052400, 260244000, 307594800, 325994400, 566449200, 574308000, 597812400, 605671200, 625633200, 636516000, 656478000, 667965600, 688532400, 699415200, 719377200, 730864800, 1095562800, 1111896000, 1128834000, 1142136000 }
     :intvector { -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010004020402040204020402040203020302030204020304020402040204020402040204020402040204020402" }
-  } //Z#153
+  } //Z#155
 ,  /* America/Montreal */ :array {
     :intvector { -1665334800, -1662753600, -1632070800, -1614794400, -1601742600, -1583775000, -1567355400, -1554053400, -1535907600, -1522603800, -1504458000, -1491154200, -1439830800, -1428255000, -1409504400, -1396805400, -1378054800, -1365355800, -1346612400, -1333915200, -1315162800, -1301860800, -1283713200, -1270411200, -1252263600, -1238961600, -1220814000, -1207512000, -1188759600, -1176062400, -1157310000, -1144008000, -1125860400, -1112558400, -1094410800, -1081108800, -1062961200, -1049659200, -1031511600, -1018209600, -1000062000, -986760000, -968007600, -955310400, -936558000, -880218000, -769395600, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -636573600, -620845200, -605124000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -18000, 2007 }
-  } //Z#154
+  } //Z#156
 ,  /* America/Montserrat */ :array {
     :intvector { -1846266608 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#155
+  } //Z#157
 ,  /* America/Nassau */ :array {
     :intvector { -1825095036, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Bahamas"
     :intvector { -18000, 1987 }
-  } //Z#156
+  } //Z#158
 ,  /* America/New_York */ :array {
     :intvector { -1633280400, -1615140000, -1601830800, -1583690400, -1570381200, -1551636000, -1536512400, -1523210400, -1504458000, -1491760800, -1473008400, -1459706400, -1441558800, -1428256800, -1410109200, -1396807200, -1378659600, -1365357600, -1347210000, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1189357200, -1176055200, -1157302800, -1144605600, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -923248800, -905101200, -891799200, -880218000, -769395600, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -639597600, -620845200, -608148000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 11439!
 61200, 1
162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -18000, 2007 }
-    :intvector { 157, 556 }
-  } //Z#157
+    :intvector { 159, 562 }
+  } //Z#159
 ,  /* America/Nipigon */ :array {
     :intvector { -1632070800, -1614794400, -923252400, -880218000, -769395600, -765396000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "010001010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -18000, 2007 }
-  } //Z#158
+  } //Z#160
 ,  /* America/Nome */ :array {
     :intvector { -880196400, -769395600, -765374400, -86878800, -21466800, -5745600, 9982800, 25704000, 41432400, 57758400, 73486800, 89208000, 104936400, 120657600, 126709200, 152107200, 162392400, 183556800, 199285200, 215611200, 230734800, 247060800, 262789200, 278510400, 294238800, 309960000, 325688400, 341409600, 357138000, 372859200, 388587600, 404913600, 420037200, 436363200, 439030800, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000 }
     :intvector { -39600, 0, -39600, 3600, -32400, 0, -32400, 3600 }
     :bin { "010100000100010001000100010001000100010001000100010001000100010001020203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -32400, 2007 }
-  } //Z#159
+  } //Z#161
 ,  /* America/Noronha */ :array {
     :intvector { -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 }
     :intvector { -7200, 0, -7200, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 160, 335 }
-  } //Z#160
+    :intvector { 162, 337 }
+  } //Z#162
 ,  /* America/North_Dakota/Center */ :array {
     :intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010203020302030203020302030203020302030203020302030203020302" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#161
+  } //Z#163
 ,  /* America/North_Dakota/New_Salem */ :array {
     :intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102030203020302" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#162
+  } //Z#164
 ,  /* America/Panama */ :array {
     :intvector { -1946918424 }
     :intvector { -18000, 0 }
     :bin { "00" }
-  } //Z#163
+  } //Z#165
 ,  /* America/Pangnirtung */ :array {
     :intvector { -1632074400, -1615143600, -1596996000, -1583182800, -880221600, -769395600, -765399600, -147902400, -131572800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600, -14400, 7200 }
     :bin { "050405040505040604050405040504050405040504050405040504050405040504050405040504030203020302030203000102030203020302030203020302" }
     "Canada"
     :intvector { -18000, 2007 }
-  } //Z#164
+  } //Z#166
 ,  /* America/Paramaribo */ :array {
     :intvector { -1861906760, -1104524348, -765317964, 185686200, 465449400 }
     :intvector { -13252, 0, -13236, 0, -12600, 0, -10800, 0 }
     :bin { "0001020203" }
-  } //Z#165
+  } //Z#167
 ,  /* America/Phoenix */ :array {
     :intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }
     :intvector { -25200, 0, -25200, 3600 }
     :bin { "01000100010001000100" }
-    :intvector { 166, 498, 553 }
-  } //Z#166
+    :intvector { 168, 504, 559 }
+  } //Z#168
 ,  /* America/Port-au-Prince */ :array {
     :intvector { -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100" }
     "Haiti"
     :intvector { -18000, 2005 }
-  } //Z#167
+  } //Z#169
 ,  /* America/Port_of_Spain */ :array {
     :intvector { -1825098836 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#168
-,  /* America/Porto_Acre */ :int { 176 } //Z#169
+  } //Z#170
+,  /* America/Porto_Acre */ :int { 178 } //Z#171
 ,  /* America/Porto_Velho */ :array {
     :intvector { -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100" }
-  } //Z#170
+  } //Z#172
 ,  /* America/Puerto_Rico */ :array {
     :intvector { -873057600, -769395600, -765399600 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "010100" }
-    :intvector { 171, 500 }
-  } //Z#171
+    :intvector { 173, 506 }
+  } //Z#173
 ,  /* America/Rainy_River */ :array {
     :intvector { -1632067200, -1614790800, -923248800, -880214400, -769395600, -765392400, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "010001010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -21600, 2007 }
-  } //Z#172
+  } //Z#174
 ,  /* America/Rankin_Inlet */ :array {
     :intvector { -1632067200, -1615136400, -1596988800, -1583175600, -880214400, -769395600, -765392400, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -21600, 0, -21600, 3600, -21600, 7200, -18000, 0 }
     :bin { "010001000101000200010001000100010001000100010001000100010001000100010001000100010001000100010001000103010001000100010001000100" }
     "Canada"
     :intvector { -21600, 2007 }
-  } //Z#173
+  } //Z#175
 ,  /* America/Recife */ :array {
     :intvector { -1767217224, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 971575200, 1003028400, 1013911200 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-  } //Z#174
+  } //Z#176
 ,  /* America/Regina */ :array {
     :intvector { -2030202084, -1632063600, -1614787200, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -769395600, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0 }
     :bin { "0001000100010001000100010001000100010001000100010100010001000100010001000100010001000100010001000100010002" }
-    :intvector { 175, 346, 351 }
-  } //Z#175
+    :intvector { 177, 348, 353 }
+  } //Z#177
 ,  /* America/Rio_Branco */ :array {
     :intvector { -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 169, 176, 334 }
-  } //Z#176
-,  /* America/Rosario */ :int { 65 } //Z#177
+    :intvector { 171, 178, 336 }
+  } //Z#178
+,  /* America/Rosario */ :int { 65 } //Z#179
 ,  /* America/Santiago */ :array {
     :intvector { -1893439040, -1619982000, -1593720000, -1335985200, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -101937600, -88635600, -69883200, -57186000, -38433600, -25736400, -6984000, 6318000, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 119419200, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 542775600, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 655876800, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 857876400, 876628800, 889930800, 906868800, 923194800, 939528000 }
     :intvector { -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }
     :bin { "000100010001000100010001000203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }
     "Chile"
     :intvector { -14400, 2000 }
-    :intvector { 178, 353 }
-  } //Z#178
+    :intvector { 180, 355 }
+  } //Z#180
 ,  /* America/Santo_Domingo */ :array {
     :intvector { -1159773600, -100119600, -89668800, -5770800, 4422600, 25678800, 33193800, 57733200, 64816200, 89182800, 96438600, 120632400, 127974600, 152082000, 972799200, 975823200 }
     :intvector { -18000, 0, -18000, 1800, -18000, 3600, -14400, 0 }
     :bin { "00020001000100010001000100030003" }
-  } //Z#179
+  } //Z#181
 ,  /* America/Sao_Paulo */ :array {
     :intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400 }
     :intvector { -10800, 0, -10800, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "Brazil"
     :intvector { -10800, 2005 }
-    :intvector { 180, 332, 336 }
-  } //Z#180
+    :intvector { 182, 334, 338 }
+  } //Z#182
 ,  /* America/Scoresbysund */ :array {
-    :intvector { -1686090660, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
+    :intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 }
     :bin { "000100030203020302030203020302030203020302030203020302030203020302" }
     "EU"
     :intvector { -3600, 1996 }
-  } //Z#181
-,  /* America/Shiprock */ :int { 101 } //Z#182
+  } //Z#183
+,  /* America/Shiprock */ :int { 103 } //Z#184
 ,  /* America/St_Johns */ :array {
     :intvector { -1664130548, -1650137348, -1632076148, -1614799748, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -769395600, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 109!
 9189860,
 1112499060, 1130639460, 1143948660, 1162089060 }
     :intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000203020302030203020302030203020303020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020402030203020302030203020302030203020302030203020302030203020302030203020302" }
     "StJohns"
     :intvector { -12600, 2007 }
-    :intvector { 183, 340, 349 }
-  } //Z#183
+    :intvector { 185, 342, 351 }
+  } //Z#185
 ,  /* America/St_Kitts */ :array {
     :intvector { -1825098548 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#184
+  } //Z#186
 ,  /* America/St_Lucia */ :array {
     :intvector { -1830369360 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#185
+  } //Z#187
 ,  /* America/St_Thomas */ :array {
     :intvector { -1846266016 }
     :intvector { -14400, 0 }
     :bin { "00" }
-    :intvector { 186, 196 }
-  } //Z#186
+    :intvector { 188, 198 }
+  } //Z#188
 ,  /* America/St_Vincent */ :array {
     :intvector { -1830369304 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#187
+  } //Z#189
 ,  /* America/Swift_Current */ :array {
     :intvector { -2030201320, -1632063600, -1614787200, -880210800, -769395600, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0 }
     :bin { "0001000101000100010001000100010001000100010002" }
-  } //Z#188
+  } //Z#190
 ,  /* America/Tegucigalpa */ :array {
-    :intvector { -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1159074000 }
+    :intvector { -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1154926800 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "00010001000100" }
-  } //Z#189
+  } //Z#191
 ,  /* America/Thule */ :array {
     :intvector { -1686079492, 670399200, 686120400, 701848800, 717570000, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000 }
     :intvector { -14400, 0, -14400, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100" }
     "Thule"
     :intvector { -14400, 2007 }
-  } //Z#190
+  } //Z#192
 ,  /* America/Thunder_Bay */ :array {
     :intvector { -1893434400, -880218000, -769395600, -765396000, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "00010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -18000, 2007 }
-  } //Z#191
+  } //Z#193
 ,  /* America/Tijuana */ :array {
     :intvector { -1514736000, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -769395600, -761677200, -686073600, -661539600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600 }
     :intvector { -28800, 0, -28800, 3600, -25200, 0 }
     :bin { "0200020001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Mexico"
     :intvector { -28800, 2002 }
-    :intvector { 107, 192, 486 }
-  } //Z#192
+    :intvector { 109, 194, 492 }
+  } //Z#194
 ,  /* America/Toronto */ :array {
     :intvector { -1632070800, -1614794400, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -880218000, -769395600, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -18000, 2007 }
-    :intvector { 193, 347 }
-  } //Z#193
+    :intvector { 195, 349 }
+  } //Z#195
 ,  /* America/Tortola */ :array {
     :intvector { -1846266092 }
     :intvector { -14400, 0 }
     :bin { "00" }
-  } //Z#194
+  } //Z#196
 ,  /* America/Vancouver */ :array {
     :intvector { -1632060000, -1614783600, -880207200, -769395600, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400 }
     :intvector { -28800, 0, -28800, 3600 }
     :bin { "01000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -28800, 2007 }
-    :intvector { 195, 350 }
-  } //Z#195
-,  /* America/Virgin */ :int { 186 } //Z#196
+    :intvector { 197, 352 }
+  } //Z#197
+,  /* America/Virgin */ :int { 188 } //Z#198
 ,  /* America/Whitehorse */ :array {
     :intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -769395600, -765381600, -147884400, -131554800, -110552400, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400 }
     :intvector { -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600 }
     :bin { "01000100010100020003040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "Canada"
     :intvector { -28800, 2007 }
-    :intvector { 197, 352 }
-  } //Z#197
+    :intvector { 199, 354 }
+  } //Z#199
 ,  /* America/Winnipeg */ :array {
     :intvector { -1694368800, -1681671600, -1632067200, -1614790800, -1029686400, -1018198800, -880214400, -769395600, -765392400, -746035200, -732733200, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620755200, -607626000, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -292438800, -210787200, -198090000, -116438400, -100108800, -84384000, -68659200, -52934400, -37209600, -21484800, -5760000, 9964800, 25689600, 41414400, 57744000, 73468800, 89193600, 104918400, 120643200, 136368000, 152092800, 167817600, 183542400, 199267200, 215596800, 230716800, 247046400, 262771200, 278496000, 294220800, 309945600, 325670400, 341395200, 357120000, 372844800, 388569600, 404899200, 420019200, 436348800, 452073600, 467798400, 483523200, 499248000, 514972800, 530697600, 544608000, 562147200, 576057600, 594201600, 607507200, 625651200, 638956800, 657100800, 671011200, 688550400, 702460800, 720000000, 733910400, 752054400, 765360000, 783504000, 796809600, 814953600, 828864000, 846403200, 860313600, 877852800, 891763200, 909302400, 923212800, 941356800, 954662400, 972806400, 986112000, 1004256000, 1018166400, 1035705600, 1049616000, 1067155200, 1081065600, 1099209600, 1112515200, 1130659200, 1136095200, 1143964800, 1162105200 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "01000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100000100" }
     "Canada"
     :intvector { -21600, 2007 }
-    :intvector { 198, 345 }
-  } //Z#198
+    :intvector { 200, 347 }
+  } //Z#200
 ,  /* America/Yakutat */ :array {
     :intvector { -880203600, -769395600, -765381600, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 152100000, 162385200, 183549600, 199278000, 215604000, 230727600, 247053600, 262782000, 278503200, 294231600, 309952800, 325681200, 341402400, 357130800, 372852000, 388580400, 404906400, 420030000, 436356000, 439030800, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000 }
     :intvector { -32400, 0, -32400, 3600 }
     :bin { "0101000100010001000100010001000100010001000100010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -32400, 2007 }
-  } //Z#199
+  } //Z#201
 ,  /* America/Yellowknife */ :array {
     :intvector { -1632063600, -1615132800, -1596985200, -1583172000, -880210800, -769395600, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -25200, 0, -25200, 3600, -25200, 7200 }
     :bin { "010001000101000200010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Canada"
     :intvector { -25200, 2007 }
-  } //Z#200
+  } //Z#202
 ,  /* Antarctica/Casey */ :array {
     :intvector { -31536000 }
     :intvector { 28800, 0 }
     :bin { "00" }
-  } //Z#201
+  } //Z#203
 ,  /* Antarctica/Davis */ :array {
     :intvector { -409190400, -163062000, -28857600 }
     :intvector { 0, 0, 25200, 0 }
     :bin { "010001" }
-  } //Z#202
+  } //Z#204
 ,  /* Antarctica/DumontDUrville */ :array {
     :intvector { -725846400, -566992800, -415497600 }
     :intvector { 0, 0, 36000, 0 }
     :bin { "010001" }
-  } //Z#203
+  } //Z#205
 ,  /* Antarctica/Mawson */ :array {
     :intvector { -501206400 }
     :intvector { 21600, 0 }
     :bin { "00" }
-  } //Z#204
+  } //Z#206
 ,  /* Antarctica/McMurdo */ :array {
     :intvector { -441849600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000 }
     :intvector { 43200, 0, 43200, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001" }
     "NZAQ"
     :intvector { 43200, 1990 }
-    :intvector { 205, 208 }
-  } //Z#205
+    :intvector { 207, 210 }
+  } //Z#207
 ,  /* Antarctica/Palmer */ :array {
     :intvector { -157766400, -152658000, -132955200, -121122000, -101419200, -86907600, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 150260400, 165981600, 181710000, 197431200, 213159600, 228880800, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 542775600, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 655876800, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 857876400, 876628800, 889930800, 906868800, 923194800, 939528000 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "01000100010001000100020302030203020302000100010001000100010001000100010001000100010001000100010001000100010001" }
     "ChileAQ"
     :intvector { -14400, 2000 }
-  } //Z#206
+  } //Z#208
 ,  /* Antarctica/Rothera */ :array {
     :intvector { 218246400 }
     :intvector { -10800, 0 }
     :bin { "00" }
-  } //Z#207
-,  /* Antarctica/South_Pole */ :int { 205 } //Z#208
+  } //Z#209
+,  /* Antarctica/South_Pole */ :int { 207 } //Z#210
 ,  /* Antarctica/Syowa */ :array {
     :intvector { -407808000 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#209
+  } //Z#211
 ,  /* Antarctica/Vostok */ :array {
     :intvector { -380073600 }
     :intvector { 21600, 0 }
     :bin { "00" }
-  } //Z#210
-,  /* Arctic/Longyearbyen */ :int { 427 } //Z#211
+  } //Z#212
+,  /* Arctic/Longyearbyen */ :int { 432 } //Z#213
 ,  /* Asia/Aden */ :array {
     :intvector { -631162848 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#212
+  } //Z#214
 ,  /* Asia/Almaty */ :array {
     :intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 662666400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1110823200 }
     :intvector { 18000, 0, 21600, 0, 21600, 3600 }
     :bin { "0001020102010201020102010201020102010201020101020102010201020102010201020102010201020102010201020101" }
-  } //Z#213
+  } //Z#215
 ,  /* Asia/Amman */ :array {
     :intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938642400, 954367200, 970092000, 985816800, 1001541600, 1017266400, 1032991200, 1048716000, 1066946400, 1080165600, 1097791200 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Jordan"
     :intvector { 7200, 2005 }
-  } //Z#214
+  } //Z#216
 ,  /* Asia/Anadyr */ :array {
     :intvector { -1441194596, -1247572800, 354884400, 370692000, 386420400, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701780400, 717501600, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800 }
     :intvector { 39600, 0, 39600, 3600, 43200, 0, 43200, 3600, 46800, 0, 46800, 3600 }
     :bin { "020405040302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 43200, 1996 }
-  } //Z#215
+  } //Z#217
 ,  /* Asia/Aqtau */ :array {
     :intvector { -1441164064, -1247544000, -220942800, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1110830400 }
     :intvector { 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
     :bin { "000202040302030203020302030203020302030203020202030203020302010001000100010001000100010001000100010002" }
-  } //Z#216
+  } //Z#218
 ,  /* Asia/Aqtobe */ :array {
     :intvector { -1441165720, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1110826800 }
     :intvector { 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }
     :bin { "000102030201020102010201020102010201020102010101020102010201020102010201020102010201020102010201020101" }
-  } //Z#217
+  } //Z#219
 ,  /* Asia/Ashgabat */ :array {
     :intvector { -1441166012, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 688507200, 695772000 }
     :intvector { 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 }
     :bin { "0002030203020302030203020302030203020302030201000002" }
-    :intvector { 218, 219 }
-  } //Z#218
-,  /* Asia/Ashkhabad */ :int { 218 } //Z#219
+    :intvector { 220, 221 }
+  } //Z#220
+,  /* Asia/Ashkhabad */ :int { 220 } //Z#221
 ,  /* Asia/Baghdad */ :array {
     :intvector { -1641005856, 389048400, 402264000, 417906000, 433800000, 449614800, 465422400, 481150800, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600 }
     :intvector { 10800, 0, 10800, 3600 }
     :bin { "00010001000100010001000100010001000100" }
     "Iraq"
     :intvector { 10800, 1991 }
-  } //Z#220
+  } //Z#222
 ,  /* Asia/Bahrain */ :array {
     :intvector { -1577935340, 76190400 }
     :intvector { 10800, 0, 14400, 0 }
     :bin { "0100" }
-  } //Z#221
+  } //Z#223
 ,  /* Asia/Baku */ :array {
     :intvector { -1441163964, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 683496000, 686098800, 701812800, 717534000, 828234000, 846378000, 852062400 }
     :intvector { 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
     :bin { "000203020302030203020302030203020302030203020101000102030202" }
     "Azer"
     :intvector { 14400, 1997 }
-  } //Z#222
+  } //Z#224
 ,  /* Asia/Bangkok */ :array {
     :intvector { -1570084924 }
     :intvector { 25200, 0 }
     :bin { "00" }
-  } //Z#223
+  } //Z#225
 ,  /* Asia/Beirut */ :array {
     :intvector { -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1473645600, -1460948400, -399866400, -386650800, -368330400, -355114800, -336794400, -323578800, -305172000, -291956400, -273636000, -260420400, 78012000, 86734800, 105055200, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 212965200, 231285600, 244501200, 262735200, 275950800, 452210400, 466722000, 483746400, 498258000, 515282400, 529794000, 546818400, 561330000, 581119200, 592952400, 610754400, 624488400, 641512800, 656024400, 673048800, 687560400, 704671200, 718146000, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 906843600 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Lebanon"
     :intvector { 7200, 1999 }
-  } //Z#224
+  } //Z#226
 ,  /* Asia/Bishkek */ :array {
     :intvector { -1441169904, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683582400, 703018800, 717530400, 734468400, 748980000, 765918000, 780429600, 797367600, 811879200, 828817200, 843933600, 859671000, 877811400, 891120600, 909261000, 922570200, 941315400, 954019800, 972765000, 985469400, 1004214600, 1017523800, 1035664200, 1048973400, 1067113800, 1080423000, 1099168200, 1111872600, 1123783200 }
     :intvector { 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
     :bin { "00020302030203020302030203020302030203020302010001000100010001000100010001000100010001000100010001000102" }
-  } //Z#225
+  } //Z#227
 ,  /* Asia/Brunei */ :array {
     :intvector { -1383464380, -1167636600 }
     :intvector { 27000, 0, 28800, 0 }
     :bin { "0001" }
-  } //Z#226
+  } //Z#228
 ,  /* Asia/Calcutta */ :array {
     :intvector { -891582800, -872058600, -862637400, -764145000 }
     :intvector { 19800, 0, 19800, 3600, 23400, 0 }
     :bin { "02000100" }
-    :intvector { 227, 462 }
-  } //Z#227
+    :intvector { 229, 468 }
+  } //Z#229
 ,  /* Asia/Choibalsan */ :array {
     :intvector { -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800 }
     :intvector { 25200, 0, 28800, 0, 32400, 0, 32400, 3600 }
     :bin { "000103020302030203020302030203020302030203020302030203020302030203020302" }
     "Mongol"
     :intvector { 32400, 2002 }
-  } //Z#228
+  } //Z#230
 ,  /* Asia/Chongqing */ :array {
     :intvector { -1325487980, 325962000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
     :intvector { 25200, 0, 28800, 0, 28800, 3600 }
     :bin { "0001020102010201020102010201" }
-    :intvector { 229, 230 }
-  } //Z#229
-,  /* Asia/Chungking */ :int { 229 } //Z#230
+    :intvector { 231, 232 }
+  } //Z#231
+,  /* Asia/Chungking */ :int { 231 } //Z#232
 ,  /* Asia/Colombo */ :array {
     :intvector { -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 }
     :intvector { 19800, 0, 19800, 1800, 19800, 3600, 21600, 0, 23400, 0 }
     :bin { "00010200040300" }
-  } //Z#231
-,  /* Asia/Dacca */ :int { 234 } //Z#232
+  } //Z#233
+,  /* Asia/Dacca */ :int { 236 } //Z#234
 ,  /* Asia/Damascus */ :array {
     :intvector { -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "Syria"
     :intvector { 7200, 1999 }
-  } //Z#233
+  } //Z#235
 ,  /* Asia/Dhaka */ :array {
     :intvector { -891582800, -872058600, -862637400, -576138600, 38772000 }
     :intvector { 19800, 0, 21600, 0, 23400, 0 }
     :bin { "0200020101" }
-    :intvector { 232, 234, 333 }
-  } //Z#234
+    :intvector { 234, 236, 335 }
+  } //Z#236
 ,  /* Asia/Dili */ :array {
     :intvector { -1830414140, -879152400, -770634000, 199897200, 969120000 }
     :intvector { 28800, 0, 32400, 0 }
     :bin { "0001010001" }
-  } //Z#235
+  } //Z#237
 ,  /* Asia/Dubai */ :array {
     :intvector { -1577936472 }
     :intvector { 14400, 0 }
     :bin { "00" }
-  } //Z#236
+  } //Z#238
 ,  /* Asia/Dushanbe */ :array {
     :intvector { -1441168512, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 684363600 }
     :intvector { 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
     :bin { "000203020302030203020302030203020302030203020100" }
-  } //Z#237
+  } //Z#239
 ,  /* Asia/Gaza */ :array {
     :intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576540000, 589237200, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 820447200, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 915141600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000001000100010000010001000100010001000100" }
     "Palestine"
     :intvector { 7200, 2005 }
-  } //Z#238
+  } //Z#240
 ,  /* Asia/Harbin */ :array {
     :intvector { -1325492804, -1194078600, -946800000, -115894800, 325956600, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
     :intvector { 28800, 0, 28800, 3600, 30600, 0, 32400, 0 }
     :bin { "0200030200010001000100010001000100" }
-  } //Z#239
+  } //Z#241
 ,  /* Asia/Hong_Kong */ :array {
     :intvector { -2056692996, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -542266200, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 135718200, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 295385400, 309292200, 326835000, 340741800 }
     :intvector { 28800, 0, 28800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 240, 460 }
-  } //Z#240
+    :intvector { 242, 466 }
+  } //Z#242
 ,  /* Asia/Hovd */ :array {
     :intvector { -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000 }
     :intvector { 21600, 0, 25200, 0, 25200, 3600 }
     :bin { "000102010201020102010201020102010201020102010201020102010201020102010201" }
     "Mongol"
     :intvector { 25200, 2002 }
-  } //Z#241
+  } //Z#243
 ,  /* Asia/Irkutsk */ :array {
     :intvector { -1575874640, -1247554800, 354902400, 370710000, 386438400, 402246000, 417974400, 433782000, 449596800, 465328800, 481053600, 496778400, 512503200, 528228000, 543952800, 559677600, 575402400, 591127200, 606852000, 622576800, 638301600, 654631200, 670356000, 686084400, 695761200, 701794800, 717516000, 733255200, 748980000, 764704800, 780429600, 796154400, 811879200 }
     :intvector { 25200, 0, 25200, 3600, 28800, 0, 28800, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 28800, 1996 }
-  } //Z#242
-,  /* Asia/Istanbul */ :int { 413 } //Z#243
+  } //Z#244
+,  /* Asia/Istanbul */ :int { 417 } //Z#245
 ,  /* Asia/Jakarta */ :array {
     :intvector { -1451719200, -1172906400, -876641400, -770634000, -683883000, -620812800, -189415800 }
     :intvector { 25200, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
     :bin { "01020402030200" }
-  } //Z#244
+  } //Z#246
 ,  /* Asia/Jayapura */ :array {
     :intvector { -1172913768, -820573200, -189423000 }
     :intvector { 32400, 0, 34200, 0 }
     :bin { "000100" }
-  } //Z#245
+  } //Z#247
 ,  /* Asia/Jerusalem */ :array {
     :intvector { -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576540000, 589237200, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1378594800, 1395964800, 1411858800, 1427414400, 1442703600, 1459468800, 1475967600, 1490918400, 1506207600, 1522368000, 1537052400, 1553817600, 1570316400, 1585267200, 1601161200, 1616716800, 1631401200, 1648771200, 1664665200, 1680220800, 1695510000, 1711670400, 1728169200, 1743120000, 1759014000, 1774569600, 1789858800, 1806019200, 1823122800, 1838073600, 1853362800, 1869523200, 1884207600, 1900972800, 1917471600, 1932422400, 1947711600, 1963872000, 1978556400, 1995926400, 2011820400, 2027376000, 2042060400, 2058825600, 2075324400, 2090275200, 2106169200, 2121724800, 2136409200 }
     :intvector { 7200, 0, 7200, 3600, 7200, 7200 }
     :bin { "00010001000100010001000201000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 246, 286, 476 }
-  } //Z#246
+    :intvector { 248, 288, 482 }
+  } //Z#248
 ,  /* Asia/Kabul */ :array {
     :intvector { -788932800 }
     :intvector { 16200, 0 }
     :bin { "00" }
-  } //Z#247
+  } //Z#249
 ,  /* Asia/Kamchatka */ :array {
     :intvector { -1487759676, -1247569200, 354888000, 370695600, 386424000, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701780400, 717501600, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800 }
     :intvector { 39600, 0, 39600, 3600, 43200, 0, 43200, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 43200, 1996 }
-  } //Z#248
+  } //Z#250
 ,  /* Asia/Karachi */ :array {
     :intvector { -1988166492, -862637400, -764145000, -576135000, 38775600, 1018119660, 1033840860 }
     :intvector { 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 }
     :bin { "02030200000100" }
-    :intvector { 249, 497 }
-  } //Z#249
+    :intvector { 251, 503 }
+  } //Z#251
 ,  /* Asia/Kashgar */ :array {
     :intvector { -1325480636, -946791000, 325969200, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
     :intvector { 18000, 0, 19800, 0, 28800, 0, 28800, 3600 }
     :bin { "010002030203020302030203020302" }
-  } //Z#250
+  } //Z#252
 ,  /* Asia/Katmandu */ :array {
     :intvector { -1577943676, 504901800 }
     :intvector { 19800, 0, 20700, 0 }
     :bin { "0001" }
-  } //Z#251
+  } //Z#253
 ,  /* Asia/Krasnoyarsk */ :array {
     :intvector { -1577513480, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701798400, 717519600, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800 }
     :intvector { 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 25200, 1996 }
-  } //Z#252
+  } //Z#254
 ,  /* Asia/Kuala_Lumpur */ :array {
     :intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }
     :intvector { 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
     :bin { "00010203050304" }
-  } //Z#253
+  } //Z#255
 ,  /* Asia/Kuching */ :array {
     :intvector { -1383463280, -1167636600, -1082448000, -1074586800, -1050825600, -1042964400, -1019289600, -1011428400, -987753600, -979892400, -956217600, -948356400, -924595200, -916734000, -893059200, -885198000, -879667200, -767005200, 378662400 }
     :intvector { 27000, 0, 28800, 0, 28800, 1200, 32400, 0 }
     :bin { "00010201020102010201020102010201030101" }
-  } //Z#254
+  } //Z#256
 ,  /* Asia/Kuwait */ :array {
     :intvector { -631163516 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#255
-,  /* Asia/Macao */ :int { 257 } //Z#256
+  } //Z#257
+,  /* Asia/Macao */ :int { 259 } //Z#258
 ,  /* Asia/Macau */ :array {
     :intvector { -1830411260, -277360200, -257405400, -245910600, -225955800, -214473600, -194506200, -182406600, -163056600, -150969600, -131619600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72201600, 87922800, 103651200, 119977200, 135705600, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 261504000, 277225200, 292953600, 309279600, 325008000, 340729200, 945619200 }
     :intvector { 28800, 0, 28800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010000" }
-    :intvector { 256, 257 }
-  } //Z#257
+    :intvector { 258, 259 }
+  } //Z#259
 ,  /* Asia/Magadan */ :array {
     :intvector { -1441188192, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701784000, 717505200, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400 }
     :intvector { 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 39600, 1996 }
-  } //Z#258
+  } //Z#260
 ,  /* Asia/Makassar */ :array {
     :intvector { -1577951856, -1172908656, -880272000, -770634000 }
     :intvector { 28656, 0, 28800, 0, 32400, 0 }
     :bin { "00010201" }
-    :intvector { 259, 290 }
-  } //Z#259
+    :intvector { 261, 292 }
+  } //Z#261
 ,  /* Asia/Manila */ :array {
     :intvector { -1046678400, -1038733200, -873273600, -794221200, -496224000, -489315600, 259344000, 275151600 }
     :intvector { 28800, 0, 28800, 3600, 32400, 0 }
     :bin { "0100020001000100" }
-  } //Z#260
+  } //Z#262
 ,  /* Asia/Muscat */ :array {
     :intvector { -1577937260 }
     :intvector { 14400, 0 }
     :bin { "00" }
-  } //Z#261
+  } //Z#263
 ,  /* Asia/Nicosia */ :array {
     :intvector { -1518920008, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EUAsia"
     :intvector { 7200, 1996 }
-    :intvector { 262, 426 }
-  } //Z#262
+    :intvector { 264, 431 }
+  } //Z#264
 ,  /* Asia/Novosibirsk */ :array {
     :intvector { -1579476700, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701798400, 717519600, 733258800, 738086400, 748987200, 764712000, 780436800, 796161600, 811886400 }
     :intvector { 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }
     :bin { "00020302030203020302030203020302030203020302010002030203010001000100" }
     "Russia"
     :intvector { 21600, 1996 }
-  } //Z#263
+  } //Z#265
 ,  /* Asia/Omsk */ :array {
     :intvector { -1582088016, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400 }
     :intvector { 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 21600, 1996 }
-  } //Z#264
+  } //Z#266
 ,  /* Asia/Oral */ :array {
     :intvector { -1441164324, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 662673600, 692827200, 701809200, 717530400, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1110830400 }
     :intvector { 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
     :bin { "000203040302030203020302030203020302010001000000010001000100010001000100010001000100010001000100010002" }
-  } //Z#265
+  } //Z#267
 ,  /* Asia/Phnom_Penh */ :array {
     :intvector { -2005973980, -1855983920, -1819954800, -1220428800 }
     :intvector { 25200, 0, 25580, 0, 28800, 0 }
     :bin { "01000200" }
-  } //Z#266
+  } //Z#268
 ,  /* Asia/Pontianak */ :array {
     :intvector { -1946186240, -1172906240, -881220600, -770634000, -683883000, -620812800, -189415800, 567964800 }
     :intvector { 25200, 0, 26240, 0, 27000, 0, 28800, 0, 32400, 0 }
     :bin { "0102040203020300" }
-  } //Z#267
+  } //Z#269
 ,  /* Asia/Pyongyang */ :array {
     :intvector { -2053931400, -1325494800, -1199262600, -498128400, -264931200 }
     :intvector { 28800, 0, 30600, 0, 32400, 0 }
     :bin { "0201020002" }
-  } //Z#268
+  } //Z#270
 ,  /* Asia/Qatar */ :array {
     :intvector { -1577935568, 76190400 }
     :intvector { 10800, 0, 14400, 0 }
     :bin { "0100" }
-  } //Z#269
+  } //Z#271
 ,  /* Asia/Qyzylorda */ :array {
     :intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 695768400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1110823200 }
     :intvector { 14400, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
     :bin { "00010203020102010201020102010201020102010201010103040304030403040304030403040304030403040304030403040303" }
-  } //Z#270
+  } //Z#272
 ,  /* Asia/Rangoon */ :array {
     :intvector { -1577946276, -873268200, -778410000 }
     :intvector { 23400, 0, 32400, 0 }
     :bin { "000100" }
-  } //Z#271
+  } //Z#273
 ,  /* Asia/Riyadh */ :array {
     :intvector { -631163212 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#272
+  } //Z#274
 ,  /* Asia/Riyadh87 */ :array {
     :intvector { 536489776, 536576206, 536662631, 536749061, 536835486, 536921916, 537008341, 537094766, 537181191, 537267616, 537354041, 537440466, 537526886, 537613311, 537699731, 537786151, 537872571, 537958991, 538045411, 538131831, 538218246, 538304666, 538391081, 538477496, 538563911, 538650326, 538736736, 538823151, 538909561, 538995971, 539082381, 539168791, 539255196, 539341606, 539428011, 539514416, 539600821, 539687226, 539860031, 540378426, 540551221, 540637616, 540724011, 540810406, 540896801, 540983191, 541069586, 541155976, 541242366, 541328756, 541415146, 541501536, 541587926, 541674316, 541760701, 541847091, 541933476, 542019861, 542106251, 542192636, 542279021, 542365406, 542451791, 542538171, 542624556, 542710941, 542797326, 542883706, 542970091, 543056471, 543142856, 543229236, 543315621, 543402001, 543488386, 543574766, 543661146, 543747531, 543833911, 543920291, 544006676, 544093056, 544179441, 544265821, 544352201, 544438586, 544524966, 544611351, 544697731, 544784116, 544870501, 544956881, 545043266, 545129651, 545216031, 545302416, 545388801, 545475186, 545561571, 545647961, 545734346, 545820731, 545907121, 545993506, 546079896, 546166281, 546252671, 546339061, 546425451, 546511841, 546598231, 546684621, 546771011, 546857406, 546943796, 547030191, 547116586, 547202981, 547289376, 547375771, 547462166, 547548561, 547721356, 548412561, 548585366, 548671771, 548758176, 548844581, 548930986, 549017391, 549103796, 549190206, 549276611, 549363021, 549449426, 549535836, 549622246, 549708656, 549795066, 549881476, 549967886, 550054296, 550140706, 550227121, 550313531, 550399946, 550486356, 550572766, 550659181, 550745591, 550832006, 550918421, 551004831, 551091246, 551177656, 551264071, 551350486, 551436896, 551523311, 551609721, 551696136, 551782546, 551868961, 551955371, 552041786, 552128196, 552214606, 552301021, 552387431, 552473841, 552560251, 552646661, 552733071, 552819481, 552905891, 552992296, 553078706, 553165116, 553251521, 553337926, 553424336, 553510741, 553597146, 55368355!
 1, 55385
6356, 553942761, 554201966, 554547561, 554806756, 554893151, 554979546, 555065941, 555152336, 555238731, 555325126, 555411516, 555497911, 555584301, 555670691, 555757081, 555843471, 555929861, 556016251, 556102641, 556189026, 556275416, 556361801, 556448186, 556534571, 556620956, 556707341, 556793726, 556880111, 556966496, 557052876, 557139261, 557225641, 557312026, 557398406, 557484786, 557571166, 557657551, 557743931, 557830311, 557916691, 558003071, 558089451, 558175826, 558262206, 558348586, 558434966, 558521346, 558607721, 558694101, 558780481, 558866861, 558953236, 559039616, 559125996, 559212371, 559298751, 559385131, 559471511, 559557891, 559644271, 559730646, 559817026, 559903406, 559989786, 560076166, 560162551, 560248931, 560335311, 560421691, 560508076, 560594456, 560680841, 560767221, 560853606, 560939991, 561026376, 561112761, 561199146, 561285531, 561371921, 561458306, 561544696, 561631081, 561717471, 561803861, 561890251, 561976641, 562063036, 562149426, 562235821, 562322211, 562408606, 562495001, 562667796, 562840591, 563186196, 563359001, 563445406, 563531811, 563618216, 563704621, 563791031, 563877436, 563963846, 564050256, 564136666, 564223081, 564309491, 564395906, 564482321, 564568736, 564655151, 564741566, 564827986, 564914406, 565000821, 565087241, 565173661, 565260086, 565346506, 565432926, 565519351, 565605776, 565692201, 565778626, 565865051, 565951476, 566037901, 566124326, 566210756, 566297181, 566383611, 566470041, 566556466, 566642896, 566729326, 566815756, 566902186, 566988616, 567075046, 567161476, 567247906, 567334336, 567420766, 567507196, 567593621, 567680051, 567766481, 567852911, 567939341, 567982541 }
     :intvector { 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -815, 11224, -810, 11224, -805, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -760, 11224, -750, 11224, -740, 11224, -735, 11224, -725, 11224, -720, 11224, -715, 11224, -705, 11224, -700, 11224, -690, 11224, -685, 11224, -675, 11224, -670, 11224, -660, 11224, -655, 11224, -645, 11224, -635, 11224, -630, 11224, -615, 11224, -595, 11224, -580, 11224, -575, 11224, -565, 11224, -555, 11224, -550, 11224, -535, 11224, -530, 11224, -515, 11224, -510, 11224, -495, 11224, -490, 11224, -480, 11224, -465, 11224, -460, 11224, -445, 11224, -440, 11224, -425, 11224, -415, 11224, -410, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -315, 11224, -310, 11224, -305, 11224, -300, 11224, -295, 11224, -285, 11224, -280, 11224, -275, 11224, -265, 11224, -255, 11224, -250, 11224, -245, 11224, -240, 11224, -230, 11224, -225, 11224, -220, 11224, -210, 11224, -200, 11224, -195, 11224, -190, 11224, -185, 11224, -180, 11224, -175, 11224, -170, 11224, -165, 11224, -160, 11224, -155, 11224, -150, 11224, -145, 11224, -140, 11224, -135, 11224, -125, 11224, -120, 11224, -110, 11224, -105, 11224, -100, 11224, -95, 11224, -90, 11224, -85, 11224, -80, 11224, -75, 11224, -70, 11224, -65, 11224, -55, 11224, -50, 11224, -45, 11224, -40, 11224, -30, 11224, -25, 11224, -20, 11224, -15, 11224, -10, 11224, -5, 11224, 0, 11224, 5, 11224, 10, 11224, 15, 11224, 20, 11224, 25, 11224, 30, 11224, 40, 11224, 45, 11224, 55, 11224, 65, 11224, 70, 11224, 80, 11224, 85, 11224, 90, 11224, 95, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 155, 11224, 160, 11224, 165, 11224, 170, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, !
 11224, 2
05, 11224, 210, 11224, 215, 11224, 220, 11224, 230, 11224, 250, 11224, 255, 11224, 275, 11224, 280, 11224, 295, 11224, 310, 11224, 315, 11224, 335, 11224, 340, 11224, 360, 11224, 365, 11224, 380, 11224, 395, 11224, 405, 11224, 420, 11224, 425, 11224, 445, 11224, 450, 11224, 465, 11224, 475, 11224, 485, 11224, 500, 11224, 505, 11224, 525, 11224, 530, 11224, 550, 11224, 570, 11224, 575, 11224, 590, 11224, 600, 11224, 610, 11224, 625, 11224, 645, 11224, 650, 11224, 665, 11224, 670, 11224, 685, 11224, 690, 11224, 700, 11224, 715, 11224, 720, 11224, 735, 11224, 755, 11224, 770, 11224, 785, 11224, 790, 11224, 800, 11224, 810, 11224, 815, 11224, 825, 11224, 830, 11224, 840, 11224, 845, 11224, 855, 11224, 870, 11224, 880, 11224, 885, 11224, 895, 11224, 905, 11224, 910, 11224, 915, 11224, 920, 11224, 925, 11224, 930, 11224, 935, 11224, 940, 11224, 945, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985 }
     :bin { "5955514d49433e39373532302e2b2927252422201e1b1917151312100e0c0a080705040302010001020304050608090b0d0f1112131416181a1c1d1f2123242526282a2c2d2f3133343638393d4044484b4e505356585b5e6265676a6d707376787b7e8083858688898c8e90929496989a9b9c9d9e9fa0a1a2a3a4a3a2a1a09f9e9d9c9b9a98979593918f8d8b8988868583817f7c7a777573716f6c69686664615f5c5a5857555351504f4d4c4a4847454342413f3e3d3c3b3a393a3b3c3d3e3f4041434446484a4c4d4f50525456585a5d606366686b6e7274777b7f8285878a8e92979b9ea2a5a7a8aaacaeafb1b3b5b6b8babcbebfc0c2c4c5c6c8cacccecfd0d1d2d4d6d8dadbdcdddfe0e2e4e6e7e9eaecedeeeff0efeeedecebeae8e7e5e3e1dfdedcdbd9d7d5d3d1d0cfcdcbc9c7c5c3c1bfbdbbb9b7b4b2b0adaba9a6a49e99938d88847f7975706a66607d" }
-    :intvector { 273, 489 }
-  } //Z#273
+    :intvector { 275, 495 }
+  } //Z#275
 ,  /* Asia/Riyadh88 */ :array {
     :intvector { 568025771, 568112196, 568198626, 568285056, 568371481, 568457906, 568544336, 568630761, 568717186, 568803611, 568890036, 568976461, 569062881, 569149306, 569235726, 569322146, 569408566, 569494986, 569581406, 569667826, 569754241, 569840661, 569927076, 570013491, 570099906, 570186321, 570272736, 570359146, 570445556, 570531966, 570618376, 570704786, 570791196, 570877601, 570964011, 571050416, 571136821, 571223226, 571396031, 571914426, 572087221, 572173616, 572260011, 572346406, 572432801, 572519196, 572605586, 572691976, 572778371, 572864761, 572951151, 573037541, 573123926, 573210316, 573296706, 573383091, 573469481, 573555866, 573642251, 573728636, 573815021, 573901406, 573987791, 574074176, 574160561, 574246946, 574333326, 574419711, 574506096, 574592476, 574678861, 574765241, 574851626, 574938006, 575024386, 575110771, 575197151, 575283536, 575369916, 575456296, 575542681, 575629061, 575715441, 575801826, 575888206, 575974591, 576060971, 576147356, 576233736, 576320121, 576406501, 576492886, 576579271, 576665651, 576752036, 576838421, 576924806, 577011191, 577097576, 577183961, 577270346, 577356736, 577443121, 577529511, 577615896, 577702286, 577788671, 577875061, 577961451, 578047841, 578134231, 578220626, 578307016, 578393406, 578479801, 578566191, 578652586, 578738981, 578825376, 578911771, 578998166, 579084561, 579257356, 579948561, 580121366, 580207771, 580294176, 580380581, 580466986, 580553391, 580639796, 580726201, 580812611, 580899016, 580985426, 581071836, 581158246, 581244651, 581331061, 581417471, 581503886, 581590296, 581676706, 581763116, 581849531, 581935941, 582022351, 582108766, 582195176, 582281591, 582368001, 582454416, 582540831, 582627241, 582713656, 582800066, 582886481, 582972896, 583059306, 583145721, 583232131, 583318546, 583404956, 583491371, 583577781, 583664196, 583750606, 583837016, 583923426, 584009841, 584096251, 584182661, 584269071, 584355481, 584441886, 584528296, 584614706, 584701111, 584787521, 584873926, 584960331, 585046736, 585133141, 58521954!
 6, 58530
5951, 585392356, 585478761, 585737966, 586169961, 586342756, 586429151, 586601946, 586688341, 586774731, 586861126, 586947521, 587033911, 587120301, 587206696, 587293086, 587379476, 587465866, 587552251, 587638641, 587725031, 587811416, 587897806, 587984191, 588070576, 588156961, 588243346, 588329731, 588416116, 588502496, 588588881, 588675266, 588761646, 588848026, 588934411, 589020791, 589107171, 589193551, 589279936, 589366316, 589452696, 589539076, 589625456, 589711831, 589798211, 589884591, 589970971, 590057351, 590143726, 590230106, 590316486, 590402866, 590489241, 590575621, 590662001, 590748381, 590834756, 590921136, 591007516, 591093896, 591180276, 591266651, 591353031, 591439411, 591525791, 591612171, 591698551, 591784936, 591871316, 591957696, 592044081, 592130461, 592216846, 592303226, 592389611, 592475996, 592562381, 592648766, 592735151, 592821536, 592907921, 592994311, 593080696, 593167086, 593253476, 593339861, 593426256, 593512646, 593599036, 593685426, 593771821, 593858216, 593944611, 594031006, 594117401, 594203796, 594376591, 594722196, 594895001, 595067806, 595154216, 595240621, 595327026, 595413436, 595499846, 595586256, 595672666, 595759076, 595845491, 595931901, 596018316, 596104731, 596191146, 596277566, 596363981, 596450401, 596536816, 596623236, 596709656, 596796081, 596882501, 596968921, 597055346, 597141771, 597228191, 597314616, 597401041, 597487471, 597573896, 597660321, 597746751, 597833176, 597919606, 598006031, 598092461, 598178891, 598265321, 598351751, 598438176, 598524606, 598611036, 598697466, 598783896, 598870326, 598956756, 599043186, 599129616, 599216046, 599302476, 599388906, 599475331, 599561761, 599604961 }
     :intvector { 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -810, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -765, 11224, -760, 11224, -750, 11224, -745, 11224, -740, 11224, -730, 11224, -715, 11224, -705, 11224, -700, 11224, -690, 11224, -685, 11224, -675, 11224, -665, 11224, -660, 11224, -650, 11224, -645, 11224, -630, 11224, -615, 11224, -610, 11224, -600, 11224, -590, 11224, -585, 11224, -570, 11224, -550, 11224, -535, 11224, -530, 11224, -520, 11224, -505, 11224, -500, 11224, -485, 11224, -465, 11224, -460, 11224, -450, 11224, -435, 11224, -430, 11224, -410, 11224, -395, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -310, 11224, -305, 11224, -300, 11224, -295, 11224, -290, 11224, -285, 11224, -280, 11224, -275, 11224, -265, 11224, -255, 11224, -250, 11224, -240, 11224, -230, 11224, -220, 11224, -215, 11224, -205, 11224, -200, 11224, -195, 11224, -185, 11224, -180, 11224, -170, 11224, -160, 11224, -155, 11224, -145, 11224, -140, 11224, -130, 11224, -125, 11224, -120, 11224, -110, 11224, -105, 11224, -100, 11224, -95, 11224, -90, 11224, -80, 11224, -75, 11224, -70, 11224, -65, 11224, -60, 11224, -55, 11224, -50, 11224, -45, 11224, -40, 11224, -35, 11224, -30, 11224, -25, 11224, -15, 11224, -10, 11224, 0, 11224, 5, 11224, 10, 11224, 15, 11224, 20, 11224, 25, 11224, 30, 11224, 35, 11224, 40, 11224, 45, 11224, 50, 11224, 55, 11224, 60, 11224, 65, 11224, 70, 11224, 80, 11224, 90, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 160, 11224, 165, 11224, 170, 11224, 175, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, 11224, 205, 11224, 210, 11224, 215, 11224, 220, 11224, 225, 11224, 250, 11224, 255, 11224, 270, 11224, 285, 11224, 29!
 0, 11224
, 310, 11224, 315, 11224, 335, 11224, 345, 11224, 355, 11224, 370, 11224, 375, 11224, 395, 11224, 400, 11224, 420, 11224, 425, 11224, 440, 11224, 455, 11224, 460, 11224, 480, 11224, 500, 11224, 505, 11224, 525, 11224, 535, 11224, 545, 11224, 560, 11224, 565, 11224, 585, 11224, 605, 11224, 625, 11224, 630, 11224, 640, 11224, 655, 11224, 660, 11224, 675, 11224, 680, 11224, 695, 11224, 715, 11224, 720, 11224, 730, 11224, 740, 11224, 750, 11224, 760, 11224, 765, 11224, 775, 11224, 780, 11224, 795, 11224, 810, 11224, 825, 11224, 830, 11224, 840, 11224, 845, 11224, 855, 11224, 860, 11224, 865, 11224, 875, 11224, 880, 11224, 885, 11224, 890, 11224, 900, 11224, 910, 11224, 915, 11224, 920, 11224, 930, 11224, 940, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985 }
     :bin { "55514e4a45413b3633312f2d2b2927262422201e1c1a18161513110f0d0b0908070604030201000102030405060708090a0c0e101214151617191b1d1f202123252627282a2c2d2e30323334383b3f4345494c4e50525557595b5e606366696c6f717376797b7e8082838587898b8d8e8f91929495969798999a9b9a9998979695949392908f8e8c8a8987858382817f7c7a78757371706d6a686564615f5d5b5a5857555351504f4e4c4b494745444341403e3d3c3b3a3938373635363738393a3c3d3e4042434446484b4c4d4f50525456585a5c5f6164676b6e7174787b7f8284888d9094989c9d9fa1a2a4a6a8a9abadafb0b1b3b5b7b8b9babcbec0c1c2c4c6c8cacbcccdcfd1d3d5d7d8dadbdcdddedfe0e1e2e3e4e5e4e3e2e0dfdedddcdbd9d8d6d4d2d0cecccbc9c7c5c3c1bfbdbbb9b8b6b4b2b0aeacaaa7a5a3a09e9c97918c86827d77726d67625d5a5673" }
-    :intvector { 274, 490 }
-  } //Z#274
+    :intvector { 276, 496 }
+  } //Z#276
 ,  /* Asia/Riyadh89 */ :array {
     :intvector { 599648191, 599734621, 599821046, 599907476, 599993901, 600080326, 600166751, 600253181, 600339606, 600426031, 600512451, 600598876, 600685301, 600771721, 600858141, 600944561, 601030981, 601117401, 601203821, 601290241, 601376656, 601463071, 601549491, 601635906, 601722316, 601808731, 601895146, 601981556, 602067966, 602154376, 602240786, 602327196, 602413601, 602500011, 602586416, 602672821, 602759226, 602932031, 603104836, 603364031, 603536826, 603709621, 603796016, 603882411, 603968806, 604055196, 604141591, 604227981, 604314371, 604400761, 604487151, 604573541, 604659931, 604746321, 604832706, 604919096, 605005481, 605091871, 605178256, 605264641, 605351026, 605437411, 605523796, 605610181, 605696566, 605782946, 605869331, 605955716, 606042096, 606128481, 606214861, 606301246, 606387626, 606474011, 606560391, 606646771, 606733156, 606819536, 606905916, 606992301, 607078681, 607165066, 607251446, 607337826, 607424211, 607510591, 607596976, 607683356, 607769741, 607856121, 607942506, 608028886, 608115271, 608201656, 608288041, 608374426, 608460811, 608547196, 608633581, 608719966, 608806351, 608892736, 608979126, 609065511, 609151901, 609238286, 609324676, 609411066, 609497456, 609583846, 609670236, 609756626, 609843016, 609929411, 610015801, 610102196, 610188586, 610274981, 610361376, 610447771, 610534166, 610706961, 610879756, 611484561, 611657366, 611743771, 611916576, 612002981, 612089391, 612175796, 612262201, 612348611, 612435016, 612521426, 612607831, 612694241, 612780651, 612867061, 612953471, 613039881, 613126291, 613212701, 613299116, 613385526, 613471936, 613558351, 613644761, 613731176, 613817586, 613904001, 613990411, 614076826, 614163241, 614249651, 614336066, 614422476, 614508891, 614595306, 614681716, 614768131, 614854541, 614940956, 615027366, 615113781, 615200191, 615286601, 615373016, 615459426, 615545836, 615632246, 615718656, 615805066, 615891476, 615977886, 616064296, 616150701, 616237111, 616323516, 616409926, 616496331, 616582736, 616669141, 616755546, 61684195!
 1, 61692
8356, 617101161, 617273966, 617705961, 617878756, 618051551, 618137946, 618224341, 618310736, 618397126, 618483521, 618569911, 618656306, 618742696, 618829086, 618915476, 619001866, 619088256, 619174646, 619261031, 619347421, 619433806, 619520191, 619606581, 619692966, 619779351, 619865736, 619952116, 620038501, 620124886, 620211266, 620297651, 620384031, 620470416, 620556796, 620643176, 620729561, 620815941, 620902321, 620988701, 621075081, 621161461, 621247841, 621334216, 621420596, 621506976, 621593356, 621679736, 621766111, 621852491, 621938871, 622025251, 622111626, 622198006, 622284386, 622370766, 622457141, 622543521, 622629901, 622716281, 622802661, 622889041, 622975416, 623061796, 623148176, 623234561, 623320941, 623407321, 623493701, 623580086, 623666466, 623752846, 623839231, 623925616, 624011996, 624098381, 624184766, 624271151, 624357536, 624443926, 624530311, 624616696, 624703086, 624789476, 624875866, 624962256, 625048646, 625135036, 625221426, 625307821, 625394216, 625480606, 625567001, 625653396, 625826191, 626085386, 626171791, 626430996, 626517401, 626603806, 626690211, 626776616, 626863021, 626949431, 627035841, 627122251, 627208661, 627295071, 627381486, 627467896, 627554311, 627640726, 627727141, 627813561, 627899976, 627986396, 628072816, 628159231, 628245651, 628332076, 628418496, 628504916, 628591341, 628677766, 628764191, 628850611, 628937036, 629023466, 629109891, 629196316, 629282746, 629369171, 629455601, 629542026, 629628456, 629714886, 629801316, 629887741, 629974171, 630060601, 630147031, 630233461, 630319891, 630406321, 630492751, 630579181, 630665611, 630752041, 630838471, 630924896, 631011326, 631097756, 631140956 }
     :intvector { 11224, -860, 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -815, 11224, -810, 11224, -805, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -765, 11224, -755, 11224, -745, 11224, -740, 11224, -730, 11224, -720, 11224, -715, 11224, -705, 11224, -695, 11224, -680, 11224, -665, 11224, -650, 11224, -645, 11224, -635, 11224, -625, 11224, -620, 11224, -605, 11224, -590, 11224, -585, 11224, -570, 11224, -565, 11224, -555, 11224, -545, 11224, -540, 11224, -525, 11224, -520, 11224, -505, 11224, -500, 11224, -485, 11224, -475, 11224, -470, 11224, -455, 11224, -450, 11224, -435, 11224, -430, 11224, -415, 11224, -405, 11224, -395, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -310, 11224, -305, 11224, -300, 11224, -290, 11224, -280, 11224, -270, 11224, -260, 11224, -255, 11224, -250, 11224, -245, 11224, -240, 11224, -235, 11224, -230, 11224, -225, 11224, -215, 11224, -205, 11224, -200, 11224, -190, 11224, -180, 11224, -175, 11224, -165, 11224, -160, 11224, -155, 11224, -150, 11224, -145, 11224, -140, 11224, -130, 11224, -125, 11224, -120, 11224, -115, 11224, -110, 11224, -100, 11224, -95, 11224, -90, 11224, -80, 11224, -75, 11224, -65, 11224, -55, 11224, -50, 11224, -40, 11224, -35, 11224, -25, 11224, -20, 11224, -10, 11224, -5, 11224, 0, 11224, 10, 11224, 15, 11224, 25, 11224, 35, 11224, 40, 11224, 50, 11224, 55, 11224, 60, 11224, 65, 11224, 75, 11224, 85, 11224, 90, 11224, 95, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 160, 11224, 165, 11224, 175, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, 11224, 205, 11224, 210, 11224, 215, 11224, 220, 11224, 235, 11224, 240, 11224, 260, 11224, 265, 11224, 285, 11224, 290, 11224, 305, 1!
 1224, 32
0, 11224, 325, 11224, 350, 11224, 370, 11224, 375, 11224, 390, 11224, 405, 11224, 410, 11224, 430, 11224, 435, 11224, 455, 11224, 460, 11224, 475, 11224, 485, 11224, 495, 11224, 510, 11224, 515, 11224, 535, 11224, 540, 11224, 560, 11224, 565, 11224, 580, 11224, 585, 11224, 600, 11224, 610, 11224, 615, 11224, 635, 11224, 655, 11224, 660, 11224, 675, 11224, 680, 11224, 690, 11224, 700, 11224, 710, 11224, 725, 11224, 730, 11224, 745, 11224, 760, 11224, 780, 11224, 795, 11224, 800, 11224, 810, 11224, 815, 11224, 825, 11224, 835, 11224, 840, 11224, 850, 11224, 865, 11224, 880, 11224, 890, 11224, 900, 11224, 905, 11224, 910, 11224, 915, 11224, 920, 11224, 925, 11224, 930, 11224, 935, 11224, 940, 11224, 945, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985, 11224, 990 }
     :bin { "56514d4a46413c373532302e2b29272523211f1d1c1b1917161412100e0c0a080705040302010001020304050608090b0d0f1113141517181a1b1c1d1e2022232426282a2c2d2f31333436383b3f4346494b4d505356585a5c606266686a6c6e70727476787a7b7e7f81838587898b8d8e8f90919394959697989998979695949291908f8e8d8c8a88868482807f7d7b7a7877757371706e6c6b69676562615e5c5a5957565552504e4d4c4b4a484746444341403f3e3d3c3b3a393a3b3c3d3e3f4142444547484a4b4c4d4f51545657595b5d616366696b6d6f727577797c7f82868a8e9195999b9d9ea0a2a3a4a6a8aaabadafb1b2b4b6b8babbbcbec0c2c4c5c6c7c8cacccecfd0d1d2d3d5d7d9dbdddedfe1e2e3e4e5e4e3e2e1e0dfdedcdad8d6d4d2d1d0cfcdcbc9c7c6c5c3c1bfbdbbb9b7b5b3b0aeaca9a7a5a3a19f9c9a96908c86807c7874706c68645f5a75" }
-    :intvector { 275, 491 }
-  } //Z#275
+    :intvector { 277, 497 }
+  } //Z#277
 ,  /* Asia/Saigon */ :array {
     :intvector { -2005974400, -1855983920, -1819954800, -1220428800 }
     :intvector { 25200, 0, 25580, 0, 28800, 0 }
     :bin { "01000200" }
-    :intvector { 276, 566 }
-  } //Z#276
+    :intvector { 278, 572 }
+  } //Z#278
 ,  /* Asia/Sakhalin */ :array {
     :intvector { -2031039048, -1009875600, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701784000, 717505200, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400 }
     :intvector { 32400, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }
     :bin { "00000304030403040304030403040304030403040304030201030403040304030403" }
     "Russia"
     :intvector { 36000, 1996 }
-  } //Z#277
+  } //Z#279
 ,  /* Asia/Samarkand */ :array {
     :intvector { -1441168032, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 683661600, 686091600, 694206000 }
     :intvector { 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }
     :bin { "0001020302010201020102010201020102010201020102020101" }
-  } //Z#278
+  } //Z#280
 ,  /* Asia/Seoul */ :array {
     :intvector { -2053931400, -1325494800, -1199262600, -498128400, -303984000, -293533200, -264931200, -39515400, 547570800, 560872800, 579020400, 592322400 }
     :intvector { 28800, 0, 28800, 3600, 30600, 0, 32400, 0, 32400, 3600 }
     :bin { "030203000100020304030403" }
-    :intvector { 279, 546 }
-  } //Z#279
+    :intvector { 281, 552 }
+  } //Z#281
 ,  /* Asia/Shanghai */ :array {
     :intvector { -1325491552, -933494400, -923130000, -908784000, -891594000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
     :intvector { 28800, 0, 28800, 3600 }
     :bin { "0001000100010001000100010001000100" }
-    :intvector { 280, 343, 499 }
-  } //Z#280
+    :intvector { 282, 345, 505 }
+  } //Z#282
 ,  /* Asia/Singapore */ :array {
     :intvector { -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, -138785400, 378664200 }
     :intvector { 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
     :bin { "0001020305030304" }
-    :intvector { 281, 548 }
-  } //Z#281
+    :intvector { 283, 554 }
+  } //Z#283
 ,  /* Asia/Taipei */ :array {
     :intvector { -778579200, -765363600, -747043200, -733827600, -715507200, -702291600, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 331142400, 339087600 }
     :intvector { 28800, 0, 28800, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100" }
-    :intvector { 282, 545 }
-  } //Z#282
+    :intvector { 284, 551 }
+  } //Z#284
 ,  /* Asia/Tashkent */ :array {
     :intvector { -1441168632, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683661600, 686091600, 694206000 }
     :intvector { 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
     :bin { "0002030203020302030203020302030203020302030201010000" }
-  } //Z#283
+  } //Z#285
 ,  /* Asia/Tbilisi */ :array {
     :intvector { -1441162756, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 671140800, 686098800, 694213200, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 859662000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 }
     :intvector { 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
     :bin { "0002030203020302030203020302030203020302030201010000010001000102030203030203020302030203020302030203010002" }
-  } //Z#284
+  } //Z#286
 ,  /* Asia/Tehran */ :array {
     :intvector { -1704165944, -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000 }
     :intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 }
     :bin { "00010304030102010201020102010201020102010201020102010201020102010201020102010201" }
-    :intvector { 285, 475 }
-  } //Z#285
-,  /* Asia/Tel_Aviv */ :int { 246 } //Z#286
-,  /* Asia/Thimbu */ :int { 288 } //Z#287
+    :intvector { 287, 481 }
+  } //Z#287
+,  /* Asia/Tel_Aviv */ :int { 248 } //Z#288
+,  /* Asia/Thimbu */ :int { 290 } //Z#289
 ,  /* Asia/Thimphu */ :array {
     :intvector { -706341516, 560025000 }
     :intvector { 19800, 0, 21600, 0 }
     :bin { "0001" }
-    :intvector { 287, 288 }
-  } //Z#288
+    :intvector { 289, 290 }
+  } //Z#290
 ,  /* Asia/Tokyo */ :array {
     :intvector { -1009875600, -683794800, -672393600, -654764400, -640944000, -620290800, -609494400, -588841200, -578044800 }
     :intvector { 32400, 0, 32400, 3600 }
     :bin { "000100010001000100" }
-    :intvector { 289, 477, 479 }
-  } //Z#289
-,  /* Asia/Ujung_Pandang */ :int { 259 } //Z#290
+    :intvector { 291, 483, 485 }
+  } //Z#291
+,  /* Asia/Ujung_Pandang */ :int { 261 } //Z#292
 ,  /* Asia/Ulaanbaatar */ :array {
     :intvector { -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400 }
     :intvector { 25200, 0, 28800, 0, 28800, 3600 }
     :bin { "000102010201020102010201020102010201020102010201020102010201020102010201" }
     "Mongol"
     :intvector { 28800, 2002 }
-    :intvector { 291, 292 }
-  } //Z#291
-,  /* Asia/Ulan_Bator */ :int { 291 } //Z#292
+    :intvector { 293, 294 }
+  } //Z#293
+,  /* Asia/Ulan_Bator */ :int { 293 } //Z#294
 ,  /* Asia/Urumqi */ :array {
     :intvector { -1325483420, 325965600, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
     :intvector { 21600, 0, 28800, 0, 28800, 3600 }
     :bin { "0001020102010201020102010201" }
-  } //Z#293
+  } //Z#295
 ,  /* Asia/Vientiane */ :array {
     :intvector { -2005973424, -1855983920, -1819954800, -1220428800 }
     :intvector { 25200, 0, 25580, 0, 28800, 0 }
     :bin { "01000200" }
-  } //Z#294
+  } //Z#296
 ,  /* Asia/Vladivostok */ :array {
     :intvector { -1487321264, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701787600, 717508800, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000 }
     :intvector { 32400, 0, 32400, 3600, 36000, 0, 36000, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 36000, 1996 }
-  } //Z#295
+  } //Z#297
 ,  /* Asia/Yakutsk */ :array {
     :intvector { -1579423120, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701791200, 717512400, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600 }
     :intvector { 28800, 0, 28800, 3600, 32400, 0, 32400, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 32400, 1996 }
-  } //Z#296
+  } //Z#298
 ,  /* Asia/Yekaterinburg */ :array {
     :intvector { -1592611344, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000 }
     :intvector { 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 }
     :bin { "000203020302030203020302030203020302030203020100020302030203020302" }
     "Russia"
     :intvector { 18000, 1996 }
-  } //Z#297
+  } //Z#299
 ,  /* Asia/Yerevan */ :array {
     :intvector { -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 685569600, 686098800, 701812800, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200 }
     :intvector { 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
     :bin { "000203020302030203020302030203020302030203020101000100010001000102" }
     "RussiaAsia"
     :intvector { 14400, 1996 }
-    :intvector { 298, 492 }
-  } //Z#298
+    :intvector { 300, 498 }
+  } //Z#300
 ,  /* Atlantic/Azores */ :array {
     :intvector { -1849557928, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { -7200, 0, -7200, 3600, -7200, 7200, -3600, 0, -3600, 3600, 0, 0 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010201000102010001020100010201000100010001000100010001000100010001000100010001000100010001000100010001000100030403040304030403040304030403040304030403040304030403040304030405040304030403" }
     "EU"
     :intvector { -3600, 1996 }
-  } //Z#299
+  } //Z#301
 ,  /* Atlantic/Bermuda */ :array {
-    :intvector { -1262281256, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800 }
+    :intvector { -1262281256, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000 }
     :intvector { -14400, 0, -14400, 3600 }
-    :bin { "000100010001000100010001000100010001000100010001000100" }
-    "Bahamas"
-    :intvector { -14400, 1987 }
-  } //Z#300
+    :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    "US"
+    :intvector { -14400, 2007 }
+  } //Z#302
 ,  /* Atlantic/Canary */ :array {
     :intvector { -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { -3600, 0, 0, 0, 0, 3600 }
     :bin { "00010201020102010201020102010201020102010201020102010201020102010201" }
     "EU"
     :intvector { 0, 1996 }
-  } //Z#301
+  } //Z#303
 ,  /* Atlantic/Cape_Verde */ :array {
     :intvector { -1988144756, -862610400, -764118000, 186120000 }
     :intvector { -7200, 0, -7200, 3600, -3600, 0 }
     :bin { "00010002" }
-  } //Z#302
+  } //Z#304
 ,  /* Atlantic/Faeroe */ :array {
     :intvector { -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 0, 1996 }
-  } //Z#303
-,  /* Atlantic/Jan_Mayen */ :int { 427 } //Z#304
+  } //Z#305
+,  /* Atlantic/Jan_Mayen */ :int { 432 } //Z#306
 ,  /* Atlantic/Madeira */ :array {
     :intvector { -1849560744, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010201000102010001020100010201000100010001000100010001000100010001000100010001000100010001000100010001000100030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "EU"
     :intvector { 0, 1996 }
-  } //Z#305
+  } //Z#307
 ,  /* Atlantic/Reykjavik */ :array {
     :intvector { -1956609132, -1668211200, -1647212400, -1636675200, -1613430000, -968025600, -949615200, -942008400, -920239200, -909957600, -888789600, -877903200, -857944800, -846453600, -826495200, -815004000, -795045600, -783554400, -762991200, -752104800, -731541600, -717631200, -700092000, -686181600, -668642400, -654732000, -636588000, -623282400, -605743200, -591832800, -573688800, -559778400, -542239200, -528328800, -510789600, -496879200, -479340000, -465429600, -447890400, -433980000, -415836000, -401925600, -384386400, -370476000, -352936800, -339026400, -321487200, -307576800, -290037600, -276127200, -258588000, -244677600, -226533600, -212623200, -195084000, -181173600, -163634400, -149724000, -132184800, -118274400, -100735200, -86824800, -68680800, -54770400 }
     :intvector { -3600, 0, -3600, 3600, 0, 0 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010002" }
-    :intvector { 306, 463 }
-  } //Z#306
+    :intvector { 308, 469 }
+  } //Z#308
 ,  /* Atlantic/South_Georgia */ :array {
     :intvector {  }
     :intvector { -7200, 0 }
     :bin { "" }
-  } //Z#307
+  } //Z#309
 ,  /* Atlantic/St_Helena */ :array {
     :intvector { -599614632 }
     :intvector { 0, 0 }
     :bin { "00" }
-  } //Z#308
+  } //Z#310
 ,  /* Atlantic/Stanley */ :array {
     :intvector { -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400 }
     :intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     :bin { "00010001000100010001000100020302030201000100010001000100010001000100010001000100010001000100010001" }
     "Falk"
     :intvector { -14400, 2001 }
-  } //Z#309
-,  /* Australia/ACT */ :int { 327 } //Z#310
+  } //Z#311
+,  /* Australia/ACT */ :int { 329 } //Z#312
 ,  /* Australia/Adelaide */ :array {
     :intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000 }
     :intvector { 34200, 0, 34200, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "AS"
     :intvector { 34200, 2007 }
-    :intvector { 311, 326 }
-  } //Z#311
+    :intvector { 313, 328 }
+  } //Z#313
 ,  /* Australia/Brisbane */ :array {
     :intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "01000100010001000100010001000100" }
-    :intvector { 312, 325 }
-  } //Z#312
+    :intvector { 314, 327 }
+  } //Z#314
 ,  /* Australia/Broken_Hill */ :array {
     :intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 946647000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000 }
     :intvector { 34200, 0, 34200, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001010001000100010001000100010001" }
     "AS"
     :intvector { 34200, 2007 }
-    :intvector { 313, 331 }
-  } //Z#313
-,  /* Australia/Canberra */ :int { 327 } //Z#314
+    :intvector { 315, 333 }
+  } //Z#315
+,  /* Australia/Canberra */ :int { 329 } //Z#316
 ,  /* Australia/Currie */ :array {
     :intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "AT"
     :intvector { 36000, 2007 }
-  } //Z#315
+  } //Z#317
 ,  /* Australia/Darwin */ :array {
     :intvector { -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }
     :intvector { 34200, 0, 34200, 3600 }
     :bin { "0100010001000100" }
-    :intvector { 0, 316, 323 }
-  } //Z#316
+    :intvector { 0, 318, 325 }
+  } //Z#318
 ,  /* Australia/Hobart */ :array {
     :intvector { -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "AT"
     :intvector { 36000, 2007 }
-    :intvector { 317, 328 }
-  } //Z#317
-,  /* Australia/LHI */ :int { 320 } //Z#318
+    :intvector { 319, 330 }
+  } //Z#319
+,  /* Australia/LHI */ :int { 322 } //Z#320
 ,  /* Australia/Lindeman */ :array {
     :intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 709912800, 719942400, 731433600, 751996800, 762883200 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "010001000100010001000100010001000001000100" }
-  } //Z#319
+  } //Z#321
 ,  /* Australia/Lord_Howe */ :array {
     :intvector { 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400 }
     :intvector { 37800, 0, 37800, 1800, 37800, 3600 }
     :bin { "00020002000200020001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "LH"
     :intvector { 37800, 2007 }
-    :intvector { 318, 320 }
-  } //Z#320
+    :intvector { 320, 322 }
+  } //Z#322
 ,  /* Australia/Melbourne */ :array {
     :intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "AV"
     :intvector { 36000, 2007 }
-    :intvector { 321, 329 }
-  } //Z#321
-,  /* Australia/NSW */ :int { 327 } //Z#322
-,  /* Australia/North */ :int { 316 } //Z#323
+    :intvector { 323, 331 }
+  } //Z#323
+,  /* Australia/NSW */ :int { 329 } //Z#324
+,  /* Australia/North */ :int { 318 } //Z#325
 ,  /* Australia/Perth */ :array {
     :intvector { -1672559940, -1665385200, -883634400, -876121200, -860392800, -844671600, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400 }
     :intvector { 28800, 0, 28800, 3600 }
     :bin { "010001000100010001000100" }
-    :intvector { 324, 330 }
-  } //Z#324
-,  /* Australia/Queensland */ :int { 312 } //Z#325
-,  /* Australia/South */ :int { 311 } //Z#326
+    :intvector { 326, 332 }
+  } //Z#326
+,  /* Australia/Queensland */ :int { 314 } //Z#327
+,  /* Australia/South */ :int { 313 } //Z#328
 ,  /* Australia/Sydney */ :array {
     :intvector { -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200 }
     :intvector { 36000, 0, 36000, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
     "AN"
     :intvector { 36000, 2007 }
-    :intvector { 1, 310, 314, 322, 327 }
-  } //Z#327
-,  /* Australia/Tasmania */ :int { 317 } //Z#328
-,  /* Australia/Victoria */ :int { 321 } //Z#329
-,  /* Australia/West */ :int { 324 } //Z#330
-,  /* Australia/Yancowinna */ :int { 313 } //Z#331
-,  /* BET */ :int { 180 } //Z#332
-,  /* BST */ :int { 234 } //Z#333
-,  /* Brazil/Acre */ :int { 176 } //Z#334
-,  /* Brazil/DeNoronha */ :int { 160 } //Z#335
-,  /* Brazil/East */ :int { 180 } //Z#336
-,  /* Brazil/West */ :int { 143 } //Z#337
-,  /* CAT */ :int { 28 } //Z#338
+    :intvector { 1, 312, 316, 324, 329 }
+  } //Z#329
+,  /* Australia/Tasmania */ :int { 319 } //Z#330
+,  /* Australia/Victoria */ :int { 323 } //Z#331
+,  /* Australia/West */ :int { 326 } //Z#332
+,  /* Australia/Yancowinna */ :int { 315 } //Z#333
+,  /* BET */ :int { 182 } //Z#334
+,  /* BST */ :int { 236 } //Z#335
+,  /* Brazil/Acre */ :int { 178 } //Z#336
+,  /* Brazil/DeNoronha */ :int { 162 } //Z#337
+,  /* Brazil/East */ :int { 182 } //Z#338
+,  /* Brazil/West */ :int { 145 } //Z#339
+,  /* CAT */ :int { 28 } //Z#340
 ,  /* CET */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "C-Eur"
     :intvector { 3600, 1996 }
-  } //Z#339
-,  /* CNT */ :int { 183 } //Z#340
-,  /* CST */ :int { 91 } //Z#341
+  } //Z#341
+,  /* CNT */ :int { 185 } //Z#342
+,  /* CST */ :int { 93 } //Z#343
 ,  /* CST6CDT */ :array {
     :intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
     :intvector { -21600, 0, -21600, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -21600, 2007 }
-  } //Z#342
-,  /* CTT */ :int { 280 } //Z#343
-,  /* Canada/Atlantic */ :int { 119 } //Z#344
-,  /* Canada/Central */ :int { 198 } //Z#345
-,  /* Canada/East-Saskatchewan */ :int { 175 } //Z#346
-,  /* Canada/Eastern */ :int { 193 } //Z#347
-,  /* Canada/Mountain */ :int { 104 } //Z#348
-,  /* Canada/Newfoundland */ :int { 183 } //Z#349
-,  /* Canada/Pacific */ :int { 195 } //Z#350
-,  /* Canada/Saskatchewan */ :int { 175 } //Z#351
-,  /* Canada/Yukon */ :int { 197 } //Z#352
-,  /* Chile/Continental */ :int { 178 } //Z#353
-,  /* Chile/EasterIsland */ :int { 506 } //Z#354
-,  /* Cuba */ :int { 120 } //Z#355
-,  /* EAT */ :int { 7 } //Z#356
-,  /* ECT */ :int { 428 } //Z#357
+  } //Z#344
+,  /* CTT */ :int { 282 } //Z#345
+,  /* Canada/Atlantic */ :int { 121 } //Z#346
+,  /* Canada/Central */ :int { 200 } //Z#347
+,  /* Canada/East-Saskatchewan */ :int { 177 } //Z#348
+,  /* Canada/Eastern */ :int { 195 } //Z#349
+,  /* Canada/Mountain */ :int { 106 } //Z#350
+,  /* Canada/Newfoundland */ :int { 185 } //Z#351
+,  /* Canada/Pacific */ :int { 197 } //Z#352
+,  /* Canada/Saskatchewan */ :int { 177 } //Z#353
+,  /* Canada/Yukon */ :int { 199 } //Z#354
+,  /* Chile/Continental */ :int { 180 } //Z#355
+,  /* Chile/EasterIsland */ :int { 512 } //Z#356
+,  /* Cuba */ :int { 122 } //Z#357
+,  /* EAT */ :int { 7 } //Z#358
+,  /* ECT */ :int { 433 } //Z#359
 ,  /* EET */ :array {
     :intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#358
+  } //Z#360
 ,  /* EST */ :array {
     :intvector {  }
     :intvector { -18000, 0 }
     :bin { "" }
-  } //Z#359
+  } //Z#361
 ,  /* EST5EDT */ :array {
     :intvector { -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -769395600, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600 }
     :intvector { -18000, 0, -18000, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -18000, 2007 }
-  } //Z#360
-,  /* Egypt */ :int { 17 } //Z#361
-,  /* Eire */ :int { 410 } //Z#362
+  } //Z#362
+,  /* Egypt */ :int { 17 } //Z#363
+,  /* Eire */ :int { 412 } //Z#364
 ,  /* Etc/GMT */ :array {
     :intvector {  }
     :intvector { 0, 0 }
     :bin { "" }
-    :intvector { 363, 364, 377, 392, 393, 454, 455, 456, 457, 458 }
-  } //Z#363
-,  /* Etc/GMT+0 */ :int { 363 } //Z#364
+    :intvector { 365, 366, 379, 394, 395, 460, 461, 462, 463, 464 }
+  } //Z#365
+,  /* Etc/GMT+0 */ :int { 365 } //Z#366
 ,  /* Etc/GMT+1 */ :array {
     :intvector {  }
     :intvector { -3600, 0 }
     :bin { "" }
-  } //Z#365
+  } //Z#367
 ,  /* Etc/GMT+10 */ :array {
     :intvector {  }
     :intvector { -36000, 0 }
     :bin { "" }
-  } //Z#366
+  } //Z#368
 ,  /* Etc/GMT+11 */ :array {
     :intvector {  }
     :intvector { -39600, 0 }
     :bin { "" }
-  } //Z#367
+  } //Z#369
 ,  /* Etc/GMT+12 */ :array {
     :intvector {  }
     :intvector { -43200, 0 }
     :bin { "" }
-  } //Z#368
+  } //Z#370
 ,  /* Etc/GMT+2 */ :array {
     :intvector {  }
     :intvector { -7200, 0 }
     :bin { "" }
-  } //Z#369
+  } //Z#371
 ,  /* Etc/GMT+3 */ :array {
     :intvector {  }
     :intvector { -10800, 0 }
     :bin { "" }
-  } //Z#370
+  } //Z#372
 ,  /* Etc/GMT+4 */ :array {
     :intvector {  }
     :intvector { -14400, 0 }
     :bin { "" }
-  } //Z#371
+  } //Z#373
 ,  /* Etc/GMT+5 */ :array {
     :intvector {  }
     :intvector { -18000, 0 }
     :bin { "" }
-  } //Z#372
+  } //Z#374
 ,  /* Etc/GMT+6 */ :array {
     :intvector {  }
     :intvector { -21600, 0 }
     :bin { "" }
-  } //Z#373
+  } //Z#375
 ,  /* Etc/GMT+7 */ :array {
     :intvector {  }
     :intvector { -25200, 0 }
     :bin { "" }
-  } //Z#374
+  } //Z#376
 ,  /* Etc/GMT+8 */ :array {
     :intvector {  }
     :intvector { -28800, 0 }
     :bin { "" }
-  } //Z#375
+  } //Z#377
 ,  /* Etc/GMT+9 */ :array {
     :intvector {  }
     :intvector { -32400, 0 }
     :bin { "" }
-  } //Z#376
-,  /* Etc/GMT-0 */ :int { 363 } //Z#377
+  } //Z#378
+,  /* Etc/GMT-0 */ :int { 365 } //Z#379
 ,  /* Etc/GMT-1 */ :array {
     :intvector {  }
     :intvector { 3600, 0 }
     :bin { "" }
-  } //Z#378
+  } //Z#380
 ,  /* Etc/GMT-10 */ :array {
     :intvector {  }
     :intvector { 36000, 0 }
     :bin { "" }
-  } //Z#379
+  } //Z#381
 ,  /* Etc/GMT-11 */ :array {
     :intvector {  }
     :intvector { 39600, 0 }
     :bin { "" }
-  } //Z#380
+  } //Z#382
 ,  /* Etc/GMT-12 */ :array {
     :intvector {  }
     :intvector { 43200, 0 }
     :bin { "" }
-  } //Z#381
+  } //Z#383
 ,  /* Etc/GMT-13 */ :array {
     :intvector {  }
     :intvector { 46800, 0 }
     :bin { "" }
-  } //Z#382
+  } //Z#384
 ,  /* Etc/GMT-14 */ :array {
     :intvector {  }
     :intvector { 50400, 0 }
     :bin { "" }
-  } //Z#383
+  } //Z#385
 ,  /* Etc/GMT-2 */ :array {
     :intvector {  }
     :intvector { 7200, 0 }
     :bin { "" }
-  } //Z#384
+  } //Z#386
 ,  /* Etc/GMT-3 */ :array {
     :intvector {  }
     :intvector { 10800, 0 }
     :bin { "" }
-  } //Z#385
+  } //Z#387
 ,  /* Etc/GMT-4 */ :array {
     :intvector {  }
     :intvector { 14400, 0 }
     :bin { "" }
-  } //Z#386
+  } //Z#388
 ,  /* Etc/GMT-5 */ :array {
     :intvector {  }
     :intvector { 18000, 0 }
     :bin { "" }
-  } //Z#387
+  } //Z#389
 ,  /* Etc/GMT-6 */ :array {
     :intvector {  }
     :intvector { 21600, 0 }
     :bin { "" }
-  } //Z#388
+  } //Z#390
 ,  /* Etc/GMT-7 */ :array {
     :intvector {  }
     :intvector { 25200, 0 }
     :bin { "" }
-  } //Z#389
+  } //Z#391
 ,  /* Etc/GMT-8 */ :array {
     :intvector {  }
     :intvector { 28800, 0 }
     :bin { "" }
-  } //Z#390
+  } //Z#392
 ,  /* Etc/GMT-9 */ :array {
     :intvector {  }
     :intvector { 32400, 0 }
     :bin { "" }
-  } //Z#391
-,  /* Etc/GMT0 */ :int { 363 } //Z#392
-,  /* Etc/Greenwich */ :int { 363 } //Z#393
+  } //Z#393
+,  /* Etc/GMT0 */ :int { 365 } //Z#394
+,  /* Etc/Greenwich */ :int { 365 } //Z#395
 ,  /* Etc/UCT */ :array {
     :intvector {  }
     :intvector { 0, 0 }
     :bin { "" }
-    :intvector { 394, 550 }
-  } //Z#394
+    :intvector { 396, 556 }
+  } //Z#396
 ,  /* Etc/UTC */ :array {
     :intvector {  }
     :intvector { 0, 0 }
     :bin { "" }
-    :intvector { 395, 396, 397, 564, 565, 569 }
-  } //Z#395
-,  /* Etc/Universal */ :int { 395 } //Z#396
-,  /* Etc/Zulu */ :int { 395 } //Z#397
+    :intvector { 397, 398, 399, 570, 571, 575 }
+  } //Z#397
+,  /* Etc/Universal */ :int { 397 } //Z#398
+,  /* Etc/Zulu */ :int { 397 } //Z#399
 ,  /* Europe/Amsterdam */ :array {
     :intvector { -1693700372, -1680484772, -1663453172, -1650147572, -1633213172, -1617488372, -1601158772, -1586038772, -1569709172, -1554589172, -1538259572, -1523139572, -1507501172, -1490566772, -1470176372, -1459117172, -1443997172, -1427667572, -1406672372, -1396217972, -1376950772, -1364768372, -1345414772, -1333318772, -1313792372, -1301264372, -1282256372, -1269814772, -1250720372, -1238365172, -1219184372, -1206915572, -1186957172, -1175465972, -1156025972, -1143411572, -1124489972, -1111961972, -1092953972, -1080512372, -1061331572, -1049062772, -1029190772, -1025745572, -1017613200, -998259600, -986163600, -966723600, -954109200, -935022000, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 1172, 0, 1172, 3600, 1200, 0, 1200, 3600, 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010302030203020504050405040504040504050405040504050405040504050405040504050405040504050405040504050405040504" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#398
+  } //Z#400
 ,  /* Europe/Andorra */ :array {
     :intvector { -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#399
+  } //Z#401
 ,  /* Europe/Athens */ :array {
     :intvector { -1686101632, -1182996000, -1178161200, -906861600, -904878000, -857257200, -844477200, -828237600, -812422800, -552362400, -541652400, 166485600, 186184800, 198028800, 213753600, 228873600, 244080000, 260323200, 275446800, 291798000, 307407600, 323388000, 338936400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }
     :bin { "0203020301000100020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#400
-,  /* Europe/Belfast */ :int { 418 } //Z#401
+  } //Z#402
+,  /* Europe/Belfast */ :int { 423 } //Z#403
 ,  /* Europe/Belgrade */ :array {
     :intvector { -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -777942000, -766623600, 407199600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0100010001000100000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 402, 417, 434, 436, 448 }
-  } //Z#402
+    :intvector { 404, 422, 439, 441, 454 }
+  } //Z#404
 ,  /* Europe/Berlin */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -748479600, -733273200, -717634800, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 3600, 7200 }
     :bin { "0100010001000100010001000102010001000102010001000100000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#403
-,  /* Europe/Bratislava */ :int { 429 } //Z#404
+  } //Z#405
+,  /* Europe/Bratislava */ :int { 434 } //Z#406
 ,  /* Europe/Brussels */ :array {
     :intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -799293600, -798073200, -781052400, -766623600, -745455600, -733273200, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 3600, 0, 3600, 3600 }
     :bin { "0203020302030200010001000100010001000100010001000100010001000100010001000100010001000100010001000100010302030203030203020302020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#405
+  } //Z#407
 ,  /* Europe/Bucharest */ :array {
     :intvector { -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, 296604000, 307486800, 323816400, 338940000, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670370400, 686095200, 701820000, 717544800, 733269600, 748994400, 757375200, 764719200, 780440400, 796168800, 811890000 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100000100010001000001000100" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#406
+  } //Z#408
 ,  /* Europe/Budapest */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1640998800, -1633212000, -1617577200, -1600466400, -1587250800, -1569708000, -1554332400, -906937200, -857257200, -844556400, -828226800, -812502000, -796777200, -778471200, -762487200, -749689200, -733359600, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -621990000, -605660400, -492656400, -481168800, -461120400, -449632800, -428547600, -418269600, -397094400, -386809200, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#407
+  } //Z#409
 ,  /* Europe/Chisinau */ :array {
     :intvector { -1637114100, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, -927165600, -898138800, -857257200, -844556400, -828226800, -812502000, -800157600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 641941200, 670377600, 686102400, 694216800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000 }
     :intvector { 3600, 0, 3600, 3600, 6264, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "0203040304030403040304030403040304030401000100010506050605060506050605060506050605060505030403030403040304030403" }
     "EU"
     :intvector { 7200, 1996 }
-    :intvector { 408, 441 }
-  } //Z#408
+    :intvector { 410, 446 }
+  } //Z#410
 ,  /* Europe/Copenhagen */ :array {
     :intvector { -1692496800, -1680490800, -935110800, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -769388400, -747010800, -736383600, -715215600, -706748400, -683161200, -675298800, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "01000100010001000100010001000100000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#409
+  } //Z#411
 ,  /* Europe/Dublin */ :array {
     :intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1517011200, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733359600, -719445600, -699490800, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600 }
     :intvector { -1521, 3600, 0, 0, 0, 3600, 3600, 0 }
     :bin { "000102010201020102010201010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     "EU"
     :intvector { 0, 1996 }
-    :intvector { 362, 410 }
-  } //Z#410
+    :intvector { 364, 412 }
+  } //Z#412
 ,  /* Europe/Gibraltar */ :array {
     :intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102010201020102010201000100010201000100010001000100010001000100010001000304030403040304030403040304030403040304030403040304030403" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#411
+  } //Z#413
+,  /* Europe/Guernsey */ :int { 423 } //Z#414
 ,  /* Europe/Helsinki */ :array {
     :intvector { -1535938792, -875671200, -859863600, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 7200, 0, 7200, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 7200, 1996 }
-    :intvector { 412, 422 }
-  } //Z#412
+    :intvector { 415, 427 }
+  } //Z#415
+,  /* Europe/Isle_of_Man */ :int { 423 } //Z#416
 ,  /* Europe/Istanbul */ :array {
     :intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001030203020302030203020100010001000100010001000001000100010001000100" }
     "EU"
     :intvector { 7200, 1996 }
-    :intvector { 243, 413, 549 }
-  } //Z#413
+    :intvector { 245, 417, 555 }
+  } //Z#417
+,  /* Europe/Jersey */ :int { 423 } //Z#418
 ,  /* Europe/Kaliningrad */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 701816400, 717537600, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "01000100010001000100010002030204050405040504050405040504050405040504050403020302030203020302" }
     "Russia"
     :intvector { 7200, 1996 }
-  } //Z#414
+  } //Z#419
 ,  /* Europe/Kiev */ :array {
     :intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "0204010001000405040504050405040504050405040504050404020302030203020302" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#415
+  } //Z#420
 ,  /* Europe/Lisbon */ :array {
     :intvector { -1830381808, -1689555600, -1677801600, -1667437200, -1647738000, -1635814800, -1616202000, -1604365200, -1584666000, -1572742800, -1553043600, -1541206800, -1521507600, -1442451600, -1426813200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1221440400, -1206925200, -1191200400, -1175475600, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942022800, -922669200, -906944400, -891133200, -877309200, -873684000, -864007200, -857955600, -845859600, -842839200, -831348000, -825901200, -814410000, -810784800, -799898400, -794451600, -782960400, -779335200, -768448800, -763002000, -749091600, -733366800, -717631200, -701906400, -686181600, -670456800, -654732000, -639007200, -591832800, -575503200, -559778400, -544053600, -528328800, -512604000, -496879200, -481154400, -465429600, -449704800, -433980000, -417650400, -401925600, -386200800, -370476000, -354751200, -339026400, -323301600, -307576800, -291852000, -276127200, -260402400, -244677600, -228348000, -212623200, -196898400, -181173600, -165448800, -149724000, -133999200, -118274400, 212544000, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020100010201000102010001020100010001000100010001000100010001000100010001000100010001000100010001000100010003000100010001000100010001000100010001000100010001000100010001000103040304030403" }
     "EU"
     :intvector { 0, 1996 }
-    :intvector { 416, 544 }
-  } //Z#416
-,  /* Europe/Ljubljana */ :int { 402 } //Z#417
+    :intvector { 421, 550 }
+  } //Z#421
+,  /* Europe/Ljubljana */ :int { 404 } //Z#422
 ,  /* Europe/London */ :array {
     :intvector { -1691964000, -1680472800, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020102010201020102010001000102010001000100010001000100010001000100010001000100010001000100010001000100010001000100010300010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 0, 1996 }
-    :intvector { 401, 418, 452, 453 }
-  } //Z#418
+    :intvector { 403, 414, 416, 418, 423, 458, 459 }
+  } //Z#423
 ,  /* Europe/Luxembourg */ :array {
     :intvector { -2069713476, -1692496800, -1680483600, -1662343200, -1650157200, -1632006000, -1618700400, -1612659600, -1604278800, -1585519200, -1574038800, -1552258800, -1539997200, -1520550000, -1507510800, -1490572800, -1473642000, -1459119600, -1444006800, -1427673600, -1411866000, -1396224000, -1379293200, -1364774400, -1348448400, -1333324800, -1316394000, -1301270400, -1284339600, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -935186400, -857257200, -844556400, -828226800, -812502000, -797986800, -781052400, -766623600, -745455600, -733273200, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 3600, 0, 3600, 3600 }
     :bin { "02030203020302000100010001000100010001000100010001000100010001000100010001000100010001000100010001000103020302030203020302020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#419
+  } //Z#424
 ,  /* Europe/Madrid */ :array {
     :intvector { -1661734800, -1648429200, -1631926800, -1616893200, -1601254800, -1585357200, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1029114000, -1017622800, -1002848400, -986173200, -969238800, -954118800, -940208400, -873079200, -862538400, -842839200, -828237600, -811389600, -796010400, -779940000, -765421200, -748490400, -733888800, -652327200, -639190800, 135122400, 150246000, 167176800, 181695600, 196812000, 212540400, 228866400, 243990000, 260402400, 276044400, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
     :bin { "01000100010001000100010001000100010001000100010201020102010201020304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#420
+  } //Z#425
 ,  /* Europe/Malta */ :array {
     :intvector { -1690851600, -1680483600, -1664758800, -1649034000, -1635123600, -1616979600, -1604278800, -1585530000, -1571014800, -1555290000, -932432400, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71719200, -50547600, -40269600, -18493200, -8215200, 12956400, 23234400, 43801200, 54687600, 75855600, 86738400, 102380400, 118105200, 135730800, 148518000, 167187600, 180489600, 198637200, 211939200, 230086800, 243388800, 261536400, 274838400, 292986000, 306288000, 323312400, 338342400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#421
-,  /* Europe/Mariehamn */ :int { 412 } //Z#422
+  } //Z#426
+,  /* Europe/Mariehamn */ :int { 415 } //Z#427
 ,  /* Europe/Minsk */ :array {
     :intvector { -1441158600, -1247536800, -899780400, -857257200, -844556400, -828226800, -812502000, -804650400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 670374000, 686102400, 701820000, 717544800, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "02040100010001040504050405040504050405040504050405040403020302030203020302" }
     "Russia"
     :intvector { 7200, 1996 }
-  } //Z#423
+  } //Z#428
 ,  /* Europe/Monaco */ :array {
     :intvector { -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -904438800, -891136800, -877827600, -857257200, -844556400, -828226800, -812502000, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010201020102010201020304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#424
+  } //Z#429
 ,  /* Europe/Moscow */ :array {
     :intvector { -1688265000, -1656819048, -1641353448, -1627965048, -1618716648, -1596429048, -1593829848, -1589860800, -1542427200, -1539493200, -1525323600, -1522728000, -1491188400, -1247536800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701812800, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200 }
     :intvector { 7200, 0, 7200, 3600, 9048, 0, 9048, 3600, 9048, 7200, 10800, 0, 10800, 3600, 10800, 7200 }
     :bin { "020302040304060506070605000506050605060506050605060506050605060506050100050605060506050605" }
     "Russia"
     :intvector { 10800, 1996 }
-    :intvector { 425, 567 }
-  } //Z#425
-,  /* Europe/Nicosia */ :int { 262 } //Z#426
+    :intvector { 430, 573 }
+  } //Z#430
+,  /* Europe/Nicosia */ :int { 264 } //Z#431
 ,  /* Europe/Oslo */ :array {
     :intvector { -1691884800, -1680573600, -927511200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -765327600, -340844400, -324514800, -308790000, -293065200, -277340400, -261615600, -245890800, -230166000, -214441200, -198716400, -182991600, -166662000, -147913200, -135212400, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000100000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 211, 304, 427 }
-  } //Z#427
+    :intvector { 213, 306, 432 }
+  } //Z#432
 ,  /* Europe/Paris */ :array {
     :intvector { -1855958901, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -932436000, -857257200, -844556400, -828226800, -812502000, -800071200, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
     :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000104030403040201020304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 357, 428 }
-  } //Z#428
+    :intvector { 359, 433 }
+  } //Z#433
 ,  /* Europe/Prague */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -798073200, -780534000, -761180400, -746578800, -733359600, -716425200, -701910000, -684975600, -670460400, -654217200, -639010800, 283993200, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 404, 429 }
-  } //Z#429
+    :intvector { 406, 434 }
+  } //Z#434
 ,  /* Europe/Riga */ :array {
     :intvector { -1632008184, -1618702584, -1601681784, -1597275384, -1377308184, -928029600, -899521200, -857257200, -844556400, -828226800, -812502000, -796777200, -795834000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800 }
     :intvector { 3600, 0, 3600, 3600, 5784, 0, 5784, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "03020302040601000100010006070607060706070607060706070607060504050405040504050405040504" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#430
+  } //Z#435
 ,  /* Europe/Rome */ :array {
     :intvector { -1690851600, -1680483600, -1664758800, -1649034000, -1635123600, -1616979600, -1604278800, -1585530000, -1571014800, -1555290000, -932432400, -857257200, -844556400, -828226800, -812502000, -804823200, -798080400, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71719200, -50547600, -40269600, -18493200, -8215200, 12956400, 23234400, 43801200, 54687600, 75855600, 86738400, 107910000, 118188000, 138754800, 149637600, 170809200, 181090800, 202258800, 212540400, 233103600, 243990000, 265158000, 276044400, 296607600, 307494000, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0100010001000100010001000100010100010001000100010001000100010001000100010001000100010001000100010001000100000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 431, 433, 444 }
-  } //Z#431
+    :intvector { 436, 438, 449 }
+  } //Z#436
 ,  /* Europe/Samara */ :array {
-    :intvector { -1593825636, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701809200, 717530400, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600 }
+    :intvector { -1593825636, -1247540400, -1102305600, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701809200, 717530400, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600 }
     :intvector { 7200, 3600, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
-    :bin { "010304030403040304030403040304030403020102010001030403040304030403" }
+    :bin { "01030304030403040304030403040304030403020102010001030403040304030403" }
     "Russia"
     :intvector { 14400, 1996 }
-  } //Z#432
-,  /* Europe/San_Marino */ :int { 431 } //Z#433
-,  /* Europe/Sarajevo */ :int { 402 } //Z#434
+  } //Z#437
+,  /* Europe/San_Marino */ :int { 436 } //Z#438
+,  /* Europe/Sarajevo */ :int { 404 } //Z#439
 ,  /* Europe/Simferopol */ :array {
     :intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 767739600, 780436800, 796165200, 811886400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "02040100010001040504050405040504050405040504050405040402030203020305040504" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#435
-,  /* Europe/Skopje */ :int { 402 } //Z#436
+  } //Z#440
+,  /* Europe/Skopje */ :int { 404 } //Z#441
 ,  /* Europe/Sofia */ :array {
     :intvector { -857257200, -844556400, -828226800, -812502000, -796777200, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }
     :bin { "0001000100020302030203020302030203020302030203020302030203020203020302030203020302" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#437
+  } //Z#442
 ,  /* Europe/Stockholm */ :array {
     :intvector { -1692496800, -1680483600, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "01000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#438
+  } //Z#443
 ,  /* Europe/Tallinn */ :array {
     :intvector { -1638322740, -1632006000, -1618700400, -1593824400, -1535938740, -927943200, -892954800, -857257200, -844556400, -828226800, -812502000, -797652000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800 }
     :intvector { 3600, 0, 3600, 3600, 5940, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "000100020305010001000105060506050605060506050605060506050403040304030403040304030403" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#439
+  } //Z#444
 ,  /* Europe/Tirane */ :array {
     :intvector { -1767230360, -932346000, -857257200, -844556400, -843519600, 136854000, 149896800, 168130800, 181432800, 199839600, 213141600, 231894000, 244591200, 263257200, 276040800, 294706800, 307490400, 326156400, 339458400, 357087600, 370389600, 389142000, 402444000, 419468400, 433807200, 449622000, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#440
-,  /* Europe/Tiraspol */ :int { 408 } //Z#441
+  } //Z#445
+,  /* Europe/Tiraspol */ :int { 410 } //Z#446
 ,  /* Europe/Uzhgorod */ :array {
     :intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -796874400, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 670384800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "01000100010100040504050405040504050405040504050405040400020302030203020302" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#442
+  } //Z#447
 ,  /* Europe/Vaduz */ :array {
     :intvector { 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#443
-,  /* Europe/Vatican */ :int { 431 } //Z#444
+  } //Z#448
+,  /* Europe/Vatican */ :int { 436 } //Z#449
 ,  /* Europe/Vienna */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1577926800, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -757386000, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0100010001000001000100010001000100000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#445
+  } //Z#450
 ,  /* Europe/Vilnius */ :array {
     :intvector { -1672536240, -1585100136, -1561251600, -1553565600, -928198800, -900126000, -857257200, -844556400, -828226800, -812502000, -802144800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800 }
     :intvector { 3600, 0, 3600, 3600, 5736, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "0200030005010001000105060506050605060506050605060506050605060504030403040304030403" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#446
+  } //Z#451
+,  /* Europe/Volgograd */ :array {
+    :intvector { -1577761060, -1411873200, -1247540400, -256881600, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200 }
+    :intvector { 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
+    :bin { "000002020302030203020302030203020302030201000100020100010001000100" }
+    "Russia"
+    :intvector { 10800, 1996 }
+  } //Z#452
 ,  /* Europe/Warsaw */ :array {
     :intvector { -1717032240, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600473600, -1587168000, -1501725600, -931734000, -857257200, -844556400, -828226800, -812502000, -796874400, -796608000, -778726800, -762660000, -748486800, -733273200, -715215600, -701910000, -684975600, -670460400, -654130800, -639010800, -397094400, -386812800, -371088000, -355363200, -334195200, -323308800, -307584000, -291859200, -271296000, -260409600, -239846400, -228960000, -208396800, -197510400, -176342400, -166060800, 220921200, 228873600, 243993600, 260323200, 276048000, 291772800, 307497600, 323827200, 338947200, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 567990000, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }
     :bin { "0001000100010203020001000100010100010001000100010001000100010001000100010001000100010000010001000100010001000100010001000100010001000001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-    :intvector { 447, 543 }
-  } //Z#447
-,  /* Europe/Zagreb */ :int { 402 } //Z#448
+    :intvector { 453, 549 }
+  } //Z#453
+,  /* Europe/Zagreb */ :int { 404 } //Z#454
 ,  /* Europe/Zaporozhye */ :array {
     :intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
     :bin { "02040100010004050405040504050405040504050405040504050403020302030203020302" }
     "EU"
     :intvector { 7200, 1996 }
-  } //Z#449
+  } //Z#455
 ,  /* Europe/Zurich */ :array {
     :intvector { -920336400, -915242400, -904518000, -891223200, -873068400, -859773600, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 3600, 1996 }
-  } //Z#450
+  } //Z#456
 ,  /* Factory */ :array {
     :intvector {  }
     :intvector { 0, 0 }
     :bin { "" }
-  } //Z#451
-,  /* GB */ :int { 418 } //Z#452
-,  /* GB-Eire */ :int { 418 } //Z#453
-,  /* GMT */ :int { 363 } //Z#454
-,  /* GMT+0 */ :int { 363 } //Z#455
-,  /* GMT-0 */ :int { 363 } //Z#456
-,  /* GMT0 */ :int { 363 } //Z#457
-,  /* Greenwich */ :int { 363 } //Z#458
-,  /* HST */ :int { 516 } //Z#459
-,  /* Hongkong */ :int { 240 } //Z#460
-,  /* IET */ :int { 122 } //Z#461
-,  /* IST */ :int { 227 } //Z#462
-,  /* Iceland */ :int { 306 } //Z#463
+  } //Z#457
+,  /* GB */ :int { 423 } //Z#458
+,  /* GB-Eire */ :int { 423 } //Z#459
+,  /* GMT */ :int { 365 } //Z#460
+,  /* GMT+0 */ :int { 365 } //Z#461
+,  /* GMT-0 */ :int { 365 } //Z#462
+,  /* GMT0 */ :int { 365 } //Z#463
+,  /* Greenwich */ :int { 365 } //Z#464
+,  /* HST */ :int { 522 } //Z#465
+,  /* Hongkong */ :int { 242 } //Z#466
+,  /* IET */ :int { 124 } //Z#467
+,  /* IST */ :int { 229 } //Z#468
+,  /* Iceland */ :int { 308 } //Z#469
 ,  /* Indian/Antananarivo */ :array {
     :intvector { -1846293004, -499924800, -492062400 }
     :intvector { 10800, 0, 10800, 3600 }
     :bin { "000100" }
-  } //Z#464
+  } //Z#470
 ,  /* Indian/Chagos */ :array {
     :intvector { -1988167780, 820436400 }
     :intvector { 18000, 0, 21600, 0 }
     :bin { "0001" }
-  } //Z#465
+  } //Z#471
 ,  /* Indian/Christmas */ :array {
     :intvector {  }
     :intvector { 25200, 0 }
     :bin { "" }
-  } //Z#466
+  } //Z#472
 ,  /* Indian/Cocos */ :array {
     :intvector {  }
     :intvector { 23400, 0 }
     :bin { "" }
-  } //Z#467
+  } //Z#473
 ,  /* Indian/Comoro */ :array {
     :intvector { -1846291984 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#468
+  } //Z#474
 ,  /* Indian/Kerguelen */ :array {
     :intvector { -631152000 }
     :intvector { 18000, 0 }
     :bin { "00" }
-  } //Z#469
+  } //Z#475
 ,  /* Indian/Mahe */ :array {
     :intvector { -2006653308 }
     :intvector { 14400, 0 }
     :bin { "00" }
-  } //Z#470
+  } //Z#476
 ,  /* Indian/Maldives */ :array {
     :intvector { -315636840 }
     :intvector { 18000, 0 }
     :bin { "00" }
-  } //Z#471
+  } //Z#477
 ,  /* Indian/Mauritius */ :array {
     :intvector { -1988164200 }
     :intvector { 14400, 0 }
     :bin { "00" }
-  } //Z#472
+  } //Z#478
 ,  /* Indian/Mayotte */ :array {
     :intvector { -1846292456 }
     :intvector { 10800, 0 }
     :bin { "00" }
-  } //Z#473
+  } //Z#479
 ,  /* Indian/Reunion */ :array {
     :intvector { -1848886912 }
     :intvector { 14400, 0 }
     :bin { "00" }
-  } //Z#474
-,  /* Iran */ :int { 285 } //Z#475
-,  /* Israel */ :int { 246 } //Z#476
-,  /* JST */ :int { 289 } //Z#477
-,  /* Jamaica */ :int { 131 } //Z#478
-,  /* Japan */ :int { 289 } //Z#479
-,  /* Kwajalein */ :int { 520 } //Z#480
-,  /* Libya */ :int { 54 } //Z#481
+  } //Z#480
+,  /* Iran */ :int { 287 } //Z#481
+,  /* Israel */ :int { 248 } //Z#482
+,  /* JST */ :int { 291 } //Z#483
+,  /* Jamaica */ :int { 133 } //Z#484
+,  /* Japan */ :int { 291 } //Z#485
+,  /* Kwajalein */ :int { 526 } //Z#486
+,  /* Libya */ :int { 54 } //Z#487
 ,  /* MET */ :array {
     :intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 3600, 0, 3600, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "C-Eur"
     :intvector { 3600, 1996 }
-  } //Z#482
-,  /* MIT */ :int { 503 } //Z#483
+  } //Z#488
+,  /* MIT */ :int { 509 } //Z#489
 ,  /* MST */ :array {
     :intvector {  }
     :intvector { -25200, 0 }
     :bin { "" }
-  } //Z#484
+  } //Z#490
 ,  /* MST7MDT */ :array {
     :intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800 }
     :intvector { -25200, 0, -25200, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -25200, 2007 }
-  } //Z#485
-,  /* Mexico/BajaNorte */ :int { 192 } //Z#486
-,  /* Mexico/BajaSur */ :int { 145 } //Z#487
-,  /* Mexico/General */ :int { 149 } //Z#488
-,  /* Mideast/Riyadh87 */ :int { 273 } //Z#489
-,  /* Mideast/Riyadh88 */ :int { 274 } //Z#490
-,  /* Mideast/Riyadh89 */ :int { 275 } //Z#491
-,  /* NET */ :int { 298 } //Z#492
-,  /* NST */ :int { 504 } //Z#493
-,  /* NZ */ :int { 504 } //Z#494
-,  /* NZ-CHAT */ :int { 505 } //Z#495
-,  /* Navajo */ :int { 101 } //Z#496
-,  /* PLT */ :int { 249 } //Z#497
-,  /* PNT */ :int { 166 } //Z#498
-,  /* PRC */ :int { 280 } //Z#499
-,  /* PRT */ :int { 171 } //Z#500
-,  /* PST */ :int { 139 } //Z#501
+  } //Z#491
+,  /* Mexico/BajaNorte */ :int { 194 } //Z#492
+,  /* Mexico/BajaSur */ :int { 147 } //Z#493
+,  /* Mexico/General */ :int { 151 } //Z#494
+,  /* Mideast/Riyadh87 */ :int { 275 } //Z#495
+,  /* Mideast/Riyadh88 */ :int { 276 } //Z#496
+,  /* Mideast/Riyadh89 */ :int { 277 } //Z#497
+,  /* NET */ :int { 300 } //Z#498
+,  /* NST */ :int { 510 } //Z#499
+,  /* NZ */ :int { 510 } //Z#500
+,  /* NZ-CHAT */ :int { 511 } //Z#501
+,  /* Navajo */ :int { 103 } //Z#502
+,  /* PLT */ :int { 251 } //Z#503
+,  /* PNT */ :int { 168 } //Z#504
+,  /* PRC */ :int { 282 } //Z#505
+,  /* PRT */ :int { 173 } //Z#506
+,  /* PST */ :int { 141 } //Z#507
 ,  /* PST8PDT */ :array {
     :intvector { -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -769395600, -765385200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400 }
     :intvector { -28800, 0, -28800, 3600 }
     :bin { "010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "US"
     :intvector { -28800, 2007 }
-  } //Z#502
+  } //Z#508
 ,  /* Pacific/Apia */ :array {
     :intvector { -1861878784, -631110600 }
     :intvector { -41400, 0, -39600, 0 }
     :bin { "0001" }
-    :intvector { 483, 503 }
-  } //Z#503
+    :intvector { 489, 509 }
+  } //Z#509
 ,  /* Pacific/Auckland */ :array {
     :intvector { -1330335000, -1320057000, -1300699800, -1287396000, -1269250200, -1255946400, -1237800600, -1224496800, -1206351000, -1192442400, -1174901400, -1160992800, -1143451800, -1125914400, -1112607000, -1094464800, -1081157400, -1063015200, -1049707800, -1031565600, -1018258200, -1000116000, -986808600, -968061600, -955359000, -936612000, -923304600, -757425600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000 }
     :intvector { 41400, 0, 41400, 1800, 41400, 3600, 43200, 0, 43200, 3600 }
     :bin { "0200010001000100010001000100010001000100010001000100010304030403040304030403040304030403040304030403040304030403040304" }
     "NZ"
     :intvector { 43200, 1990 }
-    :intvector { 493, 494, 504 }
-  } //Z#504
+    :intvector { 499, 500, 510 }
+  } //Z#510
 ,  /* Pacific/Chatham */ :array {
     :intvector { -410271228, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000 }
     :intvector { 45900, 0, 45900, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001" }
     "Chatham"
     :intvector { 45900, 1990 }
-    :intvector { 495, 505 }
-  } //Z#505
+    :intvector { 501, 511 }
+  } //Z#511
 ,  /* Pacific/Easter */ :array {
     :intvector { -1178124152, -101937600, -88635600, -69883200, -57186000, -38433600, -25736400, -6984000, 6318000, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 119419200, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 542775600, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 655876800, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 857876400, 876628800, 889930800, 906868800, 923194800, 939528000 }
     :intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
     :bin { "0001000100010001000100010001000100010001000100010001000100010001020302030203020302030203020302030203020302030203020302030203020302030203" }
     "Chile"
     :intvector { -21600, 2000 }
-    :intvector { 354, 506 }
-  } //Z#506
+    :intvector { 356, 512 }
+  } //Z#512
 ,  /* Pacific/Efate */ :array {
     :intvector { -1829387596, 433256400, 448977600, 467298000, 480427200, 496760400, 511876800, 528210000, 543931200, 559659600, 575380800, 591109200, 606830400, 622558800, 638280000, 654008400, 669729600, 686062800, 696340800, 719931600, 727790400 }
     :intvector { 39600, 0, 39600, 3600 }
     :bin { "000100010001000100010001000100010001000100" }
-  } //Z#507
+  } //Z#513
 ,  /* Pacific/Enderbury */ :array {
     :intvector { 307627200, 788958000 }
     :intvector { -39600, 0, 46800, 0 }
     :bin { "0001" }
-  } //Z#508
+  } //Z#514
 ,  /* Pacific/Fakaofo */ :array {
     :intvector {  }
     :intvector { -36000, 0 }
     :bin { "" }
-  } //Z#509
+  } //Z#515
 ,  /* Pacific/Fiji */ :array {
     :intvector { -1709985220, 909842400, 920124000, 941896800, 951573600 }
     :intvector { 43200, 0, 43200, 3600 }
     :bin { "0001000100" }
-  } //Z#510
+  } //Z#516
 ,  /* Pacific/Funafuti */ :array {
     :intvector {  }
     :intvector { 43200, 0 }
     :bin { "" }
-  } //Z#511
+  } //Z#517
 ,  /* Pacific/Galapagos */ :array {
     :intvector { -1230746496, 504939600 }
     :intvector { -21600, 0, -18000, 0 }
     :bin { "0100" }
-  } //Z#512
+  } //Z#518
 ,  /* Pacific/Gambier */ :array {
     :intvector { -1806678012 }
     :intvector { -32400, 0 }
     :bin { "00" }
-  } //Z#513
+  } //Z#519
 ,  /* Pacific/Guadalcanal */ :array {
     :intvector { -1806748788 }
     :intvector { 39600, 0 }
     :bin { "00" }
-    :intvector { 514, 547 }
-  } //Z#514
+    :intvector { 520, 553 }
+  } //Z#520
 ,  /* Pacific/Guam */ :array {
     :intvector { 977493600 }
     :intvector { 36000, 0 }
     :bin { "00" }
-  } //Z#515
+  } //Z#521
 ,  /* Pacific/Honolulu */ :array {
     :intvector { -1157283000, -1155472200, -880198200, -769395600, -765376200, -712150200 }
     :intvector { -37800, 0, -37800, 3600, -36000, 0 }
     :bin { "010001010002" }
-    :intvector { 459, 516, 557 }
-  } //Z#516
+    :intvector { 465, 522, 563 }
+  } //Z#522
 ,  /* Pacific/Johnston */ :array {
     :intvector {  }
     :intvector { -36000, 0 }
     :bin { "" }
-  } //Z#517
+  } //Z#523
 ,  /* Pacific/Kiritimati */ :array {
     :intvector { 307622400, 788954400 }
     :intvector { -36000, 0, 50400, 0 }
     :bin { "0001" }
-  } //Z#518
+  } //Z#524
 ,  /* Pacific/Kosrae */ :array {
     :intvector { -7988400, 915105600 }
     :intvector { 39600, 0, 43200, 0 }
     :bin { "0100" }
-  } //Z#519
+  } //Z#525
 ,  /* Pacific/Kwajalein */ :array {
     :intvector { -7988400, 745848000 }
     :intvector { -43200, 0, 43200, 0 }
     :bin { "0001" }
-    :intvector { 480, 520 }
-  } //Z#520
+    :intvector { 486, 526 }
+  } //Z#526
 ,  /* Pacific/Majuro */ :array {
     :intvector { -7988400 }
     :intvector { 43200, 0 }
     :bin { "00" }
-  } //Z#521
+  } //Z#527
 ,  /* Pacific/Marquesas */ :array {
     :intvector { -1806676920 }
     :intvector { -34200, 0 }
     :bin { "00" }
-  } //Z#522
+  } //Z#528
 ,  /* Pacific/Midway */ :array {
     :intvector { -428504400, -420645600, -86878800, 439038000 }
     :intvector { -39600, 0, -39600, 3600 }
     :bin { "01000000" }
-  } //Z#523
+  } //Z#529
 ,  /* Pacific/Nauru */ :array {
     :intvector { -1545131260, -877347000, -800960400, 294323400 }
     :intvector { 32400, 0, 41400, 0, 43200, 0 }
     :bin { "01000102" }
-  } //Z#524
+  } //Z#530
 ,  /* Pacific/Niue */ :array {
     :intvector { -599575200, 276089400 }
     :intvector { -41400, 0, -39600, 0 }
     :bin { "0001" }
-  } //Z#525
+  } //Z#531
 ,  /* Pacific/Norfolk */ :array {
     :intvector { -599656320 }
     :intvector { 41400, 0 }
     :bin { "00" }
-  } //Z#526
+  } //Z#532
 ,  /* Pacific/Noumea */ :array {
     :intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 }
     :intvector { 39600, 0, 39600, 3600 }
     :bin { "00010001000100" }
-  } //Z#527
+  } //Z#533
 ,  /* Pacific/Pago_Pago */ :array {
     :intvector { -1861879032, -631110600, -86878800, 439038000 }
     :intvector { -41400, 0, -39600, 0 }
     :bin { "00010101" }
-    :intvector { 528, 535, 563 }
-  } //Z#528
+    :intvector { 534, 541, 569 }
+  } //Z#534
 ,  /* Pacific/Palau */ :array {
     :intvector {  }
     :intvector { 32400, 0 }
     :bin { "" }
-  } //Z#529
+  } //Z#535
 ,  /* Pacific/Pitcairn */ :array {
     :intvector { 893665800 }
     :intvector { -28800, 0 }
     :bin { "00" }
-  } //Z#530
+  } //Z#536
 ,  /* Pacific/Ponape */ :array {
     :intvector {  }
     :intvector { 39600, 0 }
     :bin { "" }
-  } //Z#531
+  } //Z#537
 ,  /* Pacific/Port_Moresby */ :array {
     :intvector {  }
     :intvector { 36000, 0 }
     :bin { "" }
-  } //Z#532
+  } //Z#538
 ,  /* Pacific/Rarotonga */ :array {
     :intvector { 279714600, 289387800, 309952800, 320837400, 341402400, 352287000, 372852000, 384341400, 404906400, 415791000, 436356000, 447240600, 467805600, 478690200, 499255200, 510139800, 530704800, 541589400, 562154400, 573643800, 594208800, 605093400, 625658400, 636543000, 657108000, 667992600 }
     :intvector { -36000, 0, -36000, 1800 }
     :bin { "0100010001000100010001000100010001000100010001000100" }
-  } //Z#533
+  } //Z#539
 ,  /* Pacific/Saipan */ :array {
     :intvector { -7981200, 977493600 }
     :intvector { 36000, 0 }
     :bin { "0000" }
-  } //Z#534
-,  /* Pacific/Samoa */ :int { 528 } //Z#535
+  } //Z#540
+,  /* Pacific/Samoa */ :int { 534 } //Z#541
 ,  /* Pacific/Tahiti */ :array {
     :intvector { -1806674504 }
     :intvector { -36000, 0 }
     :bin { "00" }
-  } //Z#536
+  } //Z#542
 ,  /* Pacific/Tarawa */ :array {
     :intvector {  }
     :intvector { 43200, 0 }
     :bin { "" }
-  } //Z#537
+  } //Z#543
 ,  /* Pacific/Tongatapu */ :array {
     :intvector { -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400 }
     :intvector { 46800, 0, 46800, 3600 }
     :bin { "00010001000100" }
-  } //Z#538
+  } //Z#544
 ,  /* Pacific/Truk */ :array {
     :intvector {  }
     :intvector { 36000, 0 }
     :bin { "" }
-    :intvector { 539, 542 }
-  } //Z#539
+    :intvector { 545, 548 }
+  } //Z#545
 ,  /* Pacific/Wake */ :array {
     :intvector {  }
     :intvector { 43200, 0 }
     :bin { "" }
-  } //Z#540
+  } //Z#546
 ,  /* Pacific/Wallis */ :array {
     :intvector {  }
     :intvector { 43200, 0 }
     :bin { "" }
-  } //Z#541
-,  /* Pacific/Yap */ :int { 539 } //Z#542
-,  /* Poland */ :int { 447 } //Z#543
-,  /* Portugal */ :int { 416 } //Z#544
-,  /* ROC */ :int { 282 } //Z#545
-,  /* ROK */ :int { 279 } //Z#546
-,  /* SST */ :int { 514 } //Z#547
-,  /* Singapore */ :int { 281 } //Z#548
-,  /* Turkey */ :int { 413 } //Z#549
-,  /* UCT */ :int { 394 } //Z#550
-,  /* US/Alaska */ :int { 58 } //Z#551
-,  /* US/Aleutian */ :int { 57 } //Z#552
-,  /* US/Arizona */ :int { 166 } //Z#553
-,  /* US/Central */ :int { 91 } //Z#554
-,  /* US/East-Indiana */ :int { 122 } //Z#555
-,  /* US/Eastern */ :int { 157 } //Z#556
-,  /* US/Hawaii */ :int { 516 } //Z#557
-,  /* US/Indiana-Starke */ :int { 123 } //Z#558
-,  /* US/Michigan */ :int { 102 } //Z#559
-,  /* US/Mountain */ :int { 101 } //Z#560
-,  /* US/Pacific */ :int { 139 } //Z#561
-,  /* US/Pacific-New */ :int { 139 } //Z#562
-,  /* US/Samoa */ :int { 528 } //Z#563
-,  /* UTC */ :int { 395 } //Z#564
-,  /* Universal */ :int { 395 } //Z#565
-,  /* VST */ :int { 276 } //Z#566
-,  /* W-SU */ :int { 425 } //Z#567
+  } //Z#547
+,  /* Pacific/Yap */ :int { 545 } //Z#548
+,  /* Poland */ :int { 453 } //Z#549
+,  /* Portugal */ :int { 421 } //Z#550
+,  /* ROC */ :int { 284 } //Z#551
+,  /* ROK */ :int { 281 } //Z#552
+,  /* SST */ :int { 520 } //Z#553
+,  /* Singapore */ :int { 283 } //Z#554
+,  /* Turkey */ :int { 417 } //Z#555
+,  /* UCT */ :int { 396 } //Z#556
+,  /* US/Alaska */ :int { 58 } //Z#557
+,  /* US/Aleutian */ :int { 57 } //Z#558
+,  /* US/Arizona */ :int { 168 } //Z#559
+,  /* US/Central */ :int { 93 } //Z#560
+,  /* US/East-Indiana */ :int { 124 } //Z#561
+,  /* US/Eastern */ :int { 159 } //Z#562
+,  /* US/Hawaii */ :int { 522 } //Z#563
+,  /* US/Indiana-Starke */ :int { 125 } //Z#564
+,  /* US/Michigan */ :int { 104 } //Z#565
+,  /* US/Mountain */ :int { 103 } //Z#566
+,  /* US/Pacific */ :int { 141 } //Z#567
+,  /* US/Pacific-New */ :int { 141 } //Z#568
+,  /* US/Samoa */ :int { 534 } //Z#569
+,  /* UTC */ :int { 397 } //Z#570
+,  /* Universal */ :int { 397 } //Z#571
+,  /* VST */ :int { 278 } //Z#572
+,  /* W-SU */ :int { 430 } //Z#573
 ,  /* WET */ :array {
     :intvector { 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400 }
     :intvector { 0, 0, 0, 3600 }
     :bin { "0100010001000100010001000100010001000100010001000100010001000100010001000100" }
     "EU"
     :intvector { 0, 1996 }
-  } //Z#568
-,  /* Zulu */ :int { 395 } //Z#569
+  } //Z#574
+,  /* Zulu */ :int { 397 } //Z#575
  }
  Names {
     "ACT","AET","AGT","ART","AST","Africa/Abidjan","Africa/Accra" // 6
@@ -2696,146 +2713,149 @@
     ,"America/Argentina/Mendoza","America/Argentina/Rio_Gallegos" // 69
     ,"America/Argentina/San_Juan","America/Argentina/Tucuman" // 71
     ,"America/Argentina/Ushuaia","America/Aruba","America/Asuncion" // 74
-    ,"America/Atka","America/Bahia","America/Barbados" // 77
-    ,"America/Belem","America/Belize","America/Boa_Vista" // 80
-    ,"America/Bogota","America/Boise","America/Buenos_Aires" // 83
-    ,"America/Cambridge_Bay","America/Campo_Grande","America/Cancun" // 86
-    ,"America/Caracas","America/Catamarca","America/Cayenne" // 89
-    ,"America/Cayman","America/Chicago","America/Chihuahua" // 92
-    ,"America/Coral_Harbour","America/Cordoba","America/Costa_Rica" // 95
-    ,"America/Cuiaba","America/Curacao","America/Danmarkshavn" // 98
-    ,"America/Dawson","America/Dawson_Creek","America/Denver" // 101
-    ,"America/Detroit","America/Dominica","America/Edmonton" // 104
-    ,"America/Eirunepe","America/El_Salvador","America/Ensenada" // 107
-    ,"America/Fort_Wayne","America/Fortaleza","America/Glace_Bay" // 110
-    ,"America/Godthab","America/Goose_Bay","America/Grand_Turk" // 113
-    ,"America/Grenada","America/Guadeloupe","America/Guatemala" // 116
-    ,"America/Guayaquil","America/Guyana","America/Halifax" // 119
-    ,"America/Havana","America/Hermosillo","America/Indiana/Indianapolis" // 122
-    ,"America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg" // 125
-    ,"America/Indiana/Vevay","America/Indiana/Vincennes" // 127
-    ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 130
-    ,"America/Jamaica","America/Jujuy","America/Juneau" // 133
-    ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 135
-    ,"America/Knox_IN","America/La_Paz","America/Lima" // 138
-    ,"America/Los_Angeles","America/Louisville","America/Maceio" // 141
-    ,"America/Managua","America/Manaus","America/Martinique" // 144
-    ,"America/Mazatlan","America/Mendoza","America/Menominee" // 147
-    ,"America/Merida","America/Mexico_City","America/Miquelon" // 150
-    ,"America/Moncton","America/Monterrey","America/Montevideo" // 153
-    ,"America/Montreal","America/Montserrat","America/Nassau" // 156
-    ,"America/New_York","America/Nipigon","America/Nome" // 159
-    ,"America/Noronha","America/North_Dakota/Center","America/North_Dakota/New_Salem" // 162
-    ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 165
-    ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 168
-    ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 171
-    ,"America/Rainy_River","America/Rankin_Inlet","America/Recife" // 174
-    ,"America/Regina","America/Rio_Branco","America/Rosario" // 177
-    ,"America/Santiago","America/Santo_Domingo","America/Sao_Paulo" // 180
-    ,"America/Scoresbysund","America/Shiprock","America/St_Johns" // 183
-    ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 186
-    ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 189
-    ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 192
-    ,"America/Toronto","America/Tortola","America/Vancouver" // 195
-    ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 198
-    ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 201
-    ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Mawson" // 204
-    ,"Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera" // 207
-    ,"Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Vostok" // 210
-    ,"Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman" // 214
-    ,"Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat" // 218
-    ,"Asia/Ashkhabad","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 222
-    ,"Asia/Bangkok","Asia/Beirut","Asia/Bishkek","Asia/Brunei" // 226
-    ,"Asia/Calcutta","Asia/Choibalsan","Asia/Chongqing" // 229
-    ,"Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus" // 233
-    ,"Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe" // 237
-    ,"Asia/Gaza","Asia/Harbin","Asia/Hong_Kong","Asia/Hovd" // 241
-    ,"Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura" // 245
-    ,"Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi" // 249
-    ,"Asia/Kashgar","Asia/Katmandu","Asia/Krasnoyarsk" // 252
-    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 256
-    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 260
-    ,"Asia/Muscat","Asia/Nicosia","Asia/Novosibirsk","Asia/Omsk" // 264
-    ,"Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang" // 268
-    ,"Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh" // 272
-    ,"Asia/Riyadh87","Asia/Riyadh88","Asia/Riyadh89","Asia/Saigon" // 276
-    ,"Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai" // 280
-    ,"Asia/Singapore","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi" // 284
-    ,"Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu" // 288
-    ,"Asia/Tokyo","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 291
-    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Vientiane","Asia/Vladivostok" // 295
-    ,"Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan" // 298
-    ,"Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary" // 301
-    ,"Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Jan_Mayen" // 304
-    ,"Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia" // 307
-    ,"Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT" // 310
-    ,"Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill" // 313
-    ,"Australia/Canberra","Australia/Currie","Australia/Darwin" // 316
-    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 319
-    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 322
-    ,"Australia/North","Australia/Perth","Australia/Queensland" // 325
-    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 328
-    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 331
-    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 336
-    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 343
-    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 346
-    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 349
-    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 352
-    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 356
-    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 363
-    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 367
-    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 372
-    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 377
-    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 381
-    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 385
-    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 390
-    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 395
-    ,"Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra" // 399
-    ,"Europe/Athens","Europe/Belfast","Europe/Belgrade" // 402
-    ,"Europe/Berlin","Europe/Bratislava","Europe/Brussels" // 405
-    ,"Europe/Bucharest","Europe/Budapest","Europe/Chisinau" // 408
-    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 411
-    ,"Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad" // 414
-    ,"Europe/Kiev","Europe/Lisbon","Europe/Ljubljana","Europe/London" // 418
-    ,"Europe/Luxembourg","Europe/Madrid","Europe/Malta" // 421
-    ,"Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 424
-    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 428
-    ,"Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara" // 432
-    ,"Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol" // 435
-    ,"Europe/Skopje","Europe/Sofia","Europe/Stockholm" // 438
-    ,"Europe/Tallinn","Europe/Tirane","Europe/Tiraspol" // 441
-    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 444
-    ,"Europe/Vienna","Europe/Vilnius","Europe/Warsaw","Europe/Zagreb" // 448
-    ,"Europe/Zaporozhye","Europe/Zurich","Factory","GB" // 452
-    ,"GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich" // 458
-    ,"HST","Hongkong","IET","IST","Iceland","Indian/Antananarivo" // 464
-    ,"Indian/Chagos","Indian/Christmas","Indian/Cocos" // 467
-    ,"Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 471
-    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 474
-    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 480
-    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 486
-    ,"Mexico/BajaSur","Mexico/General","Mideast/Riyadh87" // 489
-    ,"Mideast/Riyadh88","Mideast/Riyadh89","NET","NST" // 493
-    ,"NZ","NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST" // 501
-    ,"PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Chatham" // 505
-    ,"Pacific/Easter","Pacific/Efate","Pacific/Enderbury" // 508
-    ,"Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti" // 511
-    ,"Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal" // 514
-    ,"Pacific/Guam","Pacific/Honolulu","Pacific/Johnston" // 517
-    ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 520
-    ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 523
-    ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 527
-    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 530
-    ,"Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga" // 533
-    ,"Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti" // 536
-    ,"Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk" // 539
-    ,"Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland" // 543
-    ,"Portugal","ROC","ROK","SST","Singapore","Turkey" // 549
-    ,"UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central" // 554
-    ,"US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke" // 558
-    ,"US/Michigan","US/Mountain","US/Pacific","US/Pacific-New" // 562
-    ,"US/Samoa","UTC","Universal","VST","W-SU","WET","Zulu" // 569
-     // 569
+    ,"America/Atikokan","America/Atka","America/Bahia" // 77
+    ,"America/Barbados","America/Belem","America/Belize" // 80
+    ,"America/Blanc-Sablon","America/Boa_Vista","America/Bogota" // 83
+    ,"America/Boise","America/Buenos_Aires","America/Cambridge_Bay" // 86
+    ,"America/Campo_Grande","America/Cancun","America/Caracas" // 89
+    ,"America/Catamarca","America/Cayenne","America/Cayman" // 92
+    ,"America/Chicago","America/Chihuahua","America/Coral_Harbour" // 95
+    ,"America/Cordoba","America/Costa_Rica","America/Cuiaba" // 98
+    ,"America/Curacao","America/Danmarkshavn","America/Dawson" // 101
+    ,"America/Dawson_Creek","America/Denver","America/Detroit" // 104
+    ,"America/Dominica","America/Edmonton","America/Eirunepe" // 107
+    ,"America/El_Salvador","America/Ensenada","America/Fort_Wayne" // 110
+    ,"America/Fortaleza","America/Glace_Bay","America/Godthab" // 113
+    ,"America/Goose_Bay","America/Grand_Turk","America/Grenada" // 116
+    ,"America/Guadeloupe","America/Guatemala","America/Guayaquil" // 119
+    ,"America/Guyana","America/Halifax","America/Havana" // 122
+    ,"America/Hermosillo","America/Indiana/Indianapolis" // 124
+    ,"America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg" // 127
+    ,"America/Indiana/Vevay","America/Indiana/Vincennes" // 129
+    ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 132
+    ,"America/Jamaica","America/Jujuy","America/Juneau" // 135
+    ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 137
+    ,"America/Knox_IN","America/La_Paz","America/Lima" // 140
+    ,"America/Los_Angeles","America/Louisville","America/Maceio" // 143
+    ,"America/Managua","America/Manaus","America/Martinique" // 146
+    ,"America/Mazatlan","America/Mendoza","America/Menominee" // 149
+    ,"America/Merida","America/Mexico_City","America/Miquelon" // 152
+    ,"America/Moncton","America/Monterrey","America/Montevideo" // 155
+    ,"America/Montreal","America/Montserrat","America/Nassau" // 158
+    ,"America/New_York","America/Nipigon","America/Nome" // 161
+    ,"America/Noronha","America/North_Dakota/Center","America/North_Dakota/New_Salem" // 164
+    ,"America/Panama","America/Pangnirtung","America/Paramaribo" // 167
+    ,"America/Phoenix","America/Port-au-Prince","America/Port_of_Spain" // 170
+    ,"America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico" // 173
+    ,"America/Rainy_River","America/Rankin_Inlet","America/Recife" // 176
+    ,"America/Regina","America/Rio_Branco","America/Rosario" // 179
+    ,"America/Santiago","America/Santo_Domingo","America/Sao_Paulo" // 182
+    ,"America/Scoresbysund","America/Shiprock","America/St_Johns" // 185
+    ,"America/St_Kitts","America/St_Lucia","America/St_Thomas" // 188
+    ,"America/St_Vincent","America/Swift_Current","America/Tegucigalpa" // 191
+    ,"America/Thule","America/Thunder_Bay","America/Tijuana" // 194
+    ,"America/Toronto","America/Tortola","America/Vancouver" // 197
+    ,"America/Virgin","America/Whitehorse","America/Winnipeg" // 200
+    ,"America/Yakutat","America/Yellowknife","Antarctica/Casey" // 203
+    ,"Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Mawson" // 206
+    ,"Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera" // 209
+    ,"Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Vostok" // 212
+    ,"Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman" // 216
+    ,"Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat" // 220
+    ,"Asia/Ashkhabad","Asia/Baghdad","Asia/Bahrain","Asia/Baku" // 224
+    ,"Asia/Bangkok","Asia/Beirut","Asia/Bishkek","Asia/Brunei" // 228
+    ,"Asia/Calcutta","Asia/Choibalsan","Asia/Chongqing" // 231
+    ,"Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus" // 235
+    ,"Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe" // 239
+    ,"Asia/Gaza","Asia/Harbin","Asia/Hong_Kong","Asia/Hovd" // 243
+    ,"Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura" // 247
+    ,"Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi" // 251
+    ,"Asia/Kashgar","Asia/Katmandu","Asia/Krasnoyarsk" // 254
+    ,"Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao" // 258
+    ,"Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila" // 262
+    ,"Asia/Muscat","Asia/Nicosia","Asia/Novosibirsk","Asia/Omsk" // 266
+    ,"Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang" // 270
+    ,"Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh" // 274
+    ,"Asia/Riyadh87","Asia/Riyadh88","Asia/Riyadh89","Asia/Saigon" // 278
+    ,"Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai" // 282
+    ,"Asia/Singapore","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi" // 286
+    ,"Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu" // 290
+    ,"Asia/Tokyo","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 293
+    ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Vientiane","Asia/Vladivostok" // 297
+    ,"Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan" // 300
+    ,"Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary" // 303
+    ,"Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Jan_Mayen" // 306
+    ,"Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia" // 309
+    ,"Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT" // 312
+    ,"Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill" // 315
+    ,"Australia/Canberra","Australia/Currie","Australia/Darwin" // 318
+    ,"Australia/Hobart","Australia/LHI","Australia/Lindeman" // 321
+    ,"Australia/Lord_Howe","Australia/Melbourne","Australia/NSW" // 324
+    ,"Australia/North","Australia/Perth","Australia/Queensland" // 327
+    ,"Australia/South","Australia/Sydney","Australia/Tasmania" // 330
+    ,"Australia/Victoria","Australia/West","Australia/Yancowinna" // 333
+    ,"BET","BST","Brazil/Acre","Brazil/DeNoronha","Brazil/East" // 338
+    ,"Brazil/West","CAT","CET","CNT","CST","CST6CDT","CTT" // 345
+    ,"Canada/Atlantic","Canada/Central","Canada/East-Saskatchewan" // 348
+    ,"Canada/Eastern","Canada/Mountain","Canada/Newfoundland" // 351
+    ,"Canada/Pacific","Canada/Saskatchewan","Canada/Yukon" // 354
+    ,"Chile/Continental","Chile/EasterIsland","Cuba","EAT" // 358
+    ,"ECT","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT" // 365
+    ,"Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 369
+    ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 374
+    ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 379
+    ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 383
+    ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 387
+    ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 392
+    ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 397
+    ,"Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra" // 401
+    ,"Europe/Athens","Europe/Belfast","Europe/Belgrade" // 404
+    ,"Europe/Berlin","Europe/Bratislava","Europe/Brussels" // 407
+    ,"Europe/Bucharest","Europe/Budapest","Europe/Chisinau" // 410
+    ,"Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar" // 413
+    ,"Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man" // 416
+    ,"Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad" // 419
+    ,"Europe/Kiev","Europe/Lisbon","Europe/Ljubljana","Europe/London" // 423
+    ,"Europe/Luxembourg","Europe/Madrid","Europe/Malta" // 426
+    ,"Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 429
+    ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 433
+    ,"Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara" // 437
+    ,"Europe/San_Marino","Europe/Sarajevo","Europe/Simferopol" // 440
+    ,"Europe/Skopje","Europe/Sofia","Europe/Stockholm" // 443
+    ,"Europe/Tallinn","Europe/Tirane","Europe/Tiraspol" // 446
+    ,"Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican" // 449
+    ,"Europe/Vienna","Europe/Vilnius","Europe/Volgograd" // 452
+    ,"Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye" // 455
+    ,"Europe/Zurich","Factory","GB","GB-Eire","GMT","GMT+0" // 461
+    ,"GMT-0","GMT0","Greenwich","HST","Hongkong","IET" // 467
+    ,"IST","Iceland","Indian/Antananarivo","Indian/Chagos" // 471
+    ,"Indian/Christmas","Indian/Cocos","Indian/Comoro" // 474
+    ,"Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 477
+    ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 480
+    ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 486
+    ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 492
+    ,"Mexico/BajaSur","Mexico/General","Mideast/Riyadh87" // 495
+    ,"Mideast/Riyadh88","Mideast/Riyadh89","NET","NST" // 499
+    ,"NZ","NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST" // 507
+    ,"PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Chatham" // 511
+    ,"Pacific/Easter","Pacific/Efate","Pacific/Enderbury" // 514
+    ,"Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti" // 517
+    ,"Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal" // 520
+    ,"Pacific/Guam","Pacific/Honolulu","Pacific/Johnston" // 523
+    ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 526
+    ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 529
+    ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 533
+    ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 536
+    ,"Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga" // 539
+    ,"Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti" // 542
+    ,"Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk" // 545
+    ,"Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland" // 549
+    ,"Portugal","ROC","ROK","SST","Singapore","Turkey" // 555
+    ,"UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central" // 560
+    ,"US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke" // 564
+    ,"US/Michigan","US/Mountain","US/Pacific","US/Pacific-New" // 568
+    ,"US/Samoa","UTC","Universal","VST","W-SU","WET","Zulu" // 575
+     // 575
  }
  Rules { 
   AN:intvector {
@@ -2907,291 +2927,291 @@
   Mexico:intvector {
     3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
   } //_#22
-  Moncton:intvector {
-    2, 8, -1, 60, 0, 10, 1, -1, 60, 0, 3600
-  } //_#23
   Mongol:intvector {
     2, -31, -7, 7200, 0, 8, -30, -7, 7200, 0, 3600
-  } //_#24
+  } //_#23
   NZ:intvector {
     9, 1, -1, 7200, 1, 2, 15, -1, 7200, 1, 3600
-  } //_#25
+  } //_#24
   NZAQ:intvector {
     9, 1, -1, 7200, 1, 2, 15, -1, 7200, 1, 3600
-  } //_#26
+  } //_#25
   Namibia:intvector {
     8, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 3600
-  } //_#27
+  } //_#26
   Palestine:intvector {
     3, 15, -6, 0, 0, 9, 4, 0, 7200, 0, 3600
-  } //_#28
+  } //_#27
   Para:intvector {
     9, 15, -1, 0, 0, 2, 8, -1, 0, 0, 3600
-  } //_#29
+  } //_#28
   Russia:intvector {
     2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
-  } //_#30
+  } //_#29
   RussiaAsia:intvector {
     2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
-  } //_#31
+  } //_#30
   StJohns:intvector {
     2, 8, -1, 60, 0, 10, 1, -1, 60, 0, 3600
-  } //_#32
+  } //_#31
   Syria:intvector {
     3, 1, 0, 0, 0, 9, 1, 0, 0, 0, 3600
-  } //_#33
+  } //_#32
   TC:intvector {
     3, 1, -1, 0, 0, 9, -31, -1, 0, 0, 3600
-  } //_#34
+  } //_#33
   Thule:intvector {
     2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
-  } //_#35
+  } //_#34
   Tunisia:intvector {
     2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
-  } //_#36
+  } //_#35
   US:intvector {
     2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
-  } //_#37
+  } //_#36
  }
  Regions { 
-  Default:intvector { 273, 274, 275, 339, 342, 358, 359, 360, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 451, 454, 455, 456, 457, 458, 482, 484, 485, 489, 490, 491, 502, 550, 564, 565, 568, 569 } //R#0
-  AD:intvector { 399 } //R#1
-  AE:intvector { 236 } //R#2
-  AF:intvector { 247 } //R#3
+  Default:intvector { 275, 276, 277, 341, 344, 360, 361, 362, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 457, 460, 461, 462, 463, 464, 488, 490, 491, 495, 496, 497, 508, 556, 570, 571, 574, 575 } //R#0
+  AD:intvector { 401 } //R#1
+  AE:intvector { 238 } //R#2
+  AF:intvector { 249 } //R#3
   AG:intvector { 60 } //R#4
   AI:intvector { 59 } //R#5
-  AL:intvector { 440 } //R#6
-  AM:intvector { 298, 492 } //R#7
-  AN:intvector { 97 } //R#8
+  AL:intvector { 445 } //R#6
+  AM:intvector { 300, 498 } //R#7
+  AN:intvector { 99 } //R#8
   AO:intvector { 37 } //R#9
-  AQ:intvector { 201, 202, 203, 204, 205, 206, 207, 208, 209, 210 } //R#10
-  AR:intvector { 2, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 83, 88, 94, 132, 146, 177 } //R#11
-  AS:intvector { 528, 535, 563 } //R#12
-  AT:intvector { 445 } //R#13
-  AU:intvector { 0, 1, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331 } //R#14
+  AQ:intvector { 203, 204, 205, 206, 207, 208, 209, 210, 211, 212 } //R#10
+  AR:intvector { 2, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 85, 90, 96, 134, 148, 179 } //R#11
+  AS:intvector { 534, 541, 569 } //R#12
+  AT:intvector { 450 } //R#13
+  AU:intvector { 0, 1, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333 } //R#14
   AW:intvector { 73 } //R#15
-  AX:intvector { 422 } //R#16
-  AZ:intvector { 222 } //R#17
-  BA:intvector { 434 } //R#18
-  BB:intvector { 77 } //R#19
-  BD:intvector { 232, 234, 333 } //R#20
-  BE:intvector { 405 } //R#21
+  AX:intvector { 427 } //R#16
+  AZ:intvector { 224 } //R#17
+  BA:intvector { 439 } //R#18
+  BB:intvector { 78 } //R#19
+  BD:intvector { 234, 236, 335 } //R#20
+  BE:intvector { 407 } //R#21
   BF:intvector { 50 } //R#22
-  BG:intvector { 437 } //R#23
-  BH:intvector { 221 } //R#24
+  BG:intvector { 442 } //R#23
+  BH:intvector { 223 } //R#24
   BI:intvector { 16 } //R#25
   BJ:intvector { 51 } //R#26
-  BM:intvector { 300 } //R#27
-  BN:intvector { 226 } //R#28
-  BO:intvector { 137 } //R#29
-  BR:intvector { 61, 76, 78, 80, 85, 96, 105, 109, 141, 143, 160, 169, 170, 174, 176, 180, 332, 334, 335, 336, 337 } //R#30
-  BS:intvector { 156 } //R#31
-  BT:intvector { 287, 288 } //R#32
+  BM:intvector { 302 } //R#27
+  BN:intvector { 228 } //R#28
+  BO:intvector { 139 } //R#29
+  BR:intvector { 61, 77, 79, 82, 87, 98, 107, 111, 143, 145, 162, 171, 172, 176, 178, 182, 334, 336, 337, 338, 339 } //R#30
+  BS:intvector { 158 } //R#31
+  BT:intvector { 289, 290 } //R#32
   BW:intvector { 27 } //R#33
-  BY:intvector { 423 } //R#34
-  BZ:intvector { 79 } //R#35
-  CA:intvector { 84, 93, 99, 100, 104, 110, 112, 119, 129, 130, 151, 154, 158, 164, 172, 173, 175, 183, 188, 191, 193, 195, 197, 198, 200, 340, 344, 345, 346, 347, 348, 349, 350, 351, 352 } //R#36
-  CC:intvector { 467 } //R#37
+  BY:intvector { 428 } //R#34
+  BZ:intvector { 80 } //R#35
+  CA:intvector { 75, 81, 86, 95, 101, 102, 106, 112, 114, 121, 131, 132, 153, 156, 160, 166, 174, 175, 177, 185, 190, 193, 195, 197, 199, 200, 202, 342, 346, 347, 348, 349, 350, 351, 352, 353, 354 } //R#36
+  CC:intvector { 473 } //R#37
   CD:intvector { 33, 38 } //R#38
   CF:intvector { 11 } //R#39
   CG:intvector { 15 } //R#40
-  CH:intvector { 450 } //R#41
+  CH:intvector { 456 } //R#41
   CI:intvector { 5 } //R#42
-  CK:intvector { 533 } //R#43
-  CL:intvector { 178, 353, 354, 506 } //R#44
+  CK:intvector { 539 } //R#43
+  CL:intvector { 180, 355, 356, 512 } //R#44
   CM:intvector { 24 } //R#45
-  CN:intvector { 229, 230, 239, 250, 280, 293, 343, 499 } //R#46
-  CO:intvector { 81 } //R#47
-  CR:intvector { 95 } //R#48
-  CS:intvector { 402 } //R#49
-  CU:intvector { 120, 355 } //R#50
-  CV:intvector { 302 } //R#51
-  CX:intvector { 466 } //R#52
-  CY:intvector { 262, 426 } //R#53
-  CZ:intvector { 429 } //R#54
-  DE:intvector { 403 } //R#55
+  CN:intvector { 231, 232, 241, 252, 282, 295, 345, 505 } //R#46
+  CO:intvector { 83 } //R#47
+  CR:intvector { 97 } //R#48
+  CS:intvector { 404 } //R#49
+  CU:intvector { 122, 357 } //R#50
+  CV:intvector { 304 } //R#51
+  CX:intvector { 472 } //R#52
+  CY:intvector { 264, 431 } //R#53
+  CZ:intvector { 434 } //R#54
+  DE:intvector { 405 } //R#55
   DJ:intvector { 23 } //R#56
-  DK:intvector { 409 } //R#57
-  DM:intvector { 103 } //R#58
-  DO:intvector { 179 } //R#59
+  DK:intvector { 411 } //R#57
+  DM:intvector { 105 } //R#58
+  DO:intvector { 181 } //R#59
   DZ:intvector { 8 } //R#60
-  EC:intvector { 117, 512 } //R#61
-  EE:intvector { 439 } //R#62
-  EG:intvector { 3, 17, 361 } //R#63
+  EC:intvector { 119, 518 } //R#61
+  EE:intvector { 444 } //R#62
+  EG:intvector { 3, 17, 363 } //R#63
   EH:intvector { 25 } //R#64
   ER:intvector { 9 } //R#65
-  ES:intvector { 19, 301, 420 } //R#66
-  ET:intvector { 7, 356 } //R#67
-  FI:intvector { 412 } //R#68
-  FJ:intvector { 510 } //R#69
-  FK:intvector { 309 } //R#70
-  FM:intvector { 519, 531, 539, 542 } //R#71
-  FO:intvector { 303 } //R#72
-  FR:intvector { 357, 428 } //R#73
+  ES:intvector { 19, 303, 425 } //R#66
+  ET:intvector { 7, 358 } //R#67
+  FI:intvector { 415 } //R#68
+  FJ:intvector { 516 } //R#69
+  FK:intvector { 311 } //R#70
+  FM:intvector { 525, 537, 545, 548 } //R#71
+  FO:intvector { 305 } //R#72
+  FR:intvector { 359, 433 } //R#73
   GA:intvector { 35 } //R#74
-  GB:intvector { 401, 418, 452, 453 } //R#75
-  GD:intvector { 114 } //R#76
-  GE:intvector { 284 } //R#77
-  GF:intvector { 89 } //R#78
-  GH:intvector { 6 } //R#79
-  GI:intvector { 411 } //R#80
-  GL:intvector { 98, 111, 181, 190 } //R#81
-  GM:intvector { 12 } //R#82
-  GN:intvector { 20 } //R#83
-  GP:intvector { 115 } //R#84
-  GQ:intvector { 40 } //R#85
-  GR:intvector { 400 } //R#86
-  GS:intvector { 307 } //R#87
-  GT:intvector { 116 } //R#88
-  GU:intvector { 515 } //R#89
-  GW:intvector { 13 } //R#90
-  GY:intvector { 118 } //R#91
-  HK:intvector { 240, 460 } //R#92
-  HN:intvector { 189 } //R#93
-  HR:intvector { 448 } //R#94
-  HT:intvector { 167 } //R#95
-  HU:intvector { 407 } //R#96
-  ID:intvector { 244, 245, 259, 267, 290 } //R#97
-  IE:intvector { 362, 410 } //R#98
-  IL:intvector { 246, 286, 476 } //R#99
-  IN:intvector { 227, 462 } //R#100
-  IO:intvector { 465 } //R#101
-  IQ:intvector { 220 } //R#102
-  IR:intvector { 285, 475 } //R#103
-  IS:intvector { 306, 463 } //R#104
-  IT:intvector { 431 } //R#105
-  JM:intvector { 131, 478 } //R#106
-  JO:intvector { 214 } //R#107
-  JP:intvector { 289, 477, 479 } //R#108
-  KE:intvector { 46 } //R#109
-  KG:intvector { 225 } //R#110
-  KH:intvector { 266 } //R#111
-  KI:intvector { 508, 518, 537 } //R#112
-  KM:intvector { 468 } //R#113
-  KN:intvector { 184 } //R#114
-  KP:intvector { 268 } //R#115
-  KR:intvector { 279, 546 } //R#116
-  KW:intvector { 255 } //R#117
-  KY:intvector { 90 } //R#118
-  KZ:intvector { 213, 216, 217, 265, 270 } //R#119
-  LA:intvector { 294 } //R#120
-  LB:intvector { 224 } //R#121
-  LC:intvector { 185 } //R#122
-  LI:intvector { 443 } //R#123
-  LK:intvector { 231 } //R#124
-  LR:intvector { 45 } //R#125
-  LS:intvector { 42 } //R#126
-  LT:intvector { 446 } //R#127
-  LU:intvector { 419 } //R#128
-  LV:intvector { 430 } //R#129
-  LY:intvector { 54, 481 } //R#130
-  MA:intvector { 18 } //R#131
-  MC:intvector { 424 } //R#132
-  MD:intvector { 408, 441 } //R#133
-  MG:intvector { 464 } //R#134
-  MH:intvector { 480, 520, 521 } //R#135
-  MK:intvector { 436 } //R#136
-  ML:intvector { 10, 53 } //R#137
-  MM:intvector { 271 } //R#138
-  MN:intvector { 228, 241, 291, 292 } //R#139
-  MO:intvector { 256, 257 } //R#140
-  MP:intvector { 534 } //R#141
-  MQ:intvector { 144 } //R#142
-  MR:intvector { 49 } //R#143
-  MS:intvector { 155 } //R#144
-  MT:intvector { 421 } //R#145
-  MU:intvector { 472 } //R#146
-  MV:intvector { 471 } //R#147
-  MW:intvector { 14 } //R#148
-  MX:intvector { 86, 92, 107, 121, 145, 148, 149, 152, 192, 486, 487, 488 } //R#149
-  MY:intvector { 253, 254 } //R#150
-  MZ:intvector { 41 } //R#151
-  NA:intvector { 56 } //R#152
-  NC:intvector { 527 } //R#153
-  NE:intvector { 48 } //R#154
-  NF:intvector { 526 } //R#155
-  NG:intvector { 34 } //R#156
-  NI:intvector { 142 } //R#157
-  NL:intvector { 398 } //R#158
-  NO:intvector { 427 } //R#159
-  NP:intvector { 251 } //R#160
-  NR:intvector { 524 } //R#161
-  NU:intvector { 525 } //R#162
-  NZ:intvector { 493, 494, 495, 504, 505 } //R#163
-  OM:intvector { 261 } //R#164
-  PA:intvector { 163 } //R#165
-  PE:intvector { 138 } //R#166
-  PF:intvector { 513, 522, 536 } //R#167
-  PG:intvector { 532 } //R#168
-  PH:intvector { 260 } //R#169
-  PK:intvector { 249, 497 } //R#170
-  PL:intvector { 447, 543 } //R#171
-  PM:intvector { 150 } //R#172
-  PN:intvector { 530 } //R#173
-  PR:intvector { 171, 500 } //R#174
-  PS:intvector { 238 } //R#175
-  PT:intvector { 299, 305, 416, 544 } //R#176
-  PW:intvector { 529 } //R#177
-  PY:intvector { 74 } //R#178
-  QA:intvector { 269 } //R#179
-  RE:intvector { 474 } //R#180
-  RO:intvector { 406 } //R#181
-  RU:intvector { 215, 242, 248, 252, 258, 263, 264, 277, 295, 296, 297, 414, 425, 432, 567 } //R#182
-  RW:intvector { 32 } //R#183
-  SA:intvector { 272 } //R#184
-  SB:intvector { 514, 547 } //R#185
-  SC:intvector { 470 } //R#186
-  SD:intvector { 31 } //R#187
-  SE:intvector { 438 } //R#188
-  SG:intvector { 281, 548 } //R#189
-  SH:intvector { 308 } //R#190
-  SI:intvector { 417 } //R#191
-  SJ:intvector { 211, 304 } //R#192
-  SK:intvector { 404 } //R#193
-  SL:intvector { 26 } //R#194
-  SM:intvector { 433 } //R#195
-  SN:intvector { 21 } //R#196
-  SO:intvector { 44 } //R#197
-  SR:intvector { 165 } //R#198
-  ST:intvector { 52 } //R#199
-  SV:intvector { 106 } //R#200
-  SY:intvector { 233 } //R#201
-  SZ:intvector { 43 } //R#202
-  TC:intvector { 113 } //R#203
-  TD:intvector { 47 } //R#204
-  TF:intvector { 469 } //R#205
-  TG:intvector { 36 } //R#206
-  TH:intvector { 223 } //R#207
-  TJ:intvector { 237 } //R#208
-  TK:intvector { 509 } //R#209
-  TL:intvector { 235 } //R#210
-  TM:intvector { 218, 219 } //R#211
-  TN:intvector { 55 } //R#212
-  TO:intvector { 538 } //R#213
-  TR:intvector { 243, 413, 549 } //R#214
-  TT:intvector { 168 } //R#215
-  TV:intvector { 511 } //R#216
-  TW:intvector { 282, 545 } //R#217
-  TZ:intvector { 22 } //R#218
-  UA:intvector { 415, 435, 442, 449 } //R#219
-  UG:intvector { 30 } //R#220
-  UM:intvector { 517, 523, 540 } //R#221
-  US:intvector { 4, 57, 58, 75, 82, 91, 101, 102, 108, 122, 123, 124, 125, 126, 127, 128, 133, 134, 135, 136, 139, 140, 147, 157, 159, 161, 162, 166, 182, 199, 341, 459, 461, 496, 498, 501, 516, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562 } //R#222
-  UY:intvector { 153 } //R#223
-  UZ:intvector { 278, 283 } //R#224
-  VA:intvector { 444 } //R#225
-  VC:intvector { 187 } //R#226
-  VE:intvector { 87 } //R#227
-  VG:intvector { 194 } //R#228
-  VI:intvector { 186, 196 } //R#229
-  VN:intvector { 276, 566 } //R#230
-  VU:intvector { 507 } //R#231
-  WF:intvector { 541 } //R#232
-  WS:intvector { 483, 503 } //R#233
-  YE:intvector { 212 } //R#234
-  YT:intvector { 473 } //R#235
-  ZA:intvector { 29 } //R#236
-  ZM:intvector { 39 } //R#237
-  ZW:intvector { 28, 338 } //R#238
+  GB:intvector { 403, 423, 458, 459 } //R#75
+  GD:intvector { 116 } //R#76
+  GE:intvector { 286 } //R#77
+  GF:intvector { 91 } //R#78
+  GG:intvector { 414 } //R#79
+  GH:intvector { 6 } //R#80
+  GI:intvector { 413 } //R#81
+  GL:intvector { 100, 113, 183, 192 } //R#82
+  GM:intvector { 12 } //R#83
+  GN:intvector { 20 } //R#84
+  GP:intvector { 117 } //R#85
+  GQ:intvector { 40 } //R#86
+  GR:intvector { 402 } //R#87
+  GS:intvector { 309 } //R#88
+  GT:intvector { 118 } //R#89
+  GU:intvector { 521 } //R#90
+  GW:intvector { 13 } //R#91
+  GY:intvector { 120 } //R#92
+  HK:intvector { 242, 466 } //R#93
+  HN:intvector { 191 } //R#94
+  HR:intvector { 454 } //R#95
+  HT:intvector { 169 } //R#96
+  HU:intvector { 409 } //R#97
+  ID:intvector { 246, 247, 261, 269, 292 } //R#98
+  IE:intvector { 364, 412 } //R#99
+  IL:intvector { 248, 288, 482 } //R#100
+  IM:intvector { 416 } //R#101
+  IN:intvector { 229, 468 } //R#102
+  IO:intvector { 471 } //R#103
+  IQ:intvector { 222 } //R#104
+  IR:intvector { 287, 481 } //R#105
+  IS:intvector { 308, 469 } //R#106
+  IT:intvector { 436 } //R#107
+  JE:intvector { 418 } //R#108
+  JM:intvector { 133, 484 } //R#109
+  JO:intvector { 216 } //R#110
+  JP:intvector { 291, 483, 485 } //R#111
+  KE:intvector { 46 } //R#112
+  KG:intvector { 227 } //R#113
+  KH:intvector { 268 } //R#114
+  KI:intvector { 514, 524, 543 } //R#115
+  KM:intvector { 474 } //R#116
+  KN:intvector { 186 } //R#117
+  KP:intvector { 270 } //R#118
+  KR:intvector { 281, 552 } //R#119
+  KW:intvector { 257 } //R#120
+  KY:intvector { 92 } //R#121
+  KZ:intvector { 215, 218, 219, 267, 272 } //R#122
+  LA:intvector { 296 } //R#123
+  LB:intvector { 226 } //R#124
+  LC:intvector { 187 } //R#125
+  LI:intvector { 448 } //R#126
+  LK:intvector { 233 } //R#127
+  LR:intvector { 45 } //R#128
+  LS:intvector { 42 } //R#129
+  LT:intvector { 451 } //R#130
+  LU:intvector { 424 } //R#131
+  LV:intvector { 435 } //R#132
+  LY:intvector { 54, 487 } //R#133
+  MA:intvector { 18 } //R#134
+  MC:intvector { 429 } //R#135
+  MD:intvector { 410, 446 } //R#136
+  MG:intvector { 470 } //R#137
+  MH:intvector { 486, 526, 527 } //R#138
+  MK:intvector { 441 } //R#139
+  ML:intvector { 10, 53 } //R#140
+  MM:intvector { 273 } //R#141
+  MN:intvector { 230, 243, 293, 294 } //R#142
+  MO:intvector { 258, 259 } //R#143
+  MP:intvector { 540 } //R#144
+  MQ:intvector { 146 } //R#145
+  MR:intvector { 49 } //R#146
+  MS:intvector { 157 } //R#147
+  MT:intvector { 426 } //R#148
+  MU:intvector { 478 } //R#149
+  MV:intvector { 477 } //R#150
+  MW:intvector { 14 } //R#151
+  MX:intvector { 88, 94, 109, 123, 147, 150, 151, 154, 194, 492, 493, 494 } //R#152
+  MY:intvector { 255, 256 } //R#153
+  MZ:intvector { 41 } //R#154
+  NA:intvector { 56 } //R#155
+  NC:intvector { 533 } //R#156
+  NE:intvector { 48 } //R#157
+  NF:intvector { 532 } //R#158
+  NG:intvector { 34 } //R#159
+  NI:intvector { 144 } //R#160
+  NL:intvector { 400 } //R#161
+  NO:intvector { 432 } //R#162
+  NP:intvector { 253 } //R#163
+  NR:intvector { 530 } //R#164
+  NU:intvector { 531 } //R#165
+  NZ:intvector { 499, 500, 501, 510, 511 } //R#166
+  OM:intvector { 263 } //R#167
+  PA:intvector { 165 } //R#168
+  PE:intvector { 140 } //R#169
+  PF:intvector { 519, 528, 542 } //R#170
+  PG:intvector { 538 } //R#171
+  PH:intvector { 262 } //R#172
+  PK:intvector { 251, 503 } //R#173
+  PL:intvector { 453, 549 } //R#174
+  PM:intvector { 152 } //R#175
+  PN:intvector { 536 } //R#176
+  PR:intvector { 173, 506 } //R#177
+  PS:intvector { 240 } //R#178
+  PT:intvector { 301, 307, 421, 550 } //R#179
+  PW:intvector { 535 } //R#180
+  PY:intvector { 74 } //R#181
+  QA:intvector { 271 } //R#182
+  RE:intvector { 480 } //R#183
+  RO:intvector { 408 } //R#184
+  RU:intvector { 217, 244, 250, 254, 260, 265, 266, 279, 297, 298, 299, 419, 430, 437, 452, 573 } //R#185
+  RW:intvector { 32 } //R#186
+  SA:intvector { 274 } //R#187
+  SB:intvector { 520, 553 } //R#188
+  SC:intvector { 476 } //R#189
+  SD:intvector { 31 } //R#190
+  SE:intvector { 443 } //R#191
+  SG:intvector { 283, 554 } //R#192
+  SH:intvector { 310 } //R#193
+  SI:intvector { 422 } //R#194
+  SJ:intvector { 213, 306 } //R#195
+  SK:intvector { 406 } //R#196
+  SL:intvector { 26 } //R#197
+  SM:intvector { 438 } //R#198
+  SN:intvector { 21 } //R#199
+  SO:intvector { 44 } //R#200
+  SR:intvector { 167 } //R#201
+  ST:intvector { 52 } //R#202
+  SV:intvector { 108 } //R#203
+  SY:intvector { 235 } //R#204
+  SZ:intvector { 43 } //R#205
+  TC:intvector { 115 } //R#206
+  TD:intvector { 47 } //R#207
+  TF:intvector { 475 } //R#208
+  TG:intvector { 36 } //R#209
+  TH:intvector { 225 } //R#210
+  TJ:intvector { 239 } //R#211
+  TK:intvector { 515 } //R#212
+  TL:intvector { 237 } //R#213
+  TM:intvector { 220, 221 } //R#214
+  TN:intvector { 55 } //R#215
+  TO:intvector { 544 } //R#216
+  TR:intvector { 245, 417, 555 } //R#217
+  TT:intvector { 170 } //R#218
+  TV:intvector { 517 } //R#219
+  TW:intvector { 284, 551 } //R#220
+  TZ:intvector { 22 } //R#221
+  UA:intvector { 420, 440, 447, 455 } //R#222
+  UG:intvector { 30 } //R#223
+  UM:intvector { 523, 529, 546 } //R#224
+  US:intvector { 4, 57, 58, 76, 84, 93, 103, 104, 110, 124, 125, 126, 127, 128, 129, 130, 135, 136, 137, 138, 141, 142, 149, 159, 161, 163, 164, 168, 184, 201, 343, 465, 467, 502, 504, 507, 522, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568 } //R#225
+  UY:intvector { 155 } //R#226
+  UZ:intvector { 280, 285 } //R#227
+  VA:intvector { 449 } //R#228
+  VC:intvector { 189 } //R#229
+  VE:intvector { 89 } //R#230
+  VG:intvector { 196 } //R#231
+  VI:intvector { 188, 198 } //R#232
+  VN:intvector { 278, 572 } //R#233
+  VU:intvector { 513 } //R#234
+  WF:intvector { 547 } //R#235
+  WS:intvector { 489, 509 } //R#236
+  YE:intvector { 214 } //R#237
+  YT:intvector { 479 } //R#238
+  ZA:intvector { 29 } //R#239
+  ZM:intvector { 39 } //R#240
+  ZW:intvector { 28, 340 } //R#241
  }
 }

Modified: trunk/source/data/rbnf/ja.txt
===================================================================
--- trunk/source/data/rbnf/ja.txt	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/data/rbnf/ja.txt	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 // ***************************************************************************
 // *
-// *   Copyright (C) 2004, International Business Machines
+// *   Copyright (C) 2004-2006, International Business Machines
 // *   Corporation and others.  All Rights Reserved.
 // *
 // ***************************************************************************
@@ -8,47 +8,55 @@
 
 ja {
 
-    //------------------------------------------------------------
-    // Rule Based Number Format Support
-    //------------------------------------------------------------
+    // Spellout rules for Japanese.
+    //
+    // In Japanese, there really isn't any distinction between a number written 
+    // out in digits and a number written out in words. The kanji are both
+    // digits and words. This rule set provides two variants:  
+    //
+    //  %traditional
+    //      Traditional CJK numerals for everyday usage.
+    //
+    //  %financial
+    //      Alternate numerals that are harder to alter than the traditional 
+    //      numerals to prevent fraud (e.g. changing a traditional one to a
+    //      three by adding two strokes). Additionally, items that are usually 
+    //      dropped or shortened in the traditional form are supplied in full 
+    //      (e.g. 128 is 1 x 100, 2 x 10, 8 instead of just 100, 2 x 10, 8).
+    //
+    // Note that the Japanese spell out rules, although similar, are different 
+    // to those for Chinese. For instance, Japanese omits powers of ten which
+    // are zero, however in Chinese they are included.
 
-//         * Spellout rules for Japanese.  In Japanese, there really isn't any
-//         * distinction between a number written out in digits and a number
-//         * written out in words: the ideographic characters are both digits
-//         * and words.  This rule set provides two variants:  %traditional
-//         * uses the traditional CJK numerals (which are also used in China
-//         * and Korea).  %financial uses alternate ideographs for many numbers
-//         * that are harder to alter than the traditional numerals (one could
-//         * fairly easily change a one to
-//         * a three just by adding two strokes, for example).  This is also done in
-//         * the other countries using Chinese idographs, but different ideographs
-//         * are used in those places.
-
-        // Can someone supply me with the right fraud-proof ideographs for
-        // Simplified and Traditional Chinese, and for Korean?  Can someone
-        // supply me with information on negatives and decimals?
-
     SpelloutRules {
         "%financial:\n"
+            "-x: \u30de\u30a4\u30ca\u30b9>>;\n"
+            "x.x: <<\u70b9>>;\n"
             "\u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
-            "\u62fe[>>];\n"
+            "\u62fe; \u62fe[>>];\n"
             "20: <<\u62fe[>>];\n"
             "100: <<\u767e[>>];\n"
             "1000: <<\u5343[>>];\n"
-            "10,000: <<\u4e07[>>];\n"
+            "10,000: <<\u842c[>>];\n"
             "100,000,000: <<\u5104[>>];\n"
             "1,000,000,000,000: <<\u5146[>>];\n"
-            "10,000,000,000,000,000: =#,##0=;\n"
+            "10,000,000,000,000,000: <<\u4eac[>>];\n"
+            "100,000,000,000,000,000,000: =#,##0=;"
         "%traditional:\n"
-            "\u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
-            "\u5341[>>];\n"
+            "-x: \u30de\u30a4\u30ca\u30b9>>;\n"
+            "x.x: <<\u30fb>>;\n"
+            "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+            "\u5341; \u5341[>>];\n"
             "20: <<\u5341[>>];\n"
-            "100: <<\u767e[>>];\n"
-            "1000: <<\u5343[>>];\n"
+            "100: \u767e[>>];\n"
+            "200: <<\u767e[>>];\n"
+            "1000: \u5343[>>];\n"
+            "2000: <<\u5343[>>];\n"
             "10,000: <<\u4e07[>>];\n"
             "100,000,000: <<\u5104[>>];\n"
             "1,000,000,000,000: <<\u5146[>>];\n"
-            "10,000,000,000,000,000: =#,##0=;" 
+            "10,000,000,000,000,000: <<\u4eac[>>];\n"
+            "100,000,000,000,000,000,000: =#,##0=;"
     }
 
 }

Modified: trunk/source/data/unidata/changes.txt
===================================================================
--- trunk/source/data/unidata/changes.txt	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/data/unidata/changes.txt	2006-09-04 10:26:36 UTC (rev 106)
@@ -94,6 +94,20 @@
 - uchar.h
 - configure.in
 
+*** LayoutEngine script information
+* Run ICU4J com.ibm.icu.dev.tool.layout.ScriptNameBuilder. This generates LEScripts.h, LELanguage.h,
+ScriptAndLanguageTags.h and ScriptAndLanguageTags.cpp in the working directory. (it also generates
+ScriptRunData.cpp, which is no longer needed.)
+
+The generated files have a current copyright date and "@draft" statement.
+
+* copy the above files into <icu>/source/layout, replacing the old files.
+
+Add new default entries to the indicClassTables array in <icu>/source/layout/IndicClassTables.cpp
+and the complexTable array in <icu>/source/layoutex/ParagraphLayout.cpp. (This step should be automated...)
+
+* rebuild the layout and layoutex libraries.
+
 ---------------------------------------------------------------------------- ***
 
 Unicode 4.1 update

Modified: trunk/source/i18n/calendar.cpp
===================================================================
--- trunk/source/i18n/calendar.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/calendar.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -685,14 +685,14 @@
     else
 #endif
     {
-	UErrorCode feErr;
+        UErrorCode feErr;
         char calLocaleType[ULOC_FULLNAME_CAPACITY];
         calLocaleType[0] = 0; // NULL terminate
         int32_t keywordCapacity = aLocale.getKeywordValue("calendar", calLocaleType, sizeof(calLocaleType)-1, success);
         if (keywordCapacity == 0) {
             char funcEquiv[ULOC_FULLNAME_CAPACITY];
 
-	    feErr = success;
+            feErr = success;
 
             // fetch default calendar id
             ures_getFunctionalEquivalent(funcEquiv, sizeof(funcEquiv)-1,
@@ -701,7 +701,7 @@
                                         NULL, FALSE, &feErr);
             keywordCapacity = uloc_getKeywordValue(funcEquiv, "calendar", calLocaleType, 
                                 sizeof(calLocaleType)-1, &feErr);  // This can fail if there is no data.  
-				   // Don't want to stop calendar construction just because we couldn't get this type.
+            // Don't want to stop calendar construction just because we couldn't get this type.
             if (keywordCapacity == 0 || U_FAILURE(feErr)) {
                 // no calendar type.  Default to nothing.
                 calLocaleType[0] = 0;

Modified: trunk/source/i18n/csdetect.cpp
===================================================================
--- trunk/source/i18n/csdetect.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/csdetect.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -19,6 +19,7 @@
 #include "cstring.h"
 #include "umutex.h"
 #include "ucln_in.h"
+#include "uarrsort.h"
 #include "inputext.h"
 #include "csrsbcs.h"
 #include "csrmbcs.h"
@@ -51,15 +52,30 @@
 
     return TRUE;
 }
+
+static int32_t U_CALLCONV
+charsetMatchComparator(const void *context, const void *left, const void *right)
+{
+    const CharsetMatch **csm_l = (const CharsetMatch **) left;
+    const CharsetMatch **csm_r = (const CharsetMatch **) right;
+
+    // NOTE: compare is backwards to sort from highest to lowest.
+    return (*csm_r)->getConfidence() - (*csm_l)->getConfidence();
+}
+
 U_CDECL_END
 
 U_NAMESPACE_BEGIN
 
-void CharsetDetector::setRecognizers()
+void CharsetDetector::setRecognizers(UErrorCode &status)
 {
     UBool needsInit;
     CharsetRecognizer **recognizers;
 
+    if (U_FAILURE(status)) {
+        return;
+    }
+
     umtx_lock(NULL);
     needsInit = (UBool) (fCSRecognizers == NULL);
     umtx_unlock(NULL);
@@ -110,16 +126,28 @@
         int32_t r;
 
         recognizers = NEW_ARRAY(CharsetRecognizer *, rCount);
-        for (r = 0; r < rCount; r += 1) {
-           recognizers[r] = tempArray[r];
+
+        if (recognizers == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        } else {
+            for (r = 0; r < rCount; r += 1) {
+                recognizers[r] = tempArray[r];
+
+                if (recognizers[r] == NULL) {
+                    status = U_MEMORY_ALLOCATION_ERROR;
+                    break;
+                }
+            }
         }
 
-        umtx_lock(NULL);
-        if (fCSRecognizers == NULL) {
-            fCSRecognizers = recognizers;
-            fCSRecognizers_size = rCount;
+        if (U_SUCCESS(status)) {
+            umtx_lock(NULL);
+            if (fCSRecognizers == NULL) {
+                fCSRecognizers = recognizers;
+                fCSRecognizers_size = rCount;
+            }
+            umtx_unlock(NULL);
         }
-        umtx_unlock(NULL);
 
         if (fCSRecognizers != recognizers) {
             for (r = 0; r < rCount; r += 1) {
@@ -135,15 +163,33 @@
     }
 }
 
-CharsetDetector::CharsetDetector()
+CharsetDetector::CharsetDetector(UErrorCode &status)
   : textIn(new InputText()), resultCount(0), fStripTags(FALSE), fFreshTextSet(FALSE)
 {
-    setRecognizers();
+    if (U_FAILURE(status)) {
+        return;
+    }
 
-    resultArray = new CharsetMatch *[fCSRecognizers_size];
+    setRecognizers(status);
 
+    if (U_FAILURE(status)) {
+        return;
+    }
+
+    resultArray = (CharsetMatch **)uprv_malloc(sizeof(CharsetMatch *)*fCSRecognizers_size);
+
+    if (resultArray == NULL) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return;
+    }
+
     for(int32_t i = 0; i < fCSRecognizers_size; i += 1) {
         resultArray[i] = new CharsetMatch();
+
+        if (resultArray[i] == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            break;
+        }
     }
 }
 
@@ -155,7 +201,7 @@
         delete resultArray[i];
     }
 
-    delete [] resultArray;
+    uprv_free(resultArray);
 }
 
 void CharsetDetector::setText(const char *in, int32_t len)
@@ -184,8 +230,10 @@
 
 int32_t CharsetDetector::getDetectableCount()
 {
-    setRecognizers();
+    UErrorCode status = U_ZERO_ERROR;
 
+    setRecognizers(status);
+
     return fCSRecognizers_size; 
 }
 
@@ -202,21 +250,6 @@
     }
 }
 
-// this sort of conversion is explicitly mentioned in the C++ standard
-// in section 4.4:
-
-// [Note: if a program could assign a pointer of type T** to a pointer of type
-//  const T** (that is, if line //1 below was allowed), a program could
-// 	    inadvertently modify a const object (as it is done on line //2).  For
-// 						 example,
-
-// 	 int32_t main() {
-// 		const char c = 'c';
-// 		char* pc;
-// 		const char** pcc = &pc;//1: not allowed
-// 		*pcc = &c;
-// 		*pc = 'C';//2: modifies a const object
-// 	    }
 const CharsetMatch * const *CharsetDetector::detectAll(int32_t &maxMatchesFound, UErrorCode &status)
 {
     if(!textIn->isSet()) {
@@ -247,16 +280,17 @@
             resultArray[i]->set(textIn, 0, 0);
         }
 
-        //Bubble sort
-        for(int32_t i = resultCount; i > 1; i -= 1) {
-            for(int32_t j = 0; j < i-1; j += 1) {
-                if(resultArray[j]->getConfidence() < resultArray[j+1]->getConfidence()) {
-                    CharsetMatch *temp = resultArray[j];
-                    resultArray[j] = resultArray[j+1];
-                    resultArray[j+1] = temp;
-                }
-            }
-        }
+        uprv_sortArray(resultArray, resultCount, sizeof resultArray[0], charsetMatchComparator, NULL, TRUE, &status);
+        ////Bubble sort
+        //for(int32_t i = resultCount; i > 1; i -= 1) {
+        //    for(int32_t j = 0; j < i-1; j += 1) {
+        //        if(resultArray[j]->getConfidence() < resultArray[j+1]->getConfidence()) {
+        //            CharsetMatch *temp = resultArray[j];
+        //            resultArray[j] = resultArray[j+1];
+        //            resultArray[j+1] = temp;
+        //        }
+        //    }
+        //}
 
         fFreshTextSet = FALSE;
     }

Modified: trunk/source/i18n/csdetect.h
===================================================================
--- trunk/source/i18n/csdetect.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/csdetect.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -26,10 +26,10 @@
     int32_t resultCount;
     UBool fStripTags;   // If true, setText() will strip tags from input text.
     UBool fFreshTextSet;
-    static void setRecognizers();
+    static void setRecognizers(UErrorCode &status);
 
 public:
-    CharsetDetector();
+    CharsetDetector(UErrorCode &status);
 
     ~CharsetDetector();
 

Modified: trunk/source/i18n/csrmbcs.cpp
===================================================================
--- trunk/source/i18n/csrmbcs.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/csrmbcs.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -23,71 +23,71 @@
 // TODO:  This set of data comes from the character frequency-
 //        of-occurence analysis tool.  The data needs to be moved
 //        into a resource and loaded from there.
-0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0, 
-0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5, 
-0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc, 
-0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341, 
-0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389, 
+0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0,
+0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5,
+0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc,
+0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341,
+0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389,
 0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa};
 
 const int32_t commonChars_euc_jp[] = {
 // TODO:  This set of data comes from the character frequency-
 //        of-occurence analysis tool.  The data needs to be moved
 //        into a resource and loaded from there.
-0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2, 
-0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3, 
-0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4, 
-0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de, 
-0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef, 
-0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af, 
-0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7, 
-0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1, 
-0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee, 
+0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2,
+0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3,
+0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4,
+0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de,
+0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef,
+0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af,
+0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7,
+0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1,
+0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee,
 0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1};
 
 const int32_t commonChars_euc_kr[] = {
 // TODO:  This set of data comes from the character frequency-
 //        of-occurence analysis tool.  The data needs to be moved
 //        into a resource and loaded from there.
-0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc, 
-0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9, 
-0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce, 
-0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce, 
-0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba, 
-0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee, 
-0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7, 
-0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6, 
-0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6, 
+0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc,
+0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9,
+0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce,
+0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce,
+0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba,
+0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee,
+0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7,
+0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6,
+0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6,
 0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad};
 
 const int32_t commonChars_big5[] = {
 // TODO:  This set of data comes from the character frequency-
 //        of-occurence analysis tool.  The data needs to be moved
 //        into a resource and loaded from there.
-0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446, 
-0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3, 
-0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548, 
-0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8, 
-0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da, 
-0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3, 
-0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59, 
-0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c, 
-0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44, 
+0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446,
+0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3,
+0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548,
+0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8,
+0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da,
+0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3,
+0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59,
+0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c,
+0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44,
 0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f};
 
 const int32_t commonChars_gb_18030[] = {
 // TODO:  This set of data comes from the character frequency-
 //        of-occurence analysis tool.  The data needs to be moved
 //        into a resource and loaded from there.
-0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac, 
-0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4, 
-0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4, 
-0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6, 
-0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6, 
-0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7, 
-0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7, 
-0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5, 
-0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2, 
+0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac,
+0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4,
+0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4,
+0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6,
+0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6,
+0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7,
+0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7,
+0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5,
+0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2,
 0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0};
 
 static int32_t binarySearch(const int32_t *array, int32_t len, int32_t value)
@@ -126,7 +126,7 @@
     done      = FALSE;
 }
 
-int32_t IteratedChar::nextByte(InputText *det) 
+int32_t IteratedChar::nextByte(InputText *det)
 {
     if (nextIndex >= det->fRawLength) {
         done = TRUE;
@@ -135,7 +135,7 @@
     }
 
     return det->fRawInput[nextIndex++];
-}       
+}
 
 CharsetRecog_mbcs::~CharsetRecog_mbcs()
 {
@@ -156,7 +156,7 @@
         totalCharCount += 1;
 
         if (iter->error) {
-            badCharCount += 1; 
+            badCharCount += 1;
         } else {
             if (iter->charValue <= 0xFF) {
                 singleByteCharCount += 1;
@@ -174,7 +174,7 @@
 
         if (badCharCount >= 2 && badCharCount*5 >= doubleByteCharCount) {
             // Bail out early if the byte data is not matching the encoding scheme.
-            //		break detectBlock;
+            // break detectBlock;
             delete iter;
             return confidence;
         }
@@ -251,7 +251,7 @@
     int32_t secondByte = it->nextByte(det);
 
     if (secondByte < 0)  {
-        return FALSE;          
+        return FALSE;
     }
     it->charValue = (firstByte << 8) | secondByte;
     if (! ((secondByte >= 0x40 && secondByte <= 0x7F) || (secondByte >= 0x80 && secondByte <= 0xFE))) {
@@ -286,11 +286,11 @@
     int32_t firstByte  = 0;
     int32_t secondByte = 0;
     int32_t thirdByte  = 0;
-    //	int32_t fourthByte = 0;
+    // int32_t fourthByte = 0;
 
     it->index = it->nextIndex;
     it->error = FALSE;
-    firstByte = it->charValue = it->nextByte(det);  
+    firstByte = it->charValue = it->nextByte(det);
 
     if (firstByte < 0) {
         // Ran off the end of the input data
@@ -322,7 +322,7 @@
         //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
         // We don't know which we've got.
         // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
-        //   bytes will look like a well formed 2 byte char.  
+        //   bytes will look like a well formed 2 byte char.
         if (secondByte < 0xA1) {
             it->error = TRUE;
         }
@@ -401,16 +401,16 @@
     if (firstByte < 0) {
         return FALSE;
     }
-    
+
     if (firstByte <= 0x7F || firstByte == 0xFF) {
         // single byte character.
         return TRUE;
     }
-    
+
     int32_t secondByte = it->nextByte(det);
 
     if (secondByte < 0)  {
-        return FALSE;          
+        return FALSE;
     }
 
     it->charValue = (it->charValue << 8) | secondByte;
@@ -452,7 +452,7 @@
 
     it->index = it->nextIndex;
     it->error = FALSE;
-    firstByte = it->charValue = it->nextByte(det); 
+    firstByte = it->charValue = it->nextByte(det);
 
     if (firstByte < 0) {
         // Ran off the end of the input data

Modified: trunk/source/i18n/csrmbcs.h
===================================================================
--- trunk/source/i18n/csrmbcs.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/csrmbcs.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -27,7 +27,7 @@
 //   stripped of markup.  Detection only considers multi-byte chars, effectively
 //   stripping markup anyway, and double byte chars do occur in markup too.
 //
-class IteratedChar
+class IteratedChar : public UMemory
 {
 public:
     int32_t charValue;             // 1-4 bytes from the raw input data
@@ -38,18 +38,18 @@
 
 public:
     IteratedChar();
-    void reset();         
-    int32_t nextByte(InputText* det); 
+    void reset();
+    int32_t nextByte(InputText* det);
 };
 
 
 class CharsetRecog_mbcs : public CharsetRecognizer {
 
-protected:    
+protected:
     /**
      * Test the match of this charset with the input text data
      *      which is obtained via the CharsetDetector object.
-     * 
+     *
      * @param det  The CharsetDetector, which contains the input text
      *             to be checked for being in this charset.
      * @return     Two values packed into one int  (Damn java, anyhow)
@@ -60,9 +60,9 @@
      */
     int32_t match_mbcs(InputText* det, const int32_t commonChars[], int32_t commonCharsLen);
 
-public:     
+public:
 
-    virtual ~CharsetRecog_mbcs();	 
+    virtual ~CharsetRecog_mbcs();
 
     /**
      * Get the IANA name of this charset.
@@ -77,7 +77,7 @@
      * Get the next character (however many bytes it is) from the input data
      *    Subclasses for specific charset encodings must implement this function
      *    to get characters according to the rules of their encoding scheme.
-     * 
+     *
      *  This function is not a method of class IteratedChar only because
      *   that would require a lot of extra derived classes, which is awkward.
      * @param it  The IteratedChar "struct" into which the returned char is placed.
@@ -87,11 +87,11 @@
      */
     virtual UBool nextChar(IteratedChar *it, InputText *textIn) = 0;
 
-};     
+};
 
 
 /**
- *   Shift-JIS charset recognizer.   
+ *   Shift-JIS charset recognizer.
  *
  */
 class CharsetRecog_sjis : public CharsetRecog_mbcs {
@@ -111,10 +111,10 @@
 /**
  *   EUC charset recognizers.  One abstract class that provides the common function
  *             for getting the next character according to the EUC encoding scheme,
- *             and nested derived classes for EUC_KR, EUC_JP, EUC_CN.   
+ *             and nested derived classes for EUC_KR, EUC_JP, EUC_CN.
  *
  */
-class CharsetRecog_euc : public CharsetRecog_mbcs 
+class CharsetRecog_euc : public CharsetRecog_mbcs
 {
 public:
     virtual ~CharsetRecog_euc();
@@ -130,7 +130,7 @@
      *     packed into an int.
      */
     UBool nextChar(IteratedChar *it, InputText *det);
-};         
+};
 
 /**
  * The charset recognize for EUC-JP.  A singleton instance of this class
@@ -138,7 +138,7 @@
  */
 class CharsetRecog_euc_jp : public CharsetRecog_euc
 {
-public:             
+public:
     virtual ~CharsetRecog_euc_jp();
 
     const char *getName() const;
@@ -163,11 +163,11 @@
 };
 
 /**
- * 
+ *
  *   Big5 charset recognizer.
  *
  */
-class CharsetRecog_big5 : public CharsetRecog_mbcs 
+class CharsetRecog_big5 : public CharsetRecog_mbcs
 {
 public:
     virtual ~CharsetRecog_big5();
@@ -182,11 +182,11 @@
 
 
 /**
- * 
- *   GB-18030 recognizer. Uses simplified Chinese statistics.   
  *
+ *   GB-18030 recognizer. Uses simplified Chinese statistics.
+ *
  */
-class CharsetRecog_gb_18030 : public CharsetRecog_mbcs 
+class CharsetRecog_gb_18030 : public CharsetRecog_mbcs
 {
 public:
     virtual ~CharsetRecog_gb_18030();

Modified: trunk/source/i18n/inputext.cpp
===================================================================
--- trunk/source/i18n/inputext.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/inputext.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -49,14 +49,18 @@
     fInputLen  = 0;
     fC1Bytes   = FALSE;
     fRawInput  = (const uint8_t *) in;
-    fRawLength = len;
+    fRawLength = len == -1? uprv_strlen(in) : len;
 }
 
 void InputText::setDeclaredEncoding(const char* encoding, int32_t len)
 {
     if(encoding) {
+        if (len == -1) {
+            len = uprv_strlen(encoding);
+        }
+
         len += 1;     // to make place for the \0 at the end.
-        delete[] fDeclaredEncoding;		
+        uprv_free(fDeclaredEncoding);
         fDeclaredEncoding = NEW_ARRAY(char, len);
         uprv_strncpy(fDeclaredEncoding, encoding, len);
     }
@@ -64,7 +68,7 @@
 
 UBool InputText::isSet() const 
 {
-    return fRawInput? TRUE : FALSE;
+    return fRawInput != NULL;
 }
 
 /**

Modified: trunk/source/i18n/inputext.h
===================================================================
--- trunk/source/i18n/inputext.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/inputext.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -8,6 +8,15 @@
 #ifndef __INPUTEXT_H
 #define __INPUTEXT_H
 
+/**
+ * \file
+ * \internal
+ *
+ * This is an internal header for the Character Set Detection code. The
+ * name is probably too generic...
+ */
+
+
 #include "unicode/uobject.h"
 
 #if !UCONFIG_NO_CONVERSION
@@ -28,7 +37,7 @@
     // The text to be checked.  Markup will have been
     //   removed if appropriate.
     uint8_t    *fInputBytes;
-    int32_t     fInputLen;          // Length of the byte data in fInputText.
+    int32_t     fInputLen;          // Length of the byte data in fInputBytes.
     // byte frequency statistics for the input text.
     //   Value is percent, not absolute.
     //   Value is rounded up, so zero really means zero occurences. 

Modified: trunk/source/i18n/stsearch.cpp
===================================================================
--- trunk/source/i18n/stsearch.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/stsearch.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -21,12 +21,12 @@
 
 // public constructors and destructors -----------------------------------
 
-StringSearch::StringSearch(const UnicodeString &pattern, 
+StringSearch::StringSearch(const UnicodeString &pattern,
                            const UnicodeString &text,
-                           const Locale        &locale,       
+                           const Locale        &locale,
                                  BreakIterator *breakiter,
                                  UErrorCode    &status) :
-                           SearchIterator(text, breakiter), 
+                           SearchIterator(text, breakiter),
                            m_collator_(),
                            m_pattern_(pattern)
 {
@@ -35,9 +35,9 @@
         return;
     }
 
-    m_strsrch_ = usearch_open(m_pattern_.getBuffer(), m_pattern_.length(), 
-                              m_text_.getBuffer(), m_text_.length(), 
-                              locale.getName(), (UBreakIterator *)breakiter, 
+    m_strsrch_ = usearch_open(m_pattern_.getBuffer(), m_pattern_.length(),
+                              m_text_.getBuffer(), m_text_.length(),
+                              locale.getName(), (UBreakIterator *)breakiter,
                               &status);
     uprv_free(m_search_);
     m_search_ = NULL;
@@ -46,26 +46,26 @@
     // wrapper around the internal collator and rules, which (here) are
     // owned by this stringsearch object.  this means 1) it's destructor
     // _should not_ delete the ucollator or rules, and 2) changes made
-    // to the exposed collator (setStrength etc) _should_ modify the 
+    // to the exposed collator (setStrength etc) _should_ modify the
     // ucollator.  thus the collator is not a copy-on-write alias, and it
     // needs to distinguish itself not merely from 'stand alone' colators
     // but also from copy-on-write ones.  it needs additional state, which
     // setUCollator should set.
 
     if (U_SUCCESS(status)) {
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
         // m_search_ has been created by the base SearchIterator class
         m_search_        = m_strsrch_->search;
     }
 }
 
-StringSearch::StringSearch(const UnicodeString     &pattern, 
+StringSearch::StringSearch(const UnicodeString     &pattern,
                            const UnicodeString     &text,
-                                 RuleBasedCollator *coll,       
+                                 RuleBasedCollator *coll,
                                  BreakIterator     *breakiter,
                                  UErrorCode        &status) :
-                           SearchIterator(text, breakiter), 
+                           SearchIterator(text, breakiter),
                            m_collator_(),
                            m_pattern_(pattern)
 {
@@ -78,29 +78,29 @@
         m_strsrch_ = NULL;
         return;
     }
-    m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(), 
-                                          m_pattern_.length(), 
-                                          m_text_.getBuffer(), 
-                                          m_text_.length(), coll->ucollator, 
-                                          (UBreakIterator *)breakiter, 
+    m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
+                                          m_pattern_.length(),
+                                          m_text_.getBuffer(),
+                                          m_text_.length(), coll->ucollator,
+                                          (UBreakIterator *)breakiter,
                                           &status);
     uprv_free(m_search_);
     m_search_ = NULL;
 
     if (U_SUCCESS(status)) {
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
         // m_search_ has been created by the base SearchIterator class
         m_search_ = m_strsrch_->search;
     }
 }
 
-StringSearch::StringSearch(const UnicodeString     &pattern, 
+StringSearch::StringSearch(const UnicodeString     &pattern,
                                  CharacterIterator &text,
-                           const Locale            &locale, 
+                           const Locale            &locale,
                                  BreakIterator     *breakiter,
                                  UErrorCode        &status) :
-                           SearchIterator(text, breakiter), 
+                           SearchIterator(text, breakiter),
                            m_collator_(),
                            m_pattern_(pattern)
 {
@@ -108,15 +108,15 @@
         m_strsrch_ = NULL;
         return;
     }
-    m_strsrch_ = usearch_open(m_pattern_.getBuffer(), m_pattern_.length(), 
-                              m_text_.getBuffer(), m_text_.length(), 
-                              locale.getName(), (UBreakIterator *)breakiter, 
+    m_strsrch_ = usearch_open(m_pattern_.getBuffer(), m_pattern_.length(),
+                              m_text_.getBuffer(), m_text_.length(),
+                              locale.getName(), (UBreakIterator *)breakiter,
                               &status);
     uprv_free(m_search_);
     m_search_ = NULL;
 
     if (U_SUCCESS(status)) {
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
         // m_search_ has been created by the base SearchIterator class
         m_search_ = m_strsrch_->search;
@@ -125,10 +125,10 @@
 
 StringSearch::StringSearch(const UnicodeString     &pattern,
                                  CharacterIterator &text,
-                                 RuleBasedCollator *coll, 
+                                 RuleBasedCollator *coll,
                                  BreakIterator     *breakiter,
                                  UErrorCode        &status) :
-                           SearchIterator(text, breakiter), 
+                           SearchIterator(text, breakiter),
                            m_collator_(),
                            m_pattern_(pattern)
 {
@@ -141,17 +141,17 @@
         m_strsrch_ = NULL;
         return;
     }
-    m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(), 
-                                          m_pattern_.length(), 
-                                          m_text_.getBuffer(), 
-                                          m_text_.length(), coll->ucollator, 
-                                          (UBreakIterator *)breakiter, 
+    m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
+                                          m_pattern_.length(),
+                                          m_text_.getBuffer(),
+                                          m_text_.length(), coll->ucollator,
+                                          (UBreakIterator *)breakiter,
                                           &status);
     uprv_free(m_search_);
     m_search_ = NULL;
 
     if (U_SUCCESS(status)) {
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
         // m_search_ has been created by the base SearchIterator class
         m_search_ = m_strsrch_->search;
@@ -175,15 +175,15 @@
     }
     else {
         // Make a deep copy
-        m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(), 
-                                              m_pattern_.length(), 
-                                              m_text_.getBuffer(), 
-                                              m_text_.length(), 
-                                              that.m_strsrch_->collator, 
-                                             (UBreakIterator *)that.m_breakiterator_, 
+        m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
+                                              m_pattern_.length(),
+                                              m_text_.getBuffer(),
+                                              m_text_.length(),
+                                              that.m_strsrch_->collator,
+                                             (UBreakIterator *)that.m_breakiterator_,
                                               &status);
         if (U_SUCCESS(status)) {
-		    // Alias the collator
+            // Alias the collator
             m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
             // m_search_ has been created by the base SearchIterator class
             m_search_        = m_strsrch_->search;
@@ -214,13 +214,13 @@
         m_pattern_       = that.m_pattern_;
         // all m_search_ in the parent class is linked up with m_strsrch_
         usearch_close(m_strsrch_);
-        m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(), 
-                                              m_pattern_.length(), 
-                                              m_text_.getBuffer(), 
-                                              m_text_.length(), 
-                                              that.m_strsrch_->collator, 
+        m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
+                                              m_pattern_.length(),
+                                              m_text_.getBuffer(),
+                                              m_text_.length(),
+                                              that.m_strsrch_->collator,
                                               NULL, &status);
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
         m_search_ = m_strsrch_->search;
     }
@@ -260,7 +260,7 @@
         usearch_setText(m_strsrch_, text.getBuffer(), text.length(), &status);
     }
 }
-    
+
 void StringSearch::setText(CharacterIterator &text, UErrorCode &status)
 {
     if (U_SUCCESS(status)) {
@@ -273,17 +273,17 @@
 {
     return (RuleBasedCollator *)&m_collator_;
 }
-    
+
 void StringSearch::setCollator(RuleBasedCollator *coll, UErrorCode &status)
 {
     if (U_SUCCESS(status)) {
         usearch_setCollator(m_strsrch_, coll->getUCollator(), &status);
-		// Alias the collator
+        // Alias the collator
         m_collator_.setUCollator((UCollator *)m_strsrch_->collator);
     }
 }
-    
-void StringSearch::setPattern(const UnicodeString &pattern, 
+
+void StringSearch::setPattern(const UnicodeString &pattern,
                                     UErrorCode    &status)
 {
     if (U_SUCCESS(status)) {
@@ -292,7 +292,7 @@
                            &status);
     }
 }
-    
+
 const UnicodeString & StringSearch::getPattern() const
 {
     return m_pattern_;
@@ -308,8 +308,8 @@
 SearchIterator * StringSearch::safeClone(void) const
 {
     UErrorCode status = U_ZERO_ERROR;
-    StringSearch *result = new StringSearch(m_pattern_, m_text_, 
-                                            (RuleBasedCollator *)&m_collator_, 
+    StringSearch *result = new StringSearch(m_pattern_, m_text_,
+                                            (RuleBasedCollator *)&m_collator_,
                                             m_breakiterator_,
                                             status);
     /* test for NULL */
@@ -325,7 +325,7 @@
     }
     return result;
 }
-    
+
 // protected method -------------------------------------------------
 
 int32_t StringSearch::handleNext(int32_t position, UErrorCode &status)
@@ -333,27 +333,27 @@
     // values passed here are already in the pre-shift position
     if (U_SUCCESS(status)) {
         if (m_strsrch_->pattern.CELength == 0) {
-            m_search_->matchedIndex = 
-                                    m_search_->matchedIndex == USEARCH_DONE ? 
+            m_search_->matchedIndex =
+                                    m_search_->matchedIndex == USEARCH_DONE ?
                                     getOffset() : m_search_->matchedIndex + 1;
             m_search_->matchedLength = 0;
-            ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, 
+            ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex,
                            &status);
             if (m_search_->matchedIndex == m_search_->textLength) {
                 m_search_->matchedIndex = USEARCH_DONE;
             }
         }
         else {
-            // looking at usearch.cpp, this part is shifted out to 
+            // looking at usearch.cpp, this part is shifted out to
             // StringSearch instead of SearchIterator because m_strsrch_ is
             // not accessible in SearchIterator
-            if (position + m_strsrch_->pattern.defaultShiftSize 
+            if (position + m_strsrch_->pattern.defaultShiftSize
                 > m_search_->textLength) {
                 setMatchNotFound();
                 return USEARCH_DONE;
             }
             if (m_search_->matchedLength <= 0) {
-                // the flipping direction issue has already been handled 
+                // the flipping direction issue has already been handled
                 // in next()
                 // for boundary check purposes. this will ensure that the
                 // next match will not preceed the current offset
@@ -376,19 +376,19 @@
                 }
                 if (m_breakiterator_ == NULL
 #if !UCONFIG_NO_BREAK_ITERATION
-                    || 
+                    ||
                     m_search_->matchedIndex == USEARCH_DONE ||
                     (m_breakiterator_->isBoundary(m_search_->matchedIndex) &&
-                     m_breakiterator_->isBoundary(m_search_->matchedIndex + 
+                     m_breakiterator_->isBoundary(m_search_->matchedIndex +
                                                   m_search_->matchedLength))
 #endif
                 ) {
                     if (m_search_->matchedIndex == USEARCH_DONE) {
-                        ucol_setOffset(m_strsrch_->textIter, 
+                        ucol_setOffset(m_strsrch_->textIter,
                                        m_search_->textLength, &status);
                     }
                     else {
-                        ucol_setOffset(m_strsrch_->textIter, 
+                        ucol_setOffset(m_strsrch_->textIter,
                                        m_search_->matchedIndex, &status);
                     }
                     return m_search_->matchedIndex;
@@ -404,24 +404,24 @@
     // values passed here are already in the pre-shift position
     if (U_SUCCESS(status)) {
         if (m_strsrch_->pattern.CELength == 0) {
-            m_search_->matchedIndex = 
-                  (m_search_->matchedIndex == USEARCH_DONE ? getOffset() : 
+            m_search_->matchedIndex =
+                  (m_search_->matchedIndex == USEARCH_DONE ? getOffset() :
                    m_search_->matchedIndex);
             if (m_search_->matchedIndex == 0) {
                 setMatchNotFound();
             }
             else {
                 m_search_->matchedIndex --;
-                ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, 
+                ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex,
                                &status);
                 m_search_->matchedLength = 0;
             }
         }
         else {
-            // looking at usearch.cpp, this part is shifted out to 
+            // looking at usearch.cpp, this part is shifted out to
             // StringSearch instead of SearchIterator because m_strsrch_ is
             // not accessible in SearchIterator
-            if (!m_search_->isOverlap && 
+            if (!m_search_->isOverlap &&
                 position - m_strsrch_->pattern.defaultShiftSize < 0) {
                 setMatchNotFound();
                 return USEARCH_DONE;
@@ -439,10 +439,10 @@
                 }
                 if (m_breakiterator_ == NULL
 #if !UCONFIG_NO_BREAK_ITERATION
-                    || 
+                    ||
                     m_search_->matchedIndex == USEARCH_DONE ||
                     (m_breakiterator_->isBoundary(m_search_->matchedIndex) &&
-                     m_breakiterator_->isBoundary(m_search_->matchedIndex + 
+                     m_breakiterator_->isBoundary(m_search_->matchedIndex +
                                                   m_search_->matchedLength))
 #endif
                 ) {
@@ -450,7 +450,7 @@
                 }
             }
         }
-          
+
         return m_search_->matchedIndex;
     }
     return USEARCH_DONE;

Modified: trunk/source/i18n/timezone.cpp
===================================================================
--- trunk/source/i18n/timezone.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/timezone.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1087,7 +1087,7 @@
 int32_t 
 TimeZone::getDSTSavings()const {
     if (useDaylightTime()) {
-    	return 3600000;
+        return 3600000;
     }
     return 0;
 }

Modified: trunk/source/i18n/translit.cpp
===================================================================
--- trunk/source/i18n/translit.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/translit.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1245,7 +1245,7 @@
 }
 
 void U_EXPORT2 Transliterator::registerAlias(const UnicodeString& aliasID,
-											 const UnicodeString& realID) {
+                                             const UnicodeString& realID) {
     umtx_init(&registryMutex);
     Mutex lock(&registryMutex);
     if (HAVE_REGISTRY) {
@@ -1254,8 +1254,8 @@
 }
 
 void Transliterator::_registerAlias(const UnicodeString& aliasID,
-									const UnicodeString& realID) {
-	registry->put(aliasID, realID, FALSE, TRUE);
+                                    const UnicodeString& realID) {
+    registry->put(aliasID, realID, FALSE, TRUE);
 }
 
 /**

Modified: trunk/source/i18n/ucln_in.c
===================================================================
--- trunk/source/i18n/ucln_in.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/ucln_in.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,7 +1,7 @@
 /*
 ******************************************************************************
 *                                                                            *
-* Copyright (C) 2001-2004, International Business Machines                   *
+* Copyright (C) 2001-2006, International Business Machines                   *
 *                Corporation and others. All Rights Reserved.                *
 *                                                                            *
 ******************************************************************************
@@ -25,9 +25,9 @@
 
 static UBool i18n_cleanup(void)
 {
-    ECleanupI18NType libType;
+    ECleanupI18NType libType = UCLN_I18N_START;
 
-    for (libType = UCLN_I18N_START+1; libType<UCLN_I18N_COUNT; libType++) {
+    while (++libType<UCLN_I18N_COUNT) {
         if (gCleanupFunctions[libType])
         {
             gCleanupFunctions[libType]();

Modified: trunk/source/i18n/ucsdet.cpp
===================================================================
--- trunk/source/i18n/ucsdet.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/ucsdet.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -28,8 +28,13 @@
         return 0;
     }
 
-    CharsetDetector* csd = new CharsetDetector();
+    CharsetDetector* csd = new CharsetDetector(*status);
 
+    if (U_FAILURE(*status)) {
+        delete csd;
+        csd = NULL;
+    }
+
     return (UCharsetDetector *) csd;
 }
 
@@ -164,7 +169,7 @@
 // ucsdet_getDetectableCharsetName(const UCharsetDetector *csd, int32_t index, UErrorCode *status)
 // {
 //     if(U_FAILURE(*status)) {
-// 	return 0;
+//         return 0;
 //     }
 //     return csd->getCharsetName(index,*status);
 // }
@@ -173,7 +178,7 @@
 // ucsdet_getDetectableCharsetsCount(const UCharsetDetector *csd, UErrorCode *status)
 // {
 //     if(U_FAILURE(*status)) {
-// 	return -1;
+//         return -1;
 //     }
 //     return UCharsetDetector::getDetectableCount();
 // }

Modified: trunk/source/i18n/umsg.cpp
===================================================================
--- trunk/source/i18n/umsg.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/umsg.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 1999-2005, International Business Machines
+*   Copyright (C) 1999-2006, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 *******************************************************************************
@@ -614,93 +614,93 @@
 #define MAppend(c) if (len < destCapacity) dest[len++] = c; else len++
 
 int32_t umsg_autoQuoteApostrophe(const UChar* pattern, 
-			     int32_t patternLength,
-			     UChar* dest,
-			     int32_t destCapacity,
-			     UErrorCode* ec)
+                 int32_t patternLength,
+                 UChar* dest,
+                 int32_t destCapacity,
+                 UErrorCode* ec)
 {
-  int32_t state = STATE_INITIAL;
-  int32_t braceCount = 0;
-  int32_t len = 0;
+    int32_t state = STATE_INITIAL;
+    int32_t braceCount = 0;
+    int32_t len = 0;
 
-  if (ec == NULL || U_FAILURE(*ec)) {
-    return -1;
-  }
+    if (ec == NULL || U_FAILURE(*ec)) {
+        return -1;
+    }
 
-  if (pattern == NULL || patternLength < -1 || (dest == NULL && destCapacity > 0)) {
-    *ec = U_ILLEGAL_ARGUMENT_ERROR;
-    return -1;
-  }
+    if (pattern == NULL || patternLength < -1 || (dest == NULL && destCapacity > 0)) {
+        *ec = U_ILLEGAL_ARGUMENT_ERROR;
+        return -1;
+    }
 
-  if (patternLength == -1) {
-    patternLength = u_strlen(pattern);
-  }
+    if (patternLength == -1) {
+        patternLength = u_strlen(pattern);
+    }
 
-  for (int i = 0; i < patternLength; ++i) {
-    UChar c = pattern[i];
-    switch (state) {
-    case STATE_INITIAL:
-      switch (c) {
-      case SINGLE_QUOTE:
-	state = STATE_SINGLE_QUOTE;
-	break;
-      case CURLY_BRACE_LEFT:
-	state = STATE_MSG_ELEMENT;
-	++braceCount;
-	break;
-      }
-      break;
+    for (int i = 0; i < patternLength; ++i) {
+        UChar c = pattern[i];
+        switch (state) {
+        case STATE_INITIAL:
+            switch (c) {
+            case SINGLE_QUOTE:
+                state = STATE_SINGLE_QUOTE;
+                break;
+            case CURLY_BRACE_LEFT:
+                state = STATE_MSG_ELEMENT;
+                ++braceCount;
+                break;
+            }
+            break;
 
-    case STATE_SINGLE_QUOTE:
-      switch (c) {
-      case SINGLE_QUOTE:
-	state = STATE_INITIAL;
-	break;
-      case CURLY_BRACE_LEFT:
-      case CURLY_BRACE_RIGHT:
-	state = STATE_IN_QUOTE;
-	break;
-      default:
-	MAppend(SINGLE_QUOTE);
-	state = STATE_INITIAL;
-	break;
-      }
-      break;
+        case STATE_SINGLE_QUOTE:
+            switch (c) {
+            case SINGLE_QUOTE:
+                state = STATE_INITIAL;
+                break;
+            case CURLY_BRACE_LEFT:
+            case CURLY_BRACE_RIGHT:
+                state = STATE_IN_QUOTE;
+                break;
+            default:
+                MAppend(SINGLE_QUOTE);
+                state = STATE_INITIAL;
+                break;
+            }
+        break;
 
-    case STATE_IN_QUOTE:
-      switch (c) {
-      case SINGLE_QUOTE:
-	state = STATE_INITIAL;
-	break;
-      }
-      break;
+        case STATE_IN_QUOTE:
+            switch (c) {
+            case SINGLE_QUOTE:
+                state = STATE_INITIAL;
+                break;
+            }
+            break;
 
-    case STATE_MSG_ELEMENT:
-      switch (c) {
-      case CURLY_BRACE_LEFT:
-	++braceCount;
-	break;
-      case CURLY_BRACE_RIGHT:
-	if (--braceCount == 0) {
-	  state = STATE_INITIAL;
-	}
-	break;
-      }
-      break;
+        case STATE_MSG_ELEMENT:
+            switch (c) {
+            case CURLY_BRACE_LEFT:
+                ++braceCount;
+                break;
+            case CURLY_BRACE_RIGHT:
+                if (--braceCount == 0) {
+                    state = STATE_INITIAL;
+                }
+                break;
+            }
+            break;
 
-    default: // Never happens.
-      break;
+        default: // Never happens.
+            break;
+        }
+
+        MAppend(c);
     }
 
-    MAppend(c);
-  }
+    // End of scan
+    if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+        MAppend(SINGLE_QUOTE);
+    }
 
-  // End of scan
-  if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
-    MAppend(SINGLE_QUOTE);
-  }
-
-  return u_terminateUChars(dest, destCapacity, len, ec);
+    return u_terminateUChars(dest, destCapacity, len, ec);
 }
 
 #endif /* #if !UCONFIG_NO_FORMATTING */

Modified: trunk/source/i18n/unicode/msgfmt.h
===================================================================
--- trunk/source/i18n/unicode/msgfmt.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/unicode/msgfmt.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,5 +1,5 @@
 /*
-* Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved.
+* Copyright (C) 1997-2006, International Business Machines Corporation and others. All Rights Reserved.
 ********************************************************************************
 *
 * File MSGFMT.H
@@ -611,7 +611,7 @@
      * @param status    Input/output error code.  If the pattern
      *                  cannot be parsed, the failure code is set.
      * @return the standard equivalent of the original pattern
-     * @since ICU 3.4
+     * @stable ICU 3.4
      */
     static UnicodeString autoQuoteApostrophe(const UnicodeString& pattern, 
         UErrorCode& status);

Modified: trunk/source/i18n/unicode/translit.h
===================================================================
--- trunk/source/i18n/unicode/translit.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/unicode/translit.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -998,21 +998,22 @@
      */
     static void U_EXPORT2 registerInstance(Transliterator* adoptedObj);
 
-	/**
-	 * Registers an ID string as an alias of another ID string.
-	 * That is, after calling this function, <tt>createInstance(aliasID)</tt>
-	 * will return the same thing as <tt>createInstance(realID)</tt>.
-	 * This is generally used to create shorter, more mnemonic aliases
-	 * for long compound IDs.
-	 *
-	 * @param aliasID The new ID being registered.
-	 * @param realID The ID that the new ID is to be an alias for.
-	 * This can be a compound ID and can include filters and should
-	 * refer to transliterators that have already been registered with
-	 * the framework, although this isn't checked.
-	 */
-	static void U_EXPORT2 registerAlias(const UnicodeString& aliasID,
-										const UnicodeString& realID);
+    /**
+     * Registers an ID string as an alias of another ID string.
+     * That is, after calling this function, <tt>createInstance(aliasID)</tt>
+     * will return the same thing as <tt>createInstance(realID)</tt>.
+     * This is generally used to create shorter, more mnemonic aliases
+     * for long compound IDs.
+     *
+     * @param aliasID The new ID being registered.
+     * @param realID The ID that the new ID is to be an alias for.
+     * This can be a compound ID and can include filters and should
+     * refer to transliterators that have already been registered with
+     * the framework, although this isn't checked.
+     * @draft ICU 3.6
+     */
+     static void U_EXPORT2 registerAlias(const UnicodeString& aliasID,
+                                                                const UnicodeString& realID);
 
 protected:
 

Modified: trunk/source/i18n/unicode/ucsdet.h
===================================================================
--- trunk/source/i18n/unicode/ucsdet.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/unicode/ucsdet.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -55,7 +55,7 @@
 /**
   *  Opaque structure representing a match that was identified
   *  from a charset detection operation.
-  *  draft ICU 3.6
+  *  @draft ICU 3.6
   */
 typedef struct UCharsetMatch UCharsetMatch;
 
@@ -255,7 +255,8 @@
  *
  *  @param ucsm    The charset match object.
  *  @param status  Any error conditions are reported back in this variable.
- *  @return        The RFC 3066 code for the language of the input data.
+ *  @return        The RFC 3066 code for the language of the input data, or
+ *                 an empty string if the language could not be determined.
  *
  *  @draft ICU 3.6
  */

Modified: trunk/source/i18n/unicode/umsg.h
===================================================================
--- trunk/source/i18n/unicode/umsg.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/unicode/umsg.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /*
 *******************************************************************************
-* Copyright (C) 1996-2005, International Business Machines Corporation
+* Copyright (C) 1996-2006, International Business Machines Corporation
 * and others. All Rights Reserved.
 *******************************************************************************
 *
@@ -612,35 +612,35 @@
             UErrorCode     *status);
 
 
-    /**
-     * Convert an 'apostrophe-friendly' pattern into a standard
-     * pattern.  Standard patterns treat all apostrophes as
-     * quotes, which is problematic in some languages, e.g. 
-     * French, where apostrophe is commonly used.  This utility
-     * assumes that only an unpaired apostrophe immediately before
-     * a brace is a true quote.  Other unpaired apostrophes are paired,
-     * and the resulting standard pattern string is returned.
-     *
-     * <p><b>Note</b> it is not guaranteed that the returned pattern
-     * is indeed a valid pattern.  The only effect is to convert
-     * between patterns having different quoting semantics.
-     *
-     * @param pattern the 'apostrophe-friendly' patttern to convert
-     * @param patternLength the length of pattern, or -1 if unknown and pattern is null-terminated
-     * @param dest the buffer for the result, or NULL if preflight only
-     * @param destCapacity the length of the buffer, or 0 if preflighting
-     * @param ec the error code
-     * @return the length of the resulting text, not including trailing null
-     *        if buffer has room for the trailing null, it is provided, otherwise
-     *        not
-     * @draft ICU 3.4
-     */
+/**
+ * Convert an 'apostrophe-friendly' pattern into a standard
+ * pattern.  Standard patterns treat all apostrophes as
+ * quotes, which is problematic in some languages, e.g. 
+ * French, where apostrophe is commonly used.  This utility
+ * assumes that only an unpaired apostrophe immediately before
+ * a brace is a true quote.  Other unpaired apostrophes are paired,
+ * and the resulting standard pattern string is returned.
+ *
+ * <p><b>Note</b> it is not guaranteed that the returned pattern
+ * is indeed a valid pattern.  The only effect is to convert
+ * between patterns having different quoting semantics.
+ *
+ * @param pattern the 'apostrophe-friendly' patttern to convert
+ * @param patternLength the length of pattern, or -1 if unknown and pattern is null-terminated
+ * @param dest the buffer for the result, or NULL if preflight only
+ * @param destCapacity the length of the buffer, or 0 if preflighting
+ * @param ec the error code
+ * @return the length of the resulting text, not including trailing null
+ *        if buffer has room for the trailing null, it is provided, otherwise
+ *        not
+ * @stable ICU 3.4
+ */
 U_STABLE int32_t U_EXPORT2 
 umsg_autoQuoteApostrophe(const UChar* pattern, 
-			 int32_t patternLength,
-			 UChar* dest,
-			 int32_t destCapacity,
-			 UErrorCode* ec);
+                         int32_t patternLength,
+                         UChar* dest,
+                         int32_t destCapacity,
+                         UErrorCode* ec);
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 

Modified: trunk/source/i18n/windtfmt.cpp
===================================================================
--- trunk/source/i18n/windtfmt.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/windtfmt.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -88,7 +88,7 @@
 
 // TODO: Range-check timeStyle, dateStyle
 Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyle dateStyle, const Locale &locale, UErrorCode &status)
-  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(&locale), fZoneID(NULL)
+  : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(&locale), fZoneID()
 {
     if (U_SUCCESS(status)) {
         fLCID = locale.getLCID();

Modified: trunk/source/i18n/winnmfmt.cpp
===================================================================
--- trunk/source/i18n/winnmfmt.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/i18n/winnmfmt.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -23,6 +23,7 @@
 #include "unicode/ustring.h"
 
 #include "cmemory.h"
+#include "uassert.h"
 #include "locmap.h"
 
 #   define WIN32_LEAN_AND_MEAN
@@ -137,7 +138,7 @@
     if (!U_FAILURE(status)) {
         fLCID = locale.getLCID();
 
-        fFormatInfo = new FormatInfo();
+        fFormatInfo = (FormatInfo*)uprv_malloc(sizeof(FormatInfo));
 
         if (fCurrency) {
             getCurrencyFormat(&fFormatInfo->currency, fLCID);
@@ -161,7 +162,7 @@
         freeNumberFormat(&fFormatInfo->number);
     }
 
-    delete fFormatInfo;
+    uprv_free(fFormatInfo);
 }
 
 Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
@@ -172,8 +173,13 @@
     this->fLCID              = other.fLCID;
     this->fFractionDigitsSet = other.fFractionDigitsSet;
 
-    this->fFormatInfo  = new FormatInfo;
-    *this->fFormatInfo = *other.fFormatInfo;
+    if (fCurrency) {
+        freeCurrencyFormat(&fFormatInfo->currency);
+        getCurrencyFormat(&fFormatInfo->currency, fLCID);
+    } else {
+        freeNumberFormat(&fFormatInfo->number);
+        getNumberFormat(&fFormatInfo->number, fLCID);
+    }
 
     return *this;
 }
@@ -229,36 +235,28 @@
 
     nBuffer[0] = 0x0000;
 
+    /* Due to the arguments causing a result to be <= 23 characters (+2 for NULL and minus),
+    we don't need to reallocate the buffer. */
     va_start(args, fmt);
-#ifdef __BORLANDC__
-    result = vsnwprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
-#else
-    result = vswprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
-#endif
+    result = _vsnwprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
     va_end(args);
 
-    if (result < 0) {
+    /* Just to make sure of the above statement, we add this assert */
+    U_ASSERT(result >=0);
+    // The following code is not used because _vscwprintf isn't available on MinGW at the moment.
+    /*if (result < 0) {
         int newLength;
 
         va_start(args, fmt);
-#ifdef __BORLANDC__
-	FILE* nullfile = new FILE;
-	newLength = vfwprintf(nullfile, fmt, args); //??? no real equivalent ???
-#else
         newLength = _vscwprintf(fmt, args);
-#endif
         va_end(args);
 
         nBuffer = NEW_ARRAY(UChar, newLength + 1);
 
         va_start(args, fmt);
-#ifdef __BORLANDC__
-        result = vsnwprintf(nBuffer, newLength + 1, fmt, args);
-#else
-        result = vswprintf(nBuffer, newLength + 1, fmt, args);
-#endif
+        result = _vsnwprintf(nBuffer, newLength + 1, fmt, args);
         va_end(args);
-    }
+    }*/
 
     // vswprintf is sensitive to the locale set by setlocale. For some locales
     // it doesn't use "." as the decimal separator, which is what GetNumberFormatW
@@ -333,9 +331,9 @@
         DELETE_ARRAY(buffer);
     }
 
-    if (nBuffer != nStackBuffer) {
+    /*if (nBuffer != nStackBuffer) {
         DELETE_ARRAY(nBuffer);
-    }
+    }*/
 
     return appendTo;
 }

Modified: trunk/source/io/ucln_io.c
===================================================================
--- trunk/source/io/ucln_io.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/io/ucln_io.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -26,9 +26,9 @@
 
 static UBool io_cleanup(void)
 {
-    ECleanupIOType libType;
+    ECleanupIOType libType = UCLN_IO_START;
 
-    for (libType = UCLN_IO_START+1; libType<UCLN_IO_COUNT; libType++) {
+    while (++libType<UCLN_IO_COUNT) {
         if (gCleanupFunctions[libType])
         {
             gCleanupFunctions[libType]();

Modified: trunk/source/io/ufile.c
===================================================================
--- trunk/source/io/ufile.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/io/ufile.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -20,8 +20,13 @@
 
 /* define for fileno.  */
 #ifndef _XOPEN_SOURCE
+#if __STDC_VERSION__ >= 199901L
+/* It is invalid to compile an XPG3, XPG4, XPG4v2 or XPG5 application using c99 */
+#define _XOPEN_SOURCE 600
+#else
 #define _XOPEN_SOURCE 4
 #endif
+#endif
 
 #include "locmap.h"
 #include "unicode/ustdio.h"
@@ -59,9 +64,9 @@
     if (0 <= result->fFileno && result->fFileno <= 2) {
         /* stdin, stdout and stderr need to be special cased for Windows 98 */
 #if _MSC_VER >= 1400
-		result->fFile = &__iob_func()[_fileno(f)];
+        result->fFile = &__iob_func()[_fileno(f)];
 #else
-		result->fFile = &_iob[_fileno(f)];
+        result->fFile = &_iob[_fileno(f)];
 #endif
     }
     else

Modified: trunk/source/io/unicode/ustdio.h
===================================================================
--- trunk/source/io/unicode/ustdio.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/io/unicode/ustdio.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -120,30 +120,30 @@
  * %[*][format modifier][width][type modifier][format]
  * 
 <table cellspacing="3">
-<tr><td>format</td><td>default<br>type</td><td>description</td></tr>
-<tr><td>%E</td><td>double</td><td>Scientific with an uppercase exponent</td></tr>
-<tr><td>%e</td><td>double</td><td>Scientific with a lowercase exponent</td></tr>
-<tr><td>%G</td><td>double</td><td>Use %E or %f for best format</td></tr>
-<tr><td>%g</td><td>double</td><td>Use %e or %f for best format</td></tr>
-<tr><td>%f</td><td>double</td><td>Simple floating point without the exponent</td></tr>
-<tr><td>%X</td><td>int32_t</td><td>ustdio special uppercase hex radix formatting</td></tr>
-<tr><td>%x</td><td>int32_t</td><td>ustdio special lowercase hex radix formatting</td></tr>
-<tr><td>%d</td><td>int32_t</td><td>Decimal format</td></tr>
-<tr><td>%i</td><td>int32_t</td><td>Same as %d</td></tr>
-<tr><td>%n</td><td>int32_t</td><td>count (write the number of UTF-16 codeunits read/written)</td></tr>
-<tr><td>%o</td><td>int32_t</td><td>ustdio special octal radix formatting</td></tr>
-<tr><td>%u</td><td>uint32_t</td><td>Decimal format</td></tr>
-<tr><td>%p</td><td>void *</td><td>Prints the pointer value</td></tr>
-<tr><td>%s</td><td>char *</td><td>Use default converter or specified converter from fopen</td></tr>
-<tr><td>%c</td><td>char</td><td>Use default converter or specified converter from fopen<br>
-When width is specified, this acts like a non-NULL-terminated char * string.<br>
+<tr><td>format</td><td>default<br>printf<br>type</td><td>default<br>scanf<br>type</td><td>description</td></tr>
+<tr><td>%E</td><td>double</td><td>float</td><td>Scientific with an uppercase exponent</td></tr>
+<tr><td>%e</td><td>double</td><td>float</td><td>Scientific with a lowercase exponent</td></tr>
+<tr><td>%G</td><td>double</td><td>float</td><td>Use %E or %f for best format</td></tr>
+<tr><td>%g</td><td>double</td><td>float</td><td>Use %e or %f for best format</td></tr>
+<tr><td>%f</td><td>double</td><td>float</td><td>Simple floating point without the exponent</td></tr>
+<tr><td>%X</td><td>int32_t</td><td>int32_t</td><td>ustdio special uppercase hex radix formatting</td></tr>
+<tr><td>%x</td><td>int32_t</td><td>int32_t</td><td>ustdio special lowercase hex radix formatting</td></tr>
+<tr><td>%d</td><td>int32_t</td><td>int32_t</td><td>Decimal format</td></tr>
+<tr><td>%i</td><td>int32_t</td><td>int32_t</td><td>Same as %d</td></tr>
+<tr><td>%n</td><td>int32_t</td><td>int32_t</td><td>count (write the number of UTF-16 codeunits read/written)</td></tr>
+<tr><td>%o</td><td>int32_t</td><td>int32_t</td><td>ustdio special octal radix formatting</td></tr>
+<tr><td>%u</td><td>uint32_t</td><td>uint32_t</td><td>Decimal format</td></tr>
+<tr><td>%p</td><td>void *</td><td>void *</td><td>Prints the pointer value</td></tr>
+<tr><td>%s</td><td>char *</td><td>char *</td><td>Use default converter or specified converter from fopen</td></tr>
+<tr><td>%c</td><td>char</td><td>char</td><td>Use default converter or specified converter from fopen<br>
+When width is specified for scanf, this acts like a non-NULL-terminated char * string.<br>
 By default, only one char is written.</td></tr>
-<tr><td>%S</td><td>UChar *</td><td>Null terminated UTF-16 string</td></tr>
-<tr><td>%C</td><td>UChar</td><td>16-bit Unicode code unit<br>
-When width is specified, this acts like a non-NULL-terminated UChar * string<br>
+<tr><td>%S</td><td>UChar *</td><td>UChar *</td><td>Null terminated UTF-16 string</td></tr>
+<tr><td>%C</td><td>UChar</td><td>UChar</td><td>16-bit Unicode code unit<br>
+When width is specified for scanf, this acts like a non-NULL-terminated UChar * string<br>
 By default, only one codepoint is written.</td></tr>
-<tr><td>%[]</td><td>UChar *</td><td>(scanf only) Null terminated UTF-16 string which contains the filtered set of characters specified by the UnicodeSet</td></tr>
-<tr><td>%%</td><td>N/A</td><td>Show a percent sign</td></tr>
+<tr><td>%[]</td><td>&nbsp;</td><td>UChar *</td><td>Null terminated UTF-16 string which contains the filtered set of characters specified by the UnicodeSet</td></tr>
+<tr><td>%%</td><td>&nbsp;</td><td>&nbsp;</td><td>Show a percent sign</td></tr>
 </table>
 
 Format modifiers
@@ -193,10 +193,11 @@
 /** Forward declaration of a Unicode-aware file @stable 3.0 */
 typedef struct UFILE UFILE;
 
+#ifndef U_HIDE_DRAFT_API
 /**
  * Enum for which direction of stream a transliterator applies to.
  * @see u_fsettransliterator
- * @stable 3.0
+ * @draft 3.0
  */
 typedef enum { 
    U_READ = 1,
@@ -204,6 +205,8 @@
    U_READWRITE =3  /* == (U_READ | U_WRITE) */ 
 } UFileDirection;
 
+#endif /* U_HIDE_DRAFT_API */
+
 /**
  * Open a UFILE.
  * A UFILE is a wrapper around a FILE* that is locale and codepage aware.
@@ -219,7 +222,7 @@
  * read from the file. If this paramter is NULL the system default codepage
  * will be used.
  * @return A new UFILE, or NULL if an error occurred.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UFILE* U_EXPORT2
 u_fopen(const char    *filename,
@@ -238,7 +241,7 @@
  * read using the default codepage for <TT>locale</TT>, unless <TT>locale</TT>
  * is NULL, in which case the system default codepage will be used.
  * @return A new UFILE, or NULL if an error occurred.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UFILE* U_EXPORT2
 u_finit(FILE        *f,
@@ -257,7 +260,7 @@
  * and parse output. If this parameter is NULL, the default locale will 
  * be used.
  * @return A new UFILE, or NULL if an error occurred.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UFILE* U_EXPORT2
 u_fstropen(UChar      *stringBuf,
@@ -267,7 +270,7 @@
 /**
  * Close a UFILE.
  * @param file The UFILE to close.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT void U_EXPORT2
 u_fclose(UFILE *file);
@@ -278,7 +281,7 @@
  * @return Returns TRUE after the first read operation that attempts to
  * read past the end of the file. It returns FALSE if the current position is
  * not end of file.
- * @stable 3.0
+ * @draft 3.0
 */
 U_DRAFT UBool U_EXPORT2
 u_feof(UFILE  *f);
@@ -289,7 +292,7 @@
  * made in the output stream - for example if a different type of
  * output is desired.)  The underlying OS level file is also flushed.
  * @param file The UFILE to flush.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT void U_EXPORT2
 u_fflush(UFILE *file);
@@ -297,7 +300,7 @@
 /**
  * Rewind the file pointer to the beginning of the file.
  * @param file The UFILE to rewind.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT void
 u_frewind(UFILE *file);
@@ -306,7 +309,7 @@
  * Get the FILE* associated with a UFILE.
  * @param f The UFILE
  * @return A FILE*, owned by the UFILE.  The FILE <EM>must not</EM> be closed.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT FILE* U_EXPORT2
 u_fgetfile(UFILE *f);
@@ -319,7 +322,7 @@
  * or <TT>u_fopen</TT>.
  * @param file The UFILE to set.
  * @return The locale whose conventions are used to format and parse output.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT const char* U_EXPORT2
 u_fgetlocale(UFILE *file);
@@ -330,7 +333,7 @@
  * and parse output.
  * @param file The UFILE to query.
  * @return NULL if successful, otherwise a negative number.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fsetlocale(UFILE      *file,
@@ -345,7 +348,7 @@
  * @param file The UFILE to query.
  * @return The codepage in which data is written to and read from the UFILE,
  * or NULL if an error occurred.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT const char* U_EXPORT2
 u_fgetcodepage(UFILE *file);
@@ -363,7 +366,7 @@
  * @param file The UFILE to set.
  * @return 0 if successful, otherwise a negative number.
  * @see u_frewind
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fsetcodepage(const char   *codepage,
@@ -374,7 +377,7 @@
  * Returns an alias to the converter being used for this file.
  * @param f The UFILE to get the value from
  * @return alias to the converter
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UConverter* U_EXPORT2 u_fgetConverter(UFILE *f);
 
@@ -388,7 +391,7 @@
  * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode characters written to <TT>f</TT>.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fprintf(UFILE         *f,
@@ -405,7 +408,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @see u_fprintf
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vfprintf(UFILE        *f,
@@ -418,7 +421,7 @@
  * @param patternSpecification A pattern specifying how <TT>u_fprintf</TT> will
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode characters written to <TT>f</TT>.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fprintf_u(UFILE       *f,
@@ -435,7 +438,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @see u_fprintf_u
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vfprintf_u(UFILE      *f,
@@ -450,7 +453,7 @@
  * @param f The UFILE to which to write.
  * @return A non-negative number if successful, EOF otherwise.
  * @see u_file_write
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fputs(const UChar *s,
@@ -461,7 +464,7 @@
  * @param uc The UChar to write.
  * @param f The UFILE to which to write.
  * @return The character written if successful, EOF otherwise.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UChar32 U_EXPORT2
 u_fputc(UChar32  uc,
@@ -476,7 +479,7 @@
  * @param f The UFILE to which to write.
  * @return The number of Unicode characters written.
  * @see u_fputs
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_file_write(const UChar    *ustring, 
@@ -494,7 +497,7 @@
  * interpret the variable arguments received and parse the data.
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fscanf(UFILE      *f,
@@ -512,7 +515,7 @@
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
  * @see u_fscanf
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vfscanf(UFILE         *f,
@@ -526,7 +529,7 @@
  * interpret the variable arguments received and parse the data.
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_fscanf_u(UFILE        *f,
@@ -544,7 +547,7 @@
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
  * @see u_fscanf_u
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vfscanf_u(UFILE       *f,
@@ -562,7 +565,7 @@
  * stored successively in <TT>s</TT> until a newline or EOF is
  * reached. A null character (U+0000) will be appended to <TT>s</TT>.
  * @return A pointer to <TT>s</TT>, or NULL if no characters were available.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UChar* U_EXPORT2
 u_fgets(UChar  *s,
@@ -576,7 +579,7 @@
  *
  * @param f The UFILE from which to read.
  * @return The UChar value read, or U+FFFF if no character was available.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UChar U_EXPORT2
 u_fgetc(UFILE   *f);
@@ -589,7 +592,7 @@
  * available, or U+FFFFFFFF if an ill-formed character was
  * encountered.
  * @see u_unescape()
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UChar32 U_EXPORT2
 u_fgetcx(UFILE  *f);
@@ -603,7 +606,7 @@
  * @param c The UChar to put back on the stream.
  * @param f The UFILE to receive <TT>c</TT>.
  * @return The UChar32 value put back if successful, U_EOF otherwise.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UChar32 U_EXPORT2
 u_fungetc(UChar32   c,
@@ -617,7 +620,7 @@
  * @param count The number of Unicode characters to read.
  * @param f The UFILE from which to read.
  * @return The number of Unicode characters read.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_file_read(UChar        *chars, 
@@ -641,7 +644,7 @@
  * caller. If U_READWRITE is specified, only the WRITE transliterator
  * is returned. In most cases, the caller should call utrans_close()
  * on the result of this function.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT UTransliterator* U_EXPORT2
 u_fsettransliterator(UFILE *file, UFileDirection direction,
@@ -662,7 +665,7 @@
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode code units written to <TT>buffer</TT>. This
  * does not include the terminating null character.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_sprintf(UChar       *buffer,
@@ -683,7 +686,7 @@
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode code units written to <TT>buffer</TT>. This
  * does not include the terminating null character.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_snprintf(UChar      *buffer,
@@ -702,7 +705,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>buffer</TT>.
  * @see u_sprintf
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsprintf(UChar      *buffer,
@@ -726,7 +729,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>buffer</TT>.
  * @see u_sprintf
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsnprintf(UChar     *buffer,
@@ -741,7 +744,7 @@
  * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode characters written to <TT>buffer</TT>.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_sprintf_u(UChar      *buffer,
@@ -761,7 +764,7 @@
  * @param patternSpecification A pattern specifying how <TT>u_sprintf</TT> will
  * interpret the variable arguments received and format the data.
  * @return The number of Unicode characters written to <TT>buffer</TT>.
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_snprintf_u(UChar     *buffer,
@@ -780,7 +783,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @see u_sprintf_u
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsprintf_u(UChar     *buffer,
@@ -804,7 +807,7 @@
  * @param ap The argument list to use.
  * @return The number of Unicode characters written to <TT>f</TT>.
  * @see u_sprintf_u
- * @stable 3.0
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsnprintf_u(UChar *buffer,
@@ -822,7 +825,7 @@
  * interpret the variable arguments received and parse the data.
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
- * @stable 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_sscanf(const UChar   *buffer,
@@ -841,7 +844,7 @@
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
  * @see u_sscanf
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsscanf(const UChar  *buffer,
@@ -856,7 +859,7 @@
  * interpret the variable arguments received and parse the data.
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_sscanf_u(const UChar  *buffer,
@@ -875,7 +878,7 @@
  * @return The number of items successfully converted and assigned, or EOF
  * if an error occurred.
  * @see u_sscanf_u
- * @draft 3.6
+ * @draft 3.0
  */
 U_DRAFT int32_t U_EXPORT2
 u_vsscanf_u(const UChar *buffer,

Modified: trunk/source/layout/HangulLayoutEngine.h
===================================================================
--- trunk/source/layout/HangulLayoutEngine.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/HangulLayoutEngine.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -24,13 +24,12 @@
 class LEGlyphStorage;
 
 /**
- * This class implements OpenType layout for Indic OpenType fonts, as
+ * This class implements OpenType layout for Old Hangul OpenType fonts, as
  * specified by Microsoft in "Creating and Supporting OpenType Fonts for
- * Indic Scripts" (http://www.microsoft.com/typography/otspec/indicot/default.htm)
+ * The Korean Hangul Script" (http://www.microsoft.com/typography/otfntdev/hangulot/default.htm)
  *
- * This class overrides the characterProcessing method to do Indic character processing
- * and reordering, and the glyphProcessing method to implement post-GSUB processing for
- * left matras. (See the MS spec. for more details)
+ * This class overrides the characterProcessing method to do Hangul character processing.
+ * (See the MS spec. for more details)
  *
  * @internal
  */
@@ -38,10 +37,10 @@
 {
 public:
     /**
-     * This is the main constructor. It constructs an instance of IndicOpenTypeLayoutEngine for
+     * This is the main constructor. It constructs an instance of HangulOpenTypeLayoutEngine for
      * a particular font, script and language. It takes the GSUB table as a parameter since
      * LayoutEngine::layoutEngineFactory has to read the GSUB table to know that it has an
-     * Indic OpenType font.
+     * Hangul OpenType font.
      *
      * @param fontInstance - the font
      * @param scriptCode - the script
@@ -98,9 +97,8 @@
 
     /**
      * This method does Hangul OpenType character processing. It assigns the OpenType feature
-     * tags to the characters, and may generate output characters which have been reordered. For
-     * some Indic scripts, it may also split some vowels, resulting in more output characters
-     * than input characters.
+     * tags to the characters, and may compose a character sequence into a modern Hangul syllable,
+     * or decompose a modern Hangul syllable if it forms part of an old Hangul syllable.
      *
      * Input parameters:
      * @param chars - the input character context

Modified: trunk/source/layout/IndicClassTables.cpp
===================================================================
--- trunk/source/layout/IndicClassTables.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/IndicClassTables.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -134,7 +134,7 @@
 
 static const IndicClassTable::CharClass tamlCharClasses[] =
 {
-    _xx, _xx, _ma, _mp, _xx, _iv, _iv, _iv, _iv, _iv, _iv, _xx, _xx, _xx, _iv, _iv, // 0B80 - 0B8F
+    _xx, _xx, _ma, _xx, _xx, _iv, _iv, _iv, _iv, _iv, _iv, _xx, _xx, _xx, _iv, _iv, // 0B80 - 0B8F
     _iv, _xx, _iv, _iv, _iv, _ct, _xx, _xx, _xx, _ct, _ct, _xx, _ct, _xx, _ct, _ct, // 0B90 - 0B9F
     _xx, _xx, _xx, _ct, _ct, _xx, _xx, _xx, _ct, _ct, _ct, _xx, _xx, _xx, _ct, _ct, // 0BA0 - 0BAF
     _ct, _ct, _ct, _ct, _ct, _ct, _xx, _ct, _ct, _ct, _xx, _xx, _xx, _xx, _r2, _dr, // 0BB0 - 0BBF
@@ -323,7 +323,49 @@
     NULL,            /* 'sylo' (SYLOTI_NAGRI) */
     NULL,            /* 'talu' (NEW_TAI_LUE) */
     NULL,            /* 'tfng' (TIFINAGH) */
-    NULL             /* 'xpeo' (OLD_PERSIAN) */
+    NULL,            /* 'xpeo' (OLD_PERSIAN) */
+    NULL,            /* 'bali' (BALINESE) */
+    NULL,            /* 'batk' (BATK) */
+    NULL,            /* 'blis' (BLIS) */
+    NULL,            /* 'brah' (BRAH) */
+    NULL,            /* 'cham' (CHAM) */
+    NULL,            /* 'cirt' (CIRT) */
+    NULL,            /* 'cyrs' (CYRS) */
+    NULL,            /* 'egyd' (EGYD) */
+    NULL,            /* 'egyh' (EGYH) */
+    NULL,            /* 'egyp' (EGYP) */
+    NULL,            /* 'geok' (GEOK) */
+    NULL,            /* 'hans' (HANS) */
+    NULL,            /* 'hant' (HANT) */
+    NULL,            /* 'hmng' (HMNG) */
+    NULL,            /* 'hung' (HUNG) */
+    NULL,            /* 'inds' (INDS) */
+    NULL,            /* 'java' (JAVA) */
+    NULL,            /* 'kali' (KALI) */
+    NULL,            /* 'latf' (LATF) */
+    NULL,            /* 'latg' (LATG) */
+    NULL,            /* 'lepc' (LEPC) */
+    NULL,            /* 'lina' (LINA) */
+    NULL,            /* 'mand' (MAND) */
+    NULL,            /* 'maya' (MAYA) */
+    NULL,            /* 'mero' (MERO) */
+    NULL,            /* 'nko ' (NKO) */
+    NULL,            /* 'orkh' (ORKH) */
+    NULL,            /* 'perm' (PERM) */
+    NULL,            /* 'phag' (PHAGS_PA) */
+    NULL,            /* 'phnx' (PHOENICIAN) */
+    NULL,            /* 'plrd' (PLRD) */
+    NULL,            /* 'roro' (RORO) */
+    NULL,            /* 'sara' (SARA) */
+    NULL,            /* 'syre' (SYRE) */
+    NULL,            /* 'syrj' (SYRJ) */
+    NULL,            /* 'syrn' (SYRN) */
+    NULL,            /* 'teng' (TENG) */
+    NULL,            /* 'vai ' (VAII) */
+    NULL,            /* 'visp' (VISP) */
+    NULL,            /* 'xsux' (CUNEIFORM) */
+    NULL,            /* 'zxxx' (ZXXX) */
+    NULL             /* 'zzzz' (UNKNOWN) */
 };
 
 IndicClassTable::CharClass IndicClassTable::getCharClass(LEUnicode ch) const

Modified: trunk/source/layout/LELanguages.h
===================================================================
--- trunk/source/layout/LELanguages.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/LELanguages.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,11 +1,11 @@
 /*
  *
- * (C) Copyright IBM Corp. 1998-2005. All Rights Reserved.
+ * (C) Copyright IBM Corp. 1998-2006. All Rights Reserved.
  *
  * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
  * YOU REALLY KNOW WHAT YOU'RE DOING.
  *
- * Generated on: 07/19/2005 01:01:08 PM PDT
+ * Generated on: 08/21/2006 02:35:14 PM HST
  */
 
 #ifndef __LELANGUAGES_H
@@ -25,7 +25,7 @@
  * this is just a list of languages which the LayoutEngine
  * supports.
  *
- * @draft ICU 3.4
+ * @draft ICU 3.6
  */
 
 enum LanguageCodes {

Modified: trunk/source/layout/LEScripts.h
===================================================================
--- trunk/source/layout/LEScripts.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/LEScripts.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,11 +1,11 @@
 /*
  *
- * (C) Copyright IBM Corp. 1998-2005. All Rights Reserved.
+ * (C) Copyright IBM Corp. 1998-2006. All Rights Reserved.
  *
  * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
  * YOU REALLY KNOW WHAT YOU'RE DOING.
  *
- * Generated on: 07/19/2005 01:01:08 PM PDT
+ * Generated on: 08/21/2006 02:35:13 PM HST
  */
 
 #ifndef __LESCRIPTS_H
@@ -24,7 +24,7 @@
  * Constants for Unicode script values, generated using
  * ICU4J's <code>UScript</code> class.
  *
- * @draft ICU 3.4
+ * @draft ICU 3.6
  */
 
 enum ScriptCodes {
@@ -90,8 +90,50 @@
     taluScriptCode = 59,
     tfngScriptCode = 60,
     xpeoScriptCode = 61,
+    baliScriptCode = 62,
+    batkScriptCode = 63,
+    blisScriptCode = 64,
+    brahScriptCode = 65,
+    chamScriptCode = 66,
+    cirtScriptCode = 67,
+    cyrsScriptCode = 68,
+    egydScriptCode = 69,
+    egyhScriptCode = 70,
+    egypScriptCode = 71,
+    geokScriptCode = 72,
+    hansScriptCode = 73,
+    hantScriptCode = 74,
+    hmngScriptCode = 75,
+    hungScriptCode = 76,
+    indsScriptCode = 77,
+    javaScriptCode = 78,
+    kaliScriptCode = 79,
+    latfScriptCode = 80,
+    latgScriptCode = 81,
+    lepcScriptCode = 82,
+    linaScriptCode = 83,
+    mandScriptCode = 84,
+    mayaScriptCode = 85,
+    meroScriptCode = 86,
+    nkooScriptCode = 87,
+    orkhScriptCode = 88,
+    permScriptCode = 89,
+    phagScriptCode = 90,
+    phnxScriptCode = 91,
+    plrdScriptCode = 92,
+    roroScriptCode = 93,
+    saraScriptCode = 94,
+    syreScriptCode = 95,
+    syrjScriptCode = 96,
+    syrnScriptCode = 97,
+    tengScriptCode = 98,
+    vaiiScriptCode = 99,
+    vispScriptCode = 100,
+    xsuxScriptCode = 101,
+    zxxxScriptCode = 102,
+    zzzzScriptCode = 103,
 
-    scriptCodeCount = 62
+    scriptCodeCount = 104
 };
 
 U_NAMESPACE_END

Modified: trunk/source/layout/ScriptAndLanguageTags.cpp
===================================================================
--- trunk/source/layout/ScriptAndLanguageTags.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/ScriptAndLanguageTags.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,11 +1,11 @@
 /*
  *
- * (C) Copyright IBM Corp. 1998-2005. All Rights Reserved.
+ * (C) Copyright IBM Corp. 1998-2006. All Rights Reserved.
  *
  * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
  * YOU REALLY KNOW WHAT YOU'RE DOING.
  *
- * Generated on: 07/19/2005 01:01:08 PM PDT
+ * Generated on: 08/21/2006 02:35:14 PM HST
  */
 
 #include "LETypes.h"
@@ -39,7 +39,7 @@
     kndaScriptTag, /* 'knda' (KANNADA) */
     kanaScriptTag, /* 'kana' (KATAKANA) */
     khmrScriptTag, /* 'khmr' (KHMER) */
-    laooScriptTag, /* 'laoo' (LAO) */
+    laooScriptTag, /* 'lao ' (LAO) */
     latnScriptTag, /* 'latn' (LATIN) */
     mlymScriptTag, /* 'mlym' (MALAYALAM) */
     mongScriptTag, /* 'mong' (MONGOLIAN) */
@@ -56,7 +56,7 @@
     thaiScriptTag, /* 'thai' (THAI) */
     tibtScriptTag, /* 'tibt' (TIBETAN) */
     cansScriptTag, /* 'cans' (CANADIAN_ABORIGINAL) */
-    yiiiScriptTag, /* 'yiii' (YI) */
+    yiiiScriptTag, /* 'yi  ' (YI) */
     tglgScriptTag, /* 'tglg' (TAGALOG) */
     hanoScriptTag, /* 'hano' (HANUNOO) */
     buhdScriptTag, /* 'buhd' (BUHID) */
@@ -76,7 +76,49 @@
     syloScriptTag, /* 'sylo' (SYLOTI_NAGRI) */
     taluScriptTag, /* 'talu' (NEW_TAI_LUE) */
     tfngScriptTag, /* 'tfng' (TIFINAGH) */
-    xpeoScriptTag  /* 'xpeo' (OLD_PERSIAN) */
+    xpeoScriptTag, /* 'xpeo' (OLD_PERSIAN) */
+    baliScriptTag, /* 'bali' (BALINESE) */
+    batkScriptTag, /* 'batk' (BATK) */
+    blisScriptTag, /* 'blis' (BLIS) */
+    brahScriptTag, /* 'brah' (BRAH) */
+    chamScriptTag, /* 'cham' (CHAM) */
+    cirtScriptTag, /* 'cirt' (CIRT) */
+    cyrsScriptTag, /* 'cyrs' (CYRS) */
+    egydScriptTag, /* 'egyd' (EGYD) */
+    egyhScriptTag, /* 'egyh' (EGYH) */
+    egypScriptTag, /* 'egyp' (EGYP) */
+    geokScriptTag, /* 'geok' (GEOK) */
+    hansScriptTag, /* 'hans' (HANS) */
+    hantScriptTag, /* 'hant' (HANT) */
+    hmngScriptTag, /* 'hmng' (HMNG) */
+    hungScriptTag, /* 'hung' (HUNG) */
+    indsScriptTag, /* 'inds' (INDS) */
+    javaScriptTag, /* 'java' (JAVA) */
+    kaliScriptTag, /* 'kali' (KALI) */
+    latfScriptTag, /* 'latf' (LATF) */
+    latgScriptTag, /* 'latg' (LATG) */
+    lepcScriptTag, /* 'lepc' (LEPC) */
+    linaScriptTag, /* 'lina' (LINA) */
+    mandScriptTag, /* 'mand' (MAND) */
+    mayaScriptTag, /* 'maya' (MAYA) */
+    meroScriptTag, /* 'mero' (MERO) */
+    nkooScriptTag, /* 'nko ' (NKO) */
+    orkhScriptTag, /* 'orkh' (ORKH) */
+    permScriptTag, /* 'perm' (PERM) */
+    phagScriptTag, /* 'phag' (PHAGS_PA) */
+    phnxScriptTag, /* 'phnx' (PHOENICIAN) */
+    plrdScriptTag, /* 'plrd' (PLRD) */
+    roroScriptTag, /* 'roro' (RORO) */
+    saraScriptTag, /* 'sara' (SARA) */
+    syreScriptTag, /* 'syre' (SYRE) */
+    syrjScriptTag, /* 'syrj' (SYRJ) */
+    syrnScriptTag, /* 'syrn' (SYRN) */
+    tengScriptTag, /* 'teng' (TENG) */
+    vaiiScriptTag, /* 'vai ' (VAII) */
+    vispScriptTag, /* 'visp' (VISP) */
+    xsuxScriptTag, /* 'xsux' (CUNEIFORM) */
+    zxxxScriptTag, /* 'zxxx' (ZXXX) */
+    zzzzScriptTag  /* 'zzzz' (UNKNOWN) */
 };
 
 const LETag OpenTypeLayoutEngine::languageTags[] = {

Modified: trunk/source/layout/ScriptAndLanguageTags.h
===================================================================
--- trunk/source/layout/ScriptAndLanguageTags.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layout/ScriptAndLanguageTags.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,11 +1,11 @@
 /*
  *
- * (C) Copyright IBM Corp. 1998-2005. All Rights Reserved.
+ * (C) Copyright IBM Corp. 1998-2006. All Rights Reserved.
  *
  * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
  * YOU REALLY KNOW WHAT YOU'RE DOING.
  *
- * Generated on: 07/19/2005 01:01:08 PM PDT
+ * Generated on: 08/21/2006 02:35:14 PM HST
  */
 
 #ifndef __SCRIPTANDLANGUAGES_H
@@ -44,7 +44,7 @@
 const LETag kndaScriptTag = 0x6B6E6461; /* 'knda' (KANNADA) */
 const LETag kanaScriptTag = 0x6B616E61; /* 'kana' (KATAKANA) */
 const LETag khmrScriptTag = 0x6B686D72; /* 'khmr' (KHMER) */
-const LETag laooScriptTag = 0x6C616F6F; /* 'laoo' (LAO) */
+const LETag laooScriptTag = 0x6C616F20; /* 'lao ' (LAO) */
 const LETag latnScriptTag = 0x6C61746E; /* 'latn' (LATIN) */
 const LETag mlymScriptTag = 0x6D6C796D; /* 'mlym' (MALAYALAM) */
 const LETag mongScriptTag = 0x6D6F6E67; /* 'mong' (MONGOLIAN) */
@@ -61,7 +61,7 @@
 const LETag thaiScriptTag = 0x74686169; /* 'thai' (THAI) */
 const LETag tibtScriptTag = 0x74696274; /* 'tibt' (TIBETAN) */
 const LETag cansScriptTag = 0x63616E73; /* 'cans' (CANADIAN_ABORIGINAL) */
-const LETag yiiiScriptTag = 0x79696969; /* 'yiii' (YI) */
+const LETag yiiiScriptTag = 0x79692020; /* 'yi  ' (YI) */
 const LETag tglgScriptTag = 0x74676C67; /* 'tglg' (TAGALOG) */
 const LETag hanoScriptTag = 0x68616E6F; /* 'hano' (HANUNOO) */
 const LETag buhdScriptTag = 0x62756864; /* 'buhd' (BUHID) */
@@ -82,6 +82,48 @@
 const LETag taluScriptTag = 0x74616C75; /* 'talu' (NEW_TAI_LUE) */
 const LETag tfngScriptTag = 0x74666E67; /* 'tfng' (TIFINAGH) */
 const LETag xpeoScriptTag = 0x7870656F; /* 'xpeo' (OLD_PERSIAN) */
+const LETag baliScriptTag = 0x62616C69; /* 'bali' (BALINESE) */
+const LETag batkScriptTag = 0x6261746B; /* 'batk' (BATK) */
+const LETag blisScriptTag = 0x626C6973; /* 'blis' (BLIS) */
+const LETag brahScriptTag = 0x62726168; /* 'brah' (BRAH) */
+const LETag chamScriptTag = 0x6368616D; /* 'cham' (CHAM) */
+const LETag cirtScriptTag = 0x63697274; /* 'cirt' (CIRT) */
+const LETag cyrsScriptTag = 0x63797273; /* 'cyrs' (CYRS) */
+const LETag egydScriptTag = 0x65677964; /* 'egyd' (EGYD) */
+const LETag egyhScriptTag = 0x65677968; /* 'egyh' (EGYH) */
+const LETag egypScriptTag = 0x65677970; /* 'egyp' (EGYP) */
+const LETag geokScriptTag = 0x67656F6B; /* 'geok' (GEOK) */
+const LETag hansScriptTag = 0x68616E73; /* 'hans' (HANS) */
+const LETag hantScriptTag = 0x68616E74; /* 'hant' (HANT) */
+const LETag hmngScriptTag = 0x686D6E67; /* 'hmng' (HMNG) */
+const LETag hungScriptTag = 0x68756E67; /* 'hung' (HUNG) */
+const LETag indsScriptTag = 0x696E6473; /* 'inds' (INDS) */
+const LETag javaScriptTag = 0x6A617661; /* 'java' (JAVA) */
+const LETag kaliScriptTag = 0x6B616C69; /* 'kali' (KALI) */
+const LETag latfScriptTag = 0x6C617466; /* 'latf' (LATF) */
+const LETag latgScriptTag = 0x6C617467; /* 'latg' (LATG) */
+const LETag lepcScriptTag = 0x6C657063; /* 'lepc' (LEPC) */
+const LETag linaScriptTag = 0x6C696E61; /* 'lina' (LINA) */
+const LETag mandScriptTag = 0x6D616E64; /* 'mand' (MAND) */
+const LETag mayaScriptTag = 0x6D617961; /* 'maya' (MAYA) */
+const LETag meroScriptTag = 0x6D65726F; /* 'mero' (MERO) */
+const LETag nkooScriptTag = 0x6E6B6F20; /* 'nko ' (NKO) */
+const LETag orkhScriptTag = 0x6F726B68; /* 'orkh' (ORKH) */
+const LETag permScriptTag = 0x7065726D; /* 'perm' (PERM) */
+const LETag phagScriptTag = 0x70686167; /* 'phag' (PHAGS_PA) */
+const LETag phnxScriptTag = 0x70686E78; /* 'phnx' (PHOENICIAN) */
+const LETag plrdScriptTag = 0x706C7264; /* 'plrd' (PLRD) */
+const LETag roroScriptTag = 0x726F726F; /* 'roro' (RORO) */
+const LETag saraScriptTag = 0x73617261; /* 'sara' (SARA) */
+const LETag syreScriptTag = 0x73797265; /* 'syre' (SYRE) */
+const LETag syrjScriptTag = 0x7379726A; /* 'syrj' (SYRJ) */
+const LETag syrnScriptTag = 0x7379726E; /* 'syrn' (SYRN) */
+const LETag tengScriptTag = 0x74656E67; /* 'teng' (TENG) */
+const LETag vaiiScriptTag = 0x76616920; /* 'vai ' (VAII) */
+const LETag vispScriptTag = 0x76697370; /* 'visp' (VISP) */
+const LETag xsuxScriptTag = 0x78737578; /* 'xsux' (CUNEIFORM) */
+const LETag zxxxScriptTag = 0x7A787878; /* 'zxxx' (ZXXX) */
+const LETag zzzzScriptTag = 0x7A7A7A7A; /* 'zzzz' (UNKNOWN) */
 
 const LETag nullScriptTag = 0x00000000; /* ''     (NULL) */
 

Modified: trunk/source/layoutex/ParagraphLayout.cpp
===================================================================
--- trunk/source/layoutex/ParagraphLayout.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/layoutex/ParagraphLayout.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -194,7 +194,49 @@
     FALSE,  /* Sylo */
     FALSE,  /* Talu */
     FALSE,  /* Tfng */
-    FALSE   /* Xpeo */
+    FALSE,  /* Xpeo */
+    FALSE,  /* Bali */
+    FALSE,  /* Batk */
+    FALSE,  /* Blis */
+    FALSE,  /* Brah */
+    FALSE,  /* Cham */
+    FALSE,  /* Cirt */
+    FALSE,  /* Cyrs */
+    FALSE,  /* Egyd */
+    FALSE,  /* Egyh */
+    FALSE,  /* Egyp */
+    FALSE,  /* Geok */
+    FALSE,  /* Hans */
+    FALSE,  /* Hant */
+    FALSE,  /* Hmng */
+    FALSE,  /* Hung */
+    FALSE,  /* Inds */
+    FALSE,  /* Java */
+    FALSE,  /* Kali */
+    FALSE,  /* Latf */
+    FALSE,  /* Latg */
+    FALSE,  /* Lepc */
+    FALSE,  /* Lina */
+    FALSE,  /* Mand */
+    FALSE,  /* Maya */
+    FALSE,  /* Mero */
+    FALSE,  /* Nkoo */
+    FALSE,  /* Orkh */
+    FALSE,  /* Perm */
+    FALSE,  /* Phag */
+    FALSE,  /* Phnx */
+    FALSE,  /* Plrd */
+    FALSE,  /* Roro */
+    FALSE,  /* Sara */
+    FALSE,  /* Syre */
+    FALSE,  /* Syrj */
+    FALSE,  /* Syrn */
+    FALSE,  /* Teng */
+    FALSE,  /* Taii */
+    FALSE,  /* Visp */
+    FALSE,  /* Xsux */
+    FALSE,  /* Zxxx */
+    FALSE   /* Zzzz */
 };
 
 

Modified: trunk/source/test/cintltst/callcoll.c
===================================================================
--- trunk/source/test/cintltst/callcoll.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/callcoll.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -859,10 +859,8 @@
     /* Now, do the same comparison with keys */
     sourceKeyOut = ucol_getSortKey(myCollator, source, -1, sourceKeyArray, 100);
     targetKeyOut = ucol_getSortKey(myCollator, target, -1, targetKeyArray, 100);
-    result = 0;
     bufferLen = ((targetKeyOut > 100) ? 100 : targetKeyOut);
-    result = memcmp(sourceKeyArray, targetKeyArray, bufferLen);
-    if (result != 0)
+    if (memcmp(sourceKeyArray, targetKeyArray, bufferLen) != 0)
     {
         log_err("Comparing two strings with sort keys in C failed.\n");
     }

Modified: trunk/source/test/cintltst/cbiditst.c
===================================================================
--- trunk/source/test/cintltst/cbiditst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/cbiditst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -329,13 +329,8 @@
     if (!tablesInitialized) {
         buildPseudoTables();
     }
-    if (pseudoToUChar) {                /* tables are built */
-        for (i = 0; i < length; i++)
-            output[i] = pseudoToUChar[(uint8_t)input[i]];
-    } else {                            /* short on memory */
-        for (i = 0; i < length; i++)
-            output[i] = '?';
-    }
+    for (i = 0; i < length; i++)
+        output[i] = pseudoToUChar[(uint8_t)input[i]];
     return length;
 }
 
@@ -351,16 +346,11 @@
     if (!tablesInitialized) {
         buildPseudoTables();
     }
-    if (pseudoToUChar) {
-        for (i = 0; i < length; i++)
-        {
-            uchar = input[i];
-            output[i] = uchar < 0x0100 ? UCharToPseudo[uchar] :
-                                         UCharToPseud2[uchar & 0x00ff];
-        }
-    } else {                            /* short on memory */
-        for (i = 0; i < length; i++)
-            output[i] = '?';
+    for (i = 0; i < length; i++)
+    {
+        uchar = input[i];
+        output[i] = uchar < 0x0100 ? UCharToPseudo[uchar] :
+                                        UCharToPseud2[uchar & 0x00ff];
     }
     output[length] = '\0';
     return length;

Modified: trunk/source/test/cintltst/cdtdptst.c
===================================================================
--- trunk/source/test/cintltst/cdtdptst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/cdtdptst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 1997-2005, International Business Machines Corporation and
+ * Copyright (c) 1997-2006, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 /********************************************************************************
@@ -233,11 +233,11 @@
     UErrorCode status = U_ZERO_ERROR;
     UChar *date;
     
-	ctest_setTimeZone(NULL, &status);
+    ctest_setTimeZone(NULL, &status);
     fmt = udat_open(UDAT_FULL, UDAT_FULL, "cs", NULL, 0, NULL, 0, &status);
     if(U_FAILURE(status)){
         log_err("Error in constructing the date format\n");
-		ctest_resetTimeZone();
+        ctest_resetTimeZone();
         return;
     }
     lneed=0;
@@ -286,7 +286,7 @@
     else
         log_verbose("Pass: Date = %s (czech month July)\n", aescstrdup(date, -1));
     
-	ctest_resetTimeZone();
+    ctest_resetTimeZone();
     udat_close(fmt);
     ucal_close(cal);
     free(pattern);

Modified: trunk/source/test/cintltst/cloctst.c
===================================================================
--- trunk/source/test/cintltst/cloctst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/cloctst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -2264,7 +2264,7 @@
 }
 
 static void TestLanguageExemplarsFallbacks(void) {
-	/* Test that en_US fallsback, but en doesn't fallback. */
+    /* Test that en_US fallsback, but en doesn't fallback. */
     UErrorCode ec = U_ZERO_ERROR;
     ULocaleData *uld = ulocdata_open("en_US",&ec);
     uset_close(ulocdata_getExemplarSet(uld, NULL, 0, ULOCDATA_ES_STANDARD, &ec));
@@ -2273,7 +2273,7 @@
             u_errorName(ec));
     }
     ulocdata_close(uld);
-	ec = U_ZERO_ERROR;
+    ec = U_ZERO_ERROR;
     uld = ulocdata_open("en",&ec);
     uset_close(ulocdata_getExemplarSet(uld, NULL, 0, ULOCDATA_ES_STANDARD, &ec));
     if (ec != U_ZERO_ERROR) {

Modified: trunk/source/test/cintltst/cmsccoll.c
===================================================================
--- trunk/source/test/cintltst/cmsccoll.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/cmsccoll.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -4738,6 +4738,20 @@
   ucol_close(coll);
 }
 
+/* Regression test for Thai partial sort key problem */
+static void
+TestJ5232(void)
+{
+    const static char *test[] = {
+        "\\u0e40\\u0e01\\u0e47\\u0e1a\\u0e40\\u0e25\\u0e47\\u0e21",
+        "\\u0e40\\u0e01\\u0e47\\u0e1a\\u0e40\\u0e25\\u0e48\\u0e21"
+    };
+    
+    genericLocaleStarter("th", test, sizeof(test)/sizeof(test[0]));
+}
+
+
+
 #define TEST(x) addTest(root, &x, "tscoll/cmsccoll/" # x)
 
 void addMiscCollTest(TestNode** root)
@@ -4805,6 +4819,7 @@
     TEST(TestUpperFirstQuaternary);
     TEST(TestJ4960);
     TEST(TestJ5223);
+    TEST(TestJ5232);
 }
 
 #endif /* #if !UCONFIG_NO_COLLATION */

Modified: trunk/source/test/cintltst/cucdtst.c
===================================================================
--- trunk/source/test/cintltst/cucdtst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/cucdtst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1835,18 +1835,18 @@
     errorCode=U_ZERO_ERROR;
     set=uset_openPattern(mirroredPattern, 17, &errorCode);
 
-	if (U_FAILURE(errorCode)) {
-		log_data_err("uset_openPattern(mirroredPattern, 17, &errorCode) failed!");
-	} else {
-		for(i=0; 0==uset_getItem(set, i, &start, &end, NULL, 0, &errorCode); ++i) {
-			do {
-				c2=u_charMirror(start);
-				c3=u_charMirror(c2);
-				if(c3!=start) {
-					log_err("u_charMirror() does not roundtrip: U+%04lx->U+%04lx->U+%04lx\n", (long)start, (long)c2, (long)c3);
-				}
-			} while(++start<=end);
-		}
+    if (U_FAILURE(errorCode)) {
+        log_data_err("uset_openPattern(mirroredPattern, 17, &errorCode) failed!");
+    } else {
+        for(i=0; 0==uset_getItem(set, i, &start, &end, NULL, 0, &errorCode); ++i) {
+            do {
+                c2=u_charMirror(start);
+                c3=u_charMirror(c2);
+                if(c3!=start) {
+                    log_err("u_charMirror() does not roundtrip: U+%04lx->U+%04lx->U+%04lx\n", (long)start, (long)c2, (long)c3);
+                }
+            } while(++start<=end);
+        }
     }
 
     uset_close(set);

Modified: trunk/source/test/cintltst/custrtrn.c
===================================================================
--- trunk/source/test/cintltst/custrtrn.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/custrtrn.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1066,7 +1066,7 @@
         }
     }
 #else
-	log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
+    log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
 #endif
 } 
 
@@ -1108,7 +1108,7 @@
             log_err("u_strFromWCS: wcs = %S, wl = %d,rts = %s, rtl = %d!\n", wcs, wl, u_austrcpy(astr, rts), rtl);
         }
 #else
-	log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
+    log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
 #endif
 }
 
@@ -1172,7 +1172,7 @@
     /* close the bundle */
     ures_close(theBundle);    
 #else
-	log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
+    log_info("Not testing u_str*WCS because (!UCONFIG_NO_CONVERSION && !UCONFIG_NO_LEGACY_CONVERSION) and wchar is neither utf16 nor utf32");
 #endif
 }
 

Modified: trunk/source/test/cintltst/reapits.c
===================================================================
--- trunk/source/test/cintltst/reapits.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/cintltst/reapits.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -984,10 +984,10 @@
 }
 
 static void TestBug4315(void) {
-    UErrorCode		theICUError = U_ZERO_ERROR;
-    URegularExpression	*theRegEx;
+    UErrorCode      theICUError = U_ZERO_ERROR;
+    URegularExpression *theRegEx;
     UChar           *textBuff;
-    const char	    *thePattern;
+    const char      *thePattern;
     UChar            theString[100];
     UChar           *destFields[24];
     int32_t         neededLength1;
@@ -996,7 +996,7 @@
     int32_t         wordCount = 0;
     int32_t         destFieldsSize = 24;
 
-    thePattern	= "ck ";
+    thePattern  = "ck ";
     u_uastrcpy(theString, "The quick brown fox jumped over the slow black turtle.");
 
     /* open a regex */

Modified: trunk/source/test/intltest/canittst.cpp
===================================================================
--- trunk/source/test/intltest/canittst.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/canittst.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 2002-2005, International Business Machines Corporation and
+ * Copyright (c) 2002-2006, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************
  *
@@ -90,10 +90,10 @@
             || type == U_SURROGATE) continue;
         
         s = i;
-		characterTest(s, i, it);
+        characterTest(s, i, it);
 
         s += (UChar32)0x0345; //"\\u0345";
-		characterTest(s, i, it);
+        characterTest(s, i, it);
     }
 }
 
@@ -176,7 +176,7 @@
     UBool gotComp = FALSE;
     UBool gotSource = FALSE;
 
-	Normalizer::decompose(s, FALSE, 0, decomp, status);
+    Normalizer::decompose(s, FALSE, 0, decomp, status);
     Normalizer::compose(s, FALSE, 0, comp, status);
     
     // skip characters that don't have either decomp.

Modified: trunk/source/test/intltest/canittst.h
===================================================================
--- trunk/source/test/intltest/canittst.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/canittst.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 2002-2005, International Business Machines Corporation and
+ * Copyright (c) 2002-2006, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************
  *
@@ -46,7 +46,7 @@
     //static UnicodeString collectionToString(Collection col);
 private:
     void expectEqual(const UnicodeString &message, const UnicodeString &item, const UnicodeString &a, const UnicodeString &b);
-	void characterTest(UnicodeString &s, UChar32 ch, CanonicalIterator &it);
+    void characterTest(UnicodeString &s, UChar32 ch, CanonicalIterator &it);
 
     Transliterator *nameTrans;
     Transliterator *hexTrans;

Modified: trunk/source/test/intltest/idnaref.cpp
===================================================================
--- trunk/source/test/intltest/idnaref.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/idnaref.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,7 +1,7 @@
 /*
  *******************************************************************************
  *
- *   Copyright (C) 2003-2005, International Business Machines
+ *   Copyright (C) 2003-2006, International Business Machines
  *   Corporation and others.  All Rights Reserved.
  *
  *******************************************************************************
@@ -34,7 +34,7 @@
 #define MAX_LABEL_LENGTH 63
 #define HYPHEN      0x002D
 /* The Max length of the labels should not be more than 64 */
-#define MAX_LABEL_BUFFER_SIZE 100 
+#define MAX_LABEL_BUFFER_SIZE 100
 #define MAX_IDN_BUFFER_SIZE   300
 
 #define CAPITAL_A        0x0041
@@ -43,7 +43,7 @@
 #define FULL_STOP        0x002E
 
 
-inline static UBool 
+inline static UBool
 startsWithPrefix(const UChar* src , int32_t srcLength){
     UBool startsWithPrefix = TRUE;
 
@@ -59,7 +59,7 @@
     return startsWithPrefix;
 }
 
-inline static UChar 
+inline static UChar
 toASCIILower(UChar ch){
     if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
         return ch + LOWER_CASE_DELTA;
@@ -68,7 +68,7 @@
 }
 
 inline static int32_t
-compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len, 
+compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len,
                             const UChar* s2, int32_t s2Len){
     if(s1Len != s2Len){
         return (s1Len > s2Len) ? s1Len : s2Len;
@@ -81,10 +81,10 @@
         if(i == s1Len) {
             return 0;
         }
-        
+
         c1 = s1[i];
         c2 = s2[i];
-        
+
         /* Case-insensitive comparison */
         if(c1!=c2) {
             rc=(int32_t)toASCIILower(c1)-(int32_t)toASCIILower(c2);
@@ -93,7 +93,7 @@
             }
         }
     }
-    
+
 }
 
 static UErrorCode getError(enum punycode_status status){
@@ -125,8 +125,8 @@
     }
     return i;
 }
-// wrapper around the reference Punycode implementation 
-static int32_t convertToPuny(const UChar* src, int32_t srcLength, 
+// wrapper around the reference Punycode implementation
+static int32_t convertToPuny(const UChar* src, int32_t srcLength,
                              UChar* dest, int32_t destCapacity,
                              UErrorCode& status){
     uint32_t b1Stack[MAX_LABEL_BUFFER_SIZE];
@@ -149,7 +149,7 @@
         }
 
         status = U_ZERO_ERROR; // reset error
-        
+
         u_strToUTF32((UChar32*)b1,b1Len,&b1Len,src,srcLength,&status);
     }
     if(U_FAILURE(status)){
@@ -160,7 +160,7 @@
 
     error = punycode_encode(b1Len,b1,caseFlags, (uint32_t*)&b2Len, b2);
     status = getError(error);
-    
+
     if(status == U_BUFFER_OVERFLOW_ERROR){
         /* we do not have enough room so grow the buffer*/
         b2 = (char*) uprv_malloc( b2Len * sizeof(char));
@@ -177,7 +177,7 @@
     if(U_FAILURE(status)){
         goto CLEANUP;
     }
-    
+
     if(b2Len < destCapacity){
           convertASCIIToUChars(b2,dest,b2Len);
     }else{
@@ -236,17 +236,17 @@
     }
     uprv_free(caseFlags);
 
-    return destLen;   
+    return destLen;
 }
-			
 
+
 U_CFUNC int32_t U_EXPORT2
-idnaref_toASCII(const UChar* src, int32_t srcLength, 
+idnaref_toASCII(const UChar* src, int32_t srcLength,
               UChar* dest, int32_t destCapacity,
               int32_t options,
               UParseError* parseError,
               UErrorCode* status){
-    
+
     if(status == NULL || U_FAILURE(*status)){
         return 0;
     }
@@ -257,8 +257,8 @@
     UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE];
     //initialize pointers to stack buffers
     UChar  *b1 = b1Stack, *b2 = b2Stack;
-    int32_t b1Len=0, b2Len=0, 
-            b1Capacity = MAX_LABEL_BUFFER_SIZE, 
+    int32_t b1Len=0, b2Len=0,
+            b1Capacity = MAX_LABEL_BUFFER_SIZE,
             b2Capacity = MAX_LABEL_BUFFER_SIZE ,
             reqLength=0;
 
@@ -267,18 +267,18 @@
     UBool useSTD3ASCIIRules = (UBool)((options & IDNAREF_USE_STD3_RULES) != 0);
 
     UBool* caseFlags = NULL;
-    
+
     // assume the source contains all ascii codepoints
     UBool srcIsASCII  = TRUE;
     // assume the source contains all LDH codepoints
-    UBool srcIsLDH = TRUE; 
+    UBool srcIsLDH = TRUE;
     int32_t j=0;
 
     if(srcLength == -1){
         srcLength = u_strlen(src);
     }
 
-    // step 1 
+    // step 1
     for( j=0;j<srcLength;j++){
         if(src[j] > 0x7F){
             srcIsASCII = FALSE;
@@ -291,9 +291,9 @@
     if(U_FAILURE(*status)){
         goto CLEANUP;
     }
-    
+
     b1Len = prep->process(src,srcLength,b1, b1Capacity,allowUnassigned,parseError,*status);
-    
+
     if(*status == U_BUFFER_OVERFLOW_ERROR){
         // redo processing of string
         /* we do not have enough room so grow the buffer*/
@@ -304,29 +304,29 @@
         }
 
         *status = U_ZERO_ERROR; // reset error
-        
+
         b1Len = prep->process(src,srcLength,b1, b1Len,allowUnassigned, parseError, *status);
     }
     // error bail out
     if(U_FAILURE(*status)){
         goto CLEANUP;
-    }		
+    }
 
     if(b1Len == 0){
         *status = U_IDNA_ZERO_LENGTH_LABEL_ERROR;
         goto CLEANUP;
-    }		  
+    }
 
     srcIsASCII = TRUE;
     // step 3 & 4
     for( j=0;j<b1Len;j++){
-        if(b1[j] > 0x7F){// check if output of usprep_prepare is all ASCII 
+        if(b1[j] > 0x7F){// check if output of usprep_prepare is all ASCII
             srcIsASCII = FALSE;
         }else if(prep->isLDHChar(b1[j])==FALSE){  // if the char is in ASCII range verify that it is an LDH character{
             srcIsLDH = FALSE;
         }
     }
-    
+
     if(useSTD3ASCIIRules == TRUE){
         // verify 3a and 3b
         if( srcIsLDH == FALSE /* source contains some non-LDH characters */
@@ -355,14 +355,14 @@
             if(*status == U_BUFFER_OVERFLOW_ERROR){
                 // redo processing of string
                 /* we do not have enough room so grow the buffer*/
-                b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR); 
+                b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
                 if(b2 == NULL){
                     *status = U_MEMORY_ALLOCATION_ERROR;
                     goto CLEANUP;
                 }
 
                 *status = U_ZERO_ERROR; // reset error
-                
+
                 b2Len = convertToPuny(b1, b1Len, b2, b2Len, *status);
                 //b2Len = u_strToPunycode(b2,b2Len,b1,b1Len, caseFlags, status);
 
@@ -383,7 +383,7 @@
             uprv_memcpy(dest+ACE_PREFIX_LENGTH, b2, b2Len * U_SIZEOF_UCHAR);
 
         }else{
-            *status = U_IDNA_ACE_PREFIX_ERROR; 
+            *status = U_IDNA_ACE_PREFIX_ERROR;
             goto CLEANUP;
         }
     }
@@ -400,7 +400,7 @@
         uprv_free(b2);
     }
     uprv_free(caseFlags);
-    
+
 //    delete prep;
 
     return u_terminateUChars(dest, destCapacity, reqLength, status);
@@ -423,18 +423,18 @@
     }
 
 
-    
+
     UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE];
 
     //initialize pointers to stack buffers
     UChar  *b1 = b1Stack, *b2 = b2Stack, *b1Prime=NULL, *b3=b3Stack;
     int32_t b1Len, b2Len, b1PrimeLen, b3Len,
-            b1Capacity = MAX_LABEL_BUFFER_SIZE, 
+            b1Capacity = MAX_LABEL_BUFFER_SIZE,
             b2Capacity = MAX_LABEL_BUFFER_SIZE,
             b3Capacity = MAX_LABEL_BUFFER_SIZE,
             reqLength=0;
 //    UParseError parseError;
-    
+
     NamePrepTransform* prep = TestIDNA::getInstance(*status);
     b1Len = 0;
     UBool* caseFlags = NULL;
@@ -450,7 +450,7 @@
     if(U_FAILURE(*status)){
         goto CLEANUP;
     }
-    // step 1: find out if all the codepoints in src are ASCII  
+    // step 1: find out if all the codepoints in src are ASCII
     if(srcLength==-1){
         srcLength = 0;
         for(;src[srcLength]!=0;){
@@ -492,7 +492,7 @@
             }
 
             *status = U_ZERO_ERROR; // reset error
-            
+
             b1Len = prep->process(src,srcLength,b1, b1Len,allowUnassigned, parseError, *status);
         }
         //bail out on error
@@ -536,12 +536,12 @@
             }
 
             *status = U_ZERO_ERROR; // reset error
-            
+
             b2Len =  convertFromPuny(b1Prime,b1PrimeLen, b2, b2Len, *status);
             //b2Len = u_strFromPunycode(b2, b2Len,b1Prime,b1PrimeLen,caseFlags, status);
         }
-        
-        
+
+
         //step 6:Apply toASCII
         b3Len = idnaref_toASCII(b2,b2Len,b3,b3Capacity,options,parseError, status);
 
@@ -555,9 +555,9 @@
             }
 
             *status = U_ZERO_ERROR; // reset error
-            
+
             b3Len =  idnaref_toASCII(b2,b2Len,b3,b3Len, options, parseError, status);
-        
+
         }
         //bail out on error
         if(U_FAILURE(*status)){
@@ -566,7 +566,7 @@
 
         //step 7: verify
         if(compareCaseInsensitiveASCII(b1, b1Len, b3, b3Len) !=0){
-            *status = U_IDNA_VERIFICATION_ERROR; 
+            *status = U_IDNA_VERIFICATION_ERROR;
             goto CLEANUP;
         }
 
@@ -587,7 +587,7 @@
                     // failPos is always set the index of failure
                     uprv_syntaxError(src,failPos, srcLength,parseError);
                 }else if(src[0] == HYPHEN){
-                    // fail position is 0 
+                    // fail position is 0
                     uprv_syntaxError(src,0,srcLength,parseError);
                 }else{
                     // the last index in the source is always length-1
@@ -613,7 +613,7 @@
         uprv_free(b2);
     }
     uprv_free(caseFlags);
-    
+
 //    delete prep;
 
     return u_terminateUChars(dest, destCapacity, reqLength, status);
@@ -636,7 +636,7 @@
             if(prep->isLabelSeparator(src[i],*status)){
                 *limit = src + (i+1); // go past the delimiter
                 return i;
-                
+
             }
         }
     }else{
@@ -675,7 +675,7 @@
 //    UParseError parseError;
 
     NamePrepTransform* prep = TestIDNA::getInstance(*status);
-    
+
     //initialize pointers to stack buffers
     UChar b1Stack[MAX_LABEL_BUFFER_SIZE];
     UChar  *b1 = b1Stack;
@@ -684,7 +684,7 @@
     UChar* labelStart = (UChar*)src;
     int32_t remainingLen = srcLength;
     int32_t b1Capacity = MAX_LABEL_BUFFER_SIZE;
-    
+
     //get the options
 //    UBool allowUnassigned   = (UBool)((options & IDNAREF_ALLOW_UNASSIGNED) != 0);
 //    UBool useSTD3ASCIIRules = (UBool)((options & IDNAREF_USE_STD3_RULES) != 0);
@@ -697,7 +697,7 @@
 
     if(srcLength == -1){
         for(;;){
-            
+
             if(*delimiter == 0){
                 break;
             }
@@ -705,8 +705,8 @@
             labelLen = getNextSeparator(labelStart, -1, prep, &delimiter, &done, status);
             b1Len = 0;
             if(!(labelLen==0 && done)){// make sure this is not a root label separator.
-            
-                b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Capacity, 
+
+                b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Capacity,
                                         options, parseError, status);
 
                 if(*status == U_BUFFER_OVERFLOW_ERROR){
@@ -719,12 +719,12 @@
                     }
 
                     *status = U_ZERO_ERROR; // reset error
-                    
+
                     b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Len,
                                             options, parseError, status);
-                    
+
                 }
-            }	  
+            }
 
             if(U_FAILURE(*status)){
                 goto CLEANUP;
@@ -749,13 +749,13 @@
         }
     }else{
         for(;;){
-            
+
             if(delimiter == src+srcLength){
                 break;
             }
 
             labelLen = getNextSeparator(labelStart, remainingLen, prep, &delimiter, &done, status);
-            
+
             b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Capacity,
                                     options,parseError, status);
 
@@ -769,12 +769,12 @@
                 }
 
                 *status = U_ZERO_ERROR; // reset error
-                
-                b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Len, 
+
+                b1Len = idnaref_toASCII(labelStart, labelLen, b1, b1Len,
                                         options, parseError, status);
-                
+
             }
-        
+
             if(U_FAILURE(*status)){
                 goto CLEANUP;
             }
@@ -801,11 +801,11 @@
 
 
 CLEANUP:
-    
+
     if(b1 != b1Stack){
         uprv_free(b1);
     }
-    
+
 //   delete prep;
 
     return u_terminateUChars(dest, destCapacity, reqLength, status);
@@ -817,7 +817,7 @@
                      int32_t options,
                      UParseError* parseError,
                      UErrorCode* status){
-    
+
     if(status == NULL || U_FAILURE(*status)){
         return 0;
     }
@@ -827,11 +827,11 @@
     }
 
     int32_t reqLength = 0;
-    
+
     UBool done = FALSE;
 
     NamePrepTransform* prep = TestIDNA::getInstance(*status);
-    
+
     //initialize pointers to stack buffers
     UChar b1Stack[MAX_LABEL_BUFFER_SIZE];
     UChar  *b1 = b1Stack;
@@ -840,25 +840,25 @@
     UChar* labelStart = (UChar*)src;
     int32_t remainingLen = srcLength;
     int32_t b1Capacity = MAX_LABEL_BUFFER_SIZE;
-    
+
     //get the options
 //    UBool allowUnassigned   = (UBool)((options & IDNAREF_ALLOW_UNASSIGNED) != 0);
 //    UBool useSTD3ASCIIRules = (UBool)((options & IDNAREF_USE_STD3_RULES) != 0);
-    
+
     if(U_FAILURE(*status)){
         goto CLEANUP;
     }
-    
+
     if(srcLength == -1){
         for(;;){
-            
+
             if(*delimiter == 0){
                 break;
             }
 
             labelLen = getNextSeparator(labelStart, -1, prep, &delimiter, &done, status);
-           
-           if(labelLen==0 && done==FALSE){ 
+
+           if(labelLen==0 && done==FALSE){
                 *status = U_IDNA_ZERO_LENGTH_LABEL_ERROR;
             }
             b1Len = idnaref_toUnicode(labelStart, labelLen, b1, b1Capacity,
@@ -874,12 +874,12 @@
                 }
 
                 *status = U_ZERO_ERROR; // reset error
-                
-                b1Len = idnaref_toUnicode( labelStart, labelLen, b1, b1Len, 
+
+                b1Len = idnaref_toUnicode( labelStart, labelLen, b1, b1Len,
                                            options, parseError, status);
-                
+
             }
-        
+
             if(U_FAILURE(*status)){
                 goto CLEANUP;
             }
@@ -902,17 +902,17 @@
         }
     }else{
         for(;;){
-            
+
             if(delimiter == src+srcLength){
                 break;
             }
 
             labelLen = getNextSeparator(labelStart, remainingLen, prep, &delimiter, &done, status);
-           
-            if(labelLen==0 && done==FALSE){ 
+
+            if(labelLen==0 && done==FALSE){
                 *status = U_IDNA_ZERO_LENGTH_LABEL_ERROR;
-            }            
-            
+            }
+
             b1Len = idnaref_toUnicode( labelStart,labelLen, b1, b1Capacity,
                                        options, parseError, status);
 
@@ -926,12 +926,12 @@
                 }
 
                 *status = U_ZERO_ERROR; // reset error
-                
-                b1Len = idnaref_toUnicode( labelStart, labelLen, b1, b1Len, 
+
+                b1Len = idnaref_toUnicode( labelStart, labelLen, b1, b1Len,
                                            options, parseError, status);
-                
+
             }
-        
+
             if(U_FAILURE(*status)){
                 goto CLEANUP;
             }
@@ -957,13 +957,13 @@
     }
 
 CLEANUP:
-    
+
     if(b1 != b1Stack){
         uprv_free(b1);
     }
-    
+
 //    delete prep;
-    
+
     return u_terminateUChars(dest, destCapacity, reqLength, status);
 }
 
@@ -981,7 +981,7 @@
     UChar *b1 = b1Stack, *b2 = b2Stack;
     int32_t b1Len, b2Len, b1Capacity = MAX_IDN_BUFFER_SIZE, b2Capacity = MAX_IDN_BUFFER_SIZE;
     int32_t result = -1;
-    
+
     UParseError parseError;
 
     b1Len = idnaref_IDNToASCII(s1, length1, b1, b1Capacity, options, &parseError, status);
@@ -995,9 +995,9 @@
         }
 
         *status = U_ZERO_ERROR; // reset error
-        
+
         b1Len = idnaref_IDNToASCII(s1,length1,b1,b1Len, options, &parseError, status);
-        
+
     }
 
     b2Len = idnaref_IDNToASCII(s2,length2,b2,b2Capacity,options, &parseError, status);
@@ -1011,9 +1011,9 @@
         }
 
         *status = U_ZERO_ERROR; // reset error
-        
+
         b2Len = idnaref_IDNToASCII(s2,length2,b2,b2Len,options, &parseError, status);
-        
+
     }
     // when toASCII is applied all label separators are replaced with FULL_STOP
     result = compareCaseInsensitiveASCII(b1,b1Len,b2,b2Len);

Modified: trunk/source/test/intltest/tmsgfmt.cpp
===================================================================
--- trunk/source/test/intltest/tmsgfmt.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/tmsgfmt.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 1997-2005, International Business Machines Corporation and
+ * Copyright (c) 1997-2006, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 /*
@@ -1238,19 +1238,19 @@
     int32_t pattern_count = sizeof(patterns)/sizeof(patterns[0]);
 
     for (int i = 0; i < pattern_count; i += 2) {
-	UErrorCode status = U_ZERO_ERROR;
+        UErrorCode status = U_ZERO_ERROR;
         UnicodeString result = MessageFormat::autoQuoteApostrophe(patterns[i], status);
         UnicodeString target(patterns[i+1]);
         if (target != result) {
-	  const int BUF2_LEN = 64;
-	  char buf[256];
-	  char buf2[BUF2_LEN];
-	  int32_t len = result.extract(0, result.length(), buf2, BUF2_LEN);
-	  if (len >= BUF2_LEN) {
-	    buf2[BUF2_LEN-1] = 0;
-	  }
-	  sprintf(buf, "[%2d] test \"%s\": target (\"%s\") != result (\"%s\")\n", i/2, patterns[i], patterns[i+1], buf2);
-	  errln(buf);
+            const int BUF2_LEN = 64;
+            char buf[256];
+            char buf2[BUF2_LEN];
+            int32_t len = result.extract(0, result.length(), buf2, BUF2_LEN);
+            if (len >= BUF2_LEN) {
+                buf2[BUF2_LEN-1] = 0;
+            }
+            sprintf(buf, "[%2d] test \"%s\": target (\"%s\") != result (\"%s\")\n", i/2, patterns[i], patterns[i+1], buf2);
+            errln(buf);
         }
     }
 }

Modified: trunk/source/test/intltest/transtst.cpp
===================================================================
--- trunk/source/test/intltest/transtst.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/transtst.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -4319,79 +4319,79 @@
 }
 
 void TransliteratorTest::TestRegisterAlias() {
-	UnicodeString longID("Lower;[aeiou]Upper");
-	UnicodeString shortID("Any-CapVowels");
-	UnicodeString reallyShortID("CapVowels");
-	
-	Transliterator::registerAlias(shortID, longID);
+    UnicodeString longID("Lower;[aeiou]Upper");
+    UnicodeString shortID("Any-CapVowels");
+    UnicodeString reallyShortID("CapVowels");
 
-	UErrorCode err = U_ZERO_ERROR;
-	Transliterator* t1 = Transliterator::createInstance(longID, UTRANS_FORWARD, err);
-	if (U_FAILURE(err)) {
-		errln("Failed to instantiate transliterator with long ID");
-		Transliterator::unregister(shortID);
-		return;
-	}
-	Transliterator* t2 = Transliterator::createInstance(reallyShortID, UTRANS_FORWARD, err);
-	if (U_FAILURE(err)) {
-		errln("Failed to instantiate transliterator with short ID");
-		delete t1;
-		Transliterator::unregister(shortID);
-		return;
-	}
-	
-	if (t1->getID() != longID)
-		errln("Transliterator instantiated with long ID doesn't have long ID");
-	if (t2->getID() != reallyShortID)
-		errln("Transliterator instantiated with short ID doesn't have short ID");
+    Transliterator::registerAlias(shortID, longID);
 
-	UnicodeString rules1;
-	UnicodeString rules2;
+    UErrorCode err = U_ZERO_ERROR;
+    Transliterator* t1 = Transliterator::createInstance(longID, UTRANS_FORWARD, err);
+    if (U_FAILURE(err)) {
+        errln("Failed to instantiate transliterator with long ID");
+        Transliterator::unregister(shortID);
+        return;
+    }
+    Transliterator* t2 = Transliterator::createInstance(reallyShortID, UTRANS_FORWARD, err);
+    if (U_FAILURE(err)) {
+        errln("Failed to instantiate transliterator with short ID");
+        delete t1;
+        Transliterator::unregister(shortID);
+        return;
+    }
 
-	t1->toRules(rules1, TRUE);
-	t2->toRules(rules2, TRUE);
-	if (rules1 != rules2)
-		errln("Alias transliterators aren't the same");
+    if (t1->getID() != longID)
+        errln("Transliterator instantiated with long ID doesn't have long ID");
+    if (t2->getID() != reallyShortID)
+        errln("Transliterator instantiated with short ID doesn't have short ID");
 
-	delete t1;
-	delete t2;
-	Transliterator::unregister(shortID);
+    UnicodeString rules1;
+    UnicodeString rules2;
 
-	t1 = Transliterator::createInstance(shortID, UTRANS_FORWARD, err);
-	if (U_SUCCESS(err)) {
-		errln("Instantiation with short ID succeeded after short ID was unregistered");
-		delete t1;
-	}
+    t1->toRules(rules1, TRUE);
+    t2->toRules(rules2, TRUE);
+    if (rules1 != rules2)
+        errln("Alias transliterators aren't the same");
 
-	// try the same thing again, but this time with something other than
-	// an instance of CompoundTransliterator
-	UnicodeString realID("Latin-Greek");
-	UnicodeString fakeID("Latin-dlgkjdflkjdl");
-	Transliterator::registerAlias(fakeID, realID);
+    delete t1;
+    delete t2;
+    Transliterator::unregister(shortID);
 
-	err = U_ZERO_ERROR;
-	t1 = Transliterator::createInstance(realID, UTRANS_FORWARD, err);
-	if (U_FAILURE(err)) {
-		errln("Failed to instantiate transliterator with real ID");
-		Transliterator::unregister(realID);
-		return;
-	}
-	t2 = Transliterator::createInstance(fakeID, UTRANS_FORWARD, err);
-	if (U_FAILURE(err)) {
-		errln("Failed to instantiate transliterator with fake ID");
-		delete t1;
-		Transliterator::unregister(realID);
-		return;
-	}
+    t1 = Transliterator::createInstance(shortID, UTRANS_FORWARD, err);
+    if (U_SUCCESS(err)) {
+        errln("Instantiation with short ID succeeded after short ID was unregistered");
+        delete t1;
+    }
 
-	t1->toRules(rules1, TRUE);
-	t2->toRules(rules2, TRUE);
-	if (rules1 != rules2)
-		errln("Alias transliterators aren't the same");
+    // try the same thing again, but this time with something other than
+    // an instance of CompoundTransliterator
+    UnicodeString realID("Latin-Greek");
+    UnicodeString fakeID("Latin-dlgkjdflkjdl");
+    Transliterator::registerAlias(fakeID, realID);
 
-	delete t1;
-	delete t2;
-	Transliterator::unregister(fakeID);
+    err = U_ZERO_ERROR;
+    t1 = Transliterator::createInstance(realID, UTRANS_FORWARD, err);
+    if (U_FAILURE(err)) {
+        errln("Failed to instantiate transliterator with real ID");
+        Transliterator::unregister(realID);
+        return;
+    }
+    t2 = Transliterator::createInstance(fakeID, UTRANS_FORWARD, err);
+    if (U_FAILURE(err)) {
+        errln("Failed to instantiate transliterator with fake ID");
+        delete t1;
+        Transliterator::unregister(realID);
+        return;
+    }
+
+    t1->toRules(rules1, TRUE);
+    t2->toRules(rules2, TRUE);
+    if (rules1 != rules2)
+        errln("Alias transliterators aren't the same");
+
+    delete t1;
+    delete t2;
+    Transliterator::unregister(fakeID);
 }
 
 //======================================================================

Modified: trunk/source/test/intltest/transtst.h
===================================================================
--- trunk/source/test/intltest/transtst.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/transtst.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-*   Copyright (C) 1999-2005, International Business Machines
+*   Copyright (C) 1999-2006, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   Date        Name        Description
@@ -345,19 +345,19 @@
     void TestAlternateSyntax(void);
 
     /**
-	 * Tests the multiple-pass syntax
-	 */
-	void TestBeginEnd(void);
+     * Tests the multiple-pass syntax
+     */
+    void TestBeginEnd(void);
 
     /**
-	 * Tests that toRules() works right with the multiple-pass syntax
-	 */
-	void TestBeginEndToRules(void);
+     * Tests that toRules() works right with the multiple-pass syntax
+     */
+    void TestBeginEndToRules(void);
 
-	/**
-	 * Tests the registerAlias() function
-	 */
-	void TestRegisterAlias(void);
+    /**
+     * Tests the registerAlias() function
+     */
+    void TestRegisterAlias(void);
 
     //======================================================================
     // Support methods

Modified: trunk/source/test/intltest/tsdtfmsy.cpp
===================================================================
--- trunk/source/test/intltest/tsdtfmsy.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/tsdtfmsy.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -61,17 +61,17 @@
     DateFormatSymbols::DtWidthType width[] = {DateFormatSymbols::WIDE, DateFormatSymbols::ABBREVIATED, DateFormatSymbols::NARROW};
 
     for (int32_t i = 0; i < 2; i++) {
-		for (int32_t j = 0; j < 3; j++) {
+        for (int32_t j = 0; j < 3; j++) {
             int32_t cnt;
-			const UnicodeString * month = symbol->getMonths(cnt,context[i],width[j]);
+            const UnicodeString * month = symbol->getMonths(cnt,context[i],width[j]);
 
-		    logln((UnicodeString)"size = " + cnt);
+            logln((UnicodeString)"size = " + cnt);
 
-		    for (int32_t k = 0; k < cnt; k++) {
-		        logln(month[k]);
-			}
-		}
-	}
+            for (int32_t k = 0; k < cnt; k++) {
+                logln(month[k]);
+            }
+        }
+    }
     delete symbol;
 }
 
@@ -86,17 +86,17 @@
     DateFormatSymbols::DtWidthType width[] = {DateFormatSymbols::WIDE, DateFormatSymbols::ABBREVIATED, DateFormatSymbols::NARROW};
 
     for (int32_t i = 0; i < 2; i++) {
-		for (int32_t j = 0; j < 3; j++) {
+        for (int32_t j = 0; j < 3; j++) {
             int32_t cnt;
-			const UnicodeString * wd = symbol->getWeekdays(cnt,context[i],width[j]);
+            const UnicodeString * wd = symbol->getWeekdays(cnt,context[i],width[j]);
 
-		    logln((UnicodeString)"size = " + cnt);
+            logln((UnicodeString)"size = " + cnt);
 
-		    for (int32_t k = 0; k < cnt; k++) {
-		        logln(wd[k]);
-			}
-		}
-	}
+            for (int32_t k = 0; k < cnt; k++) {
+                logln(wd[k]);
+            }
+        }
+    }
     delete symbol;
 }
 

Modified: trunk/source/test/intltest/utxttest.cpp
===================================================================
--- trunk/source/test/intltest/utxttest.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/utxttest.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -551,7 +551,7 @@
     //  Check the length from the UText
     //
     int64_t expectedLen = cpMap[cpCount].nativeIdx;
-    int64_t utlen = ut->nativeLength(ut);
+    int64_t utlen = utext_nativeLength(ut);
     TEST_ASSERT(expectedLen == utlen);
 
     //
@@ -1276,16 +1276,26 @@
 }
 U_CDECL_END
 
+// Function table to be used with this fragmented text provider.
+//   Initialized in the open function.
+UTextFuncs  fragmentFuncs;
 
+// Open function for the fragmented text provider.
 UText *
 openFragmentedUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status) {
     ut = utext_openUnicodeString(ut, s, status);
     if (U_FAILURE(*status)) {
         return ut;
     }
-    ut->access = fragTextAccess;
+
+    // Copy of the function table from the stock UnicodeString UText,
+    //   and replace the entry for the access function.
+    memcpy(&fragmentFuncs, ut->pFuncs, sizeof(fragmentFuncs));
+    fragmentFuncs.access = fragTextAccess;
+    ut->pFuncs = &fragmentFuncs;
+
     ut->chunkContents = (UChar *)&ut->b;
-    ut->access(ut, 0, TRUE);
+    ut->pFuncs->access(ut, 0, TRUE);
     return ut;
 }
 

Modified: trunk/source/test/intltest/winnmtst.cpp
===================================================================
--- trunk/source/test/intltest/winnmtst.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/intltest/winnmtst.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -30,6 +30,7 @@
 #include "cstring.h"
 #include "locmap.h"
 #include "wintz.h"
+#include "uassert.h"
 
 #   define WIN32_LEAN_AND_MEAN
 #   define VC_EXTRALEAN
@@ -137,11 +138,16 @@
 
     nBuffer[0] = 0x0000;
 
+    /* Due to the arguments causing a result to be <= 23 characters (+2 for NULL and minus),
+    we don't need to reallocate the buffer. */
     va_start(args, fmt);
-    result = vswprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
+    result = _vsnwprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
     va_end(args);
 
-    if (result < 0) {
+    /* Just to make sure of the above statement, we add this assert */
+    U_ASSERT(result >=0);
+    // The following code is not used because _vscwprintf isn't available on MinGW at the moment.
+    /*if (result < 0) {
         int newLength;
 
         va_start(args, fmt);
@@ -151,10 +157,11 @@
         nBuffer = NEW_ARRAY(UChar, newLength + 1);
 
         va_start(args, fmt);
-        result = vswprintf(nBuffer, newLength + 1, fmt, args);
+        result = _vsnwprintf(nBuffer, newLength + 1, fmt, args);
         va_end(args);
-    }
+    }*/
 
+
     // vswprintf is sensitive to the locale set by setlocale. For some locales
     // it doesn't use "." as the decimal separator, which is what GetNumberFormatW
     // and GetCurrencyFormatW both expect to see.
@@ -212,9 +219,9 @@
         DELETE_ARRAY(buffer);
     }
 
-    if (nBuffer != nStackBuffer) {
+    /*if (nBuffer != nStackBuffer) {
         DELETE_ARRAY(nBuffer);
-    }
+    }*/
 
     return appendTo;
 }

Modified: trunk/source/test/iotest/filetst.c
===================================================================
--- trunk/source/test/iotest/filetst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/iotest/filetst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -436,12 +436,12 @@
     }
 
     u_fputc(0x3BC, myFile);
-	if (u_fputc(0x110000, myFile) != U_EOF) {
+    if (u_fputc(0x110000, myFile) != U_EOF) {
         log_err("u_fputc should return U_EOF for 0x110000.\n");
-	}
-	if (u_fputc((UChar32)0xFFFFFFFFu, myFile) != U_EOF) {
+    }
+    if (u_fputc((UChar32)0xFFFFFFFFu, myFile) != U_EOF) {
         log_err("u_fputc should return U_EOF for 0xFFFFFFFF.\n");
-	}
+    }
     u_fputc(0xFF41, myFile);
     u_memset(buffer, 0xBEEF, sizeof(buffer)/sizeof(buffer[0]));
     u_memset(expectedBuffer, 0, sizeof(expectedBuffer)/sizeof(expectedBuffer[0]));
@@ -1399,32 +1399,32 @@
 static void TestUnicodeFormat(void)
 {
 #if !UCONFIG_NO_FORMATTING
-	/* Make sure that invariant conversion doesn't happen on the _u formats. */
+    /* Make sure that invariant conversion doesn't happen on the _u formats. */
     UChar myUString[256];
-	UFILE *myFile;
-	static const UChar TEST_STR[] = { 0x03BC, 0x0025, 0x0024, 0};
-	static const UChar PERCENT_S[] = { 0x03BC, 0x0025, 0x0053, 0};
+    UFILE *myFile;
+    static const UChar TEST_STR[] = { 0x03BC, 0x0025, 0x0024, 0};
+    static const UChar PERCENT_S[] = { 0x03BC, 0x0025, 0x0053, 0};
 
-	u_memset(myUString, 0x2a, sizeof(myUString)/sizeof(*myUString));
+    u_memset(myUString, 0x2a, sizeof(myUString)/sizeof(*myUString));
 
     myFile = u_fopen(STANDARD_TEST_FILE, "w", NULL, "UTF-8");
     if (!myFile) {
         log_err("Test file can't be opened\n");
         return;
     }
-	u_fprintf_u(myFile, PERCENT_S, TEST_STR);
-	u_fclose(myFile);
+    u_fprintf_u(myFile, PERCENT_S, TEST_STR);
+    u_fclose(myFile);
 
     myFile = u_fopen(STANDARD_TEST_FILE, "r", NULL, "UTF-8");
     if (!myFile) {
         log_err("Test file can't be opened\n");
         return;
     }
-	u_fscanf_u(myFile, PERCENT_S, myUString);
-	u_fclose(myFile);
-	if (u_strcmp(TEST_STR, myUString) != 0) {
+    u_fscanf_u(myFile, PERCENT_S, myUString);
+    u_fclose(myFile);
+    if (u_strcmp(TEST_STR, myUString) != 0) {
         log_err("u_fscanf_u doesn't work.\n");
-	}
+    }
 #endif
 }
 

Modified: trunk/source/test/iotest/stream.cpp
===================================================================
--- trunk/source/test/iotest/stream.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/iotest/stream.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-*   Copyright (C) 2002-2005, International Business Machines
+*   Copyright (C) 2002-2006, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *   file name:  iotest.cpp
@@ -21,7 +21,7 @@
 #include "iotest.h"
 
 #if U_IOSTREAM_SOURCE >= 199711
-#if defined(U_LINUX) || defined(U_CYGWIN) || defined(U_DARWIN)
+#if defined(__GNUC__) && __GNUC__ >= 4
 #define USE_SSTREAM 1
 #include <sstream>
 #else

Modified: trunk/source/test/iotest/strtst.c
===================================================================
--- trunk/source/test/iotest/strtst.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/iotest/strtst.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -282,7 +282,7 @@
 
     u_fprintf(strFile, "%d", 1234);
     u_frewind(strFile);
-	numResult = -1;
+    numResult = -1;
     u_fscanf(strFile, "%d", &numResult);
     u_fclose(strFile);
     u_uastrcpy(uBuffer,"1.234");
@@ -297,15 +297,15 @@
     strFile = u_fstropen(testStr, sizeof(testStr)/sizeof(testStr[0]), NULL);
     u_fprintf(strFile, "%d", 1234);
     u_frewind(strFile);
-	numResult = -1;
+    numResult = -1;
     u_fscanf(strFile, "%d", &numResult);
     u_fclose(strFile);
     if (numResult != 1234) {
-		log_err("u_fscanf failed to work on a default locale string Got: %d, Expected: 1234\n", numResult);
+        log_err("u_fscanf failed to work on a default locale string Got: %d, Expected: 1234\n", numResult);
     }
-	if (u_fstropen(testStr, -1, NULL) != NULL) {
-		log_err("u_fstropen returned a UFILE* on a negative buffer size\n", numResult);
-	}
+    if (u_fstropen(testStr, -1, NULL) != NULL) {
+        log_err("u_fstropen returned a UFILE* on a negative buffer size\n", numResult);
+    }
 #endif
 }
 

Modified: trunk/source/test/perf/charperf/charperf.cpp
===================================================================
--- trunk/source/test/perf/charperf/charperf.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/charperf/charperf.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /********************************************************************
  * COPYRIGHT:
- * Copyright (C) 2002-2003 IBM, Inc.   All Rights Reserved.
+ * Copyright (C) 2002-2006 IBM, Inc.   All Rights Reserved.
  *
  ********************************************************************/
 /*****************************************************************************
@@ -23,9 +23,9 @@
 #include "uoptions.h"
 
 UOption options[] = {
-						UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG),
-						UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG),
-					};
+    UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG),
+        UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG),
+};
 int MIN_OPTION_ = 0;
 int MAX_OPTION_ = 1;
 
@@ -33,41 +33,41 @@
 {
     UErrorCode status = U_ZERO_ERROR;
     CharPerformanceTest test(argc, argv, status);
-	if (U_FAILURE(status)){
+    if (U_FAILURE(status)){
         return status;
     }
     if (test.run() == FALSE){
         fprintf(stderr, "FAILED: Tests could not be run please check the "
-			            "arguments.\n");
+            "arguments.\n");
         return -1;
     }
     return 0;
 }
 
 CharPerformanceTest::CharPerformanceTest(int32_t argc, const char *argv[],
-										 UErrorCode &status)
-										: UPerfTest(argc, argv, status)
+                                         UErrorCode &status)
+                                         : UPerfTest(argc, argv, status)
 {
-	if (status== U_ILLEGAL_ARGUMENT_ERROR){
-       fprintf(stderr,gUsageString, "charperf");
-       return;
+    if (status== U_ILLEGAL_ARGUMENT_ERROR){
+        fprintf(stderr,gUsageString, "charperf");
+        return;
     }
     if (U_FAILURE(status)){
         fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", 
-			    u_errorName(status));
+            u_errorName(status));
         return;
     }
 
-	if (_remainingArgc < 0) {
-		// that means there are some -names not matched in the super class
-		// first tag is always skipped in u_parseArgs
-		int size = - _remainingArgc;
-		argv += argc - size;
-		argc = size;
-		_remainingArgc = u_parseArgs(argc, (char**)argv, 
-			        (int32_t)(sizeof(options)/sizeof(options[0])), options);
-	}
-	MIN_ = 0;
+    if (_remainingArgc < 0) {
+        // that means there are some -names not matched in the super class
+        // first tag is always skipped in u_parseArgs
+        int size = - _remainingArgc;
+        argv += argc - size;
+        argc = size;
+        _remainingArgc = u_parseArgs(argc, (char**)argv, 
+            (int32_t)(sizeof(options)/sizeof(options[0])), options);
+    }
+    MIN_ = 0;
     if (sizeof(wchar_t) > 2)  {
         // for stdlibs like glibc that supports 32 bits wchar
         // we test for the whole unicode character set by default
@@ -77,12 +77,12 @@
         MAX_ = 0xffff;
     }
     printf("MAX_ size will be 0x%x\n", MAX_);
-	if (options[MIN_OPTION_].doesOccur) {
-		MIN_ = atoi(options[MIN_OPTION_].value);
-	}
-	if (options[MAX_OPTION_].doesOccur) {
-		MAX_ = atoi(options[MAX_OPTION_].value);
-	}
+    if (options[MIN_OPTION_].doesOccur) {
+        MIN_ = atoi(options[MIN_OPTION_].value);
+    }
+    if (options[MAX_OPTION_].doesOccur) {
+        MAX_ = atoi(options[MAX_OPTION_].value);
+    }
 }
 
 CharPerformanceTest::~CharPerformanceTest()
@@ -90,32 +90,32 @@
 }
 
 UPerfFunction* CharPerformanceTest::runIndexedTest(int32_t index, UBool exec,
-												   const char *&name, 
-												   char* par) 
+                                                   const char *&name, 
+                                                   char* par) 
 {
     switch (index) {
         TESTCASE(0, TestIsAlpha);
-		TESTCASE(1, TestIsUpper);
-		TESTCASE(2, TestIsLower);
-		TESTCASE(3, TestIsDigit);
-		TESTCASE(4, TestIsSpace);
-		TESTCASE(5, TestIsAlphaNumeric);
-		TESTCASE(6, TestIsPrint);
-		TESTCASE(7, TestIsControl);
-		TESTCASE(8, TestToLower);
-		TESTCASE(9, TestToUpper);
-		TESTCASE(10, TestIsWhiteSpace);
-		TESTCASE(11, TestStdLibIsAlpha);
-		TESTCASE(12, TestStdLibIsUpper);
-		TESTCASE(13, TestStdLibIsLower);
-		TESTCASE(14, TestStdLibIsDigit);
-		TESTCASE(15, TestStdLibIsSpace);
-		TESTCASE(16, TestStdLibIsAlphaNumeric);
-		TESTCASE(17, TestStdLibIsPrint);
-		TESTCASE(18, TestStdLibIsControl);
-		TESTCASE(19, TestStdLibToLower);
-		TESTCASE(20, TestStdLibToUpper);
-		TESTCASE(21, TestStdLibIsWhiteSpace);
+        TESTCASE(1, TestIsUpper);
+        TESTCASE(2, TestIsLower);
+        TESTCASE(3, TestIsDigit);
+        TESTCASE(4, TestIsSpace);
+        TESTCASE(5, TestIsAlphaNumeric);
+        TESTCASE(6, TestIsPrint);
+        TESTCASE(7, TestIsControl);
+        TESTCASE(8, TestToLower);
+        TESTCASE(9, TestToUpper);
+        TESTCASE(10, TestIsWhiteSpace);
+        TESTCASE(11, TestStdLibIsAlpha);
+        TESTCASE(12, TestStdLibIsUpper);
+        TESTCASE(13, TestStdLibIsLower);
+        TESTCASE(14, TestStdLibIsDigit);
+        TESTCASE(15, TestStdLibIsSpace);
+        TESTCASE(16, TestStdLibIsAlphaNumeric);
+        TESTCASE(17, TestStdLibIsPrint);
+        TESTCASE(18, TestStdLibIsControl);
+        TESTCASE(19, TestStdLibToLower);
+        TESTCASE(20, TestStdLibToUpper);
+        TESTCASE(21, TestStdLibIsWhiteSpace);
         default: 
             name = ""; 
             return NULL;
@@ -125,131 +125,131 @@
 
 UPerfFunction* CharPerformanceTest::TestIsAlpha()
 {
-	return new CharPerfFunction(isAlpha, MIN_, MAX_);
+    return new CharPerfFunction(isAlpha, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsUpper()
 {
-	return new CharPerfFunction(isUpper, MIN_, MAX_);
+    return new CharPerfFunction(isUpper, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsLower()
 {
-	return new CharPerfFunction(isLower, MIN_, MAX_);
+    return new CharPerfFunction(isLower, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsDigit()
 {
-	return new CharPerfFunction(isDigit, MIN_, MAX_);
+    return new CharPerfFunction(isDigit, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsSpace()
 {
-	return new CharPerfFunction(isSpace, MIN_, MAX_);
+    return new CharPerfFunction(isSpace, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsAlphaNumeric()
 {
-	return new CharPerfFunction(isAlphaNumeric, MIN_, MAX_);
+    return new CharPerfFunction(isAlphaNumeric, MIN_, MAX_);
 }
 
 /**
- * This test may be different since c lib has a type PUNCT and it is printable.
- * iswgraph is not used for testing since it is a subset of iswprint with the
- * exception of returning true for white spaces. no match found in icu4c.
- */
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
 UPerfFunction* CharPerformanceTest::TestIsPrint()
 {
-	return new CharPerfFunction(isPrint, MIN_, MAX_);
+    return new CharPerfFunction(isPrint, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsControl()
 {
-	return new CharPerfFunction(isControl, MIN_, MAX_);
+    return new CharPerfFunction(isControl, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestToLower()
 {
-	return new CharPerfFunction(toLower, MIN_, MAX_);
+    return new CharPerfFunction(toLower, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestToUpper()
 {
-	return new CharPerfFunction(toUpper, MIN_, MAX_);
+    return new CharPerfFunction(toUpper, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestIsWhiteSpace()
 {
-	return new CharPerfFunction(isWhiteSpace, MIN_, MAX_);
+    return new CharPerfFunction(isWhiteSpace, MIN_, MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsAlpha()
 {
-	return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsUpper()
 {
-	return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsLower()
 {
-	return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsDigit()
 {
-	return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsSpace()
 {
-	return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsAlphaNumeric()
 {
-	return new StdLibCharPerfFunction(StdLibIsAlphaNumeric, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsAlphaNumeric, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 /**
- * This test may be different since c lib has a type PUNCT and it is printable.
- * iswgraph is not used for testing since it is a subset of iswprint with the
- * exception of returning true for white spaces. no match found in icu4c.
- */
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
 UPerfFunction* CharPerformanceTest::TestStdLibIsPrint()
 {
-	return new StdLibCharPerfFunction(StdLibIsPrint, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsPrint, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsControl()
 {
-	return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibToLower()
 {
-	return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibToUpper()
 {
-	return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }
 
 UPerfFunction* CharPerformanceTest::TestStdLibIsWhiteSpace()
 {
-	return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_, 
-		                              (wchar_t)MAX_);
+    return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_, 
+        (wchar_t)MAX_);
 }

Modified: trunk/source/test/perf/charperf/charperf.h
===================================================================
--- trunk/source/test/perf/charperf/charperf.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/charperf/charperf.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-* Copyright (c) 2002-2005, International Business Machines
+* Copyright (c) 2002-2006, International Business Machines
 * Corporation and others.  All Rights Reserved.
 **********************************************************************
 **********************************************************************
@@ -22,98 +22,98 @@
 class CharPerfFunction : public UPerfFunction
 {
 public:
-	virtual void call(UErrorCode* status)
-	{
-		for (UChar32 i = MIN_; i < MAX_; i ++) {
-			(*m_fn_)(i);
-		}
-	}
+    virtual void call(UErrorCode* status)
+    {
+        for (UChar32 i = MIN_; i < MAX_; i ++) {
+            (*m_fn_)(i);
+        }
+    }
 
-	virtual long getOperationsPerIteration()
-	{
-		return MAX_ - MIN_;
-	}
-	CharPerfFunction(CharPerfFn func, UChar32 min, UChar32 max)
-	{
-		m_fn_ = func;
-		MIN_ = min;
-		MAX_ = max;
-	}   
+    virtual long getOperationsPerIteration()
+    {
+        return MAX_ - MIN_;
+    }
+    CharPerfFunction(CharPerfFn func, UChar32 min, UChar32 max)
+    {
+        m_fn_ = func;
+        MIN_ = min;
+        MAX_ = max;
+    }   
 
 private:
-	CharPerfFn m_fn_;
-	UChar32 MIN_;
-	UChar32 MAX_;
+    CharPerfFn m_fn_;
+    UChar32 MIN_;
+    UChar32 MAX_;
 }; 
 
 class StdLibCharPerfFunction : public UPerfFunction
 {
 public:
-	virtual void call(UErrorCode* status)
-	{
-		// note wchar_t is unsigned, it will revert to 0 once it reaches 
-		// 65535
-		for (wchar_t i = MIN_; i < MAX_; i ++) {
-			(*m_fn_)(i);
-		}
-	}
+    virtual void call(UErrorCode* status)
+    {
+        // note wchar_t is unsigned, it will revert to 0 once it reaches 
+        // 65535
+        for (wchar_t i = MIN_; i < MAX_; i ++) {
+            (*m_fn_)(i);
+        }
+    }
 
-	virtual long getOperationsPerIteration()
-	{
-		return MAX_ - MIN_;
-	}
+    virtual long getOperationsPerIteration()
+    {
+        return MAX_ - MIN_;
+    }
 
-	StdLibCharPerfFunction(StdLibCharPerfFn func, wchar_t min, wchar_t max)
-	{
-		m_fn_ = func;			
-		MIN_ = min;
-		MAX_ = max;
-	}   
+    StdLibCharPerfFunction(StdLibCharPerfFn func, wchar_t min, wchar_t max)
+    {
+        m_fn_ = func;			
+        MIN_ = min;
+        MAX_ = max;
+    }   
 
-	~StdLibCharPerfFunction()
-	{			
-	}
+    ~StdLibCharPerfFunction()
+    {			
+    }
 
 private:
-	StdLibCharPerfFn m_fn_;
-	wchar_t MIN_;
-	wchar_t MAX_;
+    StdLibCharPerfFn m_fn_;
+    wchar_t MIN_;
+    wchar_t MAX_;
 };
 
 class CharPerformanceTest : public UPerfTest
 {
 public:
-	CharPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
-	~CharPerformanceTest();
-	virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
-		                                  const char *&name, 
-										  char *par = NULL);     
-	UPerfFunction* TestIsAlpha();
-	UPerfFunction* TestIsUpper();
-	UPerfFunction* TestIsLower();
-	UPerfFunction* TestIsDigit();
-	UPerfFunction* TestIsSpace();
-	UPerfFunction* TestIsAlphaNumeric();
-	UPerfFunction* TestIsPrint();
-	UPerfFunction* TestIsControl();
-	UPerfFunction* TestToLower();
-	UPerfFunction* TestToUpper();
-	UPerfFunction* TestIsWhiteSpace();
-	UPerfFunction* TestStdLibIsAlpha();
-	UPerfFunction* TestStdLibIsUpper();
-	UPerfFunction* TestStdLibIsLower();
-	UPerfFunction* TestStdLibIsDigit();
-	UPerfFunction* TestStdLibIsSpace();
-	UPerfFunction* TestStdLibIsAlphaNumeric();
-	UPerfFunction* TestStdLibIsPrint();
-	UPerfFunction* TestStdLibIsControl();
-	UPerfFunction* TestStdLibToLower();
-	UPerfFunction* TestStdLibToUpper();
-	UPerfFunction* TestStdLibIsWhiteSpace();
+    CharPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+    ~CharPerformanceTest();
+    virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+        const char *&name, 
+        char *par = NULL);     
+    UPerfFunction* TestIsAlpha();
+    UPerfFunction* TestIsUpper();
+    UPerfFunction* TestIsLower();
+    UPerfFunction* TestIsDigit();
+    UPerfFunction* TestIsSpace();
+    UPerfFunction* TestIsAlphaNumeric();
+    UPerfFunction* TestIsPrint();
+    UPerfFunction* TestIsControl();
+    UPerfFunction* TestToLower();
+    UPerfFunction* TestToUpper();
+    UPerfFunction* TestIsWhiteSpace();
+    UPerfFunction* TestStdLibIsAlpha();
+    UPerfFunction* TestStdLibIsUpper();
+    UPerfFunction* TestStdLibIsLower();
+    UPerfFunction* TestStdLibIsDigit();
+    UPerfFunction* TestStdLibIsSpace();
+    UPerfFunction* TestStdLibIsAlphaNumeric();
+    UPerfFunction* TestStdLibIsPrint();
+    UPerfFunction* TestStdLibIsControl();
+    UPerfFunction* TestStdLibToLower();
+    UPerfFunction* TestStdLibToUpper();
+    UPerfFunction* TestStdLibIsWhiteSpace();
 
 private:
-	UChar32 MIN_;
-	UChar32 MAX_;
+    UChar32 MIN_;
+    UChar32 MAX_;
 };
 
 inline void isAlpha(UChar32 ch) 
@@ -123,117 +123,117 @@
 
 inline void isUpper(UChar32 ch)
 {
-	u_isupper(ch);
+    u_isupper(ch);
 }
 
 inline void isLower(UChar32 ch)
 {
-	u_islower(ch);
+    u_islower(ch);
 }
 
 inline void isDigit(UChar32 ch)
 {
-	u_isdigit(ch);
+    u_isdigit(ch);
 }
 
 inline void isSpace(UChar32 ch)
 {
-	u_isspace(ch);
+    u_isspace(ch);
 }
 
 inline void isAlphaNumeric(UChar32 ch)
 {
-	u_isalnum(ch);
+    u_isalnum(ch);
 }
 
 /**
- * This test may be different since c lib has a type PUNCT and it is printable.
- * iswgraph is not used for testing since it is a subset of iswprint with the
- * exception of returning true for white spaces. no match found in icu4c.
- */
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
 inline void isPrint(UChar32 ch)
 {
-	u_isprint(ch);
+    u_isprint(ch);
 }
 
 inline void isControl(UChar32 ch)
 {
-	u_iscntrl(ch);
+    u_iscntrl(ch);
 }
 
 inline void toLower(UChar32 ch)
 {
-	u_tolower(ch);
+    u_tolower(ch);
 }
 
 inline void toUpper(UChar32 ch)
 {
-	u_toupper(ch);
+    u_toupper(ch);
 }
 
 inline void isWhiteSpace(UChar32 ch)
 {
-	u_isWhitespace(ch);
+    u_isWhitespace(ch);
 }
 
 inline void StdLibIsAlpha(wchar_t ch)
 {
-	iswalpha(ch);
+    iswalpha(ch);
 }
 
 inline void StdLibIsUpper(wchar_t ch)
 {
-	iswupper(ch);
+    iswupper(ch);
 }
 
 inline void StdLibIsLower(wchar_t ch)
 {
-	iswlower(ch);
+    iswlower(ch);
 }
 
 inline void StdLibIsDigit(wchar_t ch)
 {
-	iswdigit(ch);
+    iswdigit(ch);
 }
 
 inline void StdLibIsSpace(wchar_t ch)
 {
-	iswspace(ch);
+    iswspace(ch);
 }
 
 inline void StdLibIsAlphaNumeric(wchar_t ch)
 {
-	iswalnum(ch);
+    iswalnum(ch);
 }
 
 /**
- * This test may be different since c lib has a type PUNCT and it is printable.
- * iswgraph is not used for testing since it is a subset of iswprint with the
- * exception of returning true for white spaces. no match found in icu4c.
- */
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
 inline void StdLibIsPrint(wchar_t ch)
 {
-	iswprint(ch);
+    iswprint(ch);
 }
 
 inline void StdLibIsControl(wchar_t ch)
 {
-	iswcntrl(ch);
+    iswcntrl(ch);
 }
 
 inline void StdLibToLower(wchar_t ch)
 {
-	towlower(ch);
+    towlower(ch);
 }
 
 inline void StdLibToUpper(wchar_t ch)
 {
-	towupper(ch);
+    towupper(ch);
 }
 
 inline void StdLibIsWhiteSpace(wchar_t ch)
 {
-	iswspace(ch);
+    iswspace(ch);
 }
 
 #endif // CHARPERF_H

Modified: trunk/source/test/perf/collperf/collperf.cpp
===================================================================
--- trunk/source/test/perf/collperf/collperf.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/collperf/collperf.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,8 +1,8 @@
 /********************************************************************
- * COPYRIGHT:
- * Copyright (C) 2001-2006 IBM, Inc.   All Rights Reserved.
- *
- ********************************************************************/
+* COPYRIGHT:
+* Copyright (C) 2001-2006 IBM, Inc.   All Rights Reserved.
+*
+********************************************************************/
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -17,29 +17,29 @@
 
 
 /* To store an array of string<UNIT> in continue space.
-   Since string<UNIT> itself is treated as an array of UNIT, this 
-   class will ease our memory management for an array of string<UNIT>.
+Since string<UNIT> itself is treated as an array of UNIT, this 
+class will ease our memory management for an array of string<UNIT>.
 */
 
 //template<typename UNIT> 
 #define COMPATCT_ARRAY(CompactArrays, UNIT) \
 struct CompactArrays{\
-	CompactArrays(const CompactArrays & );\
-	CompactArrays & operator=(const CompactArrays & );\
+    CompactArrays(const CompactArrays & );\
+    CompactArrays & operator=(const CompactArrays & );\
     int32_t   count;/*total number of the strings*/ \
     int32_t * index;/*relative offset in data*/ \
     UNIT    * data; /*the real space to hold strings*/ \
-\
-	~CompactArrays(){free(index);free(data);} \
+    \
+    ~CompactArrays(){free(index);free(data);} \
     CompactArrays():data(NULL), index(NULL), count(0){ \
-        index = (int32_t *) realloc(index, sizeof(int32_t)); \
-        index[0] = 0; \
+    index = (int32_t *) realloc(index, sizeof(int32_t)); \
+    index[0] = 0; \
     } \
     void append_one(int32_t theLen){ /*include terminal NULL*/ \
-        count++; \
-        index = (int32_t *) realloc(index, sizeof(int32_t) * (count + 1)); \
-        index[count] = index[count - 1] + theLen; \
-        data = (UNIT *) realloc(data, sizeof(UNIT) * index[count]); \
+    count++; \
+    index = (int32_t *) realloc(index, sizeof(int32_t) * (count + 1)); \
+    index[count] = index[count - 1] + theLen; \
+    data = (UNIT *) realloc(data, sizeof(UNIT) * index[count]); \
     } \
     UNIT * last(){return data + index[count - 1];} \
     UNIT * dataOf(int32_t i){return data + index[i];} \
@@ -55,8 +55,8 @@
 COMPATCT_ARRAY(CA_char, char)
 COMPATCT_ARRAY(CA_uint8, uint8_t)
 COMPATCT_ARRAY(CA_win_wchar, WCHAR)
-    
 
+
 struct DataIndex {
     static DWORD        win_langid;     // for qsort callback function
     static UCollator *  col;            // for qsort callback function
@@ -72,18 +72,18 @@
 };
 DWORD DataIndex::win_langid;
 UCollator * DataIndex::col;
-    
 
-    
+
+
 class CmdKeyGen : public UPerfFunction {
- 	typedef	void (CmdKeyGen::* Func)(int32_t);
+    typedef	void (CmdKeyGen::* Func)(int32_t);
     enum{MAX_KEY_LENGTH = 5000};
     UCollator * col;
     DWORD       win_langid;
     int32_t     count;
     DataIndex * data;
-	Func 	    fn; 
-    
+    Func 	    fn; 
+
     union { // to save sapce
         uint8_t		icu_key[MAX_KEY_LENGTH];
         char        posix_key[MAX_KEY_LENGTH];
@@ -93,38 +93,38 @@
     CmdKeyGen(UErrorCode, UCollator * col,DWORD win_langid, int32_t count, DataIndex * data,Func fn,int32_t)
         :col(col),win_langid(win_langid), count(count), data(data), fn(fn){}
 
-	virtual long getOperationsPerIteration(){return count;}
+        virtual long getOperationsPerIteration(){return count;}
 
-	virtual void call(UErrorCode* status){
-		for(int32_t i = 0; i< count; i++){
-			(this->*fn)(i);
+        virtual void call(UErrorCode* status){
+            for(int32_t i = 0; i< count; i++){
+                (this->*fn)(i);
+            }
         }
-	}
 
-	void icu_key_null(int32_t i){
-		ucol_getSortKey(col, data[i].icu_data, -1, icu_key, MAX_KEY_LENGTH);
-	}
+        void icu_key_null(int32_t i){
+            ucol_getSortKey(col, data[i].icu_data, -1, icu_key, MAX_KEY_LENGTH);
+        }
 
-	void icu_key_len(int32_t i){
-		ucol_getSortKey(col, data[i].icu_data, data[i].icu_data_len, icu_key, MAX_KEY_LENGTH);
-	}
+        void icu_key_len(int32_t i){
+            ucol_getSortKey(col, data[i].icu_data, data[i].icu_data_len, icu_key, MAX_KEY_LENGTH);
+        }
 
-    // pre-generated in CollPerfTest::prepareData(), need not to check error here
-	void win_key_null(int32_t i){
-	    //LCMAP_SORTsk             0x00000400  // WC sort sk (normalize)
-        LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, -1, win_key, MAX_KEY_LENGTH);
-	}
+        // pre-generated in CollPerfTest::prepareData(), need not to check error here
+        void win_key_null(int32_t i){
+            //LCMAP_SORTsk             0x00000400  // WC sort sk (normalize)
+            LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, -1, win_key, MAX_KEY_LENGTH);
+        }
 
-	void win_key_len(int32_t i){
-        LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, data[i].win_data_len, win_key, MAX_KEY_LENGTH);
-	}
+        void win_key_len(int32_t i){
+            LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, data[i].win_data_len, win_key, MAX_KEY_LENGTH);
+        }
 
-	void posix_key_null(int32_t i){
-        strxfrm(posix_key, data[i].posix_data, MAX_KEY_LENGTH);
-	}
+        void posix_key_null(int32_t i){
+            strxfrm(posix_key, data[i].posix_data, MAX_KEY_LENGTH);
+        }
 };
 
-    
+
 class CmdIter : public UPerfFunction {
     typedef	void (CmdIter::* Func)(UErrorCode* , int32_t );
     int32_t             count;
@@ -135,45 +135,45 @@
 public:
     CmdIter(UErrorCode & status, UCollator * col, int32_t count, CA_uchar *data, Func fn, int32_t,int32_t)
         :count(count), data(data), fn(fn){
-        exec_count = 0;
-		UChar dummytext[] = {0, 0};
-        iter = ucol_openElements(col, NULL, 0, &status);
-		ucol_setText(iter, dummytext, 1, &status);
-    }
-    ~CmdIter(){
-        ucol_closeElements(iter);
-    }
+            exec_count = 0;
+            UChar dummytext[] = {0, 0};
+            iter = ucol_openElements(col, NULL, 0, &status);
+            ucol_setText(iter, dummytext, 1, &status);
+        }
+        ~CmdIter(){
+            ucol_closeElements(iter);
+        }
 
-    virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
+        virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
 
-	virtual void call(UErrorCode* status){
-        exec_count = 0;
-		for(int32_t i = 0; i< count; i++){
-			(this->*fn)(status, i);
+        virtual void call(UErrorCode* status){
+            exec_count = 0;
+            for(int32_t i = 0; i< count; i++){
+                (this->*fn)(status, i);
+            }
         }
-	}
 
-	void icu_forward_null(UErrorCode* status, int32_t i){
-		ucol_setText(iter, data->dataOf(i), -1, status);
-		while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
-	}
+        void icu_forward_null(UErrorCode* status, int32_t i){
+            ucol_setText(iter, data->dataOf(i), -1, status);
+            while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
+        }
 
-	void icu_forward_len(UErrorCode* status, int32_t i){
-		ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
-		while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
-	}
+        void icu_forward_len(UErrorCode* status, int32_t i){
+            ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
+            while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
+        }
 
-	void icu_backward_null(UErrorCode* status, int32_t i){
-		ucol_setText(iter, data->dataOf(i), -1, status);
-		while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
-	}
+        void icu_backward_null(UErrorCode* status, int32_t i){
+            ucol_setText(iter, data->dataOf(i), -1, status);
+            while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
+        }
 
-	void icu_backward_len(UErrorCode* status, int32_t i){
-		ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
-		while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
-	}
+        void icu_backward_len(UErrorCode* status, int32_t i){
+            ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
+            while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
+        }
 };
-    
+
 class CmdIterAll : public UPerfFunction {
     typedef	void (CmdIterAll::* Func)(UErrorCode* status);
     int32_t     count;
@@ -190,141 +190,141 @@
     }
     CmdIterAll(UErrorCode & status, UCollator * col, int32_t count,  UChar * data, CALL call,int32_t,int32_t)
         :count(count),data(data){
-        exec_count = 0;
-        if (call == forward_null || call == backward_null) {
-            iter = ucol_openElements(col, data, -1, &status);
-        } else {
-            iter = ucol_openElements(col, data, count, &status);
+            exec_count = 0;
+            if (call == forward_null || call == backward_null) {
+                iter = ucol_openElements(col, data, -1, &status);
+            } else {
+                iter = ucol_openElements(col, data, count, &status);
+            }
+
+            if (call == forward_null || call == forward_len){
+                fn = icu_forward_all;
+            } else {
+                fn = icu_backward_all;
+            }
         }
+        virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
 
-        if (call == forward_null || call == forward_len){
-            fn = icu_forward_all;
-        } else {
-            fn = icu_backward_all;
+        virtual void call(UErrorCode* status){
+            (this->*fn)(status);
         }
-    }
-    virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
 
-	virtual void call(UErrorCode* status){
-		(this->*fn)(status);
-	}
+        void icu_forward_all(UErrorCode* status){
+            int strlen = count - 5;
+            int count5 = 5;
+            int strindex = 0;
+            ucol_setOffset(iter, strindex, status);
+            while (TRUE) {
+                if (ucol_next(iter, status) == UCOL_NULLORDER) {
+                    break;
+                }
+                exec_count++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    ucol_setOffset(iter, strindex, status);
+                    count5 = 5;
+                }
+            }
+        }
 
-	void icu_forward_all(UErrorCode* status){
-		int strlen = count - 5;
-		int count5 = 5;
-		int strindex = 0;
-		ucol_setOffset(iter, strindex, status);
-		while (TRUE) {
-			if (ucol_next(iter, status) == UCOL_NULLORDER) {
-				break;
-			}
-			exec_count++;
-			count5 --;
-			if (count5 == 0) {
-				strindex += 10;
-				if (strindex > strlen) {
-					break;
-				}
-				ucol_setOffset(iter, strindex, status);
-				count5 = 5;
-			}
-		}
-	}
+        void icu_backward_all(UErrorCode* status){
+            int strlen = count;
+            int count5 = 5;
+            int strindex = 5;
+            ucol_setOffset(iter, strindex, status);
+            while (TRUE) {
+                if (ucol_previous(iter, status) == UCOL_NULLORDER) {
+                    break;
+                }
+                exec_count++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    ucol_setOffset(iter, strindex, status);
+                    count5 = 5;
+                }
+            }
+        }
 
-	void icu_backward_all(UErrorCode* status){
-		int strlen = count;
-		int count5 = 5;
-		int strindex = 5;
-		ucol_setOffset(iter, strindex, status);
-		while (TRUE) {
-			if (ucol_previous(iter, status) == UCOL_NULLORDER) {
-				break;
-			}
-			exec_count++;
-			count5 --;
-			if (count5 == 0) {
-				strindex += 10;
-				if (strindex > strlen) {
-					break;
-				}
-				ucol_setOffset(iter, strindex, status);
-				count5 = 5;
-			}
-		}
-	}
+};
 
-};
-    
 struct CmdQsort : public UPerfFunction{
 
-static int q_random(const void * a, const void * b){
-    uint8_t * key_a = ((DataIndex *)a)->icu_key;
-    uint8_t * key_b = ((DataIndex *)b)->icu_key;
+    static int q_random(const void * a, const void * b){
+        uint8_t * key_a = ((DataIndex *)a)->icu_key;
+        uint8_t * key_b = ((DataIndex *)b)->icu_key;
 
-    int   val_a = 0;
-    int   val_b = 0;
-    while (*key_a != 0) {val_a += val_a*37 + *key_a++;}
-    while (*key_b != 0) {val_b += val_b*37 + *key_b++;}
-    return val_a - val_b;
-}
+        int   val_a = 0;
+        int   val_b = 0;
+        while (*key_a != 0) {val_a += val_a*37 + *key_a++;}
+        while (*key_b != 0) {val_b += val_b*37 + *key_b++;}
+        return val_a - val_b;
+    }
 
 #define QCAST() \
     DataIndex * da = (DataIndex *) a; \
     DataIndex * db = (DataIndex *) b; \
     ++exec_count
 
-static int icu_strcoll_null(const void *a, const void *b){
-    QCAST(); 
-    return ucol_strcoll(da->col, da->icu_data, -1, db->icu_data, -1) - UCOL_EQUAL;
-}
-    
-static int icu_strcoll_len(const void *a, const void *b){
-    QCAST();
-    return ucol_strcoll(da->col, da->icu_data, da->icu_data_len, db->icu_data, db->icu_data_len) - UCOL_EQUAL;
-}
-    
-static int icu_cmpkey (const void *a, const void *b){ 
-    QCAST(); 
-    return strcmp((char *) da->icu_key, (char *) db->icu_key); 
-}
+    static int icu_strcoll_null(const void *a, const void *b){
+        QCAST(); 
+        return ucol_strcoll(da->col, da->icu_data, -1, db->icu_data, -1) - UCOL_EQUAL;
+    }
 
-static int win_cmp_null(const void *a, const void *b) {
-    QCAST();
-	//CSTR_LESS_THAN		1
-	//CSTR_EQUAL			2
-	//CSTR_GREATER_THAN		3
-    int t = CompareStringW(da->win_langid, 0, da->win_data, -1, db->win_data, -1);
-    if (t == 0){
-		fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
-		exit(-1);
-    } else{
-        return t - CSTR_EQUAL;
+    static int icu_strcoll_len(const void *a, const void *b){
+        QCAST();
+        return ucol_strcoll(da->col, da->icu_data, da->icu_data_len, db->icu_data, db->icu_data_len) - UCOL_EQUAL;
     }
-}
-    
-static int win_cmp_len(const void *a, const void *b) {
-    QCAST();
-    int t = CompareStringW(da->win_langid, 0, da->win_data, da->win_data_len, db->win_data, db->win_data_len);
-    if (t == 0){
-		fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
-		exit(-1);
-    } else{
-        return t - CSTR_EQUAL;
+
+    static int icu_cmpkey (const void *a, const void *b){ 
+        QCAST(); 
+        return strcmp((char *) da->icu_key, (char *) db->icu_key); 
     }
-}
 
+    static int win_cmp_null(const void *a, const void *b) {
+        QCAST();
+        //CSTR_LESS_THAN		1
+        //CSTR_EQUAL			2
+        //CSTR_GREATER_THAN		3
+        int t = CompareStringW(da->win_langid, 0, da->win_data, -1, db->win_data, -1);
+        if (t == 0){
+            fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+            exit(-1);
+        } else{
+            return t - CSTR_EQUAL;
+        }
+    }
+
+    static int win_cmp_len(const void *a, const void *b) {
+        QCAST();
+        int t = CompareStringW(da->win_langid, 0, da->win_data, da->win_data_len, db->win_data, db->win_data_len);
+        if (t == 0){
+            fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+            exit(-1);
+        } else{
+            return t - CSTR_EQUAL;
+        }
+    }
+
 #define QFUNC(name, func, data) \
     static int name (const void *a, const void *b){ \
-        QCAST(); \
-        return func(da->data, db->data); \
+    QCAST(); \
+    return func(da->data, db->data); \
     }
 
-QFUNC(posix_strcoll_null, strcoll, posix_data)
-QFUNC(posix_cmpkey, strcmp, posix_key)
-QFUNC(win_cmpkey, strcmp, win_key)
-QFUNC(win_wcscmp, wcscmp, win_data)
-QFUNC(icu_strcmp, u_strcmp, icu_data)
-QFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
+    QFUNC(posix_strcoll_null, strcoll, posix_data)
+        QFUNC(posix_cmpkey, strcmp, posix_key)
+        QFUNC(win_cmpkey, strcmp, win_key)
+        QFUNC(win_wcscmp, wcscmp, win_data)
+        QFUNC(icu_strcmp, u_strcmp, icu_data)
+        QFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
 
 private:        
     static int32_t exec_count; // potential muilt-thread problem
@@ -340,138 +340,138 @@
 public:
     CmdQsort(UErrorCode & status,void *theBase, int32_t num, int32_t width, Func fn, int32_t,int32_t)
         :backup(theBase),num(num),width(width),fn(fn){
-        base = malloc(num * width);
-        time_empty(100, &status); // warm memory/cache
-    }
+            base = malloc(num * width);
+            time_empty(100, &status); // warm memory/cache
+        }
 
-    ~CmdQsort(){
-        free(base);
-    }
+        ~CmdQsort(){
+            free(base);
+        }
 
-    void empty_call(){
-        exec_count = 0;
-        memcpy(base, backup, num * width);
-    }
+        void empty_call(){
+            exec_count = 0;
+            memcpy(base, backup, num * width);
+        }
 
-    double time_empty(int32_t n, UErrorCode* status) {
-        UTimer start, stop;
-        utimer_getTime(&start); 
-        while (n-- > 0) {
-            empty_call();
+        double time_empty(int32_t n, UErrorCode* status) {
+            UTimer start, stop;
+            utimer_getTime(&start); 
+            while (n-- > 0) {
+                empty_call();
+            }
+            utimer_getTime(&stop);
+            return utimer_getDeltaSeconds(&start,&stop); // ms
         }
-        utimer_getTime(&stop);
-        return utimer_getDeltaSeconds(&start,&stop); // ms
-    }
 
-    virtual void call(UErrorCode* status){
-        exec_count = 0;
-        memcpy(base, backup, num * width);
-        qsort(base, num, width, fn);
-    }
-    virtual double time(int32_t n, UErrorCode* status) {
-        double t1 = time_empty(n,status);
-        double t2 = UPerfFunction::time(n, status);
-        return  t2-t1;// < 0 ? t2 : t2-t1;
-    }
+        virtual void call(UErrorCode* status){
+            exec_count = 0;
+            memcpy(base, backup, num * width);
+            qsort(base, num, width, fn);
+        }
+        virtual double time(int32_t n, UErrorCode* status) {
+            double t1 = time_empty(n,status);
+            double t2 = UPerfFunction::time(n, status);
+            return  t2-t1;// < 0 ? t2 : t2-t1;
+        }
 
-    virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
+        virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
 };
 int32_t CmdQsort::exec_count;
-    
 
+
 class CmdBinSearch : public UPerfFunction{
 public:
-	typedef	int (CmdBinSearch::* Func)(int, int);
+    typedef	int (CmdBinSearch::* Func)(int, int);
 
     UCollator * col;
     DWORD       win_langid;
     int32_t     count;
     DataIndex * rnd;
     DataIndex * ord;
-	Func 	    fn;
+    Func 	    fn;
     int32_t     exec_count;
 
     CmdBinSearch(UErrorCode, UCollator * col,DWORD win_langid,int32_t count,DataIndex * rnd,DataIndex * ord,Func fn)
         :col(col),win_langid(win_langid), count(count), rnd(rnd), ord(ord), fn(fn),exec_count(0){}
 
-    
-	virtual void call(UErrorCode* status){
-		exec_count = 0;
-		for(int32_t i = 0; i< count; i++){ // search all data
-			binary_search(i);
+
+        virtual void call(UErrorCode* status){
+            exec_count = 0;
+            for(int32_t i = 0; i< count; i++){ // search all data
+                binary_search(i);
+            }
         }
-	}
-    virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
+        virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
 
-	void binary_search(int32_t random)	{
-		int low   = 0;
-		int high  = count - 1;
-        int guess;
-        int last_guess = -1;
-        int r;
-		while (TRUE) {
-            guess = (high + low)/2;
-            if (last_guess == guess) break; // nothing to search
+        void binary_search(int32_t random)	{
+            int low   = 0;
+            int high  = count - 1;
+            int guess;
+            int last_guess = -1;
+            int r;
+            while (TRUE) {
+                guess = (high + low)/2;
+                if (last_guess == guess) break; // nothing to search
 
-			r = (this->*fn)(random, guess);
-			exec_count++;
+                r = (this->*fn)(random, guess);
+                exec_count++;
 
-			if (r == 0)	
-				return;	// found, search end.
-            if (r < 0) {
-				high = guess;
-            } else {
-				low  = guess;
-            }
-            last_guess = guess;
-		} 
-	}
+                if (r == 0)	
+                    return;	// found, search end.
+                if (r < 0) {
+                    high = guess;
+                } else {
+                    low  = guess;
+                }
+                last_guess = guess;
+            } 
+        }
 
-	int icu_strcoll_null(int32_t i, int32_t j){
-		return ucol_strcoll(col, rnd[i].icu_data, -1, ord[j].icu_data,-1);
-	}
+        int icu_strcoll_null(int32_t i, int32_t j){
+            return ucol_strcoll(col, rnd[i].icu_data, -1, ord[j].icu_data,-1);
+        }
 
-	int icu_strcoll_len(int32_t i, int32_t j){
-        return ucol_strcoll(col, rnd[i].icu_data, rnd[i].icu_data_len, ord[j].icu_data, ord[j].icu_data_len);
-	}
+        int icu_strcoll_len(int32_t i, int32_t j){
+            return ucol_strcoll(col, rnd[i].icu_data, rnd[i].icu_data_len, ord[j].icu_data, ord[j].icu_data_len);
+        }
 
-	int icu_cmpkey(int32_t i, int32_t j) {
-		return strcmp( (char *) rnd[i].icu_key, (char *) ord[j].icu_key );
-	}
+        int icu_cmpkey(int32_t i, int32_t j) {
+            return strcmp( (char *) rnd[i].icu_key, (char *) ord[j].icu_key );
+        }
 
-	int win_cmp_null(int32_t i, int32_t j) {
-        int t = CompareStringW(win_langid, 0, rnd[i].win_data, -1, ord[j].win_data, -1);
-        if (t == 0){
-			fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
-			exit(-1);
-        } else{
-            return t - CSTR_EQUAL;
+        int win_cmp_null(int32_t i, int32_t j) {
+            int t = CompareStringW(win_langid, 0, rnd[i].win_data, -1, ord[j].win_data, -1);
+            if (t == 0){
+                fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+                exit(-1);
+            } else{
+                return t - CSTR_EQUAL;
+            }
         }
-	}
 
-	int win_cmp_len(int32_t i, int32_t j) {
-        int t = CompareStringW(win_langid, 0, rnd[i].win_data, rnd[i].win_data_len, ord[j].win_data, ord[j].win_data_len);
-        if (t == 0){
-			fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
-			exit(-1);
-        } else{
-            return t - CSTR_EQUAL;
+        int win_cmp_len(int32_t i, int32_t j) {
+            int t = CompareStringW(win_langid, 0, rnd[i].win_data, rnd[i].win_data_len, ord[j].win_data, ord[j].win_data_len);
+            if (t == 0){
+                fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+                exit(-1);
+            } else{
+                return t - CSTR_EQUAL;
+            }
         }
-	}
 
 #define BFUNC(name, func, data) \
     int name(int32_t i, int32_t j) { \
-        return func(rnd[i].data, ord[j].data); \
+    return func(rnd[i].data, ord[j].data); \
     }
 
-    BFUNC(posix_strcoll_null, strcoll, posix_data)
-    BFUNC(posix_cmpkey, strcmp, posix_key)
-    BFUNC(win_cmpkey, strcmp, win_key)
-    BFUNC(win_wcscmp, wcscmp, win_data)
-    BFUNC(icu_strcmp, u_strcmp, icu_data)
-    BFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
+        BFUNC(posix_strcoll_null, strcoll, posix_data)
+            BFUNC(posix_cmpkey, strcmp, posix_key)
+            BFUNC(win_cmpkey, strcmp, win_key)
+            BFUNC(win_wcscmp, wcscmp, win_data)
+            BFUNC(icu_strcmp, u_strcmp, icu_data)
+            BFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
 };
-    
+
 class CollPerfTest : public UPerfTest {
 public:
     UCollator *     col;
@@ -540,26 +540,26 @@
         ord_win_wcscmp = NULL;
         ord_icu_strcmp = NULL;
         ord_icu_cmpcpo = NULL;
-        
-	    if (U_FAILURE(status)){
+
+        if (U_FAILURE(status)){
             return;
-	    }
+        }
 
         // Parse additional arguments
 
         UOption options[] = {
-		    UOPTION_DEF("langid", 'i', UOPT_REQUIRES_ARG),        // Windows Language ID number.
-		    UOPTION_DEF("rulefile", 'r', UOPT_REQUIRES_ARG),      // --rulefile <filename>
-		    // Collation related arguments. All are optional.
-            // To simplify parsing, two choice arguments are disigned as NO_ARG.
-            // The default value is UPPER word in the comment
-		    UOPTION_DEF("c_french", 'f', UOPT_NO_ARG),          // --french <on | OFF>
-		    UOPTION_DEF("c_alternate", 'a', UOPT_NO_ARG),       // --alternate <NON_IGNORE | shifted>
-		    UOPTION_DEF("c_casefirst", 'c', UOPT_REQUIRES_ARG), // --casefirst <lower | upper | OFF>
-		    UOPTION_DEF("c_caselevel", 'l', UOPT_NO_ARG),       // --caselevel <on | OFF>
-		    UOPTION_DEF("c_normal", 'n', UOPT_NO_ARG),          // --normal <on | OFF> 
-		    UOPTION_DEF("c_strength", 's', UOPT_REQUIRES_ARG),  // --strength <1-5>
-	    };
+            UOPTION_DEF("langid", 'i', UOPT_REQUIRES_ARG),        // Windows Language ID number.
+                UOPTION_DEF("rulefile", 'r', UOPT_REQUIRES_ARG),      // --rulefile <filename>
+                // Collation related arguments. All are optional.
+                // To simplify parsing, two choice arguments are disigned as NO_ARG.
+                // The default value is UPPER word in the comment
+                UOPTION_DEF("c_french", 'f', UOPT_NO_ARG),          // --french <on | OFF>
+                UOPTION_DEF("c_alternate", 'a', UOPT_NO_ARG),       // --alternate <NON_IGNORE | shifted>
+                UOPTION_DEF("c_casefirst", 'c', UOPT_REQUIRES_ARG), // --casefirst <lower | upper | OFF>
+                UOPTION_DEF("c_caselevel", 'l', UOPT_NO_ARG),       // --caselevel <on | OFF>
+                UOPTION_DEF("c_normal", 'n', UOPT_NO_ARG),          // --normal <on | OFF> 
+                UOPTION_DEF("c_strength", 's', UOPT_REQUIRES_ARG),  // --strength <1-5>
+        };
         int32_t opt_len = (sizeof(options)/sizeof(options[0]));
         enum {i, r,f,a,c,l,n,s};   // The buffer between the option items' order and their references
 
@@ -567,36 +567,36 @@
 
         if (_remainingArgc < 0){
             status = U_ILLEGAL_ARGUMENT_ERROR;
-		    return;
-	    }
+            return;
+        }
 
         if (locale == NULL){
-	        locale = "en_US";   // set default locale
+            locale = "en_US";   // set default locale
         }
 
-//#ifdef U_WINDOWS
+        //#ifdef U_WINDOWS
         if (options[i].doesOccur) {
             char *endp;
-		    int tmp = strtol(options[i].value, &endp, 0);
+            int tmp = strtol(options[i].value, &endp, 0);
             if (endp == options[i].value) {
                 status = U_ILLEGAL_ARGUMENT_ERROR;
-		        return;
+                return;
             }
             win_langid = MAKELCID(tmp, SORT_DEFAULT);
         } else {
             win_langid = uloc_getLCID(locale);
         }
-//#endif
+        //#endif
 
         //  Set up an ICU collator
-	    if (options[r].doesOccur) {
-		    // TODO: implement it
-	    } else {
-		    col = ucol_open(locale, &status);
-		    if (U_FAILURE(status)) {
-			    return;
-		    }
-	    }
+        if (options[r].doesOccur) {
+            // TODO: implement it
+        } else {
+            col = ucol_open(locale, &status);
+            if (U_FAILURE(status)) {
+                return;
+            }
+        }
 
         if (options[f].doesOccur) {
             ucol_setAttribute(col, UCOL_FRENCH_COLLATION, UCOL_ON, &status);
@@ -615,7 +615,7 @@
                 ucol_setAttribute(col, UCOL_CASE_FIRST, UCOL_UPPER_FIRST, &status);
             } else {
                 status = U_ILLEGAL_ARGUMENT_ERROR;
-		        return;
+                return;
             }
         }
 
@@ -627,72 +627,72 @@
             ucol_setAttribute(col, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);
         }
 
-	    if (options[s].doesOccur) {
+        if (options[s].doesOccur) {
             char *endp;
-		    int tmp = strtol(options[l].value, &endp, 0);
+            int tmp = strtol(options[l].value, &endp, 0);
             if (endp == options[l].value) {
                 status = U_ILLEGAL_ARGUMENT_ERROR;
-		        return;
+                return;
             }
-		    switch (tmp) {
-		    case 1:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_PRIMARY, &status);		break;
-		    case 2:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_SECONDARY, &status);		break;
-		    case 3:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_TERTIARY, &status);		break;
-		    case 4:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_QUATERNARY, &status);	break;
-		    case 5:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_IDENTICAL, &status);		break;
-		    default: status = U_ILLEGAL_ARGUMENT_ERROR;					return;
-		    }
-	    }
+            switch (tmp) {
+            case 1:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_PRIMARY, &status);		break;
+            case 2:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_SECONDARY, &status);		break;
+            case 3:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_TERTIARY, &status);		break;
+            case 4:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_QUATERNARY, &status);	break;
+            case 5:	ucol_setAttribute(col, UCOL_STRENGTH, UCOL_IDENTICAL, &status);		break;
+            default: status = U_ILLEGAL_ARGUMENT_ERROR;					return;
+            }
+        }
         prepareData(status);
     }
 
-//to avoid use the annoying 'id' in TESTCASE(id,test) macro or the like
+    //to avoid use the annoying 'id' in TESTCASE(id,test) macro or the like
 #define TEST(testname, classname, arg1, arg2, arg3, arg4, arg5, arg6) \
     if(temp == index) {\
-        name = #testname;\
-        if (exec) {\
-            UErrorCode status = U_ZERO_ERROR;\
-            UPerfFunction * t = new classname(status,arg1, arg2, arg3, arg4, arg5, arg6);\
-            if (U_FAILURE(status)) {\
-                delete t;\
-                return NULL;\
-            } else {\
-                return t;\
-            }\
-        } else {\
-            return NULL;\
-        }\
+    name = #testname;\
+    if (exec) {\
+    UErrorCode status = U_ZERO_ERROR;\
+    UPerfFunction * t = new classname(status,arg1, arg2, arg3, arg4, arg5, arg6);\
+    if (U_FAILURE(status)) {\
+    delete t;\
+    return NULL;\
+    } else {\
+    return t;\
     }\
+    } else {\
+    return NULL;\
+    }\
+    }\
     temp++\
 
 
     virtual UPerfFunction* runIndexedTest( /*[in]*/int32_t index, /*[in]*/UBool exec, /*[out]*/const char* &name, /*[in]*/ char* par = NULL ){
         int temp = 0;
 
-        #define TEST_KEYGEN(testname, func)\
-            TEST(testname, CmdKeyGen, col, win_langid, count, rnd_index, CmdKeyGen::func, 0)
+#define TEST_KEYGEN(testname, func)\
+    TEST(testname, CmdKeyGen, col, win_langid, count, rnd_index, CmdKeyGen::func, 0)
         TEST_KEYGEN(TestIcu_KeyGen_null, icu_key_null);
         TEST_KEYGEN(TestIcu_KeyGen_len,  icu_key_len);
         TEST_KEYGEN(TestPosix_KeyGen_null, posix_key_null);
         TEST_KEYGEN(TestWin_KeyGen_null, win_key_null);
         TEST_KEYGEN(TestWin_KeyGen_len, win_key_len);
 
-        #define TEST_ITER(testname, func)\
-            TEST(testname, CmdIter, col, count, icu_data, CmdIter::func,0,0)
+#define TEST_ITER(testname, func)\
+    TEST(testname, CmdIter, col, count, icu_data, CmdIter::func,0,0)
         TEST_ITER(TestIcu_ForwardIter_null, icu_forward_null);
         TEST_ITER(TestIcu_ForwardIter_len, icu_forward_len);
         TEST_ITER(TestIcu_BackwardIter_null, icu_backward_null);
         TEST_ITER(TestIcu_BackwardIter_len, icu_backward_len);
 
-        #define TEST_ITER_ALL(testname, func)\
-            TEST(testname, CmdIterAll, col, icu_data_all_len, icu_data_all, CmdIterAll::func,0,0)
+#define TEST_ITER_ALL(testname, func)\
+    TEST(testname, CmdIterAll, col, icu_data_all_len, icu_data_all, CmdIterAll::func,0,0)
         TEST_ITER_ALL(TestIcu_ForwardIter_all_null, forward_null);
         TEST_ITER_ALL(TestIcu_ForwardIter_all_len, forward_len);
         TEST_ITER_ALL(TestIcu_BackwardIter_all_null, backward_null);
         TEST_ITER_ALL(TestIcu_BackwardIter_all_len, backward_len);
 
-        #define TEST_QSORT(testname, func)\
-            TEST(testname, CmdQsort, rnd_index, count, sizeof(DataIndex), CmdQsort::func,0,0)
+#define TEST_QSORT(testname, func)\
+    TEST(testname, CmdQsort, rnd_index, count, sizeof(DataIndex), CmdQsort::func,0,0)
         TEST_QSORT(TestIcu_qsort_strcoll_null, icu_strcoll_null);
         TEST_QSORT(TestIcu_qsort_strcoll_len, icu_strcoll_len);
         TEST_QSORT(TestIcu_qsort_usekey, icu_cmpkey);
@@ -701,9 +701,9 @@
         TEST_QSORT(TestWin_qsort_CompareStringW_null, win_cmp_null);
         TEST_QSORT(TestWin_qsort_CompareStringW_len, win_cmp_len);
         TEST_QSORT(TestWin_qsort_usekey, win_cmpkey);
-        
-        #define TEST_BIN(testname, func)\
-            TEST(testname, CmdBinSearch, col, win_langid, count, rnd_index, ord_icu_key,CmdBinSearch::func)
+
+#define TEST_BIN(testname, func)\
+    TEST(testname, CmdBinSearch, col, win_langid, count, rnd_index, ord_icu_key,CmdBinSearch::func)
         TEST_BIN(TestIcu_BinarySearch_strcoll_null, icu_strcoll_null);
         TEST_BIN(TestIcu_BinarySearch_strcoll_len, icu_strcoll_len);
         TEST_BIN(TestIcu_BinarySearch_usekey, icu_cmpkey);
@@ -719,9 +719,9 @@
         name="";
         return NULL;
     }
-    
 
 
+
     void prepareData(UErrorCode& status){
         if(U_FAILURE(status)) return;
         if (icu_data) return; // prepared
@@ -750,9 +750,9 @@
         }
         if(U_FAILURE(status)) return;
 
-	    // UTF-16 -> UTF-8 conversion.
-	    UConverter   *conv = ucnv_open("utf-8", &status); // just UTF-8 for now.
-	    if (U_FAILURE(status)) return;
+        // UTF-16 -> UTF-8 conversion.
+        UConverter   *conv = ucnv_open("utf-8", &status); // just UTF-8 for now.
+        if (U_FAILURE(status)) return;
 
         count = icu_data->count;
 
@@ -775,7 +775,7 @@
         UChar * p = icu_data_all;
         int32_t s;
         int32_t t;
-	    for (int i=0; i < count; i++) {
+        for (int i=0; i < count; i++) {
             // ICU all data
             s = sizeof(UChar) * icu_data->lengthOf(i);
             memcpy(p, icu_data->dataOf(i), s);
@@ -784,13 +784,13 @@
             // ICU data
 
             // ICU key
-		    s = ucol_getSortKey(col, icu_data->dataOf(i), -1,NULL, 0);
+            s = ucol_getSortKey(col, icu_data->dataOf(i), -1,NULL, 0);
             icu_key->append_one(s);
             t = ucol_getSortKey(col, icu_data->dataOf(i), -1,icu_key->last(), s);
             if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
 
             // POSIX data
-		    s = ucnv_fromUChars(conv,NULL, 0, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
+            s = ucnv_fromUChars(conv,NULL, 0, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
             if (status == U_BUFFER_OVERFLOW_ERROR || status == U_ZERO_ERROR){
                 status = U_ZERO_ERROR;
             } else {
@@ -803,8 +803,8 @@
             posix_data->last()[s] = 0;
 
             // POSIX key
-		    s = strxfrm(NULL, posix_data->dataOf(i), 0);
-		    if (s == INT_MAX){status = U_INVALID_FORMAT_ERROR;return;}
+            s = strxfrm(NULL, posix_data->dataOf(i), 0);
+            if (s == INT_MAX){status = U_INVALID_FORMAT_ERROR;return;}
             posix_key->append_one(s);
             t = strxfrm(posix_key->last(), posix_data->dataOf(i), s);
             if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
@@ -816,15 +816,15 @@
 
             // Win key
             s = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), NULL,0);
-		    if (s == 0) {status = U_INVALID_FORMAT_ERROR;return;}
+            if (s == 0) {status = U_INVALID_FORMAT_ERROR;return;}
             win_key->append_one(s);
             t = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), (WCHAR *)(win_key->last()),s);
             if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
 
-	    };
+        };
 
         // append_one() will make points shifting, should not merge following code into previous iteration
-	    for (int i=0; i < count; i++) {
+        for (int i=0; i < count; i++) {
             rnd_index[i].icu_key = icu_key->dataOf(i);
             rnd_index[i].icu_data = icu_data->dataOf(i);
             rnd_index[i].icu_data_len = icu_data->lengthOf(i);
@@ -855,23 +855,23 @@
         SORT(ord_icu_cmpcpo, icu_cmpcpo);
     }
 };
-    
 
+
 int main(int argc, const char *argv[])
 {
 
     UErrorCode status = U_ZERO_ERROR;
     CollPerfTest test(argc, argv, status);
 
-	if (U_FAILURE(status)){
+    if (U_FAILURE(status)){
         printf("The error is %s\n", u_errorName(status));
         //TODO: print usage here
         return status;
     }
-        
+
     if (test.run() == FALSE){
         fprintf(stderr, "FAILED: Tests could not be run please check the "
-			            "arguments.\n");
+            "arguments.\n");
         return -1;
     }
     return 0;

Modified: trunk/source/test/perf/normperf/normperf.h
===================================================================
--- trunk/source/test/perf/normperf/normperf.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/normperf/normperf.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -102,7 +102,7 @@
     ULine* lines;
     int32_t numLines;
     UChar dest[DEST_BUFFER_CAPACITY];
-	UChar* pDest;
+    UChar* pDest;
     int32_t destLen;
     NormFn fn;
     int32_t retVal;
@@ -149,7 +149,7 @@
         numLines = srcNumLines;
         uselen = _uselen;
         destLen = DEST_BUFFER_CAPACITY;
-		pDest = dest;
+        pDest = dest;
         src = NULL;
         srcLen = 0;
         line_mode = TRUE;
@@ -160,16 +160,16 @@
         numLines = 0;
         uselen = _uselen;
         destLen = sourceLen*3;
-		pDest = (UChar*) malloc(destLen * U_SIZEOF_UCHAR);
+        pDest = (UChar*) malloc(destLen * U_SIZEOF_UCHAR);
         src = source;
         srcLen = sourceLen;
         line_mode = FALSE;
     }
-	~NormPerfFunction(){
-		if(dest != pDest){
-			free(pDest);
-		}
-	}
+    ~NormPerfFunction(){
+        if(dest != pDest){
+            free(pDest);
+        }
+    }
 };
 
 

Modified: trunk/source/test/perf/ustrperf/stringperf.cpp
===================================================================
--- trunk/source/test/perf/ustrperf/stringperf.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/ustrperf/stringperf.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -9,7 +9,7 @@
 *
 * Modification History:
 * Name                     Description
-* Doug Wang				   Second version
+* Doug Wang                Second version
 * Doug Wang                First Version
 ******************************************************************************
 */
@@ -28,55 +28,55 @@
 {
     UErrorCode status = U_ZERO_ERROR;
 
-	bCatenatePrealloc=TRUE;
+    bCatenatePrealloc=TRUE;
 
     StringPerformanceTest test(argc, argv, status);
-	if (U_FAILURE(status)){
+    if (U_FAILURE(status)){
         return status;
     }
-	
-	int loops = LOOPS;
-	if (bCatenatePrealloc) {
-		int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
-		catICU = new UnicodeString(to_alloc,'a',0);
-		//catICU = new UnicodeString();
 
-		catStd = new stlstring();
-		catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
-		//catStd -> reserve(110000000);
-	} else {
-		catICU = new UnicodeString();
-		catStd = new stlstring();
-	}
+    int loops = LOOPS;
+    if (bCatenatePrealloc) {
+        int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+        catICU = new UnicodeString(to_alloc,'a',0);
+        //catICU = new UnicodeString();
 
+        catStd = new stlstring();
+        catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+        //catStd -> reserve(110000000);
+    } else {
+        catICU = new UnicodeString();
+        catStd = new stlstring();
+    }
+
     if (test.run() == FALSE){
         fprintf(stderr, "FAILED: Tests could not be run please check the "
-			            "arguments.\n");
+            "arguments.\n");
         return -1;
     }
 
-	delete catICU;
-	delete catStd;
+    delete catICU;
+    delete catStd;
     return 0;
 }
 
 StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[],
-										 UErrorCode &status)
-										: UPerfTest(argc, argv, status)
+                                             UErrorCode &status)
+                                             : UPerfTest(argc, argv, status)
 {
-	filelines_=NULL;
-	StrBuffer=NULL;
-	StrBufferLen=0;
+    filelines_=NULL;
+    StrBuffer=NULL;
+    StrBufferLen=0;
 
-	int32_t len =0;
+    int32_t len =0;
 
-	if (status== U_ILLEGAL_ARGUMENT_ERROR){
-       //fprintf(stderr,gUsageString, "stringperf");
-       return;
+    if (status== U_ILLEGAL_ARGUMENT_ERROR){
+        //fprintf(stderr,gUsageString, "stringperf");
+        return;
     }
     if (U_FAILURE(status)){
         fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", 
-			    u_errorName(status));
+            u_errorName(status));
         return;
     }
 
@@ -87,15 +87,15 @@
             fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status));
             return;
         }
-		
-		filelines_ = new ULine[numLines];
-		for (int i =0; i < numLines; i++) {
-			len = filelines[i].len;
-			filelines_[i].name  = new UChar[len];
+
+        filelines_ = new ULine[numLines];
+        for (int i =0; i < numLines; i++) {
+            len = filelines[i].len;
+            filelines_[i].name  = new UChar[len];
             filelines_[i].len   = len;
-			memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR);
-		}
-        
+            memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR);
+        }
+
     }else if(bulk_mode){
         int32_t srcLen = 0;
         const UChar* src = getBuffer(srcLen,status);
@@ -103,50 +103,50 @@
             fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status));
             return;
         }
-		
-		StrBuffer = new UChar[srcLen];
-		StrBufferLen = srcLen;
-		memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR);
 
+        StrBuffer = new UChar[srcLen];
+        StrBufferLen = srcLen;
+        memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR);
+
     }
 }
 
 StringPerformanceTest::~StringPerformanceTest()
 {
-	delete[] filelines_;
-	delete[] StrBuffer;
+    delete[] filelines_;
+    delete[] StrBuffer;
 }
 
 UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec,
-												   const char *&name, 
-												   char* par) 
+                                                   const char *&name, 
+                                                   char* par) 
 {
     switch (index) {
         TESTCASE(0, TestCtor);
-		TESTCASE(1, TestCtor1);
-		TESTCASE(2, TestCtor2);
-		TESTCASE(3, TestCtor3);
-		TESTCASE(4, TestAssign);
-		TESTCASE(5, TestAssign1);
-		TESTCASE(6, TestAssign2);
-		TESTCASE(7, TestGetch);
-		TESTCASE(8, TestCatenate);
-		TESTCASE(9, TestScan);
-		TESTCASE(10, TestScan1);
-		TESTCASE(11, TestScan2);
+        TESTCASE(1, TestCtor1);
+        TESTCASE(2, TestCtor2);
+        TESTCASE(3, TestCtor3);
+        TESTCASE(4, TestAssign);
+        TESTCASE(5, TestAssign1);
+        TESTCASE(6, TestAssign2);
+        TESTCASE(7, TestGetch);
+        TESTCASE(8, TestCatenate);
+        TESTCASE(9, TestScan);
+        TESTCASE(10, TestScan1);
+        TESTCASE(11, TestScan2);
 
-		TESTCASE(12, TestStdLibCtor);
-		TESTCASE(13, TestStdLibCtor1);
-		TESTCASE(14, TestStdLibCtor2);
-		TESTCASE(15, TestStdLibCtor3);
-		TESTCASE(16, TestStdLibAssign);
-		TESTCASE(17, TestStdLibAssign1);
-		TESTCASE(18, TestStdLibAssign2);
-		TESTCASE(19, TestStdLibGetch);
-		TESTCASE(20, TestStdLibCatenate);
-		TESTCASE(21, TestStdLibScan);
-		TESTCASE(22, TestStdLibScan1);
-		TESTCASE(23, TestStdLibScan2);
+        TESTCASE(12, TestStdLibCtor);
+        TESTCASE(13, TestStdLibCtor1);
+        TESTCASE(14, TestStdLibCtor2);
+        TESTCASE(15, TestStdLibCtor3);
+        TESTCASE(16, TestStdLibAssign);
+        TESTCASE(17, TestStdLibAssign1);
+        TESTCASE(18, TestStdLibAssign2);
+        TESTCASE(19, TestStdLibGetch);
+        TESTCASE(20, TestStdLibCatenate);
+        TESTCASE(21, TestStdLibScan);
+        TESTCASE(22, TestStdLibScan1);
+        TESTCASE(23, TestStdLibScan2);
 
         default: 
             name = ""; 
@@ -157,221 +157,221 @@
 
 UPerfFunction* StringPerformanceTest::TestCtor()
 {
-	if (line_mode) {
-		return new StringPerfFunction(ctor, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(ctor, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestCtor1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(ctor1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(ctor1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestCtor2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(ctor2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(ctor2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestCtor3()
 {
-	if (line_mode) {
-		return new StringPerfFunction(ctor3, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(ctor3, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestAssign()
 {
-	if (line_mode) {
-		return new StringPerfFunction(assign, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(assign, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestAssign1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(assign1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(assign1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestAssign2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(assign2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(assign2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 
 UPerfFunction* StringPerformanceTest::TestGetch()
 {
-	if (line_mode) {
-		return new StringPerfFunction(getch, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(getch, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestCatenate()
 {
-	if (line_mode) {
-		return new StringPerfFunction(catenate, filelines_, numLines, uselen);
-	} else {
-		//return new StringPerfFunction(catenate, buffer, bufferLen, uselen);
-		return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(catenate, filelines_, numLines, uselen);
+    } else {
+        //return new StringPerfFunction(catenate, buffer, bufferLen, uselen);
+        return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestScan()
 {
-	if (line_mode) {
-		return new StringPerfFunction(scan, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(scan, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestScan1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(scan1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(scan1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestScan2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(scan2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(scan2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibCtor()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibCtor1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibCtor2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibCtor3()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibAssign()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibAssign1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibAssign2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibGetch()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibCatenate()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen);
-	} else {
-		//return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen);
-		return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen);
+    } else {
+        //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen);
+        return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibScan()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibScan1()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 UPerfFunction* StringPerformanceTest::TestStdLibScan2()
 {
-	if (line_mode) {
-		return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen);
-	} else {
-		return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen);
-	}
+    if (line_mode) {
+        return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen);
+    } else {
+        return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen);
+    }
 }
 
 

Modified: trunk/source/test/perf/ustrperf/stringperf.h
===================================================================
--- trunk/source/test/perf/ustrperf/stringperf.h	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/test/perf/ustrperf/stringperf.h	2006-09-04 10:26:36 UTC (rev 106)
@@ -19,7 +19,7 @@
 /* Define all constants for test case operations */
 #define MAXNUMLINES	40000	//Max number of lines in a test data file
 #define MAXSRCLEN 20		//Max length of one line. maybe a larger number, but it need more mem
-#define LOOPS 100			//Iterations 
+#define LOOPS 100			//Iterations
 //#define LOOPS 10
 #define catenate_STRLEN 2
 
@@ -61,385 +61,385 @@
 {
 public:
 
-	virtual long getEventsPerIteration(){
-		int loops = LOOPS;
-		if (catICU) { delete catICU;}
-		if (catStd) { delete catStd;}
+    virtual long getEventsPerIteration(){
+        int loops = LOOPS;
+        if (catICU) { delete catICU;}
+        if (catStd) { delete catStd;}
 
-		if (bCatenatePrealloc) {
-	
-			int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
-			catICU = new UnicodeString(to_alloc,'a',0);
-			//catICU = new UnicodeString();
+        if (bCatenatePrealloc) {
 
-			catStd = new stlstring();
-			//catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
-			catStd -> reserve(110000000);
-		} else {
-			catICU = new UnicodeString();
-			catStd = new stlstring();
-		}
+            int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+            catICU = new UnicodeString(to_alloc,'a',0);
+            //catICU = new UnicodeString();
 
-		return -1;
+            catStd = new stlstring();
+            //catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+            catStd -> reserve(110000000);
+        } else {
+            catICU = new UnicodeString();
+            catStd = new stlstring();
+        }
+
+        return -1;
     }
 
-	virtual void call(UErrorCode* status)
-	{
+    virtual void call(UErrorCode* status)
+    {
         if(line_mode_==TRUE){
             if(uselen_){
                 for(int32_t i = 0; i< numLines_; i++){
-					if (fnType_==Fn_ICU) {
-						(*fn1_)(lines_[i].name,lines_[i].len,uS0_[i]);
-					} else {
-						(*fn2_)(wlines_[i].name,wlines_[i].len,sS0_[i]);
-					}
+                    if (fnType_==Fn_ICU) {
+                        (*fn1_)(lines_[i].name,lines_[i].len,uS0_[i]);
+                    } else {
+                        (*fn2_)(wlines_[i].name,wlines_[i].len,sS0_[i]);
+                    }
                 }
             }else{
                 for(int32_t i = 0; i< numLines_; i++){
                     if (fnType_==Fn_ICU) {
-						(*fn1_)(lines_[i].name,-1,uS0_[i]);
-					} else {
-						(*fn2_)(wlines_[i].name,-1,sS0_[i]);
-					}
+                        (*fn1_)(lines_[i].name,-1,uS0_[i]);
+                    } else {
+                        (*fn2_)(wlines_[i].name,-1,sS0_[i]);
+                    }
                 }
             }
         }else{
             if(uselen_){
-				if (fnType_==Fn_ICU) {
-					(*fn1_)(src_,srcLen_,*ubulk_);
-				} else {
-					(*fn2_)(wsrc_,wsrcLen_,*sbulk_);
-				}
+                if (fnType_==Fn_ICU) {
+                    (*fn1_)(src_,srcLen_,*ubulk_);
+                } else {
+                    (*fn2_)(wsrc_,wsrcLen_,*sbulk_);
+                }
             }else{
-				if (fnType_==Fn_ICU) {
-					(*fn1_)(src_,-1,*ubulk_);
-				} else {
-					(*fn2_)(wsrc_,-1,*sbulk_);
-				}
+                if (fnType_==Fn_ICU) {
+                    (*fn1_)(src_,-1,*ubulk_);
+                } else {
+                    (*fn2_)(wsrc_,-1,*sbulk_);
+                }
             }
         }
-	}
+    }
 
-	virtual long getOperationsPerIteration()
-	{
+    virtual long getOperationsPerIteration()
+    {
         if(line_mode_==TRUE){
             return numLines_;
         }else{
             return 1;
         }
-	}
+    }
 
-	StringPerfFunction(ICUStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
-	{
-		
-		fn1_ = func;
-		lines_=srcLines;
-		wlines_=NULL;
-		numLines_=srcNumLines;
-		uselen_=uselen;
-		line_mode_=TRUE;
+    StringPerfFunction(ICUStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+    {
+
+        fn1_ = func;
+        lines_=srcLines;
+        wlines_=NULL;
+        numLines_=srcNumLines;
+        uselen_=uselen;
+        line_mode_=TRUE;
         src_ = NULL;
         srcLen_ = 0;
-		wsrc_ = NULL;
-		wsrcLen_ = 0;
-		fnType_ = Fn_ICU;
-		
-		uS0_=new UnicodeString[numLines_];
-		for(int32_t i=0; i<numLines_; i++) {
-			uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
-		} 
-		sS0_=NULL;
-		ubulk_=NULL;
-		sbulk_=NULL;
-	} 
+        wsrc_ = NULL;
+        wsrcLen_ = 0;
+        fnType_ = Fn_ICU;
 
-	StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
-	{
-		
-		fn2_ = func;
-		lines_=srcLines;
-		wlines_=NULL;
-		numLines_=srcNumLines;
-		uselen_=uselen;
-		line_mode_=TRUE;
+        uS0_=new UnicodeString[numLines_];
+        for(int32_t i=0; i<numLines_; i++) {
+            uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
+        }
+        sS0_=NULL;
+        ubulk_=NULL;
+        sbulk_=NULL;
+    }
+
+    StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+    {
+
+        fn2_ = func;
+        lines_=srcLines;
+        wlines_=NULL;
+        numLines_=srcNumLines;
+        uselen_=uselen;
+        line_mode_=TRUE;
         src_ = NULL;
         srcLen_ = 0;
-		wsrc_ = NULL;
-		wsrcLen_ = 0;
-		fnType_ = Fn_STD;
+        wsrc_ = NULL;
+        wsrcLen_ = 0;
+        fnType_ = Fn_STD;
 
-		uS0_=NULL;
-		ubulk_=NULL;
-		sbulk_=NULL;
-		
-		//fillin wlines_[], sS0_[]
-		prepareLinesForStd();
-	} 
+        uS0_=NULL;
+        ubulk_=NULL;
+        sbulk_=NULL;
 
-	StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
-	{
-		
-		fn1_ = func;
-		lines_=NULL;
-		wlines_=NULL;
-		numLines_=0;
-		uselen_=uselen;
-		line_mode_=FALSE;
-		src_ = new UChar[sourceLen];
-		memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+        //fillin wlines_[], sS0_[]
+        prepareLinesForStd();
+    }
+
+    StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+    {
+
+        fn1_ = func;
+        lines_=NULL;
+        wlines_=NULL;
+        numLines_=0;
+        uselen_=uselen;
+        line_mode_=FALSE;
+        src_ = new UChar[sourceLen];
+        memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
         srcLen_ = sourceLen;
-		wsrc_ = NULL;
-		wsrcLen_ = 0;
-		fnType_ = Fn_ICU;
+        wsrc_ = NULL;
+        wsrcLen_ = 0;
+        fnType_ = Fn_ICU;
 
-		uS0_=NULL;
-		sS0_=NULL;	
-		ubulk_=new UnicodeString(src_,srcLen_);
-		sbulk_=NULL;
-	}
+        uS0_=NULL;
+        sS0_=NULL;	
+        ubulk_=new UnicodeString(src_,srcLen_);
+        sbulk_=NULL;
+    }
 
-	StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
-	{
-		
-		fn2_ = func;
-		lines_=NULL;
-		wlines_=NULL;
-		numLines_=0;
-		uselen_=uselen;
-		line_mode_=FALSE;
-		src_ = new UChar[sourceLen];
-		memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+    StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+    {
+
+        fn2_ = func;
+        lines_=NULL;
+        wlines_=NULL;
+        numLines_=0;
+        uselen_=uselen;
+        line_mode_=FALSE;
+        src_ = new UChar[sourceLen];
+        memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
         srcLen_ = sourceLen;
-		fnType_ = Fn_STD;
+        fnType_ = Fn_STD;
 
-		uS0_=NULL;
-		sS0_=NULL;
-		ubulk_=NULL;
+        uS0_=NULL;
+        sS0_=NULL;
+        ubulk_=NULL;
 
-		//fillin wsrc_, sbulk_
-		prepareBulkForStd();
-					 
-	}
+        //fillin wsrc_, sbulk_
+        prepareBulkForStd();
 
-	~StringPerfFunction()
-	{
-		//free(src_);
-		free(wsrc_);
-		delete[] src_;
-		delete ubulk_;
-		delete sbulk_;
-		delete[] uS0_;
-		delete[] sS0_;
-		delete[] wlines_;
-	}
+    }
 
+    ~StringPerfFunction()
+    {
+        //free(src_);
+        free(wsrc_);
+        delete[] src_;
+        delete ubulk_;
+        delete sbulk_;
+        delete[] uS0_;
+        delete[] sS0_;
+        delete[] wlines_;
+    }
+
 private:
-	void prepareLinesForStd(void)
-	{
-		UErrorCode err=U_ZERO_ERROR;
-		
-		wlines_=new WLine[numLines_];
+    void prepareLinesForStd(void)
+    {
+        UErrorCode err=U_ZERO_ERROR;
+
+        wlines_=new WLine[numLines_];
         wchar_t ws[100];
         int32_t wcap = sizeof(ws) / sizeof(*ws);
         int32_t wl;
-		wchar_t* wcs;
-        
-		sS0_=new stlstring[numLines_];
-		for(int32_t i=0; i<numLines_; i++) {		
-			if(uselen_) {
-				wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len, &err);
-				memcpy(wlines_[i].name, wcs, wl * sizeof(wchar_t));
-				wlines_[i].len = wl;
-				sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len);
-			} else {
-				wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len-1, &err);
-				memcpy(wlines_[i].name, wcs, wl*sizeof(wchar_t));
-				wlines_[i].len = wl;
-				sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len+1);
-			}
+        wchar_t* wcs;
 
-			if (U_FAILURE(err)) {
-				return;
-			}
-		}
+        sS0_=new stlstring[numLines_];
+        for(int32_t i=0; i<numLines_; i++) {
+            if(uselen_) {
+                wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len, &err);
+                memcpy(wlines_[i].name, wcs, wl * sizeof(wchar_t));
+                wlines_[i].len = wl;
+                sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len);
+            } else {
+                wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len-1, &err);
+                memcpy(wlines_[i].name, wcs, wl*sizeof(wchar_t));
+                wlines_[i].len = wl;
+                sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len+1);
+            }
 
-	}
+            if (U_FAILURE(err)) {
+                return;
+            }
+        }
 
-	void prepareBulkForStd(void)
-	{
-		UErrorCode err=U_ZERO_ERROR;
+    }
 
-		const UChar* uSrc = src_;
-		int32_t uSrcLen = srcLen_;
-		wchar_t* wDest = NULL;
-		int32_t wDestLen = 0;
-		int32_t reqLen= 0 ;
+    void prepareBulkForStd(void)
+    {
+        UErrorCode err=U_ZERO_ERROR;
 
-		if(uselen_) {
-			/* pre-flight*/
-			u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+        const UChar* uSrc = src_;
+        int32_t uSrcLen = srcLen_;
+        wchar_t* wDest = NULL;
+        int32_t wDestLen = 0;
+        int32_t reqLen= 0 ;
 
-			if(err == U_BUFFER_OVERFLOW_ERROR){
-				err=U_ZERO_ERROR;
-				wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen));
-				wDestLen = reqLen;
-				u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
-			}
+        if(uselen_) {
+            /* pre-flight*/
+            u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
 
-			if (U_SUCCESS(err)) { 
-				wsrc_ = wDest;
-				wsrcLen_ = wDestLen;
-				sbulk_=new stlstring(wsrc_,wsrcLen_); 
-			}
+            if(err == U_BUFFER_OVERFLOW_ERROR){
+                err=U_ZERO_ERROR;
+                wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen));
+                wDestLen = reqLen;
+                u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+            }
 
-		} else {
-			/* pre-flight*/
-			u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+            if (U_SUCCESS(err)) {
+                wsrc_ = wDest;
+                wsrcLen_ = wDestLen;
+                sbulk_=new stlstring(wsrc_,wsrcLen_);
+            }
 
-			if(err == U_BUFFER_OVERFLOW_ERROR){
-				err=U_ZERO_ERROR;
-				wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen+1));
-				wDestLen = reqLen+1;
-				u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
-			}
+        } else {
+            /* pre-flight*/
+            u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
 
-			if (U_SUCCESS(err)) { 
-				wsrc_ = wDest;
-				wsrcLen_ = wDestLen;
-				sbulk_=new stlstring(wsrc_); 
-			}
-		}
+            if(err == U_BUFFER_OVERFLOW_ERROR){
+                err=U_ZERO_ERROR;
+                wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen+1));
+                wDestLen = reqLen+1;
+                u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+            }
 
-		//free(wDest);
-	}
+            if (U_SUCCESS(err)) {
+                wsrc_ = wDest;
+                wsrcLen_ = wDestLen;
+                sbulk_=new stlstring(wsrc_);
+            }
+        }
 
+        //free(wDest);
+    }
 
+
 private:
-	ICUStringPerfFn fn1_;
-	StdStringPerfFn fn2_;
+    ICUStringPerfFn fn1_;
+    StdStringPerfFn fn2_;
 
-	ULine* lines_;
-	WLine* wlines_;
-	int32_t numLines_;
+    ULine* lines_;
+    WLine* wlines_;
+    int32_t numLines_;
 
-	UBool uselen_;
-	UChar* src_;
-	int32_t srcLen_;
-	wchar_t* wsrc_;
-	int32_t wsrcLen_;
+    UBool uselen_;
+    UChar* src_;
+    int32_t srcLen_;
+    wchar_t* wsrc_;
+    int32_t wsrcLen_;
     UBool line_mode_;
-	
-	//added for preparing testing data
-	UnicodeString* uS0_;
-	stlstring* sS0_;
-	UnicodeString* ubulk_;
-	stlstring* sbulk_;
-	FnType fnType_;
-}; 
 
+    //added for preparing testing data
+    UnicodeString* uS0_;
+    stlstring* sS0_;
+    UnicodeString* ubulk_;
+    stlstring* sbulk_;
+    FnType fnType_;
+};
 
+
 class StringPerformanceTest : public UPerfTest
 {
 public:
-	StringPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
-	~StringPerformanceTest();
-	virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
-		                                  const char *&name, 
-										  char *par = NULL);     
-	UPerfFunction* TestCtor();
-	UPerfFunction* TestCtor1();
-	UPerfFunction* TestCtor2();
-	UPerfFunction* TestCtor3();
-	UPerfFunction* TestAssign();
-	UPerfFunction* TestAssign1();
-	UPerfFunction* TestAssign2();
-	UPerfFunction* TestGetch();
-	UPerfFunction* TestCatenate();
-	UPerfFunction* TestScan();
-	UPerfFunction* TestScan1();
-	UPerfFunction* TestScan2();
+    StringPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+    ~StringPerformanceTest();
+    virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+                                          const char *&name,
+                                          char *par = NULL);
+    UPerfFunction* TestCtor();
+    UPerfFunction* TestCtor1();
+    UPerfFunction* TestCtor2();
+    UPerfFunction* TestCtor3();
+    UPerfFunction* TestAssign();
+    UPerfFunction* TestAssign1();
+    UPerfFunction* TestAssign2();
+    UPerfFunction* TestGetch();
+    UPerfFunction* TestCatenate();
+    UPerfFunction* TestScan();
+    UPerfFunction* TestScan1();
+    UPerfFunction* TestScan2();
 
-	UPerfFunction* TestStdLibCtor();
-	UPerfFunction* TestStdLibCtor1();
-	UPerfFunction* TestStdLibCtor2();
-	UPerfFunction* TestStdLibCtor3();
-	UPerfFunction* TestStdLibAssign();
-	UPerfFunction* TestStdLibAssign1();
-	UPerfFunction* TestStdLibAssign2();
-	UPerfFunction* TestStdLibGetch();
-	UPerfFunction* TestStdLibCatenate();
-	UPerfFunction* TestStdLibScan();
-	UPerfFunction* TestStdLibScan1();
-	UPerfFunction* TestStdLibScan2();
+    UPerfFunction* TestStdLibCtor();
+    UPerfFunction* TestStdLibCtor1();
+    UPerfFunction* TestStdLibCtor2();
+    UPerfFunction* TestStdLibCtor3();
+    UPerfFunction* TestStdLibAssign();
+    UPerfFunction* TestStdLibAssign1();
+    UPerfFunction* TestStdLibAssign2();
+    UPerfFunction* TestStdLibGetch();
+    UPerfFunction* TestStdLibCatenate();
+    UPerfFunction* TestStdLibScan();
+    UPerfFunction* TestStdLibScan1();
+    UPerfFunction* TestStdLibScan2();
 
 private:
-	long COUNT_;
-	ULine* filelines_;
-	UChar* StrBuffer;
-	int32_t StrBufferLen;
+    long COUNT_;
+    ULine* filelines_;
+    UChar* StrBuffer;
+    int32_t StrBufferLen;
 
 };
 
 
-inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UnicodeString a;		
+    UnicodeString a;
 }
 
-inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UnicodeString b(uTESTCHAR1);
+    UnicodeString b(uTESTCHAR1);
 }
 
-inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UnicodeString c(uEMPTY);
+    UnicodeString c(uEMPTY);
 }
 
-inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UnicodeString d(src,srcLen);
+    UnicodeString d(src,srcLen);
 }
 
 inline UnicodeString icu_assign_helper(const UChar* src,int32_t srcLen)
 {
-	if (srcLen==-1) { return src;} 
-	else { return UnicodeString(src, srcLen);}
+    if (srcLen==-1) { return src;}
+    else { return UnicodeString(src, srcLen);}
 }
 
-inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	unistr = icu_assign_helper(src,srcLen);
+    unistr = icu_assign_helper(src,srcLen);
 }
 
-inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	unistr.setTo(src, srcLen);
+    unistr.setTo(src, srcLen);
 }
 
-inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0) 
+inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	unistr = s0;
+    unistr = s0;
 }
 
 inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	s0.charAt(0);
+    s0.charAt(0);
 }
 
 
 inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UTimer mystart, mystop;
-	utimer_getTime(&mystart); 
-	
-	*catICU += s0;
-	
-	utimer_getTime(&mystop);
+    UTimer mystart, mystop;
+    utimer_getTime(&mystart);
+
+    *catICU += s0;
+
+    utimer_getTime(&mystop);
     double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
-	printf("\nmytime=%f \n", mytime);
+    printf("\nmytime=%f \n", mytime);
 
-	*catICU += uCatenate_STR;
+    *catICU += uCatenate_STR;
 }
 
 volatile int scan_idx;
@@ -447,103 +447,102 @@
 
 inline void scan(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UChar c='.';
-	scan_idx = uScan_STRING.indexOf(c);
+    UChar c='.';
+    scan_idx = uScan_STRING.indexOf(c);
 }
 
 inline void scan1(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	scan_idx = uScan_STRING.indexOf(SCAN1,3);
+    scan_idx = uScan_STRING.indexOf(SCAN1,3);
 }
 
 inline void scan2(const UChar* src,int32_t srcLen, UnicodeString s0)
 {
-	UChar c1='s';
-	UChar c2='m';
-	scan_idx = uScan_STRING.indexOf(c1);
-	scan_idx = uScan_STRING.indexOf(c2);
+    UChar c1='s';
+    UChar c2='m';
+    scan_idx = uScan_STRING.indexOf(c1);
+    scan_idx = uScan_STRING.indexOf(c2);
 }
 
 
 inline void StdLibCtor(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	stlstring a;
+    stlstring a;
 }
 
 inline void StdLibCtor1(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-
-	stlstring b(simulate);
+    stlstring b(simulate);
 }
 
 inline void StdLibCtor2(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	stlstring c(sEMPTY);
+    stlstring c(sEMPTY);
 }
 
 inline void StdLibCtor3(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	if (srcLen==-1) {	
-		stlstring d(src); 
-	}else {
-		stlstring d(src, srcLen); 
-	}
+    if (srcLen==-1) {
+        stlstring d(src);
+    }else {
+        stlstring d(src, srcLen);
+    }
 }
 
 inline stlstring stl_assign_helper(const wchar_t* src,int32_t srcLen)
 {
-	if (srcLen==-1) { return src;}
-	else { return stlstring(src, srcLen);}
+    if (srcLen==-1) { return src;}
+    else { return stlstring(src, srcLen);}
 }
 
-inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0) 
+inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	stlstr = stl_assign_helper(src,srcLen);
+    stlstr = stl_assign_helper(src,srcLen);
 }
 
-inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0) 
+inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	if (srcLen==-1) { stlstr=src;}
-	else { stlstr.assign(src, srcLen);}
+    if (srcLen==-1) { stlstr=src;}
+    else { stlstr.assign(src, srcLen);}
 }
 
-inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0) 
+inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	stlstr=s0;
+    stlstr=s0;
 }
 
 inline void StdLibGetch(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	s0.at(0);
+    s0.at(0);
 }
 
 inline void StdLibCatenate(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	UTimer mystart, mystop;
-	utimer_getTime(&mystart); 
+    UTimer mystart, mystop;
+    utimer_getTime(&mystart);
 
     *catStd += s0;
-	*catStd += sCatenate_STR;
+    *catStd += sCatenate_STR;
 
-	utimer_getTime(&mystop);
+    utimer_getTime(&mystop);
     double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
-	printf("\nmytime=%f \n", mytime);
-	
+    printf("\nmytime=%f \n", mytime);
+
 }
 
 inline void StdLibScan(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	scan_idx = (int) sScan_STRING.find('.');	
+    scan_idx = (int) sScan_STRING.find('.');	
 }
 
 inline void StdLibScan1(const wchar_t* src,int32_t srcLen, stlstring s0)
 {
-	scan_idx = (int) sScan_STRING.find(L"123");
+    scan_idx = (int) sScan_STRING.find(L"123");
 }
 
 inline void StdLibScan2(const wchar_t* src,int32_t srcLen, stlstring s0)
 {	
-	scan_idx = (int) sScan_STRING.find_first_of(L"sm");
+    scan_idx = (int) sScan_STRING.find_first_of(L"sm");
 }
 
 #endif // STRINGPERF_H

Modified: trunk/source/tools/cpysearch/cpyskip.txt
===================================================================
--- trunk/source/tools/cpysearch/cpyskip.txt	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/cpysearch/cpyskip.txt	2006-09-04 10:26:36 UTC (rev 106)
@@ -27,6 +27,7 @@
 icu/debian/changelog
 icu/debian/control
 icu/debian/icu-doc.doc-base
+icu/debian/icu-doc.install
 icu/debian/icu.conffiles.in
 icu/source/config.guess
 icu/source/config.sub
@@ -109,15 +110,24 @@
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu/.classpath
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu/.project
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu/build.properties
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu/build.xml
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/.classpath
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/.project
-icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/about.html
-icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/about_files/license.html
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/build.properties
-icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/META-INF/MANIFEST.MF
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base/build.xml
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base.tests/.classpath
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base.tests/.project
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base.tests/build.properties
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base-feature/.project
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base-feature/build.properties
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.base-feature/feature.xml
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.tests/.classpath
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.tests/.project
 icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu.tests/build.properties
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu-feature/.project
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu-feature/build.properties
+icu4j/src/com/ibm/icu/dev/eclipse/com.ibm.icu-feature/feature.xml
+icu4j/src/com/ibm/icu/dev/eclipse/misc/about.html
 icu4j/src/com/ibm/icu/dev/test/serializable/*/*.dat
 icu4j/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
 icu4j/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor

Modified: trunk/source/tools/genccode/genccode.c
===================================================================
--- trunk/source/tools/genccode/genccode.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/genccode/genccode.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 1999-2005, International Business Machines
+*   Copyright (C) 1999-2006, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 *******************************************************************************
@@ -149,6 +149,7 @@
 } assemblyHeader[] = {
     {"gcc",
         ".globl %s\n"
+        "\t.section .note.GNU-stack,\"\", at progbits\n"
         "\t.section .rodata\n"
         "\t.align 8\n" /* Either align 8 bytes or 2^8 (256) bytes. 8 bytes is needed. */
         "\t.type %s, at object\n"

Modified: trunk/source/tools/gencmn/gencmn.c
===================================================================
--- trunk/source/tools/gencmn/gencmn.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/gencmn/gencmn.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -28,6 +28,7 @@
 #include "unicode/uclean.h"
 #include "unewdata.h"
 #include "uoptions.h"
+#include "putilimp.h"
 
 #define STRING_STORE_SIZE 100000
 #define MAX_FILE_COUNT 2000
@@ -466,6 +467,10 @@
     if(!sourceTOC) {
         FileStream *file;
 
+        if(uprv_pathIsAbsolute(filename)) {
+            fprintf(stderr, "gencmn: Error: absolute path encountered. Old style paths are not supported. Use relative paths such as 'fur.res' or 'translit%cfur.res'.\n\tBad path: '%s'\n", U_FILE_SEP_CHAR, filename);
+            exit(U_ILLEGAL_ARGUMENT_ERROR);
+        }
         fullPath = pathToFullPath(filename);
 
         /* store the pathname */

Modified: trunk/source/tools/genrb/parse.c
===================================================================
--- trunk/source/tools/genrb/parse.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/genrb/parse.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -1650,7 +1650,8 @@
     *status = U_ZERO_ERROR;
 
     /* Search for normal types */
-    for (result = RT_UNKNOWN+1; result < RT_RESERVED; result++) {
+    result=RT_UNKNOWN;
+    while (++result < RT_RESERVED) {
         if (u_strcmp(tokenValue->fChars, gResourceTypes[result].nameUChars) == 0) {
             break;
         }

Modified: trunk/source/tools/icupkg/Makefile.in
===================================================================
--- trunk/source/tools/icupkg/Makefile.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/icupkg/Makefile.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -14,16 +14,12 @@
 ## Build directory information
 subdir = tools/icupkg
 
-##
-
 TARGET_STUB_NAME = icupkg
 
-SECTION = 1
+SECTION = 8
 
-#MANX_FILES = $(TARGET_STUB_NAME).$(SECTION)
+MAN_FILES = $(TARGET_STUB_NAME).$(SECTION)
 
-#ALL_MAN_FILES = $(MANX_FILES)
-
 ## Extra files to remove for 'make clean'
 CLEANFILES = *~ $(DEPS) $(MAN_FILES)
 
@@ -61,6 +57,11 @@
 	$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
 	$(INSTALL) $(TARGET) $(DESTDIR)$(sbindir)
 
+install-man: $(MAN_FILES)
+	$(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
+	$(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
+
+
 dist-local:
 
 clean-local:
@@ -79,9 +80,6 @@
 $(TARGET) : $(OBJECTS)
 	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
 
-install-man: $(MAN_FILES)
-#	$(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
-#	$(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
 
 %.$(SECTION): $(srcdir)/%.$(SECTION).in
 	cd $(top_builddir) \

Added: trunk/source/tools/icupkg/icupkg.1.in
===================================================================
--- trunk/source/tools/icupkg/icupkg.1.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/icupkg/icupkg.1.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -0,0 +1,204 @@
+.\" Hey, Emacs! This is -*-nroff-*- you know...
+.\"
+.\" icupkg.1: manual page for the icupkg utility
+.\"
+.\" Copyright (C) 2000-2006 IBM, Inc. and others.
+.\"
+.TH ICUPKG 1 "18 August 2006" "ICU MANPAGE" "ICU @VERSION@ Manual"
+.SH NAME
+.B icupkg
+\- extract or modify an ICU
+.B .dat
+archive
+.SH SYNOPSIS
+.B icupkg
+[
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
+]
+[
+.BR "\-tl\fP, \fB\-\-type" " l"
+|
+.BR "\-tb\fP, \fB\-\-type" " b"
+|
+.BR "\-te\fP, \fB\-\-type" " e"
+]
+[
+.BR "\-c\fP, \fB\-\-copyright"
+|
+.BI "\-C\fP, \fB\-\-comment" " comment"
+]
+[
+.BI "\-a\fP, \fB\-\-add" " list"
+]
+[
+.BI "\-r\fP, \fB\-\-remove" " list"
+]
+[
+.BI "\-x\fP, \fB\-\-extract" " list"
+]
+[
+.BI "\-l\fP, \fB\-\-list"
+]
+[
+.BI "\-s\fP, \fB\-\-sourcedir" " source"
+]
+[
+.BI "\-d\fP, \fB\-\-destdir" " destination"
+]
+[
+.BI "\-w\fP, \fB\-\-writepkg"
+]
+[
+.BI "\-m\fP, \fB\-\-matchmode" " mode"
+]
+.IR infilename
+[
+.BI "outfilename"
+]
+.SH DESCRIPTION
+.B icupkg
+reads the input ICU
+.B .dat
+package file, modify it according to the options,
+swap it to the desired platform properties (charset & endianness),
+and optionally write the resulting ICU
+.B .dat
+package to the output file.
+Items are removed, then added, then extracted and listed.
+An ICU
+.B .dat
+package is written if items are removed or added,
+or if the input and output filenames differ,
+or if the
+.BR "\-w\fP, \fB\-\-writepkg"
+option is set.
+.PP
+If the input filename is "new" then an empty package is created.
+If the output filename is missing, then it is automatically generated
+from the input filename. If the input filename ends with an l, b, or e
+matching its platform properties, then the output filename will
+contain the letter from the
+.BI "\-t\fP, \fB\-\-type"
+option.
+.PP
+This tool can also be used to just swap a single ICU data file, replacing the
+former icuswap tool. For this mode, provide the infilename (and optional
+outfilename) for a non-package ICU data file.
+Allowed options include
+.BI "\-t\fP, \fB\-w\fP, \fB\-s\fP"
+and
+.BI \-d
+.
+The filenames can be absolute, or relative to the source/dest dir paths.
+Other options are not allowed in this mode.
+.SH OPTIONS
+.TP
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
+Print help about usage and exit.
+.TP
+.BI "\-tl\fP, \fB\-\-type" " l"
+Output for little-endian/ASCII charset family.
+The output type defaults to the input type.
+.TP
+.BI "\-tb\fP, \fB\-\-type" " b"
+Output for big-endian/ASCII charset family.
+The output type defaults to the input type.
+.TP
+.BI "\-te\fP, \fB\-\-type" " e"
+Output for big-endian/EBCDIC charset family.
+The output type defaults to the input type.
+.TP
+.BR \-c\fP, \fB\-\-copyright
+Include the ICU copyright notice in the resulting data.
+.TP
+.BI "\-C\fP, \fB\-\-comment" " comment"
+Include the specified
+.I comment
+in the resulting data instead of the ICU copyright notice. 
+.TP
+.BI "\-a\fP, \fB\-\-add" " list"
+Add items from the
+.I list
+to the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-r\fP, \fB\-\-remove" " list"
+Remove items from the
+.I list
+from the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-x\fP, \fB\-\-extract" " list"
+Extract items from the
+.I list
+from the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-m\fP, \fB\-\-matchmode" " mode"
+Set the matching mode for item names with wildcards.
+.TP
+.BI "\-s\fP, \fB\-\-sourcedir" " source"
+Set the source directory to
+.IR source .
+The default source directory is the current directory.
+.TP
+.BI "\-d\fP, \fB\-\-destdir" " destination"
+Set the destination directory to
+.IR destination .
+The default destination directory is the current directory.
+.TP
+.BI "\-l\fP, \fB\-\-list"
+List the package items to stdout (after modifying the package).
+.SH LIST FILE SYNTAX
+Items are listed on one or more lines and separated by whitespace (space+tab).
+Comments begin with
+.B #
+and are ignored. Empty lines are ignored. Lines where the first non-whitespace
+character is one of "%&'()*+,-./:;<=>?_ are also ignored
+to reserve for future syntax.
+.PP
+Items for removal or extraction may contain a single 
+.B *
+wildcard character. The 
+.B *
+matches zero or more characters. If
+.BI "\-m\fP, \fB\-\-matchmode" " noslash"
+is set, then the
+.B *
+character does not match the
+.B /
+character.
+.PP
+Items must be listed relative to the package, and the
+.B "\fB\-\-sourcedir"
+or the
+.B "\fB\-\-destdir"
+path will be prepended. The paths are only prepended to item
+filenames while adding or extracting items, not to ICU .dat package or list
+filenames.
+.PP
+Paths may contain
+.B /
+instead of the platform's file separator character and are converted as
+appropriate.
+.SH AUTHORS
+Markus Scherer
+.br
+George Rhoten
+.SH VERSION
+1.0
+.SH COPYRIGHT
+Copyright (C) 2006 IBM, Inc. and others.
+.SH SEE ALSO
+.BR pkgdata (1)
+.BR genrb (1)
+

Added: trunk/source/tools/icupkg/icupkg.8.in
===================================================================
--- trunk/source/tools/icupkg/icupkg.8.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/icupkg/icupkg.8.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -0,0 +1,204 @@
+.\" Hey, Emacs! This is -*-nroff-*- you know...
+.\"
+.\" icupkg.8: manual page for the icupkg utility
+.\"
+.\" Copyright (C) 2000-2006 IBM, Inc. and others.
+.\"
+.TH ICUPKG 8 "18 August 2006" "ICU MANPAGE" "ICU @VERSION@ Manual"
+.SH NAME
+.B icupkg
+\- extract or modify an ICU
+.B .dat
+archive
+.SH SYNOPSIS
+.B icupkg
+[
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
+]
+[
+.BR "\-tl\fP, \fB\-\-type" " l"
+|
+.BR "\-tb\fP, \fB\-\-type" " b"
+|
+.BR "\-te\fP, \fB\-\-type" " e"
+]
+[
+.BR "\-c\fP, \fB\-\-copyright"
+|
+.BI "\-C\fP, \fB\-\-comment" " comment"
+]
+[
+.BI "\-a\fP, \fB\-\-add" " list"
+]
+[
+.BI "\-r\fP, \fB\-\-remove" " list"
+]
+[
+.BI "\-x\fP, \fB\-\-extract" " list"
+]
+[
+.BI "\-l\fP, \fB\-\-list"
+]
+[
+.BI "\-s\fP, \fB\-\-sourcedir" " source"
+]
+[
+.BI "\-d\fP, \fB\-\-destdir" " destination"
+]
+[
+.BI "\-w\fP, \fB\-\-writepkg"
+]
+[
+.BI "\-m\fP, \fB\-\-matchmode" " mode"
+]
+.IR infilename
+[
+.BI "outfilename"
+]
+.SH DESCRIPTION
+.B icupkg
+reads the input ICU
+.B .dat
+package file, modify it according to the options,
+swap it to the desired platform properties (charset & endianness),
+and optionally write the resulting ICU
+.B .dat
+package to the output file.
+Items are removed, then added, then extracted and listed.
+An ICU
+.B .dat
+package is written if items are removed or added,
+or if the input and output filenames differ,
+or if the
+.BR "\-w\fP, \fB\-\-writepkg"
+option is set.
+.PP
+If the input filename is "new" then an empty package is created.
+If the output filename is missing, then it is automatically generated
+from the input filename. If the input filename ends with an l, b, or e
+matching its platform properties, then the output filename will
+contain the letter from the
+.BI "\-t\fP, \fB\-\-type"
+option.
+.PP
+This tool can also be used to just swap a single ICU data file, replacing the
+former icuswap tool. For this mode, provide the infilename (and optional
+outfilename) for a non-package ICU data file.
+Allowed options include
+.BI "\-t\fP, \fB\-w\fP, \fB\-s\fP"
+and
+.BI \-d
+.
+The filenames can be absolute, or relative to the source/dest dir paths.
+Other options are not allowed in this mode.
+.SH OPTIONS
+.TP
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
+Print help about usage and exit.
+.TP
+.BI "\-tl\fP, \fB\-\-type" " l"
+Output for little-endian/ASCII charset family.
+The output type defaults to the input type.
+.TP
+.BI "\-tb\fP, \fB\-\-type" " b"
+Output for big-endian/ASCII charset family.
+The output type defaults to the input type.
+.TP
+.BI "\-te\fP, \fB\-\-type" " e"
+Output for big-endian/EBCDIC charset family.
+The output type defaults to the input type.
+.TP
+.BR \-c\fP, \fB\-\-copyright
+Include the ICU copyright notice in the resulting data.
+.TP
+.BI "\-C\fP, \fB\-\-comment" " comment"
+Include the specified
+.I comment
+in the resulting data instead of the ICU copyright notice. 
+.TP
+.BI "\-a\fP, \fB\-\-add" " list"
+Add items from the
+.I list
+to the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-r\fP, \fB\-\-remove" " list"
+Remove items from the
+.I list
+from the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-x\fP, \fB\-\-extract" " list"
+Extract items from the
+.I list
+from the package. The list can be a single filename with a
+.B .txt
+file extension containing a list of item filenames, or an ICU
+.B .dat
+package filename.
+.TP
+.BI "\-m\fP, \fB\-\-matchmode" " mode"
+Set the matching mode for item names with wildcards.
+.TP
+.BI "\-s\fP, \fB\-\-sourcedir" " source"
+Set the source directory to
+.IR source .
+The default source directory is the current directory.
+.TP
+.BI "\-d\fP, \fB\-\-destdir" " destination"
+Set the destination directory to
+.IR destination .
+The default destination directory is the current directory.
+.TP
+.BI "\-l\fP, \fB\-\-list"
+List the package items to stdout (after modifying the package).
+.SH LIST FILE SYNTAX
+Items are listed on one or more lines and separated by whitespace (space+tab).
+Comments begin with
+.B #
+and are ignored. Empty lines are ignored. Lines where the first non-whitespace
+character is one of "%&'()*+,-./:;<=>?_ are also ignored
+to reserve for future syntax.
+.PP
+Items for removal or extraction may contain a single 
+.B *
+wildcard character. The 
+.B *
+matches zero or more characters. If
+.BI "\-m\fP, \fB\-\-matchmode" " noslash"
+is set, then the
+.B *
+character does not match the
+.B /
+character.
+.PP
+Items must be listed relative to the package, and the
+.B "\fB\-\-sourcedir"
+or the
+.B "\fB\-\-destdir"
+path will be prepended. The paths are only prepended to item
+filenames while adding or extracting items, not to ICU .dat package or list
+filenames.
+.PP
+Paths may contain
+.B /
+instead of the platform's file separator character and are converted as
+appropriate.
+.SH AUTHORS
+Markus Scherer
+.br
+George Rhoten
+.SH VERSION
+1.0
+.SH COPYRIGHT
+Copyright (C) 2006 IBM, Inc. and others.
+.SH SEE ALSO
+.BR pkgdata (1)
+.BR genrb (1)
+

Modified: trunk/source/tools/memcheck/ICUMemCheck.pl
===================================================================
--- trunk/source/tools/memcheck/ICUMemCheck.pl	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/memcheck/ICUMemCheck.pl	2006-09-04 10:26:36 UTC (rev 106)
@@ -1,6 +1,6 @@
 #  ***********************************************************************
 #  * COPYRIGHT:
-#  * Copyright (c) 2004-2005, International Business Machines Corporation
+#  * Copyright (c) 2004-2006, International Business Machines Corporation
 #  * and others. All Rights Reserved.
 #  ***********************************************************************
 #
@@ -15,21 +15,23 @@
 #  All object files containing direct references to C or C++ runtime library memory
 #    functions will be listed in the output.
 #
-#  For ICU 3.2, the expected output is
-#    common/cmemory.o        U malloc
-#    common/cmemory.o        U free
-#    common/uniset.o         U operator delete(void*)
-#    common/unifilt.o        U operator delete(void*)
-#    i18n/strrepl.o  U operator delete(void*)
-#    layout/LayoutEngine.o   U operator delete(void*)
+#  For ICU 3.6, the expected output is
+#    common/uniset.o          U operator delete(void*)
+#    common/unifilt.o         U operator delete(void*)
+#    common/cmemory.o         U malloc
+#    common/cmemory.o         U free
+#    i18n/strrepl.o           U operator delete(void*)
+#    layout/LEFontInstance.o         U operator delete(void*)
+#    layout/LEGlyphStorage.o         U operator delete(void*)
+#    layout/LayoutEngine.o    U operator delete(void*)
 #
-#  cmemory.c         Expected failures from uprv_malloc, uprv_free implementation.
-#  uniset.cpp        Fails because of SymbolTable::~SymbolTable()
-#  unifilt.cpp       Fails because of UnicodeMatcher::~UnicodeMatcher()
-#  strrepl.cpp       Fails because of UnicodeReplacer::~UnicodeReplacer()
-#  LayoutEngine.cpp  Fails because of LeCharMapper::~LECharMapper()
-#                                     LEGlyphFilter::~LEGlyphFilter()
-#                                     LECharMapper::~LECharMapper
+#  cmemory.c          Expected failures from uprv_malloc, uprv_free implementation.
+#  uniset.cpp         Fails because of SymbolTable::~SymbolTable()
+#  unifilt.cpp        Fails because of UnicodeMatcher::~UnicodeMatcher()
+#  strrepl.cpp        Fails because of UnicodeReplacer::~UnicodeReplacer()
+#  LayoutEngine.cpp   Fails because of LEGlyphFilter::~LEGlyphFilter()
+#  LEGlyphStorage.cpp Fails because of LEInsertionCallback::~LEInsertionCallback()
+#  LEFontInstance.cpp Fails because of LECharMapper::~LECharMapper
 #
 #  To verify that no additional problems exist in the .cpp files, #ifdef out the
 #  offending destructors, rebuild icu, and re-run the tool.  The problems should

Modified: trunk/source/tools/pkgdata/pkgdata.c
===================================================================
--- trunk/source/tools/pkgdata/pkgdata.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/pkgdata/pkgdata.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -25,6 +25,7 @@
 #include "unicode/uclean.h"
 #include "unewdata.h"
 #include "uoptions.h"
+#include "putilimp.h"
 
 #if U_HAVE_POPEN
 /*
@@ -585,6 +586,10 @@
 
                 /* normal mode.. o->files is just the bare list without package names */
                 o->files = pkg_appendToList(o->files, &tail, uprv_strdup(linePtr));
+                if(uprv_pathIsAbsolute(s)) {
+                    fprintf(stderr, "pkgdata: Error: absolute path encountered. Old style paths are not supported. Use relative paths such as 'fur.res' or 'translit%cfur.res'.\n\tBad path: '%s'\n", U_FILE_SEP_CHAR, s);
+                    exit(U_ILLEGAL_ARGUMENT_ERROR);
+                }		
                 uprv_strcpy(tmp, o->srcDir);
                 uprv_strcat(tmp, o->srcDir[uprv_strlen(o->srcDir)-1]==U_FILE_SEP_CHAR?"":U_FILE_SEP_STRING);
                 uprv_strcat(tmp, s);

Modified: trunk/source/tools/toolutil/package.cpp
===================================================================
--- trunk/source/tools/toolutil/package.cpp	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/toolutil/package.cpp	2006-09-04 10:26:36 UTC (rev 106)
@@ -81,9 +81,9 @@
 static inline int32_t
 makeTypeEnum(char type) {
     return
-        type== 'l' ? TYPE_L :
-               'b' ? TYPE_B :
-               'e' ? TYPE_E :
+        type == 'l' ? TYPE_L :
+        type == 'b' ? TYPE_B :
+        type == 'e' ? TYPE_E :
                -1;
 }
 
@@ -1102,12 +1102,12 @@
         exit(U_FILE_ACCESS_ERROR);
     }
     fileLength=(int32_t)fwrite(pItem->data, 1, pItem->length, file);
-    fclose(file);
 
     if(ferror(file) || fileLength!=pItem->length) {
         fprintf(stderr, "icupkg: unable to write complete file \"%s\"\n", filename);
         exit(U_FILE_ACCESS_ERROR);
     }
+    fclose(file);
 }
 
 void

Modified: trunk/source/tools/tzcode/Makefile.in
===================================================================
--- trunk/source/tools/tzcode/Makefile.in	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/tzcode/Makefile.in	2006-09-04 10:26:36 UTC (rev 106)
@@ -2,13 +2,14 @@
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
-subdir = tools/tzcode
 
 top_builddir = ../..
 
+subdir = tools/tzcode
+
 include $(top_builddir)/icudefs.mk
 
-TZCOBJS= zic.o localtime.o asctime.o scheck.o ialloc.o
+OBJECTS= zic.o localtime.o asctime.o scheck.o ialloc.o
 TZDATA = $(firstword $(wildcard ./tzdata*.tar.gz) $(wildcard $(srcdir)/tzdata*.tar.gz))
 
 ifeq ($(TZDATA),)
@@ -39,11 +40,11 @@
 
 
 
-zic:		$(TZCOBJS) yearistype tz2icu.h
-		$(CC) $(CFLAGS) $(LFLAGS) $(TZCOBJS) $(LDLIBS) -o $@
+zic:		$(OBJECTS) yearistype $(srcdir)/tz2icu.h
+		$(CC) $(CFLAGS) $(LFLAGS) -I$(srcdir) $(OBJECTS) $(LDLIBS) -o $@
 
-tz2icu:		tz2icu.cpp tz2icu.h
-		$(CXX) -W -Wall -pedantic tz2icu.cpp -o $@
+tz2icu:		$(srcdir)/tz2icu.cpp $(srcdir)/tz2icu.h
+		$(CXX) -W -Wall -I$(srcdir) -pedantic $(srcdir)/tz2icu.cpp -o $@
 
 yearistype.sh: $(TZDATA)
 	gunzip -d < $(TZDATA) | tar xf -
@@ -52,19 +53,27 @@
 		cp yearistype.sh yearistype
 		chmod +x yearistype
 
+tz.alias:		$(srcdir)/tz.alias
+	cp $< .
+
 posix_only:	zic $(TDATA)
 		$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L /dev/null $(TDATA)
 
 
-icu_data:	tz2icu posix_only
+icu_data:	tz2icu posix_only tz.alias
 		./tz2icu $(TZDIR) zone.tab `echo $(TZDATA) | sed -e "s/.*\/tzdata//;s/\.tar\.gz$$//"`
 
 clean:
 		-rm -f core *.o *.out zdump zic yearistype date
 		@echo ICU specific cleanup:
-		-rm -f $(ICUDATA) 
+		-rm -f $(ICUDATA)
 		-rm -rf $(TZDIR)
+ifneq ($(srcdir),.)
+		-$(RMV) tz.alias
+endif
+ifneq ($(TZDATA),)
 		-rm -rf `gunzip -d < $(TZDATA) | tar tf - | grep -o '[^ ]*$$' | tr '\n' ' '`
+endif
 
 dataclean: clean
 	-rm -f $(TDATA) $(XDATA)
@@ -72,7 +81,7 @@
 distclean:	dataclean clean
 	-rm -f Makefile
 
-Makefile: Makefile.in  $(top_builddir)/config.status
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
 	cd $(top_builddir) \
 	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 

Modified: trunk/source/tools/tzcode/localtime.c
===================================================================
--- trunk/source/tools/tzcode/localtime.c	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/tzcode/localtime.c	2006-09-04 10:26:36 UTC (rev 106)
@@ -5,7 +5,7 @@
 
 #ifndef lint
 #ifndef NOID
-static char	elsieid[] = "@(#)localtime.c	8.3";
+static char	elsieid[] = "@(#)localtime.c	8.5";
 #endif /* !defined NOID */
 #endif /* !defined lint */
 
@@ -556,9 +556,9 @@
 	}
 	i = 2 * YEARSPERREPEAT;
 	sp->goback = sp->goahead = sp->timecnt > i;
-	sp->goback &= sp->types[i] == sp->types[0] &&
+	sp->goback = sp->goback && sp->types[i] == sp->types[0] &&
 		differ_by_repeat(sp->ats[i], sp->ats[0]);
-	sp->goahead &=
+	sp->goahead = sp->goahead &&
 		sp->types[sp->timecnt - 1] == sp->types[sp->timecnt - 1 - i] &&
 		differ_by_repeat(sp->ats[sp->timecnt - 1],
 			 sp->ats[sp->timecnt - 1 - i]);
@@ -916,7 +916,6 @@
 	load_result = tzload(TZDEFRULES, sp, FALSE);
 	if (load_result != 0)
 		sp->leapcnt = 0;		/* so, we're off a little */
-	sp->timecnt = 0;
 	if (*name != '\0') {
 		if (*name == '<') {
 			dstname = ++name;
@@ -967,6 +966,7 @@
 			atp = sp->ats;
 			typep = sp->types;
 			janfirst = 0;
+			sp->timecnt = 0;
 			for (year = EPOCH_YEAR;
 			    sp->timecnt + 2 <= TZ_MAX_TIMES;
 			    ++year) {

Modified: trunk/source/tools/tzcode/readme.txt
===================================================================
--- trunk/source/tools/tzcode/readme.txt	2006-08-26 11:15:34 UTC (rev 105)
+++ trunk/source/tools/tzcode/readme.txt	2006-09-04 10:26:36 UTC (rev 106)
@@ -8,7 +8,9 @@
 **********************************************************************
 
 Note:  this directory currently contains tzcode as of tzcode2006h.tar.gz
+   with localtime.c  patches from tzcode2006i.tar.gz
 
+
 ----------------------------------------------------------------------
 OVERVIEW
 




More information about the sword-cvs mailing list