[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[texlive-bin] 02/04: New upstream version 2017.20170613.44572



This is an automated email from the git hooks/post-receive script.

preining pushed a commit to branch experimental
in repository texlive-bin.

commit 1d23680571ffb41bad46be167f22ae5988a1ad0c
Author: Norbert Preining <preining@debian.org>
Date:   Tue Jun 13 09:06:14 2017 +0900

    New upstream version 2017.20170613.44572
---
 build-aux/config.guess                             |  13 +-
 build-aux/texinfo.tex                              |  52 +--
 texk/kpathsea/win32/ChangeLog                      |   8 +
 texk/kpathsea/win32/mktexfmt.c                     |  35 +-
 texk/seetexk/ChangeLog                             |   5 +
 texk/seetexk/dvibook.c                             |   2 +
 texk/seetexk/dviconcat.c                           |   4 +
 texk/seetexk/dviselect.c                           |   2 +
 texk/seetexk/dvitodvi.c                            |   2 +
 texk/texlive/linked_scripts/Makefile.am            |   1 +
 texk/texlive/linked_scripts/Makefile.in            |   1 +
 texk/texlive/linked_scripts/dviinfox/dviinfox.pl   | 366 +++++++++++++++++++++
 .../linked_scripts/glossaries/makeglossaries       |  60 +++-
 .../linked_scripts/latexindent/latexindent.pl      |   4 +-
 texk/texlive/linked_scripts/lwarp/lwarpmk.lua      |  29 +-
 texk/texlive/linked_scripts/ptex2pdf/ptex2pdf.lua  | 120 ++++---
 texk/texlive/linked_scripts/scripts.lst            |   1 +
 texk/texlive/linked_scripts/texlive/tlmgr.pl       |  16 +-
 .../linked_scripts/texosquery/texosquery-jre5.sh   |   8 +-
 .../linked_scripts/texosquery/texosquery-jre8.sh   |   8 +-
 .../linked_scripts/texosquery/texosquery.sh        |   8 +-
 texk/web2c/luatexdir/lua/liolibext.c               |   6 +-
 texk/web2c/luatexdir/lua/luatex-core.c             | 324 +++++++++---------
 texk/web2c/luatexdir/lua/luatex-core.lua           |  19 +-
 texk/web2c/luatexdir/luatex.c                      |   4 +-
 25 files changed, 798 insertions(+), 300 deletions(-)

diff --git a/build-aux/config.guess b/build-aux/config.guess
index faa63aa..2193702 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2017-05-11'
+timestamp='2017-05-27'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -1304,14 +1304,21 @@ EOF
 	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
 	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-		    grep IS_64BIT_ARCH >/dev/null
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_64BIT_ARCH >/dev/null
 		then
 		    case $UNAME_PROCESSOR in
 			i386) UNAME_PROCESSOR=x86_64 ;;
 			powerpc) UNAME_PROCESSOR=powerpc64 ;;
 		    esac
 		fi
+		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_PPC >/dev/null
+		then
+		    UNAME_PROCESSOR=powerpc
+		fi
 	    fi
 	elif test "$UNAME_PROCESSOR" = i386 ; then
 	    # Avoid executing cc on OS X 10.9, as it ships with a stub
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index 8204f3e..b40a6e2 100644
--- a/build-aux/texinfo.tex
+++ b/build-aux/texinfo.tex
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2017-05-14.14}
+\def\texinfoversion{2017-06-04.19}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -5493,17 +5493,15 @@ end
       \let\indexlbrace\{   % Likewise, set these sequences for braces
       \let\indexrbrace\}   % used in the sort key.
       \begindoublecolumns
-      \let\entrywidowpenalty=\indexwidowpenalty
+      \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty
       %
       % Read input from the index file line by line.
       \loopdo
-        \ifeof1
-          \let\firsttoken\relax
-        \else
+        \ifeof1 \else
           \read 1 to \nextline
-          \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
-          \act
         \fi
+        %
+        \indexinputprocessing
         \thisline
         %
         \ifeof1\else
@@ -5515,12 +5513,20 @@ end
   \fi
   \closein 1
 \endgroup}
+\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
+\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
 
+\def\indexinputprocessing{%
+  \ifeof1
+    \let\firsttoken\relax
+  \else
+    \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
+    \act
+  \fi
+}
 \def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
 \long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
 
-\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
-\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
 
 % These macros are used by the sorted index file itself.
 % Change them to control the appearance of the index.
@@ -5597,7 +5603,7 @@ end
     % For pdfTeX and XeTeX.
     % The redefinition of \domark stops marks being added in \pdflink to 
     % preserve coloured links across page boundaries.  Otherwise the marks
-    % would get in the way of \lastbox in \insertindexentrybox.
+    % would get in the way of \lastbox in \insertentrybox.
     \let\domark\relax
     %
     % Start a new paragraph if necessary, so our assignments below can't
@@ -5658,9 +5664,9 @@ end
     \fi
     \egroup % end \boxA
     \ifdim\wd\boxB = 0pt
-      \global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
+      \global\setbox\entrybox=\vbox{\unhbox\boxA}%
     \else
-    \global\setbox\entryindexbox=\vbox\bgroup
+    \global\setbox\entrybox=\vbox\bgroup
       % We want the text of the entries to be aligned to the left, and the
       % page numbers to be aligned to the right.
       %
@@ -5722,19 +5728,20 @@ end
     \egroup % The \vbox
     \fi
   \endgroup
-  % delay text of entry until after penalty
-  \bgroup\aftergroup\insertindexentrybox
-  \entrywidowpenalty
+  \dotheinsertentrybox
 }}
 
 \newskip\thinshrinkable
 \skip\thinshrinkable=.15em minus .15em
 
