From 1d93dbab339cd6bc3c4a29665606a6c27e9b1449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Sat, 28 Jul 2012 17:57:41 -0400 Subject: [PATCH] libfreerdp-core: fix timezone finding and encoding --- libfreerdp-core/timezone.c | 28 +- libfreerdp-locale/timezone.c | 966 ++++++++++++++++++----------------- scripts/TimeZones.cs | 378 +++++++------- 3 files changed, 707 insertions(+), 665 deletions(-) diff --git a/libfreerdp-core/timezone.c b/libfreerdp-core/timezone.c index 97e67bb45..b09d5197a 100644 --- a/libfreerdp-core/timezone.c +++ b/libfreerdp-core/timezone.c @@ -106,6 +106,9 @@ boolean rdp_read_client_time_zone(STREAM* s, rdpSettings* settings) void rdp_write_client_time_zone(STREAM* s, rdpSettings* settings) { + uint32 bias; + sint32 sbias; + uint32 bias2c; size_t length; uint8* standardName; uint8* daylightName; @@ -128,21 +131,40 @@ void rdp_write_client_time_zone(STREAM* s, rdpSettings* settings) if (daylightNameLength > 62) daylightNameLength = 62; - stream_write_uint32(s, clientTimeZone->bias); /* Bias */ + /* UTC = LocalTime + Bias <-> Bias = UTC - LocalTime */ + + bias = 1440 - clientTimeZone->bias; + stream_write_uint32(s, bias); /* Bias */ /* standardName (64 bytes) */ stream_write(s, standardName, standardNameLength); stream_write_zero(s, 64 - standardNameLength); rdp_write_system_time(s, &clientTimeZone->standardDate); /* StandardDate */ - stream_write_uint32(s, clientTimeZone->standardBias); /* StandardBias */ + + sbias = clientTimeZone->standardBias - clientTimeZone->bias; + + if (sbias < 0) + bias2c = (uint32) sbias; + else + bias2c = ~((uint32) sbias) + 1; + + stream_write_uint32(s, bias2c); /* StandardBias */ /* daylightName (64 bytes) */ stream_write(s, daylightName, daylightNameLength); stream_write_zero(s, 64 - daylightNameLength); rdp_write_system_time(s, &clientTimeZone->daylightDate); /* DaylightDate */ - stream_write_uint32(s, clientTimeZone->daylightBias); /* DaylightBias */ + + sbias = clientTimeZone->daylightBias - clientTimeZone->bias; + + if (sbias < 0) + bias2c = (uint32) sbias; + else + bias2c = ~((uint32) sbias) + 1; + + stream_write_uint32(s, bias2c); /* DaylightBias */ xfree(standardName); xfree(daylightName); diff --git a/libfreerdp-locale/timezone.c b/libfreerdp-locale/timezone.c index 3127eede4..93732bfdd 100644 --- a/libfreerdp-locale/timezone.c +++ b/libfreerdp-locale/timezone.c @@ -30,6 +30,7 @@ /* Time Zone Redirection table generated with TimeZones.cs script */ + struct _SYSTEM_TIME_ENTRY { uint16 wYear; @@ -68,1032 +69,1034 @@ typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_3[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_4[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_5[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_7[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_8[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_10[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_11[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_14[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_15[] = { - { 633031488000000000ULL, 632716992000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 632716884000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_17[] = { - { 633663072000000000ULL, 288000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 9, 6, 1, 23, 59 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 637450848000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } + { 633662964000000000ULL, 180000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 9, 6, 1, 23, 59 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 637450740000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_18[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_19[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637765344000000000ULL, 637450848000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638080704000000000ULL, 637766208000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638396064000000000ULL, 638081568000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638712288000000000ULL, 638396928000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639027648000000000ULL, 638713152000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639343008000000000ULL, 639028512000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639658368000000000ULL, 639343872000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639974592000000000ULL, 639659232000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640289952000000000ULL, 639975456000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640605312000000000ULL, 640290816000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640920672000000000ULL, 640606176000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641236896000000000ULL, 640921536000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641552256000000000ULL, 641237760000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641867616000000000ULL, 641553120000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642182976000000000ULL, 641868480000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642499200000000000ULL, 642183840000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642814560000000000ULL, 642500064000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643129920000000000ULL, 642815424000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643445280000000000ULL, 643130784000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 643446144000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637765236000000000ULL, 637450740000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638080596000000000ULL, 637766100000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638395956000000000ULL, 638081460000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638712180000000000ULL, 638396820000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639027540000000000ULL, 638713044000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639342900000000000ULL, 639028404000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639658260000000000ULL, 639343764000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639974484000000000ULL, 639659124000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640289844000000000ULL, 639975348000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640605204000000000ULL, 640290708000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640920564000000000ULL, 640606068000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641236788000000000ULL, 640921428000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641552148000000000ULL, 641237652000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641867508000000000ULL, 641553012000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642182868000000000ULL, 641868372000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642499092000000000ULL, 642183732000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642814452000000000ULL, 642499956000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643129812000000000ULL, 642815316000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643445172000000000ULL, 643130676000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 643446036000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_21[] = { - { 633346848000000000ULL, 288000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 5, 6, 1, 23, 59 }, { 0, 8, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 634610016000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } + { 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 5, 6, 1, 23, 59 }, { 0, 8, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 634609908000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_22[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 0, 1 }, { 0, 4, 0, 1, 0, 1 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 0, 1 }, }, - { 3155378400000000000ULL, 634610016000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 0, 1 }, { 0, 4, 0, 1, 0, 1 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 0, 1 }, }, + { 3155378292000000000ULL, 634609908000000000ULL, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_23[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637765344000000000ULL, 637450848000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638080704000000000ULL, 637766208000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638396064000000000ULL, 638081568000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638712288000000000ULL, 638396928000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639027648000000000ULL, 638713152000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639343008000000000ULL, 639028512000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639658368000000000ULL, 639343872000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639974592000000000ULL, 639659232000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640289952000000000ULL, 639975456000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640605312000000000ULL, 640290816000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640920672000000000ULL, 640606176000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641236896000000000ULL, 640921536000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641552256000000000ULL, 641237760000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641867616000000000ULL, 641553120000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642182976000000000ULL, 641868480000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642499200000000000ULL, 642183840000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642814560000000000ULL, 642500064000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643129920000000000ULL, 642815424000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643445280000000000ULL, 643130784000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 643446144000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637765236000000000ULL, 637450740000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638080596000000000ULL, 637766100000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638395956000000000ULL, 638081460000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638712180000000000ULL, 638396820000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639027540000000000ULL, 638713044000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639342900000000000ULL, 639028404000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639658260000000000ULL, 639343764000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639974484000000000ULL, 639659124000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640289844000000000ULL, 639975348000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640605204000000000ULL, 640290708000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640920564000000000ULL, 640606068000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641236788000000000ULL, 640921428000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641552148000000000ULL, 641237652000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641867508000000000ULL, 641553012000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642182868000000000ULL, 641868372000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642499092000000000ULL, 642183732000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642814452000000000ULL, 642499956000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643129812000000000ULL, 642815316000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643445172000000000ULL, 643130676000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 643446036000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_24[] = { - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 1, 1, 1, 0, 0 }, { 0, 12, 0, 1, 0, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 3, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 1, 4, 1, 0, 0 }, } + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 1, 1, 1, 0, 0 }, { 0, 12, 0, 1, 0, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 3, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 1, 4, 1, 0, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_26[] = { - { 633663072000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, - { 3155378400000000000ULL, 637450848000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, } + { 633662964000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }, + { 3155378292000000000ULL, 637450740000000000ULL, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_27[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 10, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 10, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_28[] = { - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 637765344000000000ULL, 637450848000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638080704000000000ULL, 637766208000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638396064000000000ULL, 638081568000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 638712288000000000ULL, 638396928000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639027648000000000ULL, 638713152000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639343008000000000ULL, 639028512000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639658368000000000ULL, 639343872000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 639974592000000000ULL, 639659232000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640289952000000000ULL, 639975456000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640605312000000000ULL, 640290816000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 640920672000000000ULL, 640606176000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641236896000000000ULL, 640921536000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641552256000000000ULL, 641237760000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 641867616000000000ULL, 641553120000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642182976000000000ULL, 641868480000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642499200000000000ULL, 642183840000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 642814560000000000ULL, 642500064000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643129920000000000ULL, 642815424000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 643445280000000000ULL, 643130784000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 643446144000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 637765236000000000ULL, 637450740000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638080596000000000ULL, 637766100000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638395956000000000ULL, 638081460000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 638712180000000000ULL, 638396820000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639027540000000000ULL, 638713044000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639342900000000000ULL, 639028404000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639658260000000000ULL, 639343764000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 639974484000000000ULL, 639659124000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640289844000000000ULL, 639975348000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640605204000000000ULL, 640290708000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 640920564000000000ULL, 640606068000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641236788000000000ULL, 640921428000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641552148000000000ULL, 641237652000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 641867508000000000ULL, 641553012000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642182868000000000ULL, 641868372000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642499092000000000ULL, 642183732000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 642814452000000000ULL, 642499956000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643129812000000000ULL, 642815316000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 643445172000000000ULL, 643130676000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 643446036000000000ULL, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_30[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_31[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_33[] = { - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 8, 0, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 5, 0, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 8, 6, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 7, 6, 1, 23, 59 }, { 0, 4, 6, 1, 23, 59 }, } + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 8, 0, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 5, 0, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 8, 6, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 7, 6, 1, 23, 59 }, { 0, 4, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_35[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 0, 1, 1, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 0, 1, 1, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_37[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_38[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_39[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_40[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_42[] = { - { 634293792000000000ULL, 288000000000ULL, -60, { 0, 9, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 634294656000000000ULL, 60, { 0, 4, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, -60, { 0, 9, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 634294548000000000ULL, 60, { 0, 4, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_43[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 9, 5, 1, 1, 0 }, { 0, 3, 4, 1, 0, 0 }, }, - { 3155378400000000000ULL, 633032352000000000ULL, 60, { 0, 10, 5, 1, 1, 0 }, { 0, 3, 4, 1, 23, 59 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 9, 5, 1, 1, 0 }, { 0, 3, 4, 1, 0, 0 }, }, + { 3155378292000000000ULL, 633032244000000000ULL, 60, { 0, 10, 5, 1, 1, 0 }, { 0, 3, 4, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_44[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_45[] = { - { 633978432000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 0, 0 }, { 0, 3, 0, 1, 0, 0 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 637450848000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, } + { 633978324000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 0, 0 }, { 0, 3, 0, 1, 0, 0 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 637450740000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_46[] = { - { 632716128000000000ULL, 288000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, }, - { 633031488000000000ULL, 632716992000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, } + { 632716020000000000ULL, 180000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, }, + { 633031380000000000ULL, 632716884000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_47[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 9, 3, 1, 23, 59 }, { 0, 3, 5, 1, 23, 59 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 11, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, - { 3155378400000000000ULL, 636188544000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 9, 3, 1, 23, 59 }, { 0, 3, 5, 1, 23, 59 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 11, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, + { 3155378292000000000ULL, 636188436000000000ULL, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_49[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_50[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 1, 1, 3, 0 }, }, - { 3155378400000000000ULL, 634610016000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 1, 1, 3, 0 }, }, + { 3155378292000000000ULL, 634609908000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_51[] = { - { 632716128000000000ULL, 632401632000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, - { 633031488000000000ULL, 632716992000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 635240736000000000ULL, 634926240000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 635556096000000000ULL, 635241600000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 635871456000000000ULL, 635556960000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 636187680000000000ULL, 635872320000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, - { 636503040000000000ULL, 636188544000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 636818400000000000ULL, 636503904000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 637133760000000000ULL, 636819264000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 637449984000000000ULL, 637134624000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 637765344000000000ULL, 637450848000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, - { 638080704000000000ULL, 637766208000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, } + { 632716020000000000ULL, 632401524000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, + { 633031380000000000ULL, 632716884000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 635240628000000000ULL, 634926132000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 635871348000000000ULL, 635556852000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }, + { 636502932000000000ULL, 636188436000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 636818292000000000ULL, 636503796000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 637133652000000000ULL, 636819156000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 637449876000000000ULL, 637134516000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 637765236000000000ULL, 637450740000000000ULL, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, }, + { 638080596000000000ULL, 637766100000000000ULL, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_52[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_53[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 10, 1, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 10, 1, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_54[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_57[] = { - { 632716128000000000ULL, 288000000000ULL, 60, { 0, 9, 2, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 9, 6, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, - { 3155378400000000000ULL, 633663936000000000ULL, 60, { 0, 9, 1, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, } + { 632716020000000000ULL, 180000000000ULL, 60, { 0, 9, 2, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 9, 6, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, }, + { 3155378292000000000ULL, 633663828000000000ULL, 60, { 0, 9, 1, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_59[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 5, 0 }, { 0, 3, 0, 1, 4, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 5, 0 }, { 0, 3, 0, 1, 4, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_60[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_61[] = { - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 1, 2, 1, 0, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 1, 4, 1, 0, 0 }, } + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 1, 2, 1, 0, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 1, 4, 1, 0, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_63[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_65[] = { - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 4, 2, 1, 23, 59 }, } + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 4, 2, 1, 23, 59 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_71[] = { - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 12, 4, 1, 23, 59 }, { 0, 6, 5, 1, 23, 0 }, } + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 12, 4, 1, 23, 59 }, { 0, 6, 5, 1, 23, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_72[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_75[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_77[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_79[] = { - { 633031488000000000ULL, 632716992000000000ULL, 60, { 0, 1, 0, 1, 0, 0 }, { 0, 12, 0, 1, 2, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 633663072000000000ULL, 633347712000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 1, 4, 1, 0, 0 }, } + { 633031380000000000ULL, 632716884000000000ULL, 60, { 0, 1, 0, 1, 0, 0 }, { 0, 12, 0, 1, 2, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 1, 4, 1, 0, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_82[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_85[] = { - { 633346848000000000ULL, 288000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633347712000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } + { 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_88[] = { - { 633346848000000000ULL, 288000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633347712000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } + { 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_90[] = { - { 633346848000000000ULL, 288000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633347712000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } + { 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_91[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_93[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_94[] = { - { 633031488000000000ULL, 288000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 633346848000000000ULL, 633032352000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 633347712000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, } + { 633031380000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_96[] = { - { 633978432000000000ULL, 633663936000000000ULL, 60, { 0, 1, 4, 1, 0, 0 }, { 0, 11, 0, 1, 2, 0 }, }, - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 634609152000000000ULL, 634294656000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 634925376000000000ULL, 634610016000000000ULL, 60, { 0, 1, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, - { 3155378400000000000ULL, 634926240000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } + { 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 1, 4, 1, 0, 0 }, { 0, 11, 0, 1, 2, 0 }, }, + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 634925268000000000ULL, 634609908000000000ULL, 60, { 0, 1, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }, + { 3155378292000000000ULL, 634926132000000000ULL, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_97[] = { - { 634293792000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_98[] = { - { 3155378400000000000ULL, 288000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } + { 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, } }; static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_100[] = { - { 634293792000000000ULL, 633979296000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 9, 6, 1, 23, 59 }, }, - { 3155378400000000000ULL, 634294656000000000ULL, 60, { 0, 4, 0, 1, 1, 0 }, { 0, 9, 0, 1, 0, 0 }, } + { 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 9, 6, 1, 23, 59 }, }, + { 3155378292000000000ULL, 634294548000000000ULL, 60, { 0, 4, 0, 1, 1, 0 }, { 0, 9, 0, 1, 0, 0 }, } }; static const TIME_ZONE_ENTRY TimeZoneTable[] = { { - "Dateline Standard Time", 1440, false, "Dateline Standard Time", - "Dateline Standard Time", "Dateline Standard Time", + "Dateline Standard Time", 720, false, "(UTC-12:00) International Date Line West", + "Dateline Standard Time", "Dateline Daylight Time", NULL, 0 }, { - "UTC-11", 1380, false, "UTC-11", + "UTC-11", 780, false, "(UTC-11:00) Coordinated Universal Time-11", "UTC-11", "UTC-11", NULL, 0 }, { - "Hawaiian Standard Time", 1320, false, "Hawaiian Standard Time", - "Hawaiian Standard Time", "Hawaiian Standard Time", + "Hawaiian Standard Time", 840, false, "(UTC-10:00) Hawaii", + "Hawaiian Standard Time", "Hawaiian Daylight Time", NULL, 0 }, { - "Alaskan Standard Time", 1260, true, "Alaskan Standard Time", - "Alaskan Standard Time", "Alaskan Standard Time", + "Alaskan Standard Time", 900, true, "(UTC-09:00) Alaska", + "Alaskan Standard Time", "Alaskan Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_3, 2 }, { - "Pacific Standard Time (Mexico)", 1200, true, "Pacific Standard Time (Mexico)", - "Pacific Standard Time (Mexico)", "Pacific Standard Time (Mexico)", + "Pacific Standard Time (Mexico)", 960, true, "(UTC-08:00) Baja California", + "Pacific Standard Time (Mexico)", "Pacific Daylight Time (Mexico)", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_4, 1 }, { - "Pacific Standard Time", 1200, true, "Pacific Standard Time", - "Pacific Standard Time", "Pacific Standard Time", + "Pacific Standard Time", 960, true, "(UTC-08:00) Pacific Time (US & Canada)", + "Pacific Standard Time", "Pacific Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_5, 2 }, { - "US Mountain Standard Time", 1140, false, "US Mountain Standard Time", - "US Mountain Standard Time", "US Mountain Standard Time", + "US Mountain Standard Time", 1020, false, "(UTC-07:00) Arizona", + "US Mountain Standard Time", "US Mountain Daylight Time", NULL, 0 }, { - "Mountain Standard Time (Mexico)", 1140, true, "Mountain Standard Time (Mexico)", - "Mountain Standard Time (Mexico)", "Mountain Standard Time (Mexico)", + "Mountain Standard Time (Mexico)", 1020, true, "(UTC-07:00) Chihuahua, La Paz, Mazatlan", + "Mountain Standard Time (Mexico)", "Mountain Daylight Time (Mexico)", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_7, 1 }, { - "Mountain Standard Time", 1140, true, "Mountain Standard Time", - "Mountain Standard Time", "Mountain Standard Time", + "Mountain Standard Time", 1020, true, "(UTC-07:00) Mountain Time (US & Canada)", + "Mountain Standard Time", "Mountain Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_8, 2 }, { - "Central America Standard Time", 1080, false, "Central America Standard Time", - "Central America Standard Time", "Central America Standard Time", + "Central America Standard Time", 1080, false, "(UTC-06:00) Central America", + "Central America Standard Time", "Central America Daylight Time", NULL, 0 }, { - "Central Standard Time", 1080, true, "Central Standard Time", - "Central Standard Time", "Central Standard Time", + "Central Standard Time", 1080, true, "(UTC-06:00) Central Time (US & Canada)", + "Central Standard Time", "Central Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_10, 2 }, { - "Central Standard Time (Mexico)", 1080, true, "Central Standard Time (Mexico)", - "Central Standard Time (Mexico)", "Central Standard Time (Mexico)", + "Central Standard Time (Mexico)", 1080, true, "(UTC-06:00) Guadalajara, Mexico City, Monterrey", + "Central Standard Time (Mexico)", "Central Daylight Time (Mexico)", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_11, 1 }, { - "Canada Central Standard Time", 1080, false, "Canada Central Standard Time", - "Canada Central Standard Time", "Canada Central Standard Time", + "Canada Central Standard Time", 1080, false, "(UTC-06:00) Saskatchewan", + "Canada Central Standard Time", "Canada Central Daylight Time", NULL, 0 }, { - "SA Pacific Standard Time", 1020, false, "SA Pacific Standard Time", - "SA Pacific Standard Time", "SA Pacific Standard Time", + "SA Pacific Standard Time", 1140, false, "(UTC-05:00) Bogota, Lima, Quito", + "SA Pacific Standard Time", "SA Pacific Daylight Time", NULL, 0 }, { - "Eastern Standard Time", 1020, true, "Eastern Standard Time", - "Eastern Standard Time", "Eastern Standard Time", + "Eastern Standard Time", 1140, true, "(UTC-05:00) Eastern Time (US & Canada)", + "Eastern Standard Time", "Eastern Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_14, 2 }, { - "US Eastern Standard Time", 1020, true, "US Eastern Standard Time", - "US Eastern Standard Time", "US Eastern Standard Time", + "US Eastern Standard Time", 1140, true, "(UTC-05:00) Indiana (East)", + "US Eastern Standard Time", "US Eastern Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_15, 2 }, { - "Venezuela Standard Time", 930, false, "Venezuela Standard Time", - "Venezuela Standard Time", "Venezuela Standard Time", + "Venezuela Standard Time", 1170, false, "(UTC-04:30) Caracas", + "Venezuela Standard Time", "Venezuela Daylight Time", NULL, 0 }, { - "Paraguay Standard Time", 960, true, "Paraguay Standard Time", - "Paraguay Standard Time", "Paraguay Standard Time", + "Paraguay Standard Time", 1200, true, "(UTC-04:00) Asuncion", + "Paraguay Standard Time", "Paraguay Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_17, 14 }, { - "Atlantic Standard Time", 960, true, "Atlantic Standard Time", - "Atlantic Standard Time", "Atlantic Standard Time", + "Atlantic Standard Time", 1200, true, "(UTC-04:00) Atlantic Time (Canada)", + "Atlantic Standard Time", "Atlantic Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_18, 2 }, { - "Central Brazilian Standard Time", 960, true, "Central Brazilian Standard Time", - "Central Brazilian Standard Time", "Central Brazilian Standard Time", + "Central Brazilian Standard Time", 1200, true, "(UTC-04:00) Cuiaba", + "Central Brazilian Standard Time", "Central Brazilian Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_19, 35 }, { - "SA Western Standard Time", 960, false, "SA Western Standard Time", - "SA Western Standard Time", "SA Western Standard Time", + "SA Western Standard Time", 1200, false, "(UTC-04:00) Georgetown, La Paz, Manaus, San Juan", + "SA Western Standard Time", "SA Western Daylight Time", NULL, 0 }, { - "Pacific SA Standard Time", 960, true, "Pacific SA Standard Time", - "Pacific SA Standard Time", "Pacific SA Standard Time", + "Pacific SA Standard Time", 1200, true, "(UTC-04:00) Santiago", + "Pacific SA Standard Time", "Pacific SA Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_21, 6 }, { - "Newfoundland Standard Time", 870, true, "Newfoundland Standard Time", - "Newfoundland Standard Time", "Newfoundland Standard Time", + "Newfoundland Standard Time", 1230, true, "(UTC-03:30) Newfoundland", + "Newfoundland Standard Time", "Newfoundland Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_22, 7 }, { - "E. South America Standard Time", 900, true, "E. South America Standard Time", - "E. South America Standard Time", "E. South America Standard Time", + "E. South America Standard Time", 1260, true, "(UTC-03:00) Brasilia", + "E. South America Standard Time", "E. South America Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_23, 35 }, { - "Argentina Standard Time", 900, true, "Argentina Standard Time", - "Argentina Standard Time", "Argentina Standard Time", + "Argentina Standard Time", 1260, true, "(UTC-03:00) Buenos Aires", + "Argentina Standard Time", "Argentina Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_24, 3 }, { - "SA Eastern Standard Time", 900, false, "SA Eastern Standard Time", - "SA Eastern Standard Time", "SA Eastern Standard Time", + "SA Eastern Standard Time", 1260, false, "(UTC-03:00) Cayenne, Fortaleza", + "SA Eastern Standard Time", "SA Eastern Daylight Time", NULL, 0 }, { - "Greenland Standard Time", 900, true, "Greenland Standard Time", - "Greenland Standard Time", "Greenland Standard Time", + "Greenland Standard Time", 1260, true, "(UTC-03:00) Greenland", + "Greenland Standard Time", "Greenland Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_26, 14 }, { - "Montevideo Standard Time", 900, true, "Montevideo Standard Time", - "Montevideo Standard Time", "Montevideo Standard Time", + "Montevideo Standard Time", 1260, true, "(UTC-03:00) Montevideo", + "Montevideo Standard Time", "Montevideo Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_27, 2 }, { - "Bahia Standard Time", 900, true, "Bahia Standard Time", - "Bahia Standard Time", "Bahia Standard Time", + "Bahia Standard Time", 1260, true, "(UTC-03:00) Salvador", + "Bahia Standard Time", "Bahia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_28, 30 }, { - "UTC-02", 840, false, "UTC-02", + "UTC-02", 1320, false, "(UTC-02:00) Coordinated Universal Time-02", "UTC-02", "UTC-02", NULL, 0 }, { - "Mid-Atlantic Standard Time", 840, true, "Mid-Atlantic Standard Time", - "Mid-Atlantic Standard Time", "Mid-Atlantic Standard Time", + "Mid-Atlantic Standard Time", 1320, true, "(UTC-02:00) Mid-Atlantic", + "Mid-Atlantic Standard Time", "Mid-Atlantic Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_30, 1 }, { - "Azores Standard Time", 780, true, "Azores Standard Time", - "Azores Standard Time", "Azores Standard Time", + "Azores Standard Time", 1380, true, "(UTC-01:00) Azores", + "Azores Standard Time", "Azores Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_31, 1 }, { - "Cape Verde Standard Time", 780, false, "Cape Verde Standard Time", - "Cape Verde Standard Time", "Cape Verde Standard Time", + "Cape Verde Standard Time", 1380, false, "(UTC-01:00) Cape Verde Is.", + "Cape Verde Standard Time", "Cape Verde Daylight Time", NULL, 0 }, { - "Morocco Standard Time", 0, true, "Morocco Standard Time", - "Morocco Standard Time", "Morocco Standard Time", + "Morocco Standard Time", 0, true, "(UTC) Casablanca", + "Morocco Standard Time", "Morocco Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_33, 4 }, { - "UTC", 0, false, "UTC", + "UTC", 0, false, "(UTC) Coordinated Universal Time", "Coordinated Universal Time", "Coordinated Universal Time", NULL, 0 }, { - "GMT Standard Time", 0, true, "GMT Standard Time", - "GMT Standard Time", "GMT Standard Time", + "GMT Standard Time", 0, true, "(UTC) Dublin, Edinburgh, Lisbon, London", + "GMT Standard Time", "GMT Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_35, 1 }, { - "Greenwich Standard Time", 0, false, "Greenwich Standard Time", - "Greenwich Standard Time", "Greenwich Standard Time", + "Greenwich Standard Time", 0, false, "(UTC) Monrovia, Reykjavik", + "Greenwich Standard Time", "Greenwich Daylight Time", NULL, 0 }, { - "W. Europe Standard Time", 60, true, "W. Europe Standard Time", - "W. Europe Standard Time", "W. Europe Standard Time", + "W. Europe Standard Time", 60, true, "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna", + "W. Europe Standard Time", "W. Europe Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_37, 1 }, { - "Central Europe Standard Time", 60, true, "Central Europe Standard Time", - "Central Europe Standard Time", "Central Europe Standard Time", + "Central Europe Standard Time", 60, true, "(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague", + "Central Europe Standard Time", "Central Europe Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_38, 1 }, { - "Romance Standard Time", 60, true, "Romance Standard Time", - "Romance Standard Time", "Romance Standard Time", + "Romance Standard Time", 60, true, "(UTC+01:00) Brussels, Copenhagen, Madrid, Paris", + "Romance Standard Time", "Romance Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_39, 1 }, { - "Central European Standard Time", 60, true, "Central European Standard Time", - "Central European Standard Time", "Central European Standard Time", + "Central European Standard Time", 60, true, "(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb", + "Central European Standard Time", "Central European Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_40, 1 }, { - "W. Central Africa Standard Time", 60, false, "W. Central Africa Standard Time", - "W. Central Africa Standard Time", "W. Central Africa Standard Time", + "W. Central Africa Standard Time", 60, false, "(UTC+01:00) West Central Africa", + "W. Central Africa Standard Time", "W. Central Africa Daylight Time", NULL, 0 }, { - "Namibia Standard Time", 60, true, "Namibia Standard Time", - "Namibia Standard Time", "Namibia Standard Time", + "Namibia Standard Time", 60, true, "(UTC+01:00) Windhoek", + "Namibia Standard Time", "Namibia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_42, 2 }, { - "Jordan Standard Time", 120, true, "Jordan Standard Time", - "Jordan Standard Time", "Jordan Standard Time", + "Jordan Standard Time", 120, true, "(UTC+02:00) Amman", + "Jordan Standard Time", "Jordan Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_43, 2 }, { - "GTB Standard Time", 120, true, "GTB Standard Time", - "GTB Standard Time", "GTB Standard Time", + "GTB Standard Time", 120, true, "(UTC+02:00) Athens, Bucharest", + "GTB Standard Time", "GTB Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_44, 1 }, { - "Middle East Standard Time", 120, true, "Middle East Standard Time", - "Middle East Standard Time", "Middle East Standard Time", + "Middle East Standard Time", 120, true, "(UTC+02:00) Beirut", + "Middle East Standard Time", "Middle East Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_45, 13 }, { - "Egypt Standard Time", 120, true, "Egypt Standard Time", - "Egypt Standard Time", "Egypt Standard Time", + "Egypt Standard Time", 120, true, "(UTC+02:00) Cairo", + "Egypt Standard Time", "Egypt Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_46, 6 }, { - "Syria Standard Time", 120, true, "Syria Standard Time", - "Syria Standard Time", "Syria Standard Time", + "Syria Standard Time", 120, true, "(UTC+02:00) Damascus", + "Syria Standard Time", "Syria Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_47, 12 }, { - "South Africa Standard Time", 120, false, "South Africa Standard Time", - "South Africa Standard Time", "South Africa Standard Time", + "South Africa Standard Time", 120, false, "(UTC+02:00) Harare, Pretoria", + "South Africa Standard Time", "South Africa Daylight Time", NULL, 0 }, { - "FLE Standard Time", 120, true, "FLE Standard Time", - "FLE Standard Time", "FLE Standard Time", + "FLE Standard Time", 120, true, "(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius", + "FLE Standard Time", "FLE Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_49, 1 }, { - "Turkey Standard Time", 120, true, "Turkey Standard Time", - "Turkey Standard Time", "Turkey Standard Time", + "Turkey Standard Time", 120, true, "(UTC+02:00) Istanbul", + "Turkey Standard Time", "Turkey Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_50, 3 }, { - "Israel Standard Time", 120, true, "Israel Standard Time", - "Jerusalem Standard Time", "Jerusalem Standard Time", + "Israel Standard Time", 120, true, "(UTC+02:00) Jerusalem", + "Jerusalem Standard Time", "Jerusalem Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_51, 18 }, { - "E. Europe Standard Time", 120, true, "E. Europe Standard Time", - "E. Europe Standard Time", "E. Europe Standard Time", + "E. Europe Standard Time", 120, true, "(UTC+02:00) Nicosia", + "E. Europe Standard Time", "E. Europe Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_52, 1 }, { - "Arabic Standard Time", 180, true, "Arabic Standard Time", - "Arabic Standard Time", "Arabic Standard Time", + "Arabic Standard Time", 180, true, "(UTC+03:00) Baghdad", + "Arabic Standard Time", "Arabic Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_53, 2 }, { - "Kaliningrad Standard Time", 180, true, "Kaliningrad Standard Time", - "Kaliningrad Standard Time", "Kaliningrad Standard Time", + "Kaliningrad Standard Time", 180, true, "(UTC+03:00) Kaliningrad, Minsk", + "Kaliningrad Standard Time", "Kaliningrad Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_54, 1 }, { - "Arab Standard Time", 180, false, "Arab Standard Time", - "Arab Standard Time", "Arab Standard Time", + "Arab Standard Time", 180, false, "(UTC+03:00) Kuwait, Riyadh", + "Arab Standard Time", "Arab Daylight Time", NULL, 0 }, { - "E. Africa Standard Time", 180, false, "E. Africa Standard Time", - "E. Africa Standard Time", "E. Africa Standard Time", + "E. Africa Standard Time", 180, false, "(UTC+03:00) Nairobi", + "E. Africa Standard Time", "E. Africa Daylight Time", NULL, 0 }, { - "Iran Standard Time", 210, true, "Iran Standard Time", - "Iran Standard Time", "Iran Standard Time", + "Iran Standard Time", 210, true, "(UTC+03:30) Tehran", + "Iran Standard Time", "Iran Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_57, 3 }, { - "Arabian Standard Time", 240, false, "Arabian Standard Time", - "Arabian Standard Time", "Arabian Standard Time", + "Arabian Standard Time", 240, false, "(UTC+04:00) Abu Dhabi, Muscat", + "Arabian Standard Time", "Arabian Daylight Time", NULL, 0 }, { - "Azerbaijan Standard Time", 240, true, "Azerbaijan Standard Time", - "Azerbaijan Standard Time", "Azerbaijan Standard Time", + "Azerbaijan Standard Time", 240, true, "(UTC+04:00) Baku", + "Azerbaijan Standard Time", "Azerbaijan Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_59, 1 }, { - "Russian Standard Time", 240, true, "Russian Standard Time", - "Russian Standard Time", "Russian Standard Time", + "Russian Standard Time", 240, true, "(UTC+04:00) Moscow, St. Petersburg, Volgograd", + "Russian Standard Time", "Russian Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_60, 1 }, { - "Mauritius Standard Time", 240, true, "Mauritius Standard Time", - "Mauritius Standard Time", "Mauritius Standard Time", + "Mauritius Standard Time", 240, true, "(UTC+04:00) Port Louis", + "Mauritius Standard Time", "Mauritius Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_61, 2 }, { - "Georgian Standard Time", 240, false, "Georgian Standard Time", - "Georgian Standard Time", "Georgian Standard Time", + "Georgian Standard Time", 240, false, "(UTC+04:00) Tbilisi", + "Georgian Standard Time", "Georgian Daylight Time", NULL, 0 }, { - "Caucasus Standard Time", 240, true, "Caucasus Standard Time", - "Caucasus Standard Time", "Caucasus Standard Time", + "Caucasus Standard Time", 240, true, "(UTC+04:00) Yerevan", + "Caucasus Standard Time", "Caucasus Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_63, 1 }, { - "Afghanistan Standard Time", 270, false, "Afghanistan Standard Time", - "Afghanistan Standard Time", "Afghanistan Standard Time", + "Afghanistan Standard Time", 270, false, "(UTC+04:30) Kabul", + "Afghanistan Standard Time", "Afghanistan Daylight Time", NULL, 0 }, { - "Pakistan Standard Time", 300, true, "Pakistan Standard Time", - "Pakistan Standard Time", "Pakistan Standard Time", + "Pakistan Standard Time", 300, true, "(UTC+05:00) Islamabad, Karachi", + "Pakistan Standard Time", "Pakistan Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_65, 2 }, { - "West Asia Standard Time", 300, false, "West Asia Standard Time", - "West Asia Standard Time", "West Asia Standard Time", + "West Asia Standard Time", 300, false, "(UTC+05:00) Tashkent", + "West Asia Standard Time", "West Asia Daylight Time", NULL, 0 }, { - "India Standard Time", 330, false, "India Standard Time", - "India Standard Time", "India Standard Time", + "India Standard Time", 330, false, "(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi", + "India Standard Time", "India Daylight Time", NULL, 0 }, { - "Sri Lanka Standard Time", 330, false, "Sri Lanka Standard Time", - "Sri Lanka Standard Time", "Sri Lanka Standard Time", + "Sri Lanka Standard Time", 330, false, "(UTC+05:30) Sri Jayawardenepura", + "Sri Lanka Standard Time", "Sri Lanka Daylight Time", NULL, 0 }, { - "Nepal Standard Time", 345, false, "Nepal Standard Time", - "Nepal Standard Time", "Nepal Standard Time", + "Nepal Standard Time", 345, false, "(UTC+05:45) Kathmandu", + "Nepal Standard Time", "Nepal Daylight Time", NULL, 0 }, { - "Central Asia Standard Time", 360, false, "Central Asia Standard Time", - "Central Asia Standard Time", "Central Asia Standard Time", + "Central Asia Standard Time", 360, false, "(UTC+06:00) Astana", + "Central Asia Standard Time", "Central Asia Daylight Time", NULL, 0 }, { - "Bangladesh Standard Time", 360, true, "Bangladesh Standard Time", - "Bangladesh Standard Time", "Bangladesh Standard Time", + "Bangladesh Standard Time", 360, true, "(UTC+06:00) Dhaka", + "Bangladesh Standard Time", "Bangladesh Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_71, 1 }, { - "Ekaterinburg Standard Time", 360, true, "Ekaterinburg Standard Time", - "Ekaterinburg Standard Time", "Ekaterinburg Standard Time", + "Ekaterinburg Standard Time", 360, true, "(UTC+06:00) Ekaterinburg", + "Ekaterinburg Standard Time", "Ekaterinburg Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_72, 1 }, { - "Myanmar Standard Time", 390, false, "Myanmar Standard Time", - "Myanmar Standard Time", "Myanmar Standard Time", + "Myanmar Standard Time", 390, false, "(UTC+06:30) Yangon (Rangoon)", + "Myanmar Standard Time", "Myanmar Daylight Time", NULL, 0 }, { - "SE Asia Standard Time", 420, false, "SE Asia Standard Time", - "SE Asia Standard Time", "SE Asia Standard Time", + "SE Asia Standard Time", 420, false, "(UTC+07:00) Bangkok, Hanoi, Jakarta", + "SE Asia Standard Time", "SE Asia Daylight Time", NULL, 0 }, { - "N. Central Asia Standard Time", 420, true, "N. Central Asia Standard Time", - "N. Central Asia Standard Time", "N. Central Asia Standard Time", + "N. Central Asia Standard Time", 420, true, "(UTC+07:00) Novosibirsk", + "N. Central Asia Standard Time", "N. Central Asia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_75, 1 }, { - "China Standard Time", 480, false, "China Standard Time", - "China Standard Time", "China Standard Time", + "China Standard Time", 480, false, "(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi", + "China Standard Time", "China Daylight Time", NULL, 0 }, { - "North Asia Standard Time", 480, true, "North Asia Standard Time", - "North Asia Standard Time", "North Asia Standard Time", + "North Asia Standard Time", 480, true, "(UTC+08:00) Krasnoyarsk", + "North Asia Standard Time", "North Asia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_77, 1 }, { - "Singapore Standard Time", 480, false, "Singapore Standard Time", - "Malay Peninsula Standard Time", "Malay Peninsula Standard Time", + "Singapore Standard Time", 480, false, "(UTC+08:00) Kuala Lumpur, Singapore", + "Malay Peninsula Standard Time", "Malay Peninsula Daylight Time", NULL, 0 }, { - "W. Australia Standard Time", 480, true, "W. Australia Standard Time", - "W. Australia Standard Time", "W. Australia Standard Time", + "W. Australia Standard Time", 480, true, "(UTC+08:00) Perth", + "W. Australia Standard Time", "W. Australia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_79, 4 }, { - "Taipei Standard Time", 480, false, "Taipei Standard Time", - "Taipei Standard Time", "Taipei Standard Time", + "Taipei Standard Time", 480, false, "(UTC+08:00) Taipei", + "Taipei Standard Time", "Taipei Daylight Time", NULL, 0 }, { - "Ulaanbaatar Standard Time", 480, false, "Ulaanbaatar Standard Time", - "Ulaanbaatar Standard Time", "Ulaanbaatar Standard Time", + "Ulaanbaatar Standard Time", 480, false, "(UTC+08:00) Ulaanbaatar", + "Ulaanbaatar Standard Time", "Ulaanbaatar Daylight Time", NULL, 0 }, { - "North Asia East Standard Time", 540, true, "North Asia East Standard Time", - "North Asia East Standard Time", "North Asia East Standard Time", + "North Asia East Standard Time", 540, true, "(UTC+09:00) Irkutsk", + "North Asia East Standard Time", "North Asia East Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_82, 1 }, { - "Tokyo Standard Time", 540, false, "Tokyo Standard Time", - "Tokyo Standard Time", "Tokyo Standard Time", + "Tokyo Standard Time", 540, false, "(UTC+09:00) Osaka, Sapporo, Tokyo", + "Tokyo Standard Time", "Tokyo Daylight Time", NULL, 0 }, { - "Korea Standard Time", 540, false, "Korea Standard Time", - "Korea Standard Time", "Korea Standard Time", + "Korea Standard Time", 540, false, "(UTC+09:00) Seoul", + "Korea Standard Time", "Korea Daylight Time", NULL, 0 }, { - "Cen. Australia Standard Time", 570, true, "Cen. Australia Standard Time", - "Cen. Australia Standard Time", "Cen. Australia Standard Time", + "Cen. Australia Standard Time", 570, true, "(UTC+09:30) Adelaide", + "Cen. Australia Standard Time", "Cen. Australia Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_85, 2 }, { - "AUS Central Standard Time", 570, false, "AUS Central Standard Time", - "AUS Central Standard Time", "AUS Central Standard Time", + "AUS Central Standard Time", 570, false, "(UTC+09:30) Darwin", + "AUS Central Standard Time", "AUS Central Daylight Time", NULL, 0 }, { - "E. Australia Standard Time", 600, false, "E. Australia Standard Time", - "E. Australia Standard Time", "E. Australia Standard Time", + "E. Australia Standard Time", 600, false, "(UTC+10:00) Brisbane", + "E. Australia Standard Time", "E. Australia Daylight Time", NULL, 0 }, { - "AUS Eastern Standard Time", 600, true, "AUS Eastern Standard Time", - "AUS Eastern Standard Time", "AUS Eastern Standard Time", + "AUS Eastern Standard Time", 600, true, "(UTC+10:00) Canberra, Melbourne, Sydney", + "AUS Eastern Standard Time", "AUS Eastern Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_88, 2 }, { - "West Pacific Standard Time", 600, false, "West Pacific Standard Time", - "West Pacific Standard Time", "West Pacific Standard Time", + "West Pacific Standard Time", 600, false, "(UTC+10:00) Guam, Port Moresby", + "West Pacific Standard Time", "West Pacific Daylight Time", NULL, 0 }, { - "Tasmania Standard Time", 600, true, "Tasmania Standard Time", - "Tasmania Standard Time", "Tasmania Standard Time", + "Tasmania Standard Time", 600, true, "(UTC+10:00) Hobart", + "Tasmania Standard Time", "Tasmania Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_90, 2 }, { - "Yakutsk Standard Time", 600, true, "Yakutsk Standard Time", - "Yakutsk Standard Time", "Yakutsk Standard Time", + "Yakutsk Standard Time", 600, true, "(UTC+10:00) Yakutsk", + "Yakutsk Standard Time", "Yakutsk Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_91, 1 }, { - "Central Pacific Standard Time", 660, false, "Central Pacific Standard Time", - "Central Pacific Standard Time", "Central Pacific Standard Time", + "Central Pacific Standard Time", 660, false, "(UTC+11:00) Solomon Is., New Caledonia", + "Central Pacific Standard Time", "Central Pacific Daylight Time", NULL, 0 }, { - "Vladivostok Standard Time", 660, true, "Vladivostok Standard Time", - "Vladivostok Standard Time", "Vladivostok Standard Time", + "Vladivostok Standard Time", 660, true, "(UTC+11:00) Vladivostok", + "Vladivostok Standard Time", "Vladivostok Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_93, 1 }, { - "New Zealand Standard Time", 720, true, "New Zealand Standard Time", - "New Zealand Standard Time", "New Zealand Standard Time", + "New Zealand Standard Time", 720, true, "(UTC+12:00) Auckland, Wellington", + "New Zealand Standard Time", "New Zealand Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_94, 3 }, { - "UTC+12", 720, false, "UTC+12", + "UTC+12", 720, false, "(UTC+12:00) Coordinated Universal Time+12", "UTC+12", "UTC+12", NULL, 0 }, { - "Fiji Standard Time", 720, true, "Fiji Standard Time", - "Fiji Standard Time", "Fiji Standard Time", + "Fiji Standard Time", 720, true, "(UTC+12:00) Fiji", + "Fiji Standard Time", "Fiji Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_96, 5 }, { - "Magadan Standard Time", 720, true, "Magadan Standard Time", - "Magadan Standard Time", "Magadan Standard Time", + "Magadan Standard Time", 720, true, "(UTC+12:00) Magadan", + "Magadan Standard Time", "Magadan Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_97, 1 }, { - "Kamchatka Standard Time", 720, true, "Kamchatka Standard Time", - "Kamchatka Standard Time", "Kamchatka Standard Time", + "Kamchatka Standard Time", 720, true, "(UTC+12:00) Petropavlovsk-Kamchatsky - Old", + "Kamchatka Standard Time", "Kamchatka Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_98, 1 }, { - "Tonga Standard Time", 780, false, "Tonga Standard Time", - "Tonga Standard Time", "Tonga Standard Time", + "Tonga Standard Time", 780, false, "(UTC+13:00) Nuku'alofa", + "Tonga Standard Time", "Tonga Daylight Time", NULL, 0 }, { - "Samoa Standard Time", 780, true, "Samoa Standard Time", - "Samoa Standard Time", "Samoa Standard Time", + "Samoa Standard Time", 780, true, "(UTC+13:00) Samoa", + "Samoa Standard Time", "Samoa Daylight Time", (TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_100, 2 } }; +/* Table generated with WindowsZones.cs */ + struct _WINDOWS_TZID_ENTRY { const char* windows; @@ -1593,7 +1596,7 @@ TIME_ZONE_ENTRY* freerdp_detect_windows_time_zone(uint32 bias) return NULL; for (i = 0; i < ARRAY_SIZE(TimeZoneTable); i++) - { + { for (j = 0; j < ARRAY_SIZE(WindowsTimeZoneIdTable); j++) { if (strcmp(TimeZoneTable[i].Id, WindowsTimeZoneIdTable[j].windows) != 0) @@ -1603,11 +1606,13 @@ TIME_ZONE_ENTRY* freerdp_detect_windows_time_zone(uint32 bias) { timezone = (TIME_ZONE_ENTRY*) xmalloc(sizeof(TIME_ZONE_ENTRY)); memcpy((void*) timezone, (void*) &TimeZoneTable[i], sizeof(TIME_ZONE_ENTRY)); + timezone->Bias = bias; xfree(tzid); return timezone; } } } + printf("Unable to find a match for unix timezone: %s\n", tzid); xfree(tzid); return NULL; @@ -1634,17 +1639,24 @@ TIME_ZONE_RULE_ENTRY* freerdp_get_current_time_zone_rule(TIME_ZONE_RULE_ENTRY* r void freerdp_time_zone_detect(TIME_ZONE_INFO* clientTimeZone) { time_t t; - struct tm* local_time; + sint32 sbias; TIME_ZONE_ENTRY* tz; + struct tm* local_time; time(&t); local_time = localtime(&t); #ifdef HAVE_TM_GMTOFF if (local_time->tm_gmtoff >= 0) - clientTimeZone->bias = (uint32) (-1 * local_time->tm_gmtoff / 60); + { + sbias = local_time->tm_gmtoff / 60; + clientTimeZone->bias = (uint32) sbias; + } else - clientTimeZone->bias = (uint32) ((-1 * local_time->tm_gmtoff) / 60); + { + sbias = local_time->tm_gmtoff / 60; + clientTimeZone->bias = (uint32) (1440 + sbias); + } #elif sun if (local_time->tm_isdst > 0) clientTimeZone->bias = (uint32) (altzone / 3600); diff --git a/scripts/TimeZones.cs b/scripts/TimeZones.cs index 1557d2cf9..36cea6050 100644 --- a/scripts/TimeZones.cs +++ b/scripts/TimeZones.cs @@ -1,4 +1,4 @@ -/** +/** * FreeRDP: A Remote Desktop Protocol Client * Time Zone Redirection Table Generator * @@ -24,224 +24,232 @@ using System.Collections.ObjectModel; namespace TimeZones { - struct SYSTEM_TIME_ENTRY - { - public UInt16 wYear; - public UInt16 wMonth; - public UInt16 wDayOfWeek; - public UInt16 wDay; - public UInt16 wHour; - public UInt16 wMinute; - public UInt16 wSecond; - public UInt16 wMilliseconds; - }; + struct SYSTEM_TIME_ENTRY + { + public UInt16 wYear; + public UInt16 wMonth; + public UInt16 wDayOfWeek; + public UInt16 wDay; + public UInt16 wHour; + public UInt16 wMinute; + public UInt16 wSecond; + public UInt16 wMilliseconds; + }; - struct TIME_ZONE_RULE_ENTRY - { - public long TicksStart; - public long TicksEnd; - public Int32 DaylightDelta; - public SYSTEM_TIME_ENTRY StandardDate; - public SYSTEM_TIME_ENTRY DaylightDate; - }; + struct TIME_ZONE_RULE_ENTRY + { + public long TicksStart; + public long TicksEnd; + public Int32 DaylightDelta; + public SYSTEM_TIME_ENTRY StandardDate; + public SYSTEM_TIME_ENTRY DaylightDate; + }; - struct TIME_ZONE_ENTRY - { - public string Id; - public UInt32 Bias; - public bool SupportsDST; - public string DisplayName; - public string StandardName; - public string DaylightName; - public string RuleTable; - public UInt32 RuleTableCount; - }; + struct TIME_ZONE_ENTRY + { + public string Id; + public UInt32 Bias; + public bool SupportsDST; + public string DisplayName; + public string StandardName; + public string DaylightName; + public string RuleTable; + public UInt32 RuleTableCount; + }; - class TimeZones - { - static void Main(string[] args) - { - int i; - UInt32 index; - const string file = @"TimeZones.txt"; - TimeZoneInfo.AdjustmentRule[] rules; - StreamWriter stream = new StreamWriter(file, false); - ReadOnlyCollection timeZones = TimeZoneInfo.GetSystemTimeZones(); + class TimeZones + { + static void Main(string[] args) + { + int i; + UInt32 index; + const string file = @"TimeZones.txt"; + TimeZoneInfo.AdjustmentRule[] rules; + StreamWriter stream = new StreamWriter(file, false); + ReadOnlyCollection timeZones = TimeZoneInfo.GetSystemTimeZones(); - stream.WriteLine(); + stream.WriteLine(); - stream.WriteLine("struct _SYSTEM_TIME_ENTRY"); - stream.WriteLine("{"); - stream.WriteLine("\tuint16 wYear;"); - stream.WriteLine("\tuint16 wMonth;"); - stream.WriteLine("\tuint16 wDayOfWeek;"); - stream.WriteLine("\tuint16 wDay;"); - stream.WriteLine("\tuint16 wHour;"); - stream.WriteLine("\tuint16 wMinute;"); - stream.WriteLine("\tuint16 wSecond;"); - stream.WriteLine("\tuint16 wMilliseconds;"); - stream.WriteLine("};"); - stream.WriteLine("typedef struct _SYSTEM_TIME_ENTRY SYSTEM_TIME_ENTRY;"); - stream.WriteLine(); + stream.WriteLine("struct _SYSTEM_TIME_ENTRY"); + stream.WriteLine("{"); + stream.WriteLine("\tuint16 wYear;"); + stream.WriteLine("\tuint16 wMonth;"); + stream.WriteLine("\tuint16 wDayOfWeek;"); + stream.WriteLine("\tuint16 wDay;"); + stream.WriteLine("\tuint16 wHour;"); + stream.WriteLine("\tuint16 wMinute;"); + stream.WriteLine("\tuint16 wSecond;"); + stream.WriteLine("\tuint16 wMilliseconds;"); + stream.WriteLine("};"); + stream.WriteLine("typedef struct _SYSTEM_TIME_ENTRY SYSTEM_TIME_ENTRY;"); + stream.WriteLine(); - stream.WriteLine("struct _TIME_ZONE_RULE_ENTRY"); - stream.WriteLine("{"); - stream.WriteLine("\tuint64 TicksStart;"); - stream.WriteLine("\tuint64 TicksEnd;"); - stream.WriteLine("\tsint32 DaylightDelta;"); - stream.WriteLine("\tSYSTEM_TIME_ENTRY StandardDate;"); - stream.WriteLine("\tSYSTEM_TIME_ENTRY DaylightDate;"); - stream.WriteLine("};"); - stream.WriteLine("typedef struct _TIME_ZONE_RULE_ENTRY TIME_ZONE_RULE_ENTRY;"); - stream.WriteLine(); + stream.WriteLine("struct _TIME_ZONE_RULE_ENTRY"); + stream.WriteLine("{"); + stream.WriteLine("\tuint64 TicksStart;"); + stream.WriteLine("\tuint64 TicksEnd;"); + stream.WriteLine("\tsint32 DaylightDelta;"); + stream.WriteLine("\tSYSTEM_TIME_ENTRY StandardDate;"); + stream.WriteLine("\tSYSTEM_TIME_ENTRY DaylightDate;"); + stream.WriteLine("};"); + stream.WriteLine("typedef struct _TIME_ZONE_RULE_ENTRY TIME_ZONE_RULE_ENTRY;"); + stream.WriteLine(); - stream.WriteLine("struct _TIME_ZONE_ENTRY"); - stream.WriteLine("{"); - stream.WriteLine("\tconst char* Id;"); - stream.WriteLine("\tuint32 Bias;"); - stream.WriteLine("\tboolean SupportsDST;"); - stream.WriteLine("\tconst char* DisplayName;"); - stream.WriteLine("\tconst char* StandardName;"); - stream.WriteLine("\tconst char* DaylightName;"); - stream.WriteLine("\tTIME_ZONE_RULE_ENTRY* RuleTable;"); - stream.WriteLine("\tuint32 RuleTableCount;"); - stream.WriteLine("};"); - stream.WriteLine("typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY;"); - stream.WriteLine(); + stream.WriteLine("struct _TIME_ZONE_ENTRY"); + stream.WriteLine("{"); + stream.WriteLine("\tconst char* Id;"); + stream.WriteLine("\tuint32 Bias;"); + stream.WriteLine("\tboolean SupportsDST;"); + stream.WriteLine("\tconst char* DisplayName;"); + stream.WriteLine("\tconst char* StandardName;"); + stream.WriteLine("\tconst char* DaylightName;"); + stream.WriteLine("\tTIME_ZONE_RULE_ENTRY* RuleTable;"); + stream.WriteLine("\tuint32 RuleTableCount;"); + stream.WriteLine("};"); + stream.WriteLine("typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY;"); + stream.WriteLine(); - index = 0; + index = 0; - foreach (TimeZoneInfo timeZone in timeZones) - { - rules = timeZone.GetAdjustmentRules(); + foreach (TimeZoneInfo timeZone in timeZones) + { + rules = timeZone.GetAdjustmentRules(); - if ((!timeZone.SupportsDaylightSavingTime) || (rules.Length < 1)) - { - index++; - continue; - } + if ((!timeZone.SupportsDaylightSavingTime) || (rules.Length < 1)) + { + index++; + continue; + } - stream.WriteLine("static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_{0}[] =", index); - stream.WriteLine("{"); + stream.WriteLine("static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_{0}[] =", index); + stream.WriteLine("{"); - i = 0; - foreach (TimeZoneInfo.AdjustmentRule rule in rules) - { - DateTime time; - TIME_ZONE_RULE_ENTRY tzr; - TimeZoneInfo.TransitionTime transition; + i = 0; + foreach (TimeZoneInfo.AdjustmentRule rule in rules) + { + DateTime time; + TIME_ZONE_RULE_ENTRY tzr; + TimeZoneInfo.TransitionTime transition; - tzr.TicksStart = rule.DateEnd.ToUniversalTime().Ticks; - tzr.TicksEnd = rule.DateStart.ToUniversalTime().Ticks; - tzr.DaylightDelta = (Int32)rule.DaylightDelta.TotalMinutes; + tzr.TicksStart = rule.DateEnd.ToUniversalTime().Ticks; + tzr.TicksEnd = rule.DateStart.ToUniversalTime().Ticks; + tzr.DaylightDelta = (Int32)rule.DaylightDelta.TotalMinutes; - transition = rule.DaylightTransitionEnd; - time = transition.TimeOfDay; + transition = rule.DaylightTransitionEnd; + time = transition.TimeOfDay; - tzr.StandardDate.wYear = (UInt16)0; - tzr.StandardDate.wMonth = (UInt16)transition.Month; - tzr.StandardDate.wDayOfWeek = (UInt16)transition.DayOfWeek; - tzr.StandardDate.wDay = (UInt16)transition.Day; - tzr.StandardDate.wHour = (UInt16)time.Hour; - tzr.StandardDate.wMinute = (UInt16)time.Minute; - tzr.StandardDate.wSecond = (UInt16)time.Second; - tzr.StandardDate.wMilliseconds = (UInt16)time.Millisecond; + tzr.StandardDate.wYear = (UInt16)0; + tzr.StandardDate.wMonth = (UInt16)transition.Month; + tzr.StandardDate.wDayOfWeek = (UInt16)transition.DayOfWeek; + tzr.StandardDate.wDay = (UInt16)transition.Day; + tzr.StandardDate.wHour = (UInt16)time.Hour; + tzr.StandardDate.wMinute = (UInt16)time.Minute; + tzr.StandardDate.wSecond = (UInt16)time.Second; + tzr.StandardDate.wMilliseconds = (UInt16)time.Millisecond; - transition = rule.DaylightTransitionStart; - time = transition.TimeOfDay; + transition = rule.DaylightTransitionStart; + time = transition.TimeOfDay; - tzr.DaylightDate.wYear = (UInt16)0; - tzr.DaylightDate.wMonth = (UInt16)transition.Month; - tzr.DaylightDate.wDayOfWeek = (UInt16)transition.DayOfWeek; - tzr.DaylightDate.wDay = (UInt16)transition.Day; - tzr.DaylightDate.wHour = (UInt16)time.Hour; - tzr.DaylightDate.wMinute = (UInt16)time.Minute; - tzr.DaylightDate.wSecond = (UInt16)time.Second; - tzr.DaylightDate.wMilliseconds = (UInt16)time.Millisecond; + tzr.DaylightDate.wYear = (UInt16)0; + tzr.DaylightDate.wMonth = (UInt16)transition.Month; + tzr.DaylightDate.wDayOfWeek = (UInt16)transition.DayOfWeek; + tzr.DaylightDate.wDay = (UInt16)transition.Day; + tzr.DaylightDate.wHour = (UInt16)time.Hour; + tzr.DaylightDate.wMinute = (UInt16)time.Minute; + tzr.DaylightDate.wSecond = (UInt16)time.Second; + tzr.DaylightDate.wMilliseconds = (UInt16)time.Millisecond; - stream.Write("\t{"); - stream.Write(" {0}ULL, {1}ULL, {2},", tzr.TicksStart, tzr.TicksEnd, tzr.DaylightDelta); + stream.Write("\t{"); + stream.Write(" {0}ULL, {1}ULL, {2},", tzr.TicksStart, tzr.TicksEnd, tzr.DaylightDelta); - stream.Write(" { "); - stream.Write("{0}, {1}, {2}, {3}, {4}, {5}", - tzr.StandardDate.wYear, tzr.StandardDate.wMonth, tzr.StandardDate.wDayOfWeek, - tzr.StandardDate.wDay, tzr.StandardDate.wHour, tzr.StandardDate.wMinute, - tzr.StandardDate.wSecond, tzr.StandardDate.wMilliseconds); - stream.Write(" }, "); + stream.Write(" { "); + stream.Write("{0}, {1}, {2}, {3}, {4}, {5}", + tzr.StandardDate.wYear, tzr.StandardDate.wMonth, tzr.StandardDate.wDayOfWeek, + tzr.StandardDate.wDay, tzr.StandardDate.wHour, tzr.StandardDate.wMinute, + tzr.StandardDate.wSecond, tzr.StandardDate.wMilliseconds); + stream.Write(" }, "); - stream.Write("{ "); - stream.Write("{0}, {1}, {2}, {3}, {4}, {5}", - tzr.DaylightDate.wYear, tzr.DaylightDate.wMonth, tzr.DaylightDate.wDayOfWeek, - tzr.DaylightDate.wDay, tzr.DaylightDate.wHour, tzr.DaylightDate.wMinute, - tzr.DaylightDate.wSecond, tzr.DaylightDate.wMilliseconds); - stream.Write(" },"); + stream.Write("{ "); + stream.Write("{0}, {1}, {2}, {3}, {4}, {5}", + tzr.DaylightDate.wYear, tzr.DaylightDate.wMonth, tzr.DaylightDate.wDayOfWeek, + tzr.DaylightDate.wDay, tzr.DaylightDate.wHour, tzr.DaylightDate.wMinute, + tzr.DaylightDate.wSecond, tzr.DaylightDate.wMilliseconds); + stream.Write(" },"); - if (++i < rules.Length) - stream.WriteLine(" },"); - else - stream.WriteLine(" }"); - } + if (++i < rules.Length) + stream.WriteLine(" },"); + else + stream.WriteLine(" }"); + } - stream.WriteLine("};"); - stream.WriteLine(); - index++; - } + stream.WriteLine("};"); + stream.WriteLine(); + index++; + } - index = 0; - stream.WriteLine("static const TIME_ZONE_ENTRY TimeZoneTable[] ="); - stream.WriteLine("{"); + index = 0; + stream.WriteLine("static const TIME_ZONE_ENTRY TimeZoneTable[] ="); + stream.WriteLine("{"); - foreach (TimeZoneInfo timeZone in timeZones) - { - TIME_ZONE_ENTRY tz; - TimeSpan offset = timeZone.BaseUtcOffset; + foreach (TimeZoneInfo timeZone in timeZones) + { + Int32 sbias; + TIME_ZONE_ENTRY tz; + TimeSpan offset = timeZone.BaseUtcOffset; - rules = timeZone.GetAdjustmentRules(); + rules = timeZone.GetAdjustmentRules(); - tz.Id = timeZone.Id; + tz.Id = timeZone.Id; - if (offset.Hours >= 0) - tz.Bias = (UInt32)((offset.Hours * 60) + offset.Minutes); - else - tz.Bias = (UInt32)(((-1 * offset.Hours) * 60) + offset.Minutes + 720); + if (offset.Hours >= 0) + { + sbias = (offset.Hours * 60) + offset.Minutes; + tz.Bias = (UInt32) sbias; + } + else + { + sbias = (offset.Hours * 60) + offset.Minutes; + tz.Bias = (UInt32) (1440 + sbias); + } - tz.SupportsDST = timeZone.SupportsDaylightSavingTime; + tz.SupportsDST = timeZone.SupportsDaylightSavingTime; - tz.DisplayName = timeZone.DisplayName; - tz.StandardName = timeZone.StandardName; - tz.DaylightName = timeZone.DaylightName; + tz.DisplayName = timeZone.DisplayName; + tz.StandardName = timeZone.StandardName; + tz.DaylightName = timeZone.DaylightName; - if ((!tz.SupportsDST) || (rules.Length < 1)) - { - tz.RuleTableCount = 0; - tz.RuleTable = "NULL"; - } - else - { - tz.RuleTableCount = (UInt32)rules.Length; - tz.RuleTable = "&TimeZoneRuleTable_" + index; - tz.RuleTable = "(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_" + index; - } + if ((!tz.SupportsDST) || (rules.Length < 1)) + { + tz.RuleTableCount = 0; + tz.RuleTable = "NULL"; + } + else + { + tz.RuleTableCount = (UInt32)rules.Length; + tz.RuleTable = "&TimeZoneRuleTable_" + index; + tz.RuleTable = "(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_" + index; + } - stream.WriteLine("\t{"); + stream.WriteLine("\t{"); - stream.WriteLine("\t\t\"{0}\", {1}, {2}, \"{0}\",", - tz.Id, tz.Bias, tz.SupportsDST ? "true" : "false", tz.DisplayName); + stream.WriteLine("\t\t\"{0}\", {1}, {2}, \"{3}\",", + tz.Id, tz.Bias, tz.SupportsDST ? "true" : "false", tz.DisplayName); - stream.WriteLine("\t\t\"{0}\", \"{0}\",", tz.StandardName, tz.DaylightName); - stream.WriteLine("\t\t{0}, {1}", tz.RuleTable, tz.RuleTableCount); + stream.WriteLine("\t\t\"{0}\", \"{1}\",", tz.StandardName, tz.DaylightName); + stream.WriteLine("\t\t{0}, {1}", tz.RuleTable, tz.RuleTableCount); - index++; + index++; - if ((int) index < timeZones.Count) - stream.WriteLine("\t},"); - else - stream.WriteLine("\t}"); - } - stream.WriteLine("};"); - stream.WriteLine(); + if ((int)index < timeZones.Count) + stream.WriteLine("\t},"); + else + stream.WriteLine("\t}"); + } + stream.WriteLine("};"); + stream.WriteLine(); - stream.Close(); - } - } + stream.Close(); + } + } } +