diff --git a/NEWS b/NEWS
index 5d9c8d240eadd..97b7205430c8f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,85 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-?? ??? ????, PHP 8.3.1
+18 Jan 2024, PHP 8.3.2
+
+- Core:
+ . Fixed bug GH-12953 (false positive SSA integrity verification failed when
+ loading composer classmaps with more than 11k elements). (nielsdos)
+ . Fixed bug GH-12999 (zend_strnlen build when strnlen is unsupported).
+ (rainerjung)
+ . Fixed bug GH-12966 (missing cross-compiling 3rd argument so Autoconf
+ doesn't emit warnings). (Peter Kokot)
+ . Fixed bug GH-12854 (8.3 - as final trait-used method does not correctly
+ report visibility in Reflection). (nielsdos)
+
+- Cli:
+ . Fix incorrect timeout in built-in web server when using router script and
+ max_input_time. (ilutov)
+
+- DOM:
+ . Fixed bug GH-12870 (Creating an xmlns attribute results in a DOMException).
+ (nielsdos)
+ . Fix crash when toggleAttribute() is used without a document. (nielsdos)
+ . Fix crash in adoptNode with attribute references. (nielsdos)
+ . Fixed bug GH-13012 (DOMNode::isEqualNode() is incorrect when attribute
+ order is different). (nielsdos)
+
+- FFI:
+ . Fixed bug GH-9698 (stream_wrapper_register crashes with FFI\CData).
+ (Jakub Zelenka)
+ . Fixed bug GH-12905 (FFI::new interacts badly with observers). (nielsdos)
+
+- Intl:
+ . Fixed GH-12943 (IntlDateFormatter::__construct accepts 'C' as valid locale).
+ (David Carlier)
+
+- Hash:
+ . Fixed bug GH-12936 (hash() function hangs endlessly if using sha512 on
+ strings >= 4GiB). (nielsdos)
+
+- ODBC:
+ . Fix crash on Apache shutdown with persistent connections. (nielsdos)
+
+- Opcache:
+ . Fixed oss-fuzz #64727 (JIT undefined array key warning may overwrite DIM
+ with NULL when DIM is the same var as result). (ilutov)
+ . Added workaround for SELinux mprotect execheap issue.
+ See https://bugzilla.kernel.org/show_bug.cgi?id=218258. (ilutov)
+
+- OpenSSL:
+ . Fixed bug GH-12987 (openssl_csr_sign might leak new cert on error).
+ (Jakub Zelenka)
+
+- PDO:
+ . Fix GH-12969 (Fixed PDO::getAttribute() to get PDO::ATTR_STRINGIFY_FETCHES).
+ (SakiTakamachi)
+
+- PDO_ODBC:
+ . Fixed bug GH-12767 (Unable to turn on autocommit mode with setAttribute()).
+ (SakiTakamachi)
+
+- PGSQL:
+ . Fixed auto_reset_persistent handling and allow_persistent type. (David Carlier)
+ . Fixed bug GH-12974 (Apache crashes on shutdown when using pg_pconnect()).
+ (nielsdos)
+
+- Phar:
+ . Fixed bug #77432 (Segmentation fault on including phar file). (nielsdos)
+
+- PHPDBG:
+ . Fixed bug GH-12962 (Double free of init_file in phpdbg_prompt.c). (nielsdos)
+
+- SimpleXML:
+ . Fix getting the address of an uninitialized property of a SimpleXMLElement
+ resulting in a crash. (nielsdos)
+ . Fixed bug GH-12929 (SimpleXMLElement with stream_wrapper_register can
+ segfault). (nielsdos)
+
+- Tidy:
+ . Fixed bug GH-12980 (tidynode.props.attribute is missing
+ "Boolean Attributes" and empty attributes). (nielsdos)
+
+07 Dec 2023, PHP 8.3.1RC1
- Core:
. Fixed bug GH-12758 / GH-12768 (Invalid opline in OOM handlers within
diff --git a/Zend/Optimizer/ssa_integrity.c b/Zend/Optimizer/ssa_integrity.c
index d92fc2e18d1fc..b525f8d5ee226 100644
--- a/Zend/Optimizer/ssa_integrity.c
+++ b/Zend/Optimizer/ssa_integrity.c
@@ -122,7 +122,7 @@ void ssa_verify_integrity(zend_op_array *op_array, zend_ssa *ssa, const char *ex
/* Vars */
for (i = 0; i < ssa->vars_count; i++) {
zend_ssa_var *var = &ssa->vars[i];
- int use, c;
+ int use;
uint32_t type = ssa->var_info[i].type;
if (var->definition < 0 && !var->definition_phi && i > op_array->last_var) {
@@ -148,23 +148,45 @@ void ssa_verify_integrity(zend_op_array *op_array, zend_ssa *ssa, const char *ex
}
}
- c = 0;
- FOREACH_USE(var, use) {
- if (++c > 10000) {
+ /* Floyd's cycle detection algorithm, applied for use chain. */
+ use = var->use_chain;
+ int second_use = use;
+ while (use >= 0 && second_use >= 0) {
+ use = zend_ssa_next_use(ssa->ops, var - ssa->vars, use);
+ second_use = zend_ssa_next_use(ssa->ops, var - ssa->vars, second_use);
+ if (second_use < 0) {
+ break;
+ }
+ second_use = zend_ssa_next_use(ssa->ops, var - ssa->vars, second_use);
+ if (use == second_use) {
FAIL("cycle in uses of " VARFMT "\n", VAR(i));
goto finish;
}
+ }
+
+ FOREACH_USE(var, use) {
if (!is_used_by_op(ssa, use, i)) {
fprintf(stderr, "var " VARFMT " not in uses of op %d\n", VAR(i), use);
}
} FOREACH_USE_END();
- c = 0;
- FOREACH_PHI_USE(var, phi) {
- if (++c > 10000) {
+ /* Floyd's cycle detection algorithm, applied for phi nodes. */
+ phi = var->phi_use_chain;
+ zend_ssa_phi *second_phi = phi;
+ while (phi && second_phi) {
+ phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, phi);
+ second_phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, second_phi);
+ if (!second_phi) {
+ break;
+ }
+ second_phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, second_phi);
+ if (phi == second_phi) {
FAIL("cycle in phi uses of " VARFMT "\n", VAR(i));
goto finish;
}
+ }
+
+ FOREACH_PHI_USE(var, phi) {
if (!is_in_phi_sources(ssa, phi, i)) {
FAIL("var " VARFMT " not in phi sources of %d\n", VAR(i), phi->ssa_var);
}
diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c
index 6ca56d90276b2..f60f1f09a4b49 100644
--- a/Zend/Optimizer/zend_inference.c
+++ b/Zend/Optimizer/zend_inference.c
@@ -2828,8 +2828,15 @@ static zend_always_inline zend_result _zend_update_type_info(
/* DOUBLE may be auto-converted to LONG */
tmp |= MAY_BE_LONG;
tmp &= ~MAY_BE_DOUBLE;
+ } else if ((t1 & (MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING)) == MAY_BE_STRING
+ && (tmp & (MAY_BE_LONG|MAY_BE_DOUBLE))) {
+ /* LONG/DOUBLE may be auto-converted to STRING */
+ tmp |= MAY_BE_STRING;
+ tmp &= ~(MAY_BE_LONG|MAY_BE_DOUBLE);
}
tmp &= t1;
+ } else {
+ tmp |= MAY_BE_LONG | MAY_BE_STRING;
}
} else if (opline->opcode == ZEND_ASSIGN_STATIC_PROP_OP) {
/* The return value must also satisfy the property type */
@@ -2840,8 +2847,15 @@ static zend_always_inline zend_result _zend_update_type_info(
/* DOUBLE may be auto-converted to LONG */
tmp |= MAY_BE_LONG;
tmp &= ~MAY_BE_DOUBLE;
+ } else if ((t1 & (MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING)) == MAY_BE_STRING
+ && (tmp & (MAY_BE_LONG|MAY_BE_DOUBLE))) {
+ /* LONG/DOUBLE may be auto-converted to STRING */
+ tmp |= MAY_BE_STRING;
+ tmp &= ~(MAY_BE_LONG|MAY_BE_DOUBLE);
}
tmp &= t1;
+ } else {
+ tmp |= MAY_BE_LONG | MAY_BE_STRING;
}
} else {
if (tmp & MAY_BE_REF) {
diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c
index 463bbbfa84b45..cf1c98c64bb59 100644
--- a/Zend/Optimizer/zend_optimizer.c
+++ b/Zend/Optimizer/zend_optimizer.c
@@ -799,7 +799,9 @@ zend_class_entry *zend_optimizer_get_class_entry(
}
ce = zend_hash_find_ptr(CG(class_table), lcname);
- if (ce && ce->type == ZEND_INTERNAL_CLASS) {
+ if (ce
+ && (ce->type == ZEND_INTERNAL_CLASS
+ || (op_array && ce->info.user.filename == op_array->filename))) {
return ce;
}
diff --git a/Zend/tests/stack_limit/stack_limit_001.phpt b/Zend/tests/stack_limit/stack_limit_001.phpt
index ca185635c39c8..2de5d28134ce7 100644
--- a/Zend/tests/stack_limit/stack_limit_001.phpt
+++ b/Zend/tests/stack_limit/stack_limit_001.phpt
@@ -76,7 +76,7 @@ array(4) {
["EG(stack_limit)"]=>
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
diff --git a/Zend/tests/stack_limit/stack_limit_002.phpt b/Zend/tests/stack_limit/stack_limit_002.phpt
index 309de9bf6a2a3..53fc707ca6a5e 100644
--- a/Zend/tests/stack_limit/stack_limit_002.phpt
+++ b/Zend/tests/stack_limit/stack_limit_002.phpt
@@ -79,7 +79,7 @@ array(4) {
["EG(stack_limit)"]=>
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
diff --git a/Zend/tests/stack_limit/stack_limit_003.phpt b/Zend/tests/stack_limit/stack_limit_003.phpt
index 9eb94a971636f..c3ea35bf84950 100644
--- a/Zend/tests/stack_limit/stack_limit_003.phpt
+++ b/Zend/tests/stack_limit/stack_limit_003.phpt
@@ -7,7 +7,7 @@ if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_
--EXTENSIONS--
zend_test
--INI--
-zend.max_allowed_stack_size=128K
+zend.max_allowed_stack_size=256K
--FILE--
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
diff --git a/Zend/tests/stack_limit/stack_limit_005.phpt b/Zend/tests/stack_limit/stack_limit_005.phpt
index 3fcd5d5728276..4f24ff74b44ac 100644
--- a/Zend/tests/stack_limit/stack_limit_005.phpt
+++ b/Zend/tests/stack_limit/stack_limit_005.phpt
@@ -65,4 +65,4 @@ $test
;
--EXPECTF--
-Fatal error: Maximum call stack size of %d bytes reached during compilation. Try splitting expression in %s on line %d
+Fatal error: Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached during compilation. Try splitting expression in %s on line %d
diff --git a/Zend/tests/stack_limit/stack_limit_006.phpt b/Zend/tests/stack_limit/stack_limit_006.phpt
index 0b51fabb4babd..639b2f8e66ced 100644
--- a/Zend/tests/stack_limit/stack_limit_006.phpt
+++ b/Zend/tests/stack_limit/stack_limit_006.phpt
@@ -320,6 +320,6 @@ array(4) {
["EG(stack_limit)"]=>
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
diff --git a/Zend/tests/stack_limit/stack_limit_007.phpt b/Zend/tests/stack_limit/stack_limit_007.phpt
index 411af1d2c6894..55b11f36fe341 100644
--- a/Zend/tests/stack_limit/stack_limit_007.phpt
+++ b/Zend/tests/stack_limit/stack_limit_007.phpt
@@ -7,7 +7,7 @@ if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_
--EXTENSIONS--
zend_test
--INI--
-zend.max_allowed_stack_size=128K
+zend.max_allowed_stack_size=256K
--FILE--
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
Try executed: 1
diff --git a/Zend/tests/stack_limit/stack_limit_008.phpt b/Zend/tests/stack_limit/stack_limit_008.phpt
index 56ff6f18bdce6..43ce1dcf2886f 100644
--- a/Zend/tests/stack_limit/stack_limit_008.phpt
+++ b/Zend/tests/stack_limit/stack_limit_008.phpt
@@ -7,7 +7,7 @@ if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_
--EXTENSIONS--
zend_test
--INI--
-zend.max_allowed_stack_size=128K
+zend.max_allowed_stack_size=256K
--FILE--
string(%d) "0x%x"
}
-Maximum call stack size of %d bytes reached. Infinite recursion?
-Previous: Maximum call stack size of %d bytes reached. Infinite recursion?
+Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
+Previous: Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
diff --git a/Zend/tests/stack_limit/stack_limit_012.phpt b/Zend/tests/stack_limit/stack_limit_012.phpt
index ed5189f37cad3..9ba522b8c449d 100644
--- a/Zend/tests/stack_limit/stack_limit_012.phpt
+++ b/Zend/tests/stack_limit/stack_limit_012.phpt
@@ -7,7 +7,7 @@ if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_
--EXTENSIONS--
zend_test
--INI--
-zend.max_allowed_stack_size=128K
+zend.max_allowed_stack_size=256K
--FILE--
isFinal());
+ var_dump($rm->isPublic());
+ var_dump($rm->isProtected());
+ var_dump($rm->isPrivate());
+}
+
+?>
+--EXPECTF--
+Warning: Private methods cannot be final as they are never overridden by other classes in %s on line %d
+
+Warning: Private methods cannot be final as they are never overridden by other classes in %s on line %d
+--- Method: pub ---
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+--- Method: prot ---
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+--- Method: priv ---
+bool(true)
+bool(false)
+bool(false)
+bool(true)
+--- Method: final1 ---
+bool(true)
+bool(false)
+bool(false)
+bool(true)
+--- Method: final2 ---
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+--- Method: final3 ---
+bool(true)
+bool(true)
+bool(false)
+bool(false)
diff --git a/Zend/zend.h b/Zend/zend.h
index 7fd41c8dee16c..3b6d2a92c2d2e 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -20,7 +20,7 @@
#ifndef ZEND_H
#define ZEND_H
-#define ZEND_VERSION "4.3.1-dev"
+#define ZEND_VERSION "4.3.2"
#define ZEND_ENGINE_3
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 87bfd0b1e94e5..1078dd1d20a2a 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -103,7 +103,7 @@ static void zend_compile_assign(znode *result, zend_ast *ast);
zend_never_inline static void zend_stack_limit_error(void)
{
zend_error_noreturn(E_COMPILE_ERROR,
- "Maximum call stack size of %zu bytes reached during compilation. Try splitting expression",
+ "Maximum call stack size of %zu bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached during compilation. Try splitting expression",
(size_t) ((uintptr_t) EG(stack_base) - (uintptr_t) EG(stack_limit)));
}
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 2544351824b86..436154a99afb0 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2311,7 +2311,7 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_use_new_element_for_s
#ifdef ZEND_CHECK_STACK_LIMIT
static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_call_stack_size_error(void)
{
- zend_throw_error(NULL, "Maximum call stack size of %zu bytes reached. Infinite recursion?",
+ zend_throw_error(NULL, "Maximum call stack size of %zu bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?",
(size_t) ((uintptr_t) EG(stack_base) - (uintptr_t) EG(stack_limit)));
}
#endif /* ZEND_CHECK_STACK_LIMIT */
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index d1c66b310a6b4..6362090ada908 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -1949,6 +1949,10 @@ static void zend_add_trait_method(zend_class_entry *ce, zend_string *name, zend_
zend_function *new_fn;
bool check_inheritance = false;
+ if ((fn->common.fn_flags & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) {
+ zend_error(E_COMPILE_WARNING, "Private methods cannot be final as they are never overridden by other classes");
+ }
+
if ((existing_fn = zend_hash_find_ptr(&ce->function_table, key)) != NULL) {
/* if it is the same function with the same visibility and has not been assigned a class scope yet, regardless
* of where it is coming from there is no conflict and we do not need to add it again */
@@ -2048,10 +2052,10 @@ static void zend_traits_copy_functions(zend_string *fnname, zend_function *fn, z
&& zend_string_equals_ci(alias->trait_method.method_name, fnname)
) {
fn_copy = *fn;
-
- /* if it is 0, no modifiers have been changed */
- if (alias->modifiers) {
+ if (alias->modifiers & ZEND_ACC_PPP_MASK) {
fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags & ~ZEND_ACC_PPP_MASK);
+ } else {
+ fn_copy.common.fn_flags = alias->modifiers | fn->common.fn_flags;
}
lcname = zend_string_tolower(alias->alias);
@@ -2079,7 +2083,11 @@ static void zend_traits_copy_functions(zend_string *fnname, zend_function *fn, z
&& fn->common.scope == aliases[i]
&& zend_string_equals_ci(alias->trait_method.method_name, fnname)
) {
- fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags & ~ZEND_ACC_PPP_MASK);
+ if (alias->modifiers & ZEND_ACC_PPP_MASK) {
+ fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags & ~ZEND_ACC_PPP_MASK);
+ } else {
+ fn_copy.common.fn_flags = alias->modifiers | fn->common.fn_flags;
+ }
}
alias_ptr++;
alias = *alias_ptr;
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index c00f0eafc7e2e..93195a1be4c54 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -878,12 +878,12 @@ static bool keeps_op1_alive(zend_op *opline) {
|| opline->opcode == ZEND_SWITCH_STRING
|| opline->opcode == ZEND_MATCH
|| opline->opcode == ZEND_FETCH_LIST_R
+ || opline->opcode == ZEND_FETCH_LIST_W
|| opline->opcode == ZEND_COPY_TMP) {
return 1;
}
ZEND_ASSERT(opline->opcode != ZEND_FE_FETCH_R
&& opline->opcode != ZEND_FE_FETCH_RW
- && opline->opcode != ZEND_FETCH_LIST_W
&& opline->opcode != ZEND_VERIFY_RETURN_TYPE
&& opline->opcode != ZEND_BIND_LEXICAL
&& opline->opcode != ZEND_ROPE_ADD);
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index 20eb7245afc6f..4f4a14b93056e 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -269,7 +269,7 @@ static zend_always_inline size_t zend_strnlen(const char* s, size_t maxlen)
#if defined(HAVE_STRNLEN)
return strnlen(s, maxlen);
#else
- const char *p = memchr(s, '\0', maxlen);
+ const char *p = (const char *)memchr(s, '\0', maxlen);
return p ? p-s : maxlen;
#endif
}
diff --git a/configure.ac b/configure.ac
index 749d4b53d8bd8..c6411f2ff11df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice.
dnl ----------------------------------------------------------------------------
AC_PREREQ([2.68])
-AC_INIT([PHP],[8.3.1-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net])
+AC_INIT([PHP],[8.3.2],[https://github.com/php/php-src/issues],[php],[https://www.php.net])
AC_CONFIG_SRCDIR([main/php_version.h])
AC_CONFIG_AUX_DIR([build])
AC_PRESERVE_HELP_ORDER
@@ -1625,15 +1625,16 @@ if test "$PHP_UNDEFINED_SANITIZER" = "yes"; then
dnl cast to void*. In that case, set -fno-sanitize=function.
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fno-sanitize-recover=undefined"
+ AC_CACHE_CHECK([whether to add -fno-sanitize=function],[php_cv_ubsan_no_function],[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
void foo(char *string) {}
int main(void) {
void (*f)(void *) = (void (*)(void *))foo;
f("foo");
}
- ]])],,[ubsan_needs_no_function=yes],)
+ ]])],[php_cv_ubsan_no_function=no],[php_cv_ubsan_no_function=yes],[php_cv_ubsan_no_function=no])])
CFLAGS="$OLD_CFLAGS"
- if test "$ubsan_needs_no_function" = yes; then
+ if test "$php_cv_ubsan_no_function" = yes; then
CFLAGS="$CFLAGS -fno-sanitize=function"
CXXFLAGS="$CFLAGS -fno-sanitize=function"
fi
diff --git a/ext/curl/tests/curl_setopt_ssl.phpt b/ext/curl/tests/curl_setopt_ssl.phpt
index 52ff95ab34bcf..2e28466a84057 100644
--- a/ext/curl/tests/curl_setopt_ssl.phpt
+++ b/ext/curl/tests/curl_setopt_ssl.phpt
@@ -8,6 +8,7 @@ if (!function_exists("proc_open")) die("skip no proc_open");
exec('openssl version', $out, $code);
if ($code > 0) die("skip couldn't locate openssl binary");
if (PHP_OS_FAMILY === 'Windows') die('skip not for Windows');
+if (PHP_OS_FAMILY === 'Darwin') die('skip Fails intermittently on macOS');
$curl_version = curl_version();
if ($curl_version['version_number'] < 0x074700) {
die("skip: blob options not supported for curl < 7.71.0");
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index 94397084d7bb2..366c85c7a7786 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -114,498 +114,498 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[597] = {
{ (char*) "America/Detroit" , 0x00C3B0 },
{ (char*) "America/Dominica" , 0x00C758 },
{ (char*) "America/Edmonton" , 0x00C7E6 },
- { (char*) "America/Eirunepe" , 0x00CBE1 },
- { (char*) "America/El_Salvador" , 0x00CDB0 },
- { (char*) "America/Ensenada" , 0x00CE6C },
- { (char*) "America/Fort_Nelson" , 0x00D279 },
- { (char*) "America/Fort_Wayne" , 0x00D841 },
- { (char*) "America/Fortaleza" , 0x00DA60 },
- { (char*) "America/Glace_Bay" , 0x00DC76 },
- { (char*) "America/Godthab" , 0x00E00D },
- { (char*) "America/Goose_Bay" , 0x00E3DE },
- { (char*) "America/Grand_Turk" , 0x00EA36 },
- { (char*) "America/Grenada" , 0x00ED97 },
- { (char*) "America/Guadeloupe" , 0x00EE25 },
- { (char*) "America/Guatemala" , 0x00EEB3 },
- { (char*) "America/Guayaquil" , 0x00EF93 },
- { (char*) "America/Guyana" , 0x00F064 },
- { (char*) "America/Halifax" , 0x00F125 },
- { (char*) "America/Havana" , 0x00F7D7 },
- { (char*) "America/Hermosillo" , 0x00FC40 },
- { (char*) "America/Indiana/Indianapolis" , 0x00FD70 },
- { (char*) "America/Indiana/Knox" , 0x00FFA8 },
- { (char*) "America/Indiana/Marengo" , 0x0103C1 },
- { (char*) "America/Indiana/Petersburg" , 0x01061B },
- { (char*) "America/Indiana/Tell_City" , 0x0108E5 },
- { (char*) "America/Indiana/Vevay" , 0x010B0F },
- { (char*) "America/Indiana/Vincennes" , 0x010CA6 },
- { (char*) "America/Indiana/Winamac" , 0x010EFC },
- { (char*) "America/Indianapolis" , 0x011182 },
- { (char*) "America/Inuvik" , 0x0113A1 },
- { (char*) "America/Iqaluit" , 0x0116F2 },
- { (char*) "America/Jamaica" , 0x011A6E },
- { (char*) "America/Jujuy" , 0x011BCD },
- { (char*) "America/Juneau" , 0x011E8B },
- { (char*) "America/Kentucky/Louisville" , 0x012271 },
- { (char*) "America/Kentucky/Monticello" , 0x012775 },
- { (char*) "America/Knox_IN" , 0x012B61 },
- { (char*) "America/Kralendijk" , 0x012F65 },
- { (char*) "America/La_Paz" , 0x013022 },
- { (char*) "America/Lima" , 0x0130D8 },
- { (char*) "America/Los_Angeles" , 0x0131FF },
- { (char*) "America/Louisville" , 0x013720 },
- { (char*) "America/Lower_Princes" , 0x013C06 },
- { (char*) "America/Maceio" , 0x013CC3 },
- { (char*) "America/Managua" , 0x013ED5 },
- { (char*) "America/Manaus" , 0x014008 },
- { (char*) "America/Marigot" , 0x0141BF },
- { (char*) "America/Martinique" , 0x01427C },
- { (char*) "America/Matamoros" , 0x01433A },
- { (char*) "America/Mazatlan" , 0x014527 },
- { (char*) "America/Mendoza" , 0x014833 },
- { (char*) "America/Menominee" , 0x014B03 },
- { (char*) "America/Merida" , 0x014EC3 },
- { (char*) "America/Metlakatla" , 0x01516E },
- { (char*) "America/Mexico_City" , 0x0153E4 },
- { (char*) "America/Miquelon" , 0x015703 },
- { (char*) "America/Moncton" , 0x015935 },
- { (char*) "America/Monterrey" , 0x015F2E },
- { (char*) "America/Montevideo" , 0x0161F4 },
- { (char*) "America/Montreal" , 0x0165C9 },
- { (char*) "America/Montserrat" , 0x016C8A },
- { (char*) "America/Nassau" , 0x016D18 },
- { (char*) "America/New_York" , 0x017112 },
- { (char*) "America/Nipigon" , 0x017802 },
- { (char*) "America/Nome" , 0x017EC3 },
- { (char*) "America/Noronha" , 0x0182AB },
- { (char*) "America/North_Dakota/Beulah" , 0x0184AB },
- { (char*) "America/North_Dakota/Center" , 0x0188DF },
- { (char*) "America/North_Dakota/New_Salem" , 0x018CDE },
- { (char*) "America/Nuuk" , 0x0190E3 },
- { (char*) "America/Ojinaga" , 0x0194C5 },
- { (char*) "America/Panama" , 0x0197B2 },
- { (char*) "America/Pangnirtung" , 0x019853 },
- { (char*) "America/Paramaribo" , 0x019BB6 },
- { (char*) "America/Phoenix" , 0x019C7D },
- { (char*) "America/Port-au-Prince" , 0x019D91 },
- { (char*) "America/Port_of_Spain" , 0x019FD2 },
- { (char*) "America/Porto_Acre" , 0x01A060 },
- { (char*) "America/Porto_Velho" , 0x01A20E },
- { (char*) "America/Puerto_Rico" , 0x01A3AC },
- { (char*) "America/Punta_Arenas" , 0x01A469 },
- { (char*) "America/Rainy_River" , 0x01A94B },
- { (char*) "America/Rankin_Inlet" , 0x01AE65 },
- { (char*) "America/Recife" , 0x01B1AE },
- { (char*) "America/Regina" , 0x01B3A8 },
- { (char*) "America/Resolute" , 0x01B647 },
- { (char*) "America/Rio_Branco" , 0x01B991 },
- { (char*) "America/Rosario" , 0x01BB43 },
- { (char*) "America/Santa_Isabel" , 0x01BE13 },
- { (char*) "America/Santarem" , 0x01C220 },
- { (char*) "America/Santiago" , 0x01C3D0 },
- { (char*) "America/Santo_Domingo" , 0x01C933 },
- { (char*) "America/Sao_Paulo" , 0x01CA7C },
- { (char*) "America/Scoresbysund" , 0x01CE76 },
- { (char*) "America/Shiprock" , 0x01D07E },
- { (char*) "America/Sitka" , 0x01D49C },
- { (char*) "America/St_Barthelemy" , 0x01D877 },
- { (char*) "America/St_Johns" , 0x01D934 },
- { (char*) "America/St_Kitts" , 0x01E0B8 },
- { (char*) "America/St_Lucia" , 0x01E146 },
- { (char*) "America/St_Thomas" , 0x01E1E7 },
- { (char*) "America/St_Vincent" , 0x01E275 },
- { (char*) "America/Swift_Current" , 0x01E316 },
- { (char*) "America/Tegucigalpa" , 0x01E4A4 },
- { (char*) "America/Thule" , 0x01E572 },
- { (char*) "America/Thunder_Bay" , 0x01E753 },
- { (char*) "America/Tijuana" , 0x01EE14 },
- { (char*) "America/Toronto" , 0x01F230 },
- { (char*) "America/Tortola" , 0x01F90E },
- { (char*) "America/Vancouver" , 0x01F99C },
- { (char*) "America/Virgin" , 0x01FEF3 },
- { (char*) "America/Whitehorse" , 0x01FFB0 },
- { (char*) "America/Winnipeg" , 0x0203D3 },
- { (char*) "America/Yakutat" , 0x02090A },
- { (char*) "America/Yellowknife" , 0x020CD8 },
- { (char*) "Antarctica/Casey" , 0x0210AE },
- { (char*) "Antarctica/Davis" , 0x0211B2 },
- { (char*) "Antarctica/DumontDUrville" , 0x021288 },
- { (char*) "Antarctica/Macquarie" , 0x02133C },
- { (char*) "Antarctica/Mawson" , 0x021728 },
- { (char*) "Antarctica/McMurdo" , 0x0217D2 },
- { (char*) "Antarctica/Palmer" , 0x021B04 },
- { (char*) "Antarctica/Rothera" , 0x021E8D },
- { (char*) "Antarctica/South_Pole" , 0x021F24 },
- { (char*) "Antarctica/Syowa" , 0x022343 },
- { (char*) "Antarctica/Troll" , 0x0223D9 },
- { (char*) "Antarctica/Vostok" , 0x02249B },
- { (char*) "Arctic/Longyearbyen" , 0x022532 },
- { (char*) "Asia/Aden" , 0x0227FF },
- { (char*) "Asia/Almaty" , 0x022890 },
- { (char*) "Asia/Amman" , 0x022B0F },
- { (char*) "Asia/Anadyr" , 0x022EBB },
- { (char*) "Asia/Aqtau" , 0x0231C1 },
- { (char*) "Asia/Aqtobe" , 0x023440 },
- { (char*) "Asia/Ashgabat" , 0x0236C0 },
- { (char*) "Asia/Ashkhabad" , 0x023843 },
- { (char*) "Asia/Atyrau" , 0x0239C6 },
- { (char*) "Asia/Baghdad" , 0x023C4F },
- { (char*) "Asia/Bahrain" , 0x023ED1 },
- { (char*) "Asia/Baku" , 0x023F8A },
- { (char*) "Asia/Bangkok" , 0x02427E },
- { (char*) "Asia/Barnaul" , 0x024322 },
- { (char*) "Asia/Beirut" , 0x02462D },
- { (char*) "Asia/Bishkek" , 0x024915 },
- { (char*) "Asia/Brunei" , 0x024B8B },
- { (char*) "Asia/Calcutta" , 0x024C31 },
- { (char*) "Asia/Chita" , 0x024D19 },
- { (char*) "Asia/Choibalsan" , 0x025027 },
- { (char*) "Asia/Chongqing" , 0x0252B0 },
- { (char*) "Asia/Chungking" , 0x025445 },
- { (char*) "Asia/Colombo" , 0x0255DA },
- { (char*) "Asia/Dacca" , 0x0256DD },
- { (char*) "Asia/Damascus" , 0x0257D0 },
- { (char*) "Asia/Dhaka" , 0x025CAE },
- { (char*) "Asia/Dili" , 0x025DA1 },
- { (char*) "Asia/Dubai" , 0x025E57 },
- { (char*) "Asia/Dushanbe" , 0x025EE8 },
- { (char*) "Asia/Famagusta" , 0x026062 },
- { (char*) "Asia/Gaza" , 0x026429 },
- { (char*) "Asia/Harbin" , 0x026E15 },
- { (char*) "Asia/Hebron" , 0x026FAA },
- { (char*) "Asia/Ho_Chi_Minh" , 0x0279A7 },
- { (char*) "Asia/Hong_Kong" , 0x027A9F },
- { (char*) "Asia/Hovd" , 0x027DB2 },
- { (char*) "Asia/Irkutsk" , 0x02803B },
- { (char*) "Asia/Istanbul" , 0x028359 },
- { (char*) "Asia/Jakarta" , 0x028815 },
- { (char*) "Asia/Jayapura" , 0x028926 },
- { (char*) "Asia/Jerusalem" , 0x028A13 },
- { (char*) "Asia/Kabul" , 0x028E51 },
- { (char*) "Asia/Kamchatka" , 0x028EFC },
- { (char*) "Asia/Karachi" , 0x0291F1 },
- { (char*) "Asia/Kashgar" , 0x029307 },
- { (char*) "Asia/Kathmandu" , 0x029398 },
- { (char*) "Asia/Katmandu" , 0x029445 },
- { (char*) "Asia/Khandyga" , 0x0294F2 },
- { (char*) "Asia/Kolkata" , 0x029823 },
- { (char*) "Asia/Krasnoyarsk" , 0x02990B },
- { (char*) "Asia/Kuala_Lumpur" , 0x029C15 },
- { (char*) "Asia/Kuching" , 0x029D35 },
- { (char*) "Asia/Kuwait" , 0x029E8F },
- { (char*) "Asia/Macao" , 0x029F20 },
- { (char*) "Asia/Macau" , 0x02A243 },
- { (char*) "Asia/Magadan" , 0x02A566 },
- { (char*) "Asia/Makassar" , 0x02A871 },
- { (char*) "Asia/Manila" , 0x02A984 },
- { (char*) "Asia/Muscat" , 0x02AA7E },
- { (char*) "Asia/Nicosia" , 0x02AB0F },
- { (char*) "Asia/Novokuznetsk" , 0x02AD7E },
- { (char*) "Asia/Novosibirsk" , 0x02B071 },
- { (char*) "Asia/Omsk" , 0x02B382 },
- { (char*) "Asia/Oral" , 0x02B680 },
- { (char*) "Asia/Phnom_Penh" , 0x02B90C },
- { (char*) "Asia/Pontianak" , 0x02B9E0 },
- { (char*) "Asia/Pyongyang" , 0x02BAF9 },
- { (char*) "Asia/Qatar" , 0x02BBBC },
- { (char*) "Asia/Qostanay" , 0x02BC60 },
- { (char*) "Asia/Qyzylorda" , 0x02BEED },
- { (char*) "Asia/Rangoon" , 0x02C186 },
- { (char*) "Asia/Riyadh" , 0x02C24D },
- { (char*) "Asia/Saigon" , 0x02C2DE },
- { (char*) "Asia/Sakhalin" , 0x02C3D6 },
- { (char*) "Asia/Samarkand" , 0x02C6ED },
- { (char*) "Asia/Seoul" , 0x02C878 },
- { (char*) "Asia/Shanghai" , 0x02CA23 },
- { (char*) "Asia/Singapore" , 0x02CBC4 },
- { (char*) "Asia/Srednekolymsk" , 0x02CCD0 },
- { (char*) "Asia/Taipei" , 0x02CFE0 },
- { (char*) "Asia/Tashkent" , 0x02D1EB },
- { (char*) "Asia/Tbilisi" , 0x02D376 },
- { (char*) "Asia/Tehran" , 0x02D5F7 },
- { (char*) "Asia/Tel_Aviv" , 0x02D92F },
- { (char*) "Asia/Thimbu" , 0x02DD6D },
- { (char*) "Asia/Thimphu" , 0x02DE13 },
- { (char*) "Asia/Tokyo" , 0x02DEB9 },
- { (char*) "Asia/Tomsk" , 0x02DF9A },
- { (char*) "Asia/Ujung_Pandang" , 0x02E2A5 },
- { (char*) "Asia/Ulaanbaatar" , 0x02E36F },
- { (char*) "Asia/Ulan_Bator" , 0x02E5DD },
- { (char*) "Asia/Urumqi" , 0x02E83B },
- { (char*) "Asia/Ust-Nera" , 0x02E8D9 },
- { (char*) "Asia/Vientiane" , 0x02EBFC },
- { (char*) "Asia/Vladivostok" , 0x02ECE2 },
- { (char*) "Asia/Yakutsk" , 0x02EFE7 },
- { (char*) "Asia/Yangon" , 0x02F2EB },
- { (char*) "Asia/Yekaterinburg" , 0x02F3B2 },
- { (char*) "Asia/Yerevan" , 0x02F6C4 },
- { (char*) "Atlantic/Azores" , 0x02F994 },
- { (char*) "Atlantic/Bermuda" , 0x02FF53 },
- { (char*) "Atlantic/Canary" , 0x03035F },
- { (char*) "Atlantic/Cape_Verde" , 0x030557 },
- { (char*) "Atlantic/Faeroe" , 0x030612 },
- { (char*) "Atlantic/Faroe" , 0x0307D7 },
- { (char*) "Atlantic/Jan_Mayen" , 0x03099C },
- { (char*) "Atlantic/Madeira" , 0x030C69 },
- { (char*) "Atlantic/Reykjavik" , 0x031231 },
- { (char*) "Atlantic/South_Georgia" , 0x03152E },
- { (char*) "Atlantic/St_Helena" , 0x0315BE },
- { (char*) "Atlantic/Stanley" , 0x03165F },
- { (char*) "Australia/ACT" , 0x031980 },
- { (char*) "Australia/Adelaide" , 0x031D14 },
- { (char*) "Australia/Brisbane" , 0x0320C8 },
- { (char*) "Australia/Broken_Hill" , 0x03220C },
- { (char*) "Australia/Canberra" , 0x0325E1 },
- { (char*) "Australia/Currie" , 0x032975 },
- { (char*) "Australia/Darwin" , 0x032D6C },
- { (char*) "Australia/Eucla" , 0x032E74 },
- { (char*) "Australia/Hobart" , 0x032FD3 },
- { (char*) "Australia/LHI" , 0x0333D2 },
- { (char*) "Australia/Lindeman" , 0x033692 },
- { (char*) "Australia/Lord_Howe" , 0x033802 },
- { (char*) "Australia/Melbourne" , 0x033AD2 },
- { (char*) "Australia/North" , 0x033E6E },
- { (char*) "Australia/NSW" , 0x033F64 },
- { (char*) "Australia/Perth" , 0x0342F8 },
- { (char*) "Australia/Queensland" , 0x034454 },
- { (char*) "Australia/South" , 0x034581 },
- { (char*) "Australia/Sydney" , 0x034926 },
- { (char*) "Australia/Tasmania" , 0x034CD6 },
- { (char*) "Australia/Victoria" , 0x0350CD },
- { (char*) "Australia/West" , 0x035461 },
- { (char*) "Australia/Yancowinna" , 0x03559F },
- { (char*) "Brazil/Acre" , 0x035958 },
- { (char*) "Brazil/DeNoronha" , 0x035B06 },
- { (char*) "Brazil/East" , 0x035CF6 },
- { (char*) "Brazil/West" , 0x0360BA },
- { (char*) "Canada/Atlantic" , 0x036262 },
- { (char*) "Canada/Central" , 0x0368F6 },
- { (char*) "Canada/Eastern" , 0x036E10 },
- { (char*) "Canada/Mountain" , 0x0374D1 },
- { (char*) "Canada/Newfoundland" , 0x0378A7 },
- { (char*) "Canada/Pacific" , 0x038009 },
- { (char*) "Canada/Saskatchewan" , 0x038547 },
- { (char*) "Canada/Yukon" , 0x0387D1 },
- { (char*) "CET" , 0x038BE2 },
- { (char*) "Chile/Continental" , 0x038E5B },
- { (char*) "Chile/EasterIsland" , 0x0393B1 },
- { (char*) "CST6CDT" , 0x039853 },
- { (char*) "Cuba" , 0x039C16 },
- { (char*) "EET" , 0x03A07F },
- { (char*) "Egypt" , 0x03A27C },
- { (char*) "Eire" , 0x03A7A5 },
- { (char*) "EST" , 0x03AD89 },
- { (char*) "EST5EDT" , 0x03AE04 },
- { (char*) "Etc/GMT" , 0x03B1C7 },
- { (char*) "Etc/GMT+0" , 0x03B242 },
- { (char*) "Etc/GMT+1" , 0x03B2BD },
- { (char*) "Etc/GMT+10" , 0x03B33A },
- { (char*) "Etc/GMT+11" , 0x03B3B8 },
- { (char*) "Etc/GMT+12" , 0x03B436 },
- { (char*) "Etc/GMT+2" , 0x03B4B4 },
- { (char*) "Etc/GMT+3" , 0x03B531 },
- { (char*) "Etc/GMT+4" , 0x03B5AE },
- { (char*) "Etc/GMT+5" , 0x03B62B },
- { (char*) "Etc/GMT+6" , 0x03B6A8 },
- { (char*) "Etc/GMT+7" , 0x03B725 },
- { (char*) "Etc/GMT+8" , 0x03B7A2 },
- { (char*) "Etc/GMT+9" , 0x03B81F },
- { (char*) "Etc/GMT-0" , 0x03B89C },
- { (char*) "Etc/GMT-1" , 0x03B917 },
- { (char*) "Etc/GMT-10" , 0x03B995 },
- { (char*) "Etc/GMT-11" , 0x03BA14 },
- { (char*) "Etc/GMT-12" , 0x03BA93 },
- { (char*) "Etc/GMT-13" , 0x03BB12 },
- { (char*) "Etc/GMT-14" , 0x03BB91 },
- { (char*) "Etc/GMT-2" , 0x03BC10 },
- { (char*) "Etc/GMT-3" , 0x03BC8E },
- { (char*) "Etc/GMT-4" , 0x03BD0C },
- { (char*) "Etc/GMT-5" , 0x03BD8A },
- { (char*) "Etc/GMT-6" , 0x03BE08 },
- { (char*) "Etc/GMT-7" , 0x03BE86 },
- { (char*) "Etc/GMT-8" , 0x03BF04 },
- { (char*) "Etc/GMT-9" , 0x03BF82 },
- { (char*) "Etc/GMT0" , 0x03C000 },
- { (char*) "Etc/Greenwich" , 0x03C07B },
- { (char*) "Etc/UCT" , 0x03C0F6 },
- { (char*) "Etc/Universal" , 0x03C171 },
- { (char*) "Etc/UTC" , 0x03C1EC },
- { (char*) "Etc/Zulu" , 0x03C267 },
- { (char*) "Europe/Amsterdam" , 0x03C2E2 },
- { (char*) "Europe/Andorra" , 0x03C71D },
- { (char*) "Europe/Astrakhan" , 0x03C8AE },
- { (char*) "Europe/Athens" , 0x03CBA2 },
- { (char*) "Europe/Belfast" , 0x03CE58 },
- { (char*) "Europe/Belgrade" , 0x03D4A3 },
- { (char*) "Europe/Berlin" , 0x03D68D },
- { (char*) "Europe/Bratislava" , 0x03D969 },
- { (char*) "Europe/Brussels" , 0x03DC48 },
- { (char*) "Europe/Bucharest" , 0x03E0A3 },
- { (char*) "Europe/Budapest" , 0x03E344 },
- { (char*) "Europe/Busingen" , 0x03E64E },
- { (char*) "Europe/Chisinau" , 0x03E853 },
- { (char*) "Europe/Copenhagen" , 0x03EB52 },
- { (char*) "Europe/Dublin" , 0x03EDCD },
- { (char*) "Europe/Gibraltar" , 0x03F3B1 },
- { (char*) "Europe/Guernsey" , 0x03F881 },
- { (char*) "Europe/Helsinki" , 0x03FED8 },
- { (char*) "Europe/Isle_of_Man" , 0x0400C5 },
- { (char*) "Europe/Istanbul" , 0x040710 },
- { (char*) "Europe/Jersey" , 0x040BCC },
- { (char*) "Europe/Kaliningrad" , 0x041223 },
- { (char*) "Europe/Kiev" , 0x0415CB },
- { (char*) "Europe/Kirov" , 0x041805 },
- { (char*) "Europe/Kyiv" , 0x041AFE },
- { (char*) "Europe/Lisbon" , 0x041D47 },
- { (char*) "Europe/Ljubljana" , 0x042314 },
- { (char*) "Europe/London" , 0x0424FE },
- { (char*) "Europe/Luxembourg" , 0x042B49 },
- { (char*) "Europe/Madrid" , 0x042F94 },
- { (char*) "Europe/Malta" , 0x043331 },
- { (char*) "Europe/Mariehamn" , 0x0436DD },
- { (char*) "Europe/Minsk" , 0x0438CA },
- { (char*) "Europe/Monaco" , 0x043BFE },
- { (char*) "Europe/Moscow" , 0x044064 },
- { (char*) "Europe/Nicosia" , 0x044410 },
- { (char*) "Europe/Oslo" , 0x044671 },
- { (char*) "Europe/Paris" , 0x044921 },
- { (char*) "Europe/Podgorica" , 0x044D7E },
- { (char*) "Europe/Prague" , 0x044F68 },
- { (char*) "Europe/Riga" , 0x045247 },
- { (char*) "Europe/Rome" , 0x045509 },
- { (char*) "Europe/Samara" , 0x0458C8 },
- { (char*) "Europe/San_Marino" , 0x045BC9 },
- { (char*) "Europe/Sarajevo" , 0x045F88 },
- { (char*) "Europe/Saratov" , 0x046172 },
- { (char*) "Europe/Simferopol" , 0x046464 },
- { (char*) "Europe/Skopje" , 0x0467D7 },
- { (char*) "Europe/Sofia" , 0x0469C1 },
- { (char*) "Europe/Stockholm" , 0x046C1D },
- { (char*) "Europe/Tallinn" , 0x046E1A },
- { (char*) "Europe/Tirane" , 0x0470C9 },
- { (char*) "Europe/Tiraspol" , 0x047331 },
- { (char*) "Europe/Ulyanovsk" , 0x047630 },
- { (char*) "Europe/Uzhgorod" , 0x047946 },
- { (char*) "Europe/Vaduz" , 0x047B80 },
- { (char*) "Europe/Vatican" , 0x047D6A },
- { (char*) "Europe/Vienna" , 0x048129 },
- { (char*) "Europe/Vilnius" , 0x0483C7 },
- { (char*) "Europe/Volgograd" , 0x048677 },
- { (char*) "Europe/Warsaw" , 0x048986 },
- { (char*) "Europe/Zagreb" , 0x048D2D },
- { (char*) "Europe/Zaporozhye" , 0x048F17 },
- { (char*) "Europe/Zurich" , 0x049151 },
- { (char*) "Factory" , 0x04934E },
- { (char*) "GB" , 0x0493CB },
- { (char*) "GB-Eire" , 0x049A16 },
- { (char*) "GMT" , 0x04A061 },
- { (char*) "GMT+0" , 0x04A0DC },
- { (char*) "GMT-0" , 0x04A157 },
- { (char*) "GMT0" , 0x04A1D2 },
- { (char*) "Greenwich" , 0x04A24D },
- { (char*) "Hongkong" , 0x04A2C8 },
- { (char*) "HST" , 0x04A5DB },
- { (char*) "Iceland" , 0x04A657 },
- { (char*) "Indian/Antananarivo" , 0x04A6E5 },
- { (char*) "Indian/Chagos" , 0x04A791 },
- { (char*) "Indian/Christmas" , 0x04A835 },
- { (char*) "Indian/Cocos" , 0x04A8C6 },
- { (char*) "Indian/Comoro" , 0x04A95E },
- { (char*) "Indian/Kerguelen" , 0x04A9ED },
- { (char*) "Indian/Mahe" , 0x04AA7E },
- { (char*) "Indian/Maldives" , 0x04AB0F },
- { (char*) "Indian/Mauritius" , 0x04ABB3 },
- { (char*) "Indian/Mayotte" , 0x04AC72 },
- { (char*) "Indian/Reunion" , 0x04AD01 },
- { (char*) "Iran" , 0x04AD92 },
- { (char*) "Israel" , 0x04B0CA },
- { (char*) "Jamaica" , 0x04B508 },
- { (char*) "Japan" , 0x04B667 },
- { (char*) "Kwajalein" , 0x04B748 },
- { (char*) "Libya" , 0x04B82F },
- { (char*) "MET" , 0x04B9EA },
- { (char*) "Mexico/BajaNorte" , 0x04BC63 },
- { (char*) "Mexico/BajaSur" , 0x04C070 },
- { (char*) "Mexico/General" , 0x04C34A },
- { (char*) "MST" , 0x04C65B },
- { (char*) "MST7MDT" , 0x04C6D6 },
- { (char*) "Navajo" , 0x04CA99 },
- { (char*) "NZ" , 0x04CEB7 },
- { (char*) "NZ-CHAT" , 0x04D2D6 },
- { (char*) "Pacific/Apia" , 0x04D60A },
- { (char*) "Pacific/Auckland" , 0x04D7AD },
- { (char*) "Pacific/Bougainville" , 0x04DBDF },
- { (char*) "Pacific/Chatham" , 0x04DCC0 },
- { (char*) "Pacific/Chuuk" , 0x04E003 },
- { (char*) "Pacific/Easter" , 0x04E0E1 },
- { (char*) "Pacific/Efate" , 0x04E590 },
- { (char*) "Pacific/Enderbury" , 0x04E6F2 },
- { (char*) "Pacific/Fakaofo" , 0x04E7AA },
- { (char*) "Pacific/Fiji" , 0x04E84F },
- { (char*) "Pacific/Funafuti" , 0x04E9E7 },
- { (char*) "Pacific/Galapagos" , 0x04EA79 },
- { (char*) "Pacific/Gambier" , 0x04EB45 },
- { (char*) "Pacific/Guadalcanal" , 0x04EBE4 },
- { (char*) "Pacific/Guam" , 0x04EC76 },
- { (char*) "Pacific/Honolulu" , 0x04EDE0 },
- { (char*) "Pacific/Johnston" , 0x04EECF },
- { (char*) "Pacific/Kanton" , 0x04EFB8 },
- { (char*) "Pacific/Kiritimati" , 0x04F07F },
- { (char*) "Pacific/Kosrae" , 0x04F145 },
- { (char*) "Pacific/Kwajalein" , 0x04F249 },
- { (char*) "Pacific/Majuro" , 0x04F339 },
- { (char*) "Pacific/Marquesas" , 0x04F437 },
- { (char*) "Pacific/Midway" , 0x04F4DF },
- { (char*) "Pacific/Nauru" , 0x04F5A2 },
- { (char*) "Pacific/Niue" , 0x04F665 },
- { (char*) "Pacific/Norfolk" , 0x04F70B },
- { (char*) "Pacific/Noumea" , 0x04F80E },
- { (char*) "Pacific/Pago_Pago" , 0x04F8E0 },
- { (char*) "Pacific/Palau" , 0x04F97E },
- { (char*) "Pacific/Pitcairn" , 0x04FA1E },
- { (char*) "Pacific/Pohnpei" , 0x04FAC3 },
- { (char*) "Pacific/Ponape" , 0x04FBB3 },
- { (char*) "Pacific/Port_Moresby" , 0x04FC45 },
- { (char*) "Pacific/Rarotonga" , 0x04FD03 },
- { (char*) "Pacific/Saipan" , 0x04FEA5 },
- { (char*) "Pacific/Samoa" , 0x050006 },
- { (char*) "Pacific/Tahiti" , 0x0500A4 },
- { (char*) "Pacific/Tarawa" , 0x050144 },
- { (char*) "Pacific/Tongatapu" , 0x0501E5 },
- { (char*) "Pacific/Truk" , 0x0502DE },
- { (char*) "Pacific/Wake" , 0x050384 },
- { (char*) "Pacific/Wallis" , 0x050421 },
- { (char*) "Pacific/Yap" , 0x0504B3 },
- { (char*) "Poland" , 0x050559 },
- { (char*) "Portugal" , 0x050900 },
- { (char*) "PRC" , 0x050EBA },
- { (char*) "PST8PDT" , 0x05104F },
- { (char*) "ROC" , 0x051412 },
- { (char*) "ROK" , 0x05161D },
- { (char*) "Singapore" , 0x0517C8 },
- { (char*) "Turkey" , 0x0518D4 },
- { (char*) "UCT" , 0x051D90 },
- { (char*) "Universal" , 0x051E0B },
- { (char*) "US/Alaska" , 0x051E86 },
- { (char*) "US/Aleutian" , 0x052263 },
- { (char*) "US/Arizona" , 0x052638 },
- { (char*) "US/Central" , 0x052734 },
- { (char*) "US/East-Indiana" , 0x052E1A },
- { (char*) "US/Eastern" , 0x053039 },
- { (char*) "US/Hawaii" , 0x053715 },
- { (char*) "US/Indiana-Starke" , 0x0537FE },
- { (char*) "US/Michigan" , 0x053C02 },
- { (char*) "US/Mountain" , 0x053F91 },
- { (char*) "US/Pacific" , 0x0543AF },
- { (char*) "US/Samoa" , 0x0548C9 },
- { (char*) "UTC" , 0x054967 },
- { (char*) "W-SU" , 0x0549E2 },
- { (char*) "WET" , 0x054D7A },
- { (char*) "Zulu" , 0x054F74 },
+ { (char*) "America/Eirunepe" , 0x00CBDE },
+ { (char*) "America/El_Salvador" , 0x00CDAD },
+ { (char*) "America/Ensenada" , 0x00CE69 },
+ { (char*) "America/Fort_Nelson" , 0x00D276 },
+ { (char*) "America/Fort_Wayne" , 0x00D83E },
+ { (char*) "America/Fortaleza" , 0x00DA5D },
+ { (char*) "America/Glace_Bay" , 0x00DC73 },
+ { (char*) "America/Godthab" , 0x00E00A },
+ { (char*) "America/Goose_Bay" , 0x00E3DB },
+ { (char*) "America/Grand_Turk" , 0x00EA33 },
+ { (char*) "America/Grenada" , 0x00ED94 },
+ { (char*) "America/Guadeloupe" , 0x00EE22 },
+ { (char*) "America/Guatemala" , 0x00EEB0 },
+ { (char*) "America/Guayaquil" , 0x00EF90 },
+ { (char*) "America/Guyana" , 0x00F061 },
+ { (char*) "America/Halifax" , 0x00F122 },
+ { (char*) "America/Havana" , 0x00F7D4 },
+ { (char*) "America/Hermosillo" , 0x00FC3D },
+ { (char*) "America/Indiana/Indianapolis" , 0x00FD6D },
+ { (char*) "America/Indiana/Knox" , 0x00FFA5 },
+ { (char*) "America/Indiana/Marengo" , 0x0103BE },
+ { (char*) "America/Indiana/Petersburg" , 0x010618 },
+ { (char*) "America/Indiana/Tell_City" , 0x0108E2 },
+ { (char*) "America/Indiana/Vevay" , 0x010B0C },
+ { (char*) "America/Indiana/Vincennes" , 0x010CA3 },
+ { (char*) "America/Indiana/Winamac" , 0x010EF9 },
+ { (char*) "America/Indianapolis" , 0x011176 },
+ { (char*) "America/Inuvik" , 0x011395 },
+ { (char*) "America/Iqaluit" , 0x0116E6 },
+ { (char*) "America/Jamaica" , 0x011A62 },
+ { (char*) "America/Jujuy" , 0x011BC1 },
+ { (char*) "America/Juneau" , 0x011E7F },
+ { (char*) "America/Kentucky/Louisville" , 0x012265 },
+ { (char*) "America/Kentucky/Monticello" , 0x012769 },
+ { (char*) "America/Knox_IN" , 0x012B55 },
+ { (char*) "America/Kralendijk" , 0x012F59 },
+ { (char*) "America/La_Paz" , 0x013016 },
+ { (char*) "America/Lima" , 0x0130CC },
+ { (char*) "America/Los_Angeles" , 0x0131F3 },
+ { (char*) "America/Louisville" , 0x013714 },
+ { (char*) "America/Lower_Princes" , 0x013BFA },
+ { (char*) "America/Maceio" , 0x013CB7 },
+ { (char*) "America/Managua" , 0x013EC9 },
+ { (char*) "America/Manaus" , 0x013FFC },
+ { (char*) "America/Marigot" , 0x0141B3 },
+ { (char*) "America/Martinique" , 0x014270 },
+ { (char*) "America/Matamoros" , 0x01432E },
+ { (char*) "America/Mazatlan" , 0x01451B },
+ { (char*) "America/Mendoza" , 0x014827 },
+ { (char*) "America/Menominee" , 0x014AF7 },
+ { (char*) "America/Merida" , 0x014EB7 },
+ { (char*) "America/Metlakatla" , 0x015162 },
+ { (char*) "America/Mexico_City" , 0x0153CF },
+ { (char*) "America/Miquelon" , 0x0156EE },
+ { (char*) "America/Moncton" , 0x015920 },
+ { (char*) "America/Monterrey" , 0x015F19 },
+ { (char*) "America/Montevideo" , 0x0161DF },
+ { (char*) "America/Montreal" , 0x0165B4 },
+ { (char*) "America/Montserrat" , 0x016C75 },
+ { (char*) "America/Nassau" , 0x016D03 },
+ { (char*) "America/New_York" , 0x0170FD },
+ { (char*) "America/Nipigon" , 0x0177ED },
+ { (char*) "America/Nome" , 0x017EAE },
+ { (char*) "America/Noronha" , 0x018296 },
+ { (char*) "America/North_Dakota/Beulah" , 0x018496 },
+ { (char*) "America/North_Dakota/Center" , 0x0188CA },
+ { (char*) "America/North_Dakota/New_Salem" , 0x018CC9 },
+ { (char*) "America/Nuuk" , 0x0190CE },
+ { (char*) "America/Ojinaga" , 0x0194B0 },
+ { (char*) "America/Panama" , 0x0197A6 },
+ { (char*) "America/Pangnirtung" , 0x019847 },
+ { (char*) "America/Paramaribo" , 0x019BAA },
+ { (char*) "America/Phoenix" , 0x019C71 },
+ { (char*) "America/Port-au-Prince" , 0x019D85 },
+ { (char*) "America/Port_of_Spain" , 0x019FC6 },
+ { (char*) "America/Porto_Acre" , 0x01A054 },
+ { (char*) "America/Porto_Velho" , 0x01A202 },
+ { (char*) "America/Puerto_Rico" , 0x01A3A0 },
+ { (char*) "America/Punta_Arenas" , 0x01A45D },
+ { (char*) "America/Rainy_River" , 0x01A93F },
+ { (char*) "America/Rankin_Inlet" , 0x01AE59 },
+ { (char*) "America/Recife" , 0x01B1A2 },
+ { (char*) "America/Regina" , 0x01B39C },
+ { (char*) "America/Resolute" , 0x01B63B },
+ { (char*) "America/Rio_Branco" , 0x01B985 },
+ { (char*) "America/Rosario" , 0x01BB37 },
+ { (char*) "America/Santa_Isabel" , 0x01BE07 },
+ { (char*) "America/Santarem" , 0x01C214 },
+ { (char*) "America/Santiago" , 0x01C3C4 },
+ { (char*) "America/Santo_Domingo" , 0x01C927 },
+ { (char*) "America/Sao_Paulo" , 0x01CA70 },
+ { (char*) "America/Scoresbysund" , 0x01CE6A },
+ { (char*) "America/Shiprock" , 0x01D26B },
+ { (char*) "America/Sitka" , 0x01D689 },
+ { (char*) "America/St_Barthelemy" , 0x01DA64 },
+ { (char*) "America/St_Johns" , 0x01DB21 },
+ { (char*) "America/St_Kitts" , 0x01E29E },
+ { (char*) "America/St_Lucia" , 0x01E32C },
+ { (char*) "America/St_Thomas" , 0x01E3CD },
+ { (char*) "America/St_Vincent" , 0x01E45B },
+ { (char*) "America/Swift_Current" , 0x01E4FC },
+ { (char*) "America/Tegucigalpa" , 0x01E68A },
+ { (char*) "America/Thule" , 0x01E758 },
+ { (char*) "America/Thunder_Bay" , 0x01E939 },
+ { (char*) "America/Tijuana" , 0x01EFFA },
+ { (char*) "America/Toronto" , 0x01F416 },
+ { (char*) "America/Tortola" , 0x01FAF5 },
+ { (char*) "America/Vancouver" , 0x01FB83 },
+ { (char*) "America/Virgin" , 0x0200DA },
+ { (char*) "America/Whitehorse" , 0x020197 },
+ { (char*) "America/Winnipeg" , 0x0205BA },
+ { (char*) "America/Yakutat" , 0x020AF1 },
+ { (char*) "America/Yellowknife" , 0x020EBF },
+ { (char*) "Antarctica/Casey" , 0x021295 },
+ { (char*) "Antarctica/Davis" , 0x0213C5 },
+ { (char*) "Antarctica/DumontDUrville" , 0x02149B },
+ { (char*) "Antarctica/Macquarie" , 0x02154F },
+ { (char*) "Antarctica/Mawson" , 0x02193B },
+ { (char*) "Antarctica/McMurdo" , 0x0219E5 },
+ { (char*) "Antarctica/Palmer" , 0x021D17 },
+ { (char*) "Antarctica/Rothera" , 0x0220A0 },
+ { (char*) "Antarctica/South_Pole" , 0x022137 },
+ { (char*) "Antarctica/Syowa" , 0x022556 },
+ { (char*) "Antarctica/Troll" , 0x0225EC },
+ { (char*) "Antarctica/Vostok" , 0x02269B },
+ { (char*) "Arctic/Longyearbyen" , 0x022757 },
+ { (char*) "Asia/Aden" , 0x022A24 },
+ { (char*) "Asia/Almaty" , 0x022AB5 },
+ { (char*) "Asia/Amman" , 0x022D34 },
+ { (char*) "Asia/Anadyr" , 0x0230E0 },
+ { (char*) "Asia/Aqtau" , 0x0233E6 },
+ { (char*) "Asia/Aqtobe" , 0x023665 },
+ { (char*) "Asia/Ashgabat" , 0x0238E5 },
+ { (char*) "Asia/Ashkhabad" , 0x023A68 },
+ { (char*) "Asia/Atyrau" , 0x023BEB },
+ { (char*) "Asia/Baghdad" , 0x023E74 },
+ { (char*) "Asia/Bahrain" , 0x0240F6 },
+ { (char*) "Asia/Baku" , 0x0241AF },
+ { (char*) "Asia/Bangkok" , 0x0244A3 },
+ { (char*) "Asia/Barnaul" , 0x024547 },
+ { (char*) "Asia/Beirut" , 0x024852 },
+ { (char*) "Asia/Bishkek" , 0x024B3A },
+ { (char*) "Asia/Brunei" , 0x024DB0 },
+ { (char*) "Asia/Calcutta" , 0x024E56 },
+ { (char*) "Asia/Chita" , 0x024F3E },
+ { (char*) "Asia/Choibalsan" , 0x02524C },
+ { (char*) "Asia/Chongqing" , 0x0254D5 },
+ { (char*) "Asia/Chungking" , 0x02566A },
+ { (char*) "Asia/Colombo" , 0x0257FF },
+ { (char*) "Asia/Dacca" , 0x025902 },
+ { (char*) "Asia/Damascus" , 0x0259F5 },
+ { (char*) "Asia/Dhaka" , 0x025ED3 },
+ { (char*) "Asia/Dili" , 0x025FC6 },
+ { (char*) "Asia/Dubai" , 0x02607C },
+ { (char*) "Asia/Dushanbe" , 0x02610D },
+ { (char*) "Asia/Famagusta" , 0x026287 },
+ { (char*) "Asia/Gaza" , 0x02664E },
+ { (char*) "Asia/Harbin" , 0x0271FC },
+ { (char*) "Asia/Hebron" , 0x027391 },
+ { (char*) "Asia/Ho_Chi_Minh" , 0x027F50 },
+ { (char*) "Asia/Hong_Kong" , 0x028048 },
+ { (char*) "Asia/Hovd" , 0x02835B },
+ { (char*) "Asia/Irkutsk" , 0x0285E4 },
+ { (char*) "Asia/Istanbul" , 0x028902 },
+ { (char*) "Asia/Jakarta" , 0x028DBE },
+ { (char*) "Asia/Jayapura" , 0x028ECF },
+ { (char*) "Asia/Jerusalem" , 0x028FBC },
+ { (char*) "Asia/Kabul" , 0x0293FA },
+ { (char*) "Asia/Kamchatka" , 0x0294A5 },
+ { (char*) "Asia/Karachi" , 0x02979A },
+ { (char*) "Asia/Kashgar" , 0x0298B0 },
+ { (char*) "Asia/Kathmandu" , 0x029941 },
+ { (char*) "Asia/Katmandu" , 0x0299EE },
+ { (char*) "Asia/Khandyga" , 0x029A9B },
+ { (char*) "Asia/Kolkata" , 0x029DCC },
+ { (char*) "Asia/Krasnoyarsk" , 0x029EB4 },
+ { (char*) "Asia/Kuala_Lumpur" , 0x02A1BE },
+ { (char*) "Asia/Kuching" , 0x02A2DE },
+ { (char*) "Asia/Kuwait" , 0x02A438 },
+ { (char*) "Asia/Macao" , 0x02A4C9 },
+ { (char*) "Asia/Macau" , 0x02A7EC },
+ { (char*) "Asia/Magadan" , 0x02AB0F },
+ { (char*) "Asia/Makassar" , 0x02AE1A },
+ { (char*) "Asia/Manila" , 0x02AF2D },
+ { (char*) "Asia/Muscat" , 0x02B027 },
+ { (char*) "Asia/Nicosia" , 0x02B0B8 },
+ { (char*) "Asia/Novokuznetsk" , 0x02B327 },
+ { (char*) "Asia/Novosibirsk" , 0x02B61A },
+ { (char*) "Asia/Omsk" , 0x02B92B },
+ { (char*) "Asia/Oral" , 0x02BC29 },
+ { (char*) "Asia/Phnom_Penh" , 0x02BEB5 },
+ { (char*) "Asia/Pontianak" , 0x02BF89 },
+ { (char*) "Asia/Pyongyang" , 0x02C0A2 },
+ { (char*) "Asia/Qatar" , 0x02C165 },
+ { (char*) "Asia/Qostanay" , 0x02C209 },
+ { (char*) "Asia/Qyzylorda" , 0x02C496 },
+ { (char*) "Asia/Rangoon" , 0x02C72F },
+ { (char*) "Asia/Riyadh" , 0x02C7F6 },
+ { (char*) "Asia/Saigon" , 0x02C887 },
+ { (char*) "Asia/Sakhalin" , 0x02C97F },
+ { (char*) "Asia/Samarkand" , 0x02CC96 },
+ { (char*) "Asia/Seoul" , 0x02CE21 },
+ { (char*) "Asia/Shanghai" , 0x02CFCC },
+ { (char*) "Asia/Singapore" , 0x02D16D },
+ { (char*) "Asia/Srednekolymsk" , 0x02D279 },
+ { (char*) "Asia/Taipei" , 0x02D589 },
+ { (char*) "Asia/Tashkent" , 0x02D794 },
+ { (char*) "Asia/Tbilisi" , 0x02D91F },
+ { (char*) "Asia/Tehran" , 0x02DBA0 },
+ { (char*) "Asia/Tel_Aviv" , 0x02DED8 },
+ { (char*) "Asia/Thimbu" , 0x02E316 },
+ { (char*) "Asia/Thimphu" , 0x02E3BC },
+ { (char*) "Asia/Tokyo" , 0x02E462 },
+ { (char*) "Asia/Tomsk" , 0x02E543 },
+ { (char*) "Asia/Ujung_Pandang" , 0x02E84E },
+ { (char*) "Asia/Ulaanbaatar" , 0x02E918 },
+ { (char*) "Asia/Ulan_Bator" , 0x02EB86 },
+ { (char*) "Asia/Urumqi" , 0x02EDE4 },
+ { (char*) "Asia/Ust-Nera" , 0x02EE82 },
+ { (char*) "Asia/Vientiane" , 0x02F1A5 },
+ { (char*) "Asia/Vladivostok" , 0x02F28B },
+ { (char*) "Asia/Yakutsk" , 0x02F590 },
+ { (char*) "Asia/Yangon" , 0x02F894 },
+ { (char*) "Asia/Yekaterinburg" , 0x02F95B },
+ { (char*) "Asia/Yerevan" , 0x02FC6D },
+ { (char*) "Atlantic/Azores" , 0x02FF3D },
+ { (char*) "Atlantic/Bermuda" , 0x0304FC },
+ { (char*) "Atlantic/Canary" , 0x030908 },
+ { (char*) "Atlantic/Cape_Verde" , 0x030B00 },
+ { (char*) "Atlantic/Faeroe" , 0x030BBB },
+ { (char*) "Atlantic/Faroe" , 0x030D80 },
+ { (char*) "Atlantic/Jan_Mayen" , 0x030F45 },
+ { (char*) "Atlantic/Madeira" , 0x031212 },
+ { (char*) "Atlantic/Reykjavik" , 0x0317DA },
+ { (char*) "Atlantic/South_Georgia" , 0x031AD7 },
+ { (char*) "Atlantic/St_Helena" , 0x031B67 },
+ { (char*) "Atlantic/Stanley" , 0x031C08 },
+ { (char*) "Australia/ACT" , 0x031F29 },
+ { (char*) "Australia/Adelaide" , 0x0322BD },
+ { (char*) "Australia/Brisbane" , 0x032671 },
+ { (char*) "Australia/Broken_Hill" , 0x0327B5 },
+ { (char*) "Australia/Canberra" , 0x032B8A },
+ { (char*) "Australia/Currie" , 0x032F1E },
+ { (char*) "Australia/Darwin" , 0x033315 },
+ { (char*) "Australia/Eucla" , 0x03341D },
+ { (char*) "Australia/Hobart" , 0x03357C },
+ { (char*) "Australia/LHI" , 0x03397B },
+ { (char*) "Australia/Lindeman" , 0x033C3B },
+ { (char*) "Australia/Lord_Howe" , 0x033DAB },
+ { (char*) "Australia/Melbourne" , 0x03407B },
+ { (char*) "Australia/North" , 0x034417 },
+ { (char*) "Australia/NSW" , 0x03450D },
+ { (char*) "Australia/Perth" , 0x0348A1 },
+ { (char*) "Australia/Queensland" , 0x0349FD },
+ { (char*) "Australia/South" , 0x034B2A },
+ { (char*) "Australia/Sydney" , 0x034ECF },
+ { (char*) "Australia/Tasmania" , 0x03527F },
+ { (char*) "Australia/Victoria" , 0x035676 },
+ { (char*) "Australia/West" , 0x035A0A },
+ { (char*) "Australia/Yancowinna" , 0x035B48 },
+ { (char*) "Brazil/Acre" , 0x035F01 },
+ { (char*) "Brazil/DeNoronha" , 0x0360AF },
+ { (char*) "Brazil/East" , 0x03629F },
+ { (char*) "Brazil/West" , 0x036663 },
+ { (char*) "Canada/Atlantic" , 0x03680B },
+ { (char*) "Canada/Central" , 0x036E9F },
+ { (char*) "Canada/Eastern" , 0x0373B9 },
+ { (char*) "Canada/Mountain" , 0x037A7A },
+ { (char*) "Canada/Newfoundland" , 0x037E50 },
+ { (char*) "Canada/Pacific" , 0x0385B2 },
+ { (char*) "Canada/Saskatchewan" , 0x038AF0 },
+ { (char*) "Canada/Yukon" , 0x038D7A },
+ { (char*) "CET" , 0x03918B },
+ { (char*) "Chile/Continental" , 0x039404 },
+ { (char*) "Chile/EasterIsland" , 0x03995A },
+ { (char*) "CST6CDT" , 0x039DFC },
+ { (char*) "Cuba" , 0x03A1BF },
+ { (char*) "EET" , 0x03A628 },
+ { (char*) "Egypt" , 0x03A825 },
+ { (char*) "Eire" , 0x03AD4E },
+ { (char*) "EST" , 0x03B332 },
+ { (char*) "EST5EDT" , 0x03B3AD },
+ { (char*) "Etc/GMT" , 0x03B770 },
+ { (char*) "Etc/GMT+0" , 0x03B7EB },
+ { (char*) "Etc/GMT+1" , 0x03B866 },
+ { (char*) "Etc/GMT+10" , 0x03B8E3 },
+ { (char*) "Etc/GMT+11" , 0x03B961 },
+ { (char*) "Etc/GMT+12" , 0x03B9DF },
+ { (char*) "Etc/GMT+2" , 0x03BA5D },
+ { (char*) "Etc/GMT+3" , 0x03BADA },
+ { (char*) "Etc/GMT+4" , 0x03BB57 },
+ { (char*) "Etc/GMT+5" , 0x03BBD4 },
+ { (char*) "Etc/GMT+6" , 0x03BC51 },
+ { (char*) "Etc/GMT+7" , 0x03BCCE },
+ { (char*) "Etc/GMT+8" , 0x03BD4B },
+ { (char*) "Etc/GMT+9" , 0x03BDC8 },
+ { (char*) "Etc/GMT-0" , 0x03BE45 },
+ { (char*) "Etc/GMT-1" , 0x03BEC0 },
+ { (char*) "Etc/GMT-10" , 0x03BF3E },
+ { (char*) "Etc/GMT-11" , 0x03BFBD },
+ { (char*) "Etc/GMT-12" , 0x03C03C },
+ { (char*) "Etc/GMT-13" , 0x03C0BB },
+ { (char*) "Etc/GMT-14" , 0x03C13A },
+ { (char*) "Etc/GMT-2" , 0x03C1B9 },
+ { (char*) "Etc/GMT-3" , 0x03C237 },
+ { (char*) "Etc/GMT-4" , 0x03C2B5 },
+ { (char*) "Etc/GMT-5" , 0x03C333 },
+ { (char*) "Etc/GMT-6" , 0x03C3B1 },
+ { (char*) "Etc/GMT-7" , 0x03C42F },
+ { (char*) "Etc/GMT-8" , 0x03C4AD },
+ { (char*) "Etc/GMT-9" , 0x03C52B },
+ { (char*) "Etc/GMT0" , 0x03C5A9 },
+ { (char*) "Etc/Greenwich" , 0x03C624 },
+ { (char*) "Etc/UCT" , 0x03C69F },
+ { (char*) "Etc/Universal" , 0x03C71A },
+ { (char*) "Etc/UTC" , 0x03C795 },
+ { (char*) "Etc/Zulu" , 0x03C810 },
+ { (char*) "Europe/Amsterdam" , 0x03C88B },
+ { (char*) "Europe/Andorra" , 0x03CCC6 },
+ { (char*) "Europe/Astrakhan" , 0x03CE57 },
+ { (char*) "Europe/Athens" , 0x03D14B },
+ { (char*) "Europe/Belfast" , 0x03D401 },
+ { (char*) "Europe/Belgrade" , 0x03DA4C },
+ { (char*) "Europe/Berlin" , 0x03DC36 },
+ { (char*) "Europe/Bratislava" , 0x03DF12 },
+ { (char*) "Europe/Brussels" , 0x03E1F1 },
+ { (char*) "Europe/Bucharest" , 0x03E64C },
+ { (char*) "Europe/Budapest" , 0x03E8ED },
+ { (char*) "Europe/Busingen" , 0x03EBF7 },
+ { (char*) "Europe/Chisinau" , 0x03EDFC },
+ { (char*) "Europe/Copenhagen" , 0x03F0FB },
+ { (char*) "Europe/Dublin" , 0x03F376 },
+ { (char*) "Europe/Gibraltar" , 0x03F95A },
+ { (char*) "Europe/Guernsey" , 0x03FE2A },
+ { (char*) "Europe/Helsinki" , 0x040481 },
+ { (char*) "Europe/Isle_of_Man" , 0x04066E },
+ { (char*) "Europe/Istanbul" , 0x040CB9 },
+ { (char*) "Europe/Jersey" , 0x041175 },
+ { (char*) "Europe/Kaliningrad" , 0x0417CC },
+ { (char*) "Europe/Kiev" , 0x041B74 },
+ { (char*) "Europe/Kirov" , 0x041DAE },
+ { (char*) "Europe/Kyiv" , 0x0420A7 },
+ { (char*) "Europe/Lisbon" , 0x0422F0 },
+ { (char*) "Europe/Ljubljana" , 0x0428BD },
+ { (char*) "Europe/London" , 0x042AA7 },
+ { (char*) "Europe/Luxembourg" , 0x0430F2 },
+ { (char*) "Europe/Madrid" , 0x04353D },
+ { (char*) "Europe/Malta" , 0x0438DA },
+ { (char*) "Europe/Mariehamn" , 0x043C86 },
+ { (char*) "Europe/Minsk" , 0x043E73 },
+ { (char*) "Europe/Monaco" , 0x0441A7 },
+ { (char*) "Europe/Moscow" , 0x04460D },
+ { (char*) "Europe/Nicosia" , 0x0449B9 },
+ { (char*) "Europe/Oslo" , 0x044C1A },
+ { (char*) "Europe/Paris" , 0x044ECA },
+ { (char*) "Europe/Podgorica" , 0x045327 },
+ { (char*) "Europe/Prague" , 0x045511 },
+ { (char*) "Europe/Riga" , 0x0457F0 },
+ { (char*) "Europe/Rome" , 0x045AB2 },
+ { (char*) "Europe/Samara" , 0x045E71 },
+ { (char*) "Europe/San_Marino" , 0x046172 },
+ { (char*) "Europe/Sarajevo" , 0x046531 },
+ { (char*) "Europe/Saratov" , 0x04671B },
+ { (char*) "Europe/Simferopol" , 0x046A0D },
+ { (char*) "Europe/Skopje" , 0x046D80 },
+ { (char*) "Europe/Sofia" , 0x046F6A },
+ { (char*) "Europe/Stockholm" , 0x0471C6 },
+ { (char*) "Europe/Tallinn" , 0x0473C3 },
+ { (char*) "Europe/Tirane" , 0x047672 },
+ { (char*) "Europe/Tiraspol" , 0x0478DA },
+ { (char*) "Europe/Ulyanovsk" , 0x047BD9 },
+ { (char*) "Europe/Uzhgorod" , 0x047EEF },
+ { (char*) "Europe/Vaduz" , 0x048129 },
+ { (char*) "Europe/Vatican" , 0x048313 },
+ { (char*) "Europe/Vienna" , 0x0486D2 },
+ { (char*) "Europe/Vilnius" , 0x048970 },
+ { (char*) "Europe/Volgograd" , 0x048C20 },
+ { (char*) "Europe/Warsaw" , 0x048F2F },
+ { (char*) "Europe/Zagreb" , 0x0492D6 },
+ { (char*) "Europe/Zaporozhye" , 0x0494C0 },
+ { (char*) "Europe/Zurich" , 0x0496FA },
+ { (char*) "Factory" , 0x0498F7 },
+ { (char*) "GB" , 0x049974 },
+ { (char*) "GB-Eire" , 0x049FBF },
+ { (char*) "GMT" , 0x04A60A },
+ { (char*) "GMT+0" , 0x04A685 },
+ { (char*) "GMT-0" , 0x04A700 },
+ { (char*) "GMT0" , 0x04A77B },
+ { (char*) "Greenwich" , 0x04A7F6 },
+ { (char*) "Hongkong" , 0x04A871 },
+ { (char*) "HST" , 0x04AB84 },
+ { (char*) "Iceland" , 0x04AC00 },
+ { (char*) "Indian/Antananarivo" , 0x04AC8E },
+ { (char*) "Indian/Chagos" , 0x04AD3A },
+ { (char*) "Indian/Christmas" , 0x04ADDE },
+ { (char*) "Indian/Cocos" , 0x04AE6F },
+ { (char*) "Indian/Comoro" , 0x04AF07 },
+ { (char*) "Indian/Kerguelen" , 0x04AF96 },
+ { (char*) "Indian/Mahe" , 0x04B027 },
+ { (char*) "Indian/Maldives" , 0x04B0B8 },
+ { (char*) "Indian/Mauritius" , 0x04B15C },
+ { (char*) "Indian/Mayotte" , 0x04B21B },
+ { (char*) "Indian/Reunion" , 0x04B2AA },
+ { (char*) "Iran" , 0x04B33B },
+ { (char*) "Israel" , 0x04B673 },
+ { (char*) "Jamaica" , 0x04BAB1 },
+ { (char*) "Japan" , 0x04BC10 },
+ { (char*) "Kwajalein" , 0x04BCF1 },
+ { (char*) "Libya" , 0x04BDD8 },
+ { (char*) "MET" , 0x04BF93 },
+ { (char*) "Mexico/BajaNorte" , 0x04C20C },
+ { (char*) "Mexico/BajaSur" , 0x04C619 },
+ { (char*) "Mexico/General" , 0x04C8F3 },
+ { (char*) "MST" , 0x04CC04 },
+ { (char*) "MST7MDT" , 0x04CC7F },
+ { (char*) "Navajo" , 0x04D042 },
+ { (char*) "NZ" , 0x04D460 },
+ { (char*) "NZ-CHAT" , 0x04D87F },
+ { (char*) "Pacific/Apia" , 0x04DBB3 },
+ { (char*) "Pacific/Auckland" , 0x04DD56 },
+ { (char*) "Pacific/Bougainville" , 0x04E188 },
+ { (char*) "Pacific/Chatham" , 0x04E269 },
+ { (char*) "Pacific/Chuuk" , 0x04E5AC },
+ { (char*) "Pacific/Easter" , 0x04E68A },
+ { (char*) "Pacific/Efate" , 0x04EB39 },
+ { (char*) "Pacific/Enderbury" , 0x04EC9B },
+ { (char*) "Pacific/Fakaofo" , 0x04ED53 },
+ { (char*) "Pacific/Fiji" , 0x04EDF8 },
+ { (char*) "Pacific/Funafuti" , 0x04EF90 },
+ { (char*) "Pacific/Galapagos" , 0x04F022 },
+ { (char*) "Pacific/Gambier" , 0x04F0EE },
+ { (char*) "Pacific/Guadalcanal" , 0x04F18D },
+ { (char*) "Pacific/Guam" , 0x04F21F },
+ { (char*) "Pacific/Honolulu" , 0x04F389 },
+ { (char*) "Pacific/Johnston" , 0x04F478 },
+ { (char*) "Pacific/Kanton" , 0x04F561 },
+ { (char*) "Pacific/Kiritimati" , 0x04F628 },
+ { (char*) "Pacific/Kosrae" , 0x04F6EE },
+ { (char*) "Pacific/Kwajalein" , 0x04F7F2 },
+ { (char*) "Pacific/Majuro" , 0x04F8E2 },
+ { (char*) "Pacific/Marquesas" , 0x04F9E0 },
+ { (char*) "Pacific/Midway" , 0x04FA88 },
+ { (char*) "Pacific/Nauru" , 0x04FB4B },
+ { (char*) "Pacific/Niue" , 0x04FC0E },
+ { (char*) "Pacific/Norfolk" , 0x04FCB4 },
+ { (char*) "Pacific/Noumea" , 0x04FDAD },
+ { (char*) "Pacific/Pago_Pago" , 0x04FE7F },
+ { (char*) "Pacific/Palau" , 0x04FF1D },
+ { (char*) "Pacific/Pitcairn" , 0x04FFBD },
+ { (char*) "Pacific/Pohnpei" , 0x050062 },
+ { (char*) "Pacific/Ponape" , 0x050152 },
+ { (char*) "Pacific/Port_Moresby" , 0x0501E4 },
+ { (char*) "Pacific/Rarotonga" , 0x0502A2 },
+ { (char*) "Pacific/Saipan" , 0x050444 },
+ { (char*) "Pacific/Samoa" , 0x0505A5 },
+ { (char*) "Pacific/Tahiti" , 0x050643 },
+ { (char*) "Pacific/Tarawa" , 0x0506E3 },
+ { (char*) "Pacific/Tongatapu" , 0x050784 },
+ { (char*) "Pacific/Truk" , 0x05087D },
+ { (char*) "Pacific/Wake" , 0x050923 },
+ { (char*) "Pacific/Wallis" , 0x0509C0 },
+ { (char*) "Pacific/Yap" , 0x050A52 },
+ { (char*) "Poland" , 0x050AF8 },
+ { (char*) "Portugal" , 0x050E9F },
+ { (char*) "PRC" , 0x051459 },
+ { (char*) "PST8PDT" , 0x0515EE },
+ { (char*) "ROC" , 0x0519B1 },
+ { (char*) "ROK" , 0x051BBC },
+ { (char*) "Singapore" , 0x051D67 },
+ { (char*) "Turkey" , 0x051E73 },
+ { (char*) "UCT" , 0x05232F },
+ { (char*) "Universal" , 0x0523AA },
+ { (char*) "US/Alaska" , 0x052425 },
+ { (char*) "US/Aleutian" , 0x052802 },
+ { (char*) "US/Arizona" , 0x052BD7 },
+ { (char*) "US/Central" , 0x052CD3 },
+ { (char*) "US/East-Indiana" , 0x0533B9 },
+ { (char*) "US/Eastern" , 0x0535D8 },
+ { (char*) "US/Hawaii" , 0x053CB4 },
+ { (char*) "US/Indiana-Starke" , 0x053D9D },
+ { (char*) "US/Michigan" , 0x0541A1 },
+ { (char*) "US/Mountain" , 0x054530 },
+ { (char*) "US/Pacific" , 0x05494E },
+ { (char*) "US/Samoa" , 0x054E68 },
+ { (char*) "UTC" , 0x054F06 },
+ { (char*) "W-SU" , 0x054F81 },
+ { (char*) "WET" , 0x055319 },
+ { (char*) "Zulu" , 0x055513 },
};
-const unsigned char timelib_timezone_db_data_builtin[348143] = {
+const unsigned char timelib_timezone_db_data_builtin[349582] = {
/* Africa/Abidjan */
0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -2070,7 +2070,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00,
0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x0A, 0x3C, 0x2D, 0x30,
0x33, 0x3E, 0x33, 0x0A, 0x00, 0x5D, 0xE4, 0x75, 0x00, 0xAE, 0x47, 0xE2, 0x00, 0x00, 0x00, 0x1B,
-0x43, 0x61, 0x74, 0x61, 0x6D, 0x61, 0x72, 0x63, 0x61, 0x20, 0x28, 0x43, 0x54, 0x29, 0x3B, 0x20,
+0x43, 0x61, 0x74, 0x61, 0x6D, 0x61, 0x72, 0x63, 0x61, 0x20, 0x28, 0x43, 0x54, 0x29, 0x2C, 0x20,
0x43, 0x68, 0x75, 0x62, 0x75, 0x74, 0x20, 0x28, 0x43, 0x48, 0x29,
/* America/Argentina/ComodRivadavia */
@@ -2696,7 +2696,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57,
0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A,
0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, 0x00, 0x21, 0x45, 0x53, 0x54, 0x20,
-0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x3B,
+0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x2C,
0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, 0x20, 0x48, 0x29,
/* America/Atka */
@@ -2907,7 +2907,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30,
0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x33, 0x0A, 0x00, 0x87, 0x1D, 0xD8, 0x00, 0xC8,
0xAD, 0xB2, 0x00, 0x00, 0x00, 0x12, 0x50, 0x61, 0x72, 0x61, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74,
-0x29, 0x3B, 0x20, 0x41, 0x6D, 0x61, 0x70, 0x61,
+0x29, 0x2C, 0x20, 0x41, 0x6D, 0x61, 0x70, 0x61,
/* America/Belize */
0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -3106,7 +3106,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D,
0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xCB, 0xE0, 0xD1, 0x00, 0x61, 0x58, 0xE6, 0x00,
0x00, 0x00, 0x20, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D, 0x20, 0x49, 0x44,
-0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x3B, 0x20, 0x4F, 0x52, 0x20, 0x28, 0x65, 0x61,
+0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x2C, 0x20, 0x4F, 0x52, 0x20, 0x28, 0x65, 0x61,
0x73, 0x74, 0x29,
/* America/Buenos_Aires */
@@ -4141,9 +4141,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50,
0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E,
0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDB, 0x0A, 0x38, 0x00, 0x65,
-0x85, 0x95, 0x00, 0x00, 0x00, 0x25, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D,
-0x20, 0x41, 0x42, 0x3B, 0x20, 0x42, 0x43, 0x20, 0x28, 0x45, 0x29, 0x3B, 0x20, 0x4E, 0x54, 0x20,
-0x28, 0x45, 0x29, 0x3B, 0x20, 0x53, 0x4B, 0x20, 0x28, 0x57, 0x29,
+0x85, 0x95, 0x00, 0x00, 0x00, 0x22, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D,
+0x20, 0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54, 0x28, 0x45,
+0x29, 0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29,
/* America/Eirunepe */
0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -4243,13 +4243,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0F, 0x82, 0xA0, 0x00,
0x00, 0x00, 0x00, 0x47, 0x24, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF8, 0x9F, 0x20, 0x00,
0x00, 0x00, 0x00, 0x49, 0x04, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD8, 0x81, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x01,
+0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x3D, 0xAB, 0x80, 0x01,
0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x92,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0xFF, 0xFF, 0x92,
0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF,
0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01,
0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54,
@@ -4540,7 +4540,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x03,
0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0,
0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00,
0x2D, 0x30, 0x32, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E,
@@ -4630,7 +4630,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x47, 0xD3, 0x60, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x17, 0xEC, 0x00,
0x00, 0x00, 0x00, 0x49, 0xB3, 0x42, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xEC, 0xF9, 0xEC, 0x00,
0x00, 0x00, 0x00, 0x4B, 0x9C, 0x5F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x16, 0x6C, 0x00,
-0x00, 0x00, 0x00, 0x4D, 0x7C, 0x41, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x14, 0x50, 0x01,
+0x00, 0x00, 0x00, 0x4D, 0x7C, 0x41, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAF, 0x60, 0xB0, 0x01,
0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x06,
0x05, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
@@ -4640,7 +4640,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
-0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0xFF, 0xFF, 0xC7, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0xCE,
+0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x07, 0xFF, 0xFF, 0xC7, 0x5C, 0x00, 0x00, 0xFF, 0xFF, 0xCE,
0x94, 0x00, 0x04, 0xFF, 0xFF, 0xDC, 0xA4, 0x01, 0x08, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x04, 0xFF,
0xFF, 0xDC, 0xD8, 0x01, 0x08, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x0C, 0xFF, 0xFF, 0xDC, 0xD8, 0x01,
0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x14, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x18, 0xFF, 0xFF, 0xE3,
@@ -4886,7 +4886,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x0A, 0x41, 0x53, 0x54, 0x34, 0x41, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C,
0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xCD, 0x75, 0xA8, 0x00, 0xB1, 0x9C, 0xC0,
0x00, 0x00, 0x00, 0x1E, 0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, 0x20, 0x2D, 0x20, 0x4E,
-0x53, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, 0x3B, 0x20,
+0x53, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, 0x2C, 0x20,
0x50, 0x45,
/* America/Havana */
@@ -5288,7 +5288,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0xFF,
0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x2C, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x0E, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xDB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF,
@@ -5311,19 +5311,18 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00,
-0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01,
+0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xB7, 0x00, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05,
-0x06, 0x05, 0x01, 0x02, 0x06, 0x05, 0xFF, 0xFF, 0xAE, 0xCF, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0,
-0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF,
-0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x18,
-0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00,
-0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54,
-0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E,
-0x31, 0x2E, 0x30, 0x0A, 0x00, 0xC7, 0xF7, 0xF2, 0x00, 0x8E, 0x83, 0x2E, 0x00, 0x00, 0x00, 0x16,
-0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x49, 0x4E, 0x20, 0x28, 0x50, 0x75,
-0x6C, 0x61, 0x73, 0x6B, 0x69, 0x29,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x01, 0x02, 0x06, 0xFF, 0xFF, 0xAE,
+0xCF, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF,
+0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00,
+0x14, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x18, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43,
+0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45,
+0x44, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32,
+0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xC7, 0xF7, 0xF2, 0x00,
+0x8E, 0x83, 0x2E, 0x00, 0x00, 0x00, 0x16, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D,
+0x20, 0x49, 0x4E, 0x20, 0x28, 0x50, 0x75, 0x6C, 0x61, 0x73, 0x6B, 0x69, 0x29,
/* America/Indianapolis */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -6192,9 +6191,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x45, 0x44, 0x51, 0x70, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0F, 0x66, 0x80, 0x00,
0x00, 0x00, 0x00, 0x47, 0x24, 0x33, 0x70, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF8, 0x83, 0x00, 0x00,
0x00, 0x00, 0x00, 0x49, 0x04, 0x15, 0x70, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD8, 0x65, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0xE3, 0xF7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x97, 0x80, 0x01,
+0x00, 0x00, 0x00, 0x4A, 0xE3, 0xF7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x3D, 0x8F, 0x60, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0xFF,
0xFF, 0xA4, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01,
0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x0A, 0x43, 0x53,
0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31,
@@ -6416,7 +6415,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0xFF,
0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x87, 0x30, 0x1A, 0xFF,
0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF,
0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x47, 0x20, 0xFF,
@@ -6438,19 +6437,18 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x56, 0xE5, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xFF, 0x20, 0x00,
0x00, 0x00, 0x00, 0x58, 0xC5, 0x2A, 0x30, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xE1, 0x20, 0x00,
0x00, 0x00, 0x00, 0x5A, 0xA5, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xC3, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x5C, 0x44, 0x46, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xEE, 0x30, 0x01,
-0x02, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
+0x00, 0x00, 0x00, 0x5C, 0x44, 0x46, 0xA0, 0x01, 0x02, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02,
0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x02, 0x06, 0x07, 0x00, 0x00, 0xD6, 0x26, 0x00,
-0x00, 0xFF, 0xFF, 0x84, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D,
-0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF,
-0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50,
-0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x41,
-0x4B, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41,
-0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31,
-0x2E, 0x30, 0x0A, 0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x17, 0x41,
-0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65, 0x74, 0x74, 0x65, 0x20,
-0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+0x02, 0x06, 0x00, 0x00, 0xD6, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xA6, 0x00, 0x00, 0xFF, 0xFF,
+0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C,
+0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF, 0xFF, 0x8F, 0x80,
+0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50,
+0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00,
+0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E,
+0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDD, 0x72, 0x36, 0x00, 0x49,
+0xE3, 0x79, 0x00, 0x00, 0x00, 0x17, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x2D, 0x20, 0x41,
+0x6E, 0x6E, 0x65, 0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64,
/* America/Mexico_City */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -6621,7 +6619,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x3F, 0x9B, 0x38, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0x88, 0x7C, 0x00,
0x00, 0x00, 0x00, 0x41, 0x84, 0x55, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x6A, 0x7C, 0x00,
0x00, 0x00, 0x00, 0x43, 0x64, 0x37, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x4C, 0x7C, 0x00,
-0x00, 0x00, 0x00, 0x45, 0x44, 0x19, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0x9A, 0xE0, 0x01,
+0x00, 0x00, 0x00, 0x45, 0x44, 0x19, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x45, 0x98, 0x87, 0x40, 0x01,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
@@ -6631,7 +6629,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0xFF, 0xFF, 0xC3, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xD5,
+0x03, 0xFF, 0xFF, 0xC3, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xD5,
0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF,
0xFF, 0xD5, 0xD0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54,
0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x0A, 0x41, 0x53,
@@ -7523,7 +7521,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x03,
0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0,
0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00,
0x2D, 0x30, 0x32, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E,
@@ -7538,7 +7536,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF,
0xFF, 0xFF, 0xFF, 0xA5, 0xB6, 0xE8, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF2, 0x6E, 0xE0, 0xFF,
0xFF, 0xFF, 0xFF, 0xB6, 0x66, 0x56, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x43, 0xD2, 0x60, 0xFF,
0xFF, 0xFF, 0xFF, 0xB8, 0x0C, 0x36, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x86, 0xF0, 0x00,
@@ -7568,18 +7566,19 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00,
0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00,
-0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5E, 0x2F, 0x00, 0x01,
-0x02, 0x01, 0x03, 0x01, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
+0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5E, 0x2F, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x63, 0x86, 0xF1, 0x60, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x04, 0x02, 0x04,
+0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
-0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0xFF, 0xFF, 0x9E, 0x1C, 0x00,
-0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xAB,
-0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54,
-0x00, 0x43, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x0A, 0x43, 0x53,
-0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31,
-0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xB6, 0x71, 0xBA, 0x00, 0x73, 0x54, 0xBD, 0x00, 0x00, 0x00,
-0x1C, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x28, 0x55, 0x53, 0x20, 0x62,
-0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x2D, 0x20, 0x65, 0x61, 0x73, 0x74, 0x29,
+0x01, 0x03, 0x02, 0x02, 0xFF, 0xFF, 0x9E, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04,
+0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0,
+0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x4D, 0x44,
+0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D,
+0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xB6,
+0x71, 0xBA, 0x00, 0x73, 0x54, 0xBD, 0x00, 0x00, 0x00, 0x1C, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61,
+0x68, 0x75, 0x61, 0x20, 0x28, 0x55, 0x53, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x2D,
+0x20, 0x65, 0x61, 0x73, 0x74, 0x29,
/* America/Panama */
0x50, 0x48, 0x50, 0x32, 0x01, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -8291,13 +8290,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0F, 0x82, 0xA0, 0x00,
0x00, 0x00, 0x00, 0x47, 0x24, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF8, 0x9F, 0x20, 0x00,
0x00, 0x00, 0x00, 0x49, 0x04, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD8, 0x81, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x01,
+0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x3D, 0xAB, 0x80, 0x01,
0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x92,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0xFF, 0xFF, 0x92,
0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF,
0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01,
0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54,
@@ -8517,9 +8516,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0xFF,
0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x4C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4D, 0x6E, 0x40, 0x00,
0x00, 0x00, 0x00, 0x14, 0x34, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xF9, 0xA0, 0x00,
0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00,
@@ -8536,17 +8535,49 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01,
+0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00,
+0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x01,
0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
-0x04, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0xFF, 0xFF, 0xF1,
-0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x4C,
-0x4D, 0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A,
-0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x31, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35,
-0x2E, 0x30, 0x2F, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x0A, 0x00,
-0xF4, 0xE0, 0xCD, 0x00, 0xF1, 0x23, 0xC5, 0x00, 0x00, 0x00, 0x1D, 0x53, 0x63, 0x6F, 0x72, 0x65,
-0x73, 0x62, 0x79, 0x73, 0x75, 0x6E, 0x64, 0x2F, 0x49, 0x74, 0x74, 0x6F, 0x71, 0x71, 0x6F, 0x72,
-0x74, 0x6F, 0x6F, 0x72, 0x6D, 0x69, 0x69, 0x74,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x02, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF,
+0xFF, 0xE3, 0xE0, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x00,
+0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D,
+0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D,
+0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31,
+0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30, 0x0A, 0x00, 0xF4, 0xE0, 0xCD, 0x00, 0xF1, 0x23, 0xC5,
+0x00, 0x00, 0x00, 0x1D, 0x53, 0x63, 0x6F, 0x72, 0x65, 0x73, 0x62, 0x79, 0x73, 0x75, 0x6E, 0x64,
+0x2F, 0x49, 0x74, 0x74, 0x6F, 0x71, 0x71, 0x6F, 0x72, 0x74, 0x6F, 0x6F, 0x72, 0x6D, 0x69, 0x69,
+0x74,
/* America/Shiprock */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -8794,7 +8825,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x49, 0x0D, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x3B, 0xF4, 0x00,
0x00, 0x00, 0x00, 0x4A, 0xEC, 0xF2, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x58, 0x74, 0x00,
0x00, 0x00, 0x00, 0x4C, 0xD6, 0x0F, 0x64, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x3A, 0x74, 0x00,
-0x00, 0x00, 0x00, 0x4E, 0xB6, 0x0D, 0x48, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x4E, 0xAF, 0x59, 0xA8, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03,
0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x04, 0x03, 0x04,
@@ -8806,16 +8837,15 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x03, 0x04, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0xFF, 0xFF, 0xCE, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0xA4, 0x01, 0x04, 0xFF, 0xFF,
+0x03, 0x03, 0xFF, 0xFF, 0xCE, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0xA4, 0x01, 0x04, 0xFF, 0xFF,
0xCE, 0x94, 0x00, 0x08, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x04, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x08,
0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x0C, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x10, 0xFF, 0xFF, 0xEA, 0xE8,
0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x44, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x50,
0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x44, 0x44, 0x54, 0x00, 0x0A, 0x4E, 0x53, 0x54, 0x33,
0x3A, 0x33, 0x30, 0x4E, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31,
0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD1, 0xE8, 0xFA, 0x00, 0xC2, 0x38, 0x0D, 0x00, 0x00,
-0x00, 0x22, 0x4E, 0x65, 0x77, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x6C, 0x61, 0x6E, 0x64, 0x3B, 0x20,
-0x4C, 0x61, 0x62, 0x72, 0x61, 0x64, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x65,
-0x61, 0x73, 0x74, 0x29,
+0x00, 0x1B, 0x4E, 0x65, 0x77, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x6C, 0x61, 0x6E, 0x64, 0x2C, 0x20,
+0x4C, 0x61, 0x62, 0x72, 0x61, 0x64, 0x6F, 0x72, 0x20, 0x28, 0x53, 0x45, 0x29,
/* America/St_Kitts */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -9104,13 +9134,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0F, 0x82, 0xA0, 0x00,
0x00, 0x00, 0x00, 0x47, 0x24, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF8, 0x9F, 0x20, 0x00,
0x00, 0x00, 0x00, 0x49, 0x04, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD8, 0x81, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x01,
+0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x3D, 0xAB, 0x80, 0x01,
0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x92,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0xFF, 0xFF, 0x92,
0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF,
0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01,
0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54,
@@ -9228,8 +9258,8 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x0A, 0x45, 0x53,
0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31,
0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xCB, 0xEF, 0x08, 0x00, 0x99, 0x87, 0x62, 0x00, 0x00, 0x00,
-0x1D, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x2C, 0x20, 0x51,
-0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29,
+0x1E, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x26, 0x20,
+0x51, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29,
/* America/Tortola */
0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -9496,7 +9526,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D,
0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD5,
0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, 0x00, 0x1D, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61,
-0x6C, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, 0x3B, 0x20, 0x4D,
+0x6C, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, 0x2C, 0x20, 0x4D,
0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61,
/* America/Yakutat */
@@ -9632,18 +9662,21 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF,
0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xDA, 0x06, 0x20, 0x00,
0x00, 0x00, 0x00, 0x4B, 0x8F, 0xCA, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xA9, 0x9C, 0x20, 0x00,
0x00, 0x00, 0x00, 0x4F, 0x43, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x0A, 0x3B, 0x80, 0x00,
0x00, 0x00, 0x00, 0x5A, 0xA4, 0x0F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xB9, 0x14, 0x40, 0x00,
0x00, 0x00, 0x00, 0x5C, 0x8D, 0x1D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x96, 0x45, 0x30, 0x00,
-0x00, 0x00, 0x00, 0x5E, 0x63, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x2D, 0x30, 0x30,
-0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x31, 0x3E, 0x2D,
-0x31, 0x31, 0x0A, 0x00, 0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00, 0x00, 0x00, 0x05, 0x43,
-0x61, 0x73, 0x65, 0x79,
+0x00, 0x00, 0x00, 0x5E, 0x63, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x60, 0x4C, 0xB7, 0x50, 0x00, 0x00, 0x00, 0x00, 0x61, 0x58, 0x82, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x62, 0x2C, 0x99, 0x50, 0x00, 0x00, 0x00, 0x00, 0x63, 0x38, 0x64, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x64, 0x08, 0xB1, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30,
+0x38, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x38, 0x3E, 0x2D, 0x38, 0x0A, 0x00,
+0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00, 0x00, 0x00, 0x05, 0x43, 0x61, 0x73, 0x65, 0x79,
+
/* Antarctica/Davis */
0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -9727,13 +9760,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x46, 0x05, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0xB1, 0x00, 0x00,
0x00, 0x00, 0x00, 0x47, 0xF7, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xE7, 0x93, 0x00, 0x00,
0x00, 0x00, 0x00, 0x49, 0xD7, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xC7, 0x75, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x4D, 0x97, 0x48, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x00, 0x00, 0x00, 0x4D, 0x1D, 0xD3, 0xD0, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00,
+0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00,
0x9A, 0xB0, 0x01, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x41, 0x45, 0x44,
0x54, 0x00, 0x0A, 0x41, 0x45, 0x53, 0x54, 0x2D, 0x31, 0x30, 0x41, 0x45, 0x44, 0x54, 0x2C, 0x4D,
0x31, 0x30, 0x2E, 0x31, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A,
@@ -9964,14 +9997,12 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,
-0x00, 0x00, 0x00, 0x42, 0x0D, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x02,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x32, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A,
-0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x30, 0x3C, 0x2B, 0x30, 0x32, 0x3E, 0x2D, 0x32, 0x2C, 0x4D, 0x33,
-0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33,
-0x0A, 0x00, 0x1B, 0x72, 0xCD, 0x01, 0x16, 0x86, 0xBC, 0x00, 0x00, 0x00, 0x05, 0x54, 0x72, 0x6F,
-0x6C, 0x6C,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
+0x00, 0x00, 0x00, 0x42, 0x0D, 0x47, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
+0x30, 0x3E, 0x30, 0x3C, 0x2B, 0x30, 0x32, 0x3E, 0x2D, 0x32, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E,
+0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x1B,
+0x72, 0xCD, 0x01, 0x16, 0x86, 0xBC, 0x00, 0x00, 0x00, 0x05, 0x54, 0x72, 0x6F, 0x6C, 0x6C,
/* Antarctica/Vostok */
0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -9979,11 +10010,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF,
-0xFF, 0xFF, 0xFF, 0xE9, 0x58, 0x89, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x54, 0x60, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x36, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
-0x36, 0x3E, 0x2D, 0x36, 0x0A, 0x00, 0x11, 0xB3, 0x3F, 0x01, 0xB5, 0xC6, 0x4F, 0x00, 0x00, 0x00,
-0x06, 0x56, 0x6F, 0x73, 0x74, 0x6F, 0x6B,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF,
+0xFF, 0xFF, 0xFF, 0xE9, 0x58, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x4D, 0x39, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x2E, 0xB5, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x7F, 0x45, 0x30, 0x01,
+0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00,
+0x00, 0x46, 0x50, 0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x35,
+0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x35, 0x3E, 0x2D, 0x35, 0x0A, 0x00, 0x11, 0xB3, 0x3F, 0x01, 0xB5,
+0xC6, 0x4F, 0x00, 0x00, 0x00, 0x06, 0x56, 0x6F, 0x73, 0x74, 0x6F, 0x6B,
/* Arctic/Longyearbyen */
0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -11078,7 +11111,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF,
0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF,
@@ -11205,10 +11238,35 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0xBC, 0x8B, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x84, 0xE3, 0x70, 0x00,
0x00, 0x00, 0x00, 0xBE, 0x6B, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x52, 0x50, 0x70, 0x00,
0x00, 0x00, 0x00, 0xC0, 0x4B, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x28, 0xF7, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0xC1, 0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00,
-0x00, 0x00, 0x00, 0xC3, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00,
-0x00, 0x00, 0x00, 0xC5, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0xC6, 0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x37, 0x70, 0x02,
+0x00, 0x00, 0x00, 0xC1, 0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x69, 0x91, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC2, 0x2B, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC3, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x49, 0x73, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC4, 0x0B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC5, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x29, 0x55, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC5, 0xF4, 0x6A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xC6, 0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x37, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC7, 0xD4, 0x4C, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x71, 0x20, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xC8, 0xA8, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xE9, 0x19, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC9, 0xB4, 0x2E, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x47, 0xC8, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xCA, 0x7F, 0x35, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xD2, 0x35, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCB, 0x94, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x1E, 0x6F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCC, 0x4C, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xB2, 0x17, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCD, 0x73, 0xF2, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xEB, 0xDC, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCE, 0x23, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x91, 0xF9, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCF, 0x5D, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xC2, 0x84, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xCF, 0xF0, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x71, 0xDB, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD1, 0x3C, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x99, 0x2B, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD1, 0xC7, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x51, 0xBD, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD3, 0x1C, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x66, 0x98, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD3, 0x9E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x31, 0x9F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD4, 0xFC, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x3D, 0x40, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD5, 0x6B, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x1A, 0xBC, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD6, 0xDC, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x0A, 0xAD, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD7, 0x42, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFA, 0x9E, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD8, 0xBC, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xE1, 0x54, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD9, 0x18, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xDA, 0x80, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xDA, 0xA5, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xB7, 0xFC, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xDA, 0xE6, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xBA, 0x62, 0x70, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
@@ -11225,13 +11283,16 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00,
-0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00,
-0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44,
-0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54,
-0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34,
-0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00,
-0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01,
+0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C,
+0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
+0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45,
+0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30,
+0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A,
+0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70,
/* Asia/Harbin */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -11267,7 +11328,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF,
0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF,
@@ -11395,10 +11456,35 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0xBC, 0x8B, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x84, 0xE3, 0x70, 0x00,
0x00, 0x00, 0x00, 0xBE, 0x6B, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x52, 0x50, 0x70, 0x00,
0x00, 0x00, 0x00, 0xC0, 0x4B, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x28, 0xF7, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0xC1, 0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00,
-0x00, 0x00, 0x00, 0xC3, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00,
-0x00, 0x00, 0x00, 0xC5, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00,
-0x00, 0x00, 0x00, 0xC6, 0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x37, 0x70, 0x02,
+0x00, 0x00, 0x00, 0xC1, 0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x69, 0x91, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC2, 0x2B, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC3, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x49, 0x73, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC4, 0x0B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC5, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x29, 0x55, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC5, 0xF4, 0x6A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xC6, 0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x37, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC7, 0xD4, 0x4C, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x71, 0x20, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xC8, 0xA8, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xE9, 0x19, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xC9, 0xB4, 0x2E, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x47, 0xC8, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xCA, 0x7F, 0x35, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xD2, 0x35, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCB, 0x94, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x1E, 0x6F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCC, 0x4C, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xB2, 0x17, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCD, 0x73, 0xF2, 0x80, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xEB, 0xDC, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCE, 0x23, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x91, 0xF9, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xCF, 0x5D, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xC2, 0x84, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xCF, 0xF0, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x71, 0xDB, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD1, 0x3C, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x99, 0x2B, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD1, 0xC7, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x51, 0xBD, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD3, 0x1C, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x66, 0x98, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD3, 0x9E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x31, 0x9F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD4, 0xFC, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x3D, 0x40, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD5, 0x6B, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x1A, 0xBC, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD6, 0xDC, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x0A, 0xAD, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD7, 0x42, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFA, 0x9E, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xD8, 0xBC, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xE1, 0x54, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0xD9, 0x18, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xDA, 0x80, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xDA, 0xA5, 0x95, 0x80, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xB7, 0xFC, 0x70, 0x00,
+0x00, 0x00, 0x00, 0xDA, 0xE6, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xBA, 0x62, 0x70, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
@@ -11415,13 +11501,16 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01,
-0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C,
-0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
-0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45,
-0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30,
-0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C,
-0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A,
+0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00,
+0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45,
+0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32,
+0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D,
+0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48,
+0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B,
/* Asia/Ho_Chi_Minh */
0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -11700,7 +11789,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x57, 0x49, 0x54, 0x00, 0x0A, 0x57, 0x49, 0x54, 0x2D, 0x39, 0x0A, 0x00, 0x85, 0x76, 0xAA, 0x01,
0xE9, 0x59, 0x70, 0x00, 0x00, 0x00, 0x36, 0x4E, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6E, 0x65,
0x61, 0x20, 0x28, 0x57, 0x65, 0x73, 0x74, 0x20, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x2F, 0x20,
-0x49, 0x72, 0x69, 0x61, 0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x3B, 0x20, 0x4D, 0x61, 0x6C,
+0x49, 0x72, 0x69, 0x61, 0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x2C, 0x20, 0x4D, 0x61, 0x6C,
0x75, 0x6B, 0x75, 0x73, 0x2F, 0x4D, 0x6F, 0x6C, 0x75, 0x63, 0x63, 0x61, 0x73,
/* Asia/Jerusalem */
@@ -12244,10 +12333,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39,
0x00, 0x57, 0x49, 0x54, 0x41, 0x00, 0x0A, 0x57, 0x49, 0x54, 0x41, 0x2D, 0x38, 0x0A, 0x00, 0x81,
0x85, 0x8D, 0x01, 0xC8, 0xD9, 0x1F, 0x00, 0x00, 0x00, 0x49, 0x42, 0x6F, 0x72, 0x6E, 0x65, 0x6F,
-0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x2C, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x3B, 0x20,
+0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x2C, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x2C, 0x20,
0x53, 0x75, 0x6C, 0x61, 0x77, 0x65, 0x73, 0x69, 0x2F, 0x43, 0x65, 0x6C, 0x65, 0x62, 0x65, 0x73,
0x2C, 0x20, 0x42, 0x61, 0x6C, 0x69, 0x2C, 0x20, 0x4E, 0x75, 0x73, 0x61, 0x20, 0x54, 0x65, 0x6E,
-0x67, 0x61, 0x72, 0x72, 0x61, 0x3B, 0x20, 0x54, 0x69, 0x6D, 0x6F, 0x72, 0x20, 0x28, 0x77, 0x65,
+0x67, 0x61, 0x72, 0x72, 0x61, 0x2C, 0x20, 0x54, 0x69, 0x6D, 0x6F, 0x72, 0x20, 0x28, 0x77, 0x65,
0x73, 0x74, 0x29,
/* Asia/Manila */
@@ -12311,10 +12400,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x32, 0x4D, 0x91, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x90, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x34, 0x2D, 0x73, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x72, 0xE0, 0x00,
-0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x35, 0xEB, 0x0E, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00,
0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45,
0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53,
0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35,
@@ -12917,7 +13006,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x2B, 0x31, 0x30, 0x00, 0x2B, 0x31, 0x32, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x0A, 0x3C, 0x2B, 0x31,
0x31, 0x3E, 0x2D, 0x31, 0x31, 0x0A, 0x00, 0xF0, 0x46, 0x6A, 0x01, 0xFD, 0x36, 0x12, 0x00, 0x00,
0x00, 0x1E, 0x4D, 0x53, 0x4B, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x53, 0x61, 0x6B, 0x68, 0x61,
-0x20, 0x28, 0x45, 0x29, 0x3B, 0x20, 0x4E, 0x20, 0x4B, 0x75, 0x72, 0x69, 0x6C, 0x20, 0x49, 0x73,
+0x20, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x20, 0x4B, 0x75, 0x72, 0x69, 0x6C, 0x20, 0x49, 0x73,
/* Asia/Taipei */
@@ -15882,7 +15971,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x49, 0x0D, 0x10, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x3B, 0xF4, 0x00,
0x00, 0x00, 0x00, 0x4A, 0xEC, 0xF2, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x58, 0x74, 0x00,
0x00, 0x00, 0x00, 0x4C, 0xD6, 0x0F, 0x64, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x3A, 0x74, 0x00,
-0x00, 0x00, 0x00, 0x4E, 0xB6, 0x0D, 0x48, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x4E, 0xAF, 0x59, 0xA8, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03,
0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x04, 0x03, 0x04,
@@ -15894,7 +15983,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x03, 0x04, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0xFF, 0xFF, 0xCE, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0xA4, 0x01, 0x04, 0xFF, 0xFF,
+0x03, 0x03, 0xFF, 0xFF, 0xCE, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xDC, 0xA4, 0x01, 0x04, 0xFF, 0xFF,
0xCE, 0x94, 0x00, 0x08, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x04, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x08,
0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x0C, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x10, 0xFF, 0xFF, 0xEA, 0xE8,
0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x44, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x50,
@@ -17362,7 +17451,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
@@ -17372,7 +17461,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00,
0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33,
@@ -17614,10 +17703,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00,
0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00,
-0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x00, 0x00, 0x00, 0x32, 0xC9, 0x8C, 0xE0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x03, 0x00, 0x00,
0x18, 0x78, 0x00, 0x00, 0x00, 0x00, 0x18, 0x78, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08,
0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x45, 0x45,
0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53,
@@ -17747,11 +17836,11 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x92, 0x60, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xAD, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0xC9, 0x8C, 0xE0, 0x01,
0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x1B, 0x08, 0x00,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x04, 0x00, 0x00, 0x1B, 0x08, 0x00,
0x00, 0x00, 0x00, 0x1A, 0xF4, 0x00, 0x04, 0x00, 0x00, 0x18, 0x78, 0x00, 0x08, 0x00, 0x00, 0x2A,
0x30, 0x01, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x15, 0x00,
0x00, 0x1C, 0x20, 0x01, 0x19, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1E, 0x00, 0x00, 0x2A, 0x30, 0x00,
@@ -18065,7 +18154,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02,
+0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
@@ -18075,7 +18164,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFD,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFD,
0x9F, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01,
0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47,
@@ -18203,7 +18292,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
@@ -18213,7 +18302,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFB, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFB, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00,
0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33,
@@ -18383,7 +18472,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02,
+0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
@@ -18393,7 +18482,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFE,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFE,
0x06, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01,
0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47,
@@ -18489,9 +18578,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
+0x00, 0x00, 0x00, 0x31, 0x96, 0x51, 0x50, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06,
-0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00,
+0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x07, 0x00, 0x00,
0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20,
0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D,
@@ -18577,9 +18666,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
+0x00, 0x00, 0x00, 0x31, 0x96, 0x51, 0x50, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06,
-0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00,
+0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x07, 0x00, 0x00,
0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20,
0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D,
@@ -18804,7 +18893,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
@@ -18814,7 +18903,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00,
0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33,
@@ -19265,10 +19354,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x32, 0x4D, 0x91, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x90, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x34, 0x2D, 0x73, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x72, 0xE0, 0x00,
-0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x35, 0xEB, 0x0E, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00,
0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45,
0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53,
0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35,
@@ -19507,10 +19596,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00,
0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00,
0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x06, 0x05,
+0x00, 0x00, 0x00, 0x3A, 0x50, 0xFD, 0xE0, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x06, 0x05,
0x06, 0x05, 0x06, 0x05, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07,
0x04, 0x07, 0x04, 0x07, 0x04, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08,
-0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x00, 0x00, 0x16, 0xA2,
+0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x08, 0x03, 0x03, 0x00, 0x00, 0x16, 0xA2,
0x00, 0x00, 0x00, 0x00, 0x16, 0xA2, 0x00, 0x04, 0x00, 0x00, 0x24, 0xB2, 0x01, 0x08, 0x00, 0x00,
0x1C, 0x20, 0x00, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x14,
0x00, 0x00, 0x1C, 0x20, 0x01, 0x18, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30,
@@ -19899,10 +19988,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00,
0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00,
-0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x01, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, 0x02, 0x05,
+0x00, 0x00, 0x00, 0x32, 0xC9, 0x8C, 0xE0, 0x01, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, 0x02, 0x05,
0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
-0x02, 0x05, 0x02, 0x05, 0x00, 0x00, 0x15, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04,
+0x02, 0x05, 0x02, 0x02, 0x00, 0x00, 0x15, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04,
0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20,
0x01, 0x10, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x15, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4D, 0x54, 0x00,
0x45, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x53,
@@ -19976,11 +20065,11 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xAD, 0x00, 0x00,
0x00, 0x00, 0x00, 0x34, 0x52, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x8F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00,
-0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x01,
+0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x74, 0x1C, 0x60, 0x01,
0x03, 0x02, 0x03, 0x01, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05,
0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x04, 0x07, 0x04,
0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04, 0x07, 0x04,
-0x07, 0x04, 0x07, 0x00, 0x00, 0x17, 0x34, 0x00, 0x00, 0x00, 0x00, 0x17, 0x34, 0x00, 0x04, 0x00,
+0x07, 0x04, 0x04, 0x00, 0x00, 0x17, 0x34, 0x00, 0x00, 0x00, 0x00, 0x17, 0x34, 0x00, 0x04, 0x00,
0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00,
0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x15, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A,
0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00,
@@ -20066,11 +20155,11 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x92, 0x60, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x75, 0x50, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xAE, 0xE0, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xAD, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x32, 0x72, 0x7B, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0xC9, 0x8C, 0xE0, 0x01,
0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x1B, 0x08, 0x00,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x04, 0x00, 0x00, 0x1B, 0x08, 0x00,
0x00, 0x00, 0x00, 0x1A, 0xF4, 0x00, 0x04, 0x00, 0x00, 0x18, 0x78, 0x00, 0x08, 0x00, 0x00, 0x2A,
0x30, 0x01, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x15, 0x00,
0x00, 0x1C, 0x20, 0x01, 0x19, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1E, 0x00, 0x00, 0x2A, 0x30, 0x00,
@@ -20158,9 +20247,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
+0x00, 0x00, 0x00, 0x31, 0x96, 0x51, 0x50, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06,
-0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00,
+0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x07, 0x00, 0x00,
0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20,
0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D,
@@ -20341,10 +20430,10 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x33, 0x3D, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x88, 0x00, 0x00,
0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00,
0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x01, 0x02, 0x03, 0x04, 0x03, 0x05, 0x06, 0x03, 0x06,
+0x00, 0x00, 0x00, 0x3E, 0x12, 0x13, 0x60, 0x01, 0x02, 0x03, 0x04, 0x03, 0x05, 0x06, 0x03, 0x06,
0x03, 0x06, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
0x05, 0x07, 0x05, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08,
-0x04, 0x08, 0x04, 0x08, 0x04, 0x06, 0x03, 0x06, 0x04, 0x08, 0x00, 0x00, 0x17, 0xBC, 0x00, 0x00,
+0x04, 0x08, 0x04, 0x08, 0x04, 0x06, 0x03, 0x06, 0x04, 0x04, 0x00, 0x00, 0x17, 0xBC, 0x00, 0x00,
0x00, 0x00, 0x13, 0xB0, 0x00, 0x04, 0x00, 0x00, 0x16, 0x68, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10,
0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x10, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x14, 0x00, 0x00,
0x1C, 0x20, 0x01, 0x18, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x21,
@@ -20526,9 +20615,9 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00,
0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
+0x00, 0x00, 0x00, 0x31, 0x96, 0x51, 0x50, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06,
0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06,
-0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00,
+0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x07, 0x00, 0x00,
0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08,
0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20,
0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D,
@@ -20668,7 +20757,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
@@ -20678,7 +20767,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00,
0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33,
@@ -20771,7 +20860,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00,
0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00,
-0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x30, 0xE7, 0x24, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03,
@@ -20781,7 +20870,7 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
-0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10,
0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00,
0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33,
@@ -21353,13 +21442,13 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0F, 0x82, 0xA0, 0x00,
0x00, 0x00, 0x00, 0x47, 0x24, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF8, 0x9F, 0x20, 0x00,
0x00, 0x00, 0x00, 0x49, 0x04, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD8, 0x81, 0x20, 0x00,
-0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x01,
+0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x3D, 0xAB, 0x80, 0x01,
0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x92,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0xFF, 0xFF, 0x92,
0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF,
0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01,
0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54,
@@ -22331,18 +22420,17 @@ const unsigned char timelib_timezone_db_data_builtin[348143] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1E, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1A, 0xFF,
0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x17, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x41, 0xF8, 0x80, 0x00,
0x00, 0x00, 0x00, 0x09, 0x0F, 0xCA, 0x68, 0x00, 0x00, 0x00, 0x00, 0x09, 0xB5, 0xE7, 0x68, 0x00,
-0x00, 0x00, 0x00, 0x56, 0x0F, 0xE6, 0x68, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x98, 0xAF, 0xF0, 0x01,
-0x02, 0x03, 0x02, 0x04, 0x05, 0x00, 0x00, 0x9D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x80, 0x00,
+0x00, 0x00, 0x00, 0x56, 0x0F, 0xE6, 0x68, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x18, 0xB2, 0x50, 0x01,
+0x02, 0x03, 0x02, 0x04, 0x04, 0x00, 0x00, 0x9D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x80, 0x00,
0x04, 0x00, 0x00, 0xA1, 0xB8, 0x00, 0x0A, 0x00, 0x00, 0xAF, 0xC8, 0x01, 0x10, 0x00, 0x00, 0x9A,
-0xB0, 0x00, 0x16, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x1A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x31,
-0x31, 0x32, 0x00, 0x2B, 0x31, 0x31, 0x33, 0x30, 0x00, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x00, 0x2B,
-0x31, 0x31, 0x00, 0x2B, 0x31, 0x32, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x31, 0x3E, 0x2D, 0x31, 0x31,
-0x3C, 0x2B, 0x31, 0x32, 0x3E, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x31, 0x2E, 0x30, 0x2C, 0x4D, 0x34,
-0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x5D, 0x00, 0x98, 0x02, 0x12, 0xF4, 0x7A, 0x00,
-0x00, 0x00, 0x00,
+0xB0, 0x00, 0x16, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x31, 0x31, 0x32, 0x00, 0x2B, 0x31, 0x31,
+0x33, 0x30, 0x00, 0x2B, 0x31, 0x32, 0x33, 0x30, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x0A, 0x3C, 0x2B,
+0x31, 0x31, 0x3E, 0x2D, 0x31, 0x31, 0x3C, 0x2B, 0x31, 0x32, 0x3E, 0x2C, 0x4D, 0x31, 0x30, 0x2E,
+0x31, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x5D, 0x00,
+0x98, 0x02, 0x12, 0xF4, 0x7A, 0x00, 0x00, 0x00, 0x00,
/* Pacific/Noumea */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -23968,498 +24056,498 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[597] = {
{ (char*) "America/Detroit" , 0x013B17 },
{ (char*) "America/Dominica" , 0x0143F2 },
{ (char*) "America/Edmonton" , 0x014492 },
- { (char*) "America/Eirunepe" , 0x014DDF },
- { (char*) "America/El_Salvador" , 0x01507C },
- { (char*) "America/Ensenada" , 0x015168 },
- { (char*) "America/Fort_Nelson" , 0x015ABA },
- { (char*) "America/Fort_Wayne" , 0x01639A },
- { (char*) "America/Fortaleza" , 0x016A38 },
- { (char*) "America/Glace_Bay" , 0x016D28 },
- { (char*) "America/Godthab" , 0x0175DF },
- { (char*) "America/Goose_Bay" , 0x017D5A },
- { (char*) "America/Grand_Turk" , 0x018A10 },
- { (char*) "America/Grenada" , 0x019146 },
- { (char*) "America/Guadeloupe" , 0x0191E6 },
- { (char*) "America/Guatemala" , 0x019286 },
- { (char*) "America/Guayaquil" , 0x0193AA },
- { (char*) "America/Guyana" , 0x0194B0 },
- { (char*) "America/Halifax" , 0x0195B4 },
- { (char*) "America/Havana" , 0x01A33E },
- { (char*) "America/Hermosillo" , 0x01ACBA },
- { (char*) "America/Indiana/Indianapolis" , 0x01AE94 },
- { (char*) "America/Indiana/Knox" , 0x01B54B },
- { (char*) "America/Indiana/Marengo" , 0x01BEF8 },
- { (char*) "America/Indiana/Petersburg" , 0x01C5E5 },
- { (char*) "America/Indiana/Tell_City" , 0x01CD84 },
- { (char*) "America/Indiana/Vevay" , 0x01D448 },
- { (char*) "America/Indiana/Vincennes" , 0x01DA04 },
- { (char*) "America/Indiana/Winamac" , 0x01E0DA },
- { (char*) "America/Indianapolis" , 0x01E7FE },
- { (char*) "America/Inuvik" , 0x01EE9C },
- { (char*) "America/Iqaluit" , 0x01F6D6 },
- { (char*) "America/Jamaica" , 0x01FF95 },
- { (char*) "America/Jujuy" , 0x020183 },
- { (char*) "America/Juneau" , 0x020599 },
- { (char*) "America/Kentucky/Louisville" , 0x020EEA },
- { (char*) "America/Kentucky/Monticello" , 0x0219F8 },
- { (char*) "America/Knox_IN" , 0x022358 },
- { (char*) "America/Kralendijk" , 0x022CF0 },
- { (char*) "America/La_Paz" , 0x022DF2 },
- { (char*) "America/Lima" , 0x022ED8 },
- { (char*) "America/Los_Angeles" , 0x02306C },
- { (char*) "America/Louisville" , 0x023BA3 },
- { (char*) "America/Lower_Princes" , 0x024693 },
- { (char*) "America/Maceio" , 0x024795 },
- { (char*) "America/Managua" , 0x024A8B },
- { (char*) "America/Manaus" , 0x024C45 },
- { (char*) "America/Marigot" , 0x024EAE },
- { (char*) "America/Martinique" , 0x024FB0 },
- { (char*) "America/Matamoros" , 0x0250A4 },
- { (char*) "America/Mazatlan" , 0x025666 },
- { (char*) "America/Mendoza" , 0x025B0C },
- { (char*) "America/Menominee" , 0x025F3E },
- { (char*) "America/Merida" , 0x02684B },
- { (char*) "America/Metlakatla" , 0x026C54 },
- { (char*) "America/Mexico_City" , 0x027206 },
- { (char*) "America/Miquelon" , 0x0276E6 },
- { (char*) "America/Moncton" , 0x027D66 },
- { (char*) "America/Monterrey" , 0x0289DC },
- { (char*) "America/Montevideo" , 0x028DF2 },
- { (char*) "America/Montreal" , 0x0293D6 },
- { (char*) "America/Montserrat" , 0x02A188 },
- { (char*) "America/Nassau" , 0x02A228 },
- { (char*) "America/New_York" , 0x02AB88 },
- { (char*) "America/Nipigon" , 0x02B988 },
- { (char*) "America/Nome" , 0x02C73A },
- { (char*) "America/Noronha" , 0x02D092 },
- { (char*) "America/North_Dakota/Beulah" , 0x02D36C },
- { (char*) "America/North_Dakota/Center" , 0x02DCE9 },
- { (char*) "America/North_Dakota/New_Salem" , 0x02E666 },
- { (char*) "America/Nuuk" , 0x02EFE9 },
- { (char*) "America/Ojinaga" , 0x02F775 },
- { (char*) "America/Panama" , 0x02FD91 },
- { (char*) "America/Pangnirtung" , 0x02FE53 },
- { (char*) "America/Paramaribo" , 0x0306F9 },
- { (char*) "America/Phoenix" , 0x0307FD },
- { (char*) "America/Port-au-Prince" , 0x030989 },
- { (char*) "America/Port_of_Spain" , 0x030F2F },
- { (char*) "America/Porto_Acre" , 0x030FCF },
- { (char*) "America/Porto_Velho" , 0x031241 },
- { (char*) "America/Puerto_Rico" , 0x031487 },
- { (char*) "America/Punta_Arenas" , 0x031589 },
- { (char*) "America/Rainy_River" , 0x031D17 },
- { (char*) "America/Rankin_Inlet" , 0x032857 },
- { (char*) "America/Recife" , 0x03308B },
- { (char*) "America/Regina" , 0x03335F },
- { (char*) "America/Resolute" , 0x033754 },
- { (char*) "America/Rio_Branco" , 0x033F89 },
- { (char*) "America/Rosario" , 0x0341FF },
- { (char*) "America/Santa_Isabel" , 0x034631 },
- { (char*) "America/Santarem" , 0x034F83 },
- { (char*) "America/Santiago" , 0x0351E6 },
- { (char*) "America/Santo_Domingo" , 0x035BD2 },
- { (char*) "America/Sao_Paulo" , 0x035DA8 },
- { (char*) "America/Scoresbysund" , 0x036380 },
- { (char*) "America/Shiprock" , 0x036B17 },
- { (char*) "America/Sitka" , 0x0374BF },
- { (char*) "America/St_Barthelemy" , 0x037DF7 },
- { (char*) "America/St_Johns" , 0x037EF9 },
- { (char*) "America/St_Kitts" , 0x038D6E },
- { (char*) "America/St_Lucia" , 0x038E0E },
- { (char*) "America/St_Thomas" , 0x038ED0 },
- { (char*) "America/St_Vincent" , 0x038F70 },
- { (char*) "America/Swift_Current" , 0x039032 },
- { (char*) "America/Tegucigalpa" , 0x039280 },
- { (char*) "America/Thule" , 0x039388 },
- { (char*) "America/Thunder_Bay" , 0x039980 },
- { (char*) "America/Tijuana" , 0x03A732 },
- { (char*) "America/Toronto" , 0x03B093 },
- { (char*) "America/Tortola" , 0x03BE62 },
- { (char*) "America/Vancouver" , 0x03BF02 },
- { (char*) "America/Virgin" , 0x03CA73 },
- { (char*) "America/Whitehorse" , 0x03CB75 },
- { (char*) "America/Winnipeg" , 0x03D1E1 },
- { (char*) "America/Yakutat" , 0x03DD3E },
- { (char*) "America/Yellowknife" , 0x03E65B },
- { (char*) "Antarctica/Casey" , 0x03EF83 },
- { (char*) "Antarctica/Davis" , 0x03F106 },
- { (char*) "Antarctica/DumontDUrville" , 0x03F232 },
- { (char*) "Antarctica/Macquarie" , 0x03F302 },
- { (char*) "Antarctica/Mawson" , 0x03FBF2 },
- { (char*) "Antarctica/McMurdo" , 0x03FCBD },
- { (char*) "Antarctica/Palmer" , 0x0404B8 },
- { (char*) "Antarctica/Rothera" , 0x040A46 },
- { (char*) "Antarctica/South_Pole" , 0x040AEF },
- { (char*) "Antarctica/Syowa" , 0x041480 },
- { (char*) "Antarctica/Troll" , 0x041528 },
- { (char*) "Antarctica/Vostok" , 0x0419B5 },
- { (char*) "Arctic/Longyearbyen" , 0x041A5E },
- { (char*) "Asia/Aden" , 0x042364 },
- { (char*) "Asia/Almaty" , 0x042407 },
- { (char*) "Asia/Amman" , 0x0427FC },
- { (char*) "Asia/Anadyr" , 0x042DA1 },
- { (char*) "Asia/Aqtau" , 0x043256 },
- { (char*) "Asia/Aqtobe" , 0x043640 },
- { (char*) "Asia/Ashgabat" , 0x043A3E },
- { (char*) "Asia/Ashkhabad" , 0x043CA7 },
- { (char*) "Asia/Atyrau" , 0x043F10 },
- { (char*) "Asia/Baghdad" , 0x044302 },
- { (char*) "Asia/Bahrain" , 0x0446D7 },
- { (char*) "Asia/Baku" , 0x0447C2 },
- { (char*) "Asia/Bangkok" , 0x044C8B },
- { (char*) "Asia/Barnaul" , 0x044D50 },
- { (char*) "Asia/Beirut" , 0x045221 },
- { (char*) "Asia/Bishkek" , 0x045A97 },
- { (char*) "Asia/Brunei" , 0x045E6C },
- { (char*) "Asia/Calcutta" , 0x045F35 },
- { (char*) "Asia/Chita" , 0x04605E },
- { (char*) "Asia/Choibalsan" , 0x046535 },
- { (char*) "Asia/Chongqing" , 0x0468FA },
- { (char*) "Asia/Chungking" , 0x046B37 },
- { (char*) "Asia/Colombo" , 0x046D74 },
- { (char*) "Asia/Dacca" , 0x046EE6 },
- { (char*) "Asia/Damascus" , 0x047035 },
- { (char*) "Asia/Dhaka" , 0x047792 },
- { (char*) "Asia/Dili" , 0x0478E1 },
- { (char*) "Asia/Dubai" , 0x0479C2 },
- { (char*) "Asia/Dushanbe" , 0x047A65 },
- { (char*) "Asia/Famagusta" , 0x047CB2 },
- { (char*) "Asia/Gaza" , 0x0484B9 },
- { (char*) "Asia/Harbin" , 0x0493AF },
- { (char*) "Asia/Hebron" , 0x0495EC },
- { (char*) "Asia/Ho_Chi_Minh" , 0x04A4FD },
- { (char*) "Asia/Hong_Kong" , 0x04A65A },
- { (char*) "Asia/Hovd" , 0x04AB37 },
- { (char*) "Asia/Irkutsk" , 0x04AEDB },
- { (char*) "Asia/Istanbul" , 0x04B3CE },
- { (char*) "Asia/Jakarta" , 0x04BB67 },
- { (char*) "Asia/Jayapura" , 0x04BCFF },
- { (char*) "Asia/Jerusalem" , 0x04BE1E },
- { (char*) "Asia/Kabul" , 0x04C77E },
- { (char*) "Asia/Kamchatka" , 0x04C84C },
- { (char*) "Asia/Karachi" , 0x04CCEA },
- { (char*) "Asia/Kashgar" , 0x04CE71 },
- { (char*) "Asia/Kathmandu" , 0x04CF14 },
- { (char*) "Asia/Katmandu" , 0x04CFE6 },
- { (char*) "Asia/Khandyga" , 0x04D0B8 },
- { (char*) "Asia/Kolkata" , 0x04D5CB },
- { (char*) "Asia/Krasnoyarsk" , 0x04D6F4 },
- { (char*) "Asia/Kuala_Lumpur" , 0x04DBC2 },
- { (char*) "Asia/Kuching" , 0x04DD73 },
- { (char*) "Asia/Kuwait" , 0x04DF62 },
- { (char*) "Asia/Macao" , 0x04E005 },
- { (char*) "Asia/Macau" , 0x04E4DC },
- { (char*) "Asia/Magadan" , 0x04E9B3 },
- { (char*) "Asia/Makassar" , 0x04EE87 },
- { (char*) "Asia/Manila" , 0x04EFDA },
- { (char*) "Asia/Muscat" , 0x04F12E },
- { (char*) "Asia/Nicosia" , 0x04F1D1 },
- { (char*) "Asia/Novokuznetsk" , 0x04F9BD },
- { (char*) "Asia/Novosibirsk" , 0x04FE59 },
- { (char*) "Asia/Omsk" , 0x050330 },
- { (char*) "Asia/Oral" , 0x0507F2 },
- { (char*) "Asia/Phnom_Penh" , 0x050BEC },
- { (char*) "Asia/Pontianak" , 0x050D11 },
- { (char*) "Asia/Pyongyang" , 0x050E94 },
- { (char*) "Asia/Qatar" , 0x050F8D },
- { (char*) "Asia/Qostanay" , 0x051052 },
- { (char*) "Asia/Qyzylorda" , 0x05145D },
- { (char*) "Asia/Rangoon" , 0x051879 },
- { (char*) "Asia/Riyadh" , 0x051983 },
- { (char*) "Asia/Saigon" , 0x051A26 },
- { (char*) "Asia/Sakhalin" , 0x051B83 },
- { (char*) "Asia/Samarkand" , 0x05204B },
- { (char*) "Asia/Seoul" , 0x05229B },
- { (char*) "Asia/Shanghai" , 0x052510 },
- { (char*) "Asia/Singapore" , 0x052759 },
- { (char*) "Asia/Srednekolymsk" , 0x0528F6 },
- { (char*) "Asia/Taipei" , 0x052DCA },
- { (char*) "Asia/Tashkent" , 0x0530CF },
- { (char*) "Asia/Tbilisi" , 0x05332D },
- { (char*) "Asia/Tehran" , 0x053736 },
- { (char*) "Asia/Tel_Aviv" , 0x053C22 },
- { (char*) "Asia/Thimbu" , 0x054582 },
- { (char*) "Asia/Thimphu" , 0x05464B },
- { (char*) "Asia/Tokyo" , 0x054714 },
- { (char*) "Asia/Tomsk" , 0x054855 },
- { (char*) "Asia/Ujung_Pandang" , 0x054D26 },
- { (char*) "Asia/Ulaanbaatar" , 0x054E30 },
- { (char*) "Asia/Ulan_Bator" , 0x0551B9 },
- { (char*) "Asia/Urumqi" , 0x055532 },
- { (char*) "Asia/Ust-Nera" , 0x0555E2 },
- { (char*) "Asia/Vientiane" , 0x055AD8 },
- { (char*) "Asia/Vladivostok" , 0x055C19 },
- { (char*) "Asia/Yakutsk" , 0x0560E2 },
- { (char*) "Asia/Yangon" , 0x0565AA },
- { (char*) "Asia/Yekaterinburg" , 0x0566B4 },
- { (char*) "Asia/Yerevan" , 0x056B9B },
- { (char*) "Atlantic/Azores" , 0x057018 },
- { (char*) "Atlantic/Bermuda" , 0x057DD4 },
- { (char*) "Atlantic/Canary" , 0x05873C },
- { (char*) "Atlantic/Cape_Verde" , 0x058EBF },
- { (char*) "Atlantic/Faeroe" , 0x058FCB },
- { (char*) "Atlantic/Faroe" , 0x0596EE },
- { (char*) "Atlantic/Jan_Mayen" , 0x059E11 },
- { (char*) "Atlantic/Madeira" , 0x05A717 },
- { (char*) "Atlantic/Reykjavik" , 0x05B4E1 },
- { (char*) "Atlantic/South_Georgia" , 0x05B977 },
- { (char*) "Atlantic/St_Helena" , 0x05BA19 },
- { (char*) "Atlantic/Stanley" , 0x05BADB },
- { (char*) "Australia/ACT" , 0x05BF97 },
- { (char*) "Australia/Adelaide" , 0x05C831 },
- { (char*) "Australia/Brisbane" , 0x05D0EC },
- { (char*) "Australia/Broken_Hill" , 0x05D2B2 },
- { (char*) "Australia/Canberra" , 0x05DB8F },
- { (char*) "Australia/Currie" , 0x05E429 },
- { (char*) "Australia/Darwin" , 0x05ED6B },
- { (char*) "Australia/Eucla" , 0x05EECE },
- { (char*) "Australia/Hobart" , 0x05F0BB },
- { (char*) "Australia/LHI" , 0x05FA05 },
- { (char*) "Australia/Lindeman" , 0x060147 },
- { (char*) "Australia/Lord_Howe" , 0x06034D },
- { (char*) "Australia/Melbourne" , 0x060A9F },
- { (char*) "Australia/North" , 0x061341 },
- { (char*) "Australia/NSW" , 0x061492 },
- { (char*) "Australia/Perth" , 0x061D2C },
- { (char*) "Australia/Queensland" , 0x061F14 },
- { (char*) "Australia/South" , 0x0620C3 },
- { (char*) "Australia/Sydney" , 0x06296F },
- { (char*) "Australia/Tasmania" , 0x063225 },
- { (char*) "Australia/Victoria" , 0x063B67 },
- { (char*) "Australia/West" , 0x064401 },
- { (char*) "Australia/Yancowinna" , 0x0645CB },
- { (char*) "Brazil/Acre" , 0x064E8C },
- { (char*) "Brazil/DeNoronha" , 0x0650FE },
- { (char*) "Brazil/East" , 0x0653C8 },
- { (char*) "Brazil/West" , 0x06596A },
- { (char*) "Canada/Atlantic" , 0x065BC4 },
- { (char*) "Canada/Central" , 0x066930 },
- { (char*) "Canada/Eastern" , 0x067470 },
- { (char*) "Canada/Mountain" , 0x068222 },
- { (char*) "Canada/Newfoundland" , 0x068B4A },
- { (char*) "Canada/Pacific" , 0x06999D },
- { (char*) "Canada/Saskatchewan" , 0x06A4F5 },
- { (char*) "Canada/Yukon" , 0x06A8D5 },
- { (char*) "CET" , 0x06AF2F },
- { (char*) "Chile/Continental" , 0x06B769 },
- { (char*) "Chile/EasterIsland" , 0x06C148 },
- { (char*) "CST6CDT" , 0x06C9FF },
- { (char*) "Cuba" , 0x06D311 },
- { (char*) "EET" , 0x06DC8D },
- { (char*) "Egypt" , 0x06E40D },
- { (char*) "Eire" , 0x06ED78 },
- { (char*) "EST" , 0x06FB28 },
- { (char*) "EST5EDT" , 0x06FBA6 },
- { (char*) "Etc/GMT" , 0x0704B8 },
- { (char*) "Etc/GMT+0" , 0x070536 },
- { (char*) "Etc/GMT+1" , 0x0705B4 },
- { (char*) "Etc/GMT+10" , 0x070634 },
- { (char*) "Etc/GMT+11" , 0x0706B5 },
- { (char*) "Etc/GMT+12" , 0x070736 },
- { (char*) "Etc/GMT+2" , 0x0707B7 },
- { (char*) "Etc/GMT+3" , 0x070837 },
- { (char*) "Etc/GMT+4" , 0x0708B7 },
- { (char*) "Etc/GMT+5" , 0x070937 },
- { (char*) "Etc/GMT+6" , 0x0709B7 },
- { (char*) "Etc/GMT+7" , 0x070A37 },
- { (char*) "Etc/GMT+8" , 0x070AB7 },
- { (char*) "Etc/GMT+9" , 0x070B37 },
- { (char*) "Etc/GMT-0" , 0x070BB7 },
- { (char*) "Etc/GMT-1" , 0x070C35 },
- { (char*) "Etc/GMT-10" , 0x070CB6 },
- { (char*) "Etc/GMT-11" , 0x070D38 },
- { (char*) "Etc/GMT-12" , 0x070DBA },
- { (char*) "Etc/GMT-13" , 0x070E3C },
- { (char*) "Etc/GMT-14" , 0x070EBE },
- { (char*) "Etc/GMT-2" , 0x070F40 },
- { (char*) "Etc/GMT-3" , 0x070FC1 },
- { (char*) "Etc/GMT-4" , 0x071042 },
- { (char*) "Etc/GMT-5" , 0x0710C3 },
- { (char*) "Etc/GMT-6" , 0x071144 },
- { (char*) "Etc/GMT-7" , 0x0711C5 },
- { (char*) "Etc/GMT-8" , 0x071246 },
- { (char*) "Etc/GMT-9" , 0x0712C7 },
- { (char*) "Etc/GMT0" , 0x071348 },
- { (char*) "Etc/Greenwich" , 0x0713C6 },
- { (char*) "Etc/UCT" , 0x071444 },
- { (char*) "Etc/Universal" , 0x0714C2 },
- { (char*) "Etc/UTC" , 0x071540 },
- { (char*) "Etc/Zulu" , 0x0715BE },
- { (char*) "Europe/Amsterdam" , 0x07163C },
- { (char*) "Europe/Andorra" , 0x0721A6 },
- { (char*) "Europe/Astrakhan" , 0x072880 },
- { (char*) "Europe/Athens" , 0x072D1D },
- { (char*) "Europe/Belfast" , 0x0735FF },
- { (char*) "Europe/Belgrade" , 0x07445B },
- { (char*) "Europe/Berlin" , 0x074BE7 },
- { (char*) "Europe/Bratislava" , 0x0754FC },
- { (char*) "Europe/Brussels" , 0x075E05 },
- { (char*) "Europe/Bucharest" , 0x076986 },
- { (char*) "Europe/Budapest" , 0x07721A },
- { (char*) "Europe/Busingen" , 0x077B66 },
- { (char*) "Europe/Chisinau" , 0x0782EF },
- { (char*) "Europe/Copenhagen" , 0x078C51 },
- { (char*) "Europe/Dublin" , 0x0794B6 },
- { (char*) "Europe/Gibraltar" , 0x07A266 },
- { (char*) "Europe/Guernsey" , 0x07AE6E },
- { (char*) "Europe/Helsinki" , 0x07BD0E },
- { (char*) "Europe/Isle_of_Man" , 0x07C486 },
- { (char*) "Europe/Istanbul" , 0x07D2D2 },
- { (char*) "Europe/Jersey" , 0x07DA6B },
- { (char*) "Europe/Kaliningrad" , 0x07E90B },
- { (char*) "Europe/Kiev" , 0x07EF00 },
- { (char*) "Europe/Kirov" , 0x07F754 },
- { (char*) "Europe/Kyiv" , 0x07FC0F },
- { (char*) "Europe/Lisbon" , 0x080472 },
- { (char*) "Europe/Ljubljana" , 0x08123A },
- { (char*) "Europe/London" , 0x0819C6 },
- { (char*) "Europe/Luxembourg" , 0x082822 },
- { (char*) "Europe/Madrid" , 0x0833B0 },
- { (char*) "Europe/Malta" , 0x083E02 },
- { (char*) "Europe/Mariehamn" , 0x08484A },
- { (char*) "Europe/Minsk" , 0x084FC2 },
- { (char*) "Europe/Monaco" , 0x0854E9 },
- { (char*) "Europe/Moscow" , 0x086075 },
- { (char*) "Europe/Nicosia" , 0x086694 },
- { (char*) "Europe/Oslo" , 0x086E72 },
- { (char*) "Europe/Paris" , 0x087732 },
- { (char*) "Europe/Podgorica" , 0x0882D0 },
- { (char*) "Europe/Prague" , 0x088A5C },
- { (char*) "Europe/Riga" , 0x089365 },
- { (char*) "Europe/Rome" , 0x089C07 },
- { (char*) "Europe/Samara" , 0x08A664 },
- { (char*) "Europe/San_Marino" , 0x08AB3A },
- { (char*) "Europe/Sarajevo" , 0x08B597 },
- { (char*) "Europe/Saratov" , 0x08BD23 },
- { (char*) "Europe/Simferopol" , 0x08C1D0 },
- { (char*) "Europe/Skopje" , 0x08C79F },
- { (char*) "Europe/Sofia" , 0x08CF2B },
- { (char*) "Europe/Stockholm" , 0x08D754 },
- { (char*) "Europe/Tallinn" , 0x08DED5 },
- { (char*) "Europe/Tirane" , 0x08E745 },
- { (char*) "Europe/Tiraspol" , 0x08EF75 },
- { (char*) "Europe/Ulyanovsk" , 0x08F8D7 },
- { (char*) "Europe/Uzhgorod" , 0x08FDDA },
- { (char*) "Europe/Vaduz" , 0x09062E },
- { (char*) "Europe/Vatican" , 0x090D9A },
- { (char*) "Europe/Vienna" , 0x0917F7 },
- { (char*) "Europe/Vilnius" , 0x09209B },
- { (char*) "Europe/Volgograd" , 0x092919 },
- { (char*) "Europe/Warsaw" , 0x092DE0 },
- { (char*) "Europe/Zagreb" , 0x09384A },
- { (char*) "Europe/Zaporozhye" , 0x093FD6 },
- { (char*) "Europe/Zurich" , 0x09482A },
- { (char*) "Factory" , 0x094FAB },
- { (char*) "GB" , 0x09502B },
- { (char*) "GB-Eire" , 0x095E87 },
- { (char*) "GMT" , 0x096CE3 },
- { (char*) "GMT+0" , 0x096D61 },
- { (char*) "GMT-0" , 0x096DDF },
- { (char*) "GMT0" , 0x096E5D },
- { (char*) "Greenwich" , 0x096EDB },
- { (char*) "Hongkong" , 0x096F59 },
- { (char*) "HST" , 0x097436 },
- { (char*) "Iceland" , 0x0974B5 },
- { (char*) "Indian/Antananarivo" , 0x097555 },
- { (char*) "Indian/Chagos" , 0x09763C },
- { (char*) "Indian/Christmas" , 0x097701 },
- { (char*) "Indian/Cocos" , 0x0977A4 },
- { (char*) "Indian/Comoro" , 0x097850 },
- { (char*) "Indian/Kerguelen" , 0x0978F1 },
- { (char*) "Indian/Mahe" , 0x097994 },
- { (char*) "Indian/Maldives" , 0x097A37 },
- { (char*) "Indian/Mauritius" , 0x097AFC },
- { (char*) "Indian/Mayotte" , 0x097BEB },
- { (char*) "Indian/Reunion" , 0x097C8C },
- { (char*) "Iran" , 0x097D2F },
- { (char*) "Israel" , 0x09821B },
- { (char*) "Jamaica" , 0x098B7B },
- { (char*) "Japan" , 0x098D69 },
- { (char*) "Kwajalein" , 0x098EAA },
- { (char*) "Libya" , 0x098FE4 },
- { (char*) "MET" , 0x099261 },
- { (char*) "Mexico/BajaNorte" , 0x099A9B },
- { (char*) "Mexico/BajaSur" , 0x09A3ED },
- { (char*) "Mexico/General" , 0x09A861 },
- { (char*) "MST" , 0x09AD33 },
- { (char*) "MST7MDT" , 0x09ADB1 },
- { (char*) "Navajo" , 0x09B6C3 },
- { (char*) "NZ" , 0x09C06B },
- { (char*) "NZ-CHAT" , 0x09C9FC },
- { (char*) "Pacific/Apia" , 0x09D20E },
- { (char*) "Pacific/Auckland" , 0x09D470 },
- { (char*) "Pacific/Bougainville" , 0x09DE14 },
- { (char*) "Pacific/Chatham" , 0x09DF2A },
- { (char*) "Pacific/Chuuk" , 0x09E74B },
- { (char*) "Pacific/Easter" , 0x09E865 },
- { (char*) "Pacific/Efate" , 0x09F129 },
- { (char*) "Pacific/Enderbury" , 0x09F341 },
- { (char*) "Pacific/Fakaofo" , 0x09F429 },
- { (char*) "Pacific/Fiji" , 0x09F4EF },
- { (char*) "Pacific/Funafuti" , 0x09F72F },
- { (char*) "Pacific/Galapagos" , 0x09F7D3 },
- { (char*) "Pacific/Gambier" , 0x09F8D0 },
- { (char*) "Pacific/Guadalcanal" , 0x09F981 },
- { (char*) "Pacific/Guam" , 0x09FA25 },
- { (char*) "Pacific/Honolulu" , 0x09FC1F },
- { (char*) "Pacific/Johnston" , 0x09FD7A },
- { (char*) "Pacific/Kanton" , 0x09FECF },
- { (char*) "Pacific/Kiritimati" , 0x09FFC6 },
- { (char*) "Pacific/Kosrae" , 0x0A00BE },
- { (char*) "Pacific/Kwajalein" , 0x0A0221 },
- { (char*) "Pacific/Majuro" , 0x0A0364 },
- { (char*) "Pacific/Marquesas" , 0x0A04B0 },
- { (char*) "Pacific/Midway" , 0x0A056C },
- { (char*) "Pacific/Nauru" , 0x0A065F },
- { (char*) "Pacific/Niue" , 0x0A0759 },
- { (char*) "Pacific/Norfolk" , 0x0A0822 },
- { (char*) "Pacific/Noumea" , 0x0A0B90 },
- { (char*) "Pacific/Pago_Pago" , 0x0A0CBE },
- { (char*) "Pacific/Palau" , 0x0A0D79 },
- { (char*) "Pacific/Pitcairn" , 0x0A0E2B },
- { (char*) "Pacific/Pohnpei" , 0x0A0EF3 },
- { (char*) "Pacific/Ponape" , 0x0A102E },
- { (char*) "Pacific/Port_Moresby" , 0x0A10D2 },
- { (char*) "Pacific/Rarotonga" , 0x0A11A2 },
- { (char*) "Pacific/Saipan" , 0x0A13FB },
- { (char*) "Pacific/Samoa" , 0x0A15E7 },
- { (char*) "Pacific/Tahiti" , 0x0A16A2 },
- { (char*) "Pacific/Tarawa" , 0x0A1754 },
- { (char*) "Pacific/Tongatapu" , 0x0A1807 },
- { (char*) "Pacific/Truk" , 0x0A1979 },
- { (char*) "Pacific/Wake" , 0x0A1A31 },
- { (char*) "Pacific/Wallis" , 0x0A1AE0 },
- { (char*) "Pacific/Yap" , 0x0A1B84 },
- { (char*) "Poland" , 0x0A1C3C },
- { (char*) "Portugal" , 0x0A26A6 },
- { (char*) "PRC" , 0x0A345B },
- { (char*) "PST8PDT" , 0x0A3698 },
- { (char*) "ROC" , 0x0A3FAA },
- { (char*) "ROK" , 0x0A42AF },
- { (char*) "Singapore" , 0x0A4524 },
- { (char*) "Turkey" , 0x0A46C1 },
- { (char*) "UCT" , 0x0A4E5A },
- { (char*) "Universal" , 0x0A4ED8 },
- { (char*) "US/Alaska" , 0x0A4F56 },
- { (char*) "US/Aleutian" , 0x0A58A5 },
- { (char*) "US/Arizona" , 0x0A61E5 },
- { (char*) "US/Central" , 0x0A6359 },
- { (char*) "US/East-Indiana" , 0x0A716D },
- { (char*) "US/Eastern" , 0x0A780B },
- { (char*) "US/Hawaii" , 0x0A85F7 },
- { (char*) "US/Indiana-Starke" , 0x0A874C },
- { (char*) "US/Michigan" , 0x0A90E4 },
- { (char*) "US/Mountain" , 0x0A99A6 },
- { (char*) "US/Pacific" , 0x0AA34E },
- { (char*) "US/Samoa" , 0x0AAE7E },
- { (char*) "UTC" , 0x0AAF39 },
- { (char*) "W-SU" , 0x0AAFB7 },
- { (char*) "WET" , 0x0AB5C2 },
- { (char*) "Zulu" , 0x0ABD3F },
+ { (char*) "America/Eirunepe" , 0x014DDC },
+ { (char*) "America/El_Salvador" , 0x015079 },
+ { (char*) "America/Ensenada" , 0x015165 },
+ { (char*) "America/Fort_Nelson" , 0x015AB7 },
+ { (char*) "America/Fort_Wayne" , 0x016397 },
+ { (char*) "America/Fortaleza" , 0x016A35 },
+ { (char*) "America/Glace_Bay" , 0x016D25 },
+ { (char*) "America/Godthab" , 0x0175DC },
+ { (char*) "America/Goose_Bay" , 0x017D49 },
+ { (char*) "America/Grand_Turk" , 0x0189FF },
+ { (char*) "America/Grenada" , 0x019135 },
+ { (char*) "America/Guadeloupe" , 0x0191D5 },
+ { (char*) "America/Guatemala" , 0x019275 },
+ { (char*) "America/Guayaquil" , 0x019399 },
+ { (char*) "America/Guyana" , 0x01949F },
+ { (char*) "America/Halifax" , 0x0195A3 },
+ { (char*) "America/Havana" , 0x01A32D },
+ { (char*) "America/Hermosillo" , 0x01ACA9 },
+ { (char*) "America/Indiana/Indianapolis" , 0x01AE83 },
+ { (char*) "America/Indiana/Knox" , 0x01B53A },
+ { (char*) "America/Indiana/Marengo" , 0x01BEE7 },
+ { (char*) "America/Indiana/Petersburg" , 0x01C5D4 },
+ { (char*) "America/Indiana/Tell_City" , 0x01CD73 },
+ { (char*) "America/Indiana/Vevay" , 0x01D437 },
+ { (char*) "America/Indiana/Vincennes" , 0x01D9F3 },
+ { (char*) "America/Indiana/Winamac" , 0x01E0C9 },
+ { (char*) "America/Indianapolis" , 0x01E7ED },
+ { (char*) "America/Inuvik" , 0x01EE8B },
+ { (char*) "America/Iqaluit" , 0x01F6C5 },
+ { (char*) "America/Jamaica" , 0x01FF84 },
+ { (char*) "America/Jujuy" , 0x020172 },
+ { (char*) "America/Juneau" , 0x020588 },
+ { (char*) "America/Kentucky/Louisville" , 0x020ED9 },
+ { (char*) "America/Kentucky/Monticello" , 0x0219E7 },
+ { (char*) "America/Knox_IN" , 0x022347 },
+ { (char*) "America/Kralendijk" , 0x022CDF },
+ { (char*) "America/La_Paz" , 0x022DE1 },
+ { (char*) "America/Lima" , 0x022EC7 },
+ { (char*) "America/Los_Angeles" , 0x02305B },
+ { (char*) "America/Louisville" , 0x023B92 },
+ { (char*) "America/Lower_Princes" , 0x024682 },
+ { (char*) "America/Maceio" , 0x024784 },
+ { (char*) "America/Managua" , 0x024A7A },
+ { (char*) "America/Manaus" , 0x024C34 },
+ { (char*) "America/Marigot" , 0x024E9D },
+ { (char*) "America/Martinique" , 0x024F9F },
+ { (char*) "America/Matamoros" , 0x025093 },
+ { (char*) "America/Mazatlan" , 0x025655 },
+ { (char*) "America/Mendoza" , 0x025AFB },
+ { (char*) "America/Menominee" , 0x025F2D },
+ { (char*) "America/Merida" , 0x02683A },
+ { (char*) "America/Metlakatla" , 0x026C43 },
+ { (char*) "America/Mexico_City" , 0x0271F5 },
+ { (char*) "America/Miquelon" , 0x0276D5 },
+ { (char*) "America/Moncton" , 0x027D55 },
+ { (char*) "America/Monterrey" , 0x0289CB },
+ { (char*) "America/Montevideo" , 0x028DE1 },
+ { (char*) "America/Montreal" , 0x0293C5 },
+ { (char*) "America/Montserrat" , 0x02A177 },
+ { (char*) "America/Nassau" , 0x02A217 },
+ { (char*) "America/New_York" , 0x02AB77 },
+ { (char*) "America/Nipigon" , 0x02B977 },
+ { (char*) "America/Nome" , 0x02C729 },
+ { (char*) "America/Noronha" , 0x02D081 },
+ { (char*) "America/North_Dakota/Beulah" , 0x02D35B },
+ { (char*) "America/North_Dakota/Center" , 0x02DCD8 },
+ { (char*) "America/North_Dakota/New_Salem" , 0x02E655 },
+ { (char*) "America/Nuuk" , 0x02EFD8 },
+ { (char*) "America/Ojinaga" , 0x02F756 },
+ { (char*) "America/Panama" , 0x02FD72 },
+ { (char*) "America/Pangnirtung" , 0x02FE34 },
+ { (char*) "America/Paramaribo" , 0x0306DA },
+ { (char*) "America/Phoenix" , 0x0307DE },
+ { (char*) "America/Port-au-Prince" , 0x03096A },
+ { (char*) "America/Port_of_Spain" , 0x030F10 },
+ { (char*) "America/Porto_Acre" , 0x030FB0 },
+ { (char*) "America/Porto_Velho" , 0x031222 },
+ { (char*) "America/Puerto_Rico" , 0x031468 },
+ { (char*) "America/Punta_Arenas" , 0x03156A },
+ { (char*) "America/Rainy_River" , 0x031CF8 },
+ { (char*) "America/Rankin_Inlet" , 0x032838 },
+ { (char*) "America/Recife" , 0x03306C },
+ { (char*) "America/Regina" , 0x033340 },
+ { (char*) "America/Resolute" , 0x033735 },
+ { (char*) "America/Rio_Branco" , 0x033F6A },
+ { (char*) "America/Rosario" , 0x0341E0 },
+ { (char*) "America/Santa_Isabel" , 0x034612 },
+ { (char*) "America/Santarem" , 0x034F64 },
+ { (char*) "America/Santiago" , 0x0351C7 },
+ { (char*) "America/Santo_Domingo" , 0x035BB3 },
+ { (char*) "America/Sao_Paulo" , 0x035D89 },
+ { (char*) "America/Scoresbysund" , 0x036361 },
+ { (char*) "America/Shiprock" , 0x036B19 },
+ { (char*) "America/Sitka" , 0x0374C1 },
+ { (char*) "America/St_Barthelemy" , 0x037DF9 },
+ { (char*) "America/St_Johns" , 0x037EFB },
+ { (char*) "America/St_Kitts" , 0x038D69 },
+ { (char*) "America/St_Lucia" , 0x038E09 },
+ { (char*) "America/St_Thomas" , 0x038ECB },
+ { (char*) "America/St_Vincent" , 0x038F6B },
+ { (char*) "America/Swift_Current" , 0x03902D },
+ { (char*) "America/Tegucigalpa" , 0x03927B },
+ { (char*) "America/Thule" , 0x039383 },
+ { (char*) "America/Thunder_Bay" , 0x03997B },
+ { (char*) "America/Tijuana" , 0x03A72D },
+ { (char*) "America/Toronto" , 0x03B08E },
+ { (char*) "America/Tortola" , 0x03BE5E },
+ { (char*) "America/Vancouver" , 0x03BEFE },
+ { (char*) "America/Virgin" , 0x03CA6F },
+ { (char*) "America/Whitehorse" , 0x03CB71 },
+ { (char*) "America/Winnipeg" , 0x03D1DD },
+ { (char*) "America/Yakutat" , 0x03DD3A },
+ { (char*) "America/Yellowknife" , 0x03E657 },
+ { (char*) "Antarctica/Casey" , 0x03EF7F },
+ { (char*) "Antarctica/Davis" , 0x03F137 },
+ { (char*) "Antarctica/DumontDUrville" , 0x03F263 },
+ { (char*) "Antarctica/Macquarie" , 0x03F333 },
+ { (char*) "Antarctica/Mawson" , 0x03FC23 },
+ { (char*) "Antarctica/McMurdo" , 0x03FCEE },
+ { (char*) "Antarctica/Palmer" , 0x0404E9 },
+ { (char*) "Antarctica/Rothera" , 0x040A77 },
+ { (char*) "Antarctica/South_Pole" , 0x040B20 },
+ { (char*) "Antarctica/Syowa" , 0x0414B1 },
+ { (char*) "Antarctica/Troll" , 0x041559 },
+ { (char*) "Antarctica/Vostok" , 0x0419E6 },
+ { (char*) "Arctic/Longyearbyen" , 0x041ACD },
+ { (char*) "Asia/Aden" , 0x0423D3 },
+ { (char*) "Asia/Almaty" , 0x042476 },
+ { (char*) "Asia/Amman" , 0x04286B },
+ { (char*) "Asia/Anadyr" , 0x042E10 },
+ { (char*) "Asia/Aqtau" , 0x0432C5 },
+ { (char*) "Asia/Aqtobe" , 0x0436AF },
+ { (char*) "Asia/Ashgabat" , 0x043AAD },
+ { (char*) "Asia/Ashkhabad" , 0x043D16 },
+ { (char*) "Asia/Atyrau" , 0x043F7F },
+ { (char*) "Asia/Baghdad" , 0x044371 },
+ { (char*) "Asia/Bahrain" , 0x044746 },
+ { (char*) "Asia/Baku" , 0x044831 },
+ { (char*) "Asia/Bangkok" , 0x044CFA },
+ { (char*) "Asia/Barnaul" , 0x044DBF },
+ { (char*) "Asia/Beirut" , 0x045290 },
+ { (char*) "Asia/Bishkek" , 0x045B06 },
+ { (char*) "Asia/Brunei" , 0x045EDB },
+ { (char*) "Asia/Calcutta" , 0x045FA4 },
+ { (char*) "Asia/Chita" , 0x0460CD },
+ { (char*) "Asia/Choibalsan" , 0x0465A4 },
+ { (char*) "Asia/Chongqing" , 0x046969 },
+ { (char*) "Asia/Chungking" , 0x046BA6 },
+ { (char*) "Asia/Colombo" , 0x046DE3 },
+ { (char*) "Asia/Dacca" , 0x046F55 },
+ { (char*) "Asia/Damascus" , 0x0470A4 },
+ { (char*) "Asia/Dhaka" , 0x047801 },
+ { (char*) "Asia/Dili" , 0x047950 },
+ { (char*) "Asia/Dubai" , 0x047A31 },
+ { (char*) "Asia/Dushanbe" , 0x047AD4 },
+ { (char*) "Asia/Famagusta" , 0x047D21 },
+ { (char*) "Asia/Gaza" , 0x048528 },
+ { (char*) "Asia/Harbin" , 0x049454 },
+ { (char*) "Asia/Hebron" , 0x049691 },
+ { (char*) "Asia/Ho_Chi_Minh" , 0x04A5D8 },
+ { (char*) "Asia/Hong_Kong" , 0x04A735 },
+ { (char*) "Asia/Hovd" , 0x04AC12 },
+ { (char*) "Asia/Irkutsk" , 0x04AFB6 },
+ { (char*) "Asia/Istanbul" , 0x04B4A9 },
+ { (char*) "Asia/Jakarta" , 0x04BC42 },
+ { (char*) "Asia/Jayapura" , 0x04BDDA },
+ { (char*) "Asia/Jerusalem" , 0x04BEF9 },
+ { (char*) "Asia/Kabul" , 0x04C859 },
+ { (char*) "Asia/Kamchatka" , 0x04C927 },
+ { (char*) "Asia/Karachi" , 0x04CDC5 },
+ { (char*) "Asia/Kashgar" , 0x04CF4C },
+ { (char*) "Asia/Kathmandu" , 0x04CFEF },
+ { (char*) "Asia/Katmandu" , 0x04D0C1 },
+ { (char*) "Asia/Khandyga" , 0x04D193 },
+ { (char*) "Asia/Kolkata" , 0x04D6A6 },
+ { (char*) "Asia/Krasnoyarsk" , 0x04D7CF },
+ { (char*) "Asia/Kuala_Lumpur" , 0x04DC9D },
+ { (char*) "Asia/Kuching" , 0x04DE4E },
+ { (char*) "Asia/Kuwait" , 0x04E03D },
+ { (char*) "Asia/Macao" , 0x04E0E0 },
+ { (char*) "Asia/Macau" , 0x04E5B7 },
+ { (char*) "Asia/Magadan" , 0x04EA8E },
+ { (char*) "Asia/Makassar" , 0x04EF62 },
+ { (char*) "Asia/Manila" , 0x04F0B5 },
+ { (char*) "Asia/Muscat" , 0x04F209 },
+ { (char*) "Asia/Nicosia" , 0x04F2AC },
+ { (char*) "Asia/Novokuznetsk" , 0x04FA98 },
+ { (char*) "Asia/Novosibirsk" , 0x04FF34 },
+ { (char*) "Asia/Omsk" , 0x05040B },
+ { (char*) "Asia/Oral" , 0x0508CD },
+ { (char*) "Asia/Phnom_Penh" , 0x050CC7 },
+ { (char*) "Asia/Pontianak" , 0x050DEC },
+ { (char*) "Asia/Pyongyang" , 0x050F6F },
+ { (char*) "Asia/Qatar" , 0x051068 },
+ { (char*) "Asia/Qostanay" , 0x05112D },
+ { (char*) "Asia/Qyzylorda" , 0x051538 },
+ { (char*) "Asia/Rangoon" , 0x051954 },
+ { (char*) "Asia/Riyadh" , 0x051A5E },
+ { (char*) "Asia/Saigon" , 0x051B01 },
+ { (char*) "Asia/Sakhalin" , 0x051C5E },
+ { (char*) "Asia/Samarkand" , 0x052126 },
+ { (char*) "Asia/Seoul" , 0x052376 },
+ { (char*) "Asia/Shanghai" , 0x0525EB },
+ { (char*) "Asia/Singapore" , 0x052834 },
+ { (char*) "Asia/Srednekolymsk" , 0x0529D1 },
+ { (char*) "Asia/Taipei" , 0x052EA5 },
+ { (char*) "Asia/Tashkent" , 0x0531AA },
+ { (char*) "Asia/Tbilisi" , 0x053408 },
+ { (char*) "Asia/Tehran" , 0x053811 },
+ { (char*) "Asia/Tel_Aviv" , 0x053CFD },
+ { (char*) "Asia/Thimbu" , 0x05465D },
+ { (char*) "Asia/Thimphu" , 0x054726 },
+ { (char*) "Asia/Tokyo" , 0x0547EF },
+ { (char*) "Asia/Tomsk" , 0x054930 },
+ { (char*) "Asia/Ujung_Pandang" , 0x054E01 },
+ { (char*) "Asia/Ulaanbaatar" , 0x054F0B },
+ { (char*) "Asia/Ulan_Bator" , 0x055294 },
+ { (char*) "Asia/Urumqi" , 0x05560D },
+ { (char*) "Asia/Ust-Nera" , 0x0556BD },
+ { (char*) "Asia/Vientiane" , 0x055BB3 },
+ { (char*) "Asia/Vladivostok" , 0x055CF4 },
+ { (char*) "Asia/Yakutsk" , 0x0561BD },
+ { (char*) "Asia/Yangon" , 0x056685 },
+ { (char*) "Asia/Yekaterinburg" , 0x05678F },
+ { (char*) "Asia/Yerevan" , 0x056C76 },
+ { (char*) "Atlantic/Azores" , 0x0570F3 },
+ { (char*) "Atlantic/Bermuda" , 0x057EAF },
+ { (char*) "Atlantic/Canary" , 0x058817 },
+ { (char*) "Atlantic/Cape_Verde" , 0x058F9A },
+ { (char*) "Atlantic/Faeroe" , 0x0590A6 },
+ { (char*) "Atlantic/Faroe" , 0x0597C9 },
+ { (char*) "Atlantic/Jan_Mayen" , 0x059EEC },
+ { (char*) "Atlantic/Madeira" , 0x05A7F2 },
+ { (char*) "Atlantic/Reykjavik" , 0x05B5BC },
+ { (char*) "Atlantic/South_Georgia" , 0x05BA52 },
+ { (char*) "Atlantic/St_Helena" , 0x05BAF4 },
+ { (char*) "Atlantic/Stanley" , 0x05BBB6 },
+ { (char*) "Australia/ACT" , 0x05C072 },
+ { (char*) "Australia/Adelaide" , 0x05C90C },
+ { (char*) "Australia/Brisbane" , 0x05D1C7 },
+ { (char*) "Australia/Broken_Hill" , 0x05D38D },
+ { (char*) "Australia/Canberra" , 0x05DC6A },
+ { (char*) "Australia/Currie" , 0x05E504 },
+ { (char*) "Australia/Darwin" , 0x05EE46 },
+ { (char*) "Australia/Eucla" , 0x05EFA9 },
+ { (char*) "Australia/Hobart" , 0x05F196 },
+ { (char*) "Australia/LHI" , 0x05FAE0 },
+ { (char*) "Australia/Lindeman" , 0x060222 },
+ { (char*) "Australia/Lord_Howe" , 0x060428 },
+ { (char*) "Australia/Melbourne" , 0x060B7A },
+ { (char*) "Australia/North" , 0x06141C },
+ { (char*) "Australia/NSW" , 0x06156D },
+ { (char*) "Australia/Perth" , 0x061E07 },
+ { (char*) "Australia/Queensland" , 0x061FEF },
+ { (char*) "Australia/South" , 0x06219E },
+ { (char*) "Australia/Sydney" , 0x062A4A },
+ { (char*) "Australia/Tasmania" , 0x063300 },
+ { (char*) "Australia/Victoria" , 0x063C42 },
+ { (char*) "Australia/West" , 0x0644DC },
+ { (char*) "Australia/Yancowinna" , 0x0646A6 },
+ { (char*) "Brazil/Acre" , 0x064F67 },
+ { (char*) "Brazil/DeNoronha" , 0x0651D9 },
+ { (char*) "Brazil/East" , 0x0654A3 },
+ { (char*) "Brazil/West" , 0x065A45 },
+ { (char*) "Canada/Atlantic" , 0x065C9F },
+ { (char*) "Canada/Central" , 0x066A0B },
+ { (char*) "Canada/Eastern" , 0x06754B },
+ { (char*) "Canada/Mountain" , 0x0682FD },
+ { (char*) "Canada/Newfoundland" , 0x068C25 },
+ { (char*) "Canada/Pacific" , 0x069A78 },
+ { (char*) "Canada/Saskatchewan" , 0x06A5D0 },
+ { (char*) "Canada/Yukon" , 0x06A9B0 },
+ { (char*) "CET" , 0x06B00A },
+ { (char*) "Chile/Continental" , 0x06B844 },
+ { (char*) "Chile/EasterIsland" , 0x06C223 },
+ { (char*) "CST6CDT" , 0x06CADA },
+ { (char*) "Cuba" , 0x06D3EC },
+ { (char*) "EET" , 0x06DD68 },
+ { (char*) "Egypt" , 0x06E4E8 },
+ { (char*) "Eire" , 0x06EE53 },
+ { (char*) "EST" , 0x06FC03 },
+ { (char*) "EST5EDT" , 0x06FC81 },
+ { (char*) "Etc/GMT" , 0x070593 },
+ { (char*) "Etc/GMT+0" , 0x070611 },
+ { (char*) "Etc/GMT+1" , 0x07068F },
+ { (char*) "Etc/GMT+10" , 0x07070F },
+ { (char*) "Etc/GMT+11" , 0x070790 },
+ { (char*) "Etc/GMT+12" , 0x070811 },
+ { (char*) "Etc/GMT+2" , 0x070892 },
+ { (char*) "Etc/GMT+3" , 0x070912 },
+ { (char*) "Etc/GMT+4" , 0x070992 },
+ { (char*) "Etc/GMT+5" , 0x070A12 },
+ { (char*) "Etc/GMT+6" , 0x070A92 },
+ { (char*) "Etc/GMT+7" , 0x070B12 },
+ { (char*) "Etc/GMT+8" , 0x070B92 },
+ { (char*) "Etc/GMT+9" , 0x070C12 },
+ { (char*) "Etc/GMT-0" , 0x070C92 },
+ { (char*) "Etc/GMT-1" , 0x070D10 },
+ { (char*) "Etc/GMT-10" , 0x070D91 },
+ { (char*) "Etc/GMT-11" , 0x070E13 },
+ { (char*) "Etc/GMT-12" , 0x070E95 },
+ { (char*) "Etc/GMT-13" , 0x070F17 },
+ { (char*) "Etc/GMT-14" , 0x070F99 },
+ { (char*) "Etc/GMT-2" , 0x07101B },
+ { (char*) "Etc/GMT-3" , 0x07109C },
+ { (char*) "Etc/GMT-4" , 0x07111D },
+ { (char*) "Etc/GMT-5" , 0x07119E },
+ { (char*) "Etc/GMT-6" , 0x07121F },
+ { (char*) "Etc/GMT-7" , 0x0712A0 },
+ { (char*) "Etc/GMT-8" , 0x071321 },
+ { (char*) "Etc/GMT-9" , 0x0713A2 },
+ { (char*) "Etc/GMT0" , 0x071423 },
+ { (char*) "Etc/Greenwich" , 0x0714A1 },
+ { (char*) "Etc/UCT" , 0x07151F },
+ { (char*) "Etc/Universal" , 0x07159D },
+ { (char*) "Etc/UTC" , 0x07161B },
+ { (char*) "Etc/Zulu" , 0x071699 },
+ { (char*) "Europe/Amsterdam" , 0x071717 },
+ { (char*) "Europe/Andorra" , 0x072281 },
+ { (char*) "Europe/Astrakhan" , 0x07295B },
+ { (char*) "Europe/Athens" , 0x072DF8 },
+ { (char*) "Europe/Belfast" , 0x0736DA },
+ { (char*) "Europe/Belgrade" , 0x074536 },
+ { (char*) "Europe/Berlin" , 0x074CC2 },
+ { (char*) "Europe/Bratislava" , 0x0755D7 },
+ { (char*) "Europe/Brussels" , 0x075EE0 },
+ { (char*) "Europe/Bucharest" , 0x076A61 },
+ { (char*) "Europe/Budapest" , 0x0772F5 },
+ { (char*) "Europe/Busingen" , 0x077C41 },
+ { (char*) "Europe/Chisinau" , 0x0783CA },
+ { (char*) "Europe/Copenhagen" , 0x078D2C },
+ { (char*) "Europe/Dublin" , 0x079591 },
+ { (char*) "Europe/Gibraltar" , 0x07A341 },
+ { (char*) "Europe/Guernsey" , 0x07AF49 },
+ { (char*) "Europe/Helsinki" , 0x07BDE9 },
+ { (char*) "Europe/Isle_of_Man" , 0x07C561 },
+ { (char*) "Europe/Istanbul" , 0x07D3AD },
+ { (char*) "Europe/Jersey" , 0x07DB46 },
+ { (char*) "Europe/Kaliningrad" , 0x07E9E6 },
+ { (char*) "Europe/Kiev" , 0x07EFDB },
+ { (char*) "Europe/Kirov" , 0x07F82F },
+ { (char*) "Europe/Kyiv" , 0x07FCEA },
+ { (char*) "Europe/Lisbon" , 0x08054D },
+ { (char*) "Europe/Ljubljana" , 0x081315 },
+ { (char*) "Europe/London" , 0x081AA1 },
+ { (char*) "Europe/Luxembourg" , 0x0828FD },
+ { (char*) "Europe/Madrid" , 0x08348B },
+ { (char*) "Europe/Malta" , 0x083EDD },
+ { (char*) "Europe/Mariehamn" , 0x084925 },
+ { (char*) "Europe/Minsk" , 0x08509D },
+ { (char*) "Europe/Monaco" , 0x0855C4 },
+ { (char*) "Europe/Moscow" , 0x086150 },
+ { (char*) "Europe/Nicosia" , 0x08676F },
+ { (char*) "Europe/Oslo" , 0x086F4D },
+ { (char*) "Europe/Paris" , 0x08780D },
+ { (char*) "Europe/Podgorica" , 0x0883AB },
+ { (char*) "Europe/Prague" , 0x088B37 },
+ { (char*) "Europe/Riga" , 0x089440 },
+ { (char*) "Europe/Rome" , 0x089CE2 },
+ { (char*) "Europe/Samara" , 0x08A73F },
+ { (char*) "Europe/San_Marino" , 0x08AC15 },
+ { (char*) "Europe/Sarajevo" , 0x08B672 },
+ { (char*) "Europe/Saratov" , 0x08BDFE },
+ { (char*) "Europe/Simferopol" , 0x08C2AB },
+ { (char*) "Europe/Skopje" , 0x08C87A },
+ { (char*) "Europe/Sofia" , 0x08D006 },
+ { (char*) "Europe/Stockholm" , 0x08D82F },
+ { (char*) "Europe/Tallinn" , 0x08DFB0 },
+ { (char*) "Europe/Tirane" , 0x08E820 },
+ { (char*) "Europe/Tiraspol" , 0x08F050 },
+ { (char*) "Europe/Ulyanovsk" , 0x08F9B2 },
+ { (char*) "Europe/Uzhgorod" , 0x08FEB5 },
+ { (char*) "Europe/Vaduz" , 0x090709 },
+ { (char*) "Europe/Vatican" , 0x090E75 },
+ { (char*) "Europe/Vienna" , 0x0918D2 },
+ { (char*) "Europe/Vilnius" , 0x092176 },
+ { (char*) "Europe/Volgograd" , 0x0929F4 },
+ { (char*) "Europe/Warsaw" , 0x092EBB },
+ { (char*) "Europe/Zagreb" , 0x093925 },
+ { (char*) "Europe/Zaporozhye" , 0x0940B1 },
+ { (char*) "Europe/Zurich" , 0x094905 },
+ { (char*) "Factory" , 0x095086 },
+ { (char*) "GB" , 0x095106 },
+ { (char*) "GB-Eire" , 0x095F62 },
+ { (char*) "GMT" , 0x096DBE },
+ { (char*) "GMT+0" , 0x096E3C },
+ { (char*) "GMT-0" , 0x096EBA },
+ { (char*) "GMT0" , 0x096F38 },
+ { (char*) "Greenwich" , 0x096FB6 },
+ { (char*) "Hongkong" , 0x097034 },
+ { (char*) "HST" , 0x097511 },
+ { (char*) "Iceland" , 0x097590 },
+ { (char*) "Indian/Antananarivo" , 0x097630 },
+ { (char*) "Indian/Chagos" , 0x097717 },
+ { (char*) "Indian/Christmas" , 0x0977DC },
+ { (char*) "Indian/Cocos" , 0x09787F },
+ { (char*) "Indian/Comoro" , 0x09792B },
+ { (char*) "Indian/Kerguelen" , 0x0979CC },
+ { (char*) "Indian/Mahe" , 0x097A6F },
+ { (char*) "Indian/Maldives" , 0x097B12 },
+ { (char*) "Indian/Mauritius" , 0x097BD7 },
+ { (char*) "Indian/Mayotte" , 0x097CC6 },
+ { (char*) "Indian/Reunion" , 0x097D67 },
+ { (char*) "Iran" , 0x097E0A },
+ { (char*) "Israel" , 0x0982F6 },
+ { (char*) "Jamaica" , 0x098C56 },
+ { (char*) "Japan" , 0x098E44 },
+ { (char*) "Kwajalein" , 0x098F85 },
+ { (char*) "Libya" , 0x0990BF },
+ { (char*) "MET" , 0x09933C },
+ { (char*) "Mexico/BajaNorte" , 0x099B76 },
+ { (char*) "Mexico/BajaSur" , 0x09A4C8 },
+ { (char*) "Mexico/General" , 0x09A93C },
+ { (char*) "MST" , 0x09AE0E },
+ { (char*) "MST7MDT" , 0x09AE8C },
+ { (char*) "Navajo" , 0x09B79E },
+ { (char*) "NZ" , 0x09C146 },
+ { (char*) "NZ-CHAT" , 0x09CAD7 },
+ { (char*) "Pacific/Apia" , 0x09D2E9 },
+ { (char*) "Pacific/Auckland" , 0x09D54B },
+ { (char*) "Pacific/Bougainville" , 0x09DEEF },
+ { (char*) "Pacific/Chatham" , 0x09E005 },
+ { (char*) "Pacific/Chuuk" , 0x09E826 },
+ { (char*) "Pacific/Easter" , 0x09E940 },
+ { (char*) "Pacific/Efate" , 0x09F204 },
+ { (char*) "Pacific/Enderbury" , 0x09F41C },
+ { (char*) "Pacific/Fakaofo" , 0x09F504 },
+ { (char*) "Pacific/Fiji" , 0x09F5CA },
+ { (char*) "Pacific/Funafuti" , 0x09F80A },
+ { (char*) "Pacific/Galapagos" , 0x09F8AE },
+ { (char*) "Pacific/Gambier" , 0x09F9AB },
+ { (char*) "Pacific/Guadalcanal" , 0x09FA5C },
+ { (char*) "Pacific/Guam" , 0x09FB00 },
+ { (char*) "Pacific/Honolulu" , 0x09FCFA },
+ { (char*) "Pacific/Johnston" , 0x09FE55 },
+ { (char*) "Pacific/Kanton" , 0x09FFAA },
+ { (char*) "Pacific/Kiritimati" , 0x0A00A1 },
+ { (char*) "Pacific/Kosrae" , 0x0A0199 },
+ { (char*) "Pacific/Kwajalein" , 0x0A02FC },
+ { (char*) "Pacific/Majuro" , 0x0A043F },
+ { (char*) "Pacific/Marquesas" , 0x0A058B },
+ { (char*) "Pacific/Midway" , 0x0A0647 },
+ { (char*) "Pacific/Nauru" , 0x0A073A },
+ { (char*) "Pacific/Niue" , 0x0A0834 },
+ { (char*) "Pacific/Norfolk" , 0x0A08FD },
+ { (char*) "Pacific/Noumea" , 0x0A0C6B },
+ { (char*) "Pacific/Pago_Pago" , 0x0A0D99 },
+ { (char*) "Pacific/Palau" , 0x0A0E54 },
+ { (char*) "Pacific/Pitcairn" , 0x0A0F06 },
+ { (char*) "Pacific/Pohnpei" , 0x0A0FCE },
+ { (char*) "Pacific/Ponape" , 0x0A1109 },
+ { (char*) "Pacific/Port_Moresby" , 0x0A11AD },
+ { (char*) "Pacific/Rarotonga" , 0x0A127D },
+ { (char*) "Pacific/Saipan" , 0x0A14D6 },
+ { (char*) "Pacific/Samoa" , 0x0A16C2 },
+ { (char*) "Pacific/Tahiti" , 0x0A177D },
+ { (char*) "Pacific/Tarawa" , 0x0A182F },
+ { (char*) "Pacific/Tongatapu" , 0x0A18E2 },
+ { (char*) "Pacific/Truk" , 0x0A1A54 },
+ { (char*) "Pacific/Wake" , 0x0A1B0C },
+ { (char*) "Pacific/Wallis" , 0x0A1BBB },
+ { (char*) "Pacific/Yap" , 0x0A1C5F },
+ { (char*) "Poland" , 0x0A1D17 },
+ { (char*) "Portugal" , 0x0A2781 },
+ { (char*) "PRC" , 0x0A3536 },
+ { (char*) "PST8PDT" , 0x0A3773 },
+ { (char*) "ROC" , 0x0A4085 },
+ { (char*) "ROK" , 0x0A438A },
+ { (char*) "Singapore" , 0x0A45FF },
+ { (char*) "Turkey" , 0x0A479C },
+ { (char*) "UCT" , 0x0A4F35 },
+ { (char*) "Universal" , 0x0A4FB3 },
+ { (char*) "US/Alaska" , 0x0A5031 },
+ { (char*) "US/Aleutian" , 0x0A5980 },
+ { (char*) "US/Arizona" , 0x0A62C0 },
+ { (char*) "US/Central" , 0x0A6434 },
+ { (char*) "US/East-Indiana" , 0x0A7248 },
+ { (char*) "US/Eastern" , 0x0A78E6 },
+ { (char*) "US/Hawaii" , 0x0A86D2 },
+ { (char*) "US/Indiana-Starke" , 0x0A8827 },
+ { (char*) "US/Michigan" , 0x0A91BF },
+ { (char*) "US/Mountain" , 0x0A9A81 },
+ { (char*) "US/Pacific" , 0x0AA429 },
+ { (char*) "US/Samoa" , 0x0AAF59 },
+ { (char*) "UTC" , 0x0AB014 },
+ { (char*) "W-SU" , 0x0AB092 },
+ { (char*) "WET" , 0x0AB69D },
+ { (char*) "Zulu" , 0x0ABE1A },
};
-const unsigned char timelib_timezone_db_data_builtin[703933] = {
+const unsigned char timelib_timezone_db_data_builtin[704152] = {
/* Africa/Abidjan */
0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -26616,7 +26704,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x54, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x0A, 0x3C,
0x2D, 0x30, 0x33, 0x3E, 0x33, 0x0A, 0x00, 0x5D, 0xE4, 0x75, 0x00, 0xAE, 0x47, 0xE2, 0x00, 0x00,
0x00, 0x1B, 0x43, 0x61, 0x74, 0x61, 0x6D, 0x61, 0x72, 0x63, 0x61, 0x20, 0x28, 0x43, 0x54, 0x29,
-0x3B, 0x20, 0x43, 0x68, 0x75, 0x62, 0x75, 0x74, 0x20, 0x28, 0x43, 0x48, 0x29,
+0x2C, 0x20, 0x43, 0x68, 0x75, 0x62, 0x75, 0x74, 0x20, 0x28, 0x43, 0x48, 0x29,
/* America/Argentina/ComodRivadavia */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -27565,7 +27653,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A,
0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, 0x00, 0x21, 0x45, 0x53, 0x54, 0x20,
-0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x3B,
+0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x2C,
0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, 0x20, 0x48, 0x29,
/* America/Atka */
@@ -27930,7 +28018,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x08, 0x4C, 0x4D,
0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E,
0x33, 0x0A, 0x00, 0x87, 0x1D, 0xD8, 0x00, 0xC8, 0xAD, 0xB2, 0x00, 0x00, 0x00, 0x12, 0x50, 0x61,
-0x72, 0x61, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, 0x3B, 0x20, 0x41, 0x6D, 0x61, 0x70, 0x61,
+0x72, 0x61, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, 0x2C, 0x20, 0x41, 0x6D, 0x61, 0x70, 0x61,
/* America/Belize */
@@ -28274,7 +28362,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E,
0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xCB, 0xE0, 0xD1, 0x00, 0x61,
0x58, 0xE6, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D,
-0x20, 0x49, 0x44, 0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x3B, 0x20, 0x4F, 0x52, 0x20,
+0x20, 0x49, 0x44, 0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x2C, 0x20, 0x4F, 0x52, 0x20,
0x28, 0x65, 0x61, 0x73, 0x74, 0x29,
/* America/Buenos_Aires */
@@ -30084,9 +30172,9 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x01, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E,
0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDB, 0x0A, 0x38,
-0x00, 0x65, 0x85, 0x95, 0x00, 0x00, 0x00, 0x25, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E,
-0x20, 0x2D, 0x20, 0x41, 0x42, 0x3B, 0x20, 0x42, 0x43, 0x20, 0x28, 0x45, 0x29, 0x3B, 0x20, 0x4E,
-0x54, 0x20, 0x28, 0x45, 0x29, 0x3B, 0x20, 0x53, 0x4B, 0x20, 0x28, 0x57, 0x29,
+0x00, 0x65, 0x85, 0x95, 0x00, 0x00, 0x00, 0x22, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E,
+0x20, 0x2D, 0x20, 0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54,
+0x28, 0x45, 0x29, 0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29,
/* America/Eirunepe */
0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -30749,7 +30837,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
/* America/Godthab */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x68, 0x00,
+0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x68, 0x00,
0x13, 0x4D, 0x7C, 0x50, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90,
0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90,
0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10,
@@ -30771,102 +30859,101 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10,
0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10,
0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90,
-0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90,
-0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90,
-0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10,
-0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10,
-0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10,
-0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90,
-0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90,
-0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90,
-0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x66, 0x08, 0xB5, 0x90,
+0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90,
+0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90,
+0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10,
+0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10,
+0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10,
+0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90,
+0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x04, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
-0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
-0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00,
-0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3,
-0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C, 0x4C,
-0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69,
-0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x68,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4D, 0x7C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x14, 0x33, 0xFA,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F,
-0x90, 0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
-0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0,
-0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF,
-0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C,
-0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00,
-0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x0A, 0x3C,
-0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E,
-0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30, 0x0A, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0,
+0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF,
+0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30,
+0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
+0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x07,
+0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x13, 0x4D, 0x7C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF,
+0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08,
+0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0,
+0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30,
+0x31, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+0x0A, 0x3C, 0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E,
+0x35, 0x2E, 0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30,
+0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* America/Goose_Bay */
0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -31494,7 +31581,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A,
0x00, 0xCD, 0x75, 0xA8, 0x00, 0xB1, 0x9C, 0xC0, 0x00, 0x00, 0x00, 0x1E, 0x41, 0x74, 0x6C, 0x61,
0x6E, 0x74, 0x69, 0x63, 0x20, 0x2D, 0x20, 0x4E, 0x53, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20,
-0x61, 0x72, 0x65, 0x61, 0x73, 0x29, 0x3B, 0x20, 0x50, 0x45,
+0x61, 0x72, 0x65, 0x61, 0x73, 0x29, 0x2C, 0x20, 0x50, 0x45,
/* America/Havana */
0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -36954,7 +37041,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
/* America/Nuuk */
0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x68, 0x00,
+0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x68, 0x00,
0x13, 0x4D, 0x7C, 0x50, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90,
0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90,
0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10,
@@ -36976,103 +37063,102 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10,
0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10,
0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90,
-0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90,
-0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90,
-0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10,
-0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10,
-0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10,
-0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90,
-0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90,
-0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90,
-0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x66, 0x08, 0xB5, 0x90,
+0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90,
+0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90,
+0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10,
+0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10,
+0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10,
+0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90,
+0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x04, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
-0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
-0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00,
-0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3,
-0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C, 0x4C,
-0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69,
-0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x68,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4D, 0x7C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x14, 0x33, 0xFA,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9,
-0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D,
-0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F,
-0x90, 0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
-0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0,
-0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF,
-0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C,
-0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00,
-0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x0A, 0x3C,
-0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E,
-0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30, 0x0A, 0x00,
-0xEB, 0x43, 0xDD, 0x00, 0xC3, 0xB8, 0x2A, 0x00, 0x00, 0x00, 0x11, 0x6D, 0x6F, 0x73, 0x74, 0x20,
-0x6F, 0x66, 0x20, 0x47, 0x72, 0x65, 0x65, 0x6E, 0x6C, 0x61, 0x6E, 0x64,
+0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0,
+0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF,
+0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30,
+0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
+0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x07,
+0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x13, 0x4D, 0x7C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF,
+0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08,
+0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x08, 0xFF, 0xFF, 0xF1, 0xF0,
+0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30,
+0x31, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+0x0A, 0x3C, 0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E,
+0x35, 0x2E, 0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30,
+0x0A, 0x00, 0xEB, 0x43, 0xDD, 0x00, 0xC3, 0xB8, 0x2A, 0x00, 0x00, 0x00, 0x11, 0x6D, 0x6F, 0x73,
+0x74, 0x20, 0x6F, 0x66, 0x20, 0x47, 0x72, 0x65, 0x65, 0x6E, 0x6C, 0x61, 0x6E, 0x64,
/* America/Ojinaga */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -38866,8 +38952,8 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
/* America/Scoresbysund */
0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x4C, 0x18,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x80, 0x4C, 0x18,
0x13, 0x4D, 0x6E, 0x40, 0x14, 0x34, 0x24, 0xC0, 0x15, 0x23, 0xF9, 0xA0, 0x16, 0x13, 0xDC, 0x90,
0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90,
0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10,
@@ -38902,16 +38988,17 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x00,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
+0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07,
+0x08, 0x07, 0x08, 0x07, 0x08, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x00,
0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0xFF, 0xFF, 0xF1,
-0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x4C,
-0x4D, 0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69,
-0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x4C,
+0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0xFF,
+0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2D,
+0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69,
+0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x75, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x80, 0x4C,
0x18, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4D, 0x6E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x14, 0x34, 0x24,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xF9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC,
0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE,
@@ -38975,18 +39062,19 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08,
+0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08,
+0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0xFF, 0xFF, 0xEB, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0,
0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0xFF, 0xFF,
0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C,
-0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00,
-0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x3C,
-0x2D, 0x30, 0x31, 0x3E, 0x31, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E,
-0x30, 0x2F, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x0A, 0x00, 0xF4,
-0xE0, 0xCD, 0x00, 0xF1, 0x23, 0xC5, 0x00, 0x00, 0x00, 0x1D, 0x53, 0x63, 0x6F, 0x72, 0x65, 0x73,
-0x62, 0x79, 0x73, 0x75, 0x6E, 0x64, 0x2F, 0x49, 0x74, 0x74, 0x6F, 0x71, 0x71, 0x6F, 0x72, 0x74,
-0x6F, 0x6F, 0x72, 0x6D, 0x69, 0x69, 0x74,
+0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00,
+0x2D, 0x30, 0x32, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x0A, 0x3C,
+0x2D, 0x30, 0x32, 0x3E, 0x32, 0x3C, 0x2D, 0x30, 0x31, 0x3E, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E,
+0x30, 0x2F, 0x2D, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x30, 0x0A, 0x00,
+0xF4, 0xE0, 0xCD, 0x00, 0xF1, 0x23, 0xC5, 0x00, 0x00, 0x00, 0x1D, 0x53, 0x63, 0x6F, 0x72, 0x65,
+0x73, 0x62, 0x79, 0x73, 0x75, 0x6E, 0x64, 0x2F, 0x49, 0x74, 0x74, 0x6F, 0x71, 0x71, 0x6F, 0x72,
+0x74, 0x6F, 0x6F, 0x72, 0x6D, 0x69, 0x69, 0x74,
/* America/Shiprock */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -39544,9 +39632,8 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x4E, 0x53, 0x54,
0x33, 0x3A, 0x33, 0x30, 0x4E, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D,
0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD1, 0xE8, 0xFA, 0x00, 0xC2, 0x38, 0x0D, 0x00,
-0x00, 0x00, 0x22, 0x4E, 0x65, 0x77, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x6C, 0x61, 0x6E, 0x64, 0x3B,
-0x20, 0x4C, 0x61, 0x62, 0x72, 0x61, 0x64, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x6F, 0x75, 0x74, 0x68,
-0x65, 0x61, 0x73, 0x74, 0x29,
+0x00, 0x00, 0x1B, 0x4E, 0x65, 0x77, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x6C, 0x61, 0x6E, 0x64, 0x2C,
+0x20, 0x4C, 0x61, 0x62, 0x72, 0x61, 0x64, 0x6F, 0x72, 0x20, 0x28, 0x53, 0x45, 0x29,
/* America/St_Kitts */
0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -40355,8 +40442,9 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x45,
0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31,
0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xCB, 0xEF, 0x08, 0x00, 0x99, 0x87, 0x62, 0x00, 0x00,
-0x00, 0x1D, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x2C, 0x20,
-0x51, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29,
+0x00, 0x1E, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x26,
+0x20, 0x51, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29,
+
/* America/Tortola */
0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -40863,7 +40951,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x36, 0x43, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E,
0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD5, 0x71, 0xED, 0x00, 0x7E, 0x6B, 0x47, 0x00, 0x00, 0x00, 0x1D,
0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x77, 0x65,
-0x73, 0x74, 0x29, 0x3B, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61,
+0x73, 0x74, 0x29, 0x2C, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, 0x61,
/* America/Yakutat */
0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -41164,30 +41252,33 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
/* Antarctica/Casey */
0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xFE, 0x1E, 0xCC, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFE, 0x1E, 0xCC, 0x80,
0x4A, 0xDA, 0x06, 0x20, 0x4B, 0x8F, 0xCA, 0xF0, 0x4E, 0xA9, 0x9C, 0x20, 0x4F, 0x43, 0xCD, 0x90,
0x58, 0x0A, 0x3B, 0x80, 0x5A, 0xA4, 0x0F, 0x10, 0x5B, 0xB9, 0x14, 0x40, 0x5C, 0x8D, 0x1D, 0x80,
-0x5D, 0x96, 0x45, 0x30, 0x5E, 0x63, 0xC5, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x01, 0x02, 0x01, 0x02,
-0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04,
-0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x31,
-0x31, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66,
-0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
-0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0xCC, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x4A, 0xDA, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x8F, 0xCA, 0xF0,
-0x00, 0x00, 0x00, 0x00, 0x4E, 0xA9, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x43, 0xCD, 0x90,
-0x00, 0x00, 0x00, 0x00, 0x58, 0x0A, 0x3B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0x0F, 0x10,
-0x00, 0x00, 0x00, 0x00, 0x5B, 0xB9, 0x14, 0x40, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x8D, 0x1D, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x5D, 0x96, 0x45, 0x30, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x63, 0xC5, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04,
-0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0,
-0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00,
-0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x31, 0x3E, 0x2D, 0x31,
-0x31, 0x0A, 0x00, 0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00, 0x00, 0x00, 0x05, 0x43, 0x61,
-0x73, 0x65, 0x79,
+0x5D, 0x96, 0x45, 0x30, 0x5E, 0x63, 0xC5, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x60, 0x4C, 0xB7, 0x50,
+0x61, 0x58, 0x82, 0x3C, 0x62, 0x2C, 0x99, 0x50, 0x63, 0x38, 0x64, 0x3C, 0x64, 0x08, 0xB1, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A,
+0xB0, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x38,
+0x00, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69,
+0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0xCC,
+0x80, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xDA, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x8F, 0xCA,
+0xF0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xA9, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x43, 0xCD,
+0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x0A, 0x3B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0x0F,
+0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xB9, 0x14, 0x40, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x8D, 0x1D,
+0x80, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x96, 0x45, 0x30, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x63, 0xC5,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x78, 0xA0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4C, 0xB7,
+0x50, 0x00, 0x00, 0x00, 0x00, 0x61, 0x58, 0x82, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2C, 0x99,
+0x50, 0x00, 0x00, 0x00, 0x00, 0x63, 0x38, 0x64, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x64, 0x08, 0xB1,
+0x00, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00,
+0x9A, 0xB0, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30,
+0x38, 0x00, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x3C,
+0x2B, 0x30, 0x38, 0x3E, 0x2D, 0x38, 0x0A, 0x00, 0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00,
+0x00, 0x00, 0x05, 0x43, 0x61, 0x73, 0x65, 0x79,
/* Antarctica/Davis */
0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -41868,15 +41959,19 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
/* Antarctica/Vostok */
0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xE9, 0x58, 0x89, 0x80,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x2D, 0x30, 0x30,
-0x00, 0x2B, 0x30, 0x36, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xE9, 0x58, 0x89, 0x80,
+0x2D, 0x4D, 0x39, 0x10, 0x2E, 0xB5, 0x85, 0x00, 0x65, 0x7F, 0x45, 0x30, 0x01, 0x00, 0x01, 0x02,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50,
+0x00, 0x08, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x54, 0x5A,
+0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x58, 0x89, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x36, 0x00, 0x0A, 0x3C,
-0x2B, 0x30, 0x36, 0x3E, 0x2D, 0x36, 0x0A, 0x00, 0x11, 0xB3, 0x3F, 0x01, 0xB5, 0xC6, 0x4F, 0x00,
-0x00, 0x00, 0x06, 0x56, 0x6F, 0x73, 0x74, 0x6F, 0x6B,
+0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x58,
+0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x4D, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB5,
+0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x7F, 0x45, 0x30, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x08,
+0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
+0x35, 0x3E, 0x2D, 0x35, 0x0A, 0x00, 0x11, 0xB3, 0x3F, 0x01, 0xB5, 0xC6, 0x4F, 0x00, 0x00, 0x00,
+0x06, 0x56, 0x6F, 0x73, 0x74, 0x6F, 0x6B,
/* Arctic/Longyearbyen */
0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -43717,7 +43812,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D,
+0x00, 0x01, 0x36, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D,
0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8,
0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC,
0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE,
@@ -43844,9 +43939,12 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x8B, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x84, 0xE3, 0x70, 0x00, 0x00, 0x00, 0x00, 0xBE,
0x6B, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x52, 0x50, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC0,
0x4B, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x28, 0xF7, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC1,
-0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC3,
-0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC5,
-0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC6,
+0x57, 0x2A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x69, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC2,
+0x2B, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC3,
+0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x49, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC4,
+0x0B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC5,
+0x04, 0x79, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x29, 0x55, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC5,
+0xF4, 0x6A, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC6,
0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x37, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC7,
0xD4, 0x4C, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x71, 0x20, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC8,
0xA8, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xE9, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC9,
@@ -43888,17 +43986,17 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x20, 0x50, 0x00,
-0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C,
-0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00,
-0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00,
-0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00,
-0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E,
-0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A,
-0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61,
-0x20, 0x53, 0x74, 0x72, 0x69, 0x70,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
+0x03, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C,
+0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00,
+0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01,
+0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54,
+0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53,
+0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54,
+0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34,
+0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00,
+0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70,
/* Asia/Harbin */
0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -43997,7 +44095,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00,
0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, 0x00,
+0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x00, 0x00, 0x00,
0x0A, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF,
0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF,
@@ -44126,8 +44224,11 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0xBD, 0x84, 0xE3, 0x70, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x6B, 0xA8, 0x00, 0x00, 0x00, 0x00,
0x00, 0xBF, 0x52, 0x50, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x4B, 0x8A, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC1, 0x28, 0xF7, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x57, 0x2A, 0x80, 0x00, 0x00, 0x00,
+0x00, 0xC1, 0x69, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x2B, 0x6C, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC2, 0xFF, 0x9F, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xC3, 0x49, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x0B, 0x4E, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC4, 0xCD, 0x0C, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00,
+0x00, 0xC5, 0x29, 0x55, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xF4, 0x6A, 0x80, 0x00, 0x00, 0x00,
0x00, 0xC6, 0xA3, 0xB3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xD1, 0xE6, 0x80, 0x00, 0x00, 0x00,
0x00, 0xC7, 0x09, 0x37, 0x70, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xD4, 0x4C, 0x80, 0x00, 0x00, 0x00,
0x00, 0xC8, 0x71, 0x20, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xA8, 0x8E, 0x00, 0x00, 0x00, 0x00,
@@ -44170,17 +44271,17 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
-0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A,
-0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00,
-0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00,
-0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x1C,
-0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
-0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
-0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54,
-0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30,
-0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x0A, 0x00, 0xB9, 0x71, 0xF5,
-0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E,
-0x6B,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x20,
+0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00,
+0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01,
+0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C,
+0x20, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53,
+0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E,
+0x34, 0x2E, 0x34, 0x2F, 0x35, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x35,
+0x30, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65,
+0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B,
/* Asia/Ho_Chi_Minh */
0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -44598,7 +44699,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x30, 0x00, 0x57, 0x49, 0x54, 0x00, 0x0A, 0x57, 0x49, 0x54, 0x2D, 0x39, 0x0A, 0x00, 0x85, 0x76,
0xAA, 0x01, 0xE9, 0x59, 0x70, 0x00, 0x00, 0x00, 0x36, 0x4E, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69,
0x6E, 0x65, 0x61, 0x20, 0x28, 0x57, 0x65, 0x73, 0x74, 0x20, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20,
-0x2F, 0x20, 0x49, 0x72, 0x69, 0x61, 0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x3B, 0x20, 0x4D,
+0x2F, 0x20, 0x49, 0x72, 0x69, 0x61, 0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x2C, 0x20, 0x4D,
0x61, 0x6C, 0x75, 0x6B, 0x75, 0x73, 0x2F, 0x4D, 0x6F, 0x6C, 0x75, 0x63, 0x63, 0x61, 0x73,
/* Asia/Jerusalem */
@@ -45435,10 +45536,10 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39,
0x00, 0x57, 0x49, 0x54, 0x41, 0x00, 0x0A, 0x57, 0x49, 0x54, 0x41, 0x2D, 0x38, 0x0A, 0x00, 0x81,
0x85, 0x8D, 0x01, 0xC8, 0xD9, 0x1F, 0x00, 0x00, 0x00, 0x49, 0x42, 0x6F, 0x72, 0x6E, 0x65, 0x6F,
-0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x2C, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x3B, 0x20,
+0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x2C, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x29, 0x2C, 0x20,
0x53, 0x75, 0x6C, 0x61, 0x77, 0x65, 0x73, 0x69, 0x2F, 0x43, 0x65, 0x6C, 0x65, 0x62, 0x65, 0x73,
0x2C, 0x20, 0x42, 0x61, 0x6C, 0x69, 0x2C, 0x20, 0x4E, 0x75, 0x73, 0x61, 0x20, 0x54, 0x65, 0x6E,
-0x67, 0x61, 0x72, 0x72, 0x61, 0x3B, 0x20, 0x54, 0x69, 0x6D, 0x6F, 0x72, 0x20, 0x28, 0x77, 0x65,
+0x67, 0x61, 0x72, 0x72, 0x61, 0x2C, 0x20, 0x54, 0x69, 0x6D, 0x6F, 0x72, 0x20, 0x28, 0x77, 0x65,
0x73, 0x74, 0x29,
/* Asia/Manila */
@@ -46485,7 +46586,7 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
0x00, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x0A, 0x3C, 0x2B, 0x31, 0x31, 0x3E, 0x2D, 0x31, 0x31, 0x0A, 0x00, 0xF0, 0x46, 0x6A, 0x01, 0xFD,
0x36, 0x12, 0x00, 0x00, 0x00, 0x1E, 0x4D, 0x53, 0x4B, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x53,
-0x61, 0x6B, 0x68, 0x61, 0x20, 0x28, 0x45, 0x29, 0x3B, 0x20, 0x4E, 0x20, 0x4B, 0x75, 0x72, 0x69,
+0x61, 0x6B, 0x68, 0x61, 0x20, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x20, 0x4B, 0x75, 0x72, 0x69,
0x6C, 0x20, 0x49, 0x73,
/* Asia/Taipei */
@@ -69999,4 +70100,4 @@ const unsigned char timelib_timezone_db_data_builtin[703933] = {
};
#endif
-const timelib_tzdb timezonedb_builtin = { "2023.3", 597, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2023.4", 597, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/tests/bug80963.phpt b/ext/date/tests/bug80963.phpt
index 8ee645abdeaee..c7f02a7397fcf 100644
--- a/ext/date/tests/bug80963.phpt
+++ b/ext/date/tests/bug80963.phpt
@@ -13,8 +13,8 @@ foreach ($tzids as $tzid)
var_dump(sizeof($t), end($t));
}
?>
---EXPECT--
-int(243)
+--EXPECTF--
+int(24%d)
array(5) {
["ts"]=>
int(2140045200)
diff --git a/ext/dom/document.c b/ext/dom/document.c
index 665c0a042d6ed..831f01b87b25a 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -894,29 +894,61 @@ PHP_METHOD(DOMDocument, createAttributeNS)
xmlNodePtr nodep = NULL, root;
xmlNsPtr nsptr;
int ret;
- size_t uri_len = 0, name_len = 0;
- char *uri, *name;
+ zend_string *name, *uri;
char *localname = NULL, *prefix = NULL;
dom_object *intern;
int errorcode;
id = ZEND_THIS;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s!s", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S!S", &uri, &name) == FAILURE) {
RETURN_THROWS();
}
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
+ if (UNEXPECTED(uri == NULL)) {
+ uri = zend_empty_string;
+ }
+ size_t uri_len = ZSTR_LEN(uri);
+
root = xmlDocGetRootElement(docp);
if (root != NULL) {
- errorcode = dom_check_qname(name, &localname, &prefix, uri_len, name_len);
+ errorcode = dom_check_qname(ZSTR_VAL(name), &localname, &prefix, uri_len, ZSTR_LEN(name));
+ /* TODO: switch to early goto-out style error-checking */
if (errorcode == 0) {
if (xmlValidateName((xmlChar *) localname, 0) == 0) {
+ /* If prefix is "xml" and namespace is not the XML namespace, then throw a "NamespaceError" DOMException. */
+ if (UNEXPECTED(!zend_string_equals_literal(uri, "http://www.w3.org/XML/1998/namespace") && xmlStrEqual(BAD_CAST prefix, BAD_CAST "xml"))) {
+ errorcode = NAMESPACE_ERR;
+ goto error;
+ }
+ /* If either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace, then throw a "NamespaceError" DOMException. */
+ if (UNEXPECTED((zend_string_equals_literal(name, "xmlns") || xmlStrEqual(BAD_CAST prefix, BAD_CAST "xmlns")) && !zend_string_equals_literal(uri, "http://www.w3.org/2000/xmlns/"))) {
+ errorcode = NAMESPACE_ERR;
+ goto error;
+ }
+ /* If namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns", then throw a "NamespaceError" DOMException. */
+ if (UNEXPECTED(zend_string_equals_literal(uri, "http://www.w3.org/2000/xmlns/") && !zend_string_equals_literal(name, "xmlns") && !xmlStrEqual(BAD_CAST prefix, BAD_CAST "xmlns"))) {
+ errorcode = NAMESPACE_ERR;
+ goto error;
+ }
+
nodep = (xmlNodePtr) xmlNewDocProp(docp, (xmlChar *) localname, NULL);
if (nodep != NULL && uri_len > 0) {
- nsptr = xmlSearchNsByHref(nodep->doc, root, (xmlChar *) uri);
- if (nsptr == NULL || nsptr->prefix == NULL) {
- nsptr = dom_get_ns(root, uri, &errorcode, prefix ? prefix : "default");
+ nsptr = xmlSearchNsByHref(docp, root, BAD_CAST ZSTR_VAL(uri));
+
+ if (zend_string_equals_literal(name, "xmlns") || xmlStrEqual(BAD_CAST prefix, BAD_CAST "xml")) {
+ if (nsptr == NULL) {
+ nsptr = xmlNewNs(NULL, BAD_CAST ZSTR_VAL(uri), BAD_CAST prefix);
+ php_libxml_set_old_ns(docp, nsptr);
+ }
+ } else {
+ if (nsptr == NULL || nsptr->prefix == NULL) {
+ nsptr = dom_get_ns_unchecked(root, ZSTR_VAL(uri), prefix ? prefix : "default");
+ if (UNEXPECTED(nsptr == NULL)) {
+ errorcode = NAMESPACE_ERR;
+ }
+ }
}
xmlSetNs(nodep, nsptr);
}
@@ -929,6 +961,7 @@ PHP_METHOD(DOMDocument, createAttributeNS)
RETURN_FALSE;
}
+error:
xmlFree(localname);
if (prefix != NULL) {
xmlFree(prefix);
@@ -1008,21 +1041,33 @@ PHP_METHOD(DOMDocument, getElementById)
}
/* }}} end dom_document_get_element_by_id */
-static void php_dom_transfer_document_ref(xmlNodePtr node, dom_object *dom_object_document, xmlDocPtr document)
+static zend_always_inline void php_dom_transfer_document_ref_single_node(xmlNodePtr node, php_libxml_ref_obj *new_document)
+{
+ php_libxml_node_ptr *iteration_object_ptr = node->_private;
+ if (iteration_object_ptr) {
+ php_libxml_node_object *iteration_object = iteration_object_ptr->_private;
+ ZEND_ASSERT(iteration_object != NULL);
+ /* Must increase refcount first because we could be the last reference holder, and the document may be equal. */
+ new_document->refcount++;
+ php_libxml_decrement_doc_ref(iteration_object);
+ iteration_object->document = new_document;
+ }
+}
+
+static void php_dom_transfer_document_ref(xmlNodePtr node, php_libxml_ref_obj *new_document)
{
if (node->children) {
- php_dom_transfer_document_ref(node->children, dom_object_document, document);
+ php_dom_transfer_document_ref(node->children, new_document);
}
+
while (node) {
- php_libxml_node_ptr *iteration_object_ptr = node->_private;
- if (iteration_object_ptr) {
- php_libxml_node_object *iteration_object = iteration_object_ptr->_private;
- ZEND_ASSERT(iteration_object != NULL);
- /* Must increase refcount first because we could be the last reference holder, and the document may be equal. */
- dom_object_document->document->refcount++;
- php_libxml_decrement_doc_ref(iteration_object);
- iteration_object->document = dom_object_document->document;
+ if (node->type == XML_ELEMENT_NODE) {
+ for (xmlAttrPtr attr = node->properties; attr != NULL; attr = attr->next) {
+ php_dom_transfer_document_ref_single_node((xmlNodePtr) attr, new_document);
+ }
}
+
+ php_dom_transfer_document_ref_single_node(node, new_document);
node = node->next;
}
}
@@ -1040,7 +1085,7 @@ bool php_dom_adopt_node(xmlNodePtr nodep, dom_object *dom_object_new_document, x
return false;
}
- php_dom_transfer_document_ref(nodep, dom_object_new_document, new_document);
+ php_dom_transfer_document_ref(nodep, dom_object_new_document->document);
} else {
xmlUnlinkNode(nodep);
}
diff --git a/ext/dom/element.c b/ext/dom/element.c
index 133ae0d76f6d1..f87fbcccfef98 100644
--- a/ext/dom/element.c
+++ b/ext/dom/element.c
@@ -1554,7 +1554,7 @@ PHP_METHOD(DOMElement, toggleAttribute)
}
/* Step 2 */
- if (thisp->doc->type == XML_HTML_DOCUMENT_NODE && (thisp->ns == NULL || xmlStrEqual(thisp->ns->href, (const xmlChar *) "http://www.w3.org/1999/xhtml"))) {
+ if (thisp->doc != NULL && thisp->doc->type == XML_HTML_DOCUMENT_NODE && (thisp->ns == NULL || xmlStrEqual(thisp->ns->href, (const xmlChar *) "http://www.w3.org/1999/xhtml"))) {
qname_tmp = zend_str_tolower_dup_ex(qname, qname_length);
if (qname_tmp != NULL) {
qname = qname_tmp;
diff --git a/ext/dom/node.c b/ext/dom/node.c
index 4a797c573a450..b95bf6c40fb4c 100644
--- a/ext/dom/node.c
+++ b/ext/dom/node.c
@@ -1490,33 +1490,58 @@ static bool php_dom_node_is_equal_node(const xmlNode *this, const xmlNode *other
#define PHP_DOM_FUNC_CAT(prefix, suffix) prefix##_##suffix
/* xmlNode and xmlNs have incompatible struct layouts, i.e. the next field is in a different offset */
-#define PHP_DOM_DEFINE_LIST_EQUALITY_HELPER(type) \
- static size_t PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(const type *node) \
- { \
- size_t counter = 0; \
- while (node) { \
- counter++; \
- node = node->next; \
- } \
- return counter; \
- } \
- static bool PHP_DOM_FUNC_CAT(php_dom_node_list_equality_check, type)(const type *list1, const type *list2) \
- { \
- size_t count = PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list1); \
- if (count != PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list2)) { \
- return false; \
- } \
- for (size_t i = 0; i < count; i++) { \
- if (!php_dom_node_is_equal_node((const xmlNode *) list1, (const xmlNode *) list2)) { \
- return false; \
- } \
- list1 = list1->next; \
- list2 = list2->next; \
- } \
- return true; \
- }
-PHP_DOM_DEFINE_LIST_EQUALITY_HELPER(xmlNode)
-PHP_DOM_DEFINE_LIST_EQUALITY_HELPER(xmlNs)
+#define PHP_DOM_DEFINE_LIST_COUNTER_HELPER(type) \
+ static size_t PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(const type *node) \
+ { \
+ size_t counter = 0; \
+ while (node) { \
+ counter++; \
+ node = node->next; \
+ } \
+ return counter; \
+ }
+#define PHP_DOM_DEFINE_LIST_EQUALITY_ORDERED_HELPER(type) \
+ static bool PHP_DOM_FUNC_CAT(php_dom_node_list_equality_check_ordered, type)(const type *list1, const type *list2) \
+ { \
+ size_t count = PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list1); \
+ if (count != PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list2)) { \
+ return false; \
+ } \
+ for (size_t i = 0; i < count; i++) { \
+ if (!php_dom_node_is_equal_node((const xmlNode *) list1, (const xmlNode *) list2)) { \
+ return false; \
+ } \
+ list1 = list1->next; \
+ list2 = list2->next; \
+ } \
+ return true; \
+ }
+#define PHP_DOM_DEFINE_LIST_EQUALITY_UNORDERED_HELPER(type) \
+ static bool PHP_DOM_FUNC_CAT(php_dom_node_list_equality_check_unordered, type)(const type *list1, const type *list2)\
+ { \
+ size_t count = PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list1); \
+ if (count != PHP_DOM_FUNC_CAT(php_dom_node_count_list_size, type)(list2)) { \
+ return false; \
+ } \
+ for (const type *n1 = list1; n1 != NULL; n1 = n1->next) { \
+ bool found = false; \
+ for (const type *n2 = list2; n2 != NULL && !found; n2 = n2->next) { \
+ if (php_dom_node_is_equal_node((const xmlNode *) n1, (const xmlNode *) n2)) { \
+ found = true; \
+ } \
+ } \
+ if (!found) { \
+ return false; \
+ } \
+ } \
+ return true; \
+ }
+
+PHP_DOM_DEFINE_LIST_COUNTER_HELPER(xmlNode)
+PHP_DOM_DEFINE_LIST_COUNTER_HELPER(xmlNs)
+PHP_DOM_DEFINE_LIST_EQUALITY_ORDERED_HELPER(xmlNode)
+PHP_DOM_DEFINE_LIST_EQUALITY_UNORDERED_HELPER(xmlNode)
+PHP_DOM_DEFINE_LIST_EQUALITY_UNORDERED_HELPER(xmlNs)
static bool php_dom_node_is_equal_node(const xmlNode *this, const xmlNode *other)
{
@@ -1535,9 +1560,9 @@ static bool php_dom_node_is_equal_node(const xmlNode *this, const xmlNode *other
&& php_dom_node_is_ns_prefix_equal(this, other)
&& php_dom_node_is_ns_uri_equal(this, other)
/* Check attributes first, then namespace declarations, then children */
- && php_dom_node_list_equality_check_xmlNode((const xmlNode *) this->properties, (const xmlNode *) other->properties)
- && php_dom_node_list_equality_check_xmlNs(this->nsDef, other->nsDef)
- && php_dom_node_list_equality_check_xmlNode(this->children, other->children);
+ && php_dom_node_list_equality_check_unordered_xmlNode((const xmlNode *) this->properties, (const xmlNode *) other->properties)
+ && php_dom_node_list_equality_check_unordered_xmlNs(this->nsDef, other->nsDef)
+ && php_dom_node_list_equality_check_ordered_xmlNode(this->children, other->children);
} else if (this->type == XML_DTD_NODE) {
/* Note: in the living spec entity declarations and notations are no longer compared because they're considered obsolete. */
const xmlDtd *this_dtd = (const xmlDtd *) this;
@@ -1570,7 +1595,7 @@ static bool php_dom_node_is_equal_node(const xmlNode *this, const xmlNode *other
const xmlNs *other_ns = (const xmlNs *) other;
return xmlStrEqual(this_ns->prefix, other_ns->prefix) && xmlStrEqual(this_ns->href, other_ns->href);
} else if (this->type == XML_DOCUMENT_FRAG_NODE || this->type == XML_HTML_DOCUMENT_NODE || this->type == XML_DOCUMENT_NODE) {
- return php_dom_node_list_equality_check_xmlNode(this->children, other->children);
+ return php_dom_node_list_equality_check_ordered_xmlNode(this->children, other->children);
}
return false;
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 468d934588054..f008d58089bc3 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -1596,6 +1596,20 @@ NAMESPACE_ERR: Raised if
5. the namespaceURI is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName nor its prefix is "xmlns".
*/
+xmlNsPtr dom_get_ns_unchecked(xmlNodePtr nodep, char *uri, char *prefix)
+{
+ xmlNsPtr nsptr = xmlNewNs(nodep, (xmlChar *)uri, (xmlChar *)prefix);
+ if (UNEXPECTED(nsptr == NULL)) {
+ /* Either memory allocation failure, or it's because of a prefix conflict.
+ * We'll assume a conflict and try again. If it was a memory allocation failure we'll just fail again, whatever.
+ * This isn't needed for every caller (such as createElementNS & DOMElement::__construct), but isn't harmful and simplifies the mental model "when do I use which function?".
+ * This branch will also be taken unlikely anyway as in those cases it'll be for allocation failure. */
+ return dom_get_ns_resolve_prefix_conflict(nodep, uri);
+ }
+
+ return nsptr;
+}
+
/* {{{ xmlNsPtr dom_get_ns(xmlNodePtr nodep, char *uri, int *errorcode, char *prefix) */
xmlNsPtr dom_get_ns(xmlNodePtr nodep, char *uri, int *errorcode, char *prefix) {
xmlNsPtr nsptr;
@@ -1603,16 +1617,9 @@ xmlNsPtr dom_get_ns(xmlNodePtr nodep, char *uri, int *errorcode, char *prefix) {
if (! ((prefix && !strcmp (prefix, "xml") && strcmp(uri, (char *)XML_XML_NAMESPACE)) ||
(prefix && !strcmp (prefix, "xmlns") && strcmp(uri, (char *)DOM_XMLNS_NAMESPACE)) ||
(prefix && !strcmp(uri, (char *)DOM_XMLNS_NAMESPACE) && strcmp (prefix, "xmlns")))) {
- nsptr = xmlNewNs(nodep, (xmlChar *)uri, (xmlChar *)prefix);
+ nsptr = dom_get_ns_unchecked(nodep, uri, prefix);
if (UNEXPECTED(nsptr == NULL)) {
- /* Either memory allocation failure, or it's because of a prefix conflict.
- * We'll assume a conflict and try again. If it was a memory allocation failure we'll just fail again, whatever.
- * This isn't needed for every caller (such as createElementNS & DOMElement::__construct), but isn't harmful and simplifies the mental model "when do I use which function?".
- * This branch will also be taken unlikely anyway as in those cases it'll be for allocation failure. */
- nsptr = dom_get_ns_resolve_prefix_conflict(nodep, uri);
- if (UNEXPECTED(nsptr == NULL)) {
- goto err;
- }
+ goto err;
}
} else {
goto err;
diff --git a/ext/dom/php_dom.h b/ext/dom/php_dom.h
index 46900e8e5fe93..c8d13c220de83 100644
--- a/ext/dom/php_dom.h
+++ b/ext/dom/php_dom.h
@@ -128,6 +128,7 @@ void php_dom_throw_error_with_message(int error_code, char *error_message, int s
void node_list_unlink(xmlNodePtr node);
int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len);
xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix);
+xmlNsPtr dom_get_ns_unchecked(xmlNodePtr nodep, char *uri, char *prefix);
void dom_reconcile_ns(xmlDocPtr doc, xmlNodePtr nodep);
void dom_reconcile_ns_list(xmlDocPtr doc, xmlNodePtr nodep, xmlNodePtr last);
xmlNsPtr dom_get_nsdecl(xmlNode *node, xmlChar *localName);
diff --git a/ext/dom/tests/DOMDocument_adoptNode_attribute_references.phpt b/ext/dom/tests/DOMDocument_adoptNode_attribute_references.phpt
new file mode 100644
index 0000000000000..fcbf032bbfd39
--- /dev/null
+++ b/ext/dom/tests/DOMDocument_adoptNode_attribute_references.phpt
@@ -0,0 +1,27 @@
+--TEST--
+DOMDocument::adoptNode() with attribute references
+--EXTENSIONS--
+dom
+--FILE--
+appendChild($dom->createElement('root'));
+$root->setAttributeNS("urn:a", "a:root1", "bar");
+$root1 = $root->getAttributeNodeNS("urn:a", "root1");
+echo $dom->saveXML();
+
+$dom = new DOMDocument;
+$dom->appendChild($dom->adoptNode($root));
+foreach ($dom->documentElement->attributes as $attr) {
+ var_dump($attr->namespaceURI, $attr->prefix, $attr->localName, $attr->nodeValue);
+}
+
+?>
+--EXPECT--
+
+
+string(5) "urn:a"
+string(1) "a"
+string(5) "root1"
+string(3) "bar"
diff --git a/ext/dom/tests/DOMElement_toggleAttribute_without_document.phpt b/ext/dom/tests/DOMElement_toggleAttribute_without_document.phpt
new file mode 100644
index 0000000000000..ecd930b487c8e
--- /dev/null
+++ b/ext/dom/tests/DOMElement_toggleAttribute_without_document.phpt
@@ -0,0 +1,17 @@
+--TEST--
+DOMElement::toggleAttribute() without a document
+--EXTENSIONS--
+dom
+--FILE--
+toggleAttribute('foo', true);
+
+$dom = new DOMDocument;
+$element = $dom->importNode($element, true);
+echo $dom->saveXML($element), "\n";
+
+?>
+--EXPECT--
+
diff --git a/ext/dom/tests/gh12870.inc b/ext/dom/tests/gh12870.inc
new file mode 100644
index 0000000000000..d7cfd3df7097e
--- /dev/null
+++ b/ext/dom/tests/gh12870.inc
@@ -0,0 +1,26 @@
+appendChild($d->createElement('root'));
+ try {
+ $attr = $d->createAttributeNS($uri, $qualifiedName);
+ $d->documentElement->setAttributeNodeNS($attr);
+ echo "Attr prefix: ";
+ var_dump($attr->prefix);
+ echo "Attr namespaceURI: ";
+ var_dump($attr->namespaceURI);
+ echo "Attr value: ";
+ var_dump($attr->value);
+ echo "root namespaceURI: ";
+ var_dump($d->documentElement->namespaceURI);
+ echo "Equality check: ";
+ $parts = explode(':', $qualifiedName);
+ var_dump($attr === $d->documentElement->getAttributeNodeNS($uri, $parts[count($parts) - 1]));
+ echo $d->saveXML(), "\n";
+ } catch (DOMException $e) {
+ echo "Exception: ", $e->getMessage(), "\n\n";
+ }
+}
diff --git a/ext/dom/tests/gh12870_a.phpt b/ext/dom/tests/gh12870_a.phpt
new file mode 100644
index 0000000000000..bd085c18bbe05
--- /dev/null
+++ b/ext/dom/tests/gh12870_a.phpt
@@ -0,0 +1,72 @@
+--TEST--
+GH-12870 (Creating an xmlns attribute results in a DOMException) - xmlns variations
+--EXTENSIONS--
+dom
+--FILE--
+
+--EXPECT--
+=== NORMAL CASES ===
+--- Testing "http://www.w3.org/2000/xmlns/qx", "foo:xmlns" ---
+Attr prefix: string(3) "foo"
+Attr namespaceURI: string(31) "http://www.w3.org/2000/xmlns/qx"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+--- Testing "http://www.w3.org/2000/xmlns/", "xmlns" ---
+Attr prefix: string(0) ""
+Attr namespaceURI: string(29) "http://www.w3.org/2000/xmlns/"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+--- Testing "http://www.w3.org/2000/xmlns/", "xmlns:xmlns" ---
+Attr prefix: string(5) "xmlns"
+Attr namespaceURI: string(29) "http://www.w3.org/2000/xmlns/"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+=== ERROR CASES ===
+--- Testing "http://www.w3.org/2000/xmlns/", "bar:xmlns" ---
+Exception: Namespace Error
+
+--- Testing "http://www.w3.org/2000/xmlns/a", "xmlns" ---
+Exception: Namespace Error
+
+--- Testing "http://www.w3.org/2000/xmlns/a", "xmlns:bar" ---
+Exception: Namespace Error
+
+--- Testing NULL, "xmlns:bar" ---
+Exception: Namespace Error
+
+--- Testing "", "xmlns" ---
+Exception: Namespace Error
+
+--- Testing "http://www.w3.org/2000/xmlns/", "" ---
+Exception: Namespace Error
diff --git a/ext/dom/tests/gh12870_b.phpt b/ext/dom/tests/gh12870_b.phpt
new file mode 100644
index 0000000000000..f70c56a477c96
--- /dev/null
+++ b/ext/dom/tests/gh12870_b.phpt
@@ -0,0 +1,84 @@
+--TEST--
+GH-12870 (Creating an xmlns attribute results in a DOMException) - xml variations
+--EXTENSIONS--
+dom
+--FILE--
+
+--EXPECT--
+=== NORMAL CASES ===
+--- Testing "http://www.w3.org/XML/1998/namespaceqx", "foo:xml" ---
+Attr prefix: string(3) "foo"
+Attr namespaceURI: string(38) "http://www.w3.org/XML/1998/namespaceqx"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+--- Testing "http://www.w3.org/XML/1998/namespace", "xml" ---
+Attr prefix: string(3) "xml"
+Attr namespaceURI: string(36) "http://www.w3.org/XML/1998/namespace"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+--- Testing "http://www.w3.org/XML/1998/namespace", "bar:xml" ---
+Attr prefix: string(3) "xml"
+Attr namespaceURI: string(36) "http://www.w3.org/XML/1998/namespace"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+--- Testing "", "xml" ---
+Attr prefix: string(0) ""
+Attr namespaceURI: NULL
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(false)
+
+
+
+--- Testing "http://www.w3.org/XML/1998/namespacea", "xml" ---
+Attr prefix: string(7) "default"
+Attr namespaceURI: string(37) "http://www.w3.org/XML/1998/namespacea"
+Attr value: string(0) ""
+root namespaceURI: NULL
+Equality check: bool(true)
+
+
+
+=== ERROR CASES ===
+--- Testing "http://www.w3.org/XML/1998/namespace", "xmlns:xml" ---
+Exception: Namespace Error
+
+--- Testing "http://www.w3.org/XML/1998/namespace", "" ---
+Exception: Namespace Error
+
+--- Testing "http://www.w3.org/XML/1998/namespacea", "xml:foo" ---
+Exception: Namespace Error
+
+--- Testing NULL, "xml:foo" ---
+Exception: Namespace Error
diff --git a/ext/dom/tests/gh13012.phpt b/ext/dom/tests/gh13012.phpt
new file mode 100644
index 0000000000000..384b43d20099c
--- /dev/null
+++ b/ext/dom/tests/gh13012.phpt
@@ -0,0 +1,37 @@
+--TEST--
+GH-13012 (DOMNode::isEqualNode() is incorrect when attribute order is different)
+--EXTENSIONS--
+dom
+--FILE--
+loadXML("");
+
+foreach ($dom->getElementsByTagName('x') as $x1) {
+ foreach ($dom->getElementsByTagName('x') as $x2) {
+ echo "Comparing ", $dom->saveXML($x1), " with ", $dom->saveXML($x2), "\n";
+ var_dump($x1->isEqualNode($x2));
+ }
+}
+
+?>
+--EXPECT--
+Comparing with
+bool(true)
+Comparing with
+bool(true)
+Comparing with
+bool(false)
+Comparing with
+bool(true)
+Comparing with
+bool(true)
+Comparing with
+bool(false)
+Comparing with
+bool(false)
+Comparing with
+bool(false)
+Comparing with
+bool(true)
diff --git a/ext/dom/tests/gh13012_ns.phpt b/ext/dom/tests/gh13012_ns.phpt
new file mode 100644
index 0000000000000..33edbe91790d8
--- /dev/null
+++ b/ext/dom/tests/gh13012_ns.phpt
@@ -0,0 +1,37 @@
+--TEST--
+GH-13012 (DOMNode::isEqualNode() is incorrect when attribute order is different - ns variation)
+--EXTENSIONS--
+dom
+--FILE--
+loadXML("");
+
+foreach ($dom->getElementsByTagName('x') as $x1) {
+ foreach ($dom->getElementsByTagName('x') as $x2) {
+ echo "Comparing ", $dom->saveXML($x1), " with ", $dom->saveXML($x2), "\n";
+ var_dump($x1->isEqualNode($x2));
+ }
+}
+
+?>
+--EXPECT--
+Comparing with
+bool(true)
+Comparing with
+bool(false)
+Comparing with
+bool(false)
+Comparing with
+bool(false)
+Comparing with
+bool(true)
+Comparing with
+bool(true)
+Comparing with
+bool(false)
+Comparing with
+bool(true)
+Comparing with
+bool(true)
diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c
index b0b650b7be914..b9ae159574c7e 100644
--- a/ext/ffi/ffi.c
+++ b/ext/ffi/ffi.c
@@ -26,6 +26,7 @@
#include "zend_closures.h"
#include "zend_weakrefs.h"
#include "main/SAPI.h"
+#include "zend_observer.h"
#include
@@ -1302,6 +1303,10 @@ static zval *zend_ffi_cdata_write_field(zend_object *obj, zend_string *field_nam
if (cache_slot && *cache_slot == type) {
field = *(cache_slot + 1);
} else {
+ if (UNEXPECTED(type == NULL)) {
+ zend_throw_error(zend_ffi_exception_ce, "Attempt to assign field '%s' to uninitialized FFI\\CData object", ZSTR_VAL(field_name));
+ return value;
+ }
if (type->kind == ZEND_FFI_TYPE_POINTER) {
type = ZEND_FFI_TYPE(type->pointer.type);
}
@@ -5369,6 +5374,25 @@ static zend_result zend_ffi_preload(char *preload) /* {{{ */
}
/* }}} */
+/* The startup code for observers adds a temporary to each function for internal use.
+ * The "new", "cast", and "type" functions in FFI are both static and non-static.
+ * Only the static versions are in the function table and the non-static versions are not.
+ * This means the non-static versions will be skipped by the observers startup code.
+ * This function fixes that by incrementing the temporary count for the non-static versions.
+ */
+static zend_result (*prev_zend_post_startup_cb)(void);
+static zend_result ffi_fixup_temporaries(void) {
+ if (ZEND_OBSERVER_ENABLED) {
+ ++zend_ffi_new_fn.T;
+ ++zend_ffi_cast_fn.T;
+ ++zend_ffi_type_fn.T;
+ }
+ if (prev_zend_post_startup_cb) {
+ return prev_zend_post_startup_cb();
+ }
+ return SUCCESS;
+}
+
/* {{{ ZEND_MINIT_FUNCTION */
ZEND_MINIT_FUNCTION(ffi)
{
@@ -5391,6 +5415,9 @@ ZEND_MINIT_FUNCTION(ffi)
memcpy(&zend_ffi_type_fn, zend_hash_str_find_ptr(&zend_ffi_ce->function_table, "type", sizeof("type")-1), sizeof(zend_internal_function));
zend_ffi_type_fn.fn_flags &= ~ZEND_ACC_STATIC;
+ prev_zend_post_startup_cb = zend_post_startup_cb;
+ zend_post_startup_cb = ffi_fixup_temporaries;
+
memcpy(&zend_ffi_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
zend_ffi_handlers.get_constructor = zend_fake_get_constructor;
zend_ffi_handlers.free_obj = zend_ffi_free_obj;
diff --git a/ext/ffi/tests/gh12905.phpt b/ext/ffi/tests/gh12905.phpt
new file mode 100644
index 0000000000000..adcc32db2907c
--- /dev/null
+++ b/ext/ffi/tests/gh12905.phpt
@@ -0,0 +1,33 @@
+--TEST--
+GH-12905 (FFI::new interacts badly with observers)
+--EXTENSIONS--
+ffi
+zend_test
+--SKIPIF--
+
+--INI--
+ffi.enable=1
+zend_test.observer.enabled=1
+zend_test.observer.observe_all=1
+zend_test.observer.show_return_value=0
+--FILE--
+new("int");
+?>
+--EXPECTF--
+
+
+
+
+
+
+
+
+
diff --git a/ext/ffi/tests/gh9698.phpt b/ext/ffi/tests/gh9698.phpt
new file mode 100644
index 0000000000000..bab403810cd3f
--- /dev/null
+++ b/ext/ffi/tests/gh9698.phpt
@@ -0,0 +1,21 @@
+--TEST--
+GH-9698 (stream_wrapper_register crashes with FFI\CData provided as class)
+--EXTENSIONS--
+ffi
+--SKIPIF--
+
+--FILE--
+getMessage();
+}
+?>
+
+DONE
+--EXPECT--
+Attempt to assign field 'context' to uninitialized FFI\CData object
+DONE
diff --git a/ext/hash/hash_adler32.c b/ext/hash/hash_adler32.c
index 52ad17c39fd05..3937853fdc317 100644
--- a/ext/hash/hash_adler32.c
+++ b/ext/hash/hash_adler32.c
@@ -25,11 +25,11 @@ PHP_HASH_API void PHP_ADLER32Init(PHP_ADLER32_CTX *context, ZEND_ATTRIBUTE_UNUSE
PHP_HASH_API void PHP_ADLER32Update(PHP_ADLER32_CTX *context, const unsigned char *input, size_t len)
{
- uint32_t i, s[2];
+ uint32_t s[2];
s[0] = context->state & 0xffff;
s[1] = (context->state >> 16) & 0xffff;
- for (i = 0; i < len; ++i) {
+ for (size_t i = 0; i < len; ++i) {
s[0] += input[i];
s[1] += s[0];
if (s[1]>=0x7fffffff)
diff --git a/ext/hash/hash_haval.c b/ext/hash/hash_haval.c
index e1211a0b22ac8..67bc2b2e4780e 100644
--- a/ext/hash/hash_haval.c
+++ b/ext/hash/hash_haval.c
@@ -280,7 +280,8 @@ PHP_HASH_HAVAL_INIT(5,256)
/* {{{ PHP_HAVALUpdate */
PHP_HASH_API void PHP_HAVALUpdate(PHP_HAVAL_CTX *context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 128 */
index = (unsigned int) ((context->count[0] >> 3) & 0x7F);
@@ -288,7 +289,7 @@ PHP_HASH_API void PHP_HAVALUpdate(PHP_HAVAL_CTX *context, const unsigned char *i
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 128 - index;
diff --git a/ext/hash/hash_md.c b/ext/hash/hash_md.c
index eef2af3526608..96da7fce82a27 100644
--- a/ext/hash/hash_md.c
+++ b/ext/hash/hash_md.c
@@ -204,7 +204,8 @@ PHP_HASH_API void PHP_MD4InitArgs(PHP_MD4_CTX * context, ZEND_ATTRIBUTE_UNUSED H
*/
PHP_HASH_API void PHP_MD4Update(PHP_MD4_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -213,7 +214,7 @@ PHP_HASH_API void PHP_MD4Update(PHP_MD4_CTX * context, const unsigned char *inpu
if ((context->count[0] += ((uint32_t) inputLen << 3))
< ((uint32_t) inputLen << 3))
context->count[1]++;
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
diff --git a/ext/hash/hash_ripemd.c b/ext/hash/hash_ripemd.c
index b09615532335d..4802fdf9a1fcc 100644
--- a/ext/hash/hash_ripemd.c
+++ b/ext/hash/hash_ripemd.c
@@ -271,7 +271,8 @@ static void RIPEMD128Transform(uint32_t state[4], const unsigned char block[64])
*/
PHP_HASH_API void PHP_RIPEMD128Update(PHP_RIPEMD128_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -280,7 +281,7 @@ PHP_HASH_API void PHP_RIPEMD128Update(PHP_RIPEMD128_CTX * context, const unsigne
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
@@ -369,7 +370,8 @@ static void RIPEMD256Transform(uint32_t state[8], const unsigned char block[64])
*/
PHP_HASH_API void PHP_RIPEMD256Update(PHP_RIPEMD256_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -378,7 +380,7 @@ PHP_HASH_API void PHP_RIPEMD256Update(PHP_RIPEMD256_CTX * context, const unsigne
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
@@ -468,7 +470,8 @@ static void RIPEMD160Transform(uint32_t state[5], const unsigned char block[64])
*/
PHP_HASH_API void PHP_RIPEMD160Update(PHP_RIPEMD160_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -477,7 +480,7 @@ PHP_HASH_API void PHP_RIPEMD160Update(PHP_RIPEMD160_CTX * context, const unsigne
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
@@ -576,7 +579,8 @@ static void RIPEMD320Transform(uint32_t state[10], const unsigned char block[64]
*/
PHP_HASH_API void PHP_RIPEMD320Update(PHP_RIPEMD320_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -585,7 +589,7 @@ PHP_HASH_API void PHP_RIPEMD320Update(PHP_RIPEMD320_CTX * context, const unsigne
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
diff --git a/ext/hash/hash_sha.c b/ext/hash/hash_sha.c
index 0fc0d02828cb2..201a8513f9626 100644
--- a/ext/hash/hash_sha.c
+++ b/ext/hash/hash_sha.c
@@ -222,7 +222,8 @@ PHP_HASH_API void PHP_SHA224InitArgs(PHP_SHA224_CTX * context, ZEND_ATTRIBUTE_UN
*/
PHP_HASH_API void PHP_SHA224Update(PHP_SHA224_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -231,7 +232,7 @@ PHP_HASH_API void PHP_SHA224Update(PHP_SHA224_CTX * context, const unsigned char
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
@@ -299,7 +300,8 @@ PHP_HASH_API void PHP_SHA224Final(unsigned char digest[28], PHP_SHA224_CTX * con
*/
PHP_HASH_API void PHP_SHA256Update(PHP_SHA256_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -308,7 +310,7 @@ PHP_HASH_API void PHP_SHA256Update(PHP_SHA256_CTX * context, const unsigned char
if ((context->count[0] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
@@ -513,7 +515,8 @@ static void SHA512Transform(uint64_t state[8], const unsigned char block[128])
*/
PHP_HASH_API void PHP_SHA384Update(PHP_SHA384_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i = 0, index, partLen;
+ unsigned int index, partLen;
+ size_t i = 0;
/* Compute number of bytes mod 128 */
index = (unsigned int) ((context->count[0] >> 3) & 0x7F);
@@ -522,7 +525,8 @@ PHP_HASH_API void PHP_SHA384Update(PHP_SHA384_CTX * context, const unsigned char
if ((context->count[0] += ((uint64_t) inputLen << 3)) < ((uint64_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint64_t) inputLen >> 61);
+ /* The cast may seem unnecessary, but on 32-bit this makes sure the result is 0 without invoking undefined behaviour. */
+ context->count[1] += (uint64_t) inputLen >> 61;
partLen = 128 - index;
@@ -666,7 +670,8 @@ PHP_HASH_API void PHP_SHA512_224InitArgs(PHP_SHA512_CTX * context, ZEND_ATTRIBUT
*/
PHP_HASH_API void PHP_SHA512Update(PHP_SHA512_CTX * context, const unsigned char *input, size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 128 */
index = (unsigned int) ((context->count[0] >> 3) & 0x7F);
@@ -675,7 +680,8 @@ PHP_HASH_API void PHP_SHA512Update(PHP_SHA512_CTX * context, const unsigned char
if ((context->count[0] += ((uint64_t) inputLen << 3)) < ((uint64_t) inputLen << 3)) {
context->count[1]++;
}
- context->count[1] += ((uint64_t) inputLen >> 61);
+ /* The cast may seem unnecessary, but on 32-bit this makes sure the result is 0 without invoking undefined behaviour. */
+ context->count[1] += (uint64_t) inputLen >> 61;
partLen = 128 - index;
diff --git a/ext/intl/dateformat/dateformat_create.cpp b/ext/intl/dateformat/dateformat_create.cpp
index 5c96f41fadf35..399740dbca227 100644
--- a/ext/intl/dateformat/dateformat_create.cpp
+++ b/ext/intl/dateformat/dateformat_create.cpp
@@ -112,7 +112,7 @@ static zend_result datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handlin
}
locale = Locale::createFromName(locale_str);
/* get*Name accessors being set does not preclude being bogus */
- if (locale.isBogus() || strlen(locale.getISO3Language()) == 0) {
+ if (locale.isBogus() || ((locale_len == 1 && locale_str[0] != 'C') && strlen(locale.getISO3Language()) == 0)) {
goto error;
}
diff --git a/ext/intl/tests/gh12943.phpt b/ext/intl/tests/gh12943.phpt
new file mode 100644
index 0000000000000..1a8856640acd3
--- /dev/null
+++ b/ext/intl/tests/gh12943.phpt
@@ -0,0 +1,15 @@
+--TEST--
+GitHub #12943 IntlDateFormatter::locale accepting "C".
+--EXTENSIONS--
+intl
+--FILE--
+getLocale(ULOC_VALID_LOCALE));
+--EXPECTF--
+string(%d) "%s"
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index 526aa296aad1a..e8654abeed700 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -35,6 +35,7 @@
#include
#include
#include
+#include
#ifdef LIBXML_SCHEMAS_ENABLED
#include
#include
diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h
index 16507b0f9f0b2..9fbe9ff0f9e81 100644
--- a/ext/libxml/php_libxml.h
+++ b/ext/libxml/php_libxml.h
@@ -149,12 +149,30 @@ PHP_LIBXML_API void php_libxml_shutdown(void);
ZEND_TSRMLS_CACHE_EXTERN()
#endif
+#if defined(__clang__)
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START \
+ _Pragma("clang diagnostic push") \
+ _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END \
+ _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START \
+ _Pragma("GCC diagnostic push") \
+ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END \
+ _Pragma("GCC diagnostic pop")
+#else
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_START
+# define PHP_LIBXML_IGNORE_DEPRECATIONS_END
+#endif
+
/* Other extension may override the global state options, these global options
* are copied initially to ctxt->options. Set the options to a known good value.
* See libxml2 globals.c and parserInternals.c.
* The unique_name argument allows multiple sanitizes and restores within the
* same function, even nested is necessary. */
#define PHP_LIBXML_SANITIZE_GLOBALS(unique_name) \
+ PHP_LIBXML_IGNORE_DEPRECATIONS_START \
int xml_old_loadsubset_##unique_name = xmlLoadExtDtdDefaultValue; \
xmlLoadExtDtdDefaultValue = 0; \
int xml_old_validate_##unique_name = xmlDoValidityCheckingDefaultValue; \
@@ -162,15 +180,18 @@ ZEND_TSRMLS_CACHE_EXTERN()
int xml_old_pedantic_##unique_name = xmlPedanticParserDefault(0); \
int xml_old_substitute_##unique_name = xmlSubstituteEntitiesDefault(0); \
int xml_old_linenrs_##unique_name = xmlLineNumbersDefault(0); \
- int xml_old_blanks_##unique_name = xmlKeepBlanksDefault(1);
+ int xml_old_blanks_##unique_name = xmlKeepBlanksDefault(1); \
+ PHP_LIBXML_IGNORE_DEPRECATIONS_END
#define PHP_LIBXML_RESTORE_GLOBALS(unique_name) \
+ PHP_LIBXML_IGNORE_DEPRECATIONS_START \
xmlLoadExtDtdDefaultValue = xml_old_loadsubset_##unique_name; \
xmlDoValidityCheckingDefaultValue = xml_old_validate_##unique_name; \
(void) xmlPedanticParserDefault(xml_old_pedantic_##unique_name); \
(void) xmlSubstituteEntitiesDefault(xml_old_substitute_##unique_name); \
(void) xmlLineNumbersDefault(xml_old_linenrs_##unique_name); \
- (void) xmlKeepBlanksDefault(xml_old_blanks_##unique_name);
+ (void) xmlKeepBlanksDefault(xml_old_blanks_##unique_name); \
+ PHP_LIBXML_IGNORE_DEPRECATIONS_END
/* Alternative for above, working directly on the context and not setting globals.
* Generally faster because no locking is involved, and this has the advantage that it sets the options to a known good value. */
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index a9f6cd6282922..ad15dd6768e03 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -38,6 +38,7 @@
#include "libmbfl/mbfl/mbfilter_wchar.h"
#include "libmbfl/mbfl/eaw_table.h"
#include "libmbfl/filters/mbfilter_base64.h"
+#include "libmbfl/filters/mbfilter_cjk.h"
#include "libmbfl/filters/mbfilter_qprint.h"
#include "libmbfl/filters/mbfilter_htmlent.h"
#include "libmbfl/filters/mbfilter_uuencode.h"
@@ -2091,9 +2092,10 @@ static zend_string* mb_get_substr_slow(unsigned char *in, size_t in_len, size_t
if (from >= out_len) {
from -= out_len;
} else {
- enc->from_wchar(wchar_buf + from, MIN(out_len - from, len), &buf, !in_len || out_len >= len);
+ size_t needed_codepoints = MIN(out_len - from, len);
+ enc->from_wchar(wchar_buf + from, needed_codepoints, &buf, !in_len || out_len >= len);
from = 0;
- len -= MIN(out_len, len);
+ len -= needed_codepoints;
}
}
@@ -2105,8 +2107,9 @@ static zend_string* mb_get_substr(zend_string *input, size_t from, size_t len, c
unsigned char *in = (unsigned char*)ZSTR_VAL(input);
size_t in_len = ZSTR_LEN(input);
- if (from >= in_len) {
- /* No supported text encoding decodes to more than one codepoint per byte
+ if (len == 0 || (from >= in_len && enc != &mbfl_encoding_sjis_mac)) {
+ /* Other than MacJapanese, no supported text encoding decodes to
+ * more than one codepoint per byte
* So if the number of codepoints to skip >= number of input bytes,
* then definitely the output should be empty */
return zend_empty_string;
@@ -2127,30 +2130,6 @@ static zend_string* mb_get_substr(zend_string *input, size_t from, size_t len, c
len = in_len;
}
return zend_string_init_fast((const char*)in, len);
- } else if (enc->mblen_table) {
- /* The use of the `mblen_table` means that for encodings like MacJapanese,
- * we treat each character in its native charset as "1 character", even if it
- * maps to a sequence of several codepoints */
- const unsigned char *mbtab = enc->mblen_table;
- unsigned char *limit = in + in_len;
- while (from && in < limit) {
- in += mbtab[*in];
- from--;
- }
- if (in >= limit) {
- return zend_empty_string;
- } else if (len == MBFL_SUBSTR_UNTIL_END) {
- return zend_string_init_fast((const char*)in, limit - in);
- }
- unsigned char *end = in;
- while (len && end < limit) {
- end += mbtab[*end];
- len--;
- }
- if (end > limit) {
- end = limit;
- }
- return zend_string_init_fast((const char*)in, end - in);
}
return mb_get_substr_slow(in, in_len, from, len, enc);
@@ -2343,21 +2322,7 @@ PHP_FUNCTION(mb_substr)
size_t mblen = 0;
if (from < 0 || (!len_is_null && len < 0)) {
- if (enc->mblen_table) {
- /* Because we use the `mblen_table` when iterating over the string and
- * extracting the requested part, we also need to use it here for counting
- * the "length" of the string
- * Otherwise, we can get wrong results for text encodings like MacJapanese,
- * where one native 'character' can map to a sequence of several codepoints */
- const unsigned char *mbtab = enc->mblen_table;
- unsigned char *p = (unsigned char*)ZSTR_VAL(str), *e = p + ZSTR_LEN(str);
- while (p < e) {
- p += mbtab[*p];
- mblen++;
- }
- } else {
- mblen = mb_get_strlen(str, enc);
- }
+ mblen = mb_get_strlen(str, enc);
}
/* if "from" position is negative, count start position from the end
diff --git a/ext/mbstring/tests/mb_strstr.phpt b/ext/mbstring/tests/mb_strstr.phpt
index 4cdbb3df24839..85b0eeb19f404 100644
--- a/ext/mbstring/tests/mb_strstr.phpt
+++ b/ext/mbstring/tests/mb_strstr.phpt
@@ -26,6 +26,11 @@ var_dump(FROM_EUC_JP(mb_strstr(EUC_JP("あいうえおかきくけこ"), EUC_JP(
var_dump(bin2hex(mb_strstr("\xdd\x00", "", false, 'UTF-8')));
var_dump(bin2hex(mb_strstr("M\xff\xff\xff\x00", "\x00", false, "SJIS")));
+// Test handling of invalid UTF-8 string
+// Thanks to Stefan Schiller
+var_dump(mb_strstr("\xf0start", "start", false, "UTF-8"));
+var_dump(mb_strstr("\xf0start", "start", true, "UTF-8"));
+
?>
--EXPECT--
string(18) "おかきくけこ"
@@ -36,5 +41,7 @@ string(12) "あいうえ"
string(18) "おかきくけこ"
string(18) "おかきくけこ"
string(12) "あいうえ"
-string(4) "dd00"
+string(4) "3f00"
string(2) "00"
+string(5) "start"
+string(1) "?"
diff --git a/ext/mbstring/tests/mb_substr.phpt b/ext/mbstring/tests/mb_substr.phpt
index ef37ca6dc192a..8c376fb5e6ddf 100644
--- a/ext/mbstring/tests/mb_substr.phpt
+++ b/ext/mbstring/tests/mb_substr.phpt
@@ -118,12 +118,26 @@ print "3: " . mb_convert_encoding(mb_substr($utf7, -5, 3, 'UTF-7'), 'UTF-8', 'UT
print "4: " . mb_convert_encoding(mb_substr($utf7, 1, null, 'UTF-7'), 'UTF-8', 'UTF-7') . "\n";
print "5:" . mb_convert_encoding(mb_substr($utf7, 10, 0, 'UTF-7'), 'UTF-8', 'UTF-7') . "\n";
+echo "Testing agreement with mb_strpos on invalid UTF-8 string:\n";
+/* Stefan Schiller pointed out that on invalid UTF-8 strings, character indices returned
+ * by mb_strpos would not extract the desired part of the string when passed to mb_substr.
+ * This is the test case which he provided: */
+$data = "\xF0AAA";
+$pos = mb_strpos($data, "<", 0, "UTF-8");
+$out = mb_substr($data, 0, $pos, "UTF-8");
+print $out . "\n";
+
echo "Regression:\n";
/* During development, one >= comparison in mb_get_substr was wrongly written as >
* This was caught by libFuzzer */
$str = "\xbd\xbd\xbd\xbd\xbd\xbd\xbd\xbe\xbd\xbd\xbd\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x89\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x00\x00\x00\x00\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8b\x8b\x8b\xbd\xbd\xbd\xbd\xbd\xbd\xbd\xbe\x01:O\xaa\xd3";
echo bin2hex(mb_substr($str, 0, 128, "JIS")), "\n";
+/* Alex messed up when reimplementing mb_substr and, in cases where `from` is non-zero and
+ * the number of characters to extract is more than 128, miscalculated where to end the substring
+ * Thanks to Maurício Fauth for finding the issue */
+var_dump(mb_substr('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum dapibus feugiat ex non cursus. Pellentesque vestibulum tellus sit lectus.', 19, -1));
+
?>
--EXPECT--
EUC-JP:
@@ -138,30 +152,30 @@ SJIS:
4: 967b8cea8365834c8358836782c582b781423031323334825482558256825782588142
5:
-- Testing illegal SJIS byte 0x80 --
-6380
-806162
+633f
+3f6162
SJIS-2004:
-6380
-806162
+633f
+3f6162
MacJapanese:
6380
806162
SJIS-Mobile#DOCOMO:
-6380
-806162
+633f
+3f6162
SJIS-Mobile#KDDI:
-6380
-806162
+633f
+3f6162
SJIS-Mobile#SoftBank:
-6380
-806162
+633f
+3f6162
-- Testing MacJapanese characters which map to 3-5 codepoints each --
616263
-85ab85ac
-85ac
+3f3f
+58
616263
-85bf85c0
-85c0
+3f3f
+78
ISO-2022-JP:
1: 1b2442212121721b284241
2: 43
@@ -200,5 +214,8 @@ UTF-7:
3: йте
4: reek: Σὲ γνωρίζω ἀπὸ τὴν κόψη Russian: Зарегистрируйтесь
5:
+Testing agreement with mb_strpos on invalid UTF-8 string:
+?AAA
Regression:
1b28493d3d3d3d3d3d3d3e3d3d3d1b28423f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f000000003f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f1b28493d3d3d3d3d3d3d3e1b2842013a4f1b28492a1b2842
+string(121) "it amet, consectetur adipiscing elit. Vestibulum dapibus feugiat ex non cursus. Pellentesque vestibulum tellus sit lectus"
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 443232894b287..579b5e989bd3a 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -168,7 +168,13 @@ static void _close_odbc_conn(zend_resource *rsrc)
SQLFreeEnv(conn->henv);
}
efree(conn);
- ODBCG(num_links)--;
+ /* See https://github.com/php/php-src/issues/12974 why we need to check the if */
+#ifdef ZTS
+ if (odbc_module_entry.module_started)
+#endif
+ {
+ ODBCG(num_links)--;
+ }
}
/* }}} */
@@ -2194,7 +2200,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
}
}
- if (ODBCG(allow_persistent) <= 0) {
+ if (!ODBCG(allow_persistent)) {
persistent = 0;
}
diff --git a/ext/opcache/jit/zend_jit_arm64.dasc b/ext/opcache/jit/zend_jit_arm64.dasc
index 089879b3d5c57..52835196bdaf1 100644
--- a/ext/opcache/jit/zend_jit_arm64.dasc
+++ b/ext/opcache/jit/zend_jit_arm64.dasc
@@ -11792,7 +11792,7 @@ static int zend_jit_bind_global(dasm_State **Dst, const zend_op *opline, uint32_
| GC_ADDREF REG0, TMP1w
|1:
if (op1_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)) {
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
| // if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)))
| IF_ZVAL_REFCOUNTED op1_addr, >2, ZREG_TMP1, ZREG_TMP2
|.cold_code
@@ -11819,12 +11819,12 @@ static int zend_jit_bind_global(dasm_State **Dst, const zend_op *opline, uint32_
| EXT_CALL gc_possible_root, REG0
| b >5
}
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
|.code
}
}
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
| // ZVAL_REF(variable_ptr, ref)
| SET_ZVAL_PTR op1_addr, REG0, TMP1
| SET_ZVAL_TYPE_INFO op1_addr, IS_REFERENCE_EX, TMP1w, TMP2
diff --git a/ext/opcache/jit/zend_jit_gdb.c b/ext/opcache/jit/zend_jit_gdb.c
index 39169108a8f5e..867312830f2d4 100644
--- a/ext/opcache/jit/zend_jit_gdb.c
+++ b/ext/opcache/jit/zend_jit_gdb.c
@@ -397,6 +397,7 @@ static void zend_gdbjit_debugabbrev(zend_gdbjit_ctx *ctx)
DUV(DW_FORM_data4);
DB(0);
DB(0);
+ DB(0);
ctx->p = p;
}
diff --git a/ext/opcache/jit/zend_jit_vm_helpers.c b/ext/opcache/jit/zend_jit_vm_helpers.c
index 643b0248b7487..4eca7d78f1e86 100644
--- a/ext/opcache/jit/zend_jit_vm_helpers.c
+++ b/ext/opcache/jit/zend_jit_vm_helpers.c
@@ -205,7 +205,6 @@ void ZEND_FASTCALL zend_jit_undefined_long_key(EXECUTE_DATA_D)
zval *result = EX_VAR(opline->result.var);
zval *dim;
- ZVAL_NULL(result);
if (opline->op2_type == IS_CONST) {
dim = RT_CONSTANT(opline, opline->op2);
} else {
@@ -213,6 +212,7 @@ void ZEND_FASTCALL zend_jit_undefined_long_key(EXECUTE_DATA_D)
}
ZEND_ASSERT(Z_TYPE_P(dim) == IS_LONG);
zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, Z_LVAL_P(dim));
+ ZVAL_NULL(result);
}
void ZEND_FASTCALL zend_jit_undefined_string_key(EXECUTE_DATA_D)
@@ -222,7 +222,6 @@ void ZEND_FASTCALL zend_jit_undefined_string_key(EXECUTE_DATA_D)
zval *dim;
zend_ulong lval;
- ZVAL_NULL(result);
if (opline->op2_type == IS_CONST) {
dim = RT_CONSTANT(opline, opline->op2);
} else {
@@ -234,6 +233,7 @@ void ZEND_FASTCALL zend_jit_undefined_string_key(EXECUTE_DATA_D)
} else {
zend_error(E_WARNING, "Undefined array key \"%s\"", Z_STRVAL_P(dim));
}
+ ZVAL_NULL(result);
}
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_profile_helper(ZEND_OPCODE_HANDLER_ARGS)
diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc
index 22d205dfed0ec..814da32123066 100644
--- a/ext/opcache/jit/zend_jit_x86.dasc
+++ b/ext/opcache/jit/zend_jit_x86.dasc
@@ -12556,7 +12556,7 @@ static int zend_jit_bind_global(dasm_State **Dst, const zend_op *opline, uint32_
| GC_ADDREF r0
|1:
if (op1_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)) {
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
| // if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)))
| IF_ZVAL_REFCOUNTED op1_addr, >2
|.cold_code
@@ -12583,12 +12583,12 @@ static int zend_jit_bind_global(dasm_State **Dst, const zend_op *opline, uint32_
| EXT_CALL gc_possible_root, r1
| jmp >5
}
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
|.code
}
}
- if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
+ if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
| // ZVAL_REF(variable_ptr, ref)
| SET_ZVAL_PTR op1_addr, r0
| SET_ZVAL_TYPE_INFO op1_addr, IS_REFERENCE_EX
diff --git a/ext/opcache/shared_alloc_mmap.c b/ext/opcache/shared_alloc_mmap.c
index ca492b122157d..d5e4612bc104e 100644
--- a/ext/opcache/shared_alloc_mmap.c
+++ b/ext/opcache/shared_alloc_mmap.c
@@ -48,7 +48,7 @@
# define MAP_HUGETLB MAP_ALIGNED_SUPER
#endif
-#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__))
+#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
static void *find_prefered_mmap_base(size_t requested_size)
{
size_t huge_page_size = 2 * 1024 * 1024;
@@ -65,6 +65,18 @@ static void *find_prefered_mmap_base(size_t requested_size)
}
while (fgets(buffer, MAXPATHLEN, f) && sscanf(buffer, "%lx-%lx", &start, &end) == 2) {
+ /* Don't place the segment directly before or after the heap segment. Due to an selinux bug,
+ * a segment directly preceding or following the heap is interpreted as heap memory, which
+ * will result in an execheap violation for the JIT.
+ * See https://bugzilla.kernel.org/show_bug.cgi?id=218258. */
+ bool heap_segment = strstr(buffer, "[heap]") != NULL;
+ if (heap_segment) {
+ uintptr_t start_base = start & ~(huge_page_size - 1);
+ if (last_free_addr + requested_size >= start_base) {
+ last_free_addr = ZEND_MM_ALIGNED_SIZE_EX(end + huge_page_size, huge_page_size);
+ continue;
+ }
+ }
if ((uintptr_t)execute_ex >= start) {
/* the current segment lays before PHP .text segment or PHP .text segment itself */
/*Search for candidates at the end of the free segment near the .text segment
@@ -98,7 +110,9 @@ static void *find_prefered_mmap_base(size_t requested_size)
}
}
last_free_addr = ZEND_MM_ALIGNED_SIZE_EX(end, huge_page_size);
-
+ if (heap_segment) {
+ last_free_addr += huge_page_size;
+ }
}
fclose(f);
#elif defined(__FreeBSD__)
@@ -186,7 +200,7 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
#ifdef MAP_JIT
flags |= MAP_JIT;
#endif
-#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__))
+#if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
void *hint = find_prefered_mmap_base(requested_size);
if (hint != MAP_FAILED) {
# ifdef MAP_HUGETLB
diff --git a/ext/opcache/tests/jit/assign_static_prop_op_001.phpt b/ext/opcache/tests/jit/assign_static_prop_op_001.phpt
new file mode 100644
index 0000000000000..da28851584b30
--- /dev/null
+++ b/ext/opcache/tests/jit/assign_static_prop_op_001.phpt
@@ -0,0 +1,23 @@
+--TEST--
+JIT ASSIGN_STATIC_PROP_OP: 001
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.file_update_protection=0
+opcache.jit_buffer_size=1M
+--EXTENSIONS--
+opcache
+--FILE--
+
+--EXPECT--
+string(1) "1"
diff --git a/ext/opcache/tests/jit/bind_global_001.phpt b/ext/opcache/tests/jit/bind_global_001.phpt
new file mode 100644
index 0000000000000..5ad6fd2619631
--- /dev/null
+++ b/ext/opcache/tests/jit/bind_global_001.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bind global and immutable string
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.file_update_protection=0
+opcache.jit_buffer_size=1M
+--FILE--
+
+--EXPECT--
+NULL
diff --git a/ext/opcache/tests/jit/oss-fuzz-64727.phpt b/ext/opcache/tests/jit/oss-fuzz-64727.phpt
new file mode 100644
index 0000000000000..e8479d1d2f6e4
--- /dev/null
+++ b/ext/opcache/tests/jit/oss-fuzz-64727.phpt
@@ -0,0 +1,27 @@
+--TEST--
+oss-fuzz #64727
+--INI--
+opcache.enable_cli=1
+opcache.jit_buffer_size=64M
+opcache.jit=function
+--EXTENSIONS--
+opcache
+--FILE--
+
+--EXPECT--
+int(0)
+int(3)
+int(3)
+NULL
diff --git a/ext/opcache/tests/opt/dce_014.phpt b/ext/opcache/tests/opt/dce_014.phpt
new file mode 100644
index 0000000000000..a803b52772913
--- /dev/null
+++ b/ext/opcache/tests/opt/dce_014.phpt
@@ -0,0 +1,12 @@
+--TEST--
+DCE may remove FREE after FETCH_LIST_W
+--FILE--
+
+DONE
+--EXPECT--
+DONE
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index b16e21549636d..9698b54a21085 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -3194,6 +3194,7 @@ PHP_FUNCTION(openssl_csr_sign)
X509 *cert = NULL, *new_cert = NULL;
EVP_PKEY * key = NULL, *priv_key = NULL;
int i;
+ bool new_cert_used = false;
struct php_x509_request req;
ZEND_PARSE_PARAMETERS_START(4, 6)
@@ -3315,11 +3316,12 @@ PHP_FUNCTION(openssl_csr_sign)
object_init_ex(return_value, php_openssl_certificate_ce);
cert_object = Z_OPENSSL_CERTIFICATE_P(return_value);
cert_object->x509 = new_cert;
+ new_cert_used = true;
cleanup:
- if (cert == new_cert) {
- cert = NULL;
+ if (!new_cert_used && new_cert) {
+ X509_free(new_cert);
}
PHP_SSL_REQ_DISPOSE(&req);
@@ -3328,7 +3330,7 @@ PHP_FUNCTION(openssl_csr_sign)
if (csr_str) {
X509_REQ_free(csr);
}
- if (cert_str && cert) {
+ if (cert_str && cert && cert != new_cert) {
X509_free(cert);
}
}
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index ce9c7967e7271..4ac271fefd4bf 100644
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -930,8 +930,13 @@ PHP_METHOD(PDO, getAttribute)
add_next_index_zval(return_value, &dbh->def_stmt_ctor_args);
}
return;
+
case PDO_ATTR_DEFAULT_FETCH_MODE:
RETURN_LONG(dbh->default_fetch_type);
+
+ case PDO_ATTR_STRINGIFY_FETCHES:
+ RETURN_BOOL(dbh->stringify);
+
default:
break;
}
diff --git a/ext/pdo_mysql/tests/bug68371.phpt b/ext/pdo_mysql/tests/bug68371.phpt
index 375011af33ea7..8a5113e437b29 100644
--- a/ext/pdo_mysql/tests/bug68371.phpt
+++ b/ext/pdo_mysql/tests/bug68371.phpt
@@ -96,6 +96,6 @@ array(1) {
ERR
ERR
string(5) "mysql"
-ERR
+bool(false)
ERR
int(4)
diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c
index a9d5befdac8f2..fa160bfb471e4 100644
--- a/ext/pdo_odbc/odbc_driver.c
+++ b/ext/pdo_odbc/odbc_driver.c
@@ -344,6 +344,30 @@ static bool odbc_handle_set_attr(pdo_dbh_t *dbh, zend_long attr, zval *val)
}
H->assume_utf8 = bval;
return true;
+ case PDO_ATTR_AUTOCOMMIT:
+ if (!pdo_get_bool_param(&bval, val)) {
+ return false;
+ }
+ if (dbh->in_txn) {
+ pdo_raise_impl_error(dbh, NULL, "HY000", "Cannot change autocommit mode while a transaction is already open");
+ return false;
+ }
+ if (dbh->auto_commit ^ bval) {
+ dbh->auto_commit = bval;
+ RETCODE rc = SQLSetConnectAttr(
+ H->dbc,
+ SQL_ATTR_AUTOCOMMIT,
+ dbh->auto_commit ? (SQLPOINTER) SQL_AUTOCOMMIT_ON : (SQLPOINTER) SQL_AUTOCOMMIT_OFF,
+ SQL_IS_INTEGER
+ );
+ if (rc != SQL_SUCCESS) {
+ pdo_odbc_drv_error(
+ dbh->auto_commit ? "SQLSetConnectAttr AUTOCOMMIT = ON" : "SQLSetConnectAttr AUTOCOMMIT = OFF"
+ );
+ return false;
+ }
+ }
+ return true;
default:
strcpy(H->einfo.last_err_msg, "Unknown Attribute");
H->einfo.what = "setAttribute";
@@ -386,7 +410,9 @@ static int odbc_handle_get_attr(pdo_dbh_t *dbh, zend_long attr, zval *val)
case PDO_ODBC_ATTR_ASSUME_UTF8:
ZVAL_BOOL(val, H->assume_utf8 ? 1 : 0);
return 1;
-
+ case PDO_ATTR_AUTOCOMMIT:
+ ZVAL_BOOL(val, dbh->auto_commit);
+ return 1;
}
return 0;
}
diff --git a/ext/pdo_odbc/tests/autocommit.phpt b/ext/pdo_odbc/tests/autocommit.phpt
new file mode 100644
index 0000000000000..3e17a4ad2e9e4
--- /dev/null
+++ b/ext/pdo_odbc/tests/autocommit.phpt
@@ -0,0 +1,53 @@
+--TEST--
+PDO ODBC auto commit mode
+--EXTENSIONS--
+pdo_odbc
+--SKIPIF--
+
+--XLEAK--
+A bug in msodbcsql causes a memory leak when reconnecting after closing. See GH-12306
+--FILE--
+exec("CREATE TABLE {$table} (id INT, name VARCHAR(255))");
+unset($db);
+
+$db = new PDO(getenv('PDOTEST_DSN'), getenv('PDOTEST_USER'), getenv('PDOTEST_PASS'), [
+ PDO::ATTR_AUTOCOMMIT => 0,
+]);
+
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
+$db->query("INSERT INTO {$table} (id, name) VALUES (1, 'test')");
+unset($db);
+
+$db = new PDO(getenv('PDOTEST_DSN'), getenv('PDOTEST_USER'), getenv('PDOTEST_PASS'));
+
+$r = $db->query("SELECT * FROM {$table}");
+var_dump($r->fetchAll(PDO::FETCH_ASSOC));
+
+echo "done!";
+?>
+--CLEAN--
+exec("DROP TABLE IF EXISTS autocommit_pdo_odbc");
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ array(2) {
+ ["id"]=>
+ string(1) "1"
+ ["name"]=>
+ string(4) "test"
+ }
+}
+done!
diff --git a/ext/pdo_odbc/tests/autocommit_change_mode.phpt b/ext/pdo_odbc/tests/autocommit_change_mode.phpt
new file mode 100644
index 0000000000000..c44f124a6cf65
--- /dev/null
+++ b/ext/pdo_odbc/tests/autocommit_change_mode.phpt
@@ -0,0 +1,135 @@
+--TEST--
+PDO ODBC auto commit mode
+--EXTENSIONS--
+pdo_odbc
+--SKIPIF--
+
+--FILE--
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+echo "========== not in transaction ==========\n";
+
+echo "auto commit ON from ON\n";
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, true);
+var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+echo "Success\n\n";
+
+echo "auto commit OFF from ON\n";
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
+var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+echo "Success\n\n";
+
+echo "auto commit OFF from OFF\n";
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
+var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+echo "Success\n\n";
+
+echo "auto commit ON from OFF\n";
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, true);
+var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+echo "Success\n\n";
+
+echo "========== in transaction ==========\n";
+
+echo "begin transaction\n";
+$db->beginTransaction();
+echo "\n";
+
+echo "auto commit ON from ON, expect error\n";
+try {
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, true);
+} catch (PDOException $e) {
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ echo $e->getMessage()."\n\n";
+}
+
+echo "auto commit OFF from ON, expect error\n";
+try {
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
+} catch (PDOException $e) {
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ echo $e->getMessage()."\n\n";
+}
+
+echo "end transaction\n";
+$db->rollback();
+
+echo "auto commit OFF\n";
+$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
+
+echo "begin transaction\n";
+$db->beginTransaction();
+echo "\n";
+
+echo "auto commit ON from OFF, expect error\n";
+try {
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, true);
+} catch (PDOException $e) {
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ echo $e->getMessage()."\n\n";
+}
+
+echo "auto commit OFF from OFF, expect error\n";
+try {
+ $db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
+} catch (PDOException $e) {
+ var_dump($db->getAttribute(PDO::ATTR_AUTOCOMMIT));
+ echo $e->getMessage()."\n\n";
+}
+
+echo "end transaction\n";
+$db->rollback();
+echo "\n";
+
+echo "done!";
+?>
+--EXPECT--
+========== not in transaction ==========
+auto commit ON from ON
+bool(true)
+Success
+
+auto commit OFF from ON
+bool(false)
+Success
+
+auto commit OFF from OFF
+bool(false)
+Success
+
+auto commit ON from OFF
+bool(true)
+Success
+
+========== in transaction ==========
+begin transaction
+
+auto commit ON from ON, expect error
+bool(true)
+SQLSTATE[HY000]: General error: Cannot change autocommit mode while a transaction is already open
+
+auto commit OFF from ON, expect error
+bool(true)
+SQLSTATE[HY000]: General error: Cannot change autocommit mode while a transaction is already open
+
+end transaction
+auto commit OFF
+begin transaction
+
+auto commit ON from OFF, expect error
+bool(false)
+SQLSTATE[HY000]: General error: Cannot change autocommit mode while a transaction is already open
+
+auto commit OFF from OFF, expect error
+bool(false)
+SQLSTATE[HY000]: General error: Cannot change autocommit mode while a transaction is already open
+
+end transaction
+
+done!
diff --git a/ext/pdo_pgsql/tests/bug68371.phpt b/ext/pdo_pgsql/tests/bug68371.phpt
index 04a0dd70dd380..32173a5a96450 100644
--- a/ext/pdo_pgsql/tests/bug68371.phpt
+++ b/ext/pdo_pgsql/tests/bug68371.phpt
@@ -95,6 +95,6 @@ array(1) {
ERR
ERR
string(5) "pgsql"
-ERR
+bool(true)
ERR
int(4)
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 9b61bb7516532..d11c328254a83 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -315,8 +315,14 @@ static void _close_pgsql_plink(zend_resource *rsrc)
PQclear(res);
}
PQfinish(link);
- PGG(num_persistent)--;
- PGG(num_links)--;
+ /* See https://github.com/php/php-src/issues/12974 why we need to check the if */
+#ifdef ZTS
+ if (pgsql_module_entry.module_started)
+#endif
+ {
+ PGG(num_persistent)--;
+ PGG(num_links)--;
+ }
rsrc->ptr = NULL;
}
@@ -406,7 +412,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN( "pgsql.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, allow_persistent, zend_pgsql_globals, pgsql_globals)
STD_PHP_INI_ENTRY_EX("pgsql.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_persistent, zend_pgsql_globals, pgsql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX("pgsql.max_links", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_links, zend_pgsql_globals, pgsql_globals, display_link_numbers)
-STD_PHP_INI_BOOLEAN( "pgsql.auto_reset_persistent", "0", PHP_INI_SYSTEM, OnUpdateBool, auto_reset_persistent, zend_pgsql_globals, pgsql_globals)
+STD_PHP_INI_BOOLEAN( "pgsql.auto_reset_persistent", "0", PHP_INI_SYSTEM, OnUpdateLong, auto_reset_persistent, zend_pgsql_globals, pgsql_globals)
STD_PHP_INI_BOOLEAN( "pgsql.ignore_notice", "0", PHP_INI_ALL, OnUpdateBool, ignore_notices, zend_pgsql_globals, pgsql_globals)
STD_PHP_INI_BOOLEAN( "pgsql.log_notice", "0", PHP_INI_ALL, OnUpdateBool, log_notices, zend_pgsql_globals, pgsql_globals)
PHP_INI_END()
diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h
index 5286ccec636b4..b9a5fec11d541 100644
--- a/ext/pgsql/php_pgsql.h
+++ b/ext/pgsql/php_pgsql.h
@@ -184,9 +184,10 @@ static const php_stream_ops php_stream_pgsql_fd_ops = {
ZEND_BEGIN_MODULE_GLOBALS(pgsql)
zend_long num_links,num_persistent;
zend_long max_links,max_persistent;
- zend_long allow_persistent;
+ bool allow_persistent;
+ int ignore_notices;
zend_long auto_reset_persistent;
- int ignore_notices,log_notices;
+ int log_notices;
zend_object *default_link; /* default link when connection is omitted */
HashTable field_oids;
HashTable table_oids;
diff --git a/ext/phar/stream.c b/ext/phar/stream.c
index e400699780e1f..3288aa4c2d192 100644
--- a/ext/phar/stream.c
+++ b/ext/phar/stream.c
@@ -254,6 +254,17 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
php_url_free(resource);
goto phar_stub;
} else {
+ php_stream *stream = phar_get_pharfp(phar);
+ if (stream == NULL) {
+ if (UNEXPECTED(FAILURE == phar_open_archive_fp(phar))) {
+ php_stream_wrapper_log_error(wrapper, options, "phar error: could not reopen phar \"%s\"", ZSTR_VAL(resource->host));
+ efree(internal_file);
+ php_url_free(resource);
+ return NULL;
+ }
+ stream = phar_get_pharfp(phar);
+ }
+
phar_entry_info *entry;
entry = (phar_entry_info *) ecalloc(1, sizeof(phar_entry_info));
@@ -266,7 +277,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
entry->is_crc_checked = 1;
idata = (phar_entry_data *) ecalloc(1, sizeof(phar_entry_data));
- idata->fp = phar_get_pharfp(phar);
+ idata->fp = stream;
idata->phar = phar;
idata->internal_file = entry;
if (!phar->is_persistent) {
diff --git a/ext/phar/tests/bug77432.phpt b/ext/phar/tests/bug77432.phpt
new file mode 100644
index 0000000000000..12480856b3952
--- /dev/null
+++ b/ext/phar/tests/bug77432.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Bug #77432 (Segmentation fault on including phar file)
+--SKIPIF--
+
+--EXTENSIONS--
+phar
+--INI--
+phar.readonly=0
+--FILE--
+startBuffering();
+$phar->addFromString('test.txt', 'text');
+$phar->setStub('');
+$phar->stopBuffering();
+unset($phar);
+
+echo "--- Include 1 ---\n";
+include("phar://" . $filename);
+echo "--- Include 2 ---\n";
+// Note: will warn because the halting offset is redefined, but won't display the name because "zend_mangle_property_name" starts the name with \0
+// However, this is just the easiest way to reproduce it, so go with this test.
+include("phar://" . $filename);
+echo "--- After unlink ---\n";
+unlink($filename);
+// This will just fail, as it should, but it is here to test the reopen error-handling path.
+include("phar://" . $filename);
+
+?>
+--CLEAN--
+
+--EXPECTF--
+--- Include 1 ---
+hello world
+--- Include 2 ---
+
+Warning: Constant already defined in %s on line %d
+hello world
+--- After unlink ---
+
+Warning: include(%sbug77432.phar): Failed to open stream: phar error: could not reopen phar "%sbug77432.phar" in %s on line %d
+
+Warning: include(): Failed opening '%sbug77432.phar' for inclusion (include_path=%s) in %s on line %d
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index 3e2f1e685544f..eebf4af023955 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -421,8 +421,6 @@ static zval *sxe_prop_dim_write(zend_object *object, zval *member, zval *value,
GET_NODE(sxe, node);
- php_libxml_invalidate_node_list_cache_from_doc(node->doc);
-
if (sxe->iter.type == SXE_ITER_ATTRLIST) {
attribs = 1;
elements = 0;
@@ -483,6 +481,8 @@ static zval *sxe_prop_dim_write(zend_object *object, zval *member, zval *value,
}
if (node) {
+ php_libxml_invalidate_node_list_cache_from_doc(node->doc);
+
if (attribs) {
if (Z_TYPE_P(member) == IS_LONG) {
while (attr && nodendx <= Z_LVAL_P(member)) {
@@ -625,6 +625,9 @@ static zval *sxe_property_get_adr(zend_object *object, zend_string *zname, int f
sxe = php_sxe_fetch_object(object);
GET_NODE(sxe, node);
+ if (UNEXPECTED(!node)) {
+ return &EG(error_zval);
+ }
name = ZSTR_VAL(zname);
node = sxe_get_element_by_name(sxe, node, name, &type);
if (node) {
@@ -794,8 +797,6 @@ static void sxe_prop_dim_delete(zend_object *object, zval *member, bool elements
GET_NODE(sxe, node);
- php_libxml_invalidate_node_list_cache_from_doc(node->doc);
-
if (Z_TYPE_P(member) == IS_LONG) {
if (sxe->iter.type != SXE_ITER_ATTRLIST) {
attribs = 0;
@@ -819,6 +820,8 @@ static void sxe_prop_dim_delete(zend_object *object, zval *member, bool elements
}
if (node) {
+ php_libxml_invalidate_node_list_cache_from_doc(node->doc);
+
if (attribs) {
if (Z_TYPE_P(member) == IS_LONG) {
int nodendx = 0;
@@ -1675,8 +1678,6 @@ PHP_METHOD(SimpleXMLElement, addChild)
sxe = Z_SXEOBJ_P(ZEND_THIS);
GET_NODE(sxe, node);
- php_libxml_invalidate_node_list_cache_from_doc(node->doc);
-
if (sxe->iter.type == SXE_ITER_ATTRLIST) {
php_error_docref(NULL, E_WARNING, "Cannot add element to attributes");
return;
@@ -1689,6 +1690,8 @@ PHP_METHOD(SimpleXMLElement, addChild)
return;
}
+ php_libxml_invalidate_node_list_cache_from_doc(node->doc);
+
localname = xmlSplitQName2((xmlChar *)qname, &prefix);
if (localname == NULL) {
localname = xmlStrdup((xmlChar *)qname);
diff --git a/ext/simplexml/tests/get_prop_address_not_initialized.phpt b/ext/simplexml/tests/get_prop_address_not_initialized.phpt
new file mode 100644
index 0000000000000..e6f07405b9b65
--- /dev/null
+++ b/ext/simplexml/tests/get_prop_address_not_initialized.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Getting the address of an uninitialized property of a SimpleXMLElement
+--EXTENSIONS--
+simplexml
+--FILE--
+newInstanceWithoutConstructor();
+$sxe->a['b'] = 'b';
+
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: SimpleXMLElement is not properly initialized in %s:%d
+Stack trace:
+#0 {main}
+ thrown in %s on line %d
diff --git a/ext/simplexml/tests/gh12929.phpt b/ext/simplexml/tests/gh12929.phpt
new file mode 100644
index 0000000000000..2ae89346dba8c
--- /dev/null
+++ b/ext/simplexml/tests/gh12929.phpt
@@ -0,0 +1,29 @@
+--TEST--
+GH-12929 (SimpleXMLElement with stream_wrapper_register can segfault)
+--EXTENSIONS--
+simplexml
+--FILE--
+getMessage(), "\n";
+ echo $e->getPrevious()->getMessage(), "\n";
+}
+
+$scheme = "foo2";
+stream_wrapper_register($scheme, "SimpleXMLElement");
+try {
+ file_get_contents($scheme . "://x");
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+ echo $e->getPrevious()->getMessage(), "\n";
+}
+?>
+--EXPECT--
+It's not possible to assign a complex type to properties, resource given
+SimpleXMLElement is not properly initialized
+It's not possible to assign a complex type to properties, resource given
+SimpleXMLElement is not properly initialized
diff --git a/ext/standard/sha1.c b/ext/standard/sha1.c
index ed59d80ab0ef2..95f2b54d0fd02 100644
--- a/ext/standard/sha1.c
+++ b/ext/standard/sha1.c
@@ -173,7 +173,8 @@ PHPAPI void PHP_SHA1InitArgs(PHP_SHA1_CTX * context, ZEND_ATTRIBUTE_UNUSED HashT
PHPAPI void PHP_SHA1Update(PHP_SHA1_CTX * context, const unsigned char *input,
size_t inputLen)
{
- unsigned int i, index, partLen;
+ unsigned int index, partLen;
+ size_t i;
/* Compute number of bytes mod 64 */
index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
@@ -182,7 +183,7 @@ PHPAPI void PHP_SHA1Update(PHP_SHA1_CTX * context, const unsigned char *input,
if ((context->count[0] += ((uint32_t) inputLen << 3))
< ((uint32_t) inputLen << 3))
context->count[1]++;
- context->count[1] += ((uint32_t) inputLen >> 29);
+ context->count[1] += (uint32_t) (inputLen >> 29);
partLen = 64 - index;
diff --git a/ext/standard/tests/file/file_variation8-win32.phpt b/ext/standard/tests/file/file_variation8-win32.phpt
index 9df2f5e4c536b..2aeaf451ae969 100644
--- a/ext/standard/tests/file/file_variation8-win32.phpt
+++ b/ext/standard/tests/file/file_variation8-win32.phpt
@@ -10,7 +10,7 @@ if(substr(PHP_OS, 0, 3) != "WIN")
--FILE--
--CLEAN--
';
+
+$tidy = new tidy();
+$tidy->ParseString($html);
+echo tidy_get_output($tidy), "\n";
+
+var_dump($tidy->root()->child[1]->attribute);
+
+?>
+--EXPECT--
+
+
+
+
+
+
+
+
+array(4) {
+ ["lang"]=>
+ string(2) "en"
+ ["boolean"]=>
+ string(0) ""
+ ["empty"]=>
+ string(0) ""
+ ["selected"]=>
+ string(8) "selected"
+}
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index e7b345dd25e34..a2e4dec90a3e1 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -662,8 +662,12 @@ static void tidy_add_node_default_properties(PHPTidyObj *obj)
do {
name = (char *)tidyAttrName(tempattr);
val = (char *)tidyAttrValue(tempattr);
- if (name && val) {
- add_assoc_string(&attribute, name, val);
+ if (name) {
+ if (val) {
+ add_assoc_string(&attribute, name, val);
+ } else {
+ add_assoc_str(&attribute, name, zend_empty_string);
+ }
}
} while((tempattr = tidyAttrNext(tempattr)));
} else {
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index c4a1f483931c5..611ec404fa455 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -350,8 +350,10 @@ PHP_METHOD(XSLTProcessor, importStylesheet)
newdoc = xmlCopyDoc(doc, 1);
xmlNodeSetBase((xmlNodePtr) newdoc, (xmlChar *)doc->URL);
PHP_LIBXML_SANITIZE_GLOBALS(parse);
+ PHP_LIBXML_IGNORE_DEPRECATIONS_START
xmlSubstituteEntitiesDefault(1);
xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
+ PHP_LIBXML_IGNORE_DEPRECATIONS_END
sheetp = xsltParseStylesheetDoc(newdoc);
PHP_LIBXML_RESTORE_GLOBALS(parse);
diff --git a/ext/zend_test/test.c b/ext/zend_test/test.c
index 0d0f30e40977d..45b48ac61ff5e 100644
--- a/ext/zend_test/test.c
+++ b/ext/zend_test/test.c
@@ -45,6 +45,7 @@
#if defined(HAVE_LIBXML) && !defined(PHP_WIN32)
# include
# include
+# include "ext/dom/php_dom.h"
#endif
ZEND_DECLARE_MODULE_GLOBALS(zend_test)
@@ -377,12 +378,14 @@ static ZEND_FUNCTION(zend_test_override_libxml_global_state)
{
ZEND_PARSE_PARAMETERS_NONE();
+ PHP_LIBXML_IGNORE_DEPRECATIONS_START
xmlLoadExtDtdDefaultValue = 1;
xmlDoValidityCheckingDefaultValue = 1;
(void) xmlPedanticParserDefault(1);
(void) xmlSubstituteEntitiesDefault(1);
(void) xmlLineNumbersDefault(1);
(void) xmlKeepBlanksDefault(0);
+ PHP_LIBXML_IGNORE_DEPRECATIONS_END
}
#endif
diff --git a/main/php_version.h b/main/php_version.h
index e4f32e1fd5204..30cf94f048dbe 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -2,7 +2,7 @@
/* edit configure.ac to change version number */
#define PHP_MAJOR_VERSION 8
#define PHP_MINOR_VERSION 3
-#define PHP_RELEASE_VERSION 1
-#define PHP_EXTRA_VERSION "-dev"
-#define PHP_VERSION "8.3.1-dev"
-#define PHP_VERSION_ID 80301
+#define PHP_RELEASE_VERSION 2
+#define PHP_EXTRA_VERSION ""
+#define PHP_VERSION "8.3.2"
+#define PHP_VERSION_ID 80302
diff --git a/main/streams/userspace.c b/main/streams/userspace.c
index 73319215d2800..2a7380ce8f3a6 100644
--- a/main/streams/userspace.c
+++ b/main/streams/userspace.c
@@ -278,6 +278,12 @@ static void user_stream_create_object(struct php_user_stream_wrapper *uwrap, php
add_property_null(object, "context");
}
+ if (EG(exception) != NULL) {
+ zval_ptr_dtor(object);
+ ZVAL_UNDEF(object);
+ return;
+ }
+
if (uwrap->ce->constructor) {
zend_call_known_instance_method_with_0_params(
uwrap->ce->constructor, Z_OBJ_P(object), NULL);
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index ab181f5b03a1d..a09f273a70221 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -2249,6 +2249,17 @@ static bool php_cli_server_dispatch_router(php_cli_server *server, php_cli_serve
zend_try {
zval retval;
+ /* Normally php_execute_script restarts the timer with max_execution_time if it has
+ * previously been initialized with max_input_time. We're not using php_execute_script here
+ * because it does not provide a way to get the return value of the main script, so we need
+ * to restart the timer manually. */
+ if (PG(max_input_time) != -1) {
+#ifdef PHP_WIN32
+ zend_unset_timeout();
+#endif
+ zend_set_timeout(INI_INT("max_execution_time"), 0);
+ }
+
ZVAL_UNDEF(&retval);
if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE, &retval, 1, &zfd)) {
if (Z_TYPE(retval) != IS_UNDEF) {
diff --git a/sapi/fpm/tests/logreader.inc b/sapi/fpm/tests/logreader.inc
index 97b19adb027f6..51a7104d01f3f 100644
--- a/sapi/fpm/tests/logreader.inc
+++ b/sapi/fpm/tests/logreader.inc
@@ -116,8 +116,11 @@ class LogReader
*/
public function printLogs(): void
{
+ if (empty($this->sources)) {
+ return;
+ }
$hasMultipleDescriptors = count($this->sources) > 1;
- echo "LOGS:\n";
+ echo "\nLOGS:\n";
foreach ($this->sources as $name => $source) {
if ($hasMultipleDescriptors) {
echo ">>> source: $name\n";
@@ -128,6 +131,7 @@ class LogReader
}
$this->printSeparator();
}
+ echo "\n";
}
/**
@@ -142,9 +146,8 @@ class LogReader
if (is_null($errorMessage)) {
return false;
}
- echo "ERROR: " . $errorMessage . "\n\n";
+ echo "ERROR: " . $errorMessage . "\n";
$this->printLogs();
- echo "\n";
return false;
}
diff --git a/sapi/fpm/tests/response.inc b/sapi/fpm/tests/response.inc
index e3eb461319771..d760c26dbb8e7 100644
--- a/sapi/fpm/tests/response.inc
+++ b/sapi/fpm/tests/response.inc
@@ -2,14 +2,68 @@
namespace FPM;
-class Response
+abstract class BaseResponse
+{
+ /**
+ * Tester instance
+ * @var Tester
+ */
+ private Tester $tester;
+
+ /**
+ * @var bool
+ */
+ protected bool $debugOutputted = false;
+
+ /**
+ * @param Tester $tester
+ */
+ public function __construct(Tester $tester)
+ {
+ $this->tester = $tester;
+ }
+
+ /**
+ * Debug response output.
+ *
+ * @return void
+ */
+ abstract function debugOutput(): void;
+
+ /**
+ * Emit error message
+ *
+ * @param string $message
+ * @param bool $throw
+ *
+ * @return bool
+ * @throws \Exception
+ */
+ protected function error(string $message, bool $throw = false): bool
+ {
+ $errorMessage = "ERROR: $message\n";
+ if ($throw) {
+ throw new \Exception($errorMessage);
+ }
+ if ( ! $this->debugOutputted) {
+ $this->debugOutput();
+ }
+ echo $errorMessage;
+
+ $this->tester->printLogs();
+
+ return false;
+ }
+}
+
+class Response extends BaseResponse
{
const HEADER_SEPARATOR = "\r\n\r\n";
/**
* @var array
*/
- private $data;
+ private array $data;
/**
* @var string
@@ -39,19 +93,17 @@ class Response
/**
* @var bool
*/
- private $expectInvalid;
-
- /**
- * @var bool
- */
- private bool $debugOutputted = false;
+ private bool $expectInvalid;
/**
+ * @param Tester $tester
* @param string|array|null $data
* @param bool $expectInvalid
*/
- public function __construct($data = null, $expectInvalid = false)
+ public function __construct(Tester $tester, $data = null, bool $expectInvalid = false)
{
+ parent::__construct($tester);
+
if ( ! is_array($data)) {
$data = [
'response' => $data,
@@ -105,7 +157,7 @@ class Response
*
* @return Response
*/
- public function expectJsonBodyPatternForStatusProcessField(string $fieldName, string $pattern)
+ public function expectJsonBodyPatternForStatusProcessField(string $fieldName, string $pattern): Response
{
$rawData = $this->getBody('application/json');
$data = json_decode($rawData, true);
@@ -281,7 +333,7 @@ class Response
/**
* Debug response output
*/
- public function debugOutput()
+ public function debugOutput(): void
{
echo ">>> Response\n";
echo "----------------- OUT -----------------\n";
@@ -442,26 +494,9 @@ class Response
);
}
}
-
- /**
- * Emit error message
- *
- * @param string $message
- *
- * @return bool
- */
- private function error(string $message): bool
- {
- if ( ! $this->debugOutputted) {
- $this->debugOutput();
- }
- echo "ERROR: $message\n";
-
- return false;
- }
}
-class ValuesResponse
+class ValuesResponse extends BaseResponse
{
/**
* @var array
@@ -469,10 +504,14 @@ class ValuesResponse
private array $values;
/**
+ * @param Tester $tester
* @param string|array|null $values
+ * @throws \Exception
*/
- public function __construct($values = null)
+ public function __construct(Tester $tester, $values = null)
{
+ parent::__construct($tester);
+
if ( ! is_array($values)) {
if ( ! is_null($values) ) {
$this->error('Invalid values supplied', true);
@@ -489,14 +528,15 @@ class ValuesResponse
* @param string $name
* @param mixed $value
* @return ValuesResponse
+ * @throws \Exception
*/
public function expectValue(string $name, $value = null)
{
if ( ! isset($this->values[$name])) {
- return $this->error("Value $name not found in values");
+ $this->error("Value $name not found in values");
}
if ( ! is_null($value) && $value !== $this->values[$name]) {
- return $this->error("Value $name is {$this->values[$name]} but expected $value");
+ $this->error("Value $name is {$this->values[$name]} but expected $value");
}
return $this;
}
@@ -513,36 +553,12 @@ class ValuesResponse
/**
* Debug output data.
- *
- * @return ValuesResponse
*/
- public function debugOutput()
+ public function debugOutput(): void
{
echo ">>> ValuesResponse\n";
echo "----------------- Values -----------------\n";
var_dump($this->values);
echo "---------------------------------------\n\n";
-
- return $this;
- }
-
- /**
- * Emit error message
- *
- * @param string $message
- * @param bool $throw
- *
- * @return ValuesResponse
- */
- private function error(string $message, $throw = false): bool
- {
- $errorMessage = "ERROR: $message\n";
- if ($throw) {
- throw new \Exception($errorMessage);
- }
- $this->debugOutput();
- echo $errorMessage;
-
- return $this;
}
}
diff --git a/sapi/fpm/tests/status.inc b/sapi/fpm/tests/status.inc
index 0e3f314b42209..dc07de563adbc 100644
--- a/sapi/fpm/tests/status.inc
+++ b/sapi/fpm/tests/status.inc
@@ -37,6 +37,34 @@ class Status
'slow requests' => '\d+',
];
+ /**
+ * @var Tester
+ */
+ private Tester $tester;
+
+ /**
+ * @param Tester $tester
+ */
+ public function __construct(Tester $tester)
+ {
+ $this->tester = $tester;
+ }
+
+ /**
+ * @param string $body
+ * @param string $pattern
+ * @return void
+ */
+ private function matchError(string $body, string $pattern): void
+ {
+ echo "ERROR: Expected body does not match pattern\n";
+ echo "BODY:\n";
+ var_dump($body);
+ echo "PATTERN:\n";
+ var_dump($pattern);
+ $this->tester->printLogs();
+ }
+
/**
* Check status page.
*
@@ -106,11 +134,7 @@ class Status
$pattern .= $footer . ')';
if (!preg_match($pattern, $body)) {
- echo "ERROR: Expected body does not match pattern\n";
- echo "BODY:\n";
- var_dump($body);
- echo "PATTERN:\n";
- var_dump($pattern);
+ $this->matchError($body, $pattern);
}
}
@@ -245,11 +269,7 @@ class Status
"# EOF)\n";
if (!preg_match($pattern, $body)) {
- echo "ERROR: Expected body does not match pattern\n";
- echo "BODY:\n";
- var_dump($body);
- echo "PATTERN:\n";
- var_dump($pattern);
+ $this->matchError($body, $pattern);
}
}
}
diff --git a/sapi/fpm/tests/tester.inc b/sapi/fpm/tests/tester.inc
index 52c6e8992c5fb..05a33737ebb9e 100644
--- a/sapi/fpm/tests/tester.inc
+++ b/sapi/fpm/tests/tester.inc
@@ -672,7 +672,7 @@ class Tester
}
require_once "status.inc";
- $status = new Status();
+ $status = new Status($this);
foreach ($formats as $format) {
$query = $format === 'plain' ? '' : $format;
$response = $this->request($query, [], $statusPath, $address);
@@ -838,7 +838,7 @@ class Tester
int $writeDelay = 0,
): Response {
if ($this->hasError()) {
- return new Response(null, true);
+ return $this->createResponse(expectInvalid: true);
}
if (is_array($stdin)) {
@@ -849,7 +849,7 @@ class Tester
$this->trace('Request params', $params);
try {
- $this->response = new Response(
+ $this->response = $this->createResponse(
$this->getClient($address, $connKeepAlive, $socketKeepAlive)
->request_data($params, $stdin, $readLimit, $writeDelay)
);
@@ -866,7 +866,7 @@ class Tester
} else {
$this->message($errorMessage);
}
- $this->response = new Response();
+ $this->response = $this->createResponse();
}
if ($this->debug) {
$this->response->debugOutput();
@@ -905,7 +905,7 @@ class Tester
}
if ($this->hasError()) {
- return array_map(fn($request) => new Response(null, true), $requests);
+ return array_map(fn($request) => $this->createResponse(expectInvalid: true), $requests);
}
try {
@@ -931,7 +931,9 @@ class Tester
);
$responses = array_map(function ($conn) use ($readTimeout) {
- $response = new Response($conn['client']->wait_for_response_data($conn['requestId'], $readTimeout));
+ $response = $this->createResponse(
+ $conn['client']->wait_for_response_data($conn['requestId'], $readTimeout)
+ );
if ($this->debug) {
$response->debugOutput();
}
@@ -948,7 +950,7 @@ class Tester
$this->message($errorMessage);
}
- return array_map(fn($request) => new Response(null, true), $requests);
+ return array_map(fn($request) => $this->createResponse(expectInvalid: true), $requests);
}
}
@@ -968,11 +970,11 @@ class Tester
bool $socketKeepAlive = false
): ValuesResponse {
if ($this->hasError()) {
- return new Response(null, true);
+ return $this->createValueResponse();
}
try {
- $valueResponse = new ValuesResponse(
+ $valueResponse = $this->createValueResponse(
$this->getClient($address, $connKeepAlive)->getValues(['FCGI_MPXS_CONNS'])
);
if ($this->debug) {
@@ -980,7 +982,7 @@ class Tester
}
} catch (\Exception $exception) {
$this->error("Request for getting values failed", $exception);
- $valueResponse = new ValuesResponse();
+ $valueResponse = $this->createValueResponse();
}
return $valueResponse;
@@ -1492,6 +1494,30 @@ class Tester
return [$sourceFile, '/' . basename($sourceFile)];
}
+ /**
+ * Create a new response.
+ *
+ * @param mixed $data
+ * @param bool $expectInvalid
+ * @return Response
+ */
+ private function createResponse($data = null, bool $expectInvalid = false): Response
+ {
+ return new Response($this, $data, $expectInvalid);
+ }
+
+ /**
+ * Create a new values response.
+ *
+ * @param mixed $values
+ * @return ValuesResponse
+ * @throws \Exception
+ */
+ private function createValueResponse($values = null): ValuesResponse
+ {
+ return new ValuesResponse($this, $values);
+ }
+
/**
* @param string|null $msg
*/
@@ -1502,6 +1528,16 @@ class Tester
}
}
+ /**
+ * Print log reader logs.
+ *
+ * @return void
+ */
+ public function printLogs(): void
+ {
+ $this->logReader->printLogs();
+ }
+
/**
* Display error.
*
@@ -1520,6 +1556,7 @@ class Tester
$this->error .= "\n";
echo $this->error;
+ $this->printLogs();
return false;
}
diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c
index 550bdba4aa291..ca47039a636a9 100644
--- a/sapi/litespeed/lsapilib.c
+++ b/sapi/litespeed/lsapilib.c
@@ -302,7 +302,7 @@ void lsapi_perror(const char * pMessage, int err_no)
}
-static int lsapi_parent_dead()
+static int lsapi_parent_dead(void)
{
// Return non-zero if the parent is dead. 0 if still alive.
if (!s_ppid) {
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 5d3ea65b5697c..8fc7f4fe36ffe 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -363,7 +363,7 @@ void phpdbg_init(char *init_file, size_t init_file_len, bool use_default) /* {{{
}
ZEND_IGNORE_VALUE(asprintf(&init_file, "%s/%s", scan_dir, PHPDBG_INIT_FILENAME));
- phpdbg_try_file_init(init_file, strlen(init_file), 1);
+ phpdbg_try_file_init(init_file, strlen(init_file), 0);
free(init_file);
if (i == -1) {
break;
diff --git a/sapi/phpdbg/tests/gh12962.phpt b/sapi/phpdbg/tests/gh12962.phpt
new file mode 100644
index 0000000000000..c5cf9425d7c47
--- /dev/null
+++ b/sapi/phpdbg/tests/gh12962.phpt
@@ -0,0 +1,13 @@
+--TEST--
+GH-12962 (Double free of init_file in phpdbg_prompt.c)
+--SKIPIF--
+
+--FILE--
+
+--EXPECT--
+Executed .phpdbginit
diff --git a/sapi/phpdbg/tests/gh12962/.phpdbginit b/sapi/phpdbg/tests/gh12962/.phpdbginit
new file mode 100644
index 0000000000000..29184ddf7c83f
--- /dev/null
+++ b/sapi/phpdbg/tests/gh12962/.phpdbginit
@@ -0,0 +1,2 @@
+ev "Executed .phpdbginit"
+q