-\newbox\entryindexbox
-\def\insertindexentrybox{%
-  \ourunvbox\entryindexbox
+\newbox\entrybox
+\def\insertentrybox{%
+  \ourunvbox\entrybox
 }
 
+% default definition
+\let\dotheinsertentrybox\insertentrybox
+
 % Use \lastbox to take apart vbox box by box, and add each sub-box
 % to the current vertical list.
 \def\ourunvbox#1{%
@@ -5757,21 +5764,18 @@ end
 \newbox\delayedbox
 \newbox\interbox
 
-% Default is no penalty
-\let\entrywidowpenalty\egroup
-
 % Used from \printindex.  \firsttoken should be the first token
 % after the \entry.  If it's not another \entry, we are at the last
 % line of a group of index entries, so insert a penalty to discourage
 % widowed index entries.
-\long\def\indexwidowpenalty{%
-  \def\isentry{\entry}%
+\def\dotheinsertentryboxwithpenalty{%
   \ifx\firsttoken\isentry
   \else
     \penalty 9000
   \fi
-  \egroup % now comes the box added with \aftergroup
+  \insertentrybox
 }
+\def\isentry{\entry}%
 
 % Like plain.tex's \dotfill, except uses up at least 1 em.
 % The filll stretch here overpowers both the fil and fill stretch to push
diff --git a/texk/kpathsea/win32/ChangeLog b/texk/kpathsea/win32/ChangeLog
index 5b8013f..9aa59ca 100644
--- a/texk/kpathsea/win32/ChangeLog
+++ b/texk/kpathsea/win32/ChangeLog
@@ -1,3 +1,11 @@
+2017-06-11  Akira Kakuto  <kakuto@fuk.kindai.ac.jp>
+
+	* mktexfmt.c: Use fmtutil-user for consistency with other platforms.
+
+2017-06-04  Akira Kakuto  <kakuto@fuk.kindai.ac.jp>
+
+	* mktexfmt.c: Adapt to the new fmtutil.pl in TeX Live.
+
 2016-04-06  Akira Kakuto  <kakuto@fuk.kindai.ac.jp>
 
 	* All *.c, *.h files: Copyright year 2016.
diff --git a/texk/kpathsea/win32/mktexfmt.c b/texk/kpathsea/win32/mktexfmt.c
index ac400b5..169e62f 100644
--- a/texk/kpathsea/win32/mktexfmt.c
+++ b/texk/kpathsea/win32/mktexfmt.c
@@ -1,6 +1,6 @@
 /* mktexfmt.c
 
-   Copyright 2000, 2016 Akira Kakuto.
+   Copyright 2000, 2017 Akira Kakuto.
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@
 */
 #include <kpathsea/kpathsea.h>
 
-#define VERSION "0.1"
+#define VERSION "0.2"
 
 int main(int ac, char **av)
 {
@@ -34,17 +34,28 @@ int main(int ac, char **av)
   char texbindir[256];
   char fullbin[256];
 
+  int  is_w32tex;
+
   kpse_set_program_name(av[0], NULL);
 
+  p = kpse_var_value("jtex_filetype");
+
+  if (p) {
+    is_w32tex = 1;
+    free(p);
+  } else {
+    is_w32tex = 0;
+  }
+
   p = kpse_program_name;
   if(ac != 2) {
     fprintf(stderr,"%s : Usage %s formatname\n", p, p);
-    fprintf(stderr,"formatname :  (foo.fmt, foo.nfmt, foo.mem, foo.base)\n");
+    fprintf(stderr,"formatname :  (foo.fmt, foo.base, foo.mem)\n");
     return 1;
   }
   if(!strncmp(av[1], "-h", 2) || !strncmp(av[1], "--h", 3)) {
     fprintf(stderr,"%s : Usage %s formatname\n", p, p);
-    fprintf(stderr,"formatname :  (foo.fmt, foo.nfmt, foo.mem, foo.base)\n");
+    fprintf(stderr,"formatname :  (foo.fmt, foo.base, foo.mem)\n");
     return 0;
   }
   if(!strncmp(av[1], "-v", 2) || !strncmp(av[1], "--v", 3)) {
@@ -77,8 +88,7 @@ int main(int ac, char **av)
     return 1;
   }
 
-  if(stricmp(p, ".fmt") && stricmp(p, ".nfmt") &&
-     stricmp(p, ".base") && stricmp(p, ".mem")) {
+  if(stricmp(p, ".fmt") && stricmp(p, ".base") && stricmp(p, ".mem")) {
     fprintf(stderr, "%s : unknown format type.\n", av[1]);
     return 1;
   }
@@ -101,10 +111,15 @@ int main(int ac, char **av)
 
 /* COMMAND */
   strcpy(fullbin, texbindir);
-  strcat(fullbin, "fmtutil.exe");
-  fprintf(stderr, "Running the command %s\n", fullbin);
-  _spawnlp(_P_WAIT, fullbin, "fmtutil", "--byfmt", av[1], NULL);
-
+  if (is_w32tex) {
+    strcat(fullbin, "fmtutil.exe");
+    fprintf(stderr, "Running the command %s\n", fullbin);
+    _spawnlp(_P_WAIT, fullbin, "fmtutil", "--byfmt", av[1], NULL);
+  } else {
+    strcat(fullbin, "fmtutil-user.exe");
+    fprintf(stderr, "Running the command %s\n", fullbin);
+    _spawnlp(_P_WAIT, fullbin, "fmtutil-user", "--byfmt", av[1], NULL);
+  }
 /* END COMMAND */
   
 /* return to original stdout and stdin */
diff --git a/texk/seetexk/ChangeLog b/texk/seetexk/ChangeLog
index 980f0f6..962a2fb 100644
--- a/texk/seetexk/ChangeLog
+++ b/texk/seetexk/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-11  TANAKA Takuji  <ttk@t-lab.opal.ne.jp>
+
+	* dvibook.c, dviconcat.c, dviselect.c, dvitodvi.c:
+	Show usage and exit if stdin is set to a keyboard.
+
 2015-10-05  Peter Breitenlohner  <peb@mppmu.mpg.de>
 
 	* dvitodvi.c (ParseSpecs): Avoid to return the address of a
diff --git a/texk/seetexk/dvibook.c b/texk/seetexk/dvibook.c
index 80a16e1..747952c 100644
--- a/texk/seetexk/dvibook.c
+++ b/texk/seetexk/dvibook.c
@@ -446,6 +446,8 @@ Usage: %s [-s signature] [-q] [-i infile] [-o outfile] [infile [outfile]]\n",
 		inf = stdin;
 		if (!isatty(fileno(inf)))
 		  SET_BINARY(fileno(inf));
+		else
+		  goto usage;
 	} else if ((inf = fopen(DVIFileName, FOPEN_RBIN_MODE)) == 0)
 		error(1, -1, "cannot read %s", DVIFileName);
 	if (outname == NULL) {
diff --git a/texk/seetexk/dviconcat.c b/texk/seetexk/dviconcat.c
index d776e57..dad528e 100644
--- a/texk/seetexk/dviconcat.c
+++ b/texk/seetexk/dviconcat.c
@@ -437,6 +437,8 @@ usage:
 	if (optind >= argc) {
 	  if (!isatty(fileno(stdin)))
 	    SET_BINARY(fileno(stdin));
+	  else
+	    goto usage;
 	  doit("`stdin'", stdin);
 	}
 	else {
@@ -445,6 +447,8 @@ usage:
 			if (*s == '-' && s[1] == 0) {
 			  if (!isatty(fileno(stdin)))
 			    SET_BINARY(fileno(stdin));
+			  else
+			    goto usage;
 			  doit("`stdin'", stdin);
 			}
 			else if ((f = fopen(s, FOPEN_RBIN_MODE)) == NULL) {
diff --git a/texk/seetexk/dviselect.c b/texk/seetexk/dviselect.c
index 6e55ab7..5f8a79d 100644
--- a/texk/seetexk/dviselect.c
+++ b/texk/seetexk/dviselect.c
@@ -575,6 +575,8 @@ Usage: %s [-s] [-i infile] [-o outfile] pages [...] [infile [outfile]]\n",
 		inf = stdin;
 		if (!isatty(fileno(inf)))
 		  SET_BINARY(fileno(inf));
+		else
+		  goto usage;
 	} else if ((inf = fopen(DVIFileName, FOPEN_RBIN_MODE)) == 0)
 		error(1, -1, "cannot read %s", DVIFileName);
 
diff --git a/texk/seetexk/dvitodvi.c b/texk/seetexk/dvitodvi.c
index e081fc3..deffc31 100644
--- a/texk/seetexk/dvitodvi.c
+++ b/texk/seetexk/dvitodvi.c
@@ -688,6 +688,8 @@ Usage: %s [-q] [-i infile] [-o outfile] [-w width] [-h height] <pagespecs> [infi
 		inf = stdin;
 		if (!isatty(fileno(inf)))
 		  SET_BINARY(fileno(inf));
+		else
+		  goto usage;
 	} else if ((inf = fopen(DVIFileName, FOPEN_RBIN_MODE)) == 0)
 		error(1, -1, "cannot read %s", DVIFileName);
 	if (outname == NULL) {
diff --git a/texk/texlive/linked_scripts/Makefile.am b/texk/texlive/linked_scripts/Makefile.am
index efd046a..3ab5444 100644
--- a/texk/texlive/linked_scripts/Makefile.am
+++ b/texk/texlive/linked_scripts/Makefile.am
@@ -108,6 +108,7 @@ texmf_other_scripts = \
 	diadia/diadia.lua \
 	dosepsbin/dosepsbin.pl \
 	dviasm/dviasm.py \
+	dviinfox/dviinfox.pl \
 	ebong/ebong.py \
 	epspdf/epspdf.tlu \
 	epspdf/epspdftk.tcl \
diff --git a/texk/texlive/linked_scripts/Makefile.in b/texk/texlive/linked_scripts/Makefile.in
index 8e0d2d7..dc62ae9 100644
--- a/texk/texlive/linked_scripts/Makefile.in
+++ b/texk/texlive/linked_scripts/Makefile.in
@@ -323,6 +323,7 @@ texmf_other_scripts = \
 	diadia/diadia.lua \
 	dosepsbin/dosepsbin.pl \
 	dviasm/dviasm.py \
+	dviinfox/dviinfox.pl \
 	ebong/ebong.py \
 	epspdf/epspdf.tlu \
 	epspdf/epspdftk.tcl \
diff --git a/texk/texlive/linked_scripts/dviinfox/dviinfox.pl b/texk/texlive/linked_scripts/dviinfox/dviinfox.pl
new file mode 100755
index 0000000..3933095
--- /dev/null
+++ b/texk/texlive/linked_scripts/dviinfox/dviinfox.pl
@@ -0,0 +1,366 @@
+#!/usr/bin/env perl
+
+# dviinfox
+# ========
+# 
+# This script is a joint effort of
+#   Dag Langmyhr, Department of Informatics, University of Oslo
+#     (dag at ifi.uio.no)
+# and
+#   Hironobu Yamashita, Japanese TeX Development Community
+#     (h.y.acetaminophen at gmail.com)
+#
+# A program to print information about a DVI file.
+#
+# Usage: dviinfox [options] file1 file2 ...
+# where the flags indicate which information is desired.
+#  -f  Give information about the fonts used.
+#  -p  Give information about the number of pages.
+#  -v  List the program version number.
+#  -h  Show help message.
+# No options will provide all information available.
+#
+# Example:
+# % dviinfox alltt.dvi
+# alltt.dvi: DVI format 2; 3 pages
+#   Magnification: 1000/1000
+#   Size unit: 1000x25400000/(1000x473628672)dum = 0.054dum = 1.000sp
+#   Page size: 407ptx682pt = 14.340cmx23.970cm
+#   Stack size: 8
+#   Comment: " TeX output 1995.07.07:1513"
+#   Font  27:      cmr9 at  9.000 (design size  9.000, checksum=1874103239)
+#   Font  26:     cmsy6 at  6.000 (design size  6.000, checksum=1906386187)
+#   Font  21:      cmr8 at  8.000 (design size  8.000, checksum=2088458503)
+#   Font  20:    cmsy10 at 12.000 (design size 10.000, checksum=555887770)
+#   Font  16:     cmr12 at 12.000 (design size 12.000, checksum=1487622411)
+#   Font  15:    cmtt12 at 17.280 (design size 12.000, checksum=3750147412)
+#   Font  14:     cmr17 at 17.280 (design size 17.280, checksum=1154739572)
+#   Font  13:    cmsy10 at 10.000 (design size 10.000, checksum=555887770)
+#   Font   7:     cmr10 at 10.000 (design size 10.000, checksum=1274110073)
+#   Font   6:      cmr7 at  7.000 (design size  7.000, checksum=3650330706)
+
+use strict;
+
+my $Prog    = "dviinfox";
+my $Version = "1.04";
+my $Author = "Dag Langmyhr and Hironobu Yamashita";
+
+my $True = 1;
+my $False = 0;
+
+my $List_all = $True;
+my $List_fonts = $False;
+my $List_pages = $False;
+
+# DVI commands:
+my $DVI_Filler    = "\337"; # 223 = 0xdf
+my $DVI_Font      = "\363"; # 243 = 0xf3
+my $DVI_Post      = "\370"; # 248 = 0xf8
+my $DVI_Post_post = "\371"; # 249 = 0xf9
+my $DVI_Pre       = "\367"; # 247 = 0xf7
+my $XDV_Font      = "\374"; # 252 = 0xfc
+
+my $Unit;
+
+if (!@ARGV) {
+    show_usage();
+    print "Try \"$Prog -h\" for more information.\n";
+}
+
+Param:
+foreach (@ARGV) {
+    /^-f$/ && do {
+	$List_fonts = $True;  $List_all = $False;  next Param; };
+    /^-p$/ && do {
+	$List_pages = $True;  $List_all = $False;  next Param; };
+    /^-v$/ && do {
+	show_version();  next Param; };
+    /^-h$/ && do {
+	show_help();  next Param; };
+    /^-/ && do {
+	print STDERR "$Prog: Unknown option '$_' ignored.\n";  next Param; };
+    
+    &Read_DVI_file($_);
+}
+
+exit 0;
+
+# Only sub definitions from here on
+
+sub show_version {
+    print "This is $Prog $Version, by $Author\n";
+}
+
+sub show_usage {
+    show_version();
+    print "Usage: $Prog [-f][-p][-v] file...\n";
+}
+
+sub show_help {
+    show_usage();
+    print "A program to print information about a DVI file.\n";
+    print "Options:\n";
+    print "  -f  Give information about the fonts used.\n";
+    print "  -p  Give information about the number of pages.\n";
+    print "  -v  List the program version number.\n";
+    print "  -h  Show help message.\n";
+    exit 0;
+}
+
+sub Read_DVI_file {
+    local($_) = @_;
+    my ($c, $cn);
+    my $IS_XDV = 0;
+
+    print "$_: ";
+
+    open(F, $_) || do { print STDERR "Could not open!\n\n"; exit 1; };
+
+    # First, read info at start of DVI file:
+
+    if (($c = getc(F)) ne $DVI_Pre) {
+	printf STDERR ("Not a DVI file (first byte is 0x%02x, not 0x%02x)!\n\n", 
+	       ord($c), ord($DVI_Pre));
+	close F;  exit 1;
+    };
+
+    my $Format  = ord(getc(F));
+    my $Numer   = &Read4;
+    my $Denom   = &Read4;
+    my $Magni   = &Read4;
+    my $Comment = &Read_text;
+
+    # Then, read information at the end of the DVI file:
+
+    seek(F, -1, 2);
+    while (($c = getc(F)) eq $DVI_Filler) { seek(F, -2, 1); };
+    my $VersionID = ord($c);
+    # Previously we required equality ($VersionID == $Format). However,
+    # it seems ok even when format id (pre) and version id (post_post)
+    # are different. TeX4ht allows $VersionID <= 10, so we follow it
+    if (($VersionID != $Format) && ($VersionID > 10)) {
+	print STDERR "DVI format error (format: $Format vs id: $VersionID)!\n\n";
+	close F;  exit 1;
+    };
+    $IS_XDV = 1 if ($Format > 2);
+
+    seek(F, -6, 1);
+    if (($c = getc(F)) ne $DVI_Post_post) {
+	$cn = ord($c);
+	printf STDERR ("DVI error: Expected POST_POST command, not 0x%02x!\n\n", $cn);
+	close F;  exit 1;
+    };
+
+    my $Last_post = &Read4;
+    seek(F, $Last_post, 0) || do {
+	print STDERR "Could not locate position $Last_post!\n\n";
+	close F;  exit 1;
+    };
+    if (($c = getc(F)) ne $DVI_Post) {
+	$cn = ord($c);
+	printf STDERR ("DVI error: Expected POST command, not 0x%02x!\n\n", $cn);
+	close F;  exit 1;
+    };
+
+    my $Final_page = &Read4;
+    my $Numer2     = &Read4;
+    my $Denom2     = &Read4;
+    my $Magni2     = &Read4;
+    my $Height     = &Read4;
+    my $Width      = &Read4;
+    my $Stack      = &Read2_u;
+    my $Pages      = &Read2_u;
+
+    if ($List_all) {
+	print "DVI format $Format";
+	print "; id $VersionID" if ($VersionID != $Format);
+	print " (pTeX DVI)" if (($Format == 2) && ($VersionID == 3));
+	print " (XeTeX XDV)" if ($Format > 2);
+	print "; ";
+    }
+    if ($List_all || $List_pages) {
+	print "$Pages page";
+	print "s" if ($Pages > 1);
+    };
+
+    $Unit = $Magni*$Numer/(1000*$Denom);
+    if ($List_all) {
+	print "\n  Magnification: $Magni/1000";
+	printf("\n  Size unit: %dx$Numer/(1000x$Denom)dum = %5.3fdum = %5.3fsp", 
+	       $Magni, $Unit, &Scale_to_sp(1));
+	printf("\n  Page size: %dptx%dpt = %5.3fcmx%5.3fcm", 
+	       &Scale_to_pt($Width), &Scale_to_pt($Height),
+	       &Scale_to_cm($Width), &Scale_to_cm($Height));
+	print "\n  Stack size: $Stack";
+	print "\n  Comment: \"$Comment\"";
+    }
+    print "\n";
+
+    if ($List_all || $List_fonts) {
+	my ($F_count, $F_check, $F_scale, $F_design, $F_name);
+	my ($F_flag, $F_index, $F_colored, $F_extend, $F_slant, $F_embolden);
+	my $F_tempswa;
+	while (($c = getc(F)) eq $DVI_Font || $c eq $XDV_Font) {
+	    # initialize
+	    $F_count  = 0;
+	    $F_check  = 0;
+	    $F_scale  = 0;
+	    $F_design = 0;
+	    $F_name   = '';
+	    $F_flag   = 0;
+	    $F_index  = 0;
+	    $F_colored = 0;
+	    $F_extend = 0;
+	    $F_slant = 0;
+	    $F_embolden = 0;
+	    if ($c eq $DVI_Font) {
+		# standard DVI: TFM font definition command
+		$F_count  = ord(getc(F));
+		$F_check  = &Read4_u;
+		$F_scale  = &Read4;
+		$F_design = &Read4;
+		$F_name   = &Read_text2;
+		printf("  Font %3d: %9s at %6.3f", 
+		       $F_count, $F_name, &Scale_to_pt($F_scale));
+		printf(" (design size %6.3f, ", &Scale_to_pt($F_design));
+		print "checksum=$F_check)\n";
+	    } else { # $c eq $XDV_Font
+		# extended XDV for XeTeX: Native font definition command
+		if (!$IS_XDV) {
+		    printf STDERR ("Erorr: Command %d used in non-XDV file!\n", ord($XDV_Font));
+		    close F;  exit 1;
+		}
+		$F_count  = &Read4_u;
+		$F_scale  = &Read4;
+		$F_flag   = &Read2_u;
+		$F_name   = &Read_text;
+		$F_index  = &Read4_u;
+		$F_colored = &Read4_u if ($F_flag & 512);
+		$F_extend = &Read4_u if ($F_flag & 4096);
+		$F_slant = &Read4_u if ($F_flag & 8192);
+		$F_embolden = &Read4_u if ($F_flag & 16384);
+		printf("  Native Font %3d: %s at %6.3f", 
+		       $F_count, $F_name, &Scale_to_pt($F_scale));
+		printf(" (flags 0x%04x, face index %d)\n", $F_flag, $F_index);
+		if ($F_flag) {
+		    print("        +features: ");
+		    $F_tempswa = 0;
+		    if ($F_colored) {
+			printf("Colored=0x%x", $F_colored);
+			$F_tempswa = 1;
+		    }
+		    if ($F_extend) {
+			print(", ") if ($F_tempswa);
+			printf("Extend=0x%x", $F_extend);
+			$F_tempswa = 1;
+		    }
+		    if ($F_slant) {
+			print(", ") if ($F_tempswa);
+			printf("Slant=0x%x", $F_slant);
+			$F_tempswa = 1;
+		    }
+		    if ($F_embolden) {
+			print(", ") if ($F_tempswa);
+			printf("Embolden=0x%x", $F_embolden);
+			$F_tempswa = 1;
+		    }
+		    print("\n");
+		}
+	    }
+	};
+
+	if ($c ne $DVI_Post_post) {
+	    $cn = ord($c);
+	    printf STDERR ("DVI error: Expected POST_POST command, not 0x%02x!\n", $cn);
+	    close F;  exit 1;
+	};
+
+	print "\n";
+    };
+
+    close F;
+}
+
+
+# Scale_to_pt (Size)
+# -----
+# Give the Size (which is in dum, the standard DVI size) in pt.
+sub Scale_to_pt {
+    return $Unit*$_[0]*72.27/254000;
+}
+
+
+# Scale_to_cm (Size)
+# -----------
+# Give the Size (which is in dum, the standard DVI size) in cm.
+sub Scale_to_cm {
+    return &Scale_to_pt($_[0])*2.54/72.27;
+}
+
+
+# Scale_to_sp (Size)
+# -----------
+# Give the Size (which is in dum, the standard DVI size) in sp.
+sub Scale_to_sp {
+    return &Scale_to_pt($_[0])*65536;
+}
+
+
+# Read2_u
+# -------
+# Read an unsigned two-byte value.
+sub Read2_u {
+    return ord(getc(F))*256 + ord(getc(F));
+}
+
+
+# Read4
+# -----
+# Read a four-byte value.
+# (I assume the value is positive and less than 2^31, so the sign bit
+# won't matter.)
+sub Read4 {
+    return ((ord(getc(F))*256+ord(getc(F)))*256+ord(getc(F)))*256+ord(getc(F));
+}
+
+
+# Read4_u
+# -----
+# Read an unsigned four-byte value.
+# (I don't know why this works for values >=2^31, and Read4 does not,
+# but as long as it works...)
+sub Read4_u {
+    my (@bytes, @sum);
+
+    $bytes[0] = ord(getc(F));  $bytes[1] = ord(getc(F));
+    $bytes[2] = ord(getc(F));  $bytes[3] = ord(getc(F));
+
+    $sum[0] = $bytes[0]*256 + $bytes[1];
+    $sum[1] = $bytes[2]*256 + $bytes[3];
+
+    return $sum[0]*65536 + $sum[1];
+}
+
+
+# Read_text
+# ---------
+# Read a text (a one-byte length and the the text byte).
+sub Read_text {
+    local($_);
+    my ($Leng, $Res);
+
+    $Leng = ord(getc(F));  read(F, $Res, $Leng);
+    return $Res;
+}
+
+
+# Read_text2
+# ----------
+# Like 'Read_text', but the length is the sum of two bytes.
+sub Read_text2 {
+    local($_);
+    my ($Leng, $Res);
+
+    $Leng = ord(getc(F)) + ord(getc(F));  read(F, $Res, $Leng);
+    return $Res;
+}
diff --git a/texk/texlive/linked_scripts/glossaries/makeglossaries b/texk/texlive/linked_scripts/glossaries/makeglossaries
index b322759..7321a30 100755
--- a/texk/texlive/linked_scripts/glossaries/makeglossaries
+++ b/texk/texlive/linked_scripts/glossaries/makeglossaries
@@ -2,7 +2,7 @@
 
 # File    : makeglossaries
 # Author  : Nicola Talbot
-# Version : 2.20
+# Version : 2.21
 # Description: simple Perl script that calls makeindex or xindy.
 # Intended for use with "glossaries.sty" (saves having to remember
 # all the various switches)
@@ -25,11 +25,14 @@
 # and the derived files glossaries.sty, mfirstuc.sty,
 # glossary-hypernav.sty, glossary-list.sty, glossary-long.sty,
 # glossary-super.sty, glossaries.perl.
-# Also makeglossaries and makeglossaries.
+# Also makeglossaries and makeglossaries-lite.lua.
 
-my $version="2.20 (2016-12-16)";
+my $version="2.21 (2017-05-11)";
 
 # History:
+# v2.21:
+#   * Fixed spelling of \GlsAddXdyLocation
+#   * Adjusted range encap clash
 # v2.20 (2016/12/16)
 #   * Added check for \glsxtr@makeglossaries
 # v2.19 (2016/05/27)
@@ -222,9 +225,10 @@ my %xindy_error_text =
     'nomain' =>
         "\nRemember to use package option 'nomain' if you don't\n".
         "want to use the main glossary.",
+#v2.21: fixed spelling of \GlsAddXdyLocation
     'badlocation' =>
         "You may have forgotten to add a location \n"
-        . "class with \\GlsAddLocation or you may have \n"
+        . "class with \\GlsAddXdyLocation or you may have \n"
         . "the format incorrect.\n",
     'comp207' => "You may need to add 'compatible-2.07' package option.",
     'noxdyfile' => "Style file not found. (Have you used \\noist by mistake?)"
@@ -1006,17 +1010,49 @@ sub makeindex{
                   and $entry{'location'} eq $existing->{'location'}
                   and $entry{'encap'} ne $existing->{'encap'})
                   {
-                     if (&encap_overrides($entry{'encap'},
-                           $existing->{'encap'}))
+                     $add = 0 if ($add == 1);
+
+                     # Range encaps should take precedence.
+
+                     if ($entry{'encap'}=~/^[\(\)]/)
+                     {
+                        $add = 2;
+
+                        if ($existing->{'encap'}=~/^[\(\)]/)
+                        {
+                           # too complicated, keep both
+
+                           last;
+                        }
+                        else
+                        {
+                           # remove existing
+
+                           splice @entries, $idx, 1;
+
+                           $idx--;
+                        }
+                     }
+                     elsif ($existing->{'encap'}=~/^[\(\)]/)
+                     {
+                        if ($entry{'encap'}=~/^[\(\)]/)
+                        {
+                           # too complicated, keep both
+
+                           $add = 1;
+                           last;
+                        }
+                        # (otherwise drop new entry)
+                     }
+                     elsif (&encap_overrides($entry{'encap'},
+                                   $existing->{'encap'}))
                      {
                         $entries[$idx] = \%entry;
                      }
-
-                     $add = 0;
                   } 
                }
 
-               push @entries, \%entry if $add;
+               push @entries, \%entry if $add > 0;
             }
             else
             {
@@ -1060,15 +1096,11 @@ sub makeindex{
 # For example, what happens in the event of 'textbf' and 'emph'?
 # Should one override the other or be combined? Combining is harder
 # as it would need a corresponding LaTeX command.
-# Range encaps should take precedence.
+# 2.21 check for range encap moved earlier
 
 sub encap_overrides{
   my ($newencap, $existing) = @_;
 
-  return 0 if ($existing=~/^[\(\)]/);
-
-  return 1 if ($newencap=~/^[\(\)]/);
-
   ($existing=~/\\glsnumberformat\s*$/ or $newencap!~/\\glsnumberformat\s*$/ )
 }
 
diff --git a/texk/texlive/linked_scripts/latexindent/latexindent.pl b/texk/texlive/linked_scripts/latexindent/latexindent.pl
index 7cfe4a9..b4474a1 100755
--- a/texk/texlive/linked_scripts/latexindent/latexindent.pl
+++ b/texk/texlive/linked_scripts/latexindent/latexindent.pl
@@ -1,5 +1,5 @@
 #!/usr/bin/env perl
-#   latexindent.pl, version 3.0.2, 2017-05-12
+#   latexindent.pl, version 3.1, 2017-05-27
 #
 #	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
@@ -67,6 +67,6 @@ if(defined($switches{readLocalSettings}) and ($switches{readLocalSettings} eq ''
     $switches{readLocalSettings} = 'localSettings.yaml';
 }
 
-my $document = LatexIndent::Document->new(name=>"masterdocument",fileName=>$ARGV[0],switches=>\%switches);
+my $document = LatexIndent::Document->new(name=>"masterDocument",fileName=>$ARGV[0],switches=>\%switches);
 $document->latexindent;
 exit(0);
diff --git a/texk/texlive/linked_scripts/lwarp/lwarpmk.lua b/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
index e738e2e..83cfd06 100755
--- a/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
+++ b/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
@@ -4,7 +4,7 @@
 
 -- Print the usage of the lwarpmk command:
 
-printversion = "v0.31"
+printversion = "v0.32"
 
 function printhelp ()
 print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ;
@@ -61,9 +61,9 @@ end
 
 function splitfile (destfile,sourcefile)
 print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ;
-io.input(sourcefile)
+local sfile = io.open(sourcefile)
 io.output(destfile)
-for line in io.lines() do
+for line in sfile:lines() do
 i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ;
 if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then -- split the file
 io.output(newfilename) ;
@@ -71,6 +71,7 @@ else -- not a splitpoint
 io.write (line .. "\n") ;
 end
 end -- do
+io.close(sfile)
 end -- function
 
 -- Incorrect value, so print an error and exit.
@@ -102,10 +103,10 @@ os.exit(1) -- exit the entire lwarpmk script
 else -- file exists
 -- Read the file:
 print ("lwarpmk: Reading " .. conffile ..".")
-io.input(conffile) ;
+local cfile = io.open(conffile)
 -- Scan each line:
 local linenum = 0
-for line in io.lines() do -- scan lines
+for line in cfile:lines() do -- scan lines
 linenum = linenum + 1
 i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*\"([%w%-_%.]*)\"") ;
 -- Error if incorrect enclosing characters:
@@ -146,6 +147,7 @@ printconf () ;
 os.exit(1) ;
 end
 end -- do scan lines
+io.close(cfile)
 end -- file exists
 -- Select some operating-system commands:
 if opsystem=="Unix" then  -- For Unix / Linux / Mac OS:
@@ -185,10 +187,14 @@ end
 -- Return true if found.
 
 function reruntoget (filesource)
-io.input(filesource)
-for line in io.lines() do
-if ( string.find(line,"Rerun to get") ~= nil ) then return true end
+local fsource = io.open(filesource)
+for line in fsource:lines() do
+if ( string.find(line,"Rerun to get") ~= nil ) then
+io.close(fsource)
+return true
 end
+end
+io.close(fsource)
 return false
 end
 
@@ -255,11 +261,11 @@ end
 -- Create lateximages based on lateximages.txt:
 function createlateximages ()
 print ("lwarpmk: Creating lateximages.")
-io.input("lateximages.txt")
--- Create the lateximages directory, ignore error if alreadt exists
+local limagesfile = io.open("lateximages.txt")
+-- Create the lateximages directory, ignore error if already exists
 err = os.execute("mkdir lateximages")
 -- Scan lateximages.txt
-for line in io.lines() do
+for line in limagesfile:lines() do
 -- lwimgpage is the page number in the PDF which has the image
 -- lwimgnum is the sequential lateximage number to assign for the image
 i,j,lwimgpage,lwimgnum = string.find (line,"|(.*)|(.*)|")
@@ -287,6 +293,7 @@ rmname .. " lateximage-" .. lwimgnum ..".pdf lateximagetemp-" .. lwimgpage ..".p
 if ( err ~= 0 ) then print ( "lwarpmk: File error.") ; os.exit(1) ; end
 end
 end -- do
+io.close(limagesfile)
 end -- function
 
 -- Use latexmk to compile source and index:
diff --git a/texk/texlive/linked_scripts/ptex2pdf/ptex2pdf.lua b/texk/texlive/linked_scripts/ptex2pdf/ptex2pdf.lua
index b2c983f..395bac6 100755
--- a/texk/texlive/linked_scripts/ptex2pdf/ptex2pdf.lua
+++ b/texk/texlive/linked_scripts/ptex2pdf/ptex2pdf.lua
@@ -1,7 +1,7 @@
 #!/usr/bin/env texlua
 
 NAME = "ptex2pdf[.lua]"
-VERSION = "0.9"
+VERSION = "20170604.0"
 AUTHOR = "Norbert Preining"
 AUTHOREMAIL = "norbert@preining.info"
 SHORTDESC = "Convert Japanese TeX documents to pdf"
@@ -9,7 +9,8 @@ LONGDESC = [[
 Main purpose of the script is easy support of Japanese typesetting
 engines in TeXworks. As TeXworks typesetting setup does not allow
 for multistep processing, this script runs one of the ptex based
-programs (ptex, uptex, eptex, platex, uplatex) followed by dvipdfmx.
+programs (ptex, uptex, eptex, euptex, platex, uplatex) followed
+by dvipdfmx.
 ]]
 USAGE = [[
 [texlua] ptex2pdf[.lua] { option | basename[.tex] } ... 
@@ -28,9 +29,9 @@ options: -v  version
 LICENSECOPYRIGHT = [[
 Originally based on musixtex.lua from Bob Tennent.
 
-(c) Copyright 2016      by Japanese TeX Development Community  
-(c) Copyright 2013-2016 Norbert Preining norbert@preining.info  
-(c) Copyright 2012 Bob Tennent rdt@cs.queensu.ca  
+(c) Copyright 2016-2017 Japanese TeX Development Community  
+(c) Copyright 2013-2017 Norbert Preining norbert@preining.info  
+(c) Copyright 2012      Bob Tennent rdt@cs.queensu.ca  
 
 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
@@ -73,62 +74,61 @@ Under Preferences > Typesetting add new entries, for example:
 
 for ptex files:
 
-| Setting     |  Value           |
-|-------------|------------------|
-| Name:       |  pTeX to pdf     |
-| Program:    |  ptex2pdf        |
-| Arguments:  |  -ot             |
-|             |  $synctexoption  |
-|             |  $fullname       |
-
+| Setting     | Value              |
+|-------------|--------------------|
+| Name:       | pTeX (ptex2pdf)    |
+| Program:    | ptex2pdf           |
+| Arguments:  | -ot                |
+|             | $synctexoption     |
+|             | $fullname          |
 
 for platex files:
 
-| Setting     | Value          |
-|-------------|----------------|
-| Name:       | pLaTeX to pdf  |
-| Program:    | ptex2pdf       |
-| Arguments:  | -l             |
-|             | -ot            |
-|             | $synctexoption |
-|             | $fullname      |
+| Setting     | Value              |
+|-------------|--------------------|
+| Name:       | pLaTeX (ptex2pdf)  |
+| Program:    | ptex2pdf           |
+| Arguments:  | -l                 |
+|             | -ot                |
+|             | $synctexoption     |
+|             | $fullname          |
 
 for uptex files:
 
-| Setting     | Value          |
-|-------------|----------------|
-| Name:       | upTeX to pdf   |
-| Program:    | ptex2pdf       |
-| Arguments:  | -u             |
-|             | -ot            |
-|             | $synctexoption |
-|             | $fullname      |
+| Setting     | Value              |
+|-------------|--------------------|
+| Name:       | upTeX (ptex2pdf)   |
+| Program:    | ptex2pdf           |
+| Arguments:  | -u                 |
+|             | -ot                |
+|             | $synctexoption     |
+|             | $fullname          |
 
 for uplatex files:
 
-| Setting     | Value          |
-|-------------|----------------|
-| Name:       | upLaTeX to pdf |
-| Program:    | ptex2pdf       |
-| Arguments:  | -l             |
-|             | -u             |
-|             | -ot            |
-|             | $synctexoption |
-|             | $fullname      |
+| Setting     | Value              |
+|-------------|--------------------|
+| Name:       | upLaTeX (ptex2pdf) |
+| Program:    | ptex2pdf           |
+| Arguments:  | -l                 |
+|             | -u                 |
+|             | -ot                |
+|             | $synctexoption     |
+|             | $fullname          |
 
 If you need special kanji encodings for one of these programs,
-add the respective `-kanji` option after the `$synctexoption`. Example:
+add the respective `-kanji` option with the `$synctexoption`. Example:
 
 for platex files in SJIS encoding:
 
-| Setting     | Value                       |
-|-------------|-----------------------------|
-| Name:       | pLaTeX/SJIS to pdf          |
-| Program:    | ptex2pdf                    |
-| Arguments:  | -l                          |
-|             | -ot                         |
-|             | $synctexoption -kanji=sjis  |
-|             | $fullname                   |
+| Setting     | Value                      |
+|-------------|----------------------------|
+| Name:       | pLaTeX/SJIS (ptex2pdf)     |
+| Program:    | ptex2pdf                   |
+| Arguments:  | -l                         |
+|             | -ot                        |
+|             | -kanji=sjis $synctexoption |
+|             | $fullname                  |
 ]]
 
 DEVELPLACE = "http://github.com/texjporg/ptex2pdf";
@@ -168,6 +168,10 @@ CHANGELOG = [[
   update copyright and development place (now in texjp)  
   support 'flag=val' to specify option values  
   only allow one (1) filename argument  
+- version 20170603.0  
+  start version number in the format YYYYMMDD.0  
+  better support for cp932 windows filenames  
+  first replace all backslash chars to slash chars  
 ]]
 
 
@@ -242,6 +246,14 @@ function whoami ()
   print("This is " .. NAME .. " version ".. VERSION .. ".")
 end
 
+function print_ifdebug(message) -- for debugging: accepts only one argument
+  --print("DEBUG: " .. message) -- uncomment for debugging
+end
+
+function slashify(str) -- replace "\" with "/", mainly for path strings on cp932 windows
+  return (tostring(str):gsub("[\x81-\x9f\xe0-\xfc]?.", { ["\\"] = "/" }))
+end
+
 if #arg == 0 then
   usage()
   os.exit(0)
@@ -360,7 +372,8 @@ kpse.set_program_name(tex)
 if ( filename == "" ) then
   print("No filename argument given, exiting.")
   os.exit(1)
-else 
+else
+  filename = slashify(filename)
   if ( kpse.find_file(filename) == nil ) then
     -- try .tex extension
     if ( kpse.find_file(filename .. ".tex") == nil ) then
@@ -380,9 +393,10 @@ else
     -- if it has already an extension, we need to drop it to get the dvi name
     bname = string.gsub(filename, "^(.*)%.[^.]+$", "%1")
   end
-  -- filename may contain "/" or "\", but the intermediate output is written
+  -- filename may contain "/", but the intermediate output is written
   -- in current directory, so we need to drop it
-  bname = string.gsub(bname, "^.*[/\\](.*)$", "%1")
+  -- note that all "\" has been replaced with "/"
+  bname = string.gsub(bname, "^.*/(.*)$", "%1")
 end
 
 -- we are still here, so we found a file
@@ -410,10 +424,8 @@ if (os.execute(tex .. " " .. texopts .. " \"" .. filename .. "\"") == 0) and
   end
 else
   print("ptex2pdf processing of " .. filename .. " failed.\n")
-    --[[ uncomment for debugging
-    print("tex = ", tex)
-    print("dvipdf = ", dvipdf)
-    --]]
+  print_ifdebug("tex = " .. tex)
+  print_ifdebug("dvipdf = " .. dvipdf)
   os.exit(2)
 end
 
diff --git a/texk/texlive/linked_scripts/scripts.lst b/texk/texlive/linked_scripts/scripts.lst
index 5ba124a..f8cd421 100644
--- a/texk/texlive/linked_scripts/scripts.lst
+++ b/texk/texlive/linked_scripts/scripts.lst
@@ -53,6 +53,7 @@ de-macro/de-macro
 diadia/diadia.lua
 dosepsbin/dosepsbin.pl
 dviasm/dviasm.py
+dviinfox/dviinfox.pl
 ebong/ebong.py
 epspdf/epspdf.tlu
 epspdf/epspdftk.tcl
diff --git a/texk/texlive/linked_scripts/texlive/tlmgr.pl b/texk/texlive/linked_scripts/texlive/tlmgr.pl
index 0432468..4fad43e 100755
--- a/texk/texlive/linked_scripts/texlive/tlmgr.pl
+++ b/texk/texlive/linked_scripts/texlive/tlmgr.pl
@@ -1,13 +1,13 @@
 #!/usr/bin/env perl
-# $Id: tlmgr.pl 44422 2017-05-19 15:07:25Z karl $
+# $Id: tlmgr.pl 44452 2017-06-04 23:45:39Z karl $
 #
 # Copyright 2008-2017 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 #
 
-my $svnrev = '$Revision: 44422 $';
-my $datrev = '$Date: 2017-05-19 17:07:25 +0200 (Fri, 19 May 2017) $';
+my $svnrev = '$Revision: 44452 $';
+my $datrev = '$Date: 2017-06-05 01:45:39 +0200 (Mon, 05 Jun 2017) $';
 my $tlmgrrevision;
 my $prg;
 if ($svnrev =~ m/: ([0-9]+) /) {
@@ -2559,8 +2559,12 @@ sub action_update {
   # if --list is given:    nothing
   # other options just change the behavior
   if (!($opts{"list"} || @ARGV || $opts{"all"} || $opts{"self"})) {
-    tlwarn("$prg update: specify --list, --all, --self, or a list of package names.\n");
-    return ($F_ERROR);
+    if ($opts{"dry-run"}) {
+      $opts{"list"} = 1; # update -n same as update -n --list
+    } else {
+      tlwarn("$prg update: specify --list, --all, --self, or a list of package names.\n");
+      return ($F_ERROR);
+    }
   }
 
   init_tlmedia_or_die();
@@ -8883,7 +8887,7 @@ This script and its documentation were written for the TeX Live
 distribution (L<http://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: tlmgr.pl 44422 2017-05-19 15:07:25Z karl $
+$Id: tlmgr.pl 44452 2017-06-04 23:45:39Z karl $
 =cut
 
 # to remake HTML version: pod2html --cachedir=/tmp tlmgr.pl >/tmp/tlmgr.html
diff --git a/texk/texlive/linked_scripts/texosquery/texosquery-jre5.sh b/texk/texlive/linked_scripts/texosquery/texosquery-jre5.sh
index e841a0e..a72924f 100755
--- a/texk/texlive/linked_scripts/texosquery/texosquery-jre5.sh
+++ b/texk/texlive/linked_scripts/texosquery/texosquery-jre5.sh
@@ -1,5 +1,11 @@
 #!/bin/sh
 
 
-jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre5.jar`
+kernel=`uname -s`
+if test "${kernel#*CYGWIN}" != "$kernel"
+then
+ jarpath=`cygpath -w $(kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre5.jar)`
+else
+ jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre5.jar`
+fi
 java -jar "$jarpath" "$@"
diff --git a/texk/texlive/linked_scripts/texosquery/texosquery-jre8.sh b/texk/texlive/linked_scripts/texosquery/texosquery-jre8.sh
index d13f8ee..f68a09c 100755
--- a/texk/texlive/linked_scripts/texosquery/texosquery-jre8.sh
+++ b/texk/texlive/linked_scripts/texosquery/texosquery-jre8.sh
@@ -1,5 +1,11 @@
 #!/bin/sh
 
 
-jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre8.jar`
+kernel=`uname -s`
+if test "${kernel#*CYGWIN}" != "$kernel"
+then
+ jarpath=`cygpath -w $(kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre8.jar)`
+else
+ jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery-jre8.jar`
+fi
 java -Djava.locale.providers=CLDR,JRE -jar "$jarpath" "$@"
diff --git a/texk/texlive/linked_scripts/texosquery/texosquery.sh b/texk/texlive/linked_scripts/texosquery/texosquery.sh
index db9f8ad..d230c4c 100755
--- a/texk/texlive/linked_scripts/texosquery/texosquery.sh
+++ b/texk/texlive/linked_scripts/texosquery/texosquery.sh
@@ -1,5 +1,11 @@
 #!/bin/sh
 
 
-jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery.jar`
+kernel=`uname -s`
+if test "${kernel#*CYGWIN}" != "$kernel"
+then
+ jarpath=`cygpath -w $(kpsewhich --progname=texosquery --format=texmfscripts texosquery.jar)`
+else
+ jarpath=`kpsewhich --progname=texosquery --format=texmfscripts texosquery.jar`
+fi
 java -jar "$jarpath" "$@"
diff --git a/texk/web2c/luatexdir/lua/liolibext.c b/texk/web2c/luatexdir/lua/liolibext.c
index e910139..958cbb6 100644
--- a/texk/web2c/luatexdir/lua/liolibext.c
+++ b/texk/web2c/luatexdir/lua/liolibext.c
@@ -365,7 +365,7 @@ static int checkpermission(lua_State *L)
         lua_pushliteral(L,"all command execution is disabled");
     } else if (restrictedshell == 0) {
         lua_pushboolean(L,1);
-        lua_pushliteral(L,"all commands are permitted");
+        lua_pushstring(L,filename);
     } else {
         char *safecmd = NULL;
         char *cmdname = NULL;
@@ -374,10 +374,6 @@ static int checkpermission(lua_State *L)
                 lua_pushboolean(L,0);
                 lua_pushliteral(L, "specific command execution disabled");
                 break;
-            case 1:
-                lua_pushboolean(L,1);
-                lua_pushstring(L,filename);
-                break;
             case 2:
                 lua_pushboolean(L,1);
                 lua_pushstring(L,safecmd);
diff --git a/texk/web2c/luatexdir/lua/luatex-core.c b/texk/web2c/luatexdir/lua/luatex-core.c
index 5c956f2..631f25c 100644
--- a/texk/web2c/luatexdir/lua/luatex-core.c
+++ b/texk/web2c/luatexdir/lua/luatex-core.c
@@ -52,7 +52,7 @@ int load_luatex_core_lua (lua_State * L)
     0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6f, 0x5f,
     0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
     0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-    0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
     0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73,
     0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
     0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x69,
@@ -84,169 +84,175 @@ int load_luatex_core_lua (lua_State * L)
     0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
     0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x2d, 0x2d, 0x20,
     0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64,
-    0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f,
-    0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20,
-    0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76,
-    0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d,
-    0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c,
-    0x79, 0x0a, 0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74,
-    0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73,
-    0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-    0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
-    0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f,
-    0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f,
-    0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68,
-    0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64,
-    0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69,
+    0x0a, 0x2d, 0x2d, 0x20, 0x28, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72,
+    0x20, 0x74, 0x6c, 0x31, 0x37, 0x20, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x29, 0x20, 0x69,
+    0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f,
+    0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72,
+    0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64,
+    0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20,
+    0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a,
+    0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74, 0x5f, 0x6c,
+    0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72,
+    0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66,
+    0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69,
     0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29,
-    0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68,
-    0x6f, 0x77, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20,
-    0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27,
-    0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c,
-    0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63,
-    0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65,
-    0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
-    0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-    0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-    0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
-    0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e,
-    0x6c, 0x79, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20,
-    0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27,
-    0x5b, 0x5e, 0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20,
-    0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20,
+    0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77,
+    0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
     0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f,
     0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20,
     0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66,
-    0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27,
-    0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-    0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-    0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
-    0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c,
-    0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f,
-    0x6b, 0x61, 0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f,
-    0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
-    0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b,
-    0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65,
-    0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-    0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c,
-    0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64,
-    0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-    0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73,
-    0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-    0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d,
-    0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20,
-    0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-    0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68, 0x6f, 0x77,
+    0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20, 0x61, 0x6e,
+    0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x20,
+    0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e,
+    0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72,
+    0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27,
+    0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+    0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+    0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f,
+    0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79,
+    0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
+    0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f,
+    0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x5b, 0x5e,
+    0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x74, 0x68,
+    0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68,
+    0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70,
+    0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c,
+    0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+    0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+    0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f,
+    0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x2e, 0x2e,
+    0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x6b, 0x61,
+    0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x63,
+    0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x6e,
+    0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b, 0x61, 0x79,
+    0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69,
+    0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c, 0x2e, 0x2e,
+    0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a,
+    0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c,
+    0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x6e,
+    0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
+    0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f,
+    0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x20, 0x6f, 0x72, 0x20,
+    0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
+    0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+    0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f,
+    0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+    0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
+    0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75,
+    0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f,
+    0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+    0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
     0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66,
-    0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-    0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
-    0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a,
-    0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
-    0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-    0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e,
-    0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64,
-    0x0a, 0x0a, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61,
-    0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e,
-    0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69,
-    0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57,
-    0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
-    0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
-    0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
-    0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54,
-    0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61,
-    0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a,
-    0x69, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31,
-    0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70,
-    0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f,
-    0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65,
-    0x6e, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f,
-    0x70, 0x65, 0x6e, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66,
-    0x65, 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68,
-    0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75,
-    0x74, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e,
-    0x73, 0x70, 0x61, 0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-    0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76,
-    0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74,
-    0x65, 0x6d, 0x70, 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-    0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20,
-    0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e,
-    0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-    0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69,
-    0x6c, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e,
-    0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20,
-    0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20,
-    0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b,
-    0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73,
-    0x2e, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-    0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72,
-    0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e,
-    0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x69,
-    0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6f,
-    0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f,
-    0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a,
-    0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x74,
-    0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x68, 0x65, 0x6c,
-    0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65,
-    0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71,
-    0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-    0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74,
-    0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63, 0x27, 0x20, 0x74, 0x68,
-    0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
-    0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
-    0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x65,
-    0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65, 0x78, 0x65, 0x63, 0x75,
-    0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c, 0x6f, 0x73, 0x2e, 0x65,
-    0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x72, 0x65,
-    0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x61, 0x77, 0x61,
-    0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x68, 0x65,
-    0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d,
-    0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62, 0x20, 0x20, 0x20, 0x3d,
-    0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20,
-    0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x20, 0x20, 0x3d,
-    0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65, 0x0a, 0x0a, 0x20, 0x20,
-    0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73,
-    0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73,
-    0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63,
-    0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-    0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29,
-    0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a,
-    0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e,
-    0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58,
-    0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-    0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29,
-    0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
-    0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
-    0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30,
-    0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20,
-    0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
-    0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00
+    0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69,
+    0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
+    0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e, 0x6c, 0x69, 0x6e,
+    0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x72,
+    0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57, 0x65, 0x20, 0x61,
+    0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+    0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20,
+    0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65,
+    0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73,
+    0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20,
+    0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a, 0x69, 0x66, 0x20,
+    0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68,
+    0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20,
+    0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65,
+    0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d,
+    0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e,
+    0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f,
+    0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20,
+    0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61,
+    0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f,
+    0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76, 0x20, 0x20, 0x3d,
+    0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74, 0x65, 0x6d, 0x70,
+    0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
+    0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x3d,
+    0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6e,
+    0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f,
+    0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69, 0x6c, 0x65, 0x20,
+    0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x75, 0x74,
+    0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
+    0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x20, 0x20,
+    0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x74, 0x6f,
+    0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
+    0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d,
+    0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76,
+    0x65, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
+    0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e,
+    0x6c, 0x79, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65,
+    0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20,
+    0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31,
+    0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d,
+    0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20,
+    0x6e, 0x65, 0x78, 0x74, 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63,
+    0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
+    0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69,
+    0x6c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65,
+    0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c,
+    0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79,
+    0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65,
+    0x20, 0x61, 0x77, 0x61, 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35,
+    0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+    0x20, 0x73, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75,
+    0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62,
+    0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+    0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+    0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65,
+    0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65,
+    0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d,
+    0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73,
+    0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20,
+    0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66,
+    0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74,
+    0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
+    0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20,
+    0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75,
+    0x6d, 0x48, 0x45, 0x58, 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75,
+    0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
+    0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+    0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
+    0x28, 0x22, 0x25, 0x30, 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29,
+    0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20,
+    0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00
   };
   return luaL_dostring(L, (const char*) luatex_core_lua);
 }
\ No newline at end of file
diff --git a/texk/web2c/luatexdir/lua/luatex-core.lua b/texk/web2c/luatexdir/lua/luatex-core.lua
index cf56e2a..2f87938 100644
--- a/texk/web2c/luatexdir/lua/luatex-core.lua
+++ b/texk/web2c/luatexdir/lua/luatex-core.lua
@@ -16,7 +16,7 @@ local find, gsub = string.find, string.gsub
 
 local io_open             = io.open
 local io_popen            = io.popen
-local io_line             = io.lines
+local io_lines            = io.lines
 
 local fio_readline        = fio.readline
 local fio_checkpermission = fio.checkpermission
@@ -29,7 +29,7 @@ local shellescape         = status.shell_escape -- 0 (disabled) 1 (anything) 2 (
 local kpseused            = status.kpse_used    -- 0 1
 
 io.saved_open             = io_open  -- can be protected
-io.saved_popen            = io_popen -- can be protected
+-- (deleted for tl17 rebuild) io.saved_popen            = io_popen -- can be protected
 io.saved_lines            = io_lines -- always readonly
 mt.saved_lines            = mt_lines -- always readonly
 
@@ -71,12 +71,16 @@ local function luatex_io_popen(name,...)
     end
 end
 
-local function luatex_io_lines(name)
-    local f = io_open(name,'r')
-    if f then
-        return function()
-            return fio_readline(f)
+local function luatex_io_lines(name,how)
+    if name then
+        local f = io_open(name,how or 'r')
+        if f then
+            return function()
+                return fio_readline(f)
+            end
         end
+    else
+        return io_lines()
     end
 end
 
@@ -122,7 +126,6 @@ if saferoption == 1 then
     lfs.rmdir  = nil
     lfs.mkdir  = nil
 
-    io.saved_popen = nil
     io.saved_open  = luatex_io_open_readonly
 
 end
diff --git a/texk/web2c/luatexdir/luatex.c b/texk/web2c/luatexdir/luatex.c
index 3eba566..2c893cd 100644
--- a/texk/web2c/luatexdir/luatex.c
+++ b/texk/web2c/luatexdir/luatex.c
@@ -28,9 +28,11 @@
 
 #define TeX
 
+/* for tl17 update, change luatex_date_info but nothing else,
+   as context depends on the numeric version number. */
 int luatex_version = 100;        /* \.{\\luatexversion}  */
 int luatex_revision = '4';      /* \.{\\luatexrevision}  */
-int luatex_date_info = 2017033109;     /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/
+int luatex_date_info = 2017060901;     /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/
 const char *luatex_version_string = "1.0.4";
 const char *engine_name = my_name;     /* the name of this engine */
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-tex/texlive-bin.git


Reply to: