diff -pruN 7.1.8-1/appveyor/build.bat 7.1.13-1/appveyor/build.bat
--- 7.1.8-1/appveyor/build.bat	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/appveyor/build.bat	2018-01-03 02:32:21.000000000 +0000
@@ -2,6 +2,7 @@
 
 set SDK_REMOTE=https://github.com/OSTC/php-sdk-binary-tools.git
 set SDK_BRANCH=%PHP_BUILD_SDK_BRANCH%
+set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
 
 if not exist "%PHP_BUILD_CACHE_BASE_DIR%" (
 	echo Creating %PHP_BUILD_CACHE_BASE_DIR%
@@ -13,17 +14,25 @@ if not exist "%PHP_BUILD_OBJ_DIR%" (
 	mkdir "%PHP_BUILD_OBJ_DIR%"
 )
 
+if not exist "%SDK_RUNNER%" (
+	if exist "%PHP_BUILD_CACHE_SDK_DIR%" rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%"
+)
+
 if not exist "%PHP_BUILD_CACHE_SDK_DIR%" (
 	echo Cloning remote SDK repository
 	git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 
-) else (
+)
+
+for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a
+echo Got SDK version %GOT_SDK_VER%
+if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" (
+	echo Switching to the configured SDK version %SDK_BRANCH:~8%
 	echo Fetching remote SDK repository
 	git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1
 	echo Checkout SDK repository branch
 	git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% 
 )
 
-set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
 if not exist "%SDK_RUNNER%" (
 	echo "%SDK_RUNNER%" doesn't exist
 	exit /b 3
diff -pruN 7.1.8-1/appveyor/build_task.bat 7.1.13-1/appveyor/build_task.bat
--- 7.1.8-1/appveyor/build_task.bat	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/appveyor/build_task.bat	2018-01-03 02:32:21.000000000 +0000
@@ -2,10 +2,14 @@
 
 if "%APPVEYOR%" equ "True" rmdir /s /q C:\cygwin >NUL 2>NUL
 if %errorlevel% neq 0 exit /b 3
+if "%APPVEYOR%" equ "True" rmdir /s /q C:\cygwin64 >NUL 2>NUL
+if %errorlevel% neq 0 exit /b 3
 if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw >NUL 2>NUL
 if %errorlevel% neq 0 exit /b 3
 if "%APPVEYOR%" equ "True" rmdir /s /q C:\mingw-w64 >NUL 2>NUL
 if %errorlevel% neq 0 exit /b 3
+if "%APPVEYOR%" equ "True" rmdir /s /q C:\msys64 >NUL 2>NUL
+if %errorlevel% neq 0 exit /b 3
 
 cd /D %APPVEYOR_BUILD_FOLDER%
 if %errorlevel% neq 0 exit /b 3
diff -pruN 7.1.8-1/.appveyor.yml 7.1.13-1/.appveyor.yml
--- 7.1.8-1/.appveyor.yml	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/.appveyor.yml	2018-01-03 02:32:21.000000000 +0000
@@ -18,13 +18,12 @@ clone_depth: 64
 
 cache:
         - c:\build-cache
-        - c:\build-cache\sdk -> .appveyor.yml
 
 environment:
         PHP_BUILD_CACHE_BASE_DIR: c:\build-cache  
         PHP_BUILD_OBJ_DIR: c:\obj
         PHP_BUILD_CACHE_SDK_DIR: c:\build-cache\sdk
-        PHP_BUILD_SDK_BRANCH: php-sdk-2.0.7
+        PHP_BUILD_SDK_BRANCH: php-sdk-2.0.13
         # ext and env setup for tests
         #MYSQL_TEST_PASSWD: Password12!
         #MYSQL_TEST_USER: root
diff -pruN 7.1.8-1/configure 7.1.13-1/configure
--- 7.1.8-1/configure	2017-08-01 17:36:57.000000000 +0000
+++ 7.1.13-1/configure	2018-01-03 02:32:21.000000000 +0000
@@ -901,7 +901,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -1147,7 +1146,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1400,15 +1398,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1546,7 +1535,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1699,7 +1688,6 @@ Fine tuning of the installation director
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -3662,7 +3650,7 @@ ac_config_headers="$ac_config_headers ma
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
@@ -10289,8 +10277,8 @@ EOF
   PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES sapi/cgi/php-cgi.1"
 
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -20427,6 +20415,156 @@ else
 fi
 
 
+  save_old_LDFLAGS=$LDFLAGS
+  ac_stuff=""
+
+  save_ext_shared=$ext_shared
+  ext_shared=yes
+
+  for ac_i in $ac_stuff; do
+    case $ac_i in
+    -pthread)
+      if test "$ext_shared" = "yes"; then
+        LDFLAGS="$LDFLAGS -pthread"
+      else
+
+
+  unique=`echo $ac_i|$SED 's/[^a-zA-Z0-9]/_/g'`
+
+  cmd="echo $ac_n \"\$EXTRA_LDFLAGS$unique$ac_c\""
+  if test -n "$unique" && test "`eval $cmd`" = "" ; then
+    eval "EXTRA_LDFLAGS$unique=set"
+    EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ac_i"
+  fi
+
+      fi
+    ;;
+    -l*)
+      ac_ii=`echo $ac_i|cut -c 3-`
+
+
+  case $ac_ii in
+  c|c_r|pthread*) ;;
+  *)
+    if test "$ext_shared" = "yes"; then
+        LDFLAGS="$LDFLAGS -l$ac_ii"
+    else
+
+
+  case $ac_ii in
+  c|c_r|pthread*) ;;
+  *)
+      LIBS="$LIBS -l$ac_ii"
+   ;;
+  esac
+
+
+    fi
+   ;;
+  esac
+
+
+    ;;
+    -L*)
+      ac_ii=`echo $ac_i|cut -c 3-`
+
+  if test "$ac_ii" != "/usr/$PHP_LIBDIR" && test "$ac_ii" != "/usr/lib"; then
+
+  if test -z "$ac_ii" || echo "$ac_ii" | grep '^/' >/dev/null ; then
+    ai_p=$ac_ii
+  else
+
+    ep_dir=`echo $ac_ii|$SED 's%/*[^/][^/]*/*$%%'`
+
+    ep_realdir=`(cd "$ep_dir" && pwd)`
+    ai_p="$ep_realdir"/`basename "$ac_ii"`
+  fi
+
+
+      if test "$ext_shared" = "yes"; then
+        LDFLAGS="-L$ai_p $LDFLAGS"
+        test -n "$ld_runpath_switch" && LDFLAGS="$ld_runpath_switch$ai_p $LDFLAGS"
+      else
+
+
+
+  unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'`
+
+  cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\""
+  if test -n "$unique" && test "`eval $cmd`" = "" ; then
+    eval "LIBPATH$unique=set"
+
+    test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p"
+    LDFLAGS="$LDFLAGS -L$ai_p"
+    PHP_RPATHS="$PHP_RPATHS $ai_p"
+
+  fi
+
+
+      fi
+
+  fi
+
+    ;;
+    esac
+  done
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_errstr in -lsqlite3" >&5
+$as_echo_n "checking for sqlite3_errstr in -lsqlite3... " >&6; }
+if ${ac_cv_lib_sqlite3_sqlite3_errstr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsqlite3  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sqlite3_errstr ();
+int
+main ()
+{
+return sqlite3_errstr ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_sqlite3_sqlite3_errstr=yes
+else
+  ac_cv_lib_sqlite3_sqlite3_errstr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_errstr" >&5
+$as_echo "$ac_cv_lib_sqlite3_sqlite3_errstr" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_errstr" = xyes; then :
+
+    LDFLAGS=$save_old_LDFLAGS
+    ext_shared=$save_ext_shared
+
+
+$as_echo "#define HAVE_SQLITE3_ERRSTR 1" >>confdefs.h
+
+
+
+else
+
+    LDFLAGS=$save_old_LDFLAGS
+    ext_shared=$save_ext_shared
+    unset ac_cv_lib_sqlite3_sqlite3_errstr
+
+
+fi
+
+
 
   save_old_LDFLAGS=$LDFLAGS
   ac_stuff=""
@@ -20601,6 +20739,9 @@ $as_echo "yes" >&6; }
       other_flags="$other_flags -DSQLITE_ENABLE_ICU=1"
     fi
 
+
+$as_echo "#define HAVE_SQLITE3_ERRSTR 1" >>confdefs.h
+
     PHP_SQLITE3_CFLAGS="-I@ext_srcdir@/libsqlite $other_flags $threadsafe_flags $debug_flags"
 
 
@@ -23375,13 +23516,27 @@ $as_echo "found in $i" >&6; }
         break
       fi
     done
+    if test -z "$CURL_DIR"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+      if which dpkg-architecture>/dev/null; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cURL in multiarch path" >&5
+$as_echo_n "checking for cURL in multiarch path... " >&6; }
+        CURL_MULTIARCH_INCLUDE=/usr/include/$(dpkg-architecture -qDEB_HOST_MULTIARCH)
+        if test -r $CURL_MULTIARCH_INCLUDE/curl/easy.h; then
+          CURL_DIR=/usr
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $CURL_MULTIARCH_INCLUDE" >&5
+$as_echo "found in $CURL_MULTIARCH_INCLUDE" >&6; }
+        else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+        fi
+      fi
+    fi
   fi
 
   if test -z "$CURL_DIR"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-    as_fn_error $? "Please reinstall the libcurl distribution -
-    easy.h should be in <curl-dir>/include/curl/" "$LINENO" 5
+    as_fn_error please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/ "Could not find cURL" "$LINENO" 5
   fi
 
   CURL_CONFIG="curl-config"
@@ -23406,6 +23561,7 @@ $as_echo "$curl_version_full" >&6; }
     as_fn_error $? "cURL version 7.10.5 or later is required to compile php with cURL support" "$LINENO" 5
   fi
 
+  if test -z "$CURL_MULTIARCH_INCLUDE"; then
 
   if test "$CURL_DIR/include" != "/usr/include"; then
 
@@ -23437,6 +23593,39 @@ $as_echo "$curl_version_full" >&6; }
 
   fi
 
+  else
+
+  if test "$CURL_MULTIARCH_INCLUDE" != "/usr/include"; then
+
+  if test -z "$CURL_MULTIARCH_INCLUDE" || echo "$CURL_MULTIARCH_INCLUDE" | grep '^/' >/dev/null ; then
+    ai_p=$CURL_MULTIARCH_INCLUDE
+  else
+
+    ep_dir=`echo $CURL_MULTIARCH_INCLUDE|$SED 's%/*[^/][^/]*/*$%%'`
+
+    ep_realdir=`(cd "$ep_dir" && pwd)`
+    ai_p="$ep_realdir"/`basename "$CURL_MULTIARCH_INCLUDE"`
+  fi
+
+
+
+  unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'`
+
+  cmd="echo $ac_n \"\$INCLUDEPATH$unique$ac_c\""
+  if test -n "$unique" && test "`eval $cmd`" = "" ; then
+    eval "INCLUDEPATH$unique=set"
+
+      if test ""; then
+        INCLUDES="-I$ai_p $INCLUDES"
+      else
+        INCLUDES="$INCLUDES -I$ai_p"
+      fi
+
+  fi
+
+  fi
+
+  fi
 
   for ac_i in $CURL_LIBS; do
     case $ac_i in
@@ -23636,6 +23825,8 @@ $as_echo "#define HAVE_CURL_SSL 1" >>con
 
     save_CFLAGS="$CFLAGS"
     CFLAGS="`$CURL_CONFIG --cflags`"
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="`$CURL_CONFIG --libs`"
 
     ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -23887,6 +24078,7 @@ fi
 
 
     CFLAGS="$save_CFLAGS"
+    LDFLAGS="$save_LDFLAGS"
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -95888,7 +96080,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 95891 "configure"
+#line 96083 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -97941,7 +98133,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 97944 "configure"' > conftest.$ac_ext
+  echo '#line 98136 "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -99339,7 +99531,7 @@ else
       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
 
 cat > conftest.$ac_ext <<EOF
-#line 99342 "configure"
+#line 99534 "configure"
 #include "confdefs.h"
 int main() {
 ; return 0; }
@@ -99497,11 +99689,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"configure:99500: $lt_compile\"" >&5)
+   (eval echo "\"configure:99692: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "configure:99504: \$? = $ac_status" >&5
+   echo "configure:99696: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -99795,11 +99987,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"configure:99798: $lt_compile\"" >&5)
+   (eval echo "\"configure:99990: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "configure:99802: \$? = $ac_status" >&5
+   echo "configure:99994: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -99899,11 +100091,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"configure:99902: $lt_compile\"" >&5)
+   (eval echo "\"configure:100094: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "configure:99906: \$? = $ac_status" >&5
+   echo "configure:100098: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -100363,7 +100555,7 @@ _LT_EOF
        # Determine the default libpath from the value encoded in an empty executable.
 
 cat > conftest.$ac_ext <<EOF
-#line 100366 "configure"
+#line 100558 "configure"
 #include "confdefs.h"
 int main() {
 ; return 0; }
@@ -100405,7 +100597,7 @@ if test -z "$aix_libpath"; then aix_libp
 	 # Determine the default libpath from the value encoded in an empty executable.
 
 cat > conftest.$ac_ext <<EOF
-#line 100408 "configure"
+#line 100600 "configure"
 #include "confdefs.h"
 int main() {
 ; return 0; }
@@ -101922,7 +102114,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 101925 "configure"
+#line 102117 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -102022,7 +102214,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 102025 "configure"
+#line 102217 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -103087,7 +103279,7 @@ case $host_os in
       # Determine the default libpath from the value encoded in an empty executable.
 
 cat > conftest.$ac_ext <<EOF
-#line 103090 "configure"
+#line 103282 "configure"
 #include "confdefs.h"
 int main() {
 ; return 0; }
@@ -103130,7 +103322,7 @@ if test -z "$aix_libpath"; then aix_libp
 	# Determine the default libpath from the value encoded in an empty executable.
 
 cat > conftest.$ac_ext <<EOF
-#line 103133 "configure"
+#line 103325 "configure"
 #include "confdefs.h"
 int main() {
 ; return 0; }
@@ -104382,11 +104574,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"configure:104385: $lt_compile\"" >&5)
+   (eval echo "\"configure:104577: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "configure:104389: \$? = $ac_status" >&5
+   echo "configure:104581: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -104486,11 +104678,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"configure:104489: $lt_compile\"" >&5)
+   (eval echo "\"configure:104681: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "configure:104493: \$? = $ac_status" >&5
+   echo "configure:104685: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
diff -pruN 7.1.8-1/configure.in 7.1.13-1/configure.in
--- 7.1.8-1/configure.in	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/configure.in	2018-01-05 15:39:53.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 7.1.8-1/debian/changelog 7.1.13-1/debian/changelog
--- 7.1.8-1/debian/changelog	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/changelog	2018-01-05 12:14:37.000000000 +0000
@@ -1,3 +1,61 @@
+php7.1 (7.1.13-1) unstable; urgency=medium
+
+  * Update the Vcs-* to salsa.d.o
+  * Add Sara Golemon's GPG key to d/upstream/signing-key.asc
+  * New upstream version 7.1.13
+  * Rebase patches on top of new upstream release.
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 05 Jan 2018 12:14:37 +0000
+
+php7.1 (7.1.12-3) unstable; urgency=medium
+
+  * Pull upstream fix for 'Narrowing occurred during type inference.' bug.
+
+ -- Ondřej Surý <ondrej@debian.org>  Thu, 14 Dec 2017 14:39:17 +0000
+
+php7.1 (7.1.12-2) unstable; urgency=medium
+
+  * Fix upstream segmentation fault in 7.1.12 and 7.0.26
+
+ -- Ondřej Surý <ondrej@debian.org>  Thu, 07 Dec 2017 16:05:25 +0000
+
+php7.1 (7.1.12-1) unstable; urgency=medium
+
+  * New upstream version 7.1.12
+  * Rebase patches for new upstream version.
+
+ -- Ondřej Surý <ondrej@debian.org>  Wed, 29 Nov 2017 10:01:08 +0000
+
+php7.1 (7.1.11-1) unstable; urgency=medium
+
+  * New upstream version 7.1.11
+  * Rebase patches for new upstream release.
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 27 Oct 2017 13:47:15 +0000
+
+php7.1 (7.1.10-1) unstable; urgency=medium
+
+  * New upstream version 7.1.10
+  * Refresh patches for PHP 7.1.10
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 29 Sep 2017 19:02:49 +0200
+
+php7.1 (7.1.9-1) unstable; urgency=medium
+
+  * Allow libgcrypt11-dev when it's not a transitional package
+  * New upstream version 7.1.9
+  * Rebase patches on top of PHP 7.1.9
+
+ -- Ondřej Surý <ondrej@debian.org>  Sat, 02 Sep 2017 07:53:00 +0200
+
+php7.1 (7.1.8-2) unstable; urgency=medium
+
+  * Update Vcs-* links to https://gitlab.com/deb.sury.org/...
+  * Stop depending on obsolete automake1.11 (Closes: #865136)
+  * Switch build-depends to libgcrypt20-dev (Closes: #864129)
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 04 Aug 2017 11:56:45 +0200
+
 php7.1 (7.1.8-1) unstable; urgency=medium
 
   * New upstream version 7.1.8
diff -pruN 7.1.8-1/debian/control 7.1.13-1/debian/control
--- 7.1.8-1/debian/control	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/control	2018-01-05 12:14:37.000000000 +0000
@@ -6,7 +6,7 @@ Uploaders: Ondřej Surý <ondrej@debian.
            Lior Kaplan <kaplan@debian.org>
 Build-Depends: apache2-dev (>= 2.4),
                autoconf (>= 2.63),
-               automake (>= 1.11) | automake1.11,
+               automake,
                bison,
                chrpath,
                debhelper (>= 9),
@@ -29,7 +29,7 @@ Build-Depends: apache2-dev (>= 2.4),
                libevent-dev (>= 1.4.11),
                libexpat1-dev (>= 1.95.2-2.1),
                libfreetype6-dev,
-               libgcrypt11-dev,
+               libgcrypt20-dev (>> 1.6.3) | libgcrypt11-dev (<< 1.5.4),
                libgd-dev (>= 2.1.0) | libgd2-dev,
                libglib2.0-dev,
                libgmp3-dev,
@@ -74,8 +74,8 @@ Build-Depends: apache2-dev (>= 2.4),
 Build-Conflicts: bind-dev,
                  libxmlrpc-core-c3-dev
 Standards-Version: 3.9.7
-Vcs-Git: https://gitlab.com/deb.sury.org/php.git
-Vcs-Browser: https://gitlab.com/deb.sury.org/php
+Vcs-Git: https://salsa.debian.org/php-team/php.git
+Vcs-Browser: https://salsa.debian.org/php-team/php
 Homepage: http://www.php.net/
 
 Package: libapache2-mod-php7.1
diff -pruN 7.1.8-1/debian/control.in 7.1.13-1/debian/control.in
--- 7.1.8-1/debian/control.in	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/control.in	2018-01-05 12:14:37.000000000 +0000
@@ -6,7 +6,7 @@ Uploaders: Ondřej Surý <ondrej@debian.
            Lior Kaplan <kaplan@debian.org>
 Build-Depends: apache2-dev (>= 2.4),
                autoconf (>= 2.63),
-               automake (>= 1.11) | automake1.11,
+               automake,
                bison,
                chrpath,
                debhelper (>= 9),
@@ -29,7 +29,7 @@ Build-Depends: apache2-dev (>= 2.4),
                libevent-dev (>= 1.4.11),
                libexpat1-dev (>= 1.95.2-2.1),
                libfreetype6-dev,
-               libgcrypt11-dev,
+               libgcrypt20-dev (>> 1.6.3) | libgcrypt11-dev (<< 1.5.4),
                libgd-dev (>= 2.1.0) | libgd2-dev,
                libglib2.0-dev,
                libgmp3-dev,
diff -pruN 7.1.8-1/debian/patches/0001-libtool_fixes.patch 7.1.13-1/debian/patches/0001-libtool_fixes.patch
--- 7.1.8-1/debian/patches/0001-libtool_fixes.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0001-libtool_fixes.patch	2018-01-05 12:14:37.000000000 +0000
@@ -22,7 +22,7 @@ index 6f10f5a..2bcff8d 100644
  dnl TSRM_PTHREAD
  
 diff --git a/configure.in b/configure.in
-index a48d7da..651c828 100644
+index 846303c..c27d196 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1427,8 +1427,6 @@ AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [
diff -pruN 7.1.8-1/debian/patches/0003-debian_quirks.patch 7.1.13-1/debian/patches/0003-debian_quirks.patch
--- 7.1.8-1/debian/patches/0003-debian_quirks.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0003-debian_quirks.patch	2018-01-05 12:14:37.000000000 +0000
@@ -14,7 +14,7 @@ Subject: debian_quirks
  8 files changed, 22 insertions(+), 17 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index 651c828..0978259 100644
+index c27d196..f00c10f 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1095,7 +1095,7 @@ if test "$PHP_CLI" = "no"; then
@@ -91,7 +91,7 @@ index 0a28d3b..b24f91b 100644
  ; Windows: "\path1;\path2"
  ;include_path = ".;c:\php\includes"
 diff --git a/sapi/cli/php.1.in b/sapi/cli/php.1.in
-index 7b5863a..4d27709 100644
+index f5fccfc..bda13c3 100644
 --- a/sapi/cli/php.1.in
 +++ b/sapi/cli/php.1.in
 @@ -365,13 +365,14 @@ Shows configuration for extension
diff -pruN 7.1.8-1/debian/patches/0006-php-5.4.9-phpinfo.patch 7.1.13-1/debian/patches/0006-php-5.4.9-phpinfo.patch
--- 7.1.8-1/debian/patches/0006-php-5.4.9-phpinfo.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0006-php-5.4.9-phpinfo.patch	2018-01-05 12:14:37.000000000 +0000
@@ -11,7 +11,7 @@ The available extensions are not related
  2 files changed, 4 deletions(-)
 
 diff --git a/ext/standard/info.c b/ext/standard/info.c
-index 76802fa..ec61a21 100644
+index 7b045b7..aebad57 100644
 --- a/ext/standard/info.c
 +++ b/ext/standard/info.c
 @@ -872,9 +872,6 @@ PHPAPI void php_print_info(int flag)
diff -pruN 7.1.8-1/debian/patches/0007-extension_api.patch 7.1.13-1/debian/patches/0007-extension_api.patch
--- 7.1.8-1/debian/patches/0007-extension_api.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0007-extension_api.patch	2018-01-05 12:14:37.000000000 +0000
@@ -8,7 +8,7 @@ Subject: extension_api
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/configure.in b/configure.in
-index 0978259..6a7f415 100644
+index f00c10f..9749699 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1207,8 +1207,10 @@ ZEND_MODULE_API_NO=`$EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modul
diff -pruN 7.1.8-1/debian/patches/0018-session_save_path.patch 7.1.13-1/debian/patches/0018-session_save_path.patch
--- 7.1.8-1/debian/patches/0018-session_save_path.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0018-session_save_path.patch	2018-01-05 12:14:37.000000000 +0000
@@ -9,10 +9,10 @@ Subject: session_save_path
  3 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/ext/session/session.c b/ext/session/session.c
-index d702d1b..27af537 100644
+index fa392dd..fd33e41 100644
 --- a/ext/session/session.c
 +++ b/ext/session/session.c
-@@ -702,7 +702,7 @@ static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
+@@ -706,7 +706,7 @@ static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
  /* {{{ PHP_INI
   */
  PHP_INI_BEGIN()
diff -pruN 7.1.8-1/debian/patches/0019-php-fpm-man-section-and-cleanup.patch 7.1.13-1/debian/patches/0019-php-fpm-man-section-and-cleanup.patch
--- 7.1.8-1/debian/patches/0019-php-fpm-man-section-and-cleanup.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0019-php-fpm-man-section-and-cleanup.patch	2018-01-05 12:14:37.000000000 +0000
@@ -7,7 +7,7 @@ Subject: php-fpm-man-section-and-cleanup
  1 file changed, 2 insertions(+), 20 deletions(-)
 
 diff --git a/sapi/fpm/php-fpm.8.in b/sapi/fpm/php-fpm.8.in
-index cb1224e..794f508 100644
+index cdee4c6..ed733c5 100644
 --- a/sapi/fpm/php-fpm.8.in
 +++ b/sapi/fpm/php-fpm.8.in
 @@ -139,22 +139,8 @@ The configuration file for the php-fpm daemon.
diff -pruN 7.1.8-1/debian/patches/0026-php-5.3.9-gnusrc.patch 7.1.13-1/debian/patches/0026-php-5.3.9-gnusrc.patch
--- 7.1.8-1/debian/patches/0026-php-5.3.9-gnusrc.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0026-php-5.3.9-gnusrc.patch	2018-01-05 12:14:37.000000000 +0000
@@ -16,10 +16,10 @@ Subject: php-5.3.9-gnusrc
  10 files changed, 5 insertions(+), 10 deletions(-)
 
 diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c
-index b816670..61b12a1 100644
+index 313f15f..34620df 100644
 --- a/Zend/zend_language_parser.c
 +++ b/Zend/zend_language_parser.c
-@@ -70,6 +70,8 @@
+@@ -69,6 +69,8 @@
  
  /* Copy the first part of user declarations.  */
  
@@ -29,7 +29,7 @@ index b816670..61b12a1 100644
  /*
     +----------------------------------------------------------------------+
 diff --git a/configure.in b/configure.in
-index 6a7f415..0ed22a9 100644
+index 9749699..1721018 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -136,6 +136,8 @@ AC_DEFUN([PHP_EXT_DIR],[$config_m4_dir])dnl
@@ -42,7 +42,7 @@ index 6a7f415..0ed22a9 100644
  dnl -------------------------------------------------------------------------
  
 diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
-index 50851b9..73bce8f 100644
+index ac87059..6f86d6e 100644
 --- a/ext/interbase/interbase.c
 +++ b/ext/interbase/interbase.c
 @@ -22,7 +22,6 @@
@@ -66,7 +66,7 @@ index 166fb13..2420489 100644
  #include "php.h"
  #include "zend_exceptions.h"
 diff --git a/ext/standard/file.c b/ext/standard/file.c
-index 52aa07b..35c912b 100644
+index 104b162..28a7e6e 100644
 --- a/ext/standard/file.c
 +++ b/ext/standard/file.c
 @@ -112,9 +112,6 @@ php_file_globals file_globals;
diff -pruN 7.1.8-1/debian/patches/0031-expose_all_built_and_installed_apis.patch 7.1.13-1/debian/patches/0031-expose_all_built_and_installed_apis.patch
--- 7.1.8-1/debian/patches/0031-expose_all_built_and_installed_apis.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0031-expose_all_built_and_installed_apis.patch	2018-01-05 12:14:37.000000000 +0000
@@ -8,7 +8,7 @@ Subject: expose_all_built_and_installed_
  2 files changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/scripts/man1/php-config.1.in b/scripts/man1/php-config.1.in
-index d9fa4b0..6ee4982 100644
+index add4959..1bad896 100644
 --- a/scripts/man1/php-config.1.in
 +++ b/scripts/man1/php-config.1.in
 @@ -44,7 +44,7 @@ Full path to php CLI or CGI binary
diff -pruN 7.1.8-1/debian/patches/0032-Use-system-timezone.patch 7.1.13-1/debian/patches/0032-Use-system-timezone.patch
--- 7.1.8-1/debian/patches/0032-Use-system-timezone.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0032-Use-system-timezone.patch	2018-01-05 12:14:37.000000000 +0000
@@ -14,10 +14,10 @@ To be used in tandem with use_embedded_t
  1 file changed, 17 insertions(+)
 
 diff --git a/ext/date/php_date.c b/ext/date/php_date.c
-index dcc71a4..d7b53e1 100644
+index 933ef3b..e3914e3 100644
 --- a/ext/date/php_date.c
 +++ b/ext/date/php_date.c
-@@ -1009,6 +1009,23 @@ static char* guess_timezone(const timelib_tzdb *tzdb)
+@@ -1011,6 +1011,23 @@ static char* guess_timezone(const timelib_tzdb *tzdb)
  		DATEG(timezone_valid) = 1;
  		return DATEG(default_timezone);
  	}
diff -pruN 7.1.8-1/debian/patches/0033-zlib-largefile-function-renaming.patch 7.1.13-1/debian/patches/0033-zlib-largefile-function-renaming.patch
--- 7.1.8-1/debian/patches/0033-zlib-largefile-function-renaming.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0033-zlib-largefile-function-renaming.patch	2018-01-05 12:14:37.000000000 +0000
@@ -7,7 +7,7 @@ Subject: zlib-largefile-function-renamin
  1 file changed, 12 insertions(+)
 
 diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
-index e840fb4..a861083 100644
+index b5d37dd..ba84ca5 100644
 --- a/ext/zlib/zlib.c
 +++ b/ext/zlib/zlib.c
 @@ -49,6 +49,18 @@
diff -pruN 7.1.8-1/debian/patches/0034-php-fpm-do-reload-on-SIGHUP.patch 7.1.13-1/debian/patches/0034-php-fpm-do-reload-on-SIGHUP.patch
--- 7.1.8-1/debian/patches/0034-php-fpm-do-reload-on-SIGHUP.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0034-php-fpm-do-reload-on-SIGHUP.patch	2018-01-05 12:14:37.000000000 +0000
@@ -53,7 +53,7 @@ index 68cb153..9e0b642 100644
  	    0 > sigaction(SIGQUIT,  &act,      0)) {
  
 diff --git a/sapi/fpm/php-fpm.8.in b/sapi/fpm/php-fpm.8.in
-index 794f508..b1bcf08 100644
+index ed733c5..59a0c61 100644
 --- a/sapi/fpm/php-fpm.8.in
 +++ b/sapi/fpm/php-fpm.8.in
 @@ -150,7 +150,7 @@ Once started, php-fpm then responds to several POSIX signals:
diff -pruN 7.1.8-1/debian/patches/0036-php-5.4.9-fixheader.patch 7.1.13-1/debian/patches/0036-php-5.4.9-fixheader.patch
--- 7.1.8-1/debian/patches/0036-php-5.4.9-fixheader.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0036-php-5.4.9-fixheader.patch	2018-01-05 12:14:37.000000000 +0000
@@ -8,7 +8,7 @@ Make generated php_config.h constant acr
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index 0ed22a9..248b27c 100644
+index 1721018..984f922 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1292,7 +1292,7 @@ fi
diff -pruN 7.1.8-1/debian/patches/0042-Remove-W3C-validation-icon-to-not-expose-the-reader-.patch 7.1.13-1/debian/patches/0042-Remove-W3C-validation-icon-to-not-expose-the-reader-.patch
--- 7.1.8-1/debian/patches/0042-Remove-W3C-validation-icon-to-not-expose-the-reader-.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0042-Remove-W3C-validation-icon-to-not-expose-the-reader-.patch	2018-01-05 12:14:37.000000000 +0000
@@ -8,7 +8,7 @@ Subject: Remove W3C validation icon to n
  1 file changed, 5 deletions(-)
 
 diff --git a/sapi/fpm/status.html.in b/sapi/fpm/status.html.in
-index 86492d7..31c31ff 100644
+index 77914a6..f7d8588 100644
 --- a/sapi/fpm/status.html.in
 +++ b/sapi/fpm/status.html.in
 @@ -71,11 +71,6 @@
diff -pruN 7.1.8-1/debian/patches/0045-Really-expand-libdir-datadir-into-EXPANDED_LIBDIR-DA.patch 7.1.13-1/debian/patches/0045-Really-expand-libdir-datadir-into-EXPANDED_LIBDIR-DA.patch
--- 7.1.8-1/debian/patches/0045-Really-expand-libdir-datadir-into-EXPANDED_LIBDIR-DA.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0045-Really-expand-libdir-datadir-into-EXPANDED_LIBDIR-DA.patch	2018-01-05 12:14:37.000000000 +0000
@@ -7,7 +7,7 @@ Subject: Really expand $libdir/$datadir
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index 248b27c..5fae1dc 100644
+index 984f922..fd8c323 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1254,9 +1254,9 @@ EXPANDED_LOCALSTATEDIR=`eval echo $localstatedir`
diff -pruN 7.1.8-1/debian/patches/0049-Fix-check-for-CURL-include-in-M-A-directory.patch 7.1.13-1/debian/patches/0049-Fix-check-for-CURL-include-in-M-A-directory.patch
--- 7.1.8-1/debian/patches/0049-Fix-check-for-CURL-include-in-M-A-directory.patch	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/patches/0049-Fix-check-for-CURL-include-in-M-A-directory.patch	2018-01-05 12:14:37.000000000 +0000
@@ -7,7 +7,7 @@ Subject: Fix check for CURL include in M
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/ext/curl/config.m4 b/ext/curl/config.m4
-index 2f82c34..f785770 100644
+index a7c2238..f423a69 100644
 --- a/ext/curl/config.m4
 +++ b/ext/curl/config.m4
 @@ -6,12 +6,12 @@ PHP_ARG_WITH(curl, for cURL support,
diff -pruN 7.1.8-1/debian/upstream/signing-key.asc 7.1.13-1/debian/upstream/signing-key.asc
--- 7.1.8-1/debian/upstream/signing-key.asc	2017-08-03 18:35:23.000000000 +0000
+++ 7.1.13-1/debian/upstream/signing-key.asc	2018-01-05 12:14:37.000000000 +0000
@@ -132,3 +132,76 @@ IKc0HjQmsSgTi7LyLWk6dTY5xA+Bk/bSTnVz2d7i
 HHX3errJxyRf
 =EyeJ
 -----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFjxRtoBEADkS6+Q7afwYDPFnqJXuyF2ZIvXysDBrpr/xbre4jVeiC/HIELa
+QedOJqO1V+BgnTRkfhor+Yq3mZ1un+6zJIiFcm5Kp7sPZjh15JF96PsA4e2Eh5eC
+eJzjXHj1nAKXfn5+CgpYEyL30r1/ACkmo9TKIiUxIDZRkZvxjY4UKeo+EoJo0Viu
+tV8mvSTgxaz9gzPhZ5OJR8zECT8j3T8d+tBD8wWxxmGZ0veOu/MBew1C/BDr8RqT
+CXDywUbyNuSsdb3a5aLuIuLekSJVSCcFwPIje1WrX4FyC42+elOp0SXpjWzdb08N
+XX4DEY8zVyVXI1ScSpTbslffcFkY60NJhjpP7t856L9vTLRfHIM9BIdSYH/ar5mE
+Q0vyJbiNfkx5tIMnEmnIYbmnjjmcPZDKZ4PyQEUEWF3DqNOOAWhk9HUMFEkANkd1
+vEcNNQxgD2eOJM6egfUv9KtuAEcRX2iDu3gIyE+55x92VVoEJDu5M+Q6PYGUIMh7
+nz2gS3lnlpG2vquQpqDS9UogsZ8L4NsukdP2ixRFnD9qaTOemqRYwIptOX6wvrtR
+7PmWOnnRZ5OcpK5/qyK9iCLY7bbHDViBoV0uLEHNPTDHjrALJrqS+dH1glYid/82
+OvKE3KREjRpMOW83nNfQcqkMi9fhH8WUkz6OD6JemvB/s/CwBS2w3+9LAQARAQAB
+tB5TYXJhIEdvbGVtb24gPHBvbGxpdGFAcGhwLm5ldD6JAiAEEAEKAAoFAlk5UTwD
+BQJ4AAoJEMt/Ho7Iwndldb8P/i5jY9zfQ9Jedoz1JQoh3TZNs5avE/7P72hinOHC
+8WMfJqIfq1SmzStMAUNkr6n+hjb0mXCYLNJL1PAMvciPaGagL8K8p7tZ3M/N6sUj
+hehPejHY7Ln1008lihJMsmqaC+VdH5ntoZCdhDnJTDIEp6Ojtj7veGrRVQC+51C7
+tx05ZdXZ38VgTvSBFfs42HZorZXaj1/KiW9xsNTCXuoSF2OkfHfuKCjXn5GWYV4B
+BhQE1ef43Ju3qyf3twKar4YF9DCvdU3ylA4jYJszXX+FNZ4ssgSiiCe3iWWl0LAz
+rxZgDoNv3SwcEOnngmmVTDwLRAAqdmhw3qL3phhyz/uCXTFWBgMDpp4IRsGxNOru
+oPNjhPMgwn6fzgYpHVnVQex2+1e2RD1sUkj1OWBHFrY43fI9Qq+rEE7dgE0OBn5v
+khh81ZYOXa3Cccb90eHkQAirxr9+esYCQNeTmS23FS2AiRLj9JHVp4tb7q3B3Md5
+kTXemxf18x5jV+19E+35bPdfnylMuDN3YA+gFTp7CBn0OoinzLP1Qk04SncAAA+K
+MunpZM2Cfh+mDAkNxd3UWrOkK27NgAYHyDSyRE7h4yJ5NXihGCtQfvsHGAkCzv+U
+7A3Z2KuJR94zn/yYj0m+GwcvfZYUeS8Zh92fpkyBdo14wYRQmpSUuJCgoXvYswtV
+L5Y2iQIiBBMBCgAMBQJZOVUqBYMHhh+AAAoJEMApBLE3H7rdP4oP/iRRKU14fnTb
+KcWZ0siNFGWFoyMrRWmYgaqIE/mAXBSnCyGzNyJx3eZaGl0E6kcACWAEGl7BB8Oa
+0mrKVJDVtGcCpZLU/xB2j/A9Lh8A6s+YwowIGKCHpFHYlTCKFOji6TXK9vZTQNL7
+4Q5FvQBdDGDnk8V6q311Uhn4K7Qn8z8zOxcU5mtXl9nGTTSnOfdmfNhkGHTQku+9
+cBdkStBXh1AhqpGTMB3c32qx47gpKHyYFnwMzeXdllkiJNJJn2WnGoe8ZnAxhXJn
+4JZdIoIgRfga1+JqezJk9JHLeoIIYHu4u2GbrinUSOz3tZ038c63nUGD5OvLF9gK
+uKZHHvWP9JaHCysjEIcFL5xF8TrswdPYpGMzH4dvBjvjpQxb6WzAnHUqQQxaJsBM
+71WoU1cx38xoFJmyEKuOX0kjl4+KeqQl3/bfxqR6Owbkqul5t73+EK7r4mgHSyTV
+rWl2SS8QEr8NG0Hv+3gBkKQczgoPvj7ZXkwVdNokZT75b4vPDf/Zf+Hlt+hT2x+P
+WkIU1GkMcX7VruatgG1crES2a/uQO+awk0jA34UewrAflTq5TC3NNmWorn7x6gu7
++3zKwP1o0twU3HDvt1mzXK6XNY3GYUqWhs1cDFOhPsfBl169NbqOr8fP8x/24rXD
+tBjZBpiBAvDsHh0z0agwpknZYcXB/GQciQI+BBMBAgAoAhsDBgsJCAcDAgYVCAIJ
+CgsEFgIDAQIeAQIXgAUCWP0zngUJDTRVLQAKCRDb2zl0cNEhctcWD/40Hjb+FlDy
+tzNB5dxLxJznjg8Xj8rFNJIb4J8P5kbULuwTsEXWwdB1r/CsdB1y+1yOJdpsh0WW
+3fT6wZRuGBWI2alpqkPVhpSwcQ6UiTXkTqU4Co4cQNoTpdcR9hLeZG0XGc6SSfc7
+g966pKvNEt7v1AAf0M2HyVip0AU14v96bGTQFU0ad/+LBJ9ZAnxJ5TVGD4ofzanV
+xNH65SniEzgJmrQ9nI2HCZXPxEy4pfEqtZyIIhP/vimWpW3F3EUh1WUnfy/nzZTA
+yIepPaY3BOetqIssjBynnf6QF+6NQapSqksMY0KDbJKSAlRZMjL/j+3CD8jsSWvJ
+GhsshzQ/vItRs78HD4S2Hjlg8JolwbOBGvGeylsYYtfc5cTKxHwHHxSKJnEaMX83
+J0mNxVSWCKBMkivyAYor6nrp8ngwNiRtby0mSFeYTYnFIoaeIZ4V+GdYBJTfguvD
++PUmbHhc8b88DKuUSFG1lcCIdvlo+df1K1C4KDOKjZIHowy2Bck8Wy316vk5PdVF
+3aXqQR7xPShVaoeDGyJcsfUwMzos6i3WZZz0cC2961gS7L+12wk3mLaeI1VPEN+Y
+Z7xhcvhrEkTib9OJiVvsIcs/s8ThDD4lW1QObpt2W0o+aKLvOzPS4iba1DqjX8sq
+nXSwvC+S4MMJWCqj/lukOCzH/1oaI9xRQrkCDQRY8UbaARAApPMHyaj9Nx8+j1/G
+694xFJZUp4HQ/9vCtguEVTjq+9buBSUXBDEffEmz5wjSFLeCnXnTtQyaWGnNV7yG
+lQWy8RHAY0TFjYQYGW8aEMz4xU1h0P1MB2T4osEJC+eXzdXowRGnA1fAdScKo3AW
+4ousyLS1Ff4MRh+yXHv3+ygTO71pWj/sR6ZnfojytbMCucDUMwy/N2+zT8o+fH6p
+ZoeeBa/o3KblI8p2mH47SbIMHOAknHWouxXJXLSzIPGPA1u/25Kn9QUMvQ4pPNiF
+kjeMIFTNXlkhsfj8z5bIRh/wvAed1N+dzXEYYxad8199cEIbCawOyaftdEtx21xq
+692lRjDKt3akgRqd/IiiVJid88lb28uTJOPvBRZjJN4FbkBOdqVuBDpUlUDUAvMs
+2LIGhv+DdDPA0aW3z4U+cIg/0HG+zFF0xPenc7PynMjyY7v2quHCeg4KWyZjOjmc
+J8eR2MGufEYDsAFQW7MWDmuqEvhY9NnmolBE8Hzx7ahfY7gnDOQ9JnC2UU9SOMyu
+tKj2+mQ87hYLl4PIZv3Y44dmJQxQjSqgmR5LQiEk1l+btXMheY/lC937CnAAHMoh
+2VfVB/La+r9ItD9fVI3tmR5PbrSYIGEkjNLsqhoZosnfLLthaorQZbb06NNCnPLL
++AHA5gp4PElTtKINcIiWXYhySO0AEQEAAYkCHwQYAQIACQUCWPFG2gIbDAAKCRDb
+2zl0cNEhcnbuEAC3mBtjzzBDkLTFeozlU+dVNGKNMpfeESaEAjggk/yZFMiA3Mx5
+rXFQAa6YrV97RZeL2nCTN7ilim82zO6jtvh3dLuq8TvqPFlBkTGaeSIHG2oAzh7N
+L6K1TdmKNE5fEaKlvdTAr5URQPvLJ5io1n02I/I8W4SFBLVayFPuSwxIAz/k+j76
+WlXl3y2CLYngrGYIm96j8+ZjOPYwx/OFxuRdfZMdELVRibO5/Ba3ABnEJf4jK5u3
+Ua0bofd/eKJ4CLptLpXdvO2ZYPatdoiYoq98NODacuNxtdkV6vUw/WkX2zIUPhwe
+Q573+Npnwnxr2pUhNK4PZodSnmokFF8Qswn9Q+mtx+dK4dSA59+t1p+Nfx69I+J7
+VY7xCcbPZ1G/KqHdhzDjyzhasMXJO7nhmngzfxmec4z3SKaWMBNy2wjNWRS5FfkI
+RXn+M18JpdfwJxhhVC4BmKK8BgnIYs4VNcG2VXKFBe+DLaa5wLLj3RcZcPuMgnBR
+HmFaTA0IP2X2dvE9Rq7hh6iyaiFaTrpuPBHPn45xwGQB/XTrP6oQbgixPucVKFcj
+9pcLdDGh7OUi5sUSoXFeiFkSSk5WfWHQ121b+S4rC/6gzk40Y+7zoAj0YZJcgNCY
+xXskw6UngFlxWZ2m9J2AT1pMbXccUa7hHkDwGD9b5dDugATMUQCOqOsyCA==
+=v7lu
+-----END PGP PUBLIC KEY BLOCK-----
diff -pruN 7.1.8-1/.editorconfig 7.1.13-1/.editorconfig
--- 7.1.8-1/.editorconfig	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/.editorconfig	2018-01-03 02:32:21.000000000 +0000
@@ -1,16 +1,35 @@
-; http://editorconfig.org/
+# http://editorconfig.org/
 
 root = true
 
-[*.{c,h}]
-charset                  = UTF-8
-end_of_line              = LF
+[*.{c,h,awk,w32,bat,mk,frag}]
+charset                  = utf-8
+end_of_line              = lf
 indent_size              = 4
 indent_style             = tab
-insert_final_newline     = true
 tab_width                = 4
 trim_trailing_whitespace = true
+insert_final_newline     = true
+
+[*.{php,phpt}]
+charset                  = utf-8
+end_of_line              = lf
+indent_size              = 4
+indent_style             = space
+trim_trailing_whitespace = true
+insert_final_newline     = true
 
-[*.yml]
+[*.{yml,m4,sh}]
+charset                  = utf-8
+end_of_line              = lf
 indent_size              = 2
 indent_style             = space
+trim_trailing_whitespace = true
+insert_final_newline     = true
+
+[*.md]
+charset                  = utf-8
+end_of_line              = lf
+indent_style             = space
+trim_trailing_whitespace = false
+insert_final_newline     = true
diff -pruN 7.1.8-1/ext/bcmath/libbcmath/src/divmod.c 7.1.13-1/ext/bcmath/libbcmath/src/divmod.c
--- 7.1.8-1/ext/bcmath/libbcmath/src/divmod.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/bcmath/libbcmath/src/divmod.c	2018-01-03 02:32:29.000000000 +0000
@@ -59,7 +59,7 @@ bc_divmod (bc_num num1, bc_num num2, bc_
   bc_init_num(&temp);
 
   /* Calculate it. */
-  bc_divide (num1, num2, &temp, scale);
+  bc_divide (num1, num2, &temp, 0);
   if (quot)
     quotient = bc_copy_num (temp);
   bc_multiply (temp, num2, &temp, rscale);
diff -pruN 7.1.8-1/ext/bcmath/libbcmath/src/raisemod.c 7.1.13-1/ext/bcmath/libbcmath/src/raisemod.c
--- 7.1.8-1/ext/bcmath/libbcmath/src/raisemod.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/bcmath/libbcmath/src/raisemod.c	2018-01-03 02:32:29.000000000 +0000
@@ -45,7 +45,7 @@
 int
 bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale)
 {
-  bc_num power, exponent, parity, temp;
+  bc_num power, exponent, modulus, parity, temp;
   int rscale;
 
   /* Check for correct numbers. */
@@ -55,12 +55,16 @@ bc_raisemod (bc_num base, bc_num expo, b
   /* Set initial values.  */
   power = bc_copy_num (base);
   exponent = bc_copy_num (expo);
+  modulus = bc_copy_num (mod);
   temp = bc_copy_num (BCG(_one_));
   bc_init_num(&parity);
 
   /* Check the base for scale digits. */
-  if (base->n_scale != 0)
+  if (power->n_scale != 0)
+    {
       bc_rt_warn ("non-zero scale in base");
+      bc_divide (power, BCG(_one_), &power, 0); /*truncate */
+    }
 
   /* Check the exponent for scale digits. */
   if (exponent->n_scale != 0)
@@ -70,27 +74,38 @@ bc_raisemod (bc_num base, bc_num expo, b
     }
 
   /* Check the modulus for scale digits. */
-  if (mod->n_scale != 0)
+  if (modulus->n_scale != 0)
+    {
       bc_rt_warn ("non-zero scale in modulus");
+      bc_divide (modulus, BCG(_one_), &modulus, 0); /*truncate */
+    }
 
   /* Do the calculation. */
-  rscale = MAX(scale, base->n_scale);
-  while ( !bc_is_zero(exponent) )
+  rscale = MAX(scale, power->n_scale);
+  if ( !bc_compare(modulus, BCG(_one_)) )
     {
-      (void) bc_divmod (exponent, BCG(_two_), &exponent, &parity, 0);
-      if ( !bc_is_zero(parity) )
+      temp = bc_new_num (1, scale);
+    }
+  else
+    {
+      while ( !bc_is_zero(exponent) )
 	{
-	  bc_multiply (temp, power, &temp, rscale);
-	  (void) bc_modulo (temp, mod, &temp, scale);
-	}
+	  (void) bc_divmod (exponent, BCG(_two_), &exponent, &parity, 0);
+	  if ( !bc_is_zero(parity) )
+	    {
+	      bc_multiply (temp, power, &temp, rscale);
+	      (void) bc_modulo (temp, modulus, &temp, scale);
+	    }
 
-      bc_multiply (power, power, &power, rscale);
-      (void) bc_modulo (power, mod, &power, scale);
+	  bc_multiply (power, power, &power, rscale);
+	  (void) bc_modulo (power, modulus, &power, scale);
+	}
     }
 
   /* Assign the value. */
   bc_free_num (&power);
   bc_free_num (&exponent);
+  bc_free_num (&modulus);
   bc_free_num (result);
   bc_free_num (&parity);
   *result = temp;
diff -pruN 7.1.8-1/ext/bcmath/libbcmath/src/str2num.c 7.1.13-1/ext/bcmath/libbcmath/src/str2num.c
--- 7.1.8-1/ext/bcmath/libbcmath/src/str2num.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/bcmath/libbcmath/src/str2num.c	2018-01-03 02:32:29.000000000 +0000
@@ -105,5 +105,8 @@ bc_str2num (bc_num *num, char *str, int
       for (;strscale > 0; strscale--)
 	*nptr++ = CH_VAL(*ptr++);
     }
+
+  if (bc_is_zero (*num))
+    (*num)->n_sign = PLUS;
 }
 
diff -pruN 7.1.8-1/ext/bcmath/tests/bug44995.phpt 7.1.13-1/ext/bcmath/tests/bug44995.phpt
--- 7.1.8-1/ext/bcmath/tests/bug44995.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/bcmath/tests/bug44995.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #44995 (bcpowmod() fails if scale != 0)
+--SKIPIF--
+<?php
+if (!extension_loaded('bcmath')) die('skip bcmath extension not available');
+?>
+--FILE--
+<?php
+var_dump(bcpowmod('4', '4', '3', 1));
+var_dump(bcpowmod('3234', '32345', '22345', 1));
+?>
+===DONE===
+--EXPECT--
+string(3) "1.0"
+string(7) "17334.0"
+===DONE===
diff -pruN 7.1.8-1/ext/bcmath/tests/bug46781.phpt 7.1.13-1/ext/bcmath/tests/bug46781.phpt
--- 7.1.8-1/ext/bcmath/tests/bug46781.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/bcmath/tests/bug46781.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #46781 (BC math handles minus zero incorrectly)
+--SKIPIF--
+<?php
+if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
+?>
+--FILE--
+<?php
+var_dump(bcadd('-0.0', '-0.0', 1));
+var_dump(bccomp('-0.0', '0', 1));
+?>
+===DONE===
+--EXPECT--
+string(3) "0.0"
+int(0)
+===DONE===
diff -pruN 7.1.8-1/ext/bcmath/tests/bug54598.phpt 7.1.13-1/ext/bcmath/tests/bug54598.phpt
--- 7.1.8-1/ext/bcmath/tests/bug54598.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/bcmath/tests/bug54598.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #54598 (bcpowmod() may return 1 if modulus is 1)
+--SKIPIF--
+<?php
+if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
+?>
+--FILE--
+<?php
+var_dump(bcpowmod(5, 0, 1));
+var_dump(bcpowmod(5, 0, 1, 3));
+?>
+===DONE===
+--EXPECT--
+string(1) "0"
+string(5) "0.000"
+===DONE===
diff -pruN 7.1.8-1/ext/bcmath/tests/bug75178.phpt 7.1.13-1/ext/bcmath/tests/bug75178.phpt
--- 7.1.8-1/ext/bcmath/tests/bug75178.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/bcmath/tests/bug75178.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,21 @@
+--TEST--
+Bug #75178 (bcpowmod() misbehaves for non-integer base or modulus)
+--SKIPIF--
+<?php
+if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+    die('skip Not valid for windows');
+}
+?>
+--FILE--
+<?php
+var_dump(bcpowmod('4.1', '4', '3', 3));
+var_dump(bcpowmod('4', '4', '3.1', 3));
+?>
+===DONE===
+--EXPECT--
+bc math warning: non-zero scale in base
+string(5) "1.000"
+bc math warning: non-zero scale in modulus
+string(5) "1.000"
+===DONE===
diff -pruN 7.1.8-1/ext/bcmath/tests/bug75178-win32.phpt 7.1.13-1/ext/bcmath/tests/bug75178-win32.phpt
--- 7.1.8-1/ext/bcmath/tests/bug75178-win32.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/bcmath/tests/bug75178-win32.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,21 @@
+--TEST--
+Bug #75178 (bcpowmod() misbehaves for non-integer base or modulus)
+--SKIPIF--
+<?php
+if (!extension_loaded('bcmath')) die('skip bcmath extension is not available');
+if (substr(PHP_OS, 0, 3) != 'WIN') {
+    die('skip valid only for windows');
+}
+?>
+--FILE--
+<?php
+var_dump(bcpowmod('4.1', '4', '3', 3));
+var_dump(bcpowmod('4', '4', '3.1', 3));
+?>
+===DONE===
+--EXPECT--
+string(5) "1.000"
+string(5) "1.000"
+===DONE===
+bc math warning: non-zero scale in base
+bc math warning: non-zero scale in modulus
diff -pruN 7.1.8-1/ext/curl/config.m4 7.1.13-1/ext/curl/config.m4
--- 7.1.8-1/ext/curl/config.m4	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/curl/config.m4	2018-01-05 15:39:53.000000000 +0000
@@ -17,12 +17,24 @@ if test "$PHP_CURL" != "no"; then
         break
       fi
     done
+    if test -z "$CURL_DIR"; then
+      AC_MSG_RESULT(not found)
+      if which dpkg-architecture>/dev/null; then
+        AC_MSG_CHECKING(for cURL in multiarch path)
+        CURL_MULTIARCH_INCLUDE=/usr/include/$(dpkg-architecture -qDEB_HOST_MULTIARCH)
+        if test -r $CURL_MULTIARCH_INCLUDE/curl/easy.h; then
+          CURL_DIR=/usr
+          AC_MSG_RESULT(found in $CURL_MULTIARCH_INCLUDE)
+        else
+          AC_MSG_RESULT(not found)
+        fi
+      fi
+    fi
   fi
 
   if test -z "$CURL_DIR"; then
-    AC_MSG_RESULT(not found)
-    AC_MSG_ERROR(Please reinstall the libcurl distribution -
-    easy.h should be in <curl-dir>/include/curl/)
+    AC_MSG_ERROR(Could not find cURL, please reinstall the libcurl distribution -dnl
+ easy.h should be in <curl-dir>/include/curl/)
   fi
 
   CURL_CONFIG="curl-config"
@@ -45,7 +57,11 @@ if test "$PHP_CURL" != "no"; then
     AC_MSG_ERROR(cURL version 7.10.5 or later is required to compile php with cURL support)
   fi
 
-  PHP_ADD_INCLUDE($CURL_DIR/include)
+  if test -z "$CURL_MULTIARCH_INCLUDE"; then
+    PHP_ADD_INCLUDE($CURL_DIR/include)
+  else
+    PHP_ADD_INCLUDE($CURL_MULTIARCH_INCLUDE)
+  fi
   PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
   PHP_ADD_LIBRARY_WITH_PATH(curl, $CURL_DIR/$PHP_LIBDIR, CURL_SHARED_LIBADD)
   
@@ -57,6 +73,8 @@ if test "$PHP_CURL" != "no"; then
    
     save_CFLAGS="$CFLAGS"
     CFLAGS="`$CURL_CONFIG --cflags`"
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="`$CURL_CONFIG --libs`"
    
     AC_PROG_CPP
     AC_MSG_CHECKING([for openssl support in libcurl])
@@ -114,6 +132,7 @@ int main(int argc, char *argv[])
     ])
    
     CFLAGS="$save_CFLAGS"
+    LDFLAGS="$save_LDFLAGS"
   else
     AC_MSG_RESULT([no])
   fi
diff -pruN 7.1.8-1/ext/curl/interface.c 7.1.13-1/ext/curl/interface.c
--- 7.1.8-1/ext/curl/interface.c	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/curl/interface.c	2018-01-03 02:32:26.000000000 +0000
@@ -219,6 +219,17 @@ static int php_curl_option_url(php_curl
 #endif
 	}
 
+#if LIBCURL_VERSION_NUM > 0x073800 && defined(PHP_WIN32)
+	if (len > sizeof("file://") - 1 && '/' != url[sizeof("file://") - 1] && !strncmp("file://", url, sizeof("file://") - 1) && len < MAXPATHLEN - 2) {
+		char _tmp[MAXPATHLEN] = {0};
+
+		memmove(_tmp, "file:///", sizeof("file:///") - 1);
+		memmove(_tmp + sizeof("file:///") - 1, url + sizeof("file://") - 1, len - sizeof("file://") + 1);
+
+		return php_curl_option_str(ch, CURLOPT_URL, _tmp, len + 1, 0);
+	}
+#endif
+
 	return php_curl_option_str(ch, CURLOPT_URL, url, len, 0);
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/date/lib/parse_date.c 7.1.13-1/ext/date/lib/parse_date.c
--- 7.1.8-1/ext/date/lib/parse_date.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/lib/parse_date.c	2018-01-03 02:32:29.000000000 +0000
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Tue Jul  4 21:15:17 2017 */
+/* Generated by re2c 0.15.3 on Tue Oct 24 13:42:24 2017 */
 /*
  * The MIT License (MIT)
  *
@@ -877,6 +877,7 @@ std:
 		  0,   0,   0,   0,   0,   0,   0,   0, 
 		  0,   0,   0,   0,   0,   0,   0,   0, 
 	};
+	YYDEBUG(0, *YYCURSOR);
 	if ((YYLIMIT - YYCURSOR) < 33) YYFILL(33);
 	yych = *YYCURSOR;
 	switch (yych) {
@@ -955,6 +956,7 @@ std:
 	default:	goto yy53;
 	}
 yy2:
+	YYDEBUG(2, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= 'E') {
 		if (yych <= ')') {
@@ -962,18 +964,19 @@ yy2:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'D') goto yy165;
-			goto yy1521;
+			goto yy1523;
 		}
 	} else {
 		if (yych <= 'd') {
 			if (yych <= 'Z') goto yy165;
 			if (yych >= 'a') goto yy170;
 		} else {
-			if (yych <= 'e') goto yy1530;
+			if (yych <= 'e') goto yy1532;
 			if (yych <= 'z') goto yy170;
 		}
 	}
 yy3:
+	YYDEBUG(3, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("tzcorrection | tz");
@@ -987,6 +990,7 @@ yy3:
 		return TIMELIB_TIMEZONE;
 	}
 yy4:
+	YYDEBUG(4, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -995,7 +999,7 @@ yy4:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'D') goto yy165;
-			goto yy1521;
+			goto yy1523;
 		}
 	} else {
 		if (yych <= 'd') {
@@ -1003,12 +1007,13 @@ yy4:
 			if (yych <= '`') goto yy3;
 			goto yy165;
 		} else {
-			if (yych <= 'e') goto yy1521;
+			if (yych <= 'e') goto yy1523;
 			if (yych <= 'z') goto yy165;
 			goto yy3;
 		}
 	}
 yy5:
+	YYDEBUG(5, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= 'D') {
@@ -1017,12 +1022,12 @@ yy5:
 			goto yy165;
 		} else {
 			if (yych <= 'H') {
-				if (yych <= 'E') goto yy1492;
+				if (yych <= 'E') goto yy1494;
 				goto yy165;
 			} else {
-				if (yych <= 'I') goto yy1493;
+				if (yych <= 'I') goto yy1495;
 				if (yych <= 'N') goto yy165;
-				goto yy1491;
+				goto yy1493;
 			}
 		}
 	} else {
@@ -1031,21 +1036,22 @@ yy5:
 				if (yych <= 'Z') goto yy165;
 				goto yy3;
 			} else {
-				if (yych == 'e') goto yy1508;
+				if (yych == 'e') goto yy1510;
 				goto yy170;
 			}
 		} else {
 			if (yych <= 'n') {
-				if (yych <= 'i') goto yy1509;
+				if (yych <= 'i') goto yy1511;
 				goto yy170;
 			} else {
-				if (yych <= 'o') goto yy1507;
+				if (yych <= 'o') goto yy1509;
 				if (yych <= 'z') goto yy170;
 				goto yy3;
 			}
 		}
 	}
 yy6:
+	YYDEBUG(6, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= 'D') {
@@ -1054,12 +1060,12 @@ yy6:
 			goto yy165;
 		} else {
 			if (yych <= 'H') {
-				if (yych <= 'E') goto yy1492;
+				if (yych <= 'E') goto yy1494;
 				goto yy165;
 			} else {
-				if (yych <= 'I') goto yy1493;
+				if (yych <= 'I') goto yy1495;
 				if (yych <= 'N') goto yy165;
-				goto yy1491;
+				goto yy1493;
 			}
 		}
 	} else {
@@ -1068,93 +1074,96 @@ yy6:
 				if (yych <= 'Z') goto yy165;
 				goto yy3;
 			} else {
-				if (yych == 'e') goto yy1492;
+				if (yych == 'e') goto yy1494;
 				goto yy165;
 			}
 		} else {
 			if (yych <= 'n') {
-				if (yych <= 'i') goto yy1493;
+				if (yych <= 'i') goto yy1495;
 				goto yy165;
 			} else {
-				if (yych <= 'o') goto yy1491;
+				if (yych <= 'o') goto yy1493;
 				if (yych <= 'z') goto yy165;
 				goto yy3;
 			}
 		}
 	}
 yy7:
+	YYDEBUG(7, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= 'A') {
 			if (yych == ')') goto yy164;
 			if (yych <= '@') goto yy3;
-			goto yy1461;
+			goto yy1463;
 		} else {
-			if (yych == 'I') goto yy1462;
+			if (yych == 'I') goto yy1464;
 			if (yych <= 'N') goto yy165;
-			goto yy1463;
+			goto yy1465;
 		}
 	} else {
 		if (yych <= 'h') {
 			if (yych <= 'Z') goto yy165;
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1476;
+			if (yych <= 'a') goto yy1478;
 			goto yy170;
 		} else {
 			if (yych <= 'n') {
-				if (yych <= 'i') goto yy1477;
+				if (yych <= 'i') goto yy1479;
 				goto yy170;
 			} else {
-				if (yych <= 'o') goto yy1478;
+				if (yych <= 'o') goto yy1480;
 				if (yych <= 'z') goto yy170;
 				goto yy3;
 			}
 		}
 	}
 yy8:
+	YYDEBUG(8, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= 'A') {
 			if (yych == ')') goto yy164;
 			if (yych <= '@') goto yy3;
-			goto yy1461;
+			goto yy1463;
 		} else {
-			if (yych == 'I') goto yy1462;
+			if (yych == 'I') goto yy1464;
 			if (yych <= 'N') goto yy165;
-			goto yy1463;
+			goto yy1465;
 		}
 	} else {
 		if (yych <= 'h') {
 			if (yych <= 'Z') goto yy165;
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1461;
+			if (yych <= 'a') goto yy1463;
 			goto yy165;
 		} else {
 			if (yych <= 'n') {
-				if (yych <= 'i') goto yy1462;
+				if (yych <= 'i') goto yy1464;
 				goto yy165;
 			} else {
-				if (yych <= 'o') goto yy1463;
+				if (yych <= 'o') goto yy1465;
 				if (yych <= 'z') goto yy165;
 				goto yy3;
 			}
 		}
 	}
 yy9:
+	YYDEBUG(9, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	switch (yych) {
 	case ')':	goto yy164;
 	case '0':
-	case '1':	goto yy1391;
-	case '2':	goto yy1392;
+	case '1':	goto yy1393;
+	case '2':	goto yy1394;
 	case '3':
 	case '4':
 	case '5':
 	case '6':
 	case '7':
 	case '8':
-	case '9':	goto yy1393;
+	case '9':	goto yy1395;
 	case 'A':
 	case 'B':
 	case 'C':
@@ -1176,11 +1185,11 @@ yy9:
 	case 'X':
 	case 'Y':
 	case 'Z':	goto yy165;
-	case 'E':	goto yy1386;
-	case 'H':	goto yy1387;
-	case 'O':	goto yy1388;
-	case 'U':	goto yy1389;
-	case 'W':	goto yy1390;
+	case 'E':	goto yy1388;
+	case 'H':	goto yy1389;
+	case 'O':	goto yy1390;
+	case 'U':	goto yy1391;
+	case 'W':	goto yy1392;
 	case 'a':
 	case 'b':
 	case 'c':
@@ -1202,28 +1211,29 @@ yy9:
 	case 'x':
 	case 'y':
 	case 'z':	goto yy170;
-	case 'e':	goto yy1429;
-	case 'h':	goto yy1430;
-	case 'o':	goto yy1431;
-	case 'u':	goto yy1432;
-	case 'w':	goto yy1433;
+	case 'e':	goto yy1431;
+	case 'h':	goto yy1432;
+	case 'o':	goto yy1433;
+	case 'u':	goto yy1434;
+	case 'w':	goto yy1435;
 	default:	goto yy3;
 	}
 yy10:
+	YYDEBUG(10, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	switch (yych) {
 	case ')':	goto yy164;
 	case '0':
-	case '1':	goto yy1391;
-	case '2':	goto yy1392;
+	case '1':	goto yy1393;
+	case '2':	goto yy1394;
 	case '3':
 	case '4':
 	case '5':
 	case '6':
 	case '7':
 	case '8':
-	case '9':	goto yy1393;
+	case '9':	goto yy1395;
 	case 'A':
 	case 'B':
 	case 'C':
@@ -1267,29 +1277,32 @@ yy10:
 	case 'y':
 	case 'z':	goto yy165;
 	case 'E':
-	case 'e':	goto yy1386;
+	case 'e':	goto yy1388;
 	case 'H':
-	case 'h':	goto yy1387;
+	case 'h':	goto yy1389;
 	case 'O':
-	case 'o':	goto yy1388;
+	case 'o':	goto yy1390;
 	case 'U':
-	case 'u':	goto yy1389;
+	case 'u':	goto yy1391;
 	case 'W':
-	case 'w':	goto yy1390;
+	case 'w':	goto yy1392;
 	default:	goto yy3;
 	}
 yy11:
+	YYDEBUG(11, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == '-') goto yy1374;
+	if (yych == '-') goto yy1376;
 	if (yych <= '/') goto yy12;
-	if (yych <= '9') goto yy1375;
+	if (yych <= '9') goto yy1377;
 yy12:
+	YYDEBUG(12, *YYCURSOR);
 	{
 		add_error(s, "Unexpected character");
 		goto std;
 	}
 yy13:
+	YYDEBUG(13, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= 'E') {
@@ -1299,16 +1312,16 @@ yy13:
 			} else {
 				if (yych <= '@') goto yy3;
 				if (yych <= 'D') goto yy165;
-				goto yy1310;
+				goto yy1311;
 			}
 		} else {
 			if (yych <= 'N') {
-				if (yych == 'I') goto yy1311;
+				if (yych == 'I') goto yy1312;
 				goto yy165;
 			} else {
-				if (yych <= 'O') goto yy1312;
+				if (yych <= 'O') goto yy1313;
 				if (yych <= 'Q') goto yy165;
-				goto yy1313;
+				goto yy1314;
 			}
 		}
 	} else {
@@ -1318,22 +1331,23 @@ yy13:
 				if (yych <= '`') goto yy3;
 				goto yy170;
 			} else {
-				if (yych <= 'e') goto yy1351;
+				if (yych <= 'e') goto yy1353;
 				if (yych <= 'h') goto yy170;
-				goto yy1352;
+				goto yy1354;
 			}
 		} else {
 			if (yych <= 'q') {
-				if (yych == 'o') goto yy1353;
+				if (yych == 'o') goto yy1355;
 				goto yy170;
 			} else {
-				if (yych <= 'r') goto yy1354;
+				if (yych <= 'r') goto yy1356;
 				if (yych <= 'z') goto yy170;
 				goto yy3;
 			}
 		}
 	}
 yy14:
+	YYDEBUG(14, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= 'E') {
@@ -1343,16 +1357,16 @@ yy14:
 			} else {
 				if (yych <= '@') goto yy3;
 				if (yych <= 'D') goto yy165;
-				goto yy1310;
+				goto yy1311;
 			}
 		} else {
 			if (yych <= 'N') {
-				if (yych == 'I') goto yy1311;
+				if (yych == 'I') goto yy1312;
 				goto yy165;
 			} else {
-				if (yych <= 'O') goto yy1312;
+				if (yych <= 'O') goto yy1313;
 				if (yych <= 'Q') goto yy165;
-				goto yy1313;
+				goto yy1314;
 			}
 		}
 	} else {
@@ -1362,54 +1376,57 @@ yy14:
 				if (yych <= '`') goto yy3;
 				goto yy165;
 			} else {
-				if (yych <= 'e') goto yy1310;
+				if (yych <= 'e') goto yy1311;
 				if (yych <= 'h') goto yy165;
-				goto yy1311;
+				goto yy1312;
 			}
 		} else {
 			if (yych <= 'q') {
-				if (yych == 'o') goto yy1312;
+				if (yych == 'o') goto yy1313;
 				goto yy165;
 			} else {
-				if (yych <= 'r') goto yy1313;
+				if (yych <= 'r') goto yy1314;
 				if (yych <= 'z') goto yy165;
 				goto yy3;
 			}
 		}
 	}
 yy15:
+	YYDEBUG(15, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
 		if (yych <= '@') goto yy3;
-		goto yy1296;
+		goto yy1297;
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') goto yy165;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1307;
+			if (yych <= 'a') goto yy1308;
 			if (yych <= 'z') goto yy170;
 			goto yy3;
 		}
 	}
 yy16:
+	YYDEBUG(16, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
 		if (yych <= '@') goto yy3;
-		goto yy1296;
+		goto yy1297;
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') goto yy165;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1296;
+			if (yych <= 'a') goto yy1297;
 			if (yych <= 'z') goto yy165;
 			goto yy3;
 		}
 	}
 yy17:
+	YYDEBUG(17, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -1420,12 +1437,13 @@ yy17:
 			if (yych <= 'Z') goto yy165;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1293;
+			if (yych <= 'a') goto yy1294;
 			if (yych <= 'z') goto yy170;
 			goto yy3;
 		}
 	}
 yy18:
+	YYDEBUG(18, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -1442,6 +1460,7 @@ yy18:
 		}
 	}
 yy19:
+	YYDEBUG(19, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -1485,6 +1504,7 @@ yy19:
 		}
 	}
 yy20:
+	YYDEBUG(20, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -1528,6 +1548,7 @@ yy20:
 		}
 	}
 yy21:
+	YYDEBUG(21, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= '@') {
@@ -1551,6 +1572,7 @@ yy21:
 		}
 	}
 yy22:
+	YYDEBUG(22, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= '@') {
@@ -1574,6 +1596,7 @@ yy22:
 		}
 	}
 yy23:
+	YYDEBUG(23, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -1596,6 +1619,7 @@ yy23:
 		}
 	}
 yy24:
+	YYDEBUG(24, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -1618,6 +1642,7 @@ yy24:
 		}
 	}
 yy25:
+	YYDEBUG(25, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '`') {
@@ -1709,6 +1734,7 @@ yy25:
 		}
 	}
 yy26:
+	YYDEBUG(26, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '`') {
@@ -1800,6 +1826,7 @@ yy26:
 		}
 	}
 yy27:
+	YYDEBUG(27, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '`') {
@@ -1891,6 +1918,7 @@ yy27:
 		}
 	}
 yy28:
+	YYDEBUG(28, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '`') {
@@ -1982,6 +2010,7 @@ yy28:
 		}
 	}
 yy29:
+	YYDEBUG(29, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'a') {
@@ -2069,6 +2098,7 @@ yy29:
 		}
 	}
 yy30:
+	YYDEBUG(30, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 4) {
@@ -2090,6 +2120,7 @@ yy30:
 	default:	goto yy12;
 	}
 yy31:
+	YYDEBUG(31, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -2132,6 +2163,7 @@ yy31:
 		}
 	}
 yy32:
+	YYDEBUG(32, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -2162,6 +2194,7 @@ yy32:
 		}
 	}
 yy33:
+	YYDEBUG(33, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -2192,6 +2225,7 @@ yy33:
 		}
 	}
 yy34:
+	YYDEBUG(34, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= '@') {
@@ -2214,6 +2248,7 @@ yy34:
 		}
 	}
 yy35:
+	YYDEBUG(35, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= '@') {
@@ -2236,6 +2271,7 @@ yy35:
 		}
 	}
 yy36:
+	YYDEBUG(36, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'F') {
@@ -2273,6 +2309,7 @@ yy36:
 		}
 	}
 yy37:
+	YYDEBUG(37, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'F') {
@@ -2310,6 +2347,7 @@ yy37:
 		}
 	}
 yy38:
+	YYDEBUG(38, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'C') {
 		if (yych <= ')') {
@@ -2332,6 +2370,7 @@ yy38:
 		}
 	}
 yy39:
+	YYDEBUG(39, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'C') {
 		if (yych <= ')') {
@@ -2354,6 +2393,7 @@ yy39:
 		}
 	}
 yy40:
+	YYDEBUG(40, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -2376,6 +2416,7 @@ yy40:
 		}
 	}
 yy41:
+	YYDEBUG(41, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -2398,6 +2439,7 @@ yy41:
 		}
 	}
 yy42:
+	YYDEBUG(42, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -2420,6 +2462,7 @@ yy42:
 		}
 	}
 yy43:
+	YYDEBUG(43, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -2442,6 +2485,7 @@ yy43:
 		}
 	}
 yy44:
+	YYDEBUG(44, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych == ')') goto yy164;
@@ -2458,6 +2502,7 @@ yy44:
 		}
 	}
 yy45:
+	YYDEBUG(45, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') goto yy12;
 	if (yych <= 'Z') goto yy180;
@@ -2465,6 +2510,7 @@ yy45:
 	if (yych <= 'z') goto yy180;
 	goto yy12;
 yy46:
+	YYDEBUG(46, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -2476,6 +2522,7 @@ yy46:
 		goto yy3;
 	}
 yy47:
+	YYDEBUG(47, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -2487,6 +2534,7 @@ yy47:
 		goto yy3;
 	}
 yy48:
+	YYDEBUG(48, *YYCURSOR);
 	yyaccept = 2;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 4) {
@@ -2495,25 +2543,32 @@ yy48:
 	if (yych <= '/') goto yy49;
 	if (yych <= '9') goto yy54;
 yy49:
+	YYDEBUG(49, *YYCURSOR);
 	{
 		goto std;
 	}
 yy50:
+	YYDEBUG(50, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy49;
 yy51:
+	YYDEBUG(51, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(52, *YYCURSOR);
 	{
 		s->pos = cursor; s->line++;
 		goto std;
 	}
 yy53:
+	YYDEBUG(53, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy12;
 yy54:
+	YYDEBUG(54, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
 	yych = *YYCURSOR;
+	YYDEBUG(55, *YYCURSOR);
 	if (yybm[0+yych] & 2) {
 		goto yy54;
 	}
@@ -2581,6 +2636,7 @@ yy54:
 		}
 	}
 yy56:
+	YYDEBUG(56, *YYCURSOR);
 	YYCURSOR = YYMARKER;
 	if (yyaccept <= 16) {
 		if (yyaccept <= 8) {
@@ -2693,32 +2749,34 @@ yy56:
 					}
 				} else {
 					if (yyaccept == 28) {
-						goto yy1377;
+						goto yy1379;
 					} else {
-						goto yy1415;
+						goto yy1417;
 					}
 				}
 			} else {
 				if (yyaccept <= 31) {
 					if (yyaccept == 30) {
-						goto yy1418;
+						goto yy1420;
 					} else {
-						goto yy1498;
+						goto yy1500;
 					}
 				} else {
 					if (yyaccept == 32) {
-						goto yy1506;
+						goto yy1508;
 					} else {
-						goto yy1529;
+						goto yy1531;
 					}
 				}
 			}
 		}
 	}
 yy57:
+	YYDEBUG(57, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(58, *YYCURSOR);
 	if (yybm[0+yych] & 4) {
 		goto yy57;
 	}
@@ -2726,10 +2784,12 @@ yy57:
 	if (yych <= '9') goto yy54;
 	goto yy56;
 yy59:
+	YYDEBUG(59, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
 	yych = *YYCURSOR;
 yy60:
+	YYDEBUG(60, *YYCURSOR);
 	if (yych <= 'X') {
 		if (yych <= 'G') {
 			if (yych <= ' ') {
@@ -2806,6 +2866,7 @@ yy60:
 		}
 	}
 yy61:
+	YYDEBUG(61, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= 'N') {
@@ -2827,15 +2888,18 @@ yy61:
 		}
 	}
 yy62:
+	YYDEBUG(62, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 0xB5) goto yy134;
 	goto yy56;
 yy63:
+	YYDEBUG(63, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy132;
 	if (yych == 's') goto yy132;
 	goto yy56;
 yy64:
+	YYDEBUG(64, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -2857,16 +2921,19 @@ yy64:
 		}
 	}
 yy65:
+	YYDEBUG(65, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy116;
 	if (yych == 'o') goto yy116;
 	goto yy56;
 yy66:
+	YYDEBUG(66, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy115;
 	if (yych == 'a') goto yy115;
 	goto yy56;
 yy67:
+	YYDEBUG(67, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych == 'O') goto yy100;
@@ -2882,16 +2949,19 @@ yy67:
 		}
 	}
 yy68:
+	YYDEBUG(68, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy96;
 	if (yych == 'e') goto yy96;
 	goto yy56;
 yy69:
+	YYDEBUG(69, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy84;
 	if (yych == 'e') goto yy84;
 	goto yy56;
 yy70:
+	YYDEBUG(70, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'H') goto yy71;
@@ -2906,20 +2976,24 @@ yy70:
 		}
 	}
 yy71:
+	YYDEBUG(71, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy79;
 	if (yych == 'u') goto yy79;
 	goto yy56;
 yy72:
+	YYDEBUG(72, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy73;
 	if (yych != 'e') goto yy56;
 yy73:
+	YYDEBUG(73, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'S') goto yy75;
 	if (yych == 's') goto yy75;
 yy74:
+	YYDEBUG(74, *YYCURSOR);
 	{
 		timelib_ull i;
 		DEBUG_OUTPUT("relative");
@@ -2935,43 +3009,53 @@ yy74:
 		return TIMELIB_RELATIVE;
 	}
 yy75:
+	YYDEBUG(75, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy76;
 	if (yych != 'd') goto yy56;
 yy76:
+	YYDEBUG(76, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy77;
 	if (yych != 'a') goto yy56;
 yy77:
+	YYDEBUG(77, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych != 'y') goto yy56;
 yy78:
+	YYDEBUG(78, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy74;
 yy79:
+	YYDEBUG(79, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'R') goto yy80;
 	if (yych != 'r') goto yy74;
 yy80:
+	YYDEBUG(80, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy81;
 	if (yych != 's') goto yy56;
 yy81:
+	YYDEBUG(81, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy82;
 	if (yych != 'd') goto yy56;
 yy82:
+	YYDEBUG(82, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy83;
 	if (yych != 'a') goto yy56;
 yy83:
+	YYDEBUG(83, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy84:
+	YYDEBUG(84, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= 'C') goto yy56;
@@ -2981,37 +3065,45 @@ yy84:
 		if (yych <= 'd') goto yy86;
 		if (yych >= 'f') goto yy56;
 	}
+	YYDEBUG(85, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'K') goto yy92;
 	if (yych == 'k') goto yy92;
 	goto yy56;
 yy86:
+	YYDEBUG(86, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'N') goto yy87;
 	if (yych != 'n') goto yy74;
 yy87:
+	YYDEBUG(87, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy88;
 	if (yych != 'e') goto yy56;
 yy88:
+	YYDEBUG(88, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy89;
 	if (yych != 's') goto yy56;
 yy89:
+	YYDEBUG(89, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy90;
 	if (yych != 'd') goto yy56;
 yy90:
+	YYDEBUG(90, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy91;
 	if (yych != 'a') goto yy56;
 yy91:
+	YYDEBUG(91, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy92:
+	YYDEBUG(92, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -3027,45 +3119,55 @@ yy92:
 		}
 	}
 yy93:
+	YYDEBUG(93, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy94;
 	if (yych != 'a') goto yy56;
 yy94:
+	YYDEBUG(94, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy95;
 	if (yych != 'y') goto yy56;
 yy95:
+	YYDEBUG(95, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy78;
 	if (yych == 's') goto yy78;
 	goto yy74;
 yy96:
+	YYDEBUG(96, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy97;
 	if (yych != 'a') goto yy56;
 yy97:
+	YYDEBUG(97, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy98;
 	if (yych != 'r') goto yy56;
 yy98:
+	YYDEBUG(98, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy78;
 	if (yych == 's') goto yy78;
 	goto yy74;
 yy99:
+	YYDEBUG(99, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy112;
 	if (yych == 'i') goto yy112;
 	goto yy56;
 yy100:
+	YYDEBUG(100, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy101;
 	if (yych != 'r') goto yy56;
 yy101:
+	YYDEBUG(101, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy102;
 	if (yych != 't') goto yy56;
 yy102:
+	YYDEBUG(102, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'H') goto yy104;
@@ -3078,87 +3180,106 @@ yy102:
 			if (yych != 'n') goto yy56;
 		}
 	}
+	YYDEBUG(103, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy109;
 	if (yych == 'i') goto yy109;
 	goto yy56;
 yy104:
+	YYDEBUG(104, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy105;
 	if (yych != 'n') goto yy56;
 yy105:
+	YYDEBUG(105, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy106;
 	if (yych != 'i') goto yy56;
 yy106:
+	YYDEBUG(106, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy107;
 	if (yych != 'g') goto yy56;
 yy107:
+	YYDEBUG(107, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy108;
 	if (yych != 'h') goto yy56;
 yy108:
+	YYDEBUG(108, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy98;
 	if (yych == 't') goto yy98;
 	goto yy56;
 yy109:
+	YYDEBUG(109, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy110;
 	if (yych != 'g') goto yy56;
 yy110:
+	YYDEBUG(110, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy111;
 	if (yych != 'h') goto yy56;
 yy111:
+	YYDEBUG(111, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy98;
 	if (yych == 't') goto yy98;
 	goto yy56;
 yy112:
+	YYDEBUG(112, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'D') goto yy113;
 	if (yych != 'd') goto yy74;
 yy113:
+	YYDEBUG(113, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy114;
 	if (yych != 'a') goto yy56;
 yy114:
+	YYDEBUG(114, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy115:
+	YYDEBUG(115, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy98;
 	if (yych == 'y') goto yy98;
 	goto yy56;
 yy116:
+	YYDEBUG(116, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy117;
 	if (yych != 'u') goto yy56;
 yy117:
+	YYDEBUG(117, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy98;
 	if (yych == 'r') goto yy98;
 	goto yy56;
 yy118:
+	YYDEBUG(118, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy129;
 	if (yych == 'n') goto yy129;
 	goto yy56;
 yy119:
+	YYDEBUG(119, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy124;
 	if (yych == 't') goto yy124;
 	goto yy56;
 yy120:
+	YYDEBUG(120, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy121;
 	if (yych != 'c') goto yy56;
 yy121:
+	YYDEBUG(121, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -3174,79 +3295,96 @@ yy121:
 		}
 	}
 yy122:
+	YYDEBUG(122, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy123;
 	if (yych != 'n') goto yy56;
 yy123:
+	YYDEBUG(123, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy98;
 	if (yych == 'd') goto yy98;
 	goto yy56;
 yy124:
+	YYDEBUG(124, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'U') goto yy125;
 	if (yych != 'u') goto yy74;
 yy125:
+	YYDEBUG(125, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy126;
 	if (yych != 'r') goto yy56;
 yy126:
+	YYDEBUG(126, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy127;
 	if (yych != 'd') goto yy56;
 yy127:
+	YYDEBUG(127, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy128;
 	if (yych != 'a') goto yy56;
 yy128:
+	YYDEBUG(128, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy129:
+	YYDEBUG(129, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'D') goto yy130;
 	if (yych != 'd') goto yy74;
 yy130:
+	YYDEBUG(130, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy131;
 	if (yych != 'a') goto yy56;
 yy131:
+	YYDEBUG(131, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy132:
+	YYDEBUG(132, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy133;
 	if (yych != 'e') goto yy56;
 yy133:
+	YYDEBUG(133, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy98;
 	if (yych == 'c') goto yy98;
 	goto yy56;
 yy134:
+	YYDEBUG(134, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy135;
 	if (yych != 's') goto yy56;
 yy135:
+	YYDEBUG(135, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy136;
 	if (yych != 'e') goto yy74;
 yy136:
+	YYDEBUG(136, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy98;
 	if (yych == 'c') goto yy98;
 	goto yy56;
 yy137:
+	YYDEBUG(137, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy160;
 	if (yych == 'n') goto yy160;
 	goto yy56;
 yy138:
+	YYDEBUG(138, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= 'K') {
@@ -3268,26 +3406,31 @@ yy138:
 		}
 	}
 yy139:
+	YYDEBUG(139, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy140;
 	if (yych != 'e') goto yy74;
 yy140:
+	YYDEBUG(140, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy98;
 	if (yych == 'c') goto yy98;
 	goto yy56;
 yy141:
+	YYDEBUG(141, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'L') goto yy153;
 	if (yych == 'l') goto yy153;
 	goto yy56;
 yy142:
+	YYDEBUG(142, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy146;
 	if (yych == 'r') goto yy146;
 	goto yy56;
 yy143:
+	YYDEBUG(143, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'U') {
@@ -3301,73 +3444,90 @@ yy143:
 			if (yych != 'u') goto yy74;
 		}
 	}
+	YYDEBUG(144, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy145;
 	if (yych != 't') goto yy56;
 yy145:
+	YYDEBUG(145, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy98;
 	if (yych == 'e') goto yy98;
 	goto yy56;
 yy146:
+	YYDEBUG(146, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy147;
 	if (yych != 'o') goto yy56;
 yy147:
+	YYDEBUG(147, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy148;
 	if (yych != 's') goto yy56;
 yy148:
+	YYDEBUG(148, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy149;
 	if (yych != 'e') goto yy56;
 yy149:
+	YYDEBUG(149, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy150;
 	if (yych != 'c') goto yy56;
 yy150:
+	YYDEBUG(150, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy151;
 	if (yych != 'o') goto yy56;
 yy151:
+	YYDEBUG(151, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy152;
 	if (yych != 'n') goto yy56;
 yy152:
+	YYDEBUG(152, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy98;
 	if (yych == 'd') goto yy98;
 	goto yy56;
 yy153:
+	YYDEBUG(153, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy154;
 	if (yych != 'i') goto yy56;
 yy154:
+	YYDEBUG(154, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy155;
 	if (yych != 's') goto yy56;
 yy155:
+	YYDEBUG(155, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy156;
 	if (yych != 'e') goto yy56;
 yy156:
+	YYDEBUG(156, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy157;
 	if (yych != 'c') goto yy56;
 yy157:
+	YYDEBUG(157, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy158;
 	if (yych != 'o') goto yy56;
 yy158:
+	YYDEBUG(158, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy159;
 	if (yych != 'n') goto yy56;
 yy159:
+	YYDEBUG(159, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy98;
 	if (yych == 'd') goto yy98;
 	goto yy56;
 yy160:
+	YYDEBUG(160, *YYCURSOR);
 	yyaccept = 3;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -3383,24 +3543,29 @@ yy160:
 		}
 	}
 yy161:
+	YYDEBUG(161, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy163;
 	if (yych == 'a') goto yy163;
 	goto yy56;
 yy162:
+	YYDEBUG(162, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy98;
 	if (yych == 'h') goto yy98;
 	goto yy56;
 yy163:
+	YYDEBUG(163, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy78;
 	if (yych == 'y') goto yy78;
 	goto yy56;
 yy164:
+	YYDEBUG(164, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy3;
 yy165:
+	YYDEBUG(165, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -3411,6 +3576,7 @@ yy165:
 		if (yych >= '{') goto yy3;
 	}
 yy166:
+	YYDEBUG(166, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -3421,6 +3587,7 @@ yy166:
 		if (yych >= '{') goto yy3;
 	}
 yy167:
+	YYDEBUG(167, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -3431,6 +3598,7 @@ yy167:
 		if (yych >= '{') goto yy3;
 	}
 yy168:
+	YYDEBUG(168, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -3441,10 +3609,12 @@ yy168:
 		if (yych >= '{') goto yy3;
 	}
 yy169:
+	YYDEBUG(169, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == ')') goto yy164;
 	goto yy3;
 yy170:
+	YYDEBUG(170, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -3467,6 +3637,7 @@ yy170:
 		}
 	}
 yy171:
+	YYDEBUG(171, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -3489,6 +3660,7 @@ yy171:
 		}
 	}
 yy172:
+	YYDEBUG(172, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
@@ -3497,10 +3669,12 @@ yy172:
 	}
 	goto yy56;
 yy173:
+	YYDEBUG(173, *YYCURSOR);
 	yyaccept = 0;
 	YYMARKER = ++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(174, *YYCURSOR);
 	if (yybm[0+yych] & 8) {
 		goto yy173;
 	}
@@ -3513,6 +3687,7 @@ yy173:
 		goto yy3;
 	}
 yy175:
+	YYDEBUG(175, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -3535,6 +3710,7 @@ yy175:
 		}
 	}
 yy176:
+	YYDEBUG(176, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -3557,6 +3733,7 @@ yy176:
 		}
 	}
 yy177:
+	YYDEBUG(177, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -3576,10 +3753,12 @@ yy177:
 		}
 	}
 yy178:
+	YYDEBUG(178, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
 yy179:
+	YYDEBUG(179, *YYCURSOR);
 	if (yybm[0+yych] & 16) {
 		goto yy178;
 	}
@@ -3592,6 +3771,7 @@ yy179:
 		goto yy56;
 	}
 yy180:
+	YYDEBUG(180, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
@@ -3603,6 +3783,7 @@ yy180:
 		goto yy3;
 	}
 yy181:
+	YYDEBUG(181, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych == ')') goto yy164;
@@ -3617,6 +3798,7 @@ yy181:
 			goto yy3;
 		}
 	}
+	YYDEBUG(182, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -3638,6 +3820,7 @@ yy181:
 		}
 	}
 yy183:
+	YYDEBUG(183, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy184;
@@ -3645,12 +3828,14 @@ yy183:
 	if (yych <= '9') goto yy186;
 	goto yy56;
 yy184:
+	YYDEBUG(184, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy3;
 	if (yych <= '9') goto yy186;
 	if (yych <= ':') goto yy187;
 	goto yy3;
 yy185:
+	YYDEBUG(185, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy3;
@@ -3661,23 +3846,27 @@ yy185:
 		goto yy3;
 	}
 yy186:
+	YYDEBUG(186, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy3;
 	if (yych <= '5') goto yy188;
 	if (yych <= '9') goto yy164;
 	if (yych >= ';') goto yy3;
 yy187:
+	YYDEBUG(187, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy3;
 	if (yych <= '5') goto yy188;
 	if (yych <= '9') goto yy164;
 	goto yy3;
 yy188:
+	YYDEBUG(188, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy3;
 	if (yych <= '9') goto yy164;
 	goto yy3;
 yy189:
+	YYDEBUG(189, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= '@') {
@@ -3700,6 +3889,7 @@ yy189:
 		}
 	}
 yy190:
+	YYDEBUG(190, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= 'N') {
 		if (yych <= ')') {
@@ -3719,6 +3909,7 @@ yy190:
 		}
 	}
 yy191:
+	YYDEBUG(191, *YYCURSOR);
 	{
 		const timelib_relunit* relunit;
 		DEBUG_OUTPUT("daytext");
@@ -3736,6 +3927,7 @@ yy191:
 		return TIMELIB_WEEKDAY;
 	}
 yy192:
+	YYDEBUG(192, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'K') {
 		if (yych <= ')') {
@@ -3757,6 +3949,7 @@ yy192:
 		}
 	}
 yy193:
+	YYDEBUG(193, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -3778,6 +3971,7 @@ yy193:
 		}
 	}
 yy194:
+	YYDEBUG(194, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -3793,6 +3987,7 @@ yy194:
 		}
 	}
 yy195:
+	YYDEBUG(195, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'X') {
 		if (yych == ')') goto yy164;
@@ -3802,13 +3997,16 @@ yy195:
 		if (yych != 'y') goto yy3;
 	}
 yy196:
+	YYDEBUG(196, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy197;
 	if (yych != 's') goto yy191;
 yy197:
+	YYDEBUG(197, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy191;
 yy198:
+	YYDEBUG(198, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -3830,6 +4028,7 @@ yy198:
 		}
 	}
 yy199:
+	YYDEBUG(199, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -3851,6 +4050,7 @@ yy199:
 		}
 	}
 yy200:
+	YYDEBUG(200, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -3861,15 +4061,18 @@ yy200:
 		if (yych != 'd') goto yy3;
 	}
 yy201:
+	YYDEBUG(201, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy202;
 	if (yych != 'a') goto yy56;
 yy202:
+	YYDEBUG(202, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy197;
 	goto yy56;
 yy203:
+	YYDEBUG(203, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -3906,6 +4109,7 @@ yy203:
 			}
 		}
 	}
+	YYDEBUG(204, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -3936,6 +4140,7 @@ yy203:
 		}
 	}
 yy205:
+	YYDEBUG(205, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'J') {
@@ -3966,6 +4171,7 @@ yy205:
 		}
 	}
 yy206:
+	YYDEBUG(206, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -3996,6 +4202,7 @@ yy206:
 		}
 	}
 yy207:
+	YYDEBUG(207, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -4021,6 +4228,7 @@ yy207:
 		}
 	}
 yy208:
+	YYDEBUG(208, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -4044,6 +4252,7 @@ yy208:
 		}
 	}
 yy209:
+	YYDEBUG(209, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -4066,6 +4275,7 @@ yy209:
 		}
 	}
 yy210:
+	YYDEBUG(210, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -4080,6 +4290,7 @@ yy210:
 		goto yy191;
 	}
 yy211:
+	YYDEBUG(211, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -4110,6 +4321,7 @@ yy211:
 		}
 	}
 yy212:
+	YYDEBUG(212, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -4140,6 +4352,7 @@ yy212:
 		}
 	}
 yy213:
+	YYDEBUG(213, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -4163,14 +4376,17 @@ yy213:
 		}
 	}
 yy214:
+	YYDEBUG(214, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy202;
 	if (yych != 'a') goto yy179;
+	YYDEBUG(215, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy210;
 	goto yy179;
 yy216:
+	YYDEBUG(216, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'C') {
 		if (yych <= ')') {
@@ -4192,6 +4408,7 @@ yy216:
 		}
 	}
 yy217:
+	YYDEBUG(217, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -4227,6 +4444,7 @@ yy217:
 		}
 	}
 yy218:
+	YYDEBUG(218, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("monthtext");
 		TIMELIB_INIT;
@@ -4236,10 +4454,12 @@ yy218:
 		return TIMELIB_DATE_TEXT;
 	}
 yy219:
+	YYDEBUG(219, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23);
 	yych = *YYCURSOR;
 yy220:
+	YYDEBUG(220, *YYCURSOR);
 	if (yybm[0+yych] & 32) {
 		goto yy219;
 	}
@@ -4249,6 +4469,7 @@ yy220:
 	if (yych <= '9') goto yy224;
 	goto yy56;
 yy221:
+	YYDEBUG(221, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy220;
 	if (yych <= '0') goto yy324;
@@ -4256,6 +4477,7 @@ yy221:
 	if (yych <= '3') goto yy326;
 	goto yy220;
 yy222:
+	YYDEBUG(222, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -4299,6 +4521,7 @@ yy222:
 		}
 	}
 yy223:
+	YYDEBUG(223, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '1') {
 		if (yych <= ' ') {
@@ -4343,6 +4566,7 @@ yy223:
 		}
 	}
 yy224:
+	YYDEBUG(224, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -4386,6 +4610,7 @@ yy224:
 		}
 	}
 yy225:
+	YYDEBUG(225, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'M') {
 		if (yych <= ')') {
@@ -4407,6 +4632,7 @@ yy225:
 		}
 	}
 yy226:
+	YYDEBUG(226, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'B') {
 		if (yych <= ')') {
@@ -4428,6 +4654,7 @@ yy226:
 		}
 	}
 yy227:
+	YYDEBUG(227, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -4438,10 +4665,12 @@ yy227:
 		if (yych != 'e') goto yy3;
 	}
 yy228:
+	YYDEBUG(228, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych != 'r') goto yy56;
 yy229:
+	YYDEBUG(229, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -4459,16 +4688,19 @@ yy229:
 		}
 	}
 yy230:
+	YYDEBUG(230, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy320;
 	goto yy56;
 yy231:
+	YYDEBUG(231, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 't') goto yy319;
 	goto yy237;
 yy232:
+	YYDEBUG(232, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("datetextual | datenoyear");
@@ -4482,26 +4714,31 @@ yy232:
 		return TIMELIB_DATE_TEXT;
 	}
 yy233:
+	YYDEBUG(233, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'd') goto yy319;
 	goto yy237;
 yy234:
+	YYDEBUG(234, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'd') goto yy319;
 	goto yy237;
 yy235:
+	YYDEBUG(235, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'h') goto yy319;
 	goto yy237;
 yy236:
+	YYDEBUG(236, *YYCURSOR);
 	yyaccept = 6;
 	YYMARKER = ++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
 	yych = *YYCURSOR;
 yy237:
+	YYDEBUG(237, *YYCURSOR);
 	if (yybm[0+yych] & 64) {
 		goto yy236;
 	}
@@ -4516,6 +4753,7 @@ yy237:
 		goto yy232;
 	}
 yy238:
+	YYDEBUG(238, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -4535,6 +4773,7 @@ yy238:
 		}
 	}
 yy239:
+	YYDEBUG(239, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy308;
@@ -4542,6 +4781,7 @@ yy239:
 	if (yych <= '9') goto yy298;
 	goto yy56;
 yy240:
+	YYDEBUG(240, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy299;
@@ -4553,6 +4793,7 @@ yy240:
 		goto yy56;
 	}
 yy241:
+	YYDEBUG(241, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy244;
@@ -4564,6 +4805,7 @@ yy241:
 		goto yy56;
 	}
 yy242:
+	YYDEBUG(242, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy244;
@@ -4574,16 +4816,19 @@ yy242:
 		goto yy56;
 	}
 yy243:
+	YYDEBUG(243, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '.') goto yy244;
 	if (yych != ':') goto yy56;
 yy244:
+	YYDEBUG(244, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy245;
 	if (yych <= '9') goto yy247;
 	goto yy56;
 yy245:
+	YYDEBUG(245, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -4593,6 +4838,7 @@ yy245:
 		if (yych <= ':') goto yy248;
 	}
 yy246:
+	YYDEBUG(246, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
@@ -4622,11 +4868,13 @@ yy246:
 		return TIMELIB_SHORTDATE_WITH_TIME;
 	}
 yy247:
+	YYDEBUG(247, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy248;
 	if (yych != ':') goto yy246;
 yy248:
+	YYDEBUG(248, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy249;
@@ -4634,18 +4882,22 @@ yy248:
 	if (yych <= '9') goto yy251;
 	goto yy56;
 yy249:
+	YYDEBUG(249, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '9') goto yy252;
 	goto yy246;
 yy250:
+	YYDEBUG(250, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '0') goto yy252;
 	goto yy246;
 yy251:
+	YYDEBUG(251, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy246;
 yy252:
+	YYDEBUG(252, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '*') {
@@ -4670,10 +4922,12 @@ yy252:
 		}
 	}
 yy253:
+	YYDEBUG(253, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
 	yych = *YYCURSOR;
 yy254:
+	YYDEBUG(254, *YYCURSOR);
 	if (yych <= '@') {
 		if (yych <= '\'') {
 			if (yych <= '\t') {
@@ -4715,6 +4969,7 @@ yy254:
 		}
 	}
 yy255:
+	YYDEBUG(255, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych == ')') goto yy251;
@@ -4731,6 +4986,7 @@ yy255:
 		}
 	}
 yy256:
+	YYDEBUG(256, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy284;
@@ -4738,6 +4994,7 @@ yy256:
 	if (yych <= '9') goto yy286;
 	goto yy56;
 yy257:
+	YYDEBUG(257, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') goto yy56;
 	if (yych <= 'Z') goto yy261;
@@ -4745,6 +5002,7 @@ yy257:
 	if (yych <= 'z') goto yy261;
 	goto yy56;
 yy258:
+	YYDEBUG(258, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -4768,6 +5026,7 @@ yy258:
 		}
 	}
 yy259:
+	YYDEBUG(259, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4779,6 +5038,7 @@ yy259:
 		goto yy246;
 	}
 yy260:
+	YYDEBUG(260, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -4802,6 +5062,7 @@ yy260:
 		}
 	}
 yy261:
+	YYDEBUG(261, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4812,6 +5073,7 @@ yy261:
 		if (yych >= '{') goto yy246;
 	}
 yy262:
+	YYDEBUG(262, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4822,6 +5084,7 @@ yy262:
 		if (yych >= '{') goto yy246;
 	}
 yy263:
+	YYDEBUG(263, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4832,6 +5095,7 @@ yy263:
 		if (yych >= '{') goto yy246;
 	}
 yy264:
+	YYDEBUG(264, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4842,6 +5106,7 @@ yy264:
 		if (yych >= '{') goto yy246;
 	}
 yy265:
+	YYDEBUG(265, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '@') {
 		if (yych == ')') goto yy251;
@@ -4852,15 +5117,18 @@ yy265:
 		if (yych >= '{') goto yy246;
 	}
 yy266:
+	YYDEBUG(266, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == ')') goto yy251;
 	goto yy246;
 yy267:
+	YYDEBUG(267, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy272;
 	if (yych == 'm') goto yy272;
 	goto yy56;
 yy268:
+	YYDEBUG(268, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ')') {
@@ -4884,6 +5152,7 @@ yy268:
 		}
 	}
 yy269:
+	YYDEBUG(269, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy270;
@@ -4892,7 +5161,9 @@ yy269:
 		if (yych != ' ') goto yy56;
 	}
 yy270:
+	YYDEBUG(270, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(271, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
 		TIMELIB_INIT;
@@ -4916,6 +5187,7 @@ yy270:
 		return TIMELIB_SHORTDATE_WITH_TIME;
 	}
 yy272:
+	YYDEBUG(272, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy270;
@@ -4927,6 +5199,7 @@ yy272:
 		goto yy56;
 	}
 yy273:
+	YYDEBUG(273, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -4949,6 +5222,7 @@ yy273:
 		}
 	}
 yy274:
+	YYDEBUG(274, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -4971,6 +5245,7 @@ yy274:
 		}
 	}
 yy275:
+	YYDEBUG(275, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
@@ -4979,10 +5254,12 @@ yy275:
 	if (yych <= '`') goto yy56;
 	if (yych >= '{') goto yy56;
 yy276:
+	YYDEBUG(276, *YYCURSOR);
 	yyaccept = 7;
 	YYMARKER = ++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(277, *YYCURSOR);
 	if (yych <= '@') {
 		if (yych <= '-') {
 			if (yych <= ',') goto yy246;
@@ -5003,6 +5280,7 @@ yy276:
 		}
 	}
 yy278:
+	YYDEBUG(278, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5024,6 +5302,7 @@ yy278:
 			if (yych >= '{') goto yy246;
 		}
 	}
+	YYDEBUG(279, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5045,6 +5324,7 @@ yy278:
 			if (yych >= '{') goto yy246;
 		}
 	}
+	YYDEBUG(280, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -5066,9 +5346,11 @@ yy278:
 		}
 	}
 yy281:
+	YYDEBUG(281, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(282, *YYCURSOR);
 	if (yych <= '/') {
 		if (yych == '-') goto yy275;
 		if (yych <= '.') goto yy56;
@@ -5084,6 +5366,7 @@ yy281:
 		}
 	}
 yy283:
+	YYDEBUG(283, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
@@ -5119,12 +5402,14 @@ yy283:
 		}
 	}
 yy284:
+	YYDEBUG(284, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '9') goto yy286;
 	if (yych <= ':') goto yy287;
 	goto yy246;
 yy285:
+	YYDEBUG(285, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy246;
@@ -5135,23 +5420,27 @@ yy285:
 		goto yy246;
 	}
 yy286:
+	YYDEBUG(286, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '5') goto yy288;
 	if (yych <= '9') goto yy251;
 	if (yych >= ';') goto yy246;
 yy287:
+	YYDEBUG(287, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '5') goto yy288;
 	if (yych <= '9') goto yy251;
 	goto yy246;
 yy288:
+	YYDEBUG(288, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '9') goto yy251;
 	goto yy246;
 yy289:
+	YYDEBUG(289, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych == ')') goto yy251;
@@ -5166,6 +5455,7 @@ yy289:
 			goto yy246;
 		}
 	}
+	YYDEBUG(290, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -5188,6 +5478,7 @@ yy289:
 		}
 	}
 yy291:
+	YYDEBUG(291, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ':') {
@@ -5215,9 +5506,11 @@ yy291:
 		}
 	}
 yy292:
+	YYDEBUG(292, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
+	YYDEBUG(293, *YYCURSOR);
 	if (yych <= 'A') {
 		if (yych <= 0x1F) {
 			if (yych == '\t') goto yy292;
@@ -5235,6 +5528,7 @@ yy292:
 		}
 	}
 yy294:
+	YYDEBUG(294, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
@@ -5243,10 +5537,12 @@ yy294:
 		if (yych == 'm') goto yy296;
 		goto yy56;
 	}
+	YYDEBUG(295, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy296;
 	if (yych != 'm') goto yy56;
 yy296:
+	YYDEBUG(296, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy270;
@@ -5256,6 +5552,7 @@ yy296:
 		if (yych <= ' ') goto yy270;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(297, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy270;
@@ -5266,16 +5563,19 @@ yy296:
 		goto yy56;
 	}
 yy298:
+	YYDEBUG(298, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '.') goto yy299;
 	if (yych != ':') goto yy56;
 yy299:
+	YYDEBUG(299, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy300;
 	if (yych <= '9') goto yy301;
 	goto yy56;
 yy300:
+	YYDEBUG(300, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5287,11 +5587,13 @@ yy300:
 		goto yy246;
 	}
 yy301:
+	YYDEBUG(301, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy302;
 	if (yych != ':') goto yy246;
 yy302:
+	YYDEBUG(302, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy303;
@@ -5299,14 +5601,17 @@ yy302:
 	if (yych <= '9') goto yy251;
 	goto yy56;
 yy303:
+	YYDEBUG(303, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy246;
 	if (yych <= '9') goto yy305;
 	goto yy246;
 yy304:
+	YYDEBUG(304, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '0') goto yy246;
 yy305:
+	YYDEBUG(305, *YYCURSOR);
 	yyaccept = 7;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '*') {
@@ -5331,10 +5636,12 @@ yy305:
 		}
 	}
 yy306:
+	YYDEBUG(306, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
 	yych = *YYCURSOR;
 yy307:
+	YYDEBUG(307, *YYCURSOR);
 	if (yych <= '+') {
 		if (yych <= ' ') {
 			if (yych == '\t') goto yy306;
@@ -5362,6 +5669,7 @@ yy307:
 		}
 	}
 yy308:
+	YYDEBUG(308, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy299;
@@ -5372,6 +5680,7 @@ yy308:
 		goto yy56;
 	}
 yy309:
+	YYDEBUG(309, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy299;
@@ -5382,6 +5691,7 @@ yy309:
 		goto yy56;
 	}
 yy310:
+	YYDEBUG(310, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5394,6 +5704,7 @@ yy310:
 		goto yy232;
 	}
 yy311:
+	YYDEBUG(311, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5406,6 +5717,7 @@ yy311:
 		goto yy232;
 	}
 yy312:
+	YYDEBUG(312, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5418,6 +5730,7 @@ yy312:
 		goto yy232;
 	}
 yy313:
+	YYDEBUG(313, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5429,16 +5742,20 @@ yy313:
 		goto yy232;
 	}
 yy314:
+	YYDEBUG(314, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy232;
 	if (yych >= ':') goto yy232;
 yy315:
+	YYDEBUG(315, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy232;
 	if (yych >= ':') goto yy232;
+	YYDEBUG(316, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy232;
 yy317:
+	YYDEBUG(317, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5450,6 +5767,7 @@ yy317:
 		goto yy232;
 	}
 yy318:
+	YYDEBUG(318, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5461,15 +5779,19 @@ yy318:
 		goto yy232;
 	}
 yy319:
+	YYDEBUG(319, *YYCURSOR);
 	yyaccept = 6;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 0x00) goto yy238;
 	goto yy237;
 yy320:
+	YYDEBUG(320, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(321, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(322, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("datenoday");
@@ -5483,6 +5805,7 @@ yy320:
 		return TIMELIB_DATE_NO_DAY;
 	}
 yy323:
+	YYDEBUG(323, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -5526,6 +5849,7 @@ yy323:
 		}
 	}
 yy324:
+	YYDEBUG(324, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -5569,6 +5893,7 @@ yy324:
 		}
 	}
 yy325:
+	YYDEBUG(325, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -5612,6 +5937,7 @@ yy325:
 		}
 	}
 yy326:
+	YYDEBUG(326, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '1') {
 		if (yych <= ' ') {
@@ -5655,6 +5981,7 @@ yy326:
 		}
 	}
 yy327:
+	YYDEBUG(327, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ' ') {
@@ -5697,13 +6024,16 @@ yy327:
 			}
 		}
 	}
+	YYDEBUG(328, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(329, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '/') goto yy330;
 	if (yych <= '9') goto yy331;
 yy330:
+	YYDEBUG(330, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("pgtextshort");
@@ -5717,15 +6047,19 @@ yy330:
 		return TIMELIB_PG_TEXT;
 	}
 yy331:
+	YYDEBUG(331, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy330;
 	if (yych >= ':') goto yy330;
+	YYDEBUG(332, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy330;
 	if (yych >= ':') goto yy330;
+	YYDEBUG(333, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy330;
 yy334:
+	YYDEBUG(334, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'B') {
@@ -5756,6 +6090,7 @@ yy334:
 		}
 	}
 yy335:
+	YYDEBUG(335, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -5799,6 +6134,7 @@ yy335:
 		}
 	}
 yy336:
+	YYDEBUG(336, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 8) {
 		goto yy173;
@@ -5809,6 +6145,7 @@ yy336:
 	if (yych <= '3') goto yy326;
 	goto yy220;
 yy337:
+	YYDEBUG(337, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -5839,6 +6176,7 @@ yy337:
 		}
 	}
 yy338:
+	YYDEBUG(338, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -5869,6 +6207,7 @@ yy338:
 		}
 	}
 yy339:
+	YYDEBUG(339, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -5892,10 +6231,12 @@ yy339:
 		}
 	}
 yy340:
+	YYDEBUG(340, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych != 'r') goto yy179;
 yy341:
+	YYDEBUG(341, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -5919,12 +6260,14 @@ yy341:
 		}
 	}
 yy342:
+	YYDEBUG(342, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 8) {
 		goto yy173;
 	}
 	goto yy220;
 yy343:
+	YYDEBUG(343, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -5946,6 +6289,7 @@ yy343:
 		}
 	}
 yy344:
+	YYDEBUG(344, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -5987,6 +6331,7 @@ yy344:
 		}
 	}
 yy345:
+	YYDEBUG(345, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'B') {
 		if (yych <= ')') {
@@ -6008,6 +6353,7 @@ yy345:
 		}
 	}
 yy346:
+	YYDEBUG(346, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -6029,6 +6375,7 @@ yy346:
 		}
 	}
 yy347:
+	YYDEBUG(347, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Q') {
 		if (yych == ')') goto yy164;
@@ -6039,6 +6386,7 @@ yy347:
 		goto yy3;
 	}
 yy348:
+	YYDEBUG(348, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -6069,6 +6417,7 @@ yy348:
 		}
 	}
 yy349:
+	YYDEBUG(349, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -6113,6 +6462,7 @@ yy349:
 		}
 	}
 yy350:
+	YYDEBUG(350, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -6143,6 +6493,7 @@ yy350:
 		}
 	}
 yy351:
+	YYDEBUG(351, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -6173,6 +6524,7 @@ yy351:
 		}
 	}
 yy352:
+	YYDEBUG(352, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -6196,6 +6548,7 @@ yy352:
 		}
 	}
 yy353:
+	YYDEBUG(353, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'G') {
 		if (yych <= ')') {
@@ -6218,6 +6571,7 @@ yy353:
 		}
 	}
 yy354:
+	YYDEBUG(354, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -6240,6 +6594,7 @@ yy354:
 		}
 	}
 yy355:
+	YYDEBUG(355, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= ')') {
@@ -6261,6 +6616,7 @@ yy355:
 		}
 	}
 yy356:
+	YYDEBUG(356, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '@') {
 		if (yych == ')') goto yy164;
@@ -6270,6 +6626,7 @@ yy356:
 		if (yych <= 'z') goto yy167;
 	}
 yy357:
+	YYDEBUG(357, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("ago");
 		TIMELIB_INIT;
@@ -6290,6 +6647,7 @@ yy357:
 		return TIMELIB_AGO;
 	}
 yy358:
+	YYDEBUG(358, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -6331,6 +6689,7 @@ yy358:
 		}
 	}
 yy359:
+	YYDEBUG(359, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= ')') {
@@ -6352,6 +6711,7 @@ yy359:
 		}
 	}
 yy360:
+	YYDEBUG(360, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -6376,6 +6736,7 @@ yy360:
 		}
 	}
 yy361:
+	YYDEBUG(361, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -6417,6 +6778,7 @@ yy361:
 		}
 	}
 yy362:
+	YYDEBUG(362, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -6438,6 +6800,7 @@ yy362:
 		}
 	}
 yy363:
+	YYDEBUG(363, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -6459,6 +6822,7 @@ yy363:
 		}
 	}
 yy364:
+	YYDEBUG(364, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '(') {
@@ -6481,6 +6845,7 @@ yy364:
 		}
 	}
 yy365:
+	YYDEBUG(365, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'F') {
@@ -6511,6 +6876,7 @@ yy365:
 		}
 	}
 yy366:
+	YYDEBUG(366, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -6541,6 +6907,7 @@ yy366:
 		}
 	}
 yy367:
+	YYDEBUG(367, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -6571,6 +6938,7 @@ yy367:
 		}
 	}
 yy368:
+	YYDEBUG(368, *YYCURSOR);
 	yyaccept = 8;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -6594,6 +6962,7 @@ yy368:
 		}
 	}
 yy369:
+	YYDEBUG(369, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -6638,6 +7007,7 @@ yy369:
 		}
 	}
 yy370:
+	YYDEBUG(370, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'K') {
@@ -6668,6 +7038,7 @@ yy370:
 		}
 	}
 yy371:
+	YYDEBUG(371, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -6703,6 +7074,7 @@ yy371:
 		}
 	}
 yy372:
+	YYDEBUG(372, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -6747,6 +7119,7 @@ yy372:
 		}
 	}
 yy373:
+	YYDEBUG(373, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -6777,6 +7150,7 @@ yy373:
 		}
 	}
 yy374:
+	YYDEBUG(374, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -6807,6 +7181,7 @@ yy374:
 		}
 	}
 yy375:
+	YYDEBUG(375, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -6833,6 +7208,7 @@ yy375:
 		}
 	}
 yy376:
+	YYDEBUG(376, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= '@') {
@@ -6856,6 +7232,7 @@ yy376:
 		}
 	}
 yy377:
+	YYDEBUG(377, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -6877,6 +7254,7 @@ yy377:
 		}
 	}
 yy378:
+	YYDEBUG(378, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -6918,6 +7296,7 @@ yy378:
 		}
 	}
 yy379:
+	YYDEBUG(379, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -6933,6 +7312,7 @@ yy379:
 		}
 	}
 yy380:
+	YYDEBUG(380, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -6954,6 +7334,7 @@ yy380:
 		}
 	}
 yy381:
+	YYDEBUG(381, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'X') {
 		if (yych == ')') goto yy164;
@@ -6964,6 +7345,7 @@ yy381:
 		goto yy3;
 	}
 yy382:
+	YYDEBUG(382, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -7006,6 +7388,7 @@ yy382:
 		}
 	}
 yy383:
+	YYDEBUG(383, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -7047,6 +7430,7 @@ yy383:
 		}
 	}
 yy384:
+	YYDEBUG(384, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -7071,6 +7455,7 @@ yy384:
 		}
 	}
 yy385:
+	YYDEBUG(385, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -7112,6 +7497,7 @@ yy385:
 		}
 	}
 yy386:
+	YYDEBUG(386, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -7142,6 +7528,7 @@ yy386:
 		}
 	}
 yy387:
+	YYDEBUG(387, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -7186,6 +7573,7 @@ yy387:
 		}
 	}
 yy388:
+	YYDEBUG(388, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -7211,6 +7599,7 @@ yy388:
 		}
 	}
 yy389:
+	YYDEBUG(389, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -7241,6 +7630,7 @@ yy389:
 		}
 	}
 yy390:
+	YYDEBUG(390, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -7264,6 +7654,7 @@ yy390:
 		}
 	}
 yy391:
+	YYDEBUG(391, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -7308,6 +7699,7 @@ yy391:
 		}
 	}
 yy392:
+	YYDEBUG(392, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -7352,6 +7744,7 @@ yy392:
 		}
 	}
 yy393:
+	YYDEBUG(393, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -7387,6 +7780,7 @@ yy393:
 		}
 	}
 yy394:
+	YYDEBUG(394, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -7416,6 +7810,7 @@ yy394:
 		}
 	}
 yy395:
+	YYDEBUG(395, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -7440,6 +7835,7 @@ yy395:
 		}
 	}
 yy396:
+	YYDEBUG(396, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -7468,6 +7864,7 @@ yy396:
 			}
 		}
 	}
+	YYDEBUG(397, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -7496,6 +7893,7 @@ yy396:
 			}
 		}
 	}
+	YYDEBUG(398, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -7520,6 +7918,7 @@ yy396:
 		}
 	}
 yy399:
+	YYDEBUG(399, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -7544,6 +7943,7 @@ yy399:
 		}
 	}
 yy400:
+	YYDEBUG(400, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -7574,6 +7974,7 @@ yy400:
 		}
 	}
 yy401:
+	YYDEBUG(401, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -7647,6 +8048,7 @@ yy401:
 		}
 	}
 yy402:
+	YYDEBUG(402, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -7730,6 +8132,7 @@ yy402:
 		}
 	}
 yy403:
+	YYDEBUG(403, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -7809,9 +8212,11 @@ yy403:
 		}
 	}
 yy404:
+	YYDEBUG(404, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(405, *YYCURSOR);
 	if (yybm[0+yych] & 4) {
 		goto yy57;
 	}
@@ -7825,6 +8230,7 @@ yy404:
 		goto yy56;
 	}
 yy406:
+	YYDEBUG(406, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -7893,6 +8299,7 @@ yy406:
 		}
 	}
 yy407:
+	YYDEBUG(407, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -7959,33 +8366,40 @@ yy407:
 			}
 		}
 	}
+	YYDEBUG(408, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych >= ':') goto yy60;
 yy409:
+	YYDEBUG(409, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 2) {
 		goto yy54;
 	}
 	if (yych != '-') goto yy60;
 yy410:
+	YYDEBUG(410, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy411;
 	if (yych <= '1') goto yy412;
 	goto yy56;
 yy411:
+	YYDEBUG(411, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy413;
 	goto yy56;
 yy412:
+	YYDEBUG(412, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '3') goto yy56;
 yy413:
+	YYDEBUG(413, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy56;
+	YYDEBUG(414, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy415;
@@ -7993,22 +8407,27 @@ yy413:
 	if (yych <= '3') goto yy417;
 	goto yy56;
 yy415:
+	YYDEBUG(415, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy418;
 	goto yy56;
 yy416:
+	YYDEBUG(416, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy418;
 	goto yy56;
 yy417:
+	YYDEBUG(417, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '2') goto yy56;
 yy418:
+	YYDEBUG(418, *YYCURSOR);
 	++YYCURSOR;
 yy419:
+	YYDEBUG(419, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
 		TIMELIB_INIT;
@@ -8020,6 +8439,7 @@ yy419:
 		return TIMELIB_ISO_DATE;
 	}
 yy420:
+	YYDEBUG(420, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -8088,6 +8508,7 @@ yy420:
 		}
 	}
 yy421:
+	YYDEBUG(421, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -8165,6 +8586,7 @@ yy421:
 			}
 		}
 	}
+	YYDEBUG(422, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -8231,6 +8653,7 @@ yy421:
 			}
 		}
 	}
+	YYDEBUG(423, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 2) {
@@ -8302,6 +8725,7 @@ yy421:
 		}
 	}
 yy424:
+	YYDEBUG(424, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy426;
 	if (yych <= '0') goto yy700;
@@ -8309,10 +8733,12 @@ yy424:
 	if (yych <= '9') goto yy702;
 	goto yy426;
 yy425:
+	YYDEBUG(425, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
 	yych = *YYCURSOR;
 yy426:
+	YYDEBUG(426, *YYCURSOR);
 	if (yych <= 'W') {
 		if (yych <= 'G') {
 			if (yych <= '.') {
@@ -8406,6 +8832,7 @@ yy426:
 		}
 	}
 yy427:
+	YYDEBUG(427, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= 'I') {
@@ -8433,6 +8860,7 @@ yy427:
 		}
 	}
 yy428:
+	YYDEBUG(428, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -8454,6 +8882,7 @@ yy428:
 		}
 	}
 yy429:
+	YYDEBUG(429, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '`') {
 		if (yych <= 'D') {
@@ -8477,6 +8906,7 @@ yy429:
 		}
 	}
 yy430:
+	YYDEBUG(430, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych == 'A') goto yy115;
@@ -8492,6 +8922,7 @@ yy430:
 		}
 	}
 yy431:
+	YYDEBUG(431, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= 'N') {
@@ -8513,6 +8944,7 @@ yy431:
 		}
 	}
 yy432:
+	YYDEBUG(432, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'H') goto yy71;
@@ -8528,12 +8960,14 @@ yy432:
 		}
 	}
 yy433:
+	YYDEBUG(433, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy706;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy705;
 	goto yy60;
 yy434:
+	YYDEBUG(434, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'c') {
 		if (yych == 'O') goto yy494;
@@ -8544,10 +8978,12 @@ yy434:
 		goto yy56;
 	}
 yy435:
+	YYDEBUG(435, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy693;
 	goto yy56;
 yy436:
+	YYDEBUG(436, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':
@@ -8579,6 +9015,7 @@ yy436:
 	default:	goto yy56;
 	}
 yy437:
+	YYDEBUG(437, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':	goto yy580;
@@ -8610,6 +9047,7 @@ yy437:
 	default:	goto yy542;
 	}
 yy438:
+	YYDEBUG(438, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '1') {
 		if (yych <= '/') goto yy542;
@@ -8621,6 +9059,7 @@ yy438:
 		goto yy542;
 	}
 yy439:
+	YYDEBUG(439, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -8641,6 +9080,7 @@ yy439:
 		}
 	}
 yy440:
+	YYDEBUG(440, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("datenoyearrev");
 		TIMELIB_INIT;
@@ -8652,6 +9092,7 @@ yy440:
 		return TIMELIB_DATE_TEXT;
 	}
 yy441:
+	YYDEBUG(441, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -8673,6 +9114,7 @@ yy441:
 		}
 	}
 yy442:
+	YYDEBUG(442, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -8694,6 +9136,7 @@ yy442:
 		}
 	}
 yy443:
+	YYDEBUG(443, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy521;
@@ -8709,6 +9152,7 @@ yy443:
 		}
 	}
 yy444:
+	YYDEBUG(444, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= 'L') {
@@ -8731,22 +9175,26 @@ yy444:
 		}
 	}
 yy445:
+	YYDEBUG(445, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy508;
 	if (yych == 'c') goto yy508;
 	goto yy56;
 yy446:
+	YYDEBUG(446, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy494;
 	if (yych == 'o') goto yy494;
 	goto yy56;
 yy447:
+	YYDEBUG(447, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy454;
 	if (yych <= '9') goto yy456;
 	goto yy56;
 yy448:
+	YYDEBUG(448, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
@@ -8756,10 +9204,12 @@ yy448:
 		goto yy56;
 	}
 yy449:
+	YYDEBUG(449, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy450;
 	if (yych != 'm') goto yy56;
 yy450:
+	YYDEBUG(450, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy452;
@@ -8769,6 +9219,7 @@ yy450:
 		if (yych <= ' ') goto yy452;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(451, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy452;
@@ -8777,7 +9228,9 @@ yy450:
 		if (yych != ' ') goto yy56;
 	}
 yy452:
+	YYDEBUG(452, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(453, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
 		TIMELIB_INIT;
@@ -8794,6 +9247,7 @@ yy452:
 		return TIMELIB_TIME12;
 	}
 yy454:
+	YYDEBUG(454, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -8803,6 +9257,7 @@ yy454:
 		if (yych <= ':') goto yy457;
 	}
 yy455:
+	YYDEBUG(455, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
@@ -8828,11 +9283,13 @@ yy455:
 		return TIMELIB_TIME24_WITH_ZONE;
 	}
 yy456:
+	YYDEBUG(456, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy457;
 	if (yych != ':') goto yy455;
 yy457:
+	YYDEBUG(457, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy458;
@@ -8840,6 +9297,7 @@ yy457:
 	if (yych <= '9') goto yy460;
 	goto yy56;
 yy458:
+	YYDEBUG(458, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -8847,27 +9305,33 @@ yy458:
 	if (yych <= '9') goto yy464;
 	goto yy455;
 yy459:
+	YYDEBUG(459, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
 	if (yych == '0') goto yy464;
 	goto yy455;
 yy460:
+	YYDEBUG(460, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych != '.') goto yy455;
 yy461:
+	YYDEBUG(461, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy462:
+	YYDEBUG(462, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(463, *YYCURSOR);
 	if (yych <= '/') goto yy455;
 	if (yych <= '9') goto yy462;
 	goto yy455;
 yy464:
+	YYDEBUG(464, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -8890,9 +9354,11 @@ yy464:
 		}
 	}
 yy465:
+	YYDEBUG(465, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
+	YYDEBUG(466, *YYCURSOR);
 	if (yych <= 'A') {
 		if (yych <= 0x1F) {
 			if (yych == '\t') goto yy465;
@@ -8910,6 +9376,7 @@ yy465:
 		}
 	}
 yy467:
+	YYDEBUG(467, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
@@ -8918,10 +9385,12 @@ yy467:
 		if (yych == 'm') goto yy469;
 		goto yy56;
 	}
+	YYDEBUG(468, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy469;
 	if (yych != 'm') goto yy56;
 yy469:
+	YYDEBUG(469, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy452;
@@ -8931,6 +9400,7 @@ yy469:
 		if (yych <= ' ') goto yy452;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(470, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy452;
@@ -8941,6 +9411,7 @@ yy469:
 		goto yy56;
 	}
 yy471:
+	YYDEBUG(471, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ':') {
@@ -8968,9 +9439,11 @@ yy471:
 		}
 	}
 yy472:
+	YYDEBUG(472, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
+	YYDEBUG(473, *YYCURSOR);
 	if (yych <= 'A') {
 		if (yych <= 0x1F) {
 			if (yych == '\t') goto yy472;
@@ -8988,6 +9461,7 @@ yy472:
 		}
 	}
 yy474:
+	YYDEBUG(474, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych == '.') goto yy491;
@@ -8998,6 +9472,7 @@ yy474:
 		goto yy56;
 	}
 yy475:
+	YYDEBUG(475, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy476;
@@ -9005,6 +9480,7 @@ yy475:
 	if (yych <= '9') goto yy460;
 	goto yy56;
 yy476:
+	YYDEBUG(476, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -9012,11 +9488,13 @@ yy476:
 	if (yych <= '9') goto yy478;
 	goto yy455;
 yy477:
+	YYDEBUG(477, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
 	if (yych != '0') goto yy455;
 yy478:
+	YYDEBUG(478, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ':') {
@@ -9045,18 +9523,22 @@ yy478:
 		}
 	}
 yy479:
+	YYDEBUG(479, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy489;
 	goto yy56;
 yy480:
+	YYDEBUG(480, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy481:
+	YYDEBUG(481, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
+	YYDEBUG(482, *YYCURSOR);
 	if (yych <= 'O') {
 		if (yych <= '9') {
 			if (yych <= '/') goto yy56;
@@ -9073,6 +9555,7 @@ yy481:
 		}
 	}
 yy483:
+	YYDEBUG(483, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
@@ -9081,10 +9564,12 @@ yy483:
 		if (yych == 'm') goto yy485;
 		goto yy56;
 	}
+	YYDEBUG(484, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy485;
 	if (yych != 'm') goto yy56;
 yy485:
+	YYDEBUG(485, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy487;
@@ -9094,6 +9579,7 @@ yy485:
 		if (yych <= ' ') goto yy487;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(486, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy487;
@@ -9102,7 +9588,9 @@ yy485:
 		if (yych != ' ') goto yy56;
 	}
 yy487:
+	YYDEBUG(487, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(488, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("mssqltime");
 		TIMELIB_INIT;
@@ -9122,10 +9610,12 @@ yy487:
 		return TIMELIB_TIME24_WITH_ZONE;
 	}
 yy489:
+	YYDEBUG(489, *YYCURSOR);
 	yyaccept = 10;
 	YYMARKER = ++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
+	YYDEBUG(490, *YYCURSOR);
 	if (yych <= 'O') {
 		if (yych <= '9') {
 			if (yych <= '/') goto yy455;
@@ -9145,10 +9635,12 @@ yy489:
 		}
 	}
 yy491:
+	YYDEBUG(491, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy492;
 	if (yych != 'm') goto yy56;
 yy492:
+	YYDEBUG(492, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
 		if (yych <= 0x00) goto yy452;
@@ -9158,6 +9650,7 @@ yy492:
 		if (yych <= ' ') goto yy452;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(493, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
 		if (yych <= 0x00) goto yy452;
@@ -9168,10 +9661,12 @@ yy492:
 		goto yy56;
 	}
 yy494:
+	YYDEBUG(494, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy495;
 	if (yych != 'v') goto yy56;
 yy495:
+	YYDEBUG(495, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9193,10 +9688,12 @@ yy495:
 		}
 	}
 yy496:
+	YYDEBUG(496, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
 	yych = *YYCURSOR;
 yy497:
+	YYDEBUG(497, *YYCURSOR);
 	if (yych <= ' ') {
 		if (yych == '\t') goto yy496;
 		if (yych <= 0x1F) goto yy56;
@@ -9211,10 +9708,12 @@ yy497:
 		}
 	}
 yy498:
+	YYDEBUG(498, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '/') goto yy499;
 	if (yych <= '9') goto yy505;
 yy499:
+	YYDEBUG(499, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("datefull");
@@ -9229,22 +9728,27 @@ yy499:
 		return TIMELIB_DATE_FULL;
 	}
 yy500:
+	YYDEBUG(500, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy501;
 	if (yych != 'm') goto yy56;
 yy501:
+	YYDEBUG(501, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy502;
 	if (yych != 'b') goto yy56;
 yy502:
+	YYDEBUG(502, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy503;
 	if (yych != 'e') goto yy56;
 yy503:
+	YYDEBUG(503, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy504;
 	if (yych != 'r') goto yy56;
 yy504:
+	YYDEBUG(504, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -9262,20 +9766,25 @@ yy504:
 		}
 	}
 yy505:
+	YYDEBUG(505, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych >= ':') goto yy499;
 yy506:
+	YYDEBUG(506, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych >= ':') goto yy499;
+	YYDEBUG(507, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy499;
 yy508:
+	YYDEBUG(508, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy509;
 	if (yych != 't') goto yy56;
 yy509:
+	YYDEBUG(509, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9298,28 +9807,34 @@ yy509:
 		}
 	}
 yy510:
+	YYDEBUG(510, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy511;
 	if (yych != 'b') goto yy56;
 yy511:
+	YYDEBUG(511, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy512;
 	if (yych != 'e') goto yy56;
 yy512:
+	YYDEBUG(512, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy504;
 	if (yych == 'r') goto yy504;
 	goto yy56;
 yy513:
+	YYDEBUG(513, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy517;
 	if (yych == 'g') goto yy517;
 	goto yy56;
 yy514:
+	YYDEBUG(514, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy515;
 	if (yych != 'r') goto yy56;
 yy515:
+	YYDEBUG(515, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9342,11 +9857,13 @@ yy515:
 		}
 	}
 yy516:
+	YYDEBUG(516, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'L') goto yy504;
 	if (yych == 'l') goto yy504;
 	goto yy56;
 yy517:
+	YYDEBUG(517, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9369,15 +9886,18 @@ yy517:
 		}
 	}
 yy518:
+	YYDEBUG(518, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy519;
 	if (yych != 's') goto yy56;
 yy519:
+	YYDEBUG(519, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy504;
 	if (yych == 't') goto yy504;
 	goto yy56;
 yy520:
+	YYDEBUG(520, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy527;
@@ -9393,10 +9913,12 @@ yy520:
 		}
 	}
 yy521:
+	YYDEBUG(521, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy522;
 	if (yych != 'n') goto yy56;
 yy522:
+	YYDEBUG(522, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9419,19 +9941,23 @@ yy522:
 		}
 	}
 yy523:
+	YYDEBUG(523, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy524;
 	if (yych != 'a') goto yy56;
 yy524:
+	YYDEBUG(524, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy525;
 	if (yych != 'r') goto yy56;
 yy525:
+	YYDEBUG(525, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy504;
 	if (yych == 'y') goto yy504;
 	goto yy56;
 yy526:
+	YYDEBUG(526, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9455,6 +9981,7 @@ yy526:
 		}
 	}
 yy527:
+	YYDEBUG(527, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9478,6 +10005,7 @@ yy527:
 		}
 	}
 yy528:
+	YYDEBUG(528, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -9499,6 +10027,7 @@ yy528:
 		}
 	}
 yy529:
+	YYDEBUG(529, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -9518,6 +10047,7 @@ yy529:
 			if (yych != 'I') goto yy440;
 		}
 	}
+	YYDEBUG(530, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -9539,6 +10069,7 @@ yy529:
 		}
 	}
 yy531:
+	YYDEBUG(531, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -9560,6 +10091,7 @@ yy531:
 		}
 	}
 yy532:
+	YYDEBUG(532, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9573,6 +10105,7 @@ yy532:
 		goto yy455;
 	}
 yy533:
+	YYDEBUG(533, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -9587,6 +10120,7 @@ yy533:
 		goto yy455;
 	}
 yy534:
+	YYDEBUG(534, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9600,6 +10134,7 @@ yy534:
 		goto yy455;
 	}
 yy535:
+	YYDEBUG(535, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9611,16 +10146,19 @@ yy535:
 		goto yy455;
 	}
 yy536:
+	YYDEBUG(536, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy559;
 	if (yych == 'e') goto yy559;
 	goto yy56;
 yy537:
+	YYDEBUG(537, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy556;
 	if (yych == 'a') goto yy556;
 	goto yy56;
 yy538:
+	YYDEBUG(538, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy514;
@@ -9636,20 +10174,24 @@ yy538:
 		}
 	}
 yy539:
+	YYDEBUG(539, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy549;
 	if (yych == 'e') goto yy549;
 	goto yy56;
 yy540:
+	YYDEBUG(540, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy543;
 	if (yych == 'e') goto yy543;
 	goto yy56;
 yy541:
+	YYDEBUG(541, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
 	yych = *YYCURSOR;
 yy542:
+	YYDEBUG(542, *YYCURSOR);
 	switch (yych) {
 	case '\t':
 	case ' ':
@@ -9677,10 +10219,12 @@ yy542:
 	default:	goto yy56;
 	}
 yy543:
+	YYDEBUG(543, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy544;
 	if (yych != 'c') goto yy56;
 yy544:
+	YYDEBUG(544, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9703,27 +10247,33 @@ yy544:
 		}
 	}
 yy545:
+	YYDEBUG(545, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy546;
 	if (yych != 'm') goto yy56;
 yy546:
+	YYDEBUG(546, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy547;
 	if (yych != 'b') goto yy56;
 yy547:
+	YYDEBUG(547, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy548;
 	if (yych != 'e') goto yy56;
 yy548:
+	YYDEBUG(548, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy504;
 	if (yych == 'r') goto yy504;
 	goto yy56;
 yy549:
+	YYDEBUG(549, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy550;
 	if (yych != 'p') goto yy56;
 yy550:
+	YYDEBUG(550, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9746,6 +10296,7 @@ yy550:
 		}
 	}
 yy551:
+	YYDEBUG(551, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9768,23 +10319,28 @@ yy551:
 		}
 	}
 yy552:
+	YYDEBUG(552, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy553;
 	if (yych != 'm') goto yy56;
 yy553:
+	YYDEBUG(553, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy554;
 	if (yych != 'b') goto yy56;
 yy554:
+	YYDEBUG(554, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy555;
 	if (yych != 'e') goto yy56;
 yy555:
+	YYDEBUG(555, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy504;
 	if (yych == 'r') goto yy504;
 	goto yy56;
 yy556:
+	YYDEBUG(556, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy557;
@@ -9799,6 +10355,7 @@ yy556:
 		}
 	}
 yy557:
+	YYDEBUG(557, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9821,15 +10378,18 @@ yy557:
 		}
 	}
 yy558:
+	YYDEBUG(558, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy504;
 	if (yych == 'h') goto yy504;
 	goto yy56;
 yy559:
+	YYDEBUG(559, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy560;
 	if (yych != 'b') goto yy56;
 yy560:
+	YYDEBUG(560, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -9852,23 +10412,28 @@ yy560:
 		}
 	}
 yy561:
+	YYDEBUG(561, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy562;
 	if (yych != 'u') goto yy56;
 yy562:
+	YYDEBUG(562, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy563;
 	if (yych != 'a') goto yy56;
 yy563:
+	YYDEBUG(563, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy564;
 	if (yych != 'r') goto yy56;
 yy564:
+	YYDEBUG(564, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy504;
 	if (yych == 'y') goto yy504;
 	goto yy56;
 yy565:
+	YYDEBUG(565, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy572;
@@ -9876,21 +10441,27 @@ yy565:
 	if (yych <= '9') goto yy574;
 	goto yy56;
 yy566:
+	YYDEBUG(566, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(567, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy568:
+	YYDEBUG(568, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy569:
+	YYDEBUG(569, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(570, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(571, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("pointed date YYYY");
 		TIMELIB_INIT;
@@ -9902,6 +10473,7 @@ yy569:
 		return TIMELIB_DATE_FULL_POINTED;
 	}
 yy572:
+	YYDEBUG(572, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -9909,6 +10481,7 @@ yy572:
 	if (yych <= '9') goto yy577;
 	goto yy455;
 yy573:
+	YYDEBUG(573, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -9920,17 +10493,20 @@ yy573:
 		goto yy455;
 	}
 yy574:
+	YYDEBUG(574, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
 	if (yych <= '/') goto yy455;
 	if (yych >= ':') goto yy455;
 yy575:
+	YYDEBUG(575, *YYCURSOR);
 	yyaccept = 11;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy576;
 	if (yych <= '9') goto yy569;
 yy576:
+	YYDEBUG(576, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("pointed date YY");
@@ -9944,6 +10520,7 @@ yy576:
 		return TIMELIB_DATE_FULL_POINTED;
 	}
 yy577:
+	YYDEBUG(577, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -9972,6 +10549,7 @@ yy577:
 		}
 	}
 yy578:
+	YYDEBUG(578, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ':') {
@@ -10000,6 +10578,7 @@ yy578:
 		}
 	}
 yy579:
+	YYDEBUG(579, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ':') {
@@ -10033,6 +10612,7 @@ yy579:
 		}
 	}
 yy580:
+	YYDEBUG(580, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -10044,6 +10624,7 @@ yy580:
 		goto yy56;
 	}
 yy581:
+	YYDEBUG(581, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -10054,12 +10635,14 @@ yy581:
 		if (yych >= '3') goto yy56;
 	}
 yy582:
+	YYDEBUG(582, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '-') goto yy619;
 	if (yych <= '.') goto yy566;
 	goto yy56;
 yy583:
+	YYDEBUG(583, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy615;
@@ -10075,16 +10658,19 @@ yy583:
 		}
 	}
 yy584:
+	YYDEBUG(584, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy612;
 	if (yych == 'e') goto yy612;
 	goto yy56;
 yy585:
+	YYDEBUG(585, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy609;
 	if (yych == 'a') goto yy609;
 	goto yy56;
 yy586:
+	YYDEBUG(586, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy606;
@@ -10100,29 +10686,35 @@ yy586:
 		}
 	}
 yy587:
+	YYDEBUG(587, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy602;
 	if (yych == 'e') goto yy602;
 	goto yy56;
 yy588:
+	YYDEBUG(588, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy600;
 	if (yych == 'c') goto yy600;
 	goto yy56;
 yy589:
+	YYDEBUG(589, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy598;
 	if (yych == 'o') goto yy598;
 	goto yy56;
 yy590:
+	YYDEBUG(590, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy591;
 	if (yych != 'e') goto yy56;
 yy591:
+	YYDEBUG(591, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy592;
 	if (yych != 'c') goto yy56;
 yy592:
+	YYDEBUG(592, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10146,6 +10738,7 @@ yy592:
 		}
 	}
 yy593:
+	YYDEBUG(593, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy497;
 	if (yych <= '0') goto yy594;
@@ -10153,31 +10746,37 @@ yy593:
 	if (yych <= '3') goto yy596;
 	goto yy497;
 yy594:
+	YYDEBUG(594, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych <= '9') goto yy597;
 	goto yy499;
 yy595:
+	YYDEBUG(595, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych <= '9') goto yy597;
 	goto yy499;
 yy596:
+	YYDEBUG(596, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych <= '1') goto yy597;
 	if (yych <= '9') goto yy505;
 	goto yy499;
 yy597:
+	YYDEBUG(597, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy499;
 	if (yych <= '9') goto yy506;
 	goto yy499;
 yy598:
+	YYDEBUG(598, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy599;
 	if (yych != 'v') goto yy56;
 yy599:
+	YYDEBUG(599, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10202,10 +10801,12 @@ yy599:
 		}
 	}
 yy600:
+	YYDEBUG(600, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy601;
 	if (yych != 't') goto yy56;
 yy601:
+	YYDEBUG(601, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10230,10 +10831,12 @@ yy601:
 		}
 	}
 yy602:
+	YYDEBUG(602, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy603;
 	if (yych != 'p') goto yy56;
 yy603:
+	YYDEBUG(603, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10257,6 +10860,7 @@ yy603:
 		}
 	}
 yy604:
+	YYDEBUG(604, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10281,15 +10885,18 @@ yy604:
 		}
 	}
 yy605:
+	YYDEBUG(605, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy608;
 	if (yych == 'g') goto yy608;
 	goto yy56;
 yy606:
+	YYDEBUG(606, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy607;
 	if (yych != 'r') goto yy56;
 yy607:
+	YYDEBUG(607, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10314,6 +10921,7 @@ yy607:
 		}
 	}
 yy608:
+	YYDEBUG(608, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10338,6 +10946,7 @@ yy608:
 		}
 	}
 yy609:
+	YYDEBUG(609, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy610;
@@ -10352,6 +10961,7 @@ yy609:
 		}
 	}
 yy610:
+	YYDEBUG(610, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10376,6 +10986,7 @@ yy610:
 		}
 	}
 yy611:
+	YYDEBUG(611, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ',') {
@@ -10397,10 +11008,12 @@ yy611:
 		}
 	}
 yy612:
+	YYDEBUG(612, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy613;
 	if (yych != 'b') goto yy56;
 yy613:
+	YYDEBUG(613, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10425,6 +11038,7 @@ yy613:
 		}
 	}
 yy614:
+	YYDEBUG(614, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy618;
@@ -10440,10 +11054,12 @@ yy614:
 		}
 	}
 yy615:
+	YYDEBUG(615, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy616;
 	if (yych != 'n') goto yy56;
 yy616:
+	YYDEBUG(616, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10468,6 +11084,7 @@ yy616:
 		}
 	}
 yy617:
+	YYDEBUG(617, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10492,6 +11109,7 @@ yy617:
 		}
 	}
 yy618:
+	YYDEBUG(618, *YYCURSOR);
 	yyaccept = 9;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -10516,6 +11134,7 @@ yy618:
 		}
 	}
 yy619:
+	YYDEBUG(619, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy620;
@@ -10523,6 +11142,7 @@ yy619:
 	if (yych <= '9') goto yy623;
 	goto yy56;
 yy620:
+	YYDEBUG(620, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10538,6 +11158,7 @@ yy620:
 		}
 	}
 yy621:
+	YYDEBUG(621, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("gnudateshort");
@@ -10551,6 +11172,7 @@ yy621:
 		return TIMELIB_ISO_DATE;
 	}
 yy622:
+	YYDEBUG(622, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10573,6 +11195,7 @@ yy622:
 		}
 	}
 yy623:
+	YYDEBUG(623, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10591,24 +11214,30 @@ yy623:
 		}
 	}
 yy624:
+	YYDEBUG(624, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 't') goto yy628;
 	goto yy56;
 yy625:
+	YYDEBUG(625, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy628;
 	goto yy56;
 yy626:
+	YYDEBUG(626, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy628;
 	goto yy56;
 yy627:
+	YYDEBUG(627, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'h') goto yy56;
 yy628:
+	YYDEBUG(628, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy621;
 yy629:
+	YYDEBUG(629, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10627,6 +11256,7 @@ yy629:
 		}
 	}
 yy630:
+	YYDEBUG(630, *YYCURSOR);
 	yyaccept = 13;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10645,6 +11275,7 @@ yy630:
 		}
 	}
 yy631:
+	YYDEBUG(631, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("americanshort | american");
@@ -10660,6 +11291,7 @@ yy631:
 		return TIMELIB_AMERICAN;
 	}
 yy632:
+	YYDEBUG(632, *YYCURSOR);
 	yyaccept = 13;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10682,6 +11314,7 @@ yy632:
 		}
 	}
 yy633:
+	YYDEBUG(633, *YYCURSOR);
 	yyaccept = 13;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -10699,6 +11332,7 @@ yy633:
 		}
 	}
 yy634:
+	YYDEBUG(634, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy682;
@@ -10714,16 +11348,19 @@ yy634:
 		}
 	}
 yy635:
+	YYDEBUG(635, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy680;
 	if (yych == 'e') goto yy680;
 	goto yy56;
 yy636:
+	YYDEBUG(636, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy679;
 	if (yych == 'a') goto yy679;
 	goto yy56;
 yy637:
+	YYDEBUG(637, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy678;
@@ -10739,92 +11376,116 @@ yy637:
 		}
 	}
 yy638:
+	YYDEBUG(638, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy675;
 	if (yych == 'e') goto yy675;
 	goto yy56;
 yy639:
+	YYDEBUG(639, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy674;
 	if (yych == 'c') goto yy674;
 	goto yy56;
 yy640:
+	YYDEBUG(640, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy673;
 	if (yych == 'o') goto yy673;
 	goto yy56;
 yy641:
+	YYDEBUG(641, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy642;
 	if (yych != 'e') goto yy56;
 yy642:
+	YYDEBUG(642, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy643;
 	if (yych != 'c') goto yy56;
 yy643:
+	YYDEBUG(643, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '/') goto yy56;
 yy644:
+	YYDEBUG(644, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(645, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(646, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(647, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(648, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(649, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy650;
 	if (yych <= '2') goto yy651;
 	goto yy56;
 yy650:
+	YYDEBUG(650, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy652;
 	goto yy56;
 yy651:
+	YYDEBUG(651, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '5') goto yy56;
 yy652:
+	YYDEBUG(652, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(653, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '6') goto yy56;
+	YYDEBUG(654, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(655, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(656, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy657;
 	if (yych <= '6') goto yy658;
 	goto yy56;
 yy657:
+	YYDEBUG(657, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy659;
 	goto yy56;
 yy658:
+	YYDEBUG(658, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '0') goto yy56;
 yy659:
+	YYDEBUG(659, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '\t') goto yy660;
 	if (yych != ' ') goto yy56;
 yy660:
+	YYDEBUG(660, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
 	yych = *YYCURSOR;
+	YYDEBUG(661, *YYCURSOR);
 	if (yych <= '*') {
 		if (yych <= '\t') {
 			if (yych <= 0x08) goto yy56;
@@ -10841,10 +11502,12 @@ yy660:
 			if (yych != 'G') goto yy56;
 		}
 	}
+	YYDEBUG(662, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy671;
 	goto yy56;
 yy663:
+	YYDEBUG(663, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy664;
@@ -10852,11 +11515,13 @@ yy663:
 	if (yych <= '9') goto yy667;
 	goto yy56;
 yy664:
+	YYDEBUG(664, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '/') goto yy665;
 	if (yych <= '9') goto yy667;
 	if (yych <= ':') goto yy668;
 yy665:
+	YYDEBUG(665, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("clf");
@@ -10877,6 +11542,7 @@ yy665:
 		return TIMELIB_CLF;
 	}
 yy666:
+	YYDEBUG(666, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy665;
@@ -10887,46 +11553,56 @@ yy666:
 		goto yy665;
 	}
 yy667:
+	YYDEBUG(667, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy665;
 	if (yych <= '5') goto yy669;
 	if (yych <= '9') goto yy670;
 	if (yych >= ';') goto yy665;
 yy668:
+	YYDEBUG(668, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy665;
 	if (yych <= '5') goto yy669;
 	if (yych <= '9') goto yy670;
 	goto yy665;
 yy669:
+	YYDEBUG(669, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy665;
 	if (yych >= ':') goto yy665;
 yy670:
+	YYDEBUG(670, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy665;
 yy671:
+	YYDEBUG(671, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'T') goto yy56;
+	YYDEBUG(672, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '+') goto yy663;
 	if (yych == '-') goto yy663;
 	goto yy56;
 yy673:
+	YYDEBUG(673, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy643;
 	if (yych == 'v') goto yy643;
 	goto yy56;
 yy674:
+	YYDEBUG(674, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy643;
 	if (yych == 't') goto yy643;
 	goto yy56;
 yy675:
+	YYDEBUG(675, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy676;
 	if (yych != 'p') goto yy56;
 yy676:
+	YYDEBUG(676, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych == '/') goto yy644;
@@ -10937,16 +11613,19 @@ yy676:
 		goto yy56;
 	}
 yy677:
+	YYDEBUG(677, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy643;
 	if (yych == 'g') goto yy643;
 	goto yy56;
 yy678:
+	YYDEBUG(678, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy643;
 	if (yych == 'r') goto yy643;
 	goto yy56;
 yy679:
+	YYDEBUG(679, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy643;
@@ -10962,11 +11641,13 @@ yy679:
 		}
 	}
 yy680:
+	YYDEBUG(680, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy643;
 	if (yych == 'b') goto yy643;
 	goto yy56;
 yy681:
+	YYDEBUG(681, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy643;
@@ -10982,47 +11663,59 @@ yy681:
 		}
 	}
 yy682:
+	YYDEBUG(682, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy643;
 	if (yych == 'n') goto yy643;
 	goto yy56;
 yy683:
+	YYDEBUG(683, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 't') goto yy692;
 	goto yy56;
 yy684:
+	YYDEBUG(684, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy692;
 	goto yy56;
 yy685:
+	YYDEBUG(685, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy692;
 	goto yy56;
 yy686:
+	YYDEBUG(686, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'h') goto yy692;
 	goto yy56;
 yy687:
+	YYDEBUG(687, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(688, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy631;
 	if (yych >= ':') goto yy631;
+	YYDEBUG(689, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy631;
 	if (yych >= ':') goto yy631;
+	YYDEBUG(690, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy631;
 	if (yych >= ':') goto yy631;
+	YYDEBUG(691, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy631;
 yy692:
+	YYDEBUG(692, *YYCURSOR);
 	yyaccept = 13;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '/') goto yy687;
 	goto yy631;
 yy693:
+	YYDEBUG(693, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') {
 		if (yych == '\t') goto yy695;
@@ -11033,6 +11726,7 @@ yy693:
 		if (yych >= '0') goto yy542;
 	}
 yy694:
+	YYDEBUG(694, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case 'A':
@@ -11054,6 +11748,7 @@ yy694:
 	default:	goto yy56;
 	}
 yy695:
+	YYDEBUG(695, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy542;
 	if (yych <= '0') goto yy700;
@@ -11061,6 +11756,7 @@ yy695:
 	if (yych <= '9') goto yy702;
 	goto yy542;
 yy696:
+	YYDEBUG(696, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy542;
 	if (yych <= '0') goto yy697;
@@ -11068,6 +11764,7 @@ yy696:
 	if (yych <= '9') goto yy699;
 	goto yy542;
 yy697:
+	YYDEBUG(697, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '.') goto yy566;
@@ -11075,17 +11772,20 @@ yy697:
 	if (yych <= '9') goto yy699;
 	goto yy56;
 yy698:
+	YYDEBUG(698, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '.') goto yy566;
 	if (yych <= '/') goto yy56;
 	if (yych >= '3') goto yy56;
 yy699:
+	YYDEBUG(699, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '.') goto yy566;
 	goto yy56;
 yy700:
+	YYDEBUG(700, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -11097,6 +11797,7 @@ yy700:
 		goto yy56;
 	}
 yy701:
+	YYDEBUG(701, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -11107,25 +11808,30 @@ yy701:
 		if (yych >= '3') goto yy56;
 	}
 yy702:
+	YYDEBUG(702, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '-') goto yy566;
 	if (yych >= '/') goto yy56;
 yy703:
+	YYDEBUG(703, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(704, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy575;
 	goto yy56;
 yy705:
+	YYDEBUG(705, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy749;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy747;
 	goto yy60;
 yy706:
+	YYDEBUG(706, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':	goto yy715;
@@ -11157,6 +11863,7 @@ yy706:
 	default:	goto yy56;
 	}
 yy707:
+	YYDEBUG(707, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy746;
@@ -11172,16 +11879,19 @@ yy707:
 		}
 	}
 yy708:
+	YYDEBUG(708, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy744;
 	if (yych == 'e') goto yy744;
 	goto yy56;
 yy709:
+	YYDEBUG(709, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy743;
 	if (yych == 'a') goto yy743;
 	goto yy56;
 yy710:
+	YYDEBUG(710, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy742;
@@ -11197,41 +11907,49 @@ yy710:
 		}
 	}
 yy711:
+	YYDEBUG(711, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy739;
 	if (yych == 'e') goto yy739;
 	goto yy56;
 yy712:
+	YYDEBUG(712, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy738;
 	if (yych == 'c') goto yy738;
 	goto yy56;
 yy713:
+	YYDEBUG(713, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy737;
 	if (yych == 'o') goto yy737;
 	goto yy56;
 yy714:
+	YYDEBUG(714, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy729;
 	if (yych == 'e') goto yy729;
 	goto yy56;
 yy715:
+	YYDEBUG(715, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy718;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy722;
 	goto yy56;
 yy716:
+	YYDEBUG(716, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy718;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy722;
 	goto yy56;
 yy717:
+	YYDEBUG(717, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy56;
 yy718:
+	YYDEBUG(718, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy719;
@@ -11239,6 +11957,7 @@ yy718:
 	if (yych <= '9') goto yy721;
 	goto yy56;
 yy719:
+	YYDEBUG(719, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -11257,6 +11976,7 @@ yy719:
 		}
 	}
 yy720:
+	YYDEBUG(720, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -11275,6 +11995,7 @@ yy720:
 		}
 	}
 yy721:
+	YYDEBUG(721, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'q') {
@@ -11287,8 +12008,10 @@ yy721:
 		goto yy621;
 	}
 yy722:
+	YYDEBUG(722, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy56;
+	YYDEBUG(723, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy56;
@@ -11298,6 +12021,7 @@ yy722:
 		if (yych <= '9') goto yy721;
 		goto yy56;
 	}
+	YYDEBUG(724, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -11316,6 +12040,7 @@ yy722:
 		}
 	}
 yy725:
+	YYDEBUG(725, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -11334,6 +12059,7 @@ yy725:
 		}
 	}
 yy726:
+	YYDEBUG(726, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -11352,6 +12078,7 @@ yy726:
 		}
 	}
 yy727:
+	YYDEBUG(727, *YYCURSOR);
 	yyaccept = 14;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'q') {
@@ -11362,6 +12089,7 @@ yy727:
 		if (yych <= 't') goto yy627;
 	}
 yy728:
+	YYDEBUG(728, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("iso8601date2");
@@ -11375,13 +12103,16 @@ yy728:
 		return TIMELIB_ISO_DATE;
 	}
 yy729:
+	YYDEBUG(729, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy730;
 	if (yych != 'c') goto yy56;
 yy730:
+	YYDEBUG(730, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy56;
 yy731:
+	YYDEBUG(731, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy732;
@@ -11389,21 +12120,26 @@ yy731:
 	if (yych <= '3') goto yy734;
 	goto yy56;
 yy732:
+	YYDEBUG(732, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy735;
 	goto yy56;
 yy733:
+	YYDEBUG(733, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy735;
 	goto yy56;
 yy734:
+	YYDEBUG(734, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '2') goto yy56;
 yy735:
+	YYDEBUG(735, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(736, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("pgtextreverse");
@@ -11417,20 +12153,24 @@ yy735:
 		return TIMELIB_PG_TEXT;
 	}
 yy737:
+	YYDEBUG(737, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy730;
 	if (yych == 'v') goto yy730;
 	goto yy56;
 yy738:
+	YYDEBUG(738, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy730;
 	if (yych == 't') goto yy730;
 	goto yy56;
 yy739:
+	YYDEBUG(739, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy740;
 	if (yych != 'p') goto yy56;
 yy740:
+	YYDEBUG(740, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych == '-') goto yy731;
@@ -11441,16 +12181,19 @@ yy740:
 		goto yy56;
 	}
 yy741:
+	YYDEBUG(741, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy730;
 	if (yych == 'g') goto yy730;
 	goto yy56;
 yy742:
+	YYDEBUG(742, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy730;
 	if (yych == 'r') goto yy730;
 	goto yy56;
 yy743:
+	YYDEBUG(743, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy730;
@@ -11466,11 +12209,13 @@ yy743:
 		}
 	}
 yy744:
+	YYDEBUG(744, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy730;
 	if (yych == 'b') goto yy730;
 	goto yy56;
 yy745:
+	YYDEBUG(745, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy730;
@@ -11486,11 +12231,13 @@ yy745:
 		}
 	}
 yy746:
+	YYDEBUG(746, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy730;
 	if (yych == 'n') goto yy730;
 	goto yy56;
 yy747:
+	YYDEBUG(747, *YYCURSOR);
 	yyaccept = 15;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'O') {
@@ -11568,6 +12315,7 @@ yy747:
 		}
 	}
 yy748:
+	YYDEBUG(748, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("year4");
 		TIMELIB_INIT;
@@ -11576,6 +12324,7 @@ yy748:
 		return TIMELIB_CLF;
 	}
 yy749:
+	YYDEBUG(749, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':	goto yy750;
@@ -11607,18 +12356,21 @@ yy749:
 	default:	goto yy56;
 	}
 yy750:
+	YYDEBUG(750, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy718;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy717;
 	goto yy56;
 yy751:
+	YYDEBUG(751, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy718;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy717;
 	goto yy56;
 yy752:
+	YYDEBUG(752, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':	goto yy937;
@@ -11651,6 +12403,7 @@ yy752:
 	default:	goto yy903;
 	}
 yy753:
+	YYDEBUG(753, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy911;
@@ -11658,10 +12411,12 @@ yy753:
 	if (yych <= '9') goto yy913;
 	goto yy56;
 yy754:
+	YYDEBUG(754, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
 	yych = *YYCURSOR;
 yy755:
+	YYDEBUG(755, *YYCURSOR);
 	if (yych <= 'W') {
 		if (yych <= 'G') {
 			if (yych <= '.') {
@@ -11754,6 +12509,7 @@ yy755:
 		}
 	}
 yy756:
+	YYDEBUG(756, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy903;
 	if (yych <= '0') goto yy895;
@@ -11761,6 +12517,7 @@ yy756:
 	if (yych <= '3') goto yy897;
 	goto yy903;
 yy757:
+	YYDEBUG(757, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= 'U') {
 		if (yych == 'I') goto yy894;
@@ -11769,6 +12526,7 @@ yy757:
 		if (yych <= 'X') goto yy848;
 	}
 yy758:
+	YYDEBUG(758, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("datenodayrev");
@@ -11782,14 +12540,17 @@ yy758:
 		return TIMELIB_DATE_NO_DAY;
 	}
 yy759:
+	YYDEBUG(759, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy892;
 	goto yy758;
 yy760:
+	YYDEBUG(760, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy891;
 	goto yy758;
 yy761:
+	YYDEBUG(761, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy884;
@@ -11805,6 +12566,7 @@ yy761:
 		}
 	}
 yy762:
+	YYDEBUG(762, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= 'N') {
@@ -11826,6 +12588,7 @@ yy762:
 		}
 	}
 yy763:
+	YYDEBUG(763, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= 'I') {
@@ -11853,6 +12616,7 @@ yy763:
 		}
 	}
 yy764:
+	YYDEBUG(764, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy868;
@@ -11868,6 +12632,7 @@ yy764:
 		}
 	}
 yy765:
+	YYDEBUG(765, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -11889,16 +12654,19 @@ yy765:
 		}
 	}
 yy766:
+	YYDEBUG(766, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy855;
 	if (yych == 'c') goto yy855;
 	goto yy56;
 yy767:
+	YYDEBUG(767, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy849;
 	if (yych == 'o') goto yy849;
 	goto yy56;
 yy768:
+	YYDEBUG(768, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych == 'A') goto yy115;
@@ -11914,29 +12682,34 @@ yy768:
 		}
 	}
 yy769:
+	YYDEBUG(769, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '0') goto yy839;
 	if (yych <= '9') goto yy840;
 	goto yy60;
 yy770:
+	YYDEBUG(770, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '2') goto yy808;
 	if (yych <= '9') goto yy787;
 	goto yy60;
 yy771:
+	YYDEBUG(771, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy788;
 	if (yych <= '1') goto yy789;
 	goto yy56;
 yy772:
+	YYDEBUG(772, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy787;
 	goto yy60;
 yy773:
+	YYDEBUG(773, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '5') goto yy783;
@@ -11944,6 +12717,7 @@ yy773:
 	if (yych <= '9') goto yy54;
 	goto yy60;
 yy774:
+	YYDEBUG(774, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy56;
@@ -11960,26 +12734,31 @@ yy774:
 		}
 	}
 yy775:
+	YYDEBUG(775, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy56;
 	if (yych <= '9') goto yy778;
 	goto yy56;
 yy776:
+	YYDEBUG(776, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy778;
 	goto yy56;
 yy777:
+	YYDEBUG(777, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '4') goto yy56;
 yy778:
+	YYDEBUG(778, *YYCURSOR);
 	yyaccept = 16;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '-') goto yy780;
 	if (yych <= '/') goto yy779;
 	if (yych <= '7') goto yy781;
 yy779:
+	YYDEBUG(779, *YYCURSOR);
 	{
 		timelib_sll w, d;
 		DEBUG_OUTPUT("isoweek");
@@ -11998,11 +12777,14 @@ yy779:
 		return TIMELIB_ISO_WEEK;
 	}
 yy780:
+	YYDEBUG(780, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '8') goto yy56;
 yy781:
+	YYDEBUG(781, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(782, *YYCURSOR);
 	{
 		timelib_sll w, d;
 		DEBUG_OUTPUT("isoweekday");
@@ -12021,17 +12803,20 @@ yy781:
 		return TIMELIB_ISO_WEEK;
 	}
 yy783:
+	YYDEBUG(783, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy785;
 	goto yy60;
 yy784:
+	YYDEBUG(784, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '6') goto yy785;
 	if (yych <= '9') goto yy54;
 	goto yy60;
 yy785:
+	YYDEBUG(785, *YYCURSOR);
 	yyaccept = 17;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 2) {
@@ -12085,6 +12870,7 @@ yy785:
 		}
 	}
 yy786:
+	YYDEBUG(786, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("pgydotd");
@@ -12098,22 +12884,27 @@ yy786:
 		return TIMELIB_PG_YEARDAY;
 	}
 yy787:
+	YYDEBUG(787, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy785;
 	goto yy60;
 yy788:
+	YYDEBUG(788, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy790;
 	goto yy56;
 yy789:
+	YYDEBUG(789, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '3') goto yy56;
 yy790:
+	YYDEBUG(790, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(791, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy792;
@@ -12121,63 +12912,79 @@ yy790:
 	if (yych <= '3') goto yy794;
 	goto yy56;
 yy792:
+	YYDEBUG(792, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy795;
 	goto yy56;
 yy793:
+	YYDEBUG(793, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy795;
 	goto yy56;
 yy794:
+	YYDEBUG(794, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '2') goto yy56;
 yy795:
+	YYDEBUG(795, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ' ') goto yy56;
+	YYDEBUG(796, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy797;
 	if (yych <= '2') goto yy798;
 	goto yy56;
 yy797:
+	YYDEBUG(797, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy799;
 	goto yy56;
 yy798:
+	YYDEBUG(798, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '5') goto yy56;
 yy799:
+	YYDEBUG(799, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(800, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '6') goto yy56;
+	YYDEBUG(801, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(802, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(803, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy804;
 	if (yych <= '6') goto yy805;
 	goto yy56;
 yy804:
+	YYDEBUG(804, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy805:
+	YYDEBUG(805, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '0') goto yy56;
 yy806:
+	YYDEBUG(806, *YYCURSOR);
 	++YYCURSOR;
 yy807:
+	YYDEBUG(807, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
@@ -12203,6 +13010,7 @@ yy807:
 		return TIMELIB_XMLRPC_SOAP;
 	}
 yy808:
+	YYDEBUG(808, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy60;
@@ -12213,6 +13021,7 @@ yy808:
 		goto yy60;
 	}
 yy809:
+	YYDEBUG(809, *YYCURSOR);
 	yyaccept = 17;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -12281,6 +13090,7 @@ yy809:
 		}
 	}
 yy810:
+	YYDEBUG(810, *YYCURSOR);
 	yyaccept = 17;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -12349,6 +13159,7 @@ yy810:
 		}
 	}
 yy811:
+	YYDEBUG(811, *YYCURSOR);
 	yyaccept = 17;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -12421,6 +13232,7 @@ yy811:
 		}
 	}
 yy812:
+	YYDEBUG(812, *YYCURSOR);
 	yyaccept = 18;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 2) {
@@ -12490,6 +13302,7 @@ yy812:
 		}
 	}
 yy813:
+	YYDEBUG(813, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("datenocolon");
 		TIMELIB_INIT;
@@ -12501,6 +13314,7 @@ yy813:
 		return TIMELIB_DATE_NOCOLON;
 	}
 yy814:
+	YYDEBUG(814, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= '2') {
@@ -12523,6 +13337,7 @@ yy814:
 		}
 	}
 yy815:
+	YYDEBUG(815, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= '2') {
@@ -12543,47 +13358,56 @@ yy815:
 			goto yy56;
 		}
 	}
+	YYDEBUG(816, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy823;
 	if (yych <= '9') goto yy818;
 	goto yy56;
 yy817:
+	YYDEBUG(817, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '4') goto yy823;
 	if (yych <= '5') goto yy819;
 	goto yy56;
 yy818:
+	YYDEBUG(818, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '6') goto yy56;
 yy819:
+	YYDEBUG(819, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy820:
+	YYDEBUG(820, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy821;
 	if (yych <= '6') goto yy822;
 	goto yy56;
 yy821:
+	YYDEBUG(821, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy822:
+	YYDEBUG(822, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '0') goto yy806;
 	goto yy56;
 yy823:
+	YYDEBUG(823, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy824;
 	if (yych <= '9') goto yy820;
 	goto yy56;
 yy824:
+	YYDEBUG(824, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy825;
@@ -12591,6 +13415,7 @@ yy824:
 	if (yych <= '9') goto yy820;
 	goto yy56;
 yy825:
+	YYDEBUG(825, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy827;
@@ -12598,6 +13423,7 @@ yy825:
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy826:
+	YYDEBUG(826, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy827;
@@ -12605,15 +13431,18 @@ yy826:
 	if (yych <= '6') goto yy822;
 	goto yy56;
 yy827:
+	YYDEBUG(827, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '9') goto yy806;
 	goto yy807;
 yy828:
+	YYDEBUG(828, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '0') goto yy806;
 	goto yy807;
 yy829:
+	YYDEBUG(829, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy838;
@@ -12621,6 +13450,7 @@ yy829:
 	if (yych <= ':') goto yy832;
 	goto yy56;
 yy830:
+	YYDEBUG(830, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy56;
@@ -12631,34 +13461,42 @@ yy830:
 		goto yy56;
 	}
 yy831:
+	YYDEBUG(831, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy819;
 	if (yych != ':') goto yy56;
 yy832:
+	YYDEBUG(832, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= '6') goto yy56;
+	YYDEBUG(833, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(834, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(835, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy836;
 	if (yych <= '6') goto yy837;
 	goto yy56;
 yy836:
+	YYDEBUG(836, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy837:
+	YYDEBUG(837, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '0') goto yy806;
 	goto yy56;
 yy838:
+	YYDEBUG(838, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy824;
@@ -12666,6 +13504,7 @@ yy838:
 	if (yych <= ':') goto yy832;
 	goto yy56;
 yy839:
+	YYDEBUG(839, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy60;
@@ -12677,6 +13516,7 @@ yy839:
 		goto yy60;
 	}
 yy840:
+	YYDEBUG(840, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy60;
@@ -12688,87 +13528,107 @@ yy840:
 		goto yy60;
 	}
 yy841:
+	YYDEBUG(841, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy812;
 	goto yy60;
 yy842:
+	YYDEBUG(842, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy843;
 	if (yych != 'c') goto yy56;
 yy843:
+	YYDEBUG(843, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy844;
 	if (yych != 'e') goto yy758;
 yy844:
+	YYDEBUG(844, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy845;
 	if (yych != 'm') goto yy56;
 yy845:
+	YYDEBUG(845, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy846;
 	if (yych != 'b') goto yy56;
 yy846:
+	YYDEBUG(846, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy847;
 	if (yych != 'e') goto yy56;
 yy847:
+	YYDEBUG(847, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy848;
 	if (yych != 'r') goto yy56;
 yy848:
+	YYDEBUG(848, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy758;
 yy849:
+	YYDEBUG(849, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy850;
 	if (yych != 'v') goto yy56;
 yy850:
+	YYDEBUG(850, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy851;
 	if (yych != 'e') goto yy758;
 yy851:
+	YYDEBUG(851, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy852;
 	if (yych != 'm') goto yy56;
 yy852:
+	YYDEBUG(852, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy853;
 	if (yych != 'b') goto yy56;
 yy853:
+	YYDEBUG(853, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy854;
 	if (yych != 'e') goto yy56;
 yy854:
+	YYDEBUG(854, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy848;
 	if (yych == 'r') goto yy848;
 	goto yy56;
 yy855:
+	YYDEBUG(855, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy856;
 	if (yych != 't') goto yy56;
 yy856:
+	YYDEBUG(856, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'O') goto yy857;
 	if (yych != 'o') goto yy758;
 yy857:
+	YYDEBUG(857, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy858;
 	if (yych != 'b') goto yy56;
 yy858:
+	YYDEBUG(858, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy859;
 	if (yych != 'e') goto yy56;
 yy859:
+	YYDEBUG(859, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy848;
 	if (yych == 'r') goto yy848;
 	goto yy56;
 yy860:
+	YYDEBUG(860, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'P') {
 		if (yych == 'C') goto yy121;
@@ -12782,65 +13642,79 @@ yy860:
 		}
 	}
 yy861:
+	YYDEBUG(861, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy862;
 	if (yych != 't') goto yy758;
 yy862:
+	YYDEBUG(862, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy863;
 	if (yych != 'e') goto yy758;
 yy863:
+	YYDEBUG(863, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy864;
 	if (yych != 'm') goto yy56;
 yy864:
+	YYDEBUG(864, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy865;
 	if (yych != 'b') goto yy56;
 yy865:
+	YYDEBUG(865, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy866;
 	if (yych != 'e') goto yy56;
 yy866:
+	YYDEBUG(866, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy848;
 	if (yych == 'r') goto yy848;
 	goto yy56;
 yy867:
+	YYDEBUG(867, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy871;
 	if (yych == 'g') goto yy871;
 	goto yy56;
 yy868:
+	YYDEBUG(868, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy869;
 	if (yych != 'r') goto yy56;
 yy869:
+	YYDEBUG(869, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'I') goto yy870;
 	if (yych != 'i') goto yy758;
 yy870:
+	YYDEBUG(870, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'L') goto yy848;
 	if (yych == 'l') goto yy848;
 	goto yy56;
 yy871:
+	YYDEBUG(871, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'U') goto yy872;
 	if (yych != 'u') goto yy758;
 yy872:
+	YYDEBUG(872, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy873;
 	if (yych != 's') goto yy56;
 yy873:
+	YYDEBUG(873, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy848;
 	if (yych == 't') goto yy848;
 	goto yy56;
 yy874:
+	YYDEBUG(874, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy875;
@@ -12855,42 +13729,51 @@ yy874:
 		}
 	}
 yy875:
+	YYDEBUG(875, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'C') goto yy876;
 	if (yych != 'c') goto yy758;
 yy876:
+	YYDEBUG(876, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy848;
 	if (yych == 'h') goto yy848;
 	goto yy56;
 yy877:
+	YYDEBUG(877, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy878;
 	if (yych != 'b') goto yy56;
 yy878:
+	YYDEBUG(878, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'R') goto yy879;
 	if (yych != 'r') goto yy758;
 yy879:
+	YYDEBUG(879, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy880;
 	if (yych != 'u') goto yy56;
 yy880:
+	YYDEBUG(880, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy881;
 	if (yych != 'a') goto yy56;
 yy881:
+	YYDEBUG(881, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy882;
 	if (yych != 'r') goto yy56;
 yy882:
+	YYDEBUG(882, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy848;
 	if (yych == 'y') goto yy848;
 	goto yy56;
 yy883:
+	YYDEBUG(883, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy890;
@@ -12906,93 +13789,113 @@ yy883:
 		}
 	}
 yy884:
+	YYDEBUG(884, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy885;
 	if (yych != 'n') goto yy56;
 yy885:
+	YYDEBUG(885, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'U') goto yy886;
 	if (yych != 'u') goto yy758;
 yy886:
+	YYDEBUG(886, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy887;
 	if (yych != 'a') goto yy56;
 yy887:
+	YYDEBUG(887, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy888;
 	if (yych != 'r') goto yy56;
 yy888:
+	YYDEBUG(888, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy848;
 	if (yych == 'y') goto yy848;
 	goto yy56;
 yy889:
+	YYDEBUG(889, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy848;
 	if (yych == 'e') goto yy848;
 	goto yy758;
 yy890:
+	YYDEBUG(890, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy848;
 	if (yych == 'y') goto yy848;
 	goto yy758;
 yy891:
+	YYDEBUG(891, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy848;
 	goto yy758;
 yy892:
+	YYDEBUG(892, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'I') goto yy758;
+	YYDEBUG(893, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy848;
 	goto yy758;
 yy894:
+	YYDEBUG(894, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy848;
 	goto yy758;
 yy895:
+	YYDEBUG(895, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy910;
 	if (yych <= '9') goto yy909;
 	goto yy56;
 yy896:
+	YYDEBUG(896, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy908;
 	goto yy56;
 yy897:
+	YYDEBUG(897, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy906;
 	if (yych <= '6') goto yy905;
 	goto yy56;
 yy898:
+	YYDEBUG(898, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy877;
 	if (yych == 'e') goto yy877;
 	goto yy56;
 yy899:
+	YYDEBUG(899, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy874;
 	if (yych == 'a') goto yy874;
 	goto yy56;
 yy900:
+	YYDEBUG(900, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy904;
 	if (yych == 'e') goto yy904;
 	goto yy56;
 yy901:
+	YYDEBUG(901, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy842;
 	if (yych == 'e') goto yy842;
 	goto yy56;
 yy902:
+	YYDEBUG(902, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
 	yych = *YYCURSOR;
 yy903:
+	YYDEBUG(903, *YYCURSOR);
 	switch (yych) {
 	case '\t':
 	case ' ':
@@ -13020,53 +13923,64 @@ yy903:
 	default:	goto yy56;
 	}
 yy904:
+	YYDEBUG(904, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy861;
 	if (yych == 'p') goto yy861;
 	goto yy56;
 yy905:
+	YYDEBUG(905, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '6') goto yy907;
 	goto yy56;
 yy906:
+	YYDEBUG(906, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy907:
+	YYDEBUG(907, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy786;
 yy908:
+	YYDEBUG(908, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy907;
 	goto yy56;
 yy909:
+	YYDEBUG(909, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy907;
 	goto yy56;
 yy910:
+	YYDEBUG(910, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy56;
 	if (yych <= '9') goto yy907;
 	goto yy56;
 yy911:
+	YYDEBUG(911, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') goto yy56;
 	if (yych <= '/') goto yy914;
 	if (yych <= '9') goto yy922;
 	goto yy56;
 yy912:
+	YYDEBUG(912, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') goto yy56;
 	if (yych <= '/') goto yy914;
 	if (yych <= '2') goto yy922;
 	goto yy56;
 yy913:
+	YYDEBUG(913, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '/') goto yy56;
 yy914:
+	YYDEBUG(914, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy915;
@@ -13074,6 +13988,7 @@ yy914:
 	if (yych <= '9') goto yy917;
 	goto yy56;
 yy915:
+	YYDEBUG(915, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13092,6 +14007,7 @@ yy915:
 		}
 	}
 yy916:
+	YYDEBUG(916, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13110,6 +14026,7 @@ yy916:
 		}
 	}
 yy917:
+	YYDEBUG(917, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'q') {
@@ -13122,24 +14039,30 @@ yy917:
 		goto yy419;
 	}
 yy918:
+	YYDEBUG(918, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 't') goto yy418;
 	goto yy56;
 yy919:
+	YYDEBUG(919, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy418;
 	goto yy56;
 yy920:
+	YYDEBUG(920, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy418;
 	goto yy56;
 yy921:
+	YYDEBUG(921, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'h') goto yy418;
 	goto yy56;
 yy922:
+	YYDEBUG(922, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '/') goto yy56;
+	YYDEBUG(923, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy56;
@@ -13149,6 +14072,7 @@ yy922:
 		if (yych <= '9') goto yy917;
 		goto yy56;
 	}
+	YYDEBUG(924, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13167,6 +14091,7 @@ yy922:
 		}
 	}
 yy925:
+	YYDEBUG(925, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13185,6 +14110,7 @@ yy925:
 		}
 	}
 yy926:
+	YYDEBUG(926, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13203,6 +14129,7 @@ yy926:
 		}
 	}
 yy927:
+	YYDEBUG(927, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13220,6 +14147,7 @@ yy927:
 		}
 	}
 yy928:
+	YYDEBUG(928, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'A') goto yy1008;
@@ -13235,16 +14163,19 @@ yy928:
 		}
 	}
 yy929:
+	YYDEBUG(929, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1005;
 	if (yych == 'e') goto yy1005;
 	goto yy56;
 yy930:
+	YYDEBUG(930, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1002;
 	if (yych == 'a') goto yy1002;
 	goto yy56;
 yy931:
+	YYDEBUG(931, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'P') goto yy999;
@@ -13260,26 +14191,31 @@ yy931:
 		}
 	}
 yy932:
+	YYDEBUG(932, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy995;
 	if (yych == 'e') goto yy995;
 	goto yy56;
 yy933:
+	YYDEBUG(933, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy993;
 	if (yych == 'c') goto yy993;
 	goto yy56;
 yy934:
+	YYDEBUG(934, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy991;
 	if (yych == 'o') goto yy991;
 	goto yy56;
 yy935:
+	YYDEBUG(935, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy989;
 	if (yych == 'e') goto yy989;
 	goto yy56;
 yy936:
+	YYDEBUG(936, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '0') goto yy775;
@@ -13287,12 +14223,14 @@ yy936:
 	if (yych <= '5') goto yy777;
 	goto yy56;
 yy937:
+	YYDEBUG(937, *YYCURSOR);
 	yyaccept = 21;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '-') goto yy941;
 	if (yych <= '/') goto yy938;
 	if (yych <= '9') goto yy960;
 yy938:
+	YYDEBUG(938, *YYCURSOR);
 	{
 		int length = 0;
 		DEBUG_OUTPUT("gnudateshorter");
@@ -13306,6 +14244,7 @@ yy938:
 		return TIMELIB_ISO_DATE;
 	}
 yy939:
+	YYDEBUG(939, *YYCURSOR);
 	yyaccept = 21;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '-') goto yy941;
@@ -13313,10 +14252,12 @@ yy939:
 	if (yych <= '2') goto yy960;
 	goto yy938;
 yy940:
+	YYDEBUG(940, *YYCURSOR);
 	yyaccept = 21;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych != '-') goto yy938;
 yy941:
+	YYDEBUG(941, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '2') goto yy942;
@@ -13324,6 +14265,7 @@ yy941:
 	if (yych <= '9') goto yy944;
 	goto yy56;
 yy942:
+	YYDEBUG(942, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'm') {
@@ -13346,6 +14288,7 @@ yy942:
 		}
 	}
 yy943:
+	YYDEBUG(943, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'm') {
@@ -13367,6 +14310,7 @@ yy943:
 		}
 	}
 yy944:
+	YYDEBUG(944, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13384,22 +14328,27 @@ yy944:
 		}
 	}
 yy945:
+	YYDEBUG(945, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 't') goto yy959;
 	goto yy56;
 yy946:
+	YYDEBUG(946, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy959;
 	goto yy56;
 yy947:
+	YYDEBUG(947, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'd') goto yy959;
 	goto yy56;
 yy948:
+	YYDEBUG(948, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'h') goto yy959;
 	goto yy56;
 yy949:
+	YYDEBUG(949, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy950;
@@ -13407,36 +14356,43 @@ yy949:
 	if (yych <= '9') goto yy952;
 	goto yy56;
 yy950:
+	YYDEBUG(950, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy952;
 	if (yych <= ':') goto yy953;
 	goto yy56;
 yy951:
+	YYDEBUG(951, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '4') goto yy952;
 	if (yych == ':') goto yy953;
 	goto yy56;
 yy952:
+	YYDEBUG(952, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
 yy953:
+	YYDEBUG(953, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy954;
 	if (yych <= '9') goto yy955;
 	goto yy56;
 yy954:
+	YYDEBUG(954, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy955;
 	if (yych <= ':') goto yy956;
 	goto yy56;
 yy955:
+	YYDEBUG(955, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
 yy956:
+	YYDEBUG(956, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy957;
@@ -13444,23 +14400,28 @@ yy956:
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy957:
+	YYDEBUG(957, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '9') goto yy806;
 	goto yy807;
 yy958:
+	YYDEBUG(958, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '0') goto yy806;
 	goto yy807;
 yy959:
+	YYDEBUG(959, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'T') goto yy949;
 	goto yy621;
 yy960:
+	YYDEBUG(960, *YYCURSOR);
 	yyaccept = 21;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych != '-') goto yy938;
+	YYDEBUG(961, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy56;
@@ -13470,6 +14431,7 @@ yy960:
 		if (yych <= '9') goto yy944;
 		goto yy56;
 	}
+	YYDEBUG(962, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'm') {
@@ -13492,6 +14454,7 @@ yy960:
 		}
 	}
 yy963:
+	YYDEBUG(963, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'm') {
@@ -13514,6 +14477,7 @@ yy963:
 		}
 	}
 yy964:
+	YYDEBUG(964, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'm') {
@@ -13535,6 +14499,7 @@ yy964:
 		}
 	}
 yy965:
+	YYDEBUG(965, *YYCURSOR);
 	yyaccept = 20;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -13552,6 +14517,7 @@ yy965:
 		}
 	}
 yy966:
+	YYDEBUG(966, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy967;
@@ -13559,34 +14525,41 @@ yy966:
 	if (yych <= '9') goto yy952;
 	goto yy56;
 yy967:
+	YYDEBUG(967, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy969;
 	if (yych <= ':') goto yy953;
 	goto yy56;
 yy968:
+	YYDEBUG(968, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '4') goto yy969;
 	if (yych == ':') goto yy953;
 	goto yy56;
 yy969:
+	YYDEBUG(969, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(970, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy971;
 	if (yych <= '9') goto yy955;
 	goto yy56;
 yy971:
+	YYDEBUG(971, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '9') goto yy972;
 	if (yych <= ':') goto yy956;
 	goto yy56;
 yy972:
+	YYDEBUG(972, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy56;
+	YYDEBUG(973, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy974;
@@ -13594,25 +14567,31 @@ yy972:
 	if (yych <= '9') goto yy806;
 	goto yy56;
 yy974:
+	YYDEBUG(974, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '9') goto yy976;
 	goto yy807;
 yy975:
+	YYDEBUG(975, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '0') goto yy807;
 yy976:
+	YYDEBUG(976, *YYCURSOR);
 	yyaccept = 22;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych != '.') goto yy807;
+	YYDEBUG(977, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
 yy978:
+	YYDEBUG(978, *YYCURSOR);
 	yyaccept = 22;
 	YYMARKER = ++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
 	yych = *YYCURSOR;
+	YYDEBUG(979, *YYCURSOR);
 	if (yych <= '-') {
 		if (yych == '+') goto yy981;
 		if (yych <= ',') goto yy807;
@@ -13625,10 +14604,12 @@ yy978:
 			if (yych != 'G') goto yy807;
 		}
 	}
+	YYDEBUG(980, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'M') goto yy987;
 	goto yy56;
 yy981:
+	YYDEBUG(981, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy982;
@@ -13636,12 +14617,14 @@ yy981:
 	if (yych <= '9') goto yy984;
 	goto yy56;
 yy982:
+	YYDEBUG(982, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '9') goto yy984;
 	if (yych <= ':') goto yy985;
 	goto yy807;
 yy983:
+	YYDEBUG(983, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '5') {
 		if (yych <= '/') goto yy807;
@@ -13652,34 +14635,41 @@ yy983:
 		goto yy807;
 	}
 yy984:
+	YYDEBUG(984, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '5') goto yy986;
 	if (yych <= '9') goto yy806;
 	if (yych >= ';') goto yy807;
 yy985:
+	YYDEBUG(985, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '5') goto yy986;
 	if (yych <= '9') goto yy806;
 	goto yy807;
 yy986:
+	YYDEBUG(986, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy807;
 	if (yych <= '9') goto yy806;
 	goto yy807;
 yy987:
+	YYDEBUG(987, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'T') goto yy56;
+	YYDEBUG(988, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '+') goto yy981;
 	if (yych == '-') goto yy981;
 	goto yy56;
 yy989:
+	YYDEBUG(989, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy990;
 	if (yych != 'c') goto yy56;
 yy990:
+	YYDEBUG(990, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -13691,10 +14681,12 @@ yy990:
 		goto yy758;
 	}
 yy991:
+	YYDEBUG(991, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'V') goto yy992;
 	if (yych != 'v') goto yy56;
 yy992:
+	YYDEBUG(992, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -13706,10 +14698,12 @@ yy992:
 		goto yy758;
 	}
 yy993:
+	YYDEBUG(993, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy994;
 	if (yych != 't') goto yy56;
 yy994:
+	YYDEBUG(994, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -13721,10 +14715,12 @@ yy994:
 		goto yy758;
 	}
 yy995:
+	YYDEBUG(995, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'P') goto yy996;
 	if (yych != 'p') goto yy56;
 yy996:
+	YYDEBUG(996, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -13735,6 +14731,7 @@ yy996:
 		if (yych != 't') goto yy758;
 	}
 yy997:
+	YYDEBUG(997, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -13746,15 +14743,18 @@ yy997:
 		goto yy758;
 	}
 yy998:
+	YYDEBUG(998, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy1001;
 	if (yych == 'g') goto yy1001;
 	goto yy56;
 yy999:
+	YYDEBUG(999, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1000;
 	if (yych != 'r') goto yy56;
 yy1000:
+	YYDEBUG(1000, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'H') {
@@ -13766,6 +14766,7 @@ yy1000:
 		goto yy758;
 	}
 yy1001:
+	YYDEBUG(1001, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -13777,6 +14778,7 @@ yy1001:
 		goto yy758;
 	}
 yy1002:
+	YYDEBUG(1002, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych == 'R') goto yy1003;
@@ -13791,6 +14793,7 @@ yy1002:
 		}
 	}
 yy1003:
+	YYDEBUG(1003, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'B') {
@@ -13802,15 +14805,18 @@ yy1003:
 		goto yy758;
 	}
 yy1004:
+	YYDEBUG(1004, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '-') goto yy731;
 	goto yy758;
 yy1005:
+	YYDEBUG(1005, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'B') goto yy1006;
 	if (yych != 'b') goto yy56;
 yy1006:
+	YYDEBUG(1006, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -13822,6 +14828,7 @@ yy1006:
 		goto yy758;
 	}
 yy1007:
+	YYDEBUG(1007, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'L') goto yy1011;
@@ -13837,10 +14844,12 @@ yy1007:
 		}
 	}
 yy1008:
+	YYDEBUG(1008, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1009;
 	if (yych != 'n') goto yy56;
 yy1009:
+	YYDEBUG(1009, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -13852,6 +14861,7 @@ yy1009:
 		goto yy758;
 	}
 yy1010:
+	YYDEBUG(1010, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -13863,6 +14873,7 @@ yy1010:
 		goto yy758;
 	}
 yy1011:
+	YYDEBUG(1011, *YYCURSOR);
 	yyaccept = 19;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -13874,6 +14885,7 @@ yy1011:
 		goto yy758;
 	}
 yy1012:
+	YYDEBUG(1012, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= '\t') {
@@ -13895,6 +14907,7 @@ yy1012:
 		}
 	}
 yy1013:
+	YYDEBUG(1013, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'P') {
 		if (yych == 'C') goto yy121;
@@ -13910,6 +14923,7 @@ yy1013:
 		}
 	}
 yy1014:
+	YYDEBUG(1014, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= ',') {
@@ -13933,6 +14947,7 @@ yy1014:
 		}
 	}
 yy1015:
+	YYDEBUG(1015, *YYCURSOR);
 	yych = *++YYCURSOR;
 	switch (yych) {
 	case '0':	goto yy1019;
@@ -13964,6 +14979,7 @@ yy1015:
 	default:	goto yy542;
 	}
 yy1016:
+	YYDEBUG(1016, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy1018;
 	if (yych <= '0') goto yy700;
@@ -13971,10 +14987,12 @@ yy1016:
 	if (yych <= '9') goto yy702;
 	goto yy1018;
 yy1017:
+	YYDEBUG(1017, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
 	yych = *YYCURSOR;
 yy1018:
+	YYDEBUG(1018, *YYCURSOR);
 	if (yych <= 'W') {
 		if (yych <= 'G') {
 			if (yych <= '.') {
@@ -14067,6 +15085,7 @@ yy1018:
 		}
 	}
 yy1019:
+	YYDEBUG(1019, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -14078,6 +15097,7 @@ yy1019:
 		goto yy56;
 	}
 yy1020:
+	YYDEBUG(1020, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '.') {
 		if (yych <= ',') goto yy56;
@@ -14088,12 +15108,14 @@ yy1020:
 		if (yych >= '3') goto yy56;
 	}
 yy1021:
+	YYDEBUG(1021, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= ',') goto yy56;
 	if (yych <= '-') goto yy1022;
 	if (yych <= '.') goto yy566;
 	goto yy56;
 yy1022:
+	YYDEBUG(1022, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '2') {
 		if (yych <= '/') goto yy56;
@@ -14103,6 +15125,7 @@ yy1022:
 		if (yych <= '9') goto yy623;
 		goto yy56;
 	}
+	YYDEBUG(1023, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -14121,6 +15144,7 @@ yy1022:
 		}
 	}
 yy1024:
+	YYDEBUG(1024, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -14139,6 +15163,7 @@ yy1024:
 		}
 	}
 yy1025:
+	YYDEBUG(1025, *YYCURSOR);
 	yyaccept = 12;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -14160,6 +15185,7 @@ yy1025:
 		}
 	}
 yy1026:
+	YYDEBUG(1026, *YYCURSOR);
 	yyaccept = 14;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'n') {
@@ -14178,6 +15204,7 @@ yy1026:
 		}
 	}
 yy1027:
+	YYDEBUG(1027, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= '-') {
@@ -14203,6 +15230,7 @@ yy1027:
 		}
 	}
 yy1028:
+	YYDEBUG(1028, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '1') {
 		if (yych <= '/') goto yy542;
@@ -14214,16 +15242,19 @@ yy1028:
 		goto yy542;
 	}
 yy1029:
+	YYDEBUG(1029, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy1047;
 	if (yych <= '9') goto yy1048;
 	goto yy56;
 yy1030:
+	YYDEBUG(1030, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '-') goto yy749;
 	if (yych <= '/') goto yy60;
 	if (yych >= ':') goto yy60;
+	YYDEBUG(1031, *YYCURSOR);
 	yyaccept = 23;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -14303,6 +15334,7 @@ yy1030:
 		}
 	}
 yy1032:
+	YYDEBUG(1032, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("gnunocolon");
 		TIMELIB_INIT;
@@ -14325,23 +15357,27 @@ yy1032:
 		return TIMELIB_GNU_NOCOLON;
 	}
 yy1033:
+	YYDEBUG(1033, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '0') goto yy1045;
 	if (yych <= '9') goto yy1046;
 	goto yy60;
 yy1034:
+	YYDEBUG(1034, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '2') goto yy1044;
 	if (yych <= '9') goto yy1043;
 	goto yy60;
 yy1035:
+	YYDEBUG(1035, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy1043;
 	goto yy60;
 yy1036:
+	YYDEBUG(1036, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '5') goto yy1041;
@@ -14349,17 +15385,20 @@ yy1036:
 	if (yych <= '9') goto yy1039;
 	goto yy60;
 yy1037:
+	YYDEBUG(1037, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '9') goto yy1039;
 	goto yy60;
 yy1038:
+	YYDEBUG(1038, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy60;
 	if (yych <= '0') goto yy1039;
 	if (yych <= '9') goto yy54;
 	goto yy60;
 yy1039:
+	YYDEBUG(1039, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 2) {
@@ -14413,6 +15452,7 @@ yy1039:
 		}
 	}
 yy1040:
+	YYDEBUG(1040, *YYCURSOR);
 	{
 		int tz_not_found;
 		DEBUG_OUTPUT("iso8601nocolon");
@@ -14432,6 +15472,7 @@ yy1040:
 		return TIMELIB_ISO_NOCOLON;
 	}
 yy1041:
+	YYDEBUG(1041, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -14500,6 +15541,7 @@ yy1041:
 		}
 	}
 yy1042:
+	YYDEBUG(1042, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -14573,6 +15615,7 @@ yy1042:
 		}
 	}
 yy1043:
+	YYDEBUG(1043, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -14641,6 +15684,7 @@ yy1043:
 		}
 	}
 yy1044:
+	YYDEBUG(1044, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -14724,6 +15768,7 @@ yy1044:
 		}
 	}
 yy1045:
+	YYDEBUG(1045, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -14807,6 +15852,7 @@ yy1045:
 		}
 	}
 yy1046:
+	YYDEBUG(1046, *YYCURSOR);
 	yyaccept = 24;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -14890,6 +15936,7 @@ yy1046:
 		}
 	}
 yy1047:
+	YYDEBUG(1047, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -14901,11 +15948,13 @@ yy1047:
 		goto yy455;
 	}
 yy1048:
+	YYDEBUG(1048, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy1049;
 	if (yych != ':') goto yy455;
 yy1049:
+	YYDEBUG(1049, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy1050;
@@ -14913,6 +15962,7 @@ yy1049:
 	if (yych <= '9') goto yy460;
 	goto yy56;
 yy1050:
+	YYDEBUG(1050, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -14920,12 +15970,14 @@ yy1050:
 	if (yych <= '9') goto yy460;
 	goto yy455;
 yy1051:
+	YYDEBUG(1051, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
 	if (yych == '0') goto yy460;
 	goto yy455;
 yy1052:
+	YYDEBUG(1052, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -14939,6 +15991,7 @@ yy1052:
 		goto yy455;
 	}
 yy1053:
+	YYDEBUG(1053, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -14953,6 +16006,7 @@ yy1053:
 		goto yy455;
 	}
 yy1054:
+	YYDEBUG(1054, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -14966,6 +16020,7 @@ yy1054:
 		goto yy455;
 	}
 yy1055:
+	YYDEBUG(1055, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -14976,6 +16031,7 @@ yy1055:
 		goto yy455;
 	}
 yy1056:
+	YYDEBUG(1056, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '5') goto yy1057;
@@ -14983,6 +16039,7 @@ yy1056:
 	if (yych <= '9') goto yy574;
 	goto yy56;
 yy1057:
+	YYDEBUG(1057, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -14990,6 +16047,7 @@ yy1057:
 	if (yych <= '9') goto yy1059;
 	goto yy455;
 yy1058:
+	YYDEBUG(1058, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -15001,6 +16059,7 @@ yy1058:
 		goto yy455;
 	}
 yy1059:
+	YYDEBUG(1059, *YYCURSOR);
 	yyaccept = 10;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '.') goto yy461;
@@ -15008,6 +16067,7 @@ yy1059:
 	if (yych <= '9') goto yy569;
 	goto yy455;
 yy1060:
+	YYDEBUG(1060, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= '-') {
@@ -15033,6 +16093,7 @@ yy1060:
 		}
 	}
 yy1061:
+	YYDEBUG(1061, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '9') {
 		if (yych <= '-') {
@@ -15058,6 +16119,7 @@ yy1061:
 		}
 	}
 yy1062:
+	YYDEBUG(1062, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -15079,6 +16141,7 @@ yy1062:
 		}
 	}
 yy1063:
+	YYDEBUG(1063, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'V') {
 		if (yych <= ')') {
@@ -15100,6 +16163,7 @@ yy1063:
 		}
 	}
 yy1064:
+	YYDEBUG(1064, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'I') {
 		if (yych <= ')') {
@@ -15121,6 +16185,7 @@ yy1064:
 		}
 	}
 yy1065:
+	YYDEBUG(1065, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= ')') {
@@ -15142,6 +16207,7 @@ yy1065:
 		}
 	}
 yy1066:
+	YYDEBUG(1066, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -15152,18 +16218,22 @@ yy1066:
 		if (yych != 'u') goto yy3;
 	}
 yy1067:
+	YYDEBUG(1067, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1068;
 	if (yych != 's') goto yy56;
 yy1068:
+	YYDEBUG(1068, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '\t') goto yy1069;
 	if (yych != ' ') goto yy56;
 yy1069:
+	YYDEBUG(1069, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
 	yych = *YYCURSOR;
 yy1070:
+	YYDEBUG(1070, *YYCURSOR);
 	if (yych <= 'X') {
 		if (yych <= 'G') {
 			if (yych <= ' ') {
@@ -15240,6 +16310,7 @@ yy1070:
 		}
 	}
 yy1071:
+	YYDEBUG(1071, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= 'N') {
@@ -15261,15 +16332,18 @@ yy1071:
 		}
 	}
 yy1072:
+	YYDEBUG(1072, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 0xB5) goto yy1151;
 	goto yy56;
 yy1073:
+	YYDEBUG(1073, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1149;
 	if (yych == 's') goto yy1149;
 	goto yy56;
 yy1074:
+	YYDEBUG(1074, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= 'D') {
@@ -15291,16 +16365,19 @@ yy1074:
 		}
 	}
 yy1075:
+	YYDEBUG(1075, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy1133;
 	if (yych == 'o') goto yy1133;
 	goto yy56;
 yy1076:
+	YYDEBUG(1076, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1132;
 	if (yych == 'a') goto yy1132;
 	goto yy56;
 yy1077:
+	YYDEBUG(1077, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych == 'O') goto yy1117;
@@ -15316,16 +16393,19 @@ yy1077:
 		}
 	}
 yy1078:
+	YYDEBUG(1078, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1113;
 	if (yych == 'e') goto yy1113;
 	goto yy56;
 yy1079:
+	YYDEBUG(1079, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1099;
 	if (yych == 'e') goto yy1099;
 	goto yy56;
 yy1080:
+	YYDEBUG(1080, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych == 'H') goto yy1081;
@@ -15340,15 +16420,18 @@ yy1080:
 		}
 	}
 yy1081:
+	YYDEBUG(1081, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy1094;
 	if (yych == 'u') goto yy1094;
 	goto yy56;
 yy1082:
+	YYDEBUG(1082, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1083;
 	if (yych != 'e') goto yy56;
 yy1083:
+	YYDEBUG(1083, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15362,6 +16445,7 @@ yy1083:
 		}
 	}
 yy1084:
+	YYDEBUG(1084, *YYCURSOR);
 	{
 		timelib_sll i;
 		int         behavior = 0;
@@ -15378,9 +16462,11 @@ yy1084:
 		return TIMELIB_RELATIVE;
 	}
 yy1085:
+	YYDEBUG(1085, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
+	YYDEBUG(1086, *YYCURSOR);
 	if (yych <= ' ') {
 		if (yych == '\t') goto yy1085;
 		if (yych <= 0x1F) goto yy56;
@@ -15395,29 +16481,36 @@ yy1085:
 		}
 	}
 yy1087:
+	YYDEBUG(1087, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1088;
 	if (yych != 'd') goto yy56;
 yy1088:
+	YYDEBUG(1088, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1089;
 	if (yych != 'a') goto yy56;
 yy1089:
+	YYDEBUG(1089, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych != 'y') goto yy56;
 yy1090:
+	YYDEBUG(1090, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == '\t') goto yy1085;
 	if (yych == ' ') goto yy1085;
 	goto yy1084;
 yy1091:
+	YYDEBUG(1091, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'F') goto yy1092;
 	if (yych != 'f') goto yy56;
 yy1092:
+	YYDEBUG(1092, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(1093, *YYCURSOR);
 	{
 		timelib_sll i;
 		int         behavior = 0;
@@ -15439,6 +16532,7 @@ yy1092:
 		return TIMELIB_WEEK_DAY_OF_MONTH;
 	}
 yy1094:
+	YYDEBUG(1094, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15452,23 +16546,28 @@ yy1094:
 			if (yych != 'r') goto yy1084;
 		}
 	}
+	YYDEBUG(1095, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1096;
 	if (yych != 's') goto yy56;
 yy1096:
+	YYDEBUG(1096, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1097;
 	if (yych != 'd') goto yy56;
 yy1097:
+	YYDEBUG(1097, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1098;
 	if (yych != 'a') goto yy56;
 yy1098:
+	YYDEBUG(1098, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1099:
+	YYDEBUG(1099, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= 'C') goto yy56;
@@ -15478,11 +16577,13 @@ yy1099:
 		if (yych <= 'd') goto yy1101;
 		if (yych >= 'f') goto yy56;
 	}
+	YYDEBUG(1100, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'K') goto yy1107;
 	if (yych == 'k') goto yy1107;
 	goto yy56;
 yy1101:
+	YYDEBUG(1101, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15496,27 +16597,33 @@ yy1101:
 			if (yych != 'n') goto yy1084;
 		}
 	}
+	YYDEBUG(1102, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1103;
 	if (yych != 'e') goto yy56;
 yy1103:
+	YYDEBUG(1103, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1104;
 	if (yych != 's') goto yy56;
 yy1104:
+	YYDEBUG(1104, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1105;
 	if (yych != 'd') goto yy56;
 yy1105:
+	YYDEBUG(1105, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1106;
 	if (yych != 'a') goto yy56;
 yy1106:
+	YYDEBUG(1106, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1107:
+	YYDEBUG(1107, *YYCURSOR);
 	yyaccept = 26;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -15530,6 +16637,7 @@ yy1107:
 		}
 	}
 yy1108:
+	YYDEBUG(1108, *YYCURSOR);
 	{
 		timelib_sll i;
 		int         behavior = 0;
@@ -15553,48 +16661,59 @@ yy1108:
 		return TIMELIB_RELATIVE;
 	}
 yy1109:
+	YYDEBUG(1109, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy1084;
 yy1110:
+	YYDEBUG(1110, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1111;
 	if (yych != 'a') goto yy56;
 yy1111:
+	YYDEBUG(1111, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1112;
 	if (yych != 'y') goto yy56;
 yy1112:
+	YYDEBUG(1112, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1109;
 	if (yych == 's') goto yy1109;
 	goto yy1084;
 yy1113:
+	YYDEBUG(1113, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1114;
 	if (yych != 'a') goto yy56;
 yy1114:
+	YYDEBUG(1114, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1115;
 	if (yych != 'r') goto yy56;
 yy1115:
+	YYDEBUG(1115, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1109;
 	if (yych == 's') goto yy1109;
 	goto yy1084;
 yy1116:
+	YYDEBUG(1116, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy1129;
 	if (yych == 'i') goto yy1129;
 	goto yy56;
 yy1117:
+	YYDEBUG(1117, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1118;
 	if (yych != 'r') goto yy56;
 yy1118:
+	YYDEBUG(1118, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy1119;
 	if (yych != 't') goto yy56;
 yy1119:
+	YYDEBUG(1119, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych == 'H') goto yy1121;
@@ -15607,45 +16726,55 @@ yy1119:
 			if (yych != 'n') goto yy56;
 		}
 	}
+	YYDEBUG(1120, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy1126;
 	if (yych == 'i') goto yy1126;
 	goto yy56;
 yy1121:
+	YYDEBUG(1121, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1122;
 	if (yych != 'n') goto yy56;
 yy1122:
+	YYDEBUG(1122, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy1123;
 	if (yych != 'i') goto yy56;
 yy1123:
+	YYDEBUG(1123, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy1124;
 	if (yych != 'g') goto yy56;
 yy1124:
+	YYDEBUG(1124, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy1125;
 	if (yych != 'h') goto yy56;
 yy1125:
+	YYDEBUG(1125, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy1115;
 	if (yych == 't') goto yy1115;
 	goto yy56;
 yy1126:
+	YYDEBUG(1126, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'G') goto yy1127;
 	if (yych != 'g') goto yy56;
 yy1127:
+	YYDEBUG(1127, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy1128;
 	if (yych != 'h') goto yy56;
 yy1128:
+	YYDEBUG(1128, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy1115;
 	if (yych == 't') goto yy1115;
 	goto yy56;
 yy1129:
+	YYDEBUG(1129, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15659,43 +16788,52 @@ yy1129:
 			if (yych != 'd') goto yy1084;
 		}
 	}
+	YYDEBUG(1130, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1131;
 	if (yych != 'a') goto yy56;
 yy1131:
+	YYDEBUG(1131, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1132:
+	YYDEBUG(1132, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1115;
 	if (yych == 'y') goto yy1115;
 	goto yy56;
 yy1133:
+	YYDEBUG(1133, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'U') goto yy1134;
 	if (yych != 'u') goto yy56;
 yy1134:
+	YYDEBUG(1134, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1115;
 	if (yych == 'r') goto yy1115;
 	goto yy56;
 yy1135:
+	YYDEBUG(1135, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1146;
 	if (yych == 'n') goto yy1146;
 	goto yy56;
 yy1136:
+	YYDEBUG(1136, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy1141;
 	if (yych == 't') goto yy1141;
 	goto yy56;
 yy1137:
+	YYDEBUG(1137, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1138;
 	if (yych != 'c') goto yy56;
 yy1138:
+	YYDEBUG(1138, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -15711,15 +16849,18 @@ yy1138:
 		}
 	}
 yy1139:
+	YYDEBUG(1139, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1140;
 	if (yych != 'n') goto yy56;
 yy1140:
+	YYDEBUG(1140, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1115;
 	if (yych == 'd') goto yy1115;
 	goto yy56;
 yy1141:
+	YYDEBUG(1141, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15733,23 +16874,28 @@ yy1141:
 			if (yych != 'u') goto yy1084;
 		}
 	}
+	YYDEBUG(1142, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1143;
 	if (yych != 'r') goto yy56;
 yy1143:
+	YYDEBUG(1143, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1144;
 	if (yych != 'd') goto yy56;
 yy1144:
+	YYDEBUG(1144, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1145;
 	if (yych != 'a') goto yy56;
 yy1145:
+	YYDEBUG(1145, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1146:
+	YYDEBUG(1146, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ' ') {
@@ -15763,43 +16909,52 @@ yy1146:
 			if (yych != 'd') goto yy1084;
 		}
 	}
+	YYDEBUG(1147, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1148;
 	if (yych != 'a') goto yy56;
 yy1148:
+	YYDEBUG(1148, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1149:
+	YYDEBUG(1149, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1150;
 	if (yych != 'e') goto yy56;
 yy1150:
+	YYDEBUG(1150, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1115;
 	if (yych == 'c') goto yy1115;
 	goto yy56;
 yy1151:
+	YYDEBUG(1151, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1152;
 	if (yych != 's') goto yy56;
 yy1152:
+	YYDEBUG(1152, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy1153;
 	if (yych != 'e') goto yy1084;
 yy1153:
+	YYDEBUG(1153, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1115;
 	if (yych == 'c') goto yy1115;
 	goto yy56;
 yy1154:
+	YYDEBUG(1154, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1177;
 	if (yych == 'n') goto yy1177;
 	goto yy56;
 yy1155:
+	YYDEBUG(1155, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= 'K') {
@@ -15821,26 +16976,31 @@ yy1155:
 		}
 	}
 yy1156:
+	YYDEBUG(1156, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych == 'E') goto yy1157;
 	if (yych != 'e') goto yy1084;
 yy1157:
+	YYDEBUG(1157, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1115;
 	if (yych == 'c') goto yy1115;
 	goto yy56;
 yy1158:
+	YYDEBUG(1158, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'L') goto yy1170;
 	if (yych == 'l') goto yy1170;
 	goto yy56;
 yy1159:
+	YYDEBUG(1159, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy1163;
 	if (yych == 'r') goto yy1163;
 	goto yy56;
 yy1160:
+	YYDEBUG(1160, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'U') {
@@ -15854,73 +17014,90 @@ yy1160:
 			if (yych != 'u') goto yy1084;
 		}
 	}
+	YYDEBUG(1161, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy1162;
 	if (yych != 't') goto yy56;
 yy1162:
+	YYDEBUG(1162, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1115;
 	if (yych == 'e') goto yy1115;
 	goto yy56;
 yy1163:
+	YYDEBUG(1163, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy1164;
 	if (yych != 'o') goto yy56;
 yy1164:
+	YYDEBUG(1164, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1165;
 	if (yych != 's') goto yy56;
 yy1165:
+	YYDEBUG(1165, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1166;
 	if (yych != 'e') goto yy56;
 yy1166:
+	YYDEBUG(1166, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1167;
 	if (yych != 'c') goto yy56;
 yy1167:
+	YYDEBUG(1167, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy1168;
 	if (yych != 'o') goto yy56;
 yy1168:
+	YYDEBUG(1168, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1169;
 	if (yych != 'n') goto yy56;
 yy1169:
+	YYDEBUG(1169, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1115;
 	if (yych == 'd') goto yy1115;
 	goto yy56;
 yy1170:
+	YYDEBUG(1170, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'I') goto yy1171;
 	if (yych != 'i') goto yy56;
 yy1171:
+	YYDEBUG(1171, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1172;
 	if (yych != 's') goto yy56;
 yy1172:
+	YYDEBUG(1172, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1173;
 	if (yych != 'e') goto yy56;
 yy1173:
+	YYDEBUG(1173, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'C') goto yy1174;
 	if (yych != 'c') goto yy56;
 yy1174:
+	YYDEBUG(1174, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy1175;
 	if (yych != 'o') goto yy56;
 yy1175:
+	YYDEBUG(1175, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'N') goto yy1176;
 	if (yych != 'n') goto yy56;
 yy1176:
+	YYDEBUG(1176, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'D') goto yy1115;
 	if (yych == 'd') goto yy1115;
 	goto yy56;
 yy1177:
+	YYDEBUG(1177, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -15942,21 +17119,25 @@ yy1177:
 		}
 	}
 yy1178:
+	YYDEBUG(1178, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'A') goto yy1180;
 	if (yych == 'a') goto yy1180;
 	goto yy56;
 yy1179:
+	YYDEBUG(1179, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy1115;
 	if (yych == 'h') goto yy1115;
 	goto yy56;
 yy1180:
+	YYDEBUG(1180, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy1090;
 	if (yych == 'y') goto yy1090;
 	goto yy56;
 yy1181:
+	YYDEBUG(1181, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -15987,6 +17168,7 @@ yy1181:
 		}
 	}
 yy1182:
+	YYDEBUG(1182, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'U') {
@@ -16017,6 +17199,7 @@ yy1182:
 		}
 	}
 yy1183:
+	YYDEBUG(1183, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'H') {
@@ -16047,6 +17230,7 @@ yy1183:
 		}
 	}
 yy1184:
+	YYDEBUG(1184, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -16077,6 +17261,7 @@ yy1184:
 		}
 	}
 yy1185:
+	YYDEBUG(1185, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -16100,9 +17285,11 @@ yy1185:
 		}
 	}
 yy1186:
+	YYDEBUG(1186, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'S') goto yy1068;
 	if (yych != 's') goto yy179;
+	YYDEBUG(1187, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 16) {
 		goto yy178;
@@ -16125,6 +17312,7 @@ yy1186:
 		}
 	}
 yy1188:
+	YYDEBUG(1188, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'G') {
 		if (yych <= ')') {
@@ -16147,6 +17335,7 @@ yy1188:
 		}
 	}
 yy1189:
+	YYDEBUG(1189, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -16168,6 +17357,7 @@ yy1189:
 		}
 	}
 yy1190:
+	YYDEBUG(1190, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'V') {
 		if (yych <= ')') {
@@ -16189,6 +17379,7 @@ yy1190:
 		}
 	}
 yy1191:
+	YYDEBUG(1191, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -16210,6 +17401,7 @@ yy1191:
 		}
 	}
 yy1192:
+	YYDEBUG(1192, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -16231,6 +17423,7 @@ yy1192:
 		}
 	}
 yy1193:
+	YYDEBUG(1193, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -16241,18 +17434,22 @@ yy1193:
 		if (yych != 't') goto yy3;
 	}
 yy1194:
+	YYDEBUG(1194, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy1195;
 	if (yych != 'h') goto yy56;
 yy1195:
+	YYDEBUG(1195, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '\t') goto yy1196;
 	if (yych != ' ') goto yy56;
 yy1196:
+	YYDEBUG(1196, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
 	yych = *YYCURSOR;
 yy1197:
+	YYDEBUG(1197, *YYCURSOR);
 	if (yych <= 'X') {
 		if (yych <= 'G') {
 			if (yych <= ' ') {
@@ -16327,10 +17524,12 @@ yy1197:
 			}
 		}
 	}
+	YYDEBUG(1198, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1199;
 	if (yych != 'e') goto yy56;
 yy1199:
+	YYDEBUG(1199, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= 'C') goto yy56;
@@ -16340,10 +17539,12 @@ yy1199:
 		if (yych <= 'd') goto yy1101;
 		if (yych >= 'f') goto yy56;
 	}
+	YYDEBUG(1200, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'K') goto yy1201;
 	if (yych != 'k') goto yy56;
 yy1201:
+	YYDEBUG(1201, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych == 'D') goto yy1110;
@@ -16359,6 +17560,7 @@ yy1201:
 		}
 	}
 yy1202:
+	YYDEBUG(1202, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -16380,6 +17582,7 @@ yy1202:
 		}
 	}
 yy1203:
+	YYDEBUG(1203, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -16401,6 +17604,7 @@ yy1203:
 		}
 	}
 yy1204:
+	YYDEBUG(1204, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -16424,6 +17628,7 @@ yy1204:
 		}
 	}
 yy1205:
+	YYDEBUG(1205, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 0x1F) {
@@ -16435,6 +17640,7 @@ yy1205:
 		goto yy3;
 	}
 yy1206:
+	YYDEBUG(1206, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'F') {
@@ -16465,6 +17671,7 @@ yy1206:
 		}
 	}
 yy1207:
+	YYDEBUG(1207, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -16495,6 +17702,7 @@ yy1207:
 		}
 	}
 yy1208:
+	YYDEBUG(1208, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'U') {
@@ -16525,6 +17733,7 @@ yy1208:
 		}
 	}
 yy1209:
+	YYDEBUG(1209, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -16555,6 +17764,7 @@ yy1209:
 		}
 	}
 yy1210:
+	YYDEBUG(1210, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -16585,6 +17795,7 @@ yy1210:
 		}
 	}
 yy1211:
+	YYDEBUG(1211, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -16608,10 +17819,12 @@ yy1211:
 		}
 	}
 yy1212:
+	YYDEBUG(1212, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'H') goto yy1195;
 	if (yych != 'h') goto yy179;
 yy1213:
+	YYDEBUG(1213, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 16) {
 		goto yy178;
@@ -16634,6 +17847,7 @@ yy1213:
 		}
 	}
 yy1214:
+	YYDEBUG(1214, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -16664,6 +17878,7 @@ yy1214:
 		}
 	}
 yy1215:
+	YYDEBUG(1215, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -16694,6 +17909,7 @@ yy1215:
 		}
 	}
 yy1216:
+	YYDEBUG(1216, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -16737,6 +17953,7 @@ yy1216:
 		}
 	}
 yy1217:
+	YYDEBUG(1217, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -16762,6 +17979,7 @@ yy1217:
 		}
 	}
 yy1218:
+	YYDEBUG(1218, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'V') {
 		if (yych <= 'B') {
@@ -16799,6 +18017,7 @@ yy1218:
 		}
 	}
 yy1219:
+	YYDEBUG(1219, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -16821,6 +18040,7 @@ yy1219:
 		}
 	}
 yy1220:
+	YYDEBUG(1220, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'X') {
 		if (yych <= ')') {
@@ -16843,6 +18063,7 @@ yy1220:
 		}
 	}
 yy1221:
+	YYDEBUG(1221, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -16864,6 +18085,7 @@ yy1221:
 		}
 	}
 yy1222:
+	YYDEBUG(1222, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -16885,6 +18107,7 @@ yy1222:
 		}
 	}
 yy1223:
+	YYDEBUG(1223, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -16900,6 +18123,7 @@ yy1223:
 		}
 	}
 yy1224:
+	YYDEBUG(1224, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych <= ')') {
@@ -16921,10 +18145,12 @@ yy1224:
 		}
 	}
 yy1225:
+	YYDEBUG(1225, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == ')') goto yy164;
 	goto yy191;
 yy1226:
+	YYDEBUG(1226, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -16946,6 +18172,7 @@ yy1226:
 		}
 	}
 yy1227:
+	YYDEBUG(1227, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -16967,6 +18194,7 @@ yy1227:
 		}
 	}
 yy1228:
+	YYDEBUG(1228, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '(') {
@@ -16989,6 +18217,7 @@ yy1228:
 		}
 	}
 yy1229:
+	YYDEBUG(1229, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= ')') {
@@ -17010,6 +18239,7 @@ yy1229:
 		}
 	}
 yy1230:
+	YYDEBUG(1230, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -17031,6 +18261,7 @@ yy1230:
 		}
 	}
 yy1231:
+	YYDEBUG(1231, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -17052,6 +18283,7 @@ yy1231:
 		}
 	}
 yy1232:
+	YYDEBUG(1232, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -17062,11 +18294,13 @@ yy1232:
 		if (yych != 'a') goto yy3;
 	}
 yy1233:
+	YYDEBUG(1233, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy197;
 	goto yy56;
 yy1234:
+	YYDEBUG(1234, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= ')') {
@@ -17089,6 +18323,7 @@ yy1234:
 		}
 	}
 yy1235:
+	YYDEBUG(1235, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -17111,6 +18346,7 @@ yy1235:
 		}
 	}
 yy1236:
+	YYDEBUG(1236, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -17152,6 +18388,7 @@ yy1236:
 		}
 	}
 yy1237:
+	YYDEBUG(1237, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -17193,6 +18430,7 @@ yy1237:
 		}
 	}
 yy1238:
+	YYDEBUG(1238, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'M') {
 		if (yych <= ')') {
@@ -17214,6 +18452,7 @@ yy1238:
 		}
 	}
 yy1239:
+	YYDEBUG(1239, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -17224,15 +18463,18 @@ yy1239:
 		if (yych != 'b') goto yy3;
 	}
 yy1240:
+	YYDEBUG(1240, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1241;
 	if (yych != 'e') goto yy56;
 yy1241:
+	YYDEBUG(1241, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych == 'r') goto yy229;
 	goto yy56;
 yy1242:
+	YYDEBUG(1242, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -17254,6 +18496,7 @@ yy1242:
 		}
 	}
 yy1243:
+	YYDEBUG(1243, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -17275,6 +18518,7 @@ yy1243:
 		}
 	}
 yy1244:
+	YYDEBUG(1244, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -17286,6 +18530,7 @@ yy1244:
 		goto yy3;
 	}
 yy1245:
+	YYDEBUG(1245, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -17307,6 +18552,7 @@ yy1245:
 		}
 	}
 yy1246:
+	YYDEBUG(1246, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -17329,6 +18575,7 @@ yy1246:
 		}
 	}
 yy1247:
+	YYDEBUG(1247, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'U') {
@@ -17374,6 +18621,7 @@ yy1247:
 		}
 	}
 yy1248:
+	YYDEBUG(1248, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -17404,6 +18652,7 @@ yy1248:
 		}
 	}
 yy1249:
+	YYDEBUG(1249, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -17434,6 +18683,7 @@ yy1249:
 		}
 	}
 yy1250:
+	YYDEBUG(1250, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -17464,6 +18714,7 @@ yy1250:
 		}
 	}
 yy1251:
+	YYDEBUG(1251, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -17494,6 +18745,7 @@ yy1251:
 		}
 	}
 yy1252:
+	YYDEBUG(1252, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -17519,6 +18771,7 @@ yy1252:
 		}
 	}
 yy1253:
+	YYDEBUG(1253, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -17549,6 +18802,7 @@ yy1253:
 		}
 	}
 yy1254:
+	YYDEBUG(1254, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -17568,6 +18822,7 @@ yy1254:
 		}
 	}
 yy1255:
+	YYDEBUG(1255, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -17598,6 +18853,7 @@ yy1255:
 		}
 	}
 yy1256:
+	YYDEBUG(1256, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -17628,6 +18884,7 @@ yy1256:
 		}
 	}
 yy1257:
+	YYDEBUG(1257, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
@@ -17657,6 +18914,7 @@ yy1257:
 		}
 	}
 yy1258:
+	YYDEBUG(1258, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -17687,6 +18945,7 @@ yy1258:
 		}
 	}
 yy1259:
+	YYDEBUG(1259, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -17717,6 +18976,7 @@ yy1259:
 		}
 	}
 yy1260:
+	YYDEBUG(1260, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -17747,6 +19007,7 @@ yy1260:
 		}
 	}
 yy1261:
+	YYDEBUG(1261, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -17771,11 +19032,13 @@ yy1261:
 		}
 	}
 yy1262:
+	YYDEBUG(1262, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy210;
 	goto yy179;
 yy1263:
+	YYDEBUG(1263, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -17806,6 +19069,7 @@ yy1263:
 		}
 	}
 yy1264:
+	YYDEBUG(1264, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -17836,6 +19100,7 @@ yy1264:
 		}
 	}
 yy1265:
+	YYDEBUG(1265, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -17880,6 +19145,7 @@ yy1265:
 		}
 	}
 yy1266:
+	YYDEBUG(1266, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -17924,6 +19190,7 @@ yy1266:
 		}
 	}
 yy1267:
+	YYDEBUG(1267, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -17954,6 +19221,7 @@ yy1267:
 		}
 	}
 yy1268:
+	YYDEBUG(1268, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -17977,14 +19245,17 @@ yy1268:
 		}
 	}
 yy1269:
+	YYDEBUG(1269, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'E') goto yy1241;
 	if (yych != 'e') goto yy179;
+	YYDEBUG(1270, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych == 'r') goto yy341;
 	goto yy179;
 yy1271:
+	YYDEBUG(1271, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -18015,6 +19286,7 @@ yy1271:
 		}
 	}
 yy1272:
+	YYDEBUG(1272, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -18045,6 +19317,7 @@ yy1272:
 		}
 	}
 yy1273:
+	YYDEBUG(1273, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -18068,6 +19341,7 @@ yy1273:
 		}
 	}
 yy1274:
+	YYDEBUG(1274, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -18098,6 +19372,7 @@ yy1274:
 		}
 	}
 yy1275:
+	YYDEBUG(1275, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -18128,6 +19403,7 @@ yy1275:
 		}
 	}
 yy1276:
+	YYDEBUG(1276, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'C') {
 		if (yych <= ')') {
@@ -18149,6 +19425,7 @@ yy1276:
 		}
 	}
 yy1277:
+	YYDEBUG(1277, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'K') {
 		if (yych <= ')') {
@@ -18170,6 +19447,7 @@ yy1277:
 		}
 	}
 yy1278:
+	YYDEBUG(1278, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ')') {
@@ -18187,16 +19465,20 @@ yy1278:
 		}
 	}
 yy1279:
+	YYDEBUG(1279, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'O') goto yy1280;
 	if (yych != 'o') goto yy56;
 yy1280:
+	YYDEBUG(1280, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'F') goto yy1281;
 	if (yych != 'f') goto yy56;
 yy1281:
+	YYDEBUG(1281, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ' ') goto yy56;
+	YYDEBUG(1282, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych <= '1') goto yy1283;
@@ -18204,12 +19486,28 @@ yy1281:
 	if (yych <= '9') goto yy1286;
 	goto yy56;
 yy1283:
+	YYDEBUG(1283, *YYCURSOR);
 	yyaccept = 27;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych <= '/') goto yy1287;
-	if (yych <= '9') goto yy1286;
-	goto yy1287;
+	if (yych <= '@') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy1287;
+		} else {
+			if (yych <= ' ') goto yy1287;
+			if (yych <= '/') goto yy1284;
+			if (yych <= '9') goto yy1286;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych <= 'A') goto yy1289;
+			if (yych == 'P') goto yy1289;
+		} else {
+			if (yych <= 'a') goto yy1289;
+			if (yych == 'p') goto yy1289;
+		}
+	}
 yy1284:
+	YYDEBUG(1284, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("backof | frontof");
 		TIMELIB_INIT;
@@ -18232,65 +19530,112 @@ yy1284:
 		return TIMELIB_LF_DAY_OF_MONTH;
 	}
 yy1285:
+	YYDEBUG(1285, *YYCURSOR);
 	yyaccept = 27;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych <= '/') goto yy1287;
-	if (yych >= '5') goto yy1287;
+	if (yych <= '@') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy1287;
+			goto yy1284;
+		} else {
+			if (yych <= ' ') goto yy1287;
+			if (yych <= '/') goto yy1284;
+			if (yych >= '5') goto yy1284;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych <= 'A') goto yy1289;
+			if (yych == 'P') goto yy1289;
+			goto yy1284;
+		} else {
+			if (yych <= 'a') goto yy1289;
+			if (yych == 'p') goto yy1289;
+			goto yy1284;
+		}
+	}
 yy1286:
+	YYDEBUG(1286, *YYCURSOR);
 	yyaccept = 27;
-	YYMARKER = ++YYCURSOR;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych <= 'A') {
+		if (yych <= 0x1F) {
+			if (yych != '\t') goto yy1284;
+		} else {
+			if (yych <= ' ') goto yy1287;
+			if (yych <= '@') goto yy1284;
+			goto yy1289;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych == 'P') goto yy1289;
+			goto yy1284;
+		} else {
+			if (yych <= 'a') goto yy1289;
+			if (yych == 'p') goto yy1289;
+			goto yy1284;
+		}
+	}
+yy1287:
+	YYDEBUG(1287, *YYCURSOR);
+	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
 	yych = *YYCURSOR;
-yy1287:
+	YYDEBUG(1288, *YYCURSOR);
 	if (yych <= 'A') {
 		if (yych <= 0x1F) {
-			if (yych == '\t') goto yy1286;
-			goto yy1284;
+			if (yych == '\t') goto yy1287;
+			goto yy56;
 		} else {
-			if (yych <= ' ') goto yy1286;
-			if (yych <= '@') goto yy1284;
+			if (yych <= ' ') goto yy1287;
+			if (yych <= '@') goto yy56;
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych != 'P') goto yy1284;
+			if (yych != 'P') goto yy56;
 		} else {
-			if (yych <= 'a') goto yy1288;
-			if (yych != 'p') goto yy1284;
+			if (yych <= 'a') goto yy1289;
+			if (yych != 'p') goto yy56;
 		}
 	}
-yy1288:
+yy1289:
+	YYDEBUG(1289, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
 	} else {
-		if (yych <= 'M') goto yy1290;
-		if (yych == 'm') goto yy1290;
+		if (yych <= 'M') goto yy1291;
+		if (yych == 'm') goto yy1291;
 		goto yy56;
 	}
+	YYDEBUG(1290, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'M') goto yy1290;
+	if (yych == 'M') goto yy1291;
 	if (yych != 'm') goto yy56;
-yy1290:
+yy1291:
+	YYDEBUG(1291, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
-		if (yych <= 0x00) goto yy1292;
-		if (yych == '\t') goto yy1292;
+		if (yych <= 0x00) goto yy1293;
+		if (yych == '\t') goto yy1293;
 		goto yy56;
 	} else {
-		if (yych <= ' ') goto yy1292;
+		if (yych <= ' ') goto yy1293;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(1292, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
-		if (yych <= 0x00) goto yy1292;
+		if (yych <= 0x00) goto yy1293;
 		if (yych <= 0x08) goto yy56;
 	} else {
 		if (yych != ' ') goto yy56;
 	}
-yy1292:
+yy1293:
+	YYDEBUG(1293, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy1284;
-yy1293:
+yy1294:
+	YYDEBUG(1294, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'B') {
@@ -18314,13 +19659,14 @@ yy1293:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'c') goto yy1294;
+				if (yych <= 'c') goto yy1295;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1294:
+yy1295:
+	YYDEBUG(1295, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'J') {
@@ -18344,13 +19690,14 @@ yy1294:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'k') goto yy1295;
+				if (yych <= 'k') goto yy1296;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1295:
+yy1296:
+	YYDEBUG(1296, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -18375,7 +19722,8 @@ yy1295:
 			goto yy3;
 		}
 	}
-yy1296:
+yy1297:
+	YYDEBUG(1297, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -18391,12 +19739,13 @@ yy1296:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 's') goto yy1297;
+			if (yych <= 's') goto yy1298;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1297:
+yy1298:
+	YYDEBUG(1298, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -18412,12 +19761,13 @@ yy1297:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1298;
+			if (yych <= 't') goto yy1299;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1298:
+yy1299:
+	YYDEBUG(1299, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '(') {
@@ -18438,19 +19788,23 @@ yy1298:
 			goto yy3;
 		}
 	}
-yy1299:
+yy1300:
+	YYDEBUG(1300, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'D') goto yy1300;
+	if (yych == 'D') goto yy1301;
 	if (yych != 'd') goto yy1070;
-yy1300:
+yy1301:
+	YYDEBUG(1301, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'A') goto yy1301;
+	if (yych == 'A') goto yy1302;
 	if (yych != 'a') goto yy56;
-yy1301:
+yy1302:
+	YYDEBUG(1302, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'Y') goto yy1302;
+	if (yych == 'Y') goto yy1303;
 	if (yych != 'y') goto yy56;
-yy1302:
+yy1303:
+	YYDEBUG(1303, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -18460,15 +19814,19 @@ yy1302:
 		if (yych == 's') goto yy1109;
 		goto yy1084;
 	}
+	YYDEBUG(1304, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'O') goto yy1304;
+	if (yych == 'O') goto yy1305;
 	if (yych != 'o') goto yy56;
-yy1304:
+yy1305:
+	YYDEBUG(1305, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'F') goto yy1305;
+	if (yych == 'F') goto yy1306;
 	if (yych != 'f') goto yy56;
-yy1305:
+yy1306:
+	YYDEBUG(1306, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(1307, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("firstdayof | lastdayof");
 		TIMELIB_INIT;
@@ -18484,7 +19842,8 @@ yy1305:
 		TIMELIB_DEINIT;
 		return TIMELIB_LF_DAY_OF_MONTH;
 	}
-yy1307:
+yy1308:
+	YYDEBUG(1308, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -18499,7 +19858,7 @@ yy1307:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'S') goto yy1297;
+			if (yych <= 'S') goto yy1298;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -18508,13 +19867,14 @@ yy1307:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 's') goto yy1308;
+				if (yych <= 's') goto yy1309;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1308:
+yy1309:
+	YYDEBUG(1309, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -18529,7 +19889,7 @@ yy1308:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1298;
+			if (yych <= 'T') goto yy1299;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -18538,20 +19898,21 @@ yy1308:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1309;
+				if (yych <= 't') goto yy1310;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1309:
+yy1310:
+	YYDEBUG(1310, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
 		if (yych <= ' ') {
 			if (yych == '\t') goto yy1069;
 			if (yych <= 0x1F) goto yy3;
-			goto yy1299;
+			goto yy1300;
 		} else {
 			if (yych == ')') goto yy164;
 			if (yych <= ',') goto yy3;
@@ -18573,7 +19934,8 @@ yy1309:
 			}
 		}
 	}
-yy1310:
+yy1311:
+	YYDEBUG(1311, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'B') {
 		if (yych <= ')') {
@@ -18582,7 +19944,7 @@ yy1310:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'A') goto yy166;
-			goto yy1346;
+			goto yy1348;
 		}
 	} else {
 		if (yych <= 'a') {
@@ -18590,35 +19952,37 @@ yy1310:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'b') goto yy1346;
+			if (yych <= 'b') goto yy1348;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1311:
+yy1312:
+	YYDEBUG(1312, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= '@') {
 			if (yych == ')') goto yy164;
 			goto yy3;
 		} else {
-			if (yych == 'F') goto yy1336;
+			if (yych == 'F') goto yy1338;
 			if (yych <= 'Q') goto yy166;
-			goto yy1335;
+			goto yy1337;
 		}
 	} else {
 		if (yych <= 'f') {
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'e') goto yy166;
-			goto yy1336;
+			goto yy1338;
 		} else {
-			if (yych == 'r') goto yy1335;
+			if (yych == 'r') goto yy1337;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1312:
+yy1313:
+	YYDEBUG(1313, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= ')') {
@@ -18627,7 +19991,7 @@ yy1312:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'T') goto yy166;
-			goto yy1332;
+			goto yy1334;
 		}
 	} else {
 		if (yych <= 't') {
@@ -18635,19 +19999,20 @@ yy1312:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'u') goto yy1332;
+			if (yych <= 'u') goto yy1334;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1313:
+yy1314:
+	YYDEBUG(1314, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= '@') {
 			if (yych == ')') goto yy164;
 			goto yy3;
 		} else {
-			if (yych == 'I') goto yy1315;
+			if (yych == 'I') goto yy1316;
 			if (yych <= 'N') goto yy166;
 		}
 	} else {
@@ -18655,14 +20020,15 @@ yy1313:
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'h') goto yy166;
-			goto yy1315;
+			goto yy1316;
 		} else {
-			if (yych == 'o') goto yy1314;
+			if (yych == 'o') goto yy1315;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1314:
+yy1315:
+	YYDEBUG(1315, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -18671,7 +20037,7 @@ yy1314:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'M') goto yy167;
-			goto yy1318;
+			goto yy1319;
 		}
 	} else {
 		if (yych <= 'm') {
@@ -18679,12 +20045,13 @@ yy1314:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'n') goto yy1318;
+			if (yych <= 'n') goto yy1319;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1315:
+yy1316:
+	YYDEBUG(1316, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -18700,12 +20067,13 @@ yy1315:
 			if (yych <= '`') goto yy191;
 			goto yy167;
 		} else {
-			if (yych <= 'd') goto yy1316;
+			if (yych <= 'd') goto yy1317;
 			if (yych <= 'z') goto yy167;
 			goto yy191;
 		}
 	}
-yy1316:
+yy1317:
+	YYDEBUG(1317, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -18715,12 +20083,13 @@ yy1316:
 			if (yych <= 'Z') goto yy168;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1317;
+			if (yych <= 'a') goto yy1318;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1317:
+yy1318:
+	YYDEBUG(1318, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych <= ')') {
@@ -18742,7 +20111,8 @@ yy1317:
 			goto yy3;
 		}
 	}
-yy1318:
+yy1319:
+	YYDEBUG(1319, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -18758,16 +20128,17 @@ yy1318:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 't') goto yy1319;
+			if (yych <= 't') goto yy1320;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1319:
+yy1320:
+	YYDEBUG(1320, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= ')') {
-		if (yych == ' ') goto yy1320;
+		if (yych == ' ') goto yy1321;
 		if (yych <= '(') goto yy3;
 		goto yy164;
 	} else {
@@ -18780,88 +20151,157 @@ yy1319:
 			goto yy3;
 		}
 	}
-yy1320:
+yy1321:
+	YYDEBUG(1321, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'O') goto yy1321;
+	if (yych == 'O') goto yy1322;
 	if (yych != 'o') goto yy56;
-yy1321:
+yy1322:
+	YYDEBUG(1322, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'F') goto yy1322;
+	if (yych == 'F') goto yy1323;
 	if (yych != 'f') goto yy56;
-yy1322:
+yy1323:
+	YYDEBUG(1323, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ' ') goto yy56;
+	YYDEBUG(1324, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
-	if (yych <= '1') goto yy1324;
-	if (yych <= '2') goto yy1325;
-	if (yych <= '9') goto yy1326;
+	if (yych <= '1') goto yy1325;
+	if (yych <= '2') goto yy1326;
+	if (yych <= '9') goto yy1327;
 	goto yy56;
-yy1324:
-	yyaccept = 27;
-	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych <= '/') goto yy1327;
-	if (yych <= '9') goto yy1326;
-	goto yy1327;
 yy1325:
+	YYDEBUG(1325, *YYCURSOR);
 	yyaccept = 27;
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych <= '/') goto yy1327;
-	if (yych >= '5') goto yy1327;
+	if (yych <= '@') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy1328;
+			goto yy1284;
+		} else {
+			if (yych <= ' ') goto yy1328;
+			if (yych <= '/') goto yy1284;
+			if (yych <= '9') goto yy1327;
+			goto yy1284;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych <= 'A') goto yy1330;
+			if (yych == 'P') goto yy1330;
+			goto yy1284;
+		} else {
+			if (yych <= 'a') goto yy1330;
+			if (yych == 'p') goto yy1330;
+			goto yy1284;
+		}
+	}
 yy1326:
+	YYDEBUG(1326, *YYCURSOR);
 	yyaccept = 27;
-	YYMARKER = ++YYCURSOR;
-	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-	yych = *YYCURSOR;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych <= '@') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy1328;
+			goto yy1284;
+		} else {
+			if (yych <= ' ') goto yy1328;
+			if (yych <= '/') goto yy1284;
+			if (yych >= '5') goto yy1284;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych <= 'A') goto yy1330;
+			if (yych == 'P') goto yy1330;
+			goto yy1284;
+		} else {
+			if (yych <= 'a') goto yy1330;
+			if (yych == 'p') goto yy1330;
+			goto yy1284;
+		}
+	}
 yy1327:
+	YYDEBUG(1327, *YYCURSOR);
+	yyaccept = 27;
+	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
 		if (yych <= 0x1F) {
-			if (yych == '\t') goto yy1326;
-			goto yy1284;
+			if (yych != '\t') goto yy1284;
 		} else {
-			if (yych <= ' ') goto yy1326;
+			if (yych <= ' ') goto yy1328;
 			if (yych <= '@') goto yy1284;
+			goto yy1330;
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych != 'P') goto yy1284;
+			if (yych == 'P') goto yy1330;
+			goto yy1284;
 		} else {
-			if (yych <= 'a') goto yy1328;
-			if (yych != 'p') goto yy1284;
+			if (yych <= 'a') goto yy1330;
+			if (yych == 'p') goto yy1330;
+			goto yy1284;
 		}
 	}
 yy1328:
+	YYDEBUG(1328, *YYCURSOR);
+	++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+	yych = *YYCURSOR;
+	YYDEBUG(1329, *YYCURSOR);
+	if (yych <= 'A') {
+		if (yych <= 0x1F) {
+			if (yych == '\t') goto yy1328;
+			goto yy56;
+		} else {
+			if (yych <= ' ') goto yy1328;
+			if (yych <= '@') goto yy56;
+		}
+	} else {
+		if (yych <= '`') {
+			if (yych != 'P') goto yy56;
+		} else {
+			if (yych <= 'a') goto yy1330;
+			if (yych != 'p') goto yy56;
+		}
+	}
+yy1330:
+	YYDEBUG(1330, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych != '.') goto yy56;
 	} else {
-		if (yych <= 'M') goto yy1330;
-		if (yych == 'm') goto yy1330;
+		if (yych <= 'M') goto yy1332;
+		if (yych == 'm') goto yy1332;
 		goto yy56;
 	}
+	YYDEBUG(1331, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'M') goto yy1330;
+	if (yych == 'M') goto yy1332;
 	if (yych != 'm') goto yy56;
-yy1330:
+yy1332:
+	YYDEBUG(1332, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 0x1F) {
-		if (yych <= 0x00) goto yy1292;
-		if (yych == '\t') goto yy1292;
+		if (yych <= 0x00) goto yy1293;
+		if (yych == '\t') goto yy1293;
 		goto yy56;
 	} else {
-		if (yych <= ' ') goto yy1292;
+		if (yych <= ' ') goto yy1293;
 		if (yych != '.') goto yy56;
 	}
+	YYDEBUG(1333, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '\t') {
-		if (yych <= 0x00) goto yy1292;
+		if (yych <= 0x00) goto yy1293;
 		if (yych <= 0x08) goto yy56;
-		goto yy1292;
+		goto yy1293;
 	} else {
-		if (yych == ' ') goto yy1292;
+		if (yych == ' ') goto yy1293;
 		goto yy56;
 	}
-yy1332:
+yy1334:
+	YYDEBUG(1334, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -18877,12 +20317,13 @@ yy1332:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'r') goto yy1333;
+			if (yych <= 'r') goto yy1335;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1333:
+yy1335:
+	YYDEBUG(1335, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -18898,12 +20339,13 @@ yy1333:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 't') goto yy1334;
+			if (yych <= 't') goto yy1336;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1334:
+yy1336:
+	YYDEBUG(1336, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -18925,7 +20367,8 @@ yy1334:
 			goto yy3;
 		}
 	}
-yy1335:
+yy1337:
+	YYDEBUG(1337, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -18934,7 +20377,7 @@ yy1335:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'R') goto yy167;
-			goto yy1338;
+			goto yy1340;
 		}
 	} else {
 		if (yych <= 'r') {
@@ -18942,12 +20385,13 @@ yy1335:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 's') goto yy1338;
+			if (yych <= 's') goto yy1340;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1336:
+yy1338:
+	YYDEBUG(1338, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -18963,12 +20407,13 @@ yy1336:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1337;
+			if (yych <= 't') goto yy1339;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1337:
+yy1339:
+	YYDEBUG(1339, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -18990,7 +20435,8 @@ yy1337:
 			goto yy3;
 		}
 	}
-yy1338:
+yy1340:
+	YYDEBUG(1340, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -19006,12 +20452,13 @@ yy1338:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 't') goto yy1339;
+			if (yych <= 't') goto yy1341;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1339:
+yy1341:
+	YYDEBUG(1341, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '(') {
@@ -19032,19 +20479,23 @@ yy1339:
 			goto yy3;
 		}
 	}
-yy1340:
+yy1342:
+	YYDEBUG(1342, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'D') goto yy1341;
+	if (yych == 'D') goto yy1343;
 	if (yych != 'd') goto yy1197;
-yy1341:
+yy1343:
+	YYDEBUG(1343, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'A') goto yy1342;
+	if (yych == 'A') goto yy1344;
 	if (yych != 'a') goto yy56;
-yy1342:
+yy1344:
+	YYDEBUG(1344, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'Y') goto yy1343;
+	if (yych == 'Y') goto yy1345;
 	if (yych != 'y') goto yy56;
-yy1343:
+yy1345:
+	YYDEBUG(1345, *YYCURSOR);
 	yyaccept = 25;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -19054,15 +20505,18 @@ yy1343:
 		if (yych == 's') goto yy1109;
 		goto yy1084;
 	}
+	YYDEBUG(1346, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'O') goto yy1345;
+	if (yych == 'O') goto yy1347;
 	if (yych != 'o') goto yy56;
-yy1345:
+yy1347:
+	YYDEBUG(1347, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'F') goto yy1305;
-	if (yych == 'f') goto yy1305;
+	if (yych == 'F') goto yy1306;
+	if (yych == 'f') goto yy1306;
 	goto yy56;
-yy1346:
+yy1348:
+	YYDEBUG(1348, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -19097,13 +20551,14 @@ yy1346:
 				if (yych <= '`') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'r') goto yy1347;
+				if (yych <= 'r') goto yy1349;
 				if (yych <= 'z') goto yy167;
 				goto yy218;
 			}
 		}
 	}
-yy1347:
+yy1349:
+	YYDEBUG(1349, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= ')') {
@@ -19119,12 +20574,13 @@ yy1347:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'u') goto yy1348;
+			if (yych <= 'u') goto yy1350;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1348:
+yy1350:
+	YYDEBUG(1350, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -19134,27 +20590,30 @@ yy1348:
 			if (yych <= 'Z') goto yy169;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1349;
+			if (yych <= 'a') goto yy1351;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1349:
+yy1351:
+	YYDEBUG(1351, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'R') goto yy1350;
+		if (yych <= 'R') goto yy1352;
 		if (yych != 'r') goto yy3;
 	}
-yy1350:
+yy1352:
+	YYDEBUG(1352, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy229;
 	if (yych == 'y') goto yy229;
 	goto yy56;
-yy1351:
+yy1353:
+	YYDEBUG(1353, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -19169,7 +20628,7 @@ yy1351:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'B') goto yy1346;
+			if (yych <= 'B') goto yy1348;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19178,13 +20637,14 @@ yy1351:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'b') goto yy1369;
+				if (yych <= 'b') goto yy1371;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1352:
+yy1354:
+	YYDEBUG(1354, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -19201,14 +20661,14 @@ yy1352:
 				if (yych <= '/') goto yy172;
 				goto yy3;
 			} else {
-				if (yych == 'F') goto yy1336;
+				if (yych == 'F') goto yy1338;
 				goto yy166;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'R') goto yy1335;
+				if (yych <= 'R') goto yy1337;
 				goto yy166;
 			} else {
 				if (yych == '_') goto yy172;
@@ -19216,16 +20676,17 @@ yy1352:
 			}
 		} else {
 			if (yych <= 'q') {
-				if (yych == 'f') goto yy1365;
+				if (yych == 'f') goto yy1367;
 				goto yy171;
 			} else {
-				if (yych <= 'r') goto yy1364;
+				if (yych <= 'r') goto yy1366;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1353:
+yy1355:
+	YYDEBUG(1355, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -19240,7 +20701,7 @@ yy1353:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'U') goto yy1332;
+			if (yych <= 'U') goto yy1334;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19249,13 +20710,14 @@ yy1353:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'u') goto yy1361;
+				if (yych <= 'u') goto yy1363;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1354:
+yy1356:
+	YYDEBUG(1356, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -19272,14 +20734,14 @@ yy1354:
 				if (yych <= '/') goto yy172;
 				goto yy3;
 			} else {
-				if (yych == 'I') goto yy1315;
+				if (yych == 'I') goto yy1316;
 				goto yy166;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'O') goto yy1314;
+				if (yych <= 'O') goto yy1315;
 				goto yy166;
 			} else {
 				if (yych == '_') goto yy172;
@@ -19287,16 +20749,17 @@ yy1354:
 			}
 		} else {
 			if (yych <= 'n') {
-				if (yych == 'i') goto yy1356;
+				if (yych == 'i') goto yy1358;
 				goto yy171;
 			} else {
-				if (yych <= 'o') goto yy1355;
+				if (yych <= 'o') goto yy1357;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1355:
+yy1357:
+	YYDEBUG(1357, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -19311,7 +20774,7 @@ yy1355:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1318;
+			if (yych <= 'N') goto yy1319;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19320,13 +20783,14 @@ yy1355:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'n') goto yy1359;
+				if (yych <= 'n') goto yy1361;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1356:
+yy1358:
+	YYDEBUG(1358, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -19341,7 +20805,7 @@ yy1356:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'D') goto yy1316;
+			if (yych <= 'D') goto yy1317;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy191;
 			goto yy172;
@@ -19350,13 +20814,14 @@ yy1356:
 				if (yych <= '`') goto yy191;
 				goto yy175;
 			} else {
-				if (yych <= 'd') goto yy1357;
+				if (yych <= 'd') goto yy1359;
 				if (yych <= 'z') goto yy175;
 				goto yy191;
 			}
 		}
 	}
-yy1357:
+yy1359:
+	YYDEBUG(1359, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -19370,18 +20835,19 @@ yy1357:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1317;
+			if (yych <= 'A') goto yy1318;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1358;
+			if (yych <= 'a') goto yy1360;
 			if (yych <= 'z') goto yy176;
 			goto yy3;
 		}
 	}
-yy1358:
+yy1360:
+	YYDEBUG(1360, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -19411,7 +20877,8 @@ yy1358:
 			}
 		}
 	}
-yy1359:
+yy1361:
+	YYDEBUG(1361, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -19426,7 +20893,7 @@ yy1359:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1319;
+			if (yych <= 'T') goto yy1320;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19435,18 +20902,19 @@ yy1359:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 't') goto yy1360;
+				if (yych <= 't') goto yy1362;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1360:
+yy1362:
+	YYDEBUG(1362, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
 		if (yych <= '(') {
-			if (yych == ' ') goto yy1320;
+			if (yych == ' ') goto yy1321;
 			goto yy3;
 		} else {
 			if (yych <= ')') goto yy164;
@@ -19466,7 +20934,8 @@ yy1360:
 			goto yy3;
 		}
 	}
-yy1361:
+yy1363:
+	YYDEBUG(1363, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -19481,7 +20950,7 @@ yy1361:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'R') goto yy1333;
+			if (yych <= 'R') goto yy1335;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19490,13 +20959,14 @@ yy1361:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'r') goto yy1362;
+				if (yych <= 'r') goto yy1364;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1362:
+yy1364:
+	YYDEBUG(1364, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -19511,7 +20981,7 @@ yy1362:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1334;
+			if (yych <= 'T') goto yy1336;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19520,13 +20990,14 @@ yy1362:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 't') goto yy1363;
+				if (yych <= 't') goto yy1365;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1363:
+yy1365:
+	YYDEBUG(1365, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -19556,7 +21027,8 @@ yy1363:
 			}
 		}
 	}
-yy1364:
+yy1366:
+	YYDEBUG(1366, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -19571,7 +21043,7 @@ yy1364:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'S') goto yy1338;
+			if (yych <= 'S') goto yy1340;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19580,13 +21052,14 @@ yy1364:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 's') goto yy1367;
+				if (yych <= 's') goto yy1369;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1365:
+yy1367:
+	YYDEBUG(1367, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -19601,7 +21074,7 @@ yy1365:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1337;
+			if (yych <= 'T') goto yy1339;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19610,13 +21083,14 @@ yy1365:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1366;
+				if (yych <= 't') goto yy1368;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1366:
+yy1368:
+	YYDEBUG(1368, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -19646,7 +21120,8 @@ yy1366:
 			}
 		}
 	}
-yy1367:
+yy1369:
+	YYDEBUG(1369, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -19661,7 +21136,7 @@ yy1367:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1339;
+			if (yych <= 'T') goto yy1341;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19670,20 +21145,21 @@ yy1367:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 't') goto yy1368;
+				if (yych <= 't') goto yy1370;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1368:
+yy1370:
+	YYDEBUG(1370, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
 		if (yych <= ' ') {
 			if (yych == '\t') goto yy1196;
 			if (yych <= 0x1F) goto yy3;
-			goto yy1340;
+			goto yy1342;
 		} else {
 			if (yych == ')') goto yy164;
 			if (yych <= ',') goto yy3;
@@ -19705,7 +21181,8 @@ yy1368:
 			}
 		}
 	}
-yy1369:
+yy1371:
+	YYDEBUG(1371, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -19733,7 +21210,7 @@ yy1369:
 				if (yych <= '@') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'R') goto yy1347;
+				if (yych <= 'R') goto yy1349;
 				if (yych <= 'Z') goto yy167;
 				goto yy218;
 			}
@@ -19743,13 +21220,14 @@ yy1369:
 				if (yych <= '`') goto yy218;
 				goto yy175;
 			} else {
-				if (yych <= 'r') goto yy1370;
+				if (yych <= 'r') goto yy1372;
 				if (yych <= 'z') goto yy175;
 				goto yy218;
 			}
 		}
 	}
-yy1370:
+yy1372:
+	YYDEBUG(1372, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -19764,7 +21242,7 @@ yy1370:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'U') goto yy1348;
+			if (yych <= 'U') goto yy1350;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -19773,13 +21251,14 @@ yy1370:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'u') goto yy1371;
+				if (yych <= 'u') goto yy1373;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1371:
+yy1373:
+	YYDEBUG(1373, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -19793,18 +21272,19 @@ yy1371:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1349;
+			if (yych <= 'A') goto yy1351;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1372;
+			if (yych <= 'a') goto yy1374;
 			if (yych <= 'z') goto yy177;
 			goto yy3;
 		}
 	}
-yy1372:
+yy1374:
+	YYDEBUG(1374, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -19818,33 +21298,38 @@ yy1372:
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych <= 'R') goto yy1350;
+			if (yych <= 'R') goto yy1352;
 			if (yych == '_') goto yy172;
 			goto yy3;
 		} else {
-			if (yych == 'r') goto yy1373;
+			if (yych == 'r') goto yy1375;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1373:
+yy1375:
+	YYDEBUG(1375, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy229;
 	if (yych == 'y') goto yy341;
 	goto yy179;
-yy1374:
+yy1376:
+	YYDEBUG(1376, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
-yy1375:
+yy1377:
+	YYDEBUG(1377, *YYCURSOR);
 	yyaccept = 28;
 	YYMARKER = ++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
 	yych = *YYCURSOR;
-	if (yych == '.') goto yy1378;
-	if (yych <= '/') goto yy1377;
-	if (yych <= '9') goto yy1375;
-yy1377:
+	YYDEBUG(1378, *YYCURSOR);
+	if (yych == '.') goto yy1380;
+	if (yych <= '/') goto yy1379;
+	if (yych <= '9') goto yy1377;
+yy1379:
+	YYDEBUG(1379, *YYCURSOR);
 	{
 		timelib_ull i;
 
@@ -19869,26 +21354,34 @@ yy1377:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1378:
+yy1380:
+	YYDEBUG(1380, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1381, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1382, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1383, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1384, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1385, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1386, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(1387, *YYCURSOR);
 	{
 		timelib_ull i, ms;
 
@@ -19915,7 +21408,8 @@ yy1378:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1386:
+yy1388:
+	YYDEBUG(1388, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -19924,7 +21418,7 @@ yy1386:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'M') goto yy166;
-			goto yy1427;
+			goto yy1429;
 		}
 	} else {
 		if (yych <= 'm') {
@@ -19932,58 +21426,61 @@ yy1386:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'n') goto yy1427;
+			if (yych <= 'n') goto yy1429;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1387:
+yy1389:
+	YYDEBUG(1389, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'U') {
 		if (yych <= '@') {
 			if (yych == ')') goto yy164;
 			goto yy3;
 		} else {
-			if (yych == 'I') goto yy1419;
+			if (yych == 'I') goto yy1421;
 			if (yych <= 'T') goto yy166;
-			goto yy1420;
+			goto yy1422;
 		}
 	} else {
 		if (yych <= 'i') {
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'h') goto yy166;
-			goto yy1419;
+			goto yy1421;
 		} else {
-			if (yych == 'u') goto yy1420;
+			if (yych == 'u') goto yy1422;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1388:
+yy1390:
+	YYDEBUG(1390, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'M') {
 		if (yych <= '@') {
 			if (yych == ')') goto yy164;
 			goto yy3;
 		} else {
-			if (yych == 'D') goto yy1408;
+			if (yych == 'D') goto yy1410;
 			if (yych <= 'L') goto yy166;
-			goto yy1409;
+			goto yy1411;
 		}
 	} else {
 		if (yych <= 'd') {
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'c') goto yy166;
-			goto yy1408;
+			goto yy1410;
 		} else {
-			if (yych == 'm') goto yy1409;
+			if (yych == 'm') goto yy1411;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1389:
+yy1391:
+	YYDEBUG(1391, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -19992,7 +21489,7 @@ yy1389:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'D') goto yy166;
-			goto yy1404;
+			goto yy1406;
 		}
 	} else {
 		if (yych <= 'd') {
@@ -20000,12 +21497,13 @@ yy1389:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'e') goto yy1404;
+			if (yych <= 'e') goto yy1406;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1390:
+yy1392:
+	YYDEBUG(1392, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -20014,7 +21512,7 @@ yy1390:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'D') goto yy166;
-			goto yy1400;
+			goto yy1402;
 		}
 	} else {
 		if (yych <= 'd') {
@@ -20022,68 +21520,78 @@ yy1390:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'e') goto yy1400;
+			if (yych <= 'e') goto yy1402;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1391:
+yy1393:
+	YYDEBUG(1393, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy1029;
 		goto yy56;
 	} else {
-		if (yych <= '9') goto yy1394;
+		if (yych <= '9') goto yy1396;
 		if (yych <= ':') goto yy1029;
 		goto yy56;
 	}
-yy1392:
+yy1394:
+	YYDEBUG(1394, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy1029;
 		goto yy56;
 	} else {
-		if (yych <= '4') goto yy1394;
+		if (yych <= '4') goto yy1396;
 		if (yych == ':') goto yy1029;
 		goto yy56;
 	}
-yy1393:
+yy1395:
+	YYDEBUG(1395, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == '.') goto yy1029;
 	if (yych == ':') goto yy1029;
 	goto yy56;
-yy1394:
+yy1396:
+	YYDEBUG(1396, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '.') goto yy1029;
 		goto yy56;
 	} else {
-		if (yych <= '5') goto yy1395;
+		if (yych <= '5') goto yy1397;
 		if (yych == ':') goto yy1029;
 		goto yy56;
 	}
-yy1395:
+yy1397:
+	YYDEBUG(1397, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
 	if (yych >= ':') goto yy56;
+	YYDEBUG(1398, *YYCURSOR);
 	yyaccept = 23;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy1032;
-	if (yych <= '5') goto yy1397;
-	if (yych <= '6') goto yy1398;
+	if (yych <= '5') goto yy1399;
+	if (yych <= '6') goto yy1400;
 	goto yy1032;
-yy1397:
+yy1399:
+	YYDEBUG(1399, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy56;
-	if (yych <= '9') goto yy1399;
+	if (yych <= '9') goto yy1401;
 	goto yy56;
-yy1398:
+yy1400:
+	YYDEBUG(1400, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '0') goto yy56;
-yy1399:
+yy1401:
+	YYDEBUG(1401, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy1040;
-yy1400:
+yy1402:
+	YYDEBUG(1402, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= ')') {
@@ -20099,12 +21607,13 @@ yy1400:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'l') goto yy1401;
+			if (yych <= 'l') goto yy1403;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1401:
+yy1403:
+	YYDEBUG(1403, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'F') {
 		if (yych <= ')') {
@@ -20120,12 +21629,13 @@ yy1401:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'f') goto yy1402;
+			if (yych <= 'f') goto yy1404;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1402:
+yy1404:
+	YYDEBUG(1404, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -20141,12 +21651,13 @@ yy1402:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 't') goto yy1403;
+			if (yych <= 't') goto yy1405;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1403:
+yy1405:
+	YYDEBUG(1405, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -20157,7 +21668,8 @@ yy1403:
 		if (yych == 'h') goto yy1195;
 		goto yy3;
 	}
-yy1404:
+yy1406:
+	YYDEBUG(1406, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -20173,12 +21685,13 @@ yy1404:
 			if (yych <= '`') goto yy191;
 			goto yy167;
 		} else {
-			if (yych <= 's') goto yy1405;
+			if (yych <= 's') goto yy1407;
 			if (yych <= 'z') goto yy167;
 			goto yy191;
 		}
 	}
-yy1405:
+yy1407:
+	YYDEBUG(1407, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -20194,12 +21707,13 @@ yy1405:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'd') goto yy1406;
+			if (yych <= 'd') goto yy1408;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1406:
+yy1408:
+	YYDEBUG(1408, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -20209,12 +21723,13 @@ yy1406:
 			if (yych <= 'Z') goto yy169;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1407;
+			if (yych <= 'a') goto yy1409;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1407:
+yy1409:
+	YYDEBUG(1409, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'X') {
 		if (yych == ')') goto yy164;
@@ -20224,23 +21739,25 @@ yy1407:
 		if (yych == 'y') goto yy197;
 		goto yy3;
 	}
-yy1408:
+yy1410:
+	YYDEBUG(1410, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
 		if (yych <= '@') goto yy3;
-		goto yy1416;
+		goto yy1418;
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') goto yy167;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1416;
+			if (yych <= 'a') goto yy1418;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1409:
+yy1411:
+	YYDEBUG(1411, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'O') {
 		if (yych <= ')') {
@@ -20256,12 +21773,13 @@ yy1409:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'o') goto yy1410;
+			if (yych <= 'o') goto yy1412;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1410:
+yy1412:
+	YYDEBUG(1412, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -20277,12 +21795,13 @@ yy1410:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'r') goto yy1411;
+			if (yych <= 'r') goto yy1413;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1411:
+yy1413:
+	YYDEBUG(1413, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -20298,28 +21817,32 @@ yy1411:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 'r') goto yy1412;
+			if (yych <= 'r') goto yy1414;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1412:
+yy1414:
+	YYDEBUG(1414, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'O') goto yy1413;
+		if (yych <= 'O') goto yy1415;
 		if (yych != 'o') goto yy3;
 	}
-yy1413:
+yy1415:
+	YYDEBUG(1415, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'W') goto yy1414;
+	if (yych == 'W') goto yy1416;
 	if (yych != 'w') goto yy56;
-yy1414:
+yy1416:
+	YYDEBUG(1416, *YYCURSOR);
 	++YYCURSOR;
-yy1415:
+yy1417:
+	YYDEBUG(1417, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("tomorrow");
 		TIMELIB_INIT;
@@ -20330,7 +21853,8 @@ yy1415:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1416:
+yy1418:
+	YYDEBUG(1418, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych <= ')') {
@@ -20346,21 +21870,23 @@ yy1416:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'y') goto yy1417;
+			if (yych <= 'y') goto yy1419;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1417:
+yy1419:
+	YYDEBUG(1419, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '@') {
 		if (yych == ')') goto yy164;
 	} else {
 		if (yych <= 'Z') goto yy169;
-		if (yych <= '`') goto yy1418;
+		if (yych <= '`') goto yy1420;
 		if (yych <= 'z') goto yy169;
 	}
-yy1418:
+yy1420:
+	YYDEBUG(1420, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("midnight | today");
 		TIMELIB_INIT;
@@ -20369,7 +21895,8 @@ yy1418:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1419:
+yy1421:
+	YYDEBUG(1421, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= '@') {
@@ -20377,8 +21904,8 @@ yy1419:
 			goto yy3;
 		} else {
 			if (yych <= 'Q') goto yy167;
-			if (yych <= 'R') goto yy1425;
-			goto yy1426;
+			if (yych <= 'R') goto yy1427;
+			goto yy1428;
 		}
 	} else {
 		if (yych <= 'q') {
@@ -20386,13 +21913,14 @@ yy1419:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'r') goto yy1425;
-			if (yych <= 's') goto yy1426;
+			if (yych <= 'r') goto yy1427;
+			if (yych <= 's') goto yy1428;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1420:
+yy1422:
+	YYDEBUG(1422, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -20408,12 +21936,13 @@ yy1420:
 			if (yych <= '`') goto yy191;
 			goto yy167;
 		} else {
-			if (yych <= 'r') goto yy1421;
+			if (yych <= 'r') goto yy1423;
 			if (yych <= 'z') goto yy167;
 			goto yy191;
 		}
 	}
-yy1421:
+yy1423:
+	YYDEBUG(1423, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -20429,12 +21958,13 @@ yy1421:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 's') goto yy1422;
+			if (yych <= 's') goto yy1424;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1422:
+yy1424:
+	YYDEBUG(1424, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -20450,27 +21980,30 @@ yy1422:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 'd') goto yy1423;
+			if (yych <= 'd') goto yy1425;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1423:
+yy1425:
+	YYDEBUG(1425, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'A') goto yy1424;
+		if (yych <= 'A') goto yy1426;
 		if (yych != 'a') goto yy3;
 	}
-yy1424:
+yy1426:
+	YYDEBUG(1426, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy197;
 	goto yy56;
-yy1425:
+yy1427:
+	YYDEBUG(1427, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -20492,7 +22025,8 @@ yy1425:
 			goto yy3;
 		}
 	}
-yy1426:
+yy1428:
+	YYDEBUG(1428, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '(') {
@@ -20514,7 +22048,8 @@ yy1426:
 			goto yy3;
 		}
 	}
-yy1427:
+yy1429:
+	YYDEBUG(1429, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -20530,12 +22065,13 @@ yy1427:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1428;
+			if (yych <= 't') goto yy1430;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1428:
+yy1430:
+	YYDEBUG(1430, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -20557,7 +22093,8 @@ yy1428:
 			goto yy3;
 		}
 	}
-yy1429:
+yy1431:
+	YYDEBUG(1431, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -20572,7 +22109,7 @@ yy1429:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1427;
+			if (yych <= 'N') goto yy1429;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20581,13 +22118,14 @@ yy1429:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'n') goto yy1459;
+				if (yych <= 'n') goto yy1461;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1430:
+yy1432:
+	YYDEBUG(1432, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'T') {
@@ -20604,14 +22142,14 @@ yy1430:
 				if (yych <= '/') goto yy172;
 				goto yy3;
 			} else {
-				if (yych == 'I') goto yy1419;
+				if (yych == 'I') goto yy1421;
 				goto yy166;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'U') goto yy1420;
+				if (yych <= 'U') goto yy1422;
 				goto yy166;
 			} else {
 				if (yych == '_') goto yy172;
@@ -20619,16 +22157,17 @@ yy1430:
 			}
 		} else {
 			if (yych <= 't') {
-				if (yych == 'i') goto yy1451;
+				if (yych == 'i') goto yy1453;
 				goto yy171;
 			} else {
-				if (yych <= 'u') goto yy1452;
+				if (yych <= 'u') goto yy1454;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1431:
+yy1433:
+	YYDEBUG(1433, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -20645,14 +22184,14 @@ yy1431:
 				if (yych <= '/') goto yy172;
 				goto yy3;
 			} else {
-				if (yych == 'D') goto yy1408;
+				if (yych == 'D') goto yy1410;
 				goto yy166;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'M') goto yy1409;
+				if (yych <= 'M') goto yy1411;
 				goto yy166;
 			} else {
 				if (yych == '_') goto yy172;
@@ -20660,16 +22199,17 @@ yy1431:
 			}
 		} else {
 			if (yych <= 'l') {
-				if (yych == 'd') goto yy1442;
+				if (yych == 'd') goto yy1444;
 				goto yy171;
 			} else {
-				if (yych <= 'm') goto yy1443;
+				if (yych <= 'm') goto yy1445;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1432:
+yy1434:
+	YYDEBUG(1434, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -20684,7 +22224,7 @@ yy1432:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'E') goto yy1404;
+			if (yych <= 'E') goto yy1406;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20693,13 +22233,14 @@ yy1432:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'e') goto yy1438;
+				if (yych <= 'e') goto yy1440;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1433:
+yy1435:
+	YYDEBUG(1435, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -20714,7 +22255,7 @@ yy1433:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'E') goto yy1400;
+			if (yych <= 'E') goto yy1402;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20723,13 +22264,14 @@ yy1433:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'e') goto yy1434;
+				if (yych <= 'e') goto yy1436;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1434:
+yy1436:
+	YYDEBUG(1436, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'K') {
@@ -20744,7 +22286,7 @@ yy1434:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'L') goto yy1401;
+			if (yych <= 'L') goto yy1403;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20753,13 +22295,14 @@ yy1434:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'l') goto yy1435;
+				if (yych <= 'l') goto yy1437;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1435:
+yy1437:
+	YYDEBUG(1437, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'E') {
@@ -20774,7 +22317,7 @@ yy1435:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'F') goto yy1402;
+			if (yych <= 'F') goto yy1404;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20783,13 +22326,14 @@ yy1435:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'f') goto yy1436;
+				if (yych <= 'f') goto yy1438;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1436:
+yy1438:
+	YYDEBUG(1438, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -20804,7 +22348,7 @@ yy1436:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1403;
+			if (yych <= 'T') goto yy1405;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20813,13 +22357,14 @@ yy1436:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 't') goto yy1437;
+				if (yych <= 't') goto yy1439;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1437:
+yy1439:
+	YYDEBUG(1439, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -20842,7 +22387,8 @@ yy1437:
 			goto yy3;
 		}
 	}
-yy1438:
+yy1440:
+	YYDEBUG(1440, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -20857,7 +22403,7 @@ yy1438:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'S') goto yy1405;
+			if (yych <= 'S') goto yy1407;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy191;
 			goto yy172;
@@ -20866,13 +22412,14 @@ yy1438:
 				if (yych <= '`') goto yy191;
 				goto yy175;
 			} else {
-				if (yych <= 's') goto yy1439;
+				if (yych <= 's') goto yy1441;
 				if (yych <= 'z') goto yy175;
 				goto yy191;
 			}
 		}
 	}
-yy1439:
+yy1441:
+	YYDEBUG(1441, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -20887,7 +22434,7 @@ yy1439:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'D') goto yy1406;
+			if (yych <= 'D') goto yy1408;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20896,13 +22443,14 @@ yy1439:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'd') goto yy1440;
+				if (yych <= 'd') goto yy1442;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1440:
+yy1442:
+	YYDEBUG(1442, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -20916,18 +22464,19 @@ yy1440:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1407;
+			if (yych <= 'A') goto yy1409;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1441;
+			if (yych <= 'a') goto yy1443;
 			if (yych <= 'z') goto yy177;
 			goto yy3;
 		}
 	}
-yy1441:
+yy1443:
+	YYDEBUG(1443, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -20950,7 +22499,8 @@ yy1441:
 			goto yy3;
 		}
 	}
-yy1442:
+yy1444:
+	YYDEBUG(1444, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -20964,18 +22514,19 @@ yy1442:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1416;
+			if (yych <= 'A') goto yy1418;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1449;
+			if (yych <= 'a') goto yy1451;
 			if (yych <= 'z') goto yy175;
 			goto yy3;
 		}
 	}
-yy1443:
+yy1445:
+	YYDEBUG(1445, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -20990,7 +22541,7 @@ yy1443:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'O') goto yy1410;
+			if (yych <= 'O') goto yy1412;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -20999,13 +22550,14 @@ yy1443:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'o') goto yy1444;
+				if (yych <= 'o') goto yy1446;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1444:
+yy1446:
+	YYDEBUG(1446, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -21020,7 +22572,7 @@ yy1444:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'R') goto yy1411;
+			if (yych <= 'R') goto yy1413;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21029,13 +22581,14 @@ yy1444:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'r') goto yy1445;
+				if (yych <= 'r') goto yy1447;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1445:
+yy1447:
+	YYDEBUG(1447, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -21050,7 +22603,7 @@ yy1445:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'R') goto yy1412;
+			if (yych <= 'R') goto yy1414;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21059,13 +22612,14 @@ yy1445:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 'r') goto yy1446;
+				if (yych <= 'r') goto yy1448;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1446:
+yy1448:
+	YYDEBUG(1448, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'N') {
@@ -21079,19 +22633,21 @@ yy1446:
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych <= 'O') goto yy1413;
+			if (yych <= 'O') goto yy1415;
 			if (yych == '_') goto yy172;
 			goto yy3;
 		} else {
-			if (yych == 'o') goto yy1447;
+			if (yych == 'o') goto yy1449;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1447:
+yy1449:
+	YYDEBUG(1449, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'W') goto yy1414;
+	if (yych == 'W') goto yy1416;
 	if (yych != 'w') goto yy179;
+	YYDEBUG(1450, *YYCURSOR);
 	yyaccept = 29;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -21099,13 +22655,14 @@ yy1447:
 	}
 	if (yych <= '.') {
 		if (yych == '-') goto yy172;
-		goto yy1415;
+		goto yy1417;
 	} else {
 		if (yych <= '/') goto yy172;
 		if (yych == '_') goto yy172;
-		goto yy1415;
+		goto yy1417;
 	}
-yy1449:
+yy1451:
+	YYDEBUG(1451, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -21120,7 +22677,7 @@ yy1449:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'Y') goto yy1417;
+			if (yych <= 'Y') goto yy1419;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21129,36 +22686,38 @@ yy1449:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'y') goto yy1450;
+				if (yych <= 'y') goto yy1452;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1450:
+yy1452:
+	YYDEBUG(1452, *YYCURSOR);
 	yyaccept = 30;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
 		if (yych <= ',') {
 			if (yych == ')') goto yy164;
-			goto yy1418;
+			goto yy1420;
 		} else {
-			if (yych == '.') goto yy1418;
+			if (yych == '.') goto yy1420;
 			goto yy172;
 		}
 	} else {
 		if (yych <= '^') {
-			if (yych <= '@') goto yy1418;
+			if (yych <= '@') goto yy1420;
 			if (yych <= 'Z') goto yy169;
-			goto yy1418;
+			goto yy1420;
 		} else {
 			if (yych <= '_') goto yy172;
-			if (yych <= '`') goto yy1418;
+			if (yych <= '`') goto yy1420;
 			if (yych <= 'z') goto yy177;
-			goto yy1418;
+			goto yy1420;
 		}
 	}
-yy1451:
+yy1453:
+	YYDEBUG(1453, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -21173,13 +22732,13 @@ yy1451:
 			} else {
 				if (yych <= '@') goto yy3;
 				if (yych <= 'Q') goto yy167;
-				goto yy1425;
+				goto yy1427;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'S') goto yy1426;
+				if (yych <= 'S') goto yy1428;
 				goto yy167;
 			} else {
 				if (yych == '_') goto yy172;
@@ -21188,15 +22747,16 @@ yy1451:
 		} else {
 			if (yych <= 'r') {
 				if (yych <= 'q') goto yy175;
-				goto yy1457;
+				goto yy1459;
 			} else {
-				if (yych <= 's') goto yy1458;
+				if (yych <= 's') goto yy1460;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1452:
+yy1454:
+	YYDEBUG(1454, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -21211,7 +22771,7 @@ yy1452:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'R') goto yy1421;
+			if (yych <= 'R') goto yy1423;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy191;
 			goto yy172;
@@ -21220,13 +22780,14 @@ yy1452:
 				if (yych <= '`') goto yy191;
 				goto yy175;
 			} else {
-				if (yych <= 'r') goto yy1453;
+				if (yych <= 'r') goto yy1455;
 				if (yych <= 'z') goto yy175;
 				goto yy191;
 			}
 		}
 	}
-yy1453:
+yy1455:
+	YYDEBUG(1455, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -21241,7 +22802,7 @@ yy1453:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'S') goto yy1422;
+			if (yych <= 'S') goto yy1424;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21250,13 +22811,14 @@ yy1453:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 's') goto yy1454;
+				if (yych <= 's') goto yy1456;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1454:
+yy1456:
+	YYDEBUG(1456, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -21271,7 +22833,7 @@ yy1454:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'D') goto yy1423;
+			if (yych <= 'D') goto yy1425;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21280,13 +22842,14 @@ yy1454:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 'd') goto yy1455;
+				if (yych <= 'd') goto yy1457;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1455:
+yy1457:
+	YYDEBUG(1457, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -21300,22 +22863,24 @@ yy1455:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1424;
+			if (yych <= 'A') goto yy1426;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1456;
+			if (yych <= 'a') goto yy1458;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1456:
+yy1458:
+	YYDEBUG(1458, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Y') goto yy197;
 	if (yych == 'y') goto yy210;
 	goto yy179;
-yy1457:
+yy1459:
+	YYDEBUG(1459, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -21345,7 +22910,8 @@ yy1457:
 			}
 		}
 	}
-yy1458:
+yy1460:
+	YYDEBUG(1460, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
@@ -21374,7 +22940,8 @@ yy1458:
 			}
 		}
 	}
-yy1459:
+yy1461:
+	YYDEBUG(1461, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -21389,7 +22956,7 @@ yy1459:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1428;
+			if (yych <= 'T') goto yy1430;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21398,13 +22965,14 @@ yy1459:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1460;
+				if (yych <= 't') goto yy1462;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1460:
+yy1462:
+	YYDEBUG(1462, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -21434,30 +23002,32 @@ yy1460:
 			}
 		}
 	}
-yy1461:
+yy1463:
+	YYDEBUG(1463, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych <= '@') {
 			if (yych == ')') goto yy164;
 			goto yy3;
 		} else {
-			if (yych == 'R') goto yy1473;
+			if (yych == 'R') goto yy1475;
 			if (yych <= 'X') goto yy166;
-			goto yy1474;
+			goto yy1476;
 		}
 	} else {
 		if (yych <= 'r') {
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'q') goto yy166;
-			goto yy1473;
+			goto yy1475;
 		} else {
-			if (yych == 'y') goto yy1474;
+			if (yych == 'y') goto yy1476;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1462:
+yy1464:
+	YYDEBUG(1464, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -21466,7 +23036,7 @@ yy1462:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'C') goto yy166;
-			goto yy1467;
+			goto yy1469;
 		}
 	} else {
 		if (yych <= 'c') {
@@ -21474,12 +23044,13 @@ yy1462:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'd') goto yy1467;
+			if (yych <= 'd') goto yy1469;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1463:
+yy1465:
+	YYDEBUG(1465, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -21495,12 +23066,13 @@ yy1463:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'n') goto yy1464;
+			if (yych <= 'n') goto yy1466;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1464:
+yy1466:
+	YYDEBUG(1466, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'D') {
 		if (yych <= ')') {
@@ -21516,12 +23088,13 @@ yy1464:
 			if (yych <= '`') goto yy191;
 			goto yy167;
 		} else {
-			if (yych <= 'd') goto yy1465;
+			if (yych <= 'd') goto yy1467;
 			if (yych <= 'z') goto yy167;
 			goto yy191;
 		}
 	}
-yy1465:
+yy1467:
+	YYDEBUG(1467, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'A') {
 		if (yych == ')') goto yy164;
@@ -21531,12 +23104,13 @@ yy1465:
 			if (yych <= 'Z') goto yy168;
 			goto yy3;
 		} else {
-			if (yych <= 'a') goto yy1466;
+			if (yych <= 'a') goto yy1468;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1466:
+yy1468:
+	YYDEBUG(1468, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'Y') {
 		if (yych <= ')') {
@@ -21558,7 +23132,8 @@ yy1466:
 			goto yy3;
 		}
 	}
-yy1467:
+yy1469:
+	YYDEBUG(1469, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -21574,12 +23149,13 @@ yy1467:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'n') goto yy1468;
+			if (yych <= 'n') goto yy1470;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1468:
+yy1470:
+	YYDEBUG(1470, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'I') {
 		if (yych <= ')') {
@@ -21595,12 +23171,13 @@ yy1468:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'i') goto yy1469;
+			if (yych <= 'i') goto yy1471;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1469:
+yy1471:
+	YYDEBUG(1471, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'G') {
 		if (yych <= ')') {
@@ -21616,29 +23193,33 @@ yy1469:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 'g') goto yy1470;
+			if (yych <= 'g') goto yy1472;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1470:
+yy1472:
+	YYDEBUG(1472, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'H') goto yy1471;
+		if (yych <= 'H') goto yy1473;
 		if (yych != 'h') goto yy3;
 	}
-yy1471:
+yy1473:
+	YYDEBUG(1473, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'T') goto yy1472;
+	if (yych == 'T') goto yy1474;
 	if (yych != 't') goto yy56;
-yy1472:
+yy1474:
+	YYDEBUG(1474, *YYCURSOR);
 	yych = *++YYCURSOR;
-	goto yy1418;
-yy1473:
+	goto yy1420;
+yy1475:
+	YYDEBUG(1475, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -21666,7 +23247,7 @@ yy1473:
 				if (yych <= '9') goto yy220;
 				goto yy218;
 			} else {
-				if (yych == 'C') goto yy1475;
+				if (yych == 'C') goto yy1477;
 				goto yy167;
 			}
 		} else {
@@ -21674,13 +23255,14 @@ yy1473:
 				if (yych <= '`') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'c') goto yy1475;
+				if (yych <= 'c') goto yy1477;
 				if (yych <= 'z') goto yy167;
 				goto yy218;
 			}
 		}
 	}
-yy1474:
+yy1476:
+	YYDEBUG(1476, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '-') {
@@ -21705,7 +23287,8 @@ yy1474:
 			goto yy218;
 		}
 	}
-yy1475:
+yy1477:
+	YYDEBUG(1477, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -21727,7 +23310,8 @@ yy1475:
 			goto yy3;
 		}
 	}
-yy1476:
+yy1478:
+	YYDEBUG(1478, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -21744,14 +23328,14 @@ yy1476:
 				if (yych <= '/') goto yy172;
 				goto yy3;
 			} else {
-				if (yych == 'R') goto yy1473;
+				if (yych == 'R') goto yy1475;
 				goto yy166;
 			}
 		}
 	} else {
 		if (yych <= '`') {
 			if (yych <= 'Z') {
-				if (yych <= 'Y') goto yy1474;
+				if (yych <= 'Y') goto yy1476;
 				goto yy166;
 			} else {
 				if (yych == '_') goto yy172;
@@ -21759,16 +23343,17 @@ yy1476:
 			}
 		} else {
 			if (yych <= 'x') {
-				if (yych == 'r') goto yy1488;
+				if (yych == 'r') goto yy1490;
 				goto yy171;
 			} else {
-				if (yych <= 'y') goto yy1489;
+				if (yych <= 'y') goto yy1491;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1477:
+yy1479:
+	YYDEBUG(1479, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -21783,7 +23368,7 @@ yy1477:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'D') goto yy1467;
+			if (yych <= 'D') goto yy1469;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21792,13 +23377,14 @@ yy1477:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'd') goto yy1482;
+				if (yych <= 'd') goto yy1484;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1478:
+yy1480:
+	YYDEBUG(1480, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -21813,7 +23399,7 @@ yy1478:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1464;
+			if (yych <= 'N') goto yy1466;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21822,13 +23408,14 @@ yy1478:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'n') goto yy1479;
+				if (yych <= 'n') goto yy1481;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1479:
+yy1481:
+	YYDEBUG(1481, *YYCURSOR);
 	yyaccept = 4;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -21843,7 +23430,7 @@ yy1479:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'D') goto yy1465;
+			if (yych <= 'D') goto yy1467;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy191;
 			goto yy172;
@@ -21852,13 +23439,14 @@ yy1479:
 				if (yych <= '`') goto yy191;
 				goto yy175;
 			} else {
-				if (yych <= 'd') goto yy1480;
+				if (yych <= 'd') goto yy1482;
 				if (yych <= 'z') goto yy175;
 				goto yy191;
 			}
 		}
 	}
-yy1480:
+yy1482:
+	YYDEBUG(1482, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '@') {
@@ -21872,18 +23460,19 @@ yy1480:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'A') goto yy1466;
+			if (yych <= 'A') goto yy1468;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
 		} else {
 			if (yych <= '`') goto yy3;
-			if (yych <= 'a') goto yy1481;
+			if (yych <= 'a') goto yy1483;
 			if (yych <= 'z') goto yy176;
 			goto yy3;
 		}
 	}
-yy1481:
+yy1483:
+	YYDEBUG(1483, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'X') {
@@ -21913,7 +23502,8 @@ yy1481:
 			}
 		}
 	}
-yy1482:
+yy1484:
+	YYDEBUG(1484, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -21928,7 +23518,7 @@ yy1482:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1468;
+			if (yych <= 'N') goto yy1470;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21937,13 +23527,14 @@ yy1482:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'n') goto yy1483;
+				if (yych <= 'n') goto yy1485;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1483:
+yy1485:
+	YYDEBUG(1485, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'H') {
@@ -21958,7 +23549,7 @@ yy1483:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'I') goto yy1469;
+			if (yych <= 'I') goto yy1471;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21967,13 +23558,14 @@ yy1483:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'i') goto yy1484;
+				if (yych <= 'i') goto yy1486;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1484:
+yy1486:
+	YYDEBUG(1486, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'F') {
@@ -21988,7 +23580,7 @@ yy1484:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'G') goto yy1470;
+			if (yych <= 'G') goto yy1472;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -21997,13 +23589,14 @@ yy1484:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 'g') goto yy1485;
+				if (yych <= 'g') goto yy1487;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1485:
+yy1487:
+	YYDEBUG(1487, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -22017,19 +23610,21 @@ yy1485:
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych <= 'H') goto yy1471;
+			if (yych <= 'H') goto yy1473;
 			if (yych == '_') goto yy172;
 			goto yy3;
 		} else {
-			if (yych == 'h') goto yy1486;
+			if (yych == 'h') goto yy1488;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1486:
+yy1488:
+	YYDEBUG(1488, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'T') goto yy1472;
+	if (yych == 'T') goto yy1474;
 	if (yych != 't') goto yy179;
+	YYDEBUG(1489, *YYCURSOR);
 	yyaccept = 30;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -22037,13 +23632,14 @@ yy1486:
 	}
 	if (yych <= '.') {
 		if (yych == '-') goto yy172;
-		goto yy1418;
+		goto yy1420;
 	} else {
 		if (yych <= '/') goto yy172;
 		if (yych == '_') goto yy172;
-		goto yy1418;
+		goto yy1420;
 	}
-yy1488:
+yy1490:
+	YYDEBUG(1490, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -22071,7 +23667,7 @@ yy1488:
 				if (yych <= '@') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'C') goto yy1475;
+				if (yych <= 'C') goto yy1477;
 				if (yych <= 'Z') goto yy167;
 				goto yy218;
 			}
@@ -22081,13 +23677,14 @@ yy1488:
 				if (yych <= '`') goto yy218;
 				goto yy175;
 			} else {
-				if (yych <= 'c') goto yy1490;
+				if (yych <= 'c') goto yy1492;
 				if (yych <= 'z') goto yy175;
 				goto yy218;
 			}
 		}
 	}
-yy1489:
+yy1491:
+	YYDEBUG(1491, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '.') {
@@ -22122,7 +23719,8 @@ yy1489:
 			}
 		}
 	}
-yy1490:
+yy1492:
+	YYDEBUG(1492, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -22152,7 +23750,8 @@ yy1490:
 			}
 		}
 	}
-yy1491:
+yy1493:
+	YYDEBUG(1493, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'W') {
 		if (yych <= 'N') {
@@ -22160,29 +23759,30 @@ yy1491:
 			if (yych <= '@') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'O') goto yy1499;
+			if (yych <= 'O') goto yy1501;
 			if (yych <= 'U') goto yy166;
-			if (yych <= 'V') goto yy1500;
-			goto yy1497;
+			if (yych <= 'V') goto yy1502;
+			goto yy1499;
 		}
 	} else {
 		if (yych <= 'o') {
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '`') goto yy3;
 			if (yych <= 'n') goto yy166;
-			goto yy1499;
+			goto yy1501;
 		} else {
 			if (yych <= 'v') {
 				if (yych <= 'u') goto yy166;
-				goto yy1500;
+				goto yy1502;
 			} else {
-				if (yych <= 'w') goto yy1497;
+				if (yych <= 'w') goto yy1499;
 				if (yych <= 'z') goto yy166;
 				goto yy3;
 			}
 		}
 	}
-yy1492:
+yy1494:
+	YYDEBUG(1494, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'X') {
 		if (yych <= ')') {
@@ -22191,7 +23791,7 @@ yy1492:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'W') goto yy166;
-			goto yy1496;
+			goto yy1498;
 		}
 	} else {
 		if (yych <= 'w') {
@@ -22199,12 +23799,13 @@ yy1492:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'x') goto yy1496;
+			if (yych <= 'x') goto yy1498;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1493:
+yy1495:
+	YYDEBUG(1495, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -22220,12 +23821,13 @@ yy1493:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 'n') goto yy1494;
+			if (yych <= 'n') goto yy1496;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1494:
+yy1496:
+	YYDEBUG(1496, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -22241,12 +23843,13 @@ yy1494:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1495;
+			if (yych <= 't') goto yy1497;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1495:
+yy1497:
+	YYDEBUG(1497, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'H') {
 		if (yych <= ')') {
@@ -22268,7 +23871,8 @@ yy1495:
 			goto yy3;
 		}
 	}
-yy1496:
+yy1498:
+	YYDEBUG(1498, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -22277,7 +23881,7 @@ yy1496:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'S') goto yy167;
-			goto yy1426;
+			goto yy1428;
 		}
 	} else {
 		if (yych <= 's') {
@@ -22285,21 +23889,23 @@ yy1496:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1426;
+			if (yych <= 't') goto yy1428;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1497:
+yy1499:
+	YYDEBUG(1499, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '@') {
 		if (yych == ')') goto yy164;
 	} else {
 		if (yych <= 'Z') goto yy167;
-		if (yych <= '`') goto yy1498;
+		if (yych <= '`') goto yy1500;
 		if (yych <= 'z') goto yy167;
 	}
-yy1498:
+yy1500:
+	YYDEBUG(1500, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("now");
 		TIMELIB_INIT;
@@ -22307,7 +23913,8 @@ yy1498:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1499:
+yy1501:
+	YYDEBUG(1501, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'N') {
 		if (yych <= ')') {
@@ -22316,7 +23923,7 @@ yy1499:
 		} else {
 			if (yych <= '@') goto yy3;
 			if (yych <= 'M') goto yy167;
-			goto yy1505;
+			goto yy1507;
 		}
 	} else {
 		if (yych <= 'm') {
@@ -22324,12 +23931,13 @@ yy1499:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 'n') goto yy1505;
+			if (yych <= 'n') goto yy1507;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1500:
+yy1502:
+	YYDEBUG(1502, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
@@ -22364,13 +23972,14 @@ yy1500:
 				if (yych <= '`') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'e') goto yy1501;
+				if (yych <= 'e') goto yy1503;
 				if (yych <= 'z') goto yy167;
 				goto yy218;
 			}
 		}
 	}
-yy1501:
+yy1503:
+	YYDEBUG(1503, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'M') {
 		if (yych <= ')') {
@@ -22386,12 +23995,13 @@ yy1501:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'm') goto yy1502;
+			if (yych <= 'm') goto yy1504;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1502:
+yy1504:
+	YYDEBUG(1504, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'B') {
 		if (yych <= ')') {
@@ -22407,36 +24017,40 @@ yy1502:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 'b') goto yy1503;
+			if (yych <= 'b') goto yy1505;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1503:
+yy1505:
+	YYDEBUG(1505, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'E') goto yy1504;
+		if (yych <= 'E') goto yy1506;
 		if (yych != 'e') goto yy3;
 	}
-yy1504:
+yy1506:
+	YYDEBUG(1506, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych == 'r') goto yy229;
 	goto yy56;
-yy1505:
+yy1507:
+	YYDEBUG(1507, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '@') {
 		if (yych == ')') goto yy164;
 	} else {
 		if (yych <= 'Z') goto yy168;
-		if (yych <= '`') goto yy1506;
+		if (yych <= '`') goto yy1508;
 		if (yych <= 'z') goto yy168;
 	}
-yy1506:
+yy1508:
+	YYDEBUG(1508, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("noon");
 		TIMELIB_INIT;
@@ -22447,7 +24061,8 @@ yy1506:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1507:
+yy1509:
+	YYDEBUG(1509, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'V') {
@@ -22465,15 +24080,15 @@ yy1507:
 				if (yych <= '@') goto yy3;
 				goto yy166;
 			} else {
-				if (yych <= 'O') goto yy1499;
+				if (yych <= 'O') goto yy1501;
 				if (yych <= 'U') goto yy166;
-				goto yy1500;
+				goto yy1502;
 			}
 		}
 	} else {
 		if (yych <= 'n') {
 			if (yych <= '^') {
-				if (yych <= 'W') goto yy1497;
+				if (yych <= 'W') goto yy1499;
 				if (yych <= 'Z') goto yy166;
 				goto yy3;
 			} else {
@@ -22483,17 +24098,18 @@ yy1507:
 			}
 		} else {
 			if (yych <= 'v') {
-				if (yych <= 'o') goto yy1514;
+				if (yych <= 'o') goto yy1516;
 				if (yych <= 'u') goto yy171;
-				goto yy1515;
+				goto yy1517;
 			} else {
-				if (yych <= 'w') goto yy1513;
+				if (yych <= 'w') goto yy1515;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1508:
+yy1510:
+	YYDEBUG(1510, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'W') {
@@ -22508,7 +24124,7 @@ yy1508:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'X') goto yy1496;
+			if (yych <= 'X') goto yy1498;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22517,13 +24133,14 @@ yy1508:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'x') goto yy1512;
+				if (yych <= 'x') goto yy1514;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1509:
+yy1511:
+	YYDEBUG(1511, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -22538,7 +24155,7 @@ yy1509:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1494;
+			if (yych <= 'N') goto yy1496;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22547,13 +24164,14 @@ yy1509:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 'n') goto yy1510;
+				if (yych <= 'n') goto yy1512;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1510:
+yy1512:
+	YYDEBUG(1512, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -22568,7 +24186,7 @@ yy1510:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1495;
+			if (yych <= 'T') goto yy1497;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22577,13 +24195,14 @@ yy1510:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1511;
+				if (yych <= 't') goto yy1513;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1511:
+yy1513:
+	YYDEBUG(1513, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'G') {
@@ -22613,7 +24232,8 @@ yy1511:
 			}
 		}
 	}
-yy1512:
+yy1514:
+	YYDEBUG(1514, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -22628,7 +24248,7 @@ yy1512:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1426;
+			if (yych <= 'T') goto yy1428;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22637,36 +24257,38 @@ yy1512:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1458;
+				if (yych <= 't') goto yy1460;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1513:
+yy1515:
+	YYDEBUG(1515, *YYCURSOR);
 	yyaccept = 31;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
 		if (yych <= ',') {
 			if (yych == ')') goto yy164;
-			goto yy1498;
+			goto yy1500;
 		} else {
-			if (yych == '.') goto yy1498;
+			if (yych == '.') goto yy1500;
 			goto yy172;
 		}
 	} else {
 		if (yych <= '^') {
-			if (yych <= '@') goto yy1498;
+			if (yych <= '@') goto yy1500;
 			if (yych <= 'Z') goto yy167;
-			goto yy1498;
+			goto yy1500;
 		} else {
 			if (yych <= '_') goto yy172;
-			if (yych <= '`') goto yy1498;
+			if (yych <= '`') goto yy1500;
 			if (yych <= 'z') goto yy175;
-			goto yy1498;
+			goto yy1500;
 		}
 	}
-yy1514:
+yy1516:
+	YYDEBUG(1516, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'M') {
@@ -22681,7 +24303,7 @@ yy1514:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'N') goto yy1505;
+			if (yych <= 'N') goto yy1507;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22690,13 +24312,14 @@ yy1514:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 'n') goto yy1520;
+				if (yych <= 'n') goto yy1522;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1515:
+yy1517:
+	YYDEBUG(1517, *YYCURSOR);
 	yyaccept = 5;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '9') {
@@ -22724,7 +24347,7 @@ yy1515:
 				if (yych <= '@') goto yy218;
 				goto yy167;
 			} else {
-				if (yych <= 'E') goto yy1501;
+				if (yych <= 'E') goto yy1503;
 				if (yych <= 'Z') goto yy167;
 				goto yy218;
 			}
@@ -22734,13 +24357,14 @@ yy1515:
 				if (yych <= '`') goto yy218;
 				goto yy175;
 			} else {
-				if (yych <= 'e') goto yy1516;
+				if (yych <= 'e') goto yy1518;
 				if (yych <= 'z') goto yy175;
 				goto yy218;
 			}
 		}
 	}
-yy1516:
+yy1518:
+	YYDEBUG(1518, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'L') {
@@ -22755,7 +24379,7 @@ yy1516:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'M') goto yy1502;
+			if (yych <= 'M') goto yy1504;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22764,13 +24388,14 @@ yy1516:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'm') goto yy1517;
+				if (yych <= 'm') goto yy1519;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1517:
+yy1519:
+	YYDEBUG(1519, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'A') {
@@ -22785,7 +24410,7 @@ yy1517:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'B') goto yy1503;
+			if (yych <= 'B') goto yy1505;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22794,13 +24419,14 @@ yy1517:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 'b') goto yy1518;
+				if (yych <= 'b') goto yy1520;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1518:
+yy1520:
+	YYDEBUG(1520, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -22814,44 +24440,47 @@ yy1518:
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych <= 'E') goto yy1504;
+			if (yych <= 'E') goto yy1506;
 			if (yych == '_') goto yy172;
 			goto yy3;
 		} else {
-			if (yych == 'e') goto yy1519;
+			if (yych == 'e') goto yy1521;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1519:
+yy1521:
+	YYDEBUG(1521, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'R') goto yy229;
 	if (yych == 'r') goto yy341;
 	goto yy179;
-yy1520:
+yy1522:
+	YYDEBUG(1522, *YYCURSOR);
 	yyaccept = 32;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') {
 		if (yych <= ',') {
 			if (yych == ')') goto yy164;
-			goto yy1506;
+			goto yy1508;
 		} else {
-			if (yych == '.') goto yy1506;
+			if (yych == '.') goto yy1508;
 			goto yy172;
 		}
 	} else {
 		if (yych <= '^') {
-			if (yych <= '@') goto yy1506;
+			if (yych <= '@') goto yy1508;
 			if (yych <= 'Z') goto yy168;
-			goto yy1506;
+			goto yy1508;
 		} else {
 			if (yych <= '_') goto yy172;
-			if (yych <= '`') goto yy1506;
+			if (yych <= '`') goto yy1508;
 			if (yych <= 'z') goto yy176;
-			goto yy1506;
+			goto yy1508;
 		}
 	}
-yy1521:
+yy1523:
+	YYDEBUG(1523, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'S') {
 		if (yych <= ')') {
@@ -22867,12 +24496,13 @@ yy1521:
 			if (yych <= '`') goto yy3;
 			goto yy166;
 		} else {
-			if (yych <= 's') goto yy1522;
+			if (yych <= 's') goto yy1524;
 			if (yych <= 'z') goto yy166;
 			goto yy3;
 		}
 	}
-yy1522:
+yy1524:
+	YYDEBUG(1524, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'T') {
 		if (yych <= ')') {
@@ -22888,12 +24518,13 @@ yy1522:
 			if (yych <= '`') goto yy3;
 			goto yy167;
 		} else {
-			if (yych <= 't') goto yy1523;
+			if (yych <= 't') goto yy1525;
 			if (yych <= 'z') goto yy167;
 			goto yy3;
 		}
 	}
-yy1523:
+yy1525:
+	YYDEBUG(1525, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'E') {
 		if (yych <= ')') {
@@ -22909,12 +24540,13 @@ yy1523:
 			if (yych <= '`') goto yy3;
 			goto yy168;
 		} else {
-			if (yych <= 'e') goto yy1524;
+			if (yych <= 'e') goto yy1526;
 			if (yych <= 'z') goto yy168;
 			goto yy3;
 		}
 	}
-yy1524:
+yy1526:
+	YYDEBUG(1526, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'R') {
 		if (yych <= ')') {
@@ -22930,32 +24562,37 @@ yy1524:
 			if (yych <= '`') goto yy3;
 			goto yy169;
 		} else {
-			if (yych <= 'r') goto yy1525;
+			if (yych <= 'r') goto yy1527;
 			if (yych <= 'z') goto yy169;
 			goto yy3;
 		}
 	}
-yy1525:
+yy1527:
+	YYDEBUG(1527, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
 		if (yych == ')') goto yy164;
 		goto yy3;
 	} else {
-		if (yych <= 'D') goto yy1526;
+		if (yych <= 'D') goto yy1528;
 		if (yych != 'd') goto yy3;
 	}
-yy1526:
+yy1528:
+	YYDEBUG(1528, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'A') goto yy1527;
+	if (yych == 'A') goto yy1529;
 	if (yych != 'a') goto yy56;
-yy1527:
+yy1529:
+	YYDEBUG(1529, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'Y') goto yy1528;
+	if (yych == 'Y') goto yy1530;
 	if (yych != 'y') goto yy56;
-yy1528:
+yy1530:
+	YYDEBUG(1530, *YYCURSOR);
 	++YYCURSOR;
-yy1529:
+yy1531:
+	YYDEBUG(1531, *YYCURSOR);
 	{
 		DEBUG_OUTPUT("yesterday");
 		TIMELIB_INIT;
@@ -22966,7 +24603,8 @@ yy1529:
 		TIMELIB_DEINIT;
 		return TIMELIB_RELATIVE;
 	}
-yy1530:
+yy1532:
+	YYDEBUG(1532, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'R') {
@@ -22981,7 +24619,7 @@ yy1530:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'S') goto yy1522;
+			if (yych <= 'S') goto yy1524;
 			if (yych <= 'Z') goto yy166;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -22990,13 +24628,14 @@ yy1530:
 				if (yych <= '`') goto yy3;
 				goto yy171;
 			} else {
-				if (yych <= 's') goto yy1531;
+				if (yych <= 's') goto yy1533;
 				if (yych <= 'z') goto yy171;
 				goto yy3;
 			}
 		}
 	}
-yy1531:
+yy1533:
+	YYDEBUG(1533, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'S') {
@@ -23011,7 +24650,7 @@ yy1531:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'T') goto yy1523;
+			if (yych <= 'T') goto yy1525;
 			if (yych <= 'Z') goto yy167;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -23020,13 +24659,14 @@ yy1531:
 				if (yych <= '`') goto yy3;
 				goto yy175;
 			} else {
-				if (yych <= 't') goto yy1532;
+				if (yych <= 't') goto yy1534;
 				if (yych <= 'z') goto yy175;
 				goto yy3;
 			}
 		}
 	}
-yy1532:
+yy1534:
+	YYDEBUG(1534, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'D') {
@@ -23041,7 +24681,7 @@ yy1532:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'E') goto yy1524;
+			if (yych <= 'E') goto yy1526;
 			if (yych <= 'Z') goto yy168;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -23050,13 +24690,14 @@ yy1532:
 				if (yych <= '`') goto yy3;
 				goto yy176;
 			} else {
-				if (yych <= 'e') goto yy1533;
+				if (yych <= 'e') goto yy1535;
 				if (yych <= 'z') goto yy176;
 				goto yy3;
 			}
 		}
 	}
-yy1533:
+yy1535:
+	YYDEBUG(1535, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'Q') {
@@ -23071,7 +24712,7 @@ yy1533:
 		}
 	} else {
 		if (yych <= '_') {
-			if (yych <= 'R') goto yy1525;
+			if (yych <= 'R') goto yy1527;
 			if (yych <= 'Z') goto yy169;
 			if (yych <= '^') goto yy3;
 			goto yy172;
@@ -23080,13 +24721,14 @@ yy1533:
 				if (yych <= '`') goto yy3;
 				goto yy177;
 			} else {
-				if (yych <= 'r') goto yy1534;
+				if (yych <= 'r') goto yy1536;
 				if (yych <= 'z') goto yy177;
 				goto yy3;
 			}
 		}
 	}
-yy1534:
+yy1536:
+	YYDEBUG(1536, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= 'C') {
@@ -23100,22 +24742,25 @@ yy1534:
 		}
 	} else {
 		if (yych <= '`') {
-			if (yych <= 'D') goto yy1526;
+			if (yych <= 'D') goto yy1528;
 			if (yych == '_') goto yy172;
 			goto yy3;
 		} else {
-			if (yych == 'd') goto yy1535;
+			if (yych == 'd') goto yy1537;
 			if (yych <= 'z') goto yy178;
 			goto yy3;
 		}
 	}
-yy1535:
+yy1537:
+	YYDEBUG(1537, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'A') goto yy1527;
+	if (yych == 'A') goto yy1529;
 	if (yych != 'a') goto yy179;
+	YYDEBUG(1538, *YYCURSOR);
 	yych = *++YYCURSOR;
-	if (yych == 'Y') goto yy1528;
+	if (yych == 'Y') goto yy1530;
 	if (yych != 'y') goto yy179;
+	YYDEBUG(1539, *YYCURSOR);
 	yyaccept = 33;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 16) {
@@ -23123,11 +24768,11 @@ yy1535:
 	}
 	if (yych <= '.') {
 		if (yych == '-') goto yy172;
-		goto yy1529;
+		goto yy1531;
 	} else {
 		if (yych <= '/') goto yy172;
 		if (yych == '_') goto yy172;
-		goto yy1529;
+		goto yy1531;
 	}
 }
 
diff -pruN 7.1.8-1/ext/date/lib/parse_date.re 7.1.13-1/ext/date/lib/parse_date.re
--- 7.1.8-1/ext/date/lib/parse_date.re	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/lib/parse_date.re	2018-01-03 02:32:29.000000000 +0000
@@ -931,8 +931,8 @@ isoweek          = year4 "-"? "W" weekof
 exif             = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
 firstdayof       = 'first day of';
 lastdayof        = 'last day of';
-backof           = 'back of ' hour24 space? meridian?;
-frontof          = 'front of ' hour24 space? meridian?;
+backof           = 'back of ' hour24 (space? meridian)?;
+frontof          = 'front of ' hour24 (space? meridian)?;
 
 /* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
 clf              = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
diff -pruN 7.1.8-1/ext/date/lib/parse_iso_intervals.c 7.1.13-1/ext/date/lib/parse_iso_intervals.c
--- 7.1.8-1/ext/date/lib/parse_iso_intervals.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/lib/parse_iso_intervals.c	2018-01-03 02:32:29.000000000 +0000
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Aug 13 10:30:12 2015 */
+/* Generated by re2c 0.15.3 on Wed Aug 16 15:55:55 2017 */
 #line 1 "ext/date/lib/parse_iso_intervals.re"
 /*
  * The MIT License (MIT)
@@ -258,45 +258,45 @@ std:
 
 
 
-#line 262 "ext/date/lib/parse_iso_intervals.c"
+#line 262 "<stdout>"
 {
 	YYCTYPE yych;
 	unsigned int yyaccept = 0;
 	static const unsigned char yybm[] = {
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		128, 128, 128, 128, 128, 128, 128, 128,
-		128, 128,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
-		  0,   0,   0,   0,   0,   0,   0,   0,
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		128, 128, 128, 128, 128, 128, 128, 128, 
+		128, 128,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
+		  0,   0,   0,   0,   0,   0,   0,   0, 
 	};
-
+	YYDEBUG(0, *YYCURSOR);
 	if ((YYLIMIT - YYCURSOR) < 20) YYFILL(20);
 	yych = *YYCURSOR;
 	if (yych <= ',') {
@@ -321,29 +321,34 @@ std:
 			if (yych != 'R') goto yy11;
 		}
 	}
+	YYDEBUG(2, *YYCURSOR);
 	++YYCURSOR;
 	if ((yych = *YYCURSOR) <= '/') goto yy3;
 	if (yych <= '9') goto yy98;
 yy3:
+	YYDEBUG(3, *YYCURSOR);
 #line 395 "ext/date/lib/parse_iso_intervals.re"
 	{
 		add_error(s, "Unexpected character");
 		goto std;
 	}
-#line 334 "ext/date/lib/parse_iso_intervals.c"
+#line 336 "<stdout>"
 yy4:
+	YYDEBUG(4, *YYCURSOR);
 	yyaccept = 0;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy3;
 	if (yych <= '9') goto yy59;
 	goto yy3;
 yy5:
+	YYDEBUG(5, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
 	if (yych <= '9') goto yy12;
 	if (yych == 'T') goto yy14;
 yy6:
+	YYDEBUG(6, *YYCURSOR);
 #line 322 "ext/date/lib/parse_iso_intervals.re"
 	{
 		timelib_sll nr;
@@ -385,26 +390,32 @@ yy6:
 		TIMELIB_DEINIT;
 		return TIMELIB_PERIOD;
 	}
-#line 389 "ext/date/lib/parse_iso_intervals.c"
+#line 394 "<stdout>"
 yy7:
+	YYDEBUG(7, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(8, *YYCURSOR);
 #line 384 "ext/date/lib/parse_iso_intervals.re"
 	{
 		goto std;
 	}
-#line 396 "ext/date/lib/parse_iso_intervals.c"
+#line 403 "<stdout>"
 yy9:
+	YYDEBUG(9, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(10, *YYCURSOR);
 #line 389 "ext/date/lib/parse_iso_intervals.re"
 	{
 		s->pos = cursor; s->line++;
 		goto std;
 	}
-#line 404 "ext/date/lib/parse_iso_intervals.c"
+#line 413 "<stdout>"
 yy11:
+	YYDEBUG(11, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy3;
 yy12:
+	YYDEBUG(12, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= '9') {
@@ -421,13 +432,15 @@ yy12:
 		}
 	}
 yy13:
+	YYDEBUG(13, *YYCURSOR);
 	YYCURSOR = YYMARKER;
-	if (yyaccept <= 0) {
+	if (yyaccept == 0) {
 		goto yy3;
 	} else {
 		goto yy6;
 	}
 yy14:
+	YYDEBUG(14, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yybm[0+yych] & 128) {
@@ -435,9 +448,11 @@ yy14:
 	}
 	goto yy6;
 yy15:
+	YYDEBUG(15, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
+	YYDEBUG(16, *YYCURSOR);
 	if (yybm[0+yych] & 128) {
 		goto yy15;
 	}
@@ -449,23 +464,28 @@ yy15:
 		if (yych != 'S') goto yy13;
 	}
 yy17:
+	YYDEBUG(17, *YYCURSOR);
 	yych = *++YYCURSOR;
 	goto yy6;
 yy18:
+	YYDEBUG(18, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
 	if (yych <= '9') goto yy22;
 	goto yy6;
 yy19:
+	YYDEBUG(19, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
 	if (yych >= ':') goto yy6;
 yy20:
+	YYDEBUG(20, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
+	YYDEBUG(21, *YYCURSOR);
 	if (yych <= 'L') {
 		if (yych <= '/') goto yy13;
 		if (yych <= '9') goto yy20;
@@ -476,18 +496,22 @@ yy20:
 		goto yy13;
 	}
 yy22:
+	YYDEBUG(22, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(23, *YYCURSOR);
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy22;
 	if (yych == 'S') goto yy17;
 	goto yy13;
 yy24:
+	YYDEBUG(24, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'T') goto yy14;
 	goto yy6;
 yy25:
+	YYDEBUG(25, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= '9') {
@@ -507,6 +531,7 @@ yy25:
 		}
 	}
 yy26:
+	YYDEBUG(26, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
@@ -514,6 +539,7 @@ yy26:
 	if (yych == 'T') goto yy14;
 	goto yy6;
 yy27:
+	YYDEBUG(27, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
@@ -521,6 +547,7 @@ yy27:
 	if (yych == 'T') goto yy14;
 	goto yy6;
 yy28:
+	YYDEBUG(28, *YYCURSOR);
 	yyaccept = 1;
 	yych = *(YYMARKER = ++YYCURSOR);
 	if (yych <= '/') goto yy6;
@@ -528,9 +555,11 @@ yy28:
 	if (yych == 'T') goto yy14;
 	goto yy6;
 yy29:
+	YYDEBUG(29, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 	yych = *YYCURSOR;
+	YYDEBUG(30, *YYCURSOR);
 	if (yych <= 'D') {
 		if (yych <= '/') goto yy13;
 		if (yych <= '9') goto yy29;
@@ -546,9 +575,11 @@ yy29:
 		}
 	}
 yy31:
+	YYDEBUG(31, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 	yych = *YYCURSOR;
+	YYDEBUG(32, *YYCURSOR);
 	if (yych <= 'C') {
 		if (yych <= '/') goto yy13;
 		if (yych <= '9') goto yy31;
@@ -559,14 +590,17 @@ yy31:
 		goto yy13;
 	}
 yy33:
+	YYDEBUG(33, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 	yych = *YYCURSOR;
+	YYDEBUG(34, *YYCURSOR);
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy33;
 	if (yych == 'D') goto yy24;
 	goto yy13;
 yy35:
+	YYDEBUG(35, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= 'L') {
 		if (yych <= '9') {
@@ -585,18 +619,22 @@ yy35:
 			goto yy13;
 		}
 	}
+	YYDEBUG(36, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy39;
+	YYDEBUG(37, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '0') goto yy40;
 	if (yych <= '1') goto yy41;
 	goto yy13;
 yy38:
+	YYDEBUG(38, *YYCURSOR);
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
 	yych = *YYCURSOR;
 yy39:
+	YYDEBUG(39, *YYCURSOR);
 	if (yych <= 'L') {
 		if (yych <= '9') {
 			if (yych <= '/') goto yy13;
@@ -616,17 +654,21 @@ yy39:
 		}
 	}
 yy40:
+	YYDEBUG(40, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy42;
 	goto yy13;
 yy41:
+	YYDEBUG(41, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '3') goto yy13;
 yy42:
+	YYDEBUG(42, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy13;
+	YYDEBUG(43, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '0') goto yy44;
@@ -634,54 +676,69 @@ yy42:
 	if (yych <= '3') goto yy46;
 	goto yy13;
 yy44:
+	YYDEBUG(44, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy47;
 	goto yy13;
 yy45:
+	YYDEBUG(45, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy47;
 	goto yy13;
 yy46:
+	YYDEBUG(46, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '2') goto yy13;
 yy47:
+	YYDEBUG(47, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'T') goto yy13;
+	YYDEBUG(48, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '1') goto yy49;
 	if (yych <= '2') goto yy50;
 	goto yy13;
 yy49:
+	YYDEBUG(49, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy51;
 	goto yy13;
 yy50:
+	YYDEBUG(50, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '5') goto yy13;
 yy51:
+	YYDEBUG(51, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy13;
+	YYDEBUG(52, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(53, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(54, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy13;
+	YYDEBUG(55, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(56, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(57, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(58, *YYCURSOR);
 #line 364 "ext/date/lib/parse_iso_intervals.re"
 	{
 		DEBUG_OUTPUT("combinedrep");
@@ -701,14 +758,17 @@ yy51:
 		TIMELIB_DEINIT;
 		return TIMELIB_PERIOD;
 	}
-#line 705 "ext/date/lib/parse_iso_intervals.c"
+#line 762 "<stdout>"
 yy59:
+	YYDEBUG(59, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(60, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(61, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
 		if (yych == '-') goto yy64;
@@ -719,33 +779,40 @@ yy59:
 		goto yy13;
 	}
 yy62:
+	YYDEBUG(62, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy13;
 	if (yych <= '9') goto yy85;
 	goto yy13;
 yy63:
+	YYDEBUG(63, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '2') goto yy85;
 	goto yy13;
 yy64:
+	YYDEBUG(64, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '0') goto yy65;
 	if (yych <= '1') goto yy66;
 	goto yy13;
 yy65:
+	YYDEBUG(65, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy13;
 	if (yych <= '9') goto yy67;
 	goto yy13;
 yy66:
+	YYDEBUG(66, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '3') goto yy13;
 yy67:
+	YYDEBUG(67, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != '-') goto yy13;
+	YYDEBUG(68, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '0') goto yy69;
@@ -753,57 +820,73 @@ yy67:
 	if (yych <= '3') goto yy71;
 	goto yy13;
 yy69:
+	YYDEBUG(69, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy13;
 	if (yych <= '9') goto yy72;
 	goto yy13;
 yy70:
+	YYDEBUG(70, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy72;
 	goto yy13;
 yy71:
+	YYDEBUG(71, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '2') goto yy13;
 yy72:
+	YYDEBUG(72, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'T') goto yy13;
+	YYDEBUG(73, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '1') goto yy74;
 	if (yych <= '2') goto yy75;
 	goto yy13;
 yy74:
+	YYDEBUG(74, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy76;
 	goto yy13;
 yy75:
+	YYDEBUG(75, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '5') goto yy13;
 yy76:
+	YYDEBUG(76, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy13;
+	YYDEBUG(77, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(78, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(79, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != ':') goto yy13;
+	YYDEBUG(80, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(81, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(82, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'Z') goto yy13;
 yy83:
+	YYDEBUG(83, *YYCURSOR);
 	++YYCURSOR;
+	YYDEBUG(84, *YYCURSOR);
 #line 298 "ext/date/lib/parse_iso_intervals.re"
 	{
 		timelib_time *current;
@@ -827,8 +910,9 @@ yy83:
 		TIMELIB_DEINIT;
 		return TIMELIB_ISO_DATE;
 	}
-#line 831 "ext/date/lib/parse_iso_intervals.c"
+#line 914 "<stdout>"
 yy85:
+	YYDEBUG(85, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '0') goto yy86;
@@ -836,59 +920,74 @@ yy85:
 	if (yych <= '3') goto yy88;
 	goto yy13;
 yy86:
+	YYDEBUG(86, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '0') goto yy13;
 	if (yych <= '9') goto yy89;
 	goto yy13;
 yy87:
+	YYDEBUG(87, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy89;
 	goto yy13;
 yy88:
+	YYDEBUG(88, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '2') goto yy13;
 yy89:
+	YYDEBUG(89, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych != 'T') goto yy13;
+	YYDEBUG(90, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '1') goto yy91;
 	if (yych <= '2') goto yy92;
 	goto yy13;
 yy91:
+	YYDEBUG(91, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych <= '9') goto yy93;
 	goto yy13;
 yy92:
+	YYDEBUG(92, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '5') goto yy13;
 yy93:
+	YYDEBUG(93, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(94, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(95, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= '6') goto yy13;
+	YYDEBUG(96, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy13;
 	if (yych >= ':') goto yy13;
+	YYDEBUG(97, *YYCURSOR);
 	yych = *++YYCURSOR;
 	if (yych == 'Z') goto yy83;
 	goto yy13;
 yy98:
+	YYDEBUG(98, *YYCURSOR);
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
+	YYDEBUG(99, *YYCURSOR);
 	if (yych <= '/') goto yy100;
 	if (yych <= '9') goto yy98;
 yy100:
+	YYDEBUG(100, *YYCURSOR);
 #line 287 "ext/date/lib/parse_iso_intervals.re"
 	{
 		DEBUG_OUTPUT("recurrences");
@@ -899,7 +998,7 @@ yy100:
 		s->have_recurrences = 1;
 		return TIMELIB_PERIOD;
 	}
-#line 903 "ext/date/lib/parse_iso_intervals.c"
+#line 1002 "<stdout>"
 }
 #line 399 "ext/date/lib/parse_iso_intervals.re"
 
diff -pruN 7.1.8-1/ext/date/lib/timezonedb.h 7.1.13-1/ext/date/lib/timezonedb.h
--- 7.1.8-1/ext/date/lib/timezonedb.h	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/lib/timezonedb.h	2018-01-03 02:32:29.000000000 +0000
@@ -1,5 +1,5 @@
 /* This is a generated file, do not modify */
-const timelib_tzdb_index_entry timezonedb_idx_builtin[594] = {
+const timelib_tzdb_index_entry timezonedb_idx_builtin[593] = {
 #ifdef TIMELIB_SUPPORTS_V2DATA
 # define FOR_V2(v2,v1) v2
 #else
@@ -34,576 +34,575 @@ const timelib_tzdb_index_entry timezoned
 	{ "Africa/Juba"                       , FOR_V2(0x00338C, 0x00154B) },
 	{ "Africa/Kampala"                    , FOR_V2(0x003643, 0x001663) },
 	{ "Africa/Khartoum"                   , FOR_V2(0x00376C, 0x0016F0) },
-	{ "Africa/Kigali"                     , FOR_V2(0x003A23, 0x001808) },
-	{ "Africa/Kinshasa"                   , FOR_V2(0x003ADA, 0x001862) },
-	{ "Africa/Lagos"                      , FOR_V2(0x003BAA, 0x0018D5) },
-	{ "Africa/Libreville"                 , FOR_V2(0x003C61, 0x00192F) },
-	{ "Africa/Lome"                       , FOR_V2(0x003D18, 0x001989) },
-	{ "Africa/Luanda"                     , FOR_V2(0x003DCE, 0x0019E3) },
-	{ "Africa/Lubumbashi"                 , FOR_V2(0x003E85, 0x001A3D) },
-	{ "Africa/Lusaka"                     , FOR_V2(0x003F55, 0x001AB0) },
-	{ "Africa/Malabo"                     , FOR_V2(0x00400C, 0x001B0A) },
-	{ "Africa/Maputo"                     , FOR_V2(0x0040C3, 0x001B64) },
-	{ "Africa/Maseru"                     , FOR_V2(0x00417A, 0x001BBE) },
-	{ "Africa/Mbabane"                    , FOR_V2(0x004295, 0x001C3D) },
-	{ "Africa/Mogadishu"                  , FOR_V2(0x0043B0, 0x001CBC) },
-	{ "Africa/Monrovia"                   , FOR_V2(0x0044D9, 0x001D49) },
-	{ "Africa/Nairobi"                    , FOR_V2(0x0045CE, 0x001DBC) },
-	{ "Africa/Ndjamena"                   , FOR_V2(0x0046F7, 0x001E49) },
-	{ "Africa/Niamey"                     , FOR_V2(0x0047E4, 0x001EBA) },
-	{ "Africa/Nouakchott"                 , FOR_V2(0x00489B, 0x001F14) },
-	{ "Africa/Ouagadougou"                , FOR_V2(0x004951, 0x001F6E) },
-	{ "Africa/Porto-Novo"                 , FOR_V2(0x004A07, 0x001FC8) },
-	{ "Africa/Sao_Tome"                   , FOR_V2(0x004ABE, 0x002022) },
-	{ "Africa/Timbuktu"                   , FOR_V2(0x004B74, 0x00207C) },
-	{ "Africa/Tripoli"                    , FOR_V2(0x004C2A, 0x0020D6) },
-	{ "Africa/Tunis"                      , FOR_V2(0x004EC5, 0x0021E4) },
-	{ "Africa/Windhoek"                   , FOR_V2(0x005197, 0x002307) },
-	{ "America/Adak"                      , FOR_V2(0x0057DB, 0x002564) },
-	{ "America/Anchorage"                 , FOR_V2(0x006134, 0x0028E5) },
-	{ "America/Anguilla"                  , FOR_V2(0x006A9F, 0x002C70) },
-	{ "America/Antigua"                   , FOR_V2(0x006B55, 0x002CCA) },
-	{ "America/Araguaina"                 , FOR_V2(0x006C0B, 0x002D24) },
-	{ "America/Argentina/Buenos_Aires"    , FOR_V2(0x006FAE, 0x002E92) },
-	{ "America/Argentina/Catamarca"       , FOR_V2(0x007424, 0x003059) },
-	{ "America/Argentina/ComodRivadavia"  , FOR_V2(0x0078A0, 0x003226) },
-	{ "America/Argentina/Cordoba"         , FOR_V2(0x007D01, 0x0033D8) },
-	{ "America/Argentina/Jujuy"           , FOR_V2(0x008198, 0x0035C0) },
-	{ "America/Argentina/La_Rioja"        , FOR_V2(0x0085E7, 0x003772) },
-	{ "America/Argentina/Mendoza"         , FOR_V2(0x008A63, 0x003936) },
-	{ "America/Argentina/Rio_Gallegos"    , FOR_V2(0x008ED0, 0x003AF4) },
-	{ "America/Argentina/Salta"           , FOR_V2(0x009340, 0x003CB5) },
-	{ "America/Argentina/San_Juan"        , FOR_V2(0x00979B, 0x003E73) },
-	{ "America/Argentina/San_Luis"        , FOR_V2(0x009C17, 0x004037) },
-	{ "America/Argentina/Tucuman"         , FOR_V2(0x00A0A3, 0x004203) },
-	{ "America/Argentina/Ushuaia"         , FOR_V2(0x00A52C, 0x0043CB) },
-	{ "America/Aruba"                     , FOR_V2(0x00A9A2, 0x004592) },
-	{ "America/Asuncion"                  , FOR_V2(0x00AA82, 0x0045FF) },
-	{ "America/Atikokan"                  , FOR_V2(0x00B2AB, 0x004901) },
-	{ "America/Atka"                      , FOR_V2(0x00B431, 0x0049C5) },
-	{ "America/Bahia"                     , FOR_V2(0x00BD7A, 0x004D36) },
-	{ "America/Bahia_Banderas"            , FOR_V2(0x00C1A5, 0x004ED2) },
-	{ "America/Barbados"                  , FOR_V2(0x00C805, 0x005150) },
-	{ "America/Belem"                     , FOR_V2(0x00C969, 0x0051EF) },
-	{ "America/Belize"                    , FOR_V2(0x00CBE1, 0x0052F8) },
-	{ "America/Blanc-Sablon"              , FOR_V2(0x00CFBF, 0x00547A) },
-	{ "America/Boa_Vista"                 , FOR_V2(0x00D11A, 0x005528) },
-	{ "America/Bogota"                    , FOR_V2(0x00D3BF, 0x00563A) },
-	{ "America/Boise"                     , FOR_V2(0x00D4DA, 0x0056BB) },
-	{ "America/Buenos_Aires"              , FOR_V2(0x00DE69, 0x005A5A) },
-	{ "America/Cambridge_Bay"             , FOR_V2(0x00E2CA, 0x005C0C) },
-	{ "America/Campo_Grande"              , FOR_V2(0x00EB1C, 0x005F41) },
-	{ "America/Cancun"                    , FOR_V2(0x00F31A, 0x006234) },
-	{ "America/Caracas"                   , FOR_V2(0x00F67A, 0x0063A3) },
-	{ "America/Catamarca"                 , FOR_V2(0x00F7A7, 0x00642B) },
-	{ "America/Cayenne"                   , FOR_V2(0x00FC08, 0x0065DD) },
-	{ "America/Cayman"                    , FOR_V2(0x00FCF4, 0x00664D) },
-	{ "America/Chicago"                   , FOR_V2(0x00FDCB, 0x0066B3) },
-	{ "America/Chihuahua"                 , FOR_V2(0x010BEC, 0x006BEB) },
-	{ "America/Coral_Harbour"             , FOR_V2(0x011210, 0x006E54) },
-	{ "America/Cordoba"                   , FOR_V2(0x011375, 0x006EF7) },
-	{ "America/Costa_Rica"                , FOR_V2(0x0117D6, 0x0070A9) },
-	{ "America/Creston"                   , FOR_V2(0x011937, 0x007144) },
-	{ "America/Cuiaba"                    , FOR_V2(0x011A3E, 0x0071C9) },
-	{ "America/Curacao"                   , FOR_V2(0x012219, 0x0074AB) },
-	{ "America/Danmarkshavn"              , FOR_V2(0x0122F9, 0x007518) },
-	{ "America/Dawson"                    , FOR_V2(0x0125E7, 0x007659) },
-	{ "America/Dawson_Creek"              , FOR_V2(0x012E37, 0x007984) },
-	{ "America/Denver"                    , FOR_V2(0x013286, 0x007B46) },
-	{ "America/Detroit"                   , FOR_V2(0x013C3C, 0x007EE5) },
-	{ "America/Dominica"                  , FOR_V2(0x014509, 0x00823A) },
-	{ "America/Edmonton"                  , FOR_V2(0x0145BF, 0x008294) },
-	{ "America/Eirunepe"                  , FOR_V2(0x014F4A, 0x00862C) },
-	{ "America/El_Salvador"               , FOR_V2(0x015217, 0x008756) },
-	{ "America/Ensenada"                  , FOR_V2(0x01531D, 0x0087D0) },
-	{ "America/Fort_Nelson"               , FOR_V2(0x015C5D, 0x008B3E) },
-	{ "America/Fort_Wayne"                , FOR_V2(0x016546, 0x008E9D) },
-	{ "America/Fortaleza"                 , FOR_V2(0x016BDD, 0x009118) },
-	{ "America/Glace_Bay"                 , FOR_V2(0x016EF5, 0x009267) },
-	{ "America/Godthab"                   , FOR_V2(0x0177BA, 0x0095B7) },
-	{ "America/Goose_Bay"                 , FOR_V2(0x017F40, 0x00988C) },
-	{ "America/Grand_Turk"                , FOR_V2(0x018BFF, 0x009D59) },
-	{ "America/Grenada"                   , FOR_V2(0x019112, 0x009F49) },
-	{ "America/Guadeloupe"                , FOR_V2(0x0191C8, 0x009FA3) },
-	{ "America/Guatemala"                 , FOR_V2(0x01927E, 0x009FFD) },
-	{ "America/Guayaquil"                 , FOR_V2(0x0193BC, 0x00A08B) },
-	{ "America/Guyana"                    , FOR_V2(0x0194E9, 0x00A11E) },
-	{ "America/Halifax"                   , FOR_V2(0x0195FF, 0x00A1A1) },
-	{ "America/Havana"                    , FOR_V2(0x01A397, 0x00A6AC) },
-	{ "America/Hermosillo"                , FOR_V2(0x01AD28, 0x00AA30) },
-	{ "America/Indiana/Indianapolis"      , FOR_V2(0x01AF19, 0x00AB1B) },
-	{ "America/Indiana/Knox"              , FOR_V2(0x01B5C9, 0x00ADAF) },
-	{ "America/Indiana/Marengo"           , FOR_V2(0x01BF6F, 0x00B14E) },
-	{ "America/Indiana/Petersburg"        , FOR_V2(0x01C655, 0x00B3F4) },
-	{ "America/Indiana/Tell_City"         , FOR_V2(0x01CDED, 0x00B6D7) },
-	{ "America/Indiana/Vevay"             , FOR_V2(0x01D4D4, 0x00B980) },
-	{ "America/Indiana/Vincennes"         , FOR_V2(0x01DA89, 0x00BBBB) },
-	{ "America/Indiana/Winamac"           , FOR_V2(0x01E158, 0x00BE5C) },
-	{ "America/Indianapolis"              , FOR_V2(0x01E875, 0x00C115) },
-	{ "America/Inuvik"                    , FOR_V2(0x01EF0C, 0x00C390) },
-	{ "America/Iqaluit"                   , FOR_V2(0x01F6B4, 0x00C676) },
-	{ "America/Jamaica"                   , FOR_V2(0x01FEDC, 0x00C99F) },
-	{ "America/Jujuy"                     , FOR_V2(0x0200E3, 0x00CA75) },
-	{ "America/Juneau"                    , FOR_V2(0x020528, 0x00CC1D) },
-	{ "America/Kentucky/Louisville"       , FOR_V2(0x020E82, 0x00CFA2) },
-	{ "America/Kentucky/Monticello"       , FOR_V2(0x021989, 0x00D3C6) },
-	{ "America/Knox_IN"                   , FOR_V2(0x0222E2, 0x00D74A) },
-	{ "America/Kralendijk"                , FOR_V2(0x022C73, 0x00DAD4) },
-	{ "America/La_Paz"                    , FOR_V2(0x022D53, 0x00DB41) },
-	{ "America/Lima"                      , FOR_V2(0x022E62, 0x00DBBE) },
-	{ "America/Los_Angeles"               , FOR_V2(0x02301D, 0x00DC77) },
-	{ "America/Louisville"                , FOR_V2(0x023B4D, 0x00E094) },
-	{ "America/Lower_Princes"             , FOR_V2(0x024636, 0x00E49A) },
-	{ "America/Maceio"                    , FOR_V2(0x024716, 0x00E507) },
-	{ "America/Managua"                   , FOR_V2(0x024A34, 0x00E64A) },
-	{ "America/Manaus"                    , FOR_V2(0x024C0F, 0x00E716) },
-	{ "America/Marigot"                   , FOR_V2(0x024EA0, 0x00E826) },
-	{ "America/Martinique"                , FOR_V2(0x024F56, 0x00E880) },
-	{ "America/Matamoros"                 , FOR_V2(0x025063, 0x00E8FD) },
-	{ "America/Mazatlan"                  , FOR_V2(0x025635, 0x00EB4F) },
-	{ "America/Mendoza"                   , FOR_V2(0x025C92, 0x00EDD6) },
-	{ "America/Menominee"                 , FOR_V2(0x0260F3, 0x00EF88) },
-	{ "America/Merida"                    , FOR_V2(0x026A09, 0x00F2FA) },
-	{ "America/Metlakatla"                , FOR_V2(0x026FE5, 0x00F542) },
-	{ "America/Mexico_City"               , FOR_V2(0x027592, 0x00F772) },
-	{ "America/Miquelon"                  , FOR_V2(0x027BFC, 0x00F9E1) },
-	{ "America/Moncton"                   , FOR_V2(0x0282A8, 0x00FC5B) },
-	{ "America/Monterrey"                 , FOR_V2(0x028F27, 0x0100FE) },
-	{ "America/Montevideo"                , FOR_V2(0x029500, 0x010357) },
-	{ "America/Montreal"                  , FOR_V2(0x029B0D, 0x0105AB) },
-	{ "America/Montserrat"                , FOR_V2(0x02A8C8, 0x010AAC) },
-	{ "America/Nassau"                    , FOR_V2(0x02A97E, 0x010B06) },
-	{ "America/New_York"                  , FOR_V2(0x02B276, 0x010E50) },
-	{ "America/Nipigon"                   , FOR_V2(0x02C06F, 0x011374) },
-	{ "America/Nome"                      , FOR_V2(0x02C8EF, 0x0116AC) },
-	{ "America/Noronha"                   , FOR_V2(0x02D250, 0x011A2F) },
-	{ "America/North_Dakota/Beulah"       , FOR_V2(0x02D552, 0x011B68) },
-	{ "America/North_Dakota/Center"       , FOR_V2(0x02DEC8, 0x011EF7) },
-	{ "America/North_Dakota/New_Salem"    , FOR_V2(0x02E83E, 0x012286) },
-	{ "America/Ojinaga"                   , FOR_V2(0x02F1BA, 0x01261B) },
-	{ "America/Panama"                    , FOR_V2(0x02F7E0, 0x012886) },
-	{ "America/Pangnirtung"               , FOR_V2(0x02F8B7, 0x0128EC) },
-	{ "America/Paramaribo"                , FOR_V2(0x030119, 0x012C2E) },
-	{ "America/Phoenix"                   , FOR_V2(0x03024D, 0x012CBE) },
-	{ "America/Port-au-Prince"            , FOR_V2(0x0303D7, 0x012D7A) },
-	{ "America/Port_of_Spain"             , FOR_V2(0x030992, 0x012FA1) },
-	{ "America/Porto_Acre"                , FOR_V2(0x030A48, 0x012FFB) },
-	{ "America/Porto_Velho"               , FOR_V2(0x030CEA, 0x01310C) },
-	{ "America/Puerto_Rico"               , FOR_V2(0x030F58, 0x01320B) },
-	{ "America/Punta_Arenas"              , FOR_V2(0x031063, 0x013287) },
-	{ "America/Rainy_River"               , FOR_V2(0x0317FA, 0x013570) },
-	{ "America/Rankin_Inlet"              , FOR_V2(0x03207B, 0x0138A9) },
-	{ "America/Recife"                    , FOR_V2(0x032827, 0x013B94) },
-	{ "America/Regina"                    , FOR_V2(0x032B23, 0x013CC7) },
-	{ "America/Resolute"                  , FOR_V2(0x032F26, 0x013E6A) },
-	{ "America/Rio_Branco"                , FOR_V2(0x0336D3, 0x014156) },
-	{ "America/Rosario"                   , FOR_V2(0x033979, 0x01426B) },
-	{ "America/Santa_Isabel"              , FOR_V2(0x033DDA, 0x01441D) },
-	{ "America/Santarem"                  , FOR_V2(0x03471A, 0x01478B) },
-	{ "America/Santiago"                  , FOR_V2(0x0349A9, 0x01489A) },
-	{ "America/Santo_Domingo"             , FOR_V2(0x0353B1, 0x014C58) },
-	{ "America/Sao_Paulo"                 , FOR_V2(0x0355A8, 0x014D30) },
-	{ "America/Scoresbysund"              , FOR_V2(0x035DCA, 0x015047) },
-	{ "America/Shiprock"                  , FOR_V2(0x03657D, 0x015337) },
-	{ "America/Sitka"                     , FOR_V2(0x036F1E, 0x0156C1) },
-	{ "America/St_Barthelemy"             , FOR_V2(0x03786B, 0x015A39) },
-	{ "America/St_Johns"                  , FOR_V2(0x037921, 0x015A93) },
-	{ "America/St_Kitts"                  , FOR_V2(0x03879F, 0x015FF9) },
-	{ "America/St_Lucia"                  , FOR_V2(0x038855, 0x016053) },
-	{ "America/St_Thomas"                 , FOR_V2(0x03890B, 0x0160AD) },
-	{ "America/St_Vincent"                , FOR_V2(0x0389C1, 0x016107) },
-	{ "America/Swift_Current"             , FOR_V2(0x038A77, 0x016161) },
-	{ "America/Tegucigalpa"               , FOR_V2(0x038CD3, 0x01626B) },
-	{ "America/Thule"                     , FOR_V2(0x038DF5, 0x0162EF) },
-	{ "America/Thunder_Bay"               , FOR_V2(0x039407, 0x016539) },
-	{ "America/Tijuana"                   , FOR_V2(0x039CD0, 0x01688A) },
-	{ "America/Toronto"                   , FOR_V2(0x03A631, 0x016C19) },
-	{ "America/Tortola"                   , FOR_V2(0x03B409, 0x017137) },
-	{ "America/Vancouver"                 , FOR_V2(0x03B4BF, 0x017191) },
-	{ "America/Virgin"                    , FOR_V2(0x03C039, 0x0175D4) },
-	{ "America/Whitehorse"                , FOR_V2(0x03C0EF, 0x01762E) },
-	{ "America/Winnipeg"                  , FOR_V2(0x03C93F, 0x017959) },
-	{ "America/Yakutat"                   , FOR_V2(0x03D4B3, 0x017DA1) },
-	{ "America/Yellowknife"               , FOR_V2(0x03DDD9, 0x01810A) },
-	{ "Antarctica/Casey"                  , FOR_V2(0x03E5B8, 0x018409) },
-	{ "Antarctica/Davis"                  , FOR_V2(0x03E703, 0x0184A2) },
-	{ "Antarctica/DumontDUrville"         , FOR_V2(0x03E84B, 0x018538) },
-	{ "Antarctica/Macquarie"              , FOR_V2(0x03E93F, 0x0185B1) },
-	{ "Antarctica/Mawson"                 , FOR_V2(0x03EF62, 0x01880F) },
-	{ "Antarctica/McMurdo"                , FOR_V2(0x03F055, 0x018885) },
-	{ "Antarctica/Palmer"                 , FOR_V2(0x03FA23, 0x018C3A) },
-	{ "Antarctica/Rothera"                , FOR_V2(0x03FFCD, 0x018E6C) },
-	{ "Antarctica/South_Pole"             , FOR_V2(0x04009A, 0x018ED2) },
-	{ "Antarctica/Syowa"                  , FOR_V2(0x040A42, 0x019261) },
-	{ "Antarctica/Troll"                  , FOR_V2(0x040B0E, 0x0192C5) },
-	{ "Antarctica/Vostok"                 , FOR_V2(0x040FB7, 0x019487) },
-	{ "Arctic/Longyearbyen"               , FOR_V2(0x041084, 0x0194EC) },
-	{ "Asia/Aden"                         , FOR_V2(0x04195B, 0x01982F) },
-	{ "Asia/Almaty"                       , FOR_V2(0x041A22, 0x01988E) },
-	{ "Asia/Amman"                        , FOR_V2(0x041E4C, 0x019A46) },
-	{ "Asia/Anadyr"                       , FOR_V2(0x0425AD, 0x019D01) },
-	{ "Asia/Aqtau"                        , FOR_V2(0x042A92, 0x019EFA) },
-	{ "Asia/Aqtobe"                       , FOR_V2(0x042EAC, 0x01A0AB) },
-	{ "Asia/Ashgabat"                     , FOR_V2(0x0432DC, 0x01A261) },
-	{ "Asia/Ashkhabad"                    , FOR_V2(0x043573, 0x01A378) },
-	{ "Asia/Atyrau"                       , FOR_V2(0x04380A, 0x01A48F) },
-	{ "Asia/Baghdad"                      , FOR_V2(0x043C2C, 0x01A644) },
-	{ "Asia/Bahrain"                      , FOR_V2(0x044024, 0x01A7CF) },
-	{ "Asia/Baku"                         , FOR_V2(0x044111, 0x01A83F) },
-	{ "Asia/Bangkok"                      , FOR_V2(0x044612, 0x01AA35) },
-	{ "Asia/Barnaul"                      , FOR_V2(0x0446FA, 0x01AAA0) },
-	{ "Asia/Beirut"                       , FOR_V2(0x044BFB, 0x01AC9F) },
-	{ "Asia/Bishkek"                      , FOR_V2(0x045486, 0x01AFBD) },
-	{ "Asia/Brunei"                       , FOR_V2(0x0458A7, 0x01B163) },
-	{ "Asia/Calcutta"                     , FOR_V2(0x045998, 0x01B1D5) },
-	{ "Asia/Chita"                        , FOR_V2(0x045AC9, 0x01B260) },
-	{ "Asia/Choibalsan"                   , FOR_V2(0x045FD2, 0x01B468) },
-	{ "Asia/Chongqing"                    , FOR_V2(0x0463CF, 0x01B607) },
-	{ "Asia/Chungking"                    , FOR_V2(0x046579, 0x01B6B8) },
-	{ "Asia/Colombo"                      , FOR_V2(0x046723, 0x01B769) },
-	{ "Asia/Dacca"                        , FOR_V2(0x0468CC, 0x01B826) },
-	{ "Asia/Damascus"                     , FOR_V2(0x046A4A, 0x01B8D2) },
-	{ "Asia/Dhaka"                        , FOR_V2(0x047366, 0x01BC27) },
-	{ "Asia/Dili"                         , FOR_V2(0x0474E4, 0x01BCD3) },
-	{ "Asia/Dubai"                        , FOR_V2(0x0475ED, 0x01BD4D) },
-	{ "Asia/Dushanbe"                     , FOR_V2(0x0476B4, 0x01BDAC) },
-	{ "Asia/Famagusta"                    , FOR_V2(0x04792D, 0x01BEB6) },
-	{ "Asia/Gaza"                         , FOR_V2(0x047EED, 0x01C0F1) },
-	{ "Asia/Harbin"                       , FOR_V2(0x0487FA, 0x01C44D) },
-	{ "Asia/Hebron"                       , FOR_V2(0x0489A4, 0x01C4FE) },
-	{ "Asia/Ho_Chi_Minh"                  , FOR_V2(0x0492CC, 0x01C863) },
-	{ "Asia/Hong_Kong"                    , FOR_V2(0x04945D, 0x01C917) },
-	{ "Asia/Hovd"                         , FOR_V2(0x04990E, 0x01CAE6) },
-	{ "Asia/Irkutsk"                      , FOR_V2(0x049CDE, 0x01CC7D) },
-	{ "Asia/Istanbul"                     , FOR_V2(0x04A200, 0x01CE92) },
-	{ "Asia/Jakarta"                      , FOR_V2(0x04AA82, 0x01D1CA) },
-	{ "Asia/Jayapura"                     , FOR_V2(0x04AC23, 0x01D28F) },
-	{ "Asia/Jerusalem"                    , FOR_V2(0x04AD60, 0x01D343) },
-	{ "Asia/Kabul"                        , FOR_V2(0x04B645, 0x01D68B) },
-	{ "Asia/Kamchatka"                    , FOR_V2(0x04B736, 0x01D6F8) },
-	{ "Asia/Karachi"                      , FOR_V2(0x04BC02, 0x01D8E4) },
-	{ "Asia/Kashgar"                      , FOR_V2(0x04BDAF, 0x01D9A5) },
-	{ "Asia/Kathmandu"                    , FOR_V2(0x04BE76, 0x01DA04) },
-	{ "Asia/Katmandu"                     , FOR_V2(0x04BF70, 0x01DA78) },
-	{ "Asia/Khandyga"                     , FOR_V2(0x04C06A, 0x01DAEC) },
-	{ "Asia/Kolkata"                      , FOR_V2(0x04C5B3, 0x01DD17) },
-	{ "Asia/Krasnoyarsk"                  , FOR_V2(0x04C6E4, 0x01DDA2) },
-	{ "Asia/Kuala_Lumpur"                 , FOR_V2(0x04CBE4, 0x01DFAA) },
-	{ "Asia/Kuching"                      , FOR_V2(0x04CDAC, 0x01E083) },
-	{ "Asia/Kuwait"                       , FOR_V2(0x04CFCF, 0x01E175) },
-	{ "Asia/Macao"                        , FOR_V2(0x04D096, 0x01E1D4) },
-	{ "Asia/Macau"                        , FOR_V2(0x04D395, 0x01E302) },
-	{ "Asia/Magadan"                      , FOR_V2(0x04D694, 0x01E430) },
-	{ "Asia/Makassar"                     , FOR_V2(0x04DB9A, 0x01E634) },
-	{ "Asia/Manila"                       , FOR_V2(0x04DD0F, 0x01E70B) },
-	{ "Asia/Muscat"                       , FOR_V2(0x04DE8A, 0x01E7A9) },
-	{ "Asia/Nicosia"                      , FOR_V2(0x04DF51, 0x01E808) },
-	{ "Asia/Novokuznetsk"                 , FOR_V2(0x04E750, 0x01EB08) },
-	{ "Asia/Novosibirsk"                  , FOR_V2(0x04EC1A, 0x01ECF3) },
-	{ "Asia/Omsk"                         , FOR_V2(0x04F121, 0x01EEF8) },
-	{ "Asia/Oral"                         , FOR_V2(0x04F615, 0x01F0F4) },
-	{ "Asia/Phnom_Penh"                   , FOR_V2(0x04FA3F, 0x01F2A8) },
-	{ "Asia/Pontianak"                    , FOR_V2(0x04FB27, 0x01F313) },
-	{ "Asia/Pyongyang"                    , FOR_V2(0x04FCD4, 0x01F3E5) },
-	{ "Asia/Qatar"                        , FOR_V2(0x04FDF0, 0x01F46A) },
-	{ "Asia/Qyzylorda"                    , FOR_V2(0x04FEDD, 0x01F4DA) },
-	{ "Asia/Rangoon"                      , FOR_V2(0x05031D, 0x01F6A0) },
-	{ "Asia/Riyadh"                       , FOR_V2(0x050452, 0x01F72B) },
-	{ "Asia/Saigon"                       , FOR_V2(0x050519, 0x01F78A) },
-	{ "Asia/Sakhalin"                     , FOR_V2(0x0506AA, 0x01F83E) },
-	{ "Asia/Samarkand"                    , FOR_V2(0x050BA0, 0x01FA3E) },
-	{ "Asia/Seoul"                        , FOR_V2(0x050E28, 0x01FB56) },
-	{ "Asia/Shanghai"                     , FOR_V2(0x051047, 0x01FC3C) },
-	{ "Asia/Singapore"                    , FOR_V2(0x0511FD, 0x01FCF9) },
-	{ "Asia/Srednekolymsk"                , FOR_V2(0x0513B1, 0x01FDBE) },
-	{ "Asia/Taipei"                       , FOR_V2(0x0518BB, 0x01FFCF) },
-	{ "Asia/Tashkent"                     , FOR_V2(0x051BDD, 0x02010C) },
-	{ "Asia/Tbilisi"                      , FOR_V2(0x051E75, 0x02022C) },
-	{ "Asia/Tehran"                       , FOR_V2(0x0522B9, 0x0203DF) },
-	{ "Asia/Tel_Aviv"                     , FOR_V2(0x05297B, 0x020669) },
-	{ "Asia/Thimbu"                       , FOR_V2(0x053260, 0x0209B1) },
-	{ "Asia/Thimphu"                      , FOR_V2(0x053351, 0x020A23) },
-	{ "Asia/Tokyo"                        , FOR_V2(0x053442, 0x020A95) },
-	{ "Asia/Tomsk"                        , FOR_V2(0x05358C, 0x020B26) },
-	{ "Asia/Ujung_Pandang"                , FOR_V2(0x053A8D, 0x020D25) },
-	{ "Asia/Ulaanbaatar"                  , FOR_V2(0x053BB9, 0x020DB3) },
-	{ "Asia/Ulan_Bator"                   , FOR_V2(0x053F73, 0x020F34) },
-	{ "Asia/Urumqi"                       , FOR_V2(0x054318, 0x0210A0) },
-	{ "Asia/Ust-Nera"                     , FOR_V2(0x0543EC, 0x02110C) },
-	{ "Asia/Vientiane"                    , FOR_V2(0x054916, 0x021324) },
-	{ "Asia/Vladivostok"                  , FOR_V2(0x0549FE, 0x02138F) },
-	{ "Asia/Yakutsk"                      , FOR_V2(0x054EF9, 0x021591) },
-	{ "Asia/Yangon"                       , FOR_V2(0x0553F3, 0x021793) },
-	{ "Asia/Yekaterinburg"                , FOR_V2(0x055528, 0x02181E) },
-	{ "Asia/Yerevan"                      , FOR_V2(0x055A43, 0x021A2C) },
-	{ "Atlantic/Azores"                   , FOR_V2(0x055EFE, 0x021C09) },
-	{ "Atlantic/Bermuda"                  , FOR_V2(0x056CA5, 0x022115) },
-	{ "Atlantic/Canary"                   , FOR_V2(0x057485, 0x0223FB) },
-	{ "Atlantic/Cape_Verde"               , FOR_V2(0x057C16, 0x0226D5) },
-	{ "Atlantic/Faeroe"                   , FOR_V2(0x057D2E, 0x022757) },
-	{ "Atlantic/Faroe"                    , FOR_V2(0x05845F, 0x022A00) },
-	{ "Atlantic/Jan_Mayen"                , FOR_V2(0x058B90, 0x022CA9) },
-	{ "Atlantic/Madeira"                  , FOR_V2(0x059467, 0x022FEC) },
-	{ "Atlantic/Reykjavik"                , FOR_V2(0x05A20E, 0x023501) },
-	{ "Atlantic/South_Georgia"            , FOR_V2(0x05A6BE, 0x0236D2) },
-	{ "Atlantic/St_Helena"                , FOR_V2(0x05A77F, 0x02372C) },
-	{ "Atlantic/Stanley"                  , FOR_V2(0x05A835, 0x023786) },
-	{ "Australia/ACT"                     , FOR_V2(0x05AD24, 0x02396D) },
-	{ "Australia/Adelaide"                , FOR_V2(0x05B5DF, 0x023CA1) },
-	{ "Australia/Brisbane"                , FOR_V2(0x05BEB8, 0x023FE0) },
-	{ "Australia/Broken_Hill"             , FOR_V2(0x05C09F, 0x0240BA) },
-	{ "Australia/Canberra"                , FOR_V2(0x05C9A9, 0x02440B) },
-	{ "Australia/Currie"                  , FOR_V2(0x05D264, 0x02473F) },
-	{ "Australia/Darwin"                  , FOR_V2(0x05DB35, 0x024A89) },
-	{ "Australia/Eucla"                   , FOR_V2(0x05DC96, 0x024B22) },
-	{ "Australia/Hobart"                  , FOR_V2(0x05DEB2, 0x024C0F) },
-	{ "Australia/LHI"                     , FOR_V2(0x05E7F2, 0x024F80) },
-	{ "Australia/Lindeman"                , FOR_V2(0x05EF5F, 0x02523D) },
-	{ "Australia/Lord_Howe"               , FOR_V2(0x05F194, 0x025338) },
-	{ "Australia/Melbourne"               , FOR_V2(0x05F911, 0x025605) },
-	{ "Australia/North"                   , FOR_V2(0x0601D4, 0x025941) },
-	{ "Australia/NSW"                     , FOR_V2(0x060323, 0x0259C8) },
-	{ "Australia/Perth"                   , FOR_V2(0x060BDE, 0x025CFC) },
-	{ "Australia/Queensland"              , FOR_V2(0x060DE7, 0x025DE7) },
-	{ "Australia/South"                   , FOR_V2(0x060FB7, 0x025EAA) },
-	{ "Australia/Sydney"                  , FOR_V2(0x061881, 0x0261DA) },
-	{ "Australia/Tasmania"                , FOR_V2(0x062158, 0x02652A) },
-	{ "Australia/Victoria"                , FOR_V2(0x062A83, 0x026886) },
-	{ "Australia/West"                    , FOR_V2(0x06333E, 0x026BBA) },
-	{ "Australia/Yancowinna"              , FOR_V2(0x063529, 0x026C87) },
-	{ "Brazil/Acre"                       , FOR_V2(0x063E17, 0x026FBC) },
-	{ "Brazil/DeNoronha"                  , FOR_V2(0x0640B9, 0x0270CD) },
-	{ "Brazil/East"                       , FOR_V2(0x0643AB, 0x0271F6) },
-	{ "Brazil/West"                       , FOR_V2(0x064B97, 0x0274D7) },
-	{ "Canada/Atlantic"                   , FOR_V2(0x064E19, 0x0275D8) },
-	{ "Canada/Central"                    , FOR_V2(0x065B93, 0x027AC5) },
-	{ "Canada/East-Saskatchewan"          , FOR_V2(0x0666EA, 0x027EF0) },
-	{ "Canada/Eastern"                    , FOR_V2(0x066AD8, 0x02807E) },
-	{ "Canada/Mountain"                   , FOR_V2(0x067893, 0x02857F) },
-	{ "Canada/Newfoundland"               , FOR_V2(0x068201, 0x0288FA) },
-	{ "Canada/Pacific"                    , FOR_V2(0x06905D, 0x028E3E) },
-	{ "Canada/Saskatchewan"               , FOR_V2(0x069BBE, 0x029268) },
-	{ "Canada/Yukon"                      , FOR_V2(0x069FAC, 0x0293F6) },
-	{ "CET"                               , FOR_V2(0x06A7E5, 0x02970A) },
-	{ "Chile/Continental"                 , FOR_V2(0x06B027, 0x029A13) },
-	{ "Chile/EasterIsland"                , FOR_V2(0x06BA1D, 0x029DBF) },
-	{ "CST6CDT"                           , FOR_V2(0x06C2EB, 0x02A0FF) },
-	{ "Cuba"                              , FOR_V2(0x06CBED, 0x02A450) },
-	{ "EET"                               , FOR_V2(0x06D57E, 0x02A7D4) },
-	{ "Egypt"                             , FOR_V2(0x06DCDE, 0x02AA87) },
-	{ "Eire"                              , FOR_V2(0x06E49E, 0x02AD67) },
-	{ "EST"                               , FOR_V2(0x06F291, 0x02B289) },
-	{ "EST5EDT"                           , FOR_V2(0x06F31C, 0x02B2CD) },
-	{ "Etc/GMT"                           , FOR_V2(0x06FC1E, 0x02B61E) },
-	{ "Etc/GMT+0"                         , FOR_V2(0x06FCA9, 0x02B662) },
-	{ "Etc/GMT+1"                         , FOR_V2(0x06FD34, 0x02B6A6) },
-	{ "Etc/GMT+10"                        , FOR_V2(0x06FDD4, 0x02B6F4) },
-	{ "Etc/GMT+11"                        , FOR_V2(0x06FE75, 0x02B742) },
-	{ "Etc/GMT+12"                        , FOR_V2(0x06FF16, 0x02B790) },
-	{ "Etc/GMT+2"                         , FOR_V2(0x06FFB7, 0x02B7DE) },
-	{ "Etc/GMT+3"                         , FOR_V2(0x070057, 0x02B82C) },
-	{ "Etc/GMT+4"                         , FOR_V2(0x0700F7, 0x02B87A) },
-	{ "Etc/GMT+5"                         , FOR_V2(0x070197, 0x02B8C8) },
-	{ "Etc/GMT+6"                         , FOR_V2(0x070237, 0x02B916) },
-	{ "Etc/GMT+7"                         , FOR_V2(0x0702D7, 0x02B964) },
-	{ "Etc/GMT+8"                         , FOR_V2(0x070377, 0x02B9B2) },
-	{ "Etc/GMT+9"                         , FOR_V2(0x070417, 0x02BA00) },
-	{ "Etc/GMT-0"                         , FOR_V2(0x0704B7, 0x02BA4E) },
-	{ "Etc/GMT-1"                         , FOR_V2(0x070542, 0x02BA92) },
-	{ "Etc/GMT-10"                        , FOR_V2(0x0705E3, 0x02BAE0) },
-	{ "Etc/GMT-11"                        , FOR_V2(0x070685, 0x02BB2E) },
-	{ "Etc/GMT-12"                        , FOR_V2(0x070727, 0x02BB7C) },
-	{ "Etc/GMT-13"                        , FOR_V2(0x0707C9, 0x02BBCA) },
-	{ "Etc/GMT-14"                        , FOR_V2(0x07086B, 0x02BC18) },
-	{ "Etc/GMT-2"                         , FOR_V2(0x07090D, 0x02BC66) },
-	{ "Etc/GMT-3"                         , FOR_V2(0x0709AE, 0x02BCB4) },
-	{ "Etc/GMT-4"                         , FOR_V2(0x070A4F, 0x02BD02) },
-	{ "Etc/GMT-5"                         , FOR_V2(0x070AF0, 0x02BD50) },
-	{ "Etc/GMT-6"                         , FOR_V2(0x070B91, 0x02BD9E) },
-	{ "Etc/GMT-7"                         , FOR_V2(0x070C32, 0x02BDEC) },
-	{ "Etc/GMT-8"                         , FOR_V2(0x070CD3, 0x02BE3A) },
-	{ "Etc/GMT-9"                         , FOR_V2(0x070D74, 0x02BE88) },
-	{ "Etc/GMT0"                          , FOR_V2(0x070E15, 0x02BED6) },
-	{ "Etc/Greenwich"                     , FOR_V2(0x070EA0, 0x02BF1A) },
-	{ "Etc/UCT"                           , FOR_V2(0x070F2B, 0x02BF5E) },
-	{ "Etc/Universal"                     , FOR_V2(0x070FB6, 0x02BFA2) },
-	{ "Etc/UTC"                           , FOR_V2(0x071041, 0x02BFE6) },
-	{ "Etc/Zulu"                          , FOR_V2(0x0710CC, 0x02C02A) },
-	{ "Europe/Amsterdam"                  , FOR_V2(0x071157, 0x02C06E) },
-	{ "Europe/Andorra"                    , FOR_V2(0x071CE8, 0x02C4C0) },
-	{ "Europe/Astrakhan"                  , FOR_V2(0x0723CB, 0x02C74D) },
-	{ "Europe/Athens"                     , FOR_V2(0x072896, 0x02C939) },
-	{ "Europe/Belfast"                    , FOR_V2(0x073181, 0x02CC8D) },
-	{ "Europe/Belgrade"                   , FOR_V2(0x073FF4, 0x02D1D5) },
-	{ "Europe/Berlin"                     , FOR_V2(0x0747A5, 0x02D4AF) },
-	{ "Europe/Bratislava"                 , FOR_V2(0x0750E4, 0x02D82A) },
-	{ "Europe/Brussels"                   , FOR_V2(0x0759D0, 0x02DB6D) },
-	{ "Europe/Bucharest"                  , FOR_V2(0x076576, 0x02DFB5) },
-	{ "Europe/Budapest"                   , FOR_V2(0x076E2F, 0x02E2F0) },
-	{ "Europe/Busingen"                   , FOR_V2(0x0777A0, 0x02E66A) },
-	{ "Europe/Chisinau"                   , FOR_V2(0x077F32, 0x02E932) },
-	{ "Europe/Copenhagen"                 , FOR_V2(0x0788CB, 0x02ECD6) },
-	{ "Europe/Dublin"                     , FOR_V2(0x079147, 0x02EFF1) },
-	{ "Europe/Gibraltar"                  , FOR_V2(0x079F3A, 0x02F513) },
-	{ "Europe/Guernsey"                   , FOR_V2(0x07AB3B, 0x02F97B) },
-	{ "Europe/Helsinki"                   , FOR_V2(0x07B9AE, 0x02FEC3) },
-	{ "Europe/Isle_of_Man"                , FOR_V2(0x07C12F, 0x03018A) },
-	{ "Europe/Istanbul"                   , FOR_V2(0x07CFA2, 0x0306D2) },
-	{ "Europe/Jersey"                     , FOR_V2(0x07D824, 0x030A0A) },
-	{ "Europe/Kaliningrad"                , FOR_V2(0x07E697, 0x030F52) },
-	{ "Europe/Kiev"                       , FOR_V2(0x07ECA5, 0x0311C3) },
-	{ "Europe/Kirov"                      , FOR_V2(0x07F4F6, 0x0314F6) },
-	{ "Europe/Lisbon"                     , FOR_V2(0x07F99F, 0x0316D1) },
-	{ "Europe/Ljubljana"                  , FOR_V2(0x08073B, 0x031BE5) },
-	{ "Europe/London"                     , FOR_V2(0x080EEC, 0x031EBF) },
-	{ "Europe/Luxembourg"                 , FOR_V2(0x081D5F, 0x032407) },
-	{ "Europe/Madrid"                     , FOR_V2(0x082909, 0x032862) },
-	{ "Europe/Malta"                      , FOR_V2(0x083372, 0x032C4C) },
-	{ "Europe/Mariehamn"                  , FOR_V2(0x083DC3, 0x033016) },
-	{ "Europe/Minsk"                      , FOR_V2(0x084544, 0x0332DD) },
-	{ "Europe/Monaco"                     , FOR_V2(0x084AAA, 0x033501) },
-	{ "Europe/Moscow"                     , FOR_V2(0x08563F, 0x03394D) },
-	{ "Europe/Nicosia"                    , FOR_V2(0x085C67, 0x033BCD) },
-	{ "Europe/Oslo"                       , FOR_V2(0x086453, 0x033EBA) },
-	{ "Europe/Paris"                      , FOR_V2(0x086D2A, 0x0341FD) },
-	{ "Europe/Podgorica"                  , FOR_V2(0x0878D1, 0x034654) },
-	{ "Europe/Prague"                     , FOR_V2(0x088082, 0x03492E) },
-	{ "Europe/Riga"                       , FOR_V2(0x08896E, 0x034C71) },
-	{ "Europe/Rome"                       , FOR_V2(0x089235, 0x034FC7) },
-	{ "Europe/Samara"                     , FOR_V2(0x089CC5, 0x0353A0) },
-	{ "Europe/San_Marino"                 , FOR_V2(0x08A1CF, 0x0355AF) },
-	{ "Europe/Sarajevo"                   , FOR_V2(0x08AC5F, 0x035988) },
-	{ "Europe/Saratov"                    , FOR_V2(0x08B410, 0x035C62) },
-	{ "Europe/Simferopol"                 , FOR_V2(0x08B8D9, 0x035E4C) },
-	{ "Europe/Skopje"                     , FOR_V2(0x08BEC6, 0x0360AE) },
-	{ "Europe/Sofia"                      , FOR_V2(0x08C677, 0x036388) },
-	{ "Europe/Stockholm"                  , FOR_V2(0x08CED5, 0x0366A1) },
-	{ "Europe/Tallinn"                    , FOR_V2(0x08D65F, 0x036961) },
-	{ "Europe/Tirane"                     , FOR_V2(0x08DEF6, 0x036CA7) },
-	{ "Europe/Tiraspol"                   , FOR_V2(0x08E734, 0x036FB2) },
-	{ "Europe/Ulyanovsk"                  , FOR_V2(0x08F0CD, 0x037356) },
-	{ "Europe/Uzhgorod"                   , FOR_V2(0x08F5EC, 0x037568) },
-	{ "Europe/Vaduz"                      , FOR_V2(0x08FE37, 0x037890) },
-	{ "Europe/Vatican"                    , FOR_V2(0x0905C1, 0x037B50) },
-	{ "Europe/Vienna"                     , FOR_V2(0x091051, 0x037F29) },
-	{ "Europe/Vilnius"                    , FOR_V2(0x09191A, 0x038267) },
-	{ "Europe/Volgograd"                  , FOR_V2(0x0921BD, 0x0385B7) },
-	{ "Europe/Warsaw"                     , FOR_V2(0x09266A, 0x038796) },
-	{ "Europe/Zagreb"                     , FOR_V2(0x093107, 0x038B88) },
-	{ "Europe/Zaporozhye"                 , FOR_V2(0x0938B8, 0x038E62) },
-	{ "Europe/Zurich"                     , FOR_V2(0x094135, 0x0391B6) },
-	{ "Factory"                           , FOR_V2(0x0948BF, 0x039476) },
-	{ "GB"                                , FOR_V2(0x09495F, 0x0394C4) },
-	{ "GB-Eire"                           , FOR_V2(0x0957D2, 0x039A0C) },
-	{ "GMT"                               , FOR_V2(0x096645, 0x039F54) },
-	{ "GMT+0"                             , FOR_V2(0x0966D0, 0x039F98) },
-	{ "GMT-0"                             , FOR_V2(0x09675B, 0x039FDC) },
-	{ "GMT0"                              , FOR_V2(0x0967E6, 0x03A020) },
-	{ "Greenwich"                         , FOR_V2(0x096871, 0x03A064) },
-	{ "Hongkong"                          , FOR_V2(0x0968FC, 0x03A0A8) },
-	{ "HST"                               , FOR_V2(0x096DAD, 0x03A277) },
-	{ "Iceland"                           , FOR_V2(0x096E39, 0x03A2BB) },
-	{ "Indian/Antananarivo"               , FOR_V2(0x0972E9, 0x03A48C) },
-	{ "Indian/Chagos"                     , FOR_V2(0x097412, 0x03A519) },
-	{ "Indian/Christmas"                  , FOR_V2(0x0974FF, 0x03A589) },
-	{ "Indian/Cocos"                      , FOR_V2(0x0975C1, 0x03A5E3) },
-	{ "Indian/Comoro"                     , FOR_V2(0x09768C, 0x03A63F) },
-	{ "Indian/Kerguelen"                  , FOR_V2(0x0977B5, 0x03A6CC) },
-	{ "Indian/Mahe"                       , FOR_V2(0x09787C, 0x03A72B) },
-	{ "Indian/Maldives"                   , FOR_V2(0x097943, 0x03A78A) },
-	{ "Indian/Mauritius"                  , FOR_V2(0x097A2B, 0x03A7F5) },
-	{ "Indian/Mayotte"                    , FOR_V2(0x097B42, 0x03A874) },
-	{ "Indian/Reunion"                    , FOR_V2(0x097C6B, 0x03A901) },
-	{ "Iran"                              , FOR_V2(0x097D32, 0x03A960) },
-	{ "Israel"                            , FOR_V2(0x0983F4, 0x03ABEA) },
-	{ "Jamaica"                           , FOR_V2(0x098CD9, 0x03AF32) },
-	{ "Japan"                             , FOR_V2(0x098EE0, 0x03B008) },
-	{ "Kwajalein"                         , FOR_V2(0x09902A, 0x03B099) },
-	{ "Libya"                             , FOR_V2(0x099139, 0x03B115) },
-	{ "MET"                               , FOR_V2(0x0993D4, 0x03B223) },
-	{ "Mexico/BajaNorte"                  , FOR_V2(0x099C16, 0x03B52C) },
-	{ "Mexico/BajaSur"                    , FOR_V2(0x09A556, 0x03B89A) },
-	{ "Mexico/General"                    , FOR_V2(0x09AB7E, 0x03BAEC) },
-	{ "MST"                               , FOR_V2(0x09B1DC, 0x03BD4F) },
-	{ "MST7MDT"                           , FOR_V2(0x09B267, 0x03BD93) },
-	{ "Navajo"                            , FOR_V2(0x09BB69, 0x03C0E4) },
-	{ "NZ"                                , FOR_V2(0x09C50A, 0x03C46E) },
-	{ "NZ-CHAT"                           , FOR_V2(0x09CEB2, 0x03C7FD) },
-	{ "Pacific/Apia"                      , FOR_V2(0x09D6E5, 0x03CAFD) },
-	{ "Pacific/Auckland"                  , FOR_V2(0x09DB5F, 0x03CCB3) },
-	{ "Pacific/Bougainville"              , FOR_V2(0x09E51F, 0x03D05A) },
-	{ "Pacific/Chatham"                   , FOR_V2(0x09E65F, 0x03D0E8) },
-	{ "Pacific/Chuuk"                     , FOR_V2(0x09EEA1, 0x03D3F7) },
-	{ "Pacific/Easter"                    , FOR_V2(0x09EF73, 0x03D460) },
-	{ "Pacific/Efate"                     , FOR_V2(0x09F84E, 0x03D7AD) },
-	{ "Pacific/Enderbury"                 , FOR_V2(0x09FA46, 0x03D87C) },
-	{ "Pacific/Fakaofo"                   , FOR_V2(0x09FB64, 0x03D907) },
-	{ "Pacific/Fiji"                      , FOR_V2(0x09FC4D, 0x03D972) },
-	{ "Pacific/Funafuti"                  , FOR_V2(0x0A00A7, 0x03DB13) },
-	{ "Pacific/Galapagos"                 , FOR_V2(0x0A016A, 0x03DB6D) },
-	{ "Pacific/Gambier"                   , FOR_V2(0x0A0293, 0x03DC00) },
-	{ "Pacific/Guadalcanal"               , FOR_V2(0x0A0368, 0x03DC6E) },
-	{ "Pacific/Guam"                      , FOR_V2(0x0A0430, 0x03DCCD) },
-	{ "Pacific/Honolulu"                  , FOR_V2(0x0A051D, 0x03DD34) },
-	{ "Pacific/Johnston"                  , FOR_V2(0x0A0643, 0x03DDBC) },
-	{ "Pacific/Kiritimati"                , FOR_V2(0x0A0763, 0x03DE3E) },
-	{ "Pacific/Kosrae"                    , FOR_V2(0x0A0882, 0x03DEC8) },
-	{ "Pacific/Kwajalein"                 , FOR_V2(0x0A098F, 0x03DF46) },
-	{ "Pacific/Majuro"                    , FOR_V2(0x0A0AA7, 0x03DFCB) },
-	{ "Pacific/Marquesas"                 , FOR_V2(0x0A0BAD, 0x03E053) },
-	{ "Pacific/Midway"                    , FOR_V2(0x0A0C8D, 0x03E0C5) },
-	{ "Pacific/Nauru"                     , FOR_V2(0x0A0D6B, 0x03E135) },
-	{ "Pacific/Niue"                      , FOR_V2(0x0A0E91, 0x03E1BD) },
-	{ "Pacific/Norfolk"                   , FOR_V2(0x0A0FA7, 0x03E23D) },
-	{ "Pacific/Noumea"                    , FOR_V2(0x0A10F6, 0x03E2D5) },
-	{ "Pacific/Pago_Pago"                 , FOR_V2(0x0A124A, 0x03E36E) },
-	{ "Pacific/Palau"                     , FOR_V2(0x0A131A, 0x03E3D0) },
-	{ "Pacific/Pitcairn"                  , FOR_V2(0x0A13DC, 0x03E42A) },
-	{ "Pacific/Pohnpei"                   , FOR_V2(0x0A14C7, 0x03E497) },
-	{ "Pacific/Ponape"                    , FOR_V2(0x0A1598, 0x03E4FF) },
-	{ "Pacific/Port_Moresby"              , FOR_V2(0x0A165B, 0x03E559) },
-	{ "Pacific/Rarotonga"                 , FOR_V2(0x0A1752, 0x03E5D1) },
-	{ "Pacific/Saipan"                    , FOR_V2(0x0A19B8, 0x03E6C9) },
-	{ "Pacific/Samoa"                     , FOR_V2(0x0A1AA5, 0x03E730) },
-	{ "Pacific/Tahiti"                    , FOR_V2(0x0A1B75, 0x03E792) },
-	{ "Pacific/Tarawa"                    , FOR_V2(0x0A1C4B, 0x03E800) },
-	{ "Pacific/Tongatapu"                 , FOR_V2(0x0A1D1D, 0x03E869) },
-	{ "Pacific/Truk"                      , FOR_V2(0x0A2114, 0x03E9EC) },
-	{ "Pacific/Wake"                      , FOR_V2(0x0A21D7, 0x03EA46) },
-	{ "Pacific/Wallis"                    , FOR_V2(0x0A22A5, 0x03EAAB) },
-	{ "Pacific/Yap"                       , FOR_V2(0x0A2368, 0x03EB05) },
-	{ "Poland"                            , FOR_V2(0x0A242B, 0x03EB5F) },
-	{ "Portugal"                          , FOR_V2(0x0A2EC8, 0x03EF51) },
-	{ "PRC"                               , FOR_V2(0x0A3C51, 0x03F452) },
-	{ "PST8PDT"                           , FOR_V2(0x0A3DFB, 0x03F503) },
-	{ "ROC"                               , FOR_V2(0x0A46FD, 0x03F854) },
-	{ "ROK"                               , FOR_V2(0x0A4A1F, 0x03F991) },
-	{ "Singapore"                         , FOR_V2(0x0A4C3E, 0x03FA77) },
-	{ "Turkey"                            , FOR_V2(0x0A4DF2, 0x03FB3C) },
-	{ "UCT"                               , FOR_V2(0x0A5674, 0x03FE74) },
-	{ "Universal"                         , FOR_V2(0x0A56FF, 0x03FEB8) },
-	{ "US/Alaska"                         , FOR_V2(0x0A578A, 0x03FEFC) },
-	{ "US/Aleutian"                       , FOR_V2(0x0A60E2, 0x040274) },
-	{ "US/Arizona"                        , FOR_V2(0x0A6A2B, 0x0405E5) },
-	{ "US/Central"                        , FOR_V2(0x0A6B98, 0x040684) },
-	{ "US/East-Indiana"                   , FOR_V2(0x0A79A5, 0x040BA8) },
-	{ "US/Eastern"                        , FOR_V2(0x0A803C, 0x040E23) },
-	{ "US/Hawaii"                         , FOR_V2(0x0A8E21, 0x041333) },
-	{ "US/Indiana-Starke"                 , FOR_V2(0x0A8F41, 0x0413B5) },
-	{ "US/Michigan"                       , FOR_V2(0x0A98D2, 0x04173F) },
-	{ "US/Mountain"                       , FOR_V2(0x0AA186, 0x041A7B) },
-	{ "US/Pacific"                        , FOR_V2(0x0AAB27, 0x041E05) },
-	{ "US/Pacific-New"                    , FOR_V2(0x0AB650, 0x04221B) },
-	{ "US/Samoa"                          , FOR_V2(0x0AC179, 0x042631) },
-	{ "UTC"                               , FOR_V2(0x0AC249, 0x042693) },
-	{ "W-SU"                              , FOR_V2(0x0AC2D4, 0x0426D7) },
-	{ "WET"                               , FOR_V2(0x0AC8E8, 0x042943) },
-	{ "Zulu"                              , FOR_V2(0x0AD045, 0x042BF6) },
+	{ "Africa/Kigali"                     , FOR_V2(0x003A41, 0x001815) },
+	{ "Africa/Kinshasa"                   , FOR_V2(0x003AF8, 0x00186F) },
+	{ "Africa/Lagos"                      , FOR_V2(0x003BC8, 0x0018E2) },
+	{ "Africa/Libreville"                 , FOR_V2(0x003C7F, 0x00193C) },
+	{ "Africa/Lome"                       , FOR_V2(0x003D36, 0x001996) },
+	{ "Africa/Luanda"                     , FOR_V2(0x003DEC, 0x0019F0) },
+	{ "Africa/Lubumbashi"                 , FOR_V2(0x003EA3, 0x001A4A) },
+	{ "Africa/Lusaka"                     , FOR_V2(0x003F73, 0x001ABD) },
+	{ "Africa/Malabo"                     , FOR_V2(0x00402A, 0x001B17) },
+	{ "Africa/Maputo"                     , FOR_V2(0x0040E1, 0x001B71) },
+	{ "Africa/Maseru"                     , FOR_V2(0x004198, 0x001BCB) },
+	{ "Africa/Mbabane"                    , FOR_V2(0x0042B3, 0x001C4A) },
+	{ "Africa/Mogadishu"                  , FOR_V2(0x0043CE, 0x001CC9) },
+	{ "Africa/Monrovia"                   , FOR_V2(0x0044F7, 0x001D56) },
+	{ "Africa/Nairobi"                    , FOR_V2(0x0045EC, 0x001DC9) },
+	{ "Africa/Ndjamena"                   , FOR_V2(0x004715, 0x001E56) },
+	{ "Africa/Niamey"                     , FOR_V2(0x004802, 0x001EC7) },
+	{ "Africa/Nouakchott"                 , FOR_V2(0x0048B9, 0x001F21) },
+	{ "Africa/Ouagadougou"                , FOR_V2(0x00496F, 0x001F7B) },
+	{ "Africa/Porto-Novo"                 , FOR_V2(0x004A25, 0x001FD5) },
+	{ "Africa/Sao_Tome"                   , FOR_V2(0x004ADC, 0x00202F) },
+	{ "Africa/Timbuktu"                   , FOR_V2(0x004B92, 0x002089) },
+	{ "Africa/Tripoli"                    , FOR_V2(0x004C48, 0x0020E3) },
+	{ "Africa/Tunis"                      , FOR_V2(0x004EE3, 0x0021F1) },
+	{ "Africa/Windhoek"                   , FOR_V2(0x0051B5, 0x002314) },
+	{ "America/Adak"                      , FOR_V2(0x0055C7, 0x0024B1) },
+	{ "America/Anchorage"                 , FOR_V2(0x005F20, 0x002832) },
+	{ "America/Anguilla"                  , FOR_V2(0x00688B, 0x002BBD) },
+	{ "America/Antigua"                   , FOR_V2(0x006941, 0x002C17) },
+	{ "America/Araguaina"                 , FOR_V2(0x0069F7, 0x002C71) },
+	{ "America/Argentina/Buenos_Aires"    , FOR_V2(0x006D9A, 0x002DDF) },
+	{ "America/Argentina/Catamarca"       , FOR_V2(0x007210, 0x002FA6) },
+	{ "America/Argentina/ComodRivadavia"  , FOR_V2(0x00768C, 0x003173) },
+	{ "America/Argentina/Cordoba"         , FOR_V2(0x007AED, 0x003325) },
+	{ "America/Argentina/Jujuy"           , FOR_V2(0x007F84, 0x00350D) },
+	{ "America/Argentina/La_Rioja"        , FOR_V2(0x0083D3, 0x0036BF) },
+	{ "America/Argentina/Mendoza"         , FOR_V2(0x00884F, 0x003883) },
+	{ "America/Argentina/Rio_Gallegos"    , FOR_V2(0x008CBC, 0x003A41) },
+	{ "America/Argentina/Salta"           , FOR_V2(0x00912C, 0x003C02) },
+	{ "America/Argentina/San_Juan"        , FOR_V2(0x009587, 0x003DC0) },
+	{ "America/Argentina/San_Luis"        , FOR_V2(0x009A03, 0x003F84) },
+	{ "America/Argentina/Tucuman"         , FOR_V2(0x009E8F, 0x004150) },
+	{ "America/Argentina/Ushuaia"         , FOR_V2(0x00A318, 0x004318) },
+	{ "America/Aruba"                     , FOR_V2(0x00A78E, 0x0044DF) },
+	{ "America/Asuncion"                  , FOR_V2(0x00A86E, 0x00454C) },
+	{ "America/Atikokan"                  , FOR_V2(0x00B097, 0x00484E) },
+	{ "America/Atka"                      , FOR_V2(0x00B21D, 0x004912) },
+	{ "America/Bahia"                     , FOR_V2(0x00BB66, 0x004C83) },
+	{ "America/Bahia_Banderas"            , FOR_V2(0x00BF91, 0x004E1F) },
+	{ "America/Barbados"                  , FOR_V2(0x00C5F1, 0x00509D) },
+	{ "America/Belem"                     , FOR_V2(0x00C755, 0x00513C) },
+	{ "America/Belize"                    , FOR_V2(0x00C9CD, 0x005245) },
+	{ "America/Blanc-Sablon"              , FOR_V2(0x00CDAB, 0x0053C7) },
+	{ "America/Boa_Vista"                 , FOR_V2(0x00CF06, 0x005475) },
+	{ "America/Bogota"                    , FOR_V2(0x00D1AB, 0x005587) },
+	{ "America/Boise"                     , FOR_V2(0x00D2C6, 0x005608) },
+	{ "America/Buenos_Aires"              , FOR_V2(0x00DC55, 0x0059A7) },
+	{ "America/Cambridge_Bay"             , FOR_V2(0x00E0B6, 0x005B59) },
+	{ "America/Campo_Grande"              , FOR_V2(0x00E908, 0x005E8E) },
+	{ "America/Cancun"                    , FOR_V2(0x00F106, 0x006181) },
+	{ "America/Caracas"                   , FOR_V2(0x00F466, 0x0062F0) },
+	{ "America/Catamarca"                 , FOR_V2(0x00F593, 0x006378) },
+	{ "America/Cayenne"                   , FOR_V2(0x00F9F4, 0x00652A) },
+	{ "America/Cayman"                    , FOR_V2(0x00FAE0, 0x00659A) },
+	{ "America/Chicago"                   , FOR_V2(0x00FBB7, 0x006600) },
+	{ "America/Chihuahua"                 , FOR_V2(0x0109D8, 0x006B38) },
+	{ "America/Coral_Harbour"             , FOR_V2(0x010FFC, 0x006DA1) },
+	{ "America/Cordoba"                   , FOR_V2(0x011161, 0x006E44) },
+	{ "America/Costa_Rica"                , FOR_V2(0x0115C2, 0x006FF6) },
+	{ "America/Creston"                   , FOR_V2(0x011723, 0x007091) },
+	{ "America/Cuiaba"                    , FOR_V2(0x01182A, 0x007116) },
+	{ "America/Curacao"                   , FOR_V2(0x012005, 0x0073F8) },
+	{ "America/Danmarkshavn"              , FOR_V2(0x0120E5, 0x007465) },
+	{ "America/Dawson"                    , FOR_V2(0x0123D3, 0x0075A6) },
+	{ "America/Dawson_Creek"              , FOR_V2(0x012C23, 0x0078D1) },
+	{ "America/Denver"                    , FOR_V2(0x013072, 0x007A93) },
+	{ "America/Detroit"                   , FOR_V2(0x013A28, 0x007E32) },
+	{ "America/Dominica"                  , FOR_V2(0x0142D9, 0x00817D) },
+	{ "America/Edmonton"                  , FOR_V2(0x01438F, 0x0081D7) },
+	{ "America/Eirunepe"                  , FOR_V2(0x014D1A, 0x00856F) },
+	{ "America/El_Salvador"               , FOR_V2(0x014FE7, 0x008699) },
+	{ "America/Ensenada"                  , FOR_V2(0x0150ED, 0x008713) },
+	{ "America/Fort_Nelson"               , FOR_V2(0x015A2D, 0x008A81) },
+	{ "America/Fort_Wayne"                , FOR_V2(0x016316, 0x008DE0) },
+	{ "America/Fortaleza"                 , FOR_V2(0x0169AD, 0x00905B) },
+	{ "America/Glace_Bay"                 , FOR_V2(0x016CC5, 0x0091AA) },
+	{ "America/Godthab"                   , FOR_V2(0x01758A, 0x0094FA) },
+	{ "America/Goose_Bay"                 , FOR_V2(0x017D10, 0x0097CF) },
+	{ "America/Grand_Turk"                , FOR_V2(0x0189CF, 0x009C9C) },
+	{ "America/Grenada"                   , FOR_V2(0x019134, 0x009F5C) },
+	{ "America/Guadeloupe"                , FOR_V2(0x0191EA, 0x009FB6) },
+	{ "America/Guatemala"                 , FOR_V2(0x0192A0, 0x00A010) },
+	{ "America/Guayaquil"                 , FOR_V2(0x0193DE, 0x00A09E) },
+	{ "America/Guyana"                    , FOR_V2(0x01950B, 0x00A131) },
+	{ "America/Halifax"                   , FOR_V2(0x019621, 0x00A1B4) },
+	{ "America/Havana"                    , FOR_V2(0x01A3B9, 0x00A6BF) },
+	{ "America/Hermosillo"                , FOR_V2(0x01AD4A, 0x00AA43) },
+	{ "America/Indiana/Indianapolis"      , FOR_V2(0x01AF3B, 0x00AB2E) },
+	{ "America/Indiana/Knox"              , FOR_V2(0x01B5EB, 0x00ADC2) },
+	{ "America/Indiana/Marengo"           , FOR_V2(0x01BF91, 0x00B161) },
+	{ "America/Indiana/Petersburg"        , FOR_V2(0x01C677, 0x00B407) },
+	{ "America/Indiana/Tell_City"         , FOR_V2(0x01CE0F, 0x00B6EA) },
+	{ "America/Indiana/Vevay"             , FOR_V2(0x01D4F6, 0x00B993) },
+	{ "America/Indiana/Vincennes"         , FOR_V2(0x01DAAB, 0x00BBCE) },
+	{ "America/Indiana/Winamac"           , FOR_V2(0x01E17A, 0x00BE6F) },
+	{ "America/Indianapolis"              , FOR_V2(0x01E897, 0x00C128) },
+	{ "America/Inuvik"                    , FOR_V2(0x01EF2E, 0x00C3A3) },
+	{ "America/Iqaluit"                   , FOR_V2(0x01F6D6, 0x00C689) },
+	{ "America/Jamaica"                   , FOR_V2(0x01FEFE, 0x00C9B2) },
+	{ "America/Jujuy"                     , FOR_V2(0x020105, 0x00CA88) },
+	{ "America/Juneau"                    , FOR_V2(0x02054A, 0x00CC30) },
+	{ "America/Kentucky/Louisville"       , FOR_V2(0x020EA4, 0x00CFB5) },
+	{ "America/Kentucky/Monticello"       , FOR_V2(0x0219AB, 0x00D3D9) },
+	{ "America/Knox_IN"                   , FOR_V2(0x022304, 0x00D75D) },
+	{ "America/Kralendijk"                , FOR_V2(0x022C95, 0x00DAE7) },
+	{ "America/La_Paz"                    , FOR_V2(0x022D75, 0x00DB54) },
+	{ "America/Lima"                      , FOR_V2(0x022E84, 0x00DBD1) },
+	{ "America/Los_Angeles"               , FOR_V2(0x02303F, 0x00DC8A) },
+	{ "America/Louisville"                , FOR_V2(0x023B6F, 0x00E0A7) },
+	{ "America/Lower_Princes"             , FOR_V2(0x024658, 0x00E4AD) },
+	{ "America/Maceio"                    , FOR_V2(0x024738, 0x00E51A) },
+	{ "America/Managua"                   , FOR_V2(0x024A56, 0x00E65D) },
+	{ "America/Manaus"                    , FOR_V2(0x024C31, 0x00E729) },
+	{ "America/Marigot"                   , FOR_V2(0x024EC2, 0x00E839) },
+	{ "America/Martinique"                , FOR_V2(0x024F78, 0x00E893) },
+	{ "America/Matamoros"                 , FOR_V2(0x025085, 0x00E910) },
+	{ "America/Mazatlan"                  , FOR_V2(0x025657, 0x00EB62) },
+	{ "America/Mendoza"                   , FOR_V2(0x025CB4, 0x00EDE9) },
+	{ "America/Menominee"                 , FOR_V2(0x026115, 0x00EF9B) },
+	{ "America/Merida"                    , FOR_V2(0x026A2B, 0x00F30D) },
+	{ "America/Metlakatla"                , FOR_V2(0x027007, 0x00F555) },
+	{ "America/Mexico_City"               , FOR_V2(0x0275B4, 0x00F785) },
+	{ "America/Miquelon"                  , FOR_V2(0x027C1E, 0x00F9F4) },
+	{ "America/Moncton"                   , FOR_V2(0x0282CA, 0x00FC6E) },
+	{ "America/Monterrey"                 , FOR_V2(0x028F49, 0x010111) },
+	{ "America/Montevideo"                , FOR_V2(0x029522, 0x01036A) },
+	{ "America/Montreal"                  , FOR_V2(0x029B2F, 0x0105BE) },
+	{ "America/Montserrat"                , FOR_V2(0x02A8EA, 0x010ABF) },
+	{ "America/Nassau"                    , FOR_V2(0x02A9A0, 0x010B19) },
+	{ "America/New_York"                  , FOR_V2(0x02B298, 0x010E63) },
+	{ "America/Nipigon"                   , FOR_V2(0x02C091, 0x011387) },
+	{ "America/Nome"                      , FOR_V2(0x02C911, 0x0116BF) },
+	{ "America/Noronha"                   , FOR_V2(0x02D272, 0x011A42) },
+	{ "America/North_Dakota/Beulah"       , FOR_V2(0x02D574, 0x011B7B) },
+	{ "America/North_Dakota/Center"       , FOR_V2(0x02DEEA, 0x011F0A) },
+	{ "America/North_Dakota/New_Salem"    , FOR_V2(0x02E860, 0x012299) },
+	{ "America/Ojinaga"                   , FOR_V2(0x02F1DC, 0x01262E) },
+	{ "America/Panama"                    , FOR_V2(0x02F802, 0x012899) },
+	{ "America/Pangnirtung"               , FOR_V2(0x02F8D9, 0x0128FF) },
+	{ "America/Paramaribo"                , FOR_V2(0x03013B, 0x012C41) },
+	{ "America/Phoenix"                   , FOR_V2(0x03026F, 0x012CD1) },
+	{ "America/Port-au-Prince"            , FOR_V2(0x0303F9, 0x012D8D) },
+	{ "America/Port_of_Spain"             , FOR_V2(0x0309B4, 0x012FB4) },
+	{ "America/Porto_Acre"                , FOR_V2(0x030A6A, 0x01300E) },
+	{ "America/Porto_Velho"               , FOR_V2(0x030D0C, 0x01311F) },
+	{ "America/Puerto_Rico"               , FOR_V2(0x030F7A, 0x01321E) },
+	{ "America/Punta_Arenas"              , FOR_V2(0x031085, 0x01329A) },
+	{ "America/Rainy_River"               , FOR_V2(0x03181C, 0x013583) },
+	{ "America/Rankin_Inlet"              , FOR_V2(0x03209D, 0x0138BC) },
+	{ "America/Recife"                    , FOR_V2(0x032849, 0x013BA7) },
+	{ "America/Regina"                    , FOR_V2(0x032B45, 0x013CDA) },
+	{ "America/Resolute"                  , FOR_V2(0x032F48, 0x013E7D) },
+	{ "America/Rio_Branco"                , FOR_V2(0x0336F5, 0x014169) },
+	{ "America/Rosario"                   , FOR_V2(0x03399B, 0x01427E) },
+	{ "America/Santa_Isabel"              , FOR_V2(0x033DFC, 0x014430) },
+	{ "America/Santarem"                  , FOR_V2(0x03473C, 0x01479E) },
+	{ "America/Santiago"                  , FOR_V2(0x0349CB, 0x0148AD) },
+	{ "America/Santo_Domingo"             , FOR_V2(0x0353D3, 0x014C6B) },
+	{ "America/Sao_Paulo"                 , FOR_V2(0x0355CA, 0x014D43) },
+	{ "America/Scoresbysund"              , FOR_V2(0x035DEC, 0x01505A) },
+	{ "America/Shiprock"                  , FOR_V2(0x03659F, 0x01534A) },
+	{ "America/Sitka"                     , FOR_V2(0x036F40, 0x0156D4) },
+	{ "America/St_Barthelemy"             , FOR_V2(0x03788D, 0x015A4C) },
+	{ "America/St_Johns"                  , FOR_V2(0x037943, 0x015AA6) },
+	{ "America/St_Kitts"                  , FOR_V2(0x0387C1, 0x01600C) },
+	{ "America/St_Lucia"                  , FOR_V2(0x038877, 0x016066) },
+	{ "America/St_Thomas"                 , FOR_V2(0x03892D, 0x0160C0) },
+	{ "America/St_Vincent"                , FOR_V2(0x0389E3, 0x01611A) },
+	{ "America/Swift_Current"             , FOR_V2(0x038A99, 0x016174) },
+	{ "America/Tegucigalpa"               , FOR_V2(0x038CF5, 0x01627E) },
+	{ "America/Thule"                     , FOR_V2(0x038E17, 0x016302) },
+	{ "America/Thunder_Bay"               , FOR_V2(0x039429, 0x01654C) },
+	{ "America/Tijuana"                   , FOR_V2(0x039CF2, 0x01689D) },
+	{ "America/Toronto"                   , FOR_V2(0x03A653, 0x016C2C) },
+	{ "America/Tortola"                   , FOR_V2(0x03B42B, 0x01714A) },
+	{ "America/Vancouver"                 , FOR_V2(0x03B4E1, 0x0171A4) },
+	{ "America/Virgin"                    , FOR_V2(0x03C05B, 0x0175E7) },
+	{ "America/Whitehorse"                , FOR_V2(0x03C111, 0x017641) },
+	{ "America/Winnipeg"                  , FOR_V2(0x03C961, 0x01796C) },
+	{ "America/Yakutat"                   , FOR_V2(0x03D4D5, 0x017DB4) },
+	{ "America/Yellowknife"               , FOR_V2(0x03DDFB, 0x01811D) },
+	{ "Antarctica/Casey"                  , FOR_V2(0x03E5DA, 0x01841C) },
+	{ "Antarctica/Davis"                  , FOR_V2(0x03E725, 0x0184B5) },
+	{ "Antarctica/DumontDUrville"         , FOR_V2(0x03E86D, 0x01854B) },
+	{ "Antarctica/Macquarie"              , FOR_V2(0x03E961, 0x0185C4) },
+	{ "Antarctica/Mawson"                 , FOR_V2(0x03EF84, 0x018822) },
+	{ "Antarctica/McMurdo"                , FOR_V2(0x03F077, 0x018898) },
+	{ "Antarctica/Palmer"                 , FOR_V2(0x03FA45, 0x018C4D) },
+	{ "Antarctica/Rothera"                , FOR_V2(0x03FFEF, 0x018E7F) },
+	{ "Antarctica/South_Pole"             , FOR_V2(0x0400BC, 0x018EE5) },
+	{ "Antarctica/Syowa"                  , FOR_V2(0x040A64, 0x019274) },
+	{ "Antarctica/Troll"                  , FOR_V2(0x040B30, 0x0192D8) },
+	{ "Antarctica/Vostok"                 , FOR_V2(0x040FD9, 0x01949A) },
+	{ "Arctic/Longyearbyen"               , FOR_V2(0x0410A6, 0x0194FF) },
+	{ "Asia/Aden"                         , FOR_V2(0x04197D, 0x019842) },
+	{ "Asia/Almaty"                       , FOR_V2(0x041A44, 0x0198A1) },
+	{ "Asia/Amman"                        , FOR_V2(0x041E6E, 0x019A59) },
+	{ "Asia/Anadyr"                       , FOR_V2(0x0425CF, 0x019D14) },
+	{ "Asia/Aqtau"                        , FOR_V2(0x042AB4, 0x019F0D) },
+	{ "Asia/Aqtobe"                       , FOR_V2(0x042ECE, 0x01A0BE) },
+	{ "Asia/Ashgabat"                     , FOR_V2(0x0432FE, 0x01A274) },
+	{ "Asia/Ashkhabad"                    , FOR_V2(0x043595, 0x01A38B) },
+	{ "Asia/Atyrau"                       , FOR_V2(0x04382C, 0x01A4A2) },
+	{ "Asia/Baghdad"                      , FOR_V2(0x043C4E, 0x01A657) },
+	{ "Asia/Bahrain"                      , FOR_V2(0x044046, 0x01A7E2) },
+	{ "Asia/Baku"                         , FOR_V2(0x044133, 0x01A852) },
+	{ "Asia/Bangkok"                      , FOR_V2(0x044634, 0x01AA48) },
+	{ "Asia/Barnaul"                      , FOR_V2(0x04471C, 0x01AAB3) },
+	{ "Asia/Beirut"                       , FOR_V2(0x044C1D, 0x01ACB2) },
+	{ "Asia/Bishkek"                      , FOR_V2(0x0454A8, 0x01AFD0) },
+	{ "Asia/Brunei"                       , FOR_V2(0x0458C9, 0x01B176) },
+	{ "Asia/Calcutta"                     , FOR_V2(0x0459BA, 0x01B1E8) },
+	{ "Asia/Chita"                        , FOR_V2(0x045AFE, 0x01B270) },
+	{ "Asia/Choibalsan"                   , FOR_V2(0x046007, 0x01B478) },
+	{ "Asia/Chongqing"                    , FOR_V2(0x046404, 0x01B617) },
+	{ "Asia/Chungking"                    , FOR_V2(0x0465AE, 0x01B6C8) },
+	{ "Asia/Colombo"                      , FOR_V2(0x046758, 0x01B779) },
+	{ "Asia/Dacca"                        , FOR_V2(0x046901, 0x01B836) },
+	{ "Asia/Damascus"                     , FOR_V2(0x046A7F, 0x01B8E2) },
+	{ "Asia/Dhaka"                        , FOR_V2(0x04739B, 0x01BC37) },
+	{ "Asia/Dili"                         , FOR_V2(0x047519, 0x01BCE3) },
+	{ "Asia/Dubai"                        , FOR_V2(0x047622, 0x01BD5D) },
+	{ "Asia/Dushanbe"                     , FOR_V2(0x0476E9, 0x01BDBC) },
+	{ "Asia/Famagusta"                    , FOR_V2(0x047962, 0x01BEC6) },
+	{ "Asia/Gaza"                         , FOR_V2(0x048177, 0x01C1D1) },
+	{ "Asia/Harbin"                       , FOR_V2(0x048A84, 0x01C52D) },
+	{ "Asia/Hebron"                       , FOR_V2(0x048C2E, 0x01C5DE) },
+	{ "Asia/Ho_Chi_Minh"                  , FOR_V2(0x049556, 0x01C943) },
+	{ "Asia/Hong_Kong"                    , FOR_V2(0x0496E7, 0x01C9F7) },
+	{ "Asia/Hovd"                         , FOR_V2(0x049B98, 0x01CBC6) },
+	{ "Asia/Irkutsk"                      , FOR_V2(0x049F68, 0x01CD5D) },
+	{ "Asia/Istanbul"                     , FOR_V2(0x04A48A, 0x01CF72) },
+	{ "Asia/Jakarta"                      , FOR_V2(0x04AD0C, 0x01D2AA) },
+	{ "Asia/Jayapura"                     , FOR_V2(0x04AEAD, 0x01D36F) },
+	{ "Asia/Jerusalem"                    , FOR_V2(0x04AFEA, 0x01D423) },
+	{ "Asia/Kabul"                        , FOR_V2(0x04B8CF, 0x01D76B) },
+	{ "Asia/Kamchatka"                    , FOR_V2(0x04B9C0, 0x01D7D8) },
+	{ "Asia/Karachi"                      , FOR_V2(0x04BE8C, 0x01D9C4) },
+	{ "Asia/Kashgar"                      , FOR_V2(0x04C039, 0x01DA85) },
+	{ "Asia/Kathmandu"                    , FOR_V2(0x04C100, 0x01DAE4) },
+	{ "Asia/Katmandu"                     , FOR_V2(0x04C1FA, 0x01DB58) },
+	{ "Asia/Khandyga"                     , FOR_V2(0x04C2F4, 0x01DBCC) },
+	{ "Asia/Kolkata"                      , FOR_V2(0x04C83D, 0x01DDF7) },
+	{ "Asia/Krasnoyarsk"                  , FOR_V2(0x04C981, 0x01DE7F) },
+	{ "Asia/Kuala_Lumpur"                 , FOR_V2(0x04CE81, 0x01E087) },
+	{ "Asia/Kuching"                      , FOR_V2(0x04D049, 0x01E160) },
+	{ "Asia/Kuwait"                       , FOR_V2(0x04D26C, 0x01E252) },
+	{ "Asia/Macao"                        , FOR_V2(0x04D333, 0x01E2B1) },
+	{ "Asia/Macau"                        , FOR_V2(0x04D632, 0x01E3DF) },
+	{ "Asia/Magadan"                      , FOR_V2(0x04D931, 0x01E50D) },
+	{ "Asia/Makassar"                     , FOR_V2(0x04DE37, 0x01E711) },
+	{ "Asia/Manila"                       , FOR_V2(0x04DFAC, 0x01E7E8) },
+	{ "Asia/Muscat"                       , FOR_V2(0x04E127, 0x01E886) },
+	{ "Asia/Nicosia"                      , FOR_V2(0x04E1EE, 0x01E8E5) },
+	{ "Asia/Novokuznetsk"                 , FOR_V2(0x04E9ED, 0x01EBE5) },
+	{ "Asia/Novosibirsk"                  , FOR_V2(0x04EEB7, 0x01EDD0) },
+	{ "Asia/Omsk"                         , FOR_V2(0x04F3BE, 0x01EFD5) },
+	{ "Asia/Oral"                         , FOR_V2(0x04F8B2, 0x01F1D1) },
+	{ "Asia/Phnom_Penh"                   , FOR_V2(0x04FCDC, 0x01F385) },
+	{ "Asia/Pontianak"                    , FOR_V2(0x04FDC4, 0x01F3F0) },
+	{ "Asia/Pyongyang"                    , FOR_V2(0x04FF71, 0x01F4C2) },
+	{ "Asia/Qatar"                        , FOR_V2(0x05008D, 0x01F547) },
+	{ "Asia/Qyzylorda"                    , FOR_V2(0x05017A, 0x01F5B7) },
+	{ "Asia/Rangoon"                      , FOR_V2(0x0505BA, 0x01F77D) },
+	{ "Asia/Riyadh"                       , FOR_V2(0x0506EF, 0x01F808) },
+	{ "Asia/Saigon"                       , FOR_V2(0x0507B6, 0x01F867) },
+	{ "Asia/Sakhalin"                     , FOR_V2(0x050947, 0x01F91B) },
+	{ "Asia/Samarkand"                    , FOR_V2(0x050E3D, 0x01FB1B) },
+	{ "Asia/Seoul"                        , FOR_V2(0x0510C5, 0x01FC33) },
+	{ "Asia/Shanghai"                     , FOR_V2(0x0512E4, 0x01FD19) },
+	{ "Asia/Singapore"                    , FOR_V2(0x05149A, 0x01FDD6) },
+	{ "Asia/Srednekolymsk"                , FOR_V2(0x05164E, 0x01FE9B) },
+	{ "Asia/Taipei"                       , FOR_V2(0x051B58, 0x0200AC) },
+	{ "Asia/Tashkent"                     , FOR_V2(0x051E7A, 0x0201E9) },
+	{ "Asia/Tbilisi"                      , FOR_V2(0x052112, 0x020309) },
+	{ "Asia/Tehran"                       , FOR_V2(0x052556, 0x0204BC) },
+	{ "Asia/Tel_Aviv"                     , FOR_V2(0x052C18, 0x020746) },
+	{ "Asia/Thimbu"                       , FOR_V2(0x0534FD, 0x020A8E) },
+	{ "Asia/Thimphu"                      , FOR_V2(0x0535EE, 0x020B00) },
+	{ "Asia/Tokyo"                        , FOR_V2(0x0536DF, 0x020B72) },
+	{ "Asia/Tomsk"                        , FOR_V2(0x053829, 0x020C03) },
+	{ "Asia/Ujung_Pandang"                , FOR_V2(0x053D2A, 0x020E02) },
+	{ "Asia/Ulaanbaatar"                  , FOR_V2(0x053E56, 0x020E90) },
+	{ "Asia/Ulan_Bator"                   , FOR_V2(0x054210, 0x021011) },
+	{ "Asia/Urumqi"                       , FOR_V2(0x0545B5, 0x02117D) },
+	{ "Asia/Ust-Nera"                     , FOR_V2(0x054689, 0x0211E9) },
+	{ "Asia/Vientiane"                    , FOR_V2(0x054BB3, 0x021401) },
+	{ "Asia/Vladivostok"                  , FOR_V2(0x054C9B, 0x02146C) },
+	{ "Asia/Yakutsk"                      , FOR_V2(0x055196, 0x02166E) },
+	{ "Asia/Yangon"                       , FOR_V2(0x055690, 0x021870) },
+	{ "Asia/Yekaterinburg"                , FOR_V2(0x0557C5, 0x0218FB) },
+	{ "Asia/Yerevan"                      , FOR_V2(0x055CE0, 0x021B09) },
+	{ "Atlantic/Azores"                   , FOR_V2(0x0561A9, 0x021CEB) },
+	{ "Atlantic/Bermuda"                  , FOR_V2(0x056F50, 0x0221F7) },
+	{ "Atlantic/Canary"                   , FOR_V2(0x057730, 0x0224DD) },
+	{ "Atlantic/Cape_Verde"               , FOR_V2(0x057EC1, 0x0227B7) },
+	{ "Atlantic/Faeroe"                   , FOR_V2(0x057FD9, 0x022839) },
+	{ "Atlantic/Faroe"                    , FOR_V2(0x05870A, 0x022AE2) },
+	{ "Atlantic/Jan_Mayen"                , FOR_V2(0x058E3B, 0x022D8B) },
+	{ "Atlantic/Madeira"                  , FOR_V2(0x059712, 0x0230CE) },
+	{ "Atlantic/Reykjavik"                , FOR_V2(0x05A4B9, 0x0235E3) },
+	{ "Atlantic/South_Georgia"            , FOR_V2(0x05A969, 0x0237B4) },
+	{ "Atlantic/St_Helena"                , FOR_V2(0x05AA2A, 0x02380E) },
+	{ "Atlantic/Stanley"                  , FOR_V2(0x05AAE0, 0x023868) },
+	{ "Australia/ACT"                     , FOR_V2(0x05AFCF, 0x023A4F) },
+	{ "Australia/Adelaide"                , FOR_V2(0x05B88A, 0x023D83) },
+	{ "Australia/Brisbane"                , FOR_V2(0x05C163, 0x0240C2) },
+	{ "Australia/Broken_Hill"             , FOR_V2(0x05C34A, 0x02419C) },
+	{ "Australia/Canberra"                , FOR_V2(0x05CC54, 0x0244ED) },
+	{ "Australia/Currie"                  , FOR_V2(0x05D50F, 0x024821) },
+	{ "Australia/Darwin"                  , FOR_V2(0x05DDE0, 0x024B6B) },
+	{ "Australia/Eucla"                   , FOR_V2(0x05DF41, 0x024C04) },
+	{ "Australia/Hobart"                  , FOR_V2(0x05E15D, 0x024CF1) },
+	{ "Australia/LHI"                     , FOR_V2(0x05EA9D, 0x025062) },
+	{ "Australia/Lindeman"                , FOR_V2(0x05F20A, 0x02531F) },
+	{ "Australia/Lord_Howe"               , FOR_V2(0x05F43F, 0x02541A) },
+	{ "Australia/Melbourne"               , FOR_V2(0x05FBBC, 0x0256E7) },
+	{ "Australia/North"                   , FOR_V2(0x06047F, 0x025A23) },
+	{ "Australia/NSW"                     , FOR_V2(0x0605CE, 0x025AAA) },
+	{ "Australia/Perth"                   , FOR_V2(0x060E89, 0x025DDE) },
+	{ "Australia/Queensland"              , FOR_V2(0x061092, 0x025EC9) },
+	{ "Australia/South"                   , FOR_V2(0x061262, 0x025F8C) },
+	{ "Australia/Sydney"                  , FOR_V2(0x061B2C, 0x0262BC) },
+	{ "Australia/Tasmania"                , FOR_V2(0x062403, 0x02660C) },
+	{ "Australia/Victoria"                , FOR_V2(0x062D2E, 0x026968) },
+	{ "Australia/West"                    , FOR_V2(0x0635E9, 0x026C9C) },
+	{ "Australia/Yancowinna"              , FOR_V2(0x0637D4, 0x026D69) },
+	{ "Brazil/Acre"                       , FOR_V2(0x0640C2, 0x02709E) },
+	{ "Brazil/DeNoronha"                  , FOR_V2(0x064364, 0x0271AF) },
+	{ "Brazil/East"                       , FOR_V2(0x064656, 0x0272D8) },
+	{ "Brazil/West"                       , FOR_V2(0x064E42, 0x0275B9) },
+	{ "Canada/Atlantic"                   , FOR_V2(0x0650C4, 0x0276BA) },
+	{ "Canada/Central"                    , FOR_V2(0x065E3E, 0x027BA7) },
+	{ "Canada/Eastern"                    , FOR_V2(0x066995, 0x027FD2) },
+	{ "Canada/Mountain"                   , FOR_V2(0x067750, 0x0284D3) },
+	{ "Canada/Newfoundland"               , FOR_V2(0x0680BE, 0x02884E) },
+	{ "Canada/Pacific"                    , FOR_V2(0x068F1A, 0x028D92) },
+	{ "Canada/Saskatchewan"               , FOR_V2(0x069A7B, 0x0291BC) },
+	{ "Canada/Yukon"                      , FOR_V2(0x069E69, 0x02934A) },
+	{ "CET"                               , FOR_V2(0x06A6A2, 0x02965E) },
+	{ "Chile/Continental"                 , FOR_V2(0x06AEE4, 0x029967) },
+	{ "Chile/EasterIsland"                , FOR_V2(0x06B8DA, 0x029D13) },
+	{ "CST6CDT"                           , FOR_V2(0x06C1A8, 0x02A053) },
+	{ "Cuba"                              , FOR_V2(0x06CAAA, 0x02A3A4) },
+	{ "EET"                               , FOR_V2(0x06D43B, 0x02A728) },
+	{ "Egypt"                             , FOR_V2(0x06DB9B, 0x02A9DB) },
+	{ "Eire"                              , FOR_V2(0x06E35B, 0x02ACBB) },
+	{ "EST"                               , FOR_V2(0x06F13E, 0x02B1D5) },
+	{ "EST5EDT"                           , FOR_V2(0x06F1C9, 0x02B219) },
+	{ "Etc/GMT"                           , FOR_V2(0x06FACB, 0x02B56A) },
+	{ "Etc/GMT+0"                         , FOR_V2(0x06FB56, 0x02B5AE) },
+	{ "Etc/GMT+1"                         , FOR_V2(0x06FBE1, 0x02B5F2) },
+	{ "Etc/GMT+10"                        , FOR_V2(0x06FC81, 0x02B640) },
+	{ "Etc/GMT+11"                        , FOR_V2(0x06FD22, 0x02B68E) },
+	{ "Etc/GMT+12"                        , FOR_V2(0x06FDC3, 0x02B6DC) },
+	{ "Etc/GMT+2"                         , FOR_V2(0x06FE64, 0x02B72A) },
+	{ "Etc/GMT+3"                         , FOR_V2(0x06FF04, 0x02B778) },
+	{ "Etc/GMT+4"                         , FOR_V2(0x06FFA4, 0x02B7C6) },
+	{ "Etc/GMT+5"                         , FOR_V2(0x070044, 0x02B814) },
+	{ "Etc/GMT+6"                         , FOR_V2(0x0700E4, 0x02B862) },
+	{ "Etc/GMT+7"                         , FOR_V2(0x070184, 0x02B8B0) },
+	{ "Etc/GMT+8"                         , FOR_V2(0x070224, 0x02B8FE) },
+	{ "Etc/GMT+9"                         , FOR_V2(0x0702C4, 0x02B94C) },
+	{ "Etc/GMT-0"                         , FOR_V2(0x070364, 0x02B99A) },
+	{ "Etc/GMT-1"                         , FOR_V2(0x0703EF, 0x02B9DE) },
+	{ "Etc/GMT-10"                        , FOR_V2(0x070490, 0x02BA2C) },
+	{ "Etc/GMT-11"                        , FOR_V2(0x070532, 0x02BA7A) },
+	{ "Etc/GMT-12"                        , FOR_V2(0x0705D4, 0x02BAC8) },
+	{ "Etc/GMT-13"                        , FOR_V2(0x070676, 0x02BB16) },
+	{ "Etc/GMT-14"                        , FOR_V2(0x070718, 0x02BB64) },
+	{ "Etc/GMT-2"                         , FOR_V2(0x0707BA, 0x02BBB2) },
+	{ "Etc/GMT-3"                         , FOR_V2(0x07085B, 0x02BC00) },
+	{ "Etc/GMT-4"                         , FOR_V2(0x0708FC, 0x02BC4E) },
+	{ "Etc/GMT-5"                         , FOR_V2(0x07099D, 0x02BC9C) },
+	{ "Etc/GMT-6"                         , FOR_V2(0x070A3E, 0x02BCEA) },
+	{ "Etc/GMT-7"                         , FOR_V2(0x070ADF, 0x02BD38) },
+	{ "Etc/GMT-8"                         , FOR_V2(0x070B80, 0x02BD86) },
+	{ "Etc/GMT-9"                         , FOR_V2(0x070C21, 0x02BDD4) },
+	{ "Etc/GMT0"                          , FOR_V2(0x070CC2, 0x02BE22) },
+	{ "Etc/Greenwich"                     , FOR_V2(0x070D4D, 0x02BE66) },
+	{ "Etc/UCT"                           , FOR_V2(0x070DD8, 0x02BEAA) },
+	{ "Etc/Universal"                     , FOR_V2(0x070E63, 0x02BEEE) },
+	{ "Etc/UTC"                           , FOR_V2(0x070EEE, 0x02BF32) },
+	{ "Etc/Zulu"                          , FOR_V2(0x070F79, 0x02BF76) },
+	{ "Europe/Amsterdam"                  , FOR_V2(0x071004, 0x02BFBA) },
+	{ "Europe/Andorra"                    , FOR_V2(0x071B95, 0x02C40C) },
+	{ "Europe/Astrakhan"                  , FOR_V2(0x072278, 0x02C699) },
+	{ "Europe/Athens"                     , FOR_V2(0x072743, 0x02C885) },
+	{ "Europe/Belfast"                    , FOR_V2(0x07302E, 0x02CBD9) },
+	{ "Europe/Belgrade"                   , FOR_V2(0x073EA1, 0x02D121) },
+	{ "Europe/Berlin"                     , FOR_V2(0x074652, 0x02D3FB) },
+	{ "Europe/Bratislava"                 , FOR_V2(0x074F91, 0x02D776) },
+	{ "Europe/Brussels"                   , FOR_V2(0x07587D, 0x02DAB9) },
+	{ "Europe/Bucharest"                  , FOR_V2(0x076423, 0x02DF01) },
+	{ "Europe/Budapest"                   , FOR_V2(0x076CDC, 0x02E23C) },
+	{ "Europe/Busingen"                   , FOR_V2(0x07764D, 0x02E5B6) },
+	{ "Europe/Chisinau"                   , FOR_V2(0x077DDF, 0x02E87E) },
+	{ "Europe/Copenhagen"                 , FOR_V2(0x078778, 0x02EC22) },
+	{ "Europe/Dublin"                     , FOR_V2(0x078FF4, 0x02EF3D) },
+	{ "Europe/Gibraltar"                  , FOR_V2(0x079DD7, 0x02F457) },
+	{ "Europe/Guernsey"                   , FOR_V2(0x07A9D8, 0x02F8BF) },
+	{ "Europe/Helsinki"                   , FOR_V2(0x07B84B, 0x02FE07) },
+	{ "Europe/Isle_of_Man"                , FOR_V2(0x07BFCC, 0x0300CE) },
+	{ "Europe/Istanbul"                   , FOR_V2(0x07CE3F, 0x030616) },
+	{ "Europe/Jersey"                     , FOR_V2(0x07D6C1, 0x03094E) },
+	{ "Europe/Kaliningrad"                , FOR_V2(0x07E534, 0x030E96) },
+	{ "Europe/Kiev"                       , FOR_V2(0x07EB42, 0x031107) },
+	{ "Europe/Kirov"                      , FOR_V2(0x07F393, 0x03143A) },
+	{ "Europe/Lisbon"                     , FOR_V2(0x07F83C, 0x031615) },
+	{ "Europe/Ljubljana"                  , FOR_V2(0x0805D8, 0x031B29) },
+	{ "Europe/London"                     , FOR_V2(0x080D89, 0x031E03) },
+	{ "Europe/Luxembourg"                 , FOR_V2(0x081BFC, 0x03234B) },
+	{ "Europe/Madrid"                     , FOR_V2(0x0827A6, 0x0327A6) },
+	{ "Europe/Malta"                      , FOR_V2(0x08320F, 0x032B90) },
+	{ "Europe/Mariehamn"                  , FOR_V2(0x083C60, 0x032F5A) },
+	{ "Europe/Minsk"                      , FOR_V2(0x0843E1, 0x033221) },
+	{ "Europe/Monaco"                     , FOR_V2(0x084947, 0x033445) },
+	{ "Europe/Moscow"                     , FOR_V2(0x0854DC, 0x033891) },
+	{ "Europe/Nicosia"                    , FOR_V2(0x085B04, 0x033B11) },
+	{ "Europe/Oslo"                       , FOR_V2(0x0862F0, 0x033DFE) },
+	{ "Europe/Paris"                      , FOR_V2(0x086BC7, 0x034141) },
+	{ "Europe/Podgorica"                  , FOR_V2(0x08776E, 0x034598) },
+	{ "Europe/Prague"                     , FOR_V2(0x087F1F, 0x034872) },
+	{ "Europe/Riga"                       , FOR_V2(0x08880B, 0x034BB5) },
+	{ "Europe/Rome"                       , FOR_V2(0x0890D2, 0x034F0B) },
+	{ "Europe/Samara"                     , FOR_V2(0x089B62, 0x0352E4) },
+	{ "Europe/San_Marino"                 , FOR_V2(0x08A06C, 0x0354F3) },
+	{ "Europe/Sarajevo"                   , FOR_V2(0x08AAFC, 0x0358CC) },
+	{ "Europe/Saratov"                    , FOR_V2(0x08B2AD, 0x035BA6) },
+	{ "Europe/Simferopol"                 , FOR_V2(0x08B776, 0x035D90) },
+	{ "Europe/Skopje"                     , FOR_V2(0x08BD63, 0x035FF2) },
+	{ "Europe/Sofia"                      , FOR_V2(0x08C514, 0x0362CC) },
+	{ "Europe/Stockholm"                  , FOR_V2(0x08CD72, 0x0365E5) },
+	{ "Europe/Tallinn"                    , FOR_V2(0x08D4FC, 0x0368A5) },
+	{ "Europe/Tirane"                     , FOR_V2(0x08DD93, 0x036BEB) },
+	{ "Europe/Tiraspol"                   , FOR_V2(0x08E5D1, 0x036EF6) },
+	{ "Europe/Ulyanovsk"                  , FOR_V2(0x08EF6A, 0x03729A) },
+	{ "Europe/Uzhgorod"                   , FOR_V2(0x08F489, 0x0374AC) },
+	{ "Europe/Vaduz"                      , FOR_V2(0x08FCD4, 0x0377D4) },
+	{ "Europe/Vatican"                    , FOR_V2(0x09045E, 0x037A94) },
+	{ "Europe/Vienna"                     , FOR_V2(0x090EEE, 0x037E6D) },
+	{ "Europe/Vilnius"                    , FOR_V2(0x0917B7, 0x0381AB) },
+	{ "Europe/Volgograd"                  , FOR_V2(0x09205A, 0x0384FB) },
+	{ "Europe/Warsaw"                     , FOR_V2(0x092507, 0x0386DA) },
+	{ "Europe/Zagreb"                     , FOR_V2(0x092FA4, 0x038ACC) },
+	{ "Europe/Zaporozhye"                 , FOR_V2(0x093755, 0x038DA6) },
+	{ "Europe/Zurich"                     , FOR_V2(0x093FD2, 0x0390FA) },
+	{ "Factory"                           , FOR_V2(0x09475C, 0x0393BA) },
+	{ "GB"                                , FOR_V2(0x0947FC, 0x039408) },
+	{ "GB-Eire"                           , FOR_V2(0x09566F, 0x039950) },
+	{ "GMT"                               , FOR_V2(0x0964E2, 0x039E98) },
+	{ "GMT+0"                             , FOR_V2(0x09656D, 0x039EDC) },
+	{ "GMT-0"                             , FOR_V2(0x0965F8, 0x039F20) },
+	{ "GMT0"                              , FOR_V2(0x096683, 0x039F64) },
+	{ "Greenwich"                         , FOR_V2(0x09670E, 0x039FA8) },
+	{ "Hongkong"                          , FOR_V2(0x096799, 0x039FEC) },
+	{ "HST"                               , FOR_V2(0x096C4A, 0x03A1BB) },
+	{ "Iceland"                           , FOR_V2(0x096CD6, 0x03A1FF) },
+	{ "Indian/Antananarivo"               , FOR_V2(0x097186, 0x03A3D0) },
+	{ "Indian/Chagos"                     , FOR_V2(0x0972AF, 0x03A45D) },
+	{ "Indian/Christmas"                  , FOR_V2(0x09739C, 0x03A4CD) },
+	{ "Indian/Cocos"                      , FOR_V2(0x09745E, 0x03A527) },
+	{ "Indian/Comoro"                     , FOR_V2(0x097529, 0x03A583) },
+	{ "Indian/Kerguelen"                  , FOR_V2(0x097652, 0x03A610) },
+	{ "Indian/Mahe"                       , FOR_V2(0x097719, 0x03A66F) },
+	{ "Indian/Maldives"                   , FOR_V2(0x0977E0, 0x03A6CE) },
+	{ "Indian/Mauritius"                  , FOR_V2(0x0978C8, 0x03A739) },
+	{ "Indian/Mayotte"                    , FOR_V2(0x0979DF, 0x03A7B8) },
+	{ "Indian/Reunion"                    , FOR_V2(0x097B08, 0x03A845) },
+	{ "Iran"                              , FOR_V2(0x097BCF, 0x03A8A4) },
+	{ "Israel"                            , FOR_V2(0x098291, 0x03AB2E) },
+	{ "Jamaica"                           , FOR_V2(0x098B76, 0x03AE76) },
+	{ "Japan"                             , FOR_V2(0x098D7D, 0x03AF4C) },
+	{ "Kwajalein"                         , FOR_V2(0x098EC7, 0x03AFDD) },
+	{ "Libya"                             , FOR_V2(0x098FD6, 0x03B059) },
+	{ "MET"                               , FOR_V2(0x099271, 0x03B167) },
+	{ "Mexico/BajaNorte"                  , FOR_V2(0x099AB3, 0x03B470) },
+	{ "Mexico/BajaSur"                    , FOR_V2(0x09A3F3, 0x03B7DE) },
+	{ "Mexico/General"                    , FOR_V2(0x09AA1B, 0x03BA30) },
+	{ "MST"                               , FOR_V2(0x09B079, 0x03BC93) },
+	{ "MST7MDT"                           , FOR_V2(0x09B104, 0x03BCD7) },
+	{ "Navajo"                            , FOR_V2(0x09BA06, 0x03C028) },
+	{ "NZ"                                , FOR_V2(0x09C3A7, 0x03C3B2) },
+	{ "NZ-CHAT"                           , FOR_V2(0x09CD4F, 0x03C741) },
+	{ "Pacific/Apia"                      , FOR_V2(0x09D582, 0x03CA41) },
+	{ "Pacific/Auckland"                  , FOR_V2(0x09D9FC, 0x03CBF7) },
+	{ "Pacific/Bougainville"              , FOR_V2(0x09E3BC, 0x03CF9E) },
+	{ "Pacific/Chatham"                   , FOR_V2(0x09E4FC, 0x03D02C) },
+	{ "Pacific/Chuuk"                     , FOR_V2(0x09ED3E, 0x03D33B) },
+	{ "Pacific/Easter"                    , FOR_V2(0x09EE10, 0x03D3A4) },
+	{ "Pacific/Efate"                     , FOR_V2(0x09F6EB, 0x03D6F1) },
+	{ "Pacific/Enderbury"                 , FOR_V2(0x09F8E3, 0x03D7C0) },
+	{ "Pacific/Fakaofo"                   , FOR_V2(0x09FA01, 0x03D84B) },
+	{ "Pacific/Fiji"                      , FOR_V2(0x09FAEA, 0x03D8B6) },
+	{ "Pacific/Funafuti"                  , FOR_V2(0x09FF46, 0x03DA57) },
+	{ "Pacific/Galapagos"                 , FOR_V2(0x0A0009, 0x03DAB1) },
+	{ "Pacific/Gambier"                   , FOR_V2(0x0A0132, 0x03DB44) },
+	{ "Pacific/Guadalcanal"               , FOR_V2(0x0A0207, 0x03DBB2) },
+	{ "Pacific/Guam"                      , FOR_V2(0x0A02CF, 0x03DC11) },
+	{ "Pacific/Honolulu"                  , FOR_V2(0x0A03BC, 0x03DC78) },
+	{ "Pacific/Johnston"                  , FOR_V2(0x0A04E2, 0x03DD00) },
+	{ "Pacific/Kiritimati"                , FOR_V2(0x0A0602, 0x03DD82) },
+	{ "Pacific/Kosrae"                    , FOR_V2(0x0A0721, 0x03DE0C) },
+	{ "Pacific/Kwajalein"                 , FOR_V2(0x0A082E, 0x03DE8A) },
+	{ "Pacific/Majuro"                    , FOR_V2(0x0A0946, 0x03DF0F) },
+	{ "Pacific/Marquesas"                 , FOR_V2(0x0A0A4C, 0x03DF97) },
+	{ "Pacific/Midway"                    , FOR_V2(0x0A0B2C, 0x03E009) },
+	{ "Pacific/Nauru"                     , FOR_V2(0x0A0C0A, 0x03E079) },
+	{ "Pacific/Niue"                      , FOR_V2(0x0A0D30, 0x03E101) },
+	{ "Pacific/Norfolk"                   , FOR_V2(0x0A0E46, 0x03E181) },
+	{ "Pacific/Noumea"                    , FOR_V2(0x0A0F95, 0x03E219) },
+	{ "Pacific/Pago_Pago"                 , FOR_V2(0x0A10E9, 0x03E2B2) },
+	{ "Pacific/Palau"                     , FOR_V2(0x0A11B9, 0x03E314) },
+	{ "Pacific/Pitcairn"                  , FOR_V2(0x0A127B, 0x03E36E) },
+	{ "Pacific/Pohnpei"                   , FOR_V2(0x0A1366, 0x03E3DB) },
+	{ "Pacific/Ponape"                    , FOR_V2(0x0A1437, 0x03E443) },
+	{ "Pacific/Port_Moresby"              , FOR_V2(0x0A14FA, 0x03E49D) },
+	{ "Pacific/Rarotonga"                 , FOR_V2(0x0A15F1, 0x03E515) },
+	{ "Pacific/Saipan"                    , FOR_V2(0x0A1857, 0x03E60D) },
+	{ "Pacific/Samoa"                     , FOR_V2(0x0A1944, 0x03E674) },
+	{ "Pacific/Tahiti"                    , FOR_V2(0x0A1A14, 0x03E6D6) },
+	{ "Pacific/Tarawa"                    , FOR_V2(0x0A1AEA, 0x03E744) },
+	{ "Pacific/Tongatapu"                 , FOR_V2(0x0A1BBC, 0x03E7AD) },
+	{ "Pacific/Truk"                      , FOR_V2(0x0A1D51, 0x03E85E) },
+	{ "Pacific/Wake"                      , FOR_V2(0x0A1E14, 0x03E8B8) },
+	{ "Pacific/Wallis"                    , FOR_V2(0x0A1EE2, 0x03E91D) },
+	{ "Pacific/Yap"                       , FOR_V2(0x0A1FA5, 0x03E977) },
+	{ "Poland"                            , FOR_V2(0x0A2068, 0x03E9D1) },
+	{ "Portugal"                          , FOR_V2(0x0A2B05, 0x03EDC3) },
+	{ "PRC"                               , FOR_V2(0x0A388E, 0x03F2C4) },
+	{ "PST8PDT"                           , FOR_V2(0x0A3A38, 0x03F375) },
+	{ "ROC"                               , FOR_V2(0x0A433A, 0x03F6C6) },
+	{ "ROK"                               , FOR_V2(0x0A465C, 0x03F803) },
+	{ "Singapore"                         , FOR_V2(0x0A487B, 0x03F8E9) },
+	{ "Turkey"                            , FOR_V2(0x0A4A2F, 0x03F9AE) },
+	{ "UCT"                               , FOR_V2(0x0A52B1, 0x03FCE6) },
+	{ "Universal"                         , FOR_V2(0x0A533C, 0x03FD2A) },
+	{ "US/Alaska"                         , FOR_V2(0x0A53C7, 0x03FD6E) },
+	{ "US/Aleutian"                       , FOR_V2(0x0A5D1F, 0x0400E6) },
+	{ "US/Arizona"                        , FOR_V2(0x0A6668, 0x040457) },
+	{ "US/Central"                        , FOR_V2(0x0A67D5, 0x0404F6) },
+	{ "US/East-Indiana"                   , FOR_V2(0x0A75E2, 0x040A1A) },
+	{ "US/Eastern"                        , FOR_V2(0x0A7C79, 0x040C95) },
+	{ "US/Hawaii"                         , FOR_V2(0x0A8A5E, 0x0411A5) },
+	{ "US/Indiana-Starke"                 , FOR_V2(0x0A8B7E, 0x041227) },
+	{ "US/Michigan"                       , FOR_V2(0x0A950F, 0x0415B1) },
+	{ "US/Mountain"                       , FOR_V2(0x0A9DA7, 0x0418E3) },
+	{ "US/Pacific"                        , FOR_V2(0x0AA748, 0x041C6D) },
+	{ "US/Pacific-New"                    , FOR_V2(0x0AB271, 0x042083) },
+	{ "US/Samoa"                          , FOR_V2(0x0ABD9A, 0x042499) },
+	{ "UTC"                               , FOR_V2(0x0ABE6A, 0x0424FB) },
+	{ "W-SU"                              , FOR_V2(0x0ABEF5, 0x04253F) },
+	{ "WET"                               , FOR_V2(0x0AC509, 0x0427AB) },
+	{ "Zulu"                              , FOR_V2(0x0ACC66, 0x042A5E) },
 };
 #ifdef TIMELIB_SUPPORTS_V2DATA
-const unsigned char timelib_timezone_db_data_builtin[708816] = {
+const unsigned char timelib_timezone_db_data_builtin[707825] = {
 #else
-const unsigned char timelib_timezone_db_data_builtin[273466] = {
+const unsigned char timelib_timezone_db_data_builtin[273058] = {
 #endif
 
 
@@ -1564,7 +1563,7 @@ const unsigned char timelib_timezone_db_
 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x53, 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, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
-0xB6, 0xA3, 0xDA, 0x00, 0x00, 0x9E, 0x17, 0xE0, 0x01, 0x7A, 0x34, 0x50, 0x02, 0x7D, 0xF9, 0xE0,
+0xB6, 0xA3, 0xDA, 0xDC, 0x00, 0x9E, 0x17, 0xE0, 0x01, 0x7A, 0x34, 0x50, 0x02, 0x7D, 0xF9, 0xE0,
 0x03, 0x5B, 0x67, 0xD0, 0x04, 0x60, 0x7E, 0xE0, 0x05, 0x3D, 0xEC, 0xD0, 0x06, 0x40, 0x60, 0xE0,
 0x07, 0x1F, 0x20, 0x50, 0x08, 0x20, 0x42, 0xE0, 0x09, 0x00, 0x53, 0xD0, 0x0A, 0x00, 0x24, 0xE0,
 0x0A, 0xE1, 0x87, 0x50, 0x0B, 0xE0, 0x06, 0xE0, 0x0C, 0xC4, 0x0C, 0x50, 0x0D, 0xBF, 0xE8, 0xE0,
@@ -1574,7 +1573,7 @@ const unsigned char timelib_timezone_db_
 0x19, 0xED, 0xC6, 0x50, 0x1A, 0xF1, 0x8B, 0xE0, 0x1B, 0xD0, 0x4B, 0x50, 0x1C, 0xD1, 0x6D, 0xE0,
 0x1D, 0xB1, 0x7E, 0xD0, 0x38, 0x80, 0x45, 0x20, 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, 0x03, 0x00, 0x00, 0x1E, 0x80, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x1D, 0xA4, 0x00,
 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A,
 0x30, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00,
 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1582,7 +1581,7 @@ const unsigned char timelib_timezone_db_
 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, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xDA, 0xDC, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x9E, 0x17, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7A, 0x34, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x02, 0x7D, 0xF9, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5B, 0x67, 0xD0, 0x00, 0x00, 0x00, 0x00,
 0x04, 0x60, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3D, 0xEC, 0xD0, 0x00, 0x00, 0x00, 0x00,
@@ -1601,7 +1600,7 @@ const unsigned char timelib_timezone_db_
 0x1C, 0xD1, 0x6D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB1, 0x7E, 0xD0, 0x00, 0x00, 0x00, 0x00,
 0x38, 0x80, 0x45, 0x20, 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, 0x03, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x1D, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x2A,
 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x4C,
 0x4D, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A,
@@ -1634,8 +1633,8 @@ const unsigned char timelib_timezone_db_
 
 /* Africa/Khartoum */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x44, 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, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
 0xB6, 0xA3, 0xDA, 0x00, 0x00, 0x9E, 0x17, 0xE0, 0x01, 0x7A, 0x34, 0x50, 0x02, 0x7D, 0xF9, 0xE0,
 0x03, 0x5B, 0x67, 0xD0, 0x04, 0x60, 0x7E, 0xE0, 0x05, 0x3D, 0xEC, 0xD0, 0x06, 0x40, 0x60, 0xE0,
 0x07, 0x1F, 0x20, 0x50, 0x08, 0x20, 0x42, 0xE0, 0x09, 0x00, 0x53, 0xD0, 0x0A, 0x00, 0x24, 0xE0,
@@ -1644,16 +1643,17 @@ const unsigned char timelib_timezone_db_
 0x12, 0x67, 0xA6, 0xD0, 0x13, 0x68, 0xC9, 0x60, 0x14, 0x4A, 0x2B, 0xD0, 0x15, 0x48, 0xAB, 0x60,
 0x16, 0x2B, 0x5F, 0x50, 0x17, 0x28, 0x8D, 0x60, 0x18, 0x0C, 0x92, 0xD0, 0x19, 0x08, 0x6F, 0x60,
 0x19, 0xED, 0xC6, 0x50, 0x1A, 0xF1, 0x8B, 0xE0, 0x1B, 0xD0, 0x4B, 0x50, 0x1C, 0xD1, 0x6D, 0xE0,
-0x1D, 0xB1, 0x7E, 0xD0, 0x38, 0x80, 0x45, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x1D, 0xB1, 0x7E, 0xD0, 0x38, 0x80, 0x45, 0x20, 0x59, 0xF8, 0xE4, 0x50, 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, 0x03, 0x00, 0x00, 0x1E, 0x80, 0x00,
-0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A,
-0x30, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00,
-0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02,
+0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D,
+0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 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, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x9E, 0x17, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7A, 0x34, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x02, 0x7D, 0xF9, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5B, 0x67, 0xD0, 0x00, 0x00, 0x00, 0x00,
@@ -1671,12 +1671,13 @@ const unsigned char timelib_timezone_db_
 0x19, 0x08, 0x6F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0xED, 0xC6, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x1A, 0xF1, 0x8B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xD0, 0x4B, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x1C, 0xD1, 0x6D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB1, 0x7E, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x38, 0x80, 0x45, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x38, 0x80, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF8, 0xE4, 0x50, 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, 0x03, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A,
-0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x4C,
-0x4D, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02,
+0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D,
+0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A,
 #endif
 0x00, 0xA1, 0x22, 0x00, 0x01, 0x44, 0x4C, 0xD5, 0x00, 0x00, 0x00, 0x00,
 
@@ -2174,10 +2175,10 @@ const unsigned char timelib_timezone_db_
 
 /* Africa/Windhoek */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x41, 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, 0x5D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x80, 0x00, 0x00, 0x00,
 0x82, 0x46, 0xCF, 0x68, 0xCC, 0xAE, 0x8C, 0x80, 0xCD, 0x9E, 0x6F, 0x70, 0x26, 0x06, 0xA7, 0xE0,
-0x2D, 0x9D, 0xEA, 0xE0, 0x2E, 0x69, 0x1C, 0x10, 0x2F, 0x7D, 0xE9, 0x00, 0x30, 0x48, 0xFE, 0x10,
+0x2D, 0x8C, 0xC7, 0x60, 0x2E, 0x69, 0x1C, 0x10, 0x2F, 0x7D, 0xE9, 0x00, 0x30, 0x48, 0xFE, 0x10,
 0x31, 0x67, 0x05, 0x80, 0x32, 0x28, 0xE0, 0x10, 0x33, 0x46, 0xE7, 0x80, 0x34, 0x11, 0xFC, 0x90,
 0x35, 0x26, 0xC9, 0x80, 0x35, 0xF1, 0xDE, 0x90, 0x37, 0x06, 0xAB, 0x80, 0x37, 0xD1, 0xC0, 0x90,
 0x38, 0xE6, 0x8D, 0x80, 0x39, 0xB1, 0xA2, 0x90, 0x3A, 0xC6, 0x6F, 0x80, 0x3B, 0x91, 0x84, 0x90,
@@ -2189,36 +2190,24 @@ const unsigned char timelib_timezone_db_
 0x4F, 0x77, 0x9A, 0x80, 0x50, 0x42, 0xAF, 0x90, 0x51, 0x60, 0xB7, 0x00, 0x52, 0x22, 0x91, 0x90,
 0x53, 0x40, 0x99, 0x00, 0x54, 0x0B, 0xAE, 0x10, 0x55, 0x20, 0x7B, 0x00, 0x55, 0xEB, 0x90, 0x10,
 0x57, 0x00, 0x5D, 0x00, 0x57, 0xCB, 0x72, 0x10, 0x58, 0xE0, 0x3F, 0x00, 0x59, 0xAB, 0x54, 0x10,
-0x5A, 0xC0, 0x21, 0x00, 0x5B, 0x8B, 0x36, 0x10, 0x5C, 0xA9, 0x3D, 0x80, 0x5D, 0x6B, 0x18, 0x10,
-0x5E, 0x89, 0x1F, 0x80, 0x5F, 0x54, 0x34, 0x90, 0x60, 0x69, 0x01, 0x80, 0x61, 0x34, 0x16, 0x90,
-0x62, 0x48, 0xE3, 0x80, 0x63, 0x13, 0xF8, 0x90, 0x64, 0x28, 0xC5, 0x80, 0x64, 0xF3, 0xDA, 0x90,
-0x66, 0x11, 0xE2, 0x00, 0x66, 0xD3, 0xBC, 0x90, 0x67, 0xF1, 0xC4, 0x00, 0x68, 0xBC, 0xD9, 0x10,
-0x69, 0xD1, 0xA6, 0x00, 0x6A, 0x9C, 0xBB, 0x10, 0x6B, 0xB1, 0x88, 0x00, 0x6C, 0x7C, 0x9D, 0x10,
-0x6D, 0x91, 0x6A, 0x00, 0x6E, 0x5C, 0x7F, 0x10, 0x6F, 0x71, 0x4C, 0x00, 0x70, 0x3C, 0x61, 0x10,
-0x71, 0x5A, 0x68, 0x80, 0x72, 0x1C, 0x43, 0x10, 0x73, 0x3A, 0x4A, 0x80, 0x74, 0x05, 0x5F, 0x90,
-0x75, 0x1A, 0x2C, 0x80, 0x75, 0xE5, 0x41, 0x90, 0x76, 0xFA, 0x0E, 0x80, 0x77, 0xC5, 0x23, 0x90,
-0x78, 0xD9, 0xF0, 0x80, 0x79, 0xA5, 0x05, 0x90, 0x7A, 0xB9, 0xD2, 0x80, 0x7B, 0x84, 0xE7, 0x90,
-0x7C, 0xA2, 0xEF, 0x00, 0x7D, 0x6E, 0x04, 0x10, 0x7E, 0x82, 0xD1, 0x00, 0x7F, 0x4D, 0xE6, 0x10,
-0x01, 0x02, 0x03, 0x02, 0x04, 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, 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, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
-0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x10,
-0x08, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00,
-0x00, 0x2A, 0x30, 0x01, 0x0A, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0F, 0x00, 0x00, 0x1C, 0x20, 0x01,
-0x13, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x18, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x33, 0x30,
-0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54, 0x00, 0x57,
-0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x02, 0x03, 0x02, 0x04, 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, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
+0x06, 0x05, 0x06, 0x05, 0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00,
+0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0A, 0x00, 0x00, 0x1C,
+0x20, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x13, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x17, 0x00,
+0x00, 0x1C, 0x20, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x33, 0x30, 0x00, 0x53,
+0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 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, 0x5E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x7B, 0x4B, 0x78, 0xFF, 0xFF, 0xFF, 0xFF,
 0x82, 0x46, 0xCF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xAE, 0x8C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
 0xCD, 0x9E, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x26, 0x06, 0xA7, 0xE0, 0x00, 0x00, 0x00, 0x00,
-0x2D, 0x9D, 0xEA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x2D, 0x8C, 0xC7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x2F, 0x7D, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x48, 0xFE, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x31, 0x67, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x32, 0x28, 0xE0, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x33, 0x46, 0xE7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x11, 0xFC, 0x90, 0x00, 0x00, 0x00, 0x00,
@@ -2241,40 +2230,17 @@ const unsigned char timelib_timezone_db_
 0x53, 0x40, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0B, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x55, 0x20, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xEB, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x57, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xCB, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x58, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xAB, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x5A, 0xC0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x8B, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x5C, 0xA9, 0x3D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x6B, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x5E, 0x89, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x54, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x60, 0x69, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x61, 0x34, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x62, 0x48, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x63, 0x13, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x64, 0x28, 0xC5, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF3, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x66, 0x11, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xD3, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x67, 0xF1, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBC, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x69, 0xD1, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x9C, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x6B, 0xB1, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x7C, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x6D, 0x91, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x5C, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x6F, 0x71, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x3C, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x71, 0x5A, 0x68, 0x80, 0x00, 0x00, 0x00, 0x00, 0x72, 0x1C, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x73, 0x3A, 0x4A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x05, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x75, 0x1A, 0x2C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x75, 0xE5, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x76, 0xFA, 0x0E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x77, 0xC5, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x78, 0xD9, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x79, 0xA5, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x7A, 0xB9, 0xD2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x84, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x7C, 0xA2, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x6E, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x7E, 0x82, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x4D, 0xE6, 0x10, 0x00, 0x01, 0x02, 0x03,
-0x02, 0x04, 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, 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, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05,
-0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00,
-0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30,
-0x01, 0x0A, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0F, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x13, 0x00, 0x00,
-0x0E, 0x10, 0x00, 0x18, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x33, 0x30, 0x00, 0x53, 0x41,
-0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57,
-0x41, 0x54, 0x2D, 0x31, 0x57, 0x41, 0x53, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x30, 0x2C,
-0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x0A,
+0x58, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xAB, 0x54, 0x10, 0x00, 0x01, 0x02, 0x03,
+0x02, 0x04, 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, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
+0x05, 0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00,
+0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0A, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0F,
+0x00, 0x00, 0x0E, 0x10, 0x00, 0x13, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x17, 0x00, 0x00, 0x1C, 0x20,
+0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x33, 0x30, 0x00, 0x53, 0x41, 0x53, 0x54,
+0x00, 0x43, 0x41, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x43,
+0x41, 0x54, 0x2D, 0x32, 0x0A,
 #endif
 0x00, 0x66, 0xE5, 0x25, 0x01, 0x2C, 0xC0, 0x30, 0x00, 0x00, 0x00, 0x00,
 
@@ -2338,7 +2304,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x21, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xF9, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x5A, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x44, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x50, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x55, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x71, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -2420,7 +2386,7 @@ const unsigned char timelib_timezone_db_
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, 0x00,
-0xAB, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
+0xAB, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0C, 0xFF, 0xFF, 0x65, 0x50,
 0x00, 0x10, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF,
 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53,
@@ -2493,7 +2459,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x28, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xE0, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x41, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x36, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x42, 0x30, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x47, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x63, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -3926,7 +3892,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x21, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xF9, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x5A, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x44, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x50, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x55, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x71, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -4008,7 +3974,7 @@ const unsigned char timelib_timezone_db_
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, 0x00,
-0xAB, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
+0xAB, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0C, 0xFF, 0xFF, 0x65, 0x50,
 0x00, 0x10, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF,
 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53,
@@ -6208,43 +6174,42 @@ const unsigned char timelib_timezone_db_
 /* America/Detroit */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
 0x85, 0xBD, 0x22, 0x5B, 0x99, 0x3C, 0x94, 0x00, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70,
-0xD2, 0x60, 0xFB, 0xE0, 0xD7, 0x35, 0xA8, 0xF0, 0xD8, 0x00, 0xA1, 0xE0, 0xFB, 0x33, 0xAC, 0x70,
-0xFB, 0xE8, 0x3B, 0xE0, 0x06, 0x40, 0xDF, 0x70, 0x07, 0x30, 0xC2, 0x60, 0x07, 0x8D, 0x19, 0x70,
-0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70, 0x0A, 0xF0, 0x86, 0x60, 0x0B, 0xE0, 0x85, 0x70,
-0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70, 0x0E, 0xB9, 0x84, 0xE0, 0x0F, 0xA9, 0x83, 0xF0,
-0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0,
-0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0, 0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0,
-0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0, 0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70,
-0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70, 0x1D, 0xC1, 0xCF, 0x60, 0x1E, 0xB1, 0xCE, 0x70,
-0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0, 0x21, 0x81, 0x93, 0x60, 0x22, 0x55, 0xE2, 0xF0,
-0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0, 0x25, 0x4A, 0x91, 0xE0, 0x26, 0x15, 0xA6, 0xF0,
-0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70, 0x29, 0x0A, 0x55, 0xE0, 0x29, 0xDE, 0xA5, 0x70,
-0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70, 0x2C, 0xD3, 0x54, 0x60, 0x2D, 0x9E, 0x69, 0x70,
-0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70, 0x30, 0x93, 0x18, 0x60, 0x31, 0x67, 0x67, 0xF0,
-0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0, 0x34, 0x52, 0xDC, 0x60, 0x35, 0x27, 0x2B, 0xF0,
-0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0, 0x38, 0x1B, 0xDA, 0xE0, 0x38, 0xE6, 0xEF, 0xF0,
-0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0, 0x3B, 0xDB, 0x9E, 0xE0, 0x3C, 0xAF, 0xEE, 0x70,
-0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70, 0x3F, 0x9B, 0x62, 0xE0, 0x40, 0x6F, 0xB2, 0x70,
-0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70, 0x43, 0x64, 0x61, 0x60, 0x44, 0x2F, 0x76, 0x70,
-0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0, 0x47, 0xD3, 0x8A, 0xF0,
-0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70,
-0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70,
-0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70,
-0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0,
-0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0,
-0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0,
-0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70,
-0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70,
-0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70,
-0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0,
-0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0,
-0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70,
-0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70,
-0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70,
-0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 0x02, 0x03,
-0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
+0xD2, 0x60, 0xFB, 0xE0, 0xD7, 0x35, 0xA8, 0xF0, 0xD8, 0x00, 0xA1, 0xE0, 0x06, 0x40, 0xDF, 0x70,
+0x07, 0x30, 0xC2, 0x60, 0x07, 0x8D, 0x19, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70,
+0x0A, 0xF0, 0x86, 0x60, 0x0B, 0xE0, 0x85, 0x70, 0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70,
+0x0E, 0xB9, 0x84, 0xE0, 0x0F, 0xA9, 0x83, 0xF0, 0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0,
+0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0,
+0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0, 0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0,
+0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70, 0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70,
+0x1D, 0xC1, 0xCF, 0x60, 0x1E, 0xB1, 0xCE, 0x70, 0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0,
+0x21, 0x81, 0x93, 0x60, 0x22, 0x55, 0xE2, 0xF0, 0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0,
+0x25, 0x4A, 0x91, 0xE0, 0x26, 0x15, 0xA6, 0xF0, 0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70,
+0x29, 0x0A, 0x55, 0xE0, 0x29, 0xDE, 0xA5, 0x70, 0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70,
+0x2C, 0xD3, 0x54, 0x60, 0x2D, 0x9E, 0x69, 0x70, 0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70,
+0x30, 0x93, 0x18, 0x60, 0x31, 0x67, 0x67, 0xF0, 0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0,
+0x34, 0x52, 0xDC, 0x60, 0x35, 0x27, 0x2B, 0xF0, 0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0,
+0x38, 0x1B, 0xDA, 0xE0, 0x38, 0xE6, 0xEF, 0xF0, 0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0,
+0x3B, 0xDB, 0x9E, 0xE0, 0x3C, 0xAF, 0xEE, 0x70, 0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70,
+0x3F, 0x9B, 0x62, 0xE0, 0x40, 0x6F, 0xB2, 0x70, 0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70,
+0x43, 0x64, 0x61, 0x60, 0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0,
+0x47, 0x2D, 0x5F, 0xE0, 0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0,
+0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70,
+0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70,
+0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70,
+0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0,
+0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0,
+0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70,
+0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70,
+0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70,
+0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0,
+0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0,
+0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0,
+0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70,
+0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70,
+0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70,
+0x7F, 0x98, 0x00, 0x60, 0x00, 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,
 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,
@@ -6252,20 +6217,20 @@ const unsigned char timelib_timezone_db_
 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF,
-0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C,
-0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00,
-0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00,
-0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF,
+0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08,
+0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0,
+0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57,
+0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00,
-0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0xBD, 0x22, 0x5B, 0xFF, 0xFF, 0xFF, 0xFF,
 0x99, 0x3C, 0x94, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xFB, 0x33, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0x00, 0x00, 0x00, 0x00,
+0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x0A, 0x00, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00,
@@ -6339,13 +6304,13 @@ const unsigned char timelib_timezone_db_
 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF,
-0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C,
-0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00,
-0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00,
-0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0,
+0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF,
+0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53,
+0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44,
+0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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,
 #endif
 0x00, 0xC9, 0xEB, 0xF2, 0x00, 0x93, 0xF0, 0xB8, 0x00, 0x00, 0x00, 0x19, 0x45, 0x61, 0x73, 0x74,
 0x65, 0x72, 0x6E, 0x20, 0x2D, 0x20, 0x4D, 0x49, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61,
@@ -7548,8 +7513,8 @@ const unsigned char timelib_timezone_db_
 
 /* America/Grand_Turk */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x43, 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, 0x4C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
 0x93, 0x0F, 0xB4, 0xFF, 0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0,
 0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0, 0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0,
 0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0, 0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70,
@@ -7568,20 +7533,33 @@ const unsigned char timelib_timezone_db_
 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70,
 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70,
 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70,
-0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, 0x01, 0x02, 0x03, 0x02,
+0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, 0x5A, 0xA4, 0xD3, 0xF0,
+0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0,
+0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70,
+0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70,
+0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70,
+0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0,
+0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0,
+0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70,
+0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70,
+0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70,
+0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x01, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0xBD, 0x50, 0x00, 0x00, 0xFF, 0xFF,
-0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C,
-0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53,
-0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0xFF, 0xFF, 0xBD, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0,
+0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x10, 0xFF, 0xFF,
+0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00,
+0x45, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 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, 0x4D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1E, 0x30, 0xFF, 0xFF, 0xFF, 0xFF,
 0x93, 0x0F, 0xB4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00,
 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00,
@@ -7620,16 +7598,40 @@ const unsigned char timelib_timezone_db_
 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, 0x00, 0x00, 0x00, 0x00,
 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00,
 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x56, 0x35, 0xAA, 0x60, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, 0x00, 0x00,
+0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x04, 0xFF, 0xFF, 0xBD, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF, 0xB9,
-0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x10, 0x4C,
-0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x41,
-0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x41, 0x53,
-0x54, 0x34, 0x0A,
+0x04, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
+0x02, 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, 0xBD, 0x50, 0x00, 0x00, 0xFF,
+0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01,
+0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54,
+0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
 #endif
 0x00, 0xAA, 0x15, 0xAA, 0x00, 0xA6, 0x1E, 0x0A, 0x00, 0x00, 0x00, 0x00,
 
@@ -9661,7 +9663,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x91, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x26, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xD1, 0x85, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x32, 0xC5, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00,
@@ -11457,7 +11459,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xCE, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00,
@@ -12961,7 +12963,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x26, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xEE, 0x93, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x4F, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x44, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x50, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x55, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x71, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -13043,7 +13045,7 @@ const unsigned char timelib_timezone_db_
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, 0x00,
-0xB6, 0x6D, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
+0xB6, 0x6E, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0C, 0xFF, 0xFF, 0x65, 0x50,
 0x00, 0x10, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x18, 0xFF, 0xFF,
 0x8F, 0x80, 0x01, 0x1C, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x21, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53,
@@ -15780,7 +15782,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x91, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x26, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xD2, 0x59, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x33, 0x99, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00,
@@ -17495,7 +17497,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xD6, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x37, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x28, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x34, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFE, 0xB8, 0x55, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00,
@@ -19739,25 +19741,26 @@ const unsigned char timelib_timezone_db_
 
 /* Asia/Calcutta */
 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
-0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98,
-0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00,
-0x04, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0E, 0x00, 0x00, 0x5B,
-0x68, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30,
-0x00, 0x49, 0x53, 0x54, 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, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
+0x87, 0x9D, 0xBC, 0xBA, 0xCA, 0xDB, 0x8C, 0x28, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8,
+0xD2, 0x74, 0x12, 0x98, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x00,
+0x00, 0x00, 0x4B, 0x46, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x08, 0x00, 0x00, 0x5B, 0x68,
+0x01, 0x0C, 0x48, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x2B, 0x30,
+0x36, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 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, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x91, 0x28, 0xFF, 0xFF, 0xFF, 0xFF,
-0xCA, 0xDB, 0x86, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x05, 0x71, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0xBA, 0x18, 0x28, 0xFF, 0xFF, 0xFF, 0xFF,
+0x43, 0xE7, 0xEB, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x9D, 0xBC, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF,
+0xCA, 0xDB, 0x8C, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x05, 0x71, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
 0xCC, 0x95, 0x32, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x74, 0x12, 0x98, 0x00, 0x01, 0x02, 0x03,
-0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x04, 0x00, 0x00,
-0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0E, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x08,
-0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x49, 0x53,
-0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x53, 0x54,
-0x2D, 0x35, 0x3A, 0x33, 0x30, 0x0A,
+0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x04,
+0x00, 0x00, 0x4B, 0x46, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0C, 0x00, 0x00, 0x5B, 0x68,
+0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x49, 0x53,
+0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x0A, 0x49, 0x53, 0x54, 0x2D, 0x35, 0x3A, 0x33, 0x30, 0x0A,
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
@@ -20307,8 +20310,8 @@ const unsigned char timelib_timezone_db_
 
 /* Asia/Famagusta */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00,
 0xA5, 0x77, 0x1E, 0x2C, 0x09, 0xED, 0xAF, 0xE0, 0x0A, 0xDD, 0x92, 0xD0, 0x0B, 0xFA, 0x64, 0xE0,
 0x0C, 0xBE, 0xC6, 0x50, 0x0D, 0xA4, 0x39, 0x60, 0x0E, 0x8A, 0xE1, 0xD0, 0x0F, 0x84, 0x1B, 0x60,
 0x10, 0x75, 0x4F, 0xD0, 0x11, 0x63, 0xFD, 0x60, 0x12, 0x53, 0xE0, 0x50, 0x13, 0x4D, 0x19, 0xE0,
@@ -20330,20 +20333,33 @@ const unsigned char timelib_timezone_db_
 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10,
 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90,
 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90,
-0x57, 0xD0, 0x7F, 0xD0, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x57, 0xD0, 0x7F, 0xD0, 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, 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, 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, 0x05, 0x05, 0x00,
-0x00, 0x1F, 0xD4, 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, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
-0x2B, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 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, 0x04, 0x03, 0x04,
+0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x1F, 0xD4, 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, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00,
+0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x2B, 0x30,
+0x33, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00,
-0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x77, 0x1E, 0x2C, 0x00, 0x00, 0x00, 0x00,
 0x09, 0xED, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xDD, 0x92, 0xD0, 0x00, 0x00, 0x00, 0x00,
 0x0B, 0xFA, 0x64, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xBE, 0xC6, 0x50, 0x00, 0x00, 0x00, 0x00,
@@ -20387,17 +20403,41 @@ const unsigned char timelib_timezone_db_
 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, 0x57, 0xD0, 0x7F, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+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, 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, 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, 0x05, 0x05, 0x00, 0x00, 0x1F, 0xD4, 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, 0x00, 0x0D, 0x4C,
-0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
-0x33, 0x3E, 0x2D, 0x33, 0x0A,
+0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
+0x03, 0x04, 0x03, 0x00, 0x00, 0x1F, 0xD4, 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, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54,
+0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 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, 0x2E, 0x30, 0x2F, 0x34, 0x0A,
 #endif
 0x00, 0xBE, 0xE9, 0xB2, 0x01, 0x46, 0x76, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x4E, 0x6F, 0x72, 0x74,
 0x68, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x79, 0x70, 0x72, 0x75, 0x73,
@@ -21632,25 +21672,26 @@ const unsigned char timelib_timezone_db_
 
 /* Asia/Kolkata */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x4E, 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, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
-0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98,
-0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00,
-0x04, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0E, 0x00, 0x00, 0x5B,
-0x68, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30,
-0x00, 0x49, 0x53, 0x54, 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, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
+0x87, 0x9D, 0xBC, 0xBA, 0xCA, 0xDB, 0x8C, 0x28, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8,
+0xD2, 0x74, 0x12, 0x98, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x00,
+0x00, 0x00, 0x4B, 0x46, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x08, 0x00, 0x00, 0x5B, 0x68,
+0x01, 0x0C, 0x48, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x2B, 0x30,
+0x36, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 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, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x91, 0x28, 0xFF, 0xFF, 0xFF, 0xFF,
-0xCA, 0xDB, 0x86, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x05, 0x71, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0xBA, 0x18, 0x28, 0xFF, 0xFF, 0xFF, 0xFF,
+0x43, 0xE7, 0xEB, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x9D, 0xBC, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF,
+0xCA, 0xDB, 0x8C, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x05, 0x71, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
 0xCC, 0x95, 0x32, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x74, 0x12, 0x98, 0x00, 0x01, 0x02, 0x03,
-0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x04, 0x00, 0x00,
-0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0E, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x08,
-0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x49, 0x53,
-0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x53, 0x54,
-0x2D, 0x35, 0x3A, 0x33, 0x30, 0x0A,
+0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x52, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x04,
+0x00, 0x00, 0x4B, 0x46, 0x00, 0x08, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x0C, 0x00, 0x00, 0x5B, 0x68,
+0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x49, 0x53,
+0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x0A, 0x49, 0x53, 0x54, 0x2D, 0x35, 0x3A, 0x33, 0x30, 0x0A,
 #endif
 0x00, 0xAB, 0xB6, 0x55, 0x01, 0x99, 0x7E, 0xBA, 0x00, 0x00, 0x00, 0x00,
 
@@ -22731,8 +22772,8 @@ const unsigned char timelib_timezone_db_
 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
-0xA1, 0xF2, 0x73, 0x58, 0xCB, 0xF2, 0xFC, 0x18, 0xD1, 0x9A, 0x67, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF,
-0x01, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x28, 0x00,
+0xA1, 0xF2, 0x73, 0x51, 0xCB, 0xF2, 0xFC, 0x18, 0xD1, 0x9A, 0x67, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF,
+0x01, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x2F, 0x00,
 0x04, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0E, 0x00, 0x00, 0x5B,
 0x68, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30,
 0x00, 0x2B, 0x30, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -22740,10 +22781,10 @@ const unsigned char timelib_timezone_db_
 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, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x89, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF,
-0xA1, 0xF2, 0x73, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF2, 0xFC, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x89, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
+0xA1, 0xF2, 0x73, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF2, 0xFC, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD1, 0x9A, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03,
-0x02, 0x02, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x04, 0x00, 0x00,
+0x02, 0x02, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x04, 0x00, 0x00,
 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0E, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08,
 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x2B, 0x30,
 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
@@ -24161,8 +24202,8 @@ const unsigned char timelib_timezone_db_
 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x4D, 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, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
-0xA1, 0xF2, 0x73, 0x58, 0xCB, 0xF2, 0xFC, 0x18, 0xD1, 0x9A, 0x67, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF,
-0x01, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x28, 0x00,
+0xA1, 0xF2, 0x73, 0x51, 0xCB, 0xF2, 0xFC, 0x18, 0xD1, 0x9A, 0x67, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF,
+0x01, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x2F, 0x00,
 0x04, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0E, 0x00, 0x00, 0x5B,
 0x68, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30,
 0x00, 0x2B, 0x30, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -24170,10 +24211,10 @@ const unsigned char timelib_timezone_db_
 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, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x89, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF,
-0xA1, 0xF2, 0x73, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF2, 0xFC, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x89, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
+0xA1, 0xF2, 0x73, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF2, 0xFC, 0x18, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD1, 0x9A, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03,
-0x02, 0x02, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x28, 0x00, 0x04, 0x00, 0x00,
+0x02, 0x02, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x2F, 0x00, 0x04, 0x00, 0x00,
 0x5B, 0x68, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0E, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x08,
 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x36, 0x33, 0x30, 0x00, 0x2B, 0x30,
 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x30,
@@ -24271,7 +24312,7 @@ const unsigned char timelib_timezone_db_
 /* Asia/Yerevan */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x4D, 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, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00,
 0xAA, 0x19, 0x9A, 0x48, 0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30,
 0x17, 0x08, 0xCD, 0x40, 0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30,
 0x1A, 0xCC, 0x85, 0xC0, 0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, 0x1D, 0x9C, 0x74, 0xE0,
@@ -24287,22 +24328,22 @@ const unsigned char timelib_timezone_db_
 0x41, 0x84, 0x0E, 0xE0, 0x42, 0x45, 0xDB, 0x60, 0x43, 0x63, 0xF0, 0xE0, 0x44, 0x25, 0xBD, 0x60,
 0x45, 0x43, 0xD2, 0xE0, 0x46, 0x05, 0x9F, 0x60, 0x47, 0x23, 0xB4, 0xE0, 0x47, 0xEE, 0xBB, 0xE0,
 0x49, 0x03, 0x96, 0xE0, 0x49, 0xCE, 0x9D, 0xE0, 0x4A, 0xE3, 0x78, 0xE0, 0x4B, 0xAE, 0x7F, 0xE0,
-0x4C, 0xCC, 0x95, 0x60, 0x4D, 0x8E, 0x61, 0xE0, 0x4E, 0xAC, 0x77, 0x60, 0x7F, 0xFF, 0xFF, 0xFF,
-0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06,
-0x04, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x4C, 0xCC, 0x95, 0x60, 0x4D, 0x1E, 0x36, 0x40, 0x4D, 0x8E, 0x61, 0xE0, 0x4E, 0xAC, 0x77, 0x60,
+0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06,
+0x07, 0x06, 0x07, 0x06, 0x04, 0x03, 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,
-0x04, 0x00, 0x00, 0x29, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x46,
-0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00,
-0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00,
-0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x4C, 0x4D, 0x54,
-0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00,
+0x05, 0x04, 0x03, 0x05, 0x04, 0x04, 0x00, 0x00, 0x29, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30,
+0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00,
+0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C,
+0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40,
+0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30,
+0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0x9A, 0x48, 0xFF, 0xFF, 0xFF, 0xFF,
 0xE7, 0xDA, 0x0C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0x99, 0xC0, 0x00, 0x00, 0x00, 0x00,
 0x16, 0x18, 0xCE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xCD, 0x40, 0x00, 0x00, 0x00, 0x00,
@@ -24334,18 +24375,19 @@ const unsigned char timelib_timezone_db_
 0x47, 0xEE, 0xBB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0x96, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x49, 0xCE, 0x9D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x4B, 0xAE, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0x95, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x4D, 0x8E, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06,
-0x07, 0x06, 0x07, 0x06, 0x04, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x4D, 0x1E, 0x36, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00,
+0x4E, 0xAC, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x02,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x04, 0x03, 0x05, 0x04,
 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x04, 0x00, 0x00, 0x29, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00,
-0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x38,
-0x40, 0x00, 0x0C, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x00,
-0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00,
-0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x34, 0x3E, 0x2D, 0x34, 0x0A,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x03, 0x05, 0x04, 0x04, 0x00, 0x00,
+0x29, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x08,
+0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x46, 0x50,
+0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00,
+0x46, 0x50, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30,
+0x33, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C,
+0x2B, 0x30, 0x34, 0x3E, 0x2D, 0x34, 0x0A,
 #endif
 0x00, 0xC6, 0xA4, 0xDD, 0x01, 0x56, 0x8F, 0x50, 0x00, 0x00, 0x00, 0x00,
 
@@ -28786,74 +28828,6 @@ const unsigned char timelib_timezone_db_
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
-/* Canada/East-Saskatchewan */
-0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
-0x86, 0xFD, 0x93, 0x1C, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xB5, 0x65, 0x4F, 0xF0,
-0xB6, 0x30, 0x48, 0xE0, 0xB7, 0x45, 0x31, 0xF0, 0xB8, 0x10, 0x2A, 0xE0, 0xB9, 0x25, 0x13, 0xF0,
-0xB9, 0xF0, 0x0C, 0xE0, 0xBB, 0x0E, 0x30, 0x70, 0xBB, 0xCF, 0xEE, 0xE0, 0xBC, 0xEE, 0x12, 0x70,
-0xBD, 0xB9, 0x0B, 0x60, 0xC2, 0x72, 0x08, 0xF0, 0xC3, 0x61, 0xEB, 0xE0, 0xC4, 0x51, 0xEA, 0xF0,
-0xC5, 0x38, 0x93, 0x60, 0xC6, 0x31, 0xCC, 0xF0, 0xC7, 0x21, 0xAF, 0xE0, 0xC8, 0x1A, 0xE9, 0x70,
-0xC9, 0x0A, 0xCC, 0x60, 0xC9, 0xFA, 0xCB, 0x70, 0xCA, 0xEA, 0xAE, 0x60, 0xCB, 0x89, 0x0C, 0x90,
-0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x18, 0x00, 0xD3, 0x63, 0x8C, 0x10, 0xD4, 0x53, 0x6F, 0x00,
-0xD5, 0x55, 0xE3, 0x10, 0xD6, 0x20, 0xDC, 0x00, 0xD7, 0x35, 0xC5, 0x10, 0xD8, 0x00, 0xBE, 0x00,
-0xD9, 0x15, 0xA7, 0x10, 0xD9, 0xE0, 0xA0, 0x00, 0xDA, 0xFE, 0xC3, 0x90, 0xDB, 0xC0, 0x82, 0x00,
-0xDC, 0xDE, 0xA5, 0x90, 0xDD, 0xA9, 0x9E, 0x80, 0xDE, 0xBE, 0x87, 0x90, 0xDF, 0x89, 0x80, 0x80,
-0xE0, 0x9E, 0x69, 0x90, 0xE1, 0x69, 0x62, 0x80, 0xE2, 0x7E, 0x4B, 0x90, 0xE3, 0x49, 0x44, 0x80,
-0xE4, 0x5E, 0x2D, 0x90, 0xE5, 0x29, 0x26, 0x80, 0xE6, 0x47, 0x4A, 0x10, 0xE7, 0x12, 0x43, 0x00,
-0xE8, 0x27, 0x2C, 0x10, 0xE8, 0xF2, 0x25, 0x00, 0xEB, 0xE6, 0xF0, 0x10, 0xEC, 0xD6, 0xD3, 0x00,
-0xED, 0xC6, 0xD2, 0x10, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 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, 0x05, 0xFF, 0xFF, 0x9D, 0xE4, 0x00, 0x00,
-0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0,
-0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D,
-0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50,
-0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x01, 0x00,
-#ifdef TIMELIB_SUPPORTS_V2DATA
-0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00,
-0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xFD, 0x93, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF,
-0x9E, 0xB8, 0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
-0xB5, 0x65, 0x4F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x48, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xB7, 0x45, 0x31, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x10, 0x2A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xB9, 0x25, 0x13, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xF0, 0x0C, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xBB, 0x0E, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xCF, 0xEE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xBC, 0xEE, 0x12, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB9, 0x0B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF,
-0xC2, 0x72, 0x08, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x61, 0xEB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xC4, 0x51, 0xEA, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x93, 0x60, 0xFF, 0xFF, 0xFF, 0xFF,
-0xC6, 0x31, 0xCC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x21, 0xAF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xC8, 0x1A, 0xE9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0A, 0xCC, 0x60, 0xFF, 0xFF, 0xFF, 0xFF,
-0xC9, 0xFA, 0xCB, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xEA, 0xAE, 0x60, 0xFF, 0xFF, 0xFF, 0xFF,
-0xCB, 0x89, 0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD2, 0x61, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x8C, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD4, 0x53, 0x6F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD6, 0x20, 0xDC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xC5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD8, 0x00, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0xA7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD9, 0xE0, 0xA0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xC3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xDB, 0xC0, 0x82, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0xA5, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xDD, 0xA9, 0x9E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x87, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xDF, 0x89, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x69, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xE1, 0x69, 0x62, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x4B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xE3, 0x49, 0x44, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x2D, 0x90, 0xFF, 0xFF, 0xFF, 0xFF,
-0xE5, 0x29, 0x26, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x4A, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xE7, 0x12, 0x43, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x2C, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xE8, 0xF2, 0x25, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
-0xEC, 0xD6, 0xD3, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xD2, 0x10, 0x00, 0x02, 0x01, 0x02,
-0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 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, 0x05, 0xFF, 0xFF, 0x9D, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF,
-0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10,
-0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53,
-0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A,
-#endif
-0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
-
 /* Canada/Eastern */
 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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,
@@ -30871,8 +30845,8 @@ const unsigned char timelib_timezone_db_
 
 /* Eire */
 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
 0x9B, 0x26, 0xB3, 0x91, 0x9B, 0xD6, 0x0B, 0x11, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0,
 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0,
 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20,
@@ -30885,8 +30859,8 @@ const unsigned char timelib_timezone_db_
 0xBB, 0xD8, 0xF1, 0x20, 0xBC, 0xDB, 0x57, 0x20, 0xBD, 0xB8, 0xD3, 0x20, 0xBE, 0xB1, 0xFE, 0xA0,
 0xBF, 0x98, 0xB5, 0x20, 0xC0, 0x9B, 0x1B, 0x20, 0xC1, 0x78, 0x97, 0x20, 0xC2, 0x7A, 0xFD, 0x20,
 0xC3, 0x58, 0x79, 0x20, 0xC4, 0x51, 0xA4, 0xA0, 0xC5, 0x38, 0x5B, 0x20, 0xC6, 0x3A, 0xC1, 0x20,
-0xC7, 0x58, 0xD6, 0xA0, 0xC7, 0xDA, 0x09, 0xA0, 0xD4, 0x49, 0xD2, 0x10, 0xD5, 0x1E, 0x21, 0xA0,
-0xD6, 0x4E, 0x9E, 0x10, 0xD7, 0x2C, 0x28, 0x20, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20,
+0xC7, 0x58, 0xD6, 0xA0, 0xC7, 0xDA, 0x09, 0xA0, 0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0,
+0xD6, 0x4E, 0xAC, 0x20, 0xD7, 0x2C, 0x28, 0x20, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20,
 0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, 0xDC, 0xCB, 0xCE, 0x20,
 0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, 0xE0, 0x94, 0xCC, 0xA0,
 0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, 0xE4, 0x54, 0x90, 0xA0,
@@ -30933,29 +30907,28 @@ const unsigned char timelib_timezone_db_
 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
 0x04, 0x06, 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, 0x07, 0x06, 0x07, 0x06, 0x07, 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, 0x08, 0x0A, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x06, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x05, 0x04, 0x05, 0x07, 0x09, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00,
 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10,
 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08,
-0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00,
-0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53,
+0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF,
 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF,
 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -30982,8 +30955,8 @@ const unsigned char timelib_timezone_db_
 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD4, 0x49, 0xD2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD6, 0x4E, 0x9E, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x2C, 0x28, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
+0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
+0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x2C, 0x28, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -31074,27 +31047,26 @@ const unsigned char timelib_timezone_db_
 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
 0x03, 0x04, 0x06, 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, 0x07, 0x06, 0x07, 0x06, 0x07, 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, 0x08, 0x0A, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x06, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xFA, 0x24, 0x00,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x07, 0x09, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0xFF, 0xFF, 0xFA, 0x24, 0x00,
 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E,
 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00,
-0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54,
-0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x49, 0x53, 0x54, 0x2C,
-0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30,
-0x0A,
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01,
+0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49,
+0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A,
+0x47, 0x4D, 0x54, 0x30, 0x49, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31,
+0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A,
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
@@ -33925,8 +33897,8 @@ const unsigned char timelib_timezone_db_
 
 /* Europe/Dublin */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
 0x9B, 0x26, 0xB3, 0x91, 0x9B, 0xD6, 0x0B, 0x11, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0,
 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0,
 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20,
@@ -33939,8 +33911,8 @@ const unsigned char timelib_timezone_db_
 0xBB, 0xD8, 0xF1, 0x20, 0xBC, 0xDB, 0x57, 0x20, 0xBD, 0xB8, 0xD3, 0x20, 0xBE, 0xB1, 0xFE, 0xA0,
 0xBF, 0x98, 0xB5, 0x20, 0xC0, 0x9B, 0x1B, 0x20, 0xC1, 0x78, 0x97, 0x20, 0xC2, 0x7A, 0xFD, 0x20,
 0xC3, 0x58, 0x79, 0x20, 0xC4, 0x51, 0xA4, 0xA0, 0xC5, 0x38, 0x5B, 0x20, 0xC6, 0x3A, 0xC1, 0x20,
-0xC7, 0x58, 0xD6, 0xA0, 0xC7, 0xDA, 0x09, 0xA0, 0xD4, 0x49, 0xD2, 0x10, 0xD5, 0x1E, 0x21, 0xA0,
-0xD6, 0x4E, 0x9E, 0x10, 0xD7, 0x2C, 0x28, 0x20, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20,
+0xC7, 0x58, 0xD6, 0xA0, 0xC7, 0xDA, 0x09, 0xA0, 0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0,
+0xD6, 0x4E, 0xAC, 0x20, 0xD7, 0x2C, 0x28, 0x20, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20,
 0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, 0xDC, 0xCB, 0xCE, 0x20,
 0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, 0xE0, 0x94, 0xCC, 0xA0,
 0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, 0xE4, 0x54, 0x90, 0xA0,
@@ -33987,29 +33959,28 @@ const unsigned char timelib_timezone_db_
 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03,
 0x04, 0x06, 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, 0x07, 0x06, 0x07, 0x06, 0x07, 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, 0x08, 0x0A, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x06, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x05, 0x04, 0x05, 0x07, 0x09, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00,
 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10,
 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08,
-0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00,
-0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00,
-0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53,
+0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF,
 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF,
 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -34036,8 +34007,8 @@ const unsigned char timelib_timezone_db_
 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD4, 0x49, 0xD2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD6, 0x4E, 0x9E, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x2C, 0x28, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
+0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
+0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x2C, 0x28, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -34128,27 +34099,26 @@ const unsigned char timelib_timezone_db_
 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
 0x03, 0x04, 0x06, 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, 0x07, 0x06, 0x07, 0x06, 0x07, 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, 0x08, 0x0A, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A,
-0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x06, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09,
-0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0xFF, 0xFF, 0xFA, 0x24, 0x00,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x07, 0x09, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
+0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08,
+0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0xFF, 0xFF, 0xFA, 0x24, 0x00,
 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E,
 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00,
-0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54,
-0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x49, 0x53, 0x54, 0x2C,
-0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30,
-0x0A,
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01,
+0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49,
+0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A,
+0x47, 0x4D, 0x54, 0x30, 0x49, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31,
+0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A,
 #endif
 0x00, 0xDA, 0xB5, 0x95, 0x01, 0x09, 0x1F, 0x18, 0x00, 0x00, 0x00, 0x00,
 
@@ -34583,7 +34553,7 @@ const unsigned char timelib_timezone_db_
 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30,
 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A,
 #endif
-0x00, 0xD4, 0xC8, 0xA7, 0x01, 0x0E, 0xCA, 0xEA, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xD4, 0xCA, 0x80, 0x01, 0x0E, 0xC9, 0xD4, 0x00, 0x00, 0x00, 0x00,
 
 /* Europe/Helsinki */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -35321,7 +35291,7 @@ const unsigned char timelib_timezone_db_
 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30,
 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A,
 #endif
-0x00, 0xD4, 0x66, 0xFF, 0x01, 0x0F, 0x6D, 0xAD, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xD4, 0x60, 0x99, 0x01, 0x0F, 0x71, 0x95, 0x00, 0x00, 0x00, 0x00,
 
 /* Europe/Kaliningrad */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -43710,7 +43680,7 @@ const unsigned char timelib_timezone_db_
 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, 0x3D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xC8, 0xE5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC9, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
 0x91, 0x05, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x62, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00,
 0x4C, 0x9F, 0x27, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x4E, 0x7D, 0xE2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xFD, 0x8B, 0xA0, 0x00, 0x00, 0x00, 0x00,
@@ -44334,16 +44304,16 @@ const unsigned char timelib_timezone_db_
 0x4D, 0x72, 0x41, 0xE0, 0x4E, 0xA2, 0xCC, 0x60, 0x4F, 0x1A, 0xC4, 0xE0, 0x50, 0x82, 0xAE, 0x60,
 0x50, 0xFA, 0xA6, 0xE0, 0x52, 0x6B, 0xCA, 0xE0, 0x52, 0xDA, 0x7A, 0xD0, 0x54, 0x54, 0xE7, 0x60,
 0x54, 0xBA, 0x6A, 0xE0, 0x56, 0x34, 0xC9, 0x60, 0x56, 0x9A, 0x4C, 0xE0, 0x58, 0x1D, 0xE5, 0xE0,
-0x58, 0x7A, 0x2E, 0xE0, 0x59, 0xFD, 0xC7, 0xE0, 0x5A, 0x63, 0x4B, 0x60, 0x5B, 0xDD, 0xA9, 0xE0,
+0x58, 0x7A, 0x2E, 0xE0, 0x59, 0xFD, 0xC7, 0xE0, 0x5A, 0x5A, 0x10, 0xE0, 0x5B, 0xDD, 0xA9, 0xE0,
 0x5C, 0x43, 0x2D, 0x60, 0x5D, 0xBD, 0x8B, 0xE0, 0x5E, 0x23, 0x0F, 0x60, 0x5F, 0x9D, 0x6D, 0xE0,
 0x60, 0x02, 0xF1, 0x60, 0x61, 0x86, 0x8A, 0x60, 0x61, 0xE2, 0xD3, 0x60, 0x63, 0x66, 0x6C, 0x60,
-0x63, 0xC2, 0xB5, 0x60, 0x65, 0x46, 0x4E, 0x60, 0x65, 0xAB, 0xD1, 0xE0, 0x67, 0x26, 0x30, 0x60,
+0x63, 0xC2, 0xB5, 0x60, 0x65, 0x46, 0x4E, 0x60, 0x65, 0xA2, 0x97, 0x60, 0x67, 0x26, 0x30, 0x60,
 0x67, 0x8B, 0xB3, 0xE0, 0x69, 0x06, 0x12, 0x60, 0x69, 0x6B, 0x95, 0xE0, 0x6A, 0xE5, 0xF4, 0x60,
 0x6B, 0x4B, 0x77, 0xE0, 0x6C, 0xCF, 0x10, 0xE0, 0x6D, 0x2B, 0x59, 0xE0, 0x6E, 0xAE, 0xF2, 0xE0,
-0x6F, 0x14, 0x76, 0x60, 0x70, 0x8E, 0xD4, 0xE0, 0x70, 0xF4, 0x58, 0x60, 0x72, 0x6E, 0xB6, 0xE0,
+0x6F, 0x0B, 0x3B, 0xE0, 0x70, 0x8E, 0xD4, 0xE0, 0x70, 0xF4, 0x58, 0x60, 0x72, 0x6E, 0xB6, 0xE0,
 0x72, 0xD4, 0x3A, 0x60, 0x74, 0x4E, 0x98, 0xE0, 0x74, 0xB4, 0x1C, 0x60, 0x76, 0x37, 0xB5, 0x60,
 0x76, 0x93, 0xFE, 0x60, 0x78, 0x17, 0x97, 0x60, 0x78, 0x73, 0xE0, 0x60, 0x79, 0xF7, 0x79, 0x60,
-0x7A, 0x5C, 0xFC, 0xE0, 0x7B, 0xD7, 0x5B, 0x60, 0x7C, 0x3C, 0xDE, 0xE0, 0x7D, 0xB7, 0x3D, 0x60,
+0x7A, 0x53, 0xC2, 0x60, 0x7B, 0xD7, 0x5B, 0x60, 0x7C, 0x3C, 0xDE, 0xE0, 0x7D, 0xB7, 0x3D, 0x60,
 0x7E, 0x1C, 0xC0, 0xE0, 0x7F, 0x97, 0x1F, 0x60, 0x7F, 0xFC, 0xA2, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF,
 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,
@@ -44353,7 +44323,7 @@ const unsigned char timelib_timezone_db_
 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x33, 0x00, 0x2B, 0x31, 0x32, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
-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, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x13, 0xB1, 0xC0, 0x00, 0x00, 0x00, 0x00,
@@ -44367,24 +44337,24 @@ const unsigned char timelib_timezone_db_
 0x54, 0x54, 0xE7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xBA, 0x6A, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x56, 0x34, 0xC9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0x9A, 0x4C, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x58, 0x1D, 0xE5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x7A, 0x2E, 0xE0, 0x00, 0x00, 0x00, 0x00,
-0x59, 0xFD, 0xC7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x63, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00,
+0x59, 0xFD, 0xC7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x5A, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x5B, 0xDD, 0xA9, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x43, 0x2D, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x5D, 0xBD, 0x8B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x23, 0x0F, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x5F, 0x9D, 0x6D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0xF1, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x61, 0x86, 0x8A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0xE2, 0xD3, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x63, 0x66, 0x6C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0xC2, 0xB5, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x65, 0x46, 0x4E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xAB, 0xD1, 0xE0, 0x00, 0x00, 0x00, 0x00,
+0x65, 0x46, 0x4E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xA2, 0x97, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x67, 0x26, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0x8B, 0xB3, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x69, 0x06, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6B, 0x95, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x6A, 0xE5, 0xF4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x4B, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x6C, 0xCF, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x2B, 0x59, 0xE0, 0x00, 0x00, 0x00, 0x00,
-0x6E, 0xAE, 0xF2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x14, 0x76, 0x60, 0x00, 0x00, 0x00, 0x00,
+0x6E, 0xAE, 0xF2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x0B, 0x3B, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x70, 0x8E, 0xD4, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF4, 0x58, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x72, 0x6E, 0xB6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0xD4, 0x3A, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x74, 0x4E, 0x98, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xB4, 0x1C, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x76, 0x37, 0xB5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0x93, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x78, 0x17, 0x97, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x73, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x79, 0xF7, 0x79, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x5C, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00,
+0x79, 0xF7, 0x79, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x53, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x7B, 0xD7, 0x5B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x3C, 0xDE, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x7D, 0xB7, 0x3D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x1C, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x7F, 0x97, 0x1F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00,
@@ -44396,7 +44366,7 @@ const unsigned char timelib_timezone_db_
 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x33, 0x00, 0x2B,
 0x31, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x32, 0x3E, 0x2D,
 0x31, 0x32, 0x3C, 0x2B, 0x31, 0x33, 0x3E, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x2C,
-0x4D, 0x31, 0x2E, 0x33, 0x2E, 0x30, 0x2F, 0x33, 0x0A,
+0x4D, 0x31, 0x2E, 0x32, 0x2E, 0x31, 0x2F, 0x31, 0x34, 0x37, 0x0A,
 #endif
 0x00, 0x6D, 0xA8, 0xEA, 0x02, 0x22, 0xE6, 0x82, 0x00, 0x00, 0x00, 0x00,
 
@@ -44665,7 +44635,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xC8, 0xE4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
 0x91, 0x05, 0xFB, 0x08, 0x00, 0x01, 0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F,
 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, 0x31, 0x0A,
@@ -44782,7 +44752,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xC8, 0xE4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
 0x91, 0x05, 0xFB, 0x08, 0x00, 0x01, 0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F,
 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, 0x31, 0x0A,
@@ -44955,7 +44925,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xC8, 0xE4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
 0x91, 0x05, 0xFB, 0x08, 0x00, 0x01, 0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F,
 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, 0x31, 0x0A,
@@ -45002,69 +44972,31 @@ const unsigned char timelib_timezone_db_
 /* Pacific/Tongatapu */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00,
 0xC9, 0x73, 0x42, 0x90, 0x37, 0xFB, 0x47, 0xD0, 0x38, 0xD3, 0x7D, 0xD0, 0x3A, 0x04, 0x08, 0x50,
 0x3A, 0x72, 0xB8, 0x40, 0x3B, 0xE3, 0xEA, 0x50, 0x3C, 0x52, 0x9A, 0x40, 0x58, 0x1D, 0xD7, 0xD0,
-0x58, 0x7A, 0x20, 0xD0, 0x59, 0xFD, 0xB9, 0xD0, 0x5A, 0x63, 0x3D, 0x50, 0x5B, 0xDD, 0x9B, 0xD0,
-0x5C, 0x43, 0x1F, 0x50, 0x5D, 0xBD, 0x7D, 0xD0, 0x5E, 0x23, 0x01, 0x50, 0x5F, 0x9D, 0x5F, 0xD0,
-0x60, 0x02, 0xE3, 0x50, 0x61, 0x86, 0x7C, 0x50, 0x61, 0xE2, 0xC5, 0x50, 0x63, 0x66, 0x5E, 0x50,
-0x63, 0xC2, 0xA7, 0x50, 0x65, 0x46, 0x40, 0x50, 0x65, 0xAB, 0xC3, 0xD0, 0x67, 0x26, 0x22, 0x50,
-0x67, 0x8B, 0xA5, 0xD0, 0x69, 0x06, 0x04, 0x50, 0x69, 0x6B, 0x87, 0xD0, 0x6A, 0xE5, 0xE6, 0x50,
-0x6B, 0x4B, 0x69, 0xD0, 0x6C, 0xCF, 0x02, 0xD0, 0x6D, 0x2B, 0x4B, 0xD0, 0x6E, 0xAE, 0xE4, 0xD0,
-0x6F, 0x14, 0x68, 0x50, 0x70, 0x8E, 0xC6, 0xD0, 0x70, 0xF4, 0x4A, 0x50, 0x72, 0x6E, 0xA8, 0xD0,
-0x72, 0xD4, 0x2C, 0x50, 0x74, 0x4E, 0x8A, 0xD0, 0x74, 0xB4, 0x0E, 0x50, 0x76, 0x37, 0xA7, 0x50,
-0x76, 0x93, 0xF0, 0x50, 0x78, 0x17, 0x89, 0x50, 0x78, 0x73, 0xD2, 0x50, 0x79, 0xF7, 0x6B, 0x50,
-0x7A, 0x5C, 0xEE, 0xD0, 0x7B, 0xD7, 0x4D, 0x50, 0x7C, 0x3C, 0xD0, 0xD0, 0x7D, 0xB7, 0x2F, 0x50,
-0x7E, 0x1C, 0xB2, 0xD0, 0x7F, 0x97, 0x11, 0x50, 0x7F, 0xFC, 0x94, 0xD0, 0x7F, 0xFF, 0xFF, 0xFF,
-0x01, 0x02, 0x03, 0x04, 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x05, 0x02, 0x02, 0x00, 0x00, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x70, 0x00,
-0x04, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x00, 0x00, 0xB6,
-0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x32,
-0x32, 0x30, 0x00, 0x2B, 0x31, 0x33, 0x00, 0x2B, 0x31, 0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x58, 0x7A, 0x20, 0xD0, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x02, 0x05, 0x02,
+0x05, 0x02, 0x02, 0x00, 0x00, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x70, 0x00, 0x04, 0x00,
+0x00, 0xB6, 0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x00, 0x00, 0xB6, 0xD0, 0x00,
+0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x32, 0x32, 0x30,
+0x00, 0x2B, 0x31, 0x33, 0x00, 0x2B, 0x31, 0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00,
-0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x07, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF,
 0xC9, 0x73, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFB, 0x47, 0xD0, 0x00, 0x00, 0x00, 0x00,
 0x38, 0xD3, 0x7D, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x04, 0x08, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x3A, 0x72, 0xB8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xE3, 0xEA, 0x50, 0x00, 0x00, 0x00, 0x00,
 0x3C, 0x52, 0x9A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1D, 0xD7, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x58, 0x7A, 0x20, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFD, 0xB9, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x5A, 0x63, 0x3D, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDD, 0x9B, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x5C, 0x43, 0x1F, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBD, 0x7D, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x5E, 0x23, 0x01, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9D, 0x5F, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x60, 0x02, 0xE3, 0x50, 0x00, 0x00, 0x00, 0x00, 0x61, 0x86, 0x7C, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x61, 0xE2, 0xC5, 0x50, 0x00, 0x00, 0x00, 0x00, 0x63, 0x66, 0x5E, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x63, 0xC2, 0xA7, 0x50, 0x00, 0x00, 0x00, 0x00, 0x65, 0x46, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x65, 0xAB, 0xC3, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x26, 0x22, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x67, 0x8B, 0xA5, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0x04, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x69, 0x6B, 0x87, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE5, 0xE6, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x6B, 0x4B, 0x69, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0x02, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x6D, 0x2B, 0x4B, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAE, 0xE4, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x6F, 0x14, 0x68, 0x50, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8E, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x70, 0xF4, 0x4A, 0x50, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6E, 0xA8, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x72, 0xD4, 0x2C, 0x50, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4E, 0x8A, 0xD0, 0x00, 0x00, 0x00, 0x00,
-0x74, 0xB4, 0x0E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x76, 0x37, 0xA7, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x76, 0x93, 0xF0, 0x50, 0x00, 0x00, 0x00, 0x00, 0x78, 0x17, 0x89, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x78, 0x73, 0xD2, 0x50, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF7, 0x6B, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x7A, 0x5C, 0xEE, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD7, 0x4D, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x7C, 0x3C, 0xD0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB7, 0x2F, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x7E, 0x1C, 0xB2, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x97, 0x11, 0x50, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0xFC, 0x94, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03,
-0x04, 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
-0x02, 0x02, 0x00, 0x00, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x70, 0x00, 0x04, 0x00, 0x00,
-0xB6, 0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x0A,
-0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x32, 0x32, 0x30, 0x00,
-0x2B, 0x31, 0x33, 0x00, 0x2B, 0x31, 0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x33, 0x3E, 0x2D, 0x31, 0x33, 0x3C, 0x2B, 0x31,
-0x34, 0x3E, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x2E, 0x33, 0x2E,
-0x30, 0x2F, 0x33, 0x0A,
+0x58, 0x7A, 0x20, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03,
+0x04, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x02, 0x00, 0x00, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00,
+0xAD, 0x70, 0x00, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E,
+0x00, 0x00, 0xB6, 0xD0, 0x00, 0x0A, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0E, 0x4C, 0x4D, 0x54, 0x00,
+0x2B, 0x31, 0x32, 0x32, 0x30, 0x00, 0x2B, 0x31, 0x33, 0x00, 0x2B, 0x31, 0x34, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x33, 0x3E,
+0x2D, 0x31, 0x33, 0x0A,
 #endif
 0x00, 0x69, 0x08, 0x05, 0x00, 0x07, 0x60, 0x05, 0x00, 0x00, 0x00, 0x00,
 
@@ -46072,7 +46004,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x28, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xE0, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x41, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x36, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x42, 0x30, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x47, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x63, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -46226,7 +46158,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x21, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xF9, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC2, 0xFD, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x5A, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x44, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x50, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
 0xFA, 0xD2, 0x55, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x71, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -46308,7 +46240,7 @@ const unsigned char timelib_timezone_db_
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09,
 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, 0x00,
-0xAB, 0xE1, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
+0xAB, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04,
 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0C, 0xFF, 0xFF, 0x65, 0x50,
 0x00, 0x10, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x14, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x18, 0xFF, 0xFF,
 0x81, 0x70, 0x01, 0x1D, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53,
@@ -47100,43 +47032,42 @@ const unsigned char timelib_timezone_db_
 /* US/Michigan */
 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
 0x85, 0xBD, 0x22, 0x5B, 0x99, 0x3C, 0x94, 0x00, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70,
-0xD2, 0x60, 0xFB, 0xE0, 0xD7, 0x35, 0xA8, 0xF0, 0xD8, 0x00, 0xA1, 0xE0, 0xFB, 0x33, 0xAC, 0x70,
-0xFB, 0xE8, 0x3B, 0xE0, 0x06, 0x40, 0xDF, 0x70, 0x07, 0x30, 0xC2, 0x60, 0x07, 0x8D, 0x19, 0x70,
-0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70, 0x0A, 0xF0, 0x86, 0x60, 0x0B, 0xE0, 0x85, 0x70,
-0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70, 0x0E, 0xB9, 0x84, 0xE0, 0x0F, 0xA9, 0x83, 0xF0,
-0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0,
-0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0, 0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0,
-0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0, 0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70,
-0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70, 0x1D, 0xC1, 0xCF, 0x60, 0x1E, 0xB1, 0xCE, 0x70,
-0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0, 0x21, 0x81, 0x93, 0x60, 0x22, 0x55, 0xE2, 0xF0,
-0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0, 0x25, 0x4A, 0x91, 0xE0, 0x26, 0x15, 0xA6, 0xF0,
-0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70, 0x29, 0x0A, 0x55, 0xE0, 0x29, 0xDE, 0xA5, 0x70,
-0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70, 0x2C, 0xD3, 0x54, 0x60, 0x2D, 0x9E, 0x69, 0x70,
-0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70, 0x30, 0x93, 0x18, 0x60, 0x31, 0x67, 0x67, 0xF0,
-0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0, 0x34, 0x52, 0xDC, 0x60, 0x35, 0x27, 0x2B, 0xF0,
-0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0, 0x38, 0x1B, 0xDA, 0xE0, 0x38, 0xE6, 0xEF, 0xF0,
-0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0, 0x3B, 0xDB, 0x9E, 0xE0, 0x3C, 0xAF, 0xEE, 0x70,
-0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70, 0x3F, 0x9B, 0x62, 0xE0, 0x40, 0x6F, 0xB2, 0x70,
-0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70, 0x43, 0x64, 0x61, 0x60, 0x44, 0x2F, 0x76, 0x70,
-0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0, 0x47, 0xD3, 0x8A, 0xF0,
-0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70,
-0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70,
-0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70,
-0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0,
-0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0,
-0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0,
-0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70,
-0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70,
-0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70,
-0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0,
-0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0,
-0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70,
-0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70,
-0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70,
-0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 0x02, 0x03,
-0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
+0xD2, 0x60, 0xFB, 0xE0, 0xD7, 0x35, 0xA8, 0xF0, 0xD8, 0x00, 0xA1, 0xE0, 0x06, 0x40, 0xDF, 0x70,
+0x07, 0x30, 0xC2, 0x60, 0x07, 0x8D, 0x19, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70,
+0x0A, 0xF0, 0x86, 0x60, 0x0B, 0xE0, 0x85, 0x70, 0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70,
+0x0E, 0xB9, 0x84, 0xE0, 0x0F, 0xA9, 0x83, 0xF0, 0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0,
+0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0,
+0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0, 0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0,
+0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70, 0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70,
+0x1D, 0xC1, 0xCF, 0x60, 0x1E, 0xB1, 0xCE, 0x70, 0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0,
+0x21, 0x81, 0x93, 0x60, 0x22, 0x55, 0xE2, 0xF0, 0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0,
+0x25, 0x4A, 0x91, 0xE0, 0x26, 0x15, 0xA6, 0xF0, 0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70,
+0x29, 0x0A, 0x55, 0xE0, 0x29, 0xDE, 0xA5, 0x70, 0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70,
+0x2C, 0xD3, 0x54, 0x60, 0x2D, 0x9E, 0x69, 0x70, 0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70,
+0x30, 0x93, 0x18, 0x60, 0x31, 0x67, 0x67, 0xF0, 0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0,
+0x34, 0x52, 0xDC, 0x60, 0x35, 0x27, 0x2B, 0xF0, 0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0,
+0x38, 0x1B, 0xDA, 0xE0, 0x38, 0xE6, 0xEF, 0xF0, 0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0,
+0x3B, 0xDB, 0x9E, 0xE0, 0x3C, 0xAF, 0xEE, 0x70, 0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70,
+0x3F, 0x9B, 0x62, 0xE0, 0x40, 0x6F, 0xB2, 0x70, 0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70,
+0x43, 0x64, 0x61, 0x60, 0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0,
+0x47, 0x2D, 0x5F, 0xE0, 0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0,
+0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70,
+0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70,
+0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70,
+0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0,
+0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0,
+0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70,
+0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70,
+0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70,
+0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0,
+0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0,
+0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0,
+0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70,
+0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70,
+0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70,
+0x7F, 0x98, 0x00, 0x60, 0x00, 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,
 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,
@@ -47144,20 +47075,20 @@ const unsigned char timelib_timezone_db_
 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF,
-0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C,
-0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00,
-0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00,
-0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF,
+0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08,
+0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0,
+0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57,
+0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x00,
-0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0xBD, 0x22, 0x5B, 0xFF, 0xFF, 0xFF, 0xFF,
 0x99, 0x3C, 0x94, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF,
-0xFB, 0x33, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0x00, 0x00, 0x00, 0x00,
+0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0x00, 0x00, 0x00, 0x00,
 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00,
 0x0A, 0x00, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00,
@@ -47231,13 +47162,13 @@ const unsigned char timelib_timezone_db_
 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, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF,
-0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C,
-0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00,
-0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00,
-0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0xFF, 0xFF, 0xB2, 0x25, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0,
+0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF,
+0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53,
+0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44,
+0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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,
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
@@ -47779,7 +47710,7 @@ const unsigned char timelib_timezone_db_
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xC8, 0xE4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF,
 0x91, 0x05, 0xFB, 0x08, 0x00, 0x01, 0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F,
 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, 0x31, 0x0A,
@@ -48039,4 +47970,4 @@ const unsigned char timelib_timezone_db_
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,};
 
-const timelib_tzdb timezonedb_builtin = { "2017.2", 594, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2017.3", 593, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff -pruN 7.1.8-1/ext/date/lib/timezonemap.h 7.1.13-1/ext/date/lib/timezonemap.h
--- 7.1.8-1/ext/date/lib/timezonemap.h	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/lib/timezonemap.h	2018-01-03 02:32:29.000000000 +0000
@@ -4,29 +4,18 @@
 	{ "acdt",  1,  37800, "Australia/North"               },
 	{ "acdt",  1,  37800, "Australia/South"               },
 	{ "acdt",  1,  37800, "Australia/Yancowinna"          },
-	{ "acst",  1, -14400, "America/Porto_Acre"            },
 	{ "acst",  0,  32400, "Australia/Adelaide"            },
 	{ "acst",  0,  34200, "Australia/Adelaide"            },
-	{ "acst",  1, -14400, "America/Eirunepe"              },
-	{ "acst",  1, -14400, "America/Rio_Branco"            },
-	{ "acst",  1, -14400, "Brazil/Acre"                   },
 	{ "acst",  0,  32400, "Australia/Broken_Hill"         },
 	{ "acst",  0,  32400, "Australia/Darwin"              },
 	{ "acst",  0,  32400, "Australia/North"               },
 	{ "acst",  0,  32400, "Australia/South"               },
 	{ "acst",  0,  32400, "Australia/Yancowinna"          },
-	{ "acst",  0,  34200, "Asia/Jayapura"                 },
 	{ "acst",  0,  34200, "Australia/Broken_Hill"         },
 	{ "acst",  0,  34200, "Australia/Darwin"              },
 	{ "acst",  0,  34200, "Australia/North"               },
 	{ "acst",  0,  34200, "Australia/South"               },
 	{ "acst",  0,  34200, "Australia/Yancowinna"          },
-	{ "act",   0, -18000, "America/Porto_Acre"            },
-	{ "act",   0, -18000, "America/Eirunepe"              },
-	{ "act",   0, -18000, "America/Rio_Branco"            },
-	{ "act",   0, -18000, "Brazil/Acre"                   },
-	{ "acwdt", 1,  35100, "Australia/Eucla"               },
-	{ "acwst", 0,  31500, "Australia/Eucla"               },
 	{ "addt",  1,  -7200, "America/Goose_Bay"             },
 	{ "addt",  1,  -7200, "America/Pangnirtung"           },
 	{ "adt",   1, -10800, "America/Halifax"               },
@@ -40,7 +29,6 @@
 	{ "adt",   1, -10800, "America/Thule"                 },
 	{ "adt",   1, -10800, "Atlantic/Bermuda"              },
 	{ "adt",   1, -10800, "Canada/Atlantic"               },
-	{ "adt",   1,  14400, "Asia/Baghdad"                  },
 	{ "aedt",  1,  39600, "Australia/Melbourne"           },
 	{ "aedt",  1,  39600, "Antarctica/Macquarie"          },
 	{ "aedt",  1,  39600, "Australia/ACT"                 },
@@ -69,8 +57,6 @@
 	{ "aest",  0,  36000, "Australia/Sydney"              },
 	{ "aest",  0,  36000, "Australia/Tasmania"            },
 	{ "aest",  0,  36000, "Australia/Victoria"            },
-	{ "aft",   0,  16200, "Asia/Kabul"                    },
-	{ "aft",   0,  14400, "Asia/Kabul"                    },
 	{ "ahdt",  1, -32400, "America/Anchorage"             },
 	{ "ahst",  0, -36000, "America/Anchorage"             },
 	{ "ahst",  0, -36000, "America/Adak"                  },
@@ -87,31 +73,9 @@
 	{ "akst",  0, -32400, "America/Nome"                  },
 	{ "akst",  0, -32400, "America/Sitka"                 },
 	{ "akst",  0, -32400, "America/Yakutat"               },
-	{ "amst",  1, -10800, "America/Boa_Vista"             },
-	{ "amst",  1, -10800, "America/Campo_Grande"          },
-	{ "amst",  1, -10800, "America/Cuiaba"                },
-	{ "amst",  1, -10800, "America/Manaus"                },
-	{ "amst",  1, -10800, "America/Porto_Velho"           },
-	{ "amst",  1, -10800, "America/Santarem"              },
-	{ "amst",  1, -10800, "Brazil/West"                   },
 	{ "amt",   0, -13840, "America/Asuncion"              },
-	{ "amt",   0, -14400, "America/Boa_Vista"             },
-	{ "amt",   0, -14400, "America/Campo_Grande"          },
-	{ "amt",   0, -14400, "America/Cuiaba"                },
-	{ "amt",   0, -14400, "America/Eirunepe"              },
-	{ "amt",   0, -14400, "America/Manaus"                },
-	{ "amt",   0, -14400, "America/Porto_Acre"            },
-	{ "amt",   0, -14400, "America/Porto_Velho"           },
-	{ "amt",   0, -14400, "America/Rio_Branco"            },
-	{ "amt",   0, -14400, "America/Santarem"              },
-	{ "amt",   0, -14400, "Brazil/Acre"                   },
-	{ "amt",   0, -14400, "Brazil/West"                   },
 	{ "amt",   0,   1172, "Europe/Amsterdam"              },
 	{ "amt",   0,   5692, "Europe/Athens"                 },
-	{ "ant",   0, -16200, "America/Curacao"               },
-	{ "ant",   0, -16200, "America/Aruba"                 },
-	{ "ant",   0, -16200, "America/Kralendijk"            },
-	{ "ant",   0, -16200, "America/Lower_Princes"         },
 	{ "apt",   1, -10800, "America/Halifax"               },
 	{ "apt",   1, -10800, "America/Blanc-Sablon"          },
 	{ "apt",   1, -10800, "America/Glace_Bay"             },
@@ -119,87 +83,7 @@
 	{ "apt",   1, -10800, "America/Pangnirtung"           },
 	{ "apt",   1, -10800, "America/Puerto_Rico"           },
 	{ "apt",   1, -10800, "Canada/Atlantic"               },
-	{ "arst",  1,  -7200, "America/Buenos_Aires"          },
-	{ "arst",  1, -10800, "America/Buenos_Aires"          },
-	{ "arst",  1, -10800, "America/Argentina/Buenos_Aires" },
-	{ "arst",  1, -10800, "America/Argentina/Catamarca"   },
-	{ "arst",  1, -10800, "America/Argentina/ComodRivadavia" },
-	{ "arst",  1, -10800, "America/Argentina/Cordoba"     },
-	{ "arst",  1, -10800, "America/Argentina/Jujuy"       },
-	{ "arst",  1, -10800, "America/Argentina/La_Rioja"    },
-	{ "arst",  1, -10800, "America/Argentina/Mendoza"     },
-	{ "arst",  1, -10800, "America/Argentina/Rio_Gallegos" },
-	{ "arst",  1, -10800, "America/Argentina/Salta"       },
-	{ "arst",  1, -10800, "America/Argentina/San_Juan"    },
-	{ "arst",  1, -10800, "America/Argentina/San_Luis"    },
-	{ "arst",  1, -10800, "America/Argentina/Tucuman"     },
-	{ "arst",  1, -10800, "America/Argentina/Ushuaia"     },
-	{ "arst",  1, -10800, "America/Catamarca"             },
-	{ "arst",  1, -10800, "America/Cordoba"               },
-	{ "arst",  1, -10800, "America/Jujuy"                 },
-	{ "arst",  1, -10800, "America/Mendoza"               },
-	{ "arst",  1, -10800, "America/Rosario"               },
-	{ "arst",  1, -10800, "Antarctica/Palmer"             },
-	{ "arst",  1,  -7200, "America/Argentina/Buenos_Aires" },
-	{ "arst",  1,  -7200, "America/Argentina/Catamarca"   },
-	{ "arst",  1,  -7200, "America/Argentina/ComodRivadavia" },
-	{ "arst",  1,  -7200, "America/Argentina/Cordoba"     },
-	{ "arst",  1,  -7200, "America/Argentina/Jujuy"       },
-	{ "arst",  1,  -7200, "America/Argentina/La_Rioja"    },
-	{ "arst",  1,  -7200, "America/Argentina/Mendoza"     },
-	{ "arst",  1,  -7200, "America/Argentina/Rio_Gallegos" },
-	{ "arst",  1,  -7200, "America/Argentina/Salta"       },
-	{ "arst",  1,  -7200, "America/Argentina/San_Juan"    },
-	{ "arst",  1,  -7200, "America/Argentina/San_Luis"    },
-	{ "arst",  1,  -7200, "America/Argentina/Tucuman"     },
-	{ "arst",  1,  -7200, "America/Argentina/Ushuaia"     },
-	{ "arst",  1,  -7200, "America/Catamarca"             },
-	{ "arst",  1,  -7200, "America/Cordoba"               },
-	{ "arst",  1,  -7200, "America/Jujuy"                 },
-	{ "arst",  1,  -7200, "America/Mendoza"               },
-	{ "arst",  1,  -7200, "America/Rosario"               },
-	{ "arst",  1,  -7200, "Antarctica/Palmer"             },
-	{ "art",   0, -10800, "America/Buenos_Aires"          },
-	{ "art",   0, -14400, "America/Buenos_Aires"          },
-	{ "art",   0, -10800, "America/Argentina/Buenos_Aires" },
-	{ "art",   0, -10800, "America/Argentina/Catamarca"   },
-	{ "art",   0, -10800, "America/Argentina/ComodRivadavia" },
-	{ "art",   0, -10800, "America/Argentina/Cordoba"     },
-	{ "art",   0, -10800, "America/Argentina/Jujuy"       },
-	{ "art",   0, -10800, "America/Argentina/La_Rioja"    },
-	{ "art",   0, -10800, "America/Argentina/Mendoza"     },
-	{ "art",   0, -10800, "America/Argentina/Rio_Gallegos" },
-	{ "art",   0, -10800, "America/Argentina/Salta"       },
-	{ "art",   0, -10800, "America/Argentina/San_Juan"    },
-	{ "art",   0, -10800, "America/Argentina/San_Luis"    },
-	{ "art",   0, -10800, "America/Argentina/Tucuman"     },
-	{ "art",   0, -10800, "America/Argentina/Ushuaia"     },
-	{ "art",   0, -10800, "America/Catamarca"             },
-	{ "art",   0, -10800, "America/Cordoba"               },
-	{ "art",   0, -10800, "America/Jujuy"                 },
-	{ "art",   0, -10800, "America/Mendoza"               },
-	{ "art",   0, -10800, "America/Rosario"               },
-	{ "art",   0, -10800, "Antarctica/Palmer"             },
-	{ "art",   0, -14400, "America/Argentina/Buenos_Aires" },
-	{ "art",   0, -14400, "America/Argentina/Catamarca"   },
-	{ "art",   0, -14400, "America/Argentina/ComodRivadavia" },
-	{ "art",   0, -14400, "America/Argentina/Cordoba"     },
-	{ "art",   0, -14400, "America/Argentina/Jujuy"       },
-	{ "art",   0, -14400, "America/Argentina/La_Rioja"    },
-	{ "art",   0, -14400, "America/Argentina/Mendoza"     },
-	{ "art",   0, -14400, "America/Argentina/Rio_Gallegos" },
-	{ "art",   0, -14400, "America/Argentina/Salta"       },
-	{ "art",   0, -14400, "America/Argentina/San_Juan"    },
-	{ "art",   0, -14400, "America/Argentina/San_Luis"    },
-	{ "art",   0, -14400, "America/Argentina/Tucuman"     },
-	{ "art",   0, -14400, "America/Argentina/Ushuaia"     },
-	{ "art",   0, -14400, "America/Catamarca"             },
-	{ "art",   0, -14400, "America/Cordoba"               },
-	{ "art",   0, -14400, "America/Jujuy"                 },
-	{ "art",   0, -14400, "America/Mendoza"               },
-	{ "art",   0, -14400, "America/Rosario"               },
-	{ "art",   0, -14400, "Antarctica/Palmer"             },
-	{ "ast",   0,  10800, "Asia/Riyadh"                   },
+	{ "apt",   1, -32400, "America/Anchorage"             },
 	{ "ast",   0, -14400, "America/Anguilla"              },
 	{ "ast",   0, -14400, "America/Antigua"               },
 	{ "ast",   0, -14400, "America/Aruba"                 },
@@ -234,11 +118,7 @@
 	{ "ast",   0, -14400, "America/Virgin"                },
 	{ "ast",   0, -14400, "Atlantic/Bermuda"              },
 	{ "ast",   0, -14400, "Canada/Atlantic"               },
-	{ "ast",   0,  10800, "Asia/Aden"                     },
-	{ "ast",   0,  10800, "Asia/Baghdad"                  },
-	{ "ast",   0,  10800, "Asia/Bahrain"                  },
-	{ "ast",   0,  10800, "Asia/Kuwait"                   },
-	{ "ast",   0,  10800, "Asia/Qatar"                    },
+	{ "ast",   0, -36000, "America/Anchorage"             },
 	{ "awdt",  1,  32400, "Australia/Perth"               },
 	{ "awdt",  1,  32400, "Australia/West"                },
 	{ "awst",  0,  28800, "Australia/Perth"               },
@@ -250,14 +130,8 @@
 	{ "awt",   1, -10800, "America/Pangnirtung"           },
 	{ "awt",   1, -10800, "America/Puerto_Rico"           },
 	{ "awt",   1, -10800, "Canada/Atlantic"               },
-	{ "azomt", 1,      0, "Atlantic/Azores"               },
-	{ "azost", 1,      0, "Atlantic/Azores"               },
-	{ "azost", 1,  -3600, "Atlantic/Azores"               },
-	{ "azot",  0,  -3600, "Atlantic/Azores"               },
-	{ "azot",  0,  -7200, "Atlantic/Azores"               },
+	{ "awt",   1, -32400, "America/Anchorage"             },
 	{ "bdst",  1,   7200, "Europe/London"                 },
-	{ "bdst",  1,  25200, "Asia/Dacca"                    },
-	{ "bdst",  1,  25200, "Asia/Dhaka"                    },
 	{ "bdst",  1,   7200, "Europe/Belfast"                },
 	{ "bdst",  1,   7200, "Europe/Gibraltar"              },
 	{ "bdst",  1,   7200, "Europe/Guernsey"               },
@@ -265,32 +139,8 @@
 	{ "bdst",  1,   7200, "Europe/Jersey"                 },
 	{ "bdst",  1,   7200, "GB"                            },
 	{ "bdt",   1, -36000, "America/Adak"                  },
-	{ "bdt",   0,  21600, "Asia/Dacca"                    },
 	{ "bdt",   1, -36000, "America/Atka"                  },
 	{ "bdt",   1, -36000, "America/Nome"                  },
-	{ "bdt",   0,  21600, "Asia/Dhaka"                    },
-	{ "beat",  0,   9000, "Africa/Mogadishu"              },
-	{ "beat",  0,   9000, "Africa/Addis_Ababa"            },
-	{ "beat",  0,   9000, "Africa/Asmara"                 },
-	{ "beat",  0,   9000, "Africa/Asmera"                 },
-	{ "beat",  0,   9000, "Africa/Dar_es_Salaam"          },
-	{ "beat",  0,   9000, "Africa/Djibouti"               },
-	{ "beat",  0,   9000, "Africa/Kampala"                },
-	{ "beat",  0,   9000, "Africa/Nairobi"                },
-	{ "beat",  0,   9000, "Indian/Antananarivo"           },
-	{ "beat",  0,   9000, "Indian/Comoro"                 },
-	{ "beat",  0,   9000, "Indian/Mayotte"                },
-	{ "beaut", 0,   9900, "Africa/Nairobi"                },
-	{ "beaut", 0,   9900, "Africa/Addis_Ababa"            },
-	{ "beaut", 0,   9900, "Africa/Asmara"                 },
-	{ "beaut", 0,   9900, "Africa/Asmera"                 },
-	{ "beaut", 0,   9900, "Africa/Dar_es_Salaam"          },
-	{ "beaut", 0,   9900, "Africa/Djibouti"               },
-	{ "beaut", 0,   9900, "Africa/Kampala"                },
-	{ "beaut", 0,   9900, "Africa/Mogadishu"              },
-	{ "beaut", 0,   9900, "Indian/Antananarivo"           },
-	{ "beaut", 0,   9900, "Indian/Comoro"                 },
-	{ "beaut", 0,   9900, "Indian/Mayotte"                },
 	{ "bmt",   0, -14309, "America/Barbados"              },
 	{ "bmt",   0,   6264, "Europe/Tiraspol"               },
 	{ "bmt",   0, -17776, "America/Bogota"                },
@@ -305,38 +155,12 @@
 	{ "bmt",   0,  25632, "Asia/Jakarta"                  },
 	{ "bmt",   0,   6264, "Europe/Bucharest"              },
 	{ "bmt",   0,   6264, "Europe/Chisinau"               },
-	{ "bnt",   0,  28800, "Asia/Brunei"                   },
-	{ "bnt",   0,  27000, "Asia/Brunei"                   },
-	{ "bortst", 1,  30000, "Asia/Kuching"                  },
-	{ "bort",  0,  28800, "Asia/Kuching"                  },
-	{ "bort",  0,  27000, "Asia/Kuching"                  },
 	{ "bost",  1, -12756, "America/La_Paz"                },
-	{ "bot",   0, -14400, "America/La_Paz"                },
-	{ "brst",  1,  -7200, "America/Sao_Paulo"             },
-	{ "brst",  1,  -7200, "America/Araguaina"             },
-	{ "brst",  1,  -7200, "America/Bahia"                 },
-	{ "brst",  1,  -7200, "America/Belem"                 },
-	{ "brst",  1,  -7200, "America/Fortaleza"             },
-	{ "brst",  1,  -7200, "America/Maceio"                },
-	{ "brst",  1,  -7200, "America/Recife"                },
-	{ "brst",  1,  -7200, "Brazil/East"                   },
-	{ "brt",   0, -10800, "America/Sao_Paulo"             },
-	{ "brt",   0, -10800, "America/Araguaina"             },
-	{ "brt",   0, -10800, "America/Bahia"                 },
-	{ "brt",   0, -10800, "America/Belem"                 },
-	{ "brt",   0, -10800, "America/Fortaleza"             },
-	{ "brt",   0, -10800, "America/Maceio"                },
-	{ "brt",   0, -10800, "America/Recife"                },
-	{ "brt",   0, -10800, "America/Santarem"              },
-	{ "brt",   0, -10800, "Brazil/East"                   },
 	{ "bst",   1,   3600, "Europe/London"                 },
 	{ "bst",   0,   3600, "Europe/London"                 },
 	{ "bst",   0, -39600, "America/Adak"                  },
 	{ "bst",   0, -39600, "America/Atka"                  },
 	{ "bst",   0, -39600, "America/Nome"                  },
-	{ "bst",   0, -39600, "Pacific/Midway"                },
-	{ "bst",   0, -39600, "Pacific/Pago_Pago"             },
-	{ "bst",   0, -39600, "Pacific/Samoa"                 },
 	{ "bst",   0,   3600, "Europe/Belfast"                },
 	{ "bst",   0,   3600, "Europe/Guernsey"               },
 	{ "bst",   0,   3600, "Europe/Isle_of_Man"            },
@@ -349,21 +173,9 @@
 	{ "bst",   1,   3600, "Europe/Isle_of_Man"            },
 	{ "bst",   1,   3600, "Europe/Jersey"                 },
 	{ "bst",   1,   3600, "GB"                            },
-	{ "bst",   0,  39600, "Pacific/Bougainville"          },
-	{ "btt",   0,  21600, "Asia/Thimbu"                   },
-	{ "btt",   0,  21600, "Asia/Thimphu"                  },
-	{ "burt",  0,  23400, "Asia/Kolkata"                  },
-	{ "burt",  0,  23400, "Asia/Calcutta"                 },
-	{ "burt",  0,  23400, "Asia/Dacca"                    },
-	{ "burt",  0,  23400, "Asia/Dhaka"                    },
-	{ "burt",  0,  23400, "Asia/Rangoon"                  },
-	{ "burt",  0,  23400, "Asia/Yangon"                   },
-	{ "cant",  0,  -3600, "Atlantic/Canary"               },
-	{ "capt",  1, -32400, "America/Anchorage"             },
 	{ "cast",  0,  34200, "Australia/Adelaide"            },
 	{ "cast",  1,  10800, "Africa/Juba"                   },
 	{ "cast",  1,  10800, "Africa/Khartoum"               },
-	{ "cat",   0, -36000, "America/Anchorage"             },
 	{ "cat",   0,   7200, "Africa/Khartoum"               },
 	{ "cat",   0,   7200, "Africa/Blantyre"               },
 	{ "cat",   0,   7200, "Africa/Bujumbura"              },
@@ -375,8 +187,6 @@
 	{ "cat",   0,   7200, "Africa/Lusaka"                 },
 	{ "cat",   0,   7200, "Africa/Maputo"                 },
 	{ "cat",   0,   7200, "Africa/Windhoek"               },
-	{ "cawt",  1, -32400, "America/Anchorage"             },
-	{ "cct",   0,  23400, "Indian/Cocos"                  },
 	{ "cddt",  1, -14400, "America/Rankin_Inlet"          },
 	{ "cddt",  1, -14400, "America/Resolute"              },
 	{ "cdt",   1, -18000, "America/Chicago"               },
@@ -428,6 +238,8 @@
 	{ "cdt",   1,  32400, "Asia/Chongqing"                },
 	{ "cdt",   1,  32400, "Asia/Chungking"                },
 	{ "cdt",   1,  32400, "Asia/Harbin"                   },
+	{ "cdt",   1,  32400, "Asia/Macao"                    },
+	{ "cdt",   1,  32400, "Asia/Macau"                    },
 	{ "cdt",   1,  32400, "Asia/Taipei"                   },
 	{ "cdt",   1,  32400, "PRC"                           },
 	{ "cdt",   1,  32400, "ROC"                           },
@@ -537,32 +349,6 @@
 	{ "cet",   0,   3600, "Europe/Zagreb"                 },
 	{ "cet",   0,   3600, "Europe/Zaporozhye"             },
 	{ "cet",   0,   3600, "Europe/Zurich"                 },
-	{ "cgst",  1,  -3600, "America/Scoresbysund"          },
-	{ "cgt",   0,  -7200, "America/Scoresbysund"          },
-	{ "chadt", 1,  49500, "Pacific/Chatham"               },
-	{ "chast", 0,  45900, "Pacific/Chatham"               },
-	{ "chast", 0,  44100, "Pacific/Chatham"               },
-	{ "chdt",  1, -19800, "America/Belize"                },
-	{ "chost", 1,  36000, "Asia/Choibalsan"               },
-	{ "chost", 1,  32400, "Asia/Choibalsan"               },
-	{ "chot",  0,  32400, "Asia/Choibalsan"               },
-	{ "chot",  0,  28800, "Asia/Choibalsan"               },
-	{ "chut",  0,  36000, "Pacific/Chuuk"                 },
-	{ "chut",  0,  36000, "Pacific/Truk"                  },
-	{ "chut",  0,  36000, "Pacific/Yap"                   },
-	{ "ckhst", 1, -34200, "Pacific/Rarotonga"             },
-	{ "ckt",   0, -36000, "Pacific/Rarotonga"             },
-	{ "ckt",   0, -37800, "Pacific/Rarotonga"             },
-	{ "clst",  1, -10800, "America/Santiago"              },
-	{ "clst",  1, -14400, "America/Santiago"              },
-	{ "clst",  1, -10800, "Antarctica/Palmer"             },
-	{ "clst",  1, -10800, "Chile/Continental"             },
-	{ "clst",  1, -14400, "Chile/Continental"             },
-	{ "clt",   0, -14400, "America/Santiago"              },
-	{ "clt",   0, -18000, "America/Santiago"              },
-	{ "clt",   0, -14400, "Antarctica/Palmer"             },
-	{ "clt",   0, -14400, "Chile/Continental"             },
-	{ "clt",   0, -18000, "Chile/Continental"             },
 	{ "cmt",   0, -15408, "America/Argentina/Buenos_Aires" },
 	{ "cmt",   0, -15408, "America/Argentina/Catamarca"   },
 	{ "cmt",   0, -15408, "America/Argentina/ComodRivadavia" },
@@ -589,8 +375,6 @@
 	{ "cmt",   0,   3020, "Europe/Copenhagen"             },
 	{ "cmt",   0,   6900, "Europe/Chisinau"               },
 	{ "cmt",   0,   6900, "Europe/Tiraspol"               },
-	{ "cost",  1, -14400, "America/Bogota"                },
-	{ "cot",   0, -18000, "America/Bogota"                },
 	{ "cpt",   1, -18000, "America/Chicago"               },
 	{ "cpt",   1, -18000, "America/Atikokan"              },
 	{ "cpt",   1, -18000, "America/Coral_Harbour"         },
@@ -662,7 +446,6 @@
 	{ "cst",   0, -21600, "America/Thunder_Bay"           },
 	{ "cst",   0, -21600, "America/Winnipeg"              },
 	{ "cst",   0, -21600, "Canada/Central"                },
-	{ "cst",   0, -21600, "Canada/East-Saskatchewan"      },
 	{ "cst",   0, -21600, "Canada/Saskatchewan"           },
 	{ "cst",   0, -21600, "Mexico/BajaSur"                },
 	{ "cst",   0, -21600, "Mexico/General"                },
@@ -675,10 +458,6 @@
 	{ "cst",   0,  28800, "Asia/Taipei"                   },
 	{ "cst",   0,  28800, "PRC"                           },
 	{ "cst",   0,  28800, "ROC"                           },
-	{ "cut",   0,   8400, "Europe/Zaporozhye"             },
-	{ "cvst",  1,  -3600, "Atlantic/Cape_Verde"           },
-	{ "cvt",   0,  -7200, "Atlantic/Cape_Verde"           },
-	{ "cvt",   0,  -3600, "Atlantic/Cape_Verde"           },
 	{ "cwt",   1, -18000, "America/Chicago"               },
 	{ "cwt",   1, -18000, "America/Atikokan"              },
 	{ "cwt",   1, -18000, "America/Coral_Harbour"         },
@@ -702,20 +481,9 @@
 	{ "cwt",   1, -18000, "America/Winnipeg"              },
 	{ "cwt",   1, -18000, "Canada/Central"                },
 	{ "cwt",   1, -18000, "Mexico/General"                },
-	{ "cxt",   0,  25200, "Indian/Christmas"              },
 	{ "chst",  0,  36000, "Pacific/Guam"                  },
 	{ "chst",  0,  36000, "Pacific/Saipan"                },
-	{ "dact",  0,  21600, "Asia/Dacca"                    },
-	{ "dact",  0,  21600, "Asia/Dhaka"                    },
 	{ "dmt",   0,  -1521, "Europe/Dublin"                 },
-	{ "easst", 1, -21600, "Chile/EasterIsland"            },
-	{ "easst", 1, -18000, "Chile/EasterIsland"            },
-	{ "easst", 1, -18000, "Pacific/Easter"                },
-	{ "easst", 1, -21600, "Pacific/Easter"                },
-	{ "east",  0, -21600, "Chile/EasterIsland"            },
-	{ "east",  0, -25200, "Chile/EasterIsland"            },
-	{ "east",  0, -21600, "Pacific/Easter"                },
-	{ "east",  0, -25200, "Pacific/Easter"                },
 	{ "eat",   0,  10800, "Africa/Khartoum"               },
 	{ "eat",   0,  10800, "Africa/Addis_Ababa"            },
 	{ "eat",   0,  10800, "Africa/Asmara"                 },
@@ -729,8 +497,6 @@
 	{ "eat",   0,  10800, "Indian/Antananarivo"           },
 	{ "eat",   0,  10800, "Indian/Comoro"                 },
 	{ "eat",   0,  10800, "Indian/Mayotte"                },
-	{ "ect",   0, -18000, "America/Guayaquil"             },
-	{ "ect",   0, -18000, "Pacific/Galapagos"             },
 	{ "eddt",  1, -10800, "America/Iqaluit"               },
 	{ "edt",   1, -14400, "America/New_York"              },
 	{ "edt",   1, -14400, "America/Cancun"                },
@@ -764,6 +530,7 @@
 	{ "eest",  1,  10800, "Asia/Amman"                    },
 	{ "eest",  1,  10800, "Asia/Beirut"                   },
 	{ "eest",  1,  10800, "Asia/Damascus"                 },
+	{ "eest",  1,  10800, "Asia/Famagusta"                },
 	{ "eest",  1,  10800, "Asia/Gaza"                     },
 	{ "eest",  1,  10800, "Asia/Hebron"                   },
 	{ "eest",  1,  10800, "Asia/Istanbul"                 },
@@ -788,13 +555,12 @@
 	{ "eest",  1,  10800, "Europe/Warsaw"                 },
 	{ "eest",  1,  10800, "Europe/Zaporozhye"             },
 	{ "eet",   0,   7200, "Europe/Helsinki"               },
-	{ "eet",   1,  10800, "Asia/Gaza"                     },
-	{ "eet",   1,  10800, "Asia/Hebron"                   },
 	{ "eet",   0,   7200, "Africa/Cairo"                  },
 	{ "eet",   0,   7200, "Africa/Tripoli"                },
 	{ "eet",   0,   7200, "Asia/Amman"                    },
 	{ "eet",   0,   7200, "Asia/Beirut"                   },
 	{ "eet",   0,   7200, "Asia/Damascus"                 },
+	{ "eet",   0,   7200, "Asia/Famagusta"                },
 	{ "eet",   0,   7200, "Asia/Gaza"                     },
 	{ "eet",   0,   7200, "Asia/Hebron"                   },
 	{ "eet",   0,   7200, "Asia/Istanbul"                 },
@@ -818,9 +584,6 @@
 	{ "eet",   0,   7200, "Europe/Vilnius"                },
 	{ "eet",   0,   7200, "Europe/Warsaw"                 },
 	{ "eet",   0,   7200, "Europe/Zaporozhye"             },
-	{ "egst",  1,      0, "America/Scoresbysund"          },
-	{ "egt",   0,  -3600, "America/Scoresbysund"          },
-	{ "ehdt",  1, -16200, "America/Santo_Domingo"         },
 	{ "emt",   0, -26248, "Chile/EasterIsland"            },
 	{ "emt",   0, -26248, "Pacific/Easter"                },
 	{ "ept",   1, -14400, "America/New_York"              },
@@ -881,25 +644,7 @@
 	{ "ewt",   1, -14400, "America/Toronto"               },
 	{ "ewt",   1, -14400, "Canada/Eastern"                },
 	{ "ffmt",  0, -14660, "America/Martinique"            },
-	{ "fjst",  1,  46800, "Pacific/Fiji"                  },
-	{ "fjt",   0,  43200, "Pacific/Fiji"                  },
-	{ "fkst",  1,  -7200, "Atlantic/Stanley"              },
-	{ "fkst",  0, -10800, "Atlantic/Stanley"              },
-	{ "fkst",  1, -10800, "Atlantic/Stanley"              },
-	{ "fkt",   0, -14400, "Atlantic/Stanley"              },
-	{ "fkt",   0, -10800, "Atlantic/Stanley"              },
 	{ "fmt",   0,  -4056, "Atlantic/Madeira"              },
-	{ "fnst",  1,  -3600, "America/Noronha"               },
-	{ "fnst",  1,  -3600, "Brazil/DeNoronha"              },
-	{ "fnt",   0,  -7200, "America/Noronha"               },
-	{ "fnt",   0,  -7200, "Brazil/DeNoronha"              },
-	{ "galt",  0, -21600, "Pacific/Galapagos"             },
-	{ "gamt",  0, -32400, "Pacific/Gambier"               },
-	{ "gbgt",  0, -13500, "America/Guyana"                },
-	{ "gft",   0, -14400, "America/Cayenne"               },
-	{ "gft",   0, -10800, "America/Cayenne"               },
-	{ "ghst",  1,   1200, "Africa/Accra"                  },
-	{ "gilt",  0,  43200, "Pacific/Tarawa"                },
 	{ "gmt",   0,      0, "Africa/Abidjan"                },
 	{ "gmt",   0,      0, "Africa/Accra"                  },
 	{ "gmt",   0,      0, "Africa/Bamako"                 },
@@ -927,16 +672,8 @@
 	{ "gmt",   0,      0, "Europe/Jersey"                 },
 	{ "gmt",   0,      0, "Europe/London"                 },
 	{ "gmt",   0,      0, "GB"                            },
-	{ "gst",   0,  14400, "Asia/Dubai"                    },
-	{ "gst",   0,  -7200, "Atlantic/South_Georgia"        },
-	{ "gst",   0,  14400, "Asia/Bahrain"                  },
-	{ "gst",   0,  14400, "Asia/Muscat"                   },
-	{ "gst",   0,  14400, "Asia/Qatar"                    },
 	{ "gst",   0,  36000, "Pacific/Guam"                  },
 	{ "gst",   0,  36000, "Pacific/Saipan"                },
-	{ "gyt",   0, -14400, "America/Guyana"                },
-	{ "gyt",   0, -10800, "America/Guyana"                },
-	{ "gyt",   0, -13500, "America/Guyana"                },
 	{ "hdt",   1, -34200, "Pacific/Honolulu"              },
 	{ "hdt",   1, -32400, "America/Adak"                  },
 	{ "hdt",   1, -32400, "America/Atka"                  },
@@ -951,95 +688,41 @@
 	{ "hmt",   0,  21200, "Asia/Kolkata"                  },
 	{ "hmt",   0,   5989, "Europe/Helsinki"               },
 	{ "hmt",   0,   5989, "Europe/Mariehamn"              },
-	{ "hovst", 1,  28800, "Asia/Hovd"                     },
-	{ "hovt",  0,  25200, "Asia/Hovd"                     },
-	{ "hovt",  0,  21600, "Asia/Hovd"                     },
 	{ "hst",   0, -36000, "Pacific/Honolulu"              },
 	{ "hst",   0, -37800, "Pacific/Honolulu"              },
 	{ "hst",   0, -36000, "America/Adak"                  },
 	{ "hst",   0, -36000, "America/Atka"                  },
 	{ "hst",   0, -36000, "Pacific/Johnston"              },
 	{ "hst",   0, -37800, "Pacific/Johnston"              },
-	{ "ict",   0,  25200, "Asia/Bangkok"                  },
-	{ "ict",   0,  25200, "Asia/Ho_Chi_Minh"              },
-	{ "ict",   0,  25200, "Asia/Phnom_Penh"               },
-	{ "ict",   0,  25200, "Asia/Saigon"                   },
-	{ "ict",   0,  25200, "Asia/Vientiane"                },
 	{ "iddt",  1,  14400, "Asia/Jerusalem"                },
 	{ "iddt",  1,  14400, "Asia/Tel_Aviv"                 },
 	{ "idt",   1,  10800, "Asia/Jerusalem"                },
 	{ "idt",   1,  10800, "Asia/Gaza"                     },
 	{ "idt",   1,  10800, "Asia/Hebron"                   },
 	{ "idt",   1,  10800, "Asia/Tel_Aviv"                 },
-	{ "idt",   0,  28800, "Asia/Ho_Chi_Minh"              },
-	{ "idt",   0,  28800, "Asia/Saigon"                   },
-	{ "ihst",  1,  21600, "Asia/Colombo"                  },
 	{ "imt",   0,  25025, "Asia/Irkutsk"                  },
 	{ "imt",   0,   7016, "Asia/Istanbul"                 },
 	{ "imt",   0,   7016, "Europe/Istanbul"               },
 	{ "imt",   0,   7016, "Europe/Sofia"                  },
-	{ "iot",   0,  21600, "Indian/Chagos"                 },
-	{ "iot",   0,  18000, "Indian/Chagos"                 },
-	{ "irdt",  1,  16200, "Asia/Tehran"                   },
-	{ "irdt",  1,  18000, "Asia/Tehran"                   },
-	{ "irst",  0,  12600, "Asia/Tehran"                   },
-	{ "irst",  0,  14400, "Asia/Tehran"                   },
-	{ "isst",  1,      0, "Atlantic/Reykjavik"            },
 	{ "ist",   0,   7200, "Asia/Jerusalem"                },
-	{ "ist",   0,  -3600, "Atlantic/Reykjavik"            },
 	{ "ist",   0,  19800, "Asia/Calcutta"                 },
-	{ "ist",   0,  19800, "Asia/Colombo"                  },
-	{ "ist",   0,  19800, "Asia/Dacca"                    },
-	{ "ist",   0,  19800, "Asia/Dhaka"                    },
-	{ "ist",   0,  19800, "Asia/Karachi"                  },
-	{ "ist",   0,  19800, "Asia/Kathmandu"                },
-	{ "ist",   0,  19800, "Asia/Katmandu"                 },
 	{ "ist",   0,  19800, "Asia/Kolkata"                  },
-	{ "ist",   0,  19800, "Asia/Thimbu"                   },
-	{ "ist",   0,  19800, "Asia/Thimphu"                  },
 	{ "ist",   1,   2079, "Europe/Dublin"                 },
-	{ "ist",   1,  23400, "Asia/Calcutta"                 },
-	{ "ist",   1,  23400, "Asia/Colombo"                  },
-	{ "ist",   1,  23400, "Asia/Karachi"                  },
-	{ "ist",   1,  23400, "Asia/Kolkata"                  },
 	{ "ist",   0,   3600, "Europe/Dublin"                 },
 	{ "ist",   1,   3600, "Europe/Dublin"                 },
 	{ "ist",   0,   7200, "Asia/Gaza"                     },
 	{ "ist",   0,   7200, "Asia/Hebron"                   },
 	{ "ist",   0,   7200, "Asia/Tel_Aviv"                 },
-	{ "javt",  0,  26400, "Asia/Jakarta"                  },
-	{ "jcst",  0,  32400, "Asia/Pyongyang"                },
-	{ "jcst",  0,  32400, "Asia/Seoul"                    },
-	{ "jcst",  0,  32400, "Asia/Tokyo"                    },
-	{ "jcst",  0,  32400, "ROK"                           },
 	{ "jdt",   1,  36000, "Asia/Tokyo"                    },
 	{ "jmt",   0,   8440, "Asia/Jerusalem"                },
 	{ "jmt",   0,   8440, "Asia/Tel_Aviv"                 },
 	{ "jst",   0,  32400, "Asia/Tokyo"                    },
-	{ "jst",   0,  32400, "Asia/Dili"                     },
-	{ "jst",   0,  32400, "Asia/Ho_Chi_Minh"              },
 	{ "jst",   0,  32400, "Asia/Hong_Kong"                },
-	{ "jst",   0,  32400, "Asia/Jakarta"                  },
-	{ "jst",   0,  32400, "Asia/Kuala_Lumpur"             },
-	{ "jst",   0,  32400, "Asia/Kuching"                  },
-	{ "jst",   0,  32400, "Asia/Makassar"                 },
-	{ "jst",   0,  32400, "Asia/Manila"                   },
-	{ "jst",   0,  32400, "Asia/Pontianak"                },
 	{ "jst",   0,  32400, "Asia/Pyongyang"                },
-	{ "jst",   0,  32400, "Asia/Rangoon"                  },
-	{ "jst",   0,  32400, "Asia/Saigon"                   },
 	{ "jst",   0,  32400, "Asia/Seoul"                    },
-	{ "jst",   0,  32400, "Asia/Singapore"                },
 	{ "jst",   0,  32400, "Asia/Taipei"                   },
-	{ "jst",   0,  32400, "Asia/Ujung_Pandang"            },
-	{ "jst",   0,  32400, "Asia/Yangon"                   },
-	{ "jst",   0,  32400, "Pacific/Bougainville"          },
-	{ "jst",   0,  32400, "Pacific/Nauru"                 },
 	{ "jst",   0,  32400, "ROC"                           },
 	{ "jst",   0,  32400, "ROK"                           },
-	{ "jwst",  0,  28800, "Asia/Taipei"                   },
-	{ "jwst",  0,  28800, "ROC"                           },
-	{ "kart",  0,  18000, "Asia/Karachi"                  },
 	{ "kdt",   1,  36000, "Asia/Seoul"                    },
 	{ "kdt",   1,  34200, "Asia/Seoul"                    },
 	{ "kdt",   1,  34200, "ROK"                           },
@@ -1048,40 +731,13 @@
 	{ "kmt",   0, -18431, "America/Grand_Turk"            },
 	{ "kmt",   0, -18431, "America/Jamaica"               },
 	{ "kmt",   0,   7324, "Europe/Kiev"                   },
-	{ "kost",  0,  43200, "Pacific/Kosrae"                },
-	{ "kost",  0,  39600, "Pacific/Kosrae"                },
 	{ "kst",   0,  30600, "Asia/Seoul"                    },
 	{ "kst",   0,  32400, "Asia/Pyongyang"                },
 	{ "kst",   0,  32400, "Asia/Seoul"                    },
 	{ "kst",   0,  30600, "Asia/Pyongyang"                },
 	{ "kst",   0,  30600, "ROK"                           },
 	{ "kst",   0,  32400, "ROK"                           },
-	{ "kwat",  0, -43200, "Pacific/Kwajalein"             },
-	{ "lhdt",  1,  39600, "Australia/LHI"                 },
-	{ "lhdt",  1,  39600, "Australia/Lord_Howe"           },
-	{ "lhdt",  1,  41400, "Australia/LHI"                 },
-	{ "lhdt",  1,  41400, "Australia/Lord_Howe"           },
-	{ "lhst",  0,  37800, "Australia/Lord_Howe"           },
-	{ "lhst",  0,  37800, "Australia/LHI"                 },
-	{ "lint",  0,  50400, "Pacific/Kiritimati"            },
-	{ "lint",  0, -36000, "Pacific/Kiritimati"            },
-	{ "lint",  0, -38400, "Pacific/Kiritimati"            },
-	{ "lkt",   0,  23400, "Asia/Colombo"                  },
-	{ "lkt",   0,  21600, "Asia/Colombo"                  },
-	{ "lrt",   0,  -2670, "Africa/Monrovia"               },
 	{ "lst",   1,   9394, "Europe/Riga"                   },
-	{ "madmt", 1,   3600, "Atlantic/Madeira"              },
-	{ "madst", 1,      0, "Atlantic/Madeira"              },
-	{ "madt",  0,  -3600, "Atlantic/Madeira"              },
-	{ "malst", 1,  26400, "Asia/Singapore"                },
-	{ "malst", 1,  26400, "Asia/Kuala_Lumpur"             },
-	{ "malt",  0,  27000, "Asia/Singapore"                },
-	{ "malt",  0,  25200, "Asia/Singapore"                },
-	{ "malt",  0,  26400, "Asia/Singapore"                },
-	{ "malt",  0,  25200, "Asia/Kuala_Lumpur"             },
-	{ "malt",  0,  26400, "Asia/Kuala_Lumpur"             },
-	{ "malt",  0,  27000, "Asia/Kuala_Lumpur"             },
-	{ "mart",  0, -34200, "Pacific/Marquesas"             },
 	{ "mddt",  1, -18000, "America/Cambridge_Bay"         },
 	{ "mddt",  1, -18000, "America/Yellowknife"           },
 	{ "mdst",  1,  16279, "Europe/Moscow"                 },
@@ -1103,33 +759,22 @@
 	{ "mdt",   1, -21600, "America/Shiprock"              },
 	{ "mdt",   1, -21600, "America/Swift_Current"         },
 	{ "mdt",   1, -21600, "America/Yellowknife"           },
-	{ "mdt",   1, -21600, "Canada/East-Saskatchewan"      },
 	{ "mdt",   1, -21600, "Canada/Mountain"               },
 	{ "mdt",   1, -21600, "Canada/Saskatchewan"           },
 	{ "mdt",   1, -21600, "Mexico/BajaSur"                },
-	{ "mest",  1,   7200, "MET"                           },
-	{ "met",   0,   3600, "MET"                           },
-	{ "mht",   0,  43200, "Pacific/Kwajalein"             },
-	{ "mht",   0,  39600, "Pacific/Kwajalein"             },
-	{ "mht",   0,  39600, "Pacific/Majuro"                },
-	{ "mht",   0,  43200, "Pacific/Majuro"                },
-	{ "mist",  0,  39600, "Antarctica/Macquarie"          },
 	{ "mmt",   0,   9017, "Europe/Moscow"                 },
 	{ "mmt",   0,   9079, "Europe/Moscow"                 },
 	{ "mmt",   0, -13484, "America/Montevideo"            },
 	{ "mmt",   0, -20712, "America/Managua"               },
 	{ "mmt",   0,  -2588, "Africa/Monrovia"               },
+	{ "mmt",   0,  -2670, "Africa/Monrovia"               },
 	{ "mmt",   0,  17640, "Indian/Maldives"               },
 	{ "mmt",   0,  19172, "Asia/Colombo"                  },
-	{ "mmt",   0,  23400, "Asia/Rangoon"                  },
-	{ "mmt",   0,  23400, "Asia/Yangon"                   },
+	{ "mmt",   0,  19270, "Asia/Calcutta"                 },
+	{ "mmt",   0,  19270, "Asia/Kolkata"                  },
 	{ "mmt",   0,  28656, "Asia/Makassar"                 },
 	{ "mmt",   0,  28656, "Asia/Ujung_Pandang"            },
 	{ "mmt",   0,   6600, "Europe/Minsk"                  },
-	{ "most",  1,  32400, "Asia/Macao"                    },
-	{ "most",  1,  32400, "Asia/Macau"                    },
-	{ "mot",   0,  28800, "Asia/Macao"                    },
-	{ "mot",   0,  28800, "Asia/Macau"                    },
 	{ "mpt",   1, -21600, "America/Denver"                },
 	{ "mpt",   1, -21600, "America/Boise"                 },
 	{ "mpt",   1, -21600, "America/Cambridge_Bay"         },
@@ -1141,7 +786,6 @@
 	{ "mpt",   1, -21600, "America/Shiprock"              },
 	{ "mpt",   1, -21600, "America/Swift_Current"         },
 	{ "mpt",   1, -21600, "America/Yellowknife"           },
-	{ "mpt",   1, -21600, "Canada/East-Saskatchewan"      },
 	{ "mpt",   1, -21600, "Canada/Mountain"               },
 	{ "mpt",   1, -21600, "Canada/Saskatchewan"           },
 	{ "msd",   1,  14400, "Europe/Moscow"                 },
@@ -1195,16 +839,12 @@
 	{ "mst",   0, -25200, "America/Swift_Current"         },
 	{ "mst",   0, -25200, "America/Tijuana"               },
 	{ "mst",   0, -25200, "America/Yellowknife"           },
-	{ "mst",   0, -25200, "Canada/East-Saskatchewan"      },
 	{ "mst",   0, -25200, "Canada/Mountain"               },
 	{ "mst",   0, -25200, "Canada/Saskatchewan"           },
 	{ "mst",   0, -25200, "Mexico/BajaNorte"              },
 	{ "mst",   0, -25200, "Mexico/BajaSur"                },
 	{ "mst",   0, -25200, "Mexico/General"                },
 	{ "mst",   1,  12679, "Europe/Moscow"                 },
-	{ "must",  1,  18000, "Indian/Mauritius"              },
-	{ "mut",   0,  14400, "Indian/Mauritius"              },
-	{ "mvt",   0,  18000, "Indian/Maldives"               },
 	{ "mwt",   1, -21600, "America/Denver"                },
 	{ "mwt",   1, -21600, "America/Boise"                 },
 	{ "mwt",   1, -21600, "America/Cambridge_Bay"         },
@@ -1217,13 +857,8 @@
 	{ "mwt",   1, -21600, "America/Shiprock"              },
 	{ "mwt",   1, -21600, "America/Swift_Current"         },
 	{ "mwt",   1, -21600, "America/Yellowknife"           },
-	{ "mwt",   1, -21600, "Canada/East-Saskatchewan"      },
 	{ "mwt",   1, -21600, "Canada/Mountain"               },
 	{ "mwt",   1, -21600, "Canada/Saskatchewan"           },
-	{ "myt",   0,  28800, "Asia/Kuala_Lumpur"             },
-	{ "myt",   0,  28800, "Asia/Kuching"                  },
-	{ "ncst",  1,  43200, "Pacific/Noumea"                },
-	{ "nct",   0,  39600, "Pacific/Noumea"                },
 	{ "nddt",  1,  -5400, "America/St_Johns"              },
 	{ "nddt",  1,  -5400, "Canada/Newfoundland"           },
 	{ "ndt",   1,  -9052, "America/St_Johns"              },
@@ -1232,23 +867,12 @@
 	{ "ndt",   1,  -9000, "Canada/Newfoundland"           },
 	{ "ndt",   1,  -9052, "America/Goose_Bay"             },
 	{ "ndt",   1,  -9052, "Canada/Newfoundland"           },
-	{ "negt",  0, -12600, "America/Paramaribo"            },
-	{ "nest",  1,   4800, "Europe/Amsterdam"              },
-	{ "net",   0,   1200, "Europe/Amsterdam"              },
-	{ "nfst",  1,  45000, "Pacific/Norfolk"               },
-	{ "nft",   0,  41400, "Pacific/Norfolk"               },
-	{ "nft",   0,  39600, "Pacific/Norfolk"               },
-	{ "nmt",   0,  40320, "Pacific/Norfolk"               },
 	{ "npt",   1,  -9000, "America/St_Johns"              },
-	{ "npt",   0,  20700, "Asia/Katmandu"                 },
 	{ "npt",   1, -36000, "America/Adak"                  },
 	{ "npt",   1, -36000, "America/Atka"                  },
 	{ "npt",   1, -36000, "America/Nome"                  },
 	{ "npt",   1,  -9000, "America/Goose_Bay"             },
 	{ "npt",   1,  -9000, "Canada/Newfoundland"           },
-	{ "npt",   0,  20700, "Asia/Kathmandu"                },
-	{ "nrt",   0,  43200, "Pacific/Nauru"                 },
-	{ "nrt",   0,  41400, "Pacific/Nauru"                 },
 	{ "nst",   0, -12600, "America/St_Johns"              },
 	{ "nst",   0, -12652, "America/St_Johns"              },
 	{ "nst",   1,   4772, "Europe/Amsterdam"              },
@@ -1259,12 +883,6 @@
 	{ "nst",   0, -39600, "America/Adak"                  },
 	{ "nst",   0, -39600, "America/Atka"                  },
 	{ "nst",   0, -39600, "America/Nome"                  },
-	{ "nst",   0, -39600, "Pacific/Midway"                },
-	{ "nst",   0, -39600, "Pacific/Pago_Pago"             },
-	{ "nst",   0, -39600, "Pacific/Samoa"                 },
-	{ "nut",   0, -39600, "Pacific/Niue"                  },
-	{ "nut",   0, -40800, "Pacific/Niue"                  },
-	{ "nut",   0, -41400, "Pacific/Niue"                  },
 	{ "nwt",   1,  -9000, "America/St_Johns"              },
 	{ "nwt",   1, -36000, "America/Adak"                  },
 	{ "nwt",   1, -36000, "America/Atka"                  },
@@ -1308,22 +926,12 @@
 	{ "pdt",   1, -25200, "Canada/Pacific"                },
 	{ "pdt",   1, -25200, "Canada/Yukon"                  },
 	{ "pdt",   1, -25200, "Mexico/BajaNorte"              },
-	{ "pest",  1, -14400, "America/Lima"                  },
-	{ "pet",   0, -18000, "America/Lima"                  },
-	{ "pgt",   0,  36000, "Pacific/Bougainville"          },
-	{ "pgt",   0,  36000, "Pacific/Port_Moresby"          },
-	{ "phot",  0,  46800, "Pacific/Enderbury"             },
-	{ "phot",  0, -39600, "Pacific/Enderbury"             },
-	{ "phot",  0, -43200, "Pacific/Enderbury"             },
-	{ "phst",  1,  32400, "Asia/Manila"                   },
-	{ "pht",   0,  28800, "Asia/Manila"                   },
 	{ "pkst",  1,  21600, "Asia/Karachi"                  },
 	{ "pkt",   0,  18000, "Asia/Karachi"                  },
 	{ "plmt",  0,  25590, "Asia/Ho_Chi_Minh"              },
 	{ "plmt",  0,  25590, "Asia/Saigon"                   },
-	{ "pmdt",  1,  -7200, "America/Miquelon"              },
 	{ "pmmt",  0,  35312, "Pacific/Bougainville"          },
-	{ "pmst",  0, -10800, "America/Miquelon"              },
+	{ "pmmt",  0,  35312, "Pacific/Port_Moresby"          },
 	{ "pmt",   0, -13236, "America/Paramaribo"            },
 	{ "pmt",   0, -13252, "America/Paramaribo"            },
 	{ "pmt",   0,  13505, "Asia/Yekaterinburg"            },
@@ -1334,9 +942,6 @@
 	{ "pmt",   0,    561, "Africa/Tunis"                  },
 	{ "pmt",   0,    561, "Europe/Monaco"                 },
 	{ "pmt",   0,    561, "Europe/Paris"                  },
-	{ "pnt",   0, -30600, "Pacific/Pitcairn"              },
-	{ "pont",  0,  39600, "Pacific/Pohnpei"               },
-	{ "pont",  0,  39600, "Pacific/Ponape"                },
 	{ "ppmt",  0, -17340, "America/Port-au-Prince"        },
 	{ "ppt",   1, -25200, "America/Los_Angeles"           },
 	{ "ppt",   1, -25200, "America/Dawson_Creek"          },
@@ -1372,7 +977,6 @@
 	{ "pst",   0, -28800, "Canada/Yukon"                  },
 	{ "pst",   0, -28800, "Mexico/BajaNorte"              },
 	{ "pst",   0, -28800, "Mexico/BajaSur"                },
-	{ "pst",   0, -28800, "Pacific/Pitcairn"              },
 	{ "pwt",   1, -25200, "America/Los_Angeles"           },
 	{ "pwt",   1, -25200, "America/Dawson_Creek"          },
 	{ "pwt",   1, -25200, "America/Ensenada"              },
@@ -1385,15 +989,10 @@
 	{ "pwt",   1, -25200, "America/Vancouver"             },
 	{ "pwt",   1, -25200, "Canada/Pacific"                },
 	{ "pwt",   1, -25200, "Mexico/BajaNorte"              },
-	{ "pwt",   0,  32400, "Pacific/Palau"                 },
-	{ "pyst",  1, -10800, "America/Asuncion"              },
-	{ "pyt",   0, -14400, "America/Asuncion"              },
-	{ "pyt",   0, -10800, "America/Asuncion"              },
 	{ "qmt",   0, -18840, "America/Guayaquil"             },
-	{ "ret",   0,  14400, "Indian/Reunion"                },
 	{ "rmt",   0,   5794, "Europe/Riga"                   },
-	{ "rmt",   0,  23080, "Asia/Rangoon"                  },
-	{ "rmt",   0,  23080, "Asia/Yangon"                   },
+	{ "rmt",   0,  23087, "Asia/Rangoon"                  },
+	{ "rmt",   0,  23087, "Asia/Yangon"                   },
 	{ "rmt",   0,   2996, "Europe/Rome"                   },
 	{ "rmt",   0,   2996, "Europe/San_Marino"             },
 	{ "rmt",   0,   2996, "Europe/Vatican"                },
@@ -1408,90 +1007,31 @@
 	{ "sast",  0,   7200, "Africa/Maseru"                 },
 	{ "sast",  0,   7200, "Africa/Mbabane"                },
 	{ "sast",  0,   7200, "Africa/Windhoek"               },
-	{ "sbt",   0,  39600, "Pacific/Guadalcanal"           },
-	{ "sct",   0,  14400, "Indian/Mahe"                   },
 	{ "sdmt",  0, -16800, "America/Santo_Domingo"         },
-	{ "sdt",   1, -36000, "Pacific/Apia"                  },
 	{ "set",   0,   3614, "Europe/Stockholm"              },
-	{ "sgt",   0,  28800, "Asia/Singapore"                },
-	{ "sgt",   0,  27000, "Asia/Singapore"                },
 	{ "sjmt",  0, -20173, "America/Costa_Rica"            },
 	{ "smt",   0, -13884, "Atlantic/Stanley"              },
+	{ "smt",   0, -16966, "America/Punta_Arenas"          },
 	{ "smt",   0, -16966, "America/Santiago"              },
 	{ "smt",   0, -16966, "Chile/Continental"             },
 	{ "smt",   0,  24925, "Asia/Kuala_Lumpur"             },
 	{ "smt",   0,  24925, "Asia/Singapore"                },
 	{ "smt",   0,   8160, "Europe/Simferopol"             },
-	{ "srt",   0, -10800, "America/Paramaribo"            },
-	{ "srt",   0, -12600, "America/Paramaribo"            },
 	{ "sst",   0, -39600, "Pacific/Samoa"                 },
-	{ "sst",   0, -39600, "Pacific/Apia"                  },
 	{ "sst",   0, -39600, "Pacific/Midway"                },
 	{ "sst",   0, -39600, "Pacific/Pago_Pago"             },
-	{ "swat",  0,   5400, "Africa/Windhoek"               },
-	{ "taht",  0, -36000, "Pacific/Tahiti"                },
 	{ "tbmt",  0,  10751, "Asia/Tbilisi"                  },
-	{ "tkt",   0, -39600, "Pacific/Fakaofo"               },
-	{ "tkt",   0,  46800, "Pacific/Fakaofo"               },
-	{ "tlt",   0,  32400, "Asia/Dili"                     },
-	{ "tlt",   0,  28800, "Asia/Dili"                     },
 	{ "tmt",   0,  12344, "Asia/Tehran"                   },
 	{ "tmt",   0,   5940, "Europe/Tallinn"                },
-	{ "tost",  1,  50400, "Pacific/Tongatapu"             },
-	{ "tot",   0,  46800, "Pacific/Tongatapu"             },
-	{ "tot",   0,  44400, "Pacific/Tongatapu"             },
-	{ "tvt",   0,  43200, "Pacific/Funafuti"              },
 	{ "uct",   0,      0, "Etc/UCT"                       },
-	{ "ulast", 1,  32400, "Asia/Ulaanbaatar"              },
-	{ "ulast", 1,  32400, "Asia/Ulan_Bator"               },
-	{ "ulat",  0,  28800, "Asia/Ulaanbaatar"              },
-	{ "ulat",  0,  25200, "Asia/Ulaanbaatar"              },
-	{ "ulat",  0,  25200, "Asia/Choibalsan"               },
-	{ "ulat",  0,  25200, "Asia/Ulan_Bator"               },
-	{ "ulat",  0,  28800, "Asia/Choibalsan"               },
-	{ "ulat",  0,  28800, "Asia/Ulan_Bator"               },
 	{ "utc",   0,      0, "Etc/Universal"                 },
 	{ "utc",   0,      0, "Etc/UTC"                       },
 	{ "utc",   0,      0, "Etc/Zulu"                      },
 	{ "utc",   0,      0, "UTC"                           },
 	{ "utc",   0,      0, "UTC"                           },
-	{ "uyhst", 1,  -9000, "America/Montevideo"            },
-	{ "uyhst", 1, -10800, "America/Montevideo"            },
-	{ "uyst",  1,  -7200, "America/Montevideo"            },
-	{ "uyt",   0, -10800, "America/Montevideo"            },
-	{ "uyt",   0, -12600, "America/Montevideo"            },
-	{ "vet",   0, -16200, "America/Caracas"               },
-	{ "vet",   0, -14400, "America/Caracas"               },
-	{ "vust",  1,  43200, "Pacific/Efate"                 },
-	{ "vut",   0,  39600, "Pacific/Efate"                 },
-	{ "wakt",  0,  43200, "Pacific/Wake"                  },
-	{ "warst", 1, -10800, "America/Mendoza"               },
-	{ "warst", 1, -10800, "America/Argentina/Jujuy"       },
-	{ "warst", 1, -10800, "America/Argentina/Mendoza"     },
-	{ "warst", 1, -10800, "America/Argentina/San_Luis"    },
-	{ "warst", 1, -10800, "America/Jujuy"                 },
-	{ "wart",  0, -14400, "America/Mendoza"               },
-	{ "wart",  0, -14400, "America/Argentina/Catamarca"   },
-	{ "wart",  0, -14400, "America/Argentina/ComodRivadavia" },
-	{ "wart",  0, -14400, "America/Argentina/Cordoba"     },
-	{ "wart",  0, -14400, "America/Argentina/Jujuy"       },
-	{ "wart",  0, -14400, "America/Argentina/La_Rioja"    },
-	{ "wart",  0, -14400, "America/Argentina/Mendoza"     },
-	{ "wart",  0, -14400, "America/Argentina/Rio_Gallegos" },
-	{ "wart",  0, -14400, "America/Argentina/Salta"       },
-	{ "wart",  0, -14400, "America/Argentina/San_Juan"    },
-	{ "wart",  0, -14400, "America/Argentina/San_Luis"    },
-	{ "wart",  0, -14400, "America/Argentina/Tucuman"     },
-	{ "wart",  0, -14400, "America/Argentina/Ushuaia"     },
-	{ "wart",  0, -14400, "America/Catamarca"             },
-	{ "wart",  0, -14400, "America/Cordoba"               },
-	{ "wart",  0, -14400, "America/Jujuy"                 },
-	{ "wart",  0, -14400, "America/Rosario"               },
 	{ "wast",  1,   7200, "Africa/Windhoek"               },
 	{ "wast",  1,   7200, "Africa/Ndjamena"               },
 	{ "wat",   0,   3600, "Africa/Brazzaville"            },
-	{ "wat",   0,  -3600, "Africa/Bissau"                 },
-	{ "wat",   0,  -3600, "Africa/El_Aaiun"               },
 	{ "wat",   0,   3600, "Africa/Bangui"                 },
 	{ "wat",   0,   3600, "Africa/Douala"                 },
 	{ "wat",   0,   3600, "Africa/Kinshasa"               },
@@ -1539,29 +1079,14 @@
 	{ "wet",   0,      0, "Europe/Luxembourg"             },
 	{ "wet",   0,      0, "Europe/Madrid"                 },
 	{ "wet",   0,      0, "Europe/Monaco"                 },
-	{ "wft",   0,  43200, "Pacific/Wallis"                },
-	{ "wgst",  1,  -7200, "America/Godthab"               },
-	{ "wgst",  1,  -7200, "America/Danmarkshavn"          },
-	{ "wgt",   0, -10800, "America/Godthab"               },
-	{ "wgt",   0, -10800, "America/Danmarkshavn"          },
 	{ "wib",   0,  25200, "Asia/Jakarta"                  },
 	{ "wib",   0,  25200, "Asia/Pontianak"                },
-	{ "wib",   0,  27000, "Asia/Jakarta"                  },
-	{ "wib",   0,  27000, "Asia/Pontianak"                },
-	{ "wib",   0,  28800, "Asia/Jakarta"                  },
-	{ "wib",   0,  28800, "Asia/Pontianak"                },
-	{ "wita",  0,  28800, "Asia/Dili"                     },
 	{ "wita",  0,  28800, "Asia/Makassar"                 },
 	{ "wita",  0,  28800, "Asia/Pontianak"                },
 	{ "wita",  0,  28800, "Asia/Ujung_Pandang"            },
 	{ "wit",   0,  32400, "Asia/Jayapura"                 },
 	{ "wmt",   0,   5040, "Europe/Vilnius"                },
 	{ "wmt",   0,   5040, "Europe/Warsaw"                 },
-	{ "wsdt",  1,  50400, "Pacific/Apia"                  },
-	{ "wsst",  0, -41400, "Pacific/Apia"                  },
-	{ "wsst",  0,  46800, "Pacific/Apia"                  },
-	{ "xjt",   0,  21600, "Asia/Kashgar"                  },
-	{ "xjt",   0,  21600, "Asia/Urumqi"                   },
 	{ "yddt",  1, -25200, "America/Dawson"                },
 	{ "yddt",  1, -25200, "America/Whitehorse"            },
 	{ "yddt",  1, -25200, "Canada/Yukon"                  },
diff -pruN 7.1.8-1/ext/date/php_date.c 7.1.13-1/ext/date/php_date.c
--- 7.1.8-1/ext/date/php_date.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/date/php_date.c	2018-01-05 15:39:53.000000000 +0000
@@ -658,6 +658,7 @@ static HashTable *date_object_get_gc_tim
 
 zval *date_interval_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv);
 void date_interval_write_property(zval *object, zval *member, zval *value, void **cache_slot);
+static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot);
 static zval *date_period_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv);
 static void date_period_write_property(zval *object, zval *member, zval *value, void **cache_slot);
 
@@ -921,6 +922,7 @@ PHP_MINFO_FUNCTION(date)
 
 	php_info_print_table_start();
 	php_info_print_table_row(2, "date/time support", "enabled");
+	php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION);
 	php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version);
 	php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
 	php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
@@ -1961,6 +1963,10 @@ static void date_period_it_rewind(zend_o
 	if (iterator->object->current) {
 		timelib_time_dtor(iterator->object->current);
 	}
+	if (!iterator->object->start) {
+		zend_throw_error(NULL, "DatePeriod has not been initialized correctly");
+		return;
+	}
 	iterator->object->current = timelib_time_clone(iterator->object->start);
 	date_period_it_invalidate_current(iter);
 }
@@ -2141,7 +2147,7 @@ static void date_register_classes(void)
 	date_object_handlers_interval.read_property = date_interval_read_property;
 	date_object_handlers_interval.write_property = date_interval_write_property;
 	date_object_handlers_interval.get_properties = date_object_get_properties_interval;
-	date_object_handlers_interval.get_property_ptr_ptr = NULL;
+	date_object_handlers_interval.get_property_ptr_ptr = date_interval_get_property_ptr_ptr;
 	date_object_handlers_interval.get_gc = date_object_get_gc_interval;
 
 	INIT_CLASS_ENTRY(ce_period, "DatePeriod", date_funcs_period);
@@ -4227,6 +4233,40 @@ void date_interval_write_property(zval *
 }
 /* }}} */
 
+/* {{{ date_interval_get_property_ptr_ptr */
+static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot)
+{
+	zval tmp_member, *ret;
+
+	if (Z_TYPE_P(member) != IS_STRING) {
+		tmp_member = *member;
+		zval_copy_ctor(&tmp_member);
+		convert_to_string(&tmp_member);
+		member = &tmp_member;
+		cache_slot = NULL;
+	}
+
+	if(zend_binary_strcmp("y", sizeof("y") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("m", sizeof("m") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("d", sizeof("d") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("h", sizeof("h") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("i", sizeof("i") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("s", sizeof("s") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("days", sizeof("days") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||
+		zend_binary_strcmp("invert", sizeof("invert") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0) {
+		/* Fallback to read_property. */
+		ret = NULL;
+	} else {
+		ret = (zend_get_std_object_handlers())->get_property_ptr_ptr(object, member, type, cache_slot);
+	}
+
+	if (member == &tmp_member) {
+		zval_dtor(member);
+	}
+
+	return ret;
+}
+/* }}} */
 
 /* {{{ proto DateInterval::__construct([string interval_spec])
    Creates new DateInterval object.
diff -pruN 7.1.8-1/ext/date/tests/bug45081.phpt 7.1.13-1/ext/date/tests/bug45081.phpt
--- 7.1.8-1/ext/date/tests/bug45081.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/bug45081.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -5,7 +5,7 @@ date.timezone=Asia/Singapore
 --FILE--
 <?php
 
-print strtotime('2008-05-23 00:00:00 SGT');
+print strtotime('2008-05-23 00:00:00 +08');
 print "\n";
 print strtotime('2008-05-23 00:00:00');
 
diff -pruN 7.1.8-1/ext/date/tests/bug53437_var3.phpt 7.1.13-1/ext/date/tests/bug53437_var3.phpt
--- 7.1.8-1/ext/date/tests/bug53437_var3.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/bug53437_var3.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -40,7 +40,7 @@ object(DateInterval)#%d (16) {
   ["special_amount"]=>
   int(-1)
   ["have_weekday_relative"]=>
-  int(9)
+  int(%d)
   ["have_special_relative"]=>
   int(0)
   ["f"]=>
diff -pruN 7.1.8-1/ext/date/tests/bug75002.phpt 7.1.13-1/ext/date/tests/bug75002.phpt
--- 7.1.8-1/ext/date/tests/bug75002.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/date/tests/bug75002.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+Bug #75002 Null Pointer Dereference in timelib_time_clone
+--FILE--
+<?php
+
+class aaa extends DatePeriod {
+	public function __construct() { }
+}
+
+$start=new DateTime( '2012-08-01' );
+
+foreach (new aaa($start) as $y) {
+	$a=$key;
+}
+
+?>
+==DONE==
+--EXPECTF--	
+Fatal error: Uncaught Error: DatePeriod has not been initialized correctly in %sbug75002.php:%d
+Stack trace:
+#0 {main}
+  thrown in %sbug75002.php on line %d
diff -pruN 7.1.8-1/ext/date/tests/date_interval_prop_dim.phpt 7.1.13-1/ext/date/tests/date_interval_prop_dim.phpt
--- 7.1.8-1/ext/date/tests/date_interval_prop_dim.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/date/tests/date_interval_prop_dim.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Test DateInterval props with dimension handling
+--FILE--
+<?php
+class Z extends DateInterval{}
+$z = new Z('P2Y4DT6H8M');
+$i = 0;
+$z->prop[1]=10;
+while ($i < 1026) {
+	$z->prop[$i] = $i;
+	$i++;
+}
+?>
+==NOCRASH==
+--EXPECT--
+==NOCRASH==
diff -pruN 7.1.8-1/ext/date/tests/DateTimeZone_getLocation.phpt 7.1.13-1/ext/date/tests/DateTimeZone_getLocation.phpt
--- 7.1.8-1/ext/date/tests/DateTimeZone_getLocation.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/DateTimeZone_getLocation.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -56,12 +56,5 @@ Array
     [country_code] => %s
     [latitude] => %f
     [longitude] => %f
-    [comments] => 
-)
-Array
-(
-    [country_code] => %s
-    [latitude] => %f
-    [longitude] => %f
     [comments] => %s
 )
diff -pruN 7.1.8-1/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt 7.1.13-1/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt
--- 7.1.8-1/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -29,26 +29,17 @@ string(5) "array"
 int(%d)
 
 -- Format a sample entry --
-array(17) {
+array(12) {
   [0]=>
   array(3) {
     ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Porto_Acre"
-  }
-  [1]=>
-  array(3) {
-    ["dst"]=>
     bool(false)
     ["offset"]=>
     int(32400)
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [2]=>
+  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -57,34 +48,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [3]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(16) "America/Eirunepe"
-  }
-  [4]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Rio_Branco"
-  }
-  [5]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(11) "Brazil/Acre"
-  }
-  [6]=>
+  [2]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -93,7 +57,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [7]=>
+  [3]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -102,7 +66,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [8]=>
+  [4]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -111,7 +75,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [9]=>
+  [5]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -120,7 +84,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [10]=>
+  [6]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -129,16 +93,7 @@ array(17) {
     ["timezone_id"]=>
     string(20) "Australia/Yancowinna"
   }
-  [11]=>
-  array(3) {
-    ["dst"]=>
-    bool(false)
-    ["offset"]=>
-    int(34200)
-    ["timezone_id"]=>
-    string(13) "Asia/Jayapura"
-  }
-  [12]=>
+  [7]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -147,7 +102,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [13]=>
+  [8]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -156,7 +111,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [14]=>
+  [9]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -165,7 +120,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [15]=>
+  [10]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -174,7 +129,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [16]=>
+  [11]=>
   array(3) {
     ["dst"]=>
     bool(false)
diff -pruN 7.1.8-1/ext/date/tests/timezone_abbreviations_list_basic1.phpt 7.1.13-1/ext/date/tests/timezone_abbreviations_list_basic1.phpt
--- 7.1.8-1/ext/date/tests/timezone_abbreviations_list_basic1.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/timezone_abbreviations_list_basic1.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -26,29 +26,20 @@ var_dump( $abbr["acst"] );
 --EXPECTF--
 *** Testing timezone_abbreviations_list() : basic functionality ***
 string(5) "array"
-int(%d)
+int(142)
 
 -- Format a sample entry --
-array(17) {
+array(12) {
   [0]=>
   array(3) {
     ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Porto_Acre"
-  }
-  [1]=>
-  array(3) {
-    ["dst"]=>
     bool(false)
     ["offset"]=>
     int(32400)
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [2]=>
+  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -57,34 +48,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [3]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(16) "America/Eirunepe"
-  }
-  [4]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Rio_Branco"
-  }
-  [5]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(11) "Brazil/Acre"
-  }
-  [6]=>
+  [2]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -93,7 +57,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [7]=>
+  [3]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -102,7 +66,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [8]=>
+  [4]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -111,7 +75,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [9]=>
+  [5]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -120,7 +84,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [10]=>
+  [6]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -129,16 +93,7 @@ array(17) {
     ["timezone_id"]=>
     string(20) "Australia/Yancowinna"
   }
-  [11]=>
-  array(3) {
-    ["dst"]=>
-    bool(false)
-    ["offset"]=>
-    int(34200)
-    ["timezone_id"]=>
-    string(13) "Asia/Jayapura"
-  }
-  [12]=>
+  [7]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -147,7 +102,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [13]=>
+  [8]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -156,7 +111,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [14]=>
+  [9]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -165,7 +120,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [15]=>
+  [10]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -174,7 +129,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [16]=>
+  [11]=>
   array(3) {
     ["dst"]=>
     bool(false)
diff -pruN 7.1.8-1/ext/date/tests/timezone_name_from_abbr_basic1.phpt 7.1.13-1/ext/date/tests/timezone_name_from_abbr_basic1.phpt
--- 7.1.8-1/ext/date/tests/timezone_name_from_abbr_basic1.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/date/tests/timezone_name_from_abbr_basic1.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -24,7 +24,6 @@ var_dump( timezone_name_from_abbr("EDT")
 echo "-- Lookup with name and offset--\n"; 
 var_dump( timezone_name_from_abbr("ADT", -10800) );
 var_dump( timezone_name_from_abbr("ADT", 14400) );
-var_dump( timezone_name_from_abbr("AMST", -10800) );
 
 echo "-- Tests without valid name - uses gmtOffset and isdst to find match --\n"; 
 var_dump( timezone_name_from_abbr("", 3600, 1) );
@@ -47,8 +46,7 @@ string(13) "Europe/Berlin"
 string(16) "America/New_York"
 -- Lookup with name and offset--
 string(15) "America/Halifax"
-string(12) "Asia/Baghdad"
-string(17) "America/Boa_Vista"
+string(15) "America/Halifax"
 -- Tests without valid name - uses gmtOffset and isdst to find match --
 string(13) "Europe/London"
 string(17) "America/Sao_Paulo"
diff -pruN 7.1.8-1/ext/dom/tests/dom005.phpt 7.1.13-1/ext/dom/tests/dom005.phpt
--- 7.1.8-1/ext/dom/tests/dom005.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/dom/tests/dom005.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -5,7 +5,7 @@ Test 5: HTML Test
 --FILE--
 <?php
 $dom = new domdocument;
-$dom->loadHTMLFile(dirname(__FILE__)."/test.html");
+$dom->loadHTMLFile(dirname(__FILE__)."/test.html", LIBXML_NOBLANKS);
 print  "--- save as XML\n";
 
 print adjustDoctype($dom->saveXML());
diff -pruN 7.1.8-1/ext/enchant/enchant.c 7.1.13-1/ext/enchant/enchant.c
--- 7.1.8-1/ext/enchant/enchant.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/enchant/enchant.c	2018-01-03 02:32:29.000000000 +0000
@@ -16,7 +16,7 @@
   |         Ilia Alshanetsky <ilia@prohost.org>                          |
   +----------------------------------------------------------------------+
 
-  $Id: 77f6840161c5b8604f9815ffce7708199b620f50 $
+  $Id: 25edf66a747c8d6476917dece4657aec8f2a8b20 $
 */
 
 #ifdef HAVE_CONFIG_H
@@ -323,7 +323,6 @@ PHP_MINFO_FUNCTION(enchant)
 #elif defined(HAVE_ENCHANT_BROKER_SET_PARAM)
 	php_info_print_table_row(2, "Libenchant Version", "1.5.0 or later");
 #endif
-	php_info_print_table_row(2, "Revision", "$Id: 77f6840161c5b8604f9815ffce7708199b620f50 $");
 	php_info_print_table_end();
 
 	php_info_print_table_start();
@@ -483,6 +482,11 @@ PHP_FUNCTION(enchant_broker_get_dict_pat
 			RETURN_FALSE;
 	}
 
+	if (value == NULL) {
+		php_error_docref(NULL, E_WARNING, "dict_path not set");
+		RETURN_FALSE;
+	}
+
 	RETURN_STRING(value);
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/enchant/php_enchant.h 7.1.13-1/ext/enchant/php_enchant.h
--- 7.1.8-1/ext/enchant/php_enchant.h	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/enchant/php_enchant.h	2018-01-03 02:32:29.000000000 +0000
@@ -24,7 +24,7 @@
 extern zend_module_entry enchant_module_entry;
 #define phpext_enchant_ptr &enchant_module_entry
 
-#define PHP_ENCHANT_VERSION "1.1.0"
+#define PHP_ENCHANT_VERSION PHP_VERSION
 
 #ifdef PHP_WIN32
 #define PHP_ENCHANT_API __declspec(dllexport)
diff -pruN 7.1.8-1/ext/enchant/tests/bug53070.phpt 7.1.13-1/ext/enchant/tests/bug53070.phpt
--- 7.1.8-1/ext/enchant/tests/bug53070.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/enchant/tests/bug53070.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #53070 (enchant_broker_get_path crashes if no path is set)
+--SKIPIF--
+<?php
+if(!extension_loaded('enchant')) die('skip, enchant not loader');
+if (!is_resource(enchant_broker_init())) {die("skip, resource dont load\n");}
+?>
+--FILE--
+<?php
+$broker = enchant_broker_init();
+var_dump(enchant_broker_get_dict_path($broker, ENCHANT_MYSPELL));
+var_dump(enchant_broker_get_dict_path($broker, ENCHANT_ISPELL));
+?>
+--EXPECTF--
+
+Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
+bool(false)
+
+Warning: enchant_broker_get_dict_path(): dict_path not set in %s on line %d
+bool(false)
diff -pruN 7.1.8-1/ext/exif/php_exif.h 7.1.13-1/ext/exif/php_exif.h
--- 7.1.8-1/ext/exif/php_exif.h	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/exif/php_exif.h	2018-01-03 02:32:29.000000000 +0000
@@ -22,7 +22,7 @@
 #if HAVE_EXIF
 
 #include "php_version.h"
-#define PHP_EXIF_VERSION "1.4 $Id: 8bdc0c8f27c2c9dd1f7551f1f9fe3ab57a06a4b1 $"
+#define PHP_EXIF_VERSION PHP_VERSION
 
 extern zend_module_entry exif_module_entry;
 #define phpext_exif_ptr &exif_module_entry
diff -pruN 7.1.8-1/ext/exif/tests/exif_read_data_0.phpt 7.1.13-1/ext/exif/tests/exif_read_data_0.phpt
--- 7.1.8-1/ext/exif/tests/exif_read_data_0.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/exif/tests/exif_read_data_0.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,14 @@
+--TEST--
+Test exif_read_data on unavailable file
+--SKIPIF--
+<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
+--FILE--
+<?php
+$infile = dirname(__FILE__).'/bug73115.JPG';
+exif_read_data($infile);
+?>
+===DONE===
+--EXPECTF--
+Warning: exif_read_data(): Unable to open file in %sexif_read_data_0.php on line %d
+===DONE===
+
diff -pruN 7.1.8-1/ext/fileinfo/CREDITS 7.1.13-1/ext/fileinfo/CREDITS
--- 7.1.8-1/ext/fileinfo/CREDITS	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/fileinfo/CREDITS	2018-01-03 02:32:26.000000000 +0000
@@ -1,2 +1,2 @@
 fileinfo
-Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans
+Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski
Binary files 7.1.8-1/ext/fileinfo/tests/67647私はガラスを食べられます.mov and 7.1.13-1/ext/fileinfo/tests/67647私はガラスを食べられます.mov differ
diff -pruN 7.1.8-1/ext/fileinfo/tests/bug67647-mb.phpt 7.1.13-1/ext/fileinfo/tests/bug67647-mb.phpt
--- 7.1.8-1/ext/fileinfo/tests/bug67647-mb.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/fileinfo/tests/bug67647-mb.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -1,16 +1,38 @@
 --TEST--
 Bug #67647: Bundled libmagic 5.17 does not detect quicktime files correctly
 --SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+<?php
+	require_once(dirname(__FILE__) . '/skipif.inc');
+
+	if (ini_get("default_charset") != "UTF-8") {
+		die("skip require default_charset == UTF-8");
+	}
+?>
 --FILE--
 <?php
 
-$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . "67647私はガラスを食べられます.mov";
+$src = dirname(__FILE__) . DIRECTORY_SEPARATOR . "67647.mov";
+
+$f_base = "67647私はガラスを食べられます.mov";
+$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . $f_base;
+
+/* Streams mb path support is tested a lot elsewhere. Copy the existing file
+	therefore, avoid duplication in the repo. */
+if (!copy($src, $f) || empty(glob($f))) {
+	die("failed to copy '$src' to '$f'");
+}
 
 $fi = new finfo(FILEINFO_MIME_TYPE);
 var_dump($fi->file($f));
+
 ?>
 +++DONE+++
+--CLEAN--
+<?php
+	$f_base = "67647私はガラスを食べられます.mov";
+	$f = dirname(__FILE__) . DIRECTORY_SEPARATOR . $f_base;
+	unlink($f);
+?>
 --EXPECT--
 string(15) "video/quicktime"
 +++DONE+++
diff -pruN 7.1.8-1/ext/gd/gd.c 7.1.13-1/ext/gd/gd.c
--- 7.1.8-1/ext/gd/gd.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/gd.c	2018-01-03 02:32:29.000000000 +0000
@@ -377,6 +377,7 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO_EX(arginfo_imagewebp, 0, 0, 1)
 	ZEND_ARG_INFO(0, im)
 	ZEND_ARG_INFO(0, to)
+	ZEND_ARG_INFO(0, quality)
 ZEND_END_ARG_INFO()
 #endif
 
diff -pruN 7.1.8-1/ext/gd/libgd/gd_filter.c 7.1.13-1/ext/gd/libgd/gd_filter.c
--- 7.1.8-1/ext/gd/libgd/gd_filter.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/libgd/gd_filter.c	2018-01-03 02:32:29.000000000 +0000
@@ -53,12 +53,17 @@ int gdImageGrayScale(gdImagePtr src)
 	int new_pxl, pxl;
 	typedef int (*FuncPtr)(gdImagePtr, int, int);
 	FuncPtr f;
+	int alpha_blending;
+
 	f = GET_PIXEL_FUNCTION(src);
 
 	if (src==NULL) {
 		return 0;
 	}
 
+	alpha_blending = src->alphaBlendingFlag;
+	gdImageAlphaBlending(src, gdEffectReplace);
+
 	for (y=0; y<src->sy; ++y) {
 		for (x=0; x<src->sx; ++x) {
 			pxl = f (src, x, y);
@@ -75,6 +80,8 @@ int gdImageGrayScale(gdImagePtr src)
 			gdImageSetPixel (src, x, y, new_pxl);
 		}
 	}
+	gdImageAlphaBlending(src, alpha_blending);
+
 	return 1;
 }
 
diff -pruN 7.1.8-1/ext/gd/libgd/gd_gif_in.c 7.1.13-1/ext/gd/libgd/gd_gif_in.c
--- 7.1.8-1/ext/gd/libgd/gd_gif_in.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/libgd/gd_gif_in.c	2018-01-03 02:32:29.000000000 +0000
@@ -261,10 +261,6 @@ terminated:
 	if (!im) {
 		return 0;
 	}
-	if (!im->colorsTotal) {
-		gdImageDestroy(im);
-		return 0;
-	}
 	/* Check for open colors at the end, so
 	   we can reduce colorsTotal and ultimately
 	   BitsPerPixel */
@@ -275,6 +271,10 @@ terminated:
 			break;
 		}
 	}
+	if (!im->colorsTotal) {
+		gdImageDestroy(im);
+		return 0;
+	}
 	return im;
 }
 /* }}} */
@@ -375,7 +375,7 @@ static int
 GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
 {
 	int           i, j, ret;
-	unsigned char count;
+	int           count;
 
 	if (flag) {
 		scd->curbit = 0;
diff -pruN 7.1.8-1/ext/gd/libgd/gd_interpolation.c 7.1.13-1/ext/gd/libgd/gd_interpolation.c
--- 7.1.8-1/ext/gd/libgd/gd_interpolation.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/libgd/gd_interpolation.c	2018-01-03 02:32:29.000000000 +0000
@@ -66,6 +66,16 @@ TODO:
 # include <emmintrin.h>
 #endif
 
+#ifndef HAVE_FLOORF
+# define HAVE_FLOORF 0
+#endif
+#if HAVE_FLOORF == 0
+# ifndef floorf
+/* float floorf(float x);*/
+#  define floorf(x) ((float)(floor(x)))
+# endif
+#endif
+
 #ifndef MIN
 #define MIN(a,b) ((a)<(b)?(a):(b))
 #endif
@@ -1709,13 +1719,28 @@ gdImagePtr gdImageScale(const gdImagePtr
 	return im_scaled;
 }
 
+static int gdRotatedImageSize(gdImagePtr src, const float angle, gdRectPtr bbox)
+{
+    gdRect src_area;
+    double m[6];
+
+    gdAffineRotate(m, angle);
+    src_area.x = 0;
+    src_area.y = 0;
+    src_area.width = gdImageSX(src);
+    src_area.height = gdImageSY(src);
+    if (gdTransformAffineBoundingBox(&src_area, m, bbox) != GD_TRUE) {
+        return GD_FALSE;
+    }
+
+    return GD_TRUE;
+}
+
 gdImagePtr gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees, const int bgColor)
 {
 	float _angle = ((float) (-degrees / 180.0f) * (float)M_PI);
 	const int src_w  = gdImageSX(src);
 	const int src_h = gdImageSY(src);
-	const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
-	const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
 	const gdFixed f_0_5 = gd_ftofx(0.5f);
 	const gdFixed f_H = gd_itofx(src_h/2);
 	const gdFixed f_W = gd_itofx(src_w/2);
@@ -1726,6 +1751,12 @@ gdImagePtr gdImageRotateNearestNeighbour
 	unsigned int dst_offset_y = 0;
 	unsigned int i;
 	gdImagePtr dst;
+	gdRect bbox;
+	int new_height, new_width;
+
+    gdRotatedImageSize(src, degrees, &bbox);
+    new_width = bbox.width;
+    new_height = bbox.height;
 
 	if (new_width == 0 || new_height == 0) {
 		return NULL;
@@ -1768,8 +1799,6 @@ gdImagePtr gdImageRotateGeneric(gdImageP
 	const int angle_rounded = (int)floor(degrees * 100);
 	const int src_w  = gdImageSX(src);
 	const int src_h = gdImageSY(src);
-	const unsigned int new_width = (unsigned int)(abs((int)(src_w * cos(_angle))) + abs((int)(src_h * sin(_angle))) + 0.5f);
-	const unsigned int new_height = (unsigned int)(abs((int)(src_w * sin(_angle))) + abs((int)(src_h * cos(_angle))) + 0.5f);
 	const gdFixed f_0_5 = gd_ftofx(0.5f);
 	const gdFixed f_H = gd_itofx(src_h/2);
 	const gdFixed f_W = gd_itofx(src_w/2);
@@ -1780,11 +1809,13 @@ gdImagePtr gdImageRotateGeneric(gdImageP
 	unsigned int dst_offset_y = 0;
 	unsigned int i;
 	gdImagePtr dst;
+	int new_width, new_height;
+	gdRect bbox;
 
 	const gdFixed f_slop_y = f_sin;
 	const gdFixed f_slop_x = f_cos;
-	const gdFixed f_slop = f_slop_x > 0 && f_slop_x > 0 ?
-							f_slop_x > f_slop_y ? gd_divfx(f_slop_y, f_slop_x) : gd_divfx(f_slop_x, f_slop_y)
+	const gdFixed f_slop = f_slop_x > 0 && f_slop_y > 0 ?
+							(f_slop_x > f_slop_y ? gd_divfx(f_slop_y, f_slop_x) : gd_divfx(f_slop_x, f_slop_y))
 						: 0;
 
 
@@ -1792,6 +1823,10 @@ gdImagePtr gdImageRotateGeneric(gdImageP
 		return NULL;
 	}
 
+    gdRotatedImageSize(src, degrees, &bbox);
+    new_width = bbox.width;
+    new_height = bbox.height;
+
 	dst = gdImageCreateTrueColor(new_width, new_height);
 	if (!dst) {
 		return NULL;
@@ -1831,8 +1866,7 @@ gdImagePtr gdImageRotateBilinear(gdImage
 	float _angle = (float)((- degrees / 180.0f) * M_PI);
 	const unsigned int src_w = gdImageSX(src);
 	const unsigned int src_h = gdImageSY(src);
-	unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
-	unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
+	unsigned int new_width, new_height;
 	const gdFixed f_0_5 = gd_ftofx(0.5f);
 	const gdFixed f_H = gd_itofx(src_h/2);
 	const gdFixed f_W = gd_itofx(src_w/2);
@@ -1844,6 +1878,12 @@ gdImagePtr gdImageRotateBilinear(gdImage
 	unsigned int dst_offset_y = 0;
 	unsigned int src_offset_x, src_offset_y;
 	gdImagePtr dst;
+	gdRect bbox;
+
+	gdRotatedImageSize(src, degrees, &bbox);
+
+	new_width = bbox.width;
+	new_height = bbox.height;
 
 	dst = gdImageCreateTrueColor(new_width, new_height);
 	if (dst == NULL) {
@@ -1863,7 +1903,7 @@ gdImagePtr gdImageRotateBilinear(gdImage
 			const unsigned int m = gd_fxtoi(f_m);
 			const unsigned int n = gd_fxtoi(f_n);
 
-			if ((m > 0) && (m < src_h - 1) && (n > 0) && (n < src_w - 1)) {
+			if ((m >= 0) && (m < src_h - 1) && (n >= 0) && (n < src_w - 1)) {
 				const gdFixed f_f = f_m - gd_itofx(m);
 				const gdFixed f_g = f_n - gd_itofx(n);
 				const gdFixed f_w1 = gd_mulfx(f_1-f_f, f_1-f_g);
@@ -1871,11 +1911,6 @@ gdImagePtr gdImageRotateBilinear(gdImage
 				const gdFixed f_w3 = gd_mulfx(f_f, f_1-f_g);
 				const gdFixed f_w4 = gd_mulfx(f_f, f_g);
 
-				if (n < src_w - 1) {
-					src_offset_x = n + 1;
-					src_offset_y = m;
-				}
-
 				if (m < src_h-1) {
 					src_offset_x = n;
 					src_offset_y = m + 1;
@@ -1890,13 +1925,13 @@ gdImagePtr gdImageRotateBilinear(gdImage
 					register int pixel2, pixel3, pixel4;
 
 					if (src_offset_y + 1 >= src_h) {
-						pixel2 = bgColor;
-						pixel3 = bgColor;
-						pixel4 = bgColor;
+						pixel2 = pixel1;
+						pixel3 = pixel1;
+						pixel4 = pixel1;
 					} else if (src_offset_x + 1 >= src_w) {
-						pixel2 = bgColor;
-						pixel3 = bgColor;
-						pixel4 = bgColor;
+						pixel2 = pixel1;
+						pixel3 = pixel1;
+						pixel4 = pixel1;
 					} else {
 					    pixel2 = src->tpixels[src_offset_y][src_offset_x + 1];
 						pixel3 = src->tpixels[src_offset_y + 1][src_offset_x];
@@ -1946,8 +1981,7 @@ gdImagePtr gdImageRotateBicubicFixed(gdI
 	const float _angle = (float)((- degrees / 180.0f) * M_PI);
 	const int src_w = gdImageSX(src);
 	const int src_h = gdImageSY(src);
-	const unsigned int new_width = abs((int)(src_w*cos(_angle))) + abs((int)(src_h*sin(_angle) + 0.5f));
-	const unsigned int new_height = abs((int)(src_w*sin(_angle))) + abs((int)(src_h*cos(_angle) + 0.5f));
+	unsigned int new_width, new_height;
 	const gdFixed f_0_5 = gd_ftofx(0.5f);
 	const gdFixed f_H = gd_itofx(src_h/2);
 	const gdFixed f_W = gd_itofx(src_w/2);
@@ -1963,7 +1997,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdI
 	unsigned int dst_offset_y = 0;
 	unsigned int i;
 	gdImagePtr dst;
+	gdRect bbox;
 
+	gdRotatedImageSize(src, degrees, &bbox);
+	new_width = bbox.width;
+	new_height = bbox.height;
 	dst = gdImageCreateTrueColor(new_width, new_height);
 
 	if (dst == NULL) {
@@ -2206,8 +2244,11 @@ gdImagePtr gdImageRotateBicubicFixed(gdI
 
 gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor)
 {
-	const int angle_rounded = (int)floor(angle * 100);
-
+	/* round to two decimals and keep the 100x multiplication to use it in the common square angles 
+	   case later. Keep the two decimal precisions so smaller rotation steps can be done, useful for
+	   slow animations, f.e. */
+	const int angle_rounded = fmod((int) floorf(angle * 100), 360 * 100);
+	   
 	if (bgcolor < 0) {
 		return NULL;
 	}
@@ -2224,6 +2265,18 @@ gdImagePtr gdImageRotateInterpolated(con
 
 	/* no interpolation needed here */
 	switch (angle_rounded) {
+		case    0: {
+			gdImagePtr dst = gdImageCreateTrueColor(src->sx, src->sy);
+			if (dst == NULL) {
+				return NULL;
+			}
+			dst->transparent = src->transparent;
+			dst->saveAlphaFlag = 1;
+			dst->alphaBlendingFlag = gdEffectReplace;
+
+			gdImageCopy(dst, src, 0,0,0,0,src->sx,src->sy);
+			return dst;
+		}
 		case -27000:
 		case   9000:
 			return gdImageRotate90(src, 0);
diff -pruN 7.1.8-1/ext/gd/libgd/wbmp.c 7.1.13-1/ext/gd/libgd/wbmp.c
--- 7.1.8-1/ext/gd/libgd/wbmp.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/libgd/wbmp.c	2018-01-03 02:32:29.000000000 +0000
@@ -164,7 +164,10 @@ readwbmp (int (*getin) (void *in), void
     }
 
   if (skipheader (getin, in))
-    return (-1);
+    {
+      gdFree (wbmp);
+      return (-1);
+    }
 
 
   wbmp->width = getmbi (getin, in);
Binary files 7.1.8-1/ext/gd/tests/bug39780.png and 7.1.13-1/ext/gd/tests/bug39780.png differ
diff -pruN 7.1.8-1/ext/gd/tests/bug65148.phpt 7.1.13-1/ext/gd/tests/bug65148.phpt
--- 7.1.8-1/ext/gd/tests/bug65148.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/gd/tests/bug65148.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,179 @@
+--TEST--
+Bug #65148 (imagerotate may alter image dimensions)
+--SKIPIF--
+<?php
+if (!extension_loaded('gd')) die('skip gd extension is not available');
+?>
+--FILE--
+<?php
+
+$interpolations = array(
+    'IMG_BELL' => IMG_BELL,
+    'IMG_BESSEL' => IMG_BESSEL,
+    'IMG_BICUBIC' => IMG_BICUBIC,
+    'IMG_BICUBIC_FIXED' => IMG_BICUBIC_FIXED,
+    'IMG_BILINEAR_FIXED' => IMG_BILINEAR_FIXED,
+    'IMG_BLACKMAN' => IMG_BLACKMAN,
+    'IMG_BOX' => IMG_BOX,
+    'IMG_BSPLINE' => IMG_BSPLINE,
+    'IMG_CATMULLROM' => IMG_CATMULLROM,
+    'IMG_GAUSSIAN' => IMG_GAUSSIAN,
+    'IMG_GENERALIZED_CUBIC' => IMG_GENERALIZED_CUBIC,
+    'IMG_HERMITE' => IMG_HERMITE,
+    'IMG_HAMMING' => IMG_HAMMING,
+    'IMG_HANNING' => IMG_HANNING,
+    'IMG_MITCHELL' => IMG_MITCHELL,
+    'IMG_POWER' => IMG_POWER,
+    'IMG_QUADRATIC' => IMG_QUADRATIC,
+    'IMG_SINC' => IMG_SINC,
+    'IMG_NEAREST_NEIGHBOUR' => IMG_NEAREST_NEIGHBOUR,
+    'IMG_WEIGHTED4' => IMG_WEIGHTED4,
+    'IMG_TRIANGLE' => IMG_TRIANGLE,
+);
+
+$img = imagecreate(40, 20);
+$results = array();
+
+foreach ($interpolations as $name => $interpolation) {
+  imagesetinterpolation($img, $interpolation);
+  $t = imagecolorallocatealpha($img, 0, 0, 0, 127);
+  $imgr = imagerotate($img, -5, $t);
+  $results[$name] = array('x' => imagesx($imgr), 'y' => imagesy($imgr));
+  imagedestroy($imgr);
+}
+
+imagedestroy($img);
+print_r($results);
+?>
+===DONE===
+--EXPECT--
+Array
+(
+    [IMG_BELL] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BESSEL] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BICUBIC] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BICUBIC_FIXED] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BILINEAR_FIXED] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BLACKMAN] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BOX] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_BSPLINE] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_CATMULLROM] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_GAUSSIAN] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_GENERALIZED_CUBIC] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_HERMITE] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_HAMMING] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_HANNING] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_MITCHELL] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_POWER] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_QUADRATIC] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_SINC] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_NEAREST_NEIGHBOUR] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_WEIGHTED4] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+    [IMG_TRIANGLE] => Array
+        (
+            [x] => 40
+            [y] => 23
+        )
+
+)
+===DONE===
Binary files 7.1.8-1/ext/gd/tests/bug73272.png and 7.1.13-1/ext/gd/tests/bug73272.png differ
diff -pruN 7.1.8-1/ext/gd/tests/bug74031.phpt 7.1.13-1/ext/gd/tests/bug74031.phpt
--- 7.1.8-1/ext/gd/tests/bug74031.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/gd/tests/bug74031.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -1,5 +1,9 @@
 --TEST--
 (Bug #74031) ReflectionFunction for imagepng returns wrong number of parameters
+--SKIPIF--
+<?php
+if (!extension_loaded('gd')) die("skip gd extension not available\n");
+?>
 --FILE--
 <?php
 
diff -pruN 7.1.8-1/ext/gd/tests/bug75124.phpt 7.1.13-1/ext/gd/tests/bug75124.phpt
--- 7.1.8-1/ext/gd/tests/bug75124.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/gd/tests/bug75124.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,31 @@
+--TEST--
+Bug #75124 (gdImageGrayScale() may produce colors)
+--SKIPIF--
+<?php
+if (!extension_loaded('gd')) die('gd extension not available');
+if (!GD_BUNDLED && version_compare(GD_VERSION, '2.2.5', '<')) {
+    die('skip only for bundled libgd or external libgd >= 2.2.5');
+}
+?>
+--FILE--
+<?php
+$im = imagecreatefrompng(__DIR__ . '/bug75124.png');
+var_dump(imageistruecolor($im));
+imagefilter($im, IMG_FILTER_GRAYSCALE);
+for ($i = 0, $width = imagesx($im); $i < $width; $i ++) {
+    for ($j = 0, $height = imagesy($im); $j < $height; $j++) {
+        $color = imagecolorat($im, $i, $j);
+        $red = ($color >> 16) & 0xff;
+        $green = ($color >> 8) & 0xff;
+        $blue = $color & 0xff;
+        if ($red != $green || $green != $blue) {
+            echo "non grayscale pixel detected\n";
+            break 2;
+        }
+    }
+}
+?>
+===DONE===
+--EXPECT--
+bool(true)
+===DONE===
Binary files 7.1.8-1/ext/gd/tests/bug75124.png and 7.1.13-1/ext/gd/tests/bug75124.png differ
diff -pruN 7.1.8-1/ext/gd/tests/bug75437.phpt 7.1.13-1/ext/gd/tests/bug75437.phpt
--- 7.1.8-1/ext/gd/tests/bug75437.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/gd/tests/bug75437.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #75437 Wrong reflection on imagewebp
+--SKIPIF--
+<?php
+if (!extension_loaded('reflection')) die('skip reflection not available');
+if (!extension_loaded('gd')) die('skip gd extension not available');
+if (!GD_BUNDLED && version_compare(GD_VERSION, '2.2.0', '<')) die("skip test requires GD 2.2.0 or higher");
+if (!function_exists('imagewebp')) die('skip WebP support not available');
+?>
+--FILE--
+<?php
+$rf = new ReflectionFunction('imagewebp');
+var_dump($rf->getNumberOfParameters());
+var_dump($rf->getNumberOfRequiredParameters());
+?>
+===DONE===
+--EXPECT--
+int(3)
+int(1)
+===DONE===
Binary files 7.1.8-1/ext/gd/tests/bug75571.gif and 7.1.13-1/ext/gd/tests/bug75571.gif differ
diff -pruN 7.1.8-1/ext/gd/tests/bug75571.phpt 7.1.13-1/ext/gd/tests/bug75571.phpt
--- 7.1.8-1/ext/gd/tests/bug75571.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/gd/tests/bug75571.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,15 @@
+--TEST--
+Bug #75571 (Infinite loop in GIF reading causing DoS)
+--SKIPIF--
+<?php
+if (!extension_loaded('gd')) die('skip gd extension not available');
+?>
+--FILE--
+<?php
+var_dump(imagecreatefromgif(__DIR__ . '/bug75571.gif'));
+?>
+===DONE===
+--EXPECTF--
+Warning: imagecreatefromgif(): '%s' is not a valid GIF file in %s on line %d
+bool(false)
+===DONE===
diff -pruN 7.1.8-1/ext/gettext/gettext.c 7.1.13-1/ext/gettext/gettext.c
--- 7.1.8-1/ext/gettext/gettext.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/gettext/gettext.c	2018-01-03 02:32:23.000000000 +0000
@@ -161,16 +161,16 @@ PHP_MINFO_FUNCTION(php_gettext)
    Set the textdomain to "domain". Returns the current domain */
 PHP_NAMED_FUNCTION(zif_textdomain)
 {
-	char *domain, *domain_name, *retval;
-	size_t domain_len;
+	char *domain = NULL, *domain_name, *retval;
+	size_t domain_len = 0;
 
-	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &domain, &domain_len) == FAILURE) {
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s!", &domain, &domain_len) == FAILURE) {
 		return;
 	}
 
 	PHP_GETTEXT_DOMAIN_LENGTH_CHECK
 
-	if (strcmp(domain, "") && strcmp(domain, "0")) {
+	if (domain != NULL && strcmp(domain, "") && strcmp(domain, "0")) {
 		domain_name = domain;
 	} else {
 		domain_name = NULL;
diff -pruN 7.1.8-1/ext/gettext/tests/bug73730.phpt 7.1.13-1/ext/gettext/tests/bug73730.phpt
--- 7.1.8-1/ext/gettext/tests/bug73730.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/gettext/tests/bug73730.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #73730 (textdomain(null) throws in strict mode)
+--SKIPIF--
+<?php
+if (!extension_loaded('gettext')) die('skip gettext extension is not available');
+?>
+--FILE--
+<?php
+declare(strict_types=1);
+
+var_dump(textdomain(null));
+?>
+===DONE===
+--EXPECT--
+string(8) "messages"
+===DONE===
diff -pruN 7.1.8-1/ext/hash/hash_sha3.c 7.1.13-1/ext/hash/hash_sha3.c
--- 7.1.8-1/ext/hash/hash_sha3.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/hash/hash_sha3.c	2018-01-03 02:32:27.000000000 +0000
@@ -39,7 +39,7 @@ static inline unsigned char idx(unsigned
 
 #ifdef WORDS_BIGENDIAN
 static inline uint64_t load64(const unsigned char* x) {
-	char i;
+	signed char i;
 	uint64_t ret = 0;
 	for (i = 7; i >= 0; --i) {
 		ret <<= 8;
diff -pruN 7.1.8-1/ext/interbase/interbase.c 7.1.13-1/ext/interbase/interbase.c
--- 7.1.8-1/ext/interbase/interbase.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/interbase/interbase.c	2018-01-05 15:39:53.000000000 +0000
@@ -52,7 +52,7 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO(arginfo_ibase_errcode, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 0)
 	ZEND_ARG_INFO(0, database)
 	ZEND_ARG_INFO(0, username)
 	ZEND_ARG_INFO(0, password)
@@ -62,7 +62,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_con
 	ZEND_ARG_INFO(0, role)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 0)
 	ZEND_ARG_INFO(0, database)
 	ZEND_ARG_INFO(0, username)
 	ZEND_ARG_INFO(0, password)
@@ -1029,7 +1029,7 @@ static void _php_ibase_connect(INTERNAL_
 }
 /* }}} */
 
-/* {{{ proto resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
+/* {{{ proto resource ibase_connect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
    Open a connection to an InterBase database */
 PHP_FUNCTION(ibase_connect)
 {
@@ -1037,7 +1037,7 @@ PHP_FUNCTION(ibase_connect)
 }
 /* }}} */
 
-/* {{{ proto resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
+/* {{{ proto resource ibase_pconnect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
    Open a persistent connection to an InterBase database */
 PHP_FUNCTION(ibase_pconnect)
 {
diff -pruN 7.1.8-1/ext/intl/calendar/calendar_class.cpp 7.1.13-1/ext/intl/calendar/calendar_class.cpp
--- 7.1.8-1/ext/intl/calendar/calendar_class.cpp	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/calendar/calendar_class.cpp	2018-01-03 02:32:26.000000000 +0000
@@ -469,17 +469,6 @@ void calendar_register_IntlCalendar_clas
 	Calendar_handlers.get_debug_info = Calendar_get_debug_info;
 	Calendar_handlers.free_obj = Calendar_objects_free;
 
-	/* Create and register 'IntlGregorianCalendar' class. */
-	INIT_CLASS_ENTRY(ce, "IntlGregorianCalendar", GregorianCalendar_class_functions);
-	GregorianCalendar_ce_ptr = zend_register_internal_class_ex(&ce,
-		Calendar_ce_ptr);
-	if (!GregorianCalendar_ce_ptr) {
-		//can't happen know without bigger problems before
-		php_error_docref0(NULL, E_ERROR,
-			"IntlGregorianCalendar: class registration has failed.");
-		return;
-	}
-
 	/* Declare 'IntlCalendar' class constants */
 #define CALENDAR_DECL_LONG_CONST(name, val) \
 	zend_declare_class_constant_long(Calendar_ce_ptr, name, sizeof(name) - 1, \
@@ -531,5 +520,16 @@ void calendar_register_IntlCalendar_clas
 	CALENDAR_DECL_LONG_CONST("WALLTIME_LAST",				UCAL_WALLTIME_LAST);
 	CALENDAR_DECL_LONG_CONST("WALLTIME_NEXT_VALID",			UCAL_WALLTIME_NEXT_VALID);
 #endif
+
+	/* Create and register 'IntlGregorianCalendar' class. */
+	INIT_CLASS_ENTRY(ce, "IntlGregorianCalendar", GregorianCalendar_class_functions);
+	GregorianCalendar_ce_ptr = zend_register_internal_class_ex(&ce,
+		Calendar_ce_ptr);
+	if (!GregorianCalendar_ce_ptr) {
+		//can't happen know without bigger problems before
+		php_error_docref0(NULL, E_ERROR,
+			"IntlGregorianCalendar: class registration has failed.");
+		return;
+	}
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/intl/collator/collator_sort.c 7.1.13-1/ext/intl/collator/collator_sort.c
--- 7.1.8-1/ext/intl/collator/collator_sort.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/collator/collator_sort.c	2018-01-03 02:32:26.000000000 +0000
@@ -59,8 +59,12 @@ static int collator_regular_compare_func
 	zval norm1, norm2;
 	zval *num1_p = NULL, *num2_p = NULL;
 	zval *norm1_p = NULL, *norm2_p = NULL;
-	zval* str1_p  = collator_convert_object_to_string( op1, &str1 );
-	zval* str2_p  = collator_convert_object_to_string( op2, &str2 );
+	zval *str1_p, *str2_p;
+
+	ZVAL_NULL(&str1);
+	str1_p  = collator_convert_object_to_string( op1, &str1 );
+	ZVAL_NULL(&str2);
+	str2_p  = collator_convert_object_to_string( op2, &str2 );
 
 	/* If both args are strings AND either of args is not numeric string
 	 * then use ICU-compare. Otherwise PHP-compare. */
diff -pruN 7.1.8-1/ext/intl/converter/converter.c 7.1.13-1/ext/intl/converter/converter.c
--- 7.1.8-1/ext/intl/converter/converter.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/converter/converter.c	2018-01-03 02:32:26.000000000 +0000
@@ -411,7 +411,7 @@ static zend_bool php_converter_set_encod
 ZEND_BEGIN_ARG_INFO_EX(php_converter_set_encoding_arginfo, 0, ZEND_RETURN_VALUE, 1)
 	ZEND_ARG_INFO(0, encoding)
 ZEND_END_ARG_INFO();
-static void php_converter_do_set_encoding(UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
+static void php_converter_do_set_encoding(UConverter **pcnv, INTERNAL_FUNCTION_PARAMETERS) {
 	php_converter_object *objval = CONV_GET(getThis());
 	char *enc;
 	size_t enc_len;
@@ -423,21 +423,21 @@ static void php_converter_do_set_encodin
 	}
 	intl_errors_reset(&objval->error);
 
-	RETURN_BOOL(php_converter_set_encoding(objval, &(objval->src), enc, enc_len));
+	RETURN_BOOL(php_converter_set_encoding(objval, pcnv, enc, enc_len));
 }
 /* }}} */
 
 /* {{{ proto bool UConverter::setSourceEncoding(string encoding) */
 static PHP_METHOD(UConverter, setSourceEncoding) {
 	php_converter_object *objval = CONV_GET(getThis());
-	php_converter_do_set_encoding(objval->src, INTERNAL_FUNCTION_PARAM_PASSTHRU);
+	php_converter_do_set_encoding(&(objval->src), INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }
 /* }}} */
 
 /* {{{ proto bool UConverter::setDestinationEncoding(string encoding) */
 static PHP_METHOD(UConverter, setDestinationEncoding) {
 	php_converter_object *objval = CONV_GET(getThis());
-	php_converter_do_set_encoding(objval->dest, INTERNAL_FUNCTION_PARAM_PASSTHRU);
+	php_converter_do_set_encoding(&(objval->dest), INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }
 /* }}} */
 
@@ -897,7 +897,7 @@ static PHP_METHOD(UConverter, getAvailab
 /* }}} */
 
 /* {{{ proto array UConverter::getAliases(string name) */
-ZEND_BEGIN_ARG_INFO_EX(php_converter_getaliases_arginfo, 0, ZEND_RETURN_VALUE, 0)
+ZEND_BEGIN_ARG_INFO_EX(php_converter_getaliases_arginfo, 0, ZEND_RETURN_VALUE, 1)
 	ZEND_ARG_INFO(0, name)
 ZEND_END_ARG_INFO();
 static PHP_METHOD(UConverter, getAliases) {
diff -pruN 7.1.8-1/ext/intl/php_intl.c 7.1.13-1/ext/intl/php_intl.c
--- 7.1.8-1/ext/intl/php_intl.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/php_intl.c	2018-01-03 02:32:26.000000000 +0000
@@ -173,29 +173,29 @@ ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_curr
 	ZEND_ARG_INFO(1, position)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(locale_0_args, 0, 0, 0)
+ZEND_BEGIN_ARG_INFO_EX( locale_get_loc_in_loc_args, 0, ZEND_RETURN_VALUE, 1 )
+	ZEND_ARG_INFO(0, locale)
+	ZEND_ARG_INFO(0, in_locale)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(locale_1_arg, 0, 0, 1)
-	ZEND_ARG_INFO(0, arg1)
+ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, ZEND_RETURN_VALUE, 2 )
+	ZEND_ARG_INFO(0, langtag)
+	ZEND_ARG_INFO(0, locale)
+	ZEND_ARG_INFO(0, canonicalize)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(locale_2_args, 0, 0, 2)
-	ZEND_ARG_INFO(0, arg1)
-	ZEND_ARG_INFO(0, arg2)
+ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, ZEND_RETURN_VALUE, 2 )
+	ZEND_ARG_INFO(0, langtag)
+	ZEND_ARG_INFO(0, locale)
+	ZEND_ARG_INFO(0, canonicalize)
+	ZEND_ARG_INFO(0, def)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(locale_3_args, 0, 0, 3)
-	ZEND_ARG_INFO(0, arg1)
-	ZEND_ARG_INFO(0, arg2)
-	ZEND_ARG_INFO(0, arg3)
+ZEND_BEGIN_ARG_INFO_EX(locale_0_args, 0, 0, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(locale_4_args, 0, 0, 4)
+ZEND_BEGIN_ARG_INFO_EX(locale_1_arg, 0, 0, 1)
 	ZEND_ARG_INFO(0, arg1)
-	ZEND_ARG_INFO(0, arg2)
-	ZEND_ARG_INFO(0, arg3)
-	ZEND_ARG_INFO(0, arg4)
 ZEND_END_ARG_INFO()
 
 #define intl_0_args collator_static_0_args
@@ -670,17 +670,17 @@ zend_function_entry intl_functions[] = {
 	PHP_FE( locale_get_script, locale_1_arg )
 	PHP_FE( locale_get_region, locale_1_arg )
 	PHP_FE( locale_get_keywords, locale_1_arg )
-	PHP_FE( locale_get_display_script, locale_2_args )
-	PHP_FE( locale_get_display_region, locale_2_args )
-	PHP_FE( locale_get_display_name, locale_2_args )
-	PHP_FE( locale_get_display_language, locale_2_args)
-	PHP_FE( locale_get_display_variant, locale_2_args )
+	PHP_FE( locale_get_display_script, locale_get_loc_in_loc_args )
+	PHP_FE( locale_get_display_region, locale_get_loc_in_loc_args )
+	PHP_FE( locale_get_display_name, locale_get_loc_in_loc_args )
+	PHP_FE( locale_get_display_language, locale_get_loc_in_loc_args)
+	PHP_FE( locale_get_display_variant, locale_get_loc_in_loc_args )
 	PHP_FE( locale_compose, locale_1_arg )
 	PHP_FE( locale_parse, locale_1_arg )
 	PHP_FE( locale_get_all_variants, locale_1_arg )
-	PHP_FE( locale_filter_matches, locale_3_args )
+	PHP_FE( locale_filter_matches, locale_filter_matches_args )
 	PHP_FE( locale_canonicalize, locale_1_arg )
-	PHP_FE( locale_lookup, locale_4_args )
+	PHP_FE( locale_lookup, locale_lookup_args )
 	PHP_FE( locale_accept_from_http, locale_1_arg )
 
 	/* MessageFormatter functions */
diff -pruN 7.1.8-1/ext/intl/spoofchecker/spoofchecker_class.h 7.1.13-1/ext/intl/spoofchecker/spoofchecker_class.h
--- 7.1.8-1/ext/intl/spoofchecker/spoofchecker_class.h	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/spoofchecker/spoofchecker_class.h	2018-01-03 02:32:26.000000000 +0000
@@ -78,4 +78,8 @@ extern zend_class_entry *Spoofchecker_ce
         RETURN_FALSE;                                                           \
     }                                                                           \
 
+#if U_ICU_VERSION_MAJOR_NUM >= 58
+#define SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL USPOOF_HIGHLY_RESTRICTIVE
+#endif
+
 #endif // #ifndef SPOOFCHECKER_CLASS_H
diff -pruN 7.1.8-1/ext/intl/spoofchecker/spoofchecker_create.c 7.1.13-1/ext/intl/spoofchecker/spoofchecker_create.c
--- 7.1.8-1/ext/intl/spoofchecker/spoofchecker_create.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/spoofchecker/spoofchecker_create.c	2018-01-03 02:32:26.000000000 +0000
@@ -43,12 +43,23 @@ PHP_METHOD(Spoofchecker, __construct)
 	co->uspoof = uspoof_open(SPOOFCHECKER_ERROR_CODE_P(co));
 	INTL_METHOD_CHECK_STATUS(co, "spoofchecker: unable to open ICU Spoof Checker");
 
+#if U_ICU_VERSION_MAJOR_NUM >= 58
+	/* TODO save it into the object for further suspiction check comparison. */
+	/* ICU 58 removes WSC and MSC handling. However there are restriction
+	 levels as defined in
+	 http://www.unicode.org/reports/tr39/tr39-15.html#Restriction_Level_Detection
+	 and the default is high restrictive. In further, we might want to utilize
+	 uspoof_check2 APIs when it became stable, to use extended check result APIs.
+	 Subsequent changes in the unicode security algos are to be watched.*/
+	uspoof_setRestrictionLevel(co->uspoof, SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL);
+#else
 	/* Single-script enforcement is on by default. This fails for languages
 	 like Japanese that legally use multiple scripts within a single word,
 	 so we turn it off.
 	*/
 	checks = uspoof_getChecks(co->uspoof, SPOOFCHECKER_ERROR_CODE_P(co));
 	uspoof_setChecks(co->uspoof, checks & ~USPOOF_SINGLE_SCRIPT, SPOOFCHECKER_ERROR_CODE_P(co));
+#endif
 	zend_restore_error_handling(&error_handling);
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/intl/tests/breakiter_getPartsIterator_basic2.phpt 7.1.13-1/ext/intl/tests/breakiter_getPartsIterator_basic2.phpt
--- 7.1.8-1/ext/intl/tests/breakiter_getPartsIterator_basic2.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/breakiter_getPartsIterator_basic2.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,39 @@
+--TEST--
+IntlBreakIterator::getPartsIterator(): basic test, ICU >= 58.1
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+	die('skip intl extension not enabled');
+if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
+?>
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+ini_set("intl.default_locale", "pt_PT");
+
+$bi = IntlBreakIterator::createWordInstance('pt');
+$pi = $bi->getPartsIterator();
+var_dump(get_class($pi));
+print_r(iterator_to_array($pi));
+
+$bi->setText("foo bar");
+$pi = $bi->getPartsIterator();
+var_dump(get_class($pi->getBreakIterator()));
+print_r(iterator_to_array($pi));
+var_dump($pi->getRuleStatus());
+?>
+==DONE==
+--EXPECTF--
+string(17) "IntlPartsIterator"
+Array
+(
+)
+string(26) "IntlRuleBasedBreakIterator"
+Array
+(
+    [0] => foo
+    [1] =>  
+    [2] => bar
+)
+int(%d)
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/breakiter_getPartsIterator_basic.phpt 7.1.13-1/ext/intl/tests/breakiter_getPartsIterator_basic.phpt
--- 7.1.8-1/ext/intl/tests/breakiter_getPartsIterator_basic.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/breakiter_getPartsIterator_basic.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -1,9 +1,11 @@
 --TEST--
-IntlBreakIterator::getPartsIterator(): basic test
+IntlBreakIterator::getPartsIterator(): basic test, ICU <= 57.1
 --SKIPIF--
 <?php
 if (!extension_loaded('intl'))
 	die('skip intl extension not enabled');
+if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
+?>
 --FILE--
 <?php
 ini_set("intl.error_level", E_WARNING);
@@ -34,4 +36,4 @@ Array
     [2] => bar
 )
 int(0)
-==DONE==
\ No newline at end of file
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/breakiter_preceding_basic2.phpt 7.1.13-1/ext/intl/tests/breakiter_preceding_basic2.phpt
--- 7.1.8-1/ext/intl/tests/breakiter_preceding_basic2.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/breakiter_preceding_basic2.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,25 @@
+--TEST--
+IntlBreakIterator::preceding(): basic test, ICU >= 58.1
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+	die('skip intl extension not enabled');
+if (version_compare(INTL_ICU_VERSION, '57.1') <= 0) die('skip for ICU >= 58.1');
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+ini_set("intl.default_locale", "pt_PT");
+
+$bi = IntlBreakIterator::createWordInstance('pt');
+$bi->setText('foo bar trans zoo bee');
+
+var_dump($bi->preceding(5));
+var_dump($bi->preceding(50));
+var_dump($bi->preceding(-1));
+?>
+==DONE==
+--EXPECTF--
+int(4)
+int(21)
+int(%i)
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/breakiter_preceding_basic.phpt 7.1.13-1/ext/intl/tests/breakiter_preceding_basic.phpt
--- 7.1.8-1/ext/intl/tests/breakiter_preceding_basic.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/breakiter_preceding_basic.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -1,9 +1,11 @@
 --TEST--
-IntlBreakIterator::preceding(): basic test
+IntlBreakIterator::preceding(): basic test, ICU <= 57.1
 --SKIPIF--
 <?php
 if (!extension_loaded('intl'))
 	die('skip intl extension not enabled');
+if (version_compare(INTL_ICU_VERSION, '57.1') > 0) die('skip for ICU <= 57.1');
+?>
 --FILE--
 <?php
 ini_set("intl.error_level", E_WARNING);
@@ -21,4 +23,4 @@ var_dump($bi->preceding(-1));
 int(4)
 int(21)
 int(0)
-==DONE==
\ No newline at end of file
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/bug75090.phpt 7.1.13-1/ext/intl/tests/bug75090.phpt
--- 7.1.8-1/ext/intl/tests/bug75090.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/bug75090.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+Bug #75090 Constants of parent IntlCalendar class not inherited
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+class Foo extends IntlCalendar {}
+
+$fooRef = new ReflectionClass(Foo::class);
+$intlGregorianCalendarRef = new ReflectionClass(IntlGregorianCalendar::class);
+$intlCalendarRef = new ReflectionClass(IntlCalendar::class);
+
+var_dump(
+    count($fooRef->getConstants()) === count($intlCalendarRef->getConstants()),
+    count($intlGregorianCalendarRef->getConstants()) === count($intlCalendarRef->getConstants())
+);
+?>
+===DONE===
+--EXPECT--
+bool(true)
+bool(true)
+===DONE===
diff -pruN 7.1.8-1/ext/intl/tests/bug75193.phpt 7.1.13-1/ext/intl/tests/bug75193.phpt
--- 7.1.8-1/ext/intl/tests/bug75193.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/bug75193.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,14 @@
+--TEST--
+Bug #75193 segfault in collator_convert_object_to_string
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+$a = new \Collator('en_US');
+$b = [new stdclass, new stdclass];
+var_dump($a->sort($b));
+?>
+===DONE===
+--EXPECT--
+bool(true)
+===DONE===
diff -pruN 7.1.8-1/ext/intl/tests/bug75317.phpt 7.1.13-1/ext/intl/tests/bug75317.phpt
--- 7.1.8-1/ext/intl/tests/bug75317.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/bug75317.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,53 @@
+--TEST--
+Bug #75317 (UConverter::setDestinationEncoding changes source instead of destinatination)
+--SKIPIF--
+<?php
+if (!extension_loaded('intl')) die('skip intl extension is not available');
+?>
+--FILE--
+<?php
+$utf8 = UConverter::getAliases('utf-8')[0];
+$utf16 = UConverter::getAliases('utf-16')[0];
+$utf32 = UConverter::getAliases('utf-32')[0];
+$latin1 = UConverter::getAliases('latin1')[0];
+
+function printResult($actual, $expected) {
+    var_dump($actual === $expected ? true : "expected: $expected, actual: $actual");
+}
+
+// test default values
+$c = new UConverter();
+printResult($c->getDestinationEncoding(), $utf8);
+printResult($c->getSourceEncoding(), $utf8);
+
+// test constructor args
+$c = new UConverter('utf-16', 'latin1');
+printResult($c->getDestinationEncoding(), $utf16);
+printResult($c->getSourceEncoding(), $latin1);
+
+// test setters
+var_dump($c->setDestinationEncoding('utf-8'));
+var_dump($c->setSourceEncoding('utf-32'));
+printResult($c->getDestinationEncoding(), $utf8);
+printResult($c->getSourceEncoding(), $utf32);
+
+// test invalid inputs dont change values
+var_dump($c->setDestinationEncoding('foobar') === false);
+var_dump($c->setSourceEncoding('foobar') === false);
+printResult($c->getDestinationEncoding(), $utf8);
+printResult($c->getSourceEncoding(), $utf32);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
\ No newline at end of file
diff -pruN 7.1.8-1/ext/intl/tests/bug75318.phpt 7.1.13-1/ext/intl/tests/bug75318.phpt
--- 7.1.8-1/ext/intl/tests/bug75318.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/bug75318.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,15 @@
+--TEST--
+Bug #75318 (The parameter of UConverter::getAliases() is not optional)
+--SKIP--
+<?php
+if (!extension_loaded('intl')) die('skip intl extension is not available');
+?>
+--FILE--
+<?php
+$rm = new ReflectionMethod('UConverter', 'getAliases');
+var_dump($rm->getNumberOfRequiredParameters());
+?>
+===DONE===
+--EXPECT--
+int(1)
+===DONE===
diff -pruN 7.1.8-1/ext/intl/tests/dateformat_create_cal_arg_variant4.phpt 7.1.13-1/ext/intl/tests/dateformat_create_cal_arg_variant4.phpt
--- 7.1.8-1/ext/intl/tests/dateformat_create_cal_arg_variant4.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/dateformat_create_cal_arg_variant4.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -4,6 +4,7 @@ IntlDateFormatter: several forms of the
 <?php
 if (!extension_loaded('intl'))	die('skip intl extension not enabled'); ?>
 <?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 ini_set("intl.error_level", E_WARNING);
diff -pruN 7.1.8-1/ext/intl/tests/dateformat_create_cal_arg_variant5.phpt 7.1.13-1/ext/intl/tests/dateformat_create_cal_arg_variant5.phpt
--- 7.1.8-1/ext/intl/tests/dateformat_create_cal_arg_variant5.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/dateformat_create_cal_arg_variant5.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,53 @@
+--TEST--
+IntlDateFormatter: several forms of the calendar arg
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))	die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+ini_set("intl.default_locale", "pt_PT");
+ini_set("date.timezone", 'Atlantic/Azores');
+
+$ts = strtotime('2012-01-01 00:00:00 UTC');
+
+$cal = new IntlGregorianCalendar('UTC', NULL);
+$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
+echo $df->format($ts), "\n";
+
+$cal = IntlCalendar::createInstance('UTC', 'en@calendar=islamic');
+$df = new IntlDateFormatter('es_ES', 0, 0, NULL, $cal);
+echo $df->format($ts), "\n";
+
+//override calendar's timezone
+$cal = new IntlGregorianCalendar('UTC', NULL);
+$df = new IntlDateFormatter('es_ES', 0, 0, 'Europe/Madrid', $cal);
+echo $df->format($ts), "\n";
+
+//default calendar is gregorian
+$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0);
+echo $df->format($ts), "\n";
+
+//try now with traditional
+$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, NULL, IntlDateFormatter::TRADITIONAL);
+echo $df->format($ts), "\n";
+
+//the timezone can be overridden when not specifying a calendar
+$df = new IntlDateFormatter('es_ES@calendar=islamic', 0, 0, 'UTC', IntlDateFormatter::TRADITIONAL);
+echo $df->format($ts), "\n";
+
+$df = new IntlDateFormatter('es_ES', 0, 0, 'UTC', 0);
+echo $df->format($ts), "\n";
+
+?>
+==DONE==
+--EXPECTF--
+domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
+domingo%S 8 de %safar de 1433, 0:00:00 (%siempo %sniversal %sordinado)
+domingo, 1 de enero de 2012, 1:00:00 (hora estándar de Europa central)
+sábado, 31 de diciembre de 2011 d. C., 23:00:00 (hora estándar de las Azores)
+sábado, 7 de %safar de 1433 AH, 23:00:00 (hora estándar de las Azores)
+domingo%S 8 de %safar de 1433 AH, 0:00:00 (%siempo %sniversal %sordinado)
+domingo%S 1 de enero de 2012, 0:00:00 (%siempo %sniversal %sordinado)
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/dateformat_get_set_calendar_variant4.phpt 7.1.13-1/ext/intl/tests/dateformat_get_set_calendar_variant4.phpt
--- 7.1.8-1/ext/intl/tests/dateformat_get_set_calendar_variant4.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/dateformat_get_set_calendar_variant4.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -4,6 +4,7 @@ IntlDateFormatter: setCalendar()/getCale
 <?php
 if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
 <?php if (version_compare(INTL_ICU_VERSION, '54.1') < 0) die('skip for ICU >= 54.1'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 ini_set("intl.error_level", E_WARNING);
diff -pruN 7.1.8-1/ext/intl/tests/dateformat_get_set_calendar_variant5.phpt 7.1.13-1/ext/intl/tests/dateformat_get_set_calendar_variant5.phpt
--- 7.1.8-1/ext/intl/tests/dateformat_get_set_calendar_variant5.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/dateformat_get_set_calendar_variant5.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,55 @@
+--TEST--
+IntlDateFormatter: setCalendar()/getCalendar()/getCalendarObject()
+--SKIPIF--
+<?php
+if (!extension_loaded('intl')) die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+ini_set("intl.default_locale", "pt_PT");
+ini_set("date.timezone", 'Atlantic/Azores');
+
+$ts = strtotime('2012-01-01 00:00:00 UTC');
+
+function d(IntlDateFormatter $df) {
+global $ts;
+echo $df->format($ts), "\n";
+var_dump($df->getCalendar(),
+$df->getCalendarObject()->getType(),
+$df->getCalendarObject()->getTimeZone()->getId());
+echo "\n";
+}
+
+$df = new IntlDateFormatter('fr@calendar=islamic', 0, 0, 'Europe/Minsk');
+d($df);
+
+
+//changing the calendar with a cal type should not change tz
+$df->setCalendar(IntlDateFormatter::TRADITIONAL);
+d($df);
+
+//but changing with an actual calendar should
+$cal = IntlCalendar::createInstance("UTC");
+$df->setCalendar($cal);
+d($df);
+
+?>
+==DONE==
+--EXPECT--
+dimanche 1 janvier 2012 ap. J.-C. à 03:00:00 heure de Kaliningrad
+int(1)
+string(9) "gregorian"
+string(12) "Europe/Minsk"
+
+dimanche 8 safar 1433 AH à 03:00:00 heure de Kaliningrad
+int(0)
+string(7) "islamic"
+string(12) "Europe/Minsk"
+
+dimanche 1 janvier 2012 ap. J.-C. à 00:00:00 Temps universel coordonné
+bool(false)
+string(9) "gregorian"
+string(3) "UTC"
+
+==DONE==
diff -pruN 7.1.8-1/ext/intl/tests/formatter_get_locale_variant2.phpt 7.1.13-1/ext/intl/tests/formatter_get_locale_variant2.phpt
--- 7.1.8-1/ext/intl/tests/formatter_get_locale_variant2.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/formatter_get_locale_variant2.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -3,6 +3,7 @@ numfmt_get_locale()
 --SKIPIF--
 <?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
 <?php if (version_compare(INTL_ICU_VERSION, '51.2') < 0) die('skip for ICU >= 51.2'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >=  0) die('skip for ICU < 58.1'); ?>
 --FILE--
 <?php
 
diff -pruN 7.1.8-1/ext/intl/tests/formatter_get_locale_variant3.phpt 7.1.13-1/ext/intl/tests/formatter_get_locale_variant3.phpt
--- 7.1.8-1/ext/intl/tests/formatter_get_locale_variant3.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/formatter_get_locale_variant3.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,50 @@
+--TEST--
+numfmt_get_locale()
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+
+/*
+ * Get locale.
+ */
+
+function ut_main()
+{
+    $locales = array(
+        'en_UK',
+        'en_US',
+        'fr_CA',
+    );
+
+    $loc_types = array(
+        Locale::ACTUAL_LOCALE    => 'actual',
+        Locale::VALID_LOCALE     => 'valid',
+    );
+
+    $res_str = '';
+
+    foreach( $locales as $locale )
+    {
+        $fmt = ut_nfmt_create( $locale, NumberFormatter::DECIMAL );
+        $res_str .= "$locale: ";
+        foreach( $loc_types as $loc_type => $loc_type_name )
+            $res_str .= sprintf( " %s=%s",
+            $loc_type_name,
+            dump( ut_nfmt_get_locale( $fmt, $loc_type ) ) );
+        $res_str .= "\n";
+    }
+
+    return $res_str;
+}
+
+include_once( 'ut_common.inc' );
+
+// Run the test
+ut_run();
+?>
+--EXPECT--
+en_UK:  actual='en' valid='en'
+en_US:  actual='en' valid='en_US'
+fr_CA:  actual='fr' valid='fr_CA'
diff -pruN 7.1.8-1/ext/intl/tests/locale/bug74993.phpt 7.1.13-1/ext/intl/tests/locale/bug74993.phpt
--- 7.1.8-1/ext/intl/tests/locale/bug74993.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/locale/bug74993.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,73 @@
+--TEST--
+Bug #74993 Wrong reflection on some locale_* functions
+--SKIPIF--
+<?php
+extension_loaded('intl') || print 'skip';
+--FILE--
+<?php
+$funcs = [
+    'locale_get_display_language',
+    'locale_get_display_name',
+    'locale_get_display_region',
+    'locale_get_display_script',
+    'locale_get_display_variant',
+    'locale_filter_matches',
+    'locale_lookup',
+];
+
+foreach ($funcs as $func) {
+    echo (new ReflectionFunction($func));
+}
+--EXPECT--
+Function [ <internal:intl> function locale_get_display_language ] {
+
+  - Parameters [2] {
+    Parameter #0 [ <required> $locale ]
+    Parameter #1 [ <optional> $in_locale ]
+  }
+}
+Function [ <internal:intl> function locale_get_display_name ] {
+
+  - Parameters [2] {
+    Parameter #0 [ <required> $locale ]
+    Parameter #1 [ <optional> $in_locale ]
+  }
+}
+Function [ <internal:intl> function locale_get_display_region ] {
+
+  - Parameters [2] {
+    Parameter #0 [ <required> $locale ]
+    Parameter #1 [ <optional> $in_locale ]
+  }
+}
+Function [ <internal:intl> function locale_get_display_script ] {
+
+  - Parameters [2] {
+    Parameter #0 [ <required> $locale ]
+    Parameter #1 [ <optional> $in_locale ]
+  }
+}
+Function [ <internal:intl> function locale_get_display_variant ] {
+
+  - Parameters [2] {
+    Parameter #0 [ <required> $locale ]
+    Parameter #1 [ <optional> $in_locale ]
+  }
+}
+Function [ <internal:intl> function locale_filter_matches ] {
+
+  - Parameters [3] {
+    Parameter #0 [ <required> $langtag ]
+    Parameter #1 [ <required> $locale ]
+    Parameter #2 [ <optional> $canonicalize ]
+  }
+}
+Function [ <internal:intl> function locale_lookup ] {
+
+  - Parameters [4] {
+    Parameter #0 [ <required> $langtag ]
+    Parameter #1 [ <required> $locale ]
+    Parameter #2 [ <optional> $canonicalize ]
+    Parameter #3 [ <optional> $def ]
+  }
+}
diff -pruN 7.1.8-1/ext/intl/tests/spoofchecker_001.phpt 7.1.13-1/ext/intl/tests/spoofchecker_001.phpt
--- 7.1.8-1/ext/intl/tests/spoofchecker_001.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/spoofchecker_001.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -2,6 +2,7 @@
 spoofchecker suspicious character checker
 --SKIPIF--
 <?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
+<?php if (version_compare(INTL_ICU_VERSION, '57.1') >= 0)die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 
diff -pruN 7.1.8-1/ext/intl/tests/spoofchecker_006.phpt 7.1.13-1/ext/intl/tests/spoofchecker_006.phpt
--- 7.1.8-1/ext/intl/tests/spoofchecker_006.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/spoofchecker_006.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,26 @@
+--TEST--
+spoofchecker suspicious character checker
+--SKIPIF--
+<?php if(!extension_loaded('intl') || !class_exists("Spoofchecker")) print 'skip'; ?>
+<?php if (version_compare(INTL_ICU_VERSION, '57.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+
+echo "paypal with Cyrillic spoof characters\n";
+$x = new Spoofchecker();
+var_dump($x->isSuspicious("http://www.payp\u{0430}l.com"));
+var_dump($x->isSuspicious("\u{041F}aypal.com"));
+
+echo "certain all-uppercase Latin sequences can be spoof of Greek\n";
+$x = new Spoofchecker();
+$x->setAllowedLocales("gr_GR");
+var_dump($x->isSuspicious("NAPKIN PEZ"));
+var_dump($x->isSuspicious("napkin pez"));
+?>
+--EXPECTF--
+paypal with Cyrillic spoof characters
+bool(true)
+bool(true)
+certain all-uppercase Latin sequences can be spoof of Greek
+bool(true)
+bool(true)
diff -pruN 7.1.8-1/ext/intl/tests/timezone_IDforWindowsID_basic2.phpt 7.1.13-1/ext/intl/tests/timezone_IDforWindowsID_basic2.phpt
--- 7.1.8-1/ext/intl/tests/timezone_IDforWindowsID_basic2.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/timezone_IDforWindowsID_basic2.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,45 @@
+--TEST--
+IntlTimeZone::getIDForWindowsID basic test
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+	die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+
+$tzs = array(
+  'Gnomeregan' => array(NULL),
+  'India Standard Time' => array(NULL),
+  'Pacific Standard Time' => array('001', 'CA', 'MX', 'US', 'ZZ'),
+  'Romance Standard Time' => array('001', 'BE', 'DK', 'ES', 'FR'),
+);
+
+foreach ($tzs as $tz => $regions) {
+  echo "** $tz\n";
+  foreach ($regions as $region) {
+    var_dump(IntlTimeZone::getIDForWindowsID($tz, $region));
+    if (intl_get_error_code() != U_ZERO_ERROR) {
+      echo "Error: ", intl_get_error_message(), "\n";
+    }
+  }
+}
+
+--EXPECT--
+** Gnomeregan
+bool(false)
+Error: intltz_get_windows_id: Unknown windows timezone: U_ILLEGAL_ARGUMENT_ERROR
+** India Standard Time
+string(13) "Asia/Calcutta"
+** Pacific Standard Time
+string(19) "America/Los_Angeles"
+string(17) "America/Vancouver"
+string(19) "America/Los_Angeles"
+string(19) "America/Los_Angeles"
+string(7) "PST8PDT"
+** Romance Standard Time
+string(12) "Europe/Paris"
+string(15) "Europe/Brussels"
+string(17) "Europe/Copenhagen"
+string(13) "Europe/Madrid"
+string(12) "Europe/Paris"
diff -pruN 7.1.8-1/ext/intl/tests/timezone_IDforWindowsID_basic.phpt 7.1.13-1/ext/intl/tests/timezone_IDforWindowsID_basic.phpt
--- 7.1.8-1/ext/intl/tests/timezone_IDforWindowsID_basic.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/timezone_IDforWindowsID_basic.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -3,9 +3,9 @@ IntlTimeZone::getIDForWindowsID basic te
 --SKIPIF--
 <?php
 if (!extension_loaded('intl'))
-	die('skip intl extension not enabled');
-if (version_compare(INTL_ICU_VERSION, '52') < 0)
-    die('skip for ICU >= 52');
+	die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '52') < 0)die('skip for ICU >= 52'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 
diff -pruN 7.1.8-1/ext/intl/tests/timezone_windowsID_basic2.phpt 7.1.13-1/ext/intl/tests/timezone_windowsID_basic2.phpt
--- 7.1.8-1/ext/intl/tests/timezone_windowsID_basic2.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/timezone_windowsID_basic2.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,42 @@
+--TEST--
+IntlTimeZone::getWindowsID basic test
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+	die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') < 0) die('skip for ICU >= 58.1'); ?>
+--FILE--
+<?php
+
+$tzs = array(
+  'America/Bogota',
+  'America/Havana',
+  'America/Indiana/Knox',
+  'America/Los_Angeles',
+  'Azeroth/Kalimdor/Durotar',
+  'Africa/Casablanca',
+  'Asia/Singapore',
+  'Australia/Perth',
+  'Europe/London',
+  'Europe/Istanbul',
+);
+
+foreach ($tzs as $tz) {
+  var_dump(IntlTimeZone::getWindowsID($tz));
+  if (intl_get_error_code() != U_ZERO_ERROR) {
+    echo "Error: ", intl_get_error_message(), "\n";
+  }
+}
+
+--EXPECT--
+string(24) "SA Pacific Standard Time"
+string(18) "Cuba Standard Time"
+string(21) "Central Standard Time"
+string(21) "Pacific Standard Time"
+bool(false)
+Error: intltz_get_windows_id: Unknown system timezone: U_ILLEGAL_ARGUMENT_ERROR
+string(21) "Morocco Standard Time"
+string(23) "Singapore Standard Time"
+string(26) "W. Australia Standard Time"
+string(17) "GMT Standard Time"
+string(20) "Turkey Standard Time"
diff -pruN 7.1.8-1/ext/intl/tests/timezone_windowsID_basic.phpt 7.1.13-1/ext/intl/tests/timezone_windowsID_basic.phpt
--- 7.1.8-1/ext/intl/tests/timezone_windowsID_basic.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/timezone_windowsID_basic.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -3,9 +3,9 @@ IntlTimeZone::getWindowsID basic test
 --SKIPIF--
 <?php
 if (!extension_loaded('intl'))
-	die('skip intl extension not enabled');
-if (version_compare(INTL_ICU_VERSION, '52') < 0)
-    die('skip for ICU >= 52');
+	die('skip intl extension not enabled'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '52') < 0)die('skip for ICU >= 52'); ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 
diff -pruN 7.1.8-1/ext/intl/tests/transliterator_create_inverse_basic.phpt 7.1.13-1/ext/intl/tests/transliterator_create_inverse_basic.phpt
--- 7.1.8-1/ext/intl/tests/transliterator_create_inverse_basic.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/transliterator_create_inverse_basic.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -21,7 +21,8 @@ echo $orstr,"\n";
 echo $new_str,"\n";
 echo $recovstr,"\n";
 
-var_dump(($orstr == $recovstr) == $recovstr2);
+var_dump($orstr === $recovstr);
+var_dump($orstr === $recovstr2);
 
 echo "Done.\n";
 --EXPECT--
@@ -29,4 +30,5 @@ オーシャンビュー
 ōshanbyū
 オーシャンビュー
 bool(true)
+bool(true)
 Done.
diff -pruN 7.1.8-1/ext/intl/tests/uconverter_oop_callback2.phpt 7.1.13-1/ext/intl/tests/uconverter_oop_callback2.phpt
--- 7.1.8-1/ext/intl/tests/uconverter_oop_callback2.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/uconverter_oop_callback2.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,57 @@
+--TEST--
+UConverter::convert() w/ Callback Reasons
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+<?php if (version_compare(INTL_ICU_VERSION, '60.1') < 0) die('skip for ICU >= 60.1'); ?>
+--FILE--
+<?php
+class MyConverter extends UConverter {
+  /**
+   * Called during conversion from source encoding to internal UChar representation
+   */
+  public function toUCallback($reason, $source, $codeUnits, &$error) {
+    echo "toUCallback(", UConverter::reasonText($reason), ", ...)\n";
+    return parent::toUCallback($reason, $source, $codeUnits, $error);
+  }
+
+  /**
+   * Called during conversion from internal UChar to destination encoding
+   */
+  public function fromUCallback($reason, $source, $codePoint, &$error) {
+    echo "fromUCallback(", UConverter::reasonText($reason), ", ...)\n";
+    return parent::fromUCallback($reason, $source, $codePoint, $error);
+  }
+
+}
+
+$c = new MyConverter('ascii', 'utf-8');
+foreach(array("regular", "irregul\xC1\xA1r", "\xC2\xA1unsupported!") as $word) {
+  $c->convert($word);
+}
+--EXPECT--
+toUCallback(REASON_RESET, ...)
+toUCallback(REASON_RESET, ...)
+fromUCallback(REASON_RESET, ...)
+fromUCallback(REASON_RESET, ...)
+toUCallback(REASON_RESET, ...)
+toUCallback(REASON_ILLEGAL, ...)
+toUCallback(REASON_ILLEGAL, ...)
+toUCallback(REASON_RESET, ...)
+toUCallback(REASON_ILLEGAL, ...)
+toUCallback(REASON_ILLEGAL, ...)
+fromUCallback(REASON_RESET, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+fromUCallback(REASON_RESET, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+toUCallback(REASON_RESET, ...)
+toUCallback(REASON_RESET, ...)
+fromUCallback(REASON_RESET, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+fromUCallback(REASON_RESET, ...)
+fromUCallback(REASON_UNASSIGNED, ...)
+toUCallback(REASON_CLOSE, ...)
+fromUCallback(REASON_CLOSE, ...)
+toUCallback(REASON_CLOSE, ...)
+fromUCallback(REASON_CLOSE, ...)
diff -pruN 7.1.8-1/ext/intl/tests/uconverter_oop_callback.phpt 7.1.13-1/ext/intl/tests/uconverter_oop_callback.phpt
--- 7.1.8-1/ext/intl/tests/uconverter_oop_callback.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/tests/uconverter_oop_callback.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -2,6 +2,7 @@
 UConverter::convert() w/ Callback Reasons
 --SKIPIF--
 <?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+<?php if (version_compare(INTL_ICU_VERSION, '58.1') >= 0) die('skip for ICU <= 57.1'); ?>
 --FILE--
 <?php
 class MyConverter extends UConverter {
diff -pruN 7.1.8-1/ext/intl/uchar/uchar.c 7.1.13-1/ext/intl/uchar/uchar.c
--- 7.1.8-1/ext/intl/uchar/uchar.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/intl/uchar/uchar.c	2018-01-03 02:32:26.000000000 +0000
@@ -141,7 +141,7 @@ IC_METHOD(getIntPropertyMinValue) {
 }
 /* }}} */
 
-/* {{{ proto int IntlChar::getIntPropertyMxValue(int $property) */
+/* {{{ proto int IntlChar::getIntPropertyMaxValue(int $property) */
 ZEND_BEGIN_ARG_INFO_EX(getIntPropertyMaxValue_arginfo, 0, ZEND_RETURN_VALUE, 1)
 	ZEND_ARG_INFO(0, property)
 ZEND_END_ARG_INFO();
@@ -188,7 +188,7 @@ static UBool enumCharType_callback(enumC
 	zval args[3];
 
 	ZVAL_NULL(&retval);
-	/* Note that $start is INclusive, whiel $limit is EXclusive
+	/* Note that $start is INclusive, while $limit is EXclusive
 	 * Therefore (0, 32, 15) means CPs 0..31 are of type 15
 	 */
 	ZVAL_LONG(&args[0], start);
diff -pruN 7.1.8-1/ext/json/config.w32 7.1.13-1/ext/json/config.w32
--- 7.1.8-1/ext/json/config.w32	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/json/config.w32	2018-01-03 02:32:28.000000000 +0000
@@ -17,6 +17,6 @@ if (PHP_JSON != "no") {
 
 	ADD_SOURCES(configure_module_dirname, "json_encoder.c json_parser.tab.c json_scanner.c", "json");
 
-	PHP_INSTALL_HEADERS("ext/json/", "php_json.h");
+	PHP_INSTALL_HEADERS("ext/json/", "php_json.h php_json_parser.h php_json_scanner.h");
 }
 
diff -pruN 7.1.8-1/ext/libxml/libxml.c 7.1.13-1/ext/libxml/libxml.c
--- 7.1.8-1/ext/libxml/libxml.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/libxml/libxml.c	2018-01-03 02:32:27.000000000 +0000
@@ -848,7 +848,6 @@ static PHP_MINIT_FUNCTION(libxml)
 	if (sapi_module.name) {
 		static const char * const supported_sapis[] = {
 			"cgi-fcgi",
-			"fpm-fcgi",
 			"litespeed",
 			NULL
 		};
diff -pruN 7.1.8-1/ext/libxml/php_libxml2.def 7.1.13-1/ext/libxml/php_libxml2.def
--- 7.1.8-1/ext/libxml/php_libxml2.def	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/libxml/php_libxml2.def	2018-01-03 02:32:27.000000000 +0000
@@ -1546,3 +1546,4 @@ xmlXPtrRangeToFunction
 xmlXPtrWrapLocationSet
 xmlBufContent
 xmlBufUse
+xmlBufferDetach
diff -pruN 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
--- 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c	2018-01-03 02:32:27.000000000 +0000
@@ -88,7 +88,8 @@ const struct mbfl_convert_vtbl vtbl_html
 	mbfl_filt_conv_html_dec_ctor,
 	mbfl_filt_conv_html_dec_dtor,
 	mbfl_filt_conv_html_dec,
-	mbfl_filt_conv_html_dec_flush };
+	mbfl_filt_conv_html_dec_flush,
+	mbfl_filt_conv_html_dec_copy };
 
 
 #define CK(statement)	do { if ((statement) < 0) return (-1); } while (0)
@@ -309,4 +310,9 @@ int mbfl_filt_conv_html_dec_flush(mbfl_c
 	return err;
 }
 
-
+void mbfl_filt_conv_html_dec_copy(mbfl_convert_filter *src, mbfl_convert_filter *dest)
+{
+	*dest = *src;
+	dest->opaque = mbfl_malloc(html_enc_buffer_size+1);
+	memcpy(dest->opaque, src->opaque, html_enc_buffer_size+1);
+}
diff -pruN 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h
--- 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h	2018-01-03 02:32:27.000000000 +0000
@@ -42,6 +42,7 @@ int mbfl_filt_conv_html_enc(int c, mbfl_
 int mbfl_filt_conv_html_enc_flush(mbfl_convert_filter *filter);
 int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter);
 int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter);
+void mbfl_filt_conv_html_dec_copy(mbfl_convert_filter *src, mbfl_convert_filter *dest);
 void mbfl_filt_conv_html_dec_ctor(mbfl_convert_filter *filter);
 void mbfl_filt_conv_html_dec_dtor(mbfl_convert_filter *filter);
 
diff -pruN 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c
--- 7.1.8-1/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c	2018-01-03 02:32:27.000000000 +0000
@@ -222,11 +222,11 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mb
 	} else if (mode & (MBFL_FILT_TL_ZEN2HAN_HIRA2KANA
 			| MBFL_FILT_TL_ZEN2HAN_KANA2HIRA)) {
 		if ((mode & MBFL_FILT_TL_ZEN2HAN_HIRA2KANA) &&
-				c >= 0x3041 && c <= 0x3093) {
+				((c >= 0x3041 && c <= 0x3093) || c == 0x309d || c == 0x309e)) {
 			/* Zenkaku hirangana to Zenkaku katakana */
 			s = c + 0x60;
 		} else if ((mode & MBFL_FILT_TL_ZEN2HAN_KANA2HIRA) &&
-				c >= 0x30a1 && c <= 0x30f3) {
+				((c >= 0x30a1 && c <= 0x30f3) || c == 0x30fd || c == 0x30fe)) {
 			/* Zenkaku katakana to Zenkaku hirangana */
 			s = c - 0x60;
 		}
diff -pruN 7.1.8-1/ext/mbstring/mbstring.c 7.1.13-1/ext/mbstring/mbstring.c
--- 7.1.8-1/ext/mbstring/mbstring.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/mbstring/mbstring.c	2018-01-03 02:32:27.000000000 +0000
@@ -457,6 +457,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_eregi_
 	ZEND_ARG_INFO(0, pattern)
 	ZEND_ARG_INFO(0, replacement)
 	ZEND_ARG_INFO(0, string)
+	ZEND_ARG_INFO(0, option)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace_callback, 0, 0, 3)
diff -pruN 7.1.8-1/ext/mbstring/tests/bug62934.phpt 7.1.13-1/ext/mbstring/tests/bug62934.phpt
--- 7.1.8-1/ext/mbstring/tests/bug62934.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mbstring/tests/bug62934.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,10 @@
+--TEST--
+Bug #62934: mb_convert_kana() does not convert iteration marks
+--FILE--
+<?php
+echo mb_convert_kana('あゝすゞめアヽスヾメ', 'C', 'UTF-8') . "\n";
+echo mb_convert_kana('あゝすゞめアヽスヾメ', 'c', 'UTF-8') . "\n";
+?>
+--EXPECT--
+アヽスヾメアヽスヾメ
+あゝすゞめあゝすゞめ
diff -pruN 7.1.8-1/ext/mbstring/tests/bug71606.phpt 7.1.13-1/ext/mbstring/tests/bug71606.phpt
--- 7.1.8-1/ext/mbstring/tests/bug71606.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mbstring/tests/bug71606.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,13 @@
+--TEST--
+Bug #71606 (Segmentation fault mb_strcut + mb_list_encodings)
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip ext/mbstring not available');
+?>
+--FILE--
+<?php
+echo mb_strcut('&quot;', 0, 0, 'HTML-ENTITIES');
+echo 'DONE', PHP_EOL;
+?>
+--EXPECT--
+DONE
diff -pruN 7.1.8-1/ext/mcrypt/mcrypt_filter.c 7.1.13-1/ext/mcrypt/mcrypt_filter.c
--- 7.1.8-1/ext/mcrypt/mcrypt_filter.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/mcrypt/mcrypt_filter.c	2018-01-03 02:32:26.000000000 +0000
@@ -89,7 +89,7 @@ static php_stream_filter_status_t php_mc
 			php_stream_bucket_delref(bucket);
 		} else {
 			/* Stream cipher */
-			php_stream_bucket_make_writeable(bucket);
+			bucket = php_stream_bucket_make_writeable(bucket);
 			if (data->encrypt) {
 				mcrypt_generic(data->module, bucket->buf, (int)bucket->buflen);
 			} else {
diff -pruN 7.1.8-1/ext/mcrypt/tests/bug72535.phpt 7.1.13-1/ext/mcrypt/tests/bug72535.phpt
--- 7.1.8-1/ext/mcrypt/tests/bug72535.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mcrypt/tests/bug72535.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,24 @@
+--TEST--
+Bug #72535 arcfour encryption stream filter crashes php
+--SKIPIF--
+<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
+--FILE--
+<?php
+$passphrase = 'My secret';
+$plaintext = 'Secret secret secret data';
+
+$iv = substr(md5('iv' . $passphrase, true), 0, 8);
+$key = substr(md5('pass1' . $passphrase, true) .
+	              md5('pass2' . $passphrase, true), 0, 24);
+$opts = array('iv' => $iv, 'key' => $key, 'mode' => 'stream');
+
+$expected = substr($plaintext . $plaintext, 0, 48);
+
+$fp = fopen('php://memory', 'wb+');
+stream_filter_append($fp, 'mcrypt.arcfour', STREAM_FILTER_WRITE, $opts);
+fwrite($fp, $plaintext);
+?>
+==NOCRASH==
+--EXPECTF--
+Deprecated: stream_filter_append(): mcrypt and mdecrypt stream filters have been deprecated in %s on line %d
+==NOCRASH==
diff -pruN 7.1.8-1/ext/mysqli/mysqli_api.c 7.1.13-1/ext/mysqli/mysqli_api.c
--- 7.1.8-1/ext/mysqli/mysqli_api.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/mysqli/mysqli_api.c	2018-01-03 02:32:30.000000000 +0000
@@ -1210,7 +1210,7 @@ PHP_FUNCTION(mysqli_fetch_fields)
 	zval		*mysql_result;
 	zval		obj;
 
-	unsigned int i;
+	unsigned int i, num_fields;
 
 	if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) {
 		return;
@@ -1219,8 +1219,9 @@ PHP_FUNCTION(mysqli_fetch_fields)
 	MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
 
 	array_init(return_value);
+	num_fields = mysql_num_fields(result);
 
-	for (i = 0; i < mysql_num_fields(result); i++) {
+	for (i = 0; i < num_fields; i++) {
 		const MYSQL_FIELD *field = mysql_fetch_field_direct(result, i);
 
 		object_init(&obj);
@@ -1266,7 +1267,7 @@ PHP_FUNCTION(mysqli_fetch_lengths)
 {
 	MYSQL_RES		*result;
 	zval			*mysql_result;
-	unsigned int	i;
+	unsigned int	i, num_fields;
 #if defined(MYSQLI_USE_MYSQLND)
 	const size_t	*ret;
 #else
@@ -1284,8 +1285,9 @@ PHP_FUNCTION(mysqli_fetch_lengths)
 	}
 
 	array_init(return_value);
+	num_fields = mysql_num_fields(result);
 
-	for (i = 0; i < mysql_num_fields(result); i++) {
+	for (i = 0; i < num_fields; i++) {
 		add_index_long(return_value, i, ret[i]);
 	}
 }
diff -pruN 7.1.8-1/ext/mysqli/mysqli.c 7.1.13-1/ext/mysqli/mysqli.c
--- 7.1.8-1/ext/mysqli/mysqli.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/mysqli/mysqli.c	2018-01-03 02:32:30.000000000 +0000
@@ -1149,7 +1149,7 @@ void php_mysqli_fetch_into_hash_aux(zval
 {
 #if !defined(MYSQLI_USE_MYSQLND)
 	MYSQL_ROW row;
-	unsigned int	i;
+	unsigned int	i, num_fields;
 	MYSQL_FIELD		*fields;
 	zend_ulong	*field_len;
 
@@ -1163,8 +1163,9 @@ void php_mysqli_fetch_into_hash_aux(zval
 
 	array_init(return_value);
 	field_len = mysql_fetch_lengths(result);
+	num_fields = mysql_num_fields(result);
 
-	for (i = 0; i < mysql_num_fields(result); i++) {
+	for (i = 0; i < num_fields; i++) {
 		if (row[i]) {
 			zval res;
 
@@ -1244,6 +1245,10 @@ void php_mysqli_fetch_into_hash(INTERNAL
 			php_error_docref(NULL, E_WARNING, "Could not find class '%s'", ZSTR_VAL(class_name));
 			return;
 		}
+		if (UNEXPECTED(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))) {
+			zend_throw_error(NULL, "Class '%s' cannot be instantiated", ZSTR_VAL(ce->name));
+			return;
+		}
 		fetchtype = MYSQLI_ASSOC;
 	} else {
 		if (override_flags) {
diff -pruN 7.1.8-1/ext/mysqli/mysqli_fe.c 7.1.13-1/ext/mysqli/mysqli_fe.c
--- 7.1.8-1/ext/mysqli/mysqli_fe.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/mysqli/mysqli_fe.c	2018-01-03 02:32:30.000000000 +0000
@@ -436,7 +436,7 @@ const zend_function_entry mysqli_functio
 	PHP_FE(mysqli_fetch_field_direct,					arginfo_mysqli_result_and_fieldnr)
 	PHP_FE(mysqli_fetch_lengths,						arginfo_mysqli_only_result)
 #ifdef MYSQLI_USE_MYSQLND
-	PHP_FE(mysqli_fetch_all,							arginfo_mysqli_only_result)
+	PHP_FE(mysqli_fetch_all,							arginfo_mysqli_fetch_array)
 #endif
 	PHP_FE(mysqli_fetch_array,							arginfo_mysqli_fetch_array)
 	PHP_FE(mysqli_fetch_assoc,							arginfo_mysqli_only_result)
@@ -616,7 +616,7 @@ const zend_function_entry mysqli_result_
 	PHP_FALIAS(fetch_fields, mysqli_fetch_fields, arginfo_mysqli_no_params)
 	PHP_FALIAS(fetch_field_direct, mysqli_fetch_field_direct, arginfo_class_mysqli_result_and_fieldnr)
 #if defined(MYSQLI_USE_MYSQLND)
-	PHP_FALIAS(fetch_all, mysqli_fetch_all, arginfo_mysqli_no_params)
+	PHP_FALIAS(fetch_all, mysqli_fetch_all, arginfo_class_mysqli_fetch_array)
 #endif
 	PHP_FALIAS(fetch_array, mysqli_fetch_array, arginfo_class_mysqli_fetch_array)
 	PHP_FALIAS(fetch_assoc, mysqli_fetch_assoc, arginfo_mysqli_no_params)
diff -pruN 7.1.8-1/ext/mysqli/tests/bug74968.phpt 7.1.13-1/ext/mysqli/tests/bug74968.phpt
--- 7.1.8-1/ext/mysqli/tests/bug74968.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mysqli/tests/bug74968.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,24 @@
+--TEST--
+Bug #74968 PHP crashes when calling mysqli_result::fetch_object with an abstract class
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+	require_once("connect.inc");
+
+	$mysqli = new mysqli("$host:$port", $user, $passwd, $db);
+	abstract class test {
+		public $a;
+	}
+	$mysqli->query("SELECT 1 as a")->fetch_object("test");
+?>
+==DONE==
+--EXPECTF--
+Fatal error: Uncaught Error: Class 'test' cannot be instantiated in %sbug74968.php:%d
+Stack trace:
+#0 %sbug74968.php(%d): mysqli_result->fetch_object('test')
+#1 {main}
+  thrown in %sbug74968.php on line %d
diff -pruN 7.1.8-1/ext/mysqli/tests/bug75018.phpt 7.1.13-1/ext/mysqli/tests/bug75018.phpt
--- 7.1.8-1/ext/mysqli/tests/bug75018.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mysqli/tests/bug75018.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,38 @@
+--TEST--
+Bug #75018 Data corruption when reading fields of bit type
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+require_once("connect.inc");
+
+$mysqli = new mysqli("$host:$port", $user, $passwd, $db);
+
+$tbl = "test_bug75018";
+$sql = "DROP TABLE IF EXISTS $tbl";
+$mysqli->query($sql);
+
+$sql = "CREATE TABLE $tbl (bit_column_1 bit(16) NOT NULL) DEFAULT CHARSET=utf8";
+$mysqli->query($sql);
+
+$sql = "INSERT INTO $tbl (bit_column_1) VALUES (0)";
+$mysqli->query($sql);
+$sql = "INSERT INTO $tbl (bit_column_1) VALUES (0b10101010101)";
+$mysqli->query($sql);
+
+$sql = "SELECT bit_column_1 FROM $tbl";
+$result = $mysqli->query($sql);
+
+while ($row = $result->fetch_assoc()) {
+	var_dump($row['bit_column_1']);
+}
+
+?>
+==DONE==
+--EXPECT--
+string(1) "0"
+string(4) "1365"
+==DONE==
diff -pruN 7.1.8-1/ext/mysqli/tests/bug75434.phpt 7.1.13-1/ext/mysqli/tests/bug75434.phpt
--- 7.1.8-1/ext/mysqli/tests/bug75434.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/mysqli/tests/bug75434.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,24 @@
+--TEST--
+Bug #75434 Wrong reflection for mysqli_fetch_all function
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+if (!extension_loaded("reflection")) die("skip reflection extension not available");
+?>
+--FILE--
+<?php
+$rf = new ReflectionFunction('mysqli_fetch_all');
+var_dump($rf->getNumberOfParameters());
+var_dump($rf->getNumberOfRequiredParameters());
+
+$rm = new ReflectionMethod('mysqli_result', 'fetch_all');
+var_dump($rm->getNumberOfParameters());
+var_dump($rm->getNumberOfRequiredParameters());
+?>
+===DONE===
+--EXPECT--
+int(2)
+int(1)
+int(1)
+int(0)
+===DONE===
diff -pruN 7.1.8-1/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt 7.1.13-1/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt
--- 7.1.8-1/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -124,9 +124,16 @@ isInternal: yes
 isUserDefined: no
 returnsReference: no
 Modifiers: 256
-Number of Parameters: 0
+Number of Parameters: 1
 Number of Required Parameters: 0
 
+Inspecting parameter 'result_type' of method 'fetch_all'
+isArray: no
+allowsNull: no
+isPassedByReference: no
+isOptional: yes
+isDefaultValueAvailable: no
+
 Inspecting method 'fetch_array'
 isFinal: no
 isAbstract: no
diff -pruN 7.1.8-1/ext/mysqlnd/mysqlnd_wireprotocol.c 7.1.13-1/ext/mysqlnd/mysqlnd_wireprotocol.c
--- 7.1.8-1/ext/mysqlnd/mysqlnd_wireprotocol.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/mysqlnd/mysqlnd_wireprotocol.c	2018-01-03 02:32:26.000000000 +0000
@@ -1761,7 +1761,7 @@ php_mysqlnd_rowp_read_text_protocol_aux(
 				if (Z_TYPE_P(current_field) == IS_LONG && !as_int_or_float) {
 					/* we are using the text protocol, so convert to string */
 					char tmp[22];
-					const size_t tmp_len = sprintf((char *)&tmp, MYSQLND_LLU_SPEC, Z_LVAL_P(current_field));
+					const size_t tmp_len = sprintf((char *)&tmp, MYSQLND_LLU_SPEC, (uint64_t) Z_LVAL_P(current_field));
 					ZVAL_STRINGL(current_field, tmp, tmp_len);
 				} else if (Z_TYPE_P(current_field) == IS_STRING) {
 					/* nothing to do here, as we want a string and ps_fetch_from_1_to_8_bytes() has given us one */
diff -pruN 7.1.8-1/ext/oci8/config.w32 7.1.13-1/ext/oci8/config.w32
--- 7.1.8-1/ext/oci8/config.w32	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/config.w32	2018-01-03 02:32:23.000000000 +0000
@@ -45,7 +45,7 @@ if (PHP_OCI8 != "no") {
 	if (CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_OCI8", oci8_inc_paths) &&
 			CHECK_LIB("oci.lib", "oci8", oci8_lib_paths))
 	{
-		EXTENSION('oci8', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c');
+		EXTENSION('oci8', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c oci8_failover.c');
 
 		AC_DEFINE('HAVE_OCI8', 1);
 		AC_DEFINE('HAVE_OCI_INSTANT_CLIENT', 1);
diff -pruN 7.1.8-1/ext/oci8/oci8.c 7.1.13-1/ext/oci8/oci8.c
--- 7.1.8-1/ext/oci8/oci8.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8.c	2018-01-03 02:32:23.000000000 +0000
@@ -509,6 +509,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_oci_regis
 	ZEND_ARG_INFO(0, connection_resource)
 	ZEND_ARG_INFO(0, function_name)
 ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_oci_unregister_taf_callback, 0, 0, 1)
+	ZEND_ARG_INFO(0, connection_resource)
+ZEND_END_ARG_INFO()
 /* }}} */
 
 /* {{{ LOB Method arginfo */
@@ -707,6 +711,7 @@ PHP_FUNCTION(oci_collection_size);
 PHP_FUNCTION(oci_collection_max);
 PHP_FUNCTION(oci_collection_trim);
 PHP_FUNCTION(oci_register_taf_callback);
+PHP_FUNCTION(oci_unregister_taf_callback);
 /* }}} */
 
 /* {{{ extension definition structures
@@ -790,6 +795,7 @@ static const zend_function_entry php_oci
 	PHP_FE(oci_collection_trim,			arginfo_oci_collection_trim)
 	PHP_FE(oci_new_collection,			arginfo_oci_new_collection)
 	PHP_FE(oci_register_taf_callback,   arginfo_oci_register_taf_callback)
+	PHP_FE(oci_unregister_taf_callback, arginfo_oci_unregister_taf_callback)
 
 	PHP_FALIAS(oci_free_cursor,		oci_free_statement,		arginfo_oci_free_statement)
 	PHP_FALIAS(ocifreecursor,		oci_free_statement,		arginfo_oci_free_statement)
@@ -1201,7 +1207,7 @@ PHP_MINFO_FUNCTION(oci)
 	php_info_print_table_row(2, "OCI8 DTrace Support", "disabled");
 #endif
 	php_info_print_table_row(2, "OCI8 Version", PHP_OCI8_VERSION);
-	php_info_print_table_row(2, "Revision", "$Id: 084655103ff7d247974759eca0e03332016c022c $");
+	php_info_print_table_row(2, "Revision", "$Id: 8a26cf66ca0f9556b6376408c8f71ead69bdbcbf $");
 
 #if ((OCI_MAJOR_VERSION > 10) || ((OCI_MAJOR_VERSION == 10) && (OCI_MINOR_VERSION >= 2)))
 	php_oci_client_get_version(ver, sizeof(ver));
@@ -1396,6 +1402,8 @@ void php_oci_define_hash_dtor(zval *data
 		define->name = NULL;
 	}
 
+	zval_ptr_dtor(&define->val);
+
     efree(define);
 }
 /* }}} */
@@ -1408,9 +1416,9 @@ void php_oci_bind_hash_dtor(zval *data)
 {
 	php_oci_bind *bind = (php_oci_bind *) Z_PTR_P(data);
 
-	if (!Z_ISUNDEF(bind->parameter)) {
-		zval_ptr_dtor(&bind->parameter);
-		ZVAL_UNDEF(&bind->parameter);
+	if (!Z_ISUNDEF(bind->val)) {
+		zval_ptr_dtor(&bind->val);
+		ZVAL_UNDEF(&bind->val);
 	}
 
 	if (bind->array.elements) {
@@ -2636,7 +2644,7 @@ void php_oci_fetch_row (INTERNAL_FUNCTIO
 	if (placeholder == NULL) {
 		placeholder = return_value;
 	} else {
-		zval_dtor(placeholder);
+		zval_ptr_dtor(placeholder);
 	}
 
 	array_init(placeholder);
@@ -2702,7 +2710,7 @@ static int php_oci_persistent_helper(zva
 
 		/* Remove TAF callback function as it's bound to current request */
 		if (connection->used_this_request && !Z_ISUNDEF(connection->taf_callback) && !Z_ISNULL(connection->taf_callback)) {
-			php_oci_disable_taf_callback(connection);
+			php_oci_unregister_taf_callback(connection);
 		}
 
 		if (!connection->used_this_request && OCI_G(persistent_timeout) != -1) {
diff -pruN 7.1.8-1/ext/oci8/oci8_collection.c 7.1.13-1/ext/oci8/oci8_collection.c
--- 7.1.8-1/ext/oci8/oci8_collection.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8_collection.c	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
diff -pruN 7.1.8-1/ext/oci8/oci8_failover.c 7.1.13-1/ext/oci8/oci8_failover.c
--- 7.1.8-1/ext/oci8/oci8_failover.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8_failover.c	2018-01-03 02:32:23.000000000 +0000
@@ -1,8 +1,8 @@
 /*
    +----------------------------------------------------------------------+
-   | PHP Version 5                                                        |
+   | PHP Version 7                                                        |
    +----------------------------------------------------------------------+
-   | Copyright (c) 1997-2016 The PHP Group                                |
+   | Copyright (c) 1997-2017 The PHP Group                                |
    +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |
@@ -42,27 +42,28 @@
 
 /* {{{ callback_fn() 
    OCI TAF callback function, calling userspace function */
-sb4 callback_fn(OCISvcCtx *svchp, OCIEnv *envhp, php_oci_connection *fo_ctx, ub4 fo_type, ub4 fo_event)
+sb4 callback_fn(void *svchp, void *envhp, void *fo_ctx, ub4 fo_type, ub4 fo_event)
 {
 	/* Create zval */
 	zval retval, params[3];
+    php_oci_connection *connection = (php_oci_connection*)fo_ctx;
 
 	/* Default return value */
 	sb4 returnValue = 0;
 
-	/* Check if userspace callback function was disabled */
-	if (Z_ISUNDEF(fo_ctx->taf_callback) || Z_ISNULL(fo_ctx->taf_callback)) {
+	/* Check if userspace callback function was unregistered */
+	if (Z_ISUNDEF(connection->taf_callback) || Z_ISNULL(connection->taf_callback)) {
 		return 0;
 	}
 
 	/* Initialize zval */
-	ZVAL_RES(&params[0], fo_ctx->id);
+	ZVAL_RES(&params[0], connection->id);
 	ZVAL_LONG(&params[1], fo_event);
 	ZVAL_LONG(&params[2], fo_type);
 
 	/* Call user function (if possible) */
-	if (call_user_function(EG(function_table), NULL, &fo_ctx->taf_callback, &retval, 3, params) == FAILURE) {
-		php_error_docref(NULL, E_WARNING, "Unable to call taf callback function, is it defined?");
+	if (call_user_function(EG(function_table), NULL, &connection->taf_callback, &retval, 3, params) == FAILURE) {
+		php_error_docref(NULL, E_WARNING, "Unable to call Oracle TAF callback function");
 	}
 
 	/* Set return value */
@@ -74,19 +75,19 @@ sb4 callback_fn(OCISvcCtx *svchp, OCIEnv
 	ZVAL_NULL(&params[0]);
 
 	/* Cleanup */
-	zval_dtor(&retval);
-	zval_dtor(&params[0]);
-	zval_dtor(&params[1]);
-	zval_dtor(&params[2]);
+	zval_ptr_dtor(&retval);
+	zval_ptr_dtor(&params[0]);
+	zval_ptr_dtor(&params[1]);
+	zval_ptr_dtor(&params[2]);
 
 	return returnValue;
 }
 /* }}} */
 
-/* {{{ php_oci_disable_taf_callback()
-   Disables the userspace callback function for Oracle TAF,
+/* {{{ php_oci_unregister_taf_callback()
+   Unregister the userspace callback function for Oracle TAF,
    while keeping the OCI callback alive */
-int php_oci_disable_taf_callback(php_oci_connection *connection)
+int php_oci_unregister_taf_callback(php_oci_connection *connection)
 {
 	return php_oci_register_taf_callback(connection, NULL);
 }
@@ -103,9 +104,9 @@ int php_oci_register_taf_callback(php_oc
 	OCIFocbkStruct failover;
 
 	if (!callback) {
-		/* Disable callback */
+		/* Unregister callback */
 		if (Z_ISUNDEF(connection->taf_callback) || Z_ISNULL(connection->taf_callback)) {
-			return 0; // Nothing to disable
+			return 0; // Nothing to unregister 
 		}
 
 		registered = 1;
diff -pruN 7.1.8-1/ext/oci8/oci8_interface.c 7.1.13-1/ext/oci8/oci8_interface.c
--- 7.1.8-1/ext/oci8/oci8_interface.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8_interface.c	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
@@ -56,13 +56,21 @@ PHP_FUNCTION(oci_register_taf_callback)
 	}
 
 	if (callback) {
+#if PHP_MAJOR_VERSION > 7 || (PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION >= 2)    
+		if (!zend_is_callable(callback, 0, 0)) {
+			callback_name = zend_get_callable_name(callback);
+			php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(callback_name));
+			zend_string_release(callback_name);
+			RETURN_FALSE;
+		}
+#else
 		if (!zend_is_callable(callback, 0, &callback_name)) {
 			php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(callback_name));
 			zend_string_release(callback_name);
 			RETURN_FALSE;
 		}
-
 		zend_string_release(callback_name);
+#endif
 	}
 
 	PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
@@ -75,6 +83,27 @@ PHP_FUNCTION(oci_register_taf_callback)
 }
 /* }}} */
 
+/* {{{ proto bool oci_unregister_taf_callback( resource connection )
+ *    Unregister a callback function for Oracle Transparent Application Failover (TAF) */
+PHP_FUNCTION(oci_unregister_taf_callback)
+{
+	zval *z_connection;
+	php_oci_connection *connection;
+
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &z_connection) == FAILURE) {
+		return;
+	}
+
+	PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
+
+	if (php_oci_unregister_taf_callback(connection) == 0) {
+		RETURN_TRUE;
+	} else {
+		RETURN_FALSE;
+	}
+}
+/* }}} */
+
 /* {{{ proto bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])
    Define a PHP variable to an Oracle column by name */
 /* if you want to define a LOB/CLOB etc make sure you allocate it via OCINewDescriptor BEFORE defining!!! */
@@ -88,7 +117,7 @@ PHP_FUNCTION(oci_define_by_name)
 	php_oci_define *define;
 	zend_string *zvtmp;
 
-	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsz/|l", &stmt, &name, &name_len, &var, &type) == FAILURE) {
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsz|l", &stmt, &name, &name_len, &var, &type) == FAILURE) {
 		return;
 	}
 
@@ -124,7 +153,8 @@ PHP_FUNCTION(oci_define_by_name)
 	define->name[name_len] = '\0';
 	define->name_len = (ub4) name_len;
 	define->type = (ub4) type;
-	define->zval = var;
+	ZEND_ASSERT(Z_ISREF_P(var));
+	ZVAL_COPY(&define->val, var);
 
 	RETURN_TRUE;
 }
@@ -173,7 +203,7 @@ PHP_FUNCTION(oci_bind_array_by_name)
 	zval *bind_var = NULL;
 	php_oci_statement *statement;
 	
-	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsz/l|ll", &z_statement, &name, &name_len, &bind_var, &max_array_len, &max_item_len, &type) == FAILURE) {
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rszl|ll", &z_statement, &name, &name_len, &bind_var, &max_array_len, &max_item_len, &type) == FAILURE) {
 		return;
 	}
 
@@ -1410,7 +1440,7 @@ PHP_FUNCTION(oci_fetch_all)
 
 	PHP_OCI_ZVAL_TO_STATEMENT(z_statement, statement);
 
-	zval_dtor(array);
+	zval_ptr_dtor(array);
 
 	while (skip--) {
 		if (php_oci_statement_fetch(statement, nrows)) {
@@ -1581,14 +1611,15 @@ PHP_FUNCTION(oci_close)
 	}
 
 	PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
-	if (GC_REFCOUNT(connection->id) == 2) /* CHANGED VERSION::PHP7
-											 Changed the refCount to 2 since
-											 internally Zend engine increments
-											 RefCount value by 1 */
+	if (GC_REFCOUNT(connection->id) == 2) { /* CHANGED VERSION::PHP7
+											   Changed the refCount to 2 since
+											   internally Zend engine increments
+											   RefCount value by 1 */
+		/* Unregister Oracle TAF */
+		php_oci_unregister_taf_callback(connection);
+
 		zend_list_close(connection->id);
-	
-	/* Disable Oracle TAF */
-	php_oci_disable_taf_callback(connection);
+	}
 
 	/* ZVAL_NULL(z_connection); */
 	
diff -pruN 7.1.8-1/ext/oci8/oci8_lob.c 7.1.13-1/ext/oci8/oci8_lob.c
--- 7.1.8-1/ext/oci8/oci8_lob.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8_lob.c	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
diff -pruN 7.1.8-1/ext/oci8/oci8_statement.c 7.1.13-1/ext/oci8/oci8_statement.c
--- 7.1.8-1/ext/oci8/oci8_statement.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/oci8_statement.c	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
@@ -364,8 +364,10 @@ int php_oci_statement_fetch(php_oci_stat
 				continue;
 			}
 			
-			zval_dtor(column->define->zval);
-			php_oci_column_to_zval(column, column->define->zval, 0);
+			ZEND_ASSERT(Z_ISREF(column->define->val));
+			zval_ptr_dtor(Z_REFVAL(column->define->val));
+			ZVAL_NULL(Z_REFVAL(column->define->val));
+			php_oci_column_to_zval(column, Z_REFVAL(column->define->val), 0);
 		}
 
 		return 0;
@@ -910,10 +912,12 @@ void php_oci_statement_free(php_oci_stat
 int php_oci_bind_pre_exec(zval *data, void *result)
 {
 	php_oci_bind *bind = (php_oci_bind *) Z_PTR_P(data);
+	zval *zv = &bind->val;
 
 	*(int *)result = 0;
 
-	if (Z_TYPE_P(bind->zval) == IS_ARRAY) {
+	ZVAL_DEREF(zv);
+	if (Z_TYPE_P(zv) == IS_ARRAY) {
 		/* These checks are currently valid for oci_bind_by_name, not
 		 * oci_bind_array_by_name.  Also bind->type and
 		 * bind->indicator are not used for oci_bind_array_by_name.
@@ -927,7 +931,7 @@ int php_oci_bind_pre_exec(zval *data, vo
 		case SQLT_CLOB:
 		case SQLT_BLOB:
 		case SQLT_RDD:
-			if (Z_TYPE_P(bind->zval) != IS_OBJECT) {
+			if (Z_TYPE_P(zv) != IS_OBJECT) {
 				php_error_docref(NULL, E_WARNING, "Invalid variable used for bind");
 				*(int *)result = 1;
 			}
@@ -943,14 +947,14 @@ int php_oci_bind_pre_exec(zval *data, vo
 		case SQLT_LBI:
 		case SQLT_BIN:
 		case SQLT_LNG:
-			if (Z_TYPE_P(bind->zval) == IS_RESOURCE || Z_TYPE_P(bind->zval) == IS_OBJECT) {
+			if (Z_TYPE_P(zv) == IS_RESOURCE || Z_TYPE_P(zv) == IS_OBJECT) {
 				php_error_docref(NULL, E_WARNING, "Invalid variable used for bind");
 				*(int *)result = 1;
 			}
 			break;
 
 		case SQLT_RSET:
-			if (Z_TYPE_P(bind->zval) != IS_RESOURCE) {
+			if (Z_TYPE_P(zv) != IS_RESOURCE) {
 				php_error_docref(NULL, E_WARNING, "Invalid variable used for bind");
 				*(int *)result = 1;
 			}
@@ -971,30 +975,34 @@ int php_oci_bind_post_exec(zval *data)
 	php_oci_bind *bind = (php_oci_bind *) Z_PTR_P(data);
 	php_oci_connection *connection = bind->parent_statement->connection;
 	sword errstatus;
+	zval *zv = &bind->val;
 
+	ZVAL_DEREF(zv);
 	if (bind->indicator == -1) { /* NULL */
-		zval *val = bind->zval;
-		if (Z_TYPE_P(val) == IS_STRING) {
-			*Z_STRVAL_P(val) = '\0'; /* XXX avoid warning in debug mode */
-		}
-		zval_dtor(val);
-		ZVAL_NULL(val);
-	} else if (Z_TYPE_P(bind->zval) == IS_STRING
-			   && Z_STRLEN_P(bind->zval) > 0
-			   && Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] != '\0') {
+		if (Z_TYPE_P(zv) == IS_STRING) {
+			*Z_STRVAL_P(zv) = '\0'; /* XXX avoid warning in debug mode */
+		}
+		zval_ptr_dtor(zv);
+		ZVAL_NULL(zv);
+	} else if (Z_TYPE_P(zv) == IS_STRING
+			   && Z_STRLEN_P(zv) > 0
+			   && Z_STRVAL_P(zv)[ Z_STRLEN_P(zv) ] != '\0') {
 		/* The post- PHP 5.3 feature for "interned" strings disallows
 		 * their reallocation but (i) any IN binds either interned or
 		 * not should already be null terminated and (ii) for OUT
 		 * binds, php_oci_bind_out_callback() should have allocated a
 		 * new string that we can modify here.
 		 */
-		Z_STR_P(bind->zval) = zend_string_extend(Z_STR_P(bind->zval), Z_STRLEN_P(bind->zval)+1, 0);
-		Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] = '\0';
-	} else if (Z_TYPE_P(bind->zval) == IS_ARRAY) {
+		SEPARATE_STRING(zv);
+		Z_STR_P(zv) = zend_string_extend(Z_STR_P(zv), Z_STRLEN_P(zv)+1, 0);
+		Z_STRVAL_P(zv)[ Z_STRLEN_P(zv) ] = '\0';
+	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
 		int i;
 		zval *entry = NULL;
-		HashTable *hash = HASH_OF(bind->zval);
-	
+		HashTable *hash;
+
+		SEPARATE_ARRAY(zv);
+		hash = HASH_OF(zv);
 		zend_hash_internal_pointer_reset(hash);
 
 		switch (bind->array.type) {
@@ -1003,22 +1011,22 @@ int php_oci_bind_post_exec(zval *data)
 			case SQLT_LNG:
 				for (i = 0; i < (int) bind->array.current_length; i++) {
 					if ((i < (int) bind->array.old_length) && (entry = zend_hash_get_current_data(hash)) != NULL) {
-						zval_dtor(entry);
+						zval_ptr_dtor(entry);
 						ZVAL_LONG(entry, ((oci_phpsized_int *)(bind->array.elements))[i]);
 						zend_hash_move_forward(hash);
 					} else {
-						add_next_index_long(bind->zval, ((oci_phpsized_int *)(bind->array.elements))[i]);
+						add_next_index_long(zv, ((oci_phpsized_int *)(bind->array.elements))[i]);
 					}
 				}
 				break;
 			case SQLT_FLT:
 				for (i = 0; i < (int) bind->array.current_length; i++) {
 					if ((i < (int) bind->array.old_length) && (entry = zend_hash_get_current_data(hash)) != NULL) {
-						zval_dtor(entry);
+						zval_ptr_dtor(entry);
 						ZVAL_DOUBLE(entry, ((double *)(bind->array.elements))[i]);
 						zend_hash_move_forward(hash);
 					} else {
-						add_next_index_double(bind->zval, ((double *)(bind->array.elements))[i]);
+						add_next_index_double(zv, ((double *)(bind->array.elements))[i]);
 					}
 				}
 				break;
@@ -1031,7 +1039,7 @@ int php_oci_bind_post_exec(zval *data)
 							
 					if ((i < (int) bind->array.old_length) && (entry = zend_hash_get_current_data(hash)) != NULL) {
 						PHP_OCI_CALL_RETURN(errstatus, OCIDateToText, (connection->err, &(((OCIDate *)(bind->array.elements))[i]), 0, 0, 0, 0, &buff_len, buff));
-						zval_dtor(entry);
+						zval_ptr_dtor(entry);
 
 						if (errstatus != OCI_SUCCESS) {
 							connection->errcode = php_oci_error(connection->err, errstatus);
@@ -1047,10 +1055,10 @@ int php_oci_bind_post_exec(zval *data)
 						if (errstatus != OCI_SUCCESS) {
 							connection->errcode = php_oci_error(connection->err, errstatus);
 							PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
-							add_next_index_null(bind->zval);
+							add_next_index_null(zv);
 						} else {
 							connection->errcode = 0; /* retain backwards compat with OCI8 1.4 */
-							add_next_index_stringl(bind->zval, (char *)buff, buff_len);
+							add_next_index_stringl(zv, (char *)buff, buff_len);
 						}
 					}
 				}
@@ -1066,20 +1074,21 @@ int php_oci_bind_post_exec(zval *data)
 					/* int curr_element_length = strlen(((text *)bind->array.elements)+i*bind->array.max_length); */
 					int curr_element_length = bind->array.element_lengths[i];
 					if ((i < (int) bind->array.old_length) && (entry = zend_hash_get_current_data(hash)) != NULL) {
-						zval_dtor(entry);
+						zval_ptr_dtor(entry);
 						ZVAL_STRINGL(entry, (char *)(((text *)bind->array.elements)+i*bind->array.max_length), curr_element_length);
 						zend_hash_move_forward(hash);
 					} else {
-						add_next_index_stringl(bind->zval, (char *)(((text *)bind->array.elements)+i*bind->array.max_length), curr_element_length);
+						add_next_index_stringl(zv, (char *)(((text *)bind->array.elements)+i*bind->array.max_length), curr_element_length);
 					}
 				}
 				break;
 		}
-	} else if ((Z_TYPE_P(bind->zval) == IS_TRUE) || (Z_TYPE_P(bind->zval) == IS_FALSE)) {
-		if (Z_LVAL_P(bind->zval) == 0)
-			ZVAL_BOOL(bind->zval, FALSE);
-		else if (Z_LVAL_P(bind->zval) == 1)
-			ZVAL_BOOL(bind->zval, TRUE);
+	} else if ((Z_TYPE_P(zv) == IS_TRUE) || (Z_TYPE_P(zv) == IS_FALSE)) {
+		/* This convetrsion is done on purpose (ext/oci8 uses LVAL as a temorary value) */
+		if (Z_LVAL_P(zv) == 0)
+			ZVAL_BOOL(zv, FALSE);
+		else if (Z_LVAL_P(zv) == 1)
+			ZVAL_BOOL(zv, TRUE);
 	}
 
 	return 0;
@@ -1103,11 +1112,8 @@ int php_oci_bind_by_name(php_oci_stateme
 	sword errstatus;
 	zval *param = NULL;
 
-	if (!Z_ISREF_P(var)) {
-		param = var;
-	} else {
-		param = Z_REFVAL_P(var);
-	}
+	ZEND_ASSERT(Z_ISREF_P(var));
+	param = Z_REFVAL_P(var);
 
 	switch (type) {
 		case SQLT_NTY:
@@ -1242,9 +1248,9 @@ int php_oci_bind_by_name(php_oci_stateme
 
 	if ((old_bind = zend_hash_str_find_ptr(statement->binds, name, name_len)) != NULL) {
 		bindp = old_bind;
-		if (!Z_ISUNDEF(bindp->parameter)) {
-			zval_ptr_dtor(&bindp->parameter);
-			ZVAL_UNDEF(&bindp->parameter);
+		if (!Z_ISUNDEF(bindp->val)) {
+			zval_ptr_dtor(&bindp->val);
+			ZVAL_UNDEF(&bindp->val);
 		}
 	} else {
 		zend_string *zvtmp;
@@ -1254,9 +1260,6 @@ int php_oci_bind_by_name(php_oci_stateme
 		zend_string_release(zvtmp);
 	}
 
-	/* Keep a copy of bound variable in the bind hash */
-	ZVAL_COPY(&bindp->parameter, var);
-
 	/* Make sure the minimum of value_sz is 1 to avoid ORA-3149 
 	 * when both in/out parameters are bound with empty strings
 	 */
@@ -1266,7 +1269,7 @@ int php_oci_bind_by_name(php_oci_stateme
 	bindp->descriptor = oci_desc;
 	bindp->statement = oci_stmt;
 	bindp->parent_statement = statement;
-	bindp->zval = param;
+	ZVAL_COPY(&bindp->val, var);
 	bindp->type = type;
 	/* Storing max length set in OCIBindByName() to check it later in
 	 * php_oci_bind_in_callback() function to avoid ORA-1406 error while
@@ -1360,11 +1363,14 @@ sb4 php_oci_bind_in_callback(
 	php_oci_bind *phpbind;
 	zval *val;
 
-	if (!(phpbind=(php_oci_bind *)ictxp) || !(val = phpbind->zval)) {
+	if (!(phpbind=(php_oci_bind *)ictxp) || Z_ISUNDEF(phpbind->val)) {
 		php_error_docref(NULL, E_WARNING, "Invalid phpbind pointer value");
 		return OCI_ERROR;
 	}
 
+	val = &phpbind->val;
+	ZVAL_DEREF(val);
+
 	if (Z_ISNULL_P(val)) {
 		/* we're going to insert a NULL column */
 		phpbind->indicator = -1;
@@ -1421,11 +1427,14 @@ sb4 php_oci_bind_out_callback(
 	zval *val;
 	sb4 retval = OCI_ERROR;
 
-	if (!(phpbind=(php_oci_bind *)octxp) || !(val = phpbind->zval)) {
+	if (!(phpbind=(php_oci_bind *)octxp) || Z_ISUNDEF(phpbind->val)) {
 		php_error_docref(NULL, E_WARNING, "Invalid phpbind pointer value");
 		return retval;
 	}
 
+	val = &phpbind->val;
+	ZVAL_DEREF(val);
+
 	if (Z_TYPE_P(val) == IS_RESOURCE) {
 		/* Processing for ref-cursor out binds */
 		if (phpbind->statement != NULL) {
@@ -1463,7 +1472,7 @@ sb4 php_oci_bind_out_callback(
 		retval = OCI_CONTINUE;
 	} else {
 		convert_to_string(val);
-		zval_dtor(val);
+		zval_ptr_dtor(val);
 
 		{
 			char *p = ecalloc(1, PHP_OCI_PIECE_SIZE);
@@ -1474,12 +1483,12 @@ sb4 php_oci_bind_out_callback(
 		Z_STRLEN_P(val) = PHP_OCI_PIECE_SIZE; /* 64K-1 is max XXX */
 		Z_STRVAL_P(val) = ecalloc(1, Z_STRLEN_P(val) + 1);
 		/* XXX is this right? */
-		ZVAL_STRINGL(val, NULL, Z_STRLEN(phpbind->zval) + 1);
+		ZVAL_STRINGL(val, NULL, Z_STRLEN(val) + 1);
 #endif		
 
 		/* XXX we assume that zend-zval len has 4 bytes */
-		*alenpp = (ub4*) &Z_STRLEN_P(phpbind->zval);
-		*bufpp = Z_STRVAL_P(phpbind->zval);
+		*alenpp = (ub4*) &Z_STRLEN_P(val);
+		*bufpp = Z_STRVAL_P(val);
 		*piecep = OCI_ONE_PIECE;
 		*rcodepp = &phpbind->retcode;
 		*indpp = &phpbind->indicator;
@@ -1527,10 +1536,10 @@ php_oci_out_column *php_oci_statement_ge
 		column = php_oci_statement_get_column(statement, Z_LVAL(tmp), NULL, 0);
 		if (!column) {
 			php_error_docref(NULL, E_WARNING, "Invalid column index \"" ZEND_LONG_FMT "\"", Z_LVAL(tmp));
-			zval_dtor(&tmp);
+			zval_ptr_dtor(&tmp);
 			return NULL;
 		}
-		zval_dtor(&tmp);
+		zval_ptr_dtor(&tmp);
 	}
 	return column;
 }
@@ -1586,11 +1595,15 @@ int php_oci_statement_get_numrows(php_oc
  Bind arrays to PL/SQL types */
 int php_oci_bind_array_by_name(php_oci_statement *statement, char *name, size_t name_len, zval *var, zend_long max_table_length, zend_long maxlength, zend_long type)
 {
-	php_oci_bind *bind, *bindp;
+	php_oci_bind *bind;
 	sword errstatus;
 	zend_string *zvtmp;
+	zval *val;
 
-	convert_to_array(var);
+	ZEND_ASSERT(Z_ISREF_P(var));
+	val = Z_REFVAL_P(var);
+	SEPARATE_ZVAL_NOREF(val);
+	convert_to_array(val);
 
 	if (maxlength < -1) {
 		php_error_docref(NULL, E_WARNING, "Invalid max length value (" ZEND_LONG_FMT ")", maxlength);
@@ -1601,11 +1614,11 @@ int php_oci_bind_array_by_name(php_oci_s
 		case SQLT_NUM:
 		case SQLT_INT:
 		case SQLT_LNG:
-			bind = php_oci_bind_array_helper_number(var, max_table_length);
+			bind = php_oci_bind_array_helper_number(val, max_table_length);
 			break;
 
 		case SQLT_FLT:
-			bind = php_oci_bind_array_helper_double(var, max_table_length);
+			bind = php_oci_bind_array_helper_double(val, max_table_length);
 			break;
 			
 		case SQLT_AFC:
@@ -1614,14 +1627,14 @@ int php_oci_bind_array_by_name(php_oci_s
 		case SQLT_AVC:
 		case SQLT_STR:
 		case SQLT_LVC:
-			if (maxlength == -1 && zend_hash_num_elements(Z_ARRVAL_P(var)) == 0) {
+			if (maxlength == -1 && zend_hash_num_elements(Z_ARRVAL_P(val)) == 0) {
 				php_error_docref(NULL, E_WARNING, "You must provide max length value for empty arrays");
 				return 1;
 			}
-			bind = php_oci_bind_array_helper_string(var, max_table_length, maxlength);
+			bind = php_oci_bind_array_helper_string(val, max_table_length, maxlength);
 			break;
 		case SQLT_ODT:
-			bind = php_oci_bind_array_helper_date(var, max_table_length, statement->connection);
+			bind = php_oci_bind_array_helper_date(val, max_table_length, statement->connection);
 			break;
 		default:
 			php_error_docref(NULL, E_WARNING, "Unknown or unsupported datatype given: " ZEND_LONG_FMT, type);
@@ -1638,7 +1651,7 @@ int php_oci_bind_array_by_name(php_oci_s
 	bind->statement = NULL;
 	bind->parent_statement = statement;
 	bind->bind = NULL;
-	bind->zval = var;
+	ZVAL_COPY(&bind->val, var);
 	bind->array.type = type;
 	bind->indicator = 0;  		/* not used for array binds */
 	bind->type = 0; 			/* not used for array binds */
@@ -1677,6 +1690,8 @@ int php_oci_bind_array_by_name(php_oci_s
 			efree(bind->array.indicators);
 		}
 
+		zval_ptr_dtor(&bind->val);
+
 		efree(bind);
 
 		statement->errcode = php_oci_error(statement->err, errstatus);
@@ -1690,7 +1705,7 @@ int php_oci_bind_array_by_name(php_oci_s
 	}
 
 	zvtmp = zend_string_init(name, name_len, 0);
-	bindp = zend_hash_update_ptr(statement->binds, zvtmp, bind);
+	zend_hash_update_ptr(statement->binds, zvtmp, bind);
 	zend_string_release(zvtmp);
 
 	statement->errcode = 0; /* retain backwards compat with OCI8 1.4 */
@@ -1707,6 +1722,7 @@ php_oci_bind *php_oci_bind_array_helper_
 	HashTable *hash;
 	zval *entry;
 
+	SEPARATE_ARRAY(var); /* TODO: may be use new HashTable iteration and prevent inplace modification */
 	hash = HASH_OF(var);
 
 	if (maxlength == -1) {
@@ -1723,7 +1739,7 @@ php_oci_bind *php_oci_bind_array_helper_
 	}
 	
 	bind = emalloc(sizeof(php_oci_bind));
-	ZVAL_UNDEF(&bind->parameter);
+	ZVAL_UNDEF(&bind->val);
 	bind->array.elements		= (text *)safe_emalloc(max_table_length * (maxlength + 1), sizeof(text), 0);
 	memset(bind->array.elements, 0, max_table_length * (maxlength + 1) * sizeof(text));
 	bind->array.current_length	= zend_hash_num_elements(Z_ARRVAL_P(var));
@@ -1780,10 +1796,11 @@ php_oci_bind *php_oci_bind_array_helper_
 	HashTable *hash;
 	zval *entry;
 
+	SEPARATE_ARRAY(var); /* TODO: may be use new HashTable iteration and prevent inplace modification */
 	hash = HASH_OF(var);
 
 	bind = emalloc(sizeof(php_oci_bind));
-	ZVAL_UNDEF(&bind->parameter);
+	ZVAL_UNDEF(&bind->val);
 	bind->array.elements		= (oci_phpsized_int *)safe_emalloc(max_table_length, sizeof(oci_phpsized_int), 0);
 	bind->array.current_length	= zend_hash_num_elements(Z_ARRVAL_P(var));
 	bind->array.old_length		= bind->array.current_length;
@@ -1820,10 +1837,11 @@ php_oci_bind *php_oci_bind_array_helper_
 	HashTable *hash;
 	zval *entry;
 
+	SEPARATE_ARRAY(var); /* TODO: may be use new HashTable iteration and prevent inplace modification */
 	hash = HASH_OF(var);
 
 	bind = emalloc(sizeof(php_oci_bind));
-	ZVAL_UNDEF(&bind->parameter);
+	ZVAL_UNDEF(&bind->val);
 	bind->array.elements		= (double *)safe_emalloc(max_table_length, sizeof(double), 0);
 	bind->array.current_length	= zend_hash_num_elements(Z_ARRVAL_P(var));
 	bind->array.old_length		= bind->array.current_length;
@@ -1861,10 +1879,11 @@ php_oci_bind *php_oci_bind_array_helper_
 	zval *entry;
 	sword errstatus;
 
+	SEPARATE_ARRAY(var); /* TODO: may be use new HashTable iteration and prevent inplace modification */
 	hash = HASH_OF(var);
 
 	bind = emalloc(sizeof(php_oci_bind));
-	ZVAL_UNDEF(&bind->parameter);
+	ZVAL_UNDEF(&bind->val);
 	bind->array.elements		= (OCIDate *)safe_emalloc(max_table_length, sizeof(OCIDate), 0);
 	bind->array.current_length	= zend_hash_num_elements(Z_ARRVAL_P(var));
 	bind->array.old_length		= bind->array.current_length;
diff -pruN 7.1.8-1/ext/oci8/package.xml 7.1.13-1/ext/oci8/package.xml
--- 7.1.8-1/ext/oci8/package.xml	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/package.xml	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@ Use the OCI8 extension to access Oracle
 oci8' to install for PHP 7.  Use 'pecl install oci8-2.0.12' to install
 for PHP 5.2 - PHP 5.6.  Use 'pecl install oci8-1.4.10' to install for
 PHP 4.3.9 - PHP 5.1.  The OCI8 extension can be linked with Oracle
-client libraries from Oracle Database 12.1, 11, or 10.2.  These
+client libraries from Oracle Database 12, 11, or 10.2.  These
 libraries are found in your database installation, or in the free
 Oracle Instant Client from
 http://www.oracle.com/technetwork/database/features/instant-client/.
@@ -28,6 +28,12 @@ Interoperability Support" (ID 207303.1)
   <active>yes</active>
  </lead>
  <lead>
+  <name>Tianfang Yang</name>
+  <user>tianfyan</user>
+  <email>tianfyan@php.net</email>
+  <active>yes</active>
+ </lead>
+ <lead>
   <name>Antony Dovgal</name>
   <user>tony2001</user>
   <email>tony2001@php.net</email>
@@ -46,12 +52,12 @@ Interoperability Support" (ID 207303.1)
   <active>no</active>
  </lead>
 
- <date>2017-06-20</date>
+ <date>2017-08-15</date>
  <time>12:00:00</time>
 
   <version>
-   <release>2.1.6</release>
-   <api>2.1.6</api>
+   <release>2.1.8</release>
+   <api>2.1.8</api>
   </version>
   <stability>
    <release>stable</release>
@@ -60,7 +66,7 @@ Interoperability Support" (ID 207303.1)
   <license uri="http://www.php.net/license">PHP</license>
   <notes>
 This version is for PHP 7 only.
-Fixed bug #74625 (Integer overflow in oci_bind_array_by_name). (Ingmar Runge)
+Fixed reference counting and memory issues. (Dmitry, Tianfang)
   </notes>
  <contents>
   <dir name="/">
@@ -470,6 +476,38 @@ Fixed bug #74625 (Integer overflow in oc
  </extsrcrelease>
  <changelog>
 
+<release>
+  <version>
+   <release>2.1.7</release>
+   <api>2.1.7</api>
+  </version>
+  <stability>
+   <release>stable</release>
+   <api>stable</api>
+  </stability>
+  <license uri="http://www.php.net/license">PHP</license>
+  <notes>
+This version is for PHP 7 only.
+Added oci_unregister_taf_callback()
+  </notes>
+</release>
+
+<release>
+  <version>
+   <release>2.1.6</release>
+   <api>2.1.6</api>
+  </version>
+  <stability>
+   <release>stable</release>
+   <api>stable</api>
+  </stability>
+  <license uri="http://www.php.net/license">PHP</license>
+  <notes>
+This version is for PHP 7 only.
+Fixed bug #74625 (Integer overflow in oci_bind_array_by_name). (Ingmar Runge)
+  </notes>
+</release>
+
 <release>   
  <version>
    <release>2.1.5</release>
diff -pruN 7.1.8-1/ext/oci8/php_oci8.h 7.1.13-1/ext/oci8/php_oci8.h
--- 7.1.8-1/ext/oci8/php_oci8.h	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/php_oci8.h	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
@@ -43,7 +43,7 @@
  */
 #undef PHP_OCI8_VERSION
 #endif
-#define PHP_OCI8_VERSION "2.1.6"
+#define PHP_OCI8_VERSION "2.1.8"
 
 extern zend_module_entry oci8_module_entry;
 #define phpext_oci8_ptr &oci8_module_entry
diff -pruN 7.1.8-1/ext/oci8/php_oci8_int.h 7.1.13-1/ext/oci8/php_oci8_int.h
--- 7.1.8-1/ext/oci8/php_oci8_int.h	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/php_oci8_int.h	2018-01-03 02:32:23.000000000 +0000
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Stig Sther Bakken <ssb@php.net>                            |
+   | Authors: Stig Sæther Bakken <ssb@php.net>                            |
    |          Thies C. Arntzen <thies@thieso.net>                         |
    |                                                                      |
    | Collection support by Andy Sautins <asautins@veripost.net>           |
@@ -209,7 +209,7 @@ typedef struct {
 
 /* {{{ php_oci_define */
 typedef struct { 
-	zval		*zval;			/* zval used in define */
+	zval		 val;			/* zval used in define */
 	text		*name;			/* placeholder's name */
 	ub4			 name_len;		/* placeholder's name length */
 	ub4			 type;			/* define type */
@@ -244,8 +244,7 @@ typedef struct {
 /* {{{ php_oci_bind */
 typedef struct { 
 	OCIBind				*bind;					/* bind handle */
-	zval				*zval;					/* value */
-	zval				parameter;				/* a copy of bound variable used for oci_bind_by_name */
+	zval				val;					/* value */
 	dvoid				*descriptor;			/* used for binding of LOBS etc */
 	OCIStmt				*statement;				/* used for binding REFCURSORs */
 	php_oci_statement	*parent_statement;		/* pointer to the parent statement */
@@ -536,7 +535,7 @@ ZEND_END_MODULE_GLOBALS(oci) /* }}} */
 /* {{{ transparent failover related prototypes */
 
 int php_oci_register_taf_callback(php_oci_connection *connection, zval *callback);
-int php_oci_disable_taf_callback(php_oci_connection *connection);
+int php_oci_unregister_taf_callback(php_oci_connection *connection);
 
 /* }}} */
 
diff -pruN 7.1.8-1/ext/oci8/tests/bug72524.phpt 7.1.13-1/ext/oci8/tests/bug72524.phpt
--- 7.1.8-1/ext/oci8/tests/bug72524.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/tests/bug72524.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -1,96 +1,96 @@
---TEST--
-Bug #72524 (Binding null values triggers ORA-24816 error)
---SKIPIF--
-<?php
-$target_dbs = array('oracledb' => true, 'timesten' => true);  // test runs on these DBs
-require(dirname(__FILE__).'/skipif.inc');
-?>
---FILE--
-
-<?php
-
-require(dirname(__FILE__).'/connect.inc');
-
-// Initialize
-
-$stmtarray = array(
-         "CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-// Run test
-
-$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";
-
-echo "Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default\n";
-$stmt = oci_parse($c, $sql);
-
-$clob = NULL;
-$varchar2 = NULL;
-oci_bind_by_name($stmt, ':clob_col', $clob);
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
-
-var_dump(oci_execute($stmt));
-
-echo "Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default\n";
-
-$clob = '';
-$varchar2 = '';
-oci_bind_by_name($stmt, ':clob_col', $clob);
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
-
-var_dump(oci_execute($stmt));
-
-echo "Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default\n";
-$clob = 'abc';
-$varchar2 = 'abc';
-oci_bind_by_name($stmt, ':clob_col', $clob, 0);
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);
-
-var_dump(oci_execute($stmt));
-
-echo "Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default\n";
-$clob = NULL;
-$varchar2 = NULL;
-oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);
-
-var_dump(oci_execute($stmt));
-
-echo "Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default\n";
-$clob = NULL;
-$varchar2 = NULL;
-oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);
-
-
-var_dump(oci_execute($stmt));
-
-// Cleanup
-
-$stmtarray = array(
-    "DROP TABLE mytable"
-);
-
-oci8_test_sql_execute($c, $stmtarray);
-
-?>
-===DONE===
-<?php exit(0); ?>
---EXPECTF--
-Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default
-bool(true)
-Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default
-bool(true)
-Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default
-bool(true)
-Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default
-
-Warning: oci_execute(): ORA-24816: %s in %s on line %d
-bool(false)
-Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default
-
-Warning: oci_execute(): ORA-24816: %s in %s on line %d
-bool(false)
-===DONE===
+--TEST--
+Bug #72524 (Binding null values triggers ORA-24816 error)
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => true);  // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+// Initialize
+
+$stmtarray = array(
+         "CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+// Run test
+
+$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";
+
+echo "Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default\n";
+$stmt = oci_parse($c, $sql);
+
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default\n";
+
+$clob = '';
+$varchar2 = '';
+oci_bind_by_name($stmt, ':clob_col', $clob);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default\n";
+$clob = 'abc';
+$varchar2 = 'abc';
+oci_bind_by_name($stmt, ':clob_col', $clob, 0);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default\n";
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default\n";
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);
+
+
+var_dump(oci_execute($stmt));
+
+// Cleanup
+
+$stmtarray = array(
+    "DROP TABLE mytable"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Test 1 - P1 Value: NULL  P1 Length: Default  P1 Type: Default  P2 Value: NULL P2 Length: Default  P2 Type: Default
+bool(true)
+Test 2 - P1 Value: ''    P1 Length: Default  P1 Type: Default  P2 Value: ''   P2 Length: Default  P2 Type: Default
+bool(true)
+Test 3 - P1 Value: 'abc' P1 Length: 0        P1 Type: Default  P2 Value: ''   P2 Length: 0        P2 Type: Default
+bool(true)
+Test 4 - P1 Value: NULL  P1 Length: -1       P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1       P2 Type:Default
+
+Warning: oci_execute(): ORA-24816: %s in %s on line %d
+bool(false)
+Test 5 - P1 Value: NULL  P1 Length: 0        P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0        P2 Type:Default
+
+Warning: oci_execute(): ORA-24816: %s in %s on line %d
+bool(false)
+===DONE===
diff -pruN 7.1.8-1/ext/oci8/tests/coll_019.phpt 7.1.13-1/ext/oci8/tests/coll_019.phpt
--- 7.1.8-1/ext/oci8/tests/coll_019.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/tests/coll_019.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -13,7 +13,7 @@ require(dirname(__FILE__).'/skipif.inc')
 
 require dirname(__FILE__)."/connect.inc";
 
-$ora_sql = "DROP TYPE ".$type_name;;
+$ora_sql = "DROP TYPE ".$type_name;
 $statement = oci_parse($c,$ora_sql);
 @oci_execute($statement);
 
diff -pruN 7.1.8-1/ext/oci8/tests/driver_name.phpt 7.1.13-1/ext/oci8/tests/driver_name.phpt
--- 7.1.8-1/ext/oci8/tests/driver_name.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/tests/driver_name.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -57,11 +57,11 @@ function get_attr($conn)
 ?>
 --EXPECT--
 **Test 1.1 - Default values for the attribute **************
-The value of DRIVER_NAME is PHP OCI8 : 2.1.6
+The value of DRIVER_NAME is PHP OCI8 : 2.1.8
 
 ***Test 1.2 - Get the values from different connections **************
 Testing with oci_pconnect()
-The value of DRIVER_NAME is PHP OCI8 : 2.1.6
+The value of DRIVER_NAME is PHP OCI8 : 2.1.8
 Testing with oci_new_connect()
-The value of DRIVER_NAME is PHP OCI8 : 2.1.6
+The value of DRIVER_NAME is PHP OCI8 : 2.1.8
 Done
diff -pruN 7.1.8-1/ext/oci8/tests/lob_040.phpt 7.1.13-1/ext/oci8/tests/lob_040.phpt
--- 7.1.8-1/ext/oci8/tests/lob_040.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/tests/lob_040.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -29,9 +29,9 @@ for ($i = 0; $i < NUMLOBS; $i++) {
 }
 
 for ($i = 0; $i < NUMLOBS; $i++) {
-	echo "Row $i Size:  " . $row[$i][0]->size() . "\n";;
+	echo "Row $i Size:  " . $row[$i][0]->size() . "\n";
 	echo "Pos 1: " . $row[$i][0]->tell() . "\n";
-	echo "Data:  " . $row[$i][0]->read(5) . "\n";;
+	echo "Data:  " . $row[$i][0]->read(5) . "\n";
 	echo "Pos 2: " . $row[$i][0]->tell() . "\n";
 	echo "Data:  " . $row[$i][0]->read(12) . "\n";
 }
diff -pruN 7.1.8-1/ext/oci8/tests/xmltype_02.phpt 7.1.13-1/ext/oci8/tests/xmltype_02.phpt
--- 7.1.8-1/ext/oci8/tests/xmltype_02.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/oci8/tests/xmltype_02.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -69,7 +69,7 @@ var_dump($row);
 
 echo "Test 2 Manipulate the data using SimpleXML\n";
 
-$sx = simplexml_load_string((binary)$row[0]->load());
+$sx = simplexml_load_string($row[0]->load());
 $row[0]->free();
 var_dump($sx);
 
@@ -178,4 +178,4 @@ string(%d) "<?xml version="1.0"?>
 %sVClearance>10</VClearance>
 </Warehouse>
 "
-===DONE===
\ No newline at end of file
+===DONE===
diff -pruN 7.1.8-1/ext/opcache/Optimizer/zend_dfg.c 7.1.13-1/ext/opcache/Optimizer/zend_dfg.c
--- 7.1.8-1/ext/opcache/Optimizer/zend_dfg.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/Optimizer/zend_dfg.c	2018-01-03 02:32:28.000000000 +0000
@@ -144,11 +144,11 @@ op1_use:
 					}
 				} else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
 					var_num = EX_VAR_TO_NUM(opline->op1.var);
-					if (opline->opcode == ZEND_VERIFY_RETURN_TYPE) {
+					if (!DFG_ISSET(def, set_size, j, var_num)) {
 						DFG_SET(use, set_size, j, var_num);
+					}
+					if (opline->opcode == ZEND_VERIFY_RETURN_TYPE) {
 						DFG_SET(def, set_size, j, var_num);
-					} else if (!DFG_ISSET(def, set_size, j, var_num)) {
-						DFG_SET(use, set_size, j, var_num);
 					}
 				}
 				if (opline->op2_type == IS_CV) {
diff -pruN 7.1.8-1/ext/opcache/Optimizer/zend_dump.c 7.1.13-1/ext/opcache/Optimizer/zend_dump.c
--- 7.1.8-1/ext/opcache/Optimizer/zend_dump.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/Optimizer/zend_dump.c	2018-01-03 02:32:28.000000000 +0000
@@ -690,7 +690,7 @@ static void zend_dump_block_info(const z
 	if (b->flags & ZEND_BB_KILL_VAR) {
 		fprintf(stderr, " kill_var");
 	}
-	if (!(dump_flags & ZEND_DUMP_HIDE_UNREACHABLE) & !(b->flags & ZEND_BB_REACHABLE)) {
+	if (!(dump_flags & ZEND_DUMP_HIDE_UNREACHABLE) && !(b->flags & ZEND_BB_REACHABLE)) {
 		fprintf(stderr, " unreachable");
 	}
 	if (b->flags & ZEND_BB_LOOP_HEADER) {
diff -pruN 7.1.8-1/ext/opcache/Optimizer/zend_inference.c 7.1.13-1/ext/opcache/Optimizer/zend_inference.c
--- 7.1.8-1/ext/opcache/Optimizer/zend_inference.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/Optimizer/zend_inference.c	2018-01-03 02:32:28.000000000 +0000
@@ -1590,7 +1590,7 @@ static void zend_infer_ranges_warmup(con
 					ssa->vars[j].definition_phi->has_range_constraint &&
 				    ssa->vars[j].definition_phi->constraint.range.negative &&
 				    ssa->vars[j].definition_phi->constraint.range.min_ssa_var < 0 &&
-				    ssa->vars[j].definition_phi->constraint.range.min_ssa_var < 0) {
+				    ssa->vars[j].definition_phi->constraint.range.max_ssa_var < 0) {
 					zend_ssa_range_constraint *constraint =
 						&ssa->vars[j].definition_phi->constraint.range;
 					if (tmp.min == ssa->var_info[j].range.min &&
@@ -1708,6 +1708,10 @@ static int zend_infer_ranges(const zend_
 			for (j = scc_var[scc]; j >= 0; j = next_scc_var[j]) {
 				if (!ssa->var_info[j].has_range) {
 					zend_inference_init_range(op_array, ssa, j, 1, ZEND_LONG_MIN, ZEND_LONG_MAX, 1);
+				} else if (ssa->vars[j].definition_phi &&
+				           ssa->vars[j].definition_phi->pi < 0) {
+					/* narrowing Phi functions first */
+					zend_ssa_range_narrowing(op_array, ssa, j, scc);
 				}
 				zend_bitset_incl(worklist, j);
 			}
@@ -2331,12 +2335,14 @@ static int zend_update_type_info(const z
 				}
 			} else if (opline->extended_value == ZEND_ASSIGN_OBJ) {
 				if (opline->op1_type == IS_CV) {
-					if (orig & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) {
-						orig &= (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE);
-						orig |= MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
-					}
-					if (orig & MAY_BE_OBJECT) {
-						orig |= (MAY_BE_RC1|MAY_BE_RCN);
+					if (!(orig & MAY_BE_REF)) {
+						if (orig & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) {
+							orig &= ~(MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE);
+							orig |= MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
+						}
+						if (orig & MAY_BE_OBJECT) {
+							orig |= (MAY_BE_RC1|MAY_BE_RCN);
+						}
 					}
 					UPDATE_SSA_TYPE(orig, ssa_ops[i].op1_def);
 					COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
@@ -2922,7 +2928,7 @@ static int zend_update_type_info(const z
 			break;
 		case ZEND_FE_FETCH_R:
 		case ZEND_FE_FETCH_RW:
-			tmp = (t2 & MAY_BE_REF);
+			tmp = t2;
 			if (t1 & MAY_BE_OBJECT) {
 				if (opline->opcode == ZEND_FE_FETCH_RW) {
 					tmp |= MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
@@ -2947,7 +2953,7 @@ static int zend_update_type_info(const z
 			}
 			UPDATE_SSA_TYPE(tmp, ssa_ops[i].op2_def);
 			if (ssa_ops[i].result_def >= 0) {
-				tmp = 0;
+				tmp = (ssa_ops[i].result_use >= 0) ? RES_USE_INFO() : 0;
 				if (t1 & MAY_BE_OBJECT) {
 					tmp |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
 				}
@@ -3069,7 +3075,13 @@ static int zend_update_type_info(const z
 					}
 					j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j);
 				}
-				UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
+				if ((tmp & MAY_BE_ARRAY) && (tmp & MAY_BE_ARRAY_KEY_ANY)) {
+					UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
+				} else {
+					/* invalid key type */
+					tmp = (tmp & (MAY_BE_RC1|MAY_BE_RCN)) | (t1 & ~(MAY_BE_RC1|MAY_BE_RCN));
+					UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
+				}
 				COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
 			}
 			/* FETCH_LIST on a string behaves like FETCH_R on null */
@@ -3279,9 +3291,11 @@ int zend_infer_types_ex(const zend_op_ar
 	zend_ssa_var_info *ssa_var_info = ssa->var_info;
 	int ssa_vars_count = ssa->vars_count;
 	int i, j;
-	uint32_t tmp;
+	uint32_t tmp, worklist_len = zend_bitset_len(ssa_vars_count);
 
-	WHILE_WORKLIST(worklist, zend_bitset_len(ssa_vars_count), j) {
+	while (!zend_bitset_empty(worklist, worklist_len)) {
+		j = zend_bitset_first(worklist, worklist_len);
+		zend_bitset_excl(worklist, j);
 		if (ssa_vars[j].definition_phi) {
 			zend_ssa_phi *p = ssa_vars[j].definition_phi;
 			if (p->pi >= 0) {
@@ -3340,7 +3354,7 @@ int zend_infer_types_ex(const zend_op_ar
 				return FAILURE;
 			}
 		}
-	} WHILE_WORKLIST_END();
+	}
 	return SUCCESS;
 }
 
diff -pruN 7.1.8-1/ext/opcache/Optimizer/zend_optimizer.c 7.1.13-1/ext/opcache/Optimizer/zend_optimizer.c
--- 7.1.8-1/ext/opcache/Optimizer/zend_optimizer.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/Optimizer/zend_optimizer.c	2018-01-03 02:32:28.000000000 +0000
@@ -1027,6 +1027,19 @@ int zend_optimize_script(zend_script *sc
 			ZEND_SET_FUNC_INFO(call_graph.op_arrays[i], NULL);
 		}
 
+		ZEND_HASH_FOREACH_PTR(&script->class_table, ce) {
+			ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
+				if (op_array->scope != ce) {
+					zend_op_array *orig_op_array;
+					if ((orig_op_array = zend_hash_find_ptr(&op_array->scope->function_table, name)) != NULL) {
+						HashTable *ht = op_array->static_variables;
+						*op_array = *orig_op_array;
+						op_array->static_variables = ht;
+					}
+				}
+			} ZEND_HASH_FOREACH_END();
+		} ZEND_HASH_FOREACH_END();
+
 		zend_arena_release(&ctx.arena, checkpoint);
 	} else
 #endif
diff -pruN 7.1.8-1/ext/opcache/tests/bug74980.phpt 7.1.13-1/ext/opcache/tests/bug74980.phpt
--- 7.1.8-1/ext/opcache/tests/bug74980.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/opcache/tests/bug74980.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,30 @@
+--TEST--
+Bug #74980 (Narrowing occurred during type inference)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+class A
+{
+
+	static function foo()
+	{
+		while ($undef) {
+			$arr[][] = NULL;
+		}
+ 
+		foreach ($arr as $a) {
+			bar($a + []);
+		}
+	}
+
+}
+
+echo "okey";
+?>
+--EXPECT--
+okey
diff -pruN 7.1.8-1/ext/opcache/tests/bug75255.phpt 7.1.13-1/ext/opcache/tests/bug75255.phpt
--- 7.1.8-1/ext/opcache/tests/bug75255.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/opcache/tests/bug75255.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,18 @@
+--TEST--
+Bug #75255 (Request hangs and not finish)
+--FILE--
+<?php
+function generatePlanImage() {
+    if ($abc > 5) {
+        $abc = 5;
+    }
+    for ($row = 0; $row < $abc; $row++) {
+        for ($col = 0; $col < $numCols; $col++) {
+            getPossibleRatio($abc);
+        }
+    }
+}
+?>
+DONE
+--EXPECT--
+DONE
diff -pruN 7.1.8-1/ext/opcache/tests/bug75570.phpt 7.1.13-1/ext/opcache/tests/bug75570.phpt
--- 7.1.8-1/ext/opcache/tests/bug75570.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/opcache/tests/bug75570.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,19 @@
+--TEST--
+Bug #75570 ("Narrowing occurred during type inference" error)
+--FILE--
+<?php
+function renderRawGraph(array $parents) {
+    $graph = array();
+    foreach ($parents as $p) {
+        foreach ($graph as $v) {
+            $graph[$v]['line'] = 1;
+        }
+        $graph[] = array(
+            'line' => 1,
+        );
+    }
+}
+?>
+OK
+--EXPECT--
+OK
diff -pruN 7.1.8-1/ext/opcache/tests/bug75608.phpt 7.1.13-1/ext/opcache/tests/bug75608.phpt
--- 7.1.8-1/ext/opcache/tests/bug75608.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/opcache/tests/bug75608.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,33 @@
+--TEST--
+Bug #75608 ("Narrowing occurred during type inference" error)
+--FILE--
+<?php
+class ReactionRatingService
+{
+    public function calculateBoostPoints()
+    {
+        while ($reaction = $reactions) {
+            $reactionRatings = $this->validFunction();
+
+            $totalWeight  = 0;
+            $runningScore = 0;
+            $queue        = [];
+            foreach ($reactionRatings as $ratingData) {
+                if ($runningScore != $reaction['Score']) {
+                    if ( ! $ratingData['BoostEarned']) {
+                        $queue[] = $ratingData['UserID'];
+                    }
+                } else {
+                    foreach ($queue as $userId) {
+                        $userBoostPointsRecalculate[$userId][] = $reaction['ID'];
+                    }
+                }
+                $totalWeight += $ratingData['Weight'];
+            }
+        }
+    }
+}
+?>
+OK
+--EXPECT--
+OK
diff -pruN 7.1.8-1/ext/opcache/tests/verify_return_dfg.phpt 7.1.13-1/ext/opcache/tests/verify_return_dfg.phpt
--- 7.1.8-1/ext/opcache/tests/verify_return_dfg.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/opcache/tests/verify_return_dfg.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Incorrect liveness computation for verify-return
+--FILE--
+<?php
+function test($foo): string
+{
+    switch ($foo) {
+        default:  $bar = 'x'; break;
+        case 'z': $bar = 'y'; break;
+    }
+    return (string)$bar;
+}
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff -pruN 7.1.8-1/ext/opcache/ZendAccelerator.c 7.1.13-1/ext/opcache/ZendAccelerator.c
--- 7.1.8-1/ext/opcache/ZendAccelerator.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/ZendAccelerator.c	2018-01-03 02:32:28.000000000 +0000
@@ -1230,7 +1230,7 @@ static zend_persistent_script *cache_scr
 	zend_shared_alloc_init_xlat_table();
 
 	/* Calculate the required memory size */
-	memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0);
+	memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0, 0);
 
 	/* Allocate memory block */
 #ifdef __SSE2__
@@ -1318,7 +1318,7 @@ static zend_persistent_script *cache_scr
 	zend_shared_alloc_init_xlat_table();
 
 	/* Calculate the required memory size */
-	memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length);
+	memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length, 1);
 
 	/* Allocate shared memory */
 #ifdef __SSE2__
diff -pruN 7.1.8-1/ext/opcache/zend_file_cache.c 7.1.13-1/ext/opcache/zend_file_cache.c
--- 7.1.8-1/ext/opcache/zend_file_cache.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/zend_file_cache.c	2018-01-03 02:32:28.000000000 +0000
@@ -227,8 +227,17 @@ static void *zend_file_cache_unserialize
 	if (in_shm) {
 		ret = accel_new_interned_string(str);
 		if (ret == str) {
+			/* We have to create new SHM allocated string */
+			size_t size = _ZSTR_STRUCT_SIZE(ZSTR_LEN(str));
+			ret = zend_shared_alloc(size);
+			if (!ret) {
+				zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_OOM);
+				LONGJMP(*EG(bailout), FAILURE);
+			}
+			memcpy(ret, str, size);
 			/* String wasn't interned but we will use it as interned anyway */
-			GC_FLAGS(ret) |= IS_STR_INTERNED | IS_STR_PERMANENT;
+			GC_REFCOUNT(ret) = 1;
+			GC_TYPE_INFO(ret) = IS_STRING | ((IS_STR_INTERNED | IS_STR_PERSISTENT | IS_STR_PERMANENT) << 8);
 		}
 	} else {
 		ret = str;
@@ -1288,6 +1297,7 @@ zend_persistent_script *zend_file_cache_
 	zend_accel_hash_entry *bucket;
 	void *mem, *checkpoint, *buf;
 	int cache_it = 1;
+	int ok;
 
 	if (!full_path) {
 		return NULL;
@@ -1380,6 +1390,7 @@ zend_persistent_script *zend_file_cache_
 
 	if (!ZCG(accel_directives).file_cache_only &&
 	    !ZCSG(restart_in_progress) &&
+		!ZSMMG(memory_exhausted) &&
 	    accelerator_shm_read_lock() == SUCCESS) {
 		/* exclusive lock */
 		zend_shared_alloc_lock();
@@ -1429,7 +1440,24 @@ use_process_mem:
 	ZCG(mem) = ((char*)mem + info.mem_size);
 	script = (zend_persistent_script*)((char*)buf + info.script_offset);
 	script->corrupted = !cache_it; /* used to check if script restored to SHM or process memory */
-	zend_file_cache_unserialize(script, buf);
+
+	ok = 1;
+	zend_try {
+		zend_file_cache_unserialize(script, buf);
+	} zend_catch {
+		ok = 0;
+	} zend_end_try();
+	if (!ok) {
+		if (cache_it) {
+			zend_shared_alloc_unlock();
+			goto use_process_mem;
+		} else {
+			zend_arena_release(&CG(arena), checkpoint);
+			efree(filename);
+			return NULL;
+		}
+	}
+
 	script->corrupted = 0;
 
 	if (cache_it) {
diff -pruN 7.1.8-1/ext/opcache/zend_persist_calc.c 7.1.13-1/ext/opcache/zend_persist_calc.c
--- 7.1.8-1/ext/opcache/zend_persist_calc.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/zend_persist_calc.c	2018-01-03 02:32:28.000000000 +0000
@@ -396,7 +396,7 @@ static void zend_accel_persist_class_tab
 	zend_hash_persist_calc(class_table, zend_persist_class_entry_calc);
 }
 
-uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length)
+uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length, int for_shm)
 {
 	new_persistent_script->mem = NULL;
 	new_persistent_script->size = 0;
@@ -405,12 +405,14 @@ uint zend_accel_script_persist_calc(zend
 	new_persistent_script->corrupted = 0;
 	ZCG(current_persistent_script) = new_persistent_script;
 
+	if (!for_shm) {
+		/* script is not going to be saved in SHM */
+		new_persistent_script->corrupted = 1;
+	}
+
 	ADD_DUP_SIZE(new_persistent_script, sizeof(zend_persistent_script));
 	if (key) {
 		ADD_DUP_SIZE(key, key_length + 1);
-	} else {
-		/* script is not going to be saved in SHM */
-		new_persistent_script->corrupted = 1;
 	}
 	ADD_STRING(new_persistent_script->script.filename);
 
diff -pruN 7.1.8-1/ext/opcache/zend_persist.h 7.1.13-1/ext/opcache/zend_persist.h
--- 7.1.8-1/ext/opcache/zend_persist.h	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/opcache/zend_persist.h	2018-01-03 02:32:28.000000000 +0000
@@ -23,7 +23,7 @@
 #define ZEND_PERSIST_H
 
 int zend_accel_script_persistable(zend_persistent_script *script);
-uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length);
+uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length, int for_shm);
 zend_persistent_script *zend_accel_script_persist(zend_persistent_script *script, char **key, unsigned int key_length);
 
 #endif /* ZEND_PERSIST_H */
diff -pruN 7.1.8-1/ext/openssl/openssl.c 7.1.13-1/ext/openssl/openssl.c
--- 7.1.8-1/ext/openssl/openssl.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/openssl.c	2018-01-03 02:32:30.000000000 +0000
@@ -87,14 +87,6 @@
 #define HAVE_EVP_PKEY_EC 1
 #endif
 
-#ifdef PHP_WIN32
-#define PHP_OPENSSL_BIO_MODE_R(flags) (((flags) & PKCS7_BINARY) ? "rb" : "r")
-#define PHP_OPENSSL_BIO_MODE_W(flags) (((flags) & PKCS7_BINARY) ? "wb" : "w")
-#else
-#define PHP_OPENSSL_BIO_MODE_R(flags) "r"
-#define PHP_OPENSSL_BIO_MODE_W(flags) "w"
-#endif
-
 ZEND_DECLARE_MODULE_GLOBALS(openssl)
 
 /* FIXME: Use the openssl constants instead of
@@ -367,17 +359,18 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_seal, 0, 0, 4)
 	ZEND_ARG_INFO(0, data)
 	ZEND_ARG_INFO(1, sealdata)
-	ZEND_ARG_INFO(1, ekeys) /* arary */
+	ZEND_ARG_INFO(1, ekeys) /* array */
 	ZEND_ARG_INFO(0, pubkeys) /* array */
 	ZEND_ARG_INFO(0, method)
 	ZEND_ARG_INFO(1, iv)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO(arginfo_openssl_open, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_open, 0, 0, 4)
 	ZEND_ARG_INFO(0, data)
 	ZEND_ARG_INFO(1, opendata)
 	ZEND_ARG_INFO(0, ekey)
 	ZEND_ARG_INFO(0, privkey)
+	ZEND_ARG_INFO(0, method)
 	ZEND_ARG_INFO(0, iv)
 ZEND_END_ARG_INFO()
 
@@ -1129,7 +1122,7 @@ static int php_openssl_parse_config(stru
 	if (str == NULL) {
 		php_openssl_store_errors();
 	} else if (!php_openssl_open_base_dir_chk(str)) {
-		BIO *oid_bio = BIO_new_file(str, "r");
+		BIO *oid_bio = BIO_new_file(str, PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 		if (oid_bio) {
 			OBJ_create_objects(oid_bio);
 			BIO_free(oid_bio);
@@ -1669,10 +1662,11 @@ static X509 * php_openssl_x509_from_zval
 		if (!what) {
 			return NULL;
 		}
-		/* this is so callers can decide if they should free the X509 */
 		if (resourceval) {
 			*resourceval = res;
-			Z_ADDREF_P(val);
+			if (makeresource) {
+				Z_ADDREF_P(val);
+			}
 		}
 		return (X509*)what;
 	}
@@ -1690,7 +1684,7 @@ static X509 * php_openssl_x509_from_zval
 			return NULL;
 		}
 
-		in = BIO_new_file(Z_STRVAL_P(val) + (sizeof("file://") - 1), "r");
+		in = BIO_new_file(Z_STRVAL_P(val) + (sizeof("file://") - 1), PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 		if (in == NULL) {
 			php_openssl_store_errors();
 			return NULL;
@@ -1736,7 +1730,6 @@ PHP_FUNCTION(openssl_x509_export_to_file
 	zval * zcert;
 	zend_bool notext = 1;
 	BIO * bio_out;
-	zend_resource *certresource;
 	char * filename;
 	size_t filename_len;
 
@@ -1745,7 +1738,7 @@ PHP_FUNCTION(openssl_x509_export_to_file
 	}
 	RETVAL_FALSE;
 
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
 		return;
@@ -1755,7 +1748,7 @@ PHP_FUNCTION(openssl_x509_export_to_file
 		return;
 	}
 
-	bio_out = BIO_new_file(filename, "w");
+	bio_out = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 	if (bio_out) {
 		if (!notext && !X509_print(bio_out, cert)) {
 			php_openssl_store_errors();
@@ -1769,7 +1762,7 @@ PHP_FUNCTION(openssl_x509_export_to_file
 		php_openssl_store_errors();
 		php_error_docref(NULL, E_WARNING, "error opening file %s", filename);
 	}
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 
@@ -2078,14 +2071,13 @@ PHP_FUNCTION(openssl_x509_export)
 	zval * zcert, *zout;
 	zend_bool notext = 1;
 	BIO * bio_out;
-	zend_resource *certresource;
 
 	if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz/|b", &zcert, &zout, &notext) == FAILURE) {
 		return;
 	}
 	RETVAL_FALSE;
 
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
 		return;
@@ -2114,7 +2106,7 @@ PHP_FUNCTION(openssl_x509_export)
 	BIO_free(bio_out);
 
 cleanup:
-	if (certresource == NULL && cert != NULL) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -2151,7 +2143,6 @@ PHP_FUNCTION(openssl_x509_fingerprint)
 {
 	X509 *cert;
 	zval *zcert;
-	zend_resource *certresource;
 	zend_bool raw_output = 0;
 	char *method = "sha1";
 	size_t method_len;
@@ -2161,7 +2152,7 @@ PHP_FUNCTION(openssl_x509_fingerprint)
 		return;
 	}
 
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
 		RETURN_FALSE;
@@ -2174,7 +2165,7 @@ PHP_FUNCTION(openssl_x509_fingerprint)
 		RETVAL_FALSE;
 	}
 
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -2186,14 +2177,14 @@ PHP_FUNCTION(openssl_x509_check_private_
 	zval * zcert, *zkey;
 	X509 * cert = NULL;
 	EVP_PKEY * key = NULL;
-	zend_resource *certresource = NULL, *keyresource = NULL;
+	zend_resource *keyresource = NULL;
 
 	RETVAL_FALSE;
 
 	if (zend_parse_parameters(ZEND_NUM_ARGS(), "zz", &zcert, &zkey) == FAILURE) {
 		return;
 	}
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		RETURN_FALSE;
 	}
@@ -2205,7 +2196,7 @@ PHP_FUNCTION(openssl_x509_check_private_
 	if (keyresource == NULL && key) {
 		EVP_PKEY_free(key);
 	}
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -2288,7 +2279,6 @@ PHP_FUNCTION(openssl_x509_parse)
 {
 	zval * zcert;
 	X509 * cert = NULL;
-	zend_resource *certresource = NULL;
 	int i, sig_nid;
 	zend_bool useshortnames = 1;
 	char * tmpstr;
@@ -2308,7 +2298,7 @@ PHP_FUNCTION(openssl_x509_parse)
 	if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|b", &zcert, &useshortnames) == FAILURE) {
 		return;
 	}
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		RETURN_FALSE;
 	}
@@ -2424,10 +2414,10 @@ PHP_FUNCTION(openssl_x509_parse)
 				add_assoc_stringl(&subitem, extname, bio_buf->data, bio_buf->length);
 			} else {
 				zval_dtor(return_value);
-				if (certresource == NULL && cert) {
+				BIO_free(bio_out);
+				if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 					X509_free(cert);
 				}
-				BIO_free(bio_out);
 				RETURN_FALSE;
 			}
 		}
@@ -2440,8 +2430,7 @@ PHP_FUNCTION(openssl_x509_parse)
 		BIO_free(bio_out);
 	}
 	add_assoc_zval(return_value, "extensions", &subitem);
-
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -2466,7 +2455,7 @@ static STACK_OF(X509) * load_all_certs_f
 		goto end;
 	}
 
-	if(!(in=BIO_new_file(certfile, "r"))) {
+	if(!(in=BIO_new_file(certfile, PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY)))) {
 		php_openssl_store_errors();
 		php_error_docref(NULL, E_WARNING, "error opening the file, %s", certfile);
 		sk_X509_free(stack);
@@ -2541,7 +2530,6 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
 	zval * zcert, * zcainfo = NULL;
 	X509_STORE * cainfo = NULL;
 	X509 * cert = NULL;
-	zend_resource *certresource = NULL;
 	STACK_OF(X509) * untrustedchain = NULL;
 	zend_long purpose;
 	char * untrusted = NULL;
@@ -2565,7 +2553,7 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
 	if (cainfo == NULL) {
 		goto clean_exit;
 	}
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		goto clean_exit;
 	}
@@ -2576,11 +2564,10 @@ PHP_FUNCTION(openssl_x509_checkpurpose)
 	} else {
 		RETVAL_BOOL(ret);
 	}
-
-clean_exit:
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
+clean_exit:
 	if (cainfo) {
 		X509_STORE_free(cainfo);
 	}
@@ -2772,7 +2759,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_fi
 	size_t pass_len;
 	zval *zcert = NULL, *zpkey = NULL, *args = NULL;
 	EVP_PKEY *priv_key = NULL;
-	zend_resource *certresource, *keyresource;
+	zend_resource *keyresource;
 	zval * item;
 	STACK_OF(X509) *ca = NULL;
 
@@ -2781,7 +2768,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_fi
 
 	RETVAL_FALSE;
 
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
 		return;
@@ -2791,7 +2778,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_fi
 		php_error_docref(NULL, E_WARNING, "cannot get private key from parameter 3");
 		goto cleanup;
 	}
-	if (cert && !X509_check_private_key(cert, priv_key)) {
+	if (!X509_check_private_key(cert, priv_key)) {
 		php_openssl_store_errors();
 		php_error_docref(NULL, E_WARNING, "private key does not correspond to cert");
 		goto cleanup;
@@ -2817,7 +2804,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_fi
 
 	p12 = PKCS12_create(pass, friendly_name, priv_key, cert, ca, 0, 0, 0, 0, 0);
 	if (p12 != NULL) {
-		bio_out = BIO_new_file(filename, "w");
+		bio_out = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 		if (bio_out != NULL) {
 
 			i2d_PKCS12_bio(bio_out, p12);
@@ -2841,7 +2828,8 @@ cleanup:
 	if (keyresource == NULL && priv_key) {
 		EVP_PKEY_free(priv_key);
 	}
-	if (certresource == NULL && cert) {
+
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -2856,7 +2844,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
 	PKCS12 * p12 = NULL;
 	zval * zcert = NULL, *zout = NULL, *zpkey, *args = NULL;
 	EVP_PKEY *priv_key = NULL;
-	zend_resource *certresource, *keyresource;
+	zend_resource *keyresource;
 	char * pass;
 	size_t pass_len;
 	char * friendly_name = NULL;
@@ -2868,7 +2856,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
 
 	RETVAL_FALSE;
 
-	cert = php_openssl_x509_from_zval(zcert, 0, &certresource);
+	cert = php_openssl_x509_from_zval(zcert, 0, NULL);
 	if (cert == NULL) {
 		php_error_docref(NULL, E_WARNING, "cannot get cert from parameter 1");
 		return;
@@ -2878,7 +2866,7 @@ PHP_FUNCTION(openssl_pkcs12_export)
 		php_error_docref(NULL, E_WARNING, "cannot get private key from parameter 3");
 		goto cleanup;
 	}
-	if (cert && !X509_check_private_key(cert, priv_key)) {
+	if (!X509_check_private_key(cert, priv_key)) {
 		php_error_docref(NULL, E_WARNING, "private key does not correspond to cert");
 		goto cleanup;
 	}
@@ -2919,7 +2907,7 @@ cleanup:
 	if (keyresource == NULL && priv_key) {
 		EVP_PKEY_free(priv_key);
 	}
-	if (certresource == NULL && cert) {
+	if (Z_TYPE_P(zcert) != IS_RESOURCE) {
 		X509_free(cert);
 	}
 }
@@ -3214,7 +3202,9 @@ static X509_REQ * php_openssl_csr_from_z
 		if (what) {
 			if (resourceval) {
 				*resourceval = res;
-				Z_ADDREF_P(val);
+				if (makeresource) {
+					Z_ADDREF_P(val);
+				}
 			}
 			return (X509_REQ*)what;
 		}
@@ -3230,7 +3220,7 @@ static X509_REQ * php_openssl_csr_from_z
 		if (php_openssl_open_base_dir_chk(filename)) {
 			return NULL;
 		}
-		in = BIO_new_file(filename, "r");
+		in = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 	} else {
 		in = BIO_new_mem_buf(Z_STRVAL_P(val), (int)Z_STRLEN_P(val));
 	}
@@ -3278,7 +3268,7 @@ PHP_FUNCTION(openssl_csr_export_to_file)
 		return;
 	}
 
-	bio_out = BIO_new_file(filename, "w");
+	bio_out = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 	if (bio_out != NULL) {
 		if (!notext && !X509_REQ_print(bio_out, csr)) {
 			php_openssl_store_errors();
@@ -3803,7 +3793,7 @@ static EVP_PKEY * php_openssl_evp_from_z
 				/* not a X509 certificate, try to retrieve public key */
 				BIO* in;
 				if (filename) {
-					in = BIO_new_file(filename, "r");
+					in = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 				} else {
 					in = BIO_new_mem_buf(Z_STRVAL_P(val), (int)Z_STRLEN_P(val));
 				}
@@ -3822,7 +3812,7 @@ static EVP_PKEY * php_openssl_evp_from_z
 				if (php_openssl_open_base_dir_chk(filename)) {
 					TMP_CLEAN;
 				}
-				in = BIO_new_file(filename, "r");
+				in = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 			} else {
 				in = BIO_new_mem_buf(Z_STRVAL_P(val), (int)Z_STRLEN_P(val));
 			}
@@ -4499,7 +4489,7 @@ PHP_FUNCTION(openssl_pkey_export_to_file
 	PHP_SSL_REQ_INIT(&req);
 
 	if (PHP_SSL_REQ_PARSE(&req, args) == SUCCESS) {
-		bio_out = BIO_new_file(filename, "w");
+		bio_out = BIO_new_file(filename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 		if (bio_out == NULL) {
 			php_openssl_store_errors();
 			goto clean_exit;
@@ -5035,7 +5025,7 @@ PHP_FUNCTION(openssl_pkcs7_verify)
 			goto clean_exit;
 		}
 
-		dataout = BIO_new_file(datafilename, "w");
+		dataout = BIO_new_file(datafilename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 		if (dataout == NULL) {
 			php_openssl_store_errors();
 			goto clean_exit;
@@ -5056,7 +5046,7 @@ PHP_FUNCTION(openssl_pkcs7_verify)
 				goto clean_exit;
 			}
 
-			certout = BIO_new_file(signersfilename, "w");
+			certout = BIO_new_file(signersfilename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 			if (certout) {
 				int i;
 				signers = PKCS7_get0_signers(p7, NULL, (int)flags);
@@ -5133,7 +5123,7 @@ PHP_FUNCTION(openssl_pkcs7_encrypt)
 		goto clean_exit;
 	}
 
-	outfile = BIO_new_file(outfilename, "w");
+	outfile = BIO_new_file(outfilename, PHP_OPENSSL_BIO_MODE_W(flags));
 	if (outfile == NULL) {
 		php_openssl_store_errors();
 		goto clean_exit;
@@ -5292,7 +5282,7 @@ PHP_FUNCTION(openssl_pkcs7_sign)
 		goto clean_exit;
 	}
 
-	outfile = BIO_new_file(outfilename, "w");
+	outfile = BIO_new_file(outfilename, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY));
 	if (outfile == NULL) {
 		php_openssl_store_errors();
 		php_error_docref(NULL, E_WARNING, "error opening output file %s!", outfilename);
@@ -5847,7 +5837,7 @@ PHP_FUNCTION(openssl_verify)
 }
 /* }}} */
 
-/* {{{ proto int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)
+/* {{{ proto int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys [, string method [, &string iv]]))
    Seals data */
 PHP_FUNCTION(openssl_seal)
 {
@@ -5978,7 +5968,7 @@ clean_exit:
 }
 /* }}} */
 
-/* {{{ proto bool openssl_open(string data, &string opendata, string ekey, mixed privkey)
+/* {{{ proto bool openssl_open(string data, &string opendata, string ekey, mixed privkey [, string method [, string iv]])
    Opens data */
 PHP_FUNCTION(openssl_open)
 {
diff -pruN 7.1.8-1/ext/openssl/php_openssl.h 7.1.13-1/ext/openssl/php_openssl.h
--- 7.1.8-1/ext/openssl/php_openssl.h	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/php_openssl.h	2018-01-03 02:32:30.000000000 +0000
@@ -127,6 +127,15 @@ PHP_FUNCTION(openssl_spki_export);
 PHP_FUNCTION(openssl_spki_export_challenge);
 
 PHP_FUNCTION(openssl_get_cert_locations);
+
+#ifdef PHP_WIN32
+#define PHP_OPENSSL_BIO_MODE_R(flags) (((flags) & PKCS7_BINARY) ? "rb" : "r")
+#define PHP_OPENSSL_BIO_MODE_W(flags) (((flags) & PKCS7_BINARY) ? "wb" : "w")
+#else
+#define PHP_OPENSSL_BIO_MODE_R(flags) "r"
+#define PHP_OPENSSL_BIO_MODE_W(flags) "w"
+#endif
+
 #else
 
 #define phpext_openssl_ptr NULL
diff -pruN 7.1.8-1/ext/openssl/tests/001.phpt 7.1.13-1/ext/openssl/tests/001.phpt
--- 7.1.8-1/ext/openssl/tests/001.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/001.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -9,15 +9,6 @@ if (!@openssl_pkey_new()) die("skip cann
 <?php
 echo "Creating private key\n";
 
-/* stack up some entropy; performance is not critical,
- * and being slow will most likely even help the test.
- */
-for ($z = "", $i = 0; $i < 1024; $i++) {
-	$z .= $i * $i;
-	if (function_exists("usleep"))
-		usleep($i);
-}
-
 $conf = array('config' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'openssl.cnf');
 $privkey = openssl_pkey_new($conf);
 
@@ -32,6 +23,7 @@ if ($key_file_name === false)
 echo "Export key to file\n";
 
 openssl_pkey_export_to_file($privkey, $key_file_name, $passphrase, $conf) or die("failed to export to file $key_file_name");
+var_dump(is_resource($privkey));
 
 echo "Load key from file - array syntax\n";
 
@@ -69,6 +61,7 @@ echo "OK!\n";
 --EXPECT--
 Creating private key
 Export key to file
+bool(true)
 Load key from file - array syntax
 Load key using direct syntax
 Load key manually and use string syntax
diff -pruN 7.1.8-1/ext/openssl/tests/bug74903.phpt 7.1.13-1/ext/openssl/tests/bug74903.phpt
--- 7.1.8-1/ext/openssl/tests/bug74903.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/bug74903.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,83 @@
+--TEST--
+Bug #74903 openssl_pkcs7_encrypt() uses different EOL than before
+--SKIPIF--
+<?php 
+if (!extension_loaded("openssl")) die("skip"); 
+?>
+--FILE--
+<?php
+
+$cert = "-----BEGIN CERTIFICATE-----
+MIIDXDCCAkSgAwIBAgIKq/f5U3FzthdKUzANBgkqhkiG9w0BAQUFADBcMRIwEAYD
+VQQDEwlzZXRhcGRmLWExCTAHBgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcN
+AQkBFhRzdXBwb3J0QHNldGFzaWduLmNvbTELMAkGA1UEBhMCREUwHhcNMTUwOTA4
+MDkzNDExWhcNMjAwOTA4MDkzNDExWjBcMRIwEAYDVQQDEwlzZXRhcGRmLWExCTAH
+BgNVBAoTADEJMAcGA1UECxMAMSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QHNldGFz
+aWduLmNvbTELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQCkmTLvUIYfqAKC1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt
+/0nbFfsFsU0/C9dXKZYD42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dv
+RTzAcnPM44GxO4y6GUW6un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslm
+Sbp1XvbLsJjgV9X3ihi7JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1
+vFNAArioX5pIUIm9ahAm8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot
+8RGu89Fx6E+O5j4LwGH4kiYjgvYZAgMBAAGjIDAeMA8GCSqGSIb3LwEBCgQCBQAw
+CwYDVR0PBAQDAgOYMA0GCSqGSIb3DQEBBQUAA4IBAQBCA8iXz7zxAmCWNZ0faiLm
+aKw8u2PUq+EPKrGKc9Q70Ksw/e/EHvWrghFzmu5MOZRn/QIWq++sbbc8eOiaRDE8
+lWCW596FLW4habXKw0sjDNcyEBArPgDp17O6NgHqI2U1KL1P2Y40e0YH2BWxNS+f
+pmWZekjiC6jfId2JGsyPZUTX4USwthG4dFX0/BWYg+K7kXvQzMobes2NxW3Iqn8h
+FUNgraCzlQMSfE2gwAMSUXTJubUGorj4LFYSiLIIJvf6KlmuR5uOIi5lSjSeZf5E
+FLEHVhrz3o2icUeyb1K1BTAQRZ/H3GZ0QpgqSK5vmuV9C+rzezQMoy4/8UUnNPMt
+-----END CERTIFICATE-----
+";
+
+$pkey = "-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkmTLvUIYfqAKC
+1CHVgABlemrFIVRm4JGeB0jIGofyrm3yVwR4YcK0eUmt/0nbFfsFsU0/C9dXKZYD
+42t5YpLFsj666Z1EoU1CfSIW2bf0HaWVJ+oNT5twS3dvRTzAcnPM44GxO4y6GUW6
+un0/bT/MZbFKbb3NI1L0mwY7EoqUXR68XxuHqWETaslmSbp1XvbLsJjgV9X3ihi7
+JC7A9kEzrKh+RBsXEXwlSv5JO2TUdwq9P4EbjqvgiaV1vFNAArioX5pIUIm9ahAm
+8d7jjW6DFfV798rTzaQ3GJs0yC3UD6xhmbTbdC/D9Pot8RGu89Fx6E+O5j4LwGH4
+kiYjgvYZAgMBAAECggEABO4JOGF4KOvQanB11HYNXPy4BLA5Pc0RU3M6pvKjen1m
+sdzRF5Vu/laJIkbchI0xm+Op8X7Wa+gFFBf8RLIS/QyYBCNh2Fe/74M9sYNDFxLJ
+vjBIOm6VVF1QRhMD7SwoY303adJjpkHCRMPX4z3PjLzJfPYROpsJnaWkf8GwCJ4+
+kufOhYcE8ekuLX7EzXFU74Uo0OnMEhMJgiAjlHhC21YLkgLoGq45sdktVgvD6sds
+7BcmH6oUCDCJ8wxUVM1+Ks1D3vKHfeAhCFHvj9M/lf5OWylhmQh4CQf+NMDNsAc6
+mXNIzUvZEgs/PJpd3SymHchf60m6faJtGv43GsdsgQKBgQDUx8t649O/vGRI26t4
+4XrzVC2w5271UlhFaRiH03BrV+pECVoH4bw+ZIUuGke2xe+LrNkhMNJSGcbB0WDa
+Jes+4Gf++AuSXRvMo+xHenfgUWQqYHJPkh5q6gknZ2YDfikFNLdqApXvp0m+FaVP
++F/2HMjQfTITQgkAiEn45s4agQKBgQDGCAZkIUcdyXQTplLE0Zx1/uiTBrQGyzsb
+cDgAQIHt19wIRjoGOFatAj6TQ5gUj9Remn12v6d5Wi02i7hlu8V6O1VXLGqqeQ27
+0MHBXzrFBVljOz96D7VP5Xx0DB1cGMbtg5ivjd91OUVrwC7fbXE9sfOI1FqlTb7p
+6xi9Wl+fmQKBgGdzR/vUfqPOvVcq7gBUaAmb2KcUrj65rU753MJUy2h1EuHHRi1k
+07fl+VZD0rALJf7bp6laajcebyLWYGdPXkNwqT8ua7naaOSiogLSiSvXhoKP56PG
+H+HNLWwp+lAia2Erky0IWstsow62yWvLDyTCM+QhqlHwnh3TJVvNI1GBAoGAUl+y
+MOJ6z5Ql2aqc0UwT1i1Tlxz5s73D93Tlho1Ovp3E5Bg6OK4kt9CwMNe0IhF2GGgQ
++l1cj6kIF6Fk8cR6r46QwDM0p3a1VMPQZNx0+NFxzkot7FsuY26lJyyG5fFUhiXw
+VE4ifoN1Mg3+MWg3657jG66hihNd77WgU9uM3TkCgYEAypuvVrfFrrtXnbEUcBHq
+mguKumn9miD9DPb6gi8ZaKOddGzw+qFPukiqi7rM3oRMg02evfK/VQC87Gmev663
+RV9sQOlB9gNlMOOw/0R3ABEWDoSRCcrLhb6Z5Y72WVnZvpTPO0cDw2i1hyaEM6d+
+2WR7c6FhRCLxG0DObEOfiO0=
+-----END PRIVATE KEY-----
+";
+
+$envelopeData = "Test";
+
+$tmpFileIn = tempnam(sys_get_temp_dir(), 'test');
+$tmpFileOut = tempnam(sys_get_temp_dir(), 'test');
+file_put_contents($tmpFileIn, $envelopeData);
+
+openssl_pkcs7_encrypt($tmpFileIn, $tmpFileOut, [$cert], array(), PKCS7_BINARY, OPENSSL_CIPHER_AES_128_CBC);
+
+$result = file_get_contents($tmpFileOut);
+var_dump(strpos($result, "\r\n") === false); // behaviour before 7.2
+var_dump(strlen($result) === 847);
+
+unlink($tmpFileIn);
+unlink($tmpFileOut);
+
+?>
+==DONE==
+--EXPECT--
+bool(true)
+bool(true)
+==DONE==
+
diff -pruN 7.1.8-1/ext/openssl/tests/bug75307.phpt 7.1.13-1/ext/openssl/tests/bug75307.phpt
--- 7.1.8-1/ext/openssl/tests/bug75307.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/bug75307.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,18 @@
+--TEST--
+Bug #75307 Wrong reflection for openssl_open function
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip openssl not available");
+if (!extension_loaded("reflection")) die("skip reflection not available");
+?>
+--FILE--
+<?php
+$rf = new ReflectionFunction('openssl_open');
+var_dump($rf->getNumberOfParameters());
+var_dump($rf->getNumberOfRequiredParameters());
+?>
+===DONE===
+--EXPECT--
+int(6)
+int(4)
+===DONE===
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_csr_export_to_file_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_csr_export_to_file_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_csr_export_to_file_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_csr_export_to_file_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,83 @@
+--TEST--
+openssl_csr_export_to_file() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$csrfile = dirname(__FILE__) . "/openssl_csr_export_to_file_csr.tmp";
+$wrong = "wrong";
+$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
+$phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' .
+		'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' .
+		'7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' .
+		'6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';
+$dh_details = array('p' => $phex, 'g' => '2');
+$dh = openssl_pkey_new(array(
+	'dh'=> array('p' => hex2bin($phex), 'g' => '2'))
+);
+
+$dn = array(
+	"countryName" => "BR",
+	"stateOrProvinceName" => "Rio Grande do Sul",
+	"localityName" => "Porto Alegre",
+	"commonName" => "Henrique do N. Angelo",
+	"emailAddress" => "hnangelo@php.net"
+);
+
+$args = array(
+	"digest_alg" => "sha1",
+	"private_key_bits" => 2048,
+	"private_key_type" => OPENSSL_KEYTYPE_DSA,
+	"encrypt_key" => true,
+	"config" => $config,
+);
+
+$privkey_file = 'file://' . dirname(__FILE__) . '/private_rsa_2048.key';
+$csr = openssl_csr_new($dn, $privkey_file, $args);
+var_dump(openssl_csr_export_to_file($csr, $csrfile));
+var_dump(file_get_contents($csrfile));
+var_dump(openssl_csr_export_to_file($wrong, $csrfile));
+var_dump(openssl_csr_export_to_file($dh, $csrfile));
+var_dump(openssl_csr_export_to_file(array(), $csrfile));
+var_dump(openssl_csr_export_to_file($csr, $csrfile, false));
+?>
+--CLEAN--
+<?php
+$csrfile = dirname(__FILE__) . "/openssl_csr_export_to_file_csr.tmp";
+if (file_exists($csrfile)) {
+	unlink($csrfile);
+}
+?>
+--EXPECTF--
+bool(true)
+string(1086) "-----BEGIN CERTIFICATE REQUEST-----
+MIIC6jCCAdICAQAwgaQxCzAJBgNVBAYTAkJSMRowGAYDVQQIExFSaW8gR3JhbmRl
+IGRvIFN1bDEVMBMGA1UEBxMMUG9ydG8gQWxlZ3JlMR4wHAYDVQQDExVIZW5yaXF1
+ZSBkbyBOLiBBbmdlbG8xHzAdBgkqhkiG9w0BCQEWEGhuYW5nZWxvQHBocC5uZXQx
+ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAK21JlVtWPqyc2UQtw2AdJHSIL5OzAHWsu/Mmxjz
+w4VZWwG+Ao1m2j7OJ8lAkxLfSlRtB+6Vx8Q21krAtve+M3b6pT9C9qKdfzNkrXk3
+BggTncBh9ozkVQGS/P1m0zn/SKSgDO+6DdeLHLMjpUASaoYfsay4PJLAdnTqLOeM
+g6qNE6u0ebZXVfmpSmV1pSZ6kQnxbsb6rX1iOZxkwHnVWYb40Hy0EILo31x6BVqB
+m159m7s38ChiRHqlj20DmRfxXjiT5YDgYYQ29wQBTVQrTN5O9UW5Y+eKTXd8r6te
+dsbIBXdKN7NeX7ksGYHq1I3hLsP8EyvZO78qfjKyEB0Jj3UCAwEAAaAAMA0GCSqG
+SIb3DQEBBQUAA4IBAQCamzVmIbElkiDQKzQpkfU5tHjrWPrHDSB186NI0sQ8i6GQ
+1YT6yPAXBPTQ1aER/6uAZJL5HfWEX8V1rKbe8GkPAPCHHQzmHyWlaO2EHS57zJhk
+sRrhqkhhkSNiDg4OrsguhRtbB2VMGeDbqHGI89uGqqGHUiZc/Bh8N7WFXZkUU/A0
+sfBgVeqg0P4SWez5fHXqBNcjMdMI5f0bikcDZSIfTHS8FX+PMurLBC8UPB0YNIOl
+1r2Lvo+6YUHOziG1OwQd3K0xxu/JzzOE+lMB73ynz4V6DY5Qv3qVno1GpupvgmQA
+JViHkCA9x6m8RJXAFvqmgLlWlUzbDv/cRrDfjWjR
+-----END CERTIFICATE REQUEST-----
+"
+
+Warning: openssl_csr_export_to_file() expects parameter 1 to be resource, string given in %s on line %d
+NULL
+
+Warning: openssl_csr_export_to_file(): supplied resource is not a valid OpenSSL X.509 CSR resource in %s on line %d
+
+Warning: openssl_csr_export_to_file(): cannot get CSR from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_export_to_file() expects parameter 1 to be resource, array given in %s on line %d
+NULL
+bool(true)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_csr_get_public_key_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_csr_get_public_key_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_csr_get_public_key_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_csr_get_public_key_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,44 @@
+--TEST--
+openssl_csr_get_public_key() tests
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
+$phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' .
+		'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' .
+		'7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' .
+		'6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';
+$dh_details = array('p' => $phex, 'g' => '2');
+$dh = openssl_pkey_new(array(
+	'dh'=> array('p' => hex2bin($phex), 'g' => '2'))
+);
+
+$dn = array(
+	"countryName" => "BR",
+	"stateOrProvinceName" => "Rio Grande do Sul",
+	"localityName" => "Porto Alegre",
+	"commonName" => "Henrique do N. Angelo",
+	"emailAddress" => "hnangelo@php.net"
+);
+
+$args = array(
+	"digest_alg" => "sha1",
+	"private_key_bits" => 2048,
+	"private_key_type" => OPENSSL_KEYTYPE_DSA,
+	"encrypt_key" => true,
+	"config" => $config,
+);
+
+$privkey_file = 'file://' . dirname(__FILE__) . '/private_rsa_2048.key';
+$csr = openssl_csr_new($dn, $privkey_file, $args);
+$csr_file = file_get_contents(dirname(__FILE__) . '/cert.csr');
+
+var_dump(openssl_csr_get_public_key($csr));
+var_dump(openssl_csr_get_public_key($csr_file));
+?>
+--EXPECTF--
+resource(%d) of type (OpenSSL key)
+resource(%d) of type (OpenSSL key)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -2,19 +2,43 @@
 openssl_csr_get_subject() tests
 --SKIPIF--
 <?php 
-if (!extension_loaded("openssl")) die("skip"); 
-if (!function_exists("utf8_decode")) die("skip");
+if (!extension_loaded("openssl")) die("skip");
 ?>
 --FILE--
 <?php
+$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
+$phex = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61e' .
+		'f75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d268370557' .
+		'7d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e382' .
+		'6634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';
+$dh_details = array('p' => $phex, 'g' => '2');
+$dh = openssl_pkey_new(array(
+	'dh'=> array('p' => hex2bin($phex), 'g' => '2'))
+);
 
-$csr = file_get_contents(dirname(__FILE__) . '/cert.csr');
-if ($out = openssl_csr_get_subject($csr, 1)) {
-	var_dump($out);
-}
-echo "\n";
-$cn = utf8_decode($out['CN']);
-var_dump($cn);
+$dn = array(
+	"countryName" => "BR",
+	"stateOrProvinceName" => "Rio Grande do Sul",
+	"localityName" => "Porto Alegre",
+	"commonName" => "Henrique do N. Angelo",
+	"emailAddress" => "hnangelo@php.net"
+);
+
+$args = array(
+	"digest_alg" => "sha1",
+	"private_key_bits" => 2048,
+	"private_key_type" => OPENSSL_KEYTYPE_DSA,
+	"encrypt_key" => true,
+	"config" => $config,
+);
+
+$privkey_file = 'file://' . dirname(__FILE__) . '/private_rsa_2048.key';
+$csr = openssl_csr_new($dn, $privkey_file, $args);
+$csr_file = file_get_contents(dirname(__FILE__) . '/cert.csr');
+
+var_dump(openssl_csr_get_subject($csr_file));
+var_dump(openssl_csr_get_subject($csr, false));
+?>
 --EXPECTF--	
 array(6) {
   ["C"]=>
@@ -30,5 +54,17 @@ array(6) {
   ["CN"]=>
   string(15) "*.triconnect.nl"
 }
-
-string(15) "*.triconnect.nl"
+array(6) {
+  ["countryName"]=>
+  string(2) "BR"
+  ["stateOrProvinceName"]=>
+  string(17) "Rio Grande do Sul"
+  ["localityName"]=>
+  string(12) "Porto Alegre"
+  ["commonName"]=>
+  string(21) "Henrique do N. Angelo"
+  ["emailAddress"]=>
+  string(16) "hnangelo@php.net"
+  ["organizationName"]=>
+  string(24) "Internet Widgits Pty Ltd"
+}
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_csr_sign_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_csr_sign_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_csr_sign_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_csr_sign_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -32,6 +32,7 @@ $csr = openssl_csr_new($dn, $privkey, $a
 var_dump(openssl_csr_sign($csr, null, $privkey, 365, $args));
 var_dump(openssl_csr_sign($csr, null, $privkey, 365, $config_arg));
 var_dump(openssl_csr_sign($csr, $cert, $priv, 365, $config_arg));
+var_dump(openssl_csr_sign($csr, openssl_x509_read($cert), $priv, 365, $config_arg));
 var_dump(openssl_csr_sign($csr, $wrong, $privkey, 365));
 var_dump(openssl_csr_sign($csr, null, $wrong, 365));
 var_dump(openssl_csr_sign($csr, null, $privkey, $wrong));
@@ -47,6 +48,7 @@ var_dump(openssl_csr_sign($csr, null, $p
 resource(%d) of type (OpenSSL X.509)
 resource(%d) of type (OpenSSL X.509)
 resource(%d) of type (OpenSSL X.509)
+resource(%d) of type (OpenSSL X.509)
 
 Warning: openssl_csr_sign(): cannot get cert from parameter 2 in %s on line %d
 bool(false)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkcs12_export_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkcs12_export_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkcs12_export_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkcs12_export_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -14,7 +14,7 @@ $cert_res = openssl_x509_read($cert);
 $priv_res = openssl_pkey_get_private($priv);
 $pass = "test";
 $invalid = "";
-$invalid_path = "file:///tmp/php";
+$invalid_path = dirname(__FILE__) . "/invalid_path";
 $opts = [];
 
 var_dump(openssl_pkcs12_export($cert, $output, $priv, $pass)); // read certs as a string
@@ -23,9 +23,9 @@ var_dump(openssl_pkcs12_export($cert_pat
 var_dump(openssl_pkcs12_read($output, $opts, $pass));
 var_dump(openssl_pkcs12_export($cert_res, $output, $priv_res, $pass)); // read certs from a resource
 var_dump(openssl_pkcs12_read($output, $opts, $pass));
-var_dump(openssl_pkcs12_export($cert, $output, $priv, $pass, array($cert))); // extra optional cert
+var_dump(openssl_pkcs12_export($cert, $output, $priv, $pass, array('extracerts' => $cert))); // extra optional cert
 var_dump(openssl_pkcs12_read($output, $opts, $pass));
-//var_dump(count($opts)); // should be 3 certificates, priv, pub, extra optional cert
+var_dump(count($opts)); // should be 3 certificates, priv, pub, extra optional cert
 
 
 var_dump(openssl_pkcs12_export($invalid, $output, $invalid, $pass));
@@ -42,6 +42,7 @@ bool(true)
 bool(true)
 bool(true)
 bool(true)
+int(3)
 
 Warning: openssl_pkcs12_export(): cannot get cert from parameter 1 in %s on line %d
 bool(false)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkcs12_export_to_file_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkcs12_export_to_file_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkcs12_export_to_file_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkcs12_export_to_file_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,61 @@
+--TEST--
+openssl_pkcs12_export_to_file() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$pkcsfile = dirname(__FILE__) . "/openssl_pkcs12_export_to_file__pkcsfile.tmp";
+
+$cert_file = dirname(__FILE__) . "/public.crt";
+$cert = file_get_contents($cert_file);
+$cert_path = "file://" . $cert_file;
+$priv_file = dirname(__FILE__) . "/private.crt";
+$priv = file_get_contents($priv_file);
+$priv_path = "file://" . $priv_file;
+$cert_res = openssl_x509_read($cert);
+$priv_res = openssl_pkey_get_private($priv);
+$pass = "test";
+$invalid = "";
+$invalid_path = dirname(__FILE__) . "/invalid_path";
+$opts = [];
+
+var_dump(openssl_pkcs12_export_to_file($cert, $pkcsfile, $priv, $pass));
+var_dump(openssl_pkcs12_read(file_get_contents($pkcsfile), $opts, $pass));
+var_dump(openssl_pkcs12_export_to_file($cert_path, $pkcsfile, $priv_path, $pass));
+var_dump(openssl_pkcs12_read(file_get_contents($pkcsfile), $opts, $pass));
+var_dump(openssl_pkcs12_export_to_file($cert_res, $pkcsfile, $priv_res, $pass));
+var_dump(openssl_pkcs12_read(file_get_contents($pkcsfile), $opts, $pass));
+var_dump(openssl_pkcs12_export_to_file($cert_res, $pkcsfile, $priv_res, $pass, array($cert)));
+var_dump(openssl_pkcs12_read(file_get_contents($pkcsfile), $opts, $pass));
+
+var_dump(openssl_pkcs12_export_to_file($invalid, $pkcsfile, $invalid, $pass));
+var_dump(openssl_pkcs12_export_to_file($invalid_path, $pkcsfile, $invalid_path, $pass));
+var_dump(openssl_pkcs12_export_to_file($priv_res, $pkcsfile, $cert_res, $pass));
+?>
+--CLEAN--
+<?php
+$pkcsfile = dirname(__FILE__) . "/openssl_pkcs12_export_to_file__pkcsfile.tmp";
+if (file_exists($pkcsfile)) {
+	unlink($pkcsfile);
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+Warning: openssl_pkcs12_export_to_file(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs12_export_to_file(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs12_export_to_file(): supplied resource is not a valid OpenSSL X.509 resource in %s on line %d
+
+Warning: openssl_pkcs12_export_to_file(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -22,6 +22,7 @@ $empty = "";
 
 openssl_pkcs7_encrypt($infile, $encrypted, $single_cert, $headers);
 var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, openssl_x509_read($single_cert), $privkey));
 var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $wrong));
 var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $wrong, $privkey));
 var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, null, $privkey));
@@ -42,6 +43,7 @@ if (file_exists($outfile)) {
 ?>
 --EXPECTF--
 bool(true)
+bool(true)
 
 Warning: openssl_pkcs7_decrypt(): unable to get private key in %s on line %d
 bool(false)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -22,6 +22,7 @@ $wrong = "wrong";
 $empty = "";
 
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, openssl_x509_read($single_cert), $headers));
 var_dump(openssl_pkcs7_decrypt($outfile, $outfile2, $single_cert, $privkey));
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $assoc_headers));
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty_headers));
@@ -33,6 +34,7 @@ var_dump(openssl_pkcs7_encrypt($infile,
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $empty, $headers));
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty));
 var_dump(openssl_pkcs7_encrypt($infile, $outfile, $multi_certs, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, array_map('openssl_x509_read', $multi_certs) , $headers));
 
 if (file_exists($outfile)) {
 	echo "true\n";
@@ -48,6 +50,7 @@ bool(true)
 bool(true)
 bool(true)
 bool(true)
+bool(true)
 
 Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
 bool(false)
@@ -60,5 +63,6 @@ bool(false)
 Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
 bool(false)
 bool(true)
+bool(true)
 true
 true
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -18,6 +18,7 @@ $empty_headers = array();
 $wrong = "wrong";
 $empty = "";
 
+var_dump(openssl_pkcs7_sign($infile, $outfile, openssl_x509_read($single_cert), $privkey, $headers));
 var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $headers));
 var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $assoc_headers));
 var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $empty_headers));
@@ -39,6 +40,7 @@ if (file_exists($outfile)) {
 bool(true)
 bool(true)
 bool(true)
+bool(true)
 
 Warning: openssl_pkcs7_sign() expects parameter 5 to be array, string given in %s on line %d
 NULL
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_pkey_export_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_pkey_export_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_pkey_export_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_pkey_export_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -39,7 +39,7 @@ $tempname = tempnam(sys_get_temp_dir(),
 var_dump(openssl_pkey_export_to_file($key, $tempname, NULL, $config_arg));
 $details = openssl_pkey_get_details(openssl_pkey_get_private('file://' . $tempname));
 var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
-
+var_dump(is_resource($key));
 // Clean the temporary file
 @unlink($tempname);
 ?>
@@ -56,3 +56,4 @@ array(1) {
 }
 bool(true)
 bool(true)
+bool(true)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -19,7 +19,7 @@ var_dump(openssl_x509_check_private_key(
 var_dump(openssl_x509_check_private_key("", $key));
 var_dump(openssl_x509_check_private_key($cert, ""));
 var_dump(openssl_x509_check_private_key("", ""));
-var_dump(openssl_x509_check_private_key($a, $b));
+var_dump(openssl_x509_check_private_key(openssl_x509_read($a), $b));
 ?>
 --EXPECT--
 bool(true)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,150 @@
+--TEST--
+int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ) function
+--CREDITS--
+marcosptf - <marcosptf@yahoo.com.br>
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; 
+if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0");
+?>
+--FILE--
+<?php
+$cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$bert = "file://" . dirname(__FILE__) . "/bug41033.pem";
+$sert = "file://" . dirname(__FILE__) . "/san-cert.pem";
+$cpca = dirname(__FILE__) . "/san-ca.pem";
+$utfl = dirname(__FILE__) . "/sni_server_domain1.pem";
+$rcrt = openssl_x509_read($cert);
+
+/*  int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose);   */
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY));
+
+/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() ] ); */
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($rcrt, X509_PURPOSE_ANY, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca)));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca)));
+
+/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ); function */
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
+var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca), $utfl));
+?>
+--EXPECT--
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+int(-1)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_x509_checkpurpose.phpt 7.1.13-1/ext/openssl/tests/openssl_x509_checkpurpose.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_x509_checkpurpose.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_x509_checkpurpose.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,149 +0,0 @@
---TEST--
-int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ) function
---CREDITS--
-marcosptf - <marcosptf@yahoo.com.br>
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; 
-if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0");
-?>
---FILE--
-<?php
-$cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$bert = "file://" . dirname(__FILE__) . "/bug41033.pem";
-$sert = "file://" . dirname(__FILE__) . "/san-cert.pem";
-$cpca = dirname(__FILE__) . "/san-ca.pem";
-$utfl = dirname(__FILE__) . "/sni_server_domain1.pem";
-
-/*  int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose);   */
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY));
-
-/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() ] ); */
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca)));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca)));
-
-/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ); function */
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl));
-var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca), $utfl));
-?>
---EXPECT--
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-int(-1)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-bool(true)
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -21,10 +21,15 @@ var_dump(openssl_x509_fingerprint($cert,
 echo "**Testing raw output md5 **\n";
 var_dump(bin2hex(openssl_x509_fingerprint($cert, 'md5', true)));
 
+echo "** Testing hash method sha1 with resource **\n";
+$r = openssl_x509_read($cert);
+var_dump(openssl_x509_fingerprint($r, 'sha1'));
+
 echo "** Testing bad certification **\n";
 var_dump(openssl_x509_fingerprint('123'));
 echo "** Testing bad hash method **\n";
 var_dump(openssl_x509_fingerprint($cert, 'xx45'));
+?>
 --EXPECTF--
 ** Testing with no parameters **
 
@@ -36,6 +41,8 @@ string(40) "6e6fd1ea10a5a23071d61c728ee9
 string(32) "ac77008e172897e06c0b065294487a67"
 **Testing raw output md5 **
 string(32) "ac77008e172897e06c0b065294487a67"
+** Testing hash method sha1 with resource **
+string(40) "6e6fd1ea10a5a23071d61c728ee9b40df6dbc33c"
 ** Testing bad certification **
 
 Warning: openssl_x509_fingerprint(): cannot get cert from parameter 1 in %s on line %d
diff -pruN 7.1.8-1/ext/openssl/tests/openssl_x509_parse_basic.phpt 7.1.13-1/ext/openssl/tests/openssl_x509_parse_basic.phpt
--- 7.1.8-1/ext/openssl/tests/openssl_x509_parse_basic.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/tests/openssl_x509_parse_basic.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -8,10 +8,13 @@ if (OPENSSL_VERSION_NUMBER < 0x10000000)
 <?php
 $cert = "file://" . dirname(__FILE__) . "/cert.crt";
 
-var_dump(openssl_x509_parse($cert));
+$parsedCert = openssl_x509_parse($cert);
+var_dump($parsedCert === openssl_x509_parse(openssl_x509_read($cert)));
+var_dump($parsedCert);
 var_dump(openssl_x509_parse($cert, false));
 ?>
 --EXPECTF--
+bool(true)
 array(16) {
   ["name"]=>
   string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
diff -pruN 7.1.8-1/ext/openssl/xp_ssl.c 7.1.13-1/ext/openssl/xp_ssl.c
--- 7.1.8-1/ext/openssl/xp_ssl.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/openssl/xp_ssl.c	2018-01-03 02:32:30.000000000 +0000
@@ -1170,7 +1170,7 @@ static int set_server_dh_param(php_strea
 	}
 
 	convert_to_string_ex(zdhpath);
-	bio = BIO_new_file(Z_STRVAL_P(zdhpath), "r");
+	bio = BIO_new_file(Z_STRVAL_P(zdhpath), PHP_OPENSSL_BIO_MODE_R(PKCS7_BINARY));
 
 	if (bio == NULL) {
 		php_error_docref(NULL, E_WARNING, "invalid dh_param");
diff -pruN 7.1.8-1/ext/pcre/pcrelib/pcre_compile.c 7.1.13-1/ext/pcre/pcrelib/pcre_compile.c
--- 7.1.8-1/ext/pcre/pcrelib/pcre_compile.c	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/pcre/pcrelib/pcre_compile.c	2018-01-03 02:32:26.000000000 +0000
@@ -7272,7 +7272,12 @@ for (;; ptr++)
           so far in order to get the number. If the name is not found, leave
           the value of recno as 0 for a forward reference. */
 
-          else
+          /* This patch (removing "else") fixes a problem when a reference is
+          to multiple identically named nested groups from within the nest.
+          Once again, it is not the "proper" fix, and it results in an
+          over-allocation of memory. */
+
+          /* else */
             {
             ng = cd->named_groups;
             for (i = 0; i < cd->names_found; i++, ng++)
diff -pruN 7.1.8-1/ext/pcre/php_pcre.c 7.1.13-1/ext/pcre/php_pcre.c
--- 7.1.8-1/ext/pcre/php_pcre.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/pcre/php_pcre.c	2018-01-03 02:32:26.000000000 +0000
@@ -356,6 +356,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 #endif
 		php_error_docref(NULL, E_WARNING,
 						 p < ZSTR_VAL(regex) + ZSTR_LEN(regex) ? "Null byte in regex" : "Empty regular expression");
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		return NULL;
 	}
 
@@ -369,6 +370,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		}
 #endif
 		php_error_docref(NULL,E_WARNING, "Delimiter must not be alphanumeric or backslash");
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		return NULL;
 	}
 
@@ -419,6 +421,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		} else {
 			php_error_docref(NULL,E_WARNING, "No ending matching delimiter '%c' found", delimiter);
 		}
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		return NULL;
 	}
 
@@ -467,6 +470,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 				} else {
 					php_error_docref(NULL,E_WARNING, "Null byte in regex");
 				}
+				pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 				efree(pattern);
 #if HAVE_SETLOCALE
 				if (key != regex) {
@@ -497,6 +501,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		}
 #endif
 		php_error_docref(NULL,E_WARNING, "Compilation failed: %s at offset %d", error, erroffset);
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		efree(pattern);
 		if (tables) {
 			pefree((void*)tables, 1);
@@ -528,6 +533,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		}
 		if (error != NULL) {
 			php_error_docref(NULL, E_WARNING, "Error while studying pattern");
+			pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		}
 	} else {
 		extra = NULL;
@@ -564,6 +570,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		}
 #endif
 		php_error_docref(NULL, E_WARNING, "Internal pcre_fullinfo() error %d", rc);
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		return NULL;
 	}
 
@@ -575,6 +582,7 @@ PHPAPI pcre_cache_entry* pcre_get_compil
 		}
 #endif
 		php_error_docref(NULL, E_WARNING, "Internal pcre_fullinfo() error %d", rc);
+		pcre_handle_exec_error(PCRE_ERROR_INTERNAL);
 		return NULL;
 	}
 
diff -pruN 7.1.8-1/ext/pcre/tests/bug74183.phpt 7.1.13-1/ext/pcre/tests/bug74183.phpt
--- 7.1.8-1/ext/pcre/tests/bug74183.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/pcre/tests/bug74183.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,15 @@
+--TEST--
+Bug #74183 - preg_last_error not returning error code after error
+--FILE--
+<?php
+
+$sRegex = "/([A-Z]|[a-z]|[0-9]| |Ñ|ñ|!|&quot;|%|&amp;|'|´|-|:|;|>|=|&lt;|@|_|,|\{|\}|`|~|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ü|Ü){1,300}/";
+$sTest = "Hello world";
+
+var_dump(preg_match($sRegex, $sTest));
+var_dump(preg_last_error() === \PREG_INTERNAL_ERROR);
+?>
+--EXPECTF--
+Warning: preg_match(): Compilation failed: regular expression is too large at offset %s in %s on line %s
+bool(false)
+bool(true)
\ No newline at end of file
diff -pruN 7.1.8-1/ext/pcre/tests/bug75207.phpt 7.1.13-1/ext/pcre/tests/bug75207.phpt
--- 7.1.8-1/ext/pcre/tests/bug75207.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/pcre/tests/bug75207.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,10 @@
+--TEST--
+CVE-2016-1283, see bug #75207
+--FILE--
+<?php
+preg_match("/(?:F?+(?:^(?(R)a+\"){99}-))(?J)(?'R'(?'R'<((?'RR'(?'R'\){97)?J)?J)(?'R'(?'R'\){99|(:(?|(?'R')(\k'R')|((?'R')))H'R'R)(H'R))))))/", "*b\dc");
+?>
+==DONE==
+--EXPECTF--
+Warning: preg_match(): Compilation failed: unmatched parentheses at offset %d in %s on line %d
+==DONE==
diff -pruN 7.1.8-1/ext/pcre/tests/bug75539.phpt 7.1.13-1/ext/pcre/tests/bug75539.phpt
--- 7.1.8-1/ext/pcre/tests/bug75539.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/pcre/tests/bug75539.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,13 @@
+--TEST--
+Bug #75539 - Recursive call errors are not reported by preg_last_error()
+--FILE--
+<?php
+
+var_dump(preg_match('/((?1)?z)/', ''));
+var_dump(preg_last_error() === \PREG_INTERNAL_ERROR);
+
+?>
+--EXPECTF--
+Warning: preg_match(): Compilation failed: recursive call could loop indefinitely at offset %s in %s on line %s
+bool(false)
+bool(true)
\ No newline at end of file
diff -pruN 7.1.8-1/ext/pdo/pdo_stmt.c 7.1.13-1/ext/pdo/pdo_stmt.c
--- 7.1.8-1/ext/pdo/pdo_stmt.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/pdo/pdo_stmt.c	2018-01-03 02:32:30.000000000 +0000
@@ -2019,7 +2019,9 @@ static int pdo_stmt_do_next_rowset(pdo_s
 		struct pdo_column_data *cols = stmt->columns;
 
 		for (i = 0; i < stmt->column_count; i++) {
-			zend_string_release(cols[i].name);
+			if (cols[i].name) {
+				zend_string_release(cols[i].name);
+			}
 		}
 		efree(stmt->columns);
 		stmt->columns = NULL;
diff -pruN 7.1.8-1/ext/pdo_mysql/mysql_driver.c 7.1.13-1/ext/pdo_mysql/mysql_driver.c
--- 7.1.8-1/ext/pdo_mysql/mysql_driver.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/pdo_mysql/mysql_driver.c	2018-01-03 02:32:30.000000000 +0000
@@ -327,7 +327,7 @@ static int mysql_handle_commit(pdo_dbh_t
 	PDO_DBG_ENTER("mysql_handle_commit");
 	PDO_DBG_INF_FMT("dbh=%p", dbh);
 #if MYSQL_VERSION_ID >= 40100 || defined(PDO_USE_MYSQLND)
-	PDO_DBG_RETURN(0 <= mysql_commit(((pdo_mysql_db_handle *)dbh->driver_data)->server));
+	PDO_DBG_RETURN(0 == mysql_commit(((pdo_mysql_db_handle *)dbh->driver_data)->server));
 #else
 	PDO_DBG_RETURN(0 <= mysql_handle_doer(dbh, ZEND_STRL("COMMIT")));
 #endif
diff -pruN 7.1.8-1/ext/pdo_mysql/tests/bug75177.phpt 7.1.13-1/ext/pdo_mysql/tests/bug75177.phpt
--- 7.1.8-1/ext/pdo_mysql/tests/bug75177.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/pdo_mysql/tests/bug75177.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,33 @@
+--TEST--
+PDO MySQL Bug #75177 Type 'bit' is fetched as unexpected string
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
+?>
+--FILE--
+<?php
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+$pdo = MySQLPDOTest::factory();
+
+$tbl = "tbl_bug75177";
+$pdo->query("DROP TABLE IF EXISTS $tbl");
+$pdo->query("CREATE TABLE $tbl (`bit` bit(8)) ENGINE=InnoDB");
+$pdo->query("INSERT INTO $tbl (`bit`) VALUES (1)");
+$pdo->query("INSERT INTO $tbl (`bit`) VALUES (0b011)");
+$pdo->query("INSERT INTO $tbl (`bit`) VALUES (0b01100)");
+
+$ret = $pdo->query("SELECT * FROM $tbl")->fetchAll();
+
+foreach ($ret as $i) {
+	var_dump($i["bit"]);
+}
+
+?>
+==DONE==
+--EXPECT--
+string(1) "1"
+string(1) "3"
+string(2) "12"
+==DONE==
diff -pruN 7.1.8-1/ext/pdo_oci/pdo_oci.c 7.1.13-1/ext/pdo_oci/pdo_oci.c
--- 7.1.8-1/ext/pdo_oci/pdo_oci.c	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/pdo_oci/pdo_oci.c	2018-01-03 02:32:23.000000000 +0000
@@ -29,6 +29,9 @@
 #include "pdo/php_pdo_driver.h"
 #include "php_pdo_oci.h"
 #include "php_pdo_oci_int.h"
+#ifdef ZTS
+#include <TSRM/TSRM.h>
+#endif
 
 /* {{{ pdo_oci_functions[] */
 const zend_function_entry pdo_oci_functions[] = {
@@ -50,7 +53,7 @@ zend_module_entry pdo_oci_module_entry =
 	pdo_oci_functions,
 	PHP_MINIT(pdo_oci),
 	PHP_MSHUTDOWN(pdo_oci),
-	NULL,
+	PHP_RINIT(pdo_oci),
 	NULL,
 	PHP_MINFO(pdo_oci),
 	PHP_PDO_OCI_VERSION,
@@ -80,18 +83,48 @@ const ub4 PDO_OCI_INIT_MODE =
 /* true global environment */
 OCIEnv *pdo_oci_Env = NULL;
 
+#ifdef ZTS
+/* lock for pdo_oci_Env initialization */
+static MUTEX_T pdo_oci_env_mutex;
+#endif
+
 /* {{{ PHP_MINIT_FUNCTION
  */
 PHP_MINIT_FUNCTION(pdo_oci)
 {
 	php_pdo_register_driver(&pdo_oci_driver);
 
+	// Defer OCI init to PHP_RINIT_FUNCTION because with php-fpm,
+	// NLS_LANG is not yet available here.
+
+#ifdef ZTS
+	pdo_oci_env_mutex = tsrm_mutex_alloc();
+#endif
+
+	return SUCCESS;
+}
+/* }}} */
+
+/* {{{ PHP_RINIT_FUNCTION
+ */
+PHP_RINIT_FUNCTION(pdo_oci)
+{
+	if (!pdo_oci_Env) {
+#ifdef ZTS
+		tsrm_mutex_lock(pdo_oci_env_mutex);
+		if (!pdo_oci_Env) { // double-checked locking idiom
+#endif
 #if HAVE_OCIENVCREATE
-	OCIEnvCreate(&pdo_oci_Env, PDO_OCI_INIT_MODE, NULL, NULL, NULL, NULL, 0, NULL);
+		OCIEnvCreate(&pdo_oci_Env, PDO_OCI_INIT_MODE, NULL, NULL, NULL, NULL, 0, NULL);
 #else
-	OCIInitialize(PDO_OCI_INIT_MODE, NULL, NULL, NULL, NULL);
-	OCIEnvInit(&pdo_oci_Env, OCI_DEFAULT, 0, NULL);
+		OCIInitialize(PDO_OCI_INIT_MODE, NULL, NULL, NULL, NULL);
+		OCIEnvInit(&pdo_oci_Env, OCI_DEFAULT, 0, NULL);
+#endif
+#ifdef ZTS
+		}
+		tsrm_mutex_unlock(pdo_oci_env_mutex);
 #endif
+	}
 
 	return SUCCESS;
 }
@@ -102,7 +135,15 @@ PHP_MINIT_FUNCTION(pdo_oci)
 PHP_MSHUTDOWN_FUNCTION(pdo_oci)
 {
 	php_pdo_unregister_driver(&pdo_oci_driver);
-	OCIHandleFree((dvoid*)pdo_oci_Env, OCI_HTYPE_ENV);
+
+	if (pdo_oci_Env) {
+		OCIHandleFree((dvoid*)pdo_oci_Env, OCI_HTYPE_ENV);
+	}
+
+#ifdef ZTS
+	tsrm_mutex_free(pdo_oci_env_mutex);
+#endif
+
 	return SUCCESS;
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/pdo_pgsql/tests/bug48764.phpt 7.1.13-1/ext/pdo_pgsql/tests/bug48764.phpt
--- 7.1.8-1/ext/pdo_pgsql/tests/bug48764.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/pdo_pgsql/tests/bug48764.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -12,7 +12,7 @@ $db = PDOTest::factory();
 $client_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
 $server_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
 
-if (version_compare($server_version, '7.4', '<') || version_compare($client_version, '7.4', '<')) {
+if (version_compare($server_version, '7.4', '<') || version_compare($client_version, '7.4', '<') || version_compare($server_version, '10', '>=')) {
         die('skip');
 }
 
diff -pruN 7.1.8-1/ext/pgsql/pgsql.c 7.1.13-1/ext/pgsql/pgsql.c
--- 7.1.8-1/ext/pgsql/pgsql.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/pgsql/pgsql.c	2018-01-03 02:32:29.000000000 +0000
@@ -1568,32 +1568,27 @@ PHP_FUNCTION(pg_close)
 {
 	zval *pgsql_link = NULL;
 	zend_resource *link;
-	int argc = ZEND_NUM_ARGS();
-	PGconn *pgsql;
 
-	if (zend_parse_parameters(argc, "|r", &pgsql_link) == FAILURE) {
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|r", &pgsql_link) == FAILURE) {
 		return;
 	}
 
-	if (argc == 0) {
+	if (pgsql_link) {
+		link = Z_RES_P(pgsql_link);
+	} else {
 		link = FETCH_DEFAULT_LINK();
 		CHECK_DEFAULT_LINK(link);
-	} else {
-		link = Z_RES_P(pgsql_link);
 	}
 
-	if ((pgsql = (PGconn *)zend_fetch_resource2(link, "PostgreSQL link", le_link, le_plink)) == NULL) {
+	if (zend_fetch_resource2(link, "PostgreSQL link", le_link, le_plink) == NULL) {
 		RETURN_FALSE;
 	}
 
-	if (argc == 0) { /* explicit resource number */
-		zend_list_close(link);
-	}
-
-	if (argc || (pgsql_link && Z_RES_P(pgsql_link) == PGG(default_link))) {
-		zend_list_close(link);
+	if (link == PGG(default_link)) {
+		zend_list_delete(link);
 		PGG(default_link) = NULL;
 	}
+	zend_list_close(link);
 
 	RETURN_TRUE;
 }
diff -pruN 7.1.8-1/ext/pgsql/tests/bug75419.phpt 7.1.13-1/ext/pgsql/tests/bug75419.phpt
--- 7.1.8-1/ext/pgsql/tests/bug75419.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/pgsql/tests/bug75419.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -0,0 +1,14 @@
+--TEST--
+Bug #75419 Default link leaked via pg_close()
+--SKIPIF--
+<?php include("skipif.inc"); ?>
+--FILE--
+<?php
+include('config.inc');
+
+$db1 = pg_connect($conn_str, PGSQL_CONNECT_FORCE_NEW);
+$db2 = pg_connect($conn_str, PGSQL_CONNECT_FORCE_NEW);
+pg_close($db1);
+var_dump(pg_ping());
+--EXPECT--
+bool(true)
diff -pruN 7.1.8-1/ext/pgsql/tests/pg_update_001.phpt 7.1.13-1/ext/pgsql/tests/pg_update_001.phpt
--- 7.1.8-1/ext/pgsql/tests/pg_update_001.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/pgsql/tests/pg_update_001.phpt	2018-01-03 02:32:29.000000000 +0000
@@ -24,7 +24,7 @@ var_dump(pg_update($conn, 'foo', array('
 pg_update($conn, 'phptests.foo', array('id' => 100), array('id2' => 2));
 var_dump(pg_update($conn, 'phptests.foo', array('id' => 100), array('id2' => 2), PGSQL_DML_STRING));
 
-$rs = pg_query('SELECT * FROM foo UNION SELECT * FROM phptests.foo');
+$rs = pg_query('SELECT * FROM foo UNION SELECT * FROM phptests.foo ORDER BY id');
 while ($row = pg_fetch_assoc($rs)) {
 	var_dump($row);
 }
diff -pruN 7.1.8-1/ext/phar/phar.1.in 7.1.13-1/ext/phar/phar.1.in
--- 7.1.8-1/ext/phar/phar.1.in	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/phar.1.in	2018-01-03 02:32:28.000000000 +0000
@@ -1,4 +1,4 @@
-.TH PHAR 1 "2016" "The PHP Group" "User Commands"
+.TH PHAR 1 "2017" "The PHP Group" "User Commands"
 .SH NAME
 phar, phar.phar \- PHAR (PHP archive) command line tool
 .SH SYNOPSIS
@@ -507,7 +507,7 @@ contributors all around the world.
 .SH VERSION INFORMATION
 This manpage describes \fBphar\fP, version @PHP_VERSION@.
 .SH COPYRIGHT
-Copyright \(co 1997\-2016 The PHP Group
+Copyright \(co 1997\-2017 The PHP Group
 .LP
 This source file is subject to version 3.01 of the PHP license,
 that is bundled with this package in the file LICENSE, and is
diff -pruN 7.1.8-1/ext/phar/shortarc.php 7.1.13-1/ext/phar/shortarc.php
--- 7.1.8-1/ext/phar/shortarc.php	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/shortarc.php	2018-01-03 02:32:28.000000000 +0000
@@ -74,7 +74,7 @@ if (@(isset($_SERVER['REQUEST_URI']) &&
     $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
     if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
         header('HTTP/1.0 404 Not Found');
-        echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+        echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
         exit;
     }
     $b = pathinfo($a);
diff -pruN 7.1.8-1/ext/phar/stub.h 7.1.13-1/ext/phar/stub.h
--- 7.1.8-1/ext/phar/stub.h	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/stub.h	2018-01-03 02:32:28.000000000 +0000
@@ -22,12 +22,12 @@ static inline zend_string* phar_get_stub
 {
 	static const char newstub0[] = "<?php\n\n$web = '";
 	static const char newstub1_0[] = "';\n\nif (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {\nPhar::interceptFileFuncs();\nset_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());\nPhar::webPhar(null, $web);\ninclude 'phar://' . __FILE__ . '/' . Extract_Phar::START;\nreturn;\n}\n\nif (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {\nExtract_Phar::go(true);\n$mimes = array(\n'phps' => 2,\n'c' => 'text/plain',\n'cc' => 'text/plain',\n'cpp' => 'text/plain',\n'c++' => 'text/plain',\n'dtd' => 'text/plain',\n'h' => 'text/plain',\n'log' => 'text/plain',\n'rng' => 'text/plain',\n'txt' => 'text/plain',\n'xsd' => 'text/plain',\n'php' => 1,\n'inc' => 1,\n'avi' => 'video/avi',\n'bmp' => 'image/bmp',\n'css' => 'text/css',\n'gif' => 'image/gif',\n'htm' => 'text/html',\n'html' => 'text/html',\n'htmls' => 'text/html',\n'ico' => 'image/x-ico',\n'jpe' => 'image/jpeg',\n'jpg' => 'image/jpeg',\n'jpeg' => 'image/jpeg',\n'js' => 'application/x-javascript',\n'midi' => 'audio/midi',\n'mid' => 'audio/midi',\n'mod' => 'audio/mod',\n'mov' => 'movie/quicktime',\n'mp3' => 'audio/mp3',\n'mpg' => 'video/mpeg',\n'mpeg' => 'video/mpeg',\n'pdf' => 'application/pdf',\n'png' => 'image/png',\n'swf' => 'application/shockwave-flash',\n'tif' => 'image/tiff',\n'tiff' => 'image/tiff',\n'wav' => 'audio/wav',\n'xbm' => 'image/xbm',\n'xml' => 'text/xml',\n);\n\nheader(\"Cache-Control: no-cache, must-revalidate\");\nheader(\"Pragma: no-cache\");\n\n$basename = basename(__FILE__);\nif (!strpos($_SERVER['REQUEST_URI'], $basename)) {\nchdir(Extract_Phar::$temp);\ninclude $web;\nreturn;\n}\n$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));\nif (!$pt || $pt == '/') {\n$pt = $web;\nheader('HTTP/1.1 301 Moved Permanently');\nheader('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);\nexit;\n}\n$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);\nif (!$a || strlen(dirname($a)) < strlen(";
-	static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n  <title>File Not Found<title>\\n </head>\\n <body>\\n  <h1>404 - File \", $pt, \" Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '";
+	static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n  <title>File Not Found<title>\\n </head>\\n <body>\\n  <h1>404 - File Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '";
 	static const char newstub2[] = "';\nconst LEN = ";
 	static const char newstub3_0[] = ";\n\nstatic function go($return = false)\n{\n$fp = fopen(__FILE__, 'rb');\nfseek($fp, self::LEN);\n$L = unpack('V', $a = fread($fp, 4));\n$m = '';\n\ndo {\n$read = 8192;\nif ($L[1] - strlen($m) < 8192) {\n$read = $L[1] - strlen($m);\n}\n$last = fread($fp, $read);\n$m .= $last;\n} while (strlen($last) && strlen($m) < $L[1]);\n\nif (strlen($m) < $L[1]) {\ndie('ERROR: manifest length read was \"' .\nstrlen($m) .'\" should be \"' .\n$L[1] . '\"');\n}\n\n$info = self::_unpack($m);\n$f = $info['c'];\n\nif ($f & self::GZ) {\nif (!function_exists('gzinflate')) {\ndie('Error: zlib extension is not enabled -' .\n' gzinflate() function needed for zlib-compressed .phars');\n}\n}\n\nif ($f & self::BZ2) {\nif (!function_exists('bzdecompress')) {\ndie('Error: bzip2 extension is not enabled -' .\n' bzdecompress() function needed for bz2-compressed .phars');\n}\n}\n\n$temp = self::tmpdir();\n\nif (!$temp || !is_writable($temp)) {\n$sessionpath = session_save_path();\nif (strpos ($sessionpath, \";\") !== false)\n$sessionpath = substr ($sessionpath, strpos ($sessionpath, \";\")+1);\nif (!file_exists($sessionpath) || !is_dir($sessionpath)) {\ndie('Could not locate temporary directory to extract phar');\n}\n$temp = $sessionpath;\n}\n\n$temp .= '/pharextract/'.basename(__FILE__, '.phar');\nself::$temp = $temp;\nself::$origdir = getcwd();\n@mkdir($temp, 0777, true);\n$temp = realpath($temp);\n\nif (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) {\nself::_removeTmpFiles($temp, getcwd());\n@mkdir($temp, 0777, true);\n@file_put_contents($temp . '/' . md5_file(__FILE__), '');\n\nforeach ($info['m'] as $path => $file) {\n$a = !file_exists(dirname($temp . '/' . $path));\n@mkdir(dirname($temp . '/' . $path), 0777, true);\nclearstatcache();\n\nif ($path[strlen($path) - 1] == '/') {\n@mkdir($temp . '/' . $path, 0777);\n} else {\nfile_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));\n@chmod($temp . '/' . $path, 0666);\n}\n}\n}\n\nchdir($temp);\n\nif (!$return) {\ninclude self::START;\n}\n}\n\nstatic fun";
 	static const char newstub3_1[] = "ction tmpdir()\n{\nif (strpos(PHP_OS, 'WIN') !== false) {\nif ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) {\nreturn $var;\n}\nif (is_dir('/temp') || mkdir('/temp')) {\nreturn realpath('/temp');\n}\nreturn false;\n}\nif ($var = getenv('TMPDIR')) {\nreturn $var;\n}\nreturn realpath('/tmp');\n}\n\nstatic function _unpack($m)\n{\n$info = unpack('V', substr($m, 0, 4));\n $l = unpack('V', substr($m, 10, 4));\n$m = substr($m, 14 + $l[1]);\n$s = unpack('V', substr($m, 0, 4));\n$o = 0;\n$start = 4 + $s[1];\n$ret['c'] = 0;\n\nfor ($i = 0; $i < $info[1]; $i++) {\n $len = unpack('V', substr($m, $start, 4));\n$start += 4;\n $savepath = substr($m, $start, $len[1]);\n$start += $len[1];\n   $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));\n$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3]\n& 0xffffffff);\n$ret['m'][$savepath][7] = $o;\n$o += $ret['m'][$savepath][2];\n$start += 24 + $ret['m'][$savepath][5];\n$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;\n}\nreturn $ret;\n}\n\nstatic function extractFile($path, $entry, $fp)\n{\n$data = '';\n$c = $entry[2];\n\nwhile ($c) {\nif ($c < 8192) {\n$data .= @fread($fp, $c);\n$c = 0;\n} else {\n$c -= 8192;\n$data .= @fread($fp, 8192);\n}\n}\n\nif ($entry[4] & self::GZ) {\n$data = gzinflate($data);\n} elseif ($entry[4] & self::BZ2) {\n$data = bzdecompress($data);\n}\n\nif (strlen($data) != $entry[0]) {\ndie(\"Invalid internal .phar file (size error \" . strlen($data) . \" != \" .\n$stat[7] . \")\");\n}\n\nif ($entry[3] != sprintf(\"%u\", crc32($data) & 0xffffffff)) {\ndie(\"Invalid internal .phar file (checksum error)\");\n}\n\nreturn $data;\n}\n\nstatic function _removeTmpFiles($temp, $origdir)\n{\nchdir($temp);\n\nforeach (glob('*') as $f) {\nif (file_exists($f)) {\nis_dir($f) ? @rmdir($f) : @unlink($f);\nif (file_exists($f) && is_dir($f)) {\nself::_removeTmpFiles($f, getcwd());\n}\n}\n}\n\n@rmdir($temp);\nclearstatcache();\nchdir($origdir);\n}\n}\n\nExtract_Phar::go();\n__HALT_COMPILER(); ?>";
 
-	static const int newstub_len = 6633;
+	static const int newstub_len = 6623;
 
 	return strpprintf(name_len + web_len + newstub_len, "%s%s%s%s%s%s%d%s%s", newstub0, web, newstub1_0, newstub1_1, index_php, newstub2, name_len + web_len + newstub_len, newstub3_0, newstub3_1);
 }
diff -pruN 7.1.8-1/ext/phar/tests/bug74991.phpt 7.1.13-1/ext/phar/tests/bug74991.phpt
--- 7.1.8-1/ext/phar/tests/bug74991.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/bug74991.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,23 @@
+--TEST--
+Phar: PHP bug #74991: include_path has a 4096 char (minus "__DIR__:") limit, in some PHAR cases
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip");
+--INI--
+phar.readonly=0
+--FILE--
+<?php
+// create a sample file in a custom include_path to lookup from the phar later:
+mkdir('path');
+touch('path/needle.php');
+$p = new Phar('sample.phar');
+// the use of a sub path is crucial, and make the include_path 1 byte larger (=OVERFLOW) than the MAXPATHLEN, the include_path will then be truncated to 4096 (MAXPATHLEN) into 'phar://..sample.phar/some:xx..xx:pat' so it will fail to find needle.php:
+$p['some/file'] = "<?php const MAXPATHLEN = 4096, OVERFLOW = 1, PATH = 'path'; set_include_path(str_repeat('x', MAXPATHLEN - strlen(__DIR__ . PATH_SEPARATOR . PATH_SEPARATOR . PATH) + OVERFLOW) . PATH_SEPARATOR . PATH); require('needle.php');";
+$p->setStub("<?php Phar::mapPhar('sample.phar'); __HALT_COMPILER();");
+// execute the phar code:
+require('phar://sample.phar/some/file');
+--CLEAN--
+<?php
+unlink('path/needle.php');
+unlink('sample.phar');
+rmdir('path');
+--EXPECT--
diff -pruN 7.1.8-1/ext/phar/tests/cache_list/copyonwrite11.phar.phpt 7.1.13-1/ext/phar/tests/cache_list/copyonwrite11.phar.phpt
--- 7.1.8-1/ext/phar/tests/cache_list/copyonwrite11.phar.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/cache_list/copyonwrite11.phar.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -18,5 +18,5 @@ echo strlen($p2->getStub()),"\n";
 echo "ok\n";
 __HALT_COMPILER(); ?>
 "
-6653
-ok
\ No newline at end of file
+6643
+ok
diff -pruN 7.1.8-1/ext/phar/tests/phar_commitwrite.phpt 7.1.13-1/ext/phar/tests/phar_commitwrite.phpt
--- 7.1.8-1/ext/phar/tests/phar_commitwrite.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_commitwrite.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -29,7 +29,7 @@ unlink(dirname(__FILE__) . '/brandnewpha
 __HALT_COMPILER();
 ?>
 --EXPECT--
-int(6651)
+int(6641)
 string(200) "<?php
 function __autoload($class)
 {
@@ -39,4 +39,4 @@ Phar::mapPhar('brandnewphar.phar');
 include 'phar://brandnewphar.phar/startup.php';
 __HALT_COMPILER(); ?>
 "
-===DONE===
\ No newline at end of file
+===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/phar_convert_repeated.phpt 7.1.13-1/ext/phar/tests/phar_convert_repeated.phpt
--- 7.1.8-1/ext/phar/tests/phar_convert_repeated.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_convert_repeated.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -123,7 +123,7 @@ NULL
 bool(true)
 bool(false)
 bool(false)
-int(6651)
+int(6641)
 NULL
 ================= convertToZip() =====================
 bool(false)
diff -pruN 7.1.8-1/ext/phar/tests/phar_createdefaultstub.phpt 7.1.13-1/ext/phar/tests/phar_createdefaultstub.phpt
--- 7.1.8-1/ext/phar/tests/phar_createdefaultstub.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_createdefaultstub.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -34,7 +34,7 @@ echo $e->getMessage() . "\n";
 ?>
 ===DONE===
 --EXPECT--
-string(6651) "<?php
+string(6641) "<?php
 
 $web = 'index.php';
 
@@ -110,7 +110,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -144,7 +144,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'index.php';
-const LEN = 6653;
+const LEN = 6643;
 
 static function go($return = false)
 {
@@ -328,7 +328,7 @@ Extract_Phar::go();
 __HALT_COMPILER(); ?>"
 ============================================================================
 ============================================================================
-string(6662) "<?php
+string(6652) "<?php
 
 $web = 'index.php';
 
@@ -404,7 +404,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -438,7 +438,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'my/custom/thingy.php';
-const LEN = 6664;
+const LEN = 6654;
 
 static function go($return = false)
 {
@@ -622,7 +622,7 @@ Extract_Phar::go();
 __HALT_COMPILER(); ?>"
 ============================================================================
 ============================================================================
-int(7042)
+int(7032)
 ============================================================================
 ============================================================================
 Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
@@ -630,7 +630,7 @@ Illegal filename passed in for stub crea
 ============================================================================
 ============================================================================
 ============================================================================
-string(6664) "<?php
+string(6654) "<?php
 
 $web = 'the/web.php';
 
@@ -706,7 +706,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -740,7 +740,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'my/custom/thingy.php';
-const LEN = 6666;
+const LEN = 6656;
 
 static function go($return = false)
 {
@@ -924,6 +924,6 @@ Extract_Phar::go();
 __HALT_COMPILER(); ?>"
 ============================================================================
 ============================================================================
-int(7042)
+int(7032)
 Illegal web filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/phar_create_in_cwd.phpt 7.1.13-1/ext/phar/tests/phar_create_in_cwd.phpt
--- 7.1.8-1/ext/phar/tests/phar_create_in_cwd.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_create_in_cwd.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -32,7 +32,7 @@ __HALT_COMPILER();
 unlink(dirname(__FILE__) . '/brandnewphar.phar');
 ?>
 --EXPECT--
-int(6651)
+int(6641)
 string(200) "<?php
 function __autoload($class)
 {
@@ -42,4 +42,4 @@ Phar::mapPhar('brandnewphar.phar');
 include 'phar://brandnewphar.phar/startup.php';
 __HALT_COMPILER(); ?>
 "
-===DONE===
\ No newline at end of file
+===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/phar_offset_check.phpt 7.1.13-1/ext/phar/tests/phar_offset_check.phpt
--- 7.1.8-1/ext/phar/tests/phar_offset_check.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_offset_check.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -70,8 +70,8 @@ var_dump($phar->getAlias());
 Entry .phar/stub.php does not exist
 Entry .phar/alias.txt does not exist
 Cannot set stub ".phar/stub.php" directly in phar "%sphar_offset_check.phar.php", use setStub
-int(6653)
-int(6653)
+int(6643)
+int(6643)
 Cannot set alias ".phar/alias.txt" directly in phar "%sphar_offset_check.phar.php", use setAlias
 string(5) "susan"
 string(5) "susan"
diff -pruN 7.1.8-1/ext/phar/tests/phar_setdefaultstub.phpt 7.1.13-1/ext/phar/tests/phar_setdefaultstub.phpt
--- 7.1.8-1/ext/phar/tests/phar_setdefaultstub.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/phar_setdefaultstub.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -54,7 +54,7 @@ try {
 unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar');
 ?>
 --EXPECT--
-string(6653) "<?php
+string(6643) "<?php
 
 $web = 'index.php';
 
@@ -130,7 +130,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -164,7 +164,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'index.php';
-const LEN = 6653;
+const LEN = 6643;
 
 static function go($return = false)
 {
@@ -349,7 +349,7 @@ __HALT_COMPILER(); ?>
 "
 ============================================================================
 ============================================================================
-string(6664) "<?php
+string(6654) "<?php
 
 $web = 'index.php';
 
@@ -425,7 +425,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -459,7 +459,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'my/custom/thingy.php';
-const LEN = 6664;
+const LEN = 6654;
 
 static function go($return = false)
 {
@@ -644,7 +644,7 @@ __HALT_COMPILER(); ?>
 "
 ============================================================================
 ============================================================================
-string(6666) "<?php
+string(6656) "<?php
 
 $web = 'the/web.php';
 
@@ -720,7 +720,7 @@ exit;
 $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
 if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) {
 header('HTTP/1.0 404 Not Found');
-echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>";
+echo "<html>\n <head>\n  <title>File Not Found<title>\n </head>\n <body>\n  <h1>404 - File Not Found</h1>\n </body>\n</html>";
 exit;
 }
 $b = pathinfo($a);
@@ -754,7 +754,7 @@ const GZ = 0x1000;
 const BZ2 = 0x2000;
 const MASK = 0x3000;
 const START = 'my/custom/thingy.php';
-const LEN = 6666;
+const LEN = 6656;
 
 static function go($return = false)
 {
@@ -939,6 +939,6 @@ __HALT_COMPILER(); ?>
 "
 ============================================================================
 ============================================================================
-int(7044)
+int(7034)
 Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/tar/phar_convert_phar2.phpt 7.1.13-1/ext/phar/tests/tar/phar_convert_phar2.phpt
--- 7.1.8-1/ext/phar/tests/tar/phar_convert_phar2.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/tar/phar_convert_phar2.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -49,14 +49,14 @@ __HALT_COMPILER();
 ?>
 --EXPECT--
 bool(false)
-int(6651)
+int(6641)
 bool(true)
 string(60) "<?php // tar-based phar archive stub file
 __HALT_COMPILER();"
 bool(true)
 int(4096)
-int(6651)
+int(6641)
 bool(true)
 bool(true)
-int(6651)
+int(6641)
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/tar/phar_convert_phar3.phpt 7.1.13-1/ext/phar/tests/tar/phar_convert_phar3.phpt
--- 7.1.8-1/ext/phar/tests/tar/phar_convert_phar3.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/tar/phar_convert_phar3.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -49,14 +49,14 @@ __HALT_COMPILER();
 ?>
 --EXPECT--
 bool(false)
-int(6651)
+int(6641)
 bool(true)
 string(60) "<?php // tar-based phar archive stub file
 __HALT_COMPILER();"
 bool(true)
 int(8192)
-int(6651)
+int(6641)
 bool(true)
 bool(true)
-int(6651)
+int(6641)
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/tar/phar_convert_phar4.phpt 7.1.13-1/ext/phar/tests/tar/phar_convert_phar4.phpt
--- 7.1.8-1/ext/phar/tests/tar/phar_convert_phar4.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/tar/phar_convert_phar4.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -54,7 +54,7 @@ __HALT_COMPILER();
 ?>
 --EXPECT--
 bool(false)
-int(6651)
+int(6641)
 string(2) "hi"
 bool(true)
 string(60) "<?php // tar-based phar archive stub file
@@ -62,10 +62,10 @@ __HALT_COMPILER();"
 string(2) "hi"
 bool(true)
 int(4096)
-int(6651)
+int(6641)
 string(2) "hi"
 bool(true)
 bool(true)
-int(6651)
+int(6641)
 string(2) "hi"
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/tar/phar_convert_phar.phpt 7.1.13-1/ext/phar/tests/tar/phar_convert_phar.phpt
--- 7.1.8-1/ext/phar/tests/tar/phar_convert_phar.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/tar/phar_convert_phar.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -47,12 +47,12 @@ __HALT_COMPILER();
 ?>
 --EXPECT--
 bool(false)
-int(6651)
+int(6641)
 bool(true)
 string(60) "<?php // tar-based phar archive stub file
 __HALT_COMPILER();"
 bool(true)
-int(6651)
+int(6641)
 bool(true)
-int(6651)
+int(6641)
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/tests/zip/phar_convert_phar.phpt 7.1.13-1/ext/phar/tests/zip/phar_convert_phar.phpt
--- 7.1.8-1/ext/phar/tests/zip/phar_convert_phar.phpt	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/tests/zip/phar_convert_phar.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -46,12 +46,12 @@ __HALT_COMPILER();
 ?>
 --EXPECT--
 bool(false)
-int(6651)
+int(6641)
 bool(true)
 string(60) "<?php // zip-based phar archive stub file
 __HALT_COMPILER();"
 bool(true)
-int(6651)
+int(6641)
 bool(true)
-int(6651)
+int(6641)
 ===DONE===
diff -pruN 7.1.8-1/ext/phar/util.c 7.1.13-1/ext/phar/util.c
--- 7.1.8-1/ext/phar/util.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/ext/phar/util.c	2018-01-03 02:32:28.000000000 +0000
@@ -309,7 +309,7 @@ splitted:
 		efree(test);
 	}
 
-	spprintf(&path, MAXPATHLEN, "phar://%s/%s%c%s", arch, PHAR_G(cwd), DEFAULT_DIR_SEPARATOR, PG(include_path));
+	spprintf(&path, MAXPATHLEN + 1 + strlen(PG(include_path)), "phar://%s/%s%c%s", arch, PHAR_G(cwd), DEFAULT_DIR_SEPARATOR, PG(include_path));
 	efree(arch);
 	ret = php_resolve_path(filename, filename_len, path);
 	efree(path);
diff -pruN 7.1.8-1/ext/reflection/php_reflection.c 7.1.13-1/ext/reflection/php_reflection.c
--- 7.1.8-1/ext/reflection/php_reflection.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/reflection/php_reflection.c	2018-01-03 02:32:30.000000000 +0000
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: db7056e03b7071d15858224c1c6c472ec58ef401 $ */
+/* $Id: fa936d2e1587e7b6b6c0f7235f4d9df7564a77ad $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -295,6 +295,15 @@ static zend_function *_copy_function(zen
 }
 /* }}} */
 
+static void _fix_closure_prototype(zend_function *fptr) /* {{{ */
+{
+	/* Actually we are setting proxy function's prototype to null
+	 * as for it, the prototype is an object not a function
+	 * which could cause serias problems, see #74949 */
+	fptr->common.prototype = NULL;
+}
+/* }}} */
+
 static void _free_function(zend_function *fptr) /* {{{ */
 {
 	if (fptr
@@ -603,6 +612,7 @@ static void _class_string(string *str, z
 						&& memcmp(ZSTR_VAL(mptr->common.function_name), ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
 						&& (closure = zend_get_closure_invoke_method(Z_OBJ_P(obj))) != NULL)
 					{
+						_fix_closure_prototype(closure);
 						mptr = closure;
 					} else {
 						closure = NULL;
@@ -2364,7 +2374,6 @@ ZEND_METHOD(reflection_generator, getExe
 }
 /* }}} */
 
-
 /* {{{ proto public static mixed ReflectionParameter::export(mixed function, mixed parameter [, bool return]) throws ReflectionException
    Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
 ZEND_METHOD(reflection_parameter, export)
@@ -2449,6 +2458,7 @@ ZEND_METHOD(reflection_parameter, __cons
 				{
 					/* nothing to do. don't set is_closure since is the invoke handler,
 					   not the closure itself */
+					_fix_closure_prototype(fptr);
 				} else if ((fptr = zend_hash_str_find_ptr(&ce->function_table, lcname, lcname_len)) == NULL) {
 					efree(lcname);
 					zend_throw_exception_ex(reflection_exception_ptr, 0,
@@ -3152,6 +3162,7 @@ ZEND_METHOD(reflection_method, __constru
 		&& (mptr = zend_get_closure_invoke_method(Z_OBJ_P(orig_obj))) != NULL)
 	{
 		/* do nothing, mptr already set */
+		_fix_closure_prototype(mptr);
 	} else if ((mptr = zend_hash_str_find_ptr(&ce->function_table, lcname, name_len)) == NULL) {
 		efree(lcname);
 		zend_throw_exception_ex(reflection_exception_ptr, 0,
@@ -4278,6 +4289,7 @@ ZEND_METHOD(reflection_class, getMethod)
 	{
 		/* don't assign closure_object since we only reflect the invoke handler
 		   method and not the closure definition itself */
+		_fix_closure_prototype(mptr);
 		reflection_method_factory(ce, mptr, NULL, return_value);
 		efree(lc_name);
 	} else if (ce == zend_ce_closure && Z_ISUNDEF(intern->obj) && (name_len == sizeof(ZEND_INVOKE_FUNC_NAME)-1)
@@ -4285,6 +4297,7 @@ ZEND_METHOD(reflection_class, getMethod)
 		&& object_init_ex(&obj_tmp, ce) == SUCCESS && (mptr = zend_get_closure_invoke_method(Z_OBJ(obj_tmp))) != NULL) {
 		/* don't assign closure_object since we only reflect the invoke handler
 		   method and not the closure definition itself */
+		_fix_closure_prototype(mptr);
 		reflection_method_factory(ce, mptr, NULL, return_value);
 		zval_dtor(&obj_tmp);
 		efree(lc_name);
@@ -4311,6 +4324,7 @@ static void _addmethod(zend_function *mp
 			&& memcmp(ZSTR_VAL(mptr->common.function_name), ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
 			&& (closure = zend_get_closure_invoke_method(Z_OBJ_P(obj))) != NULL)
 		{
+			_fix_closure_prototype(closure);
 			mptr = closure;
 		}
 		/* don't assign closure_object since we only reflect the invoke handler
@@ -4362,6 +4376,7 @@ ZEND_METHOD(reflection_class, getMethods
 	if (Z_TYPE(intern->obj) != IS_UNDEF && instanceof_function(ce, zend_ce_closure)) {
 		zend_function *closure = zend_get_closure_invoke_method(Z_OBJ(intern->obj));
 		if (closure) {
+			_fix_closure_prototype(closure);
 			_addmethod(closure, ce, return_value, filter, &intern->obj);
 			_free_function(closure);
 		}
@@ -6925,7 +6940,7 @@ PHP_MINFO_FUNCTION(reflection) /* {{{ */
 	php_info_print_table_start();
 	php_info_print_table_header(2, "Reflection", "enabled");
 
-	php_info_print_table_row(2, "Version", "$Id: db7056e03b7071d15858224c1c6c472ec58ef401 $");
+	php_info_print_table_row(2, "Version", "$Id: fa936d2e1587e7b6b6c0f7235f4d9df7564a77ad $");
 
 	php_info_print_table_end();
 } /* }}} */
diff -pruN 7.1.8-1/ext/reflection/tests/026.phpt 7.1.13-1/ext/reflection/tests/026.phpt
--- 7.1.8-1/ext/reflection/tests/026.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/reflection/tests/026.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -20,6 +20,7 @@ Version => %s
 date
 
 date/time support => enabled
+timelib version => %s
 "Olson" Timezone Database Version => %s
 Timezone Database => %s
 Default timezone => %s
diff -pruN 7.1.8-1/ext/reflection/tests/bug69802.phpt 7.1.13-1/ext/reflection/tests/bug69802.phpt
--- 7.1.8-1/ext/reflection/tests/bug69802.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/reflection/tests/bug69802.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,27 @@
+--TEST--
+Bug #69802 (Reflection on Closure::__invoke borks type hint class name)
+--FILE--
+<?php
+$f = function(stdClass $x): stdClass {};
+$r = new ReflectionMethod($f, '__invoke');
+var_dump($r->getParameters()[0]->getName());
+var_dump($r->getParameters()[0]->getClass());
+echo $r->getParameters()[0], "\n";
+echo $r->getReturnType()->getName(), "\n";
+echo $r,"\n";
+?>
+--EXPECT--
+string(1) "x"
+object(ReflectionClass)#4 (1) {
+  ["name"]=>
+  string(8) "stdClass"
+}
+Parameter #0 [ <required> stdClass $x ]
+stdClass
+Method [ <internal> public method __invoke ] {
+
+  - Parameters [1] {
+    Parameter #0 [ <required> stdClass $x ]
+  }
+  - Return [ stdClass ]
+}
diff -pruN 7.1.8-1/ext/reflection/tests/bug74949.phpt 7.1.13-1/ext/reflection/tests/bug74949.phpt
--- 7.1.8-1/ext/reflection/tests/bug74949.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/reflection/tests/bug74949.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,24 @@
+--TEST--
+Bug #74949 (null pointer dereference in _function_string)
+--FILE--
+<?php
+
+$f = function () {};
+
+$r = new ReflectionMethod($f, "__invoke");
+
+unset($f);
+
+echo $r, "\n";
+
+try  {
+	echo $r->getPrototype();
+} catch (Exception $e) {
+	echo $e->getMessage(), "\n";	
+}
+?>
+--EXPECT--
+Method [ <internal> public method __invoke ] {
+}
+
+Method Closure::__invoke does not have a prototype
diff -pruN 7.1.8-1/ext/session/session.c 7.1.13-1/ext/session/session.c
--- 7.1.8-1/ext/session/session.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/session/session.c	2018-01-05 15:39:53.000000000 +0000
@@ -99,6 +99,9 @@ zend_class_entry *php_session_update_tim
 static void php_session_send_cookie(void);
 static void php_session_abort(void);
 
+/* Initialized in MINIT, readonly otherwise. */
+static int my_module_number = 0;
+
 /* Dispatched by RINIT and by php_session_destroy */
 static inline void php_rinit_session_globals(void) /* {{{ */
 {
@@ -111,6 +114,7 @@ static inline void php_rinit_session_glo
 	PS(mod_user_is_open) = 0;
 	PS(define_sid) = 1;
 	PS(session_vars) = NULL;
+	PS(module_number) = my_module_number;
 	ZVAL_UNDEF(&PS(http_session_vars));
 }
 /* }}} */
@@ -2620,7 +2624,8 @@ static PHP_MINIT_FUNCTION(session) /* {{
 
 	zend_register_auto_global(zend_string_init("_SESSION", sizeof("_SESSION") - 1, 1), 0, NULL);
 
-	PS(module_number) = module_number; /* if we really need this var we need to init it in zts mode as well! */
+	my_module_number = module_number;
+	PS(module_number) = module_number;
 
 	PS(session_status) = php_session_none;
 	REGISTER_INI_ENTRIES();
diff -pruN 7.1.8-1/ext/session/tests/bug74833.phpt 7.1.13-1/ext/session/tests/bug74833.phpt
--- 7.1.8-1/ext/session/tests/bug74833.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/session/tests/bug74833.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+Bug #74833 Session module number is uninitialized when SID is reset
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+session_start();
+session_regenerate_id();
+$c = get_defined_constants(true);
+/* Ensure the SID constant has correct module number. */
+var_dump(isset($c['session']['SID']));
+
+ob_end_flush();
+?>
+==DONE==
+--EXPECTF--
+bool(true)
+==DONE==
+
diff -pruN 7.1.8-1/ext/session/tests/bug74892.phpt 7.1.13-1/ext/session/tests/bug74892.phpt
--- 7.1.8-1/ext/session/tests/bug74892.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/session/tests/bug74892.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,23 @@
+--TEST--
+Bug #74892 Url Rewriting (trans_sid) not working on urls that start with #
+--FILE--
+<?php
+ini_set('session.use_cookies', '0');
+ini_set('session.use_only_cookies',0);
+ini_set('session.use_trans_sid',1);
+ini_set('session.trans_sid_hosts','php.net');
+session_id('sessionidhere');
+session_start();
+
+?>
+<p><a href="index.php">Click This Anchor Tag!</a></p>
+<p><a href="index.php#place">External link with anchor</a></p>
+<p><a href="http://php.net#foo">External link with anchor 2</a></p>
+<p><a href="#place">Internal link</a></p>
+===DONE===
+--EXPECT--
+<p><a href="index.php?PHPSESSID=sessionidhere">Click This Anchor Tag!</a></p>
+<p><a href="index.php?PHPSESSID=sessionidhere#place">External link with anchor</a></p>
+<p><a href="http://php.net?PHPSESSID=sessionidhere#foo">External link with anchor 2</a></p>
+<p><a href="#place">Internal link</a></p>
+===DONE===
diff -pruN 7.1.8-1/ext/shmop/shmop.c 7.1.13-1/ext/shmop/shmop.c
--- 7.1.8-1/ext/shmop/shmop.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/shmop/shmop.c	2018-01-03 02:32:29.000000000 +0000
@@ -1,6 +1,6 @@
 /*
    +----------------------------------------------------------------------+
-   | PHP version 5                                                        |
+   | PHP version 7                                                        |
    +----------------------------------------------------------------------+
    | Copyright (c) 1997-2017 The PHP Group                                |
    +----------------------------------------------------------------------+
diff -pruN 7.1.8-1/ext/simplexml/simplexml.c 7.1.13-1/ext/simplexml/simplexml.c
--- 7.1.8-1/ext/simplexml/simplexml.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/simplexml/simplexml.c	2018-01-03 02:32:27.000000000 +0000
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: 7e5516dcdf2fe6ded7970eaeb6abd8d07df39a2a $ */
+/* $Id: 50413b12ac745b94b27ffbdd5454e6e0d7809909 $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2321,16 +2321,16 @@ SXE_METHOD(__construct)
 	}
 
 	if (ZEND_SIZE_T_INT_OVFL(data_len)) {
-		php_error_docref(NULL, E_WARNING, "Data is too long");
-		RETURN_FALSE;
+		zend_throw_exception(zend_ce_exception, "Data is too long", 0);
+		return;
 	}
 	if (ZEND_SIZE_T_INT_OVFL(ns_len)) {
-		php_error_docref(NULL, E_WARNING, "Namespace is too long");
-		RETURN_FALSE;
+		zend_throw_exception(zend_ce_exception, "Namespace is too long", 0);
+		return;
 	}
 	if (ZEND_LONG_EXCEEDS_INT(options)) {
-		php_error_docref(NULL, E_WARNING, "Invalid options");
-		RETURN_FALSE;
+		zend_throw_exception(zend_ce_exception, "Invalid options", 0);
+		return;
 	}
 
 	docp = is_url ? xmlReadFile(data, NULL, (int)options) : xmlReadMemory(data, (int)data_len, NULL, NULL, (int)options);
@@ -2766,7 +2766,7 @@ PHP_MINFO_FUNCTION(simplexml)
 {
 	php_info_print_table_start();
 	php_info_print_table_header(2, "Simplexml support", "enabled");
-	php_info_print_table_row(2, "Revision", "$Id: 7e5516dcdf2fe6ded7970eaeb6abd8d07df39a2a $");
+	php_info_print_table_row(2, "Revision", "$Id: 50413b12ac745b94b27ffbdd5454e6e0d7809909 $");
 	php_info_print_table_row(2, "Schema support",
 #ifdef LIBXML_SCHEMAS_ENABLED
 		"enabled");
diff -pruN 7.1.8-1/ext/simplexml/tests/008.phpt 7.1.13-1/ext/simplexml/tests/008.phpt
--- 7.1.8-1/ext/simplexml/tests/008.phpt	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/simplexml/tests/008.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -42,7 +42,5 @@ array(1) {
 array(0) {
 }
 
-Warning: SimpleXMLElement::xpath(): Invalid expression in %s on line %d
-
-Warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in %s on line %d
+Warning: SimpleXMLElement::xpath(): Invalid expression in %s on line %d%A
 bool(false)
diff -pruN 7.1.8-1/ext/simplexml/tests/bug74950.phpt 7.1.13-1/ext/simplexml/tests/bug74950.phpt
--- 7.1.8-1/ext/simplexml/tests/bug74950.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/simplexml/tests/bug74950.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,17 @@
+--TEST--
+Bug #74950 (null pointer deref in zim_simplexml_element_getDocNamespaces)
+--SKIPIF--
+<?php
+if (!extension_loaded("simplexml")) die("skip SimpleXML not available");
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only");
+?>
+--FILE--
+<?php
+$xml=new SimpleXMLElement(0,9000000000);var_dump($xml->getDocNamespaces())?>
+?>
+--EXPECTF--
+Fatal error: Uncaught Exception: Invalid options in %sbug74950.php:%d
+Stack trace:
+#0 %sbug74950.php(%d): SimpleXMLElement->__construct('0', 9000000000)
+#1 {main}
+  thrown in %sbug74950.php on line %d
diff -pruN 7.1.8-1/ext/soap/soap.c 7.1.13-1/ext/soap/soap.c
--- 7.1.8-1/ext/soap/soap.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/soap/soap.c	2018-01-03 02:32:23.000000000 +0000
@@ -373,7 +373,7 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO(arginfo_soapclient___getcookies, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setsoapheaders, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_soapclient___setsoapheaders, 0, 0, 0)
 	ZEND_ARG_INFO(0, soapheaders)
 ZEND_END_ARG_INFO()
 
diff -pruN 7.1.8-1/ext/soap/tests/bug71610.phpt 7.1.13-1/ext/soap/tests/bug71610.phpt
--- 7.1.8-1/ext/soap/tests/bug71610.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/soap/tests/bug71610.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -1,10 +1,13 @@
 --TEST--
 SOAP Bug #71610 - Type Confusion Vulnerability - SOAP / make_http_soap_request()
 --SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (getenv("SKIP_ONLINE_TESTS")) die("skip online test");
+?>
 --FILE--
 <?php
-$exploit = unserialize('O:10:"SoapClient":3:{s:3:"uri";s:1:"a";s:8:"location";s:19:"http://testuri.org/";s:8:"_cookies";a:1:{s:8:"manhluat";a:3:{i:0;s:0:"";i:1;N;i:2;N;}}}}');
+$exploit = unserialize('O:10:"SoapClient":3:{s:3:"uri";s:1:"a";s:8:"location";s:19:"http://example.org/";s:8:"_cookies";a:1:{s:8:"manhluat";a:3:{i:0;s:0:"";i:1;N;i:2;N;}}}}');
 try {
 $exploit->blahblah();
 } catch(SoapFault $e) {
diff -pruN 7.1.8-1/ext/spl/php_spl.c 7.1.13-1/ext/spl/php_spl.c
--- 7.1.8-1/ext/spl/php_spl.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/spl/php_spl.c	2018-01-03 02:32:27.000000000 +0000
@@ -535,8 +535,14 @@ PHP_FUNCTION(spl_autoload_register)
 			ZSTR_VAL(lc_name)[ZSTR_LEN(lc_name)] = '\0';
 		} else {
 			ZVAL_UNDEF(&alfi.closure);
-			lc_name = zend_string_alloc(ZSTR_LEN(func_name), 0);
-			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name), ZSTR_LEN(func_name));
+			/* Skip leading \ */
+			if (ZSTR_VAL(func_name)[0] == '\\') {
+				lc_name = zend_string_alloc(ZSTR_LEN(func_name) - 1, 0);
+				zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name) + 1, ZSTR_LEN(func_name) - 1);
+			} else {
+				lc_name = zend_string_alloc(ZSTR_LEN(func_name), 0);
+				zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name), ZSTR_LEN(func_name));
+			}
 		}
 		zend_string_release(func_name);
 
@@ -654,8 +660,14 @@ PHP_FUNCTION(spl_autoload_unregister)
 		memcpy(ZSTR_VAL(lc_name) + ZSTR_LEN(func_name), &Z_OBJ_HANDLE_P(zcallable), sizeof(uint32_t));
 		ZSTR_VAL(lc_name)[ZSTR_LEN(lc_name)] = '\0';
 	} else {
-		lc_name = zend_string_alloc(ZSTR_LEN(func_name), 0);
-		zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name), ZSTR_LEN(func_name));
+		/* Skip leading \ */
+		if (ZSTR_VAL(func_name)[0] == '\\') {
+			lc_name = zend_string_alloc(ZSTR_LEN(func_name) - 1, 0);
+			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name) + 1, ZSTR_LEN(func_name) - 1);
+		} else {
+			lc_name = zend_string_alloc(ZSTR_LEN(func_name), 0);
+			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(func_name), ZSTR_LEN(func_name));
+		}
 	}
 	zend_string_release(func_name);
 
diff -pruN 7.1.8-1/ext/spl/spl_array.c 7.1.13-1/ext/spl/spl_array.c
--- 7.1.8-1/ext/spl/spl_array.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/spl/spl_array.c	2018-01-03 02:32:27.000000000 +0000
@@ -1740,13 +1740,14 @@ SPL_METHOD(Array, serialize)
  */
 SPL_METHOD(Array, unserialize)
 {
-	spl_array_object *intern = Z_SPLARRAY_P(getThis());
+	zval *object = getThis();
+	spl_array_object *intern = Z_SPLARRAY_P(object);
 
 	char *buf;
 	size_t buf_len;
 	const unsigned char *p, *s;
 	php_unserialize_data_t var_hash;
-	zval *members, *zflags;
+	zval *members, *zflags, *array;
 	zend_long flags;
 
 	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &buf, &buf_len) == FAILURE) {
@@ -1788,24 +1789,38 @@ SPL_METHOD(Array, unserialize)
 	}
 	++p;
 
-	if (*p!='m') {
+	if (flags & SPL_ARRAY_IS_SELF) {
+		/* If IS_SELF is used, the flags are not followed by an array/object */
+		intern->ar_flags &= ~SPL_ARRAY_CLONE_MASK;
+		intern->ar_flags |= flags & SPL_ARRAY_CLONE_MASK;
+		zval_ptr_dtor(&intern->array);
+		ZVAL_UNDEF(&intern->array);
+	} else {
 		if (*p!='a' && *p!='O' && *p!='C' && *p!='r') {
 			goto outexcept;
 		}
+
+		array = var_tmp_var(&var_hash);
+		if (!php_var_unserialize(array, &p, s + buf_len, &var_hash)
+				|| (Z_TYPE_P(array) != IS_ARRAY && Z_TYPE_P(array) != IS_OBJECT)) {
+			goto outexcept;
+		}
+
 		intern->ar_flags &= ~SPL_ARRAY_CLONE_MASK;
 		intern->ar_flags |= flags & SPL_ARRAY_CLONE_MASK;
-		zval_ptr_dtor(&intern->array);
-		ZVAL_UNDEF(&intern->array);
-		if (!php_var_unserialize(&intern->array, &p, s + buf_len, &var_hash)
-				|| (Z_TYPE(intern->array) != IS_ARRAY && Z_TYPE(intern->array) != IS_OBJECT)) {
+
+		if (Z_TYPE_P(array) == IS_ARRAY) {
+			zval_ptr_dtor(&intern->array);
+			ZVAL_COPY(&intern->array, array);
+		} else {
+			spl_array_set_array(object, intern, array, 0L, 1);
+		}
+
+		if (*p != ';') {
 			goto outexcept;
 		}
-		var_push_dtor(&var_hash, &intern->array);
+        ++p;
 	}
-	if (*p != ';') {
-		goto outexcept;
-	}
-	++p;
 
 	/* members */
 	if (*p!= 'm' || *++p != ':') {
diff -pruN 7.1.8-1/ext/spl/spl_dllist.c 7.1.13-1/ext/spl/spl_dllist.c
--- 7.1.8-1/ext/spl/spl_dllist.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/spl/spl_dllist.c	2018-01-03 02:32:27.000000000 +0000
@@ -733,7 +733,7 @@ SPL_METHOD(SplDoublyLinkedList, setItera
 		return;
 	}
 
-	intern->flags = value & SPL_DLLIST_IT_MASK;
+	intern->flags = (value & SPL_DLLIST_IT_MASK) | (intern->flags & SPL_DLLIST_IT_FIX);
 
 	RETURN_LONG(intern->flags);
 }
diff -pruN 7.1.8-1/ext/spl/spl_iterators.c 7.1.13-1/ext/spl/spl_iterators.c
--- 7.1.8-1/ext/spl/spl_iterators.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/spl/spl_iterators.c	2018-01-03 02:32:27.000000000 +0000
@@ -942,6 +942,7 @@ static void spl_RecursiveIteratorIterato
 	if (object->iterators) {
 		efree(object->iterators);
 		object->iterators = NULL;
+		object->level     = 0;
 	}
 
 	zend_object_std_dtor(&object->std);
@@ -3374,7 +3375,7 @@ SPL_METHOD(AppendIterator, append)
 	if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "O", &it, zend_ce_iterator) == FAILURE) {
 		return;
 	}
-	if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) {
+	if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS && spl_dual_it_valid(intern) != SUCCESS) {
 		spl_array_iterator_append(&intern->u.append.zarrayit, it);
 		intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator);
 	}else{
diff -pruN 7.1.8-1/ext/spl/tests/bug70155.phpt 7.1.13-1/ext/spl/tests/bug70155.phpt
--- 7.1.8-1/ext/spl/tests/bug70155.phpt	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug70155.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -8,45 +8,10 @@ $data = unserialize($exploit);
 
 var_dump($data);
 ?>
-===DONE===
 --EXPECTF--
-object(ArrayObject)#1 (2) {
-  [0]=>
-  int(0)
-  ["storage":"ArrayObject":private]=>
-  object(DateInterval)#2 (16) {
-    ["y"]=>
-    int(3)
-    ["m"]=>
-    int(-1)
-    ["d"]=>
-    int(-1)
-    ["h"]=>
-    int(-1)
-    ["i"]=>
-    int(-1)
-    ["s"]=>
-    int(-1)
-    ["f"]=>
-    float(-1)
-    ["weekday"]=>
-    int(-1)
-    ["weekday_behavior"]=>
-    int(-1)
-    ["first_last_day_of"]=>
-    int(-1)
-    ["invert"]=>
-    int(0)
-    ["days"]=>
-    int(-1)
-    ["special_type"]=>
-    int(0)
-    ["special_amount"]=>
-    int(-1)
-    ["have_weekday_relative"]=>
-    int(0)
-    ["have_special_relative"]=>
-    int(0)
-  }
-}
-===DONE===
+Fatal error: Uncaught InvalidArgumentException: Overloaded object of type DateInterval is not compatible with ArrayObject in %s
+Stack trace:
+%s
+%s
+%s
+%s
diff -pruN 7.1.8-1/ext/spl/tests/bug73629.phpt 7.1.13-1/ext/spl/tests/bug73629.phpt
--- 7.1.8-1/ext/spl/tests/bug73629.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug73629.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #73629 (SplDoublyLinkedList::setIteratorMode masks intern flags)
+--FILE--
+<?php
+$q = new SplQueue();
+try {
+    $q->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
+} catch (Exception $e) {
+    echo 'unexpected exception: ' . $e->getMessage() . "\n";
+}
+try {
+    $q->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO);
+} catch (Exception $e) {
+    echo 'expected exception: ' . $e->getMessage() . "\n";
+}
+?>
+===DONE===
+--EXPECTF--
+expected exception: Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen
+===DONE===
diff -pruN 7.1.8-1/ext/spl/tests/bug74669.phpt 7.1.13-1/ext/spl/tests/bug74669.phpt
--- 7.1.8-1/ext/spl/tests/bug74669.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug74669.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,112 @@
+--TEST--
+Bug #74669: Unserialize ArrayIterator broken
+--FILE--
+<?php
+
+class Container implements Iterator
+{
+    public $container;
+    public $iterator;
+
+    public function __construct()
+    {
+        $this->container = new ArrayObject();
+        $this->iterator = $this->container->getIterator();
+    }
+
+    public function append($element)
+    {
+        $this->container->append($element);
+    }
+
+    public function current()
+    {
+        return $this->iterator->current();
+    }
+
+    public function next()
+    {
+        $this->iterator->next();
+    }
+
+    public function key()
+    {
+        return $this->iterator->key();
+    }
+
+    public function valid()
+    {
+        return $this->iterator->valid();
+    }
+
+    public function rewind()
+    {
+        $this->iterator->rewind();
+    }
+}
+
+class SelfArray extends ArrayObject
+{
+    public function __construct()
+    {
+        parent::__construct($this);
+    }
+}
+
+$container = new Container();
+$container->append('test1');
+$container->append('test2');
+$container->valid();
+$serialized = serialize($container);
+unset($container);
+
+$container = unserialize($serialized);
+
+foreach ($container as $key => $value) {
+    echo $key . ' => ' . $value . PHP_EOL;
+}
+
+$arObj = new ArrayObject(['test1', 'test2']);
+$serialized = serialize($container);
+unset($arObj);
+
+$arObj = unserialize($serialized);
+foreach($arObj as $key => $value) {
+    echo $key . ' => ' . $value . PHP_EOL;
+}
+
+$payload = 'x:i:33554432;O:8:"stdClass":0:{};m:a:0:{}';
+$str = 'C:11:"ArrayObject":' . strlen($payload) . ':{' . $payload . '}';
+
+$ao = unserialize($str);
+var_dump($ao['foo']);
+
+$selfArray = new SelfArray();
+$selfArray['foo'] = 'bar';
+var_dump($selfArray);
+$serialized = serialize($selfArray);
+var_dump($serialized);
+unset($selfArray);
+$selfArray = unserialize($serialized);
+var_dump($selfArray);
+var_dump($selfArray['foo']);
+
+?>
+--EXPECTF--
+0 => test1
+1 => test2
+0 => test1
+1 => test2
+
+Notice: Undefined index: foo in %s on line %s
+NULL
+object(SelfArray)#9 (1) {
+  ["foo"]=>
+  string(3) "bar"
+}
+string(62) "C:9:"SelfArray":41:{x:i:16777216;m:a:1:{s:3:"foo";s:3:"bar";}}"
+object(SelfArray)#9 (1) {
+  ["foo"]=>
+  string(3) "bar"
+}
+string(3) "bar"
diff -pruN 7.1.8-1/ext/spl/tests/bug75049.phpt 7.1.13-1/ext/spl/tests/bug75049.phpt
--- 7.1.8-1/ext/spl/tests/bug75049.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug75049.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #75049 (spl_autoload_unregister can't handle spl_autoload_functions results)
+--FILE--
+<?php
+class Auto { public static function loader() {}}
+$autoloader = '\Auto::loader';
+
+echo (int)spl_autoload_register($autoloader);
+echo (int)spl_autoload_unregister($autoloader);
+echo (int)spl_autoload_register($autoloader);
+foreach (spl_autoload_functions() as $loader) {
+	echo (int)spl_autoload_unregister($loader);
+}
+echo (int)count(spl_autoload_functions());
+--EXPECTF--
+11110
diff -pruN 7.1.8-1/ext/spl/tests/bug75155.phpt 7.1.13-1/ext/spl/tests/bug75155.phpt
--- 7.1.8-1/ext/spl/tests/bug75155.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug75155.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+Bug #75155: AppendIterator::append() is broken when appending another AppendIterator
+--FILE--
+<?php
+
+$array_a = new ArrayIterator(array('a', 'b', 'c'));
+$array_b = new ArrayIterator(array('d', 'e', 'f'));
+
+$iterator = new AppendIterator;
+$iterator->append($array_a);
+
+$iterator2 = new AppendIterator;
+$iterator2->append($iterator);
+$iterator2->append($array_b);
+
+foreach ($iterator2 as $current) {
+    echo $current;
+}
+
+?>
+--EXPECT--
+abcdef
diff -pruN 7.1.8-1/ext/spl/tests/bug75173.phpt 7.1.13-1/ext/spl/tests/bug75173.phpt
--- 7.1.8-1/ext/spl/tests/bug75173.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/spl/tests/bug75173.phpt	2018-01-03 02:32:26.000000000 +0000
@@ -0,0 +1,18 @@
+--TEST--
+Bug #75173 incorrect behavior of AppendIterator::append in foreach loop
+--FILE--
+<?php
+
+$it = new \AppendIterator();
+$it->append(new ArrayIterator(['foo']));
+
+foreach ($it as $item) {
+    var_dump($item);
+    
+    if ('foo' === $item) {
+        $it->append(new ArrayIterator(['bar']));
+    }
+}
+--EXPECT--
+string(3) "foo"
+string(3) "bar"	
diff -pruN 7.1.8-1/ext/sqlite3/config0.m4 7.1.13-1/ext/sqlite3/config0.m4
--- 7.1.8-1/ext/sqlite3/config0.m4	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/sqlite3/config0.m4	2018-01-03 02:32:29.000000000 +0000
@@ -53,6 +53,9 @@ if test $PHP_SQLITE3 != "no"; then
     PHP_CHECK_LIBRARY(sqlite3,sqlite3_column_table_name,[
       AC_DEFINE(SQLITE_ENABLE_COLUMN_METADATA, 1, [have sqlite3 with column metadata enabled])
     ])
+    PHP_CHECK_LIBRARY(sqlite3,sqlite3_errstr,[
+      AC_DEFINE(HAVE_SQLITE3_ERRSTR, 1, [have sqlite3_errstr function])
+    ])
 
     PHP_CHECK_LIBRARY(sqlite3,sqlite3_load_extension,
     [],
@@ -82,6 +85,7 @@ if test $PHP_SQLITE3 != "no"; then
       other_flags="$other_flags -DSQLITE_ENABLE_ICU=1"
     fi
 
+    AC_DEFINE(HAVE_SQLITE3_ERRSTR, 1, [have sqlite3_errstr function])
     PHP_SQLITE3_CFLAGS="-I@ext_srcdir@/libsqlite $other_flags $threadsafe_flags $debug_flags"
     PHP_INSTALL_HEADERS([ext/sqlite3/libsqlite/sqlite3.h])
   fi
diff -pruN 7.1.8-1/ext/sqlite3/config.w32 7.1.13-1/ext/sqlite3/config.w32
--- 7.1.8-1/ext/sqlite3/config.w32	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/sqlite3/config.w32	2018-01-03 02:32:29.000000000 +0000
@@ -10,5 +10,6 @@ if (PHP_SQLITE3 != "no") {
 	ADD_SOURCES(configure_module_dirname + "/libsqlite", "sqlite3.c", "sqlite3");
 
 	AC_DEFINE("HAVE_SQLITE3", 1, "SQLite support");
+	AC_DEFINE("HAVE_SQLITE3_ERRSTR", 1, "have sqlite3_errstr function")
 	PHP_INSTALL_HEADERS("ext/sqlite3", "libsqlite/sqlite3.h");
 }
diff -pruN 7.1.8-1/ext/sqlite3/sqlite3.c 7.1.13-1/ext/sqlite3/sqlite3.c
--- 7.1.8-1/ext/sqlite3/sqlite3.c	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/sqlite3/sqlite3.c	2018-01-03 02:32:29.000000000 +0000
@@ -140,7 +140,11 @@ PHP_METHOD(sqlite3, open)
 #endif
 	if (rc != SQLITE_OK) {
 		zend_throw_exception_ex(zend_ce_exception, 0, "Unable to open database: %s",
+#ifdef HAVE_SQLITE3_ERRSTR
 				db_obj->db ? sqlite3_errmsg(db_obj->db) : sqlite3_errstr(rc));
+#else
+				db_obj->db ? sqlite3_errmsg(db_obj->db) : "");
+#endif
 		if (fullpath != filename) {
 			efree(fullpath);
 		}
diff -pruN 7.1.8-1/ext/standard/basic_functions.c 7.1.13-1/ext/standard/basic_functions.c
--- 7.1.8-1/ext/standard/basic_functions.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/standard/basic_functions.c	2018-01-03 02:32:25.000000000 +0000
@@ -4072,33 +4072,45 @@ PHP_FUNCTION(getenv)
 	}
 #ifdef PHP_WIN32
 	{
-		char dummybuf;
-		int size;
+		wchar_t dummybuf;
+		DWORD size;
+		wchar_t *keyw, *valw;
+
+		keyw = php_win32_cp_conv_any_to_w(str, str_len, PHP_WIN32_CP_IGNORE_LEN_P);
+		if (!keyw) {
+				RETURN_FALSE;
+		}
 
 		SetLastError(0);
 		/*If the given bugger is not large enough to hold the data, the return value is
 		the buffer size,  in characters, required to hold the string and its terminating
 		null character. We use this return value to alloc the final buffer. */
-		size = GetEnvironmentVariableA(str, &dummybuf, 0);
+		size = GetEnvironmentVariableW(keyw, &dummybuf, 0);
 		if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) {
 				/* The environment variable doesn't exist. */
+				free(keyw);
 				RETURN_FALSE;
 		}
 
 		if (size == 0) {
 				/* env exists, but it is empty */
+				free(keyw);
 				RETURN_EMPTY_STRING();
 		}
 
-		ptr = emalloc(size);
-		size = GetEnvironmentVariableA(str, ptr, size);
+		valw = emalloc((size + 1) * sizeof(wchar_t));
+		size = GetEnvironmentVariableW(keyw, valw, size);
 		if (size == 0) {
 				/* has been removed between the two calls */
-				efree(ptr);
+				free(keyw);
+				efree(valw);
 				RETURN_EMPTY_STRING();
 		} else {
+			ptr = php_win32_cp_w_to_any(valw);
 			RETVAL_STRING(ptr);
-			efree(ptr);
+			free(ptr);
+			free(keyw);
+			efree(valw);
 			return;
 		}
 	}
@@ -4183,7 +4195,22 @@ PHP_FUNCTION(putenv)
 # ifndef PHP_WIN32
 	if (putenv(pe.putenv_string) == 0) { /* success */
 # else
-	error_code = SetEnvironmentVariable(pe.key, value);
+		wchar_t *keyw, *valw = NULL;
+
+		keyw = php_win32_cp_any_to_w(pe.key);
+		if (value) {
+			valw = php_win32_cp_any_to_w(value);
+		}
+		/* valw may be NULL, but the failed conversion still needs to be checked. */
+		if (!keyw || !valw && value) {
+			efree(pe.putenv_string);
+			efree(pe.key);
+			free(keyw);
+			free(valw);
+			RETURN_FALSE;
+		}
+
+	error_code = SetEnvironmentVariableW(keyw, valw);
 
 	if (error_code != 0
 # ifndef ZTS
@@ -4192,7 +4219,7 @@ PHP_FUNCTION(putenv)
 		Obviously the CRT version will be useful more often. But
 		generally, doing both brings us on the safe track at least
 		in NTS build. */
-	&& _putenv_s(pe.key, value ? value : "") == 0
+	&& _wputenv_s(keyw, valw ? valw : L"") == 0
 # endif
 	) { /* success */
 # endif
@@ -4203,10 +4230,18 @@ PHP_FUNCTION(putenv)
 			tzset();
 		}
 #endif
+#if defined(PHP_WIN32)
+		free(keyw);
+		free(valw);
+#endif
 		RETURN_TRUE;
 	} else {
 		efree(pe.putenv_string);
 		efree(pe.key);
+#if defined(PHP_WIN32)
+		free(keyw);
+		free(valw);
+#endif
 		RETURN_FALSE;
 	}
 }
diff -pruN 7.1.8-1/ext/standard/credits_ext.h 7.1.13-1/ext/standard/credits_ext.h
--- 7.1.8-1/ext/standard/credits_ext.h	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/standard/credits_ext.h	2018-01-03 02:32:25.000000000 +0000
@@ -22,7 +22,7 @@ CREDIT_LINE("DBA", "Sascha Schumann, Mar
 CREDIT_LINE("DOM", "Christian Stocker, Rob Richards, Marcus Boerger");
 CREDIT_LINE("enchant", "Pierre-Alain Joye, Ilia Alshanetsky");
 CREDIT_LINE("EXIF", "Rasmus Lerdorf, Marcus Boerger");
-CREDIT_LINE("fileinfo", "Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans");
+CREDIT_LINE("fileinfo", "Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski");
 CREDIT_LINE("Firebird driver for PDO", "Ard Biesheuvel");
 CREDIT_LINE("FTP", "Stefan Esser, Andrew Skalski");
 CREDIT_LINE("GD imaging", "Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger");
diff -pruN 7.1.8-1/ext/standard/dns.c 7.1.13-1/ext/standard/dns.c
--- 7.1.8-1/ext/standard/dns.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/dns.c	2018-01-03 02:32:25.000000000 +0000
@@ -131,13 +131,13 @@ static zend_string *php_gethostbyname(ch
    Get the host name of the current machine */
 PHP_FUNCTION(gethostname)
 {
-	char buf[HOST_NAME_MAX];
+	char buf[HOST_NAME_MAX + 1];
 
 	if (zend_parse_parameters_none() == FAILURE) {
 		return;
 	}
 
-	if (gethostname(buf, sizeof(buf) - 1)) {
+	if (gethostname(buf, sizeof(buf))) {
 		php_error_docref(NULL, E_WARNING, "unable to fetch host [%d]: %s", errno, strerror(errno));
 		RETURN_FALSE;
 	}
diff -pruN 7.1.8-1/ext/standard/file.c 7.1.13-1/ext/standard/file.c
--- 7.1.8-1/ext/standard/file.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/standard/file.c	2018-01-05 15:39:53.000000000 +0000
@@ -1768,6 +1768,10 @@ PHPAPI PHP_FUNCTION(fread)
 
 	/* needed because recv/read/gzread doesnt put a null at the end*/
 	Z_STRVAL_P(return_value)[Z_STRLEN_P(return_value)] = 0;
+
+	if (Z_STRLEN_P(return_value) < len / 2) {
+		Z_STR_P(return_value) = zend_string_truncate(Z_STR_P(return_value), Z_STRLEN_P(return_value), 0);
+	}
 }
 /* }}} */
 
diff -pruN 7.1.8-1/ext/standard/http_fopen_wrapper.c 7.1.13-1/ext/standard/http_fopen_wrapper.c
--- 7.1.8-1/ext/standard/http_fopen_wrapper.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/http_fopen_wrapper.c	2018-01-03 02:32:25.000000000 +0000
@@ -798,6 +798,10 @@ finish:
 						&& (*http_header_value == ' ' || *http_header_value == '\t')) {
 					http_header_value++;
 				}
+			} else {
+				/* There is no colon. Set the value to the end of the header line, which is
+				 * effectively an empty string. */
+				http_header_value = e;
 			}
 
 			if (!strncasecmp(http_header_line, "Location:", sizeof("Location:")-1)) {
@@ -814,11 +818,11 @@ finish:
 				strlcpy(location, http_header_value, sizeof(location));
 			} else if (!strncasecmp(http_header_line, "Content-Type:", sizeof("Content-Type:")-1)) {
 				php_stream_notify_info(context, PHP_STREAM_NOTIFY_MIME_TYPE_IS, http_header_value, 0);
-			} else if (!strncasecmp(http_header_line, "Content-Length:", sizeof("Content-Length")-1)) {
+			} else if (!strncasecmp(http_header_line, "Content-Length:", sizeof("Content-Length:")-1)) {
 				file_size = atoi(http_header_value);
 				php_stream_notify_file_size(context, file_size, http_header_line, 0);
 			} else if (
-				!strncasecmp(http_header_line, "Transfer-Encoding:", sizeof("Transfer-Encoding")-1)
+				!strncasecmp(http_header_line, "Transfer-Encoding:", sizeof("Transfer-Encoding:")-1)
 				&& !strncasecmp(http_header_value, "Chunked", sizeof("Chunked")-1)
 			) {
 
diff -pruN 7.1.8-1/ext/standard/info.c 7.1.13-1/ext/standard/info.c
--- 7.1.8-1/ext/standard/info.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/standard/info.c	2018-01-05 15:39:53.000000000 +0000
@@ -1392,7 +1392,7 @@ PHP_FUNCTION(php_ini_scanned_files)
 		return;
 	}
 
-	if (strlen(PHP_CONFIG_FILE_SCAN_DIR) && php_ini_scanned_files) {
+	if (php_ini_scanned_files) {
 		RETURN_STRING(php_ini_scanned_files);
 	} else {
 		RETURN_FALSE;
diff -pruN 7.1.8-1/ext/standard/mt_rand.c 7.1.13-1/ext/standard/mt_rand.c
--- 7.1.8-1/ext/standard/mt_rand.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/mt_rand.c	2018-01-03 02:32:25.000000000 +0000
@@ -260,7 +260,7 @@ PHPAPI zend_long php_mt_rand_range(zend_
  * rand() allows min > max, mt_rand does not */
 PHPAPI zend_long php_mt_rand_common(zend_long min, zend_long max)
 {
-	zend_long n;
+	int64_t n;
 
 	if (BG(mt_rand_mode) == MT_RAND_MT19937) {
 		return php_mt_rand_range(min, max);
@@ -268,7 +268,7 @@ PHPAPI zend_long php_mt_rand_common(zend
 
 	/* Legacy mode deliberately not inside php_mt_rand_range()
 	 * to prevent other functions being affected */
-	n = (zend_long)php_mt_rand() >> 1;
+	n = (int64_t)php_mt_rand() >> 1;
 	RAND_RANGE_BADSCALING(n, min, max, PHP_MT_RAND_MAX);
 
 	return n;
diff -pruN 7.1.8-1/ext/standard/pack.c 7.1.13-1/ext/standard/pack.c
--- 7.1.8-1/ext/standard/pack.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/pack.c	2018-01-03 02:32:25.000000000 +0000
@@ -792,6 +792,10 @@ PHP_FUNCTION(unpack)
 			/* Never use any input */
 			case 'X':
 				size = -1;
+				if (arg < 0) {
+					php_error_docref(NULL, E_WARNING, "Type %c: '*' ignored", type);
+					arg = 1;
+				}
 				break;
 
 			case '@':
diff -pruN 7.1.8-1/ext/standard/random.c 7.1.13-1/ext/standard/random.c
--- 7.1.8-1/ext/standard/random.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/standard/random.c	2018-01-03 02:32:25.000000000 +0000
@@ -122,16 +122,10 @@ PHPAPI int php_random_bytes(void *bytes,
 			} else if (errno == EINTR || errno == EAGAIN) {
 				/* Try again */
 				continue;
+			} else {
+			    /* If the syscall fails, fall back to reading from /dev/urandom */
+				break;
 			}
-			/*
-				If the syscall fails, we are doomed. The loop that calls
-				php_random_bytes should be terminated by the exception instead
-				of proceeding to demand more entropy.
-			*/
-			if (should_throw) {
-				zend_throw_exception(zend_ce_exception, "Could not gather sufficient random data", errno);
-			}
-			return FAILURE;
 		}
 
 		read_bytes += (size_t) n;
diff -pruN 7.1.8-1/ext/standard/streamsfuncs.c 7.1.13-1/ext/standard/streamsfuncs.c
--- 7.1.8-1/ext/standard/streamsfuncs.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/streamsfuncs.c	2018-01-03 02:32:25.000000000 +0000
@@ -314,7 +314,7 @@ PHP_FUNCTION(stream_socket_get_name)
 		RETURN_FALSE;
 	}
 
-	if (!ZSTR_LEN(name)) {
+	if ((ZSTR_LEN(name) == 0) || (ZSTR_VAL(name)[0] == 0)) {
 		zend_string_release(name);
 		RETURN_FALSE;
 	}
diff -pruN 7.1.8-1/ext/standard/tests/bug73124.phpt 7.1.13-1/ext/standard/tests/bug73124.phpt
--- 7.1.8-1/ext/standard/tests/bug73124.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/bug73124.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,24 @@
+--TEST--
+Bug #73124 (php_ini_scanned_files relied on PHP_CONFIG_FILE_SCAN_DIR)
+--SKIPIF--
+<?php
+if (!empty(PHP_CONFIG_FILE_SCAN_DIR)) die("Skip: PHP_CONFIG_FILE_SCAN_DIR must not be available");
+?>
+--FILE--
+<?php
+    $tempDir = sys_get_temp_dir();
+    putenv('PHP_INI_SCAN_DIR='.$tempDir);
+
+    $inifile = $tempDir.DIRECTORY_SEPARATOR.'scan-dir.ini';
+    @unlink($inifile);
+    file_put_contents($inifile, "\n");
+
+    $php = getenv('TEST_PHP_EXECUTABLE');
+    passthru('"'.$php.'" -r "print_r(php_ini_scanned_files());"');
+
+    putenv('PHP_INI_SCAN_DIR=');
+    @unlink($inifile);
+?>
+--EXPECTREGEX--
+.*[\/\\]scan-dir\.ini.*|.*[\/\\]scan-dir\.ini
+Done
diff -pruN 7.1.8-1/ext/standard/tests/bug75220.phpt 7.1.13-1/ext/standard/tests/bug75220.phpt
--- 7.1.8-1/ext/standard/tests/bug75220.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/bug75220.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,28 @@
+--TEST--
+Bug #75220 (is_callable crash for 'parent')
+--FILE--
+<?php
+
+$a = new A();
+$a->bar('foo');
+
+class B {};
+class A extends B
+{
+	function bar($func)
+	{
+		var_dump('foo');
+		var_dump(is_callable('parent::foo'));
+		var_dump(is_callable(array('parent', 'foo')));
+	}
+	
+	function __call($func, $args)
+	{
+	}
+};
+
+?>
+--EXPECT--
+string(3) "foo"
+bool(false)
+bool(false)
\ No newline at end of file
diff -pruN 7.1.8-1/ext/standard/tests/file/bug65272.phpt 7.1.13-1/ext/standard/tests/file/bug65272.phpt
--- 7.1.8-1/ext/standard/tests/file/bug65272.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/bug65272.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -7,7 +7,7 @@ if (stripos(PHP_OS, 'win') !== 0) die("s
 --FILE--
 <?php
 
-$file = dirname(__FILE__)."/flock.dat";
+$file = dirname(__FILE__)."/flock_bug65272.dat";
 
 $fp1 = fopen($file, "w");
 var_dump(flock($fp1, LOCK_SH));
@@ -16,9 +16,13 @@ $fp2 = fopen($file, "r");
 var_dump(flock($fp2, LOCK_EX|LOCK_NB, $wouldblock));
 var_dump($wouldblock);
 
-@unlink($file);
 echo "Done\n";
 ?>
+--CLEAN--
+<?php
+$file = dirname(__FILE__)."/flock_bug65272.dat";
+unlink($file);
+?>
 --EXPECTF--
 bool(true)
 bool(false)
diff -pruN 7.1.8-1/ext/standard/tests/file/fgetss1.phpt 7.1.13-1/ext/standard/tests/file/fgetss1.phpt
--- 7.1.8-1/ext/standard/tests/file/fgetss1.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/fgetss1.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -29,10 +29,13 @@ foreach ($array as $str) {
 	var_dump(fgetss($fp, 10, "<script>,<a>"));
 }
 
-@unlink($filename);
-
 echo "Done\n";
 ?>
+--CLEAN--
+<?php
+$filename = dirname(__FILE__)."/fgetss1.html";
+unlink($filename);
+?>
 --EXPECTF--	
 string(21) "askasdfasdf<b>aaaaaa
 "
diff -pruN 7.1.8-1/ext/standard/tests/file/flock.phpt 7.1.13-1/ext/standard/tests/file/flock.phpt
--- 7.1.8-1/ext/standard/tests/file/flock.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/flock.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -33,9 +33,13 @@ var_dump($would);
 var_dump(flock($fp, -1));
 var_dump(flock($fp, 0));
 
-@unlink($file);
 echo "Done\n";
 ?>
+--CLEAN--
+<?php
+$file = dirname(__FILE__)."/flock.dat";
+unlink($file);
+?>
 --EXPECTF--	
 Warning: flock() expects at least 2 parameters, 0 given in %s on line %d
 NULL
diff -pruN 7.1.8-1/ext/standard/tests/file/fputcsv_002.phpt 7.1.13-1/ext/standard/tests/file/fputcsv_002.phpt
--- 7.1.8-1/ext/standard/tests/file/fputcsv_002.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/fputcsv_002.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -13,9 +13,13 @@ fputcsv($fp, $data);
 
 var_dump($data);
 
-@unlink($file);
-
 ?>
+--CLEAN--
+<?php
+$file = dirname(__FILE__) .'/fgetcsv-test.csv';
+unlink($file);
+?>
+
 --EXPECTF--
 Notice: Array to string conversion in %s on line %d
 array(7) {
diff -pruN 7.1.8-1/ext/standard/tests/file/fscanf.phpt 7.1.13-1/ext/standard/tests/file/fscanf.phpt
--- 7.1.8-1/ext/standard/tests/file/fscanf.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/fscanf.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -56,9 +56,13 @@ file_put_contents($filename, "data");
 $fp = fopen($filename, "rt");
 var_dump(fscanf($fp, "%s%d", $v));
 
-@unlink($filename);
 echo "Done\n";
 ?>
+--CLEAN--
+<?php
+$filename = dirname(__FILE__)."/fscanf.dat";
+unlink($filename);
+?>
 --EXPECTF--	
 Warning: fscanf() expects at least 2 parameters, 0 given in %s on line %d
 NULL
diff -pruN 7.1.8-1/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt 7.1.13-1/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt
--- 7.1.8-1/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,80 @@
+--TEST--
+Bug #75063 Many filesystem-related functions do not work with multibyte file names, cp1251
+--SKIPIF--
+<?php
+include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc";
+
+skip_if_not_win();
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+skip_if_no_required_exts();
+
+?>
+--INI--
+default_charset=cp1251
+--FILE--
+<?php
+
+/* This file is in cp1251. */
+
+include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc";
+
+$dir_basename = "";
+$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-cp1251";
+$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename;
+
+mkdir($prefix);
+create_verify_dir($prefix, $dir_basename, 1251);
+
+var_dump(get_basename_with_cp($d0, 1251, false));
+
+$old_cwd = getcwd();
+var_dump(chdir($d0));
+
+$code = <<<CODE
+<?php
+
+foreach(["test", ""] as \$fn) {
+	file_put_contents("\$fn.txt", "");
+}
+
+var_dump(getcwd());
+if (\$dh = opendir(getcwd())) {
+	while ((\$file = readdir(\$dh)) !== false) {
+		if ("." == \$file || ".." == \$file) continue;
+		var_dump(\$file);
+	}
+	closedir(\$dh);
+}
+CODE;
+$code_fn = "code.php";
+file_put_contents($code_fn, $code);
+
+print(shell_exec(getenv('TEST_PHP_EXECUTABLE') . " -n -d default_charset=cp1251 -f code.php"));
+
+chdir($old_cwd);
+
+/* --CLEAN-- section were the right place, but it won't accept default_charset ATM, it seems. */
+$dir_basename = "";
+$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-cp1251";
+$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename;
+
+$obj = scandir($d0);
+foreach ($obj as $file) {
+	if ("." == $file || ".." == $file) continue;
+	unlink($d0 . DIRECTORY_SEPARATOR . $file);
+}
+
+rmdir($d0);
+rmdir($prefix);
+?>
+===DONE===
+
+--EXPECTF--
+string(4) ""
+bool(true)
+string(%d) "%sbug75063-cp1251%e"
+string(8) "code.php"
+string(8) "test.txt"
+string(8) ".txt"
+===DONE===
+
diff -pruN 7.1.8-1/ext/standard/tests/file/windows_mb_path/bug75063_utf8.phpt 7.1.13-1/ext/standard/tests/file/windows_mb_path/bug75063_utf8.phpt
--- 7.1.8-1/ext/standard/tests/file/windows_mb_path/bug75063_utf8.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/windows_mb_path/bug75063_utf8.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,81 @@
+--TEST--
+Bug #75063 Many filesystem-related functions do not work with multibyte file names, UTF-8
+--SKIPIF--
+<?php
+include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc";
+
+skip_if_not_win();
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+skip_if_no_required_exts();
+
+?>
+--FILE--
+<?php
+
+/* This file is in UTF-8. */
+
+include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc";
+
+$dir_basename = "тест";
+$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-utf8";
+$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename;
+
+mkdir($prefix);
+create_verify_dir($prefix, $dir_basename);
+
+var_dump(get_basename_with_cp($d0, 65001, false));
+
+$old_cwd = getcwd();
+var_dump(chdir($d0));
+
+$code = <<<CODE
+<?php
+
+foreach(["test", "таст"] as \$fn) {
+	file_put_contents("\$fn.txt", "");
+}
+
+var_dump(getcwd());
+if (\$dh = opendir(getcwd())) {
+	while ((\$file = readdir(\$dh)) !== false) {
+		if ("." == \$file || ".." == \$file) continue;
+		var_dump(\$file);
+	}
+	closedir(\$dh);
+}
+CODE;
+$code_fn = "code.php";
+file_put_contents($code_fn, $code);
+
+print(shell_exec(getenv('TEST_PHP_EXECUTABLE') . " -nf code.php"));
+
+chdir($old_cwd);
+
+?>
+===DONE===
+--CLEAN--
+<?php
+$dir_basename = "тест";
+$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-utf8";
+$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename;
+
+$obj = scandir($d0);
+foreach ($obj as $file) {
+	if ("." == $file || ".." == $file) continue;
+	unlink($d0 . DIRECTORY_SEPARATOR . $file);
+}
+
+rmdir($d0);
+rmdir($prefix);
+
+?>
+
+--EXPECTF--
+string(8) "тест"
+bool(true)
+string(%d) "%sbug75063-utf8%eтест"
+string(8) "code.php"
+string(8) "test.txt"
+string(12) "таст.txt"
+===DONE===
+
diff -pruN 7.1.8-1/ext/standard/tests/file/windows_mb_path/test_long_path_mkdir.phpt 7.1.13-1/ext/standard/tests/file/windows_mb_path/test_long_path_mkdir.phpt
--- 7.1.8-1/ext/standard/tests/file/windows_mb_path/test_long_path_mkdir.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/file/windows_mb_path/test_long_path_mkdir.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,60 @@
+--TEST--
+Mkdir with path length < 260 and > 248 has be a long path 
+--SKIPIF--
+<?php
+include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc";
+
+skip_if_not_win();
+
+$start = realpath(dirname(__FILE__));
+if (strlen($start) > 260 || strlen($start) > 248) {
+	die("skip the starting path length is unsuitable for this test");
+}
+
+?>
+--FILE--
+<?php
+
+$p = ""; 
+$s = str_repeat('a', 50);
+$how_many = 32;
+
+for ($i = 0; $i < $how_many; $i++) {
+	$p .= "$s\\";
+} 
+
+$start = realpath(dirname(__FILE__));
+if (strlen($start) <= 248) {
+	// create the exact length
+	$start = $start . "\\" . str_repeat('a', 251 - strlen($start) - 1);
+}
+
+var_dump($start);
+$p = $start . "\\" . $p;
+
+var_dump($p);
+var_dump(mkdir($p, 0777, true));
+var_dump(file_exists($p));
+
+$p7 = $p . "hello.txt";
+
+var_dump(file_put_contents($p7, "hello"));
+var_dump(file_get_contents($p7));
+
+// cleanup
+unlink($p7);
+for ($i = 0; $i < $how_many; $i++) {
+	$p0 = substr($p, 0, strlen($p) - $i*51);
+	rmdir($p0);
+}
+
+?>
+===DONE===
+--EXPECTF--
+string(251) "%s"
+string(1884) "%s"
+bool(true)
+bool(true)
+int(5)
+string(5) "hello"
+===DONE===
diff -pruN 7.1.8-1/ext/standard/tests/general_functions/putenv_bug75574_cp936_win.phpt 7.1.13-1/ext/standard/tests/general_functions/putenv_bug75574_cp936_win.phpt
--- 7.1.8-1/ext/standard/tests/general_functions/putenv_bug75574_cp936_win.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/general_functions/putenv_bug75574_cp936_win.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,61 @@
+--TEST--
+Bug #75574 putenv does not work properly if parameter contains non-ASCII unicode character, cp936 Windows
+--SKIPIF--
+<?php
+
+if (substr(PHP_OS, 0, 3) != 'WIN') {
+  die("skip Valid only on Windows");
+}
+if (!sapi_windows_cp_set(936)) {
+	die("skip Required CP 936 or compatible");
+}
+
+?>
+--INI--
+internal_encoding=cp936
+--FILE--
+<?php
+/*
+#vim: set fileencoding=cp936
+#vim: set encoding=cp936
+*/
+
+var_dump(putenv('FOO='), getenv("FOO"));
+var_dump(putenv('FOO='), getenv("FOO"));
+var_dump(putenv('FOO='), getenv("FOO"));
+var_dump(putenv('FOO='), getenv("FOO"));
+
+var_dump(putenv('FOO=a'), getenv("FOO"));
+var_dump(putenv('FOO=a'), getenv("FOO"));
+var_dump(putenv('FOO=aa'), getenv("FOO"));
+var_dump(putenv('FOO=aa'), getenv("FOO"));
+var_dump(putenv('FOO=a'), getenv("FOO"));
+var_dump(putenv('FOO=a'), getenv("FOO"));
+var_dump(putenv('FOO=a'), getenv("FOO"));
+
+?>
+===DONE===
+--EXPECTF--	
+bool(true)
+string(2) ""
+bool(true)
+string(4) ""
+bool(true)
+string(6) ""
+bool(true)
+string(8) ""
+bool(true)
+string(3) "a"
+bool(true)
+string(5) "a"
+bool(true)
+string(6) "aa"
+bool(true)
+string(8) "aa"
+bool(true)
+string(7) "a"
+bool(true)
+string(9) "a"
+bool(true)
+string(11) "a"
+===DONE===
diff -pruN 7.1.8-1/ext/standard/tests/general_functions/putenv_bug75574_utf8.phpt 7.1.13-1/ext/standard/tests/general_functions/putenv_bug75574_utf8.phpt
--- 7.1.8-1/ext/standard/tests/general_functions/putenv_bug75574_utf8.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/general_functions/putenv_bug75574_utf8.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,50 @@
+--TEST--
+Bug #75574 putenv does not work properly if parameter contains non-ASCII unicode character, UTF-8
+--INI--
+internal_encoding=utf-8
+--FILE--
+<?php
+/*
+#vim: set fileencoding=utf-8
+#vim: set encoding=utf-8
+*/
+
+var_dump(putenv('FOO=啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊啊啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊啊啊啊'), getenv("FOO"));
+
+var_dump(putenv('FOO=啊a'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊a'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊a啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊啊啊'), getenv("FOO"));
+var_dump(putenv('FOO=啊a啊啊啊啊'), getenv("FOO"));
+
+?>
+===DONE===
+--EXPECTF--	
+bool(true)
+string(3) "啊"
+bool(true)
+string(6) "啊啊"
+bool(true)
+string(9) "啊啊啊"
+bool(true)
+string(12) "啊啊啊啊"
+bool(true)
+string(4) "啊a"
+bool(true)
+string(7) "啊a啊"
+bool(true)
+string(8) "啊a啊a"
+bool(true)
+string(11) "啊a啊a啊"
+bool(true)
+string(10) "啊a啊啊"
+bool(true)
+string(13) "啊a啊啊啊"
+bool(true)
+string(16) "啊a啊啊啊啊"
+===DONE===
diff -pruN 7.1.8-1/ext/standard/tests/http/bug75535.phpt 7.1.13-1/ext/standard/tests/http/bug75535.phpt
--- 7.1.8-1/ext/standard/tests/http/bug75535.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/http/bug75535.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,31 @@
+--TEST--
+Bug #75535: Inappropriately parsing HTTP response leads to PHP segment fault
+--SKIPIF--
+<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:22351'); ?>
+--INI--
+allow_url_fopen=1
+--FILE--
+<?php
+require 'server.inc';
+
+$responses = array(
+	"data://text/plain,HTTP/1.0 200 Ok\r\nContent-Length\r\n",
+);
+
+$pid = http_server("tcp://127.0.0.1:22351", $responses, $output);
+
+var_dump(file_get_contents('http://127.0.0.1:22351/'));
+var_dump($http_response_header);
+
+http_server_kill($pid);
+?>
+==DONE==
+--EXPECT--
+string(0) ""
+array(2) {
+  [0]=>
+  string(15) "HTTP/1.0 200 Ok"
+  [1]=>
+  string(14) "Content-Length"
+}
+==DONE==
diff -pruN 7.1.8-1/ext/standard/tests/image/getimagesize.phpt 7.1.13-1/ext/standard/tests/image/getimagesize.phpt
--- 7.1.8-1/ext/standard/tests/image/getimagesize.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/image/getimagesize.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -57,13 +57,13 @@ array(16) {
   ["test1bpix.bmp"]=>
   array(6) {
     [0]=>
-    int(500)
+    int(1)
     [1]=>
-    int(345)
+    int(1)
     [2]=>
     int(6)
     [3]=>
-    string(24) "width="500" height="345""
+    string(20) "width="1" height="1""
     ["bits"]=>
     int(32)
     ["mime"]=>
Binary files 7.1.8-1/ext/standard/tests/image/test1bpix.bmp and 7.1.13-1/ext/standard/tests/image/test1bpix.bmp differ
diff -pruN 7.1.8-1/ext/standard/tests/math/bug75514.phpt 7.1.13-1/ext/standard/tests/math/bug75514.phpt
--- 7.1.8-1/ext/standard/tests/math/bug75514.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/math/bug75514.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,12 @@
+--TEST--
+Bug #75514 mt_rand returns value outside [$min,$max]
+--FILE--
+<?php
+mt_srand(0, MT_RAND_PHP);
+var_dump(mt_rand(0,999999999), mt_rand(0,999));
+?>
+===Done===
+--EXPECT--
+int(448865905)
+int(592)
+===Done===
diff -pruN 7.1.8-1/ext/standard/tests/serialize/bug68044.phpt 7.1.13-1/ext/standard/tests/serialize/bug68044.phpt
--- 7.1.8-1/ext/standard/tests/serialize/bug68044.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/serialize/bug68044.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -6,6 +6,8 @@ Bug #68044 Integer overflow in unseriali
 ?>
 ===DONE==
 --EXPECTF--
+Warning: unserialize(): %s in %sbug68044.php on line %d
+
 Warning: Insufficient data for unserializing - %d required, 1 present in %s%ebug68044.php on line 2
 
 Notice: unserialize(): Error at offset 32 of 33 bytes in %s%ebug68044.php on line 2
diff -pruN 7.1.8-1/ext/standard/tests/serialize/bug74101.phpt 7.1.13-1/ext/standard/tests/serialize/bug74101.phpt
--- 7.1.8-1/ext/standard/tests/serialize/bug74101.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/serialize/bug74101.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -6,5 +6,7 @@ $s = 'O:9:"Exception":799999999999999999
 var_dump(unserialize($s));
 ?>
 --EXPECTF--
-Notice: unserialize(): Error at offset 48 of 74 bytes in %s on line %d
+Warning: unserialize(): %s in %sbug74101.php on line %d
+
+Notice: unserialize(): Error at offset 48 of 74 bytes in %sbug74101.php on line %d
 bool(false)
diff -pruN 7.1.8-1/ext/standard/tests/serialize/bug74103.phpt 7.1.13-1/ext/standard/tests/serialize/bug74103.phpt
--- 7.1.8-1/ext/standard/tests/serialize/bug74103.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/serialize/bug74103.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,9 @@
+--TEST--
+Bug #74103: heap-use-after-free when unserializing invalid array size
+--FILE--
+<?php
+var_dump(unserialize('a:7:{i:0;i:04;s:1:"a";i:2;i:9617006;i:4;s:1:"a";i:4;s:1:"a";R:5;s:1:"7";R:3;s:1:"a";R:5;;s:18;}}'));
+?>
+--EXPECTF--
+Notice: unserialize(): Error at offset %d of %d bytes in %s on line %d
+bool(false)
diff -pruN 7.1.8-1/ext/standard/tests/serialize/bug74614.phpt 7.1.13-1/ext/standard/tests/serialize/bug74614.phpt
--- 7.1.8-1/ext/standard/tests/serialize/bug74614.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/serialize/bug74614.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -7,4 +7,6 @@ unserialize('a:3020000000000000000000000
 
 ?>
 --EXPECTF--
+Warning: unserialize(): %s in %sbug74614.php on line %d
+
 Notice: unserialize(): Error at offset %d of 113 bytes in %s on line %d
diff -pruN 7.1.8-1/ext/standard/tests/serialize/bug75054.phpt 7.1.13-1/ext/standard/tests/serialize/bug75054.phpt
--- 7.1.8-1/ext/standard/tests/serialize/bug75054.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/serialize/bug75054.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -0,0 +1,12 @@
+--TEST--
+Bug #75054: A Denial of Service Vulnerability was found when performing deserialization
+--FILE--
+<?php
+$poc = 'a:9:{i:0;s:4:"0000";i:0;s:4:"0000";i:0;R:2;s:4:"5003";R:2;s:4:"0000";R:2;s:4:"0000";R:2;s:4:"';
+$poc .= "\x06";
+$poc .= '000";R:2;s:4:"0000";d:0;s:4:"0000";a:9:{s:4:"0000";';
+var_dump(unserialize($poc));
+?>
+--EXPECTF--
+Notice: unserialize(): Error at offset 43 of 145 bytes in %s on line %d
+bool(false)
diff -pruN 7.1.8-1/ext/standard/tests/streams/bug74951.phpt 7.1.13-1/ext/standard/tests/streams/bug74951.phpt
--- 7.1.8-1/ext/standard/tests/streams/bug74951.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/streams/bug74951.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -0,0 +1,12 @@
+--TEST--
+Bug#74951 Null pointer dereference in user streams
+--FILE--
+<?php
+trait Stream00ploiter{
+  public function s() {}
+  public function n($_) {}
+}
+stream_wrapper_register('e0ploit','Stream00ploiter');
+$s=fopen('e0ploit://',0);
+--EXPECTF--
+Warning: fopen(e0ploit://): failed to open stream: operation failed in %s%ebug74951.php on line 7
diff -pruN 7.1.8-1/ext/standard/tests/streams/proc_open_bug69900.phpt 7.1.13-1/ext/standard/tests/streams/proc_open_bug69900.phpt
--- 7.1.8-1/ext/standard/tests/streams/proc_open_bug69900.phpt	2017-08-01 17:36:50.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/streams/proc_open_bug69900.phpt	2018-01-03 02:32:25.000000000 +0000
@@ -6,6 +6,7 @@ Bug #69900 Commandline input/output weir
 error_reporting(E_ALL);
 
 $fl = dirname(__FILE__) . DIRECTORY_SEPARATOR . "test69900.php";
+$max_ms = ((bool)getenv('TRAVIS')) ? 5 : 1;
 
 $test_content = '<?php
 
@@ -33,7 +34,7 @@ for($i = 0; $i < 10; $i++){
 	$t1 = microtime(1);
 
 	echo $s;		
-	echo "fgets() took ", (($t1 - $t0)*1000 > 1 ? 'more' : 'less'), " than 1 ms\n";
+	echo "fgets() took ", (($t1 - $t0)*1000 > $max_ms ? 'more' : 'less'), " than $max_ms ms\n";
 }
 
 fclose($pipes[0]);
@@ -48,25 +49,25 @@ proc_close($process);
 $fl = dirname(__FILE__) . DIRECTORY_SEPARATOR . "test69900.php";
 @unlink($fl);
 ?>
---EXPECT--
+--EXPECTF--
 hello0
-fgets() took more than 1 ms
+fgets() took more than %d ms
 hello1
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello2
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello3
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello4
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello5
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello6
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello7
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello8
-fgets() took less than 1 ms
+fgets() took less than %d ms
 hello9
-fgets() took less than 1 ms
+fgets() took less than %d ms
 ===DONE===
diff -pruN 7.1.8-1/ext/standard/tests/strings/bug75075.phpt 7.1.13-1/ext/standard/tests/strings/bug75075.phpt
--- 7.1.8-1/ext/standard/tests/strings/bug75075.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/strings/bug75075.phpt	2018-01-03 02:32:23.000000000 +0000
@@ -0,0 +1,10 @@
+--TEST--
+Bug #75075 (unpack with X* causes infinity loop)
+--FILE--
+<?php
+var_dump(unpack("X*", ""));
+?>
+--EXPECTF--
+Warning: unpack(): Type X: '*' ignored in %sbug75075.php on line %d
+array(0) {
+}
diff -pruN 7.1.8-1/ext/standard/tests/strings/substr_compare.phpt 7.1.13-1/ext/standard/tests/strings/substr_compare.phpt
--- 7.1.8-1/ext/standard/tests/strings/substr_compare.phpt	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/standard/tests/strings/substr_compare.phpt	2018-01-03 02:32:24.000000000 +0000
@@ -7,15 +7,15 @@ var_dump(substr_compare("abcde", "df", -
 var_dump(substr_compare("abcde", "bc", 1, 2));
 var_dump(substr_compare("abcde", "bcg", 1, 2));
 var_dump(substr_compare("abcde", "BC", 1, 2, true));
-var_dump(substr_compare("abcde", "bc", 1, 3));
-var_dump(substr_compare("abcde", "cd", 1, 2));
+var_dump(substr_compare("abcde", "bc", 1, 3) > 0);
+var_dump(substr_compare("abcde", "cd", 1, 2) < 0);
 var_dump(substr_compare("abcde", "abc", 5, 1));
-var_dump(substr_compare("abcde", "abcdef", -10, 10));
+var_dump(substr_compare("abcde", "abcdef", -10, 10) < 0);
 var_dump(substr_compare("abcde", "abc", 0, 0));
 var_dump(substr_compare("abcde", -1, 0, NULL, new stdClass));
 echo "Test\n";
 var_dump(substr_compare("abcde", "abc", 0, -1));
-var_dump(substr_compare("abcde", "abc", -1, NULL, -5));
+var_dump(substr_compare("abcde", "abc", -1, NULL, -5) > 0);
 var_dump(substr_compare("abcde", -1, 0, "str", new stdClass));
 
 echo "Done\n";
@@ -25,12 +25,12 @@ bool(true)
 int(0)
 int(0)
 int(0)
-int(1)
-int(-1)
+bool(true)
+bool(true)
 
 Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d
 bool(false)
-int(-1)
+bool(true)
 int(0)
 
 Warning: substr_compare() expects parameter 5 to be boolean, object given in %s on line %d
@@ -39,7 +39,7 @@ Test
 
 Warning: substr_compare(): The length must be greater than or equal to zero in %s on line %d
 bool(false)
-int(4)
+bool(true)
 
 Warning: substr_compare() expects parameter 4 to be integer, string given in %s on line %d
 bool(false)
diff -pruN 7.1.8-1/ext/standard/url_scanner_ex.c 7.1.13-1/ext/standard/url_scanner_ex.c
--- 7.1.8-1/ext/standard/url_scanner_ex.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/url_scanner_ex.c	2018-01-03 02:32:25.000000000 +0000
@@ -192,6 +192,13 @@ static inline void append_modified_url(s
 		return;
 	}
 
+	/* Don't modify URLs of the format "#mark" */
+	if (url_parts->fragment && '#' == ZSTR_VAL(url->s)[0]) {
+		smart_str_append_smart_str(dest, url);
+		php_url_free(url_parts);
+		return;
+	}
+
 	/* Check protocol. Only http/https is allowed. */
 	if (url_parts->scheme
 		&& strcasecmp("http", url_parts->scheme)
@@ -215,13 +222,12 @@ static inline void append_modified_url(s
 	 * When URL does not have path and query string add "/?".
 	 * i.e. If URL is only "?foo=bar", should not add "/?".
 	 */
-	if (!url_parts->path && !url_parts->query) {
+	if (!url_parts->path && !url_parts->query && !url_parts->fragment) {
 		/* URL is http://php.net or like */
 		smart_str_append_smart_str(dest, url);
 		smart_str_appendc(dest, '/');
 		smart_str_appendc(dest, '?');
 		smart_str_append_smart_str(dest, url_app);
-		/* There should not be fragment. Just return */
 		php_url_free(url_parts);
 		return;
 	}
diff -pruN 7.1.8-1/ext/standard/url_scanner_ex.re 7.1.13-1/ext/standard/url_scanner_ex.re
--- 7.1.8-1/ext/standard/url_scanner_ex.re	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/url_scanner_ex.re	2018-01-03 02:32:25.000000000 +0000
@@ -197,6 +197,13 @@ static inline void append_modified_url(s
 		return;
 	}
 
+	/* Don't modify URLs of the format "#mark" */
+	if (url_parts->fragment && '#' == ZSTR_VAL(url->s)[0]) {
+		smart_str_append_smart_str(dest, url);
+		php_url_free(url_parts);
+		return;
+	}
+
 	/* Check protocol. Only http/https is allowed. */
 	if (url_parts->scheme
 		&& strcasecmp("http", url_parts->scheme)
@@ -220,13 +227,12 @@ static inline void append_modified_url(s
 	 * When URL does not have path and query string add "/?".
 	 * i.e. If URL is only "?foo=bar", should not add "/?".
 	 */
-	if (!url_parts->path && !url_parts->query) {
+	if (!url_parts->path && !url_parts->query && !url_parts->fragment) {
 		/* URL is http://php.net or like */
 		smart_str_append_smart_str(dest, url);
 		smart_str_appendc(dest, '/');
 		smart_str_appendc(dest, '?');
 		smart_str_append_smart_str(dest, url_app);
-		/* There should not be fragment. Just return */
 		php_url_free(url_parts);
 		return;
 	}
diff -pruN 7.1.8-1/ext/standard/var_unserializer.c 7.1.13-1/ext/standard/var_unserializer.c
--- 7.1.8-1/ext/standard/var_unserializer.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/var_unserializer.c	2018-01-03 02:32:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 */
+/* Generated by re2c 0.16 */
 /*
   +----------------------------------------------------------------------+
   | PHP Version 7                                                        |
@@ -321,29 +321,21 @@ static inline int unserialize_allowed_cl
 
 static inline zend_long parse_iv2(const unsigned char *p, const unsigned char **q)
 {
-	char cursor;
 	zend_long result = 0;
-	int neg = 0;
+	char *end;
 
-	switch (*p) {
-		case '-':
-			neg++;
-			/* fall-through */
-		case '+':
-			p++;
+	errno = 0;
+	result = ZEND_STRTOL((const char*)p, &end, 0);
+
+	if (q) {
+		*q = (const unsigned char *)end;
 	}
 
-	while (1) {
-		cursor = (char)*p;
-		if (cursor >= '0' && cursor <= '9') {
-			result = result * 10 + (size_t)(cursor - (unsigned char)'0');
-		} else {
-			break;
-		}
-		p++;
+	if (errno) {
+		php_error_docref(NULL, E_WARNING, "%s", strerror(errno));
+		return result;
 	}
-	if (q) *q = p;
-	if (neg) return -result;
+
 	return result;
 }
 
@@ -448,16 +440,7 @@ string_key:
 			return 0;
 		}
 
-		if (UNEXPECTED(Z_ISUNDEF_P(data))) {
-			if (Z_TYPE(key) == IS_LONG) {
-				zend_hash_index_del(ht, Z_LVAL(key));
-			} else {
-				zend_hash_del_ind(ht, Z_STR(key));
-			}
-		} else {
-			var_push_dtor(var_hash, data);
-		}
-
+		var_push_dtor(var_hash, data);
 		zval_dtor(&key);
 
 		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
@@ -658,292 +641,194 @@ static int php_var_unserialize_internal(
 	yych = *YYCURSOR;
 	switch (yych) {
 	case 'C':
-	case 'O':	goto yy13;
+	case 'O':	goto yy4;
 	case 'N':	goto yy5;
-	case 'R':	goto yy2;
-	case 'S':	goto yy10;
-	case 'a':	goto yy11;
-	case 'b':	goto yy6;
-	case 'd':	goto yy8;
-	case 'i':	goto yy7;
+	case 'R':	goto yy6;
+	case 'S':	goto yy7;
+	case 'a':	goto yy8;
+	case 'b':	goto yy9;
+	case 'd':	goto yy10;
+	case 'i':	goto yy11;
 	case 'o':	goto yy12;
-	case 'r':	goto yy4;
-	case 's':	goto yy9;
-	case '}':	goto yy14;
-	default:	goto yy16;
+	case 'r':	goto yy13;
+	case 's':	goto yy14;
+	case '}':	goto yy15;
+	default:	goto yy2;
 	}
 yy2:
-	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy95;
+	++YYCURSOR;
 yy3:
 	{ return 0; }
 yy4:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy89;
+	if (yych == ':') goto yy17;
 	goto yy3;
 yy5:
 	yych = *++YYCURSOR;
-	if (yych == ';') goto yy87;
+	if (yych == ';') goto yy19;
 	goto yy3;
 yy6:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy83;
+	if (yych == ':') goto yy21;
 	goto yy3;
 yy7:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy77;
+	if (yych == ':') goto yy22;
 	goto yy3;
 yy8:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy53;
+	if (yych == ':') goto yy23;
 	goto yy3;
 yy9:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy46;
+	if (yych == ':') goto yy24;
 	goto yy3;
 yy10:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy39;
+	if (yych == ':') goto yy25;
 	goto yy3;
 yy11:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy32;
+	if (yych == ':') goto yy26;
 	goto yy3;
 yy12:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy25;
+	if (yych == ':') goto yy27;
 	goto yy3;
 yy13:
 	yych = *(YYMARKER = ++YYCURSOR);
-	if (yych == ':') goto yy17;
+	if (yych == ':') goto yy28;
 	goto yy3;
 yy14:
+	yych = *(YYMARKER = ++YYCURSOR);
+	if (yych == ':') goto yy29;
+	goto yy3;
+yy15:
 	++YYCURSOR;
 	{
 	/* this is the case where we have less data than planned */
 	php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data");
 	return 0; /* not sure if it should be 0 or 1 here? */
 }
-yy16:
-	yych = *++YYCURSOR;
-	goto yy3;
 yy17:
 	yych = *++YYCURSOR;
 	if (yybm[0+yych] & 128) {
-		goto yy20;
+		goto yy31;
 	}
-	if (yych == '+') goto yy19;
+	if (yych == '+') goto yy30;
 yy18:
 	YYCURSOR = YYMARKER;
 	goto yy3;
 yy19:
+	++YYCURSOR;
+	{
+	*p = YYCURSOR;
+	ZVAL_NULL(rval);
+	return 1;
+}
+yy21:
 	yych = *++YYCURSOR;
-	if (yybm[0+yych] & 128) {
-		goto yy20;
+	if (yych <= ',') {
+		if (yych == '+') goto yy33;
+		goto yy18;
+	} else {
+		if (yych <= '-') goto yy33;
+		if (yych <= '/') goto yy18;
+		if (yych <= '9') goto yy34;
+		goto yy18;
 	}
+yy22:
+	yych = *++YYCURSOR;
+	if (yych == '+') goto yy36;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy37;
 	goto yy18;
-yy20:
-	++YYCURSOR;
-	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-	yych = *YYCURSOR;
-	if (yybm[0+yych] & 128) {
-		goto yy20;
-	}
+yy23:
+	yych = *++YYCURSOR;
+	if (yych == '+') goto yy39;
 	if (yych <= '/') goto yy18;
-	if (yych >= ';') goto yy18;
+	if (yych <= '9') goto yy40;
+	goto yy18;
+yy24:
 	yych = *++YYCURSOR;
-	if (yych != '"') goto yy18;
-	++YYCURSOR;
-	{
-	size_t len, len2, len3, maxlen;
-	zend_long elements;
-	char *str;
-	zend_string *class_name;
-	zend_class_entry *ce;
-	int incomplete_class = 0;
-
-	int custom_object = 0;
-
-	zval user_func;
-	zval retval;
-	zval args[1];
-
-    if (!var_hash) return 0;
-	if (*start == 'C') {
-		custom_object = 1;
-	}
-
-	len2 = len = parse_uiv(start + 2);
-	maxlen = max - YYCURSOR;
-	if (maxlen < len || len == 0) {
-		*p = start + 2;
-		return 0;
-	}
-
-	str = (char*)YYCURSOR;
-
-	YYCURSOR += len;
-
-	if (*(YYCURSOR) != '"') {
-		*p = YYCURSOR;
-		return 0;
-	}
-	if (*(YYCURSOR+1) != ':') {
-		*p = YYCURSOR+1;
-		return 0;
-	}
-
-	len3 = strspn(str, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\");
-	if (len3 != len)
-	{
-		*p = YYCURSOR + len3 - len;
-		return 0;
-	}
-
-	class_name = zend_string_init(str, len, 0);
-
-	do {
-		if(!unserialize_allowed_class(class_name, var_hash)) {
-			incomplete_class = 1;
-			ce = PHP_IC_ENTRY;
-			break;
-		}
-
-		/* Try to find class directly */
-		BG(serialize_lock)++;
-		ce = zend_lookup_class(class_name);
-		if (ce) {
-			BG(serialize_lock)--;
-			if (EG(exception)) {
-				zend_string_release(class_name);
-				return 0;
-			}
-			break;
-		}
-		BG(serialize_lock)--;
-
-		if (EG(exception)) {
-			zend_string_release(class_name);
-			return 0;
-		}
-
-		/* Check for unserialize callback */
-		if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
-			incomplete_class = 1;
-			ce = PHP_IC_ENTRY;
-			break;
-		}
-
-		/* Call unserialize callback */
-		ZVAL_STRING(&user_func, PG(unserialize_callback_func));
-
-		ZVAL_STR_COPY(&args[0], class_name);
-		BG(serialize_lock)++;
-		if (call_user_function_ex(CG(function_table), NULL, &user_func, &retval, 1, args, 0, NULL) != SUCCESS) {
-			BG(serialize_lock)--;
-			if (EG(exception)) {
-				zend_string_release(class_name);
-				zval_ptr_dtor(&user_func);
-				zval_ptr_dtor(&args[0]);
-				return 0;
-			}
-			php_error_docref(NULL, E_WARNING, "defined (%s) but not found", Z_STRVAL(user_func));
-			incomplete_class = 1;
-			ce = PHP_IC_ENTRY;
-			zval_ptr_dtor(&user_func);
-			zval_ptr_dtor(&args[0]);
-			break;
-		}
-		BG(serialize_lock)--;
-		zval_ptr_dtor(&retval);
-		if (EG(exception)) {
-			zend_string_release(class_name);
-			zval_ptr_dtor(&user_func);
-			zval_ptr_dtor(&args[0]);
-			return 0;
-		}
-
-		/* The callback function may have defined the class */
-		BG(serialize_lock)++;
-		if ((ce = zend_lookup_class(class_name)) == NULL) {
-			php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func));
-			incomplete_class = 1;
-			ce = PHP_IC_ENTRY;
+	if (yych <= '/') goto yy18;
+	if (yych <= '1') goto yy42;
+	goto yy18;
+yy25:
+	yych = *++YYCURSOR;
+	if (yych <= '/') {
+		if (yych <= ',') {
+			if (yych == '+') goto yy43;
+			goto yy18;
+		} else {
+			if (yych <= '-') goto yy44;
+			if (yych <= '.') goto yy45;
+			goto yy18;
 		}
-		BG(serialize_lock)--;
-
-		zval_ptr_dtor(&user_func);
-		zval_ptr_dtor(&args[0]);
-		break;
-	} while (1);
-
-	*p = YYCURSOR;
-
-	if (custom_object) {
-		int ret;
-
-		ret = object_custom(UNSERIALIZE_PASSTHRU, ce);
-
-		if (ret && incomplete_class) {
-			php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+	} else {
+		if (yych <= 'I') {
+			if (yych <= '9') goto yy46;
+			if (yych <= 'H') goto yy18;
+			goto yy48;
+		} else {
+			if (yych == 'N') goto yy49;
+			goto yy18;
 		}
-		zend_string_release(class_name);
-		return ret;
 	}
-
-	elements = object_common1(UNSERIALIZE_PASSTHRU, ce);
-
-	if (elements < 0) {
-	   zend_string_release(class_name);
-	   return 0;
+yy26:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych == '+') goto yy50;
+		goto yy18;
+	} else {
+		if (yych <= '-') goto yy50;
+		if (yych <= '/') goto yy18;
+		if (yych <= '9') goto yy51;
+		goto yy18;
 	}
-
-	if (incomplete_class) {
-		php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+yy27:
+	yych = *++YYCURSOR;
+	if (yych <= ',') {
+		if (yych == '+') goto yy53;
+		goto yy18;
+	} else {
+		if (yych <= '-') goto yy53;
+		if (yych <= '/') goto yy18;
+		if (yych <= '9') goto yy54;
+		goto yy18;
 	}
-	zend_string_release(class_name);
-
-	return object_common2(UNSERIALIZE_PASSTHRU, elements);
-}
-yy25:
+yy28:
 	yych = *++YYCURSOR;
 	if (yych <= ',') {
-		if (yych != '+') goto yy18;
+		if (yych == '+') goto yy56;
+		goto yy18;
 	} else {
-		if (yych <= '-') goto yy26;
+		if (yych <= '-') goto yy56;
 		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy27;
+		if (yych <= '9') goto yy57;
 		goto yy18;
 	}
-yy26:
+yy29:
 	yych = *++YYCURSOR;
+	if (yych == '+') goto yy59;
 	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy27:
+	if (yych <= '9') goto yy60;
+	goto yy18;
+yy30:
+	yych = *++YYCURSOR;
+	if (yybm[0+yych] & 128) {
+		goto yy31;
+	}
+	goto yy18;
+yy31:
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy27;
-	if (yych >= ';') goto yy18;
-	yych = *++YYCURSOR;
-	if (yych != '"') goto yy18;
-	++YYCURSOR;
-	{
-	zend_long elements;
-    if (!var_hash) return 0;
-
-	elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR);
-	if (elements < 0 || elements >= HT_MAX_SIZE) {
-		return 0;
+	if (yybm[0+yych] & 128) {
+		goto yy31;
 	}
-	return object_common2(UNSERIALIZE_PASSTHRU, elements);
-}
-yy32:
-	yych = *++YYCURSOR;
-	if (yych == '+') goto yy33;
 	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy34;
+	if (yych <= ':') goto yy62;
 	goto yy18;
 yy33:
 	yych = *++YYCURSOR;
@@ -951,334 +836,231 @@ yy33:
 	if (yych >= ':') goto yy18;
 yy34:
 	++YYCURSOR;
-	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
 	if (yych <= '/') goto yy18;
 	if (yych <= '9') goto yy34;
-	if (yych >= ';') goto yy18;
+	if (yych == ';') goto yy63;
+	goto yy18;
+yy36:
 	yych = *++YYCURSOR;
-	if (yych != '{') goto yy18;
-	++YYCURSOR;
-	{
-	zend_long elements = parse_iv(start + 2);
-	/* use iv() not uiv() in order to check data range */
-	*p = YYCURSOR;
-    if (!var_hash) return 0;
-
-	if (elements < 0 || elements >= HT_MAX_SIZE) {
-		return 0;
-	}
-
-	array_init_size(rval, elements);
-	if (elements) {
-		/* we can't convert from packed to hash during unserialization, because
-		   reference to some zvals might be keept in var_hash (to support references) */
-		zend_hash_real_init(Z_ARRVAL_P(rval), 0);
-	}
-
-	if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) {
-		return 0;
-	}
-
-	return finish_nested_data(UNSERIALIZE_PASSTHRU);
-}
-yy39:
-	yych = *++YYCURSOR;
-	if (yych == '+') goto yy40;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy41;
-	goto yy18;
-yy40:
-	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy41:
+	if (yych <= '/') goto yy18;
+	if (yych >= ':') goto yy18;
+yy37:
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
 	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy41;
-	if (yych >= ';') goto yy18;
-	yych = *++YYCURSOR;
-	if (yych != '"') goto yy18;
-	++YYCURSOR;
-	{
-	size_t len, maxlen;
-	zend_string *str;
-
-	len = parse_uiv(start + 2);
-	maxlen = max - YYCURSOR;
-	if (maxlen < len) {
-		*p = start + 2;
-		return 0;
-	}
-
-	if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) {
-		return 0;
-	}
-
-	if (*(YYCURSOR) != '"') {
-		zend_string_free(str);
-		*p = YYCURSOR;
-		return 0;
-	}
-
-	if (*(YYCURSOR + 1) != ';') {
-		efree(str);
-		*p = YYCURSOR + 1;
-		return 0;
-	}
-
-	YYCURSOR += 2;
-	*p = YYCURSOR;
-
-	ZVAL_STR(rval, str);
-	return 1;
-}
-yy46:
-	yych = *++YYCURSOR;
-	if (yych == '+') goto yy47;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy48;
+	if (yych <= '9') goto yy37;
+	if (yych <= ':') goto yy65;
 	goto yy18;
-yy47:
+yy39:
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy18;
 	if (yych >= ':') goto yy18;
-yy48:
+yy40:
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
 	yych = *YYCURSOR;
 	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy48;
-	if (yych >= ';') goto yy18;
-	yych = *++YYCURSOR;
-	if (yych != '"') goto yy18;
-	++YYCURSOR;
-	{
-	size_t len, maxlen;
-	char *str;
-
-	len = parse_uiv(start + 2);
-	maxlen = max - YYCURSOR;
-	if (maxlen < len) {
-		*p = start + 2;
-		return 0;
-	}
-
-	str = (char*)YYCURSOR;
-
-	YYCURSOR += len;
-
-	if (*(YYCURSOR) != '"') {
-		*p = YYCURSOR;
-		return 0;
-	}
-
-	if (*(YYCURSOR + 1) != ';') {
-		*p = YYCURSOR + 1;
-		return 0;
-	}
-
-	YYCURSOR += 2;
-	*p = YYCURSOR;
-
-	ZVAL_STRINGL(rval, str, len);
-	return 1;
-}
-yy53:
+	if (yych <= '9') goto yy40;
+	if (yych <= ':') goto yy66;
+	goto yy18;
+yy42:
 	yych = *++YYCURSOR;
-	if (yych <= '/') {
-		if (yych <= ',') {
-			if (yych == '+') goto yy57;
-			goto yy18;
-		} else {
-			if (yych <= '-') goto yy55;
-			if (yych <= '.') goto yy60;
-			goto yy18;
-		}
-	} else {
-		if (yych <= 'I') {
-			if (yych <= '9') goto yy58;
-			if (yych <= 'H') goto yy18;
-			goto yy56;
-		} else {
-			if (yych != 'N') goto yy18;
-		}
-	}
+	if (yych == ';') goto yy67;
+	goto yy18;
+yy43:
 	yych = *++YYCURSOR;
-	if (yych == 'A') goto yy76;
+	if (yych == '.') goto yy45;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy46;
 	goto yy18;
-yy55:
+yy44:
 	yych = *++YYCURSOR;
 	if (yych <= '/') {
-		if (yych == '.') goto yy60;
-		goto yy18;
+		if (yych != '.') goto yy18;
 	} else {
-		if (yych <= '9') goto yy58;
-		if (yych != 'I') goto yy18;
+		if (yych <= '9') goto yy46;
+		if (yych == 'I') goto yy48;
+		goto yy18;
 	}
-yy56:
-	yych = *++YYCURSOR;
-	if (yych == 'N') goto yy72;
-	goto yy18;
-yy57:
+yy45:
 	yych = *++YYCURSOR;
-	if (yych == '.') goto yy60;
 	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy58:
+	if (yych <= '9') goto yy69;
+	goto yy18;
+yy46:
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
 	yych = *YYCURSOR;
 	if (yych <= ':') {
 		if (yych <= '.') {
 			if (yych <= '-') goto yy18;
-			goto yy70;
+			goto yy69;
 		} else {
 			if (yych <= '/') goto yy18;
-			if (yych <= '9') goto yy58;
+			if (yych <= '9') goto yy46;
 			goto yy18;
 		}
 	} else {
 		if (yych <= 'E') {
-			if (yych <= ';') goto yy63;
+			if (yych <= ';') goto yy71;
 			if (yych <= 'D') goto yy18;
-			goto yy65;
+			goto yy73;
 		} else {
-			if (yych == 'e') goto yy65;
+			if (yych == 'e') goto yy73;
 			goto yy18;
 		}
 	}
-yy60:
+yy48:
+	yych = *++YYCURSOR;
+	if (yych == 'N') goto yy74;
+	goto yy18;
+yy49:
+	yych = *++YYCURSOR;
+	if (yych == 'A') goto yy75;
+	goto yy18;
+yy50:
 	yych = *++YYCURSOR;
 	if (yych <= '/') goto yy18;
 	if (yych >= ':') goto yy18;
-yy61:
+yy51:
 	++YYCURSOR;
-	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
-	if (yych <= ';') {
-		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy61;
-		if (yych <= ':') goto yy18;
-	} else {
-		if (yych <= 'E') {
-			if (yych <= 'D') goto yy18;
-			goto yy65;
-		} else {
-			if (yych == 'e') goto yy65;
-			goto yy18;
-		}
-	}
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy51;
+	if (yych == ';') goto yy76;
+	goto yy18;
+yy53:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych >= ':') goto yy18;
+yy54:
+	++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	yych = *YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy54;
+	if (yych <= ':') goto yy78;
+	goto yy18;
+yy56:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych >= ':') goto yy18;
+yy57:
+	++YYCURSOR;
+	if (YYLIMIT <= YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy57;
+	if (yych == ';') goto yy79;
+	goto yy18;
+yy59:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych >= ':') goto yy18;
+yy60:
+	++YYCURSOR;
+	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	yych = *YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy60;
+	if (yych <= ':') goto yy81;
+	goto yy18;
+yy62:
+	yych = *++YYCURSOR;
+	if (yych == '"') goto yy82;
+	goto yy18;
 yy63:
 	++YYCURSOR;
 	{
-#if SIZEOF_ZEND_LONG == 4
-use_double:
-#endif
-	*p = YYCURSOR;
-	ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
+	zend_long id;
+
+ 	*p = YYCURSOR;
+	if (!var_hash) return 0;
+
+	id = parse_iv(start + 2) - 1;
+	if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) {
+		return 0;
+	}
+
+	if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) {
+		return 0;
+	}
+
+	if (Z_ISREF_P(rval_ref)) {
+		ZVAL_COPY(rval, rval_ref);
+	} else {
+		ZVAL_NEW_REF(rval_ref, rval_ref);
+		ZVAL_COPY(rval, rval_ref);
+	}
+
 	return 1;
 }
 yy65:
 	yych = *++YYCURSOR;
-	if (yych <= ',') {
-		if (yych != '+') goto yy18;
-	} else {
-		if (yych <= '-') goto yy66;
-		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy67;
-		goto yy18;
-	}
+	if (yych == '"') goto yy84;
+	goto yy18;
 yy66:
 	yych = *++YYCURSOR;
-	if (yych <= ',') {
-		if (yych == '+') goto yy69;
-		goto yy18;
-	} else {
-		if (yych <= '-') goto yy69;
-		if (yych <= '/') goto yy18;
-		if (yych >= ':') goto yy18;
-	}
+	if (yych == '{') goto yy86;
+	goto yy18;
 yy67:
 	++YYCURSOR;
-	if (YYLIMIT <= YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy67;
-	if (yych == ';') goto yy63;
-	goto yy18;
+	{
+	*p = YYCURSOR;
+	ZVAL_BOOL(rval, parse_iv(start + 2));
+	return 1;
+}
 yy69:
-	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy67;
-	goto yy18;
-yy70:
 	++YYCURSOR;
 	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
 	yych = *YYCURSOR;
 	if (yych <= ';') {
 		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy70;
+		if (yych <= '9') goto yy69;
 		if (yych <= ':') goto yy18;
-		goto yy63;
 	} else {
 		if (yych <= 'E') {
 			if (yych <= 'D') goto yy18;
-			goto yy65;
+			goto yy73;
 		} else {
-			if (yych == 'e') goto yy65;
+			if (yych == 'e') goto yy73;
 			goto yy18;
 		}
 	}
-yy72:
-	yych = *++YYCURSOR;
-	if (yych != 'F') goto yy18;
-yy73:
-	yych = *++YYCURSOR;
-	if (yych != ';') goto yy18;
+yy71:
 	++YYCURSOR;
 	{
+#if SIZEOF_ZEND_LONG == 4
+use_double:
+#endif
 	*p = YYCURSOR;
-
-	if (!strncmp((char*)start + 2, "NAN", 3)) {
-		ZVAL_DOUBLE(rval, php_get_nan());
-	} else if (!strncmp((char*)start + 2, "INF", 3)) {
-		ZVAL_DOUBLE(rval, php_get_inf());
-	} else if (!strncmp((char*)start + 2, "-INF", 4)) {
-		ZVAL_DOUBLE(rval, -php_get_inf());
-	} else {
-		ZVAL_NULL(rval);
-	}
-
+	ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
 	return 1;
 }
-yy76:
-	yych = *++YYCURSOR;
-	if (yych == 'N') goto yy73;
-	goto yy18;
-yy77:
+yy73:
 	yych = *++YYCURSOR;
 	if (yych <= ',') {
-		if (yych != '+') goto yy18;
+		if (yych == '+') goto yy88;
+		goto yy18;
 	} else {
-		if (yych <= '-') goto yy78;
+		if (yych <= '-') goto yy88;
 		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy79;
+		if (yych <= '9') goto yy89;
 		goto yy18;
 	}
-yy78:
+yy74:
 	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy79:
-	++YYCURSOR;
-	if (YYLIMIT <= YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy79;
-	if (yych != ';') goto yy18;
+	if (yych == 'F') goto yy91;
+	goto yy18;
+yy75:
+	yych = *++YYCURSOR;
+	if (yych == 'N') goto yy91;
+	goto yy18;
+yy76:
 	++YYCURSOR;
 	{
 #if SIZEOF_ZEND_LONG == 4
@@ -1305,46 +1087,11 @@ yy79:
 	ZVAL_LONG(rval, parse_iv(start + 2));
 	return 1;
 }
-yy83:
-	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych >= '2') goto yy18;
-	yych = *++YYCURSOR;
-	if (yych != ';') goto yy18;
-	++YYCURSOR;
-	{
-	*p = YYCURSOR;
-	ZVAL_BOOL(rval, parse_iv(start + 2));
-	return 1;
-}
-yy87:
-	++YYCURSOR;
-	{
-	*p = YYCURSOR;
-	ZVAL_NULL(rval);
-	return 1;
-}
-yy89:
-	yych = *++YYCURSOR;
-	if (yych <= ',') {
-		if (yych != '+') goto yy18;
-	} else {
-		if (yych <= '-') goto yy90;
-		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy91;
-		goto yy18;
-	}
-yy90:
+yy78:
 	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy91:
-	++YYCURSOR;
-	if (YYLIMIT <= YYCURSOR) YYFILL(1);
-	yych = *YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy91;
-	if (yych != ';') goto yy18;
+	if (yych == '"') goto yy92;
+	goto yy18;
+yy79:
 	++YYCURSOR;
 	{
 	zend_long id;
@@ -1362,57 +1109,315 @@ yy91:
 	}
 
 	if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) {
-		ZVAL_UNDEF(rval);
-		return 1;
+		return 0;
 	}
 
 	ZVAL_COPY(rval, rval_ref);
 
 	return 1;
 }
-yy95:
+yy81:
+	yych = *++YYCURSOR;
+	if (yych == '"') goto yy94;
+	goto yy18;
+yy82:
+	++YYCURSOR;
+	{
+	size_t len, len2, len3, maxlen;
+	zend_long elements;
+	char *str;
+	zend_string *class_name;
+	zend_class_entry *ce;
+	int incomplete_class = 0;
+
+	int custom_object = 0;
+
+	zval user_func;
+	zval retval;
+	zval args[1];
+
+    if (!var_hash) return 0;
+	if (*start == 'C') {
+		custom_object = 1;
+	}
+
+	len2 = len = parse_uiv(start + 2);
+	maxlen = max - YYCURSOR;
+	if (maxlen < len || len == 0) {
+		*p = start + 2;
+		return 0;
+	}
+
+	str = (char*)YYCURSOR;
+
+	YYCURSOR += len;
+
+	if (*(YYCURSOR) != '"') {
+		*p = YYCURSOR;
+		return 0;
+	}
+	if (*(YYCURSOR+1) != ':') {
+		*p = YYCURSOR+1;
+		return 0;
+	}
+
+	len3 = strspn(str, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\");
+	if (len3 != len)
+	{
+		*p = YYCURSOR + len3 - len;
+		return 0;
+	}
+
+	class_name = zend_string_init(str, len, 0);
+
+	do {
+		if(!unserialize_allowed_class(class_name, var_hash)) {
+			incomplete_class = 1;
+			ce = PHP_IC_ENTRY;
+			break;
+		}
+
+		/* Try to find class directly */
+		BG(serialize_lock)++;
+		ce = zend_lookup_class(class_name);
+		if (ce) {
+			BG(serialize_lock)--;
+			if (EG(exception)) {
+				zend_string_release(class_name);
+				return 0;
+			}
+			break;
+		}
+		BG(serialize_lock)--;
+
+		if (EG(exception)) {
+			zend_string_release(class_name);
+			return 0;
+		}
+
+		/* Check for unserialize callback */
+		if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
+			incomplete_class = 1;
+			ce = PHP_IC_ENTRY;
+			break;
+		}
+
+		/* Call unserialize callback */
+		ZVAL_STRING(&user_func, PG(unserialize_callback_func));
+
+		ZVAL_STR_COPY(&args[0], class_name);
+		BG(serialize_lock)++;
+		if (call_user_function_ex(CG(function_table), NULL, &user_func, &retval, 1, args, 0, NULL) != SUCCESS) {
+			BG(serialize_lock)--;
+			if (EG(exception)) {
+				zend_string_release(class_name);
+				zval_ptr_dtor(&user_func);
+				zval_ptr_dtor(&args[0]);
+				return 0;
+			}
+			php_error_docref(NULL, E_WARNING, "defined (%s) but not found", Z_STRVAL(user_func));
+			incomplete_class = 1;
+			ce = PHP_IC_ENTRY;
+			zval_ptr_dtor(&user_func);
+			zval_ptr_dtor(&args[0]);
+			break;
+		}
+		BG(serialize_lock)--;
+		zval_ptr_dtor(&retval);
+		if (EG(exception)) {
+			zend_string_release(class_name);
+			zval_ptr_dtor(&user_func);
+			zval_ptr_dtor(&args[0]);
+			return 0;
+		}
+
+		/* The callback function may have defined the class */
+		BG(serialize_lock)++;
+		if ((ce = zend_lookup_class(class_name)) == NULL) {
+			php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func));
+			incomplete_class = 1;
+			ce = PHP_IC_ENTRY;
+		}
+		BG(serialize_lock)--;
+
+		zval_ptr_dtor(&user_func);
+		zval_ptr_dtor(&args[0]);
+		break;
+	} while (1);
+
+	*p = YYCURSOR;
+
+	if (custom_object) {
+		int ret;
+
+		ret = object_custom(UNSERIALIZE_PASSTHRU, ce);
+
+		if (ret && incomplete_class) {
+			php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+		}
+		zend_string_release(class_name);
+		return ret;
+	}
+
+	elements = object_common1(UNSERIALIZE_PASSTHRU, ce);
+
+	if (elements < 0) {
+	   zend_string_release(class_name);
+	   return 0;
+	}
+
+	if (incomplete_class) {
+		php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+	}
+	zend_string_release(class_name);
+
+	return object_common2(UNSERIALIZE_PASSTHRU, elements);
+}
+yy84:
+	++YYCURSOR;
+	{
+	size_t len, maxlen;
+	zend_string *str;
+
+	len = parse_uiv(start + 2);
+	maxlen = max - YYCURSOR;
+	if (maxlen < len) {
+		*p = start + 2;
+		return 0;
+	}
+
+	if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) {
+		return 0;
+	}
+
+	if (*(YYCURSOR) != '"') {
+		zend_string_free(str);
+		*p = YYCURSOR;
+		return 0;
+	}
+
+	if (*(YYCURSOR + 1) != ';') {
+		efree(str);
+		*p = YYCURSOR + 1;
+		return 0;
+	}
+
+	YYCURSOR += 2;
+	*p = YYCURSOR;
+
+	ZVAL_STR(rval, str);
+	return 1;
+}
+yy86:
+	++YYCURSOR;
+	{
+	zend_long elements = parse_iv(start + 2);
+	/* use iv() not uiv() in order to check data range */
+	*p = YYCURSOR;
+    if (!var_hash) return 0;
+
+	if (elements < 0 || elements >= HT_MAX_SIZE) {
+		return 0;
+	}
+
+	array_init_size(rval, elements);
+	if (elements) {
+		/* we can't convert from packed to hash during unserialization, because
+		   reference to some zvals might be keept in var_hash (to support references) */
+		zend_hash_real_init(Z_ARRVAL_P(rval), 0);
+	}
+
+	if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) {
+		return 0;
+	}
+
+	return finish_nested_data(UNSERIALIZE_PASSTHRU);
+}
+yy88:
 	yych = *++YYCURSOR;
 	if (yych <= ',') {
-		if (yych != '+') goto yy18;
+		if (yych == '+') goto yy96;
+		goto yy18;
 	} else {
 		if (yych <= '-') goto yy96;
 		if (yych <= '/') goto yy18;
-		if (yych <= '9') goto yy97;
-		goto yy18;
+		if (yych >= ':') goto yy18;
 	}
-yy96:
-	yych = *++YYCURSOR;
-	if (yych <= '/') goto yy18;
-	if (yych >= ':') goto yy18;
-yy97:
+yy89:
 	++YYCURSOR;
 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
 	yych = *YYCURSOR;
 	if (yych <= '/') goto yy18;
-	if (yych <= '9') goto yy97;
-	if (yych != ';') goto yy18;
+	if (yych <= '9') goto yy89;
+	if (yych == ';') goto yy71;
+	goto yy18;
+yy91:
+	yych = *++YYCURSOR;
+	if (yych == ';') goto yy97;
+	goto yy18;
+yy92:
 	++YYCURSOR;
 	{
-	zend_long id;
+	zend_long elements;
+    if (!var_hash) return 0;
 
- 	*p = YYCURSOR;
-	if (!var_hash) return 0;
+	elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR);
+	if (elements < 0 || elements >= HT_MAX_SIZE) {
+		return 0;
+	}
+	return object_common2(UNSERIALIZE_PASSTHRU, elements);
+}
+yy94:
+	++YYCURSOR;
+	{
+	size_t len, maxlen;
+	char *str;
 
-	id = parse_iv(start + 2) - 1;
-	if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) {
+	len = parse_uiv(start + 2);
+	maxlen = max - YYCURSOR;
+	if (maxlen < len) {
+		*p = start + 2;
 		return 0;
 	}
 
-	zval_ptr_dtor(rval);
-	if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) {
-		ZVAL_UNDEF(rval);
-		return 1;
+	str = (char*)YYCURSOR;
+
+	YYCURSOR += len;
+
+	if (*(YYCURSOR) != '"') {
+		*p = YYCURSOR;
+		return 0;
 	}
-	if (Z_ISREF_P(rval_ref)) {
-		ZVAL_COPY(rval, rval_ref);
+
+	if (*(YYCURSOR + 1) != ';') {
+		*p = YYCURSOR + 1;
+		return 0;
+	}
+
+	YYCURSOR += 2;
+	*p = YYCURSOR;
+
+	ZVAL_STRINGL(rval, str, len);
+	return 1;
+}
+yy96:
+	yych = *++YYCURSOR;
+	if (yych <= '/') goto yy18;
+	if (yych <= '9') goto yy89;
+	goto yy18;
+yy97:
+	++YYCURSOR;
+	{
+	*p = YYCURSOR;
+
+	if (!strncmp((char*)start + 2, "NAN", 3)) {
+		ZVAL_DOUBLE(rval, php_get_nan());
+	} else if (!strncmp((char*)start + 2, "INF", 3)) {
+		ZVAL_DOUBLE(rval, php_get_inf());
+	} else if (!strncmp((char*)start + 2, "-INF", 4)) {
+		ZVAL_DOUBLE(rval, -php_get_inf());
 	} else {
-		ZVAL_NEW_REF(rval_ref, rval_ref);
-		ZVAL_COPY(rval, rval_ref);
+		ZVAL_NULL(rval);
 	}
 
 	return 1;
diff -pruN 7.1.8-1/ext/standard/var_unserializer.re 7.1.13-1/ext/standard/var_unserializer.re
--- 7.1.8-1/ext/standard/var_unserializer.re	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/ext/standard/var_unserializer.re	2018-01-03 02:32:25.000000000 +0000
@@ -327,29 +327,21 @@ object = [OC];
 
 static inline zend_long parse_iv2(const unsigned char *p, const unsigned char **q)
 {
-	char cursor;
 	zend_long result = 0;
-	int neg = 0;
+	char *end;
 
-	switch (*p) {
-		case '-':
-			neg++;
-			/* fall-through */
-		case '+':
-			p++;
+	errno = 0;
+	result = ZEND_STRTOL((const char*)p, &end, 0);
+
+	if (q) {
+		*q = (const unsigned char *)end;
 	}
 
-	while (1) {
-		cursor = (char)*p;
-		if (cursor >= '0' && cursor <= '9') {
-			result = result * 10 + (size_t)(cursor - (unsigned char)'0');
-		} else {
-			break;
-		}
-		p++;
+	if (errno) {
+		php_error_docref(NULL, E_WARNING, "%s", strerror(errno));
+		return result;
 	}
-	if (q) *q = p;
-	if (neg) return -result;
+
 	return result;
 }
 
@@ -454,16 +446,7 @@ string_key:
 			return 0;
 		}
 
-		if (UNEXPECTED(Z_ISUNDEF_P(data))) {
-			if (Z_TYPE(key) == IS_LONG) {
-				zend_hash_index_del(ht, Z_LVAL(key));
-			} else {
-				zend_hash_del_ind(ht, Z_STR(key));
-			}
-		} else {
-			var_push_dtor(var_hash, data);
-		}
-
+		var_push_dtor(var_hash, data);
 		zval_dtor(&key);
 
 		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
@@ -636,11 +619,10 @@ static int php_var_unserialize_internal(
 		return 0;
 	}
 
-	zval_ptr_dtor(rval);
 	if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) {
-		ZVAL_UNDEF(rval);
-		return 1;
+		return 0;
 	}
+
 	if (Z_ISREF_P(rval_ref)) {
 		ZVAL_COPY(rval, rval_ref);
 	} else {
@@ -667,8 +649,7 @@ static int php_var_unserialize_internal(
 	}
 
 	if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) {
-		ZVAL_UNDEF(rval);
-		return 1;
+		return 0;
 	}
 
 	ZVAL_COPY(rval, rval_ref);
diff -pruN 7.1.8-1/ext/wddx/tests/bug70741.phpt 7.1.13-1/ext/wddx/tests/bug70741.phpt
--- 7.1.8-1/ext/wddx/tests/bug70741.phpt	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/wddx/tests/bug70741.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -3,6 +3,7 @@ Bug #70741 (Session WDDX Packet Deserial
 --SKIPIF--
 <?php
 if (!extension_loaded("wddx")) print "skip";
+if (!extension_loaded("session")) print "skip session extension not available";
 ?>
 --FILE--
 <?php
diff -pruN 7.1.8-1/ext/wddx/tests/bug73793.phpt 7.1.13-1/ext/wddx/tests/bug73793.phpt
--- 7.1.8-1/ext/wddx/tests/bug73793.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/wddx/tests/bug73793.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,18 @@
+--TEST--
+Bug #73793 (WDDX uses wrong decimal seperator)
+--SKIPIF--
+<?php
+if (!extension_loaded('wddx')) print 'skip wddx extension not available';
+if (setlocale(LC_NUMERIC, ['de_DE', 'de_DE.UTF-8', 'de-DE']) === false) {
+    print 'skip German locale not available';
+}
+?>
+--FILE--
+<?php
+setlocale(LC_NUMERIC , ['de_DE', 'de_DE.UTF-8', 'de-DE']);
+var_dump(wddx_serialize_value(['foo' => 5.1]));
+?>
+===DONE===
+--EXPECT--
+string(120) "<wddxPacket version='1.0'><header/><data><struct><var name='foo'><number>5.1</number></var></struct></data></wddxPacket>"
+===DONE===
diff -pruN 7.1.8-1/ext/wddx/tests/bug75055.phpt 7.1.13-1/ext/wddx/tests/bug75055.phpt
--- 7.1.8-1/ext/wddx/tests/bug75055.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/wddx/tests/bug75055.phpt	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #75055 Out-Of-Bounds Read in timelib_meridian()
+--SKIPIF--
+<?php if (!extension_loaded("wddx")) print "skip"; ?>
+--FILE--
+<?php
+
+$file_str = dirname(__FILE__) . "/bug75055.wddx";
+
+$wddx_str = file_get_contents($file_str);
+print strlen($wddx_str) . " bytes read.\n";
+
+var_dump(wddx_deserialize($wddx_str));
+?>
+--EXPECT--
+323 bytes read.
+array(1) {
+  ["aDateTime"]=>
+  string(12) "frONt of 0 0"
+}
diff -pruN 7.1.8-1/ext/wddx/tests/bug75055.wddx 7.1.13-1/ext/wddx/tests/bug75055.wddx
--- 7.1.8-1/ext/wddx/tests/bug75055.wddx	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/wddx/tests/bug75055.wddx	2018-01-03 02:32:30.000000000 +0000
@@ -0,0 +1,13 @@
+<?xml version='1.0'?>
+<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
+<wddxPacket version='1.0'>
+<header/>
+	<data>
+        	<struct>
+                    <var name='aDateTime'>
+                         <dateTime>frONt of 0 0</dateTime>
+                     </var>
+                </struct>
+	</data>
+</wddxPacket>
+
diff -pruN 7.1.8-1/ext/wddx/wddx.c 7.1.13-1/ext/wddx/wddx.c
--- 7.1.8-1/ext/wddx/wddx.c	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/ext/wddx/wddx.c	2018-01-03 02:32:30.000000000 +0000
@@ -420,11 +420,15 @@ static void php_wddx_serialize_string(wd
  */
 static void php_wddx_serialize_number(wddx_packet *packet, zval *var)
 {
-	char tmp_buf[WDDX_BUF_LEN];
+	char tmp_buf[WDDX_BUF_LEN], *dec_point;
 	zend_string *str = zval_get_string(var);
 	snprintf(tmp_buf, sizeof(tmp_buf), WDDX_NUMBER, ZSTR_VAL(str));
 	zend_string_release(str);
 
+	dec_point = strchr(tmp_buf, ',');
+	if (dec_point) {
+		*dec_point = '.';
+	}
 	php_wddx_add_chunk(packet, tmp_buf);
 }
 /* }}} */
diff -pruN 7.1.8-1/ext/xmlreader/tests/bug64230.phpt 7.1.13-1/ext/xmlreader/tests/bug64230.phpt
--- 7.1.8-1/ext/xmlreader/tests/bug64230.phpt	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/xmlreader/tests/bug64230.phpt	2018-01-03 02:32:27.000000000 +0000
@@ -38,11 +38,11 @@ Done
 --EXPECTF--
 Test
 Internal errors TRUE
-Internal: Specification mandate value for attribute att
+Internal: Specification mandate%A value for attribute att
 
 Internal errors FALSE
 
-Warning: XMLReader::read(): %s: parser error : Specification mandate value for attribute att in %s on line %d
+Warning: XMLReader::read(): %s: parser error : Specification mandate%A value for attribute att in %s on line %d
 
 Warning: XMLReader::read(): <root att/> in %s on line %d
 
diff -pruN 7.1.8-1/ext/xmlrpc/tests/bug74975.phpt 7.1.13-1/ext/xmlrpc/tests/bug74975.phpt
--- 7.1.8-1/ext/xmlrpc/tests/bug74975.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/xmlrpc/tests/bug74975.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,56 @@
+--TEST--
+Bug #74975	Different serialization for classes
+--SKIPIF--
+<?php
+if (!extension_loaded("xmlrpc")) print "skip";
+?>
+--FILE--
+<?php
+
+class Foo {
+    
+}
+
+class Bar {
+    
+    public $xmlrpc_type;
+    public $scalar;
+    
+}
+
+$foo = new Foo();
+$foo->xmlrpc_type = 'base64';
+$foo->scalar = 'foobar';
+
+$bar = new Bar();
+$bar->xmlrpc_type = 'base64';
+$bar->scalar = 'foobar';
+
+echo xmlrpc_encode([
+    'foo' => $foo,
+    'bar' => $bar
+]);
+
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="utf-8"?>
+<params>
+<param>
+ <value>
+  <struct>
+   <member>
+    <name>foo</name>
+    <value>
+     <base64>Zm9vYmFy&#10;</base64>
+    </value>
+   </member>
+   <member>
+    <name>bar</name>
+    <value>
+     <base64>Zm9vYmFy&#10;</base64>
+    </value>
+   </member>
+  </struct>
+ </value>
+</param>
+</params>
diff -pruN 7.1.8-1/ext/xmlrpc/xmlrpc-epi-php.c 7.1.13-1/ext/xmlrpc/xmlrpc-epi-php.c
--- 7.1.8-1/ext/xmlrpc/xmlrpc-epi-php.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/ext/xmlrpc/xmlrpc-epi-php.c	2018-01-03 02:32:28.000000000 +0000
@@ -1354,7 +1354,7 @@ XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(z
 					zval* attr;
 					type = xmlrpc_vector;
 
-					if ((attr = zend_hash_str_find(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR) - 1)) != NULL) {
+					if ((attr = zend_hash_str_find_ind(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR) - 1)) != NULL) {
 						if (Z_TYPE_P(attr) == IS_STRING) {
 							type = xmlrpc_str_as_type(Z_STRVAL_P(attr));
 						}
@@ -1368,7 +1368,7 @@ XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(z
 			zval* val;
 
 			if ((type == xmlrpc_base64 && Z_TYPE_P(value) == IS_OBJECT) || type == xmlrpc_datetime) {
-				if ((val = zend_hash_str_find(Z_OBJPROP_P(value), OBJECT_VALUE_ATTR, sizeof(OBJECT_VALUE_ATTR) - 1)) != NULL) {
+				if ((val = zend_hash_str_find_ind(Z_OBJPROP_P(value), OBJECT_VALUE_ATTR, sizeof(OBJECT_VALUE_ATTR) - 1)) != NULL) {
 					ZVAL_COPY_VALUE(newvalue, val);
 				}
 			} else {
diff -pruN 7.1.8-1/ext/xsl/tests/xslt010_gt10129.phpt 7.1.13-1/ext/xsl/tests/xslt010_gt10129.phpt
--- 7.1.8-1/ext/xsl/tests/xslt010_gt10129.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/xsl/tests/xslt010_gt10129.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,206 @@
+--TEST--
+Test 10: EXSLT Support
+--SKIPIF--
+<?php 
+require_once dirname(__FILE__) .'/skipif.inc';
+$proc = new xsltprocessor;
+if (!$proc->hasExsltSupport()) die('skip EXSLT support not available');
+if (LIBXSLT_VERSION < 10130) die('skip too old libxsl');
+?>
+--FILE--
+<?php
+echo "Test 10: EXSLT Support";
+
+$dom = new domDocument();
+  $dom->load(dirname(__FILE__)."/exslt.xsl");
+  $proc = new xsltprocessor;
+  $xsl = $proc->importStylesheet($dom);
+  
+  $xml = new DomDocument();
+  $xml->load(dirname(__FILE__)."/exslt.xml");
+  
+  print $proc->transformToXml($xml);
+--EXPECT--
+Test 10: EXSLT Support
+  
+  
+  Test Date : 0001-12-31Z
+    year                 : 1
+    leap-year            : false
+    month-in-year        : 12
+    month-name           : December
+    month-abbreviation   : Dec
+    week-in-year         : 1
+    day-in-year          : 365
+    day-in-month         : 31
+    day-of-week-in-month : 5
+    day-in-week          : 2
+    day-name             : Monday
+    day-abbreviation     : Mon
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 3000-01-31
+    year                 : 3000
+    leap-year            : false
+    month-in-year        : 1
+    month-name           : January
+    month-abbreviation   : Jan
+    week-in-year         : 5
+    day-in-year          : 31
+    day-in-month         : 31
+    day-of-week-in-month : 5
+    day-in-week          : 6
+    day-name             : Friday
+    day-abbreviation     : Fri
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 2000-02-29
+    year                 : 2000
+    leap-year            : true
+    month-in-year        : 2
+    month-name           : February
+    month-abbreviation   : Feb
+    week-in-year         : 9
+    day-in-year          : 60
+    day-in-month         : 29
+    day-of-week-in-month : 5
+    day-in-week          : 3
+    day-name             : Tuesday
+    day-abbreviation     : Tue
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 9990001-12-31Z
+    year                 : 9990001
+    leap-year            : false
+    month-in-year        : 12
+    month-name           : December
+    month-abbreviation   : Dec
+    week-in-year         : 1
+    day-in-year          : 365
+    day-in-month         : 31
+    day-of-week-in-month : 5
+    day-in-week          : 2
+    day-name             : Monday
+    day-abbreviation     : Mon
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : -0004-02-29
+    year                 : NaN
+    leap-year            : NaN
+    month-in-year        : NaN
+    month-name           : 
+    month-abbreviation   : 
+    week-in-year         : NaN
+    day-in-year          : NaN
+    day-in-month         : NaN
+    day-of-week-in-month : NaN
+    day-in-week          : NaN
+    day-name             : 
+    day-abbreviation     : 
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 1999-01-02
+    year                 : 1999
+    leap-year            : false
+    month-in-year        : 1
+    month-name           : January
+    month-abbreviation   : Jan
+    week-in-year         : 53
+    day-in-year          : 2
+    day-in-month         : 2
+    day-of-week-in-month : 1
+    day-in-week          : 7
+    day-name             : Saturday
+    day-abbreviation     : Sat
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 1999-01-03
+    year                 : 1999
+    leap-year            : false
+    month-in-year        : 1
+    month-name           : January
+    month-abbreviation   : Jan
+    week-in-year         : 53
+    day-in-year          : 3
+    day-in-month         : 3
+    day-of-week-in-month : 1
+    day-in-week          : 1
+    day-name             : Sunday
+    day-abbreviation     : Sun
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 2004-01-01
+    year                 : 2004
+    leap-year            : true
+    month-in-year        : 1
+    month-name           : January
+    month-abbreviation   : Jan
+    week-in-year         : 1
+    day-in-year          : 1
+    day-in-month         : 1
+    day-of-week-in-month : 1
+    day-in-week          : 5
+    day-name             : Thursday
+    day-abbreviation     : Thu
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 2006-01-01
+    year                 : 2006
+    leap-year            : false
+    month-in-year        : 1
+    month-name           : January
+    month-abbreviation   : Jan
+    week-in-year         : 52
+    day-in-year          : 1
+    day-in-month         : 1
+    day-of-week-in-month : 1
+    day-in-week          : 1
+    day-name             : Sunday
+    day-abbreviation     : Sun
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+  
+  Test Date : 2007-12-31
+    year                 : 2007
+    leap-year            : false
+    month-in-year        : 12
+    month-name           : December
+    month-abbreviation   : Dec
+    week-in-year         : 1
+    day-in-year          : 365
+    day-in-month         : 31
+    day-of-week-in-month : 5
+    day-in-week          : 2
+    day-name             : Monday
+    day-abbreviation     : Mon
+    time                 : 
+    hour-in-day          : NaN
+    minute-in-hour       : NaN
+    second-in-minute     : NaN
+
diff -pruN 7.1.8-1/ext/xsl/tests/xslt010.phpt 7.1.13-1/ext/xsl/tests/xslt010.phpt
--- 7.1.8-1/ext/xsl/tests/xslt010.phpt	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/ext/xsl/tests/xslt010.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -6,6 +6,7 @@ require_once dirname(__FILE__) .'/skipif
 $proc = new xsltprocessor;
 if (!$proc->hasExsltSupport()) die('skip EXSLT support not available');
 if (LIBXSLT_VERSION < 10117) die('skip too old libxsl');
+if (LIBXSLT_VERSION > 10129) die('skip for libxsl < 10130');
 ?>
 --FILE--
 <?php
diff -pruN 7.1.8-1/ext/zip/lib/zip_open.c 7.1.13-1/ext/zip/lib/zip_open.c
--- 7.1.8-1/ext/zip/lib/zip_open.c	2017-08-01 17:36:54.000000000 +0000
+++ 7.1.13-1/ext/zip/lib/zip_open.c	2018-01-03 02:32:27.000000000 +0000
@@ -837,7 +837,12 @@ _zip_read_eocd64(zip_source_t *src, zip_
         zip_error_set(error, ZIP_ER_SEEK, EFBIG);
         return NULL;
     }
-    if ((flags & ZIP_CHECKCONS) && offset+size != eocd_offset) {
+    if (offset+size > buf_offset + eocd_offset) {
+	/* cdir spans past EOCD record */
+	zip_error_set(error, ZIP_ER_INCONS, 0);
+	return NULL;
+    }
+    if ((flags & ZIP_CHECKCONS) && offset+size != buf_offset + eocd_offset) {
 	zip_error_set(error, ZIP_ER_INCONS, 0);
 	return NULL;
     }
diff -pruN 7.1.8-1/ext/zip/php_zip.c 7.1.13-1/ext/zip/php_zip.c
--- 7.1.8-1/ext/zip/php_zip.c	2017-08-01 17:36:53.000000000 +0000
+++ 7.1.13-1/ext/zip/php_zip.c	2018-01-03 02:32:27.000000000 +0000
@@ -1513,8 +1513,12 @@ static ZIPARCHIVE_METHOD(close)
 	ze_obj = Z_ZIP_P(self);
 
 	if ((err = zip_close(intern))) {
+#if LIBZIP_VERSION_MAJOR == 1 && LIBZIP_VERSION_MINOR == 3 && LIBZIP_VERSION_MICRO == 1
+		php_error_docref(NULL, E_WARNING, "%s", "zip_close have failed");
+#else
 		php_error_docref(NULL, E_WARNING, "%s", zip_strerror(intern));
 		zip_discard(intern);
+#endif
 	}
 
 	efree(ze_obj->filename);
diff -pruN 7.1.8-1/ext/zlib/tests/bug75299.phpt 7.1.13-1/ext/zlib/tests/bug75299.phpt
--- 7.1.8-1/ext/zlib/tests/bug75299.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 7.1.13-1/ext/zlib/tests/bug75299.phpt	2018-01-03 02:32:28.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #75299 Wrong reflection on inflate_init and inflate_add
+--SKIPIF--
+<?php if (!extension_loaded("zlib") || !extension_loaded('reflection')) die("skip"); ?>
+--FILE--
+<?php
+$r = new ReflectionFunction('inflate_init');
+var_dump($r->getNumberOfRequiredParameters());
+var_dump($r->getNumberOfParameters());
+$r = new ReflectionFunction('inflate_add');
+var_dump($r->getNumberOfRequiredParameters());
+var_dump($r->getNumberOfParameters());
+?>
+===DONE===
+--EXPECT--
+int(1)
+int(2)
+int(2)
+int(3)
+===DONE===
diff -pruN 7.1.8-1/ext/zlib/zlib.c 7.1.13-1/ext/zlib/zlib.c
--- 7.1.8-1/ext/zlib/zlib.c	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/ext/zlib/zlib.c	2018-01-05 15:39:53.000000000 +0000
@@ -1327,11 +1327,13 @@ ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_init, 0, 0, 1)
 	ZEND_ARG_INFO(0, encoding)
+	ZEND_ARG_INFO(0, options)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_add, 0, 0, 2)
-	ZEND_ARG_INFO(0, resource)
-	ZEND_ARG_INFO(0, flush_behavior)
+	ZEND_ARG_INFO(0, context)
+	ZEND_ARG_INFO(0, encoded_data)
+	ZEND_ARG_INFO(0, flush_mode)
 ZEND_END_ARG_INFO()
 
 /* }}} */
diff -pruN 7.1.8-1/.gitattributes 7.1.13-1/.gitattributes
--- 7.1.8-1/.gitattributes	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/.gitattributes	2018-01-03 02:32:30.000000000 +0000
@@ -15,11 +15,8 @@ ext/dba/libflatfile/flatfile.c  ident
 ext/dba/libcdb/cdb_make.c       ident
 ext/dba/libcdb/cdb.c            ident
 ext/filter/filter.c             ident
-ext/zip/php_zip.c               ident
 README.input_filter             ident
 run-tests.php                   ident
-sapi/nsapi/nsapi.c              ident
-sapi/continuity/capi.c          ident
 Zend/RFCs/002.txt               ident
 Zend/RFCs/003.txt               ident
 ext/exif/exif.c                 ident
@@ -32,7 +29,6 @@ UPGRADING.INTERNALS             merge=NE
 /ext/bz2/tests/with_strings.phpt	-crlf
 /ext/dom/tests/bug40836.phpt	-crlf
 /ext/dom/tests/domelement.phpt	-crlf
-/ext/ereg/tests/eregi_basic_002.phpt	-crlf
 /ext/iconv/tests/iconv004.phpt	-crlf
 /ext/iconv/tests/iconv_basic.phpt	-crlf
 /ext/iconv/tests/iconv_strpos.phpt	-crlf
diff -pruN 7.1.8-1/.gitignore 7.1.13-1/.gitignore
--- 7.1.8-1/.gitignore	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/.gitignore	2018-01-03 02:32:21.000000000 +0000
@@ -262,9 +262,7 @@ pear/phpize
 pear/run-tests
 pear/php-config
 pear/scripts
-sapi/apache/libphp7.module
 sapi/apache2handler/libphp7.module
-sapi/apache_hooks/libphp7.module
 sapi/cgi/php-cgi
 sapi/cgi/php-cgi.1
 sapi/cli/php.1
diff -pruN 7.1.8-1/main/main.c 7.1.13-1/main/main.c
--- 7.1.8-1/main/main.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/main/main.c	2018-01-03 02:32:22.000000000 +0000
@@ -92,6 +92,8 @@
 #include "SAPI.h"
 #include "rfc1867.h"
 
+#include "ext/standard/html_tables.h"
+
 #if HAVE_MMAP || defined(PHP_WIN32)
 # if HAVE_UNISTD_H
 #  include <unistd.h>
@@ -124,6 +126,31 @@ PHPAPI int core_globals_id;
 
 #define SAFE_FILENAME(f) ((f)?(f):"-")
 
+static char *get_safe_charset_hint(void) {
+	ZEND_TLS char *lastHint = NULL;
+	ZEND_TLS char *lastCodeset = NULL;
+	char *hint = SG(default_charset);
+	size_t len = strlen(hint);
+	size_t i = 0;
+
+	if (lastHint == SG(default_charset)) {
+		return lastCodeset;
+	}
+
+	lastHint = hint;
+	lastCodeset = NULL;
+
+	for (i = 0; i < sizeof(charset_map)/sizeof(charset_map[0]); i++) {
+		if (len == charset_map[i].codeset_len
+			&& zend_binary_strcasecmp(hint, len, charset_map[i].codeset, len) == 0) {
+			lastCodeset = (char*)charset_map[i].codeset;
+			break;
+		}
+	}
+
+	return lastCodeset;
+}
+
 /* {{{ PHP_INI_MH
  */
 static PHP_INI_MH(OnSetPrecision)
@@ -249,17 +276,17 @@ static void php_disable_classes(void)
  */
 static void php_binary_init(void)
 {
-	char *binary_location;
+	char *binary_location = NULL;
 #ifdef PHP_WIN32
 	binary_location = (char *)malloc(MAXPATHLEN);
-	if (GetModuleFileName(0, binary_location, MAXPATHLEN) == 0) {
+	if (binary_location && GetModuleFileName(0, binary_location, MAXPATHLEN) == 0) {
 		free(binary_location);
 		PG(php_binary) = NULL;
 	}
 #else
 	if (sapi_module.executable_location) {
 		binary_location = (char *)malloc(MAXPATHLEN);
-		if (!strchr(sapi_module.executable_location, '/')) {
+		if (binary_location && !strchr(sapi_module.executable_location, '/')) {
 			char *envpath, *path;
 			int found = 0;
 
@@ -289,8 +316,6 @@ static void php_binary_init(void)
 			free(binary_location);
 			binary_location = NULL;
 		}
-	} else {
-		binary_location = NULL;
 	}
 #endif
 	PG(php_binary) = binary_location;
@@ -762,10 +787,10 @@ PHPAPI ZEND_COLD void php_verror(const c
 	buffer_len = (int)vspprintf(&buffer, 0, format, args);
 
 	if (PG(html_errors)) {
-		replace_buffer = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT, NULL);
+		replace_buffer = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT, get_safe_charset_hint());
 		/* Retry with substituting invalid chars on fail. */
 		if (!replace_buffer || ZSTR_LEN(replace_buffer) < 1) {
-			replace_buffer = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT | ENT_HTML_SUBSTITUTE_ERRORS, NULL);
+			replace_buffer = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT | ENT_HTML_SUBSTITUTE_ERRORS, get_safe_charset_hint());
 		}
 
 		efree(buffer);
@@ -832,7 +857,7 @@ PHPAPI ZEND_COLD void php_verror(const c
 	}
 
 	if (PG(html_errors)) {
-		replace_origin = php_escape_html_entities((unsigned char*)origin, origin_len, 0, ENT_COMPAT, NULL);
+		replace_origin = php_escape_html_entities((unsigned char*)origin, origin_len, 0, ENT_COMPAT, get_safe_charset_hint());
 		efree(origin);
 		origin = ZSTR_VAL(replace_origin);
 	}
@@ -1154,7 +1179,7 @@ static ZEND_COLD void php_error_cb(int t
 
 				if (PG(html_errors)) {
 					if (type == E_ERROR || type == E_PARSE) {
-						zend_string *buf = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT, NULL);
+						zend_string *buf = php_escape_html_entities((unsigned char*)buffer, buffer_len, 0, ENT_COMPAT, get_safe_charset_hint());
 						php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%d</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, ZSTR_VAL(buf), error_filename, error_lineno, STR_PRINT(append_string));
 						zend_string_free(buf);
 					} else {
@@ -1221,9 +1246,7 @@ static ZEND_COLD void php_error_cb(int t
 					sapi_header_op(SAPI_HEADER_REPLACE, &ctr);
 				}
 				/* the parser would return 1 (failure), we can bail out nicely */
-				if (type == E_PARSE) {
-					CG(parse_error) = 0;
-				} else {
+				if (type != E_PARSE) {
 					/* restore memory limit */
 					zend_set_memory_limit(PG(memory_limit));
 					efree(buffer);
@@ -1637,7 +1660,9 @@ int php_request_startup(void)
 		zend_activate();
 		sapi_activate();
 
+#ifdef ZEND_SIGNALS
 		zend_signal_activate();
+#endif
 
 		if (PG(max_input_time) == -1) {
 			zend_set_timeout(EG(timeout_seconds), 1);
@@ -2107,6 +2132,7 @@ int php_module_startup(sapi_module_struc
 	ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor) php_win32_core_globals_ctor, (ts_allocate_dtor) php_win32_core_globals_dtor);
 #endif
 #else
+	memset(&core_globals, 0, sizeof(core_globals));
 	php_startup_ticks();
 #endif
 	gc_globals_ctor();
@@ -2220,6 +2246,20 @@ int php_module_startup(sapi_module_struc
 	/* Register Zend ini entries */
 	zend_register_standard_ini_entries();
 
+#ifdef ZEND_WIN32
+	/* Until the current ini values was setup, the current cp is 65001.
+		If the actual ini vaues are different, some stuff needs to be updated.
+		It concerns at least main_cwd_state and there might be more. As we're
+		still in the startup phase, lets use the chance and reinit the relevant
+		item according to the current codepage. Still, if ini_set() is used
+		later on, a more intelligent way to update such stuff is needed.
+		Startup/shutdown routines could involve touching globals and thus
+		can't always be used on demand. */
+	if (!php_win32_cp_use_unicode()) {
+		virtual_cwd_main_cwd_init(1);
+	}
+#endif
+
 	/* Disable realpath cache if an open_basedir is set */
 	if (PG(open_basedir) && *PG(open_basedir)) {
 		CWDG(realpath_cache_size_limit) = 0;
diff -pruN 7.1.8-1/main/php_config.h.in 7.1.13-1/main/php_config.h.in
--- 7.1.8-1/main/php_config.h.in	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/main/php_config.h.in	2018-01-03 02:32:22.000000000 +0000
@@ -1647,6 +1647,9 @@
 /* */
 #undef HAVE_SQLITE3
 
+/* have sqlite3_errstr function */
+#undef HAVE_SQLITE3_ERRSTR
+
 /* have commercial sqlite3 with crypto support */
 #undef HAVE_SQLITE3_KEY
 
diff -pruN 7.1.8-1/main/php_version.h 7.1.13-1/main/php_version.h
--- 7.1.8-1/main/php_version.h	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/main/php_version.h	2018-01-03 02:32:22.000000000 +0000
@@ -2,7 +2,7 @@
 /* edit configure.in to change version number */
 #define PHP_MAJOR_VERSION 7
 #define PHP_MINOR_VERSION 1
-#define PHP_RELEASE_VERSION 8
+#define PHP_RELEASE_VERSION 13
 #define PHP_EXTRA_VERSION ""
-#define PHP_VERSION "7.1.8"
-#define PHP_VERSION_ID 70108
+#define PHP_VERSION "7.1.13"
+#define PHP_VERSION_ID 70113
diff -pruN 7.1.8-1/main/SAPI.c 7.1.13-1/main/SAPI.c
--- 7.1.8-1/main/SAPI.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/main/SAPI.c	2018-01-03 02:32:22.000000000 +0000
@@ -1027,6 +1027,12 @@ SAPI_API char *sapi_getenv(char *name, s
 		char *value, *tmp = sapi_module.getenv(name, name_len);
 		if (tmp) {
 			value = estrdup(tmp);
+#ifdef PHP_WIN32
+			if (strlen(sapi_module.name) == sizeof("cgi-fcgi") - 1 && !strcmp(sapi_module.name, "cgi-fcgi")) {
+				/* XXX more modules to go, if needed. */
+				free(tmp);
+			}
+#endif
 		} else {
 			return NULL;
 		}
diff -pruN 7.1.8-1/main/streams/userspace.c 7.1.13-1/main/streams/userspace.c
--- 7.1.8-1/main/streams/userspace.c	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/main/streams/userspace.c	2018-01-03 02:32:22.000000000 +0000
@@ -283,6 +283,11 @@ typedef struct _php_userstream_data php_
 
 static void user_stream_create_object(struct php_user_stream_wrapper *uwrap, php_stream_context *context, zval *object)
 {
+	if (uwrap->ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
+		ZVAL_UNDEF(object);
+		return;
+	}
+
 	/* create an instance of our class */
 	object_init_ex(object, uwrap->ce);
 
diff -pruN 7.1.8-1/Makefile.global 7.1.13-1/Makefile.global
--- 7.1.8-1/Makefile.global	2017-08-01 17:36:57.000000000 +0000
+++ 7.1.13-1/Makefile.global	2018-01-03 02:32:22.000000000 +0000
@@ -5,7 +5,7 @@ INSTALL_DATA = $(INSTALL) -m 644
 DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
 COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
 
-all: $(all_targets) 
+all: $(all_targets)
 	@echo
 	@echo "Build complete."
 	@echo "Don't forget to run 'make test'."
@@ -112,13 +112,13 @@ test: all
 clean:
 	find . -name \*.gcno -o -name \*.gcda | xargs rm -f
 	find . -name \*.lo -o -name \*.o | xargs rm -f
-	find . -name \*.la -o -name \*.a | xargs rm -f 
+	find . -name \*.la -o -name \*.a | xargs rm -f
 	find . -name \*.so | xargs rm -f
 	find . -name .libs -a -type d|xargs rm -rf
 	rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
 
 distclean: clean
-	rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module sapi/apache_hooks/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
+	rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
 	rm -f php7.spec main/build-defs.h scripts/phpize
 	rm -f ext/date/lib/timelib_config.h ext/mbstring/oniguruma/config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
 	rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 ext/phar/phar.1 ext/phar/phar.phar.1
@@ -135,7 +135,7 @@ prof-gen:
 
 prof-clean:
 	find . -name \*.lo -o -name \*.o | xargs rm -f
-	find . -name \*.la -o -name \*.a | xargs rm -f 
+	find . -name \*.la -o -name \*.a | xargs rm -f
 	find . -name \*.so | xargs rm -f
 	rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
 
diff -pruN 7.1.8-1/NEWS 7.1.13-1/NEWS
--- 7.1.8-1/NEWS	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/NEWS	2018-01-03 02:32:21.000000000 +0000
@@ -1,5 +1,290 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+04 Jan 2018, PHP 7.1.13
+
+
+- Core:
+  . Fixed bug #75573 (Segmentation fault in 7.1.12 and 7.0.26). (Laruence)
+  . Fixed bug #75384 (PHP seems incompatible with OneDrive files on demand).
+    (Anatol)
+  . Fixed bug #74862 (Unable to clone instance when private __clone defined).
+    (Daniel Ciochiu)
+  . Fixed bug #75074 (php-process crash when is_file() is used with strings
+    longer 260 chars). (Anatol)
+
+- CLI Server:
+  . Fixed bug #60471 (Random "Invalid request (unexpected EOF)" using a router
+    script). (SammyK)
+  . Fixed bug #73830 (Directory does not exist). (Anatol)
+
+- FPM:
+  . Fixed bug #64938 (libxml_disable_entity_loader setting is shared between
+    requests). (Remi)
+
+- GD:
+  . Fixed bug #75571 (Potential infinite loop in gdImageCreateFromGifCtx).
+    (Christoph)
+
+- Opcache:
+  . Fixed bug #75608 ("Narrowing occurred during type inference" error).
+    (Laruence, Dmitry)
+  . Fixed bug #75579 (Interned strings buffer overflow may cause crash).
+    (Dmitry)
+  . Fixed bug #75570 ("Narrowing occurred during type inference" error).
+    (Dmitry)
+
+- PCRE:
+  . Fixed bug #74183 (preg_last_error not returning error code after error).
+    (Andrew Nester)
+
+- Phar:
+  . Fixed bug #74782 (remove file name from output to avoid XSS). (stas)
+
+- Standard:
+  . Fixed bug #75511 (fread not free unused buffer). (Laruence)
+  . Fixed bug #75514 (mt_rand returns value outside [$min,$max]+ on 32-bit)
+    (Remi)
+  . Fixed bug #75535 (Inappropriately parsing HTTP response leads to PHP
+    segment fault). (Nikita)
+  . Fixed bug #75409 (accept EFAULT in addition to ENOSYS as indicator 
+    that getrandom() is missing). (sarciszewski)
+  . Fixed bug #73124 (php_ini_scanned_files() not reporting correctly).
+    (John Stevenson)
+  . Fixed bug #75574 (putenv does not work properly if parameter contains
+    non-ASCII unicode character). (Anatol)
+
+- Zip:
+  . Fixed bug #75540 (Segfault with libzip 1.3.1). (Remi)
+
+23 Nov 2017, PHP 7.1.12
+
+- Core:
+  . Fixed bug #75420 (Crash when modifing property name in __isset for
+    BP_VAR_IS). (Laruence)
+  . Fixed bug #75368 (mmap/munmap trashing on unlucky allocations). (Nikita,
+    Dmitry)
+
+- CLI:
+  . Fixed bug #75287 (Builtin webserver crash after chdir in a shutdown
+    function). (Laruence)
+
+- Enchant:
+  . Fixed bug #53070 (enchant_broker_get_path crashes if no path is set). (jelle
+    van der Waa, cmb)
+  . Fixed bug #75365 (Enchant still reports version 1.1.0). (cmb)
+
+- Exif:
+  . Fixed bug #75301 (Exif extension has built in revision version). (Peter
+    Kokot)
+
+- GD:
+  . Fixed bug #65148 (imagerotate may alter image dimensions). (cmb)
+  . Fixed bug #75437 (Wrong reflection on imagewebp). (Fabien Villepinte)
+
+- intl:
+  . Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead 
+    of destination). (andrewnester)
+
+- interbase:
+  . Fixed bug #75453 (Incorrect reflection for ibase_[p]connect). (villfa)
+
+- Mysqli:
+  . Fixed bug #75434 (Wrong reflection for mysqli_fetch_all function). (Fabien
+    Villepinte)
+
+- OCI8:
+  . Fixed valgrind issue. (Tianfang Yang)
+
+- OpenSSL:
+  . Fixed bug #75363 (openssl_x509_parse leaks memory). (Bob, Jakub Zelenka)
+  . Fixed bug #75307 (Wrong reflection for openssl_open function). (villfa)
+
+- Opcache:
+  . Fixed bug #75373 (Warning Internal error: wrong size calculation). (Laruence, Dmitry)
+
+- PGSQL:
+  . Fixed bug #75419 (Default link incorrectly cleared/linked by pg_close()). (Sara)
+
+- SOAP:
+  . Fixed bug #75464 (Wrong reflection on SoapClient::__setSoapHeaders). (villfa)
+
+- Zlib:
+  . Fixed bug #75299 (Wrong reflection on inflate_init and inflate_add). (Fabien
+    Villepinte)
+
+26 Oct 2017, PHP 7.1.11
+
+- Core:
+  . Fixed bug #75241 (Null pointer dereference in zend_mm_alloc_small()).
+    (Laruence)
+  . Fixed bug #75236 (infinite loop when printing an error-message). (Andrea)
+  . Fixed bug #75252 (Incorrect token formatting on two parse errors in one
+    request). (Nikita)
+  . Fixed bug #75220 (Segfault when calling is_callable on parent). 
+    (andrewnester)
+  . Fixed bug #75290 (debug info of Closures of internal functions contain
+    garbage argument names). (Andrea)
+
+- Apache2Handler:
+  . Fixed bug #75311 (error: 'zend_hash_key' has no member named 'arKey' in
+    apache2handler). (mcarbonneaux)
+
+- Date:
+  . Fixed bug #75055 (Out-Of-Bounds Read in timelib_meridian()). (Derick)
+
+- Hash:
+  . Fixed bug #75303 (sha3 hangs on bigendian). (Remi)
+
+- Intl:
+  . Fixed bug #75318 (The parameter of UConverter::getAliases() is not
+    optional). (cmb)
+
+- litespeed:
+  . Fixed bug #75248 (Binary directory doesn't get created when building 
+    only litespeed SAPI). (petk)
+  . Fixed bug #75251 (Missing program prefix and suffix). (petk)
+
+- mcrypt:
+  . Fixed bug #72535 (arcfour encryption stream filter crashes php). (Leigh)
+
+- MySQLi:
+  . Fixed bug #75018 (Data corruption when reading fields of bit type). (Anatol)
+
+- OCI8:
+  . Fixed incorrect reference counting. (Dmitry, Tianfang Yang)
+
+- Opcache
+  . Fixed bug #75255 (Request hangs and not finish). (Dmitry)
+
+- PCRE:
+  . Fixed bug #75207 (applied upstream patch for CVE-2016-1283). (Anatol)
+
+- PDO_mysql:
+  . Fixed bug #75177 (Type 'bit' is fetched as unexpected string). (Anatol)
+
+- SPL:
+  . Fixed bug #73629 (SplDoublyLinkedList::setIteratorMode masks intern flags).
+    (J. Jeising, cmb)
+
+28 Sep 2017, PHP 7.1.10
+
+- Core:
+  . Fixed bug #75042 (run-tests.php issues with EXTENSION block). (John Boehr)
+
+- BCMath:
+  . Fixed bug #44995 (bcpowmod() fails if scale != 0). (cmb)
+  . Fixed bug #46781 (BC math handles minus zero incorrectly). (cmb)
+  . Fixed bug #54598 (bcpowmod() may return 1 if modulus is 1). (okano1220, cmb)
+  . Fixed bug #75178 (bcpowmod() misbehaves for non-integer base or modulus). (cmb)
+
+- CLI server:
+  . Fixed bug #70470 (Built-in server truncates headers spanning over TCP
+    packets). (bouk)
+
+- CURL:
+  . Fixed bug #75093 (OpenSSL support not detected). (Remi)
+
+- GD:
+  . Fixed bug #75124 (gdImageGrayScale() may produce colors). (cmb)
+  . Fixed bug #75139 (libgd/gd_interpolation.c:1786: suspicious if ?). (cmb)
+
+- Gettext:
+  . Fixed bug #73730 (textdomain(null) throws in strict mode). (cmb)
+
+- Intl:
+  . Fixed bug #75090 (IntlGregorianCalendar doesn't have constants from parent
+    class). (tpunt)
+  . Fixed bug #75193 (segfault in collator_convert_object_to_string). (Remi)
+
+- PDO_OCI:
+  . Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized
+    before PHP-FPM sets it up). (Ingmar Runge)
+
+- SPL:
+  . Fixed bug #75155 (AppendIterator::append() is broken when appending another
+    AppendIterator). (Nikita)
+  . Fixed bug #75173 (incorrect behavior of AppendIterator::append in foreach loop).
+    (jhdxr)
+
+- Standard:
+  . Fixed bug #75152 (signed integer overflow in parse_iv). (Laruence)
+  . Fixed bug #75097 (gethostname fails if your host name is 64 chars long). (Andrea)
+
+31 Aug 2017, PHP 7.1.9
+
+- Core:
+  . Fixed bug #74947 (Segfault in scanner on INF number). (Laruence)
+  . Fixed bug #74954 (null deref and segfault in zend_generator_resume()). (Bob)
+  . Fixed bug #74725 (html_errors=1 breaks unhandled exceptions). (Andrea)
+  . Fixed bug #75063 (Main CWD initialized with wrong codepage). (Anatol)
+  . Fixed bug #75349 (NAN comparison). (Sara)
+
+- cURL:
+  . Fixed bug #74125 (Fixed finding CURL on systems with multiarch support).
+    (cebe)
+
+- Date:
+  . Fixed bug #75002 (Null Pointer Dereference in timelib_time_clone). (Derick)
+
+- Intl:
+  . Fixed bug #74993 (Wrong reflection on some locale_* functions). (Sara)
+
+- Mbstring:
+  . Fixed bug #71606 (Segmentation fault mb_strcut with HTML-ENTITIES encoding).
+    (cmb)
+  . Fixed bug #62934 (mb_convert_kana() does not convert iteration marks).
+    (Nikita)
+  . Fixed bug #75001 (Wrong reflection on mb_eregi_replace). (Fabien
+    Villepinte)
+
+- MySQLi:
+  . Fixed bug #74968 (PHP crashes when calling mysqli_result::fetch_object with
+    an abstract class). (Anatol)
+
+- OCI8:
+  . Expose oci_unregister_taf_callback() (Tianfang Yang)
+
+- Opcache:
+  . Fixed bug #74980 (Narrowing occurred during type inference). (Laruence)
+
+- phar:
+  . Fixed bug #74991 (include_path has a 4096 char limit in some cases).
+    (bwbroersma)
+
+- Reflection:
+  . Fixed bug #74949 (null pointer dereference in _function_string). (Laruence)
+
+- Session:
+  . Fixed bug #74892 (Url Rewriting (trans_sid) not working on urls that start
+    with "#"). (Andrew Nester)
+  . Fixed bug #74833 (SID constant created with wrong module number). (Anatol)
+
+- SimpleXML:
+  . Fixed bug #74950 (nullpointer deref in simplexml_element_getDocNamespaces).
+    (Laruence)
+
+- SPL:
+  . Fixed bug #75049 (spl_autoload_unregister can't handle
+    spl_autoload_functions results). (Laruence)
+  . Fixed bug #74669 (Unserialize ArrayIterator broken). (Andrew Nester)
+  . Fixed bug #74977 (Appending AppendIterator leads to segfault). 
+    (Andrew Nester)
+  . Fixed bug #75015 (Crash in recursive iterator destructors). (Julien)
+
+- Standard:
+  . Fixed bug #75075 (unpack with X* causes infinity loop). (Laruence)
+  . Fixed bug #74103 (heap-use-after-free when unserializing invalid array
+    size). (Nikita)
+  . Fixed bug #75054 (A Denial of Service Vulnerability was found when
+    performing deserialization). (Nikita)
+
+- WDDX:
+  . Fixed bug #73793 (WDDX uses wrong decimal seperator). (cmb)
+
+- XMLRPC:
+  . Fixed bug #74975 (Incorrect xmlrpc serialization for classes with declared
+    properties). (blar)
+
 03 Aug 2017, PHP 7.1.8
 
 - Core:
diff -pruN 7.1.8-1/.pc/0001-libtool_fixes.patch/configure.in 7.1.13-1/.pc/0001-libtool_fixes.patch/configure.in
--- 7.1.8-1/.pc/0001-libtool_fixes.patch/configure.in	2017-08-01 17:36:48.000000000 +0000
+++ 7.1.13-1/.pc/0001-libtool_fixes.patch/configure.in	2018-01-03 02:32:22.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 7.1.8-1/.pc/0003-debian_quirks.patch/configure.in 7.1.13-1/.pc/0003-debian_quirks.patch/configure.in
--- 7.1.8-1/.pc/0003-debian_quirks.patch/configure.in	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/.pc/0003-debian_quirks.patch/configure.in	2018-01-05 15:39:53.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 7.1.8-1/.pc/0003-debian_quirks.patch/sapi/cli/php.1.in 7.1.13-1/.pc/0003-debian_quirks.patch/sapi/cli/php.1.in
--- 7.1.8-1/.pc/0003-debian_quirks.patch/sapi/cli/php.1.in	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/.pc/0003-debian_quirks.patch/sapi/cli/php.1.in	2018-01-03 02:32:21.000000000 +0000
@@ -1,4 +1,4 @@
-.TH @program_prefix@php 1 "2016" "The PHP Group" "Scripting Language"
+.TH @program_prefix@php 1 "2017" "The PHP Group" "Scripting Language"
 .SH NAME
 @program_prefix@php \- PHP Command Line Interface 'CLI'
 .P
@@ -454,7 +454,7 @@ contributors all around the world.
 .SH VERSION INFORMATION
 This manpage describes \fBphp\fP, version @PHP_VERSION@.
 .SH COPYRIGHT
-Copyright \(co 1997\-2016 The PHP Group
+Copyright \(co 1997\-2017 The PHP Group
 .LP
 This source file is subject to version 3.01 of the PHP license,
 that is bundled with this package in the file LICENSE, and is
diff -pruN 7.1.8-1/.pc/0006-php-5.4.9-phpinfo.patch/ext/standard/info.c 7.1.13-1/.pc/0006-php-5.4.9-phpinfo.patch/ext/standard/info.c
--- 7.1.8-1/.pc/0006-php-5.4.9-phpinfo.patch/ext/standard/info.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/.pc/0006-php-5.4.9-phpinfo.patch/ext/standard/info.c	2018-01-03 02:32:25.000000000 +0000
@@ -1395,7 +1395,7 @@ PHP_FUNCTION(php_ini_scanned_files)
 		return;
 	}
 
-	if (strlen(PHP_CONFIG_FILE_SCAN_DIR) && php_ini_scanned_files) {
+	if (php_ini_scanned_files) {
 		RETURN_STRING(php_ini_scanned_files);
 	} else {
 		RETURN_FALSE;
diff -pruN 7.1.8-1/.pc/0007-extension_api.patch/configure.in 7.1.13-1/.pc/0007-extension_api.patch/configure.in
--- 7.1.8-1/.pc/0007-extension_api.patch/configure.in	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/.pc/0007-extension_api.patch/configure.in	2018-01-05 15:39:53.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 7.1.8-1/.pc/0018-session_save_path.patch/ext/session/session.c 7.1.13-1/.pc/0018-session_save_path.patch/ext/session/session.c
--- 7.1.8-1/.pc/0018-session_save_path.patch/ext/session/session.c	2017-08-01 17:36:52.000000000 +0000
+++ 7.1.13-1/.pc/0018-session_save_path.patch/ext/session/session.c	2018-01-03 02:32:30.000000000 +0000
@@ -99,6 +99,9 @@ zend_class_entry *php_session_update_tim
 static void php_session_send_cookie(void);
 static void php_session_abort(void);
 
+/* Initialized in MINIT, readonly otherwise. */
+static int my_module_number = 0;
+
 /* Dispatched by RINIT and by php_session_destroy */
 static inline void php_rinit_session_globals(void) /* {{{ */
 {
@@ -111,6 +114,7 @@ static inline void php_rinit_session_glo
 	PS(mod_user_is_open) = 0;
 	PS(define_sid) = 1;
 	PS(session_vars) = NULL;
+	PS(module_number) = my_module_number;
 	ZVAL_UNDEF(&PS(http_session_vars));
 }
 /* }}} */
@@ -2620,7 +2624,8 @@ static PHP_MINIT_FUNCTION(session) /* {{
 
 	zend_register_auto_global(zend_string_init("_SESSION", sizeof("_SESSION") - 1, 1), 0, NULL);
 
-	PS(module_number) = module_number; /* if we really need this var we need to init it in zts mode as well! */
+	my_module_number = module_number;
+	PS(module_number) = module_number;
 
 	PS(session_status) = php_session_none;
 	REGISTER_INI_ENTRIES();
diff -pruN 7.1.8-1/.pc/0019-php-fpm-man-section-and-cleanup.patch/sapi/fpm/php-fpm.8.in 7.1.13-1/.pc/0019-php-fpm-man-section-and-cleanup.patch/sapi/fpm/php-fpm.8.in
--- 7.1.8-1/.pc/0019-php-fpm-man-section-and-cleanup.patch/sapi/fpm/php-fpm.8.in	2017-08-01 17:36:55.000000000 +0000
+++ 7.1.13-1/.pc/0019-php-fpm-man-section-and-cleanup.patch/sapi/fpm/php-fpm.8.in	2018-01-03 02:32:21.000000000 +0000
@@ -1,4 +1,4 @@
-.TH PHP-FPM 8 "2016" "The PHP Group" "Scripting Language"
+.TH PHP-FPM 8 "2017" "The PHP Group" "Scripting Language"
 .SH NAME
 .TP 15
 php-fpm \- PHP FastCGI Process Manager 'PHP-FPM'
@@ -213,7 +213,7 @@ contributors all around the world.
 .SH VERSION INFORMATION
 This manpage describes \fBphp-fpm\fP, version @PHP_VERSION@.
 .SH COPYRIGHT
-Copyright \(co 1997\-2016 The PHP Group
+Copyright \(co 1997\-2017 The PHP Group
 .PD 0
 .P
 Copyright (c) 2007-2009, Andrei Nigmatulin
diff -pruN 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in
--- 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in	2018-01-05 15:39:51.000000000 +0000
+++ 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in	2018-01-05 15:39:53.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=7
 PHP_MINOR_VERSION=1
-PHP_RELEASE_VERSION=8
+PHP_RELEASE_VERSION=13
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/interbase/interbase.c 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/interbase/interbase.c
--- 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/interbase/interbase.c	2017-08-01 17:36:49.000000000 +0000
+++ 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/interbase/interbase.c	2018-01-03 02:32:26.000000000 +0000
@@ -53,7 +53,7 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO(arginfo_ibase_errcode, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_connect, 0, 0, 0)
 	ZEND_ARG_INFO(0, database)
 	ZEND_ARG_INFO(0, username)
 	ZEND_ARG_INFO(0, password)
@@ -63,7 +63,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_con
 	ZEND_ARG_INFO(0, role)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ibase_pconnect, 0, 0, 0)
 	ZEND_ARG_INFO(0, database)
 	ZEND_ARG_INFO(0, username)
 	ZEND_ARG_INFO(0, password)
@@ -1030,7 +1030,7 @@ static void _php_ibase_connect(INTERNAL_
 }
 /* }}} */
 
-/* {{{ proto resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
+/* {{{ proto resource ibase_connect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
    Open a connection to an InterBase database */
 PHP_FUNCTION(ibase_connect)
 {
@@ -1038,7 +1038,7 @@ PHP_FUNCTION(ibase_connect)
 }
 /* }}} */
 
-/* {{{ proto resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])
+/* {{{ proto resource ibase_pconnect([string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]])
    Open a persistent connection to an InterBase database */
 PHP_FUNCTION(ibase_pconnect)
 {
diff -pruN 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/standard/file.c 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/standard/file.c
--- 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/standard/file.c	2017-08-01 17:36:51.000000000 +0000
+++ 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/ext/standard/file.c	2018-01-03 02:32:25.000000000 +0000
@@ -1771,6 +1771,10 @@ PHPAPI PHP_FUNCTION(fread)
 
 	/* needed because recv/read/gzread doesnt put a null at the end*/
 	Z_STRVAL_P(return_value)[Z_STRLEN_P(return_value)] = 0;
+
+	if (Z_STRLEN_P(return_value) < len / 2) {
+		Z_STR_P(return_value) = zend_string_truncate(Z_STR_P(return_value), Z_STRLEN_P(return_value), 0);
+	}
 }
 /* }}} */
 
diff -pruN 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/Zend/zend_language_parser.c 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/Zend/zend_language_parser.c
--- 7.1.8-1/.pc/0026-php-5.3.9-gnusrc.patch/Zend/zend_language_parser.c	2017-08-01 17:36:57.000000000 +0000
+++ 7.1.13-1/.pc/0026-php-5.3.9-gnusrc.patch/Zend/zend_language_parser.c	2018-01-03 02:32:30.000000000 +0000
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-   
+
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "3.0.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -63,11 +63,10 @@
 #define yyparse         zendparse
 #define yylex           zendlex
 #define yyerror         zenderror
-#define yylval          zendlval
-#define yychar          zendchar
 #define yydebug         zenddebug
 #define yynerrs         zendnerrs
 
+
 /* Copy the first part of user declarations.  */
 
 
@@ -116,11 +115,11 @@ static YYSIZE_T zend_yytnamerr(char*, co
 
 
 
-# ifndef YY_NULL
+# ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
+#   define YY_NULLPTR nullptr
 #  else
-#   define YY_NULL 0
+#   define YY_NULLPTR 0
 #  endif
 # endif
 
@@ -136,7 +135,7 @@ static YYSIZE_T zend_yytnamerr(char*, co
    by #include "zend_language_parser.h".  */
 #ifndef YY_ZEND_ZEND_ZEND_LANGUAGE_PARSER_H_INCLUDED
 # define YY_ZEND_ZEND_ZEND_LANGUAGE_PARSER_H_INCLUDED
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -149,158 +148,156 @@ extern int zenddebug;
 
 
 
-
-/* Tokens.  */
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     END = 0,
-     T_REQUIRE_ONCE = 258,
-     T_REQUIRE = 259,
-     T_EVAL = 260,
-     T_INCLUDE_ONCE = 261,
-     T_INCLUDE = 262,
-     T_LOGICAL_OR = 263,
-     T_LOGICAL_XOR = 264,
-     T_LOGICAL_AND = 265,
-     T_PRINT = 266,
-     T_YIELD = 267,
-     T_DOUBLE_ARROW = 268,
-     T_YIELD_FROM = 269,
-     T_POW_EQUAL = 270,
-     T_SR_EQUAL = 271,
-     T_SL_EQUAL = 272,
-     T_XOR_EQUAL = 273,
-     T_OR_EQUAL = 274,
-     T_AND_EQUAL = 275,
-     T_MOD_EQUAL = 276,
-     T_CONCAT_EQUAL = 277,
-     T_DIV_EQUAL = 278,
-     T_MUL_EQUAL = 279,
-     T_MINUS_EQUAL = 280,
-     T_PLUS_EQUAL = 281,
-     T_COALESCE = 282,
-     T_BOOLEAN_OR = 283,
-     T_BOOLEAN_AND = 284,
-     T_SPACESHIP = 285,
-     T_IS_NOT_IDENTICAL = 286,
-     T_IS_IDENTICAL = 287,
-     T_IS_NOT_EQUAL = 288,
-     T_IS_EQUAL = 289,
-     T_IS_GREATER_OR_EQUAL = 290,
-     T_IS_SMALLER_OR_EQUAL = 291,
-     T_SR = 292,
-     T_SL = 293,
-     T_INSTANCEOF = 294,
-     T_UNSET_CAST = 295,
-     T_BOOL_CAST = 296,
-     T_OBJECT_CAST = 297,
-     T_ARRAY_CAST = 298,
-     T_STRING_CAST = 299,
-     T_DOUBLE_CAST = 300,
-     T_INT_CAST = 301,
-     T_DEC = 302,
-     T_INC = 303,
-     T_POW = 304,
-     T_CLONE = 305,
-     T_NEW = 306,
-     T_NOELSE = 307,
-     T_ELSEIF = 308,
-     T_ELSE = 309,
-     T_ENDIF = 310,
-     T_PUBLIC = 311,
-     T_PROTECTED = 312,
-     T_PRIVATE = 313,
-     T_FINAL = 314,
-     T_ABSTRACT = 315,
-     T_STATIC = 316,
-     T_LNUMBER = 317,
-     T_DNUMBER = 318,
-     T_STRING = 319,
-     T_VARIABLE = 320,
-     T_INLINE_HTML = 321,
-     T_ENCAPSED_AND_WHITESPACE = 322,
-     T_CONSTANT_ENCAPSED_STRING = 323,
-     T_STRING_VARNAME = 324,
-     T_NUM_STRING = 325,
-     T_EXIT = 326,
-     T_IF = 327,
-     T_ECHO = 328,
-     T_DO = 329,
-     T_WHILE = 330,
-     T_ENDWHILE = 331,
-     T_FOR = 332,
-     T_ENDFOR = 333,
-     T_FOREACH = 334,
-     T_ENDFOREACH = 335,
-     T_DECLARE = 336,
-     T_ENDDECLARE = 337,
-     T_AS = 338,
-     T_SWITCH = 339,
-     T_ENDSWITCH = 340,
-     T_CASE = 341,
-     T_DEFAULT = 342,
-     T_BREAK = 343,
-     T_CONTINUE = 344,
-     T_GOTO = 345,
-     T_FUNCTION = 346,
-     T_CONST = 347,
-     T_RETURN = 348,
-     T_TRY = 349,
-     T_CATCH = 350,
-     T_FINALLY = 351,
-     T_THROW = 352,
-     T_USE = 353,
-     T_INSTEADOF = 354,
-     T_GLOBAL = 355,
-     T_VAR = 356,
-     T_UNSET = 357,
-     T_ISSET = 358,
-     T_EMPTY = 359,
-     T_HALT_COMPILER = 360,
-     T_CLASS = 361,
-     T_TRAIT = 362,
-     T_INTERFACE = 363,
-     T_EXTENDS = 364,
-     T_IMPLEMENTS = 365,
-     T_OBJECT_OPERATOR = 366,
-     T_LIST = 367,
-     T_ARRAY = 368,
-     T_CALLABLE = 369,
-     T_LINE = 370,
-     T_FILE = 371,
-     T_DIR = 372,
-     T_CLASS_C = 373,
-     T_TRAIT_C = 374,
-     T_METHOD_C = 375,
-     T_FUNC_C = 376,
-     T_COMMENT = 377,
-     T_DOC_COMMENT = 378,
-     T_OPEN_TAG = 379,
-     T_OPEN_TAG_WITH_ECHO = 380,
-     T_CLOSE_TAG = 381,
-     T_WHITESPACE = 382,
-     T_START_HEREDOC = 383,
-     T_END_HEREDOC = 384,
-     T_DOLLAR_OPEN_CURLY_BRACES = 385,
-     T_CURLY_OPEN = 386,
-     T_PAAMAYIM_NEKUDOTAYIM = 387,
-     T_NAMESPACE = 388,
-     T_NS_C = 389,
-     T_NS_SEPARATOR = 390,
-     T_ELLIPSIS = 391,
-     T_ERROR = 392
-   };
+  enum yytokentype
+  {
+    END = 0,
+    T_INCLUDE = 258,
+    T_INCLUDE_ONCE = 259,
+    T_EVAL = 260,
+    T_REQUIRE = 261,
+    T_REQUIRE_ONCE = 262,
+    T_LOGICAL_OR = 263,
+    T_LOGICAL_XOR = 264,
+    T_LOGICAL_AND = 265,
+    T_PRINT = 266,
+    T_YIELD = 267,
+    T_DOUBLE_ARROW = 268,
+    T_YIELD_FROM = 269,
+    T_PLUS_EQUAL = 270,
+    T_MINUS_EQUAL = 271,
+    T_MUL_EQUAL = 272,
+    T_DIV_EQUAL = 273,
+    T_CONCAT_EQUAL = 274,
+    T_MOD_EQUAL = 275,
+    T_AND_EQUAL = 276,
+    T_OR_EQUAL = 277,
+    T_XOR_EQUAL = 278,
+    T_SL_EQUAL = 279,
+    T_SR_EQUAL = 280,
+    T_POW_EQUAL = 281,
+    T_COALESCE = 282,
+    T_BOOLEAN_OR = 283,
+    T_BOOLEAN_AND = 284,
+    T_IS_EQUAL = 285,
+    T_IS_NOT_EQUAL = 286,
+    T_IS_IDENTICAL = 287,
+    T_IS_NOT_IDENTICAL = 288,
+    T_SPACESHIP = 289,
+    T_IS_SMALLER_OR_EQUAL = 290,
+    T_IS_GREATER_OR_EQUAL = 291,
+    T_SL = 292,
+    T_SR = 293,
+    T_INSTANCEOF = 294,
+    T_INC = 295,
+    T_DEC = 296,
+    T_INT_CAST = 297,
+    T_DOUBLE_CAST = 298,
+    T_STRING_CAST = 299,
+    T_ARRAY_CAST = 300,
+    T_OBJECT_CAST = 301,
+    T_BOOL_CAST = 302,
+    T_UNSET_CAST = 303,
+    T_POW = 304,
+    T_NEW = 305,
+    T_CLONE = 306,
+    T_NOELSE = 307,
+    T_ELSEIF = 308,
+    T_ELSE = 309,
+    T_ENDIF = 310,
+    T_STATIC = 311,
+    T_ABSTRACT = 312,
+    T_FINAL = 313,
+    T_PRIVATE = 314,
+    T_PROTECTED = 315,
+    T_PUBLIC = 316,
+    T_LNUMBER = 317,
+    T_DNUMBER = 318,
+    T_STRING = 319,
+    T_VARIABLE = 320,
+    T_INLINE_HTML = 321,
+    T_ENCAPSED_AND_WHITESPACE = 322,
+    T_CONSTANT_ENCAPSED_STRING = 323,
+    T_STRING_VARNAME = 324,
+    T_NUM_STRING = 325,
+    T_EXIT = 326,
+    T_IF = 327,
+    T_ECHO = 328,
+    T_DO = 329,
+    T_WHILE = 330,
+    T_ENDWHILE = 331,
+    T_FOR = 332,
+    T_ENDFOR = 333,
+    T_FOREACH = 334,
+    T_ENDFOREACH = 335,
+    T_DECLARE = 336,
+    T_ENDDECLARE = 337,
+    T_AS = 338,
+    T_SWITCH = 339,
+    T_ENDSWITCH = 340,
+    T_CASE = 341,
+    T_DEFAULT = 342,
+    T_BREAK = 343,
+    T_CONTINUE = 344,
+    T_GOTO = 345,
+    T_FUNCTION = 346,
+    T_CONST = 347,
+    T_RETURN = 348,
+    T_TRY = 349,
+    T_CATCH = 350,
+    T_FINALLY = 351,
+    T_THROW = 352,
+    T_USE = 353,
+    T_INSTEADOF = 354,
+    T_GLOBAL = 355,
+    T_VAR = 356,
+    T_UNSET = 357,
+    T_ISSET = 358,
+    T_EMPTY = 359,
+    T_HALT_COMPILER = 360,
+    T_CLASS = 361,
+    T_TRAIT = 362,
+    T_INTERFACE = 363,
+    T_EXTENDS = 364,
+    T_IMPLEMENTS = 365,
+    T_OBJECT_OPERATOR = 366,
+    T_LIST = 367,
+    T_ARRAY = 368,
+    T_CALLABLE = 369,
+    T_LINE = 370,
+    T_FILE = 371,
+    T_DIR = 372,
+    T_CLASS_C = 373,
+    T_TRAIT_C = 374,
+    T_METHOD_C = 375,
+    T_FUNC_C = 376,
+    T_COMMENT = 377,
+    T_DOC_COMMENT = 378,
+    T_OPEN_TAG = 379,
+    T_OPEN_TAG_WITH_ECHO = 380,
+    T_CLOSE_TAG = 381,
+    T_WHITESPACE = 382,
+    T_START_HEREDOC = 383,
+    T_END_HEREDOC = 384,
+    T_DOLLAR_OPEN_CURLY_BRACES = 385,
+    T_CURLY_OPEN = 386,
+    T_PAAMAYIM_NEKUDOTAYIM = 387,
+    T_NAMESPACE = 388,
+    T_NS_C = 389,
+    T_NS_SEPARATOR = 390,
+    T_ELLIPSIS = 391,
+    T_ERROR = 392
+  };
 #endif
 /* Tokens.  */
 #define END 0
-#define T_REQUIRE_ONCE 258
-#define T_REQUIRE 259
+#define T_INCLUDE 258
+#define T_INCLUDE_ONCE 259
 #define T_EVAL 260
-#define T_INCLUDE_ONCE 261
-#define T_INCLUDE 262
+#define T_REQUIRE 261
+#define T_REQUIRE_ONCE 262
 #define T_LOGICAL_OR 263
 #define T_LOGICAL_XOR 264
 #define T_LOGICAL_AND 265
@@ -308,53 +305,53 @@ extern int zenddebug;
 #define T_YIELD 267
 #define T_DOUBLE_ARROW 268
 #define T_YIELD_FROM 269
-#define T_POW_EQUAL 270
-#define T_SR_EQUAL 271
-#define T_SL_EQUAL 272
-#define T_XOR_EQUAL 273
-#define T_OR_EQUAL 274
-#define T_AND_EQUAL 275
-#define T_MOD_EQUAL 276
-#define T_CONCAT_EQUAL 277
-#define T_DIV_EQUAL 278
-#define T_MUL_EQUAL 279
-#define T_MINUS_EQUAL 280
-#define T_PLUS_EQUAL 281
+#define T_PLUS_EQUAL 270
+#define T_MINUS_EQUAL 271
+#define T_MUL_EQUAL 272
+#define T_DIV_EQUAL 273
+#define T_CONCAT_EQUAL 274
+#define T_MOD_EQUAL 275
+#define T_AND_EQUAL 276
+#define T_OR_EQUAL 277
+#define T_XOR_EQUAL 278
+#define T_SL_EQUAL 279
+#define T_SR_EQUAL 280
+#define T_POW_EQUAL 281
 #define T_COALESCE 282
 #define T_BOOLEAN_OR 283
 #define T_BOOLEAN_AND 284
-#define T_SPACESHIP 285
-#define T_IS_NOT_IDENTICAL 286
+#define T_IS_EQUAL 285
+#define T_IS_NOT_EQUAL 286
 #define T_IS_IDENTICAL 287
-#define T_IS_NOT_EQUAL 288
-#define T_IS_EQUAL 289
-#define T_IS_GREATER_OR_EQUAL 290
-#define T_IS_SMALLER_OR_EQUAL 291
-#define T_SR 292
-#define T_SL 293
+#define T_IS_NOT_IDENTICAL 288
+#define T_SPACESHIP 289
+#define T_IS_SMALLER_OR_EQUAL 290
+#define T_IS_GREATER_OR_EQUAL 291
+#define T_SL 292
+#define T_SR 293
 #define T_INSTANCEOF 294
-#define T_UNSET_CAST 295
-#define T_BOOL_CAST 296
-#define T_OBJECT_CAST 297
-#define T_ARRAY_CAST 298
+#define T_INC 295
+#define T_DEC 296
+#define T_INT_CAST 297
+#define T_DOUBLE_CAST 298
 #define T_STRING_CAST 299
-#define T_DOUBLE_CAST 300
-#define T_INT_CAST 301
-#define T_DEC 302
-#define T_INC 303
+#define T_ARRAY_CAST 300
+#define T_OBJECT_CAST 301
+#define T_BOOL_CAST 302
+#define T_UNSET_CAST 303
 #define T_POW 304
-#define T_CLONE 305
-#define T_NEW 306
+#define T_NEW 305
+#define T_CLONE 306
 #define T_NOELSE 307
 #define T_ELSEIF 308
 #define T_ELSE 309
 #define T_ENDIF 310
-#define T_PUBLIC 311
-#define T_PROTECTED 312
-#define T_PRIVATE 313
-#define T_FINAL 314
-#define T_ABSTRACT 315
-#define T_STATIC 316
+#define T_STATIC 311
+#define T_ABSTRACT 312
+#define T_FINAL 313
+#define T_PRIVATE 314
+#define T_PROTECTED 315
+#define T_PUBLIC 316
 #define T_LNUMBER 317
 #define T_DNUMBER 318
 #define T_STRING 319
@@ -432,28 +429,11 @@ extern int zenddebug;
 #define T_ELLIPSIS 391
 #define T_ERROR 392
 
+/* Value type.  */
 
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-ZEND_API int zendparse (void *YYPARSE_PARAM);
-#else
-ZEND_API int zendparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
 ZEND_API int zendparse (void);
-#else
-ZEND_API int zendparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 #endif /* !YY_ZEND_ZEND_ZEND_LANGUAGE_PARSER_H_INCLUDED  */
 
@@ -473,11 +453,8 @@ typedef unsigned char yytype_uint8;
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -497,8 +474,7 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -520,11 +496,30 @@ typedef short int yytype_int16;
 # endif
 #endif
 
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # endif
 #endif
 
@@ -535,24 +530,25 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(N) (N)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
 #endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -571,8 +567,7 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
@@ -584,8 +579,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -601,7 +596,7 @@ YYID (yyi)
 #  endif
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
+             && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
 #    define EXIT_SUCCESS 0
@@ -609,15 +604,13 @@ YYID (yyi)
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined malloc && ! defined EXIT_SUCCESS
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined free && ! defined EXIT_SUCCESS
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
@@ -627,7 +620,7 @@ void free (void *); /* INFRINGES ON USER
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -652,16 +645,16 @@ union yyalloc
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYSIZE_T yynewbytes;                                            \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                 \
+    while (0)
 
 #endif
 
@@ -680,7 +673,7 @@ union yyalloc
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
-      while (YYID (0))
+      while (0)
 #  endif
 # endif
 #endif /* !YYCOPY_NEEDED */
@@ -688,7 +681,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   7377
+#define YYLAST   7347
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  166
@@ -696,17 +689,19 @@ union yyalloc
 #define YYNNTS  137
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  496
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  941
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   392
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -715,7 +710,7 @@ static const yytype_uint8 yytranslate[]
        2,     2,     2,    54,   164,     2,   165,    53,    36,     2,
      157,   158,    51,    48,     8,    49,    50,    52,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,    30,   159,
-      42,    16,    43,    29,    57,     2,     2,     2,     2,     2,
+      42,    16,    44,    29,    66,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,    68,     2,   162,    35,     2,   163,     2,     2,     2,
@@ -738,8 +733,8 @@ static const yytype_uint8 yytranslate[]
        5,     6,     7,     9,    10,    11,    12,    13,    14,    15,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    31,    32,    33,    37,    38,    39,    40,    41,
-      44,    45,    46,    47,    55,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    69,    70,    71,    72,    73,
+      43,    45,    46,    47,    55,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    67,    69,    70,    71,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
@@ -752,228 +747,7 @@ static const yytype_uint8 yytranslate[]
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
-      39,    41,    43,    45,    47,    49,    51,    53,    55,    57,
-      59,    61,    63,    65,    67,    69,    71,    73,    75,    77,
-      79,    81,    83,    85,    87,    89,    91,    93,    95,    97,
-      99,   101,   103,   105,   107,   109,   111,   113,   115,   117,
-     119,   121,   123,   125,   127,   129,   131,   133,   135,   137,
-     139,   141,   143,   145,   147,   149,   151,   153,   155,   157,
-     160,   161,   163,   167,   169,   173,   176,   178,   180,   182,
-     184,   186,   191,   195,   196,   203,   204,   210,   214,   219,
-     223,   228,   232,   234,   236,   242,   249,   255,   262,   266,
-     268,   272,   274,   278,   280,   282,   285,   287,   291,   293,
-     296,   300,   302,   305,   306,   308,   310,   312,   314,   316,
-     321,   325,   327,   329,   335,   343,   353,   359,   363,   367,
-     371,   375,   379,   383,   385,   388,   394,   402,   412,   413,
-     420,   422,   429,   433,   437,   440,   441,   451,   453,   457,
-     458,   463,   465,   469,   471,   485,   486,   488,   489,   491,
-     492,   503,   504,   514,   516,   519,   521,   523,   524,   532,
-     533,   542,   543,   546,   547,   550,   551,   554,   556,   559,
-     564,   568,   570,   575,   577,   582,   584,   589,   593,   598,
-     603,   609,   610,   616,   621,   623,   625,   627,   632,   638,
-     645,   647,   651,   658,   666,   670,   677,   679,   680,   682,
-     686,   691,   698,   699,   701,   703,   706,   708,   710,   712,
-     713,   716,   719,   723,   725,   729,   731,   734,   738,   740,
-     742,   746,   748,   750,   754,   757,   758,   762,   767,   771,
-     784,   786,   790,   792,   795,   799,   801,   804,   807,   810,
-     814,   818,   822,   827,   831,   833,   835,   839,   841,   845,
-     847,   849,   850,   852,   854,   857,   859,   861,   863,   865,
-     867,   869,   873,   875,   878,   883,   887,   889,   894,   899,
-     903,   905,   907,   908,   910,   914,   916,   917,   927,   931,
-     934,   941,   947,   951,   956,   959,   963,   967,   971,   975,
-     979,   983,   987,   991,   995,   999,  1003,  1007,  1010,  1013,
-    1016,  1019,  1023,  1027,  1031,  1035,  1039,  1043,  1047,  1051,
-    1055,  1059,  1063,  1067,  1071,  1075,  1079,  1083,  1087,  1090,
-    1093,  1096,  1099,  1103,  1107,  1111,  1115,  1119,  1123,  1127,
-    1131,  1135,  1139,  1143,  1145,  1151,  1156,  1160,  1162,  1165,
-    1168,  1171,  1174,  1177,  1180,  1183,  1186,  1189,  1191,  1195,
-    1198,  1200,  1203,  1208,  1211,  1225,  1240,  1242,  1243,  1244,
-    1245,  1247,  1248,  1253,  1257,  1259,  1261,  1264,  1267,  1272,
-    1277,  1280,  1282,  1284,  1286,  1288,  1289,  1293,  1294,  1296,
-    1298,  1299,  1301,  1306,  1310,  1312,  1314,  1316,  1318,  1320,
-    1322,  1324,  1326,  1328,  1330,  1332,  1336,  1339,  1343,  1347,
-    1349,  1351,  1353,  1357,  1361,  1363,  1365,  1366,  1368,  1370,
-    1372,  1376,  1378,  1380,  1384,  1386,  1388,  1393,  1398,  1403,
-    1408,  1410,  1412,  1414,  1418,  1420,  1425,  1428,  1432,  1436,
-    1438,  1443,  1448,  1452,  1456,  1460,  1462,  1466,  1468,  1470,
-    1474,  1476,  1478,  1479,  1481,  1485,  1487,  1491,  1493,  1498,
-    1501,  1508,  1513,  1516,  1519,  1521,  1524,  1526,  1531,  1535,
-    1539,  1543,  1550,  1554,  1556,  1558,  1561,  1563,  1568,  1573,
-    1576,  1579,  1584,  1587,  1590,  1592,  1596
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     167,     0,    -1,   171,    -1,     7,    -1,     6,    -1,     5,
-      -1,     4,    -1,     3,    -1,     9,    -1,    10,    -1,    11,
-      -1,    55,    -1,    70,    -1,    69,    -1,    90,    -1,    91,
-      -1,    72,    -1,    73,    -1,    74,    -1,    92,    -1,    93,
-      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
-      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   113,
-      -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,   118,
-      -1,   119,    -1,   120,    -1,   121,    -1,   122,    -1,   123,
-      -1,   108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,
-      -1,    12,    -1,    13,    -1,   131,    -1,   103,    -1,   104,
-      -1,   105,    -1,   106,    -1,   107,    -1,   132,    -1,   133,
-      -1,   128,    -1,   129,    -1,   152,    -1,   126,    -1,   127,
-      -1,   125,    -1,   137,    -1,   138,    -1,   140,    -1,   139,
-      -1,   134,    -1,   135,    -1,   136,    -1,   153,    -1,   168,
-      -1,    80,    -1,    79,    -1,    78,    -1,    77,    -1,    76,
-      -1,    75,    -1,    83,    -1,   169,    -1,   171,   174,    -1,
-      -1,    83,    -1,   172,   154,    83,    -1,   172,    -1,   152,
-     154,   172,    -1,   154,   172,    -1,   189,    -1,   196,    -1,
-     199,    -1,   204,    -1,   206,    -1,   124,   157,   158,   159,
-      -1,   152,   172,   159,    -1,    -1,   152,   172,   175,   160,
-     171,   161,    -1,    -1,   152,   176,   160,   171,   161,    -1,
-     117,   179,   159,    -1,   117,   177,   178,   159,    -1,   117,
-     182,   159,    -1,   117,   177,   182,   159,    -1,   111,   186,
-     159,    -1,   110,    -1,   111,    -1,   172,   154,   160,   181,
-     161,    -1,   154,   172,   154,   160,   181,   161,    -1,   172,
-     154,   160,   180,   161,    -1,   154,   172,   154,   160,   180,
-     161,    -1,   180,     8,   183,    -1,   183,    -1,   181,     8,
-     184,    -1,   184,    -1,   182,     8,   185,    -1,   185,    -1,
-     184,    -1,   177,   184,    -1,   172,    -1,   172,   102,    83,
-      -1,   184,    -1,   154,   184,    -1,   186,     8,   256,    -1,
-     256,    -1,   187,   188,    -1,    -1,   189,    -1,   196,    -1,
-     199,    -1,   204,    -1,   206,    -1,   124,   157,   158,   159,
-      -1,   160,   187,   161,    -1,   220,    -1,   222,    -1,    94,
-     157,   281,   158,   218,    -1,    93,   189,    94,   157,   281,
-     158,   159,    -1,    96,   157,   259,   159,   259,   159,   259,
-     158,   212,    -1,   103,   157,   281,   158,   215,    -1,   107,
-     282,   159,    -1,   108,   282,   159,    -1,   112,   282,   159,
-      -1,   119,   233,   159,    -1,    80,   235,   159,    -1,    92,
-     257,   159,    -1,    85,    -1,   281,   159,    -1,   121,   157,
-     194,   158,   159,    -1,    98,   157,   281,   102,   211,   158,
-     213,    -1,    98,   157,   281,   102,   211,    14,   211,   158,
-     213,    -1,    -1,   100,   157,   186,   158,   190,   214,    -1,
-     159,    -1,   113,   160,   187,   161,   191,   193,    -1,   116,
-     281,   159,    -1,   109,    83,   159,    -1,    83,    30,    -1,
-      -1,   191,   114,   157,   192,    84,   158,   160,   187,   161,
-      -1,   173,    -1,   192,    34,   173,    -1,    -1,   115,   160,
-     187,   161,    -1,   195,    -1,   194,     8,   195,    -1,   287,
-      -1,   265,   268,    83,   266,   157,   223,   158,   229,   267,
-     160,   187,   161,   267,    -1,    -1,    36,    -1,    -1,   155,
-      -1,    -1,   202,   125,   200,    83,   208,   210,   266,   160,
-     237,   161,    -1,    -1,   125,   201,    83,   208,   210,   266,
-     160,   237,   161,    -1,   203,    -1,   202,   203,    -1,    79,
-      -1,    78,    -1,    -1,   126,   205,    83,   266,   160,   237,
-     161,    -1,    -1,   127,   207,    83,   209,   266,   160,   237,
-     161,    -1,    -1,   128,   173,    -1,    -1,   128,   239,    -1,
-      -1,   129,   239,    -1,   287,    -1,    36,   287,    -1,   131,
-     157,   293,   158,    -1,    68,   293,   162,    -1,   189,    -1,
-      30,   187,    97,   159,    -1,   189,    -1,    30,   187,    99,
-     159,    -1,   189,    -1,    30,   187,   101,   159,    -1,   160,
-     216,   161,    -1,   160,   159,   216,   161,    -1,    30,   216,
-     104,   159,    -1,    30,   159,   216,   104,   159,    -1,    -1,
-     216,   105,   281,   217,   187,    -1,   216,   106,   217,   187,
-      -1,    30,    -1,   159,    -1,   189,    -1,    30,   187,    95,
-     159,    -1,    91,   157,   281,   158,   189,    -1,   219,    72,
-     157,   281,   158,   189,    -1,   219,    -1,   219,    73,   189,
-      -1,    91,   157,   281,   158,    30,   187,    -1,   221,    72,
-     157,   281,   158,    30,   187,    -1,   221,    74,   159,    -1,
-     221,    73,    30,   187,    74,   159,    -1,   224,    -1,    -1,
-     225,    -1,   224,     8,   225,    -1,   226,   197,   198,    84,
-      -1,   226,   197,   198,    84,    16,   281,    -1,    -1,   227,
-      -1,   228,    -1,    29,   228,    -1,   132,    -1,   133,    -1,
-     173,    -1,    -1,    30,   227,    -1,   157,   158,    -1,   157,
-     231,   158,    -1,   232,    -1,   231,     8,   232,    -1,   281,
-      -1,   155,   281,    -1,   233,     8,   234,    -1,   234,    -1,
-     288,    -1,   235,     8,   236,    -1,   236,    -1,    84,    -1,
-      84,    16,   281,    -1,   237,   238,    -1,    -1,   248,   252,
-     159,    -1,   249,   111,   254,   159,    -1,   117,   239,   240,
-      -1,   249,   265,   268,   170,   266,   157,   223,   158,   229,
-     267,   247,   267,    -1,   173,    -1,   239,     8,   173,    -1,
-     159,    -1,   160,   161,    -1,   160,   241,   161,    -1,   242,
-      -1,   241,   242,    -1,   243,   159,    -1,   244,   159,    -1,
-     246,   118,   239,    -1,   245,   102,    83,    -1,   245,   102,
-     168,    -1,   245,   102,   251,   170,    -1,   245,   102,   251,
-      -1,   170,    -1,   246,    -1,   173,   151,   170,    -1,   159,
-      -1,   160,   187,   161,    -1,   250,    -1,   120,    -1,    -1,
-     250,    -1,   251,    -1,   250,   251,    -1,    75,    -1,    76,
-      -1,    77,    -1,    80,    -1,    79,    -1,    78,    -1,   252,
-       8,   253,    -1,   253,    -1,    84,   266,    -1,    84,    16,
-     281,   266,    -1,   254,     8,   255,    -1,   255,    -1,   170,
-      16,   281,   266,    -1,    83,    16,   281,   266,    -1,   257,
-       8,   258,    -1,   258,    -1,   281,    -1,    -1,   260,    -1,
-     260,     8,   281,    -1,   281,    -1,    -1,   125,   262,   277,
-     208,   210,   266,   160,   237,   161,    -1,    70,   274,   277,
-      -1,    70,   261,    -1,   131,   157,   293,   158,    16,   281,
-      -1,    68,   293,   162,    16,   281,    -1,   287,    16,   281,
-      -1,   287,    16,    36,   287,    -1,    69,   281,    -1,   287,
-      28,   281,    -1,   287,    27,   281,    -1,   287,    26,   281,
-      -1,   287,    17,   281,    -1,   287,    25,   281,    -1,   287,
-      24,   281,    -1,   287,    23,   281,    -1,   287,    22,   281,
-      -1,   287,    21,   281,    -1,   287,    20,   281,    -1,   287,
-      19,   281,    -1,   287,    18,   281,    -1,   287,    66,    -1,
-      66,   287,    -1,   287,    65,    -1,    65,   287,    -1,   281,
-      32,   281,    -1,   281,    33,   281,    -1,   281,     9,   281,
-      -1,   281,    11,   281,    -1,   281,    10,   281,    -1,   281,
-      34,   281,    -1,   281,    36,   281,    -1,   281,    35,   281,
-      -1,   281,    50,   281,    -1,   281,    48,   281,    -1,   281,
-      49,   281,    -1,   281,    51,   281,    -1,   281,    67,   281,
-      -1,   281,    52,   281,    -1,   281,    53,   281,    -1,   281,
-      47,   281,    -1,   281,    46,   281,    -1,    48,   281,    -1,
-      49,   281,    -1,    54,   281,    -1,    56,   281,    -1,   281,
-      39,   281,    -1,   281,    38,   281,    -1,   281,    41,   281,
-      -1,   281,    40,   281,    -1,   281,    42,   281,    -1,   281,
-      45,   281,    -1,   281,    43,   281,    -1,   281,    44,   281,
-      -1,   281,    37,   281,    -1,   281,    55,   274,    -1,   157,
-     281,   158,    -1,   263,    -1,   281,    29,   281,    30,   281,
-      -1,   281,    29,    30,   281,    -1,   281,    31,   281,    -1,
-     300,    -1,    64,   281,    -1,    63,   281,    -1,    62,   281,
-      -1,    61,   281,    -1,    60,   281,    -1,    59,   281,    -1,
-      58,   281,    -1,    90,   275,    -1,    57,   281,    -1,   279,
-      -1,   163,   276,   163,    -1,    12,   281,    -1,    13,    -1,
-      13,   281,    -1,    13,   281,    14,   281,    -1,    15,   281,
-      -1,   265,   268,   266,   157,   223,   158,   269,   229,   267,
-     160,   187,   161,   267,    -1,    80,   265,   268,   266,   157,
-     223,   158,   269,   229,   267,   160,   187,   161,   267,    -1,
-     110,    -1,    -1,    -1,    -1,    36,    -1,    -1,   117,   157,
-     270,   158,    -1,   270,     8,   271,    -1,   271,    -1,    84,
-      -1,    36,    84,    -1,   173,   230,    -1,   273,   151,   291,
-     230,    -1,   283,   151,   291,   230,    -1,   285,   230,    -1,
-      80,    -1,   173,    -1,   273,    -1,   290,    -1,    -1,   157,
-     282,   158,    -1,    -1,    86,    -1,   297,    -1,    -1,   230,
-      -1,   132,   157,   293,   158,    -1,    68,   293,   162,    -1,
-      87,    -1,    81,    -1,    82,    -1,   134,    -1,   135,    -1,
-     136,    -1,   138,    -1,   139,    -1,   140,    -1,   153,    -1,
-     137,    -1,   147,    86,   148,    -1,   147,   148,    -1,   164,
-     297,   164,    -1,   147,   297,   148,    -1,   278,    -1,   280,
-      -1,   173,    -1,   273,   151,   170,    -1,   283,   151,   170,
-      -1,   287,    -1,   264,    -1,    -1,   281,    -1,   284,    -1,
-     287,    -1,   157,   281,   158,    -1,   278,    -1,   286,    -1,
-     157,   281,   158,    -1,   278,    -1,   288,    -1,   284,    68,
-     282,   162,    -1,   280,    68,   282,   162,    -1,   284,   160,
-     281,   161,    -1,   284,   130,   292,   230,    -1,   272,    -1,
-     286,    -1,   289,    -1,   284,   130,   292,    -1,    84,    -1,
-     165,   160,   281,   161,    -1,   165,   288,    -1,   273,   151,
-     288,    -1,   283,   151,   288,    -1,   288,    -1,   290,    68,
-     282,   162,    -1,   290,   160,   281,   161,    -1,   290,  