changeset 3010:079a280bf354

Additional fixes that go along with the security update Backport additional fixes from 7 that went along with the security update. 2013-07-03 Omair Majid <omajid@redhat.com> * patches/openjdk/6541350-tz_display_names_l10n.patch, * patches/openjdk/6821191-tz_display_names_l10n.patch, * patches/openjdk/6977550-tzdata2010l.patch, * patches/openjdk/6996686-tzdata2010o.patch, * patches/openjdk/7017800-tzdata2011b.patch, * patches/openjdk/7027387-tzdata2011d.patch, * patches/openjdk/7033174-tzdata2011e.patch, * patches/openjdk/7039469-tzdata2011g.patch, * patches/openjdk/7090843-tzdata2011j.patch, * patches/openjdk/7103108-tzdata2011l.patch, * patches/openjdk/7103405-correct_display_names.patch, * patches/openjdk/7104126-headers_tzdata.patch, * patches/openjdk/7158483-tzdata2012c.patch, * patches/openjdk/7198570-tzdata2012f.patch, * patches/openjdk/8002070-remove_logger_stack_search.patch, * patches/openjdk/8002070-remove_logger_stack_search_2.patch, * patches/openjdk/8002225-tzdata2012i.patch, * patches/openjdk/8009987-tzdata2013b.patch, * patches/openjdk/8009996-emitter_bean.patch, * patches/openjdk/8010118-caller_sensitive.patch, * patches/openjdk/8010727-empty_logger_name.patch, * patches/openjdk/8010939-logmanager_deadlock.patch, * patches/openjdk/8011139-revise_checking_getenclosingclass.patch, * patches/openjdk/8011990-logger_test_urls.patch, * patches/openjdk/8012243-serial_regression.patch, * patches/openjdk/8013380-handle_renames.patch, * patches/openjdk/8013380-logger_stack_walk_glassfish.patch, * patches/openjdk/8014718-remove_logging_suntoolkit.patch, * patches/openjdk/8014745-logger_stack_walk_switch.patch: New file. Backport from icedtea/openjdk 7. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * NEWS: Update with fixes.
author Omair Majid <omajid@redhat.com>
date Wed, 03 Jul 2013 23:28:46 -0400
parents ce5dbd04cea5
children 736ee5b3272b
files ChangeLog Makefile.am NEWS patches/openjdk/6541350-tz_display_names_l10n.patch patches/openjdk/6821191-tz_display_names_l10n.patch patches/openjdk/6977550-tzdata2010l.patch patches/openjdk/6996686-tzdata2010o.patch patches/openjdk/7017800-tzdata2011b.patch patches/openjdk/7027387-tzdata2011d.patch patches/openjdk/7033174-tzdata2011e.patch patches/openjdk/7039469-tzdata2011g.patch patches/openjdk/7090843-tzdata2011j.patch patches/openjdk/7103108-tzdata2011l.patch patches/openjdk/7103405-correct_display_names.patch patches/openjdk/7104126-headers_tzdata.patch patches/openjdk/7158483-tzdata2012c.patch patches/openjdk/7198570-tzdata2012f.patch patches/openjdk/8002070-remove_logger_stack_search.patch patches/openjdk/8002070-remove_logger_stack_search_2.patch patches/openjdk/8002225-tzdata2012i.patch patches/openjdk/8009987-tzdata2013b.patch patches/openjdk/8009996-emitter_bean.patch patches/openjdk/8010118-caller_sensitive.patch patches/openjdk/8010727-empty_logger_name.patch patches/openjdk/8010939-logmanager_deadlock.patch patches/openjdk/8011139-revise_checking_getenclosingclass.patch patches/openjdk/8011990-logger_test_urls.patch patches/openjdk/8012243-serial_regression.patch patches/openjdk/8013380-handle_renames.patch patches/openjdk/8013380-logger_stack_walk_glassfish.patch patches/openjdk/8014718-remove_logging_suntoolkit.patch patches/openjdk/8014745-logger_stack_walk_switch.patch
diffstat 32 files changed, 16529 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Jul 10 13:59:14 2013 +0100
+++ b/ChangeLog	Wed Jul 03 23:28:46 2013 -0400
@@ -1,3 +1,38 @@
+2013-07-03  Omair Majid  <omajid@redhat.com>
+
+	* patches/openjdk/6541350-tz_display_names_l10n.patch,
+	* patches/openjdk/6821191-tz_display_names_l10n.patch,
+	* patches/openjdk/6977550-tzdata2010l.patch,
+	* patches/openjdk/6996686-tzdata2010o.patch,
+	* patches/openjdk/7017800-tzdata2011b.patch,
+	* patches/openjdk/7027387-tzdata2011d.patch,
+	* patches/openjdk/7033174-tzdata2011e.patch,
+	* patches/openjdk/7039469-tzdata2011g.patch,
+	* patches/openjdk/7090843-tzdata2011j.patch,
+	* patches/openjdk/7103108-tzdata2011l.patch,
+	* patches/openjdk/7103405-correct_display_names.patch,
+	* patches/openjdk/7104126-headers_tzdata.patch,
+	* patches/openjdk/7158483-tzdata2012c.patch,
+	* patches/openjdk/7198570-tzdata2012f.patch,
+	* patches/openjdk/8002070-remove_logger_stack_search.patch,
+	* patches/openjdk/8002070-remove_logger_stack_search_2.patch,
+	* patches/openjdk/8002225-tzdata2012i.patch,
+	* patches/openjdk/8009987-tzdata2013b.patch,
+	* patches/openjdk/8009996-emitter_bean.patch,
+	* patches/openjdk/8010118-caller_sensitive.patch,
+	* patches/openjdk/8010727-empty_logger_name.patch,
+	* patches/openjdk/8010939-logmanager_deadlock.patch,
+	* patches/openjdk/8011139-revise_checking_getenclosingclass.patch,
+	* patches/openjdk/8011990-logger_test_urls.patch,
+	* patches/openjdk/8012243-serial_regression.patch,
+	* patches/openjdk/8013380-handle_renames.patch,
+	* patches/openjdk/8013380-logger_stack_walk_glassfish.patch,
+	* patches/openjdk/8014718-remove_logging_suntoolkit.patch,
+	* patches/openjdk/8014745-logger_stack_walk_switch.patch:
+	New file. Backport from icedtea/openjdk 7.
+	* Makefile.am (ICEDTEA_PATCHES): Apply the above.
+	* NEWS: Update with fixes.
+
 2013-07-01  Omair Majid  <omajid@redhat.com>
 
 	* patches/openjdk/7188114-alternate_command_line_parser.patch,
--- a/Makefile.am	Wed Jul 10 13:59:14 2013 +0100
+++ b/Makefile.am	Wed Jul 03 23:28:46 2013 -0400
@@ -674,7 +674,37 @@
 	patches/openjdk/8014427-raster_regresssion.patch \
 	patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch \
 	patches/openjdk/8014676-javadebugger_space_in_paths.patch \
-	patches/openjdk/8014968-OCSP_timeout_default.patch
+	patches/openjdk/8014968-OCSP_timeout_default.patch \
+	patches/openjdk/8002070-remove_logger_stack_search.patch \
+	patches/openjdk/8002070-remove_logger_stack_search_2.patch \
+	patches/openjdk/8010118-caller_sensitive.patch \
+	patches/openjdk/8010727-empty_logger_name.patch \
+	patches/openjdk/8010939-logmanager_deadlock.patch \
+	patches/openjdk/8011990-logger_test_urls.patch \
+	patches/openjdk/8013380-logger_stack_walk_glassfish.patch \
+	patches/openjdk/8013380-handle_renames.patch \
+	patches/openjdk/8014745-logger_stack_walk_switch.patch \
+	patches/openjdk/8012243-serial_regression.patch \
+	patches/openjdk/8014718-remove_logging_suntoolkit.patch \
+	patches/openjdk/8011139-revise_checking_getenclosingclass.patch \
+	patches/openjdk/8009996-emitter_bean.patch \
+	patches/openjdk/6541350-tz_display_names_l10n.patch \
+	patches/openjdk/6821191-tz_display_names_l10n.patch \
+	patches/openjdk/6977550-tzdata2010l.patch \
+	patches/openjdk/6996686-tzdata2010o.patch \
+	patches/openjdk/7017800-tzdata2011b.patch \
+	patches/openjdk/7027387-tzdata2011d.patch \
+	patches/openjdk/7033174-tzdata2011e.patch \
+	patches/openjdk/7039469-tzdata2011g.patch \
+	patches/openjdk/7090843-tzdata2011j.patch \
+	patches/openjdk/7103108-tzdata2011l.patch \
+	patches/openjdk/7104126-headers_tzdata.patch \
+	patches/openjdk/7103405-correct_display_names.patch \
+	patches/openjdk/7158483-tzdata2012c.patch \
+	patches/openjdk/7198570-tzdata2012f.patch \
+	patches/openjdk/8002225-tzdata2012i.patch \
+	patches/openjdk/8009987-tzdata2013b.patch
+
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
--- a/NEWS	Wed Jul 10 13:59:14 2013 +0100
+++ b/NEWS	Wed Jul 03 23:28:46 2013 -0400
@@ -15,27 +15,55 @@
 
 * Security fixes
 * Backports
+  - S6541350: TimeZone display names localization
+  - S6821191: Timezone display name localization
+  - S6977550: (tz) Support tzdata2010l
+  - S6996686: (tz) Support tzdata2010o
+  - S7017800: (tz) Support tzdata2011b
+  - S7027387: (tz) Support tzdata2011d
+  - S7033174: (tz) Support tzdata2011e
+  - S7039469: (tz) Support tzdata2011g
+  - S7090843: (tz) Support tzdata2011j
+  - S7103108: (tz) Support tzdata2011l
+  - S7103405: Correct display names for Pacific/Apia timezone
+  - S7104126: Insert openjdk copyright header back into TZdata files
+  - S7158483: (tz) Support tzdata2012c
+  - S7198570: (tz) Support tzdata2012f
   - S7188114: (launcher) need an alternate command line parser for Windows
+  - S7195301: XML Signature DOM implementation should not use instanceof to determine type of Node
   - S7199143: RFE: OCSP revocation checker should provide possibility to specify connection timeout
+  - S8002070: Remove the stack search for a resource bundle for Logger to use
+  - S8002225: (tz) Support tzdata2012i
   - S8006120: Provide "Server JRE" for 7u train
   - S8006536: [launcher]  removes trailing slashes on arguments
   - S8009165: Fix for 8006435 needs revision
   - S8009217: REGRESSION: test com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java fails to compile since 7u21b03
   - S8009463: Regression test test\java\lang\Runtime\exec\ArgWithSpaceAndFinalBackslash.java failing.
   - S8009610: Blacklist certificate used with malware.
+  - S8009987: (tz) Support tzdata2013b
+  - S8009996: tests javax/management/mxbean/MiscTest.java and javax/management/mxbean/StandardMBeanOverrideTest.java fail
+  - S8010118: Annotate jdk caller sensitive methods with @sun.reflect.CallerSensitive
   - S8010213: Some api/javax_net/SocketFactory tests fail in 7u25 nightly build
   - S8010714: XML DSig API allows a RetrievalMethod to reference another RetrievalMethod
+  - S8010727: WLS fails to add a logger with "" in its own LogManager subclass instance
+  - S8010939: Deadlock in LogManager
+  - S8011139: (reflect) Revise checking in getEnclosingClass
   - S8011154: java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java failed since 7u25b03 on windows
   - S8011313: OCSP timeout set to wrong value if com.sun.security.ocsp.timeout not defined
+  - S8011990: TEST_BUG: java/util/logging/bundlesearch/ResourceBundleSearchTest.java fails on Windows
   - S8011992: java/awt/image/mlib/MlibOpsTest.java failed since jdk7u25b05
   - S8012112: java/awt/image/mlib/MlibOpsTest.java fails on sparc solaris
+  - S8012243: about 30% regression on specjvm2008.serial on 7u25 comparing 7u21
   - S8012617: ArrayIndexOutOfBoundsException with some fonts using LineBreakMeasurer
   - S8012933: Test closed/java/awt/Dialog/DialogAnotherThread/JaWSTest.java fails since jdk 7u25 b07
   - S8013196: TimeZone.getDefault() throws NPE due to sun.awt.AppContext.getAppContext()
+  - S8013380: Removal of stack walk to find resource bundle breaks Glassfish startup
   - S8014205: Most of the Swing dialogs are blank on one win7 MUI
   - S8014427: REGRESSION: closed/javax/imageio/plugins/bmp/Write3ByteBgrTest.java fails since 7u25 b09
-  - S8014618: Need to strip leading zeros in TlsPremasterSecret of DHKeyAgreement
+  - S8014618, RH868136: Need to strip leading zeros in TlsPremasterSecret of DHKeyAgreement
   - S8014676: Java debugger may fail to run
+  - S8014718: Netbeans IDE begins to throw a lot exceptions since 7u25 b10
+  - S8014745: Provide a switch to allow stack walk search of resource bundle
   - S8014968: OCSP and CRL connection timeout is set to four hours by default
 
 New in release 1.12.5 (2013-04-24):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6541350-tz_display_names_l10n.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,300 @@
+# HG changeset patch
+# User yhuang
+# Date 1261700777 28800
+# Node ID 1397ae8dc558c9128d84818afc9ec55d23714c35
+# Parent  7bf839e2e9ce58d5f205280bf5a06f00227f2240
+6541350: TimeZone display names localization
+Reviewed-by: yhuang, peytoia
+
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -83,8 +83,8 @@
+                                      "Zentrale Sommerzeit", "CDT"};
+         String CTT[] = new String[] {"Chinesische Normalzeit", "CST",
+                                      "Chinesische Sommerzeit", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"Kubanische Normalzeit", "CST",
++                                      "Kubanische Sommerzeit", "CDT"};
+         String DARWIN[] = new String[] {"Zentrale Normalzeit (Northern Territory)", "CST",
+                                         "Zentrale Sommerzeit (Northern Territory)", "CST"};
+         String DUBLIN[] = new String[] {"Greenwich Zeit", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"Zentral-Westliche Normalzeit (Australien)", "CWST",
++                                              "Zentral-Westliche Sommerzeit (Australien)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -83,8 +83,8 @@
+                                      "Hora de verano Central", "CDT"};
+         String CTT[] = new String[] {"Hora est\u00e1ndar de China", "CST",
+                                      "Hora de verano de China", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"Hora est\u00e1ndar de Cuba", "CST",
++                                      "Hora de verano de Cuba", "CDT"};
+         String DARWIN[] = new String[] {"Hora est\u00e1ndar Central (territorio del Norte)", "CST",
+                                         "Hora de verano Central (territorio del Norte)", "CST"};
+         String DUBLIN[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
+@@ -595,8 +595,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"Hora est\u00e1ndar de Australia Central y Occidental", "CWST",
++                                              "Hora de verano de Australia Central y Occidental", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -83,8 +83,8 @@
+                                      "Heure avanc\u00e9e du Centre", "CDT"} ;
+         String CTT[] = new String[] {"Heure normale de Chine", "CST",
+                                      "Heure avanc\u00e9e de Chine", "CDT"} ;
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"Heure standard de Cuba", "CST",
++                                      "Heure d'\u00e9t\u00e9 de Cuba", "CDT"};
+         String DARWIN[] = new String[] {"Heure standard d'Australie centrale (Territoire du Nord)", "CST",
+                                         "Heure d'\u00e9t\u00e9 d'Australie centrale (Territoire du Nord)", "CST"};
+         String DUBLIN[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"Heure standard de l'Australie occidentale (centre)", "CWST",
++                                              "Heure d'\u00e9t\u00e9 de l'Australie occidentale (centre)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -83,8 +83,8 @@
+                                      "Ora legale USA centrale", "CDT"};
+         String CTT[] = new String[] {"Ora solare della Cina", "CST",
+                                      "Ora legale della Cina", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"Ora solare Cuba", "CST",
++                                      "Ora legale Cuba", "CDT"};
+         String DARWIN[] = new String[] {"Ora centrale standard (Territori del Nord)", "CST",
+                                         "Ora estiva centrale (Territori del Nord)", "CST"};
+         String DUBLIN[] = new String[] {"Ora media di Greenwich", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"Ora solare Australia centrorientale", "CWST",
++                                              "Ora estiva Australia centrorientale", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -83,8 +83,8 @@
+                                      "\u4e2d\u90e8\u590f\u6642\u9593", "CDT"};
+         String CTT[] = new String[] {"\u4e2d\u56fd\u6a19\u6e96\u6642", "CST",
+                                      "\u4e2d\u56fd\u590f\u6642\u9593", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"\u30ad\u30e5\u30fc\u30d0\u6a19\u6e96\u6642", "CST",
++                                      "\u30ad\u30e5\u30fc\u30d0\u590f\u6642\u9593", "CDT"};
+         String DARWIN[] = new String[] {"\u4e2d\u90e8\u6a19\u6e96\u6642 (\u30ce\u30fc\u30b6\u30f3\u30c6\u30ea\u30c8\u30ea\u30fc)", "CST",
+                                         "\u4e2d\u90e8\u590f\u6642\u9593 (\u30ce\u30fc\u30b6\u30f3\u30c6\u30ea\u30c8\u30ea\u30fc)", "CST"};
+         String DUBLIN[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"\u4e2d\u897f\u90e8\u6a19\u6e96\u6642 (\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2)", "CWST",
++                                              "\u4e2d\u897f\u90e8\u590f\u6642\u9593 (\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -83,8 +83,8 @@
+                                      "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+         String CTT[] = new String[] {"\uc911\uad6d \ud45c\uc900\uc2dc", "CST",
+                                      "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"\ucfe0\ubc14 \ud45c\uc900\uc2dc", "CST",
++                                      "\ucfe0\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+         String DARWIN[] = new String[] {"\uc911\ubd80 \ud45c\uc900\uc2dc(\ub178\ub358 \uc9c0\uc5ed)", "CST",
+                                         "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ub178\ub358 \uc9c0\uc5ed)", "CST"};
+         String DUBLIN[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"\uc911\uc11c\ubd80 \ud45c\uc900\uc2dc(\uc624\uc2a4\ud2b8\ub808\uc77c\ub9ac\uc544)", "CWST",
++                                              "\uc911\uc11c\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\uc624\uc2a4\ud2b8\ub808\uc77c\ub9ac\uc544)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -45,8 +45,8 @@
+     protected final Object[][] getContents() {
+         String ACT[] = new String[] {"Acre, normaltid", "ACT",
+                                      "Acre, sommartid", "ACST"};
+-        String ADELAIDE[] = new String[] {"Central Standard Time (S\u00f6dra Australien)", "CST",
+-                                          "Central Summer Time (S\u00f6dra Australien)", "CST"};
++        String ADELAIDE[] = new String[] {"Central normaltid (S\u00f6dra Australien)", "CST",
++                                          "Central sommartid (S\u00f6dra Australien)", "CST"};
+         String AGT[] = new String[] {"Argentina, normaltid", "ART",
+                                      "Argentina, sommartid", "ARST"};
+         String AKST[] = new String[] {"Alaska, normaltid", "AKST",
+@@ -61,10 +61,10 @@
+                                      "Atlantisk sommartid", "ADT"};
+         String BDT[] = new String[] {"Bangladesh, normaltid", "BDT",
+                                      "Bangladesh, sommartid", "BDST"};
+-        String BRISBANE[] = new String[] {"Eastern Standard Time (Queensland)", "EST",
+-                                          "Eastern Summer Time (Queensland)", "EST"};
+-        String BROKEN_HILL[] = new String[] {"Central Standard Time (S\u00f6dra Australien/Nya Sydwales)", "CST",
+-                                             "Central Summer Time (S\u00f6dra Australien/Nya Sydwales)", "CST"};
++        String BRISBANE[] = new String[] {"\u00d6stlig normaltid (Queensland)", "EST",
++                                          "\u00d6stlig sommartid (Queensland)", "EST"};
++        String BROKEN_HILL[] = new String[] {"Central normaltid (S\u00f6dra Australien/Nya Sydwales)", "CST",
++                                             "Central sommartid (S\u00f6dra Australien/Nya Sydwales)", "CST"};
+         String BRT[] = new String[] {"Brasilien, normaltid", "BRT",
+                                      "Brasilien, sommartid", "BRST"};
+         String BTT[] = new String[] {"Bhutan, normaltid", "BTT",
+@@ -83,10 +83,10 @@
+                                      "Central sommartid", "CDT"};
+         String CTT[] = new String[] {"Kina, normaltid", "CST",
+                                      "Kina, sommartid", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
+-        String DARWIN[] = new String[] {"Central Standard Time (Nordterritoriet)", "CST",
+-                                        "Central Summer Time (Nordterritoriet)", "CST"};
++        String CUBA[] = new String[] {"Kuba, normaltid", "CST",
++                                      "Kuba, sommartid", "CDT"};
++        String DARWIN[] = new String[] {"Central normaltid (Nordterritoriet)", "CST",
++                                        "Central sommartid (Nordterritoriet)", "CST"};
+         String DUBLIN[] = new String[] {"Greenwichtid", "GMT",
+                                         "Irland, sommartid", "IST"};
+         String EAT[] = new String[] {"\u00d6stafrikansk tid", "EAT",
+@@ -99,8 +99,8 @@
+                                      "\u00d6stgr\u00f6nl\u00e4ndsk sommartid", "EGST"};
+         String EST[] = new String[] {"Eastern, normaltid", "EST",
+                                      "Eastern, sommartid", "EDT"};
+-        String EST_NSW[] = new String[] {"Eastern Standard Time (Nya Sydwales)", "EST",
+-                                         "Eastern Summer Time (Nya Sydwales)", "EST"};
++        String EST_NSW[] = new String[] {"Eastern, normaltid (Nya Sydwales)", "EST",
++                                         "Eastern, sommartid (Nya Sydwales)", "EST"};
+         String GHMT[] = new String[] {"Ghana, normaltid", "GMT",
+                                       "Ghana, sommartid", "GHST"};
+         String GAMBIER[] =  new String[] {"Gambier, normaltid", "GAMT",
+@@ -163,10 +163,10 @@
+                                      "Salomon\u00f6arna, sommartid", "SBST"};
+         String SGT[] = new String[] {"Singapore, normaltid", "SGT",
+                                      "Singapore, sommartid", "SGST"};
+-        String SLST[] = new String[] {"Greenwich Mean Time", "GMT",
++        String SLST[] = new String[] {"Greenwichtid", "GMT",
+                                       "Sierra Leone, sommartid", "SLST"};
+-        String TASMANIA[] = new String[] {"Eastern Standard Time (Tasmanien)", "EST",
+-                                          "Eastern Summer Time (Tasmanien)", "EST"};
++        String TASMANIA[] = new String[] {"Eastern, normaltid (Tasmanien)", "EST",
++                                          "Eastern, sommartid (Tasmanien)", "EST"};
+         String TMT[] = new String[] {"Turkmenistan, normaltid", "TMT",
+                                      "Turkmenistan, sommartid", "TMST"};
+         String TRUT[] = new String[] {"Truk, normaltid", "TRUT",
+@@ -181,16 +181,16 @@
+                                      "V\u00e4steuropeisk sommartid", "WEST"};
+         String WIT[] = new String[] {"V\u00e4stindonesisk tid", "WIT",
+                                      "V\u00e4stindonesisk sommartid", "WIST"};
+-        String WST_AUS[] = new String[] {"Western Standard Time (Australien)", "WST",
+-                                         "Western Summer Time (Australien)", "WST"};
++        String WST_AUS[] = new String[] {"V\u00e4stlig normaltid (Australien)", "WST",
++                                         "V\u00e4stlig sommartid (Australien)", "WST"};
+         String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
+                                        "Samoa, sommartid", "SDT"};
+         String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
+                                            "V\u00e4stsamoansk sommartid", "WSST"};
+         String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
+                                       "Chamorro, sommartid", "ChDT"};
+-        String VICTORIA[] = new String[] {"Eastern Standard Time (Victoria)", "EST",
+-                                          "Eastern Summer Time (Victoria)", "EST"};
++        String VICTORIA[] = new String[] {"\u00d6stlig normaltid (Victoria)", "EST",
++                                          "\u00d6stlig sommartid (Victoria)", "EST"};
+         String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
+                                      "Koordinerad universell tid", "UTC"};
+         String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"Central v\u00e4stlig normaltid (Australien)", "CWST",
++                                              "Central v\u00e4stlig sommartid (Australien)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -83,8 +83,8 @@
+                                      "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT"};
+         String CTT[] = new String[] {"\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", "CST",
+                                      "\u4e2d\u56fd\u590f\u4ee4\u65f6", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"\u53e4\u5df4\u6807\u51c6\u65f6\u95f4", "CST",
++                                      "\u53e4\u5df4\u590f\u4ee4\u65f6", "CDT"};
+         String DARWIN[] = new String[] {"\u4e2d\u592e\u6807\u51c6\u65f6\u95f4\uff08\u5317\u9886\u5730\uff09", "CST",
+                                         "\u4e2d\u592e\u590f\u4ee4\u65f6\uff08\u5317\u9886\u5730\uff09", "CST"};
+         String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
+@@ -594,8 +594,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"\u4e2d\u897f\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u6fb3\u5927\u5229\u4e9a\uff09", "CWST",
++                                              "\u4e2d\u897f\u90e8\u590f\u4ee4\u65f6\uff08\u6fb3\u5927\u5229\u4e9a\uff09", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -83,8 +83,8 @@
+                                      "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+         String CTT[] = new String[] {"\u4e2d\u570b\u6a19\u6e96\u6642\u9593", "CST",
+                                      "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+-        String CUBA[] = new String[] {"Cuba Standard Time", "CST",
+-                                      "Cuba Daylight Time", "CDT"};
++        String CUBA[] = new String[] {"\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "CST",
++                                      "\u53e4\u5df4\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+         String DARWIN[] = new String[] {"\u4e2d\u90e8\u6a19\u6e96\u6642\u9593 (\u5317\u90e8\u5404\u5730\u5340)", "CST",
+                                         "\u4e2d\u90e8\u590f\u4ee4\u6642\u9593 (\u5317\u90e8\u5404\u5730\u5340)", "CST"};
+         String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
+@@ -595,8 +595,8 @@
+             {"Australia/Canberra", EST_NSW},
+             {"Australia/Currie", EST_NSW},
+             {"Australia/Darwin", DARWIN},
+-            {"Australia/Eucla", new String[] {"Central Western Standard Time (Australia)", "CWST",
+-                                              "Central Western Summer Time (Australia)", "CWST"}},
++            {"Australia/Eucla", new String[] {"\u4e2d\u897f\u90e8\u6a19\u6e96\u6642\u9593 (\u6fb3\u5927\u5229\u4e9e)", "CWST",
++                                              "\u4e2d\u897f\u90e8\u65e5\u5149\u7bc0\u7d04\u6642\u9593 (\u6fb3\u5927\u5229\u4e9e)", "CWST"}},
+             {"Australia/Hobart", TASMANIA},
+             {"Australia/LHI", LORD_HOWE},
+             {"Australia/Lindeman", BRISBANE},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6821191-tz_display_names_l10n.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,125 @@
+# HG changeset patch
+# User yhuang
+# Date 1262835175 28800
+# Node ID eea1cc096889cec5151c08de842a5493724cdc1c
+# Parent  8bf6b2173e9f5b54ecf393e24b23d3f79968c6da
+6821191: Timezone display name localization
+Reviewed-by: yhuang, ogino
+
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -173,8 +173,8 @@
+                                       "Truk Sommerzeit", "TRUST"};
+         String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
+                                      "Ulaanbaatar Sommerzeit", "ULAST"};
+-        String WART[] = new String[] {"Argentinische Zeit", "WART",
+-                                      "Argentinische Sommerzeit", "WARST"};
++        String WART[] = new String[] {"Westargentinische Zeit", "WART",
++                                      "Westargentinische Sommerzeit", "WARST"};
+         String WAT[] = new String[] {"Westafrikanische Zeit", "WAT",
+                                      "Westafrikanische Sommerzeit", "WAST"};
+         String WET[] = new String[] {"Westeurop\u00e4ische Zeit", "WEZ",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -173,8 +173,8 @@
+                                      "Hora de verano de Truk", "TRUST"};
+         String ULAT[]= new String[] {"Hora de Ulan Bator", "ULAT",
+                                      "Hora de verano de Ulan Bator", "ULAST"};
+-        String WART[] = new String[] {"Hora de Argentina", "WART",
+-                                      "Hora de verano de Argentina", "WARST"};
++        String WART[] = new String[] {"Hora de Argentina Occidental", "WART",
++                                      "Hora de verano de Argentina Occidental", "WARST"};
+         String WAT[] = new String[] {"Hora de \u00c1frica Occidental", "WAT",
+                                      "Hora de verano de \u00c1frica Occidental", "WAST"};
+         String WET[] = new String[] {"Hora de Europa Occidental", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -173,8 +173,8 @@
+                                       "Heure d'\u00e9t\u00e9 de Truk", "TRUST"};
+         String ULAT[]= new String[] {"Heure de l'Ulaanbaatar", "ULAT",
+                                      "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST"} ;
+-        String WART[] = new String[] {"Heure D'Argentine", "WART",
+-                                      "Heure d'\u00e9t\u00e9 D'Argentine", "WARST"} ;
++        String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
++                                      "Heure d'\u00e9t\u00e9 D'Argentine de l'Ouest", "WARST"} ;
+         String WAT[] = new String[] {"Heure d'Afrique de l'Ouest", "WAT",
+                                      "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST"} ;
+         String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -173,8 +173,8 @@
+                                       "Ora estiva di Truk", "TRUST"};
+         String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
+                                      "Ora estiva di Ulaanbaatar", "ULAST"};
+-        String WART[] = new String[] {"Ora dell'Argentina", "WART",
+-                                      "Ora estiva dell'Argentina", "WARST"};
++        String WART[] = new String[] {"Ora dell'Argentina occidentale", "WART",
++                                      "Ora estiva dell'Argentina occidentale", "WARST"};
+         String WAT[] = new String[] {"Ora dell'Africa occidentale", "WAT",
+                                      "Ora estiva dell'Africa occidentale", "WAST"};
+         String WET[] = new String[] {"Ora dell'Europa occidentale", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -173,8 +173,8 @@
+                                       "\u30c8\u30e9\u30c3\u30af\u590f\u6642\u9593", "TRUST"};
+         String ULAT[]= new String[] {"\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u6642\u9593", "ULAT",
+                                      "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST"};
+-        String WART[] = new String[] {"\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
+-                                      "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "WARST"};
++        String WART[] = new String[] {"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
++                                      "\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "WAT",
+                                      "\u897f\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "WAST"};
+         String WET[] = new String[] {"\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -173,8 +173,8 @@
+                                       "\ud2b8\ub8e8\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TRUST"};
+         String ULAT[]= new String[] {"\uc6b8\ub780\ubc14\ud0c0\ub974 \uc2dc\uac04", "ULAT",
+                                      "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST"};
+-        String WART[] = new String[] {"\uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
+-                                      "\uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WARST"};
++        String WART[] = new String[] {"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
++                                      "\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WARST"};
+         String WAT[] = new String[] {"\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "WAT",
+                                      "\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAST"};
+         String WET[] = new String[] {"\uc11c\uc720\ub7fd \uc2dc\uac04", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -173,8 +173,8 @@
+                                       "Truk, sommartid", "TRUST"};
+         String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
+                                      "Ulaanbaatar, sommartid", "ULAST"};
+-        String WART[] = new String[] {"Argentina, normaltid", "WART",
+-                                      "Argentina, sommartid", "WARST"};
++        String WART[] = new String[] {"V\u00e4stargentina, normaltid", "WART",
++                                      "V\u00e4stargentina, sommartid", "WARST"};
+         String WAT[] = new String[] {"V\u00e4stafrikansk tid", "WAT",
+                                      "V\u00e4stafrikansk sommartid", "WAST"};
+         String WET[] = new String[] {"V\u00e4steuropeisk tid", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -173,8 +173,8 @@
+                                       "\u7279\u9c81\u514b\u590f\u4ee4\u65f6", "TRUST"};
+         String ULAT[]= new String[] {"\u5e93\u4f26\u65f6\u95f4", "ULAT",
+                                      "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST"};
+-        String WART[] = new String[] {"\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
+-                                      "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "WARST"};
++        String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
++                                      "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u65f6\u95f4", "WAT",
+                                      "\u897f\u975e\u590f\u4ee4\u65f6", "WAST"};
+         String WET[] = new String[] {"\u897f\u6b27\u65f6\u95f4", "WET",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -173,8 +173,8 @@
+                                       "\u7279\u9b6f\u514b\u590f\u4ee4\u6642\u9593", "TRUST"};
+         String ULAT[]= new String[] {"\u5eab\u502b\u6642\u9593", "ULAT",
+                                      "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST"};
+-          String WART[] = new String[] {"\u963f\u6839\u5ef7\u6642\u9593", "WART",
+-                                      "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "WARST"};
++          String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
++                                      "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u6642\u9593", "WAT",
+                                      "\u897f\u975e\u590f\u4ee4\u6642\u9593", "WAST"};
+         String WET[] = new String[] {"\u897f\u6b50\u6642\u9593", "WET",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6977550-tzdata2010l.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,1208 @@
+# HG changeset patch
+# User peytoia
+# Date 1282540492 -32400
+# Node ID 23f72ec0d8e83e9f7e05c450e1ec230e31f579ed
+# Parent  58626b4eedcbd0a316ae2bd6f5a7818702e3d97c
+6977550: (tz) Support tzdata2010l
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2010i
++tzdata2010l
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -316,8 +316,25 @@
+ # and can be found by searching for "winter" in their search engine
+ # (at least today).
+ 
++# From Alexander Krivenyshev (2010-07-20):
++# According to News from Egypt -  Al-Masry Al-Youm Egypt's cabinet has
++# decided that Daylight Saving Time will not be used in Egypt during
++# Ramadan.
++#
++# Arabic translation:
++# "Clocks to go back during Ramadan--and then forward again"
++# <a href="http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again">
++# http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
++# </a>
++# or
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_egypt02.html">
++# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
++# </a>
++
+ Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
+ Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
++Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
++Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
+ Rule	Egypt	2010	max	-	Sep	lastThu	23:00s	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -2200,6 +2200,18 @@
+ # "At 12:01am Friday, clocks in Israel and the West Bank will change to
+ # 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+ 
++# From Steffen Thorsen (2010-08-11):
++# According to several sources, including
++# <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=306795">
++# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
++# </a>
++# the clocks were set back one hour at 2010-08-11 00:00:00 local time in 
++# Gaza and the West Bank.
++# Some more background info:
++# <a href="http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html">
++# http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
++# </a>
++
+ # The rules for Egypt are stolen from the `africa' file.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
+@@ -2220,6 +2232,7 @@
+ Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
+ Rule Palestine	2010	max	-	Mar	lastSat	0:01	1:00	S
+ Rule Palestine	2009	max	-	Sep	Fri>=1	2:00	0	-
++Rule Palestine	2010	only	-	Aug	11	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -368,10 +368,10 @@
+ 
+ # Micronesia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Pacific/Truk	10:07:08 -	LMT	1901
+-			10:00	-	TRUT			# Truk Time
+-Zone Pacific/Ponape	10:32:52 -	LMT	1901		# Kolonia
+-			11:00	-	PONT			# Ponape Time
++Zone Pacific/Chuuk	10:07:08 -	LMT	1901
++			10:00	-	CHUT			# Chuuk Time
++Zone Pacific/Pohnpei	10:32:52 -	LMT	1901		# Kolonia
++			11:00	-	PONT			# Pohnpei Time
+ Zone Pacific/Kosrae	10:51:56 -	LMT	1901
+ 			11:00	-	KOST	1969 Oct	# Kosrae Time
+ 			12:00	-	KOST	1999
+--- openjdk/jdk/make/sun/javazic/tzdata/backward
++++ openjdk/jdk/make/sun/javazic/tzdata/backward
+@@ -112,7 +112,9 @@
+ Link	America/Denver		Navajo
+ Link	Asia/Shanghai		PRC
+ Link	Pacific/Pago_Pago	Pacific/Samoa
+-Link	Pacific/Truk		Pacific/Yap
++Link	Pacific/Chuuk		Pacific/Yap
++Link	Pacific/Chuuk		Pacific/Truk
++Link	Pacific/Pohnpei		Pacific/Ponape
+ Link	Europe/Warsaw		Poland
+ Link	Europe/Lisbon		Portugal
+ Link	Asia/Taipei		ROC
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -1035,22 +1035,47 @@
+ 			2:00	EU	EE%sT
+ 
+ # Finland
+-#
++
+ # From Hannu Strang (1994-09-25 06:03:37 UTC):
+ # Well, here in Helsinki we're just changing from summer time to regular one,
+ # and it's supposed to change at 4am...
++
++# From Janne Snabb (2010-0715):
+ #
+-# From Paul Eggert (2006-03-22):
+-# Shanks & Pottenger say Finland has switched at 02:00 standard time
+-# since 1981.  Go with Strang instead.
++# I noticed that the Finland data is not accurate for years 1981 and 1982.
++# During these two first trial years the DST adjustment was made one hour
++# earlier than in forthcoming years. Starting 1983 the adjustment was made
++# according to the central European standards.
+ #
++# This is documented in Heikki Oja: Aikakirja 2007, published by The Almanac
++# Office of University of Helsinki, ISBN 952-10-3221-9, available online (in
++# Finnish) at
++#
++# <a href="http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf">
++# http://almanakka.helsinki.fi/aikakirja/Aikakirja2007kokonaan.pdf
++# </a>
++#
++# Page 105 (56 in PDF version) has a handy table of all past daylight savings
++# transitions. It is easy enough to interpret without Finnish skills.
++#
++# This is also confirmed by Finnish Broadcasting Company's archive at:
++#
++# <a href="http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401">
++# http://www.yle.fi/elavaarkisto/?s=s&g=1&ag=5&t=&a=3401
++# </a>
++#
++# The news clip from 1981 says that "the time between 2 and 3 o'clock does not
++# exist tonight."
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
+ Rule	Finland	1942	only	-	Oct	3	0:00	0	-
++Rule	Finland	1981	1982	-	Mar	lastSun	2:00	1:00	S
++Rule	Finland	1981	1982	-	Sep	lastSun	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
+ 			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
+-			2:00	Finland	EE%sT	1981 Mar 29 2:00
++			2:00	Finland	EE%sT	1983
+ 			2:00	EU	EE%sT
+ 
+ # Aaland Is
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -82,9 +82,9 @@
+ # FAX       : 33 (0) 1 40 51 22 91
+ # Internet  : services.iers@obspm.fr
+ #
+-# Paris, 4 July 2009
++# Paris, 14 July 2010
+ #
+-# Bulletin C 38
++# Bulletin C 40
+ #
+ # To authorities responsible
+ # for the measurement and
+@@ -92,9 +92,9 @@
+ #
+ # INFORMATION ON UTC - TAI
+ #
+-# NO positive leap second will be introduced at the end of December 2009.
++# NO positive leap second will be introduced at the end of December 2010.
+ # The difference between Coordinated Universal Time UTC and the
+-# International Atomic Time TAI is :		
++# International Atomic Time TAI is :
+ #
+ # from 2009 January 1, 0h UTC, until further notice : UTC-TAI = -34 s
+ #
+@@ -104,6 +104,6 @@
+ # will be no time step at the next possible date.
+ #
+ # Daniel GAMBIS
+-# Director			
++# Director
+ # Earth Orientation Center of IERS
+ # Observatoire de Paris, France
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -1346,6 +1346,83 @@
+ # entry since our cutoff date of 1970, so we can move
+ # America/Coral_Harbour to the 'backward' file.
+ 
++# From Mark Brader (2010-03-06):
++#
++# Currently the database has:
++#
++# # Ontario
++#
++# # From Paul Eggert (2006-07-09):
++# # Shanks & Pottenger write that since 1970 most of Ontario has been like
++# # Toronto.
++# # Thunder Bay skipped DST in 1973.
++# # Many smaller locales did not observe peacetime DST until 1974;
++# # Nipigon (EST) and Rainy River (CST) are the largest that we know of.
++#
++# In the (Toronto) Globe and Mail for Saturday, 1955-09-24, in the bottom
++# right corner of page 1, it says that Toronto will return to standard
++# time at 2 am Sunday morning (which agrees with the database), and that:
++#
++#     The one-hour setback will go into effect throughout most of Ontario,
++#     except in areas like Windsor which remains on standard time all year.
++#
++# Windsor is, of course, a lot larger than Nipigon.
++#
++# I only came across this incidentally.  I don't know if Windsor began
++# observing DST when Detroit did, or in 1974, or on some other date.
++#
++# By the way, the article continues by noting that:
++#
++#     Some cities in the United States have pushed the deadline back
++#     three weeks and will change over from daylight saving in October.
++
++# From Arthur David Olson (2010-07-17):
++#
++# "Standard Time and Time Zones in Canada" appeared in
++# The Journal of The Royal Astronomical Society of Canada,
++# volume 26, number 2 (February 1932) and, as of 2010-07-17,
++# was available at
++# <a href="http://adsabs.harvard.edu/full/1932JRASC..26...49S">
++# http://adsabs.harvard.edu/full/1932JRASC..26...49S
++# </a>
++#
++# It includes the text below (starting on page 57):
++#
++#   A list of the places in Canada using daylight saving time would
++# require yearly revision. From information kindly furnished by
++# the provincial governments and by the postmasters in many cities
++# and towns, it is found that the following places used daylight sav-
++# ing in 1930. The information for the province of Quebec is definite,
++# for the other provinces only approximate:
++#
++# 	Province	Daylight saving time used
++# Prince Edward Island	Not used.
++# Nova Scotia		In Halifax only.
++# New Brunswick		In St. John only.
++# Quebec		In the following places:
++# 			Montreal	Lachine
++# 			Quebec		Mont-Royal
++# 			Levis		Iberville
++# 			St. Lambert	Cap de la Madeleine
++# 			Verdun		Loretteville
++# 			Westmount	Richmond
++# 			Outremont	St. Jerome
++# 			Longueuil	Greenfield Park
++# 			Arvida		Waterloo
++# 			Chambly-Canton	Beaulieu
++# 			Melbourne	La Tuque
++# 			St. Theophile	Buckingham
++# Ontario		Used generally in the cities and towns along
++# 			the southerly part of the province. Not
++# 			used in the northwesterlhy part.
++# Manitoba		Not used.
++# Saskatchewan		In Regina only.
++# Alberta		Not used.
++# British Columbia	Not used.
++#
++#   With some exceptions, the use of daylight saving may be said to be limited
++# to those cities and towns lying between Quebec city and Windsor, Ont.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Toronto	1919	only	-	Mar	30	23:30	1:00	D
+ Rule	Toronto	1919	only	-	Oct	26	0:00	0	S
+@@ -2111,7 +2188,44 @@
+ 			-8:00	-	PST	1970
+ 			-7:00	Mexico	M%sT	1999
+ 			-7:00	-	MST
++
++# From Alexander Krivenyshev (2010-04-21):
++# According to news, Bah&iacute;a de Banderas (Mexican state of Nayarit)
++# changed time zone UTC-7 to new time zone UTC-6 on April 4, 2010 (to
++# share the same time zone as nearby city Puerto Vallarta, Jalisco).
++#
++# (Spanish)
++# Bah&iacute;a de Banderas homologa su horario al del centro del
++# pa&iacute;s, a partir de este domingo
++# <a href="http://www.nayarit.gob.mx/notes.asp?id=20748">
++# http://www.nayarit.gob.mx/notes.asp?id=20748
++# </a>
++#
++# Bah&iacute;a de Banderas homologa su horario con el del Centro del
++# Pa&iacute;s
++# <a href="http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50">
++# http://www.bahiadebanderas.gob.mx/principal/index.php?option=com_content&view=article&id=261:bahia-de-banderas-homologa-su-horario-con-el-del-centro-del-pais&catid=42:comunicacion-social&Itemid=50"
++# </a>
++#
++# (English)
++# Puerto Vallarta and Bah&iacute;a de Banderas: One Time Zone
++# <a href="http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml">
++# http://virtualvallarta.com/puertovallarta/puertovallarta/localnews/2009-12-03-Puerto-Vallarta-and-Bahia-de-Banderas-One-Time-Zone.shtml
++# </a>
++#
++# or
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_mexico08.html">
++# http://www.worldtimezone.com/dst_news/dst_news_mexico08.html
++# </a>
++#
++# "Mexico's Senate approved the amendments to the Mexican Schedule System that
++# will allow Bah&iacute;a de Banderas and Puerto Vallarta to share the same time
++# zone ..."
+ # Baja California Sur, Nayarit, Sinaloa
++
++# From Arthur David Olson (2010-05-01):
++# Use "Bahia_Banderas" to keep the name to fourteen characters.
++
+ Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
+ 			-7:00	-	MST	1927 Jun 10 23:00
+ 			-6:00	-	CST	1930 Nov 15
+@@ -2122,6 +2236,19 @@
+ 			-7:00	-	MST	1949 Jan 14
+ 			-8:00	-	PST	1970
+ 			-7:00	Mexico	M%sT
++
++Zone America/Bahia_Banderas	-7:01:00 -	LMT	1921 Dec 31 23:59:00
++			-7:00	-	MST	1927 Jun 10 23:00
++			-6:00	-	CST	1930 Nov 15
++			-7:00	-	MST	1931 May  1 23:00
++			-6:00	-	CST	1931 Oct
++			-7:00	-	MST	1932 Apr  1
++			-6:00	-	CST	1942 Apr 24
++			-7:00	-	MST	1949 Jan 14
++			-8:00	-	PST	1970
++			-7:00	Mexico	M%sT	2010 Apr 4 2:00
++			-6:00	Mexico	C%sT
++
+ # Baja California (near US border)
+ Zone America/Tijuana	-7:48:04 -	LMT	1922 Jan  1  0:11:56
+ 			-7:00	-	MST	1924
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -199,8 +199,8 @@
+ FI	+6010+02458	Europe/Helsinki
+ FJ	-1808+17825	Pacific/Fiji
+ FK	-5142-05751	Atlantic/Stanley
+-FM	+0725+15147	Pacific/Truk	Truk (Chuuk) and Yap
+-FM	+0658+15813	Pacific/Ponape	Ponape (Pohnpei)
++FM	+0725+15147	Pacific/Chuuk	Chuuk (Truk) and Yap
++FM	+0658+15813	Pacific/Pohnpei	Pohnpei (Ponape)
+ FM	+0519+16259	Pacific/Kosrae	Kosrae
+ FO	+6201-00646	Atlantic/Faroe
+ FR	+4852+00220	Europe/Paris
+@@ -310,6 +310,7 @@
+ MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
+ MX	+3232-11701	America/Tijuana	US Pacific Time - Baja California near US border
+ MX	+3018-11452	America/Santa_Isabel	Mexican Pacific Time - Baja California away from US border
++MX	+2048-10515	America/Bahia_Banderas	Mexican Central Time - Bahia de Banderas
+ MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia
+ MY	+0133+11020	Asia/Kuching	Sabah & Sarawak
+ MZ	-2558+03235	Africa/Maputo
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -75,6 +75,8 @@
+                                      "Central European Summer Time", "CEST"};
+         String CHAST[] = new String[] {"Chatham Standard Time", "CHAST",
+                                        "Chatham Daylight Time", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Central Indonesia Time", "CIT",
+                                      "Central Indonesia Summer Time", "CIST"};
+         String CLT[] = new String[] {"Chile Time", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Pitcairn Daylight Time", "PDT"};
+         String PKT[] = new String[] {"Pakistan Time", "PKT",
+                                      "Pakistan Summer Time", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pacific Standard Time", "PST",
+                                      "Pacific Daylight Time", "PDT"};
+         String RST[] = new String[] {"Eastern Standard Time", "EST",
+@@ -169,8 +173,6 @@
+                                           "Eastern Summer Time (Tasmania)", "EST"};
+         String TMT[] = new String[] {"Turkmenistan Time", "TMT",
+                                      "Turkmenistan Summer Time", "TMST"};
+-        String TRUT[] = new String[] {"Truk Time", "TRUT",
+-                                      "Truk Summer Time", "TRUST"};
+         String ULAT[]= new String[] {"Ulaanbaatar Time", "ULAT",
+                                      "Ulaanbaatar Summer Time", "ULAST"};
+         String WART[] = new String[] {"Western Argentine Time", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -755,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Vanuatu Time", "VUT",
+                                             "Vanuatu Summer Time", "VUST"}},
+@@ -793,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Palau Time", "PWT",
+                                             "Palau Summer Time", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ponape Time", "PONT",
+-                                             "Ponape Summer Time", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Papua New Guinea Time", "PGT",
+                                                    "Papua New Guinea Summer Time", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Cook Is. Time", "CKT",
+@@ -807,12 +811,12 @@
+                                              "Gilbert Is. Summer Time", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Tonga Time", "TOT",
+                                                 "Tonga Summer Time", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Wake Time", "WAKT",
+                                            "Wake Summer Time", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Wallis & Futuna Time", "WFT",
+                                              "Wallis & Futuna Summer Time", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -75,6 +75,8 @@
+                                      "Mitteleurop\u00e4ische Sommerzeit", "MESZ"};
+         String CHAST[] = new String[] {"Chatham Normalzeit", "CHAST",
+                                        "Chatham Sommerzeit", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Zentralindonesische Zeit", "CIT",
+                                      "Zentralindonesische Sommerzeit", "CIST"};
+         String CLT[] = new String[] {"Chilenische Zeit", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Pitcairn Sommerzeit", "PDT"};
+         String PKT[] = new String[] {"Pakistanische Zeit", "PKT",
+                                      "Pakistanische Sommerzeit", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pazifische Normalzeit", "PST",
+                                      "Pazifische Sommerzeit", "PDT"};
+         String RST[] = new String[] {"\u00d6stliche Normalzeit", "EST",
+@@ -169,8 +173,6 @@
+                                           "\u00d6stliche Sommerzeit (Tasmanien)", "EST"};
+         String TMT[] = new String[] {"Turkmenische Zeit", "TMT",
+                                      "Turkmenische Sommerzeit", "TMST"};
+-        String TRUT[] = new String[] {"Truk Zeit", "TRUT",
+-                                      "Truk Sommerzeit", "TRUST"};
+         String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
+                                      "Ulaanbaatar Sommerzeit", "ULAST"};
+         String WART[] = new String[] {"Westargentinische Zeit", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Davis Zeit", "DAVT",
+                                                "Davis Sommerzeit", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Zeit", "DDUT",
+                                                         "Dumont-d'Urville Sommerzeit", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Mawson Zeit", "MAWT",
+                                                 "Mawson Sommerzeit", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Vanuatu Zeit", "VUT",
+                                             "Vanuatu Sommerzeit", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Palau Zeit", "PWT",
+                                             "Palau Sommerzeit", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ponape Zeit", "PONT",
+-                                             "Ponape Sommerzeit", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Papua-Neuguinea Zeit", "PGT",
+                                                    "Papua-Neuguinea Sommerzeit", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Cook-Inseln Zeit", "CKT",
+@@ -804,12 +811,12 @@
+                                              "Gilbert-Inseln Sommerzeit", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Tonga Zeit", "TOT",
+                                                 "Tonga Sommerzeit", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Wake Zeit", "WAKT",
+                                            "Wake Sommerzeit", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Wallis u. Futuna Zeit", "WFT",
+                                              "Wallis u. Futuna Sommerzeit", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -75,6 +75,8 @@
+                                      "Hora de verano de Europa Central", "CEST"};
+         String CHAST[] = new String[] {"Hora est\u00e1ndar de Chatham", "CHAST",
+                                        "Hora de verano de Chatham", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Hora de Indonesia Central", "CIT",
+                                      "Hora de verano de Indonesia Central", "CIST"};
+         String CLT[] = new String[] {"Hora de Chile", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Hora de verano de Pitcairn", "PDT"};
+         String PKT[] = new String[] {"Hora de Pakist\u00e1n", "PKT",
+                                      "Hora de verano de Pakist\u00e1n", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Hora est\u00e1ndar del Pac\u00edfico", "PST",
+                                      "Hora de verano del Pac\u00edfico", "PDT"};
+         String RST[] = new String[] {"Hora est\u00e1ndar Oriental", "EST",
+@@ -169,8 +173,6 @@
+                                           "Hora de verano del Este (Tasmania)", "EST"};
+         String TMT[] = new String[] {"Hora de Turkmenist\u00e1n", "TMT",
+                                      "Hora de verano de Turkmenist\u00e1n", "TMST"};
+-        String TRUT[] =new String[] {"Hora de Truk", "TRUT",
+-                                     "Hora de verano de Truk", "TRUST"};
+         String ULAT[]= new String[] {"Hora de Ulan Bator", "ULAT",
+                                      "Hora de verano de Ulan Bator", "ULAST"};
+         String WART[] = new String[] {"Hora de Argentina Occidental", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Hora de Davis", "DAVT",
+                                                "Hora de verano de Davis", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Hora de Dumont-d'Urville", "DDUT",
+                                                         "Hora de verano de Dumont-d'Urville", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Hora de Mawson", "MAWT",
+                                                 "Hora de verano de Mawson", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -533,7 +539,6 @@
+                                           "Hora de verano de Filipinas", "PHST"}},
+             {"Asia/Muscat", GST},
+             {"Asia/Nicosia", EET},
+-
+             {"Asia/Novokuznetsk", NOVT},
+             {"Asia/Novosibirsk", NOVT},
+             {"Asia/Oral", new String[] {"Hora de Uralsk", "ORAT",
+@@ -753,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Hora de Vanuatu", "VUT",
+                                             "Hora de verano de Vanuatu", "VUST"}},
+@@ -791,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Hora de Palau", "PWT",
+                                             "Hora de verano de Palau", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Hora de Ponape", "PONT",
+-                                             "Hora de verano de Ponape", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Hora de Pap\u00faa-Nueva Guinea", "PGT",
+                                                    "Hora de verano de Pap\u00faa-Nueva Guinea", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Hora de las islas Cook", "CKT",
+@@ -805,12 +811,12 @@
+                                              "Hora de verano de las islas Gilbert", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Hora de Tonga", "TOT",
+                                                 "Hora de verano de Tonga", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Hora de Wake", "WAKT",
+                                            "Hora de verano de Wake", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Hora de Wallis y Futuna", "WFT",
+                                              "Hora de verano de Wallis y Futuna", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -75,6 +75,8 @@
+                                      "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST"} ;
+         String CHAST[] = new String[] {"Heure standard de Chatham", "CHAST",
+                                        "Heure avanc\u00e9e de Chatham", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Heure d'Indon\u00e9sie centrale", "CIT",
+                                      "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST"};
+         String CLT[] = new String[] {"Heure du Chili", "CLT",
+@@ -153,6 +155,8 @@
+                                           "heure avanc\u00e9e des Pitcairn", "PDT"};
+         String PKT[] = new String[] {"Heure du Pakistan", "PKT",
+                                      "Heure d'\u00e9t\u00e9 du Pakistan", "PKST"} ;
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Heure normale du Pacifique", "PST",
+                                      "Heure avanc\u00e9e du Pacifique", "PDT"} ;
+         String RST[] = new String[] {"Heure normale de l'Est", "EST",
+@@ -169,8 +173,6 @@
+                                           "Heure d'\u00e9t\u00e9 d'Australie orientale (Tasmanie)", "EST"};
+         String TMT[] = new String[] {"Heure du Turkm\u00e9nistan", "TMT",
+                                      "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST"} ;
+-        String TRUT[] = new String[] {"Heure de Truk", "TRUT",
+-                                      "Heure d'\u00e9t\u00e9 de Truk", "TRUST"};
+         String ULAT[]= new String[] {"Heure de l'Ulaanbaatar", "ULAT",
+                                      "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST"} ;
+         String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Heure de Davis", "DAVT",
+                                                "Heure d'\u00e9t\u00e9 de Davis", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Heure de Dumont-d'Urville", "DDUT",
+                                                         "Heure d'\u00e9t\u00e9 de Dumont-d'Urville", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Heure de Mawson", "MAWT",
+                                                 "Heure d'\u00e9t\u00e9 de Mawson", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Heure du Vanuatu", "VUT",
+                                             "Heure d'\u00e9t\u00e9 du Vanuatu", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Heure de Palaos", "PWT",
+                                             "Heure d'\u00e9t\u00e9 de Palaos", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Heure de Ponap\u00e9", "PONT",
+-                                             "Heure d'\u00e9t\u00e9 de Ponap\u00e9", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Heure de Papouasie-Nouvelle-Guin\u00e9e", "PGT",
+                                                    "Heure d'\u00e9t\u00e9 de de Papouasie-Nouvelle-Guin\u00e9e", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Heure des \u00celes Cook", "CKT",
+@@ -804,12 +811,12 @@
+                                              "Heure d'\u00e9t\u00e9 de Kiribati", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Heure de Tonga", "TOT",
+                                                 "Heure d'\u00e9t\u00e9 de Tonga", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Heure de Wake", "WAKT",
+                                            "Heure d'\u00e9t\u00e9 de Wake", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Heure de Wallis et Futuna", "WFT",
+                                              "Heure d'\u00e9t\u00e9 de Wallis et Futuna", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -75,6 +75,8 @@
+                                      "Ora estiva dell'Europa centrale", "CEST"};
+         String CHAST[] = new String[] {"Ora di Chatham standard", "CHAST",
+                                        "Ora legale di Chatham", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Ora dell'Indonesia centrale", "CIT",
+                                      "Ora estiva dell'Indonesia centrale", "CIST"};
+         String CLT[] = new String[] {"Ora del Cile", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Ora legale di Pitcairn", "PDT"};
+         String PKT[] = new String[] {"Ora del Pakistan", "PKT",
+                                      "Ora estiva del Pakistan", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Ora solare della costa occidentale USA", "PST",
+                                      "Ora legale della costa occidentale USA", "PDT"};
+         String RST[] = new String[] {"Ora solare USA orientale", "EST",
+@@ -169,8 +173,6 @@
+                                           "Ora estiva orientale (Tasmania)", "EST"};
+         String TMT[] = new String[] {"Ora del Turkmenistan", "TMT",
+                                      "Ora estiva del Turkmenistan", "TMST"};
+-        String TRUT[] = new String[] {"Ora di Truk", "TRUT",
+-                                      "Ora estiva di Truk", "TRUST"};
+         String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
+                                      "Ora estiva di Ulaanbaatar", "ULAST"};
+         String WART[] = new String[] {"Ora dell'Argentina occidentale", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Ora di Davis", "DAVT",
+                                                "Ora estiva di Davis", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Ora di Dumont-d'Urville", "DDUT",
+                                                         "Ora estiva di Dumont-d'Urville", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Ora di Mawson", "MAWT",
+                                                 "Ora estiva di Mawson", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Ora di Vanuatu", "VUT",
+                                             "Ora estiva di Vanuatu", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Ora di Palau", "PWT",
+                                             "Ora estiva di Palau", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ora di Ponape", "PONT",
+-                                             "Ora estiva di Ponape", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Ora di Papua Nuova Guinea", "PGT",
+                                                    "Ora estiva di Papua Nuova Guinea", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Ora delle Isole Cook", "CKT",
+@@ -804,12 +811,12 @@
+                                              "Ora estiva delle Isole Gilbert", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Ora di Tonga", "TOT",
+                                                 "Ora estiva di Tonga", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Ora di Wake", "WAKT",
+                                            "Ora estiva di Wake", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Ora di Wallis e Futuna", "WFT",
+                                              "Ora estiva di Wallis e Futuna", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST"};
+         String CHAST[] = new String[] {"\u30c1\u30e3\u30bf\u30e0\u6a19\u6e96\u6642", "CHAST",
+                                        "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "CIT",
+                                      "\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "CIST"};
+         String CLT[] = new String[] {"\u30c1\u30ea\u6642\u9593", "CLT",
+@@ -153,6 +155,8 @@
+                                           "\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u590f\u6642\u9593", "PDT"};
+         String PKT[] = new String[] {"\u30d1\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "PKT",
+                                      "\u30d1\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT"};
+         String RST[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642", "EST",
+@@ -169,8 +173,6 @@
+                                           "\u6771\u90e8\u590f\u6642\u9593 (\u30bf\u30b9\u30de\u30cb\u30a2)", "EST"};
+         String TMT[] = new String[] {"\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u6642\u9593", "TMT",
+                                      "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TMST"};
+-        String TRUT[] = new String[] {"\u30c8\u30e9\u30c3\u30af\u6642\u9593", "TRUT",
+-                                      "\u30c8\u30e9\u30c3\u30af\u590f\u6642\u9593", "TRUST"};
+         String ULAT[]= new String[] {"\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u6642\u9593", "ULAT",
+                                      "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST"};
+         String WART[] = new String[] {"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"\u30c7\u30a4\u30d3\u30b9\u6642\u9593", "DAVT",
+                                                "\u30c7\u30a4\u30d3\u30b9\u590f\u6642\u9593", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u6642\u9593", "DDUT",
+                                                         "\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u590f\u6642\u9593", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"\u30e2\u30fc\u30bd\u30f3\u6642\u9593", "MAWT",
+                                                 "\u30e2\u30fc\u30bd\u30f3\u590f\u6642\u9593", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"\u30d0\u30cc\u30a2\u30c4\u6642\u9593", "VUT",
+                                             "\u30d0\u30cc\u30a2\u30c4\u590f\u6642\u9593", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"\u30d1\u30e9\u30aa\u6642\u9593", "PWT",
+                                             "\u30d1\u30e9\u30aa\u590f\u6642\u9593", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"\u30dd\u30ca\u30da\u6642\u9593", "PONT",
+-                                             "\u30dd\u30ca\u30da\u590f\u6642\u9593", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u6642\u9593", "PGT",
+                                                    "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u590f\u6642\u9593", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"\u30af\u30c3\u30af\u8af8\u5cf6\u6642\u9593", "CKT",
+@@ -804,12 +811,12 @@
+                                              "\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u590f\u6642\u9593", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"\u30c8\u30f3\u30ac\u6642\u9593", "TOT",
+                                                 "\u30c8\u30f3\u30ac\u590f\u6642\u9593", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"\u30a6\u30a7\u30fc\u30af\u6642\u9593", "WAKT",
+                                            "\u30a6\u30a7\u30fc\u30af\u590f\u6642\u9593", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u6642\u9593", "WFT",
+                                              "\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u590f\u6642\u9593", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -75,6 +75,8 @@
+                                      "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST"};
+         String CHAST[] = new String[] {"Chatham \ud45c\uc900\uc2dc", "CHAST",
+                                        "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "CIT",
+                                      "\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CIST"};
+         String CLT[] = new String[] {"\uce60\ub808 \uc2dc\uac04", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Pitcairn \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+         String PKT[] = new String[] {"\ud30c\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "PKT",
+                                      "\ud30c\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc", "PST",
+                                      "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+         String RST[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc", "EST",
+@@ -169,8 +173,6 @@
+                                           "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ud0dc\uc988\uba54\uc774\ub2c8\uc544)", "EST"};
+         String TMT[] = new String[] {"\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc2dc\uac04", "TMT",
+                                      "\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TMST"};
+-        String TRUT[] = new String[] {"\ud2b8\ub8e8\ud06c \uc2dc\uac04", "TRUT",
+-                                      "\ud2b8\ub8e8\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TRUST"};
+         String ULAT[]= new String[] {"\uc6b8\ub780\ubc14\ud0c0\ub974 \uc2dc\uac04", "ULAT",
+                                      "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST"};
+         String WART[] = new String[] {"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Davis \uc2dc\uac04", "DAVT",
+                                                "Davis \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"\ub4a4\ubabd \ub4a4\ub974\ube4c \uc2dc\uac04", "DDUT",
+                                                         "\ub4a4\ubabd \ub4a4\ub974\ube4c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"\ubaa8\uc2a8 \uc2dc\uac04", "MAWT",
+                                                 "\ubaa8\uc2a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"\ube44\ub204\uc544\ud22c \uc2dc\uac04", "VUT",
+                                             "\ubc14\ub204\uc544\ud22c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"\ud314\ub77c\uc6b0 \uc2dc\uac04", "PWT",
+                                             "\ud314\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"\ud3ec\ub098\ud504 \uc2dc\uac04", "PONT",
+-                                            "\ud3ec\ub098\ud504 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc2dc\uac04", "PGT",
+                                                   "\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"\ucfe0\ud06c \uad70\ub3c4 \uc2dc\uac04", "CKT",
+@@ -804,12 +811,12 @@
+                                              "\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"\ud1b5\uac00 \uc2dc\uac04", "TOT",
+                                                 "\ud1b5\uac00 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"\uc6e8\uc774\ud06c \uc2dc\uac04", "WAKT",
+                                            "\uc6e8\uc774\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"\uc6d4\ub9ac\uc2a4 \ud6c4\ud22c\ub098 \uc2dc\uac04", "WFT",
+                                              "\uc6d4\ub9ac\uc2a4 \ud6c4\ud2b8\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -75,6 +75,8 @@
+                                      "Centraleuropeisk sommartid", "CEST"};
+         String CHAST[] = new String[] {"Chatham, normaltid", "CHAST",
+                                        "Chatham, sommartid", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Centralindonesisk tid", "CIT",
+                                      "Centralindonesisk sommartid", "CIST"};
+         String CLT[] = new String[] {"Chile, normaltid", "CLT",
+@@ -153,6 +155,8 @@
+                                           "Pitcairn, sommartid", "PDT"};
+         String PKT[] = new String[] {"Pakistan, normaltid", "PKT",
+                                      "Pakistan, sommartid", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Stilla havet, normaltid", "PST",
+                                      "Stilla havet, sommartid", "PDT"};
+         String RST[] = new String[] {"Eastern, normaltid", "EST",
+@@ -169,8 +173,6 @@
+                                           "Eastern, sommartid (Tasmanien)", "EST"};
+         String TMT[] = new String[] {"Turkmenistan, normaltid", "TMT",
+                                      "Turkmenistan, sommartid", "TMST"};
+-        String TRUT[] = new String[] {"Truk, normaltid", "TRUT",
+-                                      "Truk, sommartid", "TRUST"};
+         String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
+                                      "Ulaanbaatar, sommartid", "ULAST"};
+         String WART[] = new String[] {"V\u00e4stargentina, normaltid", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"Davis, normaltid", "DAVT",
+                                                "Davis, sommartid", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville, normaltid", "DDUT",
+                                                         "Dumont-d'Urville, sommartid", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"Mawson, normaltid", "MAWT",
+                                                 "Mawson, sommartid", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"Vanuatu, normaltid", "VUT",
+                                             "Vanuatu, sommartid", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"Palau, normaltid", "PWT",
+                                             "Palau, sommartid", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ponape, normaltid", "PONT",
+-                                             "Ponape, sommartid", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"Papua Nya Guinea, normaltid", "PGT",
+                                                    "Papua Nya Guinea, sommartid", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"Cook\u00f6arna, normaltid", "CKT",
+@@ -804,12 +811,12 @@
+                                              "Gilbert\u00f6arna, sommartid", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"Tonga, normaltid", "TOT",
+                                                 "Tonga, sommartid", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"Wake, normaltid", "WAKT",
+                                            "Wake, sommartid", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"Wallis & Futuna, normaltid", "WFT",
+                                              "Wallis & Futuna, sommartid", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST"};
+         String CHAST[] = new String[] {"\u67e5\u8428\u59c6\u6807\u51c6\u65f6\u95f4", "CHAST",
+                                        "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "CIT",
+                                      "\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "CIST"};
+         String CLT[] = new String[] {"\u667a\u5229\u65f6\u95f4", "CLT",
+@@ -153,6 +155,8 @@
+                                           "\u76ae\u7279\u5eb7\u5c9b\u590f\u4ee4\u65f6", "PDT"};
+         String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u65f6\u95f4", "PKT",
+                                      "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u65f6", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT"};
+         String RST[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "EST",
+@@ -169,8 +173,6 @@
+                                           "\u4e1c\u90e8\u590f\u4ee4\u65f6\uff08\u5854\u65af\u9a6c\u5c3c\u4e9a\uff09", "EST"};
+         String TMT[] = new String[] {"\u571f\u5e93\u66fc\u65f6\u95f4", "TMT",
+                                      "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST"};
+-        String TRUT[] = new String[] {"\u7279\u9c81\u514b\u65f6\u95f4", "TRUT",
+-                                      "\u7279\u9c81\u514b\u590f\u4ee4\u65f6", "TRUST"};
+         String ULAT[]= new String[] {"\u5e93\u4f26\u65f6\u95f4", "ULAT",
+                                      "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST"};
+         String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"\u6234\u7ef4\u65af\u65f6\u95f4", "DAVT",
+                                                "\u6234\u7ef4\u65af\u590f\u4ee4\u65f6", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u65f6\u95f4", "DDUT",
+                                                         "Dumont-d'Urville \u590f\u4ee4\u65f6", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u65f6\u95f4", "MAWT",
+                                                 "\u83ab\u68ee\u590f\u4ee4\u65f6", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -752,6 +758,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u56fe\u65f6\u95f4", "VUT",
+                                             "\u74e6\u5974\u963f\u56fe\u590f\u4ee4\u65f6", "VUST"}},
+@@ -790,8 +797,8 @@
+             {"Pacific/Palau", new String[] {"\u5e1b\u7409\u65f6\u95f4", "PWT",
+                                             "\u5e1b\u7409\u590f\u4ee4\u65f6", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ponape \u65f6\u95f4", "PONT",
+-                                             "Ponape \u590f\u4ee4\u65f6", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u65f6\u95f4", "PGT",
+                                                    "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u590f\u4ee4\u65f6", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"\u5e93\u514b\u7fa4\u5c9b\u65f6\u95f4", "CKT",
+@@ -804,12 +811,12 @@
+                                              "\u5409\u4f2f\u7279\u7fa4\u5c9b\u590f\u4ee4\u65f6", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"\u4e1c\u52a0\u65f6\u95f4", "TOT",
+                                                 "\u4e1c\u52a0\u590f\u4ee4\u65f6", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"\u5a01\u514b\u65f6\u95f4", "WAKT",
+                                            "\u5a01\u514b\u590f\u4ee4\u65f6", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u65f6\u95f4", "WFT",
+                                              "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST"};
+         String CHAST[] = new String[] {"\u67e5\u5766\u6a19\u6e96\u6642\u9593", "CHAST",
+                                        "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT"};
++        String CHUT[] = new String[] {"Chuuk Time", "CHUT",
++                                      "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "CIT",
+                                      "\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "CIST"};
+         String CLT[] = new String[] {"\u667a\u5229\u6642\u9593", "CLT",
+@@ -153,6 +155,8 @@
+                                         "\u76ae\u7279\u5eb7\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+         String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u6642\u9593", "PKT",
+                                      "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u6642\u9593", "PKST"};
++        String PONT[] = new String[] {"Pohnpei Time", "PONT",
++                                      "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642\u9593", "PST",
+                                      "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+         String RST[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593", "EST",
+@@ -169,8 +173,6 @@
+                                           "\u6771\u90e8\u590f\u4ee4\u6642\u9593 (\u5854\u65af\u6885\u5c3c\u4e9e\u5cf6)", "EST"};
+         String TMT[] = new String[] {"\u571f\u5eab\u66fc\u6642\u9593", "TMT",
+                                      "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST"};
+-        String TRUT[] = new String[] {"\u7279\u9b6f\u514b\u6642\u9593", "TRUT",
+-                                      "\u7279\u9b6f\u514b\u590f\u4ee4\u6642\u9593", "TRUST"};
+         String ULAT[]= new String[] {"\u5eab\u502b\u6642\u9593", "ULAT",
+                                      "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST"};
+           String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
+@@ -309,6 +311,7 @@
+             {"America/Atikokan", EST},
+             {"America/Atka", HAST},
+             {"America/Bahia", BRT},
++            {"America/Bahia_Banderas", CST},
+             {"America/Barbados", AST},
+             {"America/Belem", BRT},
+             {"America/Belize", CST},
+@@ -446,10 +449,13 @@
+             {"America/Winnipeg", CST},
+             {"America/Yakutat", AKST},
+             {"America/Yellowknife", MST},
++            {"Antarctica/Casey", WST_AUS},
+             {"Antarctica/Davis", new String[] {"\u81fa\u7dad\u65af\u6642\u9593", "DAVT",
+                                                "\u81fa\u7dad\u65af\u590f\u4ee4\u6642\u9593", "DAVST"}},
+             {"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u6642\u9593", "DDUT",
+                                                         "Dumont-d'Urville \u590f\u4ee4\u6642\u9593", "DDUST"}},
++            {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
++                                                   "Macquarie Island Summer Time", "MIST"}},
+             {"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u6642\u9593", "MAWT",
+                                                 "\u83ab\u68ee\u590f\u4ee4\u6642\u9593", "MAWST"}},
+             {"Antarctica/McMurdo", NZST},
+@@ -753,6 +759,7 @@
+             {"Pacific/Apia", WST_SAMOA},
+             {"Pacific/Auckland", NZST},
+             {"Pacific/Chatham", CHAST},
++            {"Pacific/Chuuk", CHUT},
+             {"Pacific/Easter", EASTER},
+             {"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u5716\u6642\u9593", "VUT",
+                                             "\u74e6\u5974\u963f\u5716\u590f\u4ee4\u6642\u9593", "VUST"}},
+@@ -791,8 +798,8 @@
+             {"Pacific/Palau", new String[] {"\u5e1b\u7409\u6642\u9593", "PWT",
+                                             "\u5e1b\u7409\u590f\u4ee4\u6642\u9593", "PWST"}},
+             {"Pacific/Pitcairn", PITCAIRN},
+-            {"Pacific/Ponape", new String[] {"Ponape \u6642\u9593", "PONT",
+-                                             "Ponape \u590f\u4ee4\u6642\u9593", "PONST"}},
++            {"Pacific/Pohnpei", PONT},
++            {"Pacific/Ponape", PONT},
+             {"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u6642\u9593", "PGT",
+                                                    "\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u590f\u4ee4\u6642\u9593", "PGST"}},
+             {"Pacific/Rarotonga", new String[] {"\u5eab\u514b\u7fa4\u5cf6\u6642\u9593", "CKT",
+@@ -805,12 +812,12 @@
+                                              "\u5409\u4f2f\u7279\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "GILST"}},
+             {"Pacific/Tongatapu", new String[] {"\u6771\u52a0\u6642\u9593", "TOT",
+                                                 "\u6771\u52a0\u590f\u4ee4\u6642\u9593", "TOST"}},
+-            {"Pacific/Truk", TRUT},
++            {"Pacific/Truk", CHUT},
+             {"Pacific/Wake", new String[] {"\u5a01\u514b\u6642\u9593", "WAKT",
+                                            "\u5a01\u514b\u590f\u4ee4\u6642\u9593", "WAKST"}},
+             {"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u6642\u9593", "WFT",
+                                              "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "WFST"}},
+-            {"Pacific/Yap", TRUT},
++            {"Pacific/Yap", CHUT},
+             {"Poland", CET},
+             {"PRC", CTT},
+             {"PST8PDT", PST},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6996686-tzdata2010o.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,93 @@
+# HG changeset patch
+# User peytoia
+# Date 1288678136 -32400
+# Node ID 30bc265fa0d0385857c106a5f9bdafa19cbf2ac5
+# Parent  de89eec422c3ce434605255170459e57f940d369
+6996686: (tz) Support tzdata2010o
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2010l
++tzdata2010o
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -569,8 +569,8 @@
+ Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
+ Rule	HK	1954	only	-	Oct	31	3:30	0	-
+ Rule	HK	1955	1964	-	Nov	Sun>=1	3:30	0	-
+-Rule	HK	1965	1977	-	Apr	Sun>=16	3:30	1:00	S
+-Rule	HK	1965	1977	-	Oct	Sun>=16	3:30	0	-
++Rule	HK	1965	1976	-	Apr	Sun>=16	3:30	1:00	S
++Rule	HK	1965	1976	-	Oct	Sun>=16	3:30	0	-
+ Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
+ Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
+ Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -306,13 +306,26 @@
+ # http://www.timeanddate.com/news/time/fiji-dst-ends-march-2010.html
+ # </a>
+ 
++# From Alexander Krivenyshev (2010-10-24):
++# According to Radio Fiji and Fiji Times online, Fiji will end DST 3 
++# weeks earlier than expected - on March 6, 2011, not March 27, 2011...
++# Here is confirmation from Government of the Republic of the Fiji Islands, 
++# Ministry of Information (fiji.gov.fj) web site:
++# <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155">
++# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
++# </a>
++# or
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_fiji04.html">
++# http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
++# </a>
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+ Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
+ Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+ Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
+-Rule	Fiji	2011	only	-	Mar	lastSun 3:00	0	-
++Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+@@ -509,11 +522,21 @@
+ # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+ # </a>
+ 
++# From Raymond Hughes (2010-10-07):
++# Please see
++# <a href="http://www.mcil.gov.ws">
++# http://www.mcil.gov.ws
++# </a>,
++# the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday
++# September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight
++# to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
++# backwards from 1:00am to 12:00am"
++
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+ 			-11:00	-	WST	2010 Sep 26
+-			-11:00	1:00	WSDT	2011 Apr 3
++			-11:00	1:00	WSDT	2011 Apr 3 1:00
+ 			-11:00	-	WST
+ 
+ # Solomon Is
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -63,7 +63,7 @@
+ AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
+ AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
+ AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
+-AQ	-7824+10654	Antarctica/Vostok	Vostok Station, S Magnetic Pole
++AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
+ AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
+ AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+ AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7017800-tzdata2011b.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,254 @@
+# HG changeset patch
+# User peytoia
+# Date 1297242029 -32400
+# Node ID eeaad0d340b285fa17e438bb2b9de6fa39289dd1
+# Parent  842a0f8c89ea5d5b4702502594a7fe37c509aec7
+7017800: (tz) Support tzdata2011b
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2010o
++tzdata2011b
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -106,14 +106,13 @@
+ Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
+ Rule	AS	1972	only	-	Feb	27	2:00s	0	-
+ Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AS	1986	1989	-	Mar	Sun>=15	2:00s	0	-
+-Rule	AS	1990	only	-	Mar	Sun>=18	2:00s	0	-
+-Rule	AS	1991	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AS	1992	only	-	Mar	Sun>=18	2:00s	0	-
+-Rule	AS	1993	only	-	Mar	Sun>=1	2:00s	0	-
+-Rule	AS	1994	only	-	Mar	Sun>=18	2:00s	0	-
++Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
++Rule	AS	1991	only	-	Mar	3	2:00s	0	-
++Rule	AS	1992	only	-	Mar	22	2:00s	0	-
++Rule	AS	1993	only	-	Mar	7	2:00s	0	-
++Rule	AS	1994	only	-	Mar	20	2:00s	0	-
+ Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
+-Rule	AS	2006	only	-	Apr	Sun>=1	2:00s	0	-
++Rule	AS	2006	only	-	Apr	2	2:00s	0	-
+ Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
+ Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
+ Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -368,6 +368,27 @@
+ 			-7:00	US	M%sT	2003 Oct 26 02:00
+ 			-6:00	US	C%sT
+ 
++# From Josh Findley (2011-01-21):
++# ...it appears that Mercer County, North Dakota, changed from the
++# mountain time zone to the central time zone at the last transition from
++# daylight-saving to standard time (on Nov. 7, 2010):
++# <a href="http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm">
++# http://www.gpo.gov/fdsys/pkg/FR-2010-09-29/html/2010-24376.htm
++# </a>
++# <a href="http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html">
++# http://www.bismarcktribune.com/news/local/article_1eb1b588-c758-11df-b472-001cc4c03286.html
++# </a>
++
++# From Andy Lipscomb (2011-01-24):
++# ...according to the Census Bureau, the largest city is Beulah (although
++# it's commonly referred to as Beulah-Hazen, with Hazen being the next
++# largest city in Mercer County).  Google Maps places Beulah's city hall
++# at 4715'51" north, 10146'40" west, which yields an offset of 6h47'07".
++
++Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
++			-7:00	US	M%sT	2010 Nov  7 2:00
++			-6:00	US	C%sT
++
+ # US mountain time, represented by Denver
+ #
+ # Colorado, far western Kansas, Montana, western
+@@ -493,20 +514,50 @@
+ #  three votes for and one against."
+ 
+ # Hawaii
++
++# From Arthur David Olson (2010-12-09):
++# "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
++# of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
++# the article is available at
++# <a href="http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf">
++# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
++# </a>
++# and indicates that standard time was adopted effective noon, January
++# 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
++# saving for the period between the last Sunday of each April and the
++# last Sunday of each September, but less than a month later repealed the
++# act," (page 220), that year-round daylight saving time was in effect
++# from 1942-02-09 to 1945-09-30 (page 221, with no time of day given for
++# when clocks changed) and that clocks were changed by 30 minutes
++# effective the second Sunday of June, 1947 (page 219, with no time of
++# day given for when clocks changed). A footnote for the 1933 changes
++# cites Session Laws of Hawaii 1933, "Act. 90 (approved 26 Apr. 1933)
++# and Act 163 (approved 21 May 1933)."
++
++# From Arthur David Olson (2011-01-19):
++# The following is from "Laws of the Territory of Hawaii Passed by the
++# Seventeenth Legislature: Regular Session 1933," available (as of
++# 2011-01-19) at American University's Pence Law Library. Page 85: "Act
++# 90...At 2 o'clock ante meridian of the last Sunday in April of each
++# year, the standard time of this Territory shall be advanced one
++# hour...This Act shall take effect upon its approval. Approved this 26th
++# day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
++# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
++# hereby repealed...This Act shall take effect upon its approval, upon
++# which date the standard time of this Territory shall be restored to
++# that existing immediately prior to the taking effect of said Act 90.
++# Approved this 21st day of May, A. D. 1933. LAWRENCE M. JUDD, Governor
++# of the Territory of Hawaii."
+ #
+-# From Arthur David Olson:
+-# And then there's Hawaii.
+-# DST was observed for one day in 1933;
+-# standard time was changed by half an hour in 1947;
+-# it's always standard as of 1986.
+-#
+-# From Paul Eggert:
+-# Shanks says the 1933 experiment lasted for three weeks.  Go with Shanks.
+-#
+-Zone Pacific/Honolulu	-10:31:26 -	LMT	1900 Jan  1 12:00
+-			-10:30	-	HST	1933 Apr 30 2:00
+-			-10:30	1:00	HDT	1933 May 21 2:00
+-			-10:30	US	H%sT	1947 Jun  8 2:00
++# Note that 1933-05-21 was a Sunday.
++# We're left to guess the time of day when Act 163 was approved; guess noon.
++
++Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
++			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
++			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
++			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
++			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Fox+2
++			-10:30	US	H%sT	1947 Jun  8 2:00 #Schmitt&Fox+2
+ 			-10:00	-	HST
+ 
+ # Now we turn to US areas that have diverged from the consensus since 1970.
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -233,8 +233,8 @@
+ HU	+4730+01905	Europe/Budapest
+ ID	-0610+10648	Asia/Jakarta	Java & Sumatra
+ ID	-0002+10920	Asia/Pontianak	west & central Borneo
+-ID	-0507+11924	Asia/Makassar	east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
+-ID	-0232+14042	Asia/Jayapura	Irian Jaya & the Moluccas
++ID	-0507+11924	Asia/Makassar	east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor
++ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)
+ IE	+5320-00615	Europe/Dublin
+ IL	+3146+03514	Asia/Jerusalem
+ IM	+5409-00428	Europe/Isle_of_Man
+@@ -426,6 +426,7 @@
+ US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
+ US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County
+ US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)
++US	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County
+ US	+394421-1045903	America/Denver	Mountain Time
+ US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
+ US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -405,6 +405,7 @@
+             {"America/Nipigon", EST},
+             {"America/Nome", AKST},
+             {"America/Noronha", NORONHA},
++            {"America/North_Dakota/Beulah", CST},
+             {"America/North_Dakota/Center", CST},
+             {"America/North_Dakota/New_Salem", CST},
+             {"America/Ojinaga", MST},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7027387-tzdata2011d.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,502 @@
+# HG changeset patch
+# User peytoia
+# Date 1300405325 -32400
+# Node ID 55f97ad0a36eeb8b2dff095760c8b427188a761b
+# Parent  c53260a00454507cf651b03ad165e32a5be8298d
+7027387: (tz) Support tzdata2011d
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011b
++tzdata2011d
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -531,11 +531,31 @@
+ # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
+ # backwards from 1:00am to 12:00am"
+ 
++# From Raymond Hughes (2011-03-07)
++# I believe this will be posted shortly on the website
++# <a href="http://www.mcil.gov.ws">
++# www.mcil.gov.ws
++# </a>
++#
++# PUBLIC NOTICE ON DAYLIGHT SAVING TIME
++#
++# Pursuant to the Daylight Saving Act 2009 and Cabinets decision,
++# businesses and the general public are hereby advised that daylight
++# saving time is on the first Saturday of April 2011 (02/04/11).
++#
++# The public is therefore advised that when the standard time strikes
++# the hour of four oclock (4.00am or 0400 Hours) on the 2nd April 2011,
++# then all instruments used to measure standard time are to be
++# adjusted/changed to three oclock (3:00am or 0300Hrs).
++#
++# Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
++# INDUSTRY AND LABOUR 28th February 2011
++
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+ 			-11:00	-	WST	2010 Sep 26
+-			-11:00	1:00	WSDT	2011 Apr 3 1:00
++			-11:00	1:00	WSDT	2011 Apr 2 4:00
+ 			-11:00	-	WST
+ 
+ # Solomon Is
+--- openjdk/jdk/make/sun/javazic/tzdata/etcetera
++++ openjdk/jdk/make/sun/javazic/tzdata/etcetera
+@@ -58,8 +58,7 @@
+ # (i.e. west of Greenwich) even though many people would expect it to
+ # mean 4 hours ahead of UTC (i.e. east of Greenwich).
+ #
+-# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation
+-# (which is not yet supported by the tz code) allows for
++# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
+ # TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to
+ # ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
+ # offset is kept within the angle bracket (and is used for display)
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -2505,25 +2505,18 @@
+ # (on a non-government server though) describing dates between 2002 and 2006:
+ # http://www.alomaliye.com/bkk_2002_3769.htm
+ 
+-# From Sue Williams (2008-08-11):
+-# I spotted this news article about a potential change in Turkey.
+-#
+-# <a href="http://www.hurriyet.com.tr/english/domestic/9626174.asp?scr=1">
+-# http://www.hurriyet.com.tr/english/domestic/9626174.asp?scr=1
++# From G&ouml;kdeniz Karada&#x011f; (2011-03-10):
++# 
++# According to the articles linked below, Turkey will change into summer
++# time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
++# This change is due to a nationwide exam on 27th.
++# 
++# <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872">
++# http://www.worldbulletin.net/?aType=haber&ArticleID=70872
+ # </a>
+-
+-# From Sue Williams (2008-08-20):
+-# This article says that around the end of March 2011, Turkey wants to
+-# adjust the clocks forward by 1/2 hour and stay that way permanently.
+-# The article indicates that this is a change in timezone offset in addition
+-# to stopping observance of DST.
+-# This proposal has not yet been approved.
+-#
+-# Read more here...
+-#
+-# Turkey to abandon daylight saving time in 2011
+-# <a href="http://www.turkishdailynews.com.tr/article.php?enewsid=112989">
+-# http://www.turkishdailynews.com.tr/article.php?enewsid=112989
++# Turkish:
++# <a href="http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373">
++# http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
+ # </a>
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -2591,6 +2584,8 @@
+ 			2:00	Turkey	EE%sT	1978 Oct 15
+ 			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
+ 			2:00	Turkey	EE%sT	2007
++			2:00	EU	EE%sT	2011 Mar 27 1:00u
++			2:00	-	EET	2011 Mar 28 1:00u
+ 			2:00	EU	EE%sT
+ Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -78,13 +78,13 @@
+ # SERVICE DE LA ROTATION TERRESTRE
+ # OBSERVATOIRE DE PARIS
+ # 61, Av. de l'Observatoire 75014 PARIS (France)
+-# Tel.      : 33 (0) 1 40 51 22 26
++# Tel.      : 33 (0) 1 40 51 22 29
+ # FAX       : 33 (0) 1 40 51 22 91
+ # Internet  : services.iers@obspm.fr
+ #
+-# Paris, 14 July 2010
++# Paris, 2 February 2011
+ #
+-# Bulletin C 40
++# Bulletin C 41
+ #
+ # To authorities responsible
+ # for the measurement and
+@@ -92,9 +92,9 @@
+ #
+ # INFORMATION ON UTC - TAI
+ #
+-# NO positive leap second will be introduced at the end of December 2010.
++# NO positive leap second will be introduced at the end of June 2011.
+ # The difference between Coordinated Universal Time UTC and the
+-# International Atomic Time TAI is :
++# International Atomic Time TAI is :		
+ #
+ # from 2009 January 1, 0h UTC, until further notice : UTC-TAI = -34 s
+ #
+@@ -104,6 +104,6 @@
+ # will be no time step at the next possible date.
+ #
+ # Daniel GAMBIS
+-# Director
+-# Earth Orientation Center of IERS
++# Head			
++# Earth Orientation Center of the IERS
+ # Observatoire de Paris, France
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -448,15 +448,74 @@
+ # were nearby inhabitants in some cases and for our purposes perhaps
+ # it's best to simply use the official transition.
+ #
++
++# From Steve Ferguson (2011-01-31):
++# The author lives in Alaska and many of the references listed are only
++# available to Alaskan residents.
++#
++# <a href="http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98">
++# http://www.alaskahistoricalsociety.org/index.cfm?section=discover%20alaska&page=Glimpses%20of%20the%20Past&viewpost=2&ContentId=98
++# </a>
++
++# From Arthur David Olson (2011-02-01):
++# Here's database-relevant material from the 2001 "Alaska History" article:
++#
++# On September 20 [1979]...DOT...officials decreed that on April 27,
++# 1980, Juneau and other nearby communities would move to Yukon Time.
++# Sitka, Petersburg, Wrangell, and Ketchikan, however, would remain on
++# Pacific Time.
++#
++# ...on September 22, 1980, DOT Secretary Neil E. Goldschmidt rescinded the
++# Department's September 1979 decision. Juneau and other communities in
++# northern Southeast reverted to Pacific Time on October 26.
++#
++# On October 28 [1983]...the Metlakatla Indian Community Council voted
++# unanimously to keep the reservation on Pacific Time.
++#
++# According to DOT official Joanne Petrie, Indian reservations are not
++# bound to follow time zones imposed by neighboring jurisdictions.
++#
++# (The last is consistent with how the database now handles the Navajo
++# Nation.)
++
++# From Arthur David Olson (2011-02-09):
++# I just spoke by phone with a staff member at the Metlakatla Indian
++# Community office (using contact information available at
++# <a href="http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla">
++# http://www.commerce.state.ak.us/dca/commdb/CIS.cfm?Comm_Boro_name=Metlakatla
++# </a>).
++# It's shortly after 1:00 here on the east coast of the United States;
++# the staffer said it was shortly after 10:00 there. When I asked whether
++# that meant they were on Pacific time, they said no--they were on their
++# own time. I asked about daylight saving; they said it wasn't used. I
++# did not inquire about practices in the past.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
+ 			 -8:57:41 -	LMT	1900 Aug 20 12:00
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
++			 -8:00	US	P%sT	1980 Apr 27 2:00
++			 -9:00	US	Y%sT	1980 Oct 26 2:00	
+ 			 -8:00	US	P%sT	1983 Oct 30 2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
++Zone America/Sitka	 -14:58:47 -	LMT	1867 Oct 18
++			 -9:01:13 -	LMT	1900 Aug 20 12:00
++			 -8:00	-	PST	1942
++			 -8:00	US	P%sT	1946
++			 -8:00	-	PST	1969
++			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -9:00	US	Y%sT	1983 Nov 30
++			 -9:00	US	AK%sT
++Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
++			 -8:46:18 -	LMT	1900 Aug 20 12:00
++			 -8:00	-	PST	1942
++			 -8:00	US	P%sT	1946
++			 -8:00	-	PST	1969
++			 -8:00	US	P%sT	1983 Oct 30 2:00
++			 -8:00	US	MeST
+ Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
+ 			 -9:18:55 -	LMT	1900 Aug 20 12:00
+ 			 -9:00	-	YST	1942
+@@ -2569,6 +2628,21 @@
+ # the time was announced as "diez cinco"--the same time as here, indicating
+ # that has indeed switched to DST. Assume second Sunday from 2009 forward.
+ 
++# From Steffen Thorsen (2011-03-08):
++# Granma announced that Cuba is going to start DST on 2011-03-20 00:00:00
++# this year. Nothing about the end date known so far (if that has
++# changed at all).
++#
++# Source:
++# <a href="http://granma.co.cu/2011/03/08/nacional/artic01.html">
++# http://granma.co.cu/2011/03/08/nacional/artic01.html
++# </a>
++#
++# Our info:
++# <a href="http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html">
++# http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
++# </a>
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
+ Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
+@@ -2602,7 +2676,9 @@
+ Rule	Cuba	2006	max	-	Oct	lastSun	0:00s	0	S
+ Rule	Cuba	2007	only	-	Mar	Sun>=8	0:00s	1:00	D
+ Rule	Cuba	2008	only	-	Mar	Sun>=15	0:00s	1:00	D
+-Rule	Cuba	2009	max	-	Mar	Sun>=8	0:00s	1:00	D
++Rule	Cuba	2009	2010	-	Mar	Sun>=8	0:00s	1:00	D
++Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
++Rule	Cuba	2012	max	-	Mar	Sun>=8	0:00s	1:00	D
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Havana	-5:29:28 -	LMT	1890
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -1176,6 +1176,23 @@
+ # From Arthur Daivd Olson (2010-03-06):
+ # Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.
+ 
++# From Glenn Eychaner (2011-03-02): [geychaner@mac.com]
++# It appears that the Chilean government has decided to postpone the
++# change from summer time to winter time again, by three weeks to April
++# 2nd:
++# <a href="http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651">
++# http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
++# </a>
++#
++# This is not yet reflected in the offical "cambio de hora" site, but
++# probably will be soon:
++# <a href="http://www.horaoficial.cl/cambio.htm">
++# http://www.horaoficial.cl/cambio.htm
++# </a>
++
++# From Arthur David Olson (2011-03-02):
++# The emol.com article mentions a water shortage as the cause of the
++# postponement, which may mean that it's not a permanent change.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
+ Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
+@@ -1211,8 +1228,8 @@
+ # which is used below in specifying the transition.
+ Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
+ Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
+-Rule	Chile	2010	only	-	Apr	 4	3:00u	0	-
+-Rule	Chile	2011	max	-	Mar	Sun>=9	3:00u	0	-
++Rule	Chile	2010	2011	-	Apr	Sun>=1	3:00u	0	-
++Rule	Chile	2012	max	-	Mar	Sun>=9	3:00u	0	-
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08.  Ignore these.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -434,9 +434,11 @@
+ US	+340308-1181434	America/Los_Angeles	Pacific Time
+ US	+611305-1495401	America/Anchorage	Alaska Time
+ US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
++US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle
+ US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
+ US	+643004-1652423	America/Nome	Alaska Time - west Alaska
+ US	+515248-1763929	America/Adak	Aleutian Islands
++US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
+ US	+211825-1575130	Pacific/Honolulu	Hawaii
+ UY	-3453-05611	America/Montevideo
+ UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Pierre & Miquelon Standard Time", "PMST",
+                                                "Pierre & Miquelon Daylight Time", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Pierre & Miquelon Normalzeit", "PMST",
+                                                "Pierre & Miquelon Sommerzeit", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Hora est\u00e1ndar de Pierre & Miquelon", "PMST",
+                                                "Hora de verano de Pierre & Miquelon", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Heure normale de Saint-Pierre et Miquelon", "PMST",
+                                                "Heure avanc\u00e9e de Saint-Pierre et Miquelon", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Ora solare di Saint-Pierre e Miquelon", "PMST",
+                                                "Ora legale di Saint-Pierre e Miquelon", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u6a19\u6e96\u6642", "PMST",
+                                                "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \ud45c\uc900\uc2dc", "PMST",
+                                                "\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"Saint-Pierre-et-Miquelon, normaltid", "PMST",
+                                                "Saint-Pierre-et-Miquelon, sommartid", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u6807\u51c6\u65f6\u95f4", "PMST",
+                                                "\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u590f\u4ee4\u65f6", "PMDT"}},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -216,6 +216,7 @@
+             {"America/Anchorage", AKST},
+             {"AST", AKST},
+             {"America/Halifax", AST},
++            {"America/Sitka", AKST},
+             {"America/St_Johns", NST},
+             {"CNT", NST},
+             {"Europe/Paris", CET},
+@@ -392,6 +393,8 @@
+             {"America/Mendoza", AGT},
+             {"America/Menominee", CST},
+             {"America/Merida", CST},
++            {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
++                                                 "Metlakatla Daylight Time", "MeDT"}},
+             {"America/Mexico_City", CST},
+             {"America/Miquelon", new String[] {"\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u6a19\u6e96\u6642\u9593", "PMST",
+                                                "\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PMDT"}},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7033174-tzdata2011e.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,117 @@
+# HG changeset patch
+# User peytoia
+# Date 1301898245 -32400
+# Node ID 8093f407d57d53d9744e3eb14a63c353a15896ff
+# Parent  379a6504216e77569ee257cd5c1ece67521e9d3a
+7033174: (tz) Support tzdata2011e
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011d
++tzdata2011e
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -734,6 +734,48 @@
+ # http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html
+ # </a>
+ 
++# From Dan Abitol (2011-03-30):
++# ...Rules for Africa/Casablanca are the following (24h format)
++# The 3rd april 2011 at 00:00:00, [it] will be 3rd april 1:00:00
++# The 31th july 2011 at 00:59:59,  [it] will be 31th July 00:00:00
++# ...Official links of change in morocco
++# The change was broadcast on the FM Radio
++# I ve called ANRT (telecom regulations in Morocco) at
++# +212.537.71.84.00
++# <a href="http://www.anrt.net.ma/fr/">
++# http://www.anrt.net.ma/fr/
++# </a>
++# They said that
++# <a href="http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view">
++# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
++# </a>
++# is the official publication to look at.
++# They said that the decision was already taken.
++#
++# More articles in the press
++# <a href="http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev">
++# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-lev
++# </a>
++# e.html
++# <a href="http://www.lematin.ma/Actualite/Express/Article.asp?id=148923">
++# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
++# </a>
++# <a href="http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim">
++# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim
++# anche-prochain-5538.html
++# </a>
++
++# From Petr Machata (2011-03-30):
++# They have it written in English here:
++# <a href="http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view">
++# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
++# </a>
++#
++# It says there that "Morocco will resume its standard time on July 31,
++# 2011 at midnight." Now they don't say whether they mean midnight of
++# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
++# also been like that in the past.
++
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+ Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
+@@ -757,6 +799,8 @@
+ Rule	Morocco	2009	only	-	Aug	 21	 0:00	0	-
+ Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
+ Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
++Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
++Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+ 			 0:00	Morocco	WE%sT	1984 Mar 16
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -1193,6 +1193,19 @@
+ # From Arthur David Olson (2011-03-02):
+ # The emol.com article mentions a water shortage as the cause of the
+ # postponement, which may mean that it's not a permanent change.
++
++# From Glenn Eychaner (2011-03-28):
++# The article:
++# <a href="http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}">
++# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
++# </a>
++#
++# In English:
++# Chile's clocks will go back an hour this year on the 7th of May instead
++# of this Saturday. They will go forward again the 3rd Saturday in
++# August, not in October as they have since 1968. This is a pilot plan
++# which will be reevaluated in 2012.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
+ Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
+@@ -1222,13 +1235,16 @@
+ Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
+ Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
+ Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
+-Rule	Chile	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
++Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
++Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
++Rule	Chile	2012	max	-	Oct	Sun>=9	4:00u	1:00	S
+ Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
+ # N.B.: the end of March 29 in Chile is March 30 in Universal time,
+ # which is used below in specifying the transition.
+ Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
+ Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
+-Rule	Chile	2010	2011	-	Apr	Sun>=1	3:00u	0	-
++Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
++Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
+ Rule	Chile	2012	max	-	Mar	Sun>=9	3:00u	0	-
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08.  Ignore these.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7039469-tzdata2011g.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User peytoia
+# Date 1303782379 -32400
+# Node ID 78890acd99e4981483a90a218fd19f8773ed6b68
+# Parent  91a590306e020f9cee4d0a96245e2a27235ba23d
+7039469: (tz) Support tzdata2011g
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011e
++tzdata2011g
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -234,7 +234,21 @@
+ Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
+ # IATA (after 1990) says transitions are at 0:00.
+ # Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
+-Rule	Egypt	1995	max	-	Apr	lastFri	 0:00s	1:00	S
++
++# From Alexander Krivenyshev (2011-04-20):
++# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
++# saving time after a poll posted on its website showed the majority of
++# Egyptians would approve the cancellation."
++#
++# Egypt to cancel daylight saving time
++# <a href="http://www.almasryalyoum.com/en/node/407168">
++# http://www.almasryalyoum.com/en/node/407168
++# </a>
++# or
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_egypt04.html">
++# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
++# </a>
++Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
+ Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
+ # From Steffen Thorsen (2006-09-19):
+ # The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+@@ -335,7 +349,7 @@
+ Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
+ Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
+ Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
+-Rule	Egypt	2010	max	-	Sep	lastThu	23:00s	0	-
++Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -168,7 +168,7 @@
+ # A monument to Willett was unveiled on 1927-05-21, in an open space in
+ # a 45-acre wood near Chislehurst, Kent that was purchased by popular
+ # subscription and open to the public.  On the south face of the monolith,
+-# designed by G. W. Miller, is the the William Willett Memorial Sundial,
++# designed by G. W. Miller, is the...William Willett Memorial Sundial,
+ # which is permanently set to Summer Time.
+ 
+ # From Winston Churchill (1934-04-28):
+@@ -1808,7 +1808,7 @@
+ #
+ # All these events predate our cutoff date of 1970.  Unless we can
+ # come up with more definitive info about the timekeeping during the
+-# war years it's probably best just do do the following for now:
++# war years it's probably best just do...the following for now:
+ Link	Europe/Oslo	Arctic/Longyearbyen
+ 
+ # Poland
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -767,7 +767,7 @@
+ #
+ # As a result of the above Decree I believe the America/Rio_Branco
+ # timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+-# be created to represent the the west side of the Para State. I
++# be created to represent the...west side of the Para State. I
+ # suggest this new timezone be called Santarem as the most
+ # important/populated city in the affected area.
+ #
+@@ -1365,6 +1365,24 @@
+ # For now, we'll just record the time in Stanley, since we have no
+ # better info.
+ 
++# From Steffen Thorsen (2011-04-01):
++# The Falkland Islands will not turn back clocks this winter, but stay on
++# daylight saving time.
++#
++# One source:
++# <a href="http://www.falklandnews.com/public/story.cfm?get=5914&source=3">
++# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
++# </a>
++#
++# We have gotten this confirmed by a clerk of the legislative assembly:
++# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
++# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
++# hours) on the first Sunday of September at 0200hrs.
++#
++# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
++# will not revert to local mean time, but clocks will remain on Summer
++# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
++# change to local time following the trial period will be notified.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
+ Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
+@@ -1376,7 +1394,8 @@
+ Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
+ Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
+ Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
+-Rule	Falk	2001	max	-	Apr	Sun>=15	2:00	0	-
++Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
++Rule	Falk	2012	max	-	Apr	Sun>=15	2:00	0	-
+ Rule	Falk	2001	max	-	Sep	Sun>=1	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7090843-tzdata2011j.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,1228 @@
+# HG changeset patch
+# User peytoia
+# Date 1316071034 -32400
+# Node ID e97325a7fe7b037be1cfcb33acd5ed5aea25a24e
+# Parent  6b1e65e73b804bb5eeee4cb2d8ba15db7e6ad73f
+7090843: (tz) Support tzdata2011j
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011g
++tzdata2011j
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -80,7 +80,7 @@
+ # I invented the following abbreviations; corrections are welcome!
+ #	 2:00	WAST	West Africa Summer Time
+ #	 2:30	BEAT	British East Africa Time (no longer used)
+-#	 2:44:45 BEAUT	British East Africa Unified Time (no longer used)
++#	 2:45	BEAUT	British East Africa Unified Time (no longer used)
+ #	 3:00	CAST	Central Africa Summer Time (no longer used)
+ #	 3:00	SAST	South Africa Summer Time (no longer used)
+ #	 3:00	EAT	East Africa Time
+@@ -418,7 +418,7 @@
+ Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
+ 			3:00	-	EAT	1930
+ 			2:30	-	BEAT	1940
+-			2:44:45	-	BEAUT	1960
++			2:45	-	BEAUT	1960
+ 			3:00	-	EAT
+ 
+ # Lesotho
+@@ -979,6 +979,11 @@
+ 			2:00	Sudan	CA%sT	2000 Jan 15 12:00
+ 			3:00	-	EAT
+ 
++# South Sudan
++Zone	Africa/Juba	2:06:24 -	LMT	1931
++			2:00	Sudan	CA%sT	2000 Jan 15 12:00
++			3:00	-	EAT
++
+ # Swaziland
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
+@@ -988,7 +993,7 @@
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
+ 			3:00	-	EAT	1948
+-			2:44:45	-	BEAUT	1961
++			2:45	-	BEAUT	1961
+ 			3:00	-	EAT
+ 
+ # Togo
+@@ -1114,7 +1119,7 @@
+ Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
+ 			3:00	-	EAT	1930
+ 			2:30	-	BEAT	1948
+-			2:44:45	-	BEAUT	1957
++			2:45	-	BEAUT	1957
+ 			3:00	-	EAT
+ 
+ # Zambia
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -41,18 +41,6 @@
+ # I made up all time zone abbreviations mentioned here; corrections welcome!
+ # FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
+ 
+-# These rules are stolen from the `europe' file.
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	RussAQ	1981	1984	-	Apr	 1	 0:00	1:00	S
+-Rule	RussAQ	1981	1983	-	Oct	 1	 0:00	0	-
+-Rule	RussAQ	1984	1991	-	Sep	lastSun	 2:00s	0	-
+-Rule	RussAQ	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
+-Rule	RussAQ	1992	only	-	Mar	lastSat	 23:00	1:00	S
+-Rule	RussAQ	1992	only	-	Sep	lastSat	 23:00	0	-
+-Rule	RussAQ	1993	max	-	Mar	lastSun	 2:00s	1:00	S
+-Rule	RussAQ	1993	1995	-	Sep	lastSun	 2:00s	0	-
+-Rule	RussAQ	1996	max	-	Oct	lastSun	 2:00s	0	-
+-
+ # These rules are stolen from the `southamerica' file.
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	ArgAQ	1964	1966	-	Mar	 1	0:00	0	-
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -99,6 +99,10 @@
+ Rule RussiaAsia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+ Rule RussiaAsia	1996	max	-	Oct	lastSun	 2:00s	0	-
+ 
++# From Arthur David Olson (2011-06-15):
++# While Russia abandoned DST in 2011, Armenia may choose to
++# follow Russia's "old" rules.
++
+ # Afghanistan
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Kabul	4:36:48 -	LMT	1890
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -521,7 +521,7 @@
+ # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
+ # </a>
+ 
+-# From Raymond Hughes (2010-10-07):
++# From Laupue Raymond Hughes (2010-10-07):
+ # Please see
+ # <a href="http://www.mcil.gov.ws">
+ # http://www.mcil.gov.ws
+@@ -531,7 +531,7 @@
+ # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
+ # backwards from 1:00am to 12:00am"
+ 
+-# From Raymond Hughes (2011-03-07)
++# From Laupue Raymond Hughes (2011-03-07):
+ # I believe this will be posted shortly on the website
+ # <a href="http://www.mcil.gov.ws">
+ # www.mcil.gov.ws
+@@ -551,12 +551,74 @@
+ # Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
+ # INDUSTRY AND LABOUR 28th February 2011
+ 
++# From David Zuelke (2011-05-09):
++# Subject: Samoa to move timezone from east to west of international date line
++# 
++# <a href="http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963">
++# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
++# </a>
++
++# From Mark Sim-Smith (2011-08-17):
++# I have been in contact with Leilani Tuala Warren from the Samoa Law
++# Reform Commission, and she has sent me a copy of the Bill that she
++# confirmed has been passed...Most of the sections are about maps rather
++# than the time zone change, but I'll paste the relevant bits below. But
++# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
++# changes from UTC-11 to UTC+13:
++#
++# International Date Line Bill 2011
++#
++# AN ACT to provide for the change to standard time in Samoa and to make
++# consequential amendments to the position of the International Date
++# Line, and for related purposes.
++#
++# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
++# assembled as follows:
++#
++# 1. Short title and commencement-(1) This Act may be cited as the
++# International Date Line Act 2011. (2) Except for section 5(3) this Act
++# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
++# Section 5(3) commences on the date of assent by the Head of State.
++#
++# [snip]
++#
++# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
++# other statute of Samoa which refers to 'Samoa standard time' means the
++# time 13 hours in advance of Co-ordinated Universal Time.
++#
++# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
++# standard time shall be set at 13 hours in advance of Co-ordinated
++# Universal Time for the whole of Samoa. (2) All references to Samoa's
++# time zone and to Samoa standard time in Samoa in all legislation and
++# instruments after the commencement of this Act shall be references to
++# Samoa standard time as provided for in this Act. (3) Nothing in this
++# Act affects the provisions of the Daylight Saving Act 2009, except that
++# it defines Samoa standard time....
++
++# From Laupue Raymond Hughes (2011-09-02):
++# <a href="http://www.mcil.gov.ws/mcil_publications.html">
++# http://www.mcil.gov.ws/mcil_publications.html
++# </a>
++#
++# here is the official website publication for Samoa DST and dateline change
++#
++# DST
++# Year	End	Time	Start	Time
++# 2011	- - -	- - -	24 September	3:00am to 4:00am
++# 2012	01 April	4:00am to 3:00am	- - -	- - -
++#
++# Dateline Change skip Friday 30th Dec 2011
++# Thursday 29th December 2011	23:59:59 Hours
++# Saturday 31st December 2011	00:00:00 Hours
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+ 			-11:00	-	WST	2010 Sep 26
+ 			-11:00	1:00	WSDT	2011 Apr 2 4:00
+-			-11:00	-	WST
++			-11:00	-	WST	2011 Sep 24 3:00
++			-11:00	1:00	WSDT	2011 Dec 30
++			 13:00	1:00	WSDT	2012 Apr 1 4:00
++			 13:00	-	WST
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+@@ -1228,7 +1290,7 @@
+ # Lord Howe Island Board (controlling authority for the Island) is
+ # seeking the community's views on various options for summer time
+ # arrangements on the Island, e.g. advance clocks by 1 full hour
+-# instead of only 30 minutes.  Dependant on the wishes of residents
++# instead of only 30 minutes.  [Dependent] on the wishes of residents
+ # the Board may approach the NSW government to change the existing
+ # arrangements.  The starting date for summer time on the Island will
+ # however always coincide with the rest of NSW.
+@@ -1354,7 +1416,7 @@
+ 
+ # From Paul Eggert (1996-01-22):
+ # Today's _Wall Street Journal_ (page 1) reports that Kiribati
+-# ``declared it the same day throught the country as of Jan. 1, 1995''
++# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
+ # as part of the competition to be first into the 21st century.
+ 
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -587,6 +587,26 @@
+ Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+ Rule	Russia	1996	max	-	Oct	lastSun	 2:00s	0	-
+ 
++# From Alexander Krivenyshev (2011-06-14):
++# According to Kremlin press service, Russian President Dmitry Medvedev
++# signed a federal law "On calculation of time" on June 9, 2011.
++# According to the law Russia is abolishing daylight saving time.
++# 
++# Medvedev signed a law "On the Calculation of Time" (in russian): 
++# <a href="http://bmockbe.ru/events/?ID=7583">
++# http://bmockbe.ru/events/?ID=7583
++# </a>
++# 
++# Medvedev signed a law on the calculation of the time (in russian):
++# <a href="http://www.regnum.ru/news/polit/1413906.html">
++# http://www.regnum.ru/news/polit/1413906.html
++# </a>
++
++# From Arthur David Olson (2011-06-15):
++# Take "abolishing daylight saving time" to mean that time is now considered
++# to be standard.
++# At least for now, keep the "old" Russia rules for the benefit of Belarus.
++
+ # These are for backward compatibility with older versions.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -2035,7 +2055,8 @@
+ 			 1:00	C-Eur	CE%sT	1945
+ 			 2:00	Poland	CE%sT	1946
+ 			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+-			 2:00	Russia	EE%sT
++			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
++			 3:00	-	KALT
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Respublika Adygeya, Arkhangel'skaya oblast',
+@@ -2064,7 +2085,8 @@
+ 			 2:00	-	EET	1930 Jun 21
+ 			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+ 			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
+-			 3:00	Russia	MSK/MSD
++			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
++			 4:00	-	MSK
+ #
+ # Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+ # Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
+@@ -2077,7 +2099,8 @@
+ 			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
+ 			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
+ 			 4:00	-	VOLT	1992 Mar 29 2:00s
+-			 3:00	Russia	VOL%sT
++			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
++			 4:00	-	VOLT
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Samarskaya oblast', Udmyrtskaya respublika
+@@ -2089,7 +2112,8 @@
+ 			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
+ 			 3:00	-	KUYT	1991 Oct 20 3:00
+ 			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+-			 3:00	Russia	SAM%sT
++			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
++			 4:00	-	SAMT
+ 
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+@@ -2102,7 +2126,8 @@
+ 			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
+ 			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
+ 			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
+-			 5:00	Russia	YEK%sT	# Yekaterinburg Time
++			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
++			 6:00	-	YEKT	# Yekaterinburg Time
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+@@ -2110,7 +2135,8 @@
+ 			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
+ 			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
+ 			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
+-			 6:00	Russia	OMS%sT
++			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
++			 7:00	-	OMST
+ #
+ # From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+ # not clear when it switched from +7 to +6.
+@@ -2120,7 +2146,8 @@
+ 			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
+ 			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
+ 			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
+-			 6:00	Russia	NOV%sT
++			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
++			 7:00	-	NOVT
+ 
+ # From Alexander Krivenyshev (2009-10-13):
+ # Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
+@@ -2153,7 +2180,8 @@
+ 			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+ 			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+ 			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
+-			 6:00	Russia	NOV%sT # Novosibirsk/Novokuznetsk Time
++			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
++			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
+ 
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+@@ -2164,7 +2192,8 @@
+ 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
+ 			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
+ 			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
+-			 7:00	Russia	KRA%sT
++			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
++			 8:00	-	KRAT
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Respublika Buryatiya, Irkutskaya oblast',
+@@ -2174,7 +2203,8 @@
+ 			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
+ 			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
+ 			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
+-			 8:00	Russia	IRK%sT
++			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
++			 9:00	-	IRKT
+ #
+ # From Oscar van Vlijmen (2003-10-18): [This region consists of]
+ # Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+@@ -2197,7 +2227,8 @@
+ 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+ 			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+ 			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
+-			 9:00	Russia	YAK%sT
++			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
++			 10:00	-	YAKT
+ #
+ # From Oscar van Vlijmen (2003-10-18): [This region consists of]
+ # Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+@@ -2210,7 +2241,8 @@
+ 			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
+ 			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
+ 			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
+-			10:00	Russia	VLA%sT
++			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
++			11:00	-	VLAT
+ #
+ # Sakhalinskaya oblast'.
+ # The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
+@@ -2220,7 +2252,8 @@
+ 			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
+ 			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
+ 			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
+-			10:00	Russia	SAK%sT
++			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
++			11:00	-	SAKT
+ #
+ # From Oscar van Vlijmen (2003-10-18): [This region consists of]
+ # Magadanskaya oblast', Respublika Sakha (Yakutiya).
+@@ -2233,7 +2266,8 @@
+ 			10:00	-	MAGT	1930 Jun 21 # Magadan Time
+ 			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+ 			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+-			11:00	Russia	MAG%sT
++			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
++			12:00	-	MAGT
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
+@@ -2244,7 +2278,8 @@
+ 			12:00	Russia	PET%sT	1991 Mar 31 2:00s
+ 			11:00	Russia	PET%sT	1992 Jan 19 2:00s
+ 			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+-			11:00	Russia	PET%sT
++			11:00	Russia	PET%sT	2011 Mar 27 2:00s
++			12:00	-	PETT
+ #
+ # Chukotskij avtonomnyj okrug
+ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
+@@ -2253,7 +2288,8 @@
+ 			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
+ 			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
+ 			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+-			11:00	Russia	ANA%sT
++			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
++			12:00	-	ANAT
+ 
+ # Serbia
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
+@@ -43,6 +43,9 @@
+ #
+ # Lines beginning with `#' are comments.
+ #
++# From Arthur David Olson (2011-08-17):
++# Resynchronized today with the ISO 3166 site (adding SS for South Sudan).
++#
+ #country-
+ #code	country name
+ AD	Andorra
+@@ -52,7 +55,6 @@
+ AI	Anguilla
+ AL	Albania
+ AM	Armenia
+-AN	Netherlands Antilles
+ AO	Angola
+ AQ	Antarctica
+ AR	Argentina
+@@ -75,6 +77,7 @@
+ BM	Bermuda
+ BN	Brunei
+ BO	Bolivia
++BQ	Bonaire Sint Eustatius & Saba
+ BR	Brazil
+ BS	Bahamas
+ BT	Bhutan
+@@ -97,6 +100,7 @@
+ CR	Costa Rica
+ CU	Cuba
+ CV	Cape Verde
++CW	Curacao
+ CX	Christmas Island
+ CY	Cyprus
+ CZ	Czech Republic
+@@ -251,8 +255,10 @@
+ SN	Senegal
+ SO	Somalia
+ SR	Suriname
++SS	South Sudan
+ ST	Sao Tome & Principe
+ SV	El Salvador
++SX	Sint Maarten
+ SY	Syria
+ SZ	Swaziland
+ TC	Turks & Caicos Is
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -490,6 +490,10 @@
+ # own time. I asked about daylight saving; they said it wasn't used. I
+ # did not inquire about practices in the past.
+ 
++# From Arthur David Olson (2011-08-17):
++# For lack of better information, assume that Metlakatla's
++# abandonment of use of daylight saving resulted from the 1983 vote.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
+ 			 -8:57:41 -	LMT	1900 Aug 20 12:00
+@@ -515,7 +519,7 @@
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+ 			 -8:00	US	P%sT	1983 Oct 30 2:00
+-			 -8:00	US	MeST
++			 -8:00	-	MeST
+ Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
+ 			 -9:18:55 -	LMT	1900 Aug 20 12:00
+ 			 -9:00	-	YST	1942
+@@ -615,8 +619,8 @@
+ 			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
+ 			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
+ 			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
+-			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Fox+2
+-			-10:30	US	H%sT	1947 Jun  8 2:00 #Schmitt&Fox+2
++			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
++			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
+ 			-10:00	-	HST
+ 
+ # Now we turn to US areas that have diverged from the consensus since 1970.
+@@ -1185,12 +1189,39 @@
+ # From Paul Eggert (2000-10-02):
+ # INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
+ # at 00:01 local time.  For now, assume it started in 1987.
++
++# From Michael Pelley (2011-08-05):
++# The Government of Newfoundland and Labrador has pending changes to
++# modify the hour for daylight savings time to come into effect in
++# November 2011. This modification would change the time from 12:01AM to
++# 2:00AM on the dates of the switches of Daylight Savings Time to/from
++# Standard Time.
++#
++# As a matter of reference, in Canada provinces have the authority of
++# setting time zone information. The legislation has passed our
++# legislative body (The House of Assembly) and is awaiting the
++# proclamation to come into effect. You may find this information at:
++# <a href="http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm">
++# http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm
++# </a>
++# and
++# search within that web page for Standard Time (Amendment) Act. The Act
++# may be found at:
++# <a href="http://www.assembly.nl.ca/business/bills/Bill1106.htm">
++# http://www.assembly.nl.ca/business/bills/Bill1106.htm
++# </a>
++# ...
++# MICHAEL PELLEY | Manager of Enterprise Architecture - Solution Delivery
++# Office of the Chief Information Officer Executive Council Government of
++# Newfoundland & Labrador P.O. Box 8700, 40 Higgins Line, St. John's NL
++# A1B 4J6
++
+ Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
+ Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
+ Rule	StJohns	1988	only	-	Apr	Sun>=1	0:01	2:00	DD
+ Rule	StJohns	1989	2006	-	Apr	Sun>=1	0:01	1:00	D
+-Rule	StJohns	2007	max	-	Mar	Sun>=8	0:01	1:00	D
+-Rule	StJohns	2007	max	-	Nov	Sun>=1	0:01	0	S
++Rule	StJohns	2007	2011	-	Mar	Sun>=8	0:01	1:00	D
++Rule	StJohns	2007	2010	-	Nov	Sun>=1	0:01	0	S
+ #
+ # St John's has an apostrophe, but Posix file names can't have apostrophes.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -1200,7 +1231,8 @@
+ 			-3:30:52 StJohns N%sT	1935 Mar 30
+ 			-3:30	StJohns	N%sT	1942 May 11
+ 			-3:30	Canada	N%sT	1946
+-			-3:30	StJohns	N%sT
++			-3:30	StJohns	N%sT	2011 Nov
++			-3:30	Canada	N%sT
+ 
+ # most of east Labrador
+ 
+@@ -1214,7 +1246,8 @@
+ 			-3:30	StJohns	N%sT	1942 May 11
+ 			-3:30	Canada	N%sT	1946
+ 			-3:30	StJohns	N%sT	1966 Mar 15 2:00
+-			-4:00	StJohns	A%sT
++			-4:00	StJohns	A%sT	2011 Nov
++			-4:00	Canada	A%sT
+ 
+ 
+ # west Labrador, Nova Scotia, Prince Edward I
+@@ -1946,20 +1979,69 @@
+ # daylight saving....
+ # http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
+ 
+-# From Chris Walton (2007-03-14):
+-# Today I phoned the "hamlet office" to find out what Resolute was doing with
+-# its clocks.
++# From Chris Walton (2011-03-21):
++# Back in 2007 I initiated the creation of a new "zone file" for Resolute
++# Bay. Resolute Bay is a small community located about 900km north of
++# the Arctic Circle. The zone file was required because Resolute Bay had
++# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.
+ #
+-# The individual that answered the phone confirmed that the clocks did not
+-# move at the end of daylight saving on October 29/2006.  He also told me that
+-# the clocks did not move this past weekend (March 11/2007)....
+-
+-# From Chris Walton (2008-11-13):
+-# ...the residents of Resolute believe that they are changing "time zones"
+-# twice a year.  In winter months, local time is qualified with "Eastern
+-# Time" which is really "Eastern Standard Time (UTC-5)".  In summer
+-# months, local time is qualified with "Central Time" which is really
+-# "Central Daylight Time (UTC-5)"...
++# According to new information which I received last week, Resolute Bay
++# went back to using UTC-6 in the winter of 2007-2008...
++#
++# On March 11/2007 most of Canada went onto daylight saving. On March
++# 14/2007 I phoned the Resolute Bay hamlet office to do a "time check." I
++# talked to somebody that was both knowledgeable and helpful. I was able
++# to confirm that Resolute Bay was still operating on UTC-5. It was
++# explained to me that Resolute Bay had been on the Eastern Time zone
++# (EST) in the winter, and was now back on the Central Time zone (CDT).
++# i.e. the time zone had changed twice in the last year but the clocks
++# had not moved. The residents had to know which time zone they were in
++# so they could follow the correct TV schedule...
++#
++# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I
++# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature
++# of the phone call, I decided to seek out an alternate source of
++# information. I found an e-mail address for somebody by the name of
++# Stephanie Adams whose job was listed as "Inns North Support Officer for
++# Arctic Co-operatives." I was under the impression that Stephanie lived
++# and worked in Resolute Bay...
++#
++# On March 14/2011 I phoned the hamlet office again. I was told that
++# Resolute Bay had been using Central Standard Time over the winter of
++# 2010-2011 and that the clocks had therefore been moved one hour ahead
++# on March 13/2011. The person I talked to was aware that Resolute Bay
++# had previously experimented with Eastern Standard Time but he could not
++# tell me when the practice had stopped.
++#
++# On March 17/2011 I searched the Web to find an e-mail address of
++# somebody that might be able to tell me exactly when Resolute Bay went
++# off Eastern Standard Time. I stumbled on the name "Aziz Kheraj." Aziz
++# used to be the mayor of Resolute Bay and he apparently owns half the
++# businesses including "South Camp Inn." This website has some info on
++# Aziz:
++# <a href="http://www.uphere.ca/node/493">
++# http://www.uphere.ca/node/493
++# </a>
++#
++# I sent Aziz an e-mail asking when Resolute Bay had stopped using
++# Eastern Standard Time.
++#
++# Aziz responded quickly with this: "hi, The time was not changed for the
++# 1 year only, the following year, the community went back to the old way
++# of "spring ahead-fall behind" currently we are zulu plus 5 hrs and in
++# the winter Zulu plus 6 hrs"
++#
++# This of course conflicted with everything I had ascertained in November 2008.
++#
++# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz
++# responded with this: "Hi, Stephanie lives in Winnipeg. I live here, You
++# may want to check with the weather office in Resolute Bay or do a
++# search on the weather through Env. Canada. web site"
++#
++# If I had realized the Stephanie did not live in Resolute Bay I would
++# never have contacted her.  I now believe that all the information I
++# obtained in November 2008 should be ignored...
++# I apologize for reporting incorrect information in 2008.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	NT_YK	1918	only	-	Apr	14	2:00	1:00	D
+@@ -1987,14 +2069,12 @@
+ 			-6:00	Canada	C%sT	2000 Oct 29 2:00
+ 			-5:00	Canada	E%sT
+ # aka Qausuittuq
+-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+-Rule	Resolute 2006	max	-	Nov	Sun>=1	2:00	0	ES
+-Rule	Resolute 2007	max	-	Mar	Sun>=8	2:00	0	CD
+ Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
+ 			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+ 			-5:00	-	EST	2001 Apr  1 3:00
+ 			-6:00	Canada	C%sT	2006 Oct 29 2:00
+-			-5:00	Resolute	%sT
++			-5:00	-	EST	2007 Mar 11 3:00
++			-6:00	Canada	C%sT
+ # aka Kangiqiniq
+ Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
+ 			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -1298,6 +1298,14 @@
+ 			-4:30	-	ANT	1965 # Netherlands Antilles Time
+ 			-4:00	-	AST
+ 
++# From Arthur David Olson (2011-06-15):
++# At least for now, use links for places with new iso3166 codes.
++# The name "Lower Prince's Quarter" is both longer than fourteen charaters
++# and contains an apostrophe; use "Lower_Princes" below.
++
++Link	America/Curacao	America/Lower_Princes # Sint Maarten
++Link	America/Curacao	America/Kralendijk # Bonaire, Sint Estatius and Saba
++
+ # Ecuador
+ #
+ # From Paul Eggert (2007-03-04):
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -54,7 +54,6 @@
+ AI	+1812-06304	America/Anguilla
+ AL	+4120+01950	Europe/Tirane
+ AM	+4011+04430	Asia/Yerevan
+-AN	+1211-06900	America/Curacao
+ AO	-0848+01314	Africa/Luanda
+ AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
+ AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
+@@ -109,6 +108,7 @@
+ BM	+3217-06446	Atlantic/Bermuda
+ BN	+0456+11455	Asia/Brunei
+ BO	-1630-06809	America/La_Paz
++BQ	+120903-0681636	America/Kralendijk
+ BR	-0351-03225	America/Noronha	Atlantic islands
+ BR	-0127-04829	America/Belem	Amapa, E Para
+ BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
+@@ -142,7 +142,7 @@
+ CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
+ CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
+ CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
+-CA	+744144-0944945	America/Resolute	Eastern Standard Time - Resolute, Nunavut
++CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
+ CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+ CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
+ CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
+@@ -177,6 +177,7 @@
+ CR	+0956-08405	America/Costa_Rica
+ CU	+2308-08222	America/Havana
+ CV	+1455-02331	Atlantic/Cape_Verde
++CW	+1211-06900	America/Curacao
+ CX	-1025+10543	Indian/Christmas
+ CY	+3510+03322	Asia/Nicosia
+ CZ	+5005+01426	Europe/Prague
+@@ -382,8 +383,10 @@
+ SN	+1440-01726	Africa/Dakar
+ SO	+0204+04522	Africa/Mogadishu
+ SR	+0550-05510	America/Paramaribo
++SS	+0451+03136	Africa/Juba
+ ST	+0020+00644	Africa/Sao_Tome
+ SV	+1342-08912	America/El_Salvador
++SX	+180305-0630250	America/Lower_Princes
+ SY	+3330+03618	Asia/Damascus
+ SZ	-2618+03106	Africa/Mbabane
+ TC	+2128-07108	America/Grand_Turk
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pacific Standard Time", "PST",
+                                      "Pacific Daylight Time", "PDT"};
+-        String RST[] = new String[] {"Eastern Standard Time", "EST",
+-                                     "Central Daylight Time", "CDT"};
+         String SAST[] = new String[] {"South Africa Standard Time", "SAST",
+                                       "South Africa Summer Time", "SAST"};
+         String SBT[] = new String[] {"Solomon Is. Time", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Bolivia Time", "BOT",
+                                              "Bolivia Summer Time", "BOST"}},
+             {"America/Lima", new String[] {"Peru Time", "PET",
+                                            "Peru Summer Time", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pazifische Normalzeit", "PST",
+                                      "Pazifische Sommerzeit", "PDT"};
+-        String RST[] = new String[] {"\u00d6stliche Normalzeit", "EST",
+-                                     "Zentrale Sommerzeit", "CDT"};
+         String SAST[] = new String[] {"S\u00fcdafrikanische Normalzeit", "SAST",
+                                       "S\u00fcdafrikanische Sommerzeit", "SAST"};
+         String SBT[] = new String[] {"Salomoninseln Zeit", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Bolivianische Zeit", "BOT",
+                                              "Bolivianische Sommerzeit", "BOST"}},
+             {"America/Lima", new String[] {"Peruanische Zeit", "PET",
+                                            "Peruanische Sommerzeit", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Hora est\u00e1ndar del Pac\u00edfico", "PST",
+                                      "Hora de verano del Pac\u00edfico", "PDT"};
+-        String RST[] = new String[] {"Hora est\u00e1ndar Oriental", "EST",
+-                                     "Hora de verano Central", "CDT"};
+         String SAST[] = new String[] {"Hora est\u00e1ndar de Sud\u00e1frica", "SAST",
+                                       "Hora de verano de Sud\u00e1frica", "SAST"};
+         String SBT[] = new String[] {"Hora de las Islas Solomon", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Hora de Bolivia", "BOT",
+                                              "Hora de verano de Bolivia", "BOST"}},
+             {"America/Lima", new String[] {"Hora de Per\u00fa", "PET",
+                                            "Hora de verano de Per\u00fa", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Heure normale du Pacifique", "PST",
+                                      "Heure avanc\u00e9e du Pacifique", "PDT"} ;
+-        String RST[] = new String[] {"Heure normale de l'Est", "EST",
+-                                     "Heure avanc\u00e9e du Centre", "CDT"} ;
+         String SAST[] = new String[] {"Heure normale d'Afrique du Sud", "SAST",
+                                       "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST"} ;
+         String SBT[] = new String[] {"Heure des \u00celes Salomon", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Heure de Bolivie", "BOT",
+                                              "Heure d'\u00e9t\u00e9 de Bolivie", "BOST"}},
+             {"America/Lima", new String[] {"Heure du P\u00e9rou", "PET",
+                                            "Heure d'\u00e9t\u00e9 du P\u00e9rou", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Ora solare della costa occidentale USA", "PST",
+                                      "Ora legale della costa occidentale USA", "PDT"};
+-        String RST[] = new String[] {"Ora solare USA orientale", "EST",
+-                                     "Ora legale USA centrale", "CDT"};
+         String SAST[] = new String[] {"Ora solare del Sudafrica", "SAST",
+                                       "Ora estiva del Sudafrica", "SAST"};
+         String SBT[] = new String[] {"Ora delle Isole Salomone", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Ora della Bolivia", "BOT",
+                                              "Ora estiva della Bolivia", "BOST"}},
+             {"America/Lima", new String[] {"Ora del Per\u00f9", "PET",
+                                            "Ora estiva del Per\u00f9", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT"};
+-        String RST[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642", "EST",
+-                                     "\u4e2d\u90e8\u590f\u6642\u9593", "CDT"};
+         String SAST[] = new String[] {"\u5357\u30a2\u30d5\u30ea\u30ab\u6a19\u6e96\u6642", "SAST",
+                                       "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST"};
+         String SBT[] = new String[] {"\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u6642\u9593", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"\u30dc\u30ea\u30d3\u30a2\u6642\u9593", "BOT",
+                                              "\u30dc\u30ea\u30d3\u30a2\u590f\u6642\u9593", "BOST"}},
+             {"America/Lima", new String[] {"\u30da\u30eb\u30fc\u6642\u9593", "PET",
+                                            "\u30da\u30eb\u30fc\u590f\u6642\u9593", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc", "PST",
+                                      "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+-        String RST[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc", "EST",
+-                                     "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+         String SAST[] = new String[] {"\ub0a8\uc544\ud504\ub9ac\uce74 \ud45c\uc900\uc2dc", "SAST",
+                                       "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST"};
+         String SBT[] = new String[] {"\uc194\ub85c\ubaac \uad70\ub3c4 \uc2dc\uac04", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"\ubcfc\ub9ac\ube44\uc544 \uc2dc\uac04", "BOT",
+                                             "\ubcfc\ub9ac\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BOST"}},
+             {"America/Lima", new String[] {"\ud398\ub8e8 \uc2dc\uac04", "PET",
+                                             "\ud398\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Stilla havet, normaltid", "PST",
+                                      "Stilla havet, sommartid", "PDT"};
+-        String RST[] = new String[] {"Eastern, normaltid", "EST",
+-                                     "Central sommartid", "CDT"};
+         String SAST[] = new String[] {"Sydafrika, normaltid", "SAST",
+                                       "Sydafrika, sommartid", "SAST"};
+         String SBT[] = new String[] {"Salomon\u00f6arna, normaltid", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"Bolivia, normaltid", "BOT",
+                                              "Bolivia, sommartid", "BOST"}},
+             {"America/Lima", new String[] {"Peru, normaltid", "PET",
+                                            "Peru, sommartid", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT"};
+-        String RST[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "EST",
+-                                     "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT"};
+         String SAST[] = new String[] {"\u5357\u975e\u6807\u51c6\u65f6\u95f4", "SAST",
+                                       "\u5357\u975e\u590f\u4ee4\u65f6", "SAST"};
+         String SBT[] = new String[] {"\u6240\u7f57\u95e8\u7fa4\u5c9b\u65f6\u95f4", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"\u73bb\u5229\u7ef4\u4e9a\u65f6\u95f4", "BOT",
+                                              "\u73bb\u5229\u7ef4\u4e9a\u590f\u4ee4\u65f6", "BOST"}},
+             {"America/Lima", new String[] {"\u79d8\u9c81\u65f6\u95f4", "PET",
+                                            "\u79d8\u9c81\u590f\u4ee4\u65f6", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -673,7 +674,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -159,8 +159,6 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642\u9593", "PST",
+                                      "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+-        String RST[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593", "EST",
+-                                     "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+         String SAST[] = new String[] {"\u5357\u975e\u6a19\u6e96\u6642\u9593", "SAST",
+                                       "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST"};
+         String SBT[] = new String[] {"\u6240\u7f85\u9580\u7fa4\u5cf6\u6642\u9593", "SBT",
+@@ -262,6 +260,7 @@
+             {"Africa/Gaborone", CAT},
+             {"Africa/Harare", CAT},
+             {"Africa/Johannesburg", SAST},
++            {"Africa/Juba", EAT},
+             {"Africa/Kampala", EAT},
+             {"Africa/Khartoum", EAT},
+             {"Africa/Kigali", CAT},
+@@ -378,11 +377,13 @@
+             {"America/Kentucky/Louisville", EST},
+             {"America/Kentucky/Monticello", EST},
+             {"America/Knox_IN", CST},
++            {"America/Kralendijk", AST},
+             {"America/La_Paz", new String[] {"\u73bb\u5229\u7dad\u4e9e\u6642\u9593", "BOT",
+                                              "\u73bb\u5229\u7dad\u4e9e\u590f\u4ee4\u6642\u9593", "BOST"}},
+             {"America/Lima", new String[] {"\u7955\u9b6f\u6642\u9593", "PET",
+                                            "\u7955\u9b6f\u590f\u4ee4\u6642\u9593", "PEST"}},
+             {"America/Louisville", EST},
++            {"America/Lower_Princes", AST},
+             {"America/Maceio", BRT},
+             {"America/Managua", CST},
+             {"America/Manaus", AMT},
+@@ -425,7 +426,7 @@
+             {"America/Rankin_Inlet", CST},
+             {"America/Recife", BRT},
+             {"America/Regina", CST},
+-            {"America/Resolute", RST},
++            {"America/Resolute", CST},
+             {"America/Rio_Branco", AMT},
+             {"America/Rosario", AGT},
+             {"America/Santa_Isabel", PST},
+@@ -674,7 +675,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", EET},
++            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
++                                                 "Kaliningrad Summer Time", "KALST"}},
+             {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7103108-tzdata2011l.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,1593 @@
+# HG changeset patch
+# User asaha
+# Date 1319235923 25200
+# Node ID dd8350c61d3669eed93507e46e877affe18c2d41
+# Parent  426499ae8e0465161186dfee107ca30f6f6d833c
+7103108: (tz) Support tzdata2011l
+Reviewed-by: coffeys, peytoia
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011j
++tzdata2011l
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)africa	8.33
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)antarctica	8.9
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -1,26 +1,4 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
++# @(#)asia	8.68
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -2216,7 +2194,47 @@
+ # http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
+ # </a>
+ 
++# From Steffen Thorsen (2011-08-26):
++# Gaza and the West Bank did go back to standard time in the beginning of
++# August, and will now enter daylight saving time again on 2011-08-30
++# 00:00 (so two periods of DST in 2011). The pause was because of
++# Ramadan.
++#
++# <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=416217">
++# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
++# </a>
++# Additional info:
++# <a href="http://www.timeanddate.com/news/time/palestine-dst-2011.html">
++# http://www.timeanddate.com/news/time/palestine-dst-2011.html
++# </a>
++
++# From Alexander Krivenyshev (2011-08-27):
++# According to the article in The Jerusalem Post:
++# "...Earlier this month, the Palestinian government in the West Bank decided to
++# move to standard time for 30 days, during Ramadan. The Palestinians in the
++# Gaza Strip accepted the change and also moved their clocks one hour back.
++# The Hamas government said on Saturday that it won't observe summertime after
++# the Muslim feast of Id al-Fitr, which begins on Tuesday..."
++# ...
++# <a href="http://www.jpost.com/MiddleEast/Article.aspx?id=235650">
++# http://www.jpost.com/MiddleEast/Article.aspx?id=235650
++# </a>
++# or
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html">
++# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
++# </a>
+ # The rules for Egypt are stolen from the `africa' file.
++
++# From Steffen Thorsen (2011-09-30):
++# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30 
++# 00:00).
++# So West Bank and Gaza now have the same time again.
++#
++# Many sources, including:
++# <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=424808">
++# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
++# </a>
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
+ Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
+@@ -2232,19 +2250,37 @@
+ Rule Palestine	2006	2008	-	Apr	 1	0:00	1:00	S
+ Rule Palestine	2006	only	-	Sep	22	0:00	0	-
+ Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
+-Rule Palestine	2008	only	-	Aug	lastFri	2:00	0	-
++Rule Palestine	2008	only	-	Aug	lastFri	0:00	0	-
+ Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
+-Rule Palestine	2010	max	-	Mar	lastSat	0:01	1:00	S
+-Rule Palestine	2009	max	-	Sep	Fri>=1	2:00	0	-
++Rule Palestine	2009	only	-	Sep	Fri>=1	2:00	0	-
++Rule Palestine	2010	only	-	Mar	lastSat	0:01	1:00	S
+ Rule Palestine	2010	only	-	Aug	11	0:00	0	-
+ 
++# From Arthur David Olson (2011-09-20):
++# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+ 			2:00	Zion	EET	1948 May 15
+ 			2:00 EgyptAsia	EE%sT	1967 Jun  5
+ 			2:00	Zion	I%sT	1996
+ 			2:00	Jordan	EE%sT	1999
+-			2:00 Palestine	EE%sT
++			2:00 Palestine	EE%sT	2011 Apr  2 12:01
++			2:00	1:00	EEST	2011 Aug  1
++			2:00	-	EET
++
++Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
++			2:00	Zion	EET	1948 May 15
++			2:00 EgyptAsia	EE%sT	1967 Jun  5
++			2:00	Zion	I%sT	1996
++			2:00	Jordan	EE%sT	1999
++			2:00 Palestine	EE%sT	2008 Aug
++			2:00 	1:00	EEST	2008 Sep
++			2:00 Palestine	EE%sT	2011 Apr  1 12:01
++			2:00	1:00	EEST	2011 Aug  1
++			2:00	-	EET	2011 Aug 30
++			2:00	1:00	EEST	2011 Sep 30 3:00
++			2:00	-	EET
+ 
+ # Paracel Is
+ # no information
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)australasia	8.27
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -318,6 +296,18 @@
+ # http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
+ # </a>
+ 
++# From Steffen Thorsen (2011-10-03):
++# Now the dates have been confirmed, and at least our start date 
++# assumption was correct (end date was one week wrong).
++#
++# <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155">
++# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
++# </a>
++# which says
++# Members of the public are reminded to change their time to one hour in 
++# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to 
++# 2am on February 26 next year.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+@@ -325,6 +315,8 @@
+ Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+ Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
++Rule	Fiji	2011	only	-	Oct	23	2:00	1:00	S
++Rule	Fiji	2012	only	-	Feb	26	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+--- openjdk/jdk/make/sun/javazic/tzdata/backward
++++ openjdk/jdk/make/sun/javazic/tzdata/backward
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)backward	8.9
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/etcetera
++++ openjdk/jdk/make/sun/javazic/tzdata/etcetera
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)etcetera	8.3
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)europe	8.38
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -583,9 +561,9 @@
+ #
+ Rule	Russia	1992	only	-	Mar	lastSat	 23:00	1:00	S
+ Rule	Russia	1992	only	-	Sep	lastSat	 23:00	0	-
+-Rule	Russia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
++Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
+ Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+-Rule	Russia	1996	max	-	Oct	lastSun	 2:00s	0	-
++Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
+ 
+ # From Alexander Krivenyshev (2011-06-14):
+ # According to Kremlin press service, Russian President Dmitry Medvedev
+@@ -605,7 +583,6 @@
+ # From Arthur David Olson (2011-06-15):
+ # Take "abolishing daylight saving time" to mean that time is now considered
+ # to be standard.
+-# At least for now, keep the "old" Russia rules for the benefit of Belarus.
+ 
+ # These are for backward compatibility with older versions.
+ 
+@@ -711,6 +688,23 @@
+ 			1:00	EU	CE%sT
+ 
+ # Belarus
++# From Yauhen Kharuzhy (2011-09-16):
++# By latest Belarus government act Europe/Minsk timezone was changed to
++# GMT+3 without DST (was GMT+2 with DST).
++#
++# Sources (Russian language):
++# 1.
++# <a href="http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html">
++# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
++# </a>
++# 2.
++# <a href="http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/">
++# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
++# </a>
++# 3.
++# <a href="http://news.tut.by/society/250578.html">
++# http://news.tut.by/society/250578.html
++# </a>
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Minsk	1:50:16 -	LMT	1880
+ 			1:50	-	MMT	1924 May 2 # Minsk Mean Time
+@@ -722,7 +716,8 @@
+ 			2:00	1:00	EEST	1991 Sep 29 2:00s
+ 			2:00	-	EET	1992 Mar 29 0:00s
+ 			2:00	1:00	EEST	1992 Sep 27 0:00s
+-			2:00	Russia	EE%sT
++			2:00	Russia	EE%sT	2011 Mar 27 2:00s
++			3:00	-	FET # Further-eastern European Time
+ 
+ # Belgium
+ #
+@@ -2056,7 +2051,7 @@
+ 			 2:00	Poland	CE%sT	1946
+ 			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
+ 			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
+-			 3:00	-	KALT
++			 3:00	-	FET # Further-eastern European Time
+ #
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Respublika Adygeya, Arkhangel'skaya oblast',
+@@ -2211,7 +2206,7 @@
+ # [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
+ 
+ # From Oscar van Vlijmen (2009-11-29):
+-# ...some regions of RUssia were merged with others since 2005...
++# ...some regions of [Russia] were merged with others since 2005...
+ # Some names were changed, no big deal, except for one instance: a new name.
+ # YAK/YAKST: UTC+9 Zabajkal'skij kraj.
+ 
+@@ -2635,6 +2630,28 @@
+ # of March at 3am the time is changing to 4am and each last Sunday of
+ # October the time at 4am is changing to 3am"
+ 
++# From Alexander Krivenyshev (2011-09-20):
++# On September 20, 2011 the deputies of the Verkhovna Rada agreed to
++# abolish the transfer clock to winter time.
++#
++# Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
++# approval from 266 deputies.
++#
++# Ukraine abolishes transter back to the winter time (in Russian)
++# <a href="http://news.mail.ru/politics/6861560/">
++# http://news.mail.ru/politics/6861560/
++# </a>
++#
++# The Ukrainians will no longer change the clock (in Russian)
++# <a href="http://www.segodnya.ua/news/14290482.html">
++# http://www.segodnya.ua/news/14290482.html
++# </a>
++#
++# Deputies cancelled the winter time (in Russian)
++# <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/">
++# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
++# </a>
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Most of Ukraine since 1970 has been like Kiev.
+ # "Kyiv" is the transliteration of the Ukrainian name, but
+@@ -2648,7 +2665,8 @@
+ 			3:00	-	MSK	1990 Jul  1 2:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT
++			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
++			3:00	-	FET # Further-eastern European Time
+ # Ruthenia used CET 1990/1991.
+ # "Uzhhorod" is the transliteration of the Ukrainian name, but
+ # "Uzhgorod" is more common in English.
+@@ -2662,7 +2680,8 @@
+ 			1:00	-	CET	1991 Mar 31 3:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT
++			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
++			3:00	-	FET # Further-eastern European Time
+ # Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+ # "Zaporizhia" is the transliteration of the Ukrainian name, but
+ # "Zaporozh'ye" is more common in English.  Use the common English
+@@ -2675,7 +2694,8 @@
+ 			1:00	C-Eur	CE%sT	1943 Oct 25
+ 			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT
++			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
++			3:00	-	FET # Further-eastern European Time
+ # Central Crimea used Moscow time 1994/1997.
+ Zone Europe/Simferopol	2:16:24 -	LMT	1880
+ 			2:16	-	SMT	1924 May  2 # Simferopol Mean T
+@@ -2700,7 +2720,8 @@
+ # Assume it happened in March by not changing the clocks.
+ 			3:00	Russia	MSK/MSD	1997
+ 			3:00	-	MSK	1997 Mar lastSun 1:00u
+-			2:00	EU	EE%sT
++			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
++			3:00	-	FET # Further-eastern European Time
+ 
+ ###############################################################################
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/factory
++++ openjdk/jdk/make/sun/javazic/tzdata/factory
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)factory	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)iso3166.tab	8.11
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ # ISO 3166 alpha-2 country codes
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)leapseconds	8.11
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)northamerica	8.49
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -505,7 +483,7 @@
+ 			 -8:00	US	P%sT	1983 Oct 30 2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+-Zone America/Sitka	 -14:58:47 -	LMT	1867 Oct 18
++Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
+ 			 -9:01:13 -	LMT	1900 Aug 20 12:00
+ 			 -8:00	-	PST	1942
+ 			 -8:00	US	P%sT	1946
+@@ -1190,31 +1168,21 @@
+ # INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
+ # at 00:01 local time.  For now, assume it started in 1987.
+ 
+-# From Michael Pelley (2011-08-05):
+-# The Government of Newfoundland and Labrador has pending changes to
+-# modify the hour for daylight savings time to come into effect in
+-# November 2011. This modification would change the time from 12:01AM to
+-# 2:00AM on the dates of the switches of Daylight Savings Time to/from
+-# Standard Time.
+-#
+-# As a matter of reference, in Canada provinces have the authority of
+-# setting time zone information. The legislation has passed our
+-# legislative body (The House of Assembly) and is awaiting the
+-# proclamation to come into effect. You may find this information at:
+-# <a href="http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm">
+-# http://www.assembly.nl.ca/legislation/sr/lists/Proclamation.htm
+-# </a>
+-# and
+-# search within that web page for Standard Time (Amendment) Act. The Act
+-# may be found at:
+-# <a href="http://www.assembly.nl.ca/business/bills/Bill1106.htm">
+-# http://www.assembly.nl.ca/business/bills/Bill1106.htm
++# From Michael Pelley (2011-09-12):
++# We received today, Monday, September 12, 2011, notification that the
++# changes to the Newfoundland Standard Time Act have been proclaimed.
++# The change in the Act stipulates that the change from Daylight Savings
++# Time to Standard Time and from Standard Time to Daylight Savings Time
++# now occurs at 2:00AM.
++# ...
++# <a href="http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm">
++# http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
+ # </a>
+ # ...
+-# MICHAEL PELLEY | Manager of Enterprise Architecture - Solution Delivery
+-# Office of the Chief Information Officer Executive Council Government of
+-# Newfoundland & Labrador P.O. Box 8700, 40 Higgins Line, St. John's NL
+-# A1B 4J6
++# MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
++# Office of the Chief Information Officer
++# Executive Council
++# Government of Newfoundland & Labrador
+ 
+ Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
+ Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
+--- openjdk/jdk/make/sun/javazic/tzdata/pacificnew
++++ openjdk/jdk/make/sun/javazic/tzdata/pacificnew
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)pacificnew	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar87
++++ openjdk/jdk/make/sun/javazic/tzdata/solar87
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)solar87	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar88
++++ openjdk/jdk/make/sun/javazic/tzdata/solar88
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)solar88	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar89
++++ openjdk/jdk/make/sun/javazic/tzdata/solar89
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)solar89	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)southamerica	8.50
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -819,6 +797,26 @@
+ # <a href="http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html">
+ # http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+ # </a>
++#
++# From Alexander Krivenyshev (2011-10-04):
++# State Bahia will return to Daylight savings time this year after 8 years off.
++# The announcement was made by Governor Jaques Wagner in an interview to a 
++# television station in Salvador. 
++
++# In Portuguese:
++# <a href="http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html">
++# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
++# </a> and
++# <a href="http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html">
++# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
++# </a>
++
++# From Guilherme Bernardes Rodrigues (2011-10-07):
++# There is news in the media, however there is still no decree about it.
++# I just send a e-mail to Zulmira Brandão at
++# <a href="http://pcdsh01.on.br/">http://pcdsh01.on.br/</a> the
++# oficial agency about time in Brazil, and she confirmed that the old rule is
++# still in force.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ # Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
+@@ -1057,6 +1055,9 @@
+ Zone America/Bahia	-2:34:04 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	2003 Sep 24
+ 			-3:00	-	BRT
++# as noted above, not yet in operation.
++#			-3:00	-	BRT	2011 Oct 16
++#			-3:00	Brazil	BR%sT
+ #
+ # Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+ # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
+--- openjdk/jdk/make/sun/javazic/tzdata/systemv
++++ openjdk/jdk/make/sun/javazic/tzdata/systemv
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)systemv	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -1,27 +1,5 @@
+-#
+-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+-#  
+-# This code is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License version 2 only, as
+-# published by the Free Software Foundation.  Oracle designates this
+-# particular file as subject to the "Classpath" exception as provided
+-# by Oracle in the LICENSE file that accompanied this code.
+-#  
+-# This code is distributed in the hope that it will be useful, but WITHOUT
+-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+-# version 2 for more details (a copy is included in the LICENSE file that
+-# accompanied this code).
+-#  
+-# You should have received a copy of the GNU General Public License version
+-# 2 along with this work; if not, write to the Free Software Foundation,
+-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+-#  
+-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+-# or visit www.oracle.com if you need additional information or have any
+-# questions.
+-#
+ # <pre>
++# @(#)zone.tab	8.49
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+@@ -341,7 +319,8 @@
+ PM	+4703-05620	America/Miquelon
+ PN	-2504-13005	Pacific/Pitcairn
+ PR	+182806-0660622	America/Puerto_Rico
+-PS	+3130+03428	Asia/Gaza
++PS	+3130+03428	Asia/Gaza	Gaza Strip
++PS	+313200+0350542	Asia/Hebron	West Bank
+ PT	+3843-00908	Europe/Lisbon	mainland
+ PT	+3238-01654	Atlantic/Madeira	Madeira Islands
+ PT	+3744-02540	Atlantic/Azores	Azores
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -103,6 +103,8 @@
+                                      "Eastern Daylight Time", "EDT"};
+         String EST_NSW[] = new String[] {"Eastern Standard Time (New South Wales)", "EST",
+                                          "Eastern Summer Time (New South Wales)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Ghana Mean Time", "GMT",
+                                      "Ghana Summer Time", "GHST"};
+         String GAMBIER[] =  new String[] {"Gambier Time", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Tajikistan Summer Time", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Hovd Time", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Samara Summer Time", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Volgograd Summer Time", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -103,6 +103,8 @@
+                                      "\u00d6stliche Sommerzeit", "EDT"};
+         String EST_NSW[] = new String[] {"\u00d6stliche Normalzeit (New South Wales)", "EST",
+                                          "\u00d6stliche Sommerzeit (New South Wales)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Ghanaische Normalzeit", "GMT",
+                                       "Ghanaische Sommerzeit", "GHST"};
+         String GAMBIER[] =  new String[] {"Gambier Zeit", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Tadschikische Sommerzeit", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Hovd Zeit", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Samarische Sommerzeit", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Wolgograder Sommerzeit", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -103,6 +103,8 @@
+                                      "Hora de verano Oriental", "EDT"};
+         String EST_NSW[] = new String[] {"Hora est\u00e1ndar Oriental (Nueva Gales del Sur)", "EST",
+                                          "Hora de verano Oriental (Nueva Gales del Sur)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Hora central de Ghana", "GMT",
+                                       "Hora de verano de Ghana", "GHST"};
+         String GAMBIER[] =  new String[] {"Hora de Gambier", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Hora de verano de Tajikist\u00e1n", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Hora de Hovd", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Hora de verano de Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Hora de verano de Volgogrado", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -103,6 +103,8 @@
+                                      "Heure avanc\u00e9e de l'Est", "EDT"} ;
+         String EST_NSW[] = new String[] {"Heure normale de l'Est (Nouvelle-Galles du Sud)", "EST",
+                                          "Heure d'\u00e9t\u00e9 de l'Est (Nouvelle-Galles du Sud)", "EST"} ;
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Heure du Ghana", "GMT",
+                                       "Heure d'\u00e9t\u00e9 du Ghana", "GHST"};
+         String GAMBIER[] =  new String[] {"Heure de Gambi", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Heure d'\u00e9t\u00e9 du Tadjikistan", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Heure de Hovd", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Heure d'\u00e9t\u00e9 de Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -103,6 +103,8 @@
+                                      "Ora legale USA orientale", "EDT"};
+         String EST_NSW[] = new String[] {"Ora solare dell'Australia orientale (Nuovo Galles del Sud)", "EST",
+                                          "Ora estiva dell'Australia orientale (Nuovo Galles del Sud)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Ora media del Ghana", "GMT",
+                                       "Ora legale del Ghana", "GHST"};
+         String GAMBIER[] =  new String[] {"Ora di Gambier", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Ora estiva del Tagikistan", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Ora di Hovd", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Ora estiva di Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Ora estiva di Volgograd", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -103,6 +103,8 @@
+                                      "\u6771\u90e8\u590f\u6642\u9593", "EDT"};
+         String EST_NSW[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642 (\u30cb\u30e5\u30fc\u30b5\u30a6\u30b9\u30a6\u30a7\u30fc\u30eb\u30ba)", "EST",
+                                          "\u6771\u90e8\u590f\u6642\u9593 (\u30cb\u30e5\u30fc\u30b5\u30a6\u30b9\u30a6\u30a7\u30fc\u30eb\u30ba)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"\u30ac\u30fc\u30ca\u6a19\u6e96\u6642", "GMT",
+                                      "\u30ac\u30fc\u30ca\u590f\u6642\u9593", "GHST"};
+         String GAMBIER[] =  new String[] {"\u30ac\u30f3\u30d3\u30a2\u6642\u9593", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"\u30db\u30d6\u30c9\u6642\u9593", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u590f\u6642\u9593", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -103,6 +103,8 @@
+                                      "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EDT"};
+         String EST_NSW[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc(\ub274 \uc0ac\uc6b0\uc2a4 \uc6e8\uc77c\uc988)", "EST",
+                                          "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ub274 \uc0ac\uc6b0\uc2a4 \uc6e8\uc77c\uc988)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"\uac00\ub098 \ud45c\uc900\uc2dc", "GMT",
+                                      "\uac00\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GHST"};
+         String GAMBIER[] =  new String[] {"\uac10\ube44\uc544 \uc2dc\uac04", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Hovd \uc2dc\uac04", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "\ubcfc\uace0\uadf8\ub77c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -103,6 +103,8 @@
+                                      "Eastern, sommartid", "EDT"};
+         String EST_NSW[] = new String[] {"Eastern, normaltid (Nya Sydwales)", "EST",
+                                          "Eastern, sommartid (Nya Sydwales)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Ghana, normaltid", "GMT",
+                                       "Ghana, sommartid", "GHST"};
+         String GAMBIER[] =  new String[] {"Gambier, normaltid", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "Tadzjikistan, sommartid", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"Hovd, normaltid", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "Samara, sommartid", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "Volgograd, sommartid", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -103,6 +103,8 @@
+                                      "\u4e1c\u90e8\u590f\u4ee4\u65f6", "EDT"};
+         String EST_NSW[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u65b0\u5357\u5a01\u5c14\u65af\uff09", "EST",
+                                          "\u4e1c\u90e8\u590f\u4ee4\u65f6\uff08\u65b0\u5357\u5a01\u5c14\u65af\uff09", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"\u52a0\u7eb3\u65f6\u95f4", "GMT",
+                                      "\u52a0\u7eb3\u590f\u4ee4\u65f6", "GHST"};
+         String GAMBIER[] =  new String[] {"\u5188\u6bd4\u4e9a\u65f6\u95f4", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "\u5854\u5409\u514b\u65af\u5766\u590f\u4ee4\u65f6", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"\u79d1\u5e03\u591a\u65f6\u95f4", "HOVT",
+@@ -674,9 +677,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -684,7 +686,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -697,14 +699,14 @@
+                                             "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -713,7 +715,7 @@
+                                                "\u4f0f\u5c14\u52a0\u683c\u52d2\u590f\u4ee4\u65f6", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -103,6 +103,8 @@
+                                      "\u6771\u65b9\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "EDT"};
+         String EST_NSW[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593 (\u65b0\u5357\u5a01\u723e\u65af)", "EST",
+                                          "\u6771\u65b9\u590f\u4ee4\u6642\u9593 (\u65b0\u5357\u5a01\u723e\u65af)", "EST"};
++        String FET[] = new String[] {"Further-eastern European Time", "FET",
++                                     "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"\u8fe6\u7d0d\u5e73\u5747\u6642\u9593", "GMT",
+                                       "\u8fe6\u7d0d\u590f\u4ee4\u6642\u9593", "GHST"};
+         String GAMBIER[] =  new String[] {"\u7518\u6bd4\u723e\u6642\u9593", "GAMT",
+@@ -511,6 +513,7 @@
+                                             "\u5854\u5409\u514b\u590f\u4ee4\u6642\u9593", "TJST"}},
+             {"Asia/Gaza", EET},
+             {"Asia/Harbin", CTT},
++            {"Asia/Hebron", EET},
+             {"Asia/Ho_Chi_Minh", ICT},
+             {"Asia/Hong_Kong", HKT},
+             {"Asia/Hovd", new String[] {"\u4faf\u5fb7 (Hovd) \u6642\u9593", "HOVT",
+@@ -675,9 +678,8 @@
+             {"Europe/Isle_of_Man", GMTBST},
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+-            {"Europe/Kaliningrad", new String[] {"Kaliningrad Time", "KALT",
+-                                                 "Kaliningrad Summer Time", "KALST"}},
+-            {"Europe/Kiev", EET},
++            {"Europe/Kaliningrad", FET},
++            {"Europe/Kiev", FET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -685,7 +687,7 @@
+             {"Europe/Madrid", CET},
+             {"Europe/Malta", CET},
+             {"Europe/Mariehamn", EET},
+-            {"Europe/Minsk", EET},
++            {"Europe/Minsk", FET},
+             {"Europe/Monaco", CET},
+             {"Europe/Moscow", MSK},
+             {"Europe/Nicosia", EET},
+@@ -698,14 +700,14 @@
+                                             "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", EET},
++            {"Europe/Simferopol", FET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", EET},
++            {"Europe/Uzhgorod", FET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -714,7 +716,7 @@
+                                                "\u4f0f\u723e\u52a0\u683c\u52d2\u590f\u4ee4\u6642\u9593", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", EET},
++            {"Europe/Zaporozhye", FET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7103405-correct_display_names.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,118 @@
+# HG changeset patch
+# User asaha
+# Date 1319245792 25200
+# Node ID 48463dbf345cda1cdb7ff53e2d24f3827ae85d20
+# Parent  ca52af5acd261b790aa40a904af96d4f55d780d9
+7103405: Correct display names for Pacific/Apia timezone
+Reviewed-by: coffeys, peytoia
+
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Samoa Standard Time", "SST",
+                                        "Samoa Daylight Time", "SDT"};
+         String WST_SAMOA[] = new String[] {"West Samoa Time", "WST",
+-                                           "West Samoa Summer Time", "WSST"};
++                                           "West Samoa Daylight Time", "WSDT"};
+         String ChST[] = new String[] {"Chamorro Standard Time", "ChST",
+                                       "Chamorro Daylight Time", "ChDT"};
+         String VICTORIA[] = new String[] {"Eastern Standard Time (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
+                                        "Samoa Sommerzeit", "SDT"};
+         String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WST",
+-                                           "West Samoa Sommerzeit", "WSST"};
++                                           "West Samoa Sommerzeit", "WSDT"};
+         String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
+                       "Chamorro Sommerzeit", "ChDT"};
+         String VICTORIA[] = new String[] {"\u00d6stliche Normalzeit (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
+                                        "Hora de verano de Samoa", "SDT"};
+         String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WST",
+-                                           "Hora de verano de Samoa Occidental", "WSST"};
++                                           "Hora de verano de Samoa Occidental", "WSDT"};
+         String ChST[] = new String[] {"Hora est\u00e1ndar de Chamorro", "ChST",
+                                       "Hora de verano de Chamorro", "ChDT"};
+         String VICTORIA[] = new String[] {"Hora est\u00e1ndar del Este (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
+                                        "Heure avanc\u00e9e de Samoa", "SDT"};
+         String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
+-                                           "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSST"} ;
++                                           "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT"} ;
+         String ChST[] = new String[] {"Heure normale des \u00eeles Mariannes", "ChST",
+                       "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT"};
+         String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
+                                        "Ora legale di Samoa", "SDT"};
+         String WST_SAMOA[] = new String[] {"Ora di Samoa", "WST",
+-                                           "Ora estiva di Samoa", "WSST"};
++                                           "Ora estiva di Samoa", "WSDT"};
+         String ChST[] = new String[] {"Ora standard di Chamorro", "ChST",
+                               "Ora legale di Chamorro", "ChDT"};
+         String VICTORIA[] = new String[] {"Ora orientale standard (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
+                                        "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u30b5\u30e2\u30a2\u6642\u9593", "WST",
+-                                           "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSST"};
++                                           "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT"};
+         String ChST[] = new String[] {"\u30b0\u30a2\u30e0\u6a19\u6e96\u6642", "ChST",
+                                       "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT"};
+         String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642 (\u30d3\u30af\u30c8\u30ea\u30a2)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
+                                        "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT"};
+         String WST_SAMOA[] = new String[] {"\uc11c\uc0ac\ubaa8\uc544 \uc2dc\uac04", "WST",
+-                                           "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSST"};
++                                           "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT"};
+         String ChST[] = new String[] {"\ucc28\ubaa8\ub85c \ud45c\uc900\uc2dc", "ChST",
+                                       "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT"};
+         String VICTORIA[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc(\ube45\ud1a0\ub9ac\uc544)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
+                                        "Samoa, sommartid", "SDT"};
+         String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
+-                                           "V\u00e4stsamoansk sommartid", "WSST"};
++                                           "V\u00e4stsamoansk sommartid", "WSDT"};
+         String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
+                                       "Chamorro, sommartid", "ChDT"};
+         String VICTORIA[] = new String[] {"\u00d6stlig normaltid (Victoria)", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"\u8428\u6469\u4e9a\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "SST",
+                                        "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WST",
+-                                           "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSST"};
++                                           "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT"};
+         String ChST[] = new String[] {"Chamorro \u6807\u51c6\u65f6\u95f4", "ChST",
+                                       "Chamorro \u590f\u4ee4\u65f6", "ChDT"};
+         String VICTORIA[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u7ef4\u591a\u5229\u4e9a\uff09", "EST",
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -188,7 +188,7 @@
+         String SAMOA[] = new String[] {"\u85a9\u6469\u4e9e\u6a19\u6e96\u6642\u9593", "SST",
+                                        "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u85a9\u6469\u4e9e\u6642\u9593", "WST",
+-                                           "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSST"};
++                                           "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT"};
+         String ChST[] = new String[] {"\u67e5\u83ab\u6d1b\u6a19\u6e96\u6642\u9593", "ChST",
+                                      "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT"};
+         String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642\u9593 (\u7dad\u591a\u5229\u4e9e\u90a6)", "EST",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7104126-headers_tzdata.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,530 @@
+# HG changeset patch
+# User asaha
+# Date 1319476295 25200
+# Node ID b5090771e19b2b20670bef60a84de95797cb01be
+# Parent  48463dbf345cda1cdb7ff53e2d24f3827ae85d20
+7104126: Insert openjdk copyright header back into TZdata files
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)africa	8.33
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)antarctica	8.9
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # @(#)asia	8.68
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)australasia	8.27
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/backward
++++ openjdk/jdk/make/sun/javazic/tzdata/backward
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)backward	8.9
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/etcetera
++++ openjdk/jdk/make/sun/javazic/tzdata/etcetera
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)etcetera	8.3
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)europe	8.38
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/factory
++++ openjdk/jdk/make/sun/javazic/tzdata/factory
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)factory	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)iso3166.tab	8.11
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)leapseconds	8.11
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)northamerica	8.49
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/pacificnew
++++ openjdk/jdk/make/sun/javazic/tzdata/pacificnew
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)pacificnew	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/solar87
++++ openjdk/jdk/make/sun/javazic/tzdata/solar87
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)solar87	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/solar88
++++ openjdk/jdk/make/sun/javazic/tzdata/solar88
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)solar88	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/solar89
++++ openjdk/jdk/make/sun/javazic/tzdata/solar89
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)solar89	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)southamerica	8.50
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/systemv
++++ openjdk/jdk/make/sun/javazic/tzdata/systemv
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)systemv	8.2
+ # This file is in the public domain, so clarified as of
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -1,3 +1,26 @@
++#
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#  
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.  Oracle designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Oracle in the LICENSE file that accompanied this code.
++#  
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#  
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#  
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
+ # <pre>
+ # @(#)zone.tab	8.49
+ # This file is in the public domain, so clarified as of
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7158483-tzdata2012c.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,1436 @@
+# HG changeset patch
+# User peytoia
+# Date 1333444888 -32400
+# Node ID 5683b3f7f8cc58746a2983ee6294b62ccdfa159c
+# Parent  e15562835a5e91f0bca6a088e58970c3c1c3dc3f
+7158483: (tz) Support tzdata2012c
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2011l
++tzdata2012c
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)africa	8.33
++# @(#)africa	8.35
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -791,6 +791,37 @@
+ # wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
+ # also been like that in the past.
+ 
++# From Alexander Krivenyshev (2012-03-09):
++# According to Infom&eacute;diaire web site from Morocco (infomediaire.ma),
++# on March 9, 2012, (in French) Heure l&eacute;gale:
++# Le Maroc adopte officiellement l'heure d'&eacute;t&eacute;
++# <a href="http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9">
++# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
++# </a>
++# Governing Council adopted draft decree, that Morocco DST starts on
++# the last Sunday of March (March 25, 2012) and ends on
++# last Sunday of September (September 30, 2012)
++# except the month of Ramadan.
++# or (brief)
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_morocco06.html">
++# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
++# </a>
++
++# From Arthur David Olson (2012-03-10):
++# The infomediaire.ma source indicates that the system is to be in
++# effect every year. It gives 03H00 as the "fall back" time of day;
++# it lacks a "spring forward" time of day; assume 2:00 XXX.
++# Wait on specifying the Ramadan exception for details about
++# start date, start time of day, end date, and end time of day XXX.
++
++# From Christophe Tropamer (2012-03-16):
++# Seen Morocco change again:
++# <a href="http://www.le2uminutes.com/actualite.php">
++# http://www.le2uminutes.com/actualite.php
++# </a>
++# "...&agrave; partir du dernier dimance d'avril et non fins mars,
++# comme annonc&eacute; pr&eacute;c&eacute;demment."
++
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+ Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
+@@ -816,6 +847,9 @@
+ Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
+ Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+ Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
++Rule	Morocco	2012	max	-	Apr	 lastSun 2:00	1:00	S
++Rule	Morocco	2012	max	-	Sep	 lastSun 3:00	0	-
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+ 			 0:00	Morocco	WE%sT	1984 Mar 16
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)antarctica	8.9
++# @(#)antarctica	8.10
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -65,8 +65,19 @@
+ Rule	ChileAQ	1998	only	-	Mar	Sun>=9	3:00u	0	-
+ Rule	ChileAQ	1998	only	-	Sep	27	4:00u	1:00	S
+ Rule	ChileAQ	1999	only	-	Apr	 4	3:00u	0	-
+-Rule	ChileAQ	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
+-Rule	ChileAQ	2000	max	-	Mar	Sun>=9	3:00u	0	-
++Rule	ChileAQ	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
++Rule	ChileAQ	2000	2007	-	Mar	Sun>=9	3:00u	0	-
++# N.B.: the end of March 29 in Chile is March 30 in Universal time,
++# which is used below in specifying the transition.
++Rule	ChileAQ	2008	only	-	Mar	30	3:00u	0	-
++Rule	ChileAQ	2009	only	-	Mar	Sun>=9	3:00u	0	-
++Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
++Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
++Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
++Rule	ChileAQ	2012	only	-	Apr	Sun>=23	3:00u	0	-
++Rule	ChileAQ	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
++Rule	ChileAQ	2013	max	-	Mar	Sun>=9	3:00u	0	-
++Rule	ChileAQ	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
+ 
+ # These rules are stolen from the `australasia' file.
+ Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
+@@ -165,12 +176,16 @@
+ 						# Western (Aus) Standard Time
+ 			11:00	-	CAST	2010 Mar 5 2:00
+ 						# Casey Time
++			8:00	-	WST	2011 Oct 28 2:00
++			11:00	-	CAST	2012 Feb 21 17:00u
+ 			8:00	-	WST
+ Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
+ 			7:00	-	DAVT	1964 Nov # Davis Time
+ 			0	-	zzz	1969 Feb
+ 			7:00	-	DAVT	2009 Oct 18 2:00
+ 			5:00	-	DAVT	2010 Mar 10 20:00u
++			7:00	-	DAVT	2011 Oct 28 2:00
++			5:00	-	DAVT	2012 Feb 21 20:00u
+ 			7:00	-	DAVT
+ Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
+ 			6:00	-	MAWT	2009 Oct 18 2:00
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -21,7 +21,8 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-# @(#)asia	8.68
++# <pre>
++# @(#)asia	8.73
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -100,10 +101,6 @@
+ Rule RussiaAsia	1993	1995	-	Sep	lastSun	 2:00s	0	-
+ Rule RussiaAsia	1996	max	-	Oct	lastSun	 2:00s	0	-
+ 
+-# From Arthur David Olson (2011-06-15):
+-# While Russia abandoned DST in 2011, Armenia may choose to
+-# follow Russia's "old" rules.
+-
+ # Afghanistan
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Kabul	4:36:48 -	LMT	1890
+@@ -120,6 +117,21 @@
+ # in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that
+ # Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
+ # but started switching at 3:00s in 1998.
++
++# From Arthur David Olson (2011-06-15):
++# While Russia abandoned DST in 2011, Armenia may choose to
++# follow Russia's "old" rules.
++
++# From Alexander Krivenyshev (2012-02-10):
++# According to News Armenia, on Feb 9, 2012,
++# http://newsarmenia.ru/society/20120209/42609695.html
++# 
++# The Armenia National Assembly adopted final reading of Amendments to the
++# Law "On procedure of calculation time on the territory of the Republic of
++# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
++# or
++# (brief)
++# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
+ 			3:00	-	YERT	1957 Mar    # Yerevan Time
+@@ -127,7 +139,8 @@
+ 			3:00	1:00	YERST	1991 Sep 23 # independence
+ 			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
+ 			4:00	-	AMT	1997
+-			4:00 RussiaAsia	AM%sT
++			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
++			4:00	-	AMT
+ 
+ # Azerbaijan
+ # From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
+@@ -2258,6 +2271,29 @@
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
+ # </a>
+ 
++# From Steffen Thorsen (2012-03-26):
++# Palestinian news sources tell that both Gaza and West Bank will start DST
++# on Friday (Thursday midnight, 2012-03-29 24:00).
++# Some of many sources in Arabic:
++# <a href="http://www.samanews.com/index.php?act=Show&id=122638">
++# http://www.samanews.com/index.php?act=Show&id=122638
++# </a>
++#
++# <a href="http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html">
++# http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
++# </a>
++#
++# Our brief summary:
++# <a href="http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html">
++# http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
++# </a>
++
++# From Arthur David Olson (2012-03-27):
++# The timeanddate article for 2012 says that "the end date has not yet been
++# announced" and that "Last year, both...paused daylight saving time during...
++# Ramadan. It is not yet known [for] 2012."
++# For now, assume both switch back on the last Friday in September. XXX
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
+ Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
+@@ -2290,6 +2326,8 @@
+ 			2:00	Jordan	EE%sT	1999
+ 			2:00 Palestine	EE%sT	2011 Apr  2 12:01
+ 			2:00	1:00	EEST	2011 Aug  1
++			2:00	-	EET	2012 Mar 30
++			2:00	1:00	EEST	2012 Sep 28
+ 			2:00	-	EET
+ 
+ Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
+@@ -2303,6 +2341,8 @@
+ 			2:00	1:00	EEST	2011 Aug  1
+ 			2:00	-	EET	2011 Aug 30
+ 			2:00	1:00	EEST	2011 Sep 30 3:00
++			2:00	-	EET	2012 Mar 30
++			2:00	1:00	EEST	2012 Sep 28 3:00
+ 			2:00	-	EET
+ 
+ # Paracel Is
+@@ -2594,10 +2634,28 @@
+ # http://sns.sy/sns/?path=news/read/11421 (Arabic)
+ # </a>
+ 
++# From Steffen Thorsen (2012-03-26):
++# Today, Syria's government announced that they will start DST early on Friday
++# (00:00). This is a bit earlier than the past two years.
++#
++# From Syrian Arab News Agency, in Arabic:
++# <a href="http://www.sana.sy/ara/2/2012/03/26/408215.htm">
++# http://www.sana.sy/ara/2/2012/03/26/408215.htm
++# </a>
++#
++# Our brief summary:
++# <a href="http://www.timeanddate.com/news/time/syria-dst-2012.html">
++# http://www.timeanddate.com/news/time/syria-dst-2012.html
++# </a>
++
++# From Arthur David Olson (2012-03-27):
++# Assume last Friday in March going forward XXX.
++
+ Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
+ Rule	Syria	2008	only	-	Nov	1	0:00	0	-
+ Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
+-Rule	Syria	2010	max	-	Apr	Fri>=1	0:00	1:00	S
++Rule	Syria	2010	2011	-	Apr	Fri>=1	0:00	1:00	S
++Rule	Syria	2012	max	-	Mar	lastFri	0:00	1:00	S
+ Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)australasia	8.27
++# @(#)australasia	8.30
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -331,6 +331,20 @@
+ # advance at 2am to 3am on October 23, 2011 and one hour back at 3am to 
+ # 2am on February 26 next year.
+ 
++# From Ken Rylander (2011-10-24)
++# Another change to the Fiji DST end date. In the TZ database the end date for
++# Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
++#
++# <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155">
++# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
++# </a>
++# states:
++#
++# The end of daylight saving scheduled initially for the 26th of February 2012
++# has been brought forward to the 22nd of January 2012.
++# The commencement of daylight saving will remain unchanged and start
++# on the  23rd of October, 2011.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+@@ -339,7 +353,7 @@
+ Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+ Rule	Fiji	2011	only	-	Oct	23	2:00	1:00	S
+-Rule	Fiji	2012	only	-	Feb	26	3:00	0	-
++Rule	Fiji	2012	only	-	Jan	22	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+@@ -625,6 +639,11 @@
+ # Dateline Change skip Friday 30th Dec 2011
+ # Thursday 29th December 2011	23:59:59 Hours
+ # Saturday 31st December 2011	00:00:00 Hours
++#
++# Clarification by Tim Parenti (2012-01-03):
++# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
++# seasons, there is not yet any indication that this trend will continue on
++# a regular basis. For now, we have explicitly listed the transitions below.
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+@@ -642,9 +661,28 @@
+ 			11:00	-	SBT	# Solomon Is Time
+ 
+ # Tokelau Is
++#
++# From Gwillim Law (2011-12-29)
++# A correspondent informed me that Tokelau, like Samoa, will be skipping
++# December 31 this year, thereby changing its time zone from UTC-10 to
++# UTC+14. When I tried to verify this statement, I found a confirming
++# article in Time magazine online
++# <a href="http://www.time.com/time/world/article/0,8599,2103243,00.html">
++# (http://www.time.com/time/world/article/0,8599,2103243,00.html).
++# </a>
++#
++# From Jonathan Leffler (2011-12-29)
++# Information from the BBC to the same effect:
++# <a href="http://www.bbc.co.uk/news/world-asia-16351377">
++# http://www.bbc.co.uk/news/world-asia-16351377
++# </a>
++#
++# Patch supplied by Tim Parenti (2011-12-29)
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+-			-10:00	-	TKT	# Tokelau Time
++			-10:00	-	TKT 2011 Dec 30	# Tokelau Time
++			14:00	-	TKT
+ 
+ # Tonga
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+--- openjdk/jdk/make/sun/javazic/tzdata/backward
++++ openjdk/jdk/make/sun/javazic/tzdata/backward
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)backward	8.9
++# @(#)backward	8.11
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)europe	8.38
++# @(#)europe	8.41
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -234,9 +234,15 @@
+ # the history of summer time legislation in the United Kingdom.
+ # Since 1998 Joseph S. Myers has been updating
+ # and extending this list, which can be found in
+-# <a href="http://student.cusu.cam.ac.uk/~jsm28/british-time/">
++# http://student.cusu.cam.ac.uk/~jsm28/british-time/
++# <a href="http://www.polyomino.org.uk/british-time/">
+ # History of legal time in Britain
+ # </a>
++# Rob Crowther (2012-01-04) reports that that URL no longer
++# exists, and the article can now be found at:
++# <a href="http://www.polyomino.org.uk/british-time/">
++# http://www.polyomino.org.uk/british-time/
++# </a>
+ 
+ # From Joseph S. Myers (1998-01-06):
+ #
+@@ -1174,10 +1180,10 @@
+ # write that they were used in Monaco and in many French locations.
+ # Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+ # Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+-# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes,
++# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
+ # Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+ # Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
+-# Dole, Morez, St-Claude, and Collognes (Haute-Savioe).
++# Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
+ Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
+ # Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+ # but go with Denis Excoffier (1997-12-12),
+@@ -1678,6 +1684,41 @@
+ # But [two people] separately reported via
+ # Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+ # The Tiraspol entry has therefore been removed for now.
++#
++# From Alexander Krivenyshev (2011-10-17):
++# Pridnestrovian Moldavian Republic (PMR, also known as
++# "Pridnestrovie") has abolished seasonal clock change (no transition
++# to the Winter Time).
++#
++# News (in Russian):
++# <a href="http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html">
++# http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
++# </a>
++#
++# <a href="http://www.allmoldova.com/moldova-news/1249064116.html">
++# http://www.allmoldova.com/moldova-news/1249064116.html
++# </a>
++#
++# The substance of this change (reinstatement of the Tiraspol entry)
++# is from a patch from Petr Machata (2011-10-17)
++#
++# From Tim Parenti (2011-10-19)
++# In addition, being situated at +4651+2938 would give Tiraspol
++# a pre-1880 LMT offset of 1:58:32.
++#
++# (which agrees with the earlier entry that had been removed)
++#
++# From Alexander Krivenyshev (2011-10-26)
++# NO need to divide Moldova into two timezones at this point.
++# As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own
++# decision to abolish DST this winter. 
++# Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
++# Tiraspol will go back to winter time on October 30, 2011.
++# News from Moldova (in russian):
++# <a href="http://ru.publika.md/link_317061.html">
++# http://ru.publika.md/link_317061.html
++# </a>
++
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Europe/Chisinau	1:55:20 -	LMT	1880
+@@ -2674,6 +2715,28 @@
+ # <a href="http://www.pravda.com.ua/rus/news/2011/09/20/6600616/">
+ # http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
+ # </a>
++#
++# From Philip Pizzey (2011-10-18):
++# Today my Ukrainian colleagues have informed me that the
++# Ukrainian parliament have decided that they will go to winter
++# time this year after all.
++#
++# From Udo Schwedt (2011-10-18):
++# As far as I understand, the recent change to the Ukranian time zone 
++# (Europe/Kiev) to introduce permanent daylight saving time (similar
++# to Russia) was reverted today:
++#
++# <a href="http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995">
++# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
++# </a>
++#
++# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
++# The law documents themselves are at
++#
++# <a href="http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484">
++# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
++# </a>
++
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ # Most of Ukraine since 1970 has been like Kiev.
+@@ -2688,8 +2751,7 @@
+ 			3:00	-	MSK	1990 Jul  1 2:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
+-			3:00	-	FET # Further-eastern European Time
++			2:00	EU	EE%sT
+ # Ruthenia used CET 1990/1991.
+ # "Uzhhorod" is the transliteration of the Ukrainian name, but
+ # "Uzhgorod" is more common in English.
+@@ -2703,8 +2765,7 @@
+ 			1:00	-	CET	1991 Mar 31 3:00
+ 			2:00	-	EET	1992
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
+-			3:00	-	FET # Further-eastern European Time
++			2:00	EU	EE%sT
+ # Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+ # "Zaporizhia" is the transliteration of the Ukrainian name, but
+ # "Zaporozh'ye" is more common in English.  Use the common English
+@@ -2717,8 +2778,7 @@
+ 			1:00	C-Eur	CE%sT	1943 Oct 25
+ 			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
+ 			2:00	E-Eur	EE%sT	1995
+-			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
+-			3:00	-	FET # Further-eastern European Time
++			2:00	EU	EE%sT
+ # Central Crimea used Moscow time 1994/1997.
+ Zone Europe/Simferopol	2:16:24 -	LMT	1880
+ 			2:16	-	SMT	1924 May  2 # Simferopol Mean T
+@@ -2743,8 +2803,7 @@
+ # Assume it happened in March by not changing the clocks.
+ 			3:00	Russia	MSK/MSD	1997
+ 			3:00	-	MSK	1997 Mar lastSun 1:00u
+-			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
+-			3:00	-	FET # Further-eastern European Time
++			2:00	EU	EE%sT
+ 
+ ###############################################################################
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)leapseconds	8.11
++# @(#)leapseconds	8.13
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -71,40 +71,54 @@
+ Leap	1998	Dec	31	23:59:60	+	S
+ Leap	2005	Dec	31	23:59:60	+	S
+ Leap	2008	Dec	31	23:59:60	+	S
++Leap	2012	Jun	30	23:59:60	+	S
+ 
+ # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
+ #
+ # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
+ #
++#
+ # SERVICE DE LA ROTATION TERRESTRE
+ # OBSERVATOIRE DE PARIS
+ # 61, Av. de l'Observatoire 75014 PARIS (France)
+-# Tel.      : 33 (0) 1 40 51 22 29
++# Tel.      : 33 (0) 1 40 51 22 26
+ # FAX       : 33 (0) 1 40 51 22 91
+-# Internet  : services.iers@obspm.fr
++# e-mail    : (E-Mail Removed)
++# http://hpiers.obspm.fr/eop-pc
+ #
+-# Paris, 2 February 2011
++# Paris, 5 January 2012
+ #
+-# Bulletin C 41
++#
++# Bulletin C 43
+ #
+ # To authorities responsible
+ # for the measurement and
+ # distribution of time
+ #
+-# INFORMATION ON UTC - TAI
+ #
+-# NO positive leap second will be introduced at the end of June 2011.
+-# The difference between Coordinated Universal Time UTC and the
+-# International Atomic Time TAI is :		
++# UTC TIME STEP
++# on the 1st of July 2012
+ #
+-# from 2009 January 1, 0h UTC, until further notice : UTC-TAI = -34 s
++#
++# A positive leap second will be introduced at the end of June 2012.
++# The sequence of dates of the UTC second markers will be:		
++# 		
++#                          2012 June 30,     23h 59m 59s
++#                          2012 June 30,     23h 59m 60s
++#                          2012 July  1,      0h  0m  0s
++#
++# The difference between UTC and the International Atomic Time TAI is:
++#
++# from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s
++# from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s
+ #
+ # Leap seconds can be introduced in UTC at the end of the months of December
+-# or June,  depending on the evolution of UT1-TAI. Bulletin C is mailed every
+-# six months, either to announce a time step in UTC, or to confirm that there
++# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
++# six months, either to announce a time step in UTC or to confirm that there
+ # will be no time step at the next possible date.
+ #
++#
+ # Daniel GAMBIS
+-# Head			
+-# Earth Orientation Center of the IERS
++# Head		
++# Earth Orientation Center of IERS
+ # Observatoire de Paris, France
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)northamerica	8.49
++# @(#)northamerica	8.54
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -1143,9 +1143,26 @@
+ # For now, assume all of DST-observing Canada will fall into line with the
+ # new US DST rules,
+ 
++# From Chris Walton (2011-12-01)
++# In the first of Tammy Hardwick's articles
++# <a href="http://www.ilovecreston.com/?p=articles&t=spec&ar=260">
++# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
++# </a>
++# she quotes the Friday November 1/1918 edition of the Creston Review.
++# The quote includes these two statements:
++# 'Sunday the CPR went back to the old system of time...'
++# '... The daylight saving scheme was dropped all over Canada at the same time,'
++# These statements refer to a transition from daylight time to standard time
++# that occurred nationally on Sunday October 27/1918.  This transition was
++# also documented in the Saturday October 26/1918 edition of the Toronto Star.
++
++# In light of that evidence, we alter the date from the earlier believed
++# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
++# than Thursday) in all Canadian rulesets.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
+-Rule	Canada	1918	only	-	Oct	31	2:00	0	S
++Rule	Canada	1918	only	-	Oct	27	2:00	0	S
+ Rule	Canada	1942	only	-	Feb	 9	2:00	1:00	W # War
+ Rule	Canada	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+ Rule	Canada	1945	only	-	Sep	30	2:00	0	S
+@@ -1668,7 +1685,7 @@
+ Rule	Winn	1916	only	-	Apr	23	0:00	1:00	D
+ Rule	Winn	1916	only	-	Sep	17	0:00	0	S
+ Rule	Winn	1918	only	-	Apr	14	2:00	1:00	D
+-Rule	Winn	1918	only	-	Oct	31	2:00	0	S
++Rule	Winn	1918	only	-	Oct	27	2:00	0	S
+ Rule	Winn	1937	only	-	May	16	2:00	1:00	D
+ Rule	Winn	1937	only	-	Sep	26	2:00	0	S
+ Rule	Winn	1942	only	-	Feb	 9	2:00	1:00	W # War
+@@ -1751,7 +1768,7 @@
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Regina	1918	only	-	Apr	14	2:00	1:00	D
+-Rule	Regina	1918	only	-	Oct	31	2:00	0	S
++Rule	Regina	1918	only	-	Oct	27	2:00	0	S
+ Rule	Regina	1930	1934	-	May	Sun>=1	0:00	1:00	D
+ Rule	Regina	1930	1934	-	Oct	Sun>=1	0:00	0	S
+ Rule	Regina	1937	1941	-	Apr	Sun>=8	0:00	1:00	D
+@@ -1788,7 +1805,7 @@
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Edm	1918	1919	-	Apr	Sun>=8	2:00	1:00	D
+-Rule	Edm	1918	only	-	Oct	31	2:00	0	S
++Rule	Edm	1918	only	-	Oct	27	2:00	0	S
+ Rule	Edm	1919	only	-	May	27	2:00	0	S
+ Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
+ Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
+@@ -1818,9 +1835,68 @@
+ # Dawson Creek uses MST.  Much of east BC is like Edmonton.
+ # Matthews and Vincent (1998) write that Creston is like Dawson Creek.
+ 
++# It seems though that (re: Creston) is not entirely correct:
++
++# From Chris Walton (2011-12-01):
++# There are two areas within the Canadian province of British Columbia
++# that do not currently observe daylight saving:
++# a) The Creston Valley (includes the town of Creston and surrounding area)
++# b) The eastern half of the Peace River Regional District
++# (includes the cities of Dawson Creek and Fort St. John)
++
++# Earlier this year I stumbled across a detailed article about the time
++# keeping history of Creston; it was written by Tammy Hardwick who is the
++# manager of the Creston & District Museum. The article was written in May 2009.
++# <a href="http://www.ilovecreston.com/?p=articles&t=spec&ar=260">
++# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
++# </a>
++# According to the article, Creston has not changed its clocks since June 1918.
++# i.e. Creston has been stuck on UTC-7 for 93 years.
++# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
++
++# Unfortunately the exact date for the time change in June 1918 remains
++# unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
++# ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
++# as plausible as any other date (in June).  She also said that after writing the
++# article she had discovered another time change in 1916; this is the subject
++# of another article which she wrote in October 2010.
++# <a href="http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56">
++# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
++# </a>
++
++# Here is a summary of the three clock change events in Creston's history:
++# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
++# Exact date unknown
++# 2. Oct 1916: switch to Pacific Standard Time (GMT-8) 
++# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
++# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
++# Exact date in June unknown; Sunday June 2 is a reasonable guess.
++# note#1:
++# On Oct 27/1918 when daylight saving ended in the rest of Canada,
++# Creston did not change its clocks.
++# note#2:
++# During WWII when the Federal Government legislated a mandatory clock change,
++# Creston did not oblige.
++# note#3:
++# There is no guarantee that Creston will remain on Mountain Standard Time
++# (UTC-7) forever.
++# The subject was debated at least once this year by the town Council.
++# <a href="http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html">
++# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
++# </a>
++
++# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
++# In Creston, that was handled by shifting the area to PST (-8:00) then applying
++# summer time to cause the offset to be -7:00, the same as it had been before
++# the change.  It can be argued that the timezone abbreviation during this
++# period should be PDT rather than MST, but that doesn't seem important enough
++# (to anyone) to further complicate the rules.
++
++# The transition dates (and times) are guesses.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
+-Rule	Vanc	1918	only	-	Oct	31	2:00	0	S
++Rule	Vanc	1918	only	-	Oct	27	2:00	0	S
+ Rule	Vanc	1942	only	-	Feb	 9	2:00	1:00	W # War
+ Rule	Vanc	1945	only	-	Aug	14	23:00u	1:00	P # Peace
+ Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
+@@ -1836,7 +1912,10 @@
+ 			-8:00	Canada	P%sT	1947
+ 			-8:00	Vanc	P%sT	1972 Aug 30 2:00
+ 			-7:00	-	MST
+-
++Zone America/Creston	-7:46:04 -	LMT	1884
++			-7:00	-	MST	1916 Oct 1
++			-8:00	-	PST	1918 Jun 2
++			-7:00	-	MST
+ 
+ # Northwest Territories, Nunavut, Yukon
+ 
+@@ -2713,6 +2792,34 @@
+ # <a href="http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html">
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
+ # </a>
++#
++# From Steffen Thorsen (2011-10-30)
++# Cuba will end DST two weeks later this year. Instead of going back 
++# tonight, it has been delayed to 2011-11-13 at 01:00.
++#
++# One source (Spanish)
++# <a href="http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html">
++# http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
++# </a>
++#
++# Our page:
++# <a href="http://www.timeanddate.com/news/time/cuba-time-changes-2011.html">
++# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
++# </a>
++# 
++# From Steffen Thorsen (2012-03-01)
++# According to Radio Reloj, Cuba will start DST on Midnight between March 
++# 31 and April 1.
++# 
++# Radio Reloj has the following info (Spanish):
++# <a href="http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril">
++# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
++# </a>
++#
++# Our info on it:
++# <a href="http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html">
++# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
++# </a>
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
+@@ -2744,12 +2851,15 @@
+ Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
+ Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
+ Rule	Cuba	2000	2004	-	Apr	Sun>=1	0:00s	1:00	D
+-Rule	Cuba	2006	max	-	Oct	lastSun	0:00s	0	S
++Rule	Cuba	2006	2010	-	Oct	lastSun	0:00s	0	S
+ Rule	Cuba	2007	only	-	Mar	Sun>=8	0:00s	1:00	D
+ Rule	Cuba	2008	only	-	Mar	Sun>=15	0:00s	1:00	D
+ Rule	Cuba	2009	2010	-	Mar	Sun>=8	0:00s	1:00	D
+ Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
+-Rule	Cuba	2012	max	-	Mar	Sun>=8	0:00s	1:00	D
++Rule	Cuba	2011	only	-	Nov	13	0:00s	0	S
++Rule	Cuba	2012	only	-	Apr	1	0:00s	1:00	D
++Rule	Cuba	2012	max	-	Oct	lastSun	0:00s	0	S
++Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	America/Havana	-5:29:28 -	LMT	1890
+@@ -2883,6 +2993,29 @@
+ # From Stephen Colebourne (2007-02-22):
+ # Some IATA info: Haiti won't be having DST in 2007.
+ 
++# From Steffen Thorsen (2012-03-11):
++# According to several news sources, Haiti will observe DST this year,
++# apparently using the same start and end date as USA/Canada.
++# So this means they have already changed their time.
++#
++# (Sources in French):
++# <a href="http://www.alterpresse.org/spip.php?article12510">
++# http://www.alterpresse.org/spip.php?article12510
++# </a>
++# <a href="http://radiovision2000haiti.net/home/?p=13253">
++# http://radiovision2000haiti.net/home/?p=13253
++# </a>
++#
++# Our coverage:
++# <a href="http://www.timeanddate.com/news/time/haiti-dst-2012.html">
++# http://www.timeanddate.com/news/time/haiti-dst-2012.html
++# </a>
++
++# From Arthur David Olson (2012-03-11):
++# The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to
++# 3:00 a.m. rather than the traditional Haitian jump at midnight.
++# Assume a US-style fall back as well XXX.
++# Do not yet assume that the change carries forward past 2012 XXX.
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
+@@ -2894,6 +3027,8 @@
+ Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
+ Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
+ Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
++Rule	Haiti	2012	only	-	Mar	Sun>=8	2:00	1:00	D
++Rule	Haiti	2012	only	-	Nov	Sun>=1	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Port-au-Prince -4:49:20 -	LMT	1890
+ 			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)southamerica	8.50
++# @(#)southamerica	8.53
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -841,6 +841,19 @@
+ # oficial agency about time in Brazil, and she confirmed that the old rule is
+ # still in force.
+ 
++# From Guilherme Bernardes Rodrigues (2011-10-14)
++# It's official, the President signed a decree that includes Bahia in summer
++# time.
++#	 [ and in a second message (same day): ]
++# I found the decree.
++#
++# DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
++# Link :
++# <a href="http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6">
++# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
++# </a>
++
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ # Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
+ # Decree <a href="http://pcdsh01.on.br/HV21896.htm">21,896</a> (1932-01-10)
+@@ -1077,10 +1090,8 @@
+ # of America/Salvador.
+ Zone America/Bahia	-2:34:04 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	2003 Sep 24
+-			-3:00	-	BRT
+-# as noted above, not yet in operation.
+-#			-3:00	-	BRT	2011 Oct 16
+-#			-3:00	Brazil	BR%sT
++			-3:00	-	BRT	2011 Oct 16
++			-3:00	Brazil	BR%sT
+ #
+ # Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+ # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
+@@ -1230,6 +1241,28 @@
+ # August, not in October as they have since 1968. This is a pilot plan
+ # which will be reevaluated in 2012.
+ 
++# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
++# As stated in the website of the Chilean Energy Ministry
++# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
++# The Chilean Government has decided to postpone the entrance into winter time
++# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
++# been yet formalized but it will within the next days.
++# Quote from the website communication:
++#
++# 6. For the year 2012, the dates of entry into winter time will be as follows:
++# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
++# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
++# of the same day.
++# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
++# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
++# 01:00 on September 2.
++#
++# Note that...this is yet another "temporary" change that will be reevaluated
++# AGAIN in 2013.
++
++# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
++# 'antarctica' file.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
+ Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
+@@ -1260,8 +1293,6 @@
+ Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
+ Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
+ Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
+-Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+-Rule	Chile	2012	max	-	Oct	Sun>=9	4:00u	1:00	S
+ Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
+ # N.B.: the end of March 29 in Chile is March 30 in Universal time,
+ # which is used below in specifying the transition.
+@@ -1269,7 +1300,11 @@
+ Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
+ Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
+ Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
+-Rule	Chile	2012	max	-	Mar	Sun>=9	3:00u	0	-
++Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
++Rule	Chile	2012	only	-	Apr	Sun>=23	3:00u	0	-
++Rule	Chile	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
++Rule	Chile	2013	max	-	Mar	Sun>=9	3:00u	0	-
++Rule	Chile	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08.  Ignore these.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -1415,6 +1450,21 @@
+ # will not revert to local mean time, but clocks will remain on Summer
+ # time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
+ # change to local time following the trial period will be notified.
++#
++# From Andrew Newman (2012-02-24)
++# A letter from Justin McPhee, Chief Executive,
++# Cable & Wireless Falkland Islands (dated 2012-02-22)
++# states...
++#   The current Atlantic/Stanley entry under South America expects the
++#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
++#   The database entry states that in 2011 Stanley was staying on fixed
++#   summer time on a trial basis only.  FIG need to contact IANA and/or
++#   the maintainers of the database to inform them we're adopting
++#   the same policy this year and suggest recommendations for future years.
++#
++# For now we will assume permanent summer time for the Falklands
++# until advised differently (to apply for 2012 and beyond, after the 2011
++# experiment was apparently successful.)
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
+ Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
+@@ -1427,14 +1477,14 @@
+ Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
+ Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
+ Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
+-Rule	Falk	2012	max	-	Apr	Sun>=15	2:00	0	-
+-Rule	Falk	2001	max	-	Sep	Sun>=1	2:00	1:00	S
++Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
+ 			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
+ 			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
+ 			-3:00	Falk	FK%sT	1985 Sep 15
+-			-4:00	Falk	FK%sT
++			-4:00	Falk	FK%sT	2010 Sep 5 02:00
++			-3:00	-	FKST
+ 
+ # French Guiana
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -22,7 +22,7 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)zone.tab	8.49
++# @(#)zone.tab	8.55
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
+@@ -154,6 +154,7 @@
+ CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut
+ CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
+ CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
++CA	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia
+ CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
+ CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
+ CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
+@@ -356,7 +357,7 @@
+ RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
+ RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
+ RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
+-RU	+5312+05009	Europe/Samara	Moscow - Samara, Udmurtia
++RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
+ RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
+ RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
+ RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -333,6 +333,7 @@
+                                               "French Guiana Summer Time", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Samara Summer Time", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Volgograd Summer Time", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -333,6 +333,7 @@
+                                               "Franz\u00f6sisch-Guiana Sommerzeit", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Samarische Sommerzeit", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Wolgograder Sommerzeit", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -333,6 +333,7 @@
+                                               "Hora de verano de la Guayana Francesa", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Hora de verano de Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Hora de verano de Volgogrado", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -333,6 +333,7 @@
+                                               "Heure d'\u00e9t\u00e9 de Guyane fran\u00e7aise", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Heure d'\u00e9t\u00e9 de Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -333,6 +333,7 @@
+                                               "Ora estiva della Guyana Francese", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Ora estiva di Samara", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Ora estiva di Volgograd", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -333,6 +333,7 @@
+                                               "\u4ecf\u9818\u30ae\u30a2\u30ca\u590f\u6642\u9593", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u590f\u6642\u9593", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -333,6 +333,7 @@
+                                               "\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "\ubcfc\uace0\uadf8\ub77c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -333,6 +333,7 @@
+                                               "Franska Guyana, sommartid", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "Samara, sommartid", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "Volgograd, sommartid", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -333,6 +333,7 @@
+                                               "\u6cd5\u5c5e\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -678,7 +679,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -699,14 +700,14 @@
+                                             "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -715,7 +716,7 @@
+                                                "\u4f0f\u5c14\u52a0\u683c\u52d2\u590f\u4ee4\u65f6", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -333,6 +333,7 @@
+                                               "\u6cd5\u5c6c\u572d\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GFST"}},
+             {"America/Cayman", EST},
+             {"America/Chihuahua", MST},
++            {"America/Creston", MST},
+             {"America/Coral_Harbour", EST},
+             {"America/Cordoba", AGT},
+             {"America/Costa_Rica", CST},
+@@ -679,7 +680,7 @@
+             {"Europe/Istanbul", EET},
+             {"Europe/Jersey", GMTBST},
+             {"Europe/Kaliningrad", FET},
+-            {"Europe/Kiev", FET},
++            {"Europe/Kiev", EET},
+             {"Europe/Lisbon", WET},
+             {"Europe/Ljubljana", CET},
+             {"Europe/London", GMTBST},
+@@ -700,14 +701,14 @@
+                                             "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST"}},
+             {"Europe/San_Marino", CET},
+             {"Europe/Sarajevo", CET},
+-            {"Europe/Simferopol", FET},
++            {"Europe/Simferopol", EET},
+             {"Europe/Skopje", CET},
+             {"Europe/Sofia", EET},
+             {"Europe/Stockholm", CET},
+             {"Europe/Tallinn", EET},
+             {"Europe/Tirane", CET},
+             {"Europe/Tiraspol", EET},
+-            {"Europe/Uzhgorod", FET},
++            {"Europe/Uzhgorod", EET},
+             {"Europe/Vaduz", CET},
+             {"Europe/Vatican", CET},
+             {"Europe/Vienna", CET},
+@@ -716,7 +717,7 @@
+                                                "\u4f0f\u723e\u52a0\u683c\u52d2\u590f\u4ee4\u6642\u9593", "VOLST"}},
+             {"Europe/Warsaw", CET},
+             {"Europe/Zagreb", CET},
+-            {"Europe/Zaporozhye", FET},
++            {"Europe/Zaporozhye", EET},
+             {"Europe/Zurich", CET},
+             {"GB", GMTBST},
+             {"GB-Eire", GMTBST},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7198570-tzdata2012f.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,841 @@
+# HG changeset patch
+# User coffeys
+# Date 1349962116 -3600
+# Node ID c554456c623f1d05180b291ce0b1e4589e2bd165
+# Parent  5683b3f7f8cc58746a2983ee6294b62ccdfa159c
+7198570: (tz) Support tzdata2012f
+Reviewed-by: peytoia, asaha
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2012c
++tzdata2012f
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)africa	8.35
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -261,7 +260,7 @@
+ # I received a mail from an airline which says that the daylight
+ # saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+ # From Jesper Norgaard Welen (2007-08-15): [The following agree:]
+-# http://www.nentjes.info/Bill/bill5.htm 
++# http://www.nentjes.info/Bill/bill5.htm
+ # http://www.timeanddate.com/worldclock/city.html?n=53
+ # From Steffen Thorsen (2007-09-04): The official information...:
+ # http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+@@ -315,18 +314,18 @@
+ # in September.
+ 
+ # From Steffen Thorsen (2009-08-11):
+-# We have been able to confirm the August change with the Egyptian Cabinet 
++# We have been able to confirm the August change with the Egyptian Cabinet
+ # Information and Decision Support Center:
+ # <a href="http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html">
+ # http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
+ # </a>
+-# 
++#
+ # The Middle East News Agency
+ # <a href="http://www.mena.org.eg/index.aspx">
+ # http://www.mena.org.eg/index.aspx
+ # </a>
+ # also reports "Egypt starts winter time on August 21"
+-# today in article numbered "71, 11/08/2009 12:25 GMT." 
++# today in article numbered "71, 11/08/2009 12:25 GMT."
+ # Only the title above is available without a subscription to their service,
+ # and can be found by searching for "winter" in their search engine
+ # (at least today).
+@@ -505,7 +504,7 @@
+ # From Steffen Thorsen (2008-06-25):
+ # Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
+ # basis....
+-# It seems that Mauritius observed daylight saving time from 1982-10-10 to 
++# It seems that Mauritius observed daylight saving time from 1982-10-10 to
+ # 1983-03-20 as well, but that was not successful....
+ # http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
+ 
+@@ -529,12 +528,12 @@
+ # than previously announced (2008-11-01 to 2009-03-31).  The new start
+ # date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+ # given, but it is probably at either 2 or 3 wall clock time).
+-# 
+-# A little strange though, since the article says that they moved the date 
+-# to align itself with Europe and USA which also change time on that date, 
+-# but that means they have not paid attention to what happened in 
+-# USA/Canada last year (DST ends first Sunday in November). I also wonder 
+-# why that they end on a Friday, instead of aligning with Europe which 
++#
++# A little strange though, since the article says that they moved the date
++# to align itself with Europe and USA which also change time on that date,
++# but that means they have not paid attention to what happened in
++# USA/Canada last year (DST ends first Sunday in November). I also wonder
++# why that they end on a Friday, instead of aligning with Europe which
+ # changes two days later.
+ 
+ # From Alex Krivenyshev (2008-07-11):
+@@ -593,7 +592,7 @@
+ # </a>
+ 
+ # From Arthur David Olson (2009-07-11):
+-# The "mauritius-dst-will-not-repeat" wrapup includes this: 
++# The "mauritius-dst-will-not-repeat" wrapup includes this:
+ # "The trial ended on March 29, 2009, when the clocks moved back by one hour
+ # at 2am (or 02:00) local time..."
+ 
+@@ -687,8 +686,8 @@
+ # XXX--guess that it is only Morocco for now; guess only 2008 for now.
+ 
+ # From Steffen Thorsen (2008-08-27):
+-# Morocco will change the clocks back on the midnight between August 31 
+-# and September 1. They originally planned to observe DST to near the end 
++# Morocco will change the clocks back on the midnight between August 31
++# and September 1. They originally planned to observe DST to near the end
+ # of September:
+ #
+ # One article about it (in French):
+@@ -822,6 +821,23 @@
+ # "...&agrave; partir du dernier dimance d'avril et non fins mars,
+ # comme annonc&eacute; pr&eacute;c&eacute;demment."
+ 
++# From Milamber Space Network (2012-07-17):
++# The official return to GMT is announced by the Moroccan government:
++# <a href="http://www.mmsp.gov.ma/fr/actualites.aspx?id=288">
++# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
++# </a>
++#
++# Google translation, lightly edited:
++# Back to the standard time of the Kingdom (GMT)
++# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
++# 2012) and in accordance with the order of Mr. President of the
++# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
++# of Public Service and Administration Modernization announces the return
++# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
++# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from
++# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
++# August 20, 2012 from 2:00 am.
++
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+ Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
+@@ -849,6 +865,8 @@
+ Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+ Rule	Morocco	2012	max	-	Apr	 lastSun 2:00	1:00	S
+ Rule	Morocco	2012	max	-	Sep	 lastSun 3:00	0	-
++Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
++Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+@@ -877,7 +895,7 @@
+ # Forecasting Riaan van Zyl explained that the far eastern parts of
+ # the country are close to 40 minutes earlier in sunrise than the rest
+ # of the country.
+-# 
++#
+ # From Paul Eggert (2007-03-31):
+ # Apparently the Caprivi Strip informally observes Botswana time, but
+ # we have no details.  In the meantime people there can use Africa/Gaborone.
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)antarctica	8.10
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)asia	8.73
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -125,7 +124,7 @@
+ # From Alexander Krivenyshev (2012-02-10):
+ # According to News Armenia, on Feb 9, 2012,
+ # http://newsarmenia.ru/society/20120209/42609695.html
+-# 
++#
+ # The Armenia National Assembly adopted final reading of Amendments to the
+ # Law "On procedure of calculation time on the territory of the Republic of
+ # Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
+@@ -205,15 +204,15 @@
+ # </a>
+ 
+ # From A. N. M. Kamrus Saadat (2009-06-15):
+-# Finally we've got the official mail regarding DST start time where DST start 
+-# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh 
+-# Telecommunication Regulatory Commission). 
++# Finally we've got the official mail regarding DST start time where DST start
++# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
++# Telecommunication Regulatory Commission).
+ #
+ # No DST end date has been announced yet.
+ 
+ # From Alexander Krivenyshev (2009-09-25):
+-# Bangladesh won't go back to Standard Time from October 1, 2009, 
+-# instead it will continue DST measure till the cabinet makes a fresh decision. 
++# Bangladesh won't go back to Standard Time from October 1, 2009,
++# instead it will continue DST measure till the cabinet makes a fresh decision.
+ #
+ # Following report by same newspaper-"The Daily Star Friday":
+ # "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
+@@ -227,8 +226,8 @@
+ 
+ # From Steffen Thorsen (2009-10-13):
+ # IANS (Indo-Asian News Service) now reports:
+-# Bangladesh has decided that the clock advanced by an hour to make 
+-# maximum use of daylight hours as an energy saving measure would 
++# Bangladesh has decided that the clock advanced by an hour to make
++# maximum use of daylight hours as an energy saving measure would
+ # "continue for an indefinite period."
+ #
+ # One of many places where it is published:
+@@ -256,7 +255,7 @@
+ 
+ # From Alexander Krivenyshev (2010-03-22):
+ # According to Bangladesh newspaper "The Daily Star,"
+-# Cabinet cancels Daylight Saving Time 
++# Cabinet cancels Daylight Saving Time
+ # <a href="http://www.thedailystar.net/newDesign/latest_news.php?nid=22817">
+ # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+ # </a>
+@@ -384,11 +383,11 @@
+ # observing daylight saving time in 1986.
+ #
+ # From Thomas S. Mullaney (2008-02-11):
+-# I think you're combining two subjects that need to treated 
+-# separately: daylight savings (which, you're correct, wasn't 
+-# implemented until the 1980s) and the unified time zone centered near 
+-# Beijing (which was implemented in 1949). Briefly, there was also a 
+-# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was 
++# I think you're combining two subjects that need to treated
++# separately: daylight savings (which, you're correct, wasn't
++# implemented until the 1980s) and the unified time zone centered near
++# Beijing (which was implemented in 1949). Briefly, there was also a
++# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+ # ceased, and the second eventually recognized (again, in the 1980s).
+ #
+ # From Paul Eggert (2008-06-30):
+@@ -525,7 +524,7 @@
+ # as of 2009-10-28:
+ # Year        Period
+ # 1941        1 Apr to 30 Sep
+-# 1942        Whole year 
++# 1942        Whole year
+ # 1943        Whole year
+ # 1944        Whole year
+ # 1945        Whole year
+@@ -616,16 +615,16 @@
+ # From Arthur David Olson (2010-04-07):
+ # Here's Google's translation of the table at the bottom of the "summert.htm" page:
+ # Decade 	                                                    Name                      Start and end date
+-# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30 
+-# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31 
+-# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31 
+-# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30 
+-# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30 
+-# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30 
+-# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time 
+-# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30 
+-# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time 
+-# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30 
++# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
++# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
++# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
++# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
++# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
++# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
++# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
++# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
++# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
++# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
+ # Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1859,15 +1858,15 @@
+ # shown 8 per cent higher consumption of electricity.
+ 
+ # From Alex Krivenyshev (2008-05-15):
+-# 
+-# Here is an article that Pakistan plan to introduce Daylight Saving Time 
++#
++# Here is an article that Pakistan plan to introduce Daylight Saving Time
+ # on June 1, 2008 for 3 months.
+-# 
+-# "... The federal cabinet on Wednesday announced a new conservation plan to help 
+-# reduce load shedding by approving the closure of commercial centres at 9pm and 
+-# moving clocks forward by one hour for the next three months. 
++#
++# "... The federal cabinet on Wednesday announced a new conservation plan to help
++# reduce load shedding by approving the closure of commercial centres at 9pm and
++# moving clocks forward by one hour for the next three months.
+ # ...."
+-# 
++#
+ # <a href="http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html">
+ # http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+ # </a>
+@@ -1927,7 +1926,7 @@
+ # Government has decided to restore the previous time by moving the
+ # clocks backward by one hour from October 1. A formal announcement to
+ # this effect will be made after the Prime Minister grants approval in
+-# this regard." 
++# this regard."
+ # <a href="http://www.thenews.com.pk/updates.asp?id=87168">
+ # http://www.thenews.com.pk/updates.asp?id=87168
+ # </a>
+@@ -2223,7 +2222,7 @@
+ # <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=306795">
+ # http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
+ # </a>
+-# the clocks were set back one hour at 2010-08-11 00:00:00 local time in 
++# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
+ # Gaza and the West Bank.
+ # Some more background info:
+ # <a href="http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html">
+@@ -2262,7 +2261,7 @@
+ # The rules for Egypt are stolen from the `africa' file.
+ 
+ # From Steffen Thorsen (2011-09-30):
+-# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30 
++# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+ # 00:00).
+ # So West Bank and Gaza now have the same time again.
+ #
+@@ -2536,19 +2535,19 @@
+ # having it between Wednesday and Thursday (two workdays in Syria) since the
+ # weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
+ # it is implemented at midnight of the last workday before weekend...
+-# 
++#
+ # From Steffen Thorsen (2007-10-27):
+ # Jesper Norgaard Welen wrote:
+-# 
++#
+ # > "Winter local time in Syria will be observed at midnight of Thursday 1
+ # > November 2007, and the clock will be put back 1 hour."
+-# 
++#
+ # I found confirmation on this in this gov.sy-article (Arabic):
+ # http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
+-# 
++#
+ # which using Google's translate tools says:
+-# Council of Ministers also approved the commencement of work on 
+-# identifying the winter time as of Friday, 2/11/2007 where the 60th 
++# Council of Ministers also approved the commencement of work on
++# identifying the winter time as of Friday, 2/11/2007 where the 60th
+ # minute delay at midnight Thursday 1/11/2007.
+ Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
+ 
+@@ -2614,8 +2613,8 @@
+ # </a>
+ 
+ # From Steffen Thorsen (2009-10-27):
+-# The Syrian Arab News Network on 2009-09-29 reported that Syria will 
+-# revert back to winter (standard) time on midnight between Thursday 
++# The Syrian Arab News Network on 2009-09-29 reported that Syria will
++# revert back to winter (standard) time on midnight between Thursday
+ # 2009-10-29 and Friday 2009-10-30:
+ # <a href="http://www.sana.sy/ara/2/2009/09/29/247012.htm">
+ # http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)australasia	8.30
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -307,9 +306,9 @@
+ # </a>
+ 
+ # From Alexander Krivenyshev (2010-10-24):
+-# According to Radio Fiji and Fiji Times online, Fiji will end DST 3 
++# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
+ # weeks earlier than expected - on March 6, 2011, not March 27, 2011...
+-# Here is confirmation from Government of the Republic of the Fiji Islands, 
++# Here is confirmation from Government of the Republic of the Fiji Islands,
+ # Ministry of Information (fiji.gov.fj) web site:
+ # <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155">
+ # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
+@@ -320,15 +319,15 @@
+ # </a>
+ 
+ # From Steffen Thorsen (2011-10-03):
+-# Now the dates have been confirmed, and at least our start date 
++# Now the dates have been confirmed, and at least our start date
+ # assumption was correct (end date was one week wrong).
+ #
+ # <a href="http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155">
+ # www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+ # </a>
+ # which says
+-# Members of the public are reminded to change their time to one hour in 
+-# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to 
++# Members of the public are reminded to change their time to one hour in
++# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+ # 2am on February 26 next year.
+ 
+ # From Ken Rylander (2011-10-24)
+@@ -345,15 +344,23 @@
+ # The commencement of daylight saving will remain unchanged and start
+ # on the  23rd of October, 2011.
+ 
++# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:
++# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate
++# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st
++# October 2012 and end at 3 am on Sunday 20th January 2013.
++# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
++#
++# From Paul Eggert (2012-08-31):
++# For now, guess a pattern of the penultimate Sundays in October and January.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
+ Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
+ Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
+ Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
+-Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
++Rule	Fiji	2010	max	-	Oct	Sun>=18	2:00	1:00	S
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+-Rule	Fiji	2011	only	-	Oct	23	2:00	1:00	S
+-Rule	Fiji	2012	only	-	Jan	22	3:00	0	-
++Rule	Fiji	2012	max	-	Jan	Sun>=18	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+@@ -582,7 +589,7 @@
+ 
+ # From David Zuelke (2011-05-09):
+ # Subject: Samoa to move timezone from east to west of international date line
+-# 
++#
+ # <a href="http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963">
+ # http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
+ # </a>
+@@ -664,25 +671,25 @@
+ #
+ # From Gwillim Law (2011-12-29)
+ # A correspondent informed me that Tokelau, like Samoa, will be skipping
+-# December 31 this year, thereby changing its time zone from UTC-10 to
+-# UTC+14. When I tried to verify this statement, I found a confirming
+-# article in Time magazine online
+-# <a href="http://www.time.com/time/world/article/0,8599,2103243,00.html">
+-# (http://www.time.com/time/world/article/0,8599,2103243,00.html).
+-# </a>
++# December 31 this year ...
+ #
+-# From Jonathan Leffler (2011-12-29)
+-# Information from the BBC to the same effect:
+-# <a href="http://www.bbc.co.uk/news/world-asia-16351377">
+-# http://www.bbc.co.uk/news/world-asia-16351377
+-# </a>
++# From Steffen Thorsen (2012-07-25)
++# ... we double checked by calling hotels and offices based in Tokelau asking
++# about the time there, and they all told a time that agrees with UTC+13....
++# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
++# actually was to UTC-11 back then.
+ #
+-# Patch supplied by Tim Parenti (2011-12-29)
++# From Paul Eggert (2012-07-25)
++# A Google Books snippet of Appendix to the Journals of the House of
++# Representatives of New Zealand, Session 1948,
++# <http://books.google.com/books?id=ZaVCAQAAIAAJ>, page 65, says Tokelau
++# was "11 hours slow on G.M.T."  Go with Thorsen and assume Shanks & Pottenger
++# are off by an hour starting in 1901.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
+-			-10:00	-	TKT 2011 Dec 30	# Tokelau Time
+-			14:00	-	TKT
++			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
++			13:00	-	TKT
+ 
+ # Tonga
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+@@ -1363,22 +1370,22 @@
+ # See "southeast Australia" above for 2008 and later.
+ 
+ # From Steffen Thorsen (2009-04-28):
+-# According to the official press release, South Australia's extended daylight 
+-# saving period will continue with the same rules as used during the 2008-2009 
++# According to the official press release, South Australia's extended daylight
++# saving period will continue with the same rules as used during the 2008-2009
+ # summer (southern hemisphere).
+-# 
++#
+ # From
+ # <a href="http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf">
+ # http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
+ # </a>
+-# The extended daylight saving period that South Australia has been trialling 
++# The extended daylight saving period that South Australia has been trialling
+ # for over the last year is now set to be ongoing.
+-# Daylight saving will continue to start on the first Sunday in October each 
++# Daylight saving will continue to start on the first Sunday in October each
+ # year and finish on the first Sunday in April the following year.
+-# Industrial Relations Minister, Paul Caica, says this provides South Australia 
+-# with a consistent half hour time difference with NSW, Victoria, Tasmania and 
++# Industrial Relations Minister, Paul Caica, says this provides South Australia
++# with a consistent half hour time difference with NSW, Victoria, Tasmania and
+ # the ACT for all 52 weeks of the year...
+-# 
++#
+ # We have a wrap-up here:
+ # <a href="http://www.timeanddate.com/news/time/south-australia-extends-dst.html">
+ # http://www.timeanddate.com/news/time/south-australia-extends-dst.html
+--- openjdk/jdk/make/sun/javazic/tzdata/backward
++++ openjdk/jdk/make/sun/javazic/tzdata/backward
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)backward	8.11
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/etcetera
++++ openjdk/jdk/make/sun/javazic/tzdata/etcetera
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)etcetera	8.3
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)europe	8.41
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -598,12 +597,12 @@
+ # According to Kremlin press service, Russian President Dmitry Medvedev
+ # signed a federal law "On calculation of time" on June 9, 2011.
+ # According to the law Russia is abolishing daylight saving time.
+-# 
+-# Medvedev signed a law "On the Calculation of Time" (in russian): 
++#
++# Medvedev signed a law "On the Calculation of Time" (in russian):
+ # <a href="http://bmockbe.ru/events/?ID=7583">
+ # http://bmockbe.ru/events/?ID=7583
+ # </a>
+-# 
++#
+ # Medvedev signed a law on the calculation of the time (in russian):
+ # <a href="http://www.regnum.ru/news/polit/1413906.html">
+ # http://www.regnum.ru/news/polit/1413906.html
+@@ -1711,7 +1710,7 @@
+ # From Alexander Krivenyshev (2011-10-26)
+ # NO need to divide Moldova into two timezones at this point.
+ # As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own
+-# decision to abolish DST this winter. 
++# decision to abolish DST this winter.
+ # Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
+ # Tiraspol will go back to winter time on October 30, 2011.
+ # News from Moldova (in russian):
+@@ -2601,11 +2600,11 @@
+ # http://www.alomaliye.com/bkk_2002_3769.htm
+ 
+ # From G&ouml;kdeniz Karada&#x011f; (2011-03-10):
+-# 
++#
+ # According to the articles linked below, Turkey will change into summer
+ # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
+ # This change is due to a nationwide exam on 27th.
+-# 
++#
+ # <a href="http://www.worldbulletin.net/?aType=haber&ArticleID=70872">
+ # http://www.worldbulletin.net/?aType=haber&ArticleID=70872
+ # </a>
+@@ -2722,7 +2721,7 @@
+ # time this year after all.
+ #
+ # From Udo Schwedt (2011-10-18):
+-# As far as I understand, the recent change to the Ukranian time zone 
++# As far as I understand, the recent change to the Ukranian time zone
+ # (Europe/Kiev) to introduce permanent daylight saving time (similar
+ # to Russia) was reverted today:
+ #
+--- openjdk/jdk/make/sun/javazic/tzdata/factory
++++ openjdk/jdk/make/sun/javazic/tzdata/factory
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)factory	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/iso3166.tab
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)iso3166.tab	8.11
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ # ISO 3166 alpha-2 country codes
+--- openjdk/jdk/make/sun/javazic/tzdata/leapseconds
++++ openjdk/jdk/make/sun/javazic/tzdata/leapseconds
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)leapseconds	8.13
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -101,8 +100,8 @@
+ #
+ #
+ # A positive leap second will be introduced at the end of June 2012.
+-# The sequence of dates of the UTC second markers will be:		
+-# 		
++# The sequence of dates of the UTC second markers will be:
++#
+ #                          2012 June 30,     23h 59m 59s
+ #                          2012 June 30,     23h 59m 60s
+ #                          2012 July  1,      0h  0m  0s
+@@ -119,6 +118,6 @@
+ #
+ #
+ # Daniel GAMBIS
+-# Head		
++# Head
+ # Earth Orientation Center of IERS
+ # Observatoire de Paris, France
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)northamerica	8.54
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -502,7 +501,7 @@
+ 			 -8:00	US	P%sT	1946
+ 			 -8:00	-	PST	1969
+ 			 -8:00	US	P%sT	1980 Apr 27 2:00
+-			 -9:00	US	Y%sT	1980 Oct 26 2:00	
++			 -9:00	US	Y%sT	1980 Oct 26 2:00
+ 			 -8:00	US	P%sT	1983 Oct 30 2:00
+ 			 -9:00	US	Y%sT	1983 Nov 30
+ 			 -9:00	US	AK%sT
+@@ -1867,7 +1866,7 @@
+ # Here is a summary of the three clock change events in Creston's history:
+ # 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
+ # Exact date unknown
+-# 2. Oct 1916: switch to Pacific Standard Time (GMT-8) 
++# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+ # Exact date in October unknown;  Sunday October 1 is a reasonable guess.
+ # 3. June 1918: switch to Pacific Daylight Time (GMT-7)
+ # Exact date in June unknown; Sunday June 2 is a reasonable guess.
+@@ -2697,20 +2696,20 @@
+ # except that it switches at midnight standard time as usual.
+ #
+ # From Steffen Thorsen (2007-10-25):
+-# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week 
++# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
+ # earlier - on the last Sunday of October, just like in 2006.
+-# 
++#
+ # He supplied these references:
+-# 
++#
+ # http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
+ # http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
+-# 
++#
+ # From Alex Kryvenishev (2007-10-25):
+ # Here is also article from Granma (Cuba):
+-# 
++#
+ # [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
+ # http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
+-# 
++#
+ # http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
+ 
+ # From Arthur David Olson (2008-03-09):
+@@ -2794,7 +2793,7 @@
+ # </a>
+ #
+ # From Steffen Thorsen (2011-10-30)
+-# Cuba will end DST two weeks later this year. Instead of going back 
++# Cuba will end DST two weeks later this year. Instead of going back
+ # tonight, it has been delayed to 2011-11-13 at 01:00.
+ #
+ # One source (Spanish)
+@@ -2806,11 +2805,11 @@
+ # <a href="http://www.timeanddate.com/news/time/cuba-time-changes-2011.html">
+ # http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
+ # </a>
+-# 
++#
+ # From Steffen Thorsen (2012-03-01)
+-# According to Radio Reloj, Cuba will start DST on Midnight between March 
++# According to Radio Reloj, Cuba will start DST on Midnight between March
+ # 31 and April 1.
+-# 
++#
+ # Radio Reloj has the following info (Spanish):
+ # <a href="http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril">
+ # http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
+--- openjdk/jdk/make/sun/javazic/tzdata/pacificnew
++++ openjdk/jdk/make/sun/javazic/tzdata/pacificnew
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)pacificnew	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar87
++++ openjdk/jdk/make/sun/javazic/tzdata/solar87
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)solar87	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar88
++++ openjdk/jdk/make/sun/javazic/tzdata/solar88
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)solar88	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/solar89
++++ openjdk/jdk/make/sun/javazic/tzdata/solar89
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)solar89	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)southamerica	8.53
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+@@ -255,7 +254,7 @@
+ Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
+ Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
+ Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
+- 
++
+ # From Mariano Absatz (2004-05-21):
+ # Today it was officially published that the Province of Mendoza is changing
+ # its timezone this winter... starting tomorrow night....
+@@ -345,9 +344,9 @@
+ # confirms what Alex Krivenyshev has earlier sent to the tz
+ # emailing list about that San Luis plans to return to standard
+ # time much earlier than the rest of the country. It also
+-# confirms that upon request the provinces San Juan and Mendoza 
+-# refused to follow San Luis in this change. 
+-# 
++# confirms that upon request the provinces San Juan and Mendoza
++# refused to follow San Luis in this change.
++#
+ # The change is supposed to take place Monday the 21.st at 0:00
+ # hours. As far as I understand it if this goes ahead, we need
+ # a new timezone for San Luis (although there are also documented
+@@ -409,7 +408,7 @@
+ # <a href="http://www.lanacion.com.ar/nota.asp?nota_id=1107912">
+ # http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+ # </a>
+-# 
++#
+ # The press release says:
+ #  (...) anunció que el próximo domingo a las 00:00 los puntanos deberán
+ # atrasar una hora sus relojes.
+@@ -823,8 +822,8 @@
+ #
+ # From Alexander Krivenyshev (2011-10-04):
+ # State Bahia will return to Daylight savings time this year after 8 years off.
+-# The announcement was made by Governor Jaques Wagner in an interview to a 
+-# television station in Salvador. 
++# The announcement was made by Governor Jaques Wagner in an interview to a
++# television station in Salvador.
+ 
+ # In Portuguese:
+ # <a href="http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html">
+@@ -1183,7 +1182,7 @@
+ # Due to drought, Chile extends Daylight Time in three weeks.  This
+ # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+ # and Saturday 3/29 at 22:00 for Pacific/Easter)
+-# The Supreme Decree is located at 
++# The Supreme Decree is located at
+ # <a href="http://www.shoa.cl/servicios/supremo316.pdf">
+ # http://www.shoa.cl/servicios/supremo316.pdf
+ # </a>
+@@ -1194,7 +1193,7 @@
+ 
+ # From Jose Miguel Garrido (2008-03-05):
+ # ...
+-# You could see the announces of the change on 
++# You could see the announces of the change on
+ # <a href="http://www.shoa.cl/noticias/2008/04hora/hora.htm">
+ # http://www.shoa.cl/noticias/2008/04hora/hora.htm
+ # </a>.
+--- openjdk/jdk/make/sun/javazic/tzdata/systemv
++++ openjdk/jdk/make/sun/javazic/tzdata/systemv
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)systemv	8.2
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ 
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -22,7 +22,6 @@
+ # questions.
+ #
+ # <pre>
+-# @(#)zone.tab	8.55
+ # This file is in the public domain, so clarified as of
+ # 2009-05-17 by Arthur David Olson.
+ #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8002070-remove_logger_stack_search.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,152 @@
+changeset:   4948:4a67dd684bc2
+user:        andrew
+date:        Tue Jun 18 08:07:48 2013 -0500
+files:       src/share/classes/java/util/logging/Logger.java
+description:
+8002070: Remove the stack search for a resource bundle for Logger to use
+Summary: The fragile, vulnerable, stack crawling has been eliminated from findResourceBundle(String)
+Reviewed-by: mchung, alanb
+
+
+--- openjdk/jdk/src/share/classes/java/util/logging/Logger.java
++++ openjdk/jdk/src/share/classes/java/util/logging/Logger.java
+@@ -26,8 +26,16 @@
+ 
+ package java.util.logging;
+ 
+-import java.util.*;
++import java.lang.ref.WeakReference;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
++import java.util.ArrayList;
++import java.util.Iterator;
++import java.util.Locale;
++import java.util.MissingResourceException;
++import java.util.ResourceBundle;
++import java.util.concurrent.CopyOnWriteArrayList;
+-import java.security.*;
+-import java.lang.ref.WeakReference;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+@@ -100,14 +105,8 @@
+  * <p>
+  * When mapping ResourceBundle names to ResourceBundles, the Logger
+  * will first try to use the Thread's ContextClassLoader.  If that
+- * is null it will try the SystemClassLoader instead.  As a temporary
+- * transition feature in the initial implementation, if the Logger is
+- * unable to locate a ResourceBundle from the ContextClassLoader or
+- * SystemClassLoader the Logger will also search up the class stack
+- * and use successive calling ClassLoaders to try to locate a ResourceBundle.
+- * (This call stack search is to allow containers to transition to
+- * using ContextClassLoaders and is likely to be removed in future
+- * versions.)
++ * is null it will try the
++ * {@linkplain java.lang.ClassLoader#getSystemClassLoader() system ClassLoader} instead.
+  * <p>
+  * Formatting (including localization) is the responsibility of
+  * the output Handler, which will typically call a Formatter.
+@@ -1323,12 +1322,16 @@
+         return useParentHandlers;
+     }
+ 
+-    // Private utility method to map a resource bundle name to an
+-    // actual resource bundle, using a simple one-entry cache.
+-    // Returns null for a null name.
+-    // May also return null if we can't find the resource bundle and
+-    // there is no suitable previous cached value.
+-
++    /**
++     * Private utility method to map a resource bundle name to an
++     * actual resource bundle, using a simple one-entry cache.
++     * Returns null for a null name.
++     * May also return null if we can't find the resource bundle and
++     * there is no suitable previous cached value.
++     *
++     * @param name the ResourceBundle to locate
++     * @return ResourceBundle specified by name or null if not found
++     */
+     static final String SYSTEM_LOGGER_RB_NAME = "sun.util.logging.resources.logging";
+ 
+     private static ResourceBundle findSystemResourceBundle(final Locale locale) {
+@@ -1355,8 +1358,8 @@
+         Locale currentLocale = Locale.getDefault();
+ 
+         // Normally we should hit on our simple one entry cache.
+-        if (catalog != null && currentLocale == catalogLocale
+-                                        && name == catalogName) {
++        if (catalog != null && currentLocale.equals(catalogLocale)
++                && name.equals(catalogName)) {
+             return catalog;
+         }
+ 
+@@ -1367,8 +1370,8 @@
+             return catalog;
+         }
+ 
+-        // Use the thread's context ClassLoader.  If there isn't one,
+-        // use the SystemClassloader.
++        // Use the thread's context ClassLoader.  If there isn't one, use the
++        // {@linkplain java.lang.ClassLoader#getSystemClassLoader() system ClassLoader}.
+         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+         if (cl == null) {
+             cl = ClassLoader.getSystemClassLoader();
+@@ -1379,45 +1382,8 @@
+             catalogLocale = currentLocale;
+             return catalog;
+         } catch (MissingResourceException ex) {
+-            // Woops.  We can't find the ResourceBundle in the default
+-            // ClassLoader.  Drop through.
++            return null;
+         }
+-
+-
+-        // Fall back to searching up the call stack and trying each
+-        // calling ClassLoader.
+-        for (int ix = 0; ; ix++) {
+-            Class clz = sun.reflect.Reflection.getCallerClass(ix);
+-            if (clz == null) {
+-                break;
+-            }
+-            ClassLoader cl2 = clz.getClassLoader();
+-            if (cl2 == null) {
+-                cl2 = ClassLoader.getSystemClassLoader();
+-            }
+-            if (cl == cl2) {
+-                // We've already checked this classloader.
+-                continue;
+-            }
+-            cl = cl2;
+-            try {
+-                catalog = ResourceBundle.getBundle(name, currentLocale, cl);
+-                catalogName = name;
+-                catalogLocale = currentLocale;
+-                return catalog;
+-            } catch (MissingResourceException ex) {
+-                // Ok, this one didn't work either.
+-                // Drop through, and try the next one.
+-            }
+-        }
+-
+-        if (name.equals(catalogName)) {
+-            // Return the previous cached value for that name.
+-            // This may be null.
+-            return catalog;
+-        }
+-        // Sorry, we're out of luck.
+-        return null;
+     }
+ 
+     // Private utility method to initialize our one entry
+@@ -1428,8 +1395,7 @@
+         if (name == null) {
+             return;
+         }
+-        ResourceBundle rb = findResourceBundle(name);
+-        if (rb == null) {
++        if (findResourceBundle(name) == null) {
+             // We've failed to find an expected ResourceBundle.
+             throw new MissingResourceException("Can't find " + name + " bundle", name, "");
+         }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8002070-remove_logger_stack_search_2.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,546 @@
+changeset:   4981:108fe5a882a7
+user:        andrew
+date:        Wed Jun 26 22:44:03 2013 -0500
+files:       src/share/classes/java/util/logging/Logger.java test/java/util/logging/bundlesearch/ClassPathTestBundle_en.properties test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java test/java/util/logging/bundlesearch/LoadItUp.java test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java test/java/util/logging/bundlesearch/resources/ContextClassLoaderTestBundle_en.properties test/java/util/logging/bundlesearch/resources/StackSearchableResource_en.properties
+description:
+8002070: Remove the stack search for a resource bundle for Logger to use
+Summary: The fragile, vulnerable, stack crawling has been eliminated from findResourceBundle(String)
+Reviewed-by: mchung
+
+
+--- openjdk/jdk/src/share/classes/java/util/logging/Logger.java
++++ openjdk/jdk/src/share/classes/java/util/logging/Logger.java
+@@ -1322,16 +1322,6 @@
+         return useParentHandlers;
+     }
+ 
+-    /**
+-     * Private utility method to map a resource bundle name to an
+-     * actual resource bundle, using a simple one-entry cache.
+-     * Returns null for a null name.
+-     * May also return null if we can't find the resource bundle and
+-     * there is no suitable previous cached value.
+-     *
+-     * @param name the ResourceBundle to locate
+-     * @return ResourceBundle specified by name or null if not found
+-     */
+     static final String SYSTEM_LOGGER_RB_NAME = "sun.util.logging.resources.logging";
+ 
+     private static ResourceBundle findSystemResourceBundle(final Locale locale) {
+@@ -1349,6 +1339,16 @@
+         });
+     }
+ 
++    /**
++     * Private utility method to map a resource bundle name to an
++     * actual resource bundle, using a simple one-entry cache.
++     * Returns null for a null name.
++     * May also return null if we can't find the resource bundle and
++     * there is no suitable previous cached value.
++     *
++     * @param name the ResourceBundle to locate
++     * @return ResourceBundle specified by name or null if not found
++     */
+     private synchronized ResourceBundle findResourceBundle(String name) {
+         // Return a null bundle for a null name.
+         if (name == null) {
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/ClassPathTestBundle_en.properties
+@@ -0,0 +1,25 @@
++# 
++# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++# 
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++# 
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++# 
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++sample1=translation #2 for sample1
++sample2=translation #2 for sample2
++supports-test=ResourceBundleSearchTest
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java
+@@ -0,0 +1,89 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.net.URL;
++import java.net.URLClassLoader;
++
++/**
++ * This class is used to ensure that a resource bundle loadable by a classloader
++ * is on the caller's stack, but not on the classpath or TCCL to ensure that
++ * Logger.getLogger() can't load the bundle via a stack search
++ *
++ * @author Jim Gish
++ */
++public class IndirectlyLoadABundle {
++
++    private final static String rbName = "StackSearchableResource";
++
++    public boolean loadAndTest() throws Throwable {
++        // Find out where we are running from so we can setup the URLClassLoader URLs
++        // test.src and test.classes will be set if running in jtreg, but probably
++        // not otherwise
++        String testDir = System.getProperty("test.src", System.getProperty("user.dir"));
++        String testClassesDir = System.getProperty("test.classes",
++                System.getProperty("user.dir"));
++        String sep = System.getProperty("file.separator");
++        URL[] urls = new URL[2];
++
++        // Allow for both jtreg and standalone cases here
++        urls[0] = new URL("file://" + testDir + sep + "resources" + sep);
++        urls[1] = new URL("file://" + testClassesDir + sep );
++        System.out.println("INFO: urls[0] = " + urls[0]);
++        System.out.println("INFO: urls[1] = " + urls[1]);
++
++        // Make sure we can find it via the URLClassLoader
++        URLClassLoader yetAnotherResourceCL = new URLClassLoader(urls, null);
++        if (!testForValidResourceSetup(yetAnotherResourceCL)) {
++            throw new Exception("Couldn't directly load bundle " + rbName
++                    + " as expected. Test config problem");
++        }
++        // But it shouldn't be available via the system classloader
++        ClassLoader myCL = this.getClass().getClassLoader();
++        if (testForValidResourceSetup(myCL)) {
++            throw new Exception("Was able to directly load bundle " + rbName
++                    + " from " + myCL + " but shouldn't have been"
++                    + " able to. Test config problem");
++        }
++
++        Class<?> loadItUpClazz = Class.forName("LoadItUp", true, yetAnotherResourceCL);
++        ClassLoader actual = loadItUpClazz.getClassLoader();
++        if (actual != yetAnotherResourceCL) {
++            throw new Exception("LoadItUp was loaded by an unexpected CL: " + actual);
++        }
++        Object loadItUp = loadItUpClazz.newInstance();
++        Method testMethod = loadItUpClazz.getMethod("test", String.class);
++        try {
++            return (Boolean) testMethod.invoke(loadItUp, rbName);
++        } catch (InvocationTargetException ex) {
++            throw ex.getTargetException();
++        }
++    }
++
++    private boolean testForValidResourceSetup(ClassLoader cl) {
++        // First make sure the test environment is setup properly and the bundle actually
++        // exists
++        return ResourceBundleSearchTest.isOnClassPath(rbName, cl);
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.util.MissingResourceException;
++import java.util.logging.Logger;
++
++/*
++ * This class is loaded onto the call stack when the test method is called
++ * and then its classloader can be used to find a property bundle in the same
++ * directory as the class.  However, Logger is not allowed
++ * to find the bundle by looking up the stack for this classloader.
++ * We verify that this cannot happen.
++ *
++ * @author Jim Gish
++ */
++public class LoadItUp {
++
++    private final static boolean DEBUG = false;
++
++    public Boolean test(String rbName) throws Exception {
++        // we should not be able to find the resource in this directory via
++        // getLogger calls.  The only way that would be possible given this setup
++        // is that if Logger.getLogger searched up the call stack
++        return lookupBundle(rbName);
++    }
++
++    private boolean lookupBundle(String rbName) {
++        // See if Logger.getLogger can find the resource in this directory
++        try {
++            Logger aLogger = Logger.getLogger("NestedLogger", rbName);
++        } catch (MissingResourceException re) {
++            if (DEBUG) {
++                System.out.println(
++                    "As expected, LoadItUp.lookupBundle() did not find the bundle "
++                    + rbName);
++            }
++            return false;
++        }
++        System.out.println("FAILED: LoadItUp.lookupBundle() found the bundle "
++                + rbName + " using a stack search.");
++        return true;
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
+@@ -0,0 +1,249 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug     8010127
++ * @summary Remove the stack search for a resource bundle Logger to use
++ * @author  Jim Gish
++ * @build  ResourceBundleSearchTest IndirectlyLoadABundle LoadItUp
++ * @run main ResourceBundleSearchTest
++ */
++import java.net.URL;
++import java.net.URLClassLoader;
++import java.util.ArrayList;
++import java.util.List;
++import java.util.Locale;
++import java.util.MissingResourceException;
++import java.util.ResourceBundle;
++import java.util.logging.Logger;
++
++public class ResourceBundleSearchTest {
++
++    private final static boolean DEBUG = false;
++    private final static String LOGGER_PREFIX = "myLogger.";
++    private static int loggerNum = 0;
++    private final static String PROP_RB_NAME = "ClassPathTestBundle";
++    private final static String TCCL_TEST_BUNDLE = "ContextClassLoaderTestBundle";
++
++    private static int numPass = 0;
++    private static int numFail = 0;
++    private static List<String> msgs = new ArrayList<String>();
++
++    public static void main(String[] args) throws Throwable {
++        ResourceBundleSearchTest test = new ResourceBundleSearchTest();
++        test.runTests();
++    }
++
++    private void runTests() throws Throwable {
++        // ensure we are using en as the default Locale so we can find the resource
++        Locale.setDefault(Locale.ENGLISH);
++
++        String testClasses = System.getProperty("test.classes");
++        System.out.println( "test.classes = " + testClasses );
++
++        ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
++
++        // Find out where we are running from so we can setup the URLClassLoader URL
++        String userDir = System.getProperty("user.dir");
++        String testDir = System.getProperty("test.src", userDir);
++        String sep = System.getProperty("file.separator");
++
++        URL[] urls = new URL[1];
++        urls[0] = new URL("file://" + testDir + sep + "resources" + sep);
++        URLClassLoader rbClassLoader = new URLClassLoader(urls);
++
++        // Test 1 - can we find a Logger bundle from doing a stack search?
++        // We shouldn't be able to
++        assertFalse(testGetBundleFromStackSearch(), "testGetBundleFromStackSearch");
++
++        // Test 2 - can we find a Logger bundle off of the Thread context class
++        // loader? We should be able to.
++        assertTrue(
++                testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader),
++                "testGetBundleFromTCCL");
++
++        // Test 3 - Can we find a Logger bundle from the classpath?  We should be
++        // able to, but ....
++        // We check to see if the bundle is on the classpath or not so that this
++        // will work standalone.  In the case of jtreg/samevm,
++        // the resource bundles are not on the classpath.  Running standalone
++        // (or othervm), they are
++        if (isOnClassPath(PROP_RB_NAME, myClassLoader)) {
++            debug("We should be able to see " + PROP_RB_NAME + " on the classpath");
++            assertTrue(testGetBundleFromSystemClassLoader(PROP_RB_NAME),
++                    "testGetBundleFromSystemClassLoader");
++        } else {
++            debug("We should not be able to see " + PROP_RB_NAME + " on the classpath");
++            assertFalse(testGetBundleFromSystemClassLoader(PROP_RB_NAME),
++                    "testGetBundleFromSystemClassLoader");
++        }
++
++        report();
++    }
++
++    private void report() throws Exception {
++        System.out.println("Num passed = " + numPass + " Num failed = " + numFail);
++        if (numFail > 0) {
++            // We only care about the messages if they were errors
++            for (String msg : msgs) {
++                System.out.println(msg);
++            }
++            throw new Exception(numFail + " out of " + (numPass + numFail)
++                    + " tests failed.");
++        }
++    }
++
++    public void assertTrue(boolean testResult, String testName) {
++        if (testResult) {
++            numPass++;
++        } else {
++            numFail++;
++            System.out.println("FAILED: " + testName
++                    + " was supposed to return true but did NOT!");
++        }
++    }
++
++    public void assertFalse(boolean testResult, String testName) {
++        if (!testResult) {
++            numPass++;
++        } else {
++            numFail++;
++            System.out.println("FAILED: " + testName
++                    + " was supposed to return false but did NOT!");
++        }
++    }
++
++    public boolean testGetBundleFromStackSearch() throws Throwable {
++        // This should fail.  This was the old functionality to search up the
++        // caller's call stack
++        IndirectlyLoadABundle indirectLoader = new IndirectlyLoadABundle();
++        return indirectLoader.loadAndTest();
++    }
++
++    public boolean testGetBundleFromTCCL(String bundleName,
++            ClassLoader setOnTCCL) throws InterruptedException {
++        // This should succeed.  We should be able to get the bundle from the
++        // thread context class loader
++        debug("Looking for " + bundleName + " using TCCL");
++        LoggingThread lr = new LoggingThread(bundleName, setOnTCCL);
++        lr.start();
++        synchronized (lr) {
++            try {
++                lr.wait();
++            } catch (InterruptedException ex) {
++                throw ex;
++            }
++        }
++        msgs.add(lr.msg);
++        return lr.foundBundle;
++    }
++
++    /*
++     * @param String bundleClass
++     * @param ClassLoader to use for search
++     * @return true iff bundleClass is on system classpath
++     */
++    public static boolean isOnClassPath(String baseName, ClassLoader cl) {
++        ResourceBundle rb = null;
++        try {
++            rb = ResourceBundle.getBundle(baseName, Locale.getDefault(), cl);
++            System.out.println("INFO: Found bundle " + baseName + " on " + cl);
++        } catch (MissingResourceException e) {
++            System.out.println("INFO: Could not find bundle " + baseName + " on " + cl);
++            return false;
++        }
++        return (rb != null);
++    }
++
++    private static String newLoggerName() {
++        // we need a new logger name every time we attempt to find a bundle via
++        // the Logger.getLogger call, so we'll simply tack on an integer which
++        // we increment each time this is called
++        loggerNum++;
++        return LOGGER_PREFIX + loggerNum;
++    }
++
++    public boolean testGetBundleFromSystemClassLoader(String bundleName) {
++        // this should succeed if the bundle is on the system classpath.
++        try {
++            Logger aLogger = Logger.getLogger(ResourceBundleSearchTest.newLoggerName(),
++                    bundleName);
++        } catch (MissingResourceException re) {
++            msgs.add("INFO: testGetBundleFromSystemClassLoader() did not find bundle "
++                    + bundleName);
++            return false;
++        }
++        msgs.add("INFO: testGetBundleFromSystemClassLoader() found the bundle "
++                + bundleName);
++        return true;
++    }
++
++    public static class LoggingThread extends Thread {
++
++        boolean foundBundle = false;
++        String msg = null;
++        ClassLoader clToSetOnTCCL = null;
++        String bundleName = null;
++
++        public LoggingThread(String bundleName) {
++            this.bundleName = bundleName;
++        }
++
++        public LoggingThread(String bundleName, ClassLoader setOnTCCL) {
++            this.clToSetOnTCCL = setOnTCCL;
++            this.bundleName = bundleName;
++        }
++
++        public void run() {
++            boolean setTCCL = false;
++            try {
++                if (clToSetOnTCCL != null) {
++                    Thread.currentThread().setContextClassLoader(clToSetOnTCCL);
++                    setTCCL = true;
++                }
++                // this should succeed if the bundle is on the system classpath.
++                try {
++                    Logger aLogger = Logger.getLogger(ResourceBundleSearchTest.newLoggerName(),
++                            bundleName);
++                    msg = "INFO: LoggingRunnable() found the bundle " + bundleName
++                            + (setTCCL ? " with " : " without ") + "setting the TCCL";
++                    foundBundle = true;
++                } catch (MissingResourceException re) {
++                    msg = "INFO: LoggingRunnable() did not find the bundle " + bundleName
++                            + (setTCCL ? " with " : " without ") + "setting the TCCL";
++                    foundBundle = false;
++                }
++            } catch (Throwable e) {
++                e.printStackTrace();
++                System.exit(1);
++            }
++        }
++    }
++
++    private void debug(String msg) {
++        if (DEBUG) {
++            System.out.println(msg);
++        }
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/resources/ContextClassLoaderTestBundle_en.properties
+@@ -0,0 +1,25 @@
++# 
++# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++# 
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++# 
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++# 
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++sample1=translation #3 for sample1
++sample2=translation #3 for sample2
++supports-test=ResourceBundleSearchTest
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/resources/StackSearchableResource_en.properties
+@@ -0,0 +1,25 @@
++# 
++# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++# 
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++# 
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++# 
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++sample1=translation #4 for sample1
++sample2=translation #4 for sample2
++supports-test=ResourceBundleSearchTest
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8002225-tzdata2012i.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,261 @@
+# HG changeset patch
+# User coffeys
+# Date 1352197189 0
+# Node ID 1f833e4211177700a66cc22a0c5a794448c1a29a
+# Parent  c554456c623f1d05180b291ce0b1e4589e2bd165
+8002225: (tz) Support tzdata2012i
+Reviewed-by: peytoia, asaha
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2012f
++tzdata2012i
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -1193,15 +1193,15 @@
+ #
+ #	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+ 
+-# From Paul Eggert (2005-02-22):
++# From Paul Eggert (2012-10-26):
+ # I used Ephraim Silverberg's dst-israel.el program
+ # <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
+ # along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
+-# to generate the transitions in this list.
++# to generate the transitions from 2005 through 2012.
+ # (I replaced "lastFri" with "Fri>=26" by hand.)
+-# The spring transitions below all correspond to the following Rule:
++# The spring transitions all correspond to the following Rule:
+ #
+-# Rule	Zion	2005	max	-	Mar	Fri>=26	2:00	1:00	D
++# Rule	Zion	2005	2012	-	Mar	Fri>=26	2:00	1:00	D
+ #
+ # but older zic implementations (e.g., Solaris 8) do not support
+ # "Fri>=26" to mean April 1 in years like 2005, so for now we list the
+@@ -1218,39 +1218,36 @@
+ Rule	Zion	2010	only	-	Sep	12	2:00	0	S
+ Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
+ Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
+-Rule	Zion	2012	2015	-	Mar	Fri>=26	2:00	1:00	D
++Rule	Zion	2012	only	-	Mar	Fri>=26	2:00	1:00	D
+ Rule	Zion	2012	only	-	Sep	23	2:00	0	S
+-Rule	Zion	2013	only	-	Sep	 8	2:00	0	S
+-Rule	Zion	2014	only	-	Sep	28	2:00	0	S
+-Rule	Zion	2015	only	-	Sep	20	2:00	0	S
+-Rule	Zion	2016	only	-	Apr	 1	2:00	1:00	D
+-Rule	Zion	2016	only	-	Oct	 9	2:00	0	S
+-Rule	Zion	2017	2021	-	Mar	Fri>=26	2:00	1:00	D
+-Rule	Zion	2017	only	-	Sep	24	2:00	0	S
+-Rule	Zion	2018	only	-	Sep	16	2:00	0	S
+-Rule	Zion	2019	only	-	Oct	 6	2:00	0	S
+-Rule	Zion	2020	only	-	Sep	27	2:00	0	S
+-Rule	Zion	2021	only	-	Sep	12	2:00	0	S
+-Rule	Zion	2022	only	-	Apr	 1	2:00	1:00	D
+-Rule	Zion	2022	only	-	Oct	 2	2:00	0	S
+-Rule	Zion	2023	2032	-	Mar	Fri>=26	2:00	1:00	D
+-Rule	Zion	2023	only	-	Sep	24	2:00	0	S
+-Rule	Zion	2024	only	-	Oct	 6	2:00	0	S
+-Rule	Zion	2025	only	-	Sep	28	2:00	0	S
+-Rule	Zion	2026	only	-	Sep	20	2:00	0	S
+-Rule	Zion	2027	only	-	Oct	10	2:00	0	S
+-Rule	Zion	2028	only	-	Sep	24	2:00	0	S
+-Rule	Zion	2029	only	-	Sep	16	2:00	0	S
+-Rule	Zion	2030	only	-	Oct	 6	2:00	0	S
+-Rule	Zion	2031	only	-	Sep	21	2:00	0	S
+-Rule	Zion	2032	only	-	Sep	12	2:00	0	S
+-Rule	Zion	2033	only	-	Apr	 1	2:00	1:00	D
+-Rule	Zion	2033	only	-	Oct	 2	2:00	0	S
+-Rule	Zion	2034	2037	-	Mar	Fri>=26	2:00	1:00	D
+-Rule	Zion	2034	only	-	Sep	17	2:00	0	S
+-Rule	Zion	2035	only	-	Oct	 7	2:00	0	S
+-Rule	Zion	2036	only	-	Sep	28	2:00	0	S
+-Rule	Zion	2037	only	-	Sep	13	2:00	0	S
++
++# From Ephraim Silverberg (2012-10-18):
++
++# Yesterday, the Interior Ministry Committee, after more than a year
++# past, approved sending the proposed June 2011 changes to the Time
++# Decree Law back to the Knesset for second and third (final) votes
++# before the upcoming elections on Jan. 22, 2013.  Hence, although the
++# changes are not yet law, they are expected to be so before February 2013.
++#
++# As of 2013, DST starts at 02:00 on the Friday before the last Sunday in March.
++# DST ends at 02:00 on the first Sunday after October 1, unless it occurs on the
++# second day of the Jewish Rosh Hashana holiday, in which case DST ends a day
++# later (i.e. at 02:00 the first Monday after October 2).
++# [Rosh Hashana holidays are factored in until 2100.]
++
++# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
++Rule	Zion	2013	2026	-	Oct	Sun>=2	2:00	0	S
++Rule	Zion	2027	only	-	Oct	Mon>=3	2:00	0	S
++Rule	Zion	2028	max	-	Oct	Sun>=2	2:00	0	S
++# The following rules are commented out for now, as they break older
++# versions of zic that support only signed 32-bit timestamps, i.e.,
++# through 2038-01-19 03:14:07 UTC.
++#Rule	Zion	2028	2053	-	Oct	Sun>=2	2:00	0	S
++#Rule	Zion	2054	only	-	Oct	Mon>=3	2:00	0	S
++#Rule	Zion	2055	2080	-	Oct	Sun>=2	2:00	0	S
++#Rule	Zion	2081	only	-	Oct	Mon>=3	2:00	0	S
++#Rule	Zion	2082	max	-	Oct	Sun>=2	2:00	0	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Jerusalem	2:20:56 -	LMT	1880
+@@ -1385,6 +1382,16 @@
+ # From Arthur David Olson (2009-04-06):
+ # We still have Jordan switching to DST on Thursdays in 2000 and 2001.
+ 
++# From Steffen Thorsen (2012-10-25):
++# Yesterday the government in Jordan announced that they will not
++# switch back to standard time this winter, so the will stay on DST
++# until about the same time next year (at least).
++# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
++#
++# From Paul Eggert (2012-10-25):
++# For now, assume this is just a one-year measure.  If it becomes
++# permanent, we should move Jordan from EET to AST effective tomorrow.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Jordan	1973	only	-	Jun	6	0:00	1:00	S
+ Rule	Jordan	1973	1975	-	Oct	1	0:00	0	-
+@@ -1413,7 +1420,8 @@
+ Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
+ Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
+ Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
+-Rule	Jordan	2006	max	-	Oct	lastFri	0:00s	0	-
++Rule	Jordan	2006	2011	-	Oct	lastFri	0:00s	0	-
++Rule	Jordan	2013	max	-	Oct	lastFri	0:00s	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Amman	2:23:44 -	LMT	1931
+ 			2:00	Jordan	EE%sT
+@@ -2316,6 +2324,8 @@
+ 
+ # From Arthur David Olson (2011-09-20):
+ # 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
++# From Paul Eggert (2012-10-12):
++# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+@@ -2326,7 +2336,7 @@
+ 			2:00 Palestine	EE%sT	2011 Apr  2 12:01
+ 			2:00	1:00	EEST	2011 Aug  1
+ 			2:00	-	EET	2012 Mar 30
+-			2:00	1:00	EEST	2012 Sep 28
++			2:00	1:00	EEST	2012 Sep 21 1:00
+ 			2:00	-	EET
+ 
+ Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
+@@ -2341,7 +2351,7 @@
+ 			2:00	-	EET	2011 Aug 30
+ 			2:00	1:00	EEST	2011 Sep 30 3:00
+ 			2:00	-	EET	2012 Mar 30
+-			2:00	1:00	EEST	2012 Sep 28 3:00
++			2:00	1:00	EEST	2012 Sep 21 1:00
+ 			2:00	-	EET
+ 
+ # Paracel Is
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -651,6 +651,23 @@
+ # Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
+ # seasons, there is not yet any indication that this trend will continue on
+ # a regular basis. For now, we have explicitly listed the transitions below.
++#
++# From Nicky (2012-09-10):
++# Daylight Saving Time commences on Sunday 30th September 2012 and
++# ends on Sunday 7th of April 2013.
++#
++# Please find link below for more information.
++# http://www.mcil.gov.ws/mcil_publications.html
++#
++# That publication also includes dates for Summer of 2013/4 as well
++# which give the impression of a pattern in selecting dates for the
++# future, so for now, we will guess this will continue.
++
++# Western Samoa
++# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
++Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
++Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
++# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
+ 			-11:26:56 -	LMT	1911
+ 			-11:30	-	SAMT	1950		# Samoa Time
+@@ -658,8 +675,8 @@
+ 			-11:00	1:00	WSDT	2011 Apr 2 4:00
+ 			-11:00	-	WST	2011 Sep 24 3:00
+ 			-11:00	1:00	WSDT	2011 Dec 30
+-			 13:00	1:00	WSDT	2012 Apr 1 4:00
+-			 13:00	-	WST
++			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
++			 13:00	WS	WS%sT
+ 
+ # Solomon Is
+ # excludes Bougainville, for which see Papua New Guinea
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -2820,6 +2820,13 @@
+ # http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
+ # </a>
+ 
++# From Steffen Thorsen (2012-11-03):
++# Radio Reloj and many other sources report that Cuba is changing back
++# to standard time on 2012-11-04:
++# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
++# From Paul Eggert (2012-11-03):
++# For now, assume the future rule is first Sunday in November.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
+ Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
+@@ -2857,7 +2864,7 @@
+ Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
+ Rule	Cuba	2011	only	-	Nov	13	0:00s	0	S
+ Rule	Cuba	2012	only	-	Apr	1	0:00s	1:00	D
+-Rule	Cuba	2012	max	-	Oct	lastSun	0:00s	0	S
++Rule	Cuba	2012	max	-	Nov	Sun>=1	0:00s	0	S
+ Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -852,6 +852,15 @@
+ # http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
+ # </a>
+ 
++# From Kelley Cook (2012-10-16):
++# The governor of state of Bahia in Brazil announced on Thursday that
++# due to public pressure, he is reversing the DST policy they implemented
++# last year and will not be going to Summer Time on October 21st....
++# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
++
++# From Rodrigo Severo (2012-10-16):
++# Tocantins state will have DST.
++# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ # Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
+@@ -1071,7 +1080,8 @@
+ 			-3:00	Brazil	BR%sT	1990 Sep 17
+ 			-3:00	-	BRT	1995 Sep 14
+ 			-3:00	Brazil	BR%sT	2003 Sep 24
+-			-3:00	-	BRT
++			-3:00	-	BRT	2012 Oct 21
++			-3:00	Brazil	BR%sT
+ #
+ # Alagoas (AL), Sergipe (SE)
+ Zone America/Maceio	-2:22:52 -	LMT	1914
+@@ -1090,7 +1100,8 @@
+ Zone America/Bahia	-2:34:04 -	LMT	1914
+ 			-3:00	Brazil	BR%sT	2003 Sep 24
+ 			-3:00	-	BRT	2011 Oct 16
+-			-3:00	Brazil	BR%sT
++			-3:00	Brazil	BR%sT	2012 Oct 21
++			-3:00	-	BRT
+ #
+ # Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+ # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8009987-tzdata2013b.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,2165 @@
+# HG changeset patch
+# User peytoia
+# Date 1363347351 -32400
+# Node ID d0902320c58f1b4c339e2aec3f120c9d6e3ea732
+# Parent  1f833e4211177700a66cc22a0c5a794448c1a29a
+8009987: (tz) Support tzdata2013b
+Reviewed-by: okutsu
+
+--- openjdk/jdk/make/sun/javazic/tzdata/VERSION
++++ openjdk/jdk/make/sun/javazic/tzdata/VERSION
+@@ -21,4 +21,4 @@
+ # or visit www.oracle.com if you need additional information or have any
+ # questions.
+ #
+-tzdata2012i
++tzdata2013b
+--- openjdk/jdk/make/sun/javazic/tzdata/africa
++++ openjdk/jdk/make/sun/javazic/tzdata/africa
+@@ -27,9 +27,9 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+-# From Paul Eggert (2006-03-22):
++# From Paul Eggert (2013-02-21):
+ #
+ # A good source for time zone historical data outside the U.S. is
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+@@ -48,6 +48,10 @@
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++# <http://www.jstor.org/stable/1774359>.
++#
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+@@ -139,8 +143,12 @@
+ 			1:00	-	WAT
+ 
+ # Botswana
++# From Paul Eggert (2013-02-21):
++# Milne says they were regulated by the Cape Town Signal in 1899;
++# assume they switched to 2:00 when Cape Town did.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Gaborone	1:43:40 -	LMT	1885
++			1:30	-	SAST	1903 Mar
+ 			2:00	-	CAT	1943 Sep 19 2:00
+ 			2:00	1:00	CAST	1944 Mar 19 2:00
+ 			2:00	-	CAT
+@@ -212,6 +220,11 @@
+ 
+ # Egypt
+ 
++# Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh
++# observatory; round to nearest.  Milne also says that the official time for
++# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
++# did not apply to Cairo, Alexandria, or Port Said.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
+ Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
+@@ -352,7 +365,7 @@
+ Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
++Zone	Africa/Cairo	2:05:09 -	LMT	1900 Oct
+ 			2:00	Egypt	EE%sT
+ 
+ # Equatorial Guinea
+@@ -447,6 +460,20 @@
+ 
+ # Libya
+ 
++# From Even Scharning (2012-11-10):
++# Libya set their time one hour back at 02:00 on Saturday November 10.
++# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
++# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
++#
++# Steffen Thorsen forwarded a translation (2012-11-10) in
++# http://mm.icann.org/pipermail/tz/2012-November/018451.html
++#
++# From Tim Parenti (2012-11-11):
++# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
++# The DST rules planned for 2013 and onward roughly mirror those of Europe
++# (either two days before them or five days after them, so as to fall on
++# lastFri instead of lastSun).
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
+ Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
+@@ -461,17 +488,21 @@
+ Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
+ Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
+ Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
++Rule	Libya	1997	only	-	Apr	 4	0:00	1:00	S
++Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
++Rule	Libya	2013	max	-	Mar	lastFri	1:00	1:00	S
++Rule	Libya	2013	max	-	Oct	lastFri	2:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Africa/Tripoli	0:52:44 -	LMT	1920
+ 			1:00	Libya	CE%sT	1959
+ 			2:00	-	EET	1982
+ 			1:00	Libya	CE%sT	1990 May  4
+-# The following entries are from Shanks & Pottenger;
++# The 1996 and 1997 entries are from Shanks & Pottenger;
+ # the IATA SSIM data contain some obvious errors.
+ 			2:00	-	EET	1996 Sep 30
+-			1:00	-	CET	1997 Apr  4
+-			1:00	1:00	CEST	1997 Oct  4
+-			2:00	-	EET
++			1:00	Libya	CE%sT	1997 Oct  4
++			2:00	-	EET	2012 Nov 10 2:00
++			1:00	Libya	CE%sT
+ 
+ # Madagascar
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -838,6 +869,41 @@
+ # 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
+ # August 20, 2012 from 2:00 am.
+ 
++# From Paul Eggert (2013-03-06):
++# Morocco's daylight-saving transitions due to Ramadan seem to be
++# announced a bit in advance.  On 2012-07-11 the Moroccan government
++# announced that year's Ramadan daylight-saving transitions would be
++# 2012-07-20 and 2012-08-20; see
++# <http://www.mmsp.gov.ma/fr/actualites.aspx?id=288>.
++#
++# To estimate what the Moroccan government will do in future years,
++# transition dates for 2013 through 2021 were determined by running
++# the following program under GNU Emacs 24.3:
++#
++# (let ((islamic-year 1434))
++#   (while (< islamic-year 1444)
++#     (let ((a
++#	     (calendar-gregorian-from-absolute
++#	      (calendar-islamic-to-absolute (list 9 1 islamic-year))))
++#	    (b
++#	     (calendar-gregorian-from-absolute
++#	      (calendar-islamic-to-absolute (list 10 1 islamic-year)))))
++#	(insert
++#	 (format
++#	  (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 3:00\t0\t-\n"
++#		  "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 2:00\t1:00\tS\n")
++#	  (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
++#	  (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
++#     (setq islamic-year (+ 1 islamic-year))))
++#
++# with the results hand-edited for 2020-2022, when the normal spring-forward
++# date falls during the estimated Ramadan.
++#
++# From 2023 through 2038 Ramadan is not predicted to overlap with
++# daylight saving time.  Starting in 2039 there will be overlap again,
++# but 32-bit time_t values roll around in 2038 so for now do not worry
++# about dates after 2038.
++
+ # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ 
+ Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
+@@ -863,10 +929,28 @@
+ Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
+ Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
+ Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+-Rule	Morocco	2012	max	-	Apr	 lastSun 2:00	1:00	S
++Rule	Morocco	2012	2019	-	Apr	 lastSun 2:00	1:00	S
+ Rule	Morocco	2012	max	-	Sep	 lastSun 3:00	0	-
+ Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
+ Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
++Rule	Morocco	2013	only	-	Jul	  9	 3:00	0	-
++Rule	Morocco	2013	only	-	Aug	  8	 2:00	1:00	S
++Rule	Morocco	2014	only	-	Jun	 29	 3:00	0	-
++Rule	Morocco	2014	only	-	Jul	 29	 2:00	1:00	S
++Rule	Morocco	2015	only	-	Jun	 18	 3:00	0	-
++Rule	Morocco	2015	only	-	Jul	 18	 2:00	1:00	S
++Rule	Morocco	2016	only	-	Jun	  7	 3:00	0	-
++Rule	Morocco	2016	only	-	Jul	  7	 2:00	1:00	S
++Rule	Morocco	2017	only	-	May	 27	 3:00	0	-
++Rule	Morocco	2017	only	-	Jun	 26	 2:00	1:00	S
++Rule	Morocco	2018	only	-	May	 16	 3:00	0	-
++Rule	Morocco	2018	only	-	Jun	 15	 2:00	1:00	S
++Rule	Morocco	2019	only	-	May	  6	 3:00	0	-
++Rule	Morocco	2019	only	-	Jun	  5	 2:00	1:00	S
++Rule	Morocco	2020	only	-	May	 24	 2:00	1:00	S
++Rule	Morocco	2021	only	-	May	 13	 2:00	1:00	S
++Rule	Morocco	2022	only	-	May	  3	 2:00	1:00	S
++Rule	Morocco	2023	max	-	Apr	 lastSun 2:00	1:00	S
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
+--- openjdk/jdk/make/sun/javazic/tzdata/antarctica
++++ openjdk/jdk/make/sun/javazic/tzdata/antarctica
+@@ -73,10 +73,8 @@
+ Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
+ Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
+ Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+-Rule	ChileAQ	2012	only	-	Apr	Sun>=23	3:00u	0	-
+-Rule	ChileAQ	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
+-Rule	ChileAQ	2013	max	-	Mar	Sun>=9	3:00u	0	-
+-Rule	ChileAQ	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
++Rule	ChileAQ	2012	max	-	Apr	Sun>=23	3:00u	0	-
++Rule	ChileAQ	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
+ 
+ # These rules are stolen from the `australasia' file.
+ Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
+--- openjdk/jdk/make/sun/javazic/tzdata/asia
++++ openjdk/jdk/make/sun/javazic/tzdata/asia
+@@ -27,9 +27,9 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+-# From Paul Eggert (2006-03-22):
++# From Paul Eggert (2013-02-21):
+ #
+ # A good source for time zone historical data outside the U.S. is
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+@@ -48,6 +48,10 @@
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++# <http://www.jstor.org/stable/1774359>.
++#
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+@@ -302,9 +306,12 @@
+ 			8:00	-	BNT
+ 
+ # Burma / Myanmar
++
++# Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
+-			6:24:36	-	RMT	1920	   # Rangoon Mean Time?
++			6:24:40	-	RMT	1920	   # Rangoon Mean Time?
+ 			6:30	-	BURT	1942 May   # Burma Time
+ 			9:00	-	JST	1945 May 3
+ 			6:30	-	MMT		   # Myanmar Time
+@@ -407,7 +414,8 @@
+ 			8:00	PRC	C%sT
+ # Zhongyuan Time ("Central plain Time")
+ # most of China
+-Zone	Asia/Shanghai	8:05:52	-	LMT	1928
++# Milne gives 8:05:56.7; round to nearest.
++Zone	Asia/Shanghai	8:05:57	-	LMT	1928
+ 			8:00	Shang	C%sT	1949
+ 			8:00	PRC	C%sT
+ # Long-shu Time (probably due to Long and Shu being two names of that area)
+@@ -504,6 +512,10 @@
+ 			8:00	PRC	C%sT
+ 
+ 
++# Hong Kong (Xianggang)
++
++# Milne gives 7:36:41.7; round this.
++
+ # From Lee Yiu Chung (2009-10-24):
+ # I found there are some mistakes for the...DST rule for Hong
+ # Kong. [According] to the DST record from Hong Kong Observatory (actually,
+@@ -570,7 +582,6 @@
+ # The Japanese surrender of Hong Kong was signed 1945-09-15.
+ # For lack of anything better, use start of those days as the transition times.
+ 
+-# Hong Kong (Xianggang)
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	HK	1941	only	-	Apr	1	3:30	1:00	S
+ Rule	HK	1941	only	-	Sep	30	3:30	0	-
+@@ -592,7 +603,7 @@
+ Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
+ Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
++Zone	Asia/Hong_Kong	7:36:42 -	LMT	1904 Oct 30
+ 			8:00	HK	HK%sT	1941 Dec 25
+ 			9:00	-	JST	1945 Sep 15
+ 			8:00	HK	HK%sT
+@@ -669,6 +680,9 @@
+ ###############################################################################
+ 
+ # Cyprus
++#
++# Milne says the Eastern Telegraph Company used 2:14:00.  Stick with LMT.
++#
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
+ Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
+@@ -1222,7 +1236,6 @@
+ Rule	Zion	2012	only	-	Sep	23	2:00	0	S
+ 
+ # From Ephraim Silverberg (2012-10-18):
+-
+ # Yesterday, the Interior Ministry Committee, after more than a year
+ # past, approved sending the proposed June 2011 changes to the Time
+ # Decree Law back to the Knesset for second and third (final) votes
+@@ -1235,6 +1248,10 @@
+ # later (i.e. at 02:00 the first Monday after October 2).
+ # [Rosh Hashana holidays are factored in until 2100.]
+ 
++# From Ephraim Silverberg (2012-11-05):
++# The Knesset passed today (in second and final readings) the amendment to the
++# Time Decree Law making the changes ... law.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
+ Rule	Zion	2013	2026	-	Oct	Sun>=2	2:00	0	S
+@@ -1824,8 +1841,11 @@
+ 			5:45	-	NPT	# Nepal Time
+ 
+ # Oman
++
++# Milne says 3:54:24 was the meridian of the Muscat Tidal Observatory.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Muscat	3:54:20 -	LMT	1920
++Zone	Asia/Muscat	3:54:24 -	LMT	1920
+ 			4:00	-	GST
+ 
+ # Pakistan
+@@ -2072,8 +2092,7 @@
+ # occurred before our cutoff date of 1970.
+ # However, as we get more information, we may need to add entries
+ # for parts of the West Bank as they transitioned from Israel's rules
+-# to Palestine's rules.  If you have more info about this, please
+-# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
++# to Palestine's rules.
+ 
+ # From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
+ # forwarded by Ephraim Silverberg:
+@@ -2421,6 +2440,13 @@
+ # no information
+ 
+ # Sri Lanka
++
++# From Paul Eggert (2013-02-21):
++# Milne says "Madras mean time use from May 1, 1898.  Prior to this Colombo
++# mean time, 5h. 4m. 21.9s. F., was used."  But 5:04:21.9 differs considerably
++# from Colombo's meridian 5:19:24, so for now ignore Milne and stick with
++# Shanks and Pottenger.
++
+ # From Paul Eggert (1996-09-03):
+ # "Sri Lanka advances clock by an hour to avoid blackout"
+ # (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
+@@ -2720,6 +2746,12 @@
+ 
+ # Vietnam
+ 
++# From Paul Eggert (2013-02-21):
++# Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
++# used in Lower Laos, Cambodia, and Annam.  But this is quite a ways
++# from Saigon's location.  For now, ignore this and stick with Shanks
++# and Pottenger.
++
+ # From Arthur David Olson (2008-03-18):
+ # The English-language name of Vietnam's most populous city is "Ho Chi Min City";
+ # we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+@@ -2733,6 +2765,10 @@
+ 			7:00	-	ICT
+ 
+ # Yemen
++
++# Milne says 2:59:54 was the meridian of the saluting battery at Aden,
++# and that Yemen was at 1:55:56, the meridian of the Hagia Sophia.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Asia/Aden	3:00:48	-	LMT	1950
++Zone	Asia/Aden	2:59:54	-	LMT	1950
+ 			3:00	-	AST
+--- openjdk/jdk/make/sun/javazic/tzdata/australasia
++++ openjdk/jdk/make/sun/javazic/tzdata/australasia
+@@ -269,6 +269,9 @@
+ 			6:30	-	CCT	# Cocos Islands Time
+ 
+ # Fiji
++
++# Milne gives 11:55:44 for Suva.
++
+ # From Alexander Krivenyshev (2009-11-10):
+ # According to Fiji Broadcasting Corporation,  Fiji plans to re-introduce DST
+ # from November 29th 2009  to April 25th 2010.
+@@ -362,7 +365,7 @@
+ Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+ Rule	Fiji	2012	max	-	Jan	Sun>=18	3:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
++Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26	# Suva
+ 			12:00	Fiji	FJ%sT	# Fiji Time
+ 
+ # French Polynesia
+@@ -803,9 +806,9 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+-# From Paul Eggert (2006-03-22):
++# From Paul Eggert (2013-02-21):
+ # A good source for time zone historical data outside the U.S. is
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
+@@ -823,6 +826,10 @@
+ # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+ # I found in the UCLA library.
+ #
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++# <http://www.jstor.org/stable/1774359>.
++#
+ # A reliable and entertaining source about time zones is
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+ #
+--- openjdk/jdk/make/sun/javazic/tzdata/europe
++++ openjdk/jdk/make/sun/javazic/tzdata/europe
+@@ -27,7 +27,7 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+ # From Paul Eggert (2006-03-22):
+ # A good source for time zone historical data outside the U.S. is
+@@ -53,6 +53,12 @@
+ #	William Willett, The Waste of Daylight, 19th edition
+ #	</a> (1914-03)
+ #
++#	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++#	<http://www.jstor.org/stable/1774359>.  He writes:
++#	"It is requested that corrections and additions to these tables
++#	may be sent to Mr. John Milne, Royal Geographical Society,
++#	Savile Row, London."  Nowadays please email them to tz@iana.org.
++#
+ #	Brazil's Departamento Servico da Hora (DSH),
+ #	<a href="http://pcdsh01.on.br/HISTHV.htm">
+ #	History of Summer Time
+@@ -689,6 +695,8 @@
+ 
+ # Austria
+ 
++# Milne says Vienna time was 1:05:21.
++
+ # From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
+ # 1945-11-18, but the Austrian Federal Office of Metrology and
+ # Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
+@@ -706,7 +714,7 @@
+ Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
+ Rule	Austria	1980	only	-	Sep	28	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
++Zone	Europe/Vienna	1:05:21 -	LMT	1893 Apr
+ 			1:00	C-Eur	CE%sT	1920
+ 			1:00	Austria	CE%sT	1940 Apr  1 2:00s
+ 			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
+@@ -1262,6 +1270,21 @@
+ 			1:00	Germany	CE%sT	1980
+ 			1:00	EU	CE%sT
+ 
++# From Tobias Conradi (2011-09-12):
++# Busingen <http://www.buesingen.de>, surrounded by the Swiss canton
++# Schaffhausen, did not start observing DST in 1980 as the rest of DE
++# (West Germany at that time) and DD (East Germany at that time) did.
++# DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
++# which in turn is covered by the zone Europe/Berlin.
++#
++# Source for the time in Busingen 1980:
++# http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
++
++# From Arthur David Olson (2012-03-03):
++# Busingen and Zurich have shared clocks since 1970.
++
++Link	Europe/Zurich	Europe/Busingen
++
+ # Georgia
+ # Please see the "asia" file for Asia/Tbilisi.
+ # Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
+@@ -2066,6 +2089,70 @@
+ 
+ # Russia
+ 
++# From Alexander Krivenyshev (2011-09-15):
++# Based on last Russian Government Decree # 725 on August 31, 2011
++# (Government document
++# <a href="http://www.government.ru/gov/results/16355/print/">
++# http://www.government.ru/gov/results/16355/print/
++# </a>
++# in Russian)
++# there are few corrections have to be made for some Russian time zones...
++# All updated Russian Time Zones were placed in table and translated to English
++# by WorldTimeZone.com at the link below:
++# <a href="http://www.worldtimezone.com/dst_news/dst_news_russia36.htm">
++# http://www.worldtimezone.com/dst_news/dst_news_russia36.htm
++# </a>
++
++# From Sanjeev Gupta (2011-09-27):
++# Scans of [Decree #23 of January 8, 1992] are available at:
++# <a href="http://government.consultant.ru/page.aspx?1223966">
++# http://government.consultant.ru/page.aspx?1223966
++# They are in Cyrillic letters (presumably Russian).
++
++# From Arthur David Olson (2012-05-09):
++# Regarding the instant when clocks in time-zone-shifting parts of Russia
++# changed in September 2011:
++#
++# One source is
++# < a href="http://government.ru/gov/results/16355/>
++# http://government.ru/gov/results/16355/
++# </a>
++# which, according to translate.google.com, begins "Decree of August 31,
++# 2011 No 725" and contains no other dates or "effective date" information.
++#
++# Another source is
++# <a href="http://www.rg.ru/2011/09/06/chas-zona-dok.html">
++# http://www.rg.ru/2011/09/06/chas-zona-dok.html
++# </a>
++# which, according to translate.google.com, begins "Resolution of the
++# Government of the Russian Federation on August 31, 2011 N 725" and also
++# contains "Date first official publication: September 6, 2011 Posted on:
++# in the 'RG' - Federal Issue number 5573 September 6, 2011" but which
++# does not contain any "effective date" information.
++#
++# Another source is
++# <a href="http://en.wikipedia.org/wiki/Oymyakonsky_District#cite_note-RuTime-7">
++# http://en.wikipedia.org/wiki/Oymyakonsky_District#cite_note-RuTime-7
++# </a>
++# which, in note 8, contains "Resolution #725 of August 31, 2011...
++# Effective as of after 7 days following the day of the official publication"
++# but which does not contain any reference to September 6, 2011.
++#
++# The Wikipedia article refers to
++# <a href="http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=118896">
++# http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=118896
++# </a>
++# which seems to copy the text of the government.ru page.
++#
++# Tobias Conradi combines Wikipedia's
++# "as of after 7 days following the day of the official publication"
++# with www.rg.ru's "Date of first official publication: September 6, 2011" to get
++# September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias Conradi notes).
++#
++# None of the sources indicates a time of day for changing clocks.
++#
++# Go with 2011-09-13 0:00s.
++
+ # From Paul Eggert (2006-03-22):
+ # Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+ # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+@@ -2293,14 +2380,32 @@
+ # [parts of] Respublika Sakha (Yakutiya).
+ 
+ # From Oscar van Vlijmen (2009-11-29):
+-# The Sakha districts are: Bulunskij, Verkhoyanskij, Tomponskij, Ust'-Majskij,
+-# Ust'-Yanskij.
++# The Sakha districts are: Bulunskij, Verkhoyanskij, ... Ust'-Yanskij.
+ Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
+ 			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
+ 			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
+ 			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
+ 			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+ 			11:00	-	VLAT
++
++# From Arthur David Olson (2012-05-09):
++# Tomponskij and Ust'-Majskij switched from Vladivostok time to Yakutsk time
++# in 2011.
++#
++# From Paul Eggert (2012-11-25):
++# Shanks and Pottenger (2003) has Khandyga on Yakutsk time.
++# Make a wild guess that it switched to Vladivostok time in 2004.
++# This transition is no doubt wrong, but we have no better info.
++#
++Zone Asia/Khandyga	 9:02:13 -	LMT	1919 Dec 15
++			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
++			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
++			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
++			 9:00	Russia	YAK%sT	2004
++			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
++			11:00	-	VLAT	2011 Sep 13 0:00s # Decree 725?
++			10:00	-	YAKT
++
+ #
+ # Sakhalinskaya oblast'.
+ # The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
+@@ -2319,14 +2424,26 @@
+ 
+ # From Oscar van Vlijmen (2009-11-29):
+ # The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
+-# Nizhnekolymskij, Ojmyakonskij, Srednekolymskij.
++# Nizhnekolymskij, ... Srednekolymskij.
+ Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
+ 			10:00	-	MAGT	1930 Jun 21 # Magadan Time
+ 			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+ 			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+ 			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+ 			12:00	-	MAGT
+-#
++
++# From Arthur David Olson (2012-05-09):
++# Ojmyakonskij and the Kuril Islands switched from
++# Magadan time to Vladivostok time in 2011.
++Zone Asia/Ust-Nera	 9:32:54 -	LMT	1919 Dec 15
++			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
++			 9:00	Russia	YAKT	1981 Apr  1
++			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
++			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
++			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
++			12:00	-	MAGT	2011 Sep 13 0:00s # Decree 725?
++			11:00	-	VLAT
++
+ # From Oscar van Vlijmen (2001-08-25): [This region consists of]
+ # Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
+ #
+--- openjdk/jdk/make/sun/javazic/tzdata/northamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/northamerica
+@@ -29,7 +29,7 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+ # From Paul Eggert (1999-03-22):
+ # A reliable and entertaining source about time zones is
+@@ -1042,6 +1042,9 @@
+ #	William Willett, The Waste of Daylight, 19th edition
+ #	</a> (1914-03)
+ #
++#	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++#	<http://www.jstor.org/stable/1774359>.
++#
+ # See the `europe' file for Greenland.
+ 
+ # Canada
+@@ -2577,6 +2580,8 @@
+ 
+ # Bahamas
+ #
++# For 1899 Milne gives -5:09:29.5; round that.
++#
+ # From Sue Williams (2006-12-07):
+ # The Bahamas announced about a month ago that they plan to change their DST
+ # rules to sync with the U.S. starting in 2007....
+@@ -2586,11 +2591,14 @@
+ Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
+ Rule	Bahamas	1964	1975	-	Apr	lastSun	2:00	1:00	D
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Nassau	-5:09:24 -	LMT	1912 Mar 2
++Zone	America/Nassau	-5:09:30 -	LMT	1912 Mar 2
+ 			-5:00	Bahamas	E%sT	1976
+ 			-5:00	US	E%sT
+ 
+ # Barbados
++
++# For 1899 Milne gives -3:58:29.2; round that.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Barb	1977	only	-	Jun	12	2:00	1:00	D
+ Rule	Barb	1977	1978	-	Oct	Sun>=1	2:00	0	S
+@@ -2598,8 +2606,8 @@
+ Rule	Barb	1979	only	-	Sep	30	2:00	0	S
+ Rule	Barb	1980	only	-	Sep	25	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Barbados	-3:58:28 -	LMT	1924		# Bridgetown
+-			-3:58:28 -	BMT	1932	  # Bridgetown Mean Time
++Zone America/Barbados	-3:58:29 -	LMT	1924		# Bridgetown
++			-3:58:29 -	BMT	1932	  # Bridgetown Mean Time
+ 			-4:00	Barb	A%sT
+ 
+ # Belize
+@@ -2617,6 +2625,9 @@
+ 
+ # Bermuda
+ 
++# For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower,
++# Bermuda dockyard, Ireland I; round that.
++
+ # From Dan Jones, reporting in The Royal Gazette (2006-06-26):
+ 
+ # Next year, however, clocks in the US will go forward on the second Sunday
+@@ -2626,7 +2637,7 @@
+ # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone Atlantic/Bermuda	-4:19:04 -	LMT	1930 Jan  1 2:00    # Hamilton
++Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1 2:00    # Hamilton
+ 			-4:00	-	AST	1974 Apr 28 2:00
+ 			-4:00	Bahamas	A%sT	1976
+ 			-4:00	US	A%sT
+@@ -2638,6 +2649,9 @@
+ 			-5:00	-	EST
+ 
+ # Costa Rica
++
++# Milne gives -5:36:13.3 as San Jose mean time; round to nearest.
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
+ Rule	CR	1979	1980	-	Jun	Sun>=1	0:00	0	S
+@@ -2648,14 +2662,19 @@
+ Rule	CR	1992	only	-	Mar	15	0:00	0	S
+ # There are too many San Joses elsewhere, so we'll use `Costa Rica'.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
+-			-5:36:20 -	SJMT	1921 Jan 15 # San Jose Mean Time
++Zone America/Costa_Rica	-5:36:13 -	LMT	1890		# San Jose
++			-5:36:13 -	SJMT	1921 Jan 15 # San Jose Mean Time
+ 			-6:00	CR	C%sT
+ # Coco
+ # no information; probably like America/Costa_Rica
+ 
+ # Cuba
+ 
++# From Paul Eggert (2013-02-21):
++# Milne gives -5:28:50.45 for the observatory at Havana, -5:29:23.57
++# for the port, and -5:30 for meteorological observations.
++# For now, stick with Shanks & Pottenger.
++
+ # From Arthur David Olson (1999-03-29):
+ # The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
+ # the Cuban National Team and the Baltimore Orioles was carried live on
+@@ -3004,24 +3023,21 @@
+ # apparently using the same start and end date as USA/Canada.
+ # So this means they have already changed their time.
+ #
+-# (Sources in French):
+-# <a href="http://www.alterpresse.org/spip.php?article12510">
+ # http://www.alterpresse.org/spip.php?article12510
+-# </a>
+-# <a href="http://radiovision2000haiti.net/home/?p=13253">
+ # http://radiovision2000haiti.net/home/?p=13253
+-# </a>
+ #
+-# Our coverage:
+-# <a href="http://www.timeanddate.com/news/time/haiti-dst-2012.html">
+-# http://www.timeanddate.com/news/time/haiti-dst-2012.html
+-# </a>
+-
+ # From Arthur David Olson (2012-03-11):
+ # The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to
+ # 3:00 a.m. rather than the traditional Haitian jump at midnight.
+-# Assume a US-style fall back as well XXX.
+-# Do not yet assume that the change carries forward past 2012 XXX.
++# Assume a US-style fall back as well.
++
++# From Steffen Thorsen (2013-03-10):
++# It appears that Haiti is observing DST this year as well, same rules
++# as US/Canada.  They did it last year as well, and it looks like they
++# are going to observe DST every year now...
++#
++# http://radiovision2000haiti.net/public/haiti-avis-changement-dheure-dimanche/
++# http://www.canalplushaiti.net/?p=6714
+ 
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
+@@ -3033,8 +3049,8 @@
+ Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
+ Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
+ Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
+-Rule	Haiti	2012	only	-	Mar	Sun>=8	2:00	1:00	D
+-Rule	Haiti	2012	only	-	Nov	Sun>=1	2:00	0	S
++Rule	Haiti	2012	max	-	Mar	Sun>=8	2:00	1:00	D
++Rule	Haiti	2012	max	-	Nov	Sun>=1	2:00	0	S
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Port-au-Prince -4:49:20 -	LMT	1890
+ 			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
+--- openjdk/jdk/make/sun/javazic/tzdata/southamerica
++++ openjdk/jdk/make/sun/javazic/tzdata/southamerica
+@@ -27,13 +27,17 @@
+ 
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+-# tz@elsie.nci.nih.gov for general use in the future).
++# tz@iana.org for general use in the future).
+ 
+ # From Paul Eggert (2006-03-22):
+ # A good source for time zone historical data outside the U.S. is
+ # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+ # San Diego: ACS Publications, Inc. (2003).
+ #
++# For data circa 1899, a common source is:
++# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
++# <http://www.jstor.org/stable/1774359>.
++#
+ # Gwillim Law writes that a good source
+ # for recent time zone data is the International Air Transport
+ # Association's Standard Schedules Information Manual (IATA SSIM),
+@@ -404,21 +408,11 @@
+ # <a/>
+ # is the official page for the Province Government).
+ #
+-# There's also a note in only one of the major national papers (La Nación) at
+-# <a href="http://www.lanacion.com.ar/nota.asp?nota_id=1107912">
++# There's also a note in only one of the major national papers ...
+ # http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+-# </a>
+ #
+-# The press release says:
+-#  (...) anunció que el próximo domingo a las 00:00 los puntanos deberán
+-# atrasar una hora sus relojes.
+-#
+-# A partir de entonces, San Luis establecerá el huso horario propio de
+-# la Provincia. De esta manera, durante el periodo del calendario anual
+-# 2009, el cambio horario quedará comprendido entre las 00:00 del tercer
+-# domingo de marzo y las 24:00 del segundo sábado de octubre.
+-# Quick&dirty translation
+-# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis
++# The press release says [quick and dirty translation]:
++# ... announced that next Sunday, at 00:00, Puntanos (the San Luis
+ # inhabitants) will have to turn back one hour their clocks
+ #
+ # Since then, San Luis will establish its own Province timezone. Thus,
+@@ -480,6 +474,9 @@
+ # rules...San Luis is still using "Western ARgentina Time" and it got
+ # stuck on Summer daylight savings time even though the summer is over.
+ 
++# From Paul Eggert (2013-02-21):
++# Milne says Cordoba time was -4:16:48.2.  Round to the nearest second.
++
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ #
+ # Buenos Aires (BA), Capital Federal (CF),
+@@ -835,9 +832,9 @@
+ 
+ # From Guilherme Bernardes Rodrigues (2011-10-07):
+ # There is news in the media, however there is still no decree about it.
+-# I just send a e-mail to Zulmira Brandão at
++# I just send a e-mail to Zulmira Brandao at
+ # <a href="http://pcdsh01.on.br/">http://pcdsh01.on.br/</a> the
+-# oficial agency about time in Brazil, and she confirmed that the old rule is
++# official agency about time in Brazil, and she confirmed that the old rule is
+ # still in force.
+ 
+ # From Guilherme Bernardes Rodrigues (2011-10-14)
+@@ -1266,9 +1263,13 @@
+ # b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
+ # at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
+ # 01:00 on September 2.
+-#
+-# Note that...this is yet another "temporary" change that will be reevaluated
+-# AGAIN in 2013.
++
++# From Steffen Thorsen (2013-02-15):
++# According to several news sources, Chile has extended DST this year,
++# they will end DST later and start DST earlier than planned.  They
++# hope to save energy.  The new end date is 2013-04-28 00:00 and new
++# start date is 2013-09-08 00:00....
++# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
+ 
+ # NOTE: ChileAQ rules for Antarctic bases are stored separately in the
+ # 'antarctica' file.
+@@ -1311,10 +1312,8 @@
+ Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
+ Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
+ Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+-Rule	Chile	2012	only	-	Apr	Sun>=23	3:00u	0	-
+-Rule	Chile	2012	only	-	Sep	Sun>=2	4:00u	1:00	S
+-Rule	Chile	2013	max	-	Mar	Sun>=9	3:00u	0	-
+-Rule	Chile	2013	max	-	Oct	Sun>=9	4:00u	1:00	S
++Rule	Chile	2012	max	-	Apr	Sun>=23	3:00u	0	-
++Rule	Chile	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08.  Ignore these.
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+@@ -1336,17 +1335,23 @@
+ # San Felix, and Antarctic bases, are like America/Santiago.
+ 
+ # Colombia
++
++# Milne gives 4:56:16.4 for Bogota time in 1899; round to nearest.  He writes,
++# "A variation of fifteen minutes in the public clocks of Bogota is not rare."
++
+ # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+ Rule	CO	1992	only	-	May	 3	0:00	1:00	S
+ Rule	CO	1993	only	-	Apr	 4	0:00	0	-
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
+-			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
++Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
++			-4:56:16 -	BMT	1914 Nov 23 # Bogota Mean Time
+ 			-5:00	CO	CO%sT	# Colombia Time
+ # Malpelo, Providencia, San Andres
+ # no information; probably like America/Bogota
+ 
+ # Curacao
++
++# Milne gives 4:35:46.9 for Curacao mean time; round to nearest.
+ #
+ # From Paul Eggert (2006-03-22):
+ # Shanks & Pottenger say that The Bottom and Philipsburg have been at
+@@ -1363,7 +1368,7 @@
+ # though, as far as we know.
+ #
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+-Zone	America/Curacao	-4:35:44 -	LMT	1912 Feb 12	# Willemstad
++Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12	# Willemstad
+ 			-4:30	-	ANT	1965 # Netherlands Antilles Time
+ 			-4:00	-	AST
+ 
+@@ -1377,6 +1382,8 @@
+ 
+ # Ecuador
+ #
++# Milne says the Sentral and South American Telegraph Company used -5:24:15.
++#
+ # From Paul Eggert (2007-03-04):
+ # Apparently Ecuador had a failed experiment with DST in 1992.
+ # <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
+@@ -1583,6 +1590,15 @@
+ # ...
+ Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
+ Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
++#
++# From Steffen Thorsen (2013-03-07):
++# Paraguay will end DST on 2013-03-24 00:00....
++# They do not tell if this will be a permanent change or just this year....
++# http://www.ande.gov.py/interna.php?id=1075
++#
++# From Paul Eggert (2013-03-07):
++# For now, assume it's just this year.
++Rule	Para	2013	only	-	Mar	24	0:00	0	-
+ 
+ # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+ Zone America/Asuncion	-3:50:40 -	LMT	1890
+--- openjdk/jdk/make/sun/javazic/tzdata/zone.tab
++++ openjdk/jdk/make/sun/javazic/tzdata/zone.tab
+@@ -182,7 +182,8 @@
+ CX	-1025+10543	Indian/Christmas
+ CY	+3510+03322	Asia/Nicosia
+ CZ	+5005+01426	Europe/Prague
+-DE	+5230+01322	Europe/Berlin
++DE	+5230+01322	Europe/Berlin	most locations
++DE	+4742+00841	Europe/Busingen	Busingen
+ DJ	+1136+04309	Africa/Djibouti
+ DK	+5540+01235	Europe/Copenhagen
+ DM	+1518-06124	America/Dominica
+@@ -364,8 +365,10 @@
+ RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
+ RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
+ RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
++RU	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky
+ RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
+ RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
++RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky
+ RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
+ RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+ RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java
+@@ -75,6 +75,8 @@
+                                      "Central European Summer Time", "CEST"};
+         String CHAST[] = new String[] {"Chatham Standard Time", "CHAST",
+                                        "Chatham Daylight Time", "CHADT"};
++        String ChST[] = new String[] {"Chamorro Standard Time", "ChST",
++                                      "Chamorro Daylight Time", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Central Indonesia Time", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pacific Standard Time", "PST",
+                                      "Pacific Daylight Time", "PDT"};
++        String SAMOA[] = new String[] {"Samoa Standard Time", "SST",
++                                       "Samoa Daylight Time", "SDT"};
+         String SAST[] = new String[] {"South Africa Standard Time", "SAST",
+                                       "South Africa Summer Time", "SAST"};
+         String SBT[] = new String[] {"Solomon Is. Time", "SBT",
+@@ -175,6 +179,14 @@
+                                      "Turkmenistan Summer Time", "TMST"};
+         String ULAT[]= new String[] {"Ulaanbaatar Time", "ULAT",
+                                      "Ulaanbaatar Summer Time", "ULAST"};
++        String UTC[] = new String[] {"Coordinated Universal Time", "UTC",
++                                     "Coordinated Universal Time", "UTC"};
++        String UZT[] = new String[] {"Uzbekistan Time", "UZT",
++                                     "Uzbekistan Summer Time", "UZST"};
++        String VICTORIA[] = new String[] {"Eastern Standard Time (Victoria)", "EST",
++                                          "Eastern Summer Time (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Vladivostok Time", "VLAT",
++                                      "Vladivostok Summer Time", "VLAST"};
+         String WART[] = new String[] {"Western Argentine Time", "WART",
+                                       "Western Argentine Summer Time", "WARST"};
+         String WAT[] = new String[] {"Western African Time", "WAT",
+@@ -185,18 +197,10 @@
+                                      "West Indonesia Summer Time", "WIST"};
+         String WST_AUS[] = new String[] {"Western Standard Time (Australia)", "WST",
+                                          "Western Summer Time (Australia)", "WST"};
+-        String SAMOA[] = new String[] {"Samoa Standard Time", "SST",
+-                                       "Samoa Daylight Time", "SDT"};
+         String WST_SAMOA[] = new String[] {"West Samoa Time", "WST",
+                                            "West Samoa Daylight Time", "WSDT"};
+-        String ChST[] = new String[] {"Chamorro Standard Time", "ChST",
+-                                      "Chamorro Daylight Time", "ChDT"};
+-        String VICTORIA[] = new String[] {"Eastern Standard Time (Victoria)", "EST",
+-                                          "Eastern Summer Time (Victoria)", "EST"};
+-        String UTC[] = new String[] {"Coordinated Universal Time", "UTC",
+-                                     "Coordinated Universal Time", "UTC"};
+-        String UZT[] = new String[] {"Uzbekistan Time", "UZT",
+-                                     "Uzbekistan Summer Time", "UZST"};
++        String YAKT[] = new String[] {"Yakutsk Time", "YAKT",
++                                      "Yakutsk Summer Time", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Krasnoyarsk Time", "KRAT",
+                                                "Krasnoyarsk Summer Time", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Vladivostok Time", "VLAT",
+-                                               "Vladivostok Summer Time", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Yakutsk Time", "YAKT",
+-                                           "Yakutsk Summer Time", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Yekaterinburg Time", "YEKT",
+                                                  "Yekaterinburg Summer Time", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Middle Europe Time", "MET",
+                                   "Middle Europe Summer Time", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_de.java
+@@ -75,6 +75,8 @@
+                                      "Mitteleurop\u00e4ische Sommerzeit", "MESZ"};
+         String CHAST[] = new String[] {"Chatham Normalzeit", "CHAST",
+                                        "Chatham Sommerzeit", "CHADT"};
++        String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
++                      "Chamorro Sommerzeit", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Zentralindonesische Zeit", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Pazifische Normalzeit", "PST",
+                                      "Pazifische Sommerzeit", "PDT"};
++        String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
++                                       "Samoa Sommerzeit", "SDT"};
+         String SAST[] = new String[] {"S\u00fcdafrikanische Normalzeit", "SAST",
+                                       "S\u00fcdafrikanische Sommerzeit", "SAST"};
+         String SBT[] = new String[] {"Salomoninseln Zeit", "SBT",
+@@ -175,6 +179,14 @@
+                                      "Turkmenische Sommerzeit", "TMST"};
+         String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
+                                      "Ulaanbaatar Sommerzeit", "ULAST"};
++        String UTC[] = new String[] {"Koordinierte Universalzeit", "UTC",
++                                     "Koordinierte Universalzeit", "UTC"};
++        String UZT[] = new String[] {"Usbekistan Zeit", "UZT",
++                                     "Usbekistan Sommerzeit", "UZST"};
++        String VICTORIA[] = new String[] {"\u00d6stliche Normalzeit (Victoria)", "EST",
++                                          "\u00d6stliche Sommerzeit (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Wladiwostok Zeit", "VLAT",
++                                      "Wladiwostok Sommerzeit", "VLAST"};
+         String WART[] = new String[] {"Westargentinische Zeit", "WART",
+                                       "Westargentinische Sommerzeit", "WARST"};
+         String WAT[] = new String[] {"Westafrikanische Zeit", "WAT",
+@@ -185,18 +197,10 @@
+                                      "Westindonesische Sommerzeit", "WIST"};
+         String WST_AUS[] = new String[] {"Westliche Normalzeit (Australien)", "WST",
+                                          "Westliche Sommerzeit (Australien)", "WST"};
+-        String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
+-                                       "Samoa Sommerzeit", "SDT"};
+         String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WST",
+                                            "West Samoa Sommerzeit", "WSDT"};
+-        String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
+-                      "Chamorro Sommerzeit", "ChDT"};
+-        String VICTORIA[] = new String[] {"\u00d6stliche Normalzeit (Victoria)", "EST",
+-                                          "\u00d6stliche Sommerzeit (Victoria)", "EST"};
+-        String UTC[] = new String[] {"Koordinierte Universalzeit", "UTC",
+-                                     "Koordinierte Universalzeit", "UTC"};
+-        String UZT[] = new String[] {"Usbekistan Zeit", "UZT",
+-                                     "Usbekistan Sommerzeit", "UZST"};
++        String YAKT[] = new String[] {"Jakutsk Zeit", "YAKT",
++                                      "Jakutsk Sommerzeit", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Krasnojarsker Zeit", "KRAT",
+                                                "Krasnojarsker Sommerzeit", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Wladiwostok Zeit", "VLAT",
+-                                               "Wladiwostok Sommerzeit", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Jakutsk Zeit", "YAKT",
+-                                           "Jakutsk Sommerzeit", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Jekaterinburger Zeit", "YEKT",
+                                                  "Jekaterinburger Sommerzeit", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Zentraleurop\u00e4ische Zeit", "MET",
+                                   "Zentraleurop\u00e4ische Sommerzeit", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_es.java
+@@ -75,6 +75,8 @@
+                                      "Hora de verano de Europa Central", "CEST"};
+         String CHAST[] = new String[] {"Hora est\u00e1ndar de Chatham", "CHAST",
+                                        "Hora de verano de Chatham", "CHADT"};
++        String ChST[] = new String[] {"Hora est\u00e1ndar de Chamorro", "ChST",
++                                      "Hora de verano de Chamorro", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Hora de Indonesia Central", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Hora est\u00e1ndar del Pac\u00edfico", "PST",
+                                      "Hora de verano del Pac\u00edfico", "PDT"};
++        String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
++                                       "Hora de verano de Samoa", "SDT"};
+         String SAST[] = new String[] {"Hora est\u00e1ndar de Sud\u00e1frica", "SAST",
+                                       "Hora de verano de Sud\u00e1frica", "SAST"};
+         String SBT[] = new String[] {"Hora de las Islas Solomon", "SBT",
+@@ -175,6 +179,14 @@
+                                      "Hora de verano de Turkmenist\u00e1n", "TMST"};
+         String ULAT[]= new String[] {"Hora de Ulan Bator", "ULAT",
+                                      "Hora de verano de Ulan Bator", "ULAST"};
++        String UTC[] = new String[] {"Hora Universal Coordinada", "UTC",
++                                     "Hora Universal Coordinada", "UTC"};
++        String UZT[] = new String[] {"Hora de Uzbekist\u00e1n", "UZT",
++                                     "Hora de verano de Uzbekist\u00e1n", "UZST"};
++        String VICTORIA[] = new String[] {"Hora est\u00e1ndar del Este (Victoria)", "EST",
++                                          "Hora de verano del Este (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Hora de Vladivostok", "VLAT",
++                                      "Hora de verano de Vladivostok", "VLAST"};
+         String WART[] = new String[] {"Hora de Argentina Occidental", "WART",
+                                       "Hora de verano de Argentina Occidental", "WARST"};
+         String WAT[] = new String[] {"Hora de \u00c1frica Occidental", "WAT",
+@@ -185,18 +197,10 @@
+                                      "Indonesia Hora de verano de Indonesia Occidental", "WIST"};
+         String WST_AUS[] = new String[] {"Hora est\u00e1ndar Occidental (Australia)", "WST",
+                                          "Hora de verano Occidental (Australia)", "WST"};
+-        String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
+-                                       "Hora de verano de Samoa", "SDT"};
+         String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WST",
+                                            "Hora de verano de Samoa Occidental", "WSDT"};
+-        String ChST[] = new String[] {"Hora est\u00e1ndar de Chamorro", "ChST",
+-                                      "Hora de verano de Chamorro", "ChDT"};
+-        String VICTORIA[] = new String[] {"Hora est\u00e1ndar del Este (Victoria)", "EST",
+-                                          "Hora de verano del Este (Victoria)", "EST"};
+-        String UTC[] = new String[] {"Hora Universal Coordinada", "UTC",
+-                                     "Hora Universal Coordinada", "UTC"};
+-        String UZT[] = new String[] {"Hora de Uzbekist\u00e1n", "UZT",
+-                                     "Hora de verano de Uzbekist\u00e1n", "UZST"};
++        String YAKT[] = new String[] {"Hora de Yakutsk", "YAKT",
++                                      "Hora de verano de Yakutsk", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Hora de Krasnoyarsk", "KRAT",
+                                                "Hora de verano de Krasnoyarsk", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Hora de Vladivostok", "VLAT",
+-                                               "Hora de verano de Vladivostok", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Hora de Yakutsk", "YAKT",
+-                                           "Hora de verano de Yakutsk", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Hora de Ekaterinburgo", "YEKT",
+                                                  "Hora de verano de Ekaterinburgo", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Hora de Europa Central", "MET",
+                                   "Hora de verano de Europa Central", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_fr.java
+@@ -48,43 +48,45 @@
+         String ADELAIDE[] = new String[] {"Heure standard d'Australie centrale (Australie du sud)", "CST",
+                                           "Heure d'\u00e9t\u00e9 d'Australie centrale (Australie du sud)", "CST"};
+         String AGT[] = new String[] {"Heure D'Argentine", "ART",
+-                                     "Heure d'\u00e9t\u00e9 D'Argentine", "ARST"} ;
++                                     "Heure d'\u00e9t\u00e9 D'Argentine", "ARST"};
+         String AKST[] = new String[] {"Heure normale d'Alaska", "AKST",
+-                                      "Heure avanc\u00e9e d'Alaska", "AKDT"} ;
++                                      "Heure avanc\u00e9e d'Alaska", "AKDT"};
+         String AMT[] = new String[] {"Heure normale d'Amazonie", "AMT",
+-                                     "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST"};
+         String ARAST[] = new String[] {"Heure normale d'Arabie", "AST",
+-                                       "Heure avanc\u00e9e d'Arabie", "ADT"} ;
++                                       "Heure avanc\u00e9e d'Arabie", "ADT"};
+         String ARMT[] = new String[] {"Heure d'Arm\u00e9nie", "AMT",
+-                                      "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST"} ;
++                                      "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST"};
+         String AST[] = new String[] {"Heure normale de l'Atlantique", "AST",
+-                                     "Heure avanc\u00e9e de l'Atlantique", "ADT"} ;
++                                     "Heure avanc\u00e9e de l'Atlantique", "ADT"};
+         String BDT[] = new String[] {"Heure du Bangladesh", "BDT",
+-                                     "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST"};
+         String BRISBANE[] = new String[] {"Heure standard d'Australie orientale (Queensland)", "EST",
+                                           "Heure d'\u00e9t\u00e9 d'Australie orientale (Queensland)", "EST"};
+         String BROKEN_HILL[] = new String[] {"Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST",
+                                              "Heure d'\u00e9t\u00e9 d'Australie centrale(Australie du sud/Nouvelle-Galles du sud)", "CST"};
+         String BRT[] = new String[] {"Heure du Br\u00e9sil", "BRT",
+-                                     "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST"};
+         String BTT[] = new String[] {"Heure du Bhoutan", "BTT",
+-                                     "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST"};
+         String CAT[] = new String[] {"Heure d'Afrique centrale", "CAT",
+-                                     "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST"};
+         String CET[] = new String[] {"Heure d'Europe centrale", "CET",
+-                                     "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST"};
+         String CHAST[] = new String[] {"Heure standard de Chatham", "CHAST",
+                                        "Heure avanc\u00e9e de Chatham", "CHADT"};
++        String ChST[] = new String[] {"Heure normale des \u00eeles Mariannes", "ChST",
++                      "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Heure d'Indon\u00e9sie centrale", "CIT",
+                                      "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST"};
+         String CLT[] = new String[] {"Heure du Chili", "CLT",
+-                                     "Heure d'\u00e9t\u00e9 du Chili", "CLST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Chili", "CLST"};
+         String CST[] = new String[] {"Heure normale du Centre", "CST",
+-                                     "Heure avanc\u00e9e du Centre", "CDT"} ;
++                                     "Heure avanc\u00e9e du Centre", "CDT"};
+         String CTT[] = new String[] {"Heure normale de Chine", "CST",
+-                                     "Heure avanc\u00e9e de Chine", "CDT"} ;
++                                     "Heure avanc\u00e9e de Chine", "CDT"};
+         String CUBA[] = new String[] {"Heure standard de Cuba", "CST",
+                                       "Heure d'\u00e9t\u00e9 de Cuba", "CDT"};
+         String DARWIN[] = new String[] {"Heure standard d'Australie centrale (Territoire du Nord)", "CST",
+@@ -92,17 +94,17 @@
+         String DUBLIN[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+                                         "Heure d'\u00e9t\u00e9 irlandaise", "IST"};
+         String EAT[] = new String[] {"Heure d'Afrique de l'Est", "EAT",
+-                                     "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST"};
+         String EASTER[] = new String[] {"Heure de l'Ile de P\u00e2ques", "EAST",
+                                         "Heure d'\u00e9t\u00e9 de l'Ile de P\u00e2ques", "EASST"};
+         String EET[] = new String[] {"Heure d'Europe de l'Est", "EET",
+-                                     "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST"};
+         String EGT[] = new String[] {"Heure du Groenland de l'Est", "EGT",
+-                                     "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST"};
+         String EST[] = new String[] {"Heure normale de l'Est", "EST",
+-                                     "Heure avanc\u00e9e de l'Est", "EDT"} ;
++                                     "Heure avanc\u00e9e de l'Est", "EDT"};
+         String EST_NSW[] = new String[] {"Heure normale de l'Est (Nouvelle-Galles du Sud)", "EST",
+-                                         "Heure d'\u00e9t\u00e9 de l'Est (Nouvelle-Galles du Sud)", "EST"} ;
++                                         "Heure d'\u00e9t\u00e9 de l'Est (Nouvelle-Galles du Sud)", "EST"};
+         String FET[] = new String[] {"Further-eastern European Time", "FET",
+                                      "Further-eastern European Summer Time", "FEST"};
+         String GHMT[] = new String[] {"Heure du Ghana", "GMT",
+@@ -110,29 +112,29 @@
+         String GAMBIER[] =  new String[] {"Heure de Gambi", "GAMT",
+                                           "Heure d'\u00e9t\u00e9 de Gambi", "GAMST"};
+         String GMT[] = new String[] {"Heure de Greenwich", "GMT",
+-                                   "Heure de Greenwich", "GMT"} ;
++                                   "Heure de Greenwich", "GMT"};
+         String GMTBST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+                                         "Heure d'\u00e9t\u00e9 britannique", "BST"};
+         String GST[] = new String[] {"Heure normale du Golfe", "GST",
+-                                     "Heure avanc\u00e9e du Golfe", "GDT"} ;
++                                     "Heure avanc\u00e9e du Golfe", "GDT"};
+         String HAST[] = new String[] {"Heure normale d'Hawa\u00ef-Al\u00e9outiennes", "HAST",
+-                                      "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT"} ;
++                                      "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT"};
+         String HKT[] =  new String[] {"Heure de Hong Kong", "HKT",
+                                       "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST"};
+         String HST[] = new String[] {"Heure normale d'Hawa\u00ef", "HST",
+-                                     "Heure avanc\u00e9e d'Hawa\u00ef", "HDT"} ;
++                                     "Heure avanc\u00e9e d'Hawa\u00ef", "HDT"};
+         String ICT[] = new String[] {"Heure d'Indochine", "ICT",
+-                                     "Heure d'\u00e9t\u00e9 d'Indochine", "ICST"} ;
++                                     "Heure d'\u00e9t\u00e9 d'Indochine", "ICST"};
+         String IRT[] = new String[] {"Heure normale d'Iran", "IRST",
+-                                     "Heure avanc\u00e9e d'Iran", "IRDT"} ;
++                                     "Heure avanc\u00e9e d'Iran", "IRDT"};
+         String ISRAEL[] = new String[] {"Heure standard d'Isra\u00ebl", "IST",
+                                         "Heure avanc\u00e9e d'Isra\u00ebl", "IDT"};
+         String IST[] = new String[] {"Heure normale d'Inde", "IST",
+-                                     "Heure avanc\u00e9e d'Inde", "IDT"} ;
++                                     "Heure avanc\u00e9e d'Inde", "IDT"};
+         String JST[] = new String[] {"Heure normale du Japon", "JST",
+-                                     "Heure avanc\u00e9e du Japon", "JDT"} ;
++                                     "Heure avanc\u00e9e du Japon", "JDT"};
+         String KST[] = new String[] {"Heure normale de Cor\u00e9e", "KST",
+-                                     "Heure avanc\u00e9e de Cor\u00e9e", "KDT"} ;
++                                     "Heure avanc\u00e9e de Cor\u00e9e", "KDT"};
+         String LORD_HOWE[] = new String[] {"Heure standard de Lord Howe", "LHST",
+                                            "Heure d'\u00e9t\u00e9 de Lord Howe", "LHST"};
+         String MHT[] = new String[] {"Heure des Iles Marshall", "MHT",
+@@ -140,7 +142,7 @@
+         String MSK[] = new String[] {"Heure standard de Moscou", "MSK",
+                                      "Heure avanc\u00e9e de Moscou", "MSD"};
+         String MST[] = new String[] {"Heure normale des Rocheuses", "MST",
+-                                     "Heure avanc\u00e9e des Rocheuses", "MDT"} ;
++                                     "Heure avanc\u00e9e des Rocheuses", "MDT"};
+         String MYT[] = new String[] {"Heure de Malaisie", "MYT",
+                                      "Heure d'\u00e9t\u00e9 de Malaisie", "MYST"};
+         String NORONHA[] = new String[] {"Heure de Fernando de Noronha", "FNT",
+@@ -150,21 +152,23 @@
+         String NPT[] = new String[] {"Heure du N\u00e9pal", "NPT",
+                                      "Heure d'\u00e9t\u00e9 du N\u00e9pal", "NPST"};
+         String NST[] = new String[] {"Heure normale de Terre-Neuve", "NST",
+-                                     "Heure avanc\u00e9e de Terre-Neuve", "NDT"} ;
++                                     "Heure avanc\u00e9e de Terre-Neuve", "NDT"};
+         String NZST[] = new String[] {"Heure normale de Nouvelle-Z\u00e9lande", "NZST",
+-                                      "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT"} ;
++                                      "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT"};
+         String PITCAIRN[] = new String[] {"Heure standard des Pitcairn", "PST",
+                                           "heure avanc\u00e9e des Pitcairn", "PDT"};
+         String PKT[] = new String[] {"Heure du Pakistan", "PKT",
+-                                     "Heure d'\u00e9t\u00e9 du Pakistan", "PKST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Pakistan", "PKST"};
+         String PONT[] = new String[] {"Pohnpei Time", "PONT",
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Heure normale du Pacifique", "PST",
+-                                     "Heure avanc\u00e9e du Pacifique", "PDT"} ;
++                                     "Heure avanc\u00e9e du Pacifique", "PDT"};
++        String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
++                                       "Heure avanc\u00e9e de Samoa", "SDT"};
+         String SAST[] = new String[] {"Heure normale d'Afrique du Sud", "SAST",
+-                                      "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST"} ;
++                                      "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST"};
+         String SBT[] = new String[] {"Heure des \u00celes Salomon", "SBT",
+-                                     "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST"} ;
++                                     "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST"};
+         String SGT[] = new String[] {"Heure de Singapour", "SGT",
+                                      "Heure d'\u00e9t\u00e9 de Singapour", "SGST"};
+         String SLST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
+@@ -172,31 +176,31 @@
+         String TASMANIA[] = new String[] {"Heure standard d'Australie orientale (Tasmanie)", "EST",
+                                           "Heure d'\u00e9t\u00e9 d'Australie orientale (Tasmanie)", "EST"};
+         String TMT[] = new String[] {"Heure du Turkm\u00e9nistan", "TMT",
+-                                     "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST"} ;
++                                     "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST"};
+         String ULAT[]= new String[] {"Heure de l'Ulaanbaatar", "ULAT",
+-                                     "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST"} ;
+-        String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
+-                                      "Heure d'\u00e9t\u00e9 D'Argentine de l'Ouest", "WARST"} ;
+-        String WAT[] = new String[] {"Heure d'Afrique de l'Ouest", "WAT",
+-                                     "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST"} ;
+-        String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
+-                                     "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST"} ;
+-        String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIT",
+-                                     "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST"};
+-        String WST_AUS[] = new String[] {"Heure normale de l'Ouest (Australie)", "WST",
+-                                         "Heure d'\u00e9t\u00e9 de l'Ouest (Australie)", "WST"} ;
+-        String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
+-                                       "Heure avanc\u00e9e de Samoa", "SDT"};
+-        String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
+-                                           "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT"} ;
+-        String ChST[] = new String[] {"Heure normale des \u00eeles Mariannes", "ChST",
+-                      "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT"};
+-        String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "EST",
+-                                          "Heure d'\u00e9t\u00e9 d'Australie orientale (Victoria)", "EST"};
++                                     "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST"};
+         String UTC[] = new String[] {"Temps universel coordonn\u00e9", "UTC",
+                                      "Temps universel coordonn\u00e9", "UTC"};
+         String UZT[] = new String[] {"Heure de l'Ouzb\u00e9kistan", "UZT",
+                                      "Heure d'\u00e9t\u00e9 de l'Ouzb\u00e9kistan", "UZST"};
++        String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "EST",
++                                          "Heure d'\u00e9t\u00e9 d'Australie orientale (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Heure de Vladivostok", "VLAT",
++                                      "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST"};
++        String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
++                                      "Heure d'\u00e9t\u00e9 D'Argentine de l'Ouest", "WARST"};
++        String WAT[] = new String[] {"Heure d'Afrique de l'Ouest", "WAT",
++                                     "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST"};
++        String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
++                                     "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST"};
++        String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIT",
++                                     "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST"};
++        String WST_AUS[] = new String[] {"Heure normale de l'Ouest (Australie)", "WST",
++                                         "Heure d'\u00e9t\u00e9 de l'Ouest (Australie)", "WST"};
++        String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
++                                           "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT"};
++        String YAKT[] = new String[] {"Heure du Iakoutsk", "YAKT",
++                                      "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Heure de Krasno\u00efarsk", "KRAT",
+                                                "Heure d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Heure de Vladivostok", "VLAT",
+-                                               "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Heure du Iakoutsk", "YAKT",
+-                                           "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Heure de Yekaterinburg", "YEKT",
+                                                  "Heure d'\u00e9t\u00e9 de Yekaterinburg", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Heure de l'Europe centrale", "MET",
+                                   "Heure d'\u00e9t\u00e9 de l'Europe centrale", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_it.java
+@@ -77,6 +77,8 @@
+                                        "Ora legale di Chatham", "CHADT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
++        String ChST[] = new String[] {"Ora standard di Chamorro", "ChST",
++                              "Ora legale di Chamorro", "ChDT"};
+         String CIT[] = new String[] {"Ora dell'Indonesia centrale", "CIT",
+                                      "Ora estiva dell'Indonesia centrale", "CIST"};
+         String CLT[] = new String[] {"Ora del Cile", "CLT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Ora solare della costa occidentale USA", "PST",
+                                      "Ora legale della costa occidentale USA", "PDT"};
++        String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
++                                       "Ora legale di Samoa", "SDT"};
+         String SAST[] = new String[] {"Ora solare del Sudafrica", "SAST",
+                                       "Ora estiva del Sudafrica", "SAST"};
+         String SBT[] = new String[] {"Ora delle Isole Salomone", "SBT",
+@@ -175,6 +179,14 @@
+                                      "Ora estiva del Turkmenistan", "TMST"};
+         String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
+                                      "Ora estiva di Ulaanbaatar", "ULAST"};
++        String UTC[] = new String[] {"Tempo universale coordinato", "UTC",
++                                     "Tempo universale coordinato", "UTC"};
++        String UZT[] = new String[] {"Ora dell'Uzbekistan", "UZT",
++                                     "Ora estiva dell'Uzbekistan", "UZST"};
++        String VICTORIA[] = new String[] {"Ora orientale standard (Victoria)", "EST",
++                                          "Ora estiva orientale (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Ora di Vladivostok", "VLAT",
++                                      "Ora estiva di Vladivostok", "VLAST"};
+         String WART[] = new String[] {"Ora dell'Argentina occidentale", "WART",
+                                       "Ora estiva dell'Argentina occidentale", "WARST"};
+         String WAT[] = new String[] {"Ora dell'Africa occidentale", "WAT",
+@@ -185,18 +197,10 @@
+                                      "Ora estiva dell'Indonesia occidentale", "WIST"};
+         String WST_AUS[] = new String[] {"Ora solare dell'Australia occidentale", "WST",
+                                          "Ora estiva dell'Australia occidentale", "WST"};
+-        String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
+-                                       "Ora legale di Samoa", "SDT"};
+         String WST_SAMOA[] = new String[] {"Ora di Samoa", "WST",
+                                            "Ora estiva di Samoa", "WSDT"};
+-        String ChST[] = new String[] {"Ora standard di Chamorro", "ChST",
+-                              "Ora legale di Chamorro", "ChDT"};
+-        String VICTORIA[] = new String[] {"Ora orientale standard (Victoria)", "EST",
+-                                          "Ora estiva orientale (Victoria)", "EST"};
+-        String UTC[] = new String[] {"Tempo universale coordinato", "UTC",
+-                                     "Tempo universale coordinato", "UTC"};
+-        String UZT[] = new String[] {"Ora dell'Uzbekistan", "UZT",
+-                                     "Ora estiva dell'Uzbekistan", "UZST"};
++        String YAKT[] = new String[] {"Ora di Jakutsk", "YAKT",
++                                      "Ora estiva di Jakutsk", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Ora di Krasnojarsk", "KRAT",
+                                                "Ora estiva di Krasnojarsk", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Ora di Vladivostok", "VLAT",
+-                                               "Ora estiva di Vladivostok", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Ora di Jakutsk", "YAKT",
+-                                           "Ora estiva di Jakutsk", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Ora di Ekaterinburg", "YEKT",
+                                                  "Ora estiva di Ekaterinburg", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Ora dell'Europa centrale", "MET",
+                                   "Ora estiva dell'Europa centrale", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ja.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST"};
+         String CHAST[] = new String[] {"\u30c1\u30e3\u30bf\u30e0\u6a19\u6e96\u6642", "CHAST",
+                                        "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT"};
++        String ChST[] = new String[] {"\u30b0\u30a2\u30e0\u6a19\u6e96\u6642", "ChST",
++                                      "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT"};
++        String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
++                                       "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT"};
+         String SAST[] = new String[] {"\u5357\u30a2\u30d5\u30ea\u30ab\u6a19\u6e96\u6642", "SAST",
+                                       "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST"};
+         String SBT[] = new String[] {"\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u6642\u9593", "SBT",
+@@ -175,6 +179,14 @@
+                                      "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TMST"};
+         String ULAT[]= new String[] {"\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u6642\u9593", "ULAT",
+                                      "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST"};
++        String UTC[] = new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
++                                     "\u5354\u5b9a\u4e16\u754c\u6642", "UTC"};
++        String UZT[] = new String[] {"\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "UZT",
++                                     "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "UZST"};
++        String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642 (\u30d3\u30af\u30c8\u30ea\u30a2)", "EST",
++                                          "\u6771\u90e8\u590f\u6642\u9593 (\u30d3\u30af\u30c8\u30ea\u30a2)", "EST"};
++        String VLAT[] = new String[] {"\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u6642\u9593", "VLAT",
++                                      "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST"};
+         String WART[] = new String[] {"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
+                                       "\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "WAT",
+@@ -185,18 +197,10 @@
+                                      "\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "WIST"};
+         String WST_AUS[] = new String[] {"\u897f\u90e8\u6a19\u6e96\u6642 (\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2)", "WST",
+                                          "\u897f\u90e8\u590f\u6642\u9593 (\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2)", "WST"};
+-        String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
+-                                       "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u30b5\u30e2\u30a2\u6642\u9593", "WST",
+                                            "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT"};
+-        String ChST[] = new String[] {"\u30b0\u30a2\u30e0\u6a19\u6e96\u6642", "ChST",
+-                                      "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT"};
+-        String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642 (\u30d3\u30af\u30c8\u30ea\u30a2)", "EST",
+-                                          "\u6771\u90e8\u590f\u6642\u9593 (\u30d3\u30af\u30c8\u30ea\u30a2)", "EST"};
+-        String UTC[] = new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
+-                                     "\u5354\u5b9a\u4e16\u754c\u6642", "UTC"};
+-        String UZT[] = new String[] {"\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "UZT",
+-                                     "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "UZST"};
++        String YAKT[] = new String[] {"\u30e4\u30af\u30fc\u30c4\u30af\u6642\u9593", "YAKT",
++                                      "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u6642\u9593", "KRAT",
+                                                "\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u590f\u6642\u9593", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u6642\u9593", "VLAT",
+-                                               "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"\u30e4\u30af\u30fc\u30c4\u30af\u6642\u9593", "YAKT",
+-                                           "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u6642\u9593", "YEKT",
+                                                  "\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u590f\u6642\u9593", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "MET",
+                                   "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_ko.java
+@@ -75,6 +75,8 @@
+                                      "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST"};
+         String CHAST[] = new String[] {"Chatham \ud45c\uc900\uc2dc", "CHAST",
+                                        "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT"};
++        String ChST[] = new String[] {"\ucc28\ubaa8\ub85c \ud45c\uc900\uc2dc", "ChST",
++                                      "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc", "PST",
+                                      "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
++        String SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
++                                       "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT"};
+         String SAST[] = new String[] {"\ub0a8\uc544\ud504\ub9ac\uce74 \ud45c\uc900\uc2dc", "SAST",
+                                       "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST"};
+         String SBT[] = new String[] {"\uc194\ub85c\ubaac \uad70\ub3c4 \uc2dc\uac04", "SBT",
+@@ -175,6 +179,14 @@
+                                      "\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TMST"};
+         String ULAT[]= new String[] {"\uc6b8\ub780\ubc14\ud0c0\ub974 \uc2dc\uac04", "ULAT",
+                                      "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST"};
++        String UTC[] = new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
++                                     "\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC"};
++        String UZT[] = new String[] {"\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "UZT",
++                                     "\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST"};
++        String VICTORIA[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc(\ube45\ud1a0\ub9ac\uc544)", "EST",
++                                          "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ube45\ud1a0\ub9ac\uc544)", "EST"};
++        String VLAT[] = new String[] {"\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc2dc\uac04", "VLAT",
++                                      "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST"};
+         String WART[] = new String[] {"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
+                                       "\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WARST"};
+         String WAT[] = new String[] {"\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "WAT",
+@@ -185,18 +197,10 @@
+                                      "\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WIST"};
+         String WST_AUS[] = new String[] {"\uc11c\ubd80 \ud45c\uc900\uc2dc(\ud638\uc8fc)", "WST",
+                                          "\uc11c\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ud638\uc8fc)", "WST"};
+-        String SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
+-                                       "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT"};
+         String WST_SAMOA[] = new String[] {"\uc11c\uc0ac\ubaa8\uc544 \uc2dc\uac04", "WST",
+                                            "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT"};
+-        String ChST[] = new String[] {"\ucc28\ubaa8\ub85c \ud45c\uc900\uc2dc", "ChST",
+-                                      "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT"};
+-        String VICTORIA[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc(\ube45\ud1a0\ub9ac\uc544)", "EST",
+-                                          "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04(\ube45\ud1a0\ub9ac\uc544)", "EST"};
+-        String UTC[] = new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
+-                                     "\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC"};
+-        String UZT[] = new String[] {"\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "UZT",
+-                                     "\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST"};
++        String YAKT[] = new String[] {"\uc57c\uce20\ud06c \uc2dc\uac04", "YAKT",
++                                      "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc2dc\uac04", "KRAT",
+                                                "\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc2dc\uac04", "VLAT",
+-                                               "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"\uc57c\uce20\ud06c \uc2dc\uac04", "YAKT",
+-                                           "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc2dc\uac04", "YEKT",
+                                                  "\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"\uc911\ubd80 \uc720\ub7fd \uc2dc\uac04", "MET",
+                                   "\uc911\ubd80 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_sv.java
+@@ -75,6 +75,8 @@
+                                      "Centraleuropeisk sommartid", "CEST"};
+         String CHAST[] = new String[] {"Chatham, normaltid", "CHAST",
+                                        "Chatham, sommartid", "CHADT"};
++        String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
++                                      "Chamorro, sommartid", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"Centralindonesisk tid", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"Stilla havet, normaltid", "PST",
+                                      "Stilla havet, sommartid", "PDT"};
++        String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
++                                       "Samoa, sommartid", "SDT"};
+         String SAST[] = new String[] {"Sydafrika, normaltid", "SAST",
+                                       "Sydafrika, sommartid", "SAST"};
+         String SBT[] = new String[] {"Salomon\u00f6arna, normaltid", "SBT",
+@@ -175,6 +179,14 @@
+                                      "Turkmenistan, sommartid", "TMST"};
+         String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
+                                      "Ulaanbaatar, sommartid", "ULAST"};
++        String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
++                                     "Koordinerad universell tid", "UTC"};
++        String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
++                                     "Uzbekistan, sommartid", "UZST"};
++        String VICTORIA[] = new String[] {"\u00d6stlig normaltid (Victoria)", "EST",
++                                          "\u00d6stlig sommartid (Victoria)", "EST"};
++        String VLAT[] = new String[] {"Vladivostok, normaltid", "VLAT",
++                                      "Vladivostok, sommartid", "VLAST"};
+         String WART[] = new String[] {"V\u00e4stargentina, normaltid", "WART",
+                                       "V\u00e4stargentina, sommartid", "WARST"};
+         String WAT[] = new String[] {"V\u00e4stafrikansk tid", "WAT",
+@@ -185,18 +197,10 @@
+                                      "V\u00e4stindonesisk sommartid", "WIST"};
+         String WST_AUS[] = new String[] {"V\u00e4stlig normaltid (Australien)", "WST",
+                                          "V\u00e4stlig sommartid (Australien)", "WST"};
+-        String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
+-                                       "Samoa, sommartid", "SDT"};
+         String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
+                                            "V\u00e4stsamoansk sommartid", "WSDT"};
+-        String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
+-                                      "Chamorro, sommartid", "ChDT"};
+-        String VICTORIA[] = new String[] {"\u00d6stlig normaltid (Victoria)", "EST",
+-                                          "\u00d6stlig sommartid (Victoria)", "EST"};
+-        String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
+-                                     "Koordinerad universell tid", "UTC"};
+-        String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
+-                                     "Uzbekistan, sommartid", "UZST"};
++        String YAKT[] = new String[] {"Jakutsk, normaltid", "YAKT",
++                                      "Jakutsk, sommartid", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"Krasnojarsk, normaltid", "KRAT",
+                                                "Krasnojarsk, sommartid", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"Vladivostok, normaltid", "VLAT",
+-                                               "Vladivostok, sommartid", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"Jakutsk, normaltid", "YAKT",
+-                                           "Jakutsk, sommartid", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Jekaterinburg, normaltid", "YEKT",
+                                                  "Jekaterinburg, sommartid", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"Mellaneuropeisk tid", "MET",
+                                   "Mellaneuropeisk sommartid", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST"};
+         String CHAST[] = new String[] {"\u67e5\u8428\u59c6\u6807\u51c6\u65f6\u95f4", "CHAST",
+                                        "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT"};
++        String ChST[] = new String[] {"Chamorro \u6807\u51c6\u65f6\u95f4", "ChST",
++                                      "Chamorro \u590f\u4ee4\u65f6", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "PST",
+                                      "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT"};
++        String SAMOA[] = new String[] {"\u8428\u6469\u4e9a\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "SST",
++                                       "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT"};
+         String SAST[] = new String[] {"\u5357\u975e\u6807\u51c6\u65f6\u95f4", "SAST",
+                                       "\u5357\u975e\u590f\u4ee4\u65f6", "SAST"};
+         String SBT[] = new String[] {"\u6240\u7f57\u95e8\u7fa4\u5c9b\u65f6\u95f4", "SBT",
+@@ -175,6 +179,14 @@
+                                      "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST"};
+         String ULAT[]= new String[] {"\u5e93\u4f26\u65f6\u95f4", "ULAT",
+                                      "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST"};
++        String UTC[] = new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
++                                     "\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC"};
++        String UZT[] = new String[] {"\u4e4c\u5179\u522b\u514b\u65af\u5766\u65f6\u95f4", "UZT",
++                                     "\u4e4c\u5179\u522b\u514b\u65af\u5766\u590f\u4ee4\u65f6", "UZST"};
++        String VICTORIA[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u7ef4\u591a\u5229\u4e9a\uff09", "EST",
++                                          "\u4e1c\u90e8\u590f\u4ee4\u65f6\uff08\u7ef4\u591a\u5229\u4e9a\uff09", "EST"};
++        String VLAT[] = new String[] {"\u6d77\u53c2\u5d34\u65f6\u95f4", "VLAT",
++                                      "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST"};
+         String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
+                                       "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u65f6\u95f4", "WAT",
+@@ -185,18 +197,10 @@
+                                      "\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "WIST"};
+         String WST_AUS[] = new String[] {"\u897f\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u6fb3\u5927\u5229\u4e9a\uff09", "WST",
+                                          "\u897f\u90e8\u590f\u4ee4\u65f6\uff08\u6fb3\u5927\u5229\u4e9a\uff09", "WST"};
+-        String SAMOA[] = new String[] {"\u8428\u6469\u4e9a\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "SST",
+-                                       "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WST",
+                                            "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT"};
+-        String ChST[] = new String[] {"Chamorro \u6807\u51c6\u65f6\u95f4", "ChST",
+-                                      "Chamorro \u590f\u4ee4\u65f6", "ChDT"};
+-        String VICTORIA[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4\uff08\u7ef4\u591a\u5229\u4e9a\uff09", "EST",
+-                                          "\u4e1c\u90e8\u590f\u4ee4\u65f6\uff08\u7ef4\u591a\u5229\u4e9a\uff09", "EST"};
+-        String UTC[] = new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
+-                                     "\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC"};
+-        String UZT[] = new String[] {"\u4e4c\u5179\u522b\u514b\u65af\u5766\u65f6\u95f4", "UZT",
+-                                     "\u4e4c\u5179\u522b\u514b\u65af\u5766\u590f\u4ee4\u65f6", "UZST"};
++        String YAKT[] = new String[] {"\u4e9a\u5e93\u6b21\u514b\u65f6\u95f4", "YAKT",
++                                      "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u65f6\u95f4", "KRAT",
+                                                "\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u590f\u4ee4\u65f6", "KRAST"}},
+@@ -581,11 +586,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"\u6d77\u53c2\u5d34\u65f6\u95f4", "VLAT",
+-                                               "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"\u4e9a\u5e93\u6b21\u514b\u65f6\u95f4", "YAKT",
+-                                           "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u65f6\u95f4", "YEKT",
+                                                  "Yekaterinburg \u590f\u4ee4\u65f6", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -669,6 +673,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -748,7 +753,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"\u4e2d\u6b27\u65f6\u95f4", "MET",
+                                   "\u4e2d\u6b27\u590f\u4ee4\u65f6", "MEST"}},
+             {"Mexico/BajaNorte", PST},
+--- openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
++++ openjdk/jdk/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java
+@@ -75,6 +75,8 @@
+                                      "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST"};
+         String CHAST[] = new String[] {"\u67e5\u5766\u6a19\u6e96\u6642\u9593", "CHAST",
+                                        "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT"};
++        String ChST[] = new String[] {"\u67e5\u83ab\u6d1b\u6a19\u6e96\u6642\u9593", "ChST",
++                                     "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT"};
+         String CHUT[] = new String[] {"Chuuk Time", "CHUT",
+                                       "Chuuk Summer Time", "CHUST"};
+         String CIT[] = new String[] {"\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "CIT",
+@@ -161,6 +163,8 @@
+                                       "Pohnpei Summer Time", "PONST"};
+         String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642\u9593", "PST",
+                                      "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
++        String SAMOA[] = new String[] {"\u85a9\u6469\u4e9e\u6a19\u6e96\u6642\u9593", "SST",
++                                       "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT"};
+         String SAST[] = new String[] {"\u5357\u975e\u6a19\u6e96\u6642\u9593", "SAST",
+                                       "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST"};
+         String SBT[] = new String[] {"\u6240\u7f85\u9580\u7fa4\u5cf6\u6642\u9593", "SBT",
+@@ -175,7 +179,15 @@
+                                      "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST"};
+         String ULAT[]= new String[] {"\u5eab\u502b\u6642\u9593", "ULAT",
+                                      "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST"};
+-          String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
++        String UTC[] = new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
++                                     "\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC"};
++        String UZT[] = new String[] {"\u70cf\u8332\u5225\u514b\u65af\u5766\u6642\u9593", "UZT",
++                                     "\u70cf\u8332\u5225\u514b\u65af\u5766\u590f\u4ee4\u6642\u9593", "UZST"};
++        String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642\u9593 (\u7dad\u591a\u5229\u4e9e\u90a6)", "EST",
++                                          "\u6771\u90e8\u590f\u4ee4\u6642\u9593 (\u7dad\u591a\u5229\u4e9e\u90a6)", "EST"};
++        String VLAT[] = new String[] {"\u6d77\u53c3\u5d34\u6642\u9593", "VLAT",
++                                      "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST"};
++        String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
+                                       "\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "WARST"};
+         String WAT[] = new String[] {"\u897f\u975e\u6642\u9593", "WAT",
+                                      "\u897f\u975e\u590f\u4ee4\u6642\u9593", "WAST"};
+@@ -185,18 +197,10 @@
+                                      "\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST"};
+         String WST_AUS[] = new String[] {"\u897f\u65b9\u6a19\u6e96\u6642\u9593 (\u6fb3\u5927\u5229\u4e9e)", "WST",
+                                          "\u897f\u65b9\u590f\u4ee4\u6642\u9593 (\u6fb3\u5927\u5229\u4e9e)", "WST"};
+-        String SAMOA[] = new String[] {"\u85a9\u6469\u4e9e\u6a19\u6e96\u6642\u9593", "SST",
+-                                       "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT"};
+         String WST_SAMOA[] = new String[] {"\u897f\u85a9\u6469\u4e9e\u6642\u9593", "WST",
+                                            "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT"};
+-        String ChST[] = new String[] {"\u67e5\u83ab\u6d1b\u6a19\u6e96\u6642\u9593", "ChST",
+-                                     "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT"};
+-        String VICTORIA[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642\u9593 (\u7dad\u591a\u5229\u4e9e\u90a6)", "EST",
+-                                          "\u6771\u90e8\u590f\u4ee4\u6642\u9593 (\u7dad\u591a\u5229\u4e9e\u90a6)", "EST"};
+-        String UTC[] = new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
+-                                     "\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC"};
+-        String UZT[] = new String[] {"\u70cf\u8332\u5225\u514b\u65af\u5766\u6642\u9593", "UZT",
+-                                     "\u70cf\u8332\u5225\u514b\u65af\u5766\u590f\u4ee4\u6642\u9593", "UZST"};
++        String YAKT[] = new String[] {"\u4e9e\u5eab\u6b21\u514b\u6642\u9593", "YAKT",
++                                      "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST"};
+ 
+         return new Object[][] {
+             {"America/Los_Angeles", PST},
+@@ -287,7 +291,7 @@
+             {"Africa/Porto-Novo", WAT},
+             {"Africa/Sao_Tome", GMT},
+             {"Africa/Timbuktu", GMT},
+-            {"Africa/Tripoli", EET},
++            {"Africa/Tripoli", CET},
+             {"Africa/Tunis", CET},
+             {"Africa/Windhoek", WAT},
+             {"America/Adak", HAST},
+@@ -533,6 +537,7 @@
+             {"Asia/Kashgar", CTT},
+             {"Asia/Kathmandu", NPT},
+             {"Asia/Katmandu", NPT},
++            {"Asia/Khandyga", YAKT},
+             {"Asia/Kolkata", IST},
+             {"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u6642\u9593", "KRAT",
+                                                "\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u590f\u4ee4\u6642\u9593", "KRAST"}},
+@@ -582,11 +587,10 @@
+             {"Asia/Ulaanbaatar", ULAT},
+             {"Asia/Ulan_Bator", ULAT},
+             {"Asia/Urumqi", CTT},
++            {"Asia/Ust-Nera", VLAT},
+             {"Asia/Vientiane", ICT},
+-            {"Asia/Vladivostok", new String[] {"\u6d77\u53c3\u5d34\u6642\u9593", "VLAT",
+-                                               "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST"}},
+-            {"Asia/Yakutsk", new String[] {"\u4e9e\u5eab\u6b21\u514b\u6642\u9593", "YAKT",
+-                                           "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST"}},
++            {"Asia/Vladivostok", VLAT},
++            {"Asia/Yakutsk", YAKT},
+             {"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u6642\u9593", "YEKT",
+                                                  "Yekaterinburg \u590f\u4ee4\u6642\u9593", "YEKST"}},
+             {"Asia/Yerevan", ARMT},
+@@ -670,6 +674,7 @@
+             {"Europe/Bratislava", CET},
+             {"Europe/Brussels", CET},
+             {"Europe/Budapest", CET},
++            {"Europe/Busingen", CET},
+             {"Europe/Chisinau", EET},
+             {"Europe/Copenhagen", CET},
+             {"Europe/Dublin", DUBLIN},
+@@ -749,7 +754,7 @@
+             {"Jamaica", EST},
+             {"Japan", JST},
+             {"Kwajalein", MHT},
+-            {"Libya", EET},
++            {"Libya", CET},
+             {"MET", new String[] {"\u4e2d\u6b50\u6642\u9593", "MET",
+                                   "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "MEST"}},
+             {"Mexico/BajaNorte", PST},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8009996-emitter_bean.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,27 @@
+changeset:   4963:05e5519ffbcc
+user:        andrew
+date:        Wed Jun 26 22:27:10 2013 -0500
+files:       src/share/classes/javax/management/StandardEmitterMBean.java
+description:
+8009996: tests javax/management/mxbean/MiscTest.java and javax/management/mxbean/StandardMBeanOverrideTest.java fail
+Reviewed-by: dfuchs, dholmes
+
+
+--- openjdk/jdk/src/share/classes/javax/management/StandardEmitterMBean.java
++++ openjdk/jdk/src/share/classes/javax/management/StandardEmitterMBean.java
+@@ -258,8 +258,13 @@
+     }
+ 
+     public MBeanNotificationInfo[] getNotificationInfo() {
+-        if (notificationInfo == null || notificationInfo.length == 0) {
++        // this getter might get called from the super constructor
++        // when the notificationInfo has not been properly set yet
++        if (notificationInfo == null) {
+             return NO_NOTIFICATION_INFO;
++        }
++        if (notificationInfo.length == 0) {
++            return notificationInfo;
+         } else {
+             return notificationInfo.clone();
+         }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8010118-caller_sensitive.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,2950 @@
+changeset:   4945:0ab2712a035a
+user:        andrew
+date:        Tue Jun 18 08:09:59 2013 -0500
+files:       make/java/java/FILES_c.gmk make/java/java/mapfile-vers make/java/java/reorder-i586 make/java/java/reorder-sparc make/java/java/reorder-sparcv9 src/share/classes/java/io/ObjectStreamClass.java src/share/classes/java/io/ObjectStreamField.java src/share/classes/java/lang/Class.java src/share/classes/java/lang/ClassLoader.java src/share/classes/java/lang/Package.java src/share/classes/java/lang/Runtime.java src/share/classes/java/lang/System.java src/share/classes/java/lang/Thread.java src/share/classes/java/lang/invoke/MemberName.java src/share/classes/java/lang/invoke/MethodHandleImpl.java src/share/classes/java/lang/invoke/MethodHandleNatives.java src/share/classes/java/lang/invoke/MethodHandleProxies.java src/share/classes/java/lang/invoke/MethodHandles.java src/share/classes/java/lang/reflect/Constructor.java src/share/classes/java/lang/reflect/Field.java src/share/classes/java/lang/reflect/Method.java src/share/classes/java/lang/reflect/Proxy.java src/share/classes/java/security/AccessController.java src/share/classes/java/sql/DriverManager.java src/share/classes/java/util/ResourceBundle.java src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java src/share/classes/java/util/logging/Logger.java src/share/classes/javax/sql/rowset/serial/SerialJavaObject.java src/share/classes/sun/misc/Unsafe.java src/share/classes/sun/reflect/CallerSensitive.java src/share/classes/sun/reflect/Reflection.java src/share/native/java/lang/ClassLoader.c src/share/native/java/lang/SecurityManager.c src/share/native/sun/reflect/Reflection.c test/Makefile test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java test/sun/reflect/CallerSensitive/ClassFileReader.java test/sun/reflect/CallerSensitive/MethodFinder.java test/sun/reflect/CallerSensitive/MissingCallerSensitive.java
+description:
+8010118: Annotate jdk caller sensitive methods with @sun.reflect.CallerSensitive
+Reviewed-by: alanb, twisti, jrose, kvn
+
+
+--- openjdk/jdk/make/java/java/FILES_c.gmk
++++ openjdk/jdk/make/java/java/FILES_c.gmk
+@@ -48,7 +48,6 @@
+ 	Proxy.c \
+ 	RandomAccessFile.c \
+ 	RandomAccessFile_md.c \
+-	ResourceBundle.c \
+ 	Runtime.c \
+ 	SecurityManager.c \
+ 	Shutdown.c \
+@@ -69,7 +68,6 @@
+ 	jdk_util_md.c \
+ 	check_version.c \
+ 	java_props_md.c \
+-	DriverManager.c \
+ 	ConstantPool.c \
+ 	MessageUtils.c \
+ 	GC.c \
+--- openjdk/jdk/make/java/java/mapfile-vers
++++ openjdk/jdk/make/java/java/mapfile-vers
+@@ -233,8 +232,6 @@
+ 		Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedExceptionAction_2Ljava_security_AccessControlContext_2;
+ 		Java_java_security_AccessController_getStackAccessControlContext;
+ 		Java_java_security_AccessController_getInheritedAccessControlContext;
+-		Java_java_sql_DriverManager_getCallerClassLoader;
+-		Java_java_util_ResourceBundle_getClassContext;
+ 		Java_java_util_TimeZone_getSystemTimeZoneID;
+ 		Java_java_util_TimeZone_getSystemGMTOffsetID;
+ 		Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8;
+--- openjdk/jdk/make/java/java/reorder-i586
++++ openjdk/jdk/make/java/java/reorder-i586
+@@ -73,7 +73,6 @@
+ # Test Sleep
+ # Test IntToString
+ # Test LoadToolkit
+-text: .text%Java_java_util_ResourceBundle_getClassContext;
+ text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+ text: .text%JNU_GetEnv;
+ text: .text%Java_java_io_UnixFileSystem_checkAccess;
+--- openjdk/jdk/make/java/java/reorder-sparc
++++ openjdk/jdk/make/java/java/reorder-sparc
+@@ -78,7 +78,6 @@
+ # Test Sleep
+ # Test IntToString
+ # Test LoadToolkit
+-text: .text%Java_java_util_ResourceBundle_getClassContext;
+ text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+ text: .text%JNU_GetEnv;
+ text: .text%Java_java_io_UnixFileSystem_checkAccess;
+--- openjdk/jdk/make/java/java/reorder-sparcv9
++++ openjdk/jdk/make/java/java/reorder-sparcv9
+@@ -74,7 +74,6 @@
+ # Test Sleep
+ # Test IntToString
+ # Test LoadToolkit
+-text: .text%Java_java_util_ResourceBundle_getClassContext;
+ text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
+ text: .text%JNU_GetEnv;
+ text: .text%Java_java_io_UnixFileSystem_checkAccess;
+--- openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java
++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java
+@@ -49,6 +49,8 @@
+ import java.util.concurrent.ConcurrentHashMap;
+ import java.util.concurrent.ConcurrentMap;
+ import sun.misc.Unsafe;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ import sun.reflect.ReflectionFactory;
+ import sun.reflect.misc.ReflectUtil;
+ 
+@@ -259,12 +261,13 @@
+      *
+      * @return  the <code>Class</code> instance that this descriptor represents
+      */
++    @CallerSensitive
+     public Class<?> forClass() {
+         if (cl == null) {
+             return null;
+         }
+-        ClassLoader ccl = ObjectStreamField.getCallerClassLoader();
+-        if (ReflectUtil.needsPackageAccessCheck(ccl, cl.getClassLoader())) {
++        Class<?> caller = Reflection.getCallerClass();
++        if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) {
+             ReflectUtil.checkPackageAccess(cl);
+         }
+         return cl;
+--- openjdk/jdk/src/share/classes/java/io/ObjectStreamField.java
++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamField.java
+@@ -26,6 +26,7 @@
+ package java.io;
+ 
+ import java.lang.reflect.Field;
++import sun.reflect.CallerSensitive;
+ import sun.reflect.Reflection;
+ import sun.reflect.misc.ReflectUtil;
+ 
+@@ -159,32 +160,15 @@
+      * @return  a <code>Class</code> object representing the type of the
+      *          serializable field
+      */
++    @CallerSensitive
+     public Class<?> getType() {
+-        ClassLoader ccl = getCallerClassLoader();
+-        if (ReflectUtil.needsPackageAccessCheck(ccl, type.getClassLoader())) {
++        Class<?> caller = Reflection.getCallerClass();
++        if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), type.getClassLoader())) {
+             ReflectUtil.checkPackageAccess(type);
+         }
+         return type;
+     }
+ 
+-    // Returns the invoker's class loader.
+-    // This is package private because it is accessed from ObjectStreamClass.
+-    // NOTE: This must always be invoked when there is exactly one intervening
+-    // frame from the core libraries on the stack between this method's
+-    // invocation and the desired invoker. The frame count of 3 is determined
+-    // as follows:
+-    //
+-    // 0: Reflection.getCallerClass
+-    // 1: getCallerClassLoader()
+-    // 2: ObjectStreamField.getType() or ObjectStreamClass.forClass()
+-    // 3: the caller we want to check
+-    //
+-    // NOTE: copied from java.lang.ClassLoader and modified.
+-    static ClassLoader getCallerClassLoader() {
+-        Class caller = Reflection.getCallerClass(3);
+-        return caller.getClassLoader();
+-    }
+-
+     /**
+      * Returns character encoding of field type.  The encoding is as follows:
+      * <blockquote><pre>
+--- openjdk/jdk/src/share/classes/java/lang/Class.java
++++ openjdk/jdk/src/share/classes/java/lang/Class.java
+@@ -53,6 +53,7 @@
+ import java.util.Map;
+ import java.util.HashMap;
+ import sun.misc.Unsafe;
++import sun.reflect.CallerSensitive;
+ import sun.reflect.ConstantPool;
+ import sun.reflect.Reflection;
+ import sun.reflect.ReflectionFactory;
+@@ -183,9 +184,11 @@
+      *            by this method fails
+      * @exception ClassNotFoundException if the class cannot be located
+      */
++    @CallerSensitive
+     public static Class<?> forName(String className)
+                 throws ClassNotFoundException {
+-        return forName0(className, true, ClassLoader.getCallerClassLoader());
++        return forName0(className, true,
++                        ClassLoader.getClassLoader(Reflection.getCallerClass()));
+     }
+ 
+ 
+@@ -249,6 +252,7 @@
+      * @see       java.lang.ClassLoader
+      * @since     1.2
+      */
++    @CallerSensitive
+     public static Class<?> forName(String name, boolean initialize,
+                                    ClassLoader loader)
+         throws ClassNotFoundException
+@@ -256,7 +260,7 @@
+         if (loader == null) {
+             SecurityManager sm = System.getSecurityManager();
+             if (sm != null) {
+-                ClassLoader ccl = ClassLoader.getCallerClassLoader();
++                ClassLoader ccl = ClassLoader.getClassLoader(Reflection.getCallerClass());
+                 if (ccl != null) {
+                     sm.checkPermission(
+                         SecurityConstants.GET_CLASSLOADER_PERMISSION);
+@@ -318,18 +322,14 @@
+      *             </ul>
+      *
+      */
++    @CallerSensitive
+     public T newInstance()
+         throws InstantiationException, IllegalAccessException
+     {
+         if (System.getSecurityManager() != null) {
+-            checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), false);
++            checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), false);
+         }
+-        return newInstance0();
+-    }
+ 
+-    private T newInstance0()
+-        throws InstantiationException, IllegalAccessException
+-    {
+         // NOTE: the following code may not be strictly correct under
+         // the current Java memory model.
+ 
+@@ -363,7 +363,7 @@
+         // Security check (same as in java.lang.reflect.Constructor)
+         int modifiers = tmpConstructor.getModifiers();
+         if (!Reflection.quickCheckMemberAccess(this, modifiers)) {
+-            Class caller = Reflection.getCallerClass(3);
++            Class<?> caller = Reflection.getCallerClass();
+             if (newInstanceCallerCache != caller) {
+                 Reflection.ensureMemberAccess(caller, this, null, modifiers);
+                 newInstanceCallerCache = caller;
+@@ -604,16 +604,14 @@
+      * @see SecurityManager#checkPermission
+      * @see java.lang.RuntimePermission
+      */
++    @CallerSensitive
+     public ClassLoader getClassLoader() {
+         ClassLoader cl = getClassLoader0();
+         if (cl == null)
+             return null;
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            ClassLoader ccl = ClassLoader.getCallerClassLoader();
+-            if (ccl != null && ccl != cl && !cl.isAncestor(ccl)) {
+-                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
+-            }
++            ClassLoader.checkClassLoaderPermission(cl, Reflection.getCallerClass());
+         }
+         return cl;
+     }
+@@ -894,6 +892,7 @@
+      *     that class is a local or anonymous class; otherwise {@code null}.
+      * @since 1.5
+      */
++    @CallerSensitive
+     public Method getEnclosingMethod() {
+         EnclosingMethodInfo enclosingInfo = getEnclosingMethodInfo();
+ 
+@@ -923,7 +922,7 @@
+             //
+             // Note that we need to do this on the enclosing class
+             enclosingCandidate.checkMemberAccess(Member.DECLARED,
+-                        ClassLoader.getCallerClassLoader(), true);
++                                                 Reflection.getCallerClass(), true);
+             /*
+              * Loop over all declared methods; match method name,
+              * number of and type of parameters, *and* return
+@@ -1031,6 +1030,7 @@
+      *     that class is a local or anonymous class; otherwise {@code null}.
+      * @since 1.5
+      */
++    @CallerSensitive
+     public Constructor<?> getEnclosingConstructor() {
+         EnclosingMethodInfo enclosingInfo = getEnclosingMethodInfo();
+ 
+@@ -1059,7 +1059,7 @@
+             //
+             // Note that we need to do this on the enclosing class
+             enclosingCandidate.checkMemberAccess(Member.DECLARED,
+-                        ClassLoader.getCallerClassLoader(), true);
++                                                 Reflection.getCallerClass(), true);
+             /*
+              * Loop over all declared constructors; match number
+              * of and type of parameters.
+@@ -1106,6 +1106,7 @@
+      * @return the immediately enclosing class of the underlying class
+      * @since 1.5
+      */
++    @CallerSensitive
+     public Class<?> getEnclosingClass() {
+         // There are five kinds of classes (or interfaces):
+         // a) Top level classes
+@@ -1138,7 +1139,7 @@
+         // see java.lang.SecurityManager.checkMemberAccess
+         if (enclosingCandidate != null) {
+             enclosingCandidate.checkMemberAccess(Member.DECLARED,
+-                    ClassLoader.getCallerClassLoader(), true);
++                                                 Reflection.getCallerClass(), true);
+         }
+         return enclosingCandidate;
+     }
+@@ -1323,11 +1324,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Class<?>[] getClasses() {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), false);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), false);
+ 
+         // Privileged so this implementation can look at DECLARED classes,
+         // something the caller might not have privilege to do.  The code here
+@@ -1398,11 +1400,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Field[] getFields() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         return copyFields(privateGetPublicFields(null));
+     }
+ 
+@@ -1449,11 +1452,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Method[] getMethods() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         return copyMethods(privateGetPublicMethods());
+     }
+ 
+@@ -1498,11 +1502,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Constructor<?>[] getConstructors() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         return copyConstructors(privateGetDeclaredConstructors(true));
+     }
+ 
+@@ -1556,12 +1561,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Field getField(String name)
+         throws NoSuchFieldException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         Field field = getField0(name);
+         if (field == null) {
+             throw new NoSuchFieldException(name);
+@@ -1641,12 +1647,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Method getMethod(String name, Class<?>... parameterTypes)
+         throws NoSuchMethodException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         Method method = getMethod0(name, parameterTypes);
+         if (method == null) {
+             throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
+@@ -1695,12 +1702,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Constructor<T> getConstructor(Class<?>... parameterTypes)
+         throws NoSuchMethodException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);
+         return getConstructor0(parameterTypes, Member.PUBLIC);
+     }
+ 
+@@ -1738,11 +1746,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Class<?>[] getDeclaredClasses() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), false);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), false);
+         return getDeclaredClasses0();
+     }
+ 
+@@ -1782,11 +1791,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Field[] getDeclaredFields() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         return copyFields(privateGetDeclaredFields(false));
+     }
+ 
+@@ -1830,11 +1840,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Method[] getDeclaredMethods() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         return copyMethods(privateGetDeclaredMethods(false));
+     }
+ 
+@@ -1875,11 +1886,12 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Constructor<?>[] getDeclaredConstructors() throws SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         return copyConstructors(privateGetDeclaredConstructors(false));
+     }
+ 
+@@ -1918,12 +1930,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Field getDeclaredField(String name)
+         throws NoSuchFieldException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         Field field = searchFields(privateGetDeclaredFields(false), name);
+         if (field == null) {
+             throw new NoSuchFieldException(name);
+@@ -1973,12 +1986,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
+         throws NoSuchMethodException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         Method method = searchMethods(privateGetDeclaredMethods(false), name, parameterTypes);
+         if (method == null) {
+             throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
+@@ -2023,12 +2037,13 @@
+      *
+      * @since JDK1.1
+      */
++    @CallerSensitive
+     public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
+         throws NoSuchMethodException, SecurityException {
+         // be very careful not to change the stack depth of this
+         // checkMemberAccess call for security reasons
+         // see java.lang.SecurityManager.checkMemberAccess
+-        checkMemberAccess(Member.DECLARED, ClassLoader.getCallerClassLoader(), true);
++        checkMemberAccess(Member.DECLARED, Reflection.getCallerClass(), true);
+         return getConstructor0(parameterTypes, Member.DECLARED);
+     }
+ 
+@@ -2186,23 +2201,40 @@
+      */
+     static native Class getPrimitiveClass(String name);
+ 
++    private static boolean isCheckMemberAccessOverridden(SecurityManager smgr) {
++        if (smgr.getClass() == SecurityManager.class) return false;
++
++        Class<?>[] paramTypes = new Class<?>[] {Class.class, int.class};
++        return smgr.getClass().getMethod0("checkMemberAccess", paramTypes).
++                getDeclaringClass() != SecurityManager.class;
++    }
++
+ 
+     /*
+      * Check if client is allowed to access members.  If access is denied,
+      * throw a SecurityException.
+      *
+-     * Be very careful not to change the stack depth of this checkMemberAccess
+-     * call for security reasons.
+-     * See java.lang.SecurityManager.checkMemberAccess.
+-     *
+      * <p> Default policy: allow all clients access with normal Java access
+      * control.
+      */
+-    private void checkMemberAccess(int which, ClassLoader ccl, boolean checkProxyInterfaces) {
+-        SecurityManager s = System.getSecurityManager();
++    private void checkMemberAccess(int which, Class<?> caller, boolean checkProxyInterfaces) {
++        final SecurityManager s = System.getSecurityManager();
+         if (s != null) {
+-            s.checkMemberAccess(this, which);
+-            ClassLoader cl = getClassLoader0();
++            final ClassLoader ccl = ClassLoader.getClassLoader(caller);
++            final ClassLoader cl = getClassLoader0();
++            if (!isCheckMemberAccessOverridden(s)) {
++                // Inlined SecurityManager.checkMemberAccess
++                if (which != Member.PUBLIC) {
++                    if (ccl != cl) {
++                        s.checkPermission(SecurityConstants.CHECK_MEMBER_ACCESS_PERMISSION);
++                    }
++                }
++            } else {
++                // Don't refactor; otherwise break the stack depth for
++                // checkMemberAccess of subclasses of SecurityManager as specified.
++                s.checkMemberAccess(this, which);
++            }
++
+             if (ReflectUtil.needsPackageAccessCheck(ccl, cl)) {
+                 String name = this.getName();
+                 int i = name.lastIndexOf('.');
+--- openjdk/jdk/src/share/classes/java/lang/ClassLoader.java
++++ openjdk/jdk/src/share/classes/java/lang/ClassLoader.java
+@@ -56,6 +56,7 @@
+ import sun.misc.Resource;
+ import sun.misc.URLClassPath;
+ import sun.misc.VM;
++import sun.reflect.CallerSensitive;
+ import sun.reflect.Reflection;
+ import sun.security.util.SecurityConstants;
+ 
+@@ -1396,15 +1395,13 @@
+      *
+      * @since  1.2
+      */
++    @CallerSensitive
+     public final ClassLoader getParent() {
+         if (parent == null)
+             return null;
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            ClassLoader ccl = getCallerClassLoader();
+-            if (ccl != null && !isAncestor(ccl)) {
+-                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
+-            }
++            checkClassLoaderPermission(parent, Reflection.getCallerClass());
+         }
+         return parent;
+     }
+@@ -1464,6 +1461,7 @@
+      *
+      * @revised  1.4
+      */
++    @CallerSensitive
+     public static ClassLoader getSystemClassLoader() {
+         initSystemClassLoader();
+         if (scl == null) {
+@@ -1471,10 +1469,7 @@
+         }
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            ClassLoader ccl = getCallerClassLoader();
+-            if (ccl != null && ccl != scl && !scl.isAncestor(ccl)) {
+-                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
+-            }
++            checkClassLoaderPermission(scl, Reflection.getCallerClass());
+         }
+         return scl;
+     }
+@@ -1522,13 +1517,25 @@
+         return false;
+     }
+ 
+-    // Returns the invoker's class loader, or null if none.
+-    // NOTE: This must always be invoked when there is exactly one intervening
+-    // frame from the core libraries on the stack between this method's
+-    // invocation and the desired invoker.
+-    static ClassLoader getCallerClassLoader() {
+-        // NOTE use of more generic Reflection.getCallerClass()
+-        Class caller = Reflection.getCallerClass(3);
++    // Tests if class loader access requires "getClassLoader" permission
++    // check.  A class loader 'from' can access class loader 'to' if
++    // class loader 'from' is same as class loader 'to' or an ancestor
++    // of 'to'.  The class loader in a system domain can access
++    // any class loader.
++    private static boolean needsClassLoaderPermissionCheck(ClassLoader from,
++                                                           ClassLoader to)
++    {
++        if (from == to)
++            return false;
++
++        if (from == null)
++            return false;
++
++        return !to.isAncestor(from);
++    }
++
++    // Returns the class's class loader, or null if none.
++    static ClassLoader getClassLoader(Class<?> caller) {
+         // This can be null if the VM is requesting it
+         if (caller == null) {
+             return null;
+@@ -1537,6 +1544,17 @@
+         return caller.getClassLoader0();
+     }
+ 
++    static void checkClassLoaderPermission(ClassLoader cl, Class<?> caller) {
++        SecurityManager sm = System.getSecurityManager();
++        if (sm != null) {
++            // caller can be null if the VM is requesting it
++            ClassLoader ccl = getClassLoader(caller);
++            if (needsClassLoaderPermissionCheck(ccl, cl)) {
++                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
++            }
++        }
++    }
++
+     // The class loader for the system
+     // @GuardedBy("ClassLoader.class")
+     private static ClassLoader scl;
+--- openjdk/jdk/src/share/classes/java/lang/Package.java
++++ openjdk/jdk/src/share/classes/java/lang/Package.java
+@@ -47,9 +47,10 @@
+ import java.util.HashMap;
+ import java.util.Iterator;
+ 
++import java.lang.annotation.Annotation;
+ import sun.net.www.ParseUtil;
+-
+-import java.lang.annotation.Annotation;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * {@code Package} objects contain version information
+@@ -272,8 +273,9 @@
+      * @return the package of the requested name. It may be null if no package
+      *          information is available from the archive or codebase.
+      */
++    @CallerSensitive
+     public static Package getPackage(String name) {
+-        ClassLoader l = ClassLoader.getCallerClassLoader();
++        ClassLoader l = ClassLoader.getClassLoader(Reflection.getCallerClass());
+         if (l != null) {
+             return l.getPackage(name);
+         } else {
+@@ -293,8 +295,9 @@
+      * @return a new array of packages known to the callers {@code ClassLoader}
+      * instance.  An zero length array is returned if none are known.
+      */
++    @CallerSensitive
+     public static Package[] getPackages() {
+-        ClassLoader l = ClassLoader.getCallerClassLoader();
++        ClassLoader l = ClassLoader.getClassLoader(Reflection.getCallerClass());
+         if (l != null) {
+             return l.getPackages();
+         } else {
+--- openjdk/jdk/src/share/classes/java/lang/Runtime.java
++++ openjdk/jdk/src/share/classes/java/lang/Runtime.java
+@@ -27,6 +27,8 @@
+ 
+ import java.io.*;
+ import java.util.StringTokenizer;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * Every Java application has a single instance of class
+@@ -776,8 +778,9 @@
+      * @see        java.lang.SecurityException
+      * @see        java.lang.SecurityManager#checkLink(java.lang.String)
+      */
++    @CallerSensitive
+     public void load(String filename) {
+-        load0(System.getCallerClass(), filename);
++        load0(Reflection.getCallerClass(), filename);
+     }
+ 
+     synchronized void load0(Class fromClass, String filename) {
+@@ -829,8 +832,9 @@
+      * @see        java.lang.SecurityException
+      * @see        java.lang.SecurityManager#checkLink(java.lang.String)
+      */
++    @CallerSensitive
+     public void loadLibrary(String libname) {
+-        loadLibrary0(System.getCallerClass(), libname);
++        loadLibrary0(Reflection.getCallerClass(), libname);
+     }
+ 
+     synchronized void loadLibrary0(Class fromClass, String libname) {
+--- openjdk/jdk/src/share/classes/java/lang/System.java
++++ openjdk/jdk/src/share/classes/java/lang/System.java
+@@ -34,7 +34,8 @@
+ import java.nio.channels.Channel;
+ import java.nio.channels.spi.SelectorProvider;
+ import sun.nio.ch.Interruptible;
+ import sun.net.InetAddressCachePolicy;
++import sun.reflect.CallerSensitive;
+ import sun.reflect.Reflection;
+ import sun.security.util.SecurityConstants;
+ import sun.reflect.annotation.AnnotationType;
+@@ -1055,8 +1056,9 @@
+      * @see        java.lang.Runtime#load(java.lang.String)
+      * @see        java.lang.SecurityManager#checkLink(java.lang.String)
+      */
++    @CallerSensitive
+     public static void load(String filename) {
+-        Runtime.getRuntime().load0(getCallerClass(), filename);
++        Runtime.getRuntime().load0(Reflection.getCallerClass(), filename);
+     }
+ 
+     /**
+@@ -1080,8 +1082,9 @@
+      * @see        java.lang.Runtime#loadLibrary(java.lang.String)
+      * @see        java.lang.SecurityManager#checkLink(java.lang.String)
+      */
++    @CallerSensitive
+     public static void loadLibrary(String libname) {
+-        Runtime.getRuntime().loadLibrary0(getCallerClass(), libname);
++        Runtime.getRuntime().loadLibrary0(Reflection.getCallerClass(), libname);
+     }
+ 
+     /**
+@@ -1197,10 +1200,4 @@
+             }
+         });
+     }
+-
+-    /* returns the class of the caller. */
+-    static Class getCallerClass() {
+-        // NOTE use of more generic Reflection.getCallerClass()
+-        return Reflection.getCallerClass(3);
+-    }
+ }
+--- openjdk/jdk/src/share/classes/java/lang/Thread.java
++++ openjdk/jdk/src/share/classes/java/lang/Thread.java
+@@ -37,6 +37,8 @@
+ import java.util.concurrent.ConcurrentMap;
+ import java.util.concurrent.locks.LockSupport;
+ import sun.nio.ch.Interruptible;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ import sun.security.util.SecurityConstants;
+ 
+ 
+@@ -1440,16 +1442,15 @@
+      *
+      * @since 1.2
+      */
++    @CallerSensitive
+     public ClassLoader getContextClassLoader() {
+         if (contextClassLoader == null)
+             return null;
++
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            ClassLoader ccl = ClassLoader.getCallerClassLoader();
+-            if (ccl != null && ccl != contextClassLoader &&
+-                    !contextClassLoader.isAncestor(ccl)) {
+-                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
+-            }
++            ClassLoader.checkClassLoaderPermission(contextClassLoader,
++                                                   Reflection.getCallerClass());
+         }
+         return contextClassLoader;
+     }
+--- openjdk/jdk/src/share/classes/java/lang/reflect/Constructor.java
++++ openjdk/jdk/src/share/classes/java/lang/reflect/Constructor.java
+@@ -25,6 +25,7 @@
+ 
+ package java.lang.reflect;
+ 
++import sun.reflect.CallerSensitive;
+ import sun.reflect.ConstructorAccessor;
+ import sun.reflect.Reflection;
+ import sun.reflect.generics.repository.ConstructorRepository;
+@@ -505,13 +506,14 @@
+      * @exception ExceptionInInitializerError if the initialization provoked
+      *              by this method fails.
+      */
++    @CallerSensitive
+     public T newInstance(Object ... initargs)
+         throws InstantiationException, IllegalAccessException,
+                IllegalArgumentException, InvocationTargetException
+     {
+         if (!override) {
+             if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
+-                Class caller = Reflection.getCallerClass(2);
++                Class<?> caller = Reflection.getCallerClass();
+                 if (securityCheckCache != caller) {
+                     Reflection.ensureMemberAccess(caller, clazz, null, modifiers);
+                     securityCheckCache = caller;
+--- openjdk/jdk/src/share/classes/java/lang/reflect/Field.java
++++ openjdk/jdk/src/share/classes/java/lang/reflect/Field.java
+@@ -25,6 +25,7 @@
+ 
+ package java.lang.reflect;
+ 
++import sun.reflect.CallerSensitive;
+ import sun.reflect.FieldAccessor;
+ import sun.reflect.Reflection;
+ import sun.reflect.generics.repository.FieldRepository;
+@@ -366,9 +367,15 @@
+      * @exception ExceptionInInitializerError if the initialization provoked
+      *              by this method fails.
+      */
++    @CallerSensitive
+     public Object get(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).get(obj);
+     }
+ 
+@@ -394,9 +401,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public boolean getBoolean(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getBoolean(obj);
+     }
+ 
+@@ -422,9 +435,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public byte getByte(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getByte(obj);
+     }
+ 
+@@ -452,9 +471,15 @@
+      *              by this method fails.
+      * @see Field#get
+      */
++    @CallerSensitive
+     public char getChar(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getChar(obj);
+     }
+ 
+@@ -482,9 +507,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public short getShort(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getShort(obj);
+     }
+ 
+@@ -512,9 +543,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public int getInt(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getInt(obj);
+     }
+ 
+@@ -542,9 +579,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public long getLong(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getLong(obj);
+     }
+ 
+@@ -572,9 +615,15 @@
+      *              by this method fails.
+      * @see Field#get
+      */
++    @CallerSensitive
+     public float getFloat(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getFloat(obj);
+     }
+ 
+@@ -602,9 +651,15 @@
+      *              by this method fails.
+      * @see       Field#get
+      */
++    @CallerSensitive
+     public double getDouble(Object obj)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         return getFieldAccessor(obj).getDouble(obj);
+     }
+ 
+@@ -674,9 +729,15 @@
+      * @exception ExceptionInInitializerError if the initialization provoked
+      *              by this method fails.
+      */
++    @CallerSensitive
+     public void set(Object obj, Object value)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).set(obj, value);
+     }
+ 
+@@ -704,9 +765,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setBoolean(Object obj, boolean z)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setBoolean(obj, z);
+     }
+ 
+@@ -734,9 +801,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setByte(Object obj, byte b)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setByte(obj, b);
+     }
+ 
+@@ -764,9 +837,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setChar(Object obj, char c)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setChar(obj, c);
+     }
+ 
+@@ -794,9 +873,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setShort(Object obj, short s)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setShort(obj, s);
+     }
+ 
+@@ -824,9 +909,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setInt(Object obj, int i)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setInt(obj, i);
+     }
+ 
+@@ -854,9 +945,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setLong(Object obj, long l)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setLong(obj, l);
+     }
+ 
+@@ -884,9 +981,15 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setFloat(Object obj, float f)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setFloat(obj, f);
+     }
+ 
+@@ -914,20 +1017,25 @@
+      *              by this method fails.
+      * @see       Field#set
+      */
++    @CallerSensitive
+     public void setDouble(Object obj, double d)
+         throws IllegalArgumentException, IllegalAccessException
+     {
++        if (!override) {
++            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
++                checkAccess(Reflection.getCallerClass(), clazz, obj, modifiers);
++            }
++        }
+         getFieldAccessor(obj).setDouble(obj, d);
+     }
+ 
+-    // Convenience routine which performs security checks
++    // security check is done before calling this method
+     private FieldAccessor getFieldAccessor(Object obj)
+         throws IllegalAccessException
+     {
+-        doSecurityCheck(obj);
+         boolean ov = override;
+-        FieldAccessor a = (ov)? overrideFieldAccessor : fieldAccessor;
+-        return (a != null)? a : acquireFieldAccessor(ov);
++        FieldAccessor a = (ov) ? overrideFieldAccessor : fieldAccessor;
++        return (a != null) ? a : acquireFieldAccessor(ov);
+     }
+ 
+     // NOTE that there is no synchronization used here. It is correct
+@@ -1069,10 +1069,7 @@
+     // NOTE: be very careful if you change the stack depth of this
+     // routine. The depth of the "getCallerClass" call is hardwired so
+     // that the compiler can have an easier time if this gets inlined.
+-    private void doSecurityCheck(Object obj) throws IllegalAccessException {
+-        if (!override) {
+-            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
+-                Class caller = Reflection.getCallerClass(4);
++    private void checkAccess(Class caller, Class clazz, Object obj, int modifiers) throws IllegalAccessException {
+                 Class targetClass = ((obj == null || !Modifier.isProtected(modifiers))
+                                      ? clazz
+                                      : obj.getClass());
+@@ -1088,8 +1085,6 @@
+                     securityCheckCache = caller;
+                     securityCheckTargetClassCache = targetClass;
+                 }
+-            }
+-        }
+     }
+ 
+     /*
+--- openjdk/jdk/src/share/classes/java/lang/reflect/Method.java
++++ openjdk/jdk/src/share/classes/java/lang/reflect/Method.java
+@@ -25,6 +25,7 @@
+ 
+ package java.lang.reflect;
+ 
++import sun.reflect.CallerSensitive;
+ import sun.reflect.MethodAccessor;
+ import sun.reflect.Reflection;
+ import sun.reflect.generics.repository.MethodRepository;
+@@ -583,13 +584,18 @@
+      * @exception ExceptionInInitializerError if the initialization
+      * provoked by this method fails.
+      */
++    @CallerSensitive
+     public Object invoke(Object obj, Object... args)
+         throws IllegalAccessException, IllegalArgumentException,
+            InvocationTargetException
+     {
+         if (!override) {
+             if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
+-                Class caller = Reflection.getCallerClass(1);
++                // Until there is hotspot @CallerSensitive support
++                // can't call Reflection.getCallerClass() here
++                // Workaround for now: add a frame getCallerClass to
++                // make the caller at stack depth 2
++                Class<?> caller = getCallerClass();
+                 Class targetClass = ((obj == null || !Modifier.isProtected(modifiers))
+                                      ? clazz
+                                      : obj.getClass());
+@@ -601,6 +606,16 @@
+         return ma.invoke(obj, args);
+     }
+ 
++    /*
++     * This method makes the frame count to be 2 to find the caller
++     */
++    @CallerSensitive
++    private Class<?> getCallerClass() {
++        // Reflection.getCallerClass() currently returns the frame at depth 2
++        // before the hotspot support is in.
++        return Reflection.getCallerClass();
++    }
++
+     /**
+      * Returns {@code true} if this method is a bridge
+      * method; returns {@code false} otherwise.
+--- openjdk/jdk/src/share/classes/java/lang/reflect/Proxy.java
++++ openjdk/jdk/src/share/classes/java/lang/reflect/Proxy.java
+@@ -39,6 +39,7 @@
+ import java.util.Set;
+ import java.util.WeakHashMap;
+ import sun.misc.ProxyGenerator;
++import sun.reflect.CallerSensitive;
+ import sun.reflect.Reflection;
+ import sun.reflect.misc.ReflectUtil;
+ import sun.security.util.SecurityConstants;
+@@ -405,28 +405,21 @@
+      * @throws  NullPointerException if the {@code interfaces} array
+      *          argument or any of its elements are {@code null}
+      */
++    @CallerSensitive
+     public static Class<?> getProxyClass(ClassLoader loader,
+                                          Class<?>... interfaces)
+         throws IllegalArgumentException
+     {
+-        return getProxyClass0(loader, interfaces); // stack walk magic: do not refactor
+-    }
+-
+-    private static void checkProxyLoader(ClassLoader ccl,
+-                                         ClassLoader loader)
+-    {
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null) {
+-            if (loader == null && ccl != null) {
+-                if (!ProxyAccessHelper.allowNullLoader) {
+-                    sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
+-                }
+-            }
++            checkProxyAccess(Reflection.getCallerClass(), loader, interfaces);
+         }
++
++        return getProxyClass0(loader, interfaces);
+     }
+  
+     /*
+-     * Generate a proxy class (caller-sensitive).
++     * Check permissions required to create a proxy class.
+      *
+      * To define a proxy class, it performs the access checks as in
+      * Class.forName (VM will invoke ClassLoader.checkPackageAccess):
+@@ -444,16 +438,28 @@
+      * will throw IllegalAccessError when the generated proxy class is
+      * being defined via the defineClass0 method.
+      */
++    private static void checkProxyAccess(Class<?> caller,
++                                         ClassLoader loader,
++                                         Class<?>... interfaces)
++    {
++        SecurityManager sm = System.getSecurityManager();
++        if (sm != null) {
++            ClassLoader ccl = caller.getClassLoader();
++            if (loader == null && ccl != null) {
++                if (!ProxyAccessHelper.allowNullLoader) {
++                    sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
++                }
++            }
++            ReflectUtil.checkProxyPackageAccess(ccl, interfaces);
++        }
++    }
++
++    /**
++     * Generate a proxy class.  Must call the checkProxyAccess method
++     * to perform permission checks before calling this.
++     */
+     private static Class<?> getProxyClass0(ClassLoader loader,
+                                            Class<?>... interfaces) {
+-        SecurityManager sm = System.getSecurityManager();
+-        if (sm != null) {
+-            final int CALLER_FRAME = 3; // 0: Reflection, 1: getProxyClass0 2: Proxy 3: caller
+-            final Class<?> caller = Reflection.getCallerClass(CALLER_FRAME);
+-            final ClassLoader ccl = caller.getClassLoader();
+-            checkProxyLoader(ccl, loader);
+-            ReflectUtil.checkProxyPackageAccess(ccl, interfaces);
+-        }
+         if (interfaces.length > 65535) {
+             throw new IllegalArgumentException("interface limit exceeded");
+         }
+@@ -696,6 +701,7 @@
+      *          if the invocation handler, {@code h}, is
+      *          {@code null}
+      */
++    @CallerSensitive
+     public static Object newProxyInstance(ClassLoader loader,
+                                           Class<?>[] interfaces,
+                                           InvocationHandler h)
+@@ -705,10 +711,15 @@
+             throw new NullPointerException();
+         }
+ 
++        final SecurityManager sm = System.getSecurityManager();
++        if (sm != null) {
++            checkProxyAccess(Reflection.getCallerClass(), loader, interfaces);
++        }
++
+         /*
+          * Look up or generate the designated proxy class.
+          */
+-        Class<?> cl = getProxyClass0(loader, interfaces); // stack walk magic: do not refactor
++        Class<?> cl = getProxyClass0(loader, interfaces);
+ 
+         /*
+          * Invoke its constructor with the designated invocation handler.
+@@ -716,7 +727,6 @@
+         try {
+             final Constructor<?> cons = cl.getConstructor(constructorParams);
+             final InvocationHandler ih = h;
+-            SecurityManager sm = System.getSecurityManager();
+             if (sm != null && ProxyAccessHelper.needsNewInstanceCheck(cl)) {
+                 // create proxy instance with doPrivilege as the proxy class may
+                 // implement non-public interfaces that requires a special permission
+--- openjdk/jdk/src/share/classes/java/security/AccessController.java
++++ openjdk/jdk/src/share/classes/java/security/AccessController.java
+@@ -26,6 +26,8 @@
+ package java.security;
+ 
+ import sun.security.util.Debug;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * <p> The AccessController class is used for access control operations
+@@ -264,6 +266,7 @@
+      * @see java.security.DomainCombiner
+      */
+ 
++    @CallerSensitive
+     public static native <T> T doPrivileged(PrivilegedAction<T> action);
+ 
+     /**
+@@ -288,14 +291,14 @@
+      *
+      * @since 1.6
+      */
++    @CallerSensitive
+     public static <T> T doPrivilegedWithCombiner(PrivilegedAction<T> action) {
+-
+         AccessControlContext acc = getStackAccessControlContext();
+         if (acc == null) {
+             return AccessController.doPrivileged(action);
+         }
+         DomainCombiner dc = acc.getAssignedCombiner();
+-        return AccessController.doPrivileged(action, preserveCombiner(dc));
++        return AccessController.doPrivileged(action, preserveCombiner(dc, Reflection.getCallerClass()));
+     }
+ 
+ 
+@@ -326,6 +329,7 @@
+      * @see #doPrivileged(PrivilegedAction)
+      * @see #doPrivileged(PrivilegedExceptionAction,AccessControlContext)
+      */
++    @CallerSensitive
+     public static native <T> T doPrivileged(PrivilegedAction<T> action,
+                                             AccessControlContext context);
+ 
+@@ -353,6 +357,7 @@
+      * @see #doPrivilegedWithCombiner(PrivilegedExceptionAction)
+      * @see java.security.DomainCombiner
+      */
++    @CallerSensitive
+     public static native <T> T
+         doPrivileged(PrivilegedExceptionAction<T> action)
+         throws PrivilegedActionException;
+@@ -383,6 +388,7 @@
+      *
+      * @since 1.6
+      */
++    @CallerSensitive
+     public static <T> T doPrivilegedWithCombiner
+         (PrivilegedExceptionAction<T> action) throws PrivilegedActionException {
+ 
+@@ -391,26 +397,18 @@
+             return AccessController.doPrivileged(action);
+         }
+         DomainCombiner dc = acc.getAssignedCombiner();
+-        return AccessController.doPrivileged(action, preserveCombiner(dc));
++        return AccessController.doPrivileged(action, preserveCombiner(dc, Reflection.getCallerClass()));
+     }
+ 
+     /**
+      * preserve the combiner across the doPrivileged call
+      */
+-    private static AccessControlContext preserveCombiner
+-                                        (DomainCombiner combiner) {
+-
+-        /**
+-         * callerClass[0] = Reflection.getCallerClass
+-         * callerClass[1] = AccessController.preserveCombiner
+-         * callerClass[2] = AccessController.doPrivileged
+-         * callerClass[3] = caller
+-         */
+-        final Class callerClass = sun.reflect.Reflection.getCallerClass(3);
++    private static AccessControlContext preserveCombiner(DomainCombiner combiner,
++                                                         final Class<?> caller) {
+         ProtectionDomain callerPd = doPrivileged
+             (new PrivilegedAction<ProtectionDomain>() {
+             public ProtectionDomain run() {
+-                return callerClass.getProtectionDomain();
++                return caller.getProtectionDomain();
+             }
+         });
+ 
+@@ -455,6 +453,7 @@
+      * @see #doPrivileged(PrivilegedAction)
+      * @see #doPrivileged(PrivilegedExceptionAction,AccessControlContext)
+      */
++    @CallerSensitive
+     public static native <T> T
+         doPrivileged(PrivilegedExceptionAction<T> action,
+                      AccessControlContext context)
+--- openjdk/jdk/src/share/classes/java/sql/DriverManager.java
++++ openjdk/jdk/src/share/classes/java/sql/DriverManager.java
+@@ -30,5 +30,7 @@
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * <P>The basic service for managing a set of JDBC drivers.<br>
+@@ -180,14 +181,10 @@
+      * @return a Connection to the URL
+      * @exception SQLException if a database access error occurs
+      */
++    @CallerSensitive
+     public static Connection getConnection(String url,
+         java.util.Properties info) throws SQLException {
+-
+-        // Gets the classloader of the code that called this method, may
+-        // be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
+-
+-        return (getConnection(url, info, callerCL));
++        return (getConnection(url, info, Reflection.getCallerClass()));
+     }
+ 
+     /**
+@@ -203,14 +200,11 @@
+      * @return a connection to the URL
+      * @exception SQLException if a database access error occurs
+      */
++    @CallerSensitive
+     public static Connection getConnection(String url,
+         String user, String password) throws SQLException {
+         java.util.Properties info = new java.util.Properties();
+ 
+-        // Gets the classloader of the code that called this method, may
+-        // be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
+-
+         if (user != null) {
+             info.put("user", user);
+         }
+@@ -218,7 +212,7 @@
+             info.put("password", password);
+         }
+ 
+-        return (getConnection(url, info, callerCL));
++        return (getConnection(url, info, Reflection.getCallerClass()));
+     }
+ 
+     /**
+@@ -231,16 +225,12 @@
+      * @return a connection to the URL
+      * @exception SQLException if a database access error occurs
+      */
++    @CallerSensitive
+     public static Connection getConnection(String url)
+         throws SQLException {
+ 
+         java.util.Properties info = new java.util.Properties();
+-
+-        // Gets the classloader of the code that called this method, may
+-        // be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
+-
+-        return (getConnection(url, info, callerCL));
++        return (getConnection(url, info, Reflection.getCallerClass()));
+     }
+ 
+     /**
+@@ -233,6 +224,7 @@
+      * that can connect to the given URL
+      * @exception SQLException if a database access error occurs
+      */
++    @CallerSensitive
+     public static Driver getDriver(String url)
+         throws SQLException {
+         java.util.Vector drivers = null;
+@@ -248,9 +240,7 @@
+             drivers = readDrivers;
+         }
+ 
+-        // Gets the classloader of the code that called this method, may
+-        // be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
++        Class<?> callerClass = Reflection.getCallerClass();
+ 
+         // Walk through the loaded drivers attempting to locate someone
+         // who understands the given URL.
+@@ -258,8 +248,7 @@
+             DriverInfo di = (DriverInfo)drivers.elementAt(i);
+             // If the caller does not have permission to load the driver then
+             // skip it.
+-            if ( getCallerClass(callerCL, di.driverClassName ) !=
+-                 di.driverClass ) {
++            if ( callerClass != di.driverClass ) {
+                 println("    skipping: " + di);
+                 continue;
+             }
+@@ -322,31 +311,29 @@
+      * @param driver the JDBC Driver to drop
+      * @exception SQLException if a database access error occurs
+      */
++    @CallerSensitive
+     public static synchronized void deregisterDriver(Driver driver)
+         throws SQLException {
+-        // Gets the classloader of the code that called this method,
+-        // may be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
+         println("DriverManager.deregisterDriver: " + driver);
+ 
+         // Walk through the loaded drivers.
+         int i;
+         DriverInfo di = null;
+         for (i = 0; i < writeDrivers.size(); i++) {
+             di = (DriverInfo)writeDrivers.elementAt(i);
+             if (di.driver == driver) {
+                 break;
+             }
+         }
+         // If we can't find the driver just return.
+         if (i >= writeDrivers.size()) {
+             println("    couldn't find driver to unload");
+             return;
+         }
+ 
+         // If the caller does not have permission to load the driver then
+         // throw a security exception.
+-        if (getCallerClass(callerCL, di.driverClassName ) != di.driverClass ) {
++        if (Reflection.getCallerClass() != di.driverClass) {
+             throw new SecurityException();
+         }
+ 
+@@ -350,6 +350,7 @@
+      *
+      * @return the list of JDBC Drivers loaded by the caller's class loader
+      */
++    @CallerSensitive
+     public static java.util.Enumeration<Driver> getDrivers() {
+         java.util.Vector<Driver> result = new java.util.Vector<Driver>();
+         java.util.Vector drivers = null;
+@@ -363,16 +364,14 @@
+             drivers  = readDrivers;
+        }
+ 
+-        // Gets the classloader of the code that called this method, may
+-        // be null.
+-        ClassLoader callerCL = DriverManager.getCallerClassLoader();
++        Class<?> callerClass = Reflection.getCallerClass();
+ 
+         // Walk through the loaded drivers.
+         for (int i = 0; i < drivers.size(); i++) {
+             DriverInfo di = (DriverInfo)drivers.elementAt(i);
+             // If the caller does not have permission to load the driver then
+             // skip it.
+-            if ( getCallerClass(callerCL, di.driverClassName ) != di.driverClass ) {
++            if ( callerClass != di.driverClass ) {
+                 println("    skipping: " + di);
+                 continue;
+             }
+@@ -546,19 +537,20 @@
+ 
+     //  Worker method called by the public getConnection() methods.
+     private static Connection getConnection(
+-        String url, java.util.Properties info, ClassLoader callerCL) throws SQLException {
++        String url, java.util.Properties info, Class<?> caller) throws SQLException {
+         java.util.Vector drivers = null;
+         /*
+          * When callerCl is null, we should check the application's
+          * (which is invoking this class indirectly)
+          * classloader, so that the JDBC driver class outside rt.jar
+          * can be loaded from here.
+          */
+-        synchronized(DriverManager.class) {
+-          // synchronize loading of the correct classloader.
+-          if(callerCL == null) {
+-              callerCL = Thread.currentThread().getContextClassLoader();
+-           }
++        ClassLoader callerCL = caller != null ? caller.getClassLoader() : null;
++        synchronized (DriverManager.class) {
++            // synchronize loading of the correct classloader.
++            if (callerCL == null) {
++                callerCL = Thread.currentThread().getContextClassLoader();
++            }
+         }
+ 
+         if(url == null) {
+@@ -603,10 +595,6 @@
+     private static boolean initialized = false;
+ 
+     private static Object logSync = new Object();
+-
+-    /* Returns the caller's class loader, or null if none */
+-    private static native ClassLoader getCallerClassLoader();
+-
+ }
+ 
+ // DriverInfo is a package-private support class.
+--- openjdk/jdk/src/share/classes/java/util/ResourceBundle.java
++++ openjdk/jdk/src/share/classes/java/util/ResourceBundle.java
+@@ -56,6 +56,8 @@
+ import java.util.concurrent.ConcurrentMap;
+ import java.util.jar.JarEntry;
+ 
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ 
+ /**
+@@ -412,14 +414,10 @@
+ 
+     /*
+      * Automatic determination of the ClassLoader to be used to load
+-     * resources on behalf of the client.  N.B. The client is getLoader's
+-     * caller's caller.
++     * resources on behalf of the client.
+      */
+-    private static ClassLoader getLoader() {
+-        Class[] stack = getClassContext();
+-        /* Magic number 2 identifies our caller's caller */
+-        Class c = stack[2];
+-        ClassLoader cl = (c == null) ? null : c.getClassLoader();
++    private static ClassLoader getLoader(Class<?> caller) {
++        ClassLoader cl = caller == null ? null : caller.getClassLoader();
+         if (cl == null) {
+             // When the caller's loader is the boot class loader, cl is null
+             // here. In that case, ClassLoader.getSystemClassLoader() may
+@@ -433,8 +431,6 @@
+         return cl;
+     }
+ 
+-    private static native Class[] getClassContext();
+-
+     /**
+      * A wrapper of ClassLoader.getSystemClassLoader().
+      */
+@@ -719,11 +715,12 @@
+      *     if no resource bundle for the specified base name can be found
+      * @return a resource bundle for the given base name and the default locale
+      */
++    @CallerSensitive
+     public static final ResourceBundle getBundle(String baseName)
+     {
+         return getBundleImpl(baseName, Locale.getDefault(),
+                              /* must determine loader here, else we break stack invariant */
+-                             getLoader(),
++                             getLoader(Reflection.getCallerClass()),
+                              Control.INSTANCE);
+     }
+ 
+@@ -761,11 +758,12 @@
+      *        needed.
+      * @since 1.6
+      */
++    @CallerSensitive
+     public static final ResourceBundle getBundle(String baseName,
+                                                  Control control) {
+         return getBundleImpl(baseName, Locale.getDefault(),
+                              /* must determine loader here, else we break stack invariant */
+-                             getLoader(),
++                             getLoader(Reflection.getCallerClass()),
+                              control);
+     }
+ 
+@@ -790,12 +788,13 @@
+      *        if no resource bundle for the specified base name can be found
+      * @return a resource bundle for the given base name and locale
+      */
++    @CallerSensitive
+     public static final ResourceBundle getBundle(String baseName,
+                                                  Locale locale)
+     {
+         return getBundleImpl(baseName, locale,
+                              /* must determine loader here, else we break stack invariant */
+-                             getLoader(),
++                             getLoader(Reflection.getCallerClass()),
+                              Control.INSTANCE);
+     }
+ 
+@@ -836,11 +835,12 @@
+      *        needed.
+      * @since 1.6
+      */
++    @CallerSensitive
+     public static final ResourceBundle getBundle(String baseName, Locale targetLocale,
+                                                  Control control) {
+         return getBundleImpl(baseName, targetLocale,
+                              /* must determine loader here, else we break stack invariant */
+-                             getLoader(),
++                             getLoader(Reflection.getCallerClass()),
+                              control);
+     }
+ 
+@@ -1676,8 +1676,9 @@
+      * @since 1.6
+      * @see ResourceBundle.Control#getTimeToLive(String,Locale)
+      */
++    @CallerSensitive
+     public static final void clearCache() {
+-        clearCache(getLoader());
++        clearCache(getLoader(Reflection.getCallerClass()));
+     }
+ 
+     /**
+--- openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java
++++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java
+@@ -34,8 +34,10 @@
+  */
+ 
+ package java.util.concurrent.atomic;
++import java.lang.reflect.*;
+ import sun.misc.Unsafe;
+-import java.lang.reflect.*;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * A reflection-based utility that enables atomic updates to
+@@ -69,8 +71,9 @@
+      * @throws RuntimeException with a nested reflection-based
+      * exception if the class does not hold field or is the wrong type
+      */
++    @CallerSensitive
+     public static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName) {
+-        return new AtomicIntegerFieldUpdaterImpl<U>(tclass, fieldName);
++        return new AtomicIntegerFieldUpdaterImpl<U>(tclass, fieldName, Reflection.getCallerClass());
+     }
+ 
+     /**
+@@ -268,13 +271,11 @@
+         private final Class<T> tclass;
+         private final Class cclass;
+ 
+-        AtomicIntegerFieldUpdaterImpl(Class<T> tclass, String fieldName) {
++        AtomicIntegerFieldUpdaterImpl(Class<T> tclass, String fieldName, Class<?> caller) {
+             Field field = null;
+-            Class caller = null;
+             int modifiers = 0;
+             try {
+                 field = tclass.getDeclaredField(fieldName);
+-                caller = sun.reflect.Reflection.getCallerClass(3);
+                 modifiers = field.getModifiers();
+                 sun.reflect.misc.ReflectUtil.ensureMemberAccess(
+                     caller, tclass, null, modifiers);
+--- openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java
++++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java
+@@ -34,8 +34,10 @@
+  */
+ 
+ package java.util.concurrent.atomic;
++import java.lang.reflect.*;
+ import sun.misc.Unsafe;
+-import java.lang.reflect.*;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * A reflection-based utility that enables atomic updates to
+@@ -69,11 +71,13 @@
+      * @throws RuntimeException with a nested reflection-based
+      * exception if the class does not hold field or is the wrong type.
+      */
++    @CallerSensitive
+     public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName) {
++        Class<?> caller = Reflection.getCallerClass();
+         if (AtomicLong.VM_SUPPORTS_LONG_CAS)
+-            return new CASUpdater<U>(tclass, fieldName);
++            return new CASUpdater<U>(tclass, fieldName, caller);
+         else
+-            return new LockedUpdater<U>(tclass, fieldName);
++            return new LockedUpdater<U>(tclass, fieldName, caller);
+     }
+ 
+     /**
+@@ -267,13 +271,11 @@
+         private final Class<T> tclass;
+         private final Class cclass;
+ 
+-        CASUpdater(Class<T> tclass, String fieldName) {
++        CASUpdater(Class<T> tclass, String fieldName, Class<?> caller) {
+             Field field = null;
+-            Class caller = null;
+             int modifiers = 0;
+             try {
+                 field = tclass.getDeclaredField(fieldName);
+-                caller = sun.reflect.Reflection.getCallerClass(3);
+                 modifiers = field.getModifiers();
+                 sun.reflect.misc.ReflectUtil.ensureMemberAccess(
+                     caller, tclass, null, modifiers);
+@@ -350,13 +352,11 @@
+         private final Class<T> tclass;
+         private final Class cclass;
+ 
+-        LockedUpdater(Class<T> tclass, String fieldName) {
++        LockedUpdater(Class<T> tclass, String fieldName, Class<?> caller) {
+             Field field = null;
+-            Class caller = null;
+             int modifiers = 0;
+             try {
+                 field = tclass.getDeclaredField(fieldName);
+-                caller = sun.reflect.Reflection.getCallerClass(3);
+                 modifiers = field.getModifiers();
+                 sun.reflect.misc.ReflectUtil.ensureMemberAccess(
+                     caller, tclass, null, modifiers);
+--- openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java
++++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java
+@@ -34,8 +34,10 @@
+  */
+ 
+ package java.util.concurrent.atomic;
++import java.lang.reflect.*;
+ import sun.misc.Unsafe;
+-import java.lang.reflect.*;
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
+ 
+ /**
+  * A reflection-based utility that enables atomic updates to
+@@ -88,10 +90,12 @@
+      * @throws RuntimeException with a nested reflection-based
+      * exception if the class does not hold field or is the wrong type.
+      */
++    @CallerSensitive
+     public static <U, W> AtomicReferenceFieldUpdater<U,W> newUpdater(Class<U> tclass, Class<W> vclass, String fieldName) {
+         return new AtomicReferenceFieldUpdaterImpl<U,W>(tclass,
+                                                         vclass,
+-                                                        fieldName);
++                                                        fieldName,
++                                                        Reflection.getCallerClass());
+     }
+ 
+     /**
+@@ -199,14 +203,13 @@
+ 
+         AtomicReferenceFieldUpdaterImpl(Class<T> tclass,
+                                         Class<V> vclass,
+-                                        String fieldName) {
++                                        String fieldName,
++                                        Class<?> caller) {
+             Field field = null;
+             Class fieldClass = null;
+-            Class caller = null;
+             int modifiers = 0;
+             try {
+                 field = tclass.getDeclaredField(fieldName);
+-                caller = sun.reflect.Reflection.getCallerClass(3);
+                 modifiers = field.getModifiers();
+                 sun.reflect.misc.ReflectUtil.ensureMemberAccess(
+                     caller, tclass, null, modifiers);
+--- openjdk/jdk/src/share/classes/java/util/logging/Logger.java
++++ openjdk/jdk/src/share/classes/java/util/logging/Logger.java
+@@ -303,13 +305,10 @@
+         }
+     }
+ 
+-    private static Logger demandLogger(String name, String resourceBundleName) {
++    private static Logger demandLogger(String name, String resourceBundleName, Class<?> caller) {
+         LogManager manager = LogManager.getLogManager();
+         SecurityManager sm = System.getSecurityManager();
+         if (sm != null && !SystemLoggerHelper.disableCallerCheck) {
+-            // 0: Reflection 1: Logger.getLoggerContext 2: Logger.getLogger 3: caller
+-            final int SKIP_FRAMES = 3;
+-            Class<?> caller = sun.reflect.Reflection.getCallerClass(SKIP_FRAMES);
+             if (caller.getClassLoader() == null) {
+                 return manager.demandSystemLogger(name, resourceBundleName);
+             }
+@@ -347,7 +346,8 @@
+      * @throws NullPointerException if the name is null.
+      */ 
++    @CallerSensitive
+     public static synchronized Logger getLogger(String name) {
+-        return demandLogger(name, null);
++        return demandLogger(name, null, Reflection.getCallerClass());
+     }
+ 
+     /**
+@@ -404,7 +404,8 @@
+      * @throws NullPointerException if the name is null.
+      */ 
++    @CallerSensitive
+     public static synchronized Logger getLogger(String name, String resourceBundleName) {
+-        Logger result = demandLogger(name, resourceBundleName);
++        Logger result = demandLogger(name, resourceBundleName, Reflection.getCallerClass());
+         if (result.resourceBundleName == null) {
+             // Note: we may get a MissingResourceException here.
+             result.setupResourceInfo(resourceBundleName);
+--- openjdk/jdk/src/share/classes/javax/sql/rowset/serial/SerialJavaObject.java
++++ openjdk/jdk/src/share/classes/javax/sql/rowset/serial/SerialJavaObject.java
+@@ -28,7 +28,9 @@
+ import java.io.*;
+ import java.util.Map;
+ import java.lang.reflect.*;
+ import javax.sql.rowset.RowSetWarning;
++import sun.reflect.CallerSensitive;
++import sun.reflect.misc.ReflectUtil;
+ 
+ /**
+  * A serializable mapping in the Java programming language of an SQL
+@@ -123,7 +125,8 @@
+      * @throws SerialException if an error is encountered accesssing
+      * the serialized object
+      */
++    @CallerSensitive
+     public Field[] getFields() throws SerialException {
+         if (fields != null) {
+             Class c = this.obj.getClass();
+             return sun.reflect.misc.FieldUtil.getFields(c);
+--- openjdk/jdk/src/share/classes/sun/misc/Unsafe.java
++++ openjdk/jdk/src/share/classes/sun/misc/Unsafe.java
+@@ -28,6 +28,9 @@
+ import java.security.*;
+ import java.lang.reflect.*;
+ 
++import sun.reflect.CallerSensitive;
++import sun.reflect.Reflection;
++
+ 
+ /**
+  * A collection of methods for performing low-level, unsafe operations.
+@@ -80,8 +83,9 @@
+      *             <code>checkPropertiesAccess</code> method doesn't allow
+      *             access to the system properties.
+      */
++    @CallerSensitive
+     public static Unsafe getUnsafe() {
+-        Class cc = sun.reflect.Reflection.getCallerClass(2);
++        Class cc = Reflection.getCallerClass();
+         if (cc.getClassLoader() != null)
+             throw new SecurityException("Unsafe");
+         return theUnsafe;
+@@ -809,6 +813,12 @@
+                                     ClassLoader loader,
+                                     ProtectionDomain protectionDomain);
+ 
++    /**
++     * @deprecated Use defineClass(String, byte[], int, int, ClassLoader, ProtectionDomain)
++     *             instead. This method will be removed in JDK 8.
++     */
++    @Deprecated
++    @CallerSensitive
+     public native Class defineClass(String name, byte[] b, int off, int len);
+ 
+     /**
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/src/share/classes/sun/reflect/CallerSensitive.java
+@@ -0,0 +1,41 @@
++/*
++ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++package sun.reflect;
++
++import java.lang.annotation.*;
++import static java.lang.annotation.ElementType.*;
++
++/**
++ * A method annotated @CallerSensitive is sensitive to its calling class,
++ * via {@link sun.reflect.Reflection#getCallerClass Reflection.getCallerClass},
++ * or via some equivalent.
++ *
++ * @author John R. Rose
++ */
++@Retention(RetentionPolicy.RUNTIME)
++@Target({METHOD})
++public @interface CallerSensitive {
++}
+--- openjdk/jdk/src/share/classes/sun/reflect/Reflection.java
++++ openjdk/jdk/src/share/classes/sun/reflect/Reflection.java
+@@ -52,16 +52,11 @@
+         methodFilterMap = new HashMap<Class,String[]>();
+     }
+ 
+-    /** Returns the class of the method <code>realFramesToSkip</code>
+-        frames up the stack (zero-based), ignoring frames associated
+-        with java.lang.reflect.Method.invoke() and its implementation.
+-        The first frame is that associated with this method, so
+-        <code>getCallerClass(0)</code> returns the Class object for
+-        sun.reflect.Reflection. Frames associated with
+-        java.lang.reflect.Method.invoke() and its implementation are
+-        completely ignored and do not count toward the number of "real"
+-        frames skipped. */
+-    public static native Class getCallerClass(int realFramesToSkip);
++    /** Returns the class of the caller of the method calling this method,
++        ignoring frames associated with java.lang.reflect.Method.invoke()
++        and its implementation. */
++    @CallerSensitive
++    public static native Class getCallerClass();
+ 
+     /** Retrieves the access flags written to the class file. For
+         inner classes these flags may differ from those returned by
+@@ -322,4 +317,27 @@
+         }
+         return newMembers;
+     }
++
++    /**
++     * Tests if the given method is caller-sensitive and the declaring class
++     * is defined by either the bootstrap class loader or extension class loader.
++     */
++    public static boolean isCallerSensitive(Method m) {
++        final ClassLoader loader = m.getDeclaringClass().getClassLoader();
++        if (loader == null || isExtClassLoader(loader))  {
++            return m.isAnnotationPresent(CallerSensitive.class);
++        }
++        return false;
++    }
++
++    private static boolean isExtClassLoader(ClassLoader loader) {
++        ClassLoader cl = ClassLoader.getSystemClassLoader();
++        while (cl != null) {
++            if (cl.getParent() == null && cl == loader) {
++                return true;
++            }
++            cl = cl.getParent();
++        }
++        return false;
++    }
+ }
+--- openjdk/jdk/src/share/native/java/lang/SecurityManager.c
++++ openjdk/jdk/src/share/native/java/lang/SecurityManager.c
+@@ -29,7 +29,6 @@
+ 
+ #include "java_lang_SecurityManager.h"
+ #include "java_lang_ClassLoader.h"
+-#include "java_util_ResourceBundle.h"
+ 
+ /*
+  * Make sure a security manager instance is initialized.
+--- openjdk/jdk/src/share/native/sun/reflect/Reflection.c
++++ openjdk/jdk/src/share/native/sun/reflect/Reflection.c
+@@ -27,9 +27,11 @@
+ #include "sun_reflect_Reflection.h"
+ 
+ JNIEXPORT jclass JNICALL Java_sun_reflect_Reflection_getCallerClass
+-(JNIEnv *env, jclass unused, jint depth)
++(JNIEnv *env, jclass unused)
+ {
+-    return JVM_GetCallerClass(env, depth);
++    // Until there is hotspot @CallerSensitive support,
++    // depth must always be 2 to get the immediate caller
++    return JVM_GetCallerClass(env, 2);
+ }
+ 
+ JNIEXPORT jint JNICALL Java_sun_reflect_Reflection_getClassAccessFlags
+--- openjdk/jdk/test/Makefile
++++ openjdk/jdk/test/Makefile
+@@ -459,7 +459,7 @@
+ 
+ # Stable samevm testruns (minus items from PROBLEM_LIST)
+ JDK_ALL_TARGETS += jdk_lang
+-jdk_lang: java/lang
++jdk_lang: java/lang sun/reflect
+ 	$(call RunSamevmBatch)
+ 
+ # Stable othervm testruns (minus items from PROBLEM_LIST)
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java
+@@ -0,0 +1,248 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import com.sun.tools.classfile.*;
++import static com.sun.tools.classfile.ConstantPool.*;
++import java.io.File;
++import java.io.IOException;
++import java.lang.reflect.InvocationTargetException;
++import java.nio.file.FileVisitResult;
++import java.nio.file.Files;
++import java.nio.file.Path;
++import java.nio.file.Paths;
++import java.nio.file.SimpleFileVisitor;
++import java.nio.file.attribute.BasicFileAttributes;
++import java.util.ArrayList;
++import java.util.List;
++import java.util.Set;
++import java.util.concurrent.Callable;
++import java.util.concurrent.ExecutionException;
++import java.util.concurrent.ExecutorService;
++import java.util.concurrent.Executors;
++import java.util.concurrent.FutureTask;
++
++/*
++ * @test
++ * @bug 8010117
++ * @summary Verify if CallerSensitive methods are annotated with
++ *          sun.reflect.CallerSensitive annotation
++ * @build CallerSensitiveFinder MethodFinder ClassFileReader
++ * @run main/othervm/timeout=900 -mx800m CallerSensitiveFinder
++ */
++public class CallerSensitiveFinder extends MethodFinder {
++    private static int numThreads = 3;
++    private static boolean verbose = false;
++    public static void main(String[] args) throws Exception {
++        List<Path> classes = new ArrayList<>();
++        String testclasses = System.getProperty("test.classes", ".");
++        int i = 0;
++        while (i < args.length) {
++            String arg = args[i++];
++            if (arg.equals("-v")) {
++                verbose = true;
++            } else {
++                Path p = Paths.get(testclasses, arg);
++                if (!p.toFile().exists()) {
++                    throw new IllegalArgumentException(arg + " does not exist");
++                }
++                classes.add(p);
++            }
++        }
++        if (classes.isEmpty()) {
++            classes.addAll(PlatformClassPath.getJREClasses());
++        }
++        final String method = "sun/reflect/Reflection.getCallerClass";
++        CallerSensitiveFinder csfinder = new CallerSensitiveFinder(method);
++
++        List<String> errors = csfinder.run(classes);
++        if (!errors.isEmpty()) {
++            throw new RuntimeException(errors.size() +
++                    " caller-sensitive methods are missing @CallerSensitive annotation");
++        }
++    }
++
++    private final List<String> csMethodsMissingAnnotation = new ArrayList<>();
++    private final java.lang.reflect.Method mhnCallerSensitiveMethod;
++    public CallerSensitiveFinder(String... methods) throws Exception {
++        super(methods);
++        this.mhnCallerSensitiveMethod = getIsCallerSensitiveMethod();
++    }
++
++    static java.lang.reflect.Method getIsCallerSensitiveMethod()
++            throws ClassNotFoundException, NoSuchMethodException
++    {
++        Class<?> cls = Class.forName("java.lang.invoke.MethodHandleNatives");
++        java.lang.reflect.Method m = cls.getDeclaredMethod("isCallerSensitiveMethod", Class.class, String.class);
++        m.setAccessible(true);
++        return m;
++    }
++
++    boolean inMethodHandlesList(String classname, String method)  {
++       Class<?> cls;
++        try {
++            cls = Class.forName(classname.replace('/', '.'),
++                                false,
++                                ClassLoader.getSystemClassLoader());
++            return (Boolean) mhnCallerSensitiveMethod.invoke(null, cls, method);
++        } catch (ClassNotFoundException|IllegalAccessException e) {
++            throw new RuntimeException(e);
++        } catch (InvocationTargetException e) {
++            throw new RuntimeException(e.getCause());
++        }
++    }
++
++    public List<String> run(List<Path> classes) throws IOException, InterruptedException,
++            ExecutionException, ConstantPoolException
++    {
++        ExecutorService pool = Executors.newFixedThreadPool(numThreads);
++        for (Path path : classes) {
++            ClassFileReader reader = ClassFileReader.newInstance(path.toFile());
++            for (ClassFile cf : reader.getClassFiles()) {
++                String classFileName = cf.getName();
++                // for each ClassFile
++                //    parse constant pool to find matching method refs
++                //      parse each method (caller)
++                //      - visit and find method references matching the given method name
++                pool.submit(getTask(cf));
++            }
++        }
++        waitForCompletion();
++        pool.shutdown();
++        return csMethodsMissingAnnotation;
++    }
++
++    private static final String CALLER_SENSITIVE_ANNOTATION = "Lsun/reflect/CallerSensitive;";
++    private static boolean isCallerSensitive(Method m, ConstantPool cp)
++            throws ConstantPoolException
++    {
++        RuntimeAnnotations_attribute attr =
++            (RuntimeAnnotations_attribute)m.attributes.get(Attribute.RuntimeVisibleAnnotations);
++        int index = 0;
++        if (attr != null) {
++            for (int i = 0; i < attr.annotations.length; i++) {
++                Annotation ann = attr.annotations[i];
++                String annType = cp.getUTF8Value(ann.type_index);
++                if (CALLER_SENSITIVE_ANNOTATION.equals(annType)) {
++                    return true;
++                }
++            }
++        }
++        return false;
++    }
++
++    public void referenceFound(ClassFile cf, Method m, Set<Integer> refs)
++            throws ConstantPoolException
++    {
++        String name = String.format("%s#%s %s", cf.getName(),
++                                    m.getName(cf.constant_pool),
++                                    m.descriptor.getValue(cf.constant_pool));
++        if (!CallerSensitiveFinder.isCallerSensitive(m, cf.constant_pool)) {
++            csMethodsMissingAnnotation.add(name);
++            System.err.println("   Missing @CallerSensitive: " + name);
++        } else if (verbose) {
++            System.out.format("Caller found: %s%n", name);
++        }
++        if (m.access_flags.is(AccessFlags.ACC_PUBLIC)) {
++            if (!inMethodHandlesList(cf.getName(), m.getName(cf.constant_pool))) {
++                csMethodsMissingAnnotation.add(name);
++                System.err.println("   Missing in MethodHandleNatives list: " + name);
++            } else if (verbose) {
++                System.out.format("Caller found in MethodHandleNatives list: %s%n", name);
++
++            }
++        }
++    }
++
++    private final List<FutureTask<String>> tasks = new ArrayList<FutureTask<String>>();
++    private FutureTask<String> getTask(final ClassFile cf) {
++        FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
++            public String call() throws Exception {
++                return parse(cf);
++            }
++        });
++        tasks.add(task);
++        return task;
++    }
++
++    private void waitForCompletion() throws InterruptedException, ExecutionException {
++        for (FutureTask<String> t : tasks) {
++            String s = t.get();
++        }
++        System.out.println("Parsed " + tasks.size() + " classfiles");
++    }
++
++    static class PlatformClassPath {
++        static List<Path> getJREClasses() throws IOException {
++            List<Path> result = new ArrayList<Path>();
++            Path home = Paths.get(System.getProperty("java.home"));
++
++            if (home.endsWith("jre")) {
++                // jar files in <javahome>/jre/lib
++                // skip <javahome>/lib
++                result.addAll(addJarFiles(home.resolve("lib")));
++            } else if (home.resolve("lib").toFile().exists()) {
++                // either a JRE or a jdk build image
++                File classes = home.resolve("classes").toFile();
++                if (classes.exists() && classes.isDirectory()) {
++                    // jdk build outputdir
++                    result.add(classes.toPath());
++                }
++                // add other JAR files
++                result.addAll(addJarFiles(home.resolve("lib")));
++            } else {
++                throw new RuntimeException("\"" + home + "\" not a JDK home");
++            }
++            return result;
++        }
++
++        static List<Path> addJarFiles(final Path root) throws IOException {
++            final List<Path> result = new ArrayList<Path>();
++            final Path ext = root.resolve("ext");
++            Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
++                @Override
++                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
++                        throws IOException {
++                    if (dir.equals(root) || dir.equals(ext)) {
++                        return FileVisitResult.CONTINUE;
++                    } else {
++                        // skip other cobundled JAR files
++                        return FileVisitResult.SKIP_SUBTREE;
++                    }
++                }
++
++                @Override
++                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
++                        throws IOException {
++                    File f = file.toFile();
++                    String fn = f.getName();
++                    // parse alt-rt.jar as well
++                    if (fn.endsWith(".jar") && !fn.equals("jfxrt.jar")) {
++                        result.add(file);
++                    }
++                    return FileVisitResult.CONTINUE;
++                }
++            });
++            return result;
++        }
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/sun/reflect/CallerSensitive/ClassFileReader.java
+@@ -0,0 +1,338 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import com.sun.tools.classfile.ClassFile;
++import com.sun.tools.classfile.ConstantPoolException;
++import java.io.*;
++import java.nio.file.FileVisitResult;
++import java.nio.file.Files;
++import java.nio.file.Path;
++import java.nio.file.SimpleFileVisitor;
++import java.nio.file.attribute.BasicFileAttributes;
++import java.util.*;
++import java.util.jar.JarEntry;
++import java.util.jar.JarFile;
++
++/**
++ * ClassFileReader reads ClassFile(s) of a given path that can be
++ * a .class file, a directory, or a JAR file.
++ */
++public class ClassFileReader {
++    /**
++     * Returns a ClassFileReader instance of a given path.
++     */
++    public static ClassFileReader newInstance(File path) throws IOException {
++        if (!path.exists()) {
++            throw new FileNotFoundException(path.getAbsolutePath());
++        }
++
++        if (path.isDirectory()) {
++            return new DirectoryReader(path.toPath());
++        } else if (path.getName().endsWith(".jar")) {
++            return new JarFileReader(path.toPath());
++        } else {
++            return new ClassFileReader(path.toPath());
++        }
++    }
++
++    /**
++     * Returns a ClassFileReader instance of a given JarFile.
++     */
++    public static ClassFileReader newInstance(Path path, JarFile jf) throws IOException {
++        return new JarFileReader(path, jf);
++    }
++
++    protected final Path path;
++    protected final String baseFileName;
++    private ClassFileReader(Path path) {
++        this.path = path;
++        this.baseFileName = path.getFileName() != null
++                                ? path.getFileName().toString()
++                                : path.toString();
++    }
++
++    public String getFileName() {
++        return baseFileName;
++    }
++
++    /**
++     * Returns the ClassFile matching the given binary name
++     * or a fully-qualified class name.
++     */
++    public ClassFile getClassFile(String name) throws IOException {
++        if (name.indexOf('.') > 0) {
++            int i = name.lastIndexOf('.');
++            String pathname = name.replace('.', File.separatorChar) + ".class";
++            if (baseFileName.equals(pathname) ||
++                    baseFileName.equals(pathname.substring(0, i) + "$" +
++                                        pathname.substring(i+1, pathname.length()))) {
++                return readClassFile(path);
++            }
++        } else {
++            if (baseFileName.equals(name.replace('/', File.separatorChar) + ".class")) {
++                return readClassFile(path);
++            }
++        }
++        return null;
++    }
++
++    public Iterable<ClassFile> getClassFiles() throws IOException {
++        return new Iterable<ClassFile>() {
++            public Iterator<ClassFile> iterator() {
++                return new FileIterator();
++            }
++        };
++    }
++
++    protected ClassFile readClassFile(Path p) throws IOException {
++        InputStream is = null;
++        try {
++            is = Files.newInputStream(p);
++            return ClassFile.read(is);
++        } catch (ConstantPoolException e) {
++            throw new ClassFileError(e);
++        } finally {
++            if (is != null) {
++                is.close();
++            }
++        }
++    }
++
++    class FileIterator implements Iterator<ClassFile> {
++        int count;
++        FileIterator() {
++            this.count = 0;
++        }
++        public boolean hasNext() {
++            return count == 0 && baseFileName.endsWith(".class");
++        }
++
++        public ClassFile next() {
++            if (!hasNext()) {
++                throw new NoSuchElementException();
++            }
++            try {
++                ClassFile cf = readClassFile(path);
++                count++;
++                return cf;
++            } catch (IOException e) {
++                throw new ClassFileError(e);
++            }
++        }
++
++        public void remove() {
++            throw new UnsupportedOperationException("Not supported yet.");
++        }
++    }
++
++    public String toString() {
++        return path.toString();
++    }
++
++    private static class DirectoryReader extends ClassFileReader {
++        DirectoryReader(Path path) throws IOException {
++            super(path);
++        }
++
++        public ClassFile getClassFile(String name) throws IOException {
++            if (name.indexOf('.') > 0) {
++                int i = name.lastIndexOf('.');
++                String pathname = name.replace('.', File.separatorChar) + ".class";
++                Path p = path.resolve(pathname);
++                if (!p.toFile().exists()) {
++                    p = path.resolve(pathname.substring(0, i) + "$" +
++                                     pathname.substring(i+1, pathname.length()));
++                }
++                if (p.toFile().exists()) {
++                    return readClassFile(p);
++                }
++            } else {
++                Path p = path.resolve(name + ".class");
++                if (p.toFile().exists()) {
++                    return readClassFile(p);
++                }
++            }
++            return null;
++        }
++
++        public Iterable<ClassFile> getClassFiles() throws IOException {
++            final Iterator<ClassFile> iter = new DirectoryIterator();
++            return new Iterable<ClassFile>() {
++                public Iterator<ClassFile> iterator() {
++                    return iter;
++                }
++            };
++        }
++
++        private List<Path> walkTree(Path dir) throws IOException {
++            final List<Path> files = new ArrayList<Path>();
++            Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
++                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
++                        throws IOException {
++                    if (file.toFile().getName().endsWith(".class")) {
++                        files.add(file);
++                    }
++                    return FileVisitResult.CONTINUE;
++                }
++            });
++            return files;
++        }
++
++        class DirectoryIterator implements Iterator<ClassFile> {
++            private List<Path> entries;
++            private int index = 0;
++            DirectoryIterator() throws IOException {
++                entries = walkTree(path);
++                index = 0;
++            }
++
++            public boolean hasNext() {
++                return index != entries.size();
++            }
++
++            public ClassFile next() {
++                if (!hasNext()) {
++                    throw new NoSuchElementException();
++                }
++                Path path = entries.get(index++);
++                try {
++                    return readClassFile(path);
++                } catch (IOException e) {
++                    throw new ClassFileError(e);
++                }
++            }
++
++            public void remove() {
++                throw new UnsupportedOperationException("Not supported yet.");
++            }
++        }
++    }
++
++    private static class JarFileReader extends ClassFileReader {
++        final JarFile jarfile;
++        JarFileReader(Path path) throws IOException {
++            this(path, new JarFile(path.toFile()));
++        }
++        JarFileReader(Path path, JarFile jf) throws IOException {
++            super(path);
++            this.jarfile = jf;
++        }
++
++        public ClassFile getClassFile(String name) throws IOException {
++            if (name.indexOf('.') > 0) {
++                int i = name.lastIndexOf('.');
++                String entryName = name.replace('.', '/') + ".class";
++                JarEntry e = jarfile.getJarEntry(entryName);
++                if (e == null) {
++                    e = jarfile.getJarEntry(entryName.substring(0, i) + "$"
++                            + entryName.substring(i + 1, entryName.length()));
++                }
++                if (e != null) {
++                    return readClassFile(e);
++                }
++            } else {
++                JarEntry e = jarfile.getJarEntry(name + ".class");
++                if (e != null) {
++                    return readClassFile(e);
++                }
++            }
++            return null;
++        }
++
++        private ClassFile readClassFile(JarEntry e) throws IOException {
++            InputStream is = null;
++            try {
++                is = jarfile.getInputStream(e);
++                return ClassFile.read(is);
++            } catch (ConstantPoolException ex) {
++                throw new IOException(ex);
++            } finally {
++                if (is != null)
++                    is.close();
++            }
++        }
++
++        public Iterable<ClassFile> getClassFiles() throws IOException {
++            final Iterator<ClassFile> iter = new JarFileIterator();
++            return new Iterable<ClassFile>() {
++                public Iterator<ClassFile> iterator() {
++                    return iter;
++                }
++            };
++        }
++
++        class JarFileIterator implements Iterator<ClassFile> {
++            private Enumeration<JarEntry> entries;
++            private JarEntry nextEntry;
++            JarFileIterator() {
++                this.entries = jarfile.entries();
++                while (entries.hasMoreElements()) {
++                    JarEntry e = entries.nextElement();
++                    String name = e.getName();
++                    if (name.endsWith(".class")) {
++                        this.nextEntry = e;
++                        break;
++                    }
++                }
++            }
++
++            public boolean hasNext() {
++                return nextEntry != null;
++            }
++
++            public ClassFile next() {
++                if (!hasNext()) {
++                    throw new NoSuchElementException();
++                }
++
++                ClassFile cf;
++                try {
++                    cf = readClassFile(nextEntry);
++                } catch (IOException e) {
++                    throw new ClassFileError(e);
++                }
++                JarEntry entry = nextEntry;
++                nextEntry = null;
++                while (entries.hasMoreElements()) {
++                    JarEntry e = entries.nextElement();
++                    String name = e.getName();
++                    if (name.endsWith(".class")) {
++                        nextEntry = e;
++                        break;
++                    }
++                }
++                return cf;
++            }
++
++            public void remove() {
++                throw new UnsupportedOperationException("Not supported yet.");
++            }
++        }
++    }
++
++    public static class ClassFileError extends Error {
++        public ClassFileError(Throwable t) {
++            super(t);
++        }
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/sun/reflect/CallerSensitive/MethodFinder.java
+@@ -0,0 +1,201 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.util.*;
++import com.sun.tools.classfile.*;
++import static com.sun.tools.classfile.ConstantPool.*;
++import com.sun.tools.classfile.Instruction.TypeKind;
++
++/**
++ * MethodFinder utility class to find references to the given methods.
++ */
++public abstract class MethodFinder {
++    final List<String> methods;
++    public MethodFinder(String... methods) {
++        this.methods = Arrays.asList(methods);
++    }
++
++    /**
++     * A callback method will be invoked when a method referencing
++     * any of the lookup methods.
++     *
++     * @param cf ClassFile
++     * @param m Method
++     * @param refs Set of constant pool indices that reference the methods
++     *             matching the given lookup method names
++     */
++    public abstract void referenceFound(ClassFile cf, Method m, Set<Integer> refs)
++            throws ConstantPoolException;
++
++    public String parse(ClassFile cf) throws ConstantPoolException {
++        List<Integer> cprefs = new ArrayList<Integer>();
++        int index = 1;
++        for (ConstantPool.CPInfo cpInfo : cf.constant_pool.entries()) {
++            if (cpInfo.accept(cpVisitor, null)) {
++                cprefs.add(index);
++            }
++            index += cpInfo.size();
++        }
++
++        if (!cprefs.isEmpty()) {
++            for (Method m : cf.methods) {
++                Set<Integer> refs = new HashSet<Integer>();
++                Code_attribute c_attr = (Code_attribute) m.attributes.get(Attribute.Code);
++                if (c_attr != null) {
++                    for (Instruction instr : c_attr.getInstructions()) {
++                        int idx = instr.accept(codeVisitor, cprefs);
++                        if (idx > 0) {
++                            refs.add(idx);
++                        }
++                    }
++                }
++                if (refs.size() > 0) {
++                    referenceFound(cf, m, refs);
++                }
++            }
++        }
++        return cprefs.isEmpty() ? "" : cf.getName();
++    }
++
++    private ConstantPool.Visitor<Boolean,Void> cpVisitor =
++            new ConstantPool.Visitor<Boolean,Void>()
++    {
++        private boolean matches(CPRefInfo info) {
++            try {
++                CONSTANT_NameAndType_info nat = info.getNameAndTypeInfo();
++                return matches(info.getClassName(), nat.getName(), nat.getType());
++            } catch (ConstantPoolException ex) {
++                return false;
++            }
++        }
++
++        private boolean matches(String cn, String name, String type) {
++            return methods.contains(cn + "." + name);
++        }
++
++        public Boolean visitClass(CONSTANT_Class_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) {
++            return matches(info);
++        }
++
++        public Boolean visitMethodref(CONSTANT_Methodref_info info, Void p) {
++            return matches(info);
++        }
++
++        public Boolean visitDouble(CONSTANT_Double_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitFieldref(CONSTANT_Fieldref_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitFloat(CONSTANT_Float_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitInteger(CONSTANT_Integer_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitInvokeDynamic(CONSTANT_InvokeDynamic_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitLong(CONSTANT_Long_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitNameAndType(CONSTANT_NameAndType_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitMethodHandle(CONSTANT_MethodHandle_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitMethodType(CONSTANT_MethodType_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitString(CONSTANT_String_info info, Void p) {
++            return false;
++        }
++
++        public Boolean visitUtf8(CONSTANT_Utf8_info info, Void p) {
++            return false;
++        }
++    };
++
++    private Instruction.KindVisitor<Integer, List<Integer>> codeVisitor =
++            new Instruction.KindVisitor<Integer, List<Integer>>()
++    {
++        public Integer visitNoOperands(Instruction instr, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitArrayType(Instruction instr, TypeKind kind, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitBranch(Instruction instr, int offset, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitConstantPoolRef(Instruction instr, int index, List<Integer> p) {
++            return p.contains(index) ? index : 0;
++        }
++
++        public Integer visitConstantPoolRefAndValue(Instruction instr, int index, int value, List<Integer> p) {
++            return p.contains(index) ? index : 0;
++        }
++
++        public Integer visitLocal(Instruction instr, int index, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitLocalAndValue(Instruction instr, int index, int value, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitLookupSwitch(Instruction instr, int default_, int npairs, int[] matches, int[] offsets, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitTableSwitch(Instruction instr, int default_, int low, int high, int[] offsets, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitValue(Instruction instr, int value, List<Integer> p) {
++            return 0;
++        }
++
++        public Integer visitUnknown(Instruction instr, List<Integer> p) {
++            return 0;
++        }
++    };
++}
++
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/sun/reflect/CallerSensitive/MissingCallerSensitive.java
+@@ -0,0 +1,73 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/*
++ * @test
++ * @bug 8010117
++ * @summary Test CallerSensitiveFinder to find missing annotation
++ * @compile -XDignore.symbol.file MissingCallerSensitive.java
++ * @build CallerSensitiveFinder MethodFinder ClassFileReader
++ * @run main/othervm MissingCallerSensitive
++ */
++
++import java.nio.file.Path;
++import java.nio.file.Paths;
++import java.util.*;
++public class MissingCallerSensitive {
++    public static void main(String[] args) throws Exception {
++        String testclasses = System.getProperty("test.classes", ".");
++        List<Path> classes = new ArrayList<>();
++        classes.add(Paths.get(testclasses, "MissingCallerSensitive.class"));
++
++        final String method = "sun/reflect/Reflection.getCallerClass";
++        CallerSensitiveFinder csfinder = new CallerSensitiveFinder(method);
++        List<String> errors = csfinder.run(classes);
++        /*
++         * Expected 1 method missing @CallerSenitive and 2 methods not in
++         * the MethodHandleNatives CS list
++         */
++        if (errors.size() != 3) {
++            throw new RuntimeException("Unexpected number of methods found: " + errors.size());
++        }
++        int count=0;
++        for (String e : errors) {
++            if (e.startsWith("MissingCallerSensitive#missingCallerSensitiveAnnotation ")) {
++                count++;
++            }
++        }
++        if (count != 2) {
++            throw new RuntimeException("Error: expected 1 method missing annotation & missing in the list");
++        }
++    }
++
++    @sun.reflect.CallerSensitive
++    public ClassLoader getCallerLoader() {
++        Class<?> c = sun.reflect.Reflection.getCallerClass();
++        return c.getClassLoader();
++    }
++
++    public ClassLoader missingCallerSensitiveAnnotation() {
++        Class<?> c = sun.reflect.Reflection.getCallerClass();
++        return c.getClassLoader();
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8010727-empty_logger_name.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,99 @@
+# HG changeset patch
+# User mchung
+# Date 1368544028 25200
+# Node ID 776ac4b51f1538de78054f7774b9bbefc91374cb
+# Parent  0d497f17e31b82d42b5ae0a26e6636ee9ea65887
+8010727: WLS fails to add a logger with "" in its own LogManager subclass instance
+Reviewed-by: alanb, jgish
+
+--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
+@@ -496,7 +496,7 @@
+         }
+ 
+         synchronized void ensureRootLogger(Logger logger) {
+-            if (logger == manager.rootLogger)
++            if (logger.getName().isEmpty())
+                 return;
+ 
+             // during initialization, rootLogger is null when
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/LogManagerInstanceTest.java
+@@ -0,0 +1,76 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.util.logging.*;
++
++/*
++ * @test
++ * @bug 8010727
++ * @summary  LogManager.addLogger should succeed to add a logger named ""
++ *           if LogManager.getLogger("") returns null.
++ *
++ * @run main LogManagerInstanceTest
++ */
++
++public class LogManagerInstanceTest {
++    public static void main(String[] argv) {
++        LogManager mgr = LogManager.getLogManager();
++        if (getRootLogger(mgr) == null) {
++            throw new RuntimeException("Root logger not exist");
++        }
++
++        SecondLogManager mgr2 = new SecondLogManager();
++        Logger root = getRootLogger(mgr2);
++        if (mgr2.base != root) {
++            throw new RuntimeException(mgr2.base + " is not the root logger");
++        }
++    }
++
++    private static Logger getRootLogger(LogManager mgr) {
++        Logger l = mgr.getLogger("");
++        if (l != null && !l.getName().isEmpty()) {
++            throw new RuntimeException(l.getName() + " is not an invalid root logger");
++        }
++        return l;
++    }
++
++    static class SecondLogManager extends LogManager {
++        final Logger base;
++        private SecondLogManager() {
++            Logger root = getLogger("");
++            if (root == null) {
++                root = new BaseLogger("", null);
++                if (!super.addLogger(root))
++                    throw new RuntimeException("Fail to addLogger " + root);
++            } else {
++                System.out.println("Root logger already exists");
++            }
++            this.base = root;
++        }
++    }
++    static class BaseLogger extends Logger {
++        BaseLogger(String name, String rbname) {
++            super(name, rbname);
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8010939-logmanager_deadlock.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,264 @@
+# HG changeset patch
+# User jgish
+# Date 1366415410 25200
+# Node ID 871acb7cd95cb1dedae326e0e8eb4630f4eb980d
+# Parent  776ac4b51f1538de78054f7774b9bbefc91374cb
+8010939: Deadlock in LogManager
+Summary: re-order locks to avoid deadlock
+Reviewed-by: mchung, alanb
+
+--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
+@@ -33,10 +33,8 @@
+ import java.lang.ref.WeakReference;
+ import java.beans.PropertyChangeListener;
+ import java.beans.PropertyChangeSupport;
+-import java.net.URL;
+ import sun.misc.JavaAWTAccess;
+ import sun.misc.SharedSecrets;
+-import sun.security.action.GetPropertyAction;
+ 
+ /**
+  * There is a single global LogManager object that is used to
+@@ -151,7 +149,6 @@
+     // The global LogManager object
+     private static LogManager manager;
+ 
+-    private final static Handler[] emptyHandlers = { };
+     private Properties props = new Properties();
+     private PropertyChangeSupport changes
+                          = new PropertyChangeSupport(LogManager.class);
+@@ -516,14 +513,11 @@
+                 throw new NullPointerException();
+             }
+ 
+-            // cleanup some Loggers that have been GC'ed
+-            manager.drainLoggerRefQueueBounded();
+-
+             LoggerWeakRef ref = namedLoggers.get(name);
+             if (ref != null) {
+                 if (ref.get() == null) {
+-                    // It's possible that the Logger was GC'ed after the
+-                    // drainLoggerRefQueueBounded() call above so allow
++                    // It's possible that the Logger was GC'ed after a
++                    // drainLoggerRefQueueBounded() call so allow
+                     // a new one to be registered.
+                     removeLogger(name);
+                 } else {
+@@ -571,6 +565,8 @@
+             return true;
+         }
+ 
++        // note: all calls to removeLogger are synchronized on LogManager's
++        // intrinsic lock
+         void removeLogger(String name) {
+             namedLoggers.remove(name);
+         }
+@@ -853,6 +849,7 @@
+         if (name == null) {
+             throw new NullPointerException();
+         }
++        drainLoggerRefQueueBounded();
+         LoggerContext cx = getUserContext();
+         if (cx.addLocalLogger(logger)) {
+             // Do we have a per logger handler too?
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/DrainFindDeadlockTest.java
+@@ -0,0 +1,196 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.lang.management.ThreadInfo;
++import java.lang.management.ThreadMXBean;
++import java.lang.Thread.State;
++import java.io.IOException;
++import java.lang.management.ManagementFactory;
++import java.util.logging.LogManager;
++import java.util.logging.Logger;
++import java.util.Map;
++
++/**
++ * @test
++ * @bug 8010939
++ * @summary check for deadlock between findLogger() and drainLoggerRefQueueBounded()
++ * @author jim.gish@oracle.com
++ * @build DrainFindDeadlockTest
++ * @run main/othervm/timeout=10 DrainFindDeadlockTest
++ */
++
++/**
++ * This test is checking for a deadlock between
++ * LogManager$LoggerContext.findLogger() and
++ * LogManager.drainLoggerRefQueueBounded() (which could happen by calling
++ * Logger.getLogger() and LogManager.readConfiguration() in different threads)
++ */
++public class DrainFindDeadlockTest {
++    private LogManager mgr = LogManager.getLogManager();
++    private final static int MAX_ITERATIONS = 100;
++
++    // Get a ThreadMXBean so we can check for deadlock.  N.B. this may
++    // not be supported on all platforms, which means we will have to
++    // resort to the traditional test timeout method. However, if
++    // we have the support we'll get the deadlock details if one
++    // is detected.
++    private final static ThreadMXBean threadMXBean =
++            ManagementFactory.getThreadMXBean();
++    private final boolean threadMXBeanDeadlockSupported =
++            threadMXBean.isSynchronizerUsageSupported();
++
++    public static void main(String... args) throws IOException, Exception {
++        new DrainFindDeadlockTest().testForDeadlock();
++    }
++
++    public static void randomDelay() {
++        int runs = (int) Math.random() * 1000000;
++        int c = 0;
++
++        for (int i=0; i<runs; ++i) {
++            c=c+i;
++        }
++    }
++
++    public void testForDeadlock() throws IOException, Exception {
++        System.out.println("Deadlock detection "
++                + (threadMXBeanDeadlockSupported ? "is" : "is not") +
++                            " available.");
++        Thread setup = new Thread(new SetupLogger(), "SetupLogger");
++        Thread readConfig = new Thread(new ReadConfig(), "ReadConfig");
++        Thread check = new Thread(new DeadlockChecker(setup, readConfig),
++                                   "DeadlockChecker");
++
++        // make the threads daemon threads so they will go away when the
++        // test exits
++        setup.setDaemon(true);
++        readConfig.setDaemon(true);
++        check.setDaemon(true);
++
++        check.start(); setup.start(); readConfig.start();
++        try {
++            check.join();
++        } catch (InterruptedException ex) {
++            ex.printStackTrace();
++        }
++        try {
++            readConfig.join();
++            setup.join();
++        } catch (InterruptedException ex) {
++            ex.printStackTrace();
++        }
++        System.out.println("Test passed");
++    }
++
++    class SetupLogger implements Runnable {
++        Logger logger = null;
++
++        @Override
++        public void run() {
++            System.out.println("Running " + Thread.currentThread().getName());
++
++            for (int i=0; i < MAX_ITERATIONS; i++) {
++                logger = Logger.getLogger("DrainFindDeadlockTest"+i);
++                DrainFindDeadlockTest.randomDelay();
++            }
++        }
++    }
++
++    class ReadConfig implements Runnable {
++        @Override
++        public void run() {
++            System.out.println("Running " + Thread.currentThread().getName());
++            for (int i=0; i < MAX_ITERATIONS; i++) {
++                try {
++                    mgr.readConfiguration();
++                } catch (IOException | SecurityException ex) {
++                    throw new RuntimeException("FAILED: test setup problem", ex);
++                }
++                DrainFindDeadlockTest.randomDelay();
++            }
++        }
++    }
++
++    class DeadlockChecker implements Runnable {
++        Thread t1, t2;
++
++        DeadlockChecker(Thread t1, Thread t2) {
++            this.t1 = t1;
++            this.t2 = t2;
++        }
++
++        void checkState(Thread x, Thread y) {
++            //            System.out.println("checkstate");
++            boolean isXblocked = x.getState().equals(State.BLOCKED);
++            boolean isYblocked = y.getState().equals(State.BLOCKED);
++            long[] deadlockedThreads = null;
++
++            if (isXblocked && isYblocked) {
++                System.out.println("threads blocked");
++                // they are both blocked, but this doesn't necessarily mean
++                // they are deadlocked
++                if (threadMXBeanDeadlockSupported) {
++                    System.out.println("checking for deadlock");
++                    deadlockedThreads = threadMXBean.findDeadlockedThreads();
++                } else {
++                    System.out.println("Can't check for deadlock");
++                }
++                if (deadlockedThreads != null) {
++                    System.out.println("We detected a deadlock! ");
++                    ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(
++                            deadlockedThreads, true, true);
++                    for (ThreadInfo threadInfo: threadInfos) {
++                        System.out.println(threadInfo);
++                    }
++                    throw new RuntimeException("TEST FAILED: Deadlock detected");
++                }
++                System.out.println("We may have a deadlock");
++                Map<Thread, StackTraceElement[]> threadMap =
++                        Thread.getAllStackTraces();
++                dumpStack(threadMap.get(x), x);
++                dumpStack(threadMap.get(y), y);
++            }
++        }
++
++        private void dumpStack(StackTraceElement[] aStackElt, Thread aThread) {
++            if (aStackElt != null) {
++                 System.out.println("Thread:" + aThread.getName() + ": " +
++                                    aThread.getState());
++                 for (StackTraceElement element: aStackElt) {
++                    System.out.println("   " + element);
++                 }
++            }
++        }
++
++        @Override
++        public void run() {
++            System.out.println("Running " + Thread.currentThread().getName());
++            for (int i=0; i < MAX_ITERATIONS*2; i++) {
++                checkState(t1, t2);
++                try {
++                    Thread.sleep(10);
++                } catch (InterruptedException ex) {
++                };
++            }
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8011139-revise_checking_getenclosingclass.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,58 @@
+changeset:   4968:2d3faf217561
+user:        jfranck
+date:        Thu Apr 18 13:18:28 2013 +0200
+files:       src/share/classes/java/lang/Class.java
+description:
+8011139: (reflect) Revise checking in getEnclosingClass
+Reviewed-by: darcy, mchung, ahgross
+
+
+--- openjdk/jdk/src/share/classes/java/lang/Class.java
++++ openjdk/jdk/src/share/classes/java/lang/Class.java
+@@ -1134,13 +1134,9 @@
+                 enclosingCandidate = enclosingClass;
+         }
+ 
+-        // be very careful not to change the stack depth of this
+-        // checkMemberAccess call for security reasons
+-        // see java.lang.SecurityManager.checkMemberAccess
+-        if (enclosingCandidate != null) {
+-            enclosingCandidate.checkMemberAccess(Member.DECLARED,
+-                                                 Reflection.getCallerClass(), true);
+-        }
++        if (enclosingCandidate != null)
++            enclosingCandidate.checkPackageAccess(
++                    ClassLoader.getClassLoader(Reflection.getCallerClass()), true);
+         return enclosingCandidate;
+     }
+ 
+@@ -2214,6 +2210,8 @@
+      * Check if client is allowed to access members.  If access is denied,
+      * throw a SecurityException.
+      *
++     * This method also enforces package access.
++     *
+      * <p> Default policy: allow all clients access with normal Java access
+      * control.
+      */
+@@ -2234,7 +2232,19 @@
+                 // checkMemberAccess of subclasses of SecurityManager as specified.
+                 s.checkMemberAccess(this, which);
+             }
++            this.checkPackageAccess(ccl, checkProxyInterfaces);
++        }
++    }
+ 
++    /*
++     * Checks if a client loaded in ClassLoader ccl is allowed to access this
++     * class under the current package access policy. If access is denied,
++     * throw a SecurityException.
++     */
++    private void checkPackageAccess(final ClassLoader ccl, boolean checkProxyInterfaces) {
++        final SecurityManager s = System.getSecurityManager();
++        if (s != null) {
++            final ClassLoader cl = getClassLoader0();
+             if (ReflectUtil.needsPackageAccessCheck(ccl, cl)) {
+                 String name = this.getName();
+                 int i = name.lastIndexOf('.');
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8011990-logger_test_urls.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User jgish
+# Date 1366144454 14400
+# Node ID b9dc2f2b4c4daafb23b0cf76c71d88d8b2623fe0
+# Parent  108fe5a882a7bf5af5b38e963cef2729b41fa26e
+8011990: TEST_BUG: java/util/logging/bundlesearch/ResourceBundleSearchTest.java fails on Windows
+Summary: Fix URL to reliably work on all platforms
+Reviewed-by: duke
+
+--- openjdk/jdk/test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java
+@@ -21,6 +21,7 @@
+  * questions.
+  */
+ 
++import java.io.File;
+ import java.lang.reflect.InvocationTargetException;
+ import java.lang.reflect.Method;
+ import java.net.URL;
+@@ -45,11 +46,13 @@
+         String testClassesDir = System.getProperty("test.classes",
+                 System.getProperty("user.dir"));
+         String sep = System.getProperty("file.separator");
++
+         URL[] urls = new URL[2];
+ 
+         // Allow for both jtreg and standalone cases here
+-        urls[0] = new URL("file://" + testDir + sep + "resources" + sep);
+-        urls[1] = new URL("file://" + testClassesDir + sep );
++        urls[0] = new File( testDir + sep + "resources" + sep ).toURI().toURL();
++        urls[1] = new File( testClassesDir + sep ).toURI().toURL();
++
+         System.out.println("INFO: urls[0] = " + urls[0]);
+         System.out.println("INFO: urls[1] = " + urls[1]);
+ 
+--- openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
+@@ -29,6 +29,7 @@
+  * @build  ResourceBundleSearchTest IndirectlyLoadABundle LoadItUp
+  * @run main ResourceBundleSearchTest
+  */
++import java.io.File;
+ import java.net.URL;
+ import java.net.URLClassLoader;
+ import java.util.ArrayList;
+@@ -70,7 +71,8 @@
+         String sep = System.getProperty("file.separator");
+ 
+         URL[] urls = new URL[1];
+-        urls[0] = new URL("file://" + testDir + sep + "resources" + sep);
++
++        urls[0] = new File( testDir + sep + "resources" + sep ).toURI().toURL();
+         URLClassLoader rbClassLoader = new URLClassLoader(urls);
+ 
+         // Test 1 - can we find a Logger bundle from doing a stack search?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8012243-serial_regression.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User dfuchs
+# Date 1367362161 -7200
+# Node ID 7c75580b144fc3e7841e1b7fa7e4ae7efb67476e
+# Parent  22decf80e0e833a8667f3e413da735b269d97fe6
+8012243: about 30% regression on specjvm2008.serial on 7u25 comparing 7u21
+Reviewed-by: alanb, skoivu, smarks, mchung
+
+--- openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java
++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamClass.java
+@@ -266,9 +266,11 @@
+         if (cl == null) {
+             return null;
+         }
+-        Class<?> caller = Reflection.getCallerClass();
+-        if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) {
+-            ReflectUtil.checkPackageAccess(cl);
++        if (System.getSecurityManager() != null) {
++            Class<?> caller = Reflection.getCallerClass();
++            if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) {
++                ReflectUtil.checkPackageAccess(cl);
++            }
+         }
+         return cl;
+     }
+--- openjdk/jdk/src/share/classes/java/io/ObjectStreamField.java
++++ openjdk/jdk/src/share/classes/java/io/ObjectStreamField.java
+@@ -162,9 +162,11 @@
+      */
+     @CallerSensitive
+     public Class<?> getType() {
+-        Class<?> caller = Reflection.getCallerClass();
+-        if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), type.getClassLoader())) {
+-            ReflectUtil.checkPackageAccess(type);
++        if (System.getSecurityManager() != null) {
++            Class<?> caller = Reflection.getCallerClass();
++            if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), type.getClassLoader())) {
++                ReflectUtil.checkPackageAccess(type);
++            }
+         }
+         return type;
+     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8013380-handle_renames.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,107 @@
+This patch contains the rename that was part of S8013380
+diff -ruN openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp1.java openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp1.java
+--- openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp1.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp1.java	2013-07-02 15:06:44.972433968 -0400
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.util.logging.Logger;
++
++/*
++ * This class is loaded onto the call stack when the getLogger methods are
++ * called and then the classes classloader can be used to find a bundle in
++ * the same directory as the class.  However, Logger is not allowed
++ * to find the bundle by looking up the stack for this classloader.
++ * We verify that this cannot happen.
++ *
++ * @author Jim Gish
++ */
++public class LoadItUp1 {
++    public Logger getAnonymousLogger(String rbName) throws Exception {
++        // we should not be able to find the resource in this directory via
++        // getLogger calls.  The only way that would be possible given this setup
++        // is that if Logger.getLogger searched up the call stack
++        return Logger.getAnonymousLogger(rbName);
++    }
++
++    public Logger getLogger(String loggerName) {
++        return Logger.getLogger(loggerName);
++    }
++
++    public Logger getLogger(String loggerName,String bundleName) {
++        return Logger.getLogger(loggerName, bundleName);
++    }
++}
+diff -ruN openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java
+--- openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java	2013-07-02 15:06:44.972433968 -0400
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java	1969-12-31 19:00:00.000000000 -0500
+@@ -1,49 +0,0 @@
+-/*
+- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * under the terms of the GNU General Public License version 2 only, as
+- * published by the Free Software Foundation.
+- *
+- * This code is distributed in the hope that it will be useful, but WITHOUT
+- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+- * version 2 for more details (a copy is included in the LICENSE file that
+- * accompanied this code).
+- *
+- * You should have received a copy of the GNU General Public License version
+- * 2 along with this work; if not, write to the Free Software Foundation,
+- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+- *
+- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+- * or visit www.oracle.com if you need additional information or have any
+- * questions.
+- */
+-import java.util.logging.Logger;
+-
+-/*
+- * This class is loaded onto the call stack when the getLogger methods are
+- * called and then the classes classloader can be used to find a bundle in
+- * the same directory as the class.  However, Logger is not allowed
+- * to find the bundle by looking up the stack for this classloader.
+- * We verify that this cannot happen.
+- *
+- * @author Jim Gish
+- */
+-public class LoadItUp1 {
+-    public Logger getAnonymousLogger(String rbName) throws Exception {
+-        // we should not be able to find the resource in this directory via
+-        // getLogger calls.  The only way that would be possible given this setup
+-        // is that if Logger.getLogger searched up the call stack
+-        return Logger.getAnonymousLogger(rbName);
+-    }
+-
+-    public Logger getLogger(String loggerName) {
+-        return Logger.getLogger(loggerName);
+-    }
+-
+-    public Logger getLogger(String loggerName,String bundleName) {
+-        return Logger.getLogger(loggerName, bundleName);
+-    }
+-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8013380-logger_stack_walk_glassfish.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,936 @@
+# HG changeset patch
+# User andrew
+# Date 1372305047 18000
+# Node ID 8c2f91c4c4b80f8725786a3006ee6043d765af72
+# Parent  b9dc2f2b4c4daafb23b0cf76c71d88d8b2623fe0
+8013380: Removal of stack walk to find resource bundle breaks Glassfish startup
+Summary: Use caller's classloader to load resource as an alternative to thread context classloader and system classloader
+Reviewed-by: mchung, alanb
+
+--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java
+@@ -389,11 +389,11 @@
+     // add a new Logger or return the one that has been added previously
+     // as a LogManager subclass may override the addLogger, getLogger,
+     // readConfiguration, and other methods.
+-    Logger demandLogger(String name, String resourceBundleName) {
++    Logger demandLogger(String name, String resourceBundleName, Class<?> caller) {
+         Logger result = getLogger(name);
+         if (result == null) {
+             // only allocate the new logger once
+-            Logger newLogger = new Logger(name, resourceBundleName);
++            Logger newLogger = new Logger(name, resourceBundleName, caller);
+             do {
+                 if (addLogger(newLogger)) {
+                     // We successfully added the new Logger that we
+@@ -475,7 +475,7 @@
+         Logger demandLogger(String name, String resourceBundleName) {
+             // a LogManager subclass may have its own implementation to add and
+             // get a Logger.  So delegate to the LogManager to do the work.
+-            return manager.demandLogger(name, resourceBundleName);
++            return manager.demandLogger(name, resourceBundleName, null);
+         }
+ 
+         synchronized Logger findLogger(String name) {
+--- openjdk/jdk/src/share/classes/java/util/logging/Logger.java
++++ openjdk/jdk/src/share/classes/java/util/logging/Logger.java
+@@ -190,6 +190,7 @@
+     private ArrayList<LogManager.LoggerWeakRef> kids;   // WeakReferences to loggers that have us as parent
+     private Level levelObject;
+     private volatile int levelValue;  // current effective level value
++    private WeakReference<ClassLoader> callersClassLoaderRef;
+ 
+     /**
+      * GLOBAL_LOGGER_NAME is a name for the global logger.
+@@ -250,15 +251,31 @@
+      *             no corresponding resource can be found.
+      */
+     protected Logger(String name, String resourceBundleName) {
++        this(name, resourceBundleName, null);
++    }
++
++    Logger(String name, String resourceBundleName, Class<?> caller) {
+         this.manager = LogManager.getLogManager();
+-        if (resourceBundleName != null) {
+-            // Note: we may get a MissingResourceException here.
+-            setupResourceInfo(resourceBundleName);
+-        }
++        setupResourceInfo(resourceBundleName, caller);
+         this.name = name;
+         levelValue = Level.INFO.intValue();
+     }
+ 
++    private void setCallersClassLoaderRef(Class<?> caller) {
++        ClassLoader callersClassLoader = ((caller != null)
++                                         ? caller.getClassLoader()
++                                         : null);
++        if (callersClassLoader != null) {
++            this.callersClassLoaderRef = new WeakReference(callersClassLoader);
++        }
++    }
++
++    private ClassLoader getCallersClassLoader() {
++        return (callersClassLoaderRef != null)
++                ? callersClassLoaderRef.get()
++                : null;
++    }
++
+     // This constructor is used only to create the global Logger.
+     // It is needed to break a cyclic dependence between the LogManager
+     // and Logger static initializers causing deadlocks.
+@@ -312,7 +329,9 @@
+                 return manager.demandSystemLogger(name, resourceBundleName);
+             }
+         }
+-        return manager.demandLogger(name, resourceBundleName);
++        return manager.demandLogger(name, resourceBundleName, caller);
++        // ends up calling new Logger(name, resourceBundleName, caller)
++        // iff the logger doesn't exist already
+     }
+ 
+     /**
+@@ -405,11 +424,24 @@
+     // adding a new Logger object is handled by LogManager.addLogger().
+     @CallerSensitive
+     public static synchronized Logger getLogger(String name, String resourceBundleName) {
+-        Logger result = demandLogger(name, resourceBundleName, Reflection.getCallerClass());
++        Class<?> callerClass = Reflection.getCallerClass();
++        Logger result = demandLogger(name, resourceBundleName, callerClass);
++
+         if (result.resourceBundleName == null) {
++            // We haven't set a bundle name yet on the Logger, so it's ok to proceed.
++
++            // We have to set the callers ClassLoader here in case demandLogger
++            // above found a previously created Logger.  This can happen, for
++            // example, if Logger.getLogger(name) is called and subsequently
++            // Logger.getLogger(name, resourceBundleName) is called.  In this case
++            // we won't necessarily have the correct classloader saved away, so
++            // we need to set it here, too.
++
+             // Note: we may get a MissingResourceException here.
+-            result.setupResourceInfo(resourceBundleName);
++            result.setupResourceInfo(resourceBundleName, callerClass);
+         } else if (!result.resourceBundleName.equals(resourceBundleName)) {
++            // We already had a bundle name on the Logger and we're trying
++            // to change it here which is not allowed.
+             throw new IllegalArgumentException(result.resourceBundleName +
+                                 " != " + resourceBundleName);
+         }
+@@ -479,10 +511,12 @@
+      * @throws MissingResourceException if the named ResourceBundle cannot be found.
+      */ 
++    @CallerSensitive
+     public static synchronized Logger getAnonymousLogger(String resourceBundleName) {
+         LogManager manager = LogManager.getLogManager();
+         // cleanup some Loggers that have been GC'ed
+         manager.drainLoggerRefQueueBounded();
+-        Logger result = new Logger(null, resourceBundleName);
++        Logger result = new Logger(null, resourceBundleName,
++                                   Reflection.getCallerClass());
+         result.anonymous = true;
+         Logger root = manager.getLogger("");
+         result.doSetParent(root);
+@@ -499,7 +533,7 @@
+      * @return localization bundle (may be null)
+      */
+     public ResourceBundle getResourceBundle() {
+-        return findResourceBundle(getResourceBundleName());
++        return findResourceBundle(getResourceBundleName(), true);
+     }
+ 
+     /**
+@@ -581,7 +615,7 @@
+         String ebname = getEffectiveResourceBundleName();
+         if (ebname != null && !ebname.equals(SYSTEM_LOGGER_RB_NAME)) {
+             lr.setResourceBundleName(ebname);
+-            lr.setResourceBundle(findResourceBundle(ebname));
++            lr.setResourceBundle(findResourceBundle(ebname, true));
+         }
+         log(lr);
+     }
+@@ -798,7 +832,7 @@
+         lr.setLoggerName(name);
+         if (rbname != null) {
+             lr.setResourceBundleName(rbname);
+-            lr.setResourceBundle(findResourceBundle(rbname));
++            lr.setResourceBundle(findResourceBundle(rbname, false));
+         }
+         log(lr);
+     }
+@@ -822,7 +856,6 @@
+      *                         can be null
+      * @param   msg     The string message (or a key in the message catalog)
+      */
+-
+     public void logrb(Level level, String sourceClass, String sourceMethod,
+                                 String bundleName, String msg) {
+         if (level.intValue() < levelValue || levelValue == offValue) {
+@@ -1347,9 +1380,18 @@
+      * there is no suitable previous cached value.
+      *
+      * @param name the ResourceBundle to locate
++     * @param userCallersClassLoader if true search using the caller's ClassLoader
+      * @return ResourceBundle specified by name or null if not found
+      */
+-    private synchronized ResourceBundle findResourceBundle(String name) {
++    private synchronized ResourceBundle findResourceBundle(String name,
++                                                           boolean useCallersClassLoader) {
++        // For all lookups, we first check the thread context class loader
++        // if it is set.  If not, we use the system classloader.  If we
++        // still haven't found it we use the callersClassLoaderRef if it
++        // is set and useCallersClassLoader is true.  We set
++        // callersClassLoaderRef initially upon creating the logger with a
++        // non-null resource bundle name.
++
+         // Return a null bundle for a null name.
+         if (name == null) {
+             return null;
+@@ -1382,22 +1424,52 @@
+             catalogLocale = currentLocale;
+             return catalog;
+         } catch (MissingResourceException ex) {
++            // We can't find the ResourceBundle in the default
++            // ClassLoader.  Drop through.
++        }
++
++        if (useCallersClassLoader) {
++            // Try with the caller's ClassLoader
++            ClassLoader callersClassLoader = getCallersClassLoader();
++
++            if (callersClassLoader == null || callersClassLoader == cl) {
++                return null;
++            }
++
++            try {
++                catalog = ResourceBundle.getBundle(name, currentLocale,
++                                                   callersClassLoader);
++                catalogName = name;
++                catalogLocale = currentLocale;
++                return catalog;
++            } catch (MissingResourceException ex) {
++                return null; // no luck
++            }
++        } else {
+             return null;
+         }
+     }
+ 
+     // Private utility method to initialize our one entry
+-    // resource bundle cache.
++    // resource bundle name cache and the callers ClassLoader
+     // Note: for consistency reasons, we are careful to check
+     // that a suitable ResourceBundle exists before setting the
+-    // ResourceBundleName.
+-    private synchronized void setupResourceInfo(String name) {
++    // resourceBundleName field.
++    // Synchronized to prevent races in setting the fields.
++    private synchronized void setupResourceInfo(String name,
++                                                Class<?> callersClass) {
+         if (name == null) {
+             return;
+         }
+-        if (findResourceBundle(name) == null) {
++
++        setCallersClassLoaderRef(callersClass);
++        if (findResourceBundle(name, true) == null) {
+             // We've failed to find an expected ResourceBundle.
+-            throw new MissingResourceException("Can't find " + name + " bundle", name, "");
++            // unset the caller's ClassLoader since we were unable to find the
++            // the bundle using it
++            this.callersClassLoaderRef = null;
++            throw new MissingResourceException("Can't find " + name + " bundle",
++                                                name, "");
+         }
+         resourceBundleName = name;
+     }
+--- openjdk/jdk/test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/IndirectlyLoadABundle.java
+@@ -21,43 +21,28 @@
+  * questions.
+  */
+ 
+-import java.io.File;
+ import java.lang.reflect.InvocationTargetException;
+ import java.lang.reflect.Method;
++import java.net.MalformedURLException;
+ import java.net.URL;
+ import java.net.URLClassLoader;
++import java.nio.file.Paths;
++import java.util.logging.Logger;
+ 
+ /**
+  * This class is used to ensure that a resource bundle loadable by a classloader
+- * is on the caller's stack, but not on the classpath or TCCL to ensure that
+- * Logger.getLogger() can't load the bundle via a stack search
++ * is on the caller's stack, but not on the classpath or TCCL.  It tests that
++ * Logger.getLogger() can load the bundle via the immediate caller's classloader
+  *
+  * @author Jim Gish
+  */
+ public class IndirectlyLoadABundle {
+ 
+-    private final static String rbName = "StackSearchableResource";
++    private final static String rbName = "CallerSearchableResource";
+ 
+     public boolean loadAndTest() throws Throwable {
+-        // Find out where we are running from so we can setup the URLClassLoader URLs
+-        // test.src and test.classes will be set if running in jtreg, but probably
+-        // not otherwise
+-        String testDir = System.getProperty("test.src", System.getProperty("user.dir"));
+-        String testClassesDir = System.getProperty("test.classes",
+-                System.getProperty("user.dir"));
+-        String sep = System.getProperty("file.separator");
+-
+-        URL[] urls = new URL[2];
+-
+-        // Allow for both jtreg and standalone cases here
+-        urls[0] = new File( testDir + sep + "resources" + sep ).toURI().toURL();
+-        urls[1] = new File( testClassesDir + sep ).toURI().toURL();
+-
+-        System.out.println("INFO: urls[0] = " + urls[0]);
+-        System.out.println("INFO: urls[1] = " + urls[1]);
+-
+         // Make sure we can find it via the URLClassLoader
+-        URLClassLoader yetAnotherResourceCL = new URLClassLoader(urls, null);
++        URLClassLoader yetAnotherResourceCL = new URLClassLoader(getURLs(), null);
+         if (!testForValidResourceSetup(yetAnotherResourceCL)) {
+             throw new Exception("Couldn't directly load bundle " + rbName
+                     + " as expected. Test config problem");
+@@ -70,23 +55,109 @@
+                     + " able to. Test config problem");
+         }
+ 
+-        Class<?> loadItUpClazz = Class.forName("LoadItUp", true, yetAnotherResourceCL);
++        Class<?> loadItUpClazz = Class.forName("LoadItUp1", true,
++                                               yetAnotherResourceCL);
+         ClassLoader actual = loadItUpClazz.getClassLoader();
+         if (actual != yetAnotherResourceCL) {
+-            throw new Exception("LoadItUp was loaded by an unexpected CL: " + actual);
++            throw new Exception("LoadItUp1 was loaded by an unexpected CL: " + actual);
+         }
+         Object loadItUp = loadItUpClazz.newInstance();
+-        Method testMethod = loadItUpClazz.getMethod("test", String.class);
++        Method testMethod = loadItUpClazz.getMethod("getLogger", String.class, String.class);
+         try {
+-            return (Boolean) testMethod.invoke(loadItUp, rbName);
++            return (Logger)testMethod.invoke(loadItUp, "NestedLogger1", rbName) != null;
+         } catch (InvocationTargetException ex) {
+             throw ex.getTargetException();
+         }
+     }
+ 
++    public boolean testGetAnonymousLogger() throws Throwable {
++        // Test getAnonymousLogger()
++        URLClassLoader loadItUpCL = new URLClassLoader(getURLs(), null);
++        Class<?> loadItUpClazz = Class.forName("LoadItUp1", true, loadItUpCL);
++        ClassLoader actual = loadItUpClazz.getClassLoader();
++        if (actual != loadItUpCL) {
++            throw new Exception("LoadItUp1 was loaded by an unexpected CL: "
++                                 + actual);
++        }
++        Object loadItUpAnon = loadItUpClazz.newInstance();
++        Method testAnonMethod = loadItUpClazz.getMethod("getAnonymousLogger",
++                                                        String.class);
++        try {
++            return (Logger)testAnonMethod.invoke(loadItUpAnon, rbName) != null;
++        } catch (InvocationTargetException ex) {
++            throw ex.getTargetException();
++        }
++    }
++
++
++    public boolean testGetLoggerGetLoggerWithBundle() throws Throwable {
++        // test getLogger("NestedLogger2"); followed by
++        // getLogger("NestedLogger2", rbName) to see if the bundle is found
++        //
++        URL[] urls = getURLs();
++        if (getLoggerWithNewCL(urls, "NestedLogger2", null)) {
++            return getLoggerWithNewCL(urls, "NestedLogger2", rbName);
++
++        } else {
++            throw new Exception("TEST FAILED: first call to getLogger() failed "
++                                 + " in IndirectlyLoadABundle."
++                                 + "testGetLoggerGetLoggerWithBundle");
++        }
++    }
++
++    private URL[] getURLs() throws MalformedURLException {
++        // Find out where we are running from so we can setup the URLClassLoader URLs
++        // test.src and test.classes will be set if running in jtreg, but probably
++        // not otherwise
++        String testDir = System.getProperty("test.src", System.getProperty("user.dir"));
++        String testClassesDir = System.getProperty("test.classes",
++                                                   System.getProperty("user.dir"));
++        URL[] urls = new URL[2];
++        // Allow for both jtreg and standalone cases here
++        urls[0] = Paths.get(testDir, "resources").toUri().toURL();
++        urls[1] = Paths.get(testClassesDir).toUri().toURL();
++
++        return urls;
++    }
++
++    private boolean getLoggerWithNewCL(URL[] urls, String loggerName,
++                                         String bundleName) throws Throwable {
++        Logger result = null;;
++        // Test getLogger("foo"); getLogger("foo", "rbName");
++        // First do the getLogger() call with no bundle name
++        URLClassLoader getLoggerCL = new URLClassLoader(urls, null);
++        Class<?> loadItUpClazz1 = Class.forName("LoadItUp1", true, getLoggerCL);
++        ClassLoader actual = loadItUpClazz1.getClassLoader();
++        if (actual != getLoggerCL) {
++            throw new Exception("LoadItUp1 was loaded by an unexpected CL: "
++                                 + actual);
++        }
++        Object loadItUp1 = loadItUpClazz1.newInstance();
++        if (bundleName != null) {
++            Method getLoggerMethod = loadItUpClazz1.getMethod("getLogger",
++                                                              String.class,
++                                                              String.class);
++            try {
++                result = (Logger) getLoggerMethod.invoke(loadItUp1, loggerName,
++                                                         bundleName);
++            } catch (InvocationTargetException ex) {
++                throw ex.getTargetException();
++            }
++        } else {
++            Method getLoggerMethod = loadItUpClazz1.getMethod("getLogger",
++                                                              String.class);
++            try {
++                result = (Logger) getLoggerMethod.invoke(loadItUp1, loggerName);
++            } catch (InvocationTargetException ex) {
++                throw ex.getTargetException();
++            }
++        }
++        return result != null;
++    }
++
+     private boolean testForValidResourceSetup(ClassLoader cl) {
+-        // First make sure the test environment is setup properly and the bundle actually
+-        // exists
++        // First make sure the test environment is setup properly and the bundle
++        // actually exists
+         return ResourceBundleSearchTest.isOnClassPath(rbName, cl);
+     }
+ }
+rename from test/java/util/logging/bundlesearch/LoadItUp.java
+rename to test/java/util/logging/bundlesearch/LoadItUp1.java
+--- openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp1.java
+@@ -20,43 +20,30 @@
+  * or visit www.oracle.com if you need additional information or have any
+  * questions.
+  */
+-import java.util.MissingResourceException;
+ import java.util.logging.Logger;
+ 
+ /*
+- * This class is loaded onto the call stack when the test method is called
+- * and then its classloader can be used to find a property bundle in the same
+- * directory as the class.  However, Logger is not allowed
++ * This class is loaded onto the call stack when the getLogger methods are
++ * called and then the classes classloader can be used to find a bundle in
++ * the same directory as the class.  However, Logger is not allowed
+  * to find the bundle by looking up the stack for this classloader.
+  * We verify that this cannot happen.
+  *
+  * @author Jim Gish
+  */
+-public class LoadItUp {
+-
+-    private final static boolean DEBUG = false;
+-
+-    public Boolean test(String rbName) throws Exception {
++public class LoadItUp1 {
++    public Logger getAnonymousLogger(String rbName) throws Exception {
+         // we should not be able to find the resource in this directory via
+         // getLogger calls.  The only way that would be possible given this setup
+         // is that if Logger.getLogger searched up the call stack
+-        return lookupBundle(rbName);
++        return Logger.getAnonymousLogger(rbName);
+     }
+ 
+-    private boolean lookupBundle(String rbName) {
+-        // See if Logger.getLogger can find the resource in this directory
+-        try {
+-            Logger aLogger = Logger.getLogger("NestedLogger", rbName);
+-        } catch (MissingResourceException re) {
+-            if (DEBUG) {
+-                System.out.println(
+-                    "As expected, LoadItUp.lookupBundle() did not find the bundle "
+-                    + rbName);
+-            }
+-            return false;
+-        }
+-        System.out.println("FAILED: LoadItUp.lookupBundle() found the bundle "
+-                + rbName + " using a stack search.");
+-        return true;
++    public Logger getLogger(String loggerName) {
++        return Logger.getLogger(loggerName);
++    }
++
++    public Logger getLogger(String loggerName,String bundleName) {
++        return Logger.getLogger(loggerName, bundleName);
+     }
+ }
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp2.java
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.util.MissingResourceException;
++import java.util.logging.Logger;
++
++/*
++ * This class is loaded onto the call stack by LoadItUp2Invoker from a separate
++ * classloader.  LoadItUp2Invoker was loaded by a class loader that does have
++ * access to the bundle, but the class loader used to load this class does not.
++ * Thus the logging code should not be able to see the resource bundle unless
++ * it has more than a single level stack crawl, which is not allowed.
++ *
++ * @author Jim Gish
++ */
++public class LoadItUp2 {
++
++    private final static boolean DEBUG = false;
++
++    public Boolean test(String rbName) throws Exception {
++        // we should not be able to find the resource in this directory via
++        // getLogger calls.  The only way that would be possible given this setup
++        // is that if Logger.getLogger searched up the call stack
++        return lookupBundle(rbName);
++    }
++
++    private boolean lookupBundle(String rbName) {
++        // See if Logger.getLogger can find the resource in this directory
++        try {
++            Logger aLogger = Logger.getLogger("NestedLogger2", rbName);
++        } catch (MissingResourceException re) {
++            if (DEBUG) {
++                System.out.println(
++                    "As expected, LoadItUp2.lookupBundle() did not find the bundle "
++                    + rbName);
++            }
++            return false;
++        }
++        System.out.println("FAILED: LoadItUp2.lookupBundle() found the bundle "
++                + rbName + " using a stack search.");
++        return true;
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/LoadItUp2Invoker.java
+@@ -0,0 +1,60 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.net.URL;
++import java.net.URLClassLoader;
++
++/**
++ * This class is loaded by a class loader that can see the resource. It creates
++ * a new classloader for LoadItUp2 which cannot see the resource.  So, 2 levels
++ * up the call chain we have a class/classloader that can see the resource, but
++ * 1 level up the class/classloader cannot.
++ *
++ * @author Jim Gish
++ */
++public class LoadItUp2Invoker {
++    private URLClassLoader cl;
++    private String rbName;
++    private Object loadItUp2;
++    private Method testMethod;
++
++    public void setup(URL[] urls, String rbName) throws
++                       ReflectiveOperationException {
++        this.cl = new URLClassLoader(urls, null);
++        this.rbName = rbName;
++        // Using this new classloader, load the actual test class
++        // which is now two levels removed from the original caller
++        Class<?> loadItUp2Clazz = Class.forName("LoadItUp2", true , cl);
++        this.loadItUp2 = loadItUp2Clazz.newInstance();
++        this.testMethod = loadItUp2Clazz.getMethod("test", String.class);
++    }
++
++    public Boolean test() throws Throwable {
++        try {
++            return (Boolean) testMethod.invoke(loadItUp2, rbName);
++        } catch (InvocationTargetException ex) {
++            throw ex.getTargetException();
++        }
++    }
++}
+--- openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
+@@ -23,15 +23,15 @@
+ 
+ /*
+  * @test
+- * @bug     8010127
++ * @bug     8010127 8013380
+  * @summary Remove the stack search for a resource bundle Logger to use
+  * @author  Jim Gish
+- * @build  ResourceBundleSearchTest IndirectlyLoadABundle LoadItUp
+- * @run main ResourceBundleSearchTest
++ * @build  ResourceBundleSearchTest IndirectlyLoadABundle LoadItUp1 LoadItUp2 TwiceIndirectlyLoadABundle LoadItUp2Invoker
++ * @run main/othervm ResourceBundleSearchTest
+  */
+-import java.io.File;
+ import java.net.URL;
+ import java.net.URLClassLoader;
++import java.nio.file.Paths;
+ import java.util.ArrayList;
+ import java.util.List;
+ import java.util.Locale;
+@@ -39,6 +39,12 @@
+ import java.util.ResourceBundle;
+ import java.util.logging.Logger;
+ 
++/**
++ * This class tests various scenarios of loading resource bundles from
++ * java.util.logging.  Since jtreg uses the logging system, it is necessary to
++ * run these tests using othervm mode to ensure no interference from logging
++ * initialization by jtreg
++ */
+ public class ResourceBundleSearchTest {
+ 
+     private final static boolean DEBUG = false;
+@@ -49,7 +55,7 @@
+ 
+     private static int numPass = 0;
+     private static int numFail = 0;
+-    private static List<String> msgs = new ArrayList<String>();
++    private static List<String> msgs = new ArrayList<>();
+ 
+     public static void main(String[] args) throws Throwable {
+         ResourceBundleSearchTest test = new ResourceBundleSearchTest();
+@@ -60,47 +66,54 @@
+         // ensure we are using en as the default Locale so we can find the resource
+         Locale.setDefault(Locale.ENGLISH);
+ 
+-        String testClasses = System.getProperty("test.classes");
+-        System.out.println( "test.classes = " + testClasses );
+-
+         ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
+ 
+         // Find out where we are running from so we can setup the URLClassLoader URL
+         String userDir = System.getProperty("user.dir");
+         String testDir = System.getProperty("test.src", userDir);
+-        String sep = System.getProperty("file.separator");
+ 
+         URL[] urls = new URL[1];
+ 
+-        urls[0] = new File( testDir + sep + "resources" + sep ).toURI().toURL();
++        urls[0] = Paths.get(testDir, "resources").toUri().toURL();
+         URLClassLoader rbClassLoader = new URLClassLoader(urls);
+ 
+         // Test 1 - can we find a Logger bundle from doing a stack search?
+         // We shouldn't be able to
+-        assertFalse(testGetBundleFromStackSearch(), "testGetBundleFromStackSearch");
++        assertFalse(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch");
+ 
+         // Test 2 - can we find a Logger bundle off of the Thread context class
+         // loader? We should be able to.
+-        assertTrue(
+-                testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader),
+-                "testGetBundleFromTCCL");
++        assertTrue(testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader),
++                   "2-testGetBundleFromTCCL");
+ 
+         // Test 3 - Can we find a Logger bundle from the classpath?  We should be
+-        // able to, but ....
+-        // We check to see if the bundle is on the classpath or not so that this
+-        // will work standalone.  In the case of jtreg/samevm,
+-        // the resource bundles are not on the classpath.  Running standalone
+-        // (or othervm), they are
++        // able to.  We'll first check to make sure the setup is correct and
++        // it actually is on the classpath before checking whether logging
++        // can see it there.
+         if (isOnClassPath(PROP_RB_NAME, myClassLoader)) {
+             debug("We should be able to see " + PROP_RB_NAME + " on the classpath");
+             assertTrue(testGetBundleFromSystemClassLoader(PROP_RB_NAME),
+-                    "testGetBundleFromSystemClassLoader");
++                       "3-testGetBundleFromSystemClassLoader");
+         } else {
+-            debug("We should not be able to see " + PROP_RB_NAME + " on the classpath");
+-            assertFalse(testGetBundleFromSystemClassLoader(PROP_RB_NAME),
+-                    "testGetBundleFromSystemClassLoader");
++            throw new Exception("TEST SETUP FAILURE: Cannot see " + PROP_RB_NAME
++                                 + " on the classpath");
+         }
+ 
++        // Test 4 - we should be able to find a bundle from the caller's
++        // classloader, but only one level up.
++        assertTrue(testGetBundleFromCallersClassLoader(),
++                   "4-testGetBundleFromCallersClassLoader");
++
++        // Test 5 - this ensures that getAnonymousLogger(String rbName)
++        // can find the bundle from the caller's classloader
++        assertTrue(testGetAnonymousLogger(), "5-testGetAnonymousLogger");
++
++        // Test 6 - first call getLogger("myLogger").
++        // Then call getLogger("myLogger","bundleName") from a different ClassLoader
++        // Make sure we find the bundle
++        assertTrue(testGetBundleFromSecondCallersClassLoader(),
++                   "6-testGetBundleFromSecondCallersClassLoader");
++
+         report();
+     }
+ 
+@@ -112,7 +125,7 @@
+                 System.out.println(msg);
+             }
+             throw new Exception(numFail + " out of " + (numPass + numFail)
+-                    + " tests failed.");
++                                 + " tests failed.");
+         }
+     }
+ 
+@@ -122,7 +135,7 @@
+         } else {
+             numFail++;
+             System.out.println("FAILED: " + testName
+-                    + " was supposed to return true but did NOT!");
++                               + " was supposed to return true but did NOT!");
+         }
+     }
+ 
+@@ -132,13 +145,20 @@
+         } else {
+             numFail++;
+             System.out.println("FAILED: " + testName
+-                    + " was supposed to return false but did NOT!");
++                               + " was supposed to return false but did NOT!");
+         }
+     }
+ 
+     public boolean testGetBundleFromStackSearch() throws Throwable {
+         // This should fail.  This was the old functionality to search up the
+         // caller's call stack
++        TwiceIndirectlyLoadABundle indirectLoader = new TwiceIndirectlyLoadABundle();
++        return indirectLoader.loadAndTest();
++    }
++
++    public boolean testGetBundleFromCallersClassLoader() throws Throwable {
++        // This should pass.  This exercises getting the bundle using the
++        // class loader of the caller (one level up)
+         IndirectlyLoadABundle indirectLoader = new IndirectlyLoadABundle();
+         return indirectLoader.loadAndTest();
+     }
+@@ -193,14 +213,29 @@
+                     bundleName);
+         } catch (MissingResourceException re) {
+             msgs.add("INFO: testGetBundleFromSystemClassLoader() did not find bundle "
+-                    + bundleName);
++                     + bundleName);
+             return false;
+         }
+         msgs.add("INFO: testGetBundleFromSystemClassLoader() found the bundle "
+-                + bundleName);
++                 + bundleName);
+         return true;
+     }
+ 
++    private boolean testGetAnonymousLogger() throws Throwable {
++        // This should pass.  This exercises getting the bundle using the
++        // class loader of the caller (one level up) when calling
++        // Logger.getAnonymousLogger(String rbName)
++        IndirectlyLoadABundle indirectLoader = new IndirectlyLoadABundle();
++        return indirectLoader.testGetAnonymousLogger();
++    }
++
++    private boolean testGetBundleFromSecondCallersClassLoader() throws Throwable {
++        // This should pass.  This exercises getting the bundle using the
++        // class loader of the caller (one level up)
++        IndirectlyLoadABundle indirectLoader = new IndirectlyLoadABundle();
++        return indirectLoader.testGetLoggerGetLoggerWithBundle();
++    }
++
+     public static class LoggingThread extends Thread {
+ 
+         boolean foundBundle = false;
+@@ -227,13 +262,13 @@
+                 // this should succeed if the bundle is on the system classpath.
+                 try {
+                     Logger aLogger = Logger.getLogger(ResourceBundleSearchTest.newLoggerName(),
+-                            bundleName);
+-                    msg = "INFO: LoggingRunnable() found the bundle " + bundleName
+-                            + (setTCCL ? " with " : " without ") + "setting the TCCL";
++                                                      bundleName);
++                    msg = "INFO: LoggingThread.run() found the bundle " + bundleName
++                          + (setTCCL ? " with " : " without ") + "setting the TCCL";
+                     foundBundle = true;
+                 } catch (MissingResourceException re) {
+-                    msg = "INFO: LoggingRunnable() did not find the bundle " + bundleName
+-                            + (setTCCL ? " with " : " without ") + "setting the TCCL";
++                    msg = "INFO: LoggingThread.run() did not find the bundle " + bundleName
++                          + (setTCCL ? " with " : " without ") + "setting the TCCL";
+                     foundBundle = false;
+                 }
+             } catch (Throwable e) {
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/TwiceIndirectlyLoadABundle.java
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation.
++ *
++ * This code is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++ * version 2 for more details (a copy is included in the LICENSE file that
++ * accompanied this code).
++ *
++ * You should have received a copy of the GNU General Public License version
++ * 2 along with this work; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++import java.lang.reflect.InvocationTargetException;
++import java.lang.reflect.Method;
++import java.net.URL;
++import java.net.URLClassLoader;
++import java.nio.file.Paths;
++
++/**
++ * This class constructs a scenario where a bundle is accessible on the call
++ * stack two levels up from the call to getLogger(), but not on the immediate
++ * caller.  This tests that getLogger() isn't doing a stack crawl more than one
++ * level up to find a bundle.
++ *
++ * @author Jim Gish
++ */
++public class TwiceIndirectlyLoadABundle {
++
++    private final static String rbName = "StackSearchableResource";
++
++    public boolean loadAndTest() throws Throwable {
++        // Find out where we are running from so we can setup the URLClassLoader URLs
++        // test.src and test.classes will be set if running in jtreg, but probably
++        // not otherwise
++        String testDir = System.getProperty("test.src", System.getProperty("user.dir"));
++        String testClassesDir = System.getProperty("test.classes",
++                                                   System.getProperty("user.dir"));
++        URL[] urls = new URL[2];
++
++        // Allow for both jtreg and standalone cases here
++        // Unlike the 1-level test where we can get the bundle from the caller's
++        // class loader, for this one we don't want to expose the resource directory
++        // to the next class.  That way we're invoking the LoadItUp2Invoker class
++        // from this class that does have access to the resources (two levels
++        // up the call stack), but the Invoker itself won't have access to resource
++        urls[0] = Paths.get(testDir,"resources").toUri().toURL();
++        urls[1] = Paths.get(testClassesDir).toUri().toURL();
++
++        // Make sure we can find it via the URLClassLoader
++        URLClassLoader yetAnotherResourceCL = new URLClassLoader(urls, null);
++        Class<?> loadItUp2InvokerClazz = Class.forName("LoadItUp2Invoker", true,
++                                                       yetAnotherResourceCL);
++        ClassLoader actual = loadItUp2InvokerClazz.getClassLoader();
++        if (actual != yetAnotherResourceCL) {
++            throw new Exception("LoadItUp2Invoker was loaded by an unexpected CL: "
++                                 + actual);
++        }
++        Object loadItUp2Invoker = loadItUp2InvokerClazz.newInstance();
++
++        Method setupMethod = loadItUp2InvokerClazz.getMethod("setup",
++                urls.getClass(), String.class);
++        try {
++            // For the next class loader we create, we want to leave off
++            // the resources.  That way loadItUp2Invoker will have access to
++            // them, but the next class won't.
++            URL[] noResourceUrl = new URL[1];
++            noResourceUrl[0] = urls[1];  // from above -- just the test classes
++            setupMethod.invoke(loadItUp2Invoker, noResourceUrl, rbName);
++        } catch (InvocationTargetException ex) {
++            throw ex.getTargetException();
++        }
++
++        Method testMethod = loadItUp2InvokerClazz.getMethod("test");
++        try {
++            return (Boolean) testMethod.invoke(loadItUp2Invoker);
++        } catch (InvocationTargetException ex) {
++            throw ex.getTargetException();
++        }
++    }
++}
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/test/java/util/logging/bundlesearch/resources/CallerSearchableResource_en.properties
+@@ -0,0 +1,25 @@
++# 
++# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++# 
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++# 
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++# 
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++sample1=translation #4 for sample1
++sample2=translation #4 for sample2
++supports-test=ResourceBundleSearchTest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8014718-remove_logging_suntoolkit.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,112 @@
+# HG changeset patch
+# User leonidr
+# Date 1369061494 -14400
+# Node ID d2a1f8885e65ed180240b4d1c298260dd328340e
+# Parent  529e737ece0c08c9de2aa4f3faa1a5e3887ee51e
+8014718: Netbeans IDE begins to throw a lot exceptions since 7u25 b10
+Summary: Removed logging from SunToolkit
+Reviewed-by: art
+
+--- openjdk/jdk/src/share/classes/java/awt/Toolkit.java
++++ openjdk/jdk/src/share/classes/java/awt/Toolkit.java
+@@ -48,8 +48,6 @@
+ import java.io.FileInputStream;
+ 
+ import java.util.*;
+-import java.util.logging.*;
+-
+ import java.beans.PropertyChangeListener;
+ import java.beans.PropertyChangeSupport;
+ import sun.awt.AppContext;
+@@ -1978,7 +1976,7 @@
+      */
+     public abstract boolean isModalExclusionTypeSupported(Dialog.ModalExclusionType modalExclusionType);
+ 
+-    private static final Logger log = Logger.getLogger("java.awt.Toolkit");
++    // 8014736: logging has been removed from Toolkit
+ 
+     private static final int LONG_BITS = 64;
+     private int[] calls = new int[LONG_BITS];
+@@ -2145,12 +2143,6 @@
+         }
+ 
+     synchronized int countAWTEventListeners(long eventMask) {
+-        if (log.isLoggable(Level.FINE)) {
+-            if (eventMask == 0) {
+-                log.log(Level.FINE, "Assertion (eventMask != 0) failed");
+-            }
+-        }
+-
+         int ci = 0;
+         for (; eventMask != 0; eventMask >>>= 1, ci++) {
+         }
+--- openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java
++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java
+@@ -55,7 +55,7 @@
+     implements WindowClosingSupport, WindowClosingListener,
+     ComponentFactory, InputMethodSupport, KeyboardFocusManagerPeerProvider {
+ 
+-    private static final Logger log = Logger.getLogger("sun.awt.SunToolkit");
++    // 8014736: logging has been removed from SunToolkit
+ 
+     /* Load debug settings for native code */
+     static {
+@@ -520,10 +520,6 @@
+         if (event == null) {
+            throw new NullPointerException();
+         }
+-        AppContext eventContext = targetToAppContext(event.getSource());
+-        if (eventContext != null && !eventContext.equals(appContext)) {
+-            log.fine("Event posted on wrong app context : " + event);
+-        }
+         PostEventQueue postEventQueue =
+             (PostEventQueue)appContext.get(POST_EVENT_QUEUE_KEY);
+         if (postEventQueue != null) {
+@@ -924,10 +920,6 @@
+             //with scale factors x1, x3/4, x2/3, xN, x1/N.
+             Image im = i.next();
+             if (im == null) {
+-                if (log.isLoggable(Level.FINER)) {
+-                    log.log(Level.FINER, "SunToolkit.getScaledIconImage: " +
+-                              "Skipping the image passed into Java because it's null.");
+-                }
+                 continue;
+             }
+             if (im instanceof ToolkitImage) {
+@@ -940,10 +932,6 @@
+                 iw = im.getWidth(null);
+                 ih = im.getHeight(null);
+             } catch (Exception e){
+-                if (log.isLoggable(Level.FINER)) {
+-                    log.log(Level.FINER, "SunToolkit.getScaledIconImage: " +
+-                              "Perhaps the image passed into Java is broken. Skipping this icon.");
+-                }
+                 continue;
+             }
+             if (iw > 0 && ih > 0) {
+@@ -1015,14 +1003,6 @@
+         try {
+             int x = (width - bestWidth) / 2;
+             int y = (height - bestHeight) / 2;
+-            if (log.isLoggable(Level.FINER)) {
+-                log.log(Level.FINER, "WWindowPeer.getScaledIconData() result : " +
+-                        "w : " + width + " h : " + height +
+-                        " iW : " + bestImage.getWidth(null) + " iH : " + bestImage.getHeight(null) +
+-                        " sim : " + bestSimilarity + " sf : " + bestScaleFactor +
+-                        " adjW : " + bestWidth + " adjH : " + bestHeight +
+-                        " x : " + x + " y : " + y);
+-            }
+             g.drawImage(bestImage, x, y, bestWidth, bestHeight, null);
+         } finally {
+             g.dispose();
+@@ -1033,10 +1013,6 @@
+     public static DataBufferInt getScaledIconData(java.util.List<Image> imageList, int width, int height) {
+         BufferedImage bimage = getScaledIconImage(imageList, width, height);
+         if (bimage == null) {
+-             if (log.isLoggable(Level.FINER)) {
+-                 log.log(Level.FINER, "SunToolkit.getScaledIconData: " +
+-                           "Perhaps the image passed into Java is broken. Skipping this icon.");
+-             }
+             return null;
+         }
+         Raster raster = bimage.getRaster();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/8014745-logger_stack_walk_switch.patch	Wed Jul 03 23:28:46 2013 -0400
@@ -0,0 +1,199 @@
+# HG changeset patch
+# User mchung
+# Date 1368826191 25200
+# Node ID 1e74b61253eb8c0d8d70512ab84ba16366e02c68
+# Parent  d2a1f8885e65ed180240b4d1c298260dd328340e
+8014745: Provide a switch to allow stack walk search of resource bundle
+Reviewed-by: alanb, jgish
+
+--- openjdk/jdk/make/java/java/mapfile-vers
++++ openjdk/jdk/make/java/java/mapfile-vers
+@@ -266,6 +266,7 @@
+ 		Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0;
+ 		Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
+ 		Java_sun_reflect_Reflection_getCallerClass;
++		Java_sun_reflect_Reflection_getCallerClass0;
+ 		Java_sun_reflect_Reflection_getClassAccessFlags;
+                 Java_sun_misc_Version_getJdkVersionInfo;
+                 Java_sun_misc_Version_getJdkSpecialVersion;
+--- openjdk/jdk/src/share/classes/java/util/logging/Logger.java
++++ openjdk/jdk/src/share/classes/java/util/logging/Logger.java
+@@ -309,8 +309,13 @@
+     // null, we assume it's a system logger and add it to the system context.
+     // These system loggers only set the resource bundle to the given
+     // resource bundle name (rather than the default system resource bundle).
+-    private static class SystemLoggerHelper {
+-        static boolean disableCallerCheck = getBooleanProperty("sun.util.logging.disableCallerCheck");
++    private static class LoggerHelper {
++        static boolean disableCallerCheck =
++            getBooleanProperty("sun.util.logging.disableCallerCheck");
++
++        // workaround to turn on the old behavior for resource bundle search
++        static boolean allowStackWalkSearch =
++            getBooleanProperty("jdk.logging.allowStackWalkSearch");
+         private static boolean getBooleanProperty(final String key) {
+             String s = AccessController.doPrivileged(new PrivilegedAction<String>() {
+                 public String run() {
+@@ -324,7 +329,7 @@
+     private static Logger demandLogger(String name, String resourceBundleName, Class<?> caller) {
+         LogManager manager = LogManager.getLogManager();
+         SecurityManager sm = System.getSecurityManager();
+-        if (sm != null && !SystemLoggerHelper.disableCallerCheck) {
++        if (sm != null && !LoggerHelper.disableCallerCheck) {
+             if (caller.getClassLoader() == null) {
+                 return manager.demandSystemLogger(name, resourceBundleName);
+             }
+@@ -1431,25 +1436,61 @@
+         if (useCallersClassLoader) {
+             // Try with the caller's ClassLoader
+             ClassLoader callersClassLoader = getCallersClassLoader();
++            if (callersClassLoader != null && callersClassLoader != cl) {
++                try {
++                    catalog = ResourceBundle.getBundle(name, currentLocale,
++                                                       callersClassLoader);
++                    catalogName = name;
++                    catalogLocale = currentLocale;
++                    return catalog;
++                } catch (MissingResourceException ex) {
++                }
++            }
++        }
+ 
+-            if (callersClassLoader == null || callersClassLoader == cl) {
+-                return null;
+-            }
+-
+-            try {
+-                catalog = ResourceBundle.getBundle(name, currentLocale,
+-                                                   callersClassLoader);
+-                catalogName = name;
+-                catalogLocale = currentLocale;
+-                return catalog;
+-            } catch (MissingResourceException ex) {
+-                return null; // no luck
+-            }
++        // If -Djdk.logging.allowStackWalkSearch=true is set,
++        // does stack walk to search for the resource bundle
++        if (LoggerHelper.allowStackWalkSearch) {
++            return findResourceBundleFromStack(name, currentLocale, cl);
+         } else {
+             return null;
+         }
+     }
+ 
++    /**
++     * This method will fail when running with a VM that enforces caller-sensitive
++     * methods and only allows to get the immediate caller.
++     */
++    @CallerSensitive
++    private synchronized ResourceBundle findResourceBundleFromStack(String name,
++                                                                    Locale locale,
++                                                                    ClassLoader cl)
++    {
++        for (int ix = 0; ; ix++) {
++            Class<?> clz = sun.reflect.Reflection.getCallerClass(ix);
++            if (clz == null) {
++                break;
++            }
++            ClassLoader cl2 = clz.getClassLoader();
++            if (cl2 == null) {
++                cl2 = ClassLoader.getSystemClassLoader();
++            }
++            if (cl == cl2) {
++                // We've already checked this classloader.
++                continue;
++            }
++            cl = cl2;
++            try {
++                catalog = ResourceBundle.getBundle(name, locale, cl);
++                catalogName = name;
++                catalogLocale = locale;
++                return catalog;
++            } catch (MissingResourceException ex) {
++            }
++        }
++        return null;
++    }
++
+     // Private utility method to initialize our one entry
+     // resource bundle name cache and the callers ClassLoader
+     // Note: for consistency reasons, we are careful to check
+--- openjdk/jdk/src/share/classes/sun/reflect/Reflection.java
++++ openjdk/jdk/src/share/classes/sun/reflect/Reflection.java
+@@ -58,6 +58,21 @@
+     @CallerSensitive
+     public static native Class getCallerClass();
+ 
++    /**
++     * @deprecated No replacement.  This method will be removed in the next
++     * JDK 7 update release.
++     */
++    @Deprecated
++    @CallerSensitive
++    public static Class getCallerClass(int depth) {
++        return getCallerClass0(depth);
++    }
++
++    // If the VM enforces getting caller class with @CallerSensitive,
++    // this will fail anyway.
++    @CallerSensitive
++    private static native Class getCallerClass0(int depth);
++
+     /** Retrieves the access flags written to the class file. For
+         inner classes these flags may differ from those returned by
+         Class.getModifiers(), which searches the InnerClasses
+--- openjdk/jdk/src/share/native/sun/reflect/Reflection.c
++++ openjdk/jdk/src/share/native/sun/reflect/Reflection.c
+@@ -34,6 +34,12 @@
+     return JVM_GetCallerClass(env, 2);
+ }
+ 
++JNIEXPORT jclass JNICALL Java_sun_reflect_Reflection_getCallerClass0
++(JNIEnv *env, jclass unused, jint depth)
++{
++    return JVM_GetCallerClass(env, depth);
++}
++
+ JNIEXPORT jint JNICALL Java_sun_reflect_Reflection_getClassAccessFlags
+ (JNIEnv *env, jclass unused, jclass cls)
+ {
+--- openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
++++ openjdk/jdk/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java
+@@ -28,6 +28,7 @@
+  * @author  Jim Gish
+  * @build  ResourceBundleSearchTest IndirectlyLoadABundle LoadItUp1 LoadItUp2 TwiceIndirectlyLoadABundle LoadItUp2Invoker
+  * @run main/othervm ResourceBundleSearchTest
++ * @run main/othervm -Djdk.logging.allowStackWalkSearch=true ResourceBundleSearchTest
+  */
+ import java.net.URL;
+ import java.net.URLClassLoader;
+@@ -79,7 +80,15 @@
+ 
+         // Test 1 - can we find a Logger bundle from doing a stack search?
+         // We shouldn't be able to
+-        assertFalse(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch");
++        // unless -Djdk.logging.allowStackWalkSearch=true is set
++
++        boolean allowStackWalkSearch = Boolean.getBoolean("jdk.logging.allowStackWalkSearch");
++        if (allowStackWalkSearch) {
++            assertTrue(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch");
++        } else {
++            // default behavior
++            assertFalse(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch");
++        }
+ 
+         // Test 2 - can we find a Logger bundle off of the Thread context class
+         // loader? We should be able to.
+@@ -111,8 +120,10 @@
+         // Test 6 - first call getLogger("myLogger").
+         // Then call getLogger("myLogger","bundleName") from a different ClassLoader
+         // Make sure we find the bundle
+-        assertTrue(testGetBundleFromSecondCallersClassLoader(),
+-                   "6-testGetBundleFromSecondCallersClassLoader");
++        if (!allowStackWalkSearch) {
++            assertTrue(testGetBundleFromSecondCallersClassLoader(),
++                       "6-testGetBundleFromSecondCallersClassLoader");
++        }
+ 
+         report();
+     }