1316 lines
54 KiB
C
1316 lines
54 KiB
C
/**
|
|
* FreeRDP: A Remote Desktop Protocol Client
|
|
* Time Zone Redirection
|
|
*
|
|
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "timezone.h"
|
|
|
|
/* Time Zone Redirection table generated with TimeZones.cs script */
|
|
|
|
struct _SYSTEM_TIME_ENTRY
|
|
{
|
|
uint16 wYear;
|
|
uint16 wMonth;
|
|
uint16 wDayOfWeek;
|
|
uint16 wDay;
|
|
uint16 wHour;
|
|
uint16 wMinute;
|
|
uint16 wSecond;
|
|
uint16 wMilliseconds;
|
|
};
|
|
typedef struct _SYSTEM_TIME_ENTRY SYSTEM_TIME_ENTRY;
|
|
|
|
struct _TIME_ZONE_RULE_ENTRY
|
|
{
|
|
uint64 TicksStart;
|
|
uint64 TicksEnd;
|
|
sint32 DaylightDelta;
|
|
SYSTEM_TIME_ENTRY StandardDate;
|
|
SYSTEM_TIME_ENTRY DaylightDate;
|
|
};
|
|
typedef struct _TIME_ZONE_RULE_ENTRY TIME_ZONE_RULE_ENTRY;
|
|
|
|
struct _TIME_ZONE_ENTRY
|
|
{
|
|
const char* Id;
|
|
uint32 Bias;
|
|
boolean SupportsDST;
|
|
const char* DisplayName;
|
|
const char* StandardName;
|
|
const char* DaylightName;
|
|
TIME_ZONE_RULE_ENTRY* RuleTable;
|
|
uint32 RuleTableCount;
|
|
};
|
|
typedef struct _TIME_ZONE_ENTRY TIME_ZONE_ENTRY;
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_3[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_4[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_5[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_7[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_8[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_10[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_11[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_14[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_15[] =
|
|
{
|
|
{ 633031488000000000, 632716992000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_17[] =
|
|
{
|
|
{ 633663072000000000, 288000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 9, 6, 1, 23, 59 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 637450848000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_18[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_19[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637765344000000000, 637450848000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638080704000000000, 637766208000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638396064000000000, 638081568000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638712288000000000, 638396928000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639027648000000000, 638713152000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639343008000000000, 639028512000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639658368000000000, 639343872000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639974592000000000, 639659232000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640289952000000000, 639975456000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640605312000000000, 640290816000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640920672000000000, 640606176000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641236896000000000, 640921536000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641552256000000000, 641237760000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641867616000000000, 641553120000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642182976000000000, 641868480000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642499200000000000, 642183840000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642814560000000000, 642500064000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643129920000000000, 642815424000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643445280000000000, 643130784000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 643446144000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_21[] =
|
|
{
|
|
{ 633346848000000000, 288000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 4, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 5, 6, 1, 23, 59 }, { 0, 8, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 634610016000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_22[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 0, 1 }, { 0, 4, 0, 1, 0, 1 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 11, 0, 1, 0, 1 }, { 0, 3, 0, 1, 0, 1 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 0, 1 }, },
|
|
{ 3155378400000000000, 634610016000000000, 60, { 0, 11, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_23[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 2, 0, 1, 2, 0 }, { 0, 11, 0, 1, 0, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 0, 1, 0, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 2, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637765344000000000, 637450848000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638080704000000000, 637766208000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638396064000000000, 638081568000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638712288000000000, 638396928000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639027648000000000, 638713152000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639343008000000000, 639028512000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639658368000000000, 639343872000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639974592000000000, 639659232000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640289952000000000, 639975456000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640605312000000000, 640290816000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640920672000000000, 640606176000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641236896000000000, 640921536000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641552256000000000, 641237760000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641867616000000000, 641553120000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642182976000000000, 641868480000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642499200000000000, 642183840000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642814560000000000, 642500064000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643129920000000000, 642815424000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643445280000000000, 643130784000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 643446144000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_24[] =
|
|
{
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 1, 1, 1, 0, 0 }, { 0, 12, 0, 1, 0, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 3, 0, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 3, 6, 1, 23, 59 }, { 0, 1, 4, 1, 0, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_26[] =
|
|
{
|
|
{ 633663072000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, },
|
|
{ 3155378400000000000, 637450848000000000, 60, { 0, 10, 6, 1, 23, 0 }, { 0, 3, 6, 1, 22, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_27[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 10, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_28[] =
|
|
{
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 637765344000000000, 637450848000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638080704000000000, 637766208000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638396064000000000, 638081568000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 638712288000000000, 638396928000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639027648000000000, 638713152000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639343008000000000, 639028512000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639658368000000000, 639343872000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 639974592000000000, 639659232000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640289952000000000, 639975456000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640605312000000000, 640290816000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 640920672000000000, 640606176000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641236896000000000, 640921536000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641552256000000000, 641237760000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 641867616000000000, 641553120000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642182976000000000, 641868480000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642499200000000000, 642183840000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 642814560000000000, 642500064000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643129920000000000, 642815424000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 643445280000000000, 643130784000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 643446144000000000, 60, { 0, 2, 6, 1, 23, 59 }, { 0, 10, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_30[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_31[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_33[] =
|
|
{
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 8, 0, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 5, 0, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 8, 6, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 7, 6, 1, 23, 59 }, { 0, 4, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_35[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 0, 1, 1, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_37[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_38[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_39[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_40[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_42[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, -60, { 0, 9, 0, 1, 2, 0 }, { 0, 4, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 634294656000000000, 60, { 0, 4, 0, 1, 2, 0 }, { 0, 9, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_43[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 9, 5, 1, 1, 0 }, { 0, 3, 4, 1, 0, 0 }, },
|
|
{ 3155378400000000000, 633032352000000000, 60, { 0, 10, 5, 1, 1, 0 }, { 0, 3, 4, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_44[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_45[] =
|
|
{
|
|
{ 633978432000000000, 288000000000, 60, { 0, 10, 0, 1, 0, 0 }, { 0, 3, 0, 1, 0, 0 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 637450848000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_46[] =
|
|
{
|
|
{ 632716128000000000, 288000000000, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, },
|
|
{ 633031488000000000, 632716992000000000, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 5, 1, 0, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 8, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 9, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_47[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 9, 3, 1, 23, 59 }, { 0, 3, 5, 1, 23, 59 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 11, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 636188544000000000, 60, { 0, 10, 4, 1, 23, 59 }, { 0, 4, 4, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_49[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_50[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 1, 1, 3, 0 }, },
|
|
{ 3155378400000000000, 634610016000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 3, 0, 1, 3, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_51[] =
|
|
{
|
|
{ 632716128000000000, 632401632000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, },
|
|
{ 633031488000000000, 632716992000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 635240736000000000, 634926240000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 635556096000000000, 635241600000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 635871456000000000, 635556960000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 636187680000000000, 635872320000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, },
|
|
{ 636503040000000000, 636188544000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 636818400000000000, 636503904000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 637133760000000000, 636819264000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 637449984000000000, 637134624000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 637765344000000000, 637450848000000000, 60, { 0, 9, 0, 1, 2, 0 }, { 0, 3, 5, 1, 2, 0 }, },
|
|
{ 638080704000000000, 637766208000000000, 60, { 0, 10, 0, 1, 2, 0 }, { 0, 4, 5, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_52[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_53[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 10, 0, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 10, 1, 1, 4, 0 }, { 0, 4, 0, 1, 3, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_54[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_57[] =
|
|
{
|
|
{ 632716128000000000, 288000000000, 60, { 0, 9, 2, 1, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 9, 6, 1, 23, 59 }, { 0, 3, 4, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 633663936000000000, 60, { 0, 9, 1, 1, 23, 59 }, { 0, 3, 6, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_59[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 5, 0 }, { 0, 3, 0, 1, 4, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_60[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_61[] =
|
|
{
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 1, 2, 1, 0, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 3, 0, 1, 2, 0 }, { 0, 1, 4, 1, 0, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_63[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_65[] =
|
|
{
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 10, 5, 1, 23, 59 }, { 0, 5, 6, 1, 23, 59 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 10, 6, 1, 23, 59 }, { 0, 4, 2, 1, 23, 59 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_71[] =
|
|
{
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 12, 4, 1, 23, 59 }, { 0, 6, 5, 1, 23, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_72[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_75[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_77[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_79[] =
|
|
{
|
|
{ 633031488000000000, 632716992000000000, 60, { 0, 1, 0, 1, 0, 0 }, { 0, 12, 0, 1, 2, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 633663072000000000, 633347712000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 1, 4, 1, 0, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_82[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_85[] =
|
|
{
|
|
{ 633346848000000000, 288000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633347712000000000, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_88[] =
|
|
{
|
|
{ 633346848000000000, 288000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633347712000000000, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_90[] =
|
|
{
|
|
{ 633346848000000000, 288000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633347712000000000, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_91[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_93[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_94[] =
|
|
{
|
|
{ 633031488000000000, 288000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 633346848000000000, 633032352000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 633347712000000000, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 9, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_96[] =
|
|
{
|
|
{ 633978432000000000, 633663936000000000, 60, { 0, 1, 4, 1, 0, 0 }, { 0, 11, 0, 1, 2, 0 }, },
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 634609152000000000, 634294656000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 634925376000000000, 634610016000000000, 60, { 0, 1, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
|
|
{ 3155378400000000000, 634926240000000000, 60, { 0, 3, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_97[] =
|
|
{
|
|
{ 634293792000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_98[] =
|
|
{
|
|
{ 3155378400000000000, 288000000000, 60, { 0, 10, 0, 1, 3, 0 }, { 0, 3, 0, 1, 2, 0 }, }
|
|
};
|
|
|
|
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_100[] =
|
|
{
|
|
{ 634293792000000000, 633979296000000000, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 9, 6, 1, 23, 59 }, },
|
|
{ 3155378400000000000, 634294656000000000, 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"UTC-11", 1380, false, "UTC-11",
|
|
"UTC-11", "UTC-11",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Hawaiian Standard Time", 1320, false, "Hawaiian Standard Time",
|
|
"Hawaiian Standard Time", "Hawaiian Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Alaskan Standard Time", 1260, true, "Alaskan Standard Time",
|
|
"Alaskan Standard Time", "Alaskan Standard 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)",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_4, 1
|
|
},
|
|
{
|
|
"Pacific Standard Time", 1200, true, "Pacific Standard Time",
|
|
"Pacific Standard Time", "Pacific Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Mountain Standard Time (Mexico)", 1140, true, "Mountain Standard Time (Mexico)",
|
|
"Mountain Standard Time (Mexico)", "Mountain Standard Time (Mexico)",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_7, 1
|
|
},
|
|
{
|
|
"Mountain Standard Time", 1140, true, "Mountain Standard Time",
|
|
"Mountain Standard Time", "Mountain Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Central Standard Time", 1080, true, "Central Standard Time",
|
|
"Central Standard Time", "Central Standard 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)",
|
|
(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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"SA Pacific Standard Time", 1020, false, "SA Pacific Standard Time",
|
|
"SA Pacific Standard Time", "SA Pacific Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Eastern Standard Time", 1020, true, "Eastern Standard Time",
|
|
"Eastern Standard Time", "Eastern Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_15, 2
|
|
},
|
|
{
|
|
"Venezuela Standard Time", 930, false, "Venezuela Standard Time",
|
|
"Venezuela Standard Time", "Venezuela Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Paraguay Standard Time", 960, true, "Paraguay Standard Time",
|
|
"Paraguay Standard Time", "Paraguay Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_17, 14
|
|
},
|
|
{
|
|
"Atlantic Standard Time", 960, true, "Atlantic Standard Time",
|
|
"Atlantic Standard Time", "Atlantic Standard 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",
|
|
(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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Pacific SA Standard Time", 960, true, "Pacific SA Standard Time",
|
|
"Pacific SA Standard Time", "Pacific SA Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_21, 6
|
|
},
|
|
{
|
|
"Newfoundland Standard Time", 870, true, "Newfoundland Standard Time",
|
|
"Newfoundland Standard Time", "Newfoundland Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_23, 35
|
|
},
|
|
{
|
|
"Argentina Standard Time", 900, true, "Argentina Standard Time",
|
|
"Argentina Standard Time", "Argentina Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Greenland Standard Time", 900, true, "Greenland Standard Time",
|
|
"Greenland Standard Time", "Greenland Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_26, 14
|
|
},
|
|
{
|
|
"Montevideo Standard Time", 900, true, "Montevideo Standard Time",
|
|
"Montevideo Standard Time", "Montevideo Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_27, 2
|
|
},
|
|
{
|
|
"Bahia Standard Time", 900, true, "Bahia Standard Time",
|
|
"Bahia Standard Time", "Bahia Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_28, 30
|
|
},
|
|
{
|
|
"UTC-02", 840, false, "UTC-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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_30, 1
|
|
},
|
|
{
|
|
"Azores Standard Time", 780, true, "Azores Standard Time",
|
|
"Azores Standard Time", "Azores Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Morocco Standard Time", 0, true, "Morocco Standard Time",
|
|
"Morocco Standard Time", "Morocco Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_33, 4
|
|
},
|
|
{
|
|
"UTC", 0, false, "UTC",
|
|
"Coordinated Universal Time", "Coordinated Universal Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"GMT Standard Time", 0, true, "GMT Standard Time",
|
|
"GMT Standard Time", "GMT Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_35, 1
|
|
},
|
|
{
|
|
"Greenwich Standard Time", 0, false, "Greenwich Standard Time",
|
|
"Greenwich Standard Time", "Greenwich Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"W. Europe Standard Time", 60, true, "W. Europe Standard Time",
|
|
"W. Europe Standard Time", "W. Europe Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_38, 1
|
|
},
|
|
{
|
|
"Romance Standard Time", 60, true, "Romance Standard Time",
|
|
"Romance Standard Time", "Romance Standard 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",
|
|
(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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Namibia Standard Time", 60, true, "Namibia Standard Time",
|
|
"Namibia Standard Time", "Namibia Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_42, 2
|
|
},
|
|
{
|
|
"Jordan Standard Time", 120, true, "Jordan Standard Time",
|
|
"Jordan Standard Time", "Jordan Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_43, 2
|
|
},
|
|
{
|
|
"GTB Standard Time", 120, true, "GTB Standard Time",
|
|
"GTB Standard Time", "GTB Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_45, 13
|
|
},
|
|
{
|
|
"Egypt Standard Time", 120, true, "Egypt Standard Time",
|
|
"Egypt Standard Time", "Egypt Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_46, 6
|
|
},
|
|
{
|
|
"Syria Standard Time", 120, true, "Syria Standard Time",
|
|
"Syria Standard Time", "Syria Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"FLE Standard Time", 120, true, "FLE Standard Time",
|
|
"FLE Standard Time", "FLE Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_49, 1
|
|
},
|
|
{
|
|
"Turkey Standard Time", 120, true, "Turkey Standard Time",
|
|
"Turkey Standard Time", "Turkey Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_50, 3
|
|
},
|
|
{
|
|
"Israel Standard Time", 120, true, "Israel Standard Time",
|
|
"Jerusalem Standard Time", "Jerusalem Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_52, 1
|
|
},
|
|
{
|
|
"Arabic Standard Time", 180, true, "Arabic Standard Time",
|
|
"Arabic Standard Time", "Arabic Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_53, 2
|
|
},
|
|
{
|
|
"Kaliningrad Standard Time", 180, true, "Kaliningrad Standard Time",
|
|
"Kaliningrad Standard Time", "Kaliningrad Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_54, 1
|
|
},
|
|
{
|
|
"Arab Standard Time", 180, false, "Arab Standard Time",
|
|
"Arab Standard Time", "Arab Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"E. Africa Standard Time", 180, false, "E. Africa Standard Time",
|
|
"E. Africa Standard Time", "E. Africa Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Iran Standard Time", 210, true, "Iran Standard Time",
|
|
"Iran Standard Time", "Iran Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_57, 3
|
|
},
|
|
{
|
|
"Arabian Standard Time", 240, false, "Arabian Standard Time",
|
|
"Arabian Standard Time", "Arabian Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Azerbaijan Standard Time", 240, true, "Azerbaijan Standard Time",
|
|
"Azerbaijan Standard Time", "Azerbaijan Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_59, 1
|
|
},
|
|
{
|
|
"Russian Standard Time", 240, true, "Russian Standard Time",
|
|
"Russian Standard Time", "Russian Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_60, 1
|
|
},
|
|
{
|
|
"Mauritius Standard Time", 240, true, "Mauritius Standard Time",
|
|
"Mauritius Standard Time", "Mauritius Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_61, 2
|
|
},
|
|
{
|
|
"Georgian Standard Time", 240, false, "Georgian Standard Time",
|
|
"Georgian Standard Time", "Georgian Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Caucasus Standard Time", 240, true, "Caucasus Standard Time",
|
|
"Caucasus Standard Time", "Caucasus Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_63, 1
|
|
},
|
|
{
|
|
"Afghanistan Standard Time", 270, false, "Afghanistan Standard Time",
|
|
"Afghanistan Standard Time", "Afghanistan Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Pakistan Standard Time", 300, true, "Pakistan Standard Time",
|
|
"Pakistan Standard Time", "Pakistan Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"India Standard Time", 330, false, "India Standard Time",
|
|
"India Standard Time", "India Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Sri Lanka Standard Time", 330, false, "Sri Lanka Standard Time",
|
|
"Sri Lanka Standard Time", "Sri Lanka Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Nepal Standard Time", 345, false, "Nepal Standard Time",
|
|
"Nepal Standard Time", "Nepal Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Central Asia Standard Time", 360, false, "Central Asia Standard Time",
|
|
"Central Asia Standard Time", "Central Asia Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Bangladesh Standard Time", 360, true, "Bangladesh Standard Time",
|
|
"Bangladesh Standard Time", "Bangladesh Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_71, 1
|
|
},
|
|
{
|
|
"Ekaterinburg Standard Time", 360, true, "Ekaterinburg Standard Time",
|
|
"Ekaterinburg Standard Time", "Ekaterinburg Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_72, 1
|
|
},
|
|
{
|
|
"Myanmar Standard Time", 390, false, "Myanmar Standard Time",
|
|
"Myanmar Standard Time", "Myanmar Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"SE Asia Standard Time", 420, false, "SE Asia Standard Time",
|
|
"SE Asia Standard Time", "SE Asia Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_75, 1
|
|
},
|
|
{
|
|
"China Standard Time", 480, false, "China Standard Time",
|
|
"China Standard Time", "China Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"North Asia Standard Time", 480, true, "North Asia Standard Time",
|
|
"North Asia Standard Time", "North Asia Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_77, 1
|
|
},
|
|
{
|
|
"Singapore Standard Time", 480, false, "Singapore Standard Time",
|
|
"Malay Peninsula Standard Time", "Malay Peninsula Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"W. Australia Standard Time", 480, true, "W. Australia Standard Time",
|
|
"W. Australia Standard Time", "W. Australia Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_79, 4
|
|
},
|
|
{
|
|
"Taipei Standard Time", 480, false, "Taipei Standard Time",
|
|
"Taipei Standard Time", "Taipei Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Ulaanbaatar Standard Time", 480, false, "Ulaanbaatar Standard Time",
|
|
"Ulaanbaatar Standard Time", "Ulaanbaatar Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_82, 1
|
|
},
|
|
{
|
|
"Tokyo Standard Time", 540, false, "Tokyo Standard Time",
|
|
"Tokyo Standard Time", "Tokyo Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Korea Standard Time", 540, false, "Korea Standard Time",
|
|
"Korea Standard Time", "Korea Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Cen. Australia Standard Time", 570, true, "Cen. Australia Standard Time",
|
|
"Cen. Australia Standard Time", "Cen. Australia Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"E. Australia Standard Time", 600, false, "E. Australia Standard Time",
|
|
"E. Australia Standard Time", "E. Australia Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"AUS Eastern Standard Time", 600, true, "AUS Eastern Standard Time",
|
|
"AUS Eastern Standard Time", "AUS Eastern Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Tasmania Standard Time", 600, true, "Tasmania Standard Time",
|
|
"Tasmania Standard Time", "Tasmania Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_90, 2
|
|
},
|
|
{
|
|
"Yakutsk Standard Time", 600, true, "Yakutsk Standard Time",
|
|
"Yakutsk Standard Time", "Yakutsk Standard 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",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Vladivostok Standard Time", 660, true, "Vladivostok Standard Time",
|
|
"Vladivostok Standard Time", "Vladivostok Standard 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",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_94, 3
|
|
},
|
|
{
|
|
"UTC+12", 720, false, "UTC+12",
|
|
"UTC+12", "UTC+12",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Fiji Standard Time", 720, true, "Fiji Standard Time",
|
|
"Fiji Standard Time", "Fiji Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_96, 5
|
|
},
|
|
{
|
|
"Magadan Standard Time", 720, true, "Magadan Standard Time",
|
|
"Magadan Standard Time", "Magadan Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_97, 1
|
|
},
|
|
{
|
|
"Kamchatka Standard Time", 720, true, "Kamchatka Standard Time",
|
|
"Kamchatka Standard Time", "Kamchatka Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_98, 1
|
|
},
|
|
{
|
|
"Tonga Standard Time", 780, false, "Tonga Standard Time",
|
|
"Tonga Standard Time", "Tonga Standard Time",
|
|
NULL, 0
|
|
},
|
|
{
|
|
"Samoa Standard Time", 780, true, "Samoa Standard Time",
|
|
"Samoa Standard Time", "Samoa Standard Time",
|
|
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_100, 2
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Read SYSTEM_TIME structure (TS_SYSTEMTIME).\n
|
|
* @msdn{cc240478}
|
|
* @param s stream
|
|
* @param system_time system time structure
|
|
*/
|
|
|
|
void rdp_read_system_time(STREAM* s, SYSTEM_TIME* system_time)
|
|
{
|
|
stream_read_uint16(s, system_time->wYear); /* wYear, must be set to 0 */
|
|
stream_read_uint16(s, system_time->wMonth); /* wMonth */
|
|
stream_read_uint16(s, system_time->wDayOfWeek); /* wDayOfWeek */
|
|
stream_read_uint16(s, system_time->wDay); /* wDay */
|
|
stream_read_uint16(s, system_time->wHour); /* wHour */
|
|
stream_read_uint16(s, system_time->wMinute); /* wMinute */
|
|
stream_read_uint16(s, system_time->wSecond); /* wSecond */
|
|
stream_read_uint16(s, system_time->wMilliseconds); /* wMilliseconds */
|
|
}
|
|
|
|
/**
|
|
* Write SYSTEM_TIME structure (TS_SYSTEMTIME).\n
|
|
* @msdn{cc240478}
|
|
* @param s stream
|
|
* @param system_time system time structure
|
|
*/
|
|
|
|
void rdp_write_system_time(STREAM* s, SYSTEM_TIME* system_time)
|
|
{
|
|
stream_write_uint16(s, system_time->wYear); /* wYear, must be set to 0 */
|
|
stream_write_uint16(s, system_time->wMonth); /* wMonth */
|
|
stream_write_uint16(s, system_time->wDayOfWeek); /* wDayOfWeek */
|
|
stream_write_uint16(s, system_time->wDay); /* wDay */
|
|
stream_write_uint16(s, system_time->wHour); /* wHour */
|
|
stream_write_uint16(s, system_time->wMinute); /* wMinute */
|
|
stream_write_uint16(s, system_time->wSecond); /* wSecond */
|
|
stream_write_uint16(s, system_time->wMilliseconds); /* wMilliseconds */
|
|
}
|
|
|
|
char* rdp_get_unix_timezone_identifier()
|
|
{
|
|
FILE* fp;
|
|
char* tz_env;
|
|
size_t length;
|
|
char* tzid = NULL;
|
|
|
|
tz_env = getenv("TZ");
|
|
|
|
if (tz_env != NULL)
|
|
{
|
|
tzid = xstrdup(tz_env);
|
|
return tzid;
|
|
}
|
|
|
|
fp = fopen("/etc/timezone", "r");
|
|
|
|
if (fp != NULL)
|
|
{
|
|
fseek(fp, 0, SEEK_END);
|
|
length = ftell(fp);
|
|
fseek(fp, 0, SEEK_SET);
|
|
|
|
if (length < 2)
|
|
return NULL;
|
|
|
|
tzid = (char*) xmalloc(length + 1);
|
|
fread(tzid, length, 1, fp);
|
|
tzid[length] = '\0';
|
|
|
|
if (tzid[length - 1] == '\n')
|
|
tzid[length - 1] = '\0';
|
|
}
|
|
|
|
return tzid;
|
|
}
|
|
|
|
/**
|
|
* Get client time zone information.\n
|
|
* @param s stream
|
|
* @param settings settings
|
|
*/
|
|
|
|
void rdp_get_client_time_zone(STREAM* s, rdpSettings* settings)
|
|
{
|
|
time_t t;
|
|
char* tzid;
|
|
struct tm* local_time;
|
|
TIME_ZONE_INFO* clientTimeZone;
|
|
|
|
time(&t);
|
|
local_time = localtime(&t);
|
|
clientTimeZone = settings->client_time_zone;
|
|
|
|
#ifdef HAVE_TM_GMTOFF
|
|
if (local_time->tm_gmtoff >= 0)
|
|
clientTimeZone->bias = (uint32) (local_time->tm_gmtoff / 60);
|
|
else
|
|
clientTimeZone->bias = (uint32) ((-1 * local_time->tm_gmtoff) / 60 + 720);
|
|
#elif sun
|
|
if (local_time->tm_isdst > 0)
|
|
clientTimeZone->bias = (uint32) (altzone / 3600);
|
|
else
|
|
clientTimeZone->bias = (uint32) (timezone / 3600);
|
|
#else
|
|
clientTimeZone->bias = 0;
|
|
#endif
|
|
|
|
if (local_time->tm_isdst > 0)
|
|
{
|
|
clientTimeZone->standardBias = clientTimeZone->bias - 60;
|
|
clientTimeZone->daylightBias = clientTimeZone->bias;
|
|
}
|
|
else
|
|
{
|
|
clientTimeZone->standardBias = clientTimeZone->bias;
|
|
clientTimeZone->daylightBias = clientTimeZone->bias + 60;
|
|
}
|
|
|
|
tzid = rdp_get_unix_timezone_identifier();
|
|
|
|
strftime(clientTimeZone->standardName, 32, "%Z, Standard Time", local_time);
|
|
clientTimeZone->standardName[31] = 0;
|
|
strftime(clientTimeZone->daylightName, 32, "%Z, Summer Time", local_time);
|
|
clientTimeZone->daylightName[31] = 0;
|
|
}
|
|
|
|
/**
|
|
* Read client time zone information (TS_TIME_ZONE_INFORMATION).\n
|
|
* @msdn{cc240477}
|
|
* @param s stream
|
|
* @param settings settings
|
|
*/
|
|
|
|
boolean rdp_read_client_time_zone(STREAM* s, rdpSettings* settings)
|
|
{
|
|
char* str;
|
|
TIME_ZONE_INFO* clientTimeZone;
|
|
|
|
if (stream_get_left(s) < 172)
|
|
return false;
|
|
|
|
clientTimeZone = settings->client_time_zone;
|
|
|
|
stream_read_uint32(s, clientTimeZone->bias); /* Bias */
|
|
|
|
/* standardName (64 bytes) */
|
|
str = freerdp_uniconv_in(settings->uniconv, stream_get_tail(s), 64);
|
|
stream_seek(s, 64);
|
|
strncpy(clientTimeZone->standardName, str, sizeof(clientTimeZone->standardName));
|
|
xfree(str);
|
|
|
|
rdp_read_system_time(s, &clientTimeZone->standardDate); /* StandardDate */
|
|
stream_read_uint32(s, clientTimeZone->standardBias); /* StandardBias */
|
|
|
|
/* daylightName (64 bytes) */
|
|
str = freerdp_uniconv_in(settings->uniconv, stream_get_tail(s), 64);
|
|
stream_seek(s, 64);
|
|
strncpy(clientTimeZone->daylightName, str, sizeof(clientTimeZone->daylightName));
|
|
xfree(str);
|
|
|
|
rdp_read_system_time(s, &clientTimeZone->daylightDate); /* DaylightDate */
|
|
stream_read_uint32(s, clientTimeZone->daylightBias); /* DaylightBias */
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Write client time zone information (TS_TIME_ZONE_INFORMATION).\n
|
|
* @msdn{cc240477}
|
|
* @param s stream
|
|
* @param settings settings
|
|
*/
|
|
|
|
void rdp_write_client_time_zone(STREAM* s, rdpSettings* settings)
|
|
{
|
|
size_t length;
|
|
uint8* standardName;
|
|
uint8* daylightName;
|
|
size_t standardNameLength;
|
|
size_t daylightNameLength;
|
|
TIME_ZONE_INFO* clientTimeZone;
|
|
|
|
rdp_get_client_time_zone(s, settings);
|
|
clientTimeZone = settings->client_time_zone;
|
|
|
|
/*
|
|
* temporary fix: to be valid the time zone names need to match
|
|
* the data that can be found at the following registry location:
|
|
* HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
|
|
*
|
|
* We should extract the data out of the registry and hardcode it
|
|
* within FreeRDP. We should then be able to figure out the proper
|
|
* names to use from the standardBias and daylightBias numerical
|
|
* values which we detect.
|
|
*/
|
|
sprintf(clientTimeZone->standardName, "%s", "GMT Standard Time");
|
|
sprintf(clientTimeZone->daylightName, "%s", "GMT Daylight Time");
|
|
|
|
standardName = (uint8*) freerdp_uniconv_out(settings->uniconv, clientTimeZone->standardName, &length);
|
|
standardNameLength = length;
|
|
|
|
daylightName = (uint8*) freerdp_uniconv_out(settings->uniconv, clientTimeZone->daylightName, &length);
|
|
daylightNameLength = length;
|
|
|
|
if (standardNameLength > 62)
|
|
standardNameLength = 62;
|
|
|
|
if (daylightNameLength > 62)
|
|
daylightNameLength = 62;
|
|
|
|
stream_write_uint32(s, clientTimeZone->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 */
|
|
|
|
/* 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 */
|
|
|
|
xfree(standardName);
|
|
xfree(daylightName);
|
|
}
